{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./packages/web-rax-framework/node_modules/rax/lib/vdom/host.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/vdom/instance.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/component.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/vdom/instantiateComponent.js","webpack:///./packages/web-rax-framework/node_modules/runtime-shared/lib/symbol.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/render.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/vdom/shouldUpdateComponent.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/unmountComponentAtNode.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/element.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/findDOMNode.js","webpack:///./packages/web-rax-framework/node_modules/driver-weex/lib/parseProps.js","webpack:///./packages/web-rax-framework/node_modules/style-unit/lib/index.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/vdom/getElementKeyName.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/vdom/ref.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/vdom/native.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/proptypes.js","webpack:///./packages/web-rax-framework/node_modules/universal-env/lib/index.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/flattenChildren.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/debug/hook.js","webpack:///./packages/web-rax-framework/node_modules/runtime-shared/lib/url-search-params.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/createContext.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/children.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/version.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/setNativeProps.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/findComponentInstance.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/createPortal.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/hydrate.js","webpack:///./packages/web-rax-framework/node_modules/driver-browser/lib/flexbox.js","webpack:///./packages/web-rax-framework/node_modules/driver-browser/lib/index.js","webpack:///./packages/web-rax-framework/node_modules/driver-weex/lib/elements/block.js","webpack:///./packages/web-rax-framework/node_modules/driver-weex/lib/elements/heading.js","webpack:///./packages/web-rax-framework/node_modules/driver-weex/lib/elements/button.js","webpack:///./packages/web-rax-framework/node_modules/driver-weex/lib/elements/p.js","webpack:///./packages/web-rax-framework/node_modules/driver-weex/lib/elements/span.js","webpack:///./packages/web-rax-framework/node_modules/driver-weex/lib/elements/textarea.js","webpack:///./packages/web-rax-framework/node_modules/driver-weex/lib/elements/video.js","webpack:///./packages/web-rax-framework/node_modules/driver-weex/lib/elements/img.js","webpack:///./packages/web-rax-framework/node_modules/driver-weex/lib/elements/index.js","webpack:///./packages/web-rax-framework/node_modules/driver-weex/lib/index.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/vdom/fragment.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/vdom/shallowEqual.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/vdom/updater.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/vdom/stateless.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/vdom/composite.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/vdom/text.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/vdom/empty.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/inject.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/purecomponent.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/vdom/root.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/debug/devtools.js","webpack:///./packages/web-rax-framework/node_modules/rax/lib/index.js","webpack:///./packages/web-rax-framework/src/intersectionObserver.js","webpack:///./packages/web-rax-framework/src/appearRegistry.js","webpack:///./packages/web-rax-framework/src/appear.js","webpack:///./packages/web-rax-framework/src/require.js","webpack:///./packages/web-rax-framework/node_modules/performance-now/lib/performance-now.js","webpack:///./packages/web-rax-framework/node_modules/raf/index.js","webpack:///./packages/web-rax-framework/node_modules/raf/polyfill.js","webpack:///./packages/web-rax-framework/node_modules/whatwg-fetch/fetch.js","webpack:///./packages/web-rax-framework/src/array.js","webpack:///./packages/web-rax-framework/src/object.js","webpack:///./packages/web-rax-framework/src/number.js","webpack:///./packages/web-rax-framework/node_modules/runtime-shared/lib/matchMedia.js","webpack:///./packages/web-rax-framework/node_modules/runtime-shared/lib/url.js","webpack:///./packages/web-rax-framework/node_modules/runtime-shared/lib/fontface.js","webpack:///./packages/web-rax-framework/node_modules/runtime-shared/lib/weakset.js","webpack:///./packages/web-rax-framework/node_modules/runtime-shared/lib/weakmap.js","webpack:///./packages/web-rax-framework/node_modules/runtime-shared/lib/set.js","webpack:///./packages/web-rax-framework/node_modules/runtime-shared/lib/map.js","webpack:///./packages/web-rax-framework/node_modules/runtime-shared/lib/promise.js","webpack:///./packages/web-rax-framework/node_modules/runtime-shared/lib/index.js","webpack:///./packages/web-rax-framework/src/index.js"],"names":["observerElement","isExistIntersection","createIntersectionObserver","options","root","rootMargin","threshold","appearEvt","disappearEvt","intersectionObserver","initIntersection","document","createEvent","initEvent","IntersectionObserver","handleIntersect","entries","forEach","entry","target","boundingClientRect","intersectionRatio","dataset","appeared","dispatchEvent","element","observe","config","getOffset","pushElement","offsetTop","_appearDoms","AppearRegistry","elements","current","container","window","wait","x","y","cls","once","onReset","onAppear","onDisappear","appearWatchElements","initConfig","apply","arguments","opts","extend","getElements","bindEvent","el","k","hasOwnProperty","offset","type","getBoundingClientRect","top","right","bottom","left","slice","call","nodes","raf","calculate","containerOffset","isOnce","ev","length","ele","i","_hasAppear","splice","checkEveryDom","cacheAppearEvt","cacheDisappearEvt","pos","eleOffset","direction","getDirection","_eleOffset","isInView","inViewport","appear","_appear","_hasDisAppear","handle","throttle","check","__handle","removeEventListener","addEventListener","beforeOffset","nowOffset","horizental","vertical","requestAnimationFrame","webkitRequestAnimationFrame","c","setTimeout","fn","context","args","result","timeout","previous","later","Date","now","remaining","clearTimeout","param","l","r","b","t","innerWidth","innerHeight","parentNode","node","indexOf","appended","Boolean","getAttribute","push","instance","existIntersection","injectEventListenerHook","instances","Registry","control","nativeAddEventListener","Node","prototype","nativeRemoveEventListener","eventName","eventHandler","useCapture","isNotWatch","lowerCaseEventName","toLowerCase","isAppearEvent","index","global","define","modules","inGuard","def","id","deps","factory","Function","module","exports","isInitialized","hasError","req","originId","mod","requireImpl","ErrorUtils","returnValue","e","reportFatalError","Error","require","Array","from","toStr","Object","toString","isCallable","toInteger","value","number","Number","isNaN","isFinite","Math","floor","abs","maxSafeInteger","pow","toLength","len","min","max","arrayLike","C","items","TypeError","mapFn","undefined","T","A","kValue","assign","sources","nextIndex","nextSource","key","object","values","defineProperties","descriptors","property","defineProperty","setPrototypeOf","magic","set","O","proto","getOwnPropertyDescriptor","__proto__","polyfill","is","shared","Promise","Symbol","Map","Set","WeakMap","WeakSet","FontFace","matchMedia","URL","URLSearchParams","fonts","add","fontFace","fontFaceRule","family","source","styleElement","createElement","innerHTML","head","appendChild"],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;AAGA;AACA;;;;;;;;ACzEA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,oC;;;;;;;ACpBA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,iBAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAEA;;AAEA;AACA;AACA;AACA,oC;;;;;;;ACnHA;;AAEA;AACA;AACA,CAAC;;AAED,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA,oC;;;;;;;AC1CA;;AAEA;AACA;AACA,CAAC;;AAED,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,oC;;;;;;;ACxCA;;AAEA,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qBAAqB;AAC3C,eAAe;AACf,GAAG;AACH;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK,EAAE;AACP,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA,gBAAgB,uCAAuC;AACvD,uBAAuB,8CAA8C;AACrE,aAAa,oCAAoC;AACjD,UAAU,iCAAiC;AAC3C,YAAY,mCAAmC;AAC/C,WAAW,kCAAkC;AAC7C,YAAY,mCAAmC;AAC/C,UAAU,iCAAiC;AAC3C,gBAAgB,uCAAuC;AACvD,gBAAgB,uCAAuC;AACvD,gBAAgB;AAChB,CAAC;;AAED;AACA;AACA,gBAAgB,wBAAwB;AACxC,aAAa;AACb;AACA,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK,EAAE;AACP,YAAY;AACZ;AACA,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,sEAAsE,kBAAkB;;AAExF;AACA,oEAAoE,8DAA8D;;AAElI;AACA;AACA;AACA;AACA,oEAAoE,8DAA8D,E;;;;;;;ACzHlI;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oC;;;;;;;AC1CA;;AAEA;AACA;AACA,CAAC;;AAED,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,oC;;;;;;;AC1BA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oC;;;;;;;ACzBA;;AAEA;AACA;AACA,CAAC;;AAED,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA,wFAAwF,aAAa;AACrG;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,C;;;;;;;ACxOA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,oC;;;;;;;ACrDA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iC;;;;;;;AC1CA;;AAEA;AACA;AACA,CAAC;;AAED,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,iC;;;;;;;ACxGA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA,oC;;;;;;;ACxBA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oC;;;;;;;AC/CA;;AAEA;AACA;AACA,CAAC;;AAED,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;;AAEA;AACA,4CAA4C;;AAE5C;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,uBAMA;AACA;AACA;;AAEA;AACA,qBAMA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iEAAiE,gBAAgB;AACjF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6DAA6D,SAAS;AACtE;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD,uBAAuB;AAC1E;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,qDAAqD,UAAU;AAC/D;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,2BAA2B;AACtD;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA,oC;;;;;;;AClhBA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oC;;;;;;;AC/CA;;AAEA;AACA;AACA,CAAC;;AAED,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;AACA;AACA;AACA;AACA;AACA;AACA,iC;;;;;;;ACdA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oC;;;;;;;AC7BA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,gDAAgD;AAChD,oDAAoD;AACpD;AACA,GAAG;AACH;AACA;AACA;AACA,oC;;;;;;;ACpDA;;AAEA,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE,GAAG;;;AAGpjB;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0FAA0F,YAAY;AACtG;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,kBAAkB;AACxD;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;;AAEA,iC;;;;;;;AC5LA;;AAEA;AACA;AACA,CAAC;;AAED,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,2CAA2C,kBAAkB,kCAAkC,qEAAqE,EAAE,EAAE,OAAO,kBAAkB,EAAE,YAAY;;AAE/M,iDAAiD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE5e,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,qEAAqE,aAAa;AAClF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH,iDAAiD;;AAEjD;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,wEAAwE,eAAe;AACvF;AACA;;AAEA;AACA;AACA,OAAO;AACP,gCAAgC,eAAe;AAC/C,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH,4CAA4C;;;AAG5C;AACA;AACA;AACA;AACA;AACA,oC;;;;;;;AC3KA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,oC;;;;;;;ACtDA;;AAEA;AACA;AACA,CAAC;AACD;AACA,oC;;;;;;;ACNA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA,oC;;;;;;;ACrBA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oC;;;;;;;ACpBA;;AAEA;AACA;AACA,CAAC;;AAED,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,iDAAiD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE5e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,oC;;;;;;;ACnFA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,kCAAkC,0BAA0B,0CAA0C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE,OAAO,wBAAwB,EAAE;;AAEjM;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oC;;;;;;;AC9BA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oC;;;;;;;ACnGA;;AAEA;AACA;AACA,CAAC;;AAED,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H,GAAG;AAC7Q;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oC;;;;;;;AC/MA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,oC;;;;;;;AClBA;;AAEA;AACA;AACA,CAAC;;AAED,mDAAmD,gBAAgB,sBAAsB,OAAO,2BAA2B,0BAA0B,yDAAyD,2BAA2B,EAAE,EAAE,EAAE,eAAe;;AAE9P;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oC;;;;;;;AC7CA;;AAEA;AACA;AACA,CAAC;;AAED,mDAAmD,gBAAgB,sBAAsB,OAAO,2BAA2B,0BAA0B,yDAAyD,2BAA2B,EAAE,EAAE,EAAE,eAAe;;AAE9P;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oC;;;;;;;ACtDA;;AAEA;AACA;AACA,CAAC;;AAED,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q,mDAAmD,gBAAgB,sBAAsB,OAAO,2BAA2B,0BAA0B,yDAAyD,2BAA2B,EAAE,EAAE,EAAE,eAAe;;AAE9P;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,6BAA6B;;AAE7B;AACA;;AAEA;AACA;AACA;AACA,oC;;;;;;;AC/HA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oC;;;;;;;ACnBA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oC;;;;;;;ACzBA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,oC;;;;;;;AC1BA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oC;;;;;;;AC3BA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oC;;;;;;;AC9DA;;AAEA;AACA;AACA,CAAC;;AAED,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H,GAAG;AAC7Q;AACA;;;AAGA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oC;;;;;;;ACnNA;;AAEA;AACA;AACA,CAAC;;AAED,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,iDAAiD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE5e;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,yBAAyB,6BAA6B;AACtD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA,oC;;;;;;;ACvKA;;AAEA;AACA;AACA,CAAC;;AAED,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oC;;;;;;;AC1DA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA,oC;;;;;;;ACjFA;;AAEA;AACA;AACA,CAAC;;AAED,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAEA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA,oC;;;;;;;AC1CA;;AAEA;AACA;AACA,CAAC;;AAED,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,aAMA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAIW;AACX;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uBAIW;AACX;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAIW;AACX;AACA;AACA,SAAS;AACT;;AAEA;;AAEA,mBAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,qBAAqB,kBAAkB;AACvC;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,mBAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,qBAIS;AACT;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA,qBAMA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,sBAAsB;AAChE;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA,oC;;;;;;;ACvhBA;;AAEA;AACA;AACA,CAAC;;AAED,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA,oC;;;;;;;AC/FA;;AAEA;AACA;AACA,CAAC;;AAED,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AAC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ACAG,UAAIJ,aAAJ,GAAoB,KAApB;AACA,YAAMQ,CAAN;AACD;;AAED,WAAOJ,IAAIN,MAAJ,CAAWC,OAAlB;AACD;;AAEDV,SAAOC,MAAP,GAAgBG,GAAhB;AACAJ,SAAOsB,OAAP,GAAiBT,GAAjB;AACD,CA1FD,EA0FG,aAAQ,QAAOb,MAAP,yCAAOA,MAAP,OAAkB,QAAlB,IAA8BA,MAAtC,IAAgD,QAAO9G,MAAP,yCAAOA,MAAP,OAAkB,QAAlB,IAA8BA,MA1FjF,E;;;;;;ACAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,4BAA4B;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA,aAAa;AACb,qCAAqC,UAAU;AAC/C;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1EA;;;;;;;ACAA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,mBAAmB;AAC3D;AACA;;AAEA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;;AAEA;AACA;AACA,wCAAwC,4BAA4B;AACpE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD,SAAS;AACT;AACA,SAAS;AACT,8EAA8E;AAC9E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,uBAAuB;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,uCAAuC,0BAA0B;AACjE;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,+BAA+B,0BAA0B,eAAe;AACxE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA,KAAK;AACL;AACA;AACA,CAAC;;;;;;;;;;ACjdD;AACA;AACA,IAAI,CAACqI,MAAMC,IAAX,EAAiB;AACfD,QAAMC,IAAN,GAAc,YAAW;AACvB,QAAIC,QAAQC,OAAOpC,SAAP,CAAiBqC,QAA7B;AACA,QAAIC,aAAa,SAAbA,UAAa,CAASvE,EAAT,EAAa;AAC5B,aAAO,OAAOA,EAAP,KAAc,UAAd,IAA4BoE,MAAM3G,IAAN,CAAWuC,EAAX,MAAmB,mBAAtD;AACD,KAFD;AAGA,QAAIwE,YAAY,SAAZA,SAAY,CAASC,KAAT,EAAgB;AAC9B,UAAIC,SAASC,OAA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A;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,4B;;;;;;;ACvHA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC;AACpC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qB;;;;;;;ACljBA;;AAEA,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;;AAEA;AACA;AACA;;AAEA,0B;;;;;;;ACXA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,oDAAoD,8BAA8B;AAClF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yB;;;;;;;AC3BA;;AAEA,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA,kDAAkD,qCAAqC,sCAAsC;AAC7H;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yB;;;;;;;AC5CA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,gBAAgB;AAChB,OAAO;AACP,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED,qB;;;;;;;AC7HA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ;AACjB,OAAO;AACP,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED,qB;;;;;;;AC3JA;;AAEA,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,8DAA8D;AAC9D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yB;;;;;;;AChOA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,E;;;;;;;;;ACjCA,IAAM9B,SAAS9G,MAAf;;AAEA,IAAMuL,SAAS,mBAAAnD,CAAQ,EAAR,CAAf;;AAEA;AACA,mBAAAA,CAAQ,EAAR;AACA,mBAAAA,CAAQ,EAAR;AACA,mBAAAA,CAAQ,EAAR;;AAEA,IAAI,CAACtB,OAAO0E,OAAZ,EAAqB;AACnB1E,SAAO0E,OAAP,GAAiBD,OAAOC,OAAxB;AACD;;AAED,IAAI,CAAC1E,OAAO2E,MAAZ,EAAoB;AAClB3E,SAAO2E,MAAP,GAAgBF,OAAOE,MAAvB;AACD;;AAED,IAAI,CAAC3E,OAAO4E,GAAZ,EAAiB;AACf5E,SAAO4E,GAAP,GAAaH,OAAOG,GAApB;AACD;;AAED,IAAI,CAAC5E,OAAO6E,GAAZ,EAAiB;AACf7E,SAAO6E,GAAP,GAAaJ,OAAOI,GAApB;AACD;;AAED,IAAI,CAAC7E,OAAO8E,OAAZ,EAAqB;AACnB9E,SAAO8E,OAAP,GAAiBL,OAAOK,OAAxB;AACD;;AAED,IAAI,CAAC9E,OAAO+E,OAAZ,EAAqB;AACnB/E,SAAO+E,OAAP,GAAiBN,OAAOM,OAAxB;AACD;;AAED;AACA,mBAAAzD,CAAQ,EAAR;AACA,mBAAAA,CAAQ,EAAR;;AAEA,IAAI,CAACtB,OAAOgF,QAAZ,EAAsB;AACpBhF,SAAOgF,QAAP,GAAkBP,OAAOO,QAAzB;AACD;;AAED,IAAI,CAAChF,OAAOiF,UAAZ,EAAwB;AACtBjF,SAAOiF,UAAP,GAAoBR,OAAOQ,UAA3B;AACD;;AAED,IAAI,CAACjF,OAAOkF,GAAZ,EAAiB;AACflF,SAAOkF,GAAP,GAAaT,OAAOS,GAApB;AACD;;AAED,IAAI,CAAClF,OAAOmF,eAAZ,EAA6B;AAC3BnF,SAAOmF,eAAP,GAAyBV,OAAOU,eAAhC;AACD;;AAED,IAAI,CAAC1N,SAAS2N,KAAd,EAAqB;AACnB3N,WAAS2N,KAAT,GAAiB;AACfC,SAAK,aAASC,QAAT,EAAmB;AACtB,UAAIC,uDACaD,SAASE,MADtB,wBAEKF,SAASG,MAFd,cAAJ;;AAKA,UAAIC,eAAejO,SAASkO,aAAT,CAAuB,OAAvB,CAAnB;AACAD,mBAAaE,SAAb,GAAyBL,YAAzB;AACA9N,eAASoO,IAAT,CAAcC,WAAd,CAA0BJ,YAA1B;AACD;AAVc,GAAjB;AAYD;;AAED;AACA,mBAAApE,CAAQ,EAAR;;AAEA;AACA,mBAAAA,CAAQ,EAAR;;AAEA;AACAtB,OAAOC,MAAP,CAAc,KAAd,EAAqB,UAASY,GAAT,EAAcH,OAAd,EAAuBD,MAAvB,EAA+B;AAClDA,SAAOC,OAAP,GAAiB,mBAAAY,CAAQ,EAAR,CAAjB;AACD,CAFD,E","file":"framework.web.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading wasm modules\n \tvar installedWasmModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// object with all compiled WebAssembly.Modules\n \t__webpack_require__.w = {};\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 71);\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/*\n * Stateful things in runtime\n */\nexports.default = {\n  component: null,\n  mountID: 1,\n  sandbox: true,\n  // Roots\n  rootComponents: {},\n  rootInstances: {},\n  // Inject\n  hook: null,\n  driver: null,\n  monitor: null\n};\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _host = require('./host');\n\nvar _host2 = _interopRequireDefault(_host);\n\nvar _element = require('../element');\n\nvar _unmountComponentAtNode = require('../unmountComponentAtNode');\n\nvar _unmountComponentAtNode2 = _interopRequireDefault(_unmountComponentAtNode);\n\nvar _instantiateComponent = require('./instantiateComponent');\n\nvar _instantiateComponent2 = _interopRequireDefault(_instantiateComponent);\n\nvar _shouldUpdateComponent = require('./shouldUpdateComponent');\n\nvar _shouldUpdateComponent2 = _interopRequireDefault(_shouldUpdateComponent);\n\nvar _root = require('./root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Instance manager\n */\nvar KEY = '$$instance';\n\nexports.default = {\n  set: function set(node, instance) {\n    if (!node[KEY]) {\n      node[KEY] = instance;\n      // Record root instance to roots map\n      if (instance.rootID) {\n        _host2.default.rootInstances[instance.rootID] = instance;\n        _host2.default.rootComponents[instance.rootID] = instance._internal;\n      }\n    }\n  },\n  get: function get(node) {\n    return node[KEY];\n  },\n  remove: function remove(node) {\n    var instance = this.get(node);\n    if (instance) {\n      node[KEY] = null;\n      if (instance.rootID) {\n        delete _host2.default.rootComponents[instance.rootID];\n        delete _host2.default.rootInstances[instance.rootID];\n      }\n    }\n  },\n  mount: function mount(element, container, parentInstance) {\n    if (process.env.NODE_ENV !== 'production') {\n      _host2.default.measurer && _host2.default.measurer.beforeRender();\n    }\n\n    // Before render callback\n    _host2.default.driver.beforeRender && _host2.default.driver.beforeRender();\n\n    // Real native root node is body\n    if (container == null) {\n      container = _host2.default.driver.createBody();\n    }\n\n    // Get the context from the conceptual parent component.\n    var parentContext = void 0;\n    if (parentInstance) {\n      var parentInternal = parentInstance._internal;\n      parentContext = parentInternal._processChildContext(parentInternal._context);\n    }\n\n    var prevRootInstance = this.get(container);\n    var hasPrevRootInstance = prevRootInstance && prevRootInstance.isRootComponent;\n\n    if (hasPrevRootInstance) {\n      var prevRenderedComponent = prevRootInstance.getRenderedComponent();\n      var prevElement = prevRenderedComponent._currentElement;\n      if ((0, _shouldUpdateComponent2.default)(prevElement, element)) {\n        var prevUnmaskedContext = prevRenderedComponent._context;\n        prevRenderedComponent.updateComponent(prevElement, element, prevUnmaskedContext, parentContext || prevUnmaskedContext);\n\n        return prevRootInstance;\n      } else {\n        _host2.default.hook.Reconciler.unmountComponent(prevRootInstance);\n        (0, _unmountComponentAtNode2.default)(container);\n      }\n    }\n\n    var wrappedElement = (0, _element.createElement)(_root2.default, null, element);\n    var renderedComponent = (0, _instantiateComponent2.default)(wrappedElement);\n    var defaultContext = parentContext || {};\n    var rootInstance = renderedComponent.mountComponent(container, null, defaultContext);\n    this.set(container, rootInstance);\n\n    // After render callback\n    _host2.default.driver.afterRender && _host2.default.driver.afterRender(rootInstance);\n\n    // Devtool render new root hook\n    _host2.default.hook.Mount._renderNewRootComponent(rootInstance._internal);\n\n    if (process.env.NODE_ENV !== 'production') {\n      _host2.default.measurer && _host2.default.measurer.afterRender();\n    }\n\n    return rootInstance;\n  }\n};\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _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; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Base component class.\n */\nvar Component = function () {\n  function Component(props, context, updater) {\n    _classCallCheck(this, Component);\n\n    this.props = props;\n    this.context = context;\n    this.refs = {};\n    this.updater = updater;\n  }\n\n  _createClass(Component, [{\n    key: \"isComponentClass\",\n    value: function isComponentClass() {}\n  }, {\n    key: \"setState\",\n    value: function setState(partialState, callback) {\n      this.updater.setState(this, partialState, callback);\n    }\n  }, {\n    key: \"forceUpdate\",\n    value: function forceUpdate(callback) {\n      this.updater.forceUpdate(this, callback);\n    }\n  }]);\n\n  return Component;\n}();\n\nexports.default = Component;\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _host = require('./host');\n\nvar _host2 = _interopRequireDefault(_host);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction instantiateComponent(element) {\n  var instance = void 0;\n\n  if (element === undefined || element === null || element === false || element === true) {\n    instance = new _host2.default.EmptyComponent();\n  } else if (Array.isArray(element)) {\n    instance = new _host2.default.FragmentComponent(element);\n  } else if ((typeof element === 'undefined' ? 'undefined' : _typeof(element)) === 'object' && element.type) {\n    // Special case string values\n    if (typeof element.type === 'string') {\n      instance = new _host2.default.NativeComponent(element);\n    } else {\n      instance = new _host2.default.CompositeComponent(element);\n    }\n  } else if (typeof element === 'string' || typeof element === 'number') {\n    instance = new _host2.default.TextComponent(element);\n  } else {\n    throw new Error('Invalid element type: ' + element + '. (keys: ' + Object.keys(element) + ')');\n  }\n\n  instance._mountIndex = 0;\n\n  return instance;\n}\n\nexports.default = instantiateComponent;\nmodule.exports = exports['default'];","'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* eslint no-extend-native: \"off\", new-cap: \"off\" */\n\nvar defineProperties = Object.defineProperties,\n    defineProperty = Object.defineProperty,\n    SymbolPolyfill,\n    HiddenSymbol,\n    globalSymbols = Object.create(null);\n\nfunction isSymbol(x) {\n  if (!x) return false;\n  if ((typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'symbol') return true;\n  if (!x.constructor) return false;\n  if (x.constructor.name !== 'Symbol') return false;\n  return x[x.constructor.toStringTag] === 'Symbol';\n}\n\nfunction validateSymbol(value) {\n  if (!isSymbol(value)) throw new TypeError(value + ' is not a symbol');\n  return value;\n}\n\nvar generateName = function () {\n  var created = Object.create(null);\n  return function (desc) {\n    var postfix = 0,\n        name;\n    while (created[desc + (postfix || '')]) {\n      ++postfix;\n    }desc += postfix || '';\n    created[desc] = true;\n    name = '@@' + desc;\n    return name;\n  };\n}();\n\n// Internal constructor (not one exposed) for creating Symbol instances.\n// This one is used to ensure that `someSymbol instanceof Symbol` always return false\nHiddenSymbol = function _Symbol(description) {\n  if (this instanceof HiddenSymbol) throw new TypeError('Symbol is not a constructor');\n  return SymbolPolyfill(description);\n};\n\n// Exposed `Symbol` constructor\n// (returns instances of HiddenSymbol)\nmodule.exports = SymbolPolyfill = function _Symbol2(description) {\n  var symbol;\n  if (this instanceof _Symbol2) throw new TypeError('Symbol is not a constructor');\n  symbol = Object.create(HiddenSymbol.prototype);\n  description = description === undefined ? '' : String(description);\n  return defineProperties(symbol, {\n    __description__: { value: description },\n    __name__: { value: generateName(description) }\n  });\n};\ndefineProperties(SymbolPolyfill, {\n  for: { value: function value(key) {\n      if (globalSymbols[key]) return globalSymbols[key];\n      return globalSymbols[key] = SymbolPolyfill(String(key));\n    } },\n  keyFor: { value: function value(s) {\n      var key;\n      validateSymbol(s);\n      for (key in globalSymbols) {\n        if (globalSymbols[key] === s) return key;\n      }\n    } },\n\n  // To ensure proper interoperability with other native functions (e.g. Array.from)\n  // fallback to eventual native implementation of given symbol\n  hasInstance: { value: SymbolPolyfill('hasInstance') },\n  isConcatSpreadable: { value: SymbolPolyfill('isConcatSpreadable') },\n  iterator: { value: SymbolPolyfill('iterator') },\n  match: { value: SymbolPolyfill('match') },\n  replace: { value: SymbolPolyfill('replace') },\n  search: { value: SymbolPolyfill('search') },\n  species: { value: SymbolPolyfill('species') },\n  split: { value: SymbolPolyfill('split') },\n  toPrimitive: { value: SymbolPolyfill('toPrimitive') },\n  toStringTag: { value: SymbolPolyfill('toStringTag') },\n  unscopables: { value: SymbolPolyfill('unscopables') }\n});\n\n// Internal tweaks for real symbol producer\ndefineProperties(HiddenSymbol.prototype, {\n  constructor: { value: SymbolPolyfill },\n  toString: { value: function value() {\n      return this.__name__;\n    } }\n});\n\n// Proper implementation of methods exposed on Symbol.prototype\n// They won't be accessible on produced symbol instances as they derive from HiddenSymbol.prototype\ndefineProperties(SymbolPolyfill.prototype, {\n  toString: { value: function value() {\n      return 'Symbol (' + validateSymbol(this).__description__ + ')';\n    } },\n  valueOf: { value: function value() {\n      return validateSymbol(this);\n    } }\n});\n\ndefineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toPrimitive, {\n  value: function value() {\n    var symbol = validateSymbol(this);\n    if ((typeof symbol === 'undefined' ? 'undefined' : _typeof(symbol)) === 'symbol') return symbol;\n    return symbol.toString();\n  }\n});\ndefineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toStringTag, { value: 'Symbol' });\n\n// Proper implementaton of toPrimitive and toStringTag for returned symbol instances\ndefineProperty(HiddenSymbol.prototype, SymbolPolyfill.toStringTag, { value: SymbolPolyfill.prototype[SymbolPolyfill.toStringTag] });\n\n// Note: It's important to define `toPrimitive` as last one, as some implementations\n// implement `toPrimitive` natively without implementing `toStringTag` (or other specified symbols)\n// And that may invoke error in definition flow:\n// See: https://github.com/medikoo/es6-symbol/issues/13#issuecomment-164146149\ndefineProperty(HiddenSymbol.prototype, SymbolPolyfill.toPrimitive, { value: SymbolPolyfill.prototype[SymbolPolyfill.toPrimitive] });","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _inject = require('./inject');\n\nvar _inject2 = _interopRequireDefault(_inject);\n\nvar _instance = require('./vdom/instance');\n\nvar _instance2 = _interopRequireDefault(_instance);\n\nvar _host = require('./vdom/host');\n\nvar _host2 = _interopRequireDefault(_host);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction render(element, container, options, callback) {\n  // Compatible with `render(element, container, callback)`\n  if (typeof options === 'function') {\n    callback = options;\n    options = null;\n  }\n\n  options = options || {};\n  // Init inject\n  (0, _inject2.default)(options);\n\n  var rootComponent = _instance2.default.mount(element, container, options.parent);\n  var componentInstance = rootComponent.getPublicInstance();\n\n  if (callback) {\n    callback.call(componentInstance);\n  }\n\n  return componentInstance;\n}\n\nexports.default = render;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction shouldUpdateComponent(prevElement, nextElement) {\n  // TODO: prevElement and nextElement could be array\n  var prevEmpty = prevElement === null;\n  var nextEmpty = nextElement === null;\n  if (prevEmpty || nextEmpty) {\n    return prevEmpty === nextEmpty;\n  }\n\n  var prevType = typeof prevElement === 'undefined' ? 'undefined' : _typeof(prevElement);\n  var nextType = typeof nextElement === 'undefined' ? 'undefined' : _typeof(nextElement);\n  if (prevType === 'string' || prevType === 'number') {\n    return nextType === 'string' || nextType === 'number';\n  } else {\n    return prevType === 'object' && nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n  }\n}\n\nexports.default = shouldUpdateComponent;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = unmountComponentAtNode;\n\nvar _instance = require('./vdom/instance');\n\nvar _instance2 = _interopRequireDefault(_instance);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction unmountComponentAtNode(node) {\n  var component = _instance2.default.get(node);\n\n  if (!component) {\n    return false;\n  }\n\n  _instance2.default.remove(node);\n  component._internal.unmountComponent();\n\n  return true;\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.createElement = createElement;\nexports.createFactory = createFactory;\nexports.cloneElement = cloneElement;\nexports.isValidElement = isValidElement;\n\nvar _host = require('./vdom/host');\n\nvar _host2 = _interopRequireDefault(_host);\n\nvar _flattenChildren = require('./flattenChildren');\n\nvar _flattenChildren2 = _interopRequireDefault(_flattenChildren);\n\nvar _universalEnv = require('universal-env');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true\n};\n\nfunction getRenderErrorInfo() {\n  if (_host2.default.component) {\n    var name = _host2.default.component.getName();\n    if (name) {\n      return ' Check the render method of `' + name + '`.';\n    }\n  }\n  return '';\n}\n\nfunction Element(type, key, ref, props, owner) {\n  if (_universalEnv.isWeex) {\n    props = filterProps(type, props);\n  }\n\n  return {\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n};\n\nexports.default = Element;\n\n\nfunction flattenStyle(style) {\n  if (!style) {\n    return undefined;\n  }\n\n  if (!Array.isArray(style)) {\n    return style;\n  } else {\n    var result = {};\n    for (var i = 0; i < style.length; ++i) {\n      var computedStyle = flattenStyle(style[i]);\n      if (computedStyle) {\n        for (var key in computedStyle) {\n          result[key] = computedStyle[key];\n        }\n      }\n    }\n    return result;\n  }\n}\n\n// TODO: move to weex-drvier\nfunction filterProps(type, props) {\n  // Only for weex text\n  if (type === 'text') {\n    var children = props.children;\n    var value = props.value;\n\n    // Value is first\n    if (value == null && children != null) {\n      if (Array.isArray(children)) {\n        children = children.map(function (val) {\n          if (typeof val === 'number' || typeof val === 'string') {\n            return val;\n          } else {\n            return '';\n          }\n        }).join('');\n      } else if (typeof children !== 'number' && typeof children !== 'string') {\n        children = '';\n      }\n\n      props.value = String(children);\n    }\n\n    props.children = null;\n  }\n\n  return props;\n}\n\nfunction createElement(type, config, children) {\n  if (type == null) {\n    throw Error('createElement: type should not be null or undefined.' + getRenderErrorInfo());\n  }\n  // Reserved names are extracted\n  var props = {};\n  var propName = void 0;\n  var key = null;\n  var ref = null;\n\n  if (config != null) {\n    ref = config.ref === undefined ? null : config.ref;\n    key = config.key === undefined ? null : String(config.key);\n    // Remaining properties are added to a new props object\n    for (propName in config) {\n      if (!RESERVED_PROPS[propName]) {\n        props[propName] = config[propName];\n      }\n    }\n  }\n\n  var childrenLength = arguments.length - 2;\n  if (childrenLength > 0) {\n    if (childrenLength === 1 && !Array.isArray(children)) {\n      props.children = children;\n    } else {\n      var childArray = children;\n      if (childrenLength > 1) {\n        childArray = new Array(childrenLength);\n        for (var i = 0; i < childrenLength; i++) {\n          childArray[i] = arguments[i + 2];\n        }\n      }\n      props.children = (0, _flattenChildren2.default)(childArray);\n    }\n  }\n\n  // Resolve default props\n  if (type && type.defaultProps) {\n    var defaultProps = type.defaultProps;\n    for (propName in defaultProps) {\n      if (props[propName] === undefined) {\n        props[propName] = defaultProps[propName];\n      }\n    }\n  }\n\n  if (props.style && (Array.isArray(props.style) || _typeof(props.style) === 'object')) {\n    props.style = flattenStyle(props.style);\n  }\n\n  return new Element(type, key, ref, props, _host2.default.component);\n}\n\nfunction createFactory(type) {\n  var factory = createElement.bind(null, type);\n  // Expose the type on the factory and the prototype so that it can be\n  // easily accessed on elements. E.g. `<Foo />.type === Foo`.\n  // This should not be named `constructor` since this may not be the function\n  // that created the element, and it may not even be a constructor.\n  factory.type = type;\n  return factory;\n}\n\nfunction cloneElement(element, config) {\n  if (!isValidElement(element)) {\n    throw Error('cloneElement: not a valid element.' + getRenderErrorInfo());\n  }\n\n  // Original props are copied\n  var props = Object.assign({}, element.props);\n\n  // Reserved names are extracted\n  var key = element.key;\n  var ref = element.ref;\n\n  // Owner will be preserved, unless ref is overridden\n  var owner = element._owner;\n\n  if (config) {\n    // Should reset ref and owner if has a new ref\n    if (config.ref !== undefined) {\n      ref = config.ref;\n      owner = _host2.default.component;\n    }\n\n    if (config.key !== undefined) {\n      key = String(config.key);\n    }\n\n    // Resolve default props\n    var defaultProps = void 0;\n    if (element.type && element.type.defaultProps) {\n      defaultProps = element.type.defaultProps;\n    }\n    // Remaining properties override existing props\n    var propName = void 0;\n    for (propName in config) {\n      if (config.hasOwnProperty(propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        if (config[propName] === undefined && defaultProps !== undefined) {\n          // Resolve default props\n          props[propName] = defaultProps[propName];\n        } else {\n          props[propName] = config[propName];\n        }\n      }\n    }\n  }\n\n  for (var _len = arguments.length, children = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    children[_key - 2] = arguments[_key];\n  }\n\n  if (children.length) {\n    props.children = (0, _flattenChildren2.default)(children);\n  }\n\n  return new Element(element.type, key, ref, props, owner);\n};\n\nfunction isValidElement(object) {\n  return (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && object !== null && object.type && object.props;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _host = require('./vdom/host');\n\nvar _host2 = _interopRequireDefault(_host);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction findDOMNode(instance) {\n  if (instance == null) {\n    return null;\n  }\n\n  // If a native node, weex may not export ownerDocument property\n  if (instance.ownerDocument || instance.nodeType) {\n    return instance;\n  }\n\n  // Native component\n  if (instance._nativeNode) {\n    return instance._nativeNode;\n  }\n\n  if (typeof instance == 'string') {\n    return _host2.default.driver.getElementById(instance);\n  }\n\n  if (typeof instance.render !== 'function') {\n    throw new Error('findDOMNode: find by neither component nor DOM node.');\n  }\n\n  // Composite component\n  var internal = instance._internal;\n\n  if (internal) {\n    while (!internal._nativeNode) {\n      internal = internal._renderedComponent;\n      // If not mounted\n      if (internal == null) {\n        return null;\n      }\n    }\n    return internal._nativeNode;\n  } else {\n    throw new Error('findDOMNode: find on an unmounted component.');\n  }\n}\n\nexports.default = findDOMNode;\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.transformPropsAttrsToStyle = transformPropsAttrsToStyle;\nexports.renamePropsAttr = renamePropsAttr;\n/**\n * transformPropAttrsToStyle\n *\n * @param {Object} props\n * @param {Array} attrs\n */\nfunction transformPropsAttrsToStyle(props, attrs) {\n  props.style = props.style || {};\n\n  attrs.forEach(function (attr) {\n    if (props[attr] && !props.style[attr]) {\n      props.style[attr] = props[attr];\n      delete props[attr];\n    }\n  });\n\n  return props;\n};\n\n/**\n * renamePropsAttr\n *\n * @param {Object} props\n * @param {String} originalAttrName\n * @param {String} newAttrName\n */\nfunction renamePropsAttr(props, originalAttrName, newAttrName) {\n  if (props[originalAttrName] && !props[newAttrName]) {\n    props[newAttrName] = props[originalAttrName];\n    delete props[originalAttrName];\n  }\n\n  return props;\n}\nexports[\"default\"] = module.exports;\nexports.default = module.exports;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.isRem = isRem;\nexports.calcRem = calcRem;\nexports.getRem = getRem;\nexports.setRem = setRem;\nexports.isUnitNumber = isUnitNumber;\nexports.convertUnit = convertUnit;\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nvar UNITLESS_NUMBER_PROPS = {\n  animationIterationCount: true,\n  borderImageOutset: true,\n  borderImageSlice: true,\n  borderImageWidth: true,\n  boxFlex: true,\n  boxFlexGroup: true,\n  boxOrdinalGroup: true,\n  columnCount: true,\n  flex: true,\n  flexGrow: true,\n  flexPositive: true,\n  flexShrink: true,\n  flexNegative: true,\n  flexOrder: true,\n  gridRow: true,\n  gridColumn: true,\n  fontWeight: true,\n  lineClamp: true,\n  // We make lineHeight default is px that is diff with w3c spec\n  // lineHeight: true,\n  opacity: true,\n  order: true,\n  orphans: true,\n  tabSize: true,\n  widows: true,\n  zIndex: true,\n  zoom: true,\n  // Weex only\n  lines: true\n};\nvar SUFFIX = 'rem';\nvar REM_REG = /[-+]?\\d*\\.?\\d+rem/g;\nvar GLOBAL_REM_UNIT = '__global_rem_unit__';\nvar global = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' ? window : (typeof global === 'undefined' ? 'undefined' : _typeof(global)) === 'object' ? global : {};\n// Default 1 rem to 1 px\nif (global[GLOBAL_REM_UNIT] == null) {\n  global[GLOBAL_REM_UNIT] = 1;\n}\n\n/**\n * Is string contains rem\n * @param {String} str\n * @returns {Boolean}\n */\nfunction isRem(str) {\n  return typeof str === 'string' && str.indexOf(SUFFIX) !== -1;\n}\n\n/**\n * Calculate rem to pixels: '1.2rem' => 1.2 * rem\n * @param {String} str\n * @param {Number} rem\n * @returns {number}\n */\nfunction calcRem(str) {\n  var remUnit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : global[GLOBAL_REM_UNIT];\n\n  return str.replace(REM_REG, function (rem) {\n    return parseFloat(rem) * remUnit + 'px';\n  });\n}\n\nfunction getRem() {\n  return global[GLOBAL_REM_UNIT];\n}\n\nfunction setRem(rem) {\n  global[GLOBAL_REM_UNIT] = rem;\n}\n\nfunction isUnitNumber(val, prop) {\n  return typeof val === 'number' && !UNITLESS_NUMBER_PROPS[prop];\n}\n\nfunction convertUnit(val, prop) {\n  var remUnit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : global[GLOBAL_REM_UNIT];\n\n  if (prop && isUnitNumber(val, prop)) {\n    return val * remUnit + 'px';\n  } else if (isRem(val)) {\n    return calcRem(val, remUnit);\n  }\n\n  return val;\n}\nexports['default'] = module.exports;\nexports.default = module.exports;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (children, element, index) {\n  var elementKey = element && element.key;\n  var hasKey = typeof elementKey === 'string';\n  var defaultName = '.' + index.toString(36);\n\n  if (hasKey) {\n    var keyName = '$' + elementKey;\n    // Child keys must be unique.\n    var keyUnique = children[keyName] === undefined;\n    // Only the first child will be used when encountered two children with the same key\n    if (!keyUnique) console.warn('Encountered two children with the same key \"' + elementKey + '\".');\n\n    return keyUnique ? keyName : defaultName;\n  } else {\n    return defaultName;\n  }\n};\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/*\n * Ref manager\n */\n\nexports.default = {\n  update: function update(prevElement, nextElement, component) {\n    var prevRef = prevElement != null && prevElement.ref;\n    var nextRef = nextElement != null && nextElement.ref;\n\n    // Update refs in owner component\n    if (prevRef !== nextRef) {\n      // Detach prev RenderedElement's ref\n      prevRef != null && this.detach(prevElement._owner, prevRef, component);\n      // Attach next RenderedElement's ref\n      nextRef != null && this.attach(nextElement._owner, nextRef, component);\n    }\n  },\n  attach: function attach(ownerComponent, ref, component) {\n    if (!ownerComponent) {\n      throw new Error('You might be adding a ref to a component that was not created inside a component\\'s ' + '`render` method, or you have multiple copies of Rax loaded.');\n    }\n\n    var instance = component.getPublicInstance();\n    if (typeof ref === 'function') {\n      ref(instance);\n    } else {\n      ownerComponent._instance.refs[ref] = instance;\n    }\n  },\n  detach: function detach(ownerComponent, ref, component) {\n    if (typeof ref === 'function') {\n      // When the referenced component is unmounted and whenever the ref changes, the old ref will be called with null as an argument.\n      ref(null);\n    } else {\n      // Must match component and ref could detach the ref on owner when A's before ref is B's current ref\n      var instance = component.getPublicInstance();\n      if (ownerComponent._instance.refs[ref] === instance) {\n        delete ownerComponent._instance.refs[ref];\n      }\n    }\n  }\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _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; }; }();\n\nvar _host = require('./host');\n\nvar _host2 = _interopRequireDefault(_host);\n\nvar _ref = require('./ref');\n\nvar _ref2 = _interopRequireDefault(_ref);\n\nvar _instantiateComponent = require('./instantiateComponent');\n\nvar _instantiateComponent2 = _interopRequireDefault(_instantiateComponent);\n\nvar _shouldUpdateComponent = require('./shouldUpdateComponent');\n\nvar _shouldUpdateComponent2 = _interopRequireDefault(_shouldUpdateComponent);\n\nvar _getElementKeyName = require('./getElementKeyName');\n\nvar _getElementKeyName2 = _interopRequireDefault(_getElementKeyName);\n\nvar _instance = require('./instance');\n\nvar _instance2 = _interopRequireDefault(_instance);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar STYLE = 'style';\nvar CHILDREN = 'children';\nvar TREE = 'tree';\nvar EVENT_PREFIX_REGEXP = /on[A-Z]/;\n\n/**\n * Native Component\n */\n\nvar NativeComponent = function () {\n  function NativeComponent(element) {\n    _classCallCheck(this, NativeComponent);\n\n    this._currentElement = element;\n  }\n\n  _createClass(NativeComponent, [{\n    key: 'mountComponent',\n    value: function mountComponent(parent, parentInstance, context, childMounter) {\n      // Parent native element\n      this._parent = parent;\n      this._parentInstance = parentInstance;\n      this._context = context;\n      this._mountID = _host2.default.mountID++;\n\n      var props = this._currentElement.props;\n      var type = this._currentElement.type;\n      var instance = {\n        _internal: this,\n        type: type,\n        props: props\n      };\n      var appendType = props.append; // Default is node\n\n      this._instance = instance;\n\n      // Clone a copy for style diff\n      this._prevStyleCopy = Object.assign({}, props.style);\n\n      var nativeNode = this.getNativeNode();\n\n      if (appendType !== TREE) {\n        if (childMounter) {\n          childMounter(nativeNode, parent);\n        } else {\n          _host2.default.driver.appendChild(nativeNode, parent);\n        }\n      }\n\n      if (this._currentElement && this._currentElement.ref) {\n        _ref2.default.attach(this._currentElement._owner, this._currentElement.ref, this);\n      }\n\n      // Process children\n      var children = props.children;\n      if (children != null) {\n        this.mountChildren(children, context);\n      }\n\n      if (appendType === TREE) {\n        if (childMounter) {\n          childMounter(nativeNode, parent);\n        } else {\n          _host2.default.driver.appendChild(nativeNode, parent);\n        }\n      }\n\n      _host2.default.hook.Reconciler.mountComponent(this);\n\n      return instance;\n    }\n  }, {\n    key: 'mountChildren',\n    value: function mountChildren(children, context) {\n      var _this = this;\n\n      if (!Array.isArray(children)) {\n        children = [children];\n      }\n\n      var renderedChildren = this._renderedChildren = {};\n\n      var renderedChildrenImage = children.map(function (element, index) {\n        var renderedChild = (0, _instantiateComponent2.default)(element);\n        var name = (0, _getElementKeyName2.default)(renderedChildren, element, index);\n        renderedChildren[name] = renderedChild;\n        renderedChild._mountIndex = index;\n        // Mount\n        var mountImage = renderedChild.mountComponent(_this.getNativeNode(), _this._instance, context, null);\n        return mountImage;\n      });\n\n      return renderedChildrenImage;\n    }\n  }, {\n    key: 'unmountChildren',\n    value: function unmountChildren(notRemoveChild) {\n      var renderedChildren = this._renderedChildren;\n\n      if (renderedChildren) {\n        for (var name in renderedChildren) {\n          var renderedChild = renderedChildren[name];\n          renderedChild.unmountComponent(notRemoveChild);\n        }\n        this._renderedChildren = null;\n      }\n    }\n  }, {\n    key: 'unmountComponent',\n    value: function unmountComponent(notRemoveChild) {\n      if (this._nativeNode) {\n        var ref = this._currentElement.ref;\n        if (ref) {\n          _ref2.default.detach(this._currentElement._owner, ref, this);\n        }\n\n        _instance2.default.remove(this._nativeNode);\n        if (!notRemoveChild) {\n          _host2.default.driver.removeChild(this._nativeNode, this._parent);\n        }\n        _host2.default.driver.removeAllEventListeners(this._nativeNode);\n      }\n\n      this.unmountChildren(notRemoveChild);\n\n      _host2.default.hook.Reconciler.unmountComponent(this);\n\n      this._currentElement = null;\n      this._nativeNode = null;\n      this._parent = null;\n      this._parentInstance = null;\n      this._context = null;\n      this._instance = null;\n      this._prevStyleCopy = null;\n    }\n  }, {\n    key: 'updateComponent',\n    value: function updateComponent(prevElement, nextElement, prevContext, nextContext) {\n      // Replace current element\n      this._currentElement = nextElement;\n\n      _ref2.default.update(prevElement, nextElement, this);\n\n      var prevProps = prevElement.props;\n      var nextProps = nextElement.props;\n\n      this.updateProperties(prevProps, nextProps);\n      this.updateChildren(nextProps.children, nextContext);\n\n      _host2.default.hook.Reconciler.receiveComponent(this);\n    }\n  }, {\n    key: 'updateProperties',\n    value: function updateProperties(prevProps, nextProps) {\n      var propKey = void 0;\n      var styleName = void 0;\n      var styleUpdates = void 0;\n      for (propKey in prevProps) {\n        if (propKey === CHILDREN || nextProps.hasOwnProperty(propKey) || !prevProps.hasOwnProperty(propKey) || prevProps[propKey] == null) {\n          continue;\n        }\n        if (propKey === STYLE) {\n          var lastStyle = this._prevStyleCopy;\n          for (styleName in lastStyle) {\n            if (lastStyle.hasOwnProperty(styleName)) {\n              styleUpdates = styleUpdates || {};\n              styleUpdates[styleName] = '';\n            }\n          }\n          this._prevStyleCopy = null;\n        } else if (EVENT_PREFIX_REGEXP.test(propKey)) {\n          if (typeof prevProps[propKey] === 'function') {\n            _host2.default.driver.removeEventListener(this.getNativeNode(), propKey.slice(2).toLowerCase(), prevProps[propKey]);\n          }\n        } else {\n          _host2.default.driver.removeAttribute(this.getNativeNode(), propKey, prevProps[propKey]);\n        }\n      }\n\n      for (propKey in nextProps) {\n        var nextProp = nextProps[propKey];\n        var prevProp = propKey === STYLE ? this._prevStyleCopy : prevProps != null ? prevProps[propKey] : undefined;\n        if (propKey === CHILDREN || !nextProps.hasOwnProperty(propKey) || nextProp === prevProp || nextProp == null && prevProp == null) {\n          continue;\n        }\n        // Update style\n        if (propKey === STYLE) {\n          if (nextProp) {\n            // Clone property\n            nextProp = this._prevStyleCopy = Object.assign({}, nextProp);\n          } else {\n            this._prevStyleCopy = null;\n          }\n\n          if (prevProp != null) {\n            // Unset styles on `prevProp` but not on `nextProp`.\n            for (styleName in prevProp) {\n              if (prevProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n                styleUpdates = styleUpdates || {};\n                styleUpdates[styleName] = '';\n              }\n            }\n            // Update styles that changed since `prevProp`.\n            for (styleName in nextProp) {\n              if (nextProp.hasOwnProperty(styleName) && prevProp[styleName] !== nextProp[styleName]) {\n                styleUpdates = styleUpdates || {};\n                styleUpdates[styleName] = nextProp[styleName];\n              }\n            }\n          } else {\n            // Assign next prop when prev style is null\n            styleUpdates = nextProp;\n          }\n\n          // Update event binding\n        } else if (EVENT_PREFIX_REGEXP.test(propKey)) {\n          var eventName = propKey.slice(2).toLowerCase();\n\n          if (typeof prevProp === 'function') {\n            _host2.default.driver.removeEventListener(this.getNativeNode(), eventName, prevProp, nextProps);\n          }\n\n          if (typeof nextProp === 'function') {\n            _host2.default.driver.addEventListener(this.getNativeNode(), eventName, nextProp, nextProps);\n          }\n          // Update other property\n        } else {\n          var payload = {};\n          payload[propKey] = nextProp;\n          if (nextProp != null) {\n            _host2.default.driver.setAttribute(this.getNativeNode(), propKey, nextProp);\n          } else {\n            _host2.default.driver.removeAttribute(this.getNativeNode(), propKey, prevProps[propKey]);\n          }\n          if (process.env.NODE_ENV !== 'production') {\n            _host2.default.measurer && _host2.default.measurer.recordOperation({\n              instanceID: this._mountID,\n              type: 'update attribute',\n              payload: payload\n            });\n          }\n        }\n      }\n\n      if (styleUpdates) {\n        if (process.env.NODE_ENV !== 'production') {\n          _host2.default.measurer && _host2.default.measurer.recordOperation({\n            instanceID: this._mountID,\n            type: 'update style',\n            payload: styleUpdates\n          });\n        }\n        _host2.default.driver.setStyles(this.getNativeNode(), styleUpdates);\n      }\n    }\n  }, {\n    key: 'updateChildren',\n    value: function updateChildren(nextChildrenElements, context) {\n      var _this2 = this;\n\n      // prev rendered children\n      var prevChildren = this._renderedChildren;\n\n      if (nextChildrenElements == null && prevChildren == null) {\n        return;\n      }\n\n      var nextChildren = {};\n      var oldNodes = {};\n\n      if (nextChildrenElements != null) {\n        if (!Array.isArray(nextChildrenElements)) {\n          nextChildrenElements = [nextChildrenElements];\n        }\n\n        // Update next children elements\n        for (var index = 0, length = nextChildrenElements.length; index < length; index++) {\n          var nextElement = nextChildrenElements[index];\n          var name = (0, _getElementKeyName2.default)(nextChildren, nextElement, index);\n          var prevChild = prevChildren && prevChildren[name];\n          var prevElement = prevChild && prevChild._currentElement;\n\n          if (prevChild != null && (0, _shouldUpdateComponent2.default)(prevElement, nextElement)) {\n            // Pass the same context when updating chidren\n            prevChild.updateComponent(prevElement, nextElement, context, context);\n            nextChildren[name] = prevChild;\n          } else {\n            // Unmount the prevChild when nextChild is different element type.\n            if (prevChild) {\n              var oldNativeNode = prevChild.getNativeNode();\n              // Delay remove child\n              prevChild.unmountComponent(true);\n              oldNodes[name] = oldNativeNode;\n            }\n            // The child must be instantiated before it's mounted.\n            nextChildren[name] = (0, _instantiateComponent2.default)(nextElement);\n          }\n        }\n      }\n\n      var firstPrevChild = void 0;\n      var delayRemoveFirstPrevChild = void 0;\n      // Unmount children that are no longer present.\n      if (prevChildren != null) {\n        for (var _name in prevChildren) {\n          if (!prevChildren.hasOwnProperty(_name)) {\n            continue;\n          }\n\n          var _prevChild = prevChildren[_name];\n          var shouldRemove = !nextChildren[_name];\n\n          // Store old first child ref for append node ahead and maybe delay remove it\n          if (!firstPrevChild) {\n            firstPrevChild = _prevChild;\n            delayRemoveFirstPrevChild = shouldRemove;\n          } else if (shouldRemove) {\n            _prevChild.unmountComponent();\n          }\n        }\n      }\n\n      if (nextChildren != null) {\n        (function () {\n          // `nextIndex` will increment for each child in `nextChildren`, but\n          // `lastIndex` will be the last index visited in `prevChildren`.\n          var lastIndex = 0;\n          var nextIndex = 0;\n          var lastPlacedNode = null;\n          var nextNativeNode = [];\n\n          var _loop = function _loop(_name2) {\n            if (!nextChildren.hasOwnProperty(_name2)) {\n              return 'continue';\n            }\n\n            var nextChild = nextChildren[_name2];\n            var prevChild = prevChildren && prevChildren[_name2];\n\n            if (prevChild === nextChild) {\n              var prevChildNativeNode = prevChild.getNativeNode();\n              // Convert to array type\n              if (!Array.isArray(prevChildNativeNode)) {\n                prevChildNativeNode = [prevChildNativeNode];\n              }\n\n              // If the index of `child` is less than `lastIndex`, then it needs to\n              // be moved. Otherwise, we do not need to move it because a child will be\n              // inserted or moved before `child`.\n              if (prevChild._mountIndex < lastIndex) {\n                // Get the last child\n                if (Array.isArray(lastPlacedNode)) {\n                  lastPlacedNode = lastPlacedNode[lastPlacedNode.length - 1];\n                }\n\n                for (var _i = prevChildNativeNode.length - 1; _i >= 0; _i--) {\n                  _host2.default.driver.insertAfter(prevChildNativeNode[_i], lastPlacedNode);\n                }\n              }\n\n              nextNativeNode = nextNativeNode.concat(prevChildNativeNode);\n\n              lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n              prevChild._mountIndex = nextIndex;\n            } else {\n              if (prevChild != null) {\n                // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n                lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n              }\n\n              var parent = _this2.getNativeNode();\n              // Fragment extended native component, so if parent is fragment should get this._parent\n              if (Array.isArray(parent)) {\n                parent = _this2._parent;\n              }\n\n              nextChild.mountComponent(parent, _this2._instance, context, function (newChild, parent) {\n                // TODO: Rework the duplicate code\n                var oldChild = oldNodes[_name2];\n                if (!Array.isArray(newChild)) {\n                  newChild = [newChild];\n                }\n\n                if (oldChild) {\n                  // The oldChild or newChild all maybe fragment\n                  if (!Array.isArray(oldChild)) {\n                    oldChild = [oldChild];\n                  }\n\n                  // If newChild count large then oldChild\n                  var lastNewChild = void 0;\n                  for (var _i2 = 0; _i2 < newChild.length; _i2++) {\n                    var child = newChild[_i2];\n                    if (oldChild[_i2]) {\n                      _host2.default.driver.replaceChild(child, oldChild[_i2]);\n                    } else {\n                      _host2.default.driver.insertAfter(child, lastNewChild);\n                    }\n                    lastNewChild = child;\n                  }\n\n                  // If newChild count less then oldChild\n                  if (newChild.length < oldChild.length) {\n                    for (var _i3 = newChild.length; _i3 < oldChild.length; _i3++) {\n                      _host2.default.driver.removeChild(oldChild[_i3]);\n                    }\n                  }\n                } else {\n                  // Insert child at a specific index\n\n                  // Get the last child\n                  if (Array.isArray(lastPlacedNode)) {\n                    lastPlacedNode = lastPlacedNode[lastPlacedNode.length - 1];\n                  }\n\n                  var prevFirstNativeNode = void 0;\n\n                  if (firstPrevChild && !lastPlacedNode) {\n                    prevFirstNativeNode = firstPrevChild.getNativeNode();\n                    if (Array.isArray(prevFirstNativeNode)) {\n                      prevFirstNativeNode = prevFirstNativeNode[0];\n                    }\n                  }\n\n                  for (var _i4 = newChild.length - 1; _i4 >= 0; _i4--) {\n                    var _child = newChild[_i4];\n                    if (lastPlacedNode) {\n                      _host2.default.driver.insertAfter(_child, lastPlacedNode);\n                    } else if (prevFirstNativeNode) {\n                      _host2.default.driver.insertBefore(_child, prevFirstNativeNode);\n                    } else {\n                      _host2.default.driver.appendChild(_child, parent);\n                    }\n                  }\n                }\n\n                nextNativeNode = nextNativeNode.concat(newChild);\n              });\n              nextChild._mountIndex = nextIndex;\n            }\n\n            nextIndex++;\n            lastPlacedNode = nextChild.getNativeNode();\n          };\n\n          for (var _name2 in nextChildren) {\n            var _ret2 = _loop(_name2);\n\n            if (_ret2 === 'continue') continue;\n          }\n\n          // Sync update native refs\n          if (Array.isArray(_this2._nativeNode)) {\n            // Clear all and push the new array\n            _this2._nativeNode.splice(0, _this2._nativeNode.length);\n            for (var i = 0; i < nextNativeNode.length; i++) {\n              _this2._nativeNode.push(nextNativeNode[i]);\n            }\n          }\n        })();\n      }\n\n      if (delayRemoveFirstPrevChild) {\n        firstPrevChild.unmountComponent();\n      }\n\n      this._renderedChildren = nextChildren;\n    }\n  }, {\n    key: 'getNativeNode',\n    value: function getNativeNode() {\n      if (this._nativeNode == null) {\n        this._nativeNode = _host2.default.driver.createElement(this._instance);\n        _instance2.default.set(this._nativeNode, this._instance);\n      }\n\n      return this._nativeNode;\n    }\n  }, {\n    key: 'getPublicInstance',\n    value: function getPublicInstance() {\n      return this.getNativeNode();\n    }\n  }, {\n    key: 'getName',\n    value: function getName() {\n      return this._currentElement.type;\n    }\n  }]);\n\n  return NativeComponent;\n}();\n\nexports.default = NativeComponent;\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/*\n * Current PropTypes only export some api with react, not validate in runtime.\n */\n\nfunction createChainableTypeChecker(validate) {\n  function checkType(isRequired, props, propName, componentName, location, propFullName) {\n    return typeChecker;\n  }\n\n  var chainedCheckType = checkType.bind(null, false);\n  chainedCheckType.isRequired = checkType.bind(null, true);\n\n  return chainedCheckType;\n}\n\nfunction createTypeChecker(expectedType) {\n  function validate(props, propName, componentName, location, propFullName) {\n    // Noop\n  }\n  return createChainableTypeChecker(validate);\n}\n\nvar typeChecker = createTypeChecker();\n\nexports.default = {\n  array: typeChecker,\n  bool: typeChecker,\n  func: typeChecker,\n  number: typeChecker,\n  object: typeChecker,\n  string: typeChecker,\n  symbol: typeChecker,\n  element: typeChecker,\n  node: typeChecker,\n  any: typeChecker,\n  arrayOf: typeChecker,\n  instanceOf: typeChecker,\n  objectOf: typeChecker,\n  oneOf: typeChecker,\n  oneOfType: typeChecker,\n  shape: typeChecker\n};\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n// https://www.w3.org/TR/html5/webappapis.html#dom-navigator-appcodename\nvar isWeb = exports.isWeb = (typeof navigator === 'undefined' ? 'undefined' : _typeof(navigator)) === 'object' && (navigator.appCodeName === 'Mozilla' || navigator.product === 'Gecko');\nvar isNode = exports.isNode = typeof process !== 'undefined' && !!(process.versions && process.versions.node);\nvar isWeex = exports.isWeex = typeof callNative === 'function' || (typeof WXEnvironment === 'undefined' ? 'undefined' : _typeof(WXEnvironment)) === 'object' && WXEnvironment.platform !== 'Web';\nvar isReactNative = exports.isReactNative = typeof __fbBatchedBridgeConfig !== 'undefined';\nexports['default'] = module.exports;\nexports.default = module.exports;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = flattenChildren;\nfunction traverseChildren(children, result) {\n  if (Array.isArray(children)) {\n    for (var i = 0, l = children.length; i < l; i++) {\n      traverseChildren(children[i], result);\n    }\n  } else {\n    result.push(children);\n  }\n}\n\nfunction flattenChildren(children) {\n  if (children == null) {\n    return children;\n  }\n  var result = [];\n  traverseChildren(children, result);\n\n  if (result.length === 1) {\n    result = result[0];\n  }\n\n  return result;\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _instance = require('../vdom/instance');\n\nvar _instance2 = _interopRequireDefault(_instance);\n\nvar _host = require('../vdom/host');\n\nvar _host2 = _interopRequireDefault(_host);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n  ComponentTree: {\n    getClosestInstanceFromNode: function getClosestInstanceFromNode(node) {\n      return _instance2.default.get(node);\n    },\n    getNodeFromInstance: function getNodeFromInstance(inst) {\n      // inst is an internal instance (but could be a composite)\n      while (inst._renderedComponent) {\n        inst = inst._renderedComponent;\n      }\n\n      if (inst) {\n        return inst._nativeNode;\n      } else {\n        return null;\n      }\n    }\n  },\n  Mount: {\n    _instancesByReactRootID: _host2.default.rootComponents,\n\n    // Stub - React DevTools expects to find this method and replace it\n    // with a wrapper in order to observe new root components being added\n    _renderNewRootComponent: function _renderNewRootComponent() {}\n  },\n  Reconciler: {\n    // Stubs - React DevTools expects to find these methods and replace them\n    // with wrappers in order to observe components being mounted, updated and\n    // unmounted\n    mountComponent: function mountComponent() {},\n    receiveComponent: function receiveComponent() {},\n    unmountComponent: function unmountComponent() {}\n  },\n  // monitor the info of all components\n  monitor: null\n};\nmodule.exports = exports['default'];","'use strict';\n\nvar _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; }; }(); // https://github.com/WebReflection/url-search-params\n\n\nvar _symbol = require('./symbol');\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar find = /[!'\\(\\)~]|%20|%00/g;\nvar plus = /\\+/g;\nvar replace = {\n  '!': '%21',\n  \"'\": '%27',\n  '(': '%28',\n  ')': '%29',\n  '~': '%7E',\n  '%20': '+',\n  '%00': '\\x00'\n};\nvar replacer = function replacer(match) {\n  return replace[match];\n};\nvar secret = '__URLSearchParams__';\n\nfunction encode(str) {\n  return encodeURIComponent(str).replace(find, replacer);\n}\n\nfunction decode(str) {\n  return decodeURIComponent(str.replace(plus, ' '));\n}\n\nvar URLSearchParams = function () {\n  function URLSearchParams(query) {\n    _classCallCheck(this, URLSearchParams);\n\n    this[secret] = Object.create(null);\n    if (!query) return;\n    if (query.charAt(0) === '?') {\n      query = query.slice(1);\n    }\n    for (var index, value, pairs = (query || '').split('&'), i = 0, length = pairs.length; i < length; i++) {\n      value = pairs[i];\n      index = value.indexOf('=');\n      if (-1 < index) {\n        this.append(decode(value.slice(0, index)), decode(value.slice(index + 1)));\n      } else if (value.length) {\n        this.append(decode(value), '');\n      }\n    }\n  }\n\n  _createClass(URLSearchParams, [{\n    key: 'append',\n    value: function append(name, value) {\n      var dict = this[secret];\n      if (name in dict) {\n        dict[name].push('' + value);\n      } else {\n        dict[name] = ['' + value];\n      }\n    }\n  }, {\n    key: 'delete',\n    value: function _delete(name) {\n      delete this[secret][name];\n    }\n  }, {\n    key: 'get',\n    value: function get(name) {\n      var dict = this[secret];\n      return name in dict ? dict[name][0] : null;\n    }\n  }, {\n    key: 'getAll',\n    value: function getAll(name) {\n      var dict = this[secret];\n      return name in dict ? dict[name].slice(0) : [];\n    }\n  }, {\n    key: 'has',\n    value: function has(name) {\n      return name in this[secret];\n    }\n  }, {\n    key: 'set',\n    value: function set(name, value) {\n      this[secret][name] = ['' + value];\n    }\n  }, {\n    key: 'forEach',\n    value: function forEach(callback, thisArg) {\n      var dict = this[secret];\n      Object.getOwnPropertyNames(dict).forEach(function (name) {\n        dict[name].forEach(function (value) {\n          callback.call(thisArg, value, name, this);\n        }, this);\n      }, this);\n    }\n  }, {\n    key: 'keys',\n    value: function keys() {\n      var items = [];\n      this.forEach(function (value, name) {\n        items.push(name);\n      });\n      var iterator = {\n        next: function next() {\n          var value = items.shift();\n          return { done: value === undefined, value: value };\n        }\n      };\n\n      iterator[_symbol2.default.iterator] = function () {\n        return iterator;\n      };\n\n      return iterator;\n    }\n  }, {\n    key: 'values',\n    value: function values() {\n      var items = [];\n      this.forEach(function (value) {\n        items.push(value);\n      });\n      var iterator = {\n        next: function next() {\n          var value = items.shift();\n          return { done: value === undefined, value: value };\n        }\n      };\n\n      iterator[_symbol2.default.iterator] = function () {\n        return iterator;\n      };\n\n      return iterator;\n    }\n  }, {\n    key: 'entries',\n    value: function entries() {\n      var items = [];\n      this.forEach(function (value, name) {\n        items.push([name, value]);\n      });\n      var iterator = {\n        next: function next() {\n          var value = items.shift();\n          return { done: value === undefined, value: value };\n        }\n      };\n\n      iterator[_symbol2.default.iterator] = function () {\n        return iterator;\n      };\n\n      return iterator;\n    }\n  }, {\n    key: 'toString',\n    value: function toString() {\n      var dict = this[secret],\n          query = [],\n          i,\n          key,\n          name,\n          value;\n      for (key in dict) {\n        name = encode(key);\n        for (i = 0, value = dict[key]; i < value.length; i++) {\n          query.push(name + '=' + encode(value[i]));\n        }\n      }\n      return query.join('&');\n    }\n  }]);\n\n  return URLSearchParams;\n}();\n\nURLSearchParams.prototype[_symbol2.default.iterator] = URLSearchParams.prototype.entries;\n\nmodule.exports = URLSearchParams;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _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; }; }();\n\nexports.default = createContext;\n\nvar _component = require('./component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _proptypes = require('./proptypes');\n\nvar _proptypes2 = _interopRequireDefault(_proptypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _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; }\n\nfunction _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; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ValueEmitter = function () {\n  function ValueEmitter(defaultValue) {\n    _classCallCheck(this, ValueEmitter);\n\n    this.handlers = [];\n    this.value = defaultValue;\n  }\n\n  _createClass(ValueEmitter, [{\n    key: 'on',\n    value: function on(handler) {\n      this.handlers.push(handler);\n    }\n  }, {\n    key: 'off',\n    value: function off(handler) {\n      this.handlers = this.handlers.filter(function (h) {\n        return h !== handler;\n      });\n    }\n  }, {\n    key: 'emit',\n    value: function emit(value) {\n      this.value = value;\n      this.handlers.forEach(function (handler) {\n        return handler(value);\n      });\n    }\n  }]);\n\n  return ValueEmitter;\n}();\n\nvar uniqueId = 0;\n\nfunction createContext(defaultValue) {\n  var contextProp = '__context_' + uniqueId++ + '__';\n\n  var Provider = function (_Component) {\n    _inherits(Provider, _Component);\n\n    function Provider() {\n      var _ref;\n\n      var _temp, _this, _ret;\n\n      _classCallCheck(this, Provider);\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Provider.__proto__ || Object.getPrototypeOf(Provider)).call.apply(_ref, [this].concat(args))), _this), _this.emitter = new ValueEmitter(defaultValue), _temp), _possibleConstructorReturn(_this, _ret);\n    }\n\n    _createClass(Provider, [{\n      key: 'getChildContext',\n      value: function getChildContext() {\n        return _defineProperty({}, contextProp, this.emitter);\n      }\n    }, {\n      key: 'componentWillMount',\n      value: function componentWillMount() {\n        if (this.props.value !== undefined) {\n          this.emitter.value = this.props.value;\n        }\n      }\n    }, {\n      key: 'componentWillReceiveProps',\n      value: function componentWillReceiveProps(nextProps) {\n        if (this.props.value !== nextProps.value) {\n          this.emitter.emit(nextProps.value);\n        }\n      }\n    }, {\n      key: 'render',\n      value: function render() {\n        return this.props.children;\n      }\n    }]);\n\n    return Provider;\n  }(_component2.default);\n\n  Provider.childContextTypes = _defineProperty({}, contextProp, _proptypes2.default.object);\n\n  var Consumer = function (_Component2) {\n    _inherits(Consumer, _Component2);\n\n    function Consumer() {\n      var _ref3;\n\n      var _temp2, _this2, _ret2;\n\n      _classCallCheck(this, Consumer);\n\n      for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, (_ref3 = Consumer.__proto__ || Object.getPrototypeOf(Consumer)).call.apply(_ref3, [this].concat(args))), _this2), _this2.state = {\n        value: _this2.context[contextProp] ? _this2.context[contextProp].value : defaultValue\n      }, _this2.onUpdate = function (value) {\n        return _this2.setState({ value: value });\n      }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n    }\n\n    _createClass(Consumer, [{\n      key: 'componentDidMount',\n      value: function componentDidMount() {\n        if (this.context[contextProp]) {\n          this.context[contextProp].on(this.onUpdate);\n        }\n      }\n    }, {\n      key: 'componentWillUnmount',\n      value: function componentWillUnmount() {\n        if (this.context[contextProp]) {\n          this.context[contextProp].off(this.onUpdate);\n        }\n      }\n    }, {\n      key: 'render',\n      value: function render() {\n        var children = this.props.children;\n        var consumer = Array.isArray(children) ? children[0] : children;\n        if (typeof consumer === 'function') {\n          return consumer(this.state.value);\n        }\n      }\n    }]);\n\n    return Consumer;\n  }(_component2.default);\n\n  Consumer.contextTypes = _defineProperty({}, contextProp, _proptypes2.default.object);\n\n\n  return {\n    Provider: Provider,\n    Consumer: Consumer\n  };\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _flattenChildren = require('./flattenChildren');\n\nvar _flattenChildren2 = _interopRequireDefault(_flattenChildren);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction convertChildrenToArray(children) {\n  // flatten children\n  children = (0, _flattenChildren2.default)(children, []);\n  return Array.isArray(children) ? children : [].concat(children);\n}\n\nvar Children = {\n  map: function map(children, fn, ctx) {\n    if (children == null) return null;\n    children = convertChildrenToArray(children);\n    return children.map(function (child, index) {\n      return fn.call(ctx, child, index);\n    });\n  },\n  forEach: function forEach(children, fn, ctx) {\n    if (children == null) return null;\n    children = convertChildrenToArray(children);\n    children.forEach(function (child, index) {\n      return fn.call(ctx, child, index);\n    });\n  },\n  count: function count(children) {\n    if (children == null) return 0;\n    return convertChildrenToArray(children).length;\n  },\n  only: function only(children) {\n    // `only` receive rax element child\n    // null value is not acceptable\n    children = Children.toArray(children);\n    if (children.length !== 1) throw new Error('Children.only: expected to receive a single element child.');\n    return children[0];\n  },\n  toArray: function toArray(children) {\n    if (children == null) return [];\n    // `toArray` filter null value\n    return convertChildrenToArray(children).filter(function (child) {\n      return child !== null;\n    });\n  }\n};\n\nexports.default = Children;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = '0.6.1';\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = setNativeProps;\n\nvar _host = require('./vdom/host');\n\nvar _host2 = _interopRequireDefault(_host);\n\nvar _findDOMNode = require('./findDOMNode');\n\nvar _findDOMNode2 = _interopRequireDefault(_findDOMNode);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction setNativeProps(node, props) {\n  node = (0, _findDOMNode2.default)(node);\n  _host2.default.driver.setNativeProps(node, props);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _instance = require('./vdom/instance');\n\nvar _instance2 = _interopRequireDefault(_instance);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction findComponentInstance(node) {\n  if (node == null) {\n    return null;\n  }\n  return _instance2.default.get(node);\n}\n\nexports.default = findComponentInstance;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _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; }; }();\n\nexports.default = createPortal;\n\nvar _component = require('./component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _render = require('./render');\n\nvar _render2 = _interopRequireDefault(_render);\n\nvar _unmountComponentAtNode = require('./unmountComponentAtNode');\n\nvar _unmountComponentAtNode2 = _interopRequireDefault(_unmountComponentAtNode);\n\nvar _element = require('./element');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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; }\n\nfunction _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; }\n\nvar Portal = function (_Component) {\n  _inherits(Portal, _Component);\n\n  function Portal(props, context) {\n    _classCallCheck(this, Portal);\n\n    return _possibleConstructorReturn(this, (Portal.__proto__ || Object.getPrototypeOf(Portal)).call(this, props, context));\n  }\n\n  _createClass(Portal, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.renderPortal();\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate(prevProps) {\n      if (prevProps.container !== this.props.container) {\n        (0, _unmountComponentAtNode2.default)(prevProps.container);\n      }\n\n      this.renderPortal();\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      (0, _unmountComponentAtNode2.default)(this.props.container);\n    }\n  }, {\n    key: 'renderPortal',\n    value: function renderPortal() {\n      (0, _render2.default)(this.props.element, this.props.container, {\n        parent: this\n      });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return null;\n    }\n  }]);\n\n  return Portal;\n}(_component2.default);\n\nfunction createPortal(element, container) {\n  return (0, _element.createElement)(Portal, {\n    element: element,\n    container: container\n  });\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _render = require('./render');\n\nvar _render2 = _interopRequireDefault(_render);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction hydrate(element, container, options, callback) {\n  // Handle server rendered element\n  if (container.childNodes) {\n    // Clone childNodes, Because removeChild will causing change in childNodes length\n    var childNodes = [].concat(_toConsumableArray(container.childNodes));\n\n    for (var i = 0; i < childNodes.length; i++) {\n      var rootChildNode = childNodes[i];\n      container.removeChild(rootChildNode);\n    }\n  }\n\n  return (0, _render2.default)(element, container, options, callback);;\n}\n\nexports.default = hydrate;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar BOX_ALIGN = {\n  stretch: 'stretch',\n  'flex-start': 'start',\n  'flex-end': 'end',\n  center: 'center'\n};\n\nvar BOX_ORIENT = {\n  row: 'horizontal',\n  column: 'vertical'\n};\n\nvar BOX_PACK = {\n  'flex-start': 'start',\n  'flex-end': 'end',\n  center: 'center',\n  'space-between': 'justify',\n  'space-around': 'justify' // Just same as `space-between`\n};\n\nvar FLEX_PROPS = {\n  display: true,\n  flex: true,\n  alignItems: true,\n  alignSelf: true,\n  flexDirection: true,\n  justifyContent: true,\n  flexWrap: true\n};\n\nvar Flexbox = {\n  isFlexProp: function isFlexProp(prop) {\n    return FLEX_PROPS[prop];\n  },\n  display: function display(value) {\n    var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    if (value === 'flex') {\n      style.display = ['-webkit-box', '-webkit-flex', 'flex'];\n    } else {\n      style.display = value;\n    }\n\n    return style;\n  },\n  flex: function flex(value) {\n    var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    style.webkitBoxFlex = value;\n    style.webkitFlex = value;\n    style.flex = value;\n    return style;\n  },\n  flexWrap: function flexWrap(value) {\n    var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    style.webkitFlexWrap = value;\n    style.flexWrap = value;\n    return style;\n  },\n  alignItems: function alignItems(value) {\n    var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    style.webkitBoxAlign = BOX_ALIGN[value];\n    style.webkitAlignItems = value;\n    style.alignItems = value;\n    return style;\n  },\n  alignSelf: function alignSelf(value) {\n    var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    style.webkitAlignSelf = value;\n    style.alignSelf = value;\n    return style;\n  },\n  flexDirection: function flexDirection(value) {\n    var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    style.webkitBoxOrient = BOX_ORIENT[value];\n    style.webkitFlexDirection = value;\n    style.flexDirection = value;\n    return style;\n  },\n  justifyContent: function justifyContent(value) {\n    var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    style.webkitBoxPack = BOX_PACK[value];\n    style.webkitJustifyContent = value;\n    style.justifyContent = value;\n    return style;\n  }\n};\n\nexports.default = Flexbox;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /**\n                                                                                                                                                                                                                                                                               * Web Browser driver\n                                                                                                                                                                                                                                                                               **/\n\n/* global DEVICE_WIDTH, VIEWPORT_WIDTH */\n\nvar _styleUnit = require('style-unit');\n\nvar _flexbox = require('./flexbox');\n\nvar _flexbox2 = _interopRequireDefault(_flexbox);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DANGEROUSLY_SET_INNER_HTML = 'dangerouslySetInnerHTML';\nvar CLASS_NAME = 'className';\nvar CLASS = 'class';\nvar STYLE = 'style';\nvar CHILDREN = 'children';\nvar EVENT_PREFIX_REGEXP = /^on[A-Z]/;\n\nvar ADD_EVENT = 'addEvent';\nvar REMOVE_EVENT = 'removeEvent';\nvar TEXT_CONTENT_ATTR = (typeof document === 'undefined' ? 'undefined' : _typeof(document)) === 'object' && 'textContent' in document ? 'textContent' : 'nodeValue';\n\nvar Driver = {\n\n  deviceWidth: typeof DEVICE_WIDTH !== 'undefined' && DEVICE_WIDTH || null,\n  viewportWidth: typeof VIEWPORT_WIDTH !== 'undefined' && VIEWPORT_WIDTH || 750,\n  eventRegistry: {},\n\n  getDeviceWidth: function getDeviceWidth() {\n    return this.deviceWidth || document.documentElement.clientWidth;\n  },\n  setDeviceWidth: function setDeviceWidth(width) {\n    this.deviceWidth = width;\n  },\n  getViewportWidth: function getViewportWidth() {\n    return this.viewportWidth;\n  },\n  setViewportWidth: function setViewportWidth(width) {\n    this.viewportWidth = width;\n  },\n  getElementById: function getElementById(id) {\n    return document.getElementById(id);\n  },\n  createBody: function createBody() {\n    return document.body;\n  },\n  createComment: function createComment(content) {\n    return document.createComment(content);\n  },\n  createEmpty: function createEmpty() {\n    return this.createComment(' empty ');\n  },\n  createText: function createText(text) {\n    return document.createTextNode(text);\n  },\n  updateText: function updateText(node, text) {\n    node[TEXT_CONTENT_ATTR] = text;\n  },\n  createElement: function createElement(component) {\n    var node = document.createElement(component.type);\n    var props = component.props;\n\n    this.setNativeProps(node, props);\n\n    return node;\n  },\n  appendChild: function appendChild(node, parent) {\n    return parent.appendChild(node);\n  },\n  removeChild: function removeChild(node, parent) {\n    parent = parent || node.parentNode;\n    // Maybe has been removed when remove child\n    if (parent) {\n      parent.removeChild(node);\n    }\n  },\n  replaceChild: function replaceChild(newChild, oldChild, parent) {\n    parent = parent || oldChild.parentNode;\n    parent.replaceChild(newChild, oldChild);\n  },\n  insertAfter: function insertAfter(node, after, parent) {\n    parent = parent || after.parentNode;\n    var nextSibling = after.nextSibling;\n    if (nextSibling) {\n      parent.insertBefore(node, nextSibling);\n    } else {\n      parent.appendChild(node);\n    }\n  },\n  insertBefore: function insertBefore(node, before, parent) {\n    parent = parent || before.parentNode;\n    parent.insertBefore(node, before);\n  },\n  addEventListener: function addEventListener(node, eventName, eventHandler, props) {\n    if (this.eventRegistry[eventName]) {\n      return this.eventRegistry[eventName](ADD_EVENT, node, eventName, eventHandler, props);\n    } else {\n      return node.addEventListener(eventName, eventHandler);\n    }\n  },\n  removeEventListener: function removeEventListener(node, eventName, eventHandler, props) {\n    if (this.eventRegistry[eventName]) {\n      return this.eventRegistry[eventName](REMOVE_EVENT, node, eventName, eventHandler, props);\n    } else {\n      return node.removeEventListener(eventName, eventHandler);\n    }\n  },\n  removeAllEventListeners: function removeAllEventListeners(node) {\n    // noop\n  },\n  removeAttribute: function removeAttribute(node, propKey) {\n    if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      return node.innerHTML = null;\n    }\n\n    if (propKey === CLASS_NAME) {\n      propKey = CLASS;\n    }\n\n    if (propKey in node) {\n      try {\n        // Some node property is readonly when in strict mode\n        node[propKey] = null;\n      } catch (e) {}\n    }\n\n    node.removeAttribute(propKey);\n  },\n  setAttribute: function setAttribute(node, propKey, propValue) {\n    if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      return node.innerHTML = propValue.__html;\n    }\n\n    if (propKey === CLASS_NAME) {\n      propKey = CLASS;\n    }\n\n    if (propKey in node) {\n      try {\n        // Some node property is readonly when in strict mode\n        node[propKey] = propValue;\n      } catch (e) {\n        node.setAttribute(propKey, propValue);\n      }\n    } else {\n      node.setAttribute(propKey, propValue);\n    }\n  },\n  setStyles: function setStyles(node, styles) {\n    var tranformedStyles = {};\n\n    for (var prop in styles) {\n      var val = styles[prop];\n      if (_flexbox2.default.isFlexProp(prop)) {\n        _flexbox2.default[prop](val, tranformedStyles);\n      } else {\n        tranformedStyles[prop] = (0, _styleUnit.convertUnit)(val, prop);\n      }\n    }\n\n    for (var _prop in tranformedStyles) {\n      var transformValue = tranformedStyles[_prop];\n      // hack handle compatibility issue\n      if (Array.isArray(transformValue)) {\n        for (var i = 0; i < transformValue.length; i++) {\n          node.style[_prop] = transformValue[i];\n        }\n      } else {\n        node.style[_prop] = transformValue;\n      }\n    }\n  },\n  beforeRender: function beforeRender() {\n    // Init rem unit\n    (0, _styleUnit.setRem)(this.getDeviceWidth() / this.getViewportWidth());\n  },\n  setNativeProps: function setNativeProps(node, props) {\n    for (var prop in props) {\n      var value = props[prop];\n      if (prop === CHILDREN) {\n        continue;\n      }\n\n      if (value != null) {\n        if (prop === STYLE) {\n          this.setStyles(node, value);\n        } else if (EVENT_PREFIX_REGEXP.test(prop)) {\n          var eventName = prop.slice(2).toLowerCase();\n          this.addEventListener(node, eventName, value);\n        } else {\n          this.setAttribute(node, prop, value);\n        }\n      }\n    }\n  }\n};\n\nexports.default = Driver;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = {\n\n  /**\n   * parse w3c attrs to weex module attrs\n   *\n   * @param {Object} w3c component data\n   * @return {Object} weex component data\n   */\n  parse: function parse(component) {\n    component.type = 'div';\n    return component;\n  }\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar BASE_FONT_SIZE = 28;\n\nfunction generateHeadingStyle(baseFontSize, fontMultiplier, marginMultiplier) {\n  return {\n    fontSize: baseFontSize * fontMultiplier,\n    marginTop: baseFontSize * fontMultiplier * marginMultiplier,\n    marginBottom: baseFontSize * fontMultiplier * marginMultiplier,\n    fontWeight: 'bold'\n  };\n}\n\nvar HeadingElements = {\n  h1: generateHeadingStyle(BASE_FONT_SIZE, 2, 0.67),\n  h2: generateHeadingStyle(BASE_FONT_SIZE, 1.5, 0.83),\n  h3: generateHeadingStyle(BASE_FONT_SIZE, 1.17, 1),\n  h4: generateHeadingStyle(BASE_FONT_SIZE, 1, 1.33),\n  h5: generateHeadingStyle(BASE_FONT_SIZE, 0.83, 1.67),\n  h6: generateHeadingStyle(BASE_FONT_SIZE, 0.67, 2.33)\n};\n\nexports.default = {\n  parse: function parse(component) {\n    var type = component.type,\n        props = component.props;\n\n\n    component.type = 'text';\n    props.style = _extends({}, HeadingElements[type] || HeadingElements.h6, props.style);\n\n    if (typeof props.children === 'string' && !props.value) {\n      props.value = props.children;\n      props.children = null;\n    }\n\n    return component;\n  }\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n/**\n * weex button\n *\n * props: disabled, style\n */\n\nexports.default = {\n  parse: function parse(component) {\n    var props = component.props;\n\n    component.type = 'text';\n\n    var style = props.style,\n        disabled = props.disabled,\n        children = props.children;\n\n\n    var textStyle = _extends({\n      textAlign: 'center',\n      fontSize: 22,\n      paddingTop: 4,\n      paddingRight: 12,\n      paddingBottom: 6,\n      paddingLeft: 12,\n      borderWidth: 4,\n      borderStyle: 'solid',\n      borderColor: '#000000',\n      backgroudColor: '#c0c0c0'\n    }, style);\n\n    if (disabled) {\n      props.onClick = null;\n      textStyle = _extends({}, textStyle, {\n        color: '#7f7f7f',\n        borderColor: '#7f7f7f'\n      });\n    }\n\n    if (typeof children === 'string') {\n      props.value = children;\n      props.children = null;\n    }\n\n    return component;\n  }\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar BASE_FONT_SIZE = 28;\n\nvar defaultParagraphStyle = {\n  fontSize: BASE_FONT_SIZE,\n  marginTop: BASE_FONT_SIZE,\n  marginBottom: BASE_FONT_SIZE\n};\n\nvar TypographyElements = {\n  u: {\n    textDecoration: 'underline'\n  },\n  s: {\n    textDecoration: 'line-through'\n  },\n  i: {\n    fontStyle: 'italic'\n  },\n  b: {\n    fontWeight: 'bold'\n  },\n  del: {\n    textDecoration: 'line-through'\n  },\n  em: {\n    fontStyle: 'italic'\n  },\n  strong: {\n    fontWeight: 'bold'\n  },\n  big: {\n    fontSize: BASE_FONT_SIZE * 1.2\n  },\n  small: {\n    fontSize: BASE_FONT_SIZE * 0.8\n  }\n};\n\nfunction transformString(string) {\n  return {\n    type: 'span',\n    attr: {\n      value: string\n    }\n  };\n}\n\nfunction transformChild(child) {\n  var type = child.type;\n  var props = child.props;\n  var style = props.style;\n  var nestedChildren = props.children;\n  // Alias img tag\n  if (type === 'img') {\n    type = 'image';\n  }\n\n  // Transfrom to span\n  if (TypographyElements[type]) {\n    style = _extends({}, TypographyElements[type], style);\n    type = 'span';\n  }\n\n  props.style = null;\n  props.children = null;\n\n  var element = {\n    type: type,\n    style: style,\n    attr: props || {}\n  };\n\n  if (nestedChildren) {\n    if (type === 'span' && typeof nestedChildren === 'string') {\n      element.attr.value = nestedChildren;\n    } else {\n      element.children = transformChildren(nestedChildren);\n    }\n  }\n\n  return element;\n}\n\nfunction transformChildren(children) {\n  var elements = [];\n  if (!Array.isArray(children)) {\n    children = [children];\n  }\n\n  for (var i = 0; i < children.length; i++) {\n    var child = children[i];\n    if (typeof child === 'string') {\n      elements.push(transformString(child));\n    } else if ((typeof child === 'undefined' ? 'undefined' : _typeof(child)) === 'object') {\n      elements.push(transformChild(child));\n    }\n  }\n\n  return elements;\n}\n\nexports.default = {\n  parse: function parse(component) {\n    var props = component.props;\n\n    var children = props.children;\n\n    component.type = 'richtext';\n\n    props.style = _extends({}, defaultParagraphStyle, props.style);\n\n    props.value = transformChildren(children);;\n    props.children = null;\n\n    return component;\n  }\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = {\n  parse: function parse(component) {\n    var props = component.props;\n\n    component.type = 'text';\n\n    if (typeof props.children === 'string' && !props.value) {\n      props.value = props.children;\n      props.children = null;\n    }\n\n    return component;\n  }\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = {\n\n  /**\n   * parse w3c attrs to weex module attrs\n   *\n   * @param {Object} w3c component data\n   * @return {Object} weex component data\n   */\n  parse: function parse(component) {\n    var props = component.props;\n\n\n    if (typeof props.children === 'string' && !props.value) {\n      props.value = props.children;\n      props.children = null;\n    }\n\n    return component;\n  }\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parseProps = require('../parseProps');\n\nexports.default = {\n\n  /**\n   * parse w3c attrs to weex module attrs\n   *\n   * @param {Object} w3c component data\n   * @return {Object} weex component data\n   */\n  parse: function parse(component) {\n    var props = component.props;\n\n    // modify props\n\n    component.props = (0, _parseProps.transformPropsAttrsToStyle)(props, ['width', 'height']);\n\n    return component;\n  }\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _parseProps = require('../parseProps');\n\nexports.default = {\n\n  /**\n   * parse w3c attrs to weex module attrs\n   *\n   * @param {Object} w3c component data\n   * @return {Object} weex component data\n   */\n  parse: function parse(component) {\n    var props = component.props;\n\n    component.type = 'image';\n\n    // modify props\n    component.props = (0, _parseProps.transformPropsAttrsToStyle)(props, ['width', 'height']);\n\n    return component;\n  }\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _img = require('./img');\n\nvar _img2 = _interopRequireDefault(_img);\n\nvar _video = require('./video');\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _textarea = require('./textarea');\n\nvar _textarea2 = _interopRequireDefault(_textarea);\n\nvar _span = require('./span');\n\nvar _span2 = _interopRequireDefault(_span);\n\nvar _p = require('./p');\n\nvar _p2 = _interopRequireDefault(_p);\n\nvar _button = require('./button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _heading = require('./heading');\n\nvar _heading2 = _interopRequireDefault(_heading);\n\nvar _block = require('./block');\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n  span: _span2.default,\n  p: _p2.default,\n  img: _img2.default,\n  button: _button2.default,\n  video: _video2.default,\n  textarea: _textarea2.default,\n  h1: _heading2.default,\n  h2: _heading2.default,\n  h3: _heading2.default,\n  h4: _heading2.default,\n  h5: _heading2.default,\n  h6: _heading2.default,\n  nav: _block2.default,\n  article: _block2.default,\n  section: _block2.default,\n  // Conflict with weex header tag\n  // header: block,\n  footer: _block2.default,\n  aside: _block2.default,\n  main: _block2.default\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /**\n                                                                                                                                                                                                                                                                               * Weex driver\n                                                                                                                                                                                                                                                                               */\n\n\nvar _styleUnit = require('style-unit');\n\nvar _elements = require('./elements');\n\nvar _elements2 = _interopRequireDefault(_elements);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar STYLE = 'style';\nvar ID = 'id';\nvar TEXT = 'text';\nvar CHILDREN = 'children';\nvar EVENT_PREFIX_REGEXP = /^on[A-Z]/;\nvar ARIA_PREFIX_REGEXP = /^aria-/;\n\nvar nodeMaps = {};\n/* global __weex_document__ */\nvar document = (typeof __weex_document__ === 'undefined' ? 'undefined' : _typeof(__weex_document__)) === 'object' ? __weex_document__ : (typeof document === 'undefined' ? 'undefined' : _typeof(document)) === 'object' ? document : null;\n\nvar Driver = {\n  deviceWidth: 750,\n  viewportWidth: 750,\n\n  getDeviceWidth: function getDeviceWidth() {\n    return this.deviceWidth;\n  },\n  setDeviceWidth: function setDeviceWidth(width) {\n    this.deviceWidth = width;\n  },\n  getViewportWidth: function getViewportWidth() {\n    return this.viewportWidth;\n  },\n  setViewportWidth: function setViewportWidth(width) {\n    this.viewportWidth = width;\n  },\n  getElementById: function getElementById(id) {\n    return nodeMaps[id];\n  },\n  createBody: function createBody() {\n    if (document.body) {\n      return document.body;\n    }\n\n    var documentElement = document.documentElement;\n    var body = document.createBody(Driver.bodyType, Driver.bodyProps);\n    documentElement.appendChild(body);\n\n    return body;\n  },\n  createComment: function createComment(content) {\n    return document.createComment(content);\n  },\n  createEmpty: function createEmpty() {\n    return this.createComment(' empty ');\n  },\n  createText: function createText(text) {\n    return Driver.createElement({\n      type: TEXT,\n      props: {\n        value: text\n      }\n    });\n  },\n  updateText: function updateText(node, content) {\n    this.setAttribute(node, 'value', content);\n  },\n  createElement: function createElement(component) {\n    var htmlElement = _elements2.default[component.type];\n    if (htmlElement) {\n      component = htmlElement.parse(component);\n    }\n\n    var props = component.props;\n    var events = [];\n    var style = {};\n    var originStyle = props[STYLE];\n    for (var prop in originStyle) {\n      style[prop] = (0, _styleUnit.convertUnit)(originStyle[prop], prop);\n    }\n\n    var node = document.createElement(component.type, {\n      style: style\n    });\n\n    this.setNativeProps(node, props, true);\n\n    return node;\n  },\n  appendChild: function appendChild(node, parent) {\n    return parent.appendChild(node);\n  },\n  removeChild: function removeChild(node, parent) {\n    parent = parent || node.parentNode;\n    var id = node.attr && node.attr[ID];\n    if (id != null) {\n      nodeMaps[id] = null;\n    }\n    return parent.removeChild(node);\n  },\n  replaceChild: function replaceChild(newChild, oldChild, parent) {\n    parent = parent || oldChild.parentNode;\n    var previousSibling = oldChild.previousSibling;\n    var nextSibling = oldChild.nextSibling;\n    this.removeChild(oldChild, parent);\n\n    if (previousSibling) {\n      this.insertAfter(newChild, previousSibling, parent);\n    } else if (nextSibling) {\n      this.insertBefore(newChild, nextSibling, parent);\n    } else {\n      this.appendChild(newChild, parent);\n    }\n  },\n  insertAfter: function insertAfter(node, after, parent) {\n    parent = parent || after.parentNode;\n    return parent.insertAfter(node, after);\n  },\n  insertBefore: function insertBefore(node, before, parent) {\n    parent = parent || before.parentNode;\n    return parent.insertBefore(node, before);\n  },\n  addEventListener: function addEventListener(node, eventName, eventHandler, props) {\n    var params = props[eventName + 'EventParams'];\n    return node.addEvent(eventName, eventHandler, params);\n  },\n  removeEventListener: function removeEventListener(node, eventName, eventHandler) {\n    return node.removeEvent(eventName, eventHandler);\n  },\n  removeAllEventListeners: function removeAllEventListeners(node) {\n    // Noop\n  },\n  removeAttribute: function removeAttribute(node, propKey, propValue) {\n    if (propKey == ID) {\n      nodeMaps[propValue] = null;\n    }\n    // Weex native will crash when pass null value\n    return node.setAttr(propKey, undefined, false);\n  },\n  setAttribute: function setAttribute(node, propKey, propValue) {\n    if (propKey == ID) {\n      nodeMaps[propValue] = node;\n    }\n\n    // Weex only support `ariaLabel` format, convert `aria-label` format to camelcase\n    if (ARIA_PREFIX_REGEXP.test(propKey)) {\n      propKey = propKey.replace(/\\-(\\w)/, function (m, p1) {\n        return p1.toUpperCase();\n      });\n    }\n\n    return node.setAttr(propKey, propValue, false);\n  },\n  setStyles: function setStyles(node, styles) {\n    // TODO if more then one style update, call setStyles will be better performance\n    for (var key in styles) {\n      var val = styles[key];\n      val = (0, _styleUnit.convertUnit)(val, key);\n      node.setStyle(key, val);\n    }\n  },\n  beforeRender: function beforeRender() {\n    // Turn off batched updates\n    document.open();\n\n    // Init rem unit\n    (0, _styleUnit.setRem)(this.getDeviceWidth() / this.getViewportWidth());\n  },\n  afterRender: function afterRender() {\n    if (document.listener && document.listener.createFinish) {\n      document.listener.createFinish();\n    }\n\n    // Turn on batched updates\n    document.close();\n  },\n  setNativeProps: function setNativeProps(node, props, skipSetStyles) {\n    for (var prop in props) {\n      var value = props[prop];\n      if (prop === CHILDREN) {\n        continue;\n      }\n\n      if (value != null) {\n        if (prop === STYLE) {\n          if (skipSetStyles) {\n            continue;\n          }\n          this.setStyles(node, value);\n        } else if (EVENT_PREFIX_REGEXP.test(prop)) {\n          var eventName = prop.slice(2).toLowerCase();\n          this.addEventListener(node, eventName, value, props);\n        } else {\n          this.setAttribute(node, prop, value);\n        }\n      }\n    }\n  }\n};\n\nexports.default = Driver;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _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; }; }();\n\nvar _host = require('./host');\n\nvar _host2 = _interopRequireDefault(_host);\n\nvar _native = require('./native');\n\nvar _native2 = _interopRequireDefault(_native);\n\nvar _instance = require('./instance');\n\nvar _instance2 = _interopRequireDefault(_instance);\n\nvar _instantiateComponent = require('./instantiateComponent');\n\nvar _instantiateComponent2 = _interopRequireDefault(_instantiateComponent);\n\nvar _getElementKeyName = require('./getElementKeyName');\n\nvar _getElementKeyName2 = _interopRequireDefault(_getElementKeyName);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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; }\n\nfunction _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; }\n\n/**\n * Fragment Component\n */\nvar FragmentComponent = function (_NativeComponent) {\n  _inherits(FragmentComponent, _NativeComponent);\n\n  function FragmentComponent(element) {\n    _classCallCheck(this, FragmentComponent);\n\n    return _possibleConstructorReturn(this, (FragmentComponent.__proto__ || Object.getPrototypeOf(FragmentComponent)).call(this, element));\n  }\n\n  _createClass(FragmentComponent, [{\n    key: 'mountComponent',\n    value: function mountComponent(parent, parentInstance, context, childMounter) {\n      // Parent native element\n      this._parent = parent;\n      this._parentInstance = parentInstance;\n      this._context = context;\n      this._mountID = _host2.default.mountID++;\n\n      var instance = {\n        _internal: this\n      };\n      this._instance = instance;\n\n      var fragment = this.getNativeNode();\n      var children = this._currentElement;\n\n      // Process children\n      this.mountChildren(children, context);\n\n      if (childMounter) {\n        childMounter(fragment, parent);\n      } else {\n        var isFragmentParent = Array.isArray(parent);\n        for (var i = 0; i < fragment.length; i++) {\n          var child = fragment[i];\n          // When the parent is also a fragment\n          if (isFragmentParent) {\n            parent.push(child);\n          } else {\n            _host2.default.driver.appendChild(child, parent);\n          }\n        }\n      }\n\n      return instance;\n    }\n  }, {\n    key: 'mountChildren',\n    value: function mountChildren(children, context) {\n      var _this2 = this;\n\n      var renderedChildren = this._renderedChildren = {};\n      var fragment = this.getNativeNode();\n\n      var renderedChildrenImage = children.map(function (element, index) {\n        var renderedChild = (0, _instantiateComponent2.default)(element);\n        var name = (0, _getElementKeyName2.default)(renderedChildren, element, index);\n        renderedChildren[name] = renderedChild;\n        renderedChild._mountIndex = index;\n        // Mount\n        var mountImage = renderedChild.mountComponent(_this2._parent, _this2._instance, context, function (nativeNode) {\n          if (Array.isArray(nativeNode)) {\n            for (var i = 0; i < nativeNode.length; i++) {\n              fragment.push(nativeNode[i]);\n            }\n          } else {\n            fragment.push(nativeNode);\n          }\n        });\n        return mountImage;\n      });\n\n      return renderedChildrenImage;\n    }\n  }, {\n    key: 'unmountComponent',\n    value: function unmountComponent(notRemoveChild) {\n      if (this._nativeNode) {\n        _instance2.default.remove(this._nativeNode);\n        if (!notRemoveChild) {\n          for (var i = 0; i < this._nativeNode.length; i++) {\n            _host2.default.driver.removeChild(this._nativeNode[i]);\n          }\n        }\n      }\n\n      // Do not need remove child when their parent is removed\n      this.unmountChildren(true);\n\n      this._currentElement = null;\n      this._nativeNode = null;\n      this._parent = null;\n      this._parentInstance = null;\n      this._context = null;\n      this._instance = null;\n    }\n  }, {\n    key: 'updateComponent',\n    value: function updateComponent(prevElement, nextElement, prevContext, nextContext) {\n      // Replace current element\n      this._currentElement = nextElement;\n      this.updateChildren(this._currentElement, nextContext);\n    }\n  }, {\n    key: 'getNativeNode',\n    value: function getNativeNode() {\n      if (this._nativeNode == null) {\n        this._nativeNode = [];\n      }\n\n      return this._nativeNode;\n    }\n  }, {\n    key: 'getPublicInstance',\n    value: function getPublicInstance() {\n      return this.getNativeNode();\n    }\n  }, {\n    key: 'getName',\n    value: function getName() {\n      return 'fragment';\n    }\n  }]);\n\n  return FragmentComponent;\n}(_native2.default);\n\nexports.default = FragmentComponent;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n  // SameValue algorithm\n  if (x === y) {\n    // Steps 1-5, 7-10\n    // Steps 6.b-6.e: +0 != -0\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    // Step 6.a: NaN == NaN\n    return x !== x && y !== y;\n  }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n  if (is(objA, objB)) {\n    return true;\n  }\n\n  if ((typeof objA === 'undefined' ? 'undefined' : _typeof(objA)) !== 'object' || objA === null || (typeof objB === 'undefined' ? 'undefined' : _typeof(objB)) !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  // Test for A's keys different from B.\n  for (var i = 0; i < keysA.length; i++) {\n    if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nexports.default = shallowEqual;\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nfunction enqueueCallback(internal, callback) {\n  if (callback) {\n    var callbackQueue = internal._pendingCallbacks || (internal._pendingCallbacks = []);\n    callbackQueue.push(callback);\n  }\n}\n\nfunction enqueueState(internal, partialState) {\n  if (partialState) {\n    var stateQueue = internal._pendingStateQueue || (internal._pendingStateQueue = []);\n    stateQueue.push(partialState);\n  }\n}\n\nvar Updater = {\n  setState: function setState(component, partialState, callback) {\n    var internal = component._internal;\n\n    if (!internal) {\n      return;\n    }\n\n    enqueueState(internal, partialState);\n    enqueueCallback(internal, callback);\n\n    // pending in componentWillReceiveProps and componentWillMount\n    if (!internal._pendingState && internal._renderedComponent) {\n      this.runUpdate(component);\n    }\n  },\n\n  forceUpdate: function forceUpdate(component, callback) {\n    var internal = component._internal;\n\n    if (!internal) {\n      return;\n    }\n\n    internal._pendingForceUpdate = true;\n\n    enqueueCallback(internal, callback);\n    // pending in componentWillMount\n    if (internal._renderedComponent) {\n      this.runUpdate(component);\n    }\n  },\n\n  runUpdate: function runUpdate(component) {\n    var internal = component._internal;\n\n    // If updateComponent happens to enqueue any new updates, we\n    // shouldn't execute the callbacks until the next render happens, so\n    // stash the callbacks first\n    var callbacks = internal._pendingCallbacks;\n    internal._pendingCallbacks = null;\n\n    var prevElement = internal._currentElement;\n    var prevUnmaskedContext = internal._context;\n\n    if (internal._pendingStateQueue || internal._pendingForceUpdate) {\n      internal.updateComponent(prevElement, prevElement, prevUnmaskedContext, prevUnmaskedContext);\n    }\n\n    this.runCallbacks(callbacks, component);\n  },\n\n  runCallbacks: function runCallbacks(callbacks, context) {\n    if (callbacks) {\n      for (var i = 0; i < callbacks.length; i++) {\n        callbacks[i].call(context);\n      }\n    }\n  }\n};\n\nexports.default = Updater;\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _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; }; }();\n\nvar _host = require('./host');\n\nvar _host2 = _interopRequireDefault(_host);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Stateless Component Class Wrapper\n */\nvar StatelessComponent = function () {\n  function StatelessComponent(pureRender) {\n    _classCallCheck(this, StatelessComponent);\n\n    // A stateless function\n    this.pureRender = pureRender;\n  }\n\n  _createClass(StatelessComponent, [{\n    key: 'render',\n    value: function render() {\n      if (process.env.NODE_ENV !== 'production') {\n        _host2.default.measurer && _host2.default.measurer.beforeRender();\n      }\n\n      return this.pureRender(this.props, this.context);\n    }\n  }]);\n\n  return StatelessComponent;\n}();\n\nexports.default = StatelessComponent;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _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; }; }();\n\nvar _stateless = require('./stateless');\n\nvar _stateless2 = _interopRequireDefault(_stateless);\n\nvar _updater = require('./updater');\n\nvar _updater2 = _interopRequireDefault(_updater);\n\nvar _host = require('./host');\n\nvar _host2 = _interopRequireDefault(_host);\n\nvar _ref = require('./ref');\n\nvar _ref2 = _interopRequireDefault(_ref);\n\nvar _instantiateComponent = require('./instantiateComponent');\n\nvar _instantiateComponent2 = _interopRequireDefault(_instantiateComponent);\n\nvar _shouldUpdateComponent = require('./shouldUpdateComponent');\n\nvar _shouldUpdateComponent2 = _interopRequireDefault(_shouldUpdateComponent);\n\nvar _shallowEqual = require('./shallowEqual');\n\nvar _shallowEqual2 = _interopRequireDefault(_shallowEqual);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction performInSandbox(fn, instance, callback) {\n  try {\n    return fn();\n  } catch (e) {\n    if (callback) {\n      callback(e);\n    } else {\n      handleError(instance, e);\n    }\n  }\n}\n\nfunction handleError(instance, error) {\n  var boundary = void 0;\n\n  while (instance) {\n    if (typeof instance.componentDidCatch === 'function') {\n      boundary = instance;\n      break;\n    } else if (instance._internal && instance._internal._parentInstance) {\n      instance = instance._internal._parentInstance;\n    } else {\n      break;\n    }\n  }\n\n  if (boundary) {\n    boundary.componentDidCatch(error);\n  } else {\n    if (_host2.default.sandbox) {\n      setTimeout(function () {\n        throw error;\n      }, 0);\n    } else {\n      throw error;\n    }\n  }\n}\n\nvar measureLifeCycle = void 0;\nif (process.env.NODE_ENV !== 'production') {\n  measureLifeCycle = function measureLifeCycle(callback, instanceID, type) {\n    _host2.default.measurer && _host2.default.measurer.beforeLifeCycle(instanceID, type);\n    callback();\n    _host2.default.measurer && _host2.default.measurer.afterLifeCycle(instanceID, type);\n  };\n}\n\n/**\n * Composite Component\n */\n\nvar CompositeComponent = function () {\n  function CompositeComponent(element) {\n    _classCallCheck(this, CompositeComponent);\n\n    this._currentElement = element;\n  }\n\n  _createClass(CompositeComponent, [{\n    key: 'getName',\n    value: function getName() {\n      var type = this._currentElement.type;\n      var constructor = this._instance && this._instance.constructor;\n      return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n    }\n  }, {\n    key: 'mountComponent',\n    value: function mountComponent(parent, parentInstance, context, childMounter) {\n      var _this = this;\n\n      this._parent = parent;\n      this._parentInstance = parentInstance;\n      this._context = context;\n      this._mountID = _host2.default.mountID++;\n      this._updateCount = 0;\n\n      if (process.env.NODE_ENV !== 'production') {\n        _host2.default.measurer && _host2.default.measurer.beforeMountComponent(this._mountID, this);\n      }\n\n      var Component = this._currentElement.type;\n      var publicProps = this._currentElement.props;\n      var isClass = Component.prototype;\n      var isComponentClass = isClass && Component.prototype.isComponentClass;\n      // Class stateless component without state but have lifecycles\n      var isStatelessClass = isClass && Component.prototype.render;\n\n      // Context process\n      var publicContext = this._processContext(context);\n\n      // Initialize the public class\n      var instance = void 0;\n      var renderedElement = void 0;\n\n      if (isComponentClass || isStatelessClass) {\n        // Component instance\n        instance = new Component(publicProps, publicContext, _updater2.default);\n      } else if (typeof Component === 'function') {\n        // Functional stateless component without state and lifecycles\n        instance = new _stateless2.default(Component);\n      } else {\n        throw new Error('Invalid component type: ' + Component + '. (keys: ' + Object.keys(Component) + ')');\n      }\n\n      // These should be set up in the constructor, but as a convenience for\n      // simpler class abstractions, we set them up after the fact.\n      instance.props = publicProps;\n      instance.context = publicContext;\n      instance.refs = {};\n\n      // Inject the updater into instance\n      instance.updater = _updater2.default;\n      instance._internal = this;\n      this._instance = instance;\n\n      // Init state, must be set to an object or null\n      var initialState = instance.state;\n      if (initialState === undefined) {\n        // TODO clone the state?\n        instance.state = initialState = null;\n      }\n\n      var error = null;\n      var errorCallback = function errorCallback(e) {\n        error = e;\n      };\n\n      if (instance.componentWillMount) {\n        performInSandbox(function () {\n          if (process.env.NODE_ENV !== 'production') {\n            measureLifeCycle(function () {\n              instance.componentWillMount();\n            }, _this._mountID, 'componentWillMount');\n          } else {\n            instance.componentWillMount();\n          }\n        }, instance, errorCallback);\n      }\n\n      if (renderedElement == null) {\n        _host2.default.component = this;\n        // Process pending state when call setState in componentWillMount\n        instance.state = this._processPendingState(publicProps, publicContext);\n\n        performInSandbox(function () {\n          if (process.env.NODE_ENV !== 'production') {\n            measureLifeCycle(function () {\n              renderedElement = instance.render();\n            }, _this._mountID, 'render');\n          } else {\n            renderedElement = instance.render();\n          }\n        }, instance, errorCallback);\n\n        _host2.default.component = null;\n      }\n\n      this._renderedComponent = (0, _instantiateComponent2.default)(renderedElement);\n      this._renderedComponent.mountComponent(this._parent, instance, this._processChildContext(context), childMounter);\n\n      if (error) {\n        handleError(instance, error);\n      }\n\n      if (this._currentElement && this._currentElement.ref) {\n        _ref2.default.attach(this._currentElement._owner, this._currentElement.ref, this);\n      }\n\n      if (instance.componentDidMount) {\n        performInSandbox(function () {\n          if (process.env.NODE_ENV !== 'production') {\n            measureLifeCycle(function () {\n              instance.componentDidMount();\n            }, _this._mountID, 'componentDidMount');\n          } else {\n            instance.componentDidMount();\n          }\n        }, instance);\n      }\n\n      _host2.default.hook.Reconciler.mountComponent(this);\n\n      if (process.env.NODE_ENV !== 'production') {\n        _host2.default.measurer && _host2.default.measurer.afterMountComponent(this._mountID);\n      }\n\n      return instance;\n    }\n  }, {\n    key: 'unmountComponent',\n    value: function unmountComponent(notRemoveChild) {\n      var instance = this._instance;\n\n      if (instance.componentWillUnmount) {\n        performInSandbox(function () {\n          instance.componentWillUnmount();\n        }, instance);\n      }\n\n      _host2.default.hook.Reconciler.unmountComponent(this);\n\n      instance._internal = null;\n\n      if (this._renderedComponent != null) {\n        var ref = this._currentElement.ref;\n        if (ref) {\n          _ref2.default.detach(this._currentElement._owner, ref, this);\n        }\n\n        this._renderedComponent.unmountComponent(notRemoveChild);\n        this._renderedComponent = null;\n        this._instance = null;\n      }\n\n      this._currentElement = null;\n      this._parentInstance = null;\n\n      // Reset pending fields\n      // Even if this component is scheduled for another update in ReactUpdates,\n      // it would still be ignored because these fields are reset.\n      this._pendingStateQueue = null;\n      this._pendingForceUpdate = false;\n\n      // These fields do not really need to be reset since this object is no\n      // longer accessible.\n      this._context = null;\n    }\n\n    /**\n     * Filters the context object to only contain keys specified in\n     * `contextTypes`\n     */\n\n  }, {\n    key: '_processContext',\n    value: function _processContext(context) {\n      var Component = this._currentElement.type;\n      var contextTypes = Component.contextTypes;\n      if (!contextTypes) {\n        return {};\n      }\n      var maskedContext = {};\n      for (var contextName in contextTypes) {\n        maskedContext[contextName] = context[contextName];\n      }\n      return maskedContext;\n    }\n  }, {\n    key: '_processChildContext',\n    value: function _processChildContext(currentContext) {\n      var instance = this._instance;\n      var childContext = instance.getChildContext && instance.getChildContext();\n      if (childContext) {\n        return Object.assign({}, currentContext, childContext);\n      }\n      return currentContext;\n    }\n  }, {\n    key: '_processPendingState',\n    value: function _processPendingState(props, context) {\n      var instance = this._instance;\n      var queue = this._pendingStateQueue;\n      if (!queue) {\n        return instance.state;\n      }\n      // Reset pending queue\n      this._pendingStateQueue = null;\n      var nextState = Object.assign({}, instance.state);\n      for (var i = 0; i < queue.length; i++) {\n        var partial = queue[i];\n        Object.assign(nextState, typeof partial === 'function' ? partial.call(instance, nextState, props, context) : partial);\n      }\n\n      return nextState;\n    }\n  }, {\n    key: 'updateComponent',\n    value: function updateComponent(prevElement, nextElement, prevUnmaskedContext, nextUnmaskedContext) {\n      var instance = this._instance;\n\n      if (process.env.NODE_ENV !== 'production') {\n        _host2.default.measurer && _host2.default.measurer.beforeUpdateComponent(this._mountID, this);\n      }\n\n      if (!instance) {\n        console.error('Update component \\'' + this.getName() + '\\' that has already been unmounted (or failed to mount).');\n      }\n\n      var willReceive = false;\n      var nextContext = void 0;\n      var nextProps = void 0;\n\n      // Determine if the context has changed or not\n      if (this._context === nextUnmaskedContext) {\n        nextContext = instance.context;\n      } else {\n        nextContext = this._processContext(nextUnmaskedContext);\n        willReceive = true;\n      }\n\n      // Distinguish between a props update versus a simple state update\n      if (prevElement === nextElement) {\n        // Skip checking prop types again -- we don't read component.props to avoid\n        // warning for DOM component props in this upgrade\n        nextProps = nextElement.props;\n      } else {\n        nextProps = nextElement.props;\n        willReceive = true;\n      }\n\n      var hasReceived = willReceive && instance.componentWillReceiveProps;\n\n      if (hasReceived) {\n        // Calling this.setState() within componentWillReceiveProps will not trigger an additional render.\n        this._pendingState = true;\n        performInSandbox(function () {\n          instance.componentWillReceiveProps(nextProps, nextContext);\n        }, instance);\n        this._pendingState = false;\n      }\n\n      // Update refs\n      _ref2.default.update(prevElement, nextElement, this);\n\n      // Shoud update always default\n      var shouldUpdate = true;\n      var prevProps = instance.props;\n      var prevState = instance.state;\n      // TODO: could delay execution processPendingState\n      var nextState = this._processPendingState(nextProps, nextContext);\n\n      // ShouldComponentUpdate is not called when forceUpdate is used\n      if (!this._pendingForceUpdate) {\n        if (instance.shouldComponentUpdate) {\n          shouldUpdate = performInSandbox(function () {\n            return instance.shouldComponentUpdate(nextProps, nextState, nextContext);\n          }, instance);\n        } else if (instance.isPureComponentClass) {\n          shouldUpdate = !(0, _shallowEqual2.default)(prevProps, nextProps) || !(0, _shallowEqual2.default)(prevState, nextState);\n        }\n      }\n\n      if (shouldUpdate) {\n        this._pendingForceUpdate = false;\n        // Will set `this.props`, `this.state` and `this.context`.\n        var prevContext = instance.context;\n\n        // Cannot use this.setState() in componentWillUpdate.\n        // If need to update state in response to a prop change, use componentWillReceiveProps instead.\n        performInSandbox(function () {\n          if (instance.componentWillUpdate) {\n            instance.componentWillUpdate(nextProps, nextState, nextContext);\n          }\n        }, instance);\n\n        // Replace with next\n        this._currentElement = nextElement;\n        this._context = nextUnmaskedContext;\n        instance.props = nextProps;\n        instance.state = nextState;\n        instance.context = nextContext;\n\n        this._updateRenderedComponent(nextUnmaskedContext);\n\n        performInSandbox(function () {\n          if (instance.componentDidUpdate) {\n            instance.componentDidUpdate(prevProps, prevState, prevContext);\n          }\n        }, instance);\n\n        this._updateCount++;\n      } else {\n        // If it's determined that a component should not update, we still want\n        // to set props and state but we shortcut the rest of the update.\n        this._currentElement = nextElement;\n        this._context = nextUnmaskedContext;\n        instance.props = nextProps;\n        instance.state = nextState;\n        instance.context = nextContext;\n      }\n\n      // Flush setState callbacks set in componentWillReceiveProps\n      if (hasReceived) {\n        var callbacks = this._pendingCallbacks;\n        this._pendingCallbacks = null;\n        _updater2.default.runCallbacks(callbacks, instance);\n      }\n\n      if (process.env.NODE_ENV !== 'production') {\n        _host2.default.measurer && _host2.default.measurer.afterUpdateComponent(this._mountID);\n      }\n\n      _host2.default.hook.Reconciler.receiveComponent(this);\n    }\n\n    /**\n     * Call the component's `render` method and update the DOM accordingly.\n     */\n\n  }, {\n    key: '_updateRenderedComponent',\n    value: function _updateRenderedComponent(context) {\n      var _this2 = this;\n\n      var prevRenderedComponent = this._renderedComponent;\n      var prevRenderedElement = prevRenderedComponent._currentElement;\n\n      var instance = this._instance;\n      var nextRenderedElement = void 0;\n\n      _host2.default.component = this;\n\n      performInSandbox(function () {\n        if (process.env.NODE_ENV !== 'production') {\n          measureLifeCycle(function () {\n            nextRenderedElement = instance.render();\n          }, _this2._mountID, 'render');\n        } else {\n          nextRenderedElement = instance.render();\n        }\n      }, instance);\n\n      _host2.default.component = null;\n\n      if ((0, _shouldUpdateComponent2.default)(prevRenderedElement, nextRenderedElement)) {\n        prevRenderedComponent.updateComponent(prevRenderedElement, nextRenderedElement, prevRenderedComponent._context, this._processChildContext(context));\n        if (process.env.NODE_ENV !== 'production') {\n          _host2.default.measurer && _host2.default.measurer.recordOperation({\n            instanceID: this._mountID,\n            type: 'update component',\n            payload: {}\n          });\n        }\n      } else {\n        var oldChild = prevRenderedComponent.getNativeNode();\n        prevRenderedComponent.unmountComponent(true);\n\n        this._renderedComponent = (0, _instantiateComponent2.default)(nextRenderedElement);\n        this._renderedComponent.mountComponent(this._parent, instance, this._processChildContext(context), function (newChild, parent) {\n          // TODO: Duplicate code in native component file\n          if (!Array.isArray(newChild)) {\n            newChild = [newChild];\n          }\n\n          // oldChild or newChild all maybe fragment\n          if (!Array.isArray(oldChild)) {\n            oldChild = [oldChild];\n          }\n\n          // If newChild count large then oldChild\n          var lastNewChild = void 0;\n          for (var i = 0; i < newChild.length; i++) {\n            var child = newChild[i];\n            if (oldChild[i]) {\n              _host2.default.driver.replaceChild(child, oldChild[i]);\n            } else {\n              _host2.default.driver.insertAfter(child, lastNewChild);\n            }\n            lastNewChild = child;\n          }\n\n          // If newChild count less then oldChild\n          if (newChild.length < oldChild.length) {\n            for (var _i = newChild.length; _i < oldChild.length; _i++) {\n              _host2.default.driver.removeChild(oldChild[_i]);\n            }\n          }\n        });\n      }\n    }\n  }, {\n    key: 'getNativeNode',\n    value: function getNativeNode() {\n      var renderedComponent = this._renderedComponent;\n      if (renderedComponent) {\n        return renderedComponent.getNativeNode();\n      }\n    }\n  }, {\n    key: 'getPublicInstance',\n    value: function getPublicInstance() {\n      var instance = this._instance;\n      // The Stateless components cannot be given refs\n      if (instance instanceof _stateless2.default) {\n        return null;\n      }\n      return instance;\n    }\n  }]);\n\n  return CompositeComponent;\n}();\n\nexports.default = CompositeComponent;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _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; }; }();\n\nvar _host = require('./host');\n\nvar _host2 = _interopRequireDefault(_host);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Text Component\n */\nvar TextComponent = function () {\n  function TextComponent(element) {\n    _classCallCheck(this, TextComponent);\n\n    this._currentElement = element;\n    this._stringText = String(element);\n  }\n\n  _createClass(TextComponent, [{\n    key: 'mountComponent',\n    value: function mountComponent(parent, parentInstance, context, childMounter) {\n      this._parent = parent;\n      this._parentInstance = parentInstance;\n      this._context = context;\n      this._mountID = _host2.default.mountID++;\n\n      // Weex dom operation\n      var nativeNode = this.getNativeNode();\n\n      if (childMounter) {\n        childMounter(nativeNode, parent);\n      } else {\n        _host2.default.driver.appendChild(nativeNode, parent);\n      }\n\n      var instance = {\n        _internal: this\n      };\n\n      _host2.default.hook.Reconciler.mountComponent(this);\n\n      return instance;\n    }\n  }, {\n    key: 'unmountComponent',\n    value: function unmountComponent(notRemoveChild) {\n      if (this._nativeNode && !notRemoveChild) {\n        _host2.default.driver.removeChild(this._nativeNode, this._parent);\n      }\n\n      _host2.default.hook.Reconciler.unmountComponent(this);\n\n      this._currentElement = null;\n      this._nativeNode = null;\n      this._parent = null;\n      this._parentInstance = null;\n      this._context = null;\n      this._stringText = null;\n    }\n  }, {\n    key: 'updateComponent',\n    value: function updateComponent(prevElement, nextElement, context) {\n      // If some text do noting\n      if (prevElement !== nextElement) {\n        // Replace current element\n        this._currentElement = nextElement;\n        // Devtool read the latest stringText value\n        this._stringText = String(nextElement);\n        _host2.default.driver.updateText(this.getNativeNode(), this._stringText);\n        _host2.default.hook.Reconciler.receiveComponent(this);\n      }\n    }\n  }, {\n    key: 'getNativeNode',\n    value: function getNativeNode() {\n      if (this._nativeNode == null) {\n        this._nativeNode = _host2.default.driver.createText(this._stringText);\n      }\n      return this._nativeNode;\n    }\n  }]);\n\n  return TextComponent;\n}();\n\nexports.default = TextComponent;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _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; }; }();\n\nvar _host = require('./host');\n\nvar _host2 = _interopRequireDefault(_host);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Empty Component\n */\nvar EmptyComponent = function () {\n  function EmptyComponent() {\n    _classCallCheck(this, EmptyComponent);\n\n    this._currentElement = null;\n  }\n\n  _createClass(EmptyComponent, [{\n    key: 'mountComponent',\n    value: function mountComponent(parent, parentInstance, context, childMounter) {\n      this._parent = parent;\n      this._parentInstance = parentInstance;\n      this._context = context;\n\n      var instance = {\n        _internal: this\n      };\n\n      var nativeNode = this.getNativeNode();\n      if (childMounter) {\n        childMounter(nativeNode, parent);\n      } else {\n        _host2.default.driver.appendChild(nativeNode, parent);\n      }\n\n      return instance;\n    }\n  }, {\n    key: 'unmountComponent',\n    value: function unmountComponent(notRemoveChild) {\n      if (this._nativeNode && !notRemoveChild) {\n        _host2.default.driver.removeChild(this._nativeNode, this._parent);\n      }\n\n      this._nativeNode = null;\n      this._parent = null;\n      this._parentInstance = null;\n      this._context = null;\n    }\n  }, {\n    key: 'updateComponent',\n    value: function updateComponent() {\n      // Noop\n    }\n  }, {\n    key: 'getNativeNode',\n    value: function getNativeNode() {\n      // Weex native node\n      if (this._nativeNode == null) {\n        this._nativeNode = _host2.default.driver.createEmpty();\n      }\n\n      return this._nativeNode;\n    }\n  }]);\n\n  return EmptyComponent;\n}();\n\nexports.default = EmptyComponent;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = inject;\n\nvar _universalEnv = require('universal-env');\n\nvar _host = require('./vdom/host');\n\nvar _host2 = _interopRequireDefault(_host);\n\nvar _empty = require('./vdom/empty');\n\nvar _empty2 = _interopRequireDefault(_empty);\n\nvar _native = require('./vdom/native');\n\nvar _native2 = _interopRequireDefault(_native);\n\nvar _text = require('./vdom/text');\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _composite = require('./vdom/composite');\n\nvar _composite2 = _interopRequireDefault(_composite);\n\nvar _fragment = require('./vdom/fragment');\n\nvar _fragment2 = _interopRequireDefault(_fragment);\n\nvar _driverWeex = require('driver-weex');\n\nvar _driverWeex2 = _interopRequireDefault(_driverWeex);\n\nvar _driverBrowser = require('driver-browser');\n\nvar _driverBrowser2 = _interopRequireDefault(_driverBrowser);\n\nvar _hook = require('./debug/hook');\n\nvar _hook2 = _interopRequireDefault(_hook);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction inject(_ref) {\n  var driver = _ref.driver,\n      hook = _ref.hook,\n      measurer = _ref.measurer,\n      deviceWidth = _ref.deviceWidth,\n      viewportWidth = _ref.viewportWidth,\n      eventRegistry = _ref.eventRegistry,\n      bodyType = _ref.bodyType,\n      bodyProps = _ref.bodyProps;\n\n  // Inject component class\n  _host2.default.EmptyComponent = _empty2.default;\n  _host2.default.NativeComponent = _native2.default;\n  _host2.default.TextComponent = _text2.default;\n  _host2.default.FragmentComponent = _fragment2.default;\n  _host2.default.CompositeComponent = _composite2.default;\n\n  // Inject devtool hook\n  _host2.default.hook = hook || _hook2.default;\n\n  // Inject performance measurer\n  _host2.default.measurer = measurer;\n\n  // Inject render driver\n  if (!_host2.default.driver) {\n    if (!driver) {\n      if (_universalEnv.isWeex) {\n        driver = _driverWeex2.default;\n      } else if (_universalEnv.isWeb) {\n        driver = _driverBrowser2.default;\n      } else {\n        throw Error('No builtin driver matched');\n      }\n    }\n    _host2.default.driver = driver;\n  }\n\n  if (deviceWidth && _host2.default.driver.setDeviceWidth) {\n    _host2.default.driver.setDeviceWidth(deviceWidth);\n  }\n\n  if (viewportWidth && _host2.default.driver.setViewportWidth) {\n    _host2.default.driver.setViewportWidth(viewportWidth);\n  }\n\n  if (eventRegistry) {\n    _host2.default.driver.eventRegistry = eventRegistry;\n  }\n\n  // Body custom type only works in weex\n  if (bodyType) {\n    _host2.default.driver.bodyType = bodyType;\n  }\n\n  if (bodyProps) {\n    _host2.default.driver.bodyProps = bodyProps;\n  }\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _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; }; }();\n\nvar _component = require('./component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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; }\n\nfunction _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; }\n\n/**\n * Pure component class.\n */\nvar PureComponent = function (_Component) {\n  _inherits(PureComponent, _Component);\n\n  function PureComponent(props, context) {\n    _classCallCheck(this, PureComponent);\n\n    return _possibleConstructorReturn(this, (PureComponent.__proto__ || Object.getPrototypeOf(PureComponent)).call(this, props, context));\n  }\n\n  _createClass(PureComponent, [{\n    key: 'isPureComponentClass',\n    value: function isPureComponentClass() {}\n  }]);\n\n  return PureComponent;\n}(_component2.default);\n\nexports.default = PureComponent;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _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; }; }();\n\nvar _component = require('../component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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; }\n\nfunction _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; }\n\nvar rootCounter = 1;\n\nvar Root = function (_Component) {\n  _inherits(Root, _Component);\n\n  function Root() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Root);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Root.__proto__ || Object.getPrototypeOf(Root)).call.apply(_ref, [this].concat(args))), _this), _this.rootID = rootCounter++, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(Root, [{\n    key: 'isRootComponent',\n    value: function isRootComponent() {}\n  }, {\n    key: 'render',\n    value: function render() {\n      return this.props.children;\n    }\n  }, {\n    key: 'getPublicInstance',\n    value: function getPublicInstance() {\n      return this.getRenderedComponent().getPublicInstance();\n    }\n  }, {\n    key: 'getRenderedComponent',\n    value: function getRenderedComponent() {\n      return this._internal._renderedComponent;\n    }\n  }]);\n\n  return Root;\n}(_component2.default);\n\nexports.default = Root;\nmodule.exports = exports['default'];","'use strict';\n\nvar _hook = require('./hook');\n\nvar _hook2 = _interopRequireDefault(_hook);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.inject(_hook2.default);\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.createContext = exports.Children = exports.version = exports.setNativeProps = exports.findComponentInstance = exports.unmountComponentAtNode = exports.findDOMNode = exports.createPortal = exports.hydrate = exports.render = exports.PropTypes = exports.PureComponent = exports.Component = exports.createFactory = exports.isValidElement = exports.cloneElement = exports.createElement = undefined;\n\nrequire('./debug/devtools');\n\nvar _element = require('./element');\n\nvar _component = require('./component');\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _purecomponent = require('./purecomponent');\n\nvar _purecomponent2 = _interopRequireDefault(_purecomponent);\n\nvar _proptypes = require('./proptypes');\n\nvar _proptypes2 = _interopRequireDefault(_proptypes);\n\nvar _render2 = require('./render');\n\nvar _render3 = _interopRequireDefault(_render2);\n\nvar _hydrate2 = require('./hydrate');\n\nvar _hydrate3 = _interopRequireDefault(_hydrate2);\n\nvar _createPortal2 = require('./createPortal');\n\nvar _createPortal3 = _interopRequireDefault(_createPortal2);\n\nvar _findDOMNode2 = require('./findDOMNode');\n\nvar _findDOMNode3 = _interopRequireDefault(_findDOMNode2);\n\nvar _unmountComponentAtNode2 = require('./unmountComponentAtNode');\n\nvar _unmountComponentAtNode3 = _interopRequireDefault(_unmountComponentAtNode2);\n\nvar _findComponentInstance2 = require('./findComponentInstance');\n\nvar _findComponentInstance3 = _interopRequireDefault(_findComponentInstance2);\n\nvar _setNativeProps2 = require('./setNativeProps');\n\nvar _setNativeProps3 = _interopRequireDefault(_setNativeProps2);\n\nvar _version2 = require('./version');\n\nvar _version3 = _interopRequireDefault(_version2);\n\nvar _children = require('./children');\n\nvar _children2 = _interopRequireDefault(_children);\n\nvar _createContext2 = require('./createContext');\n\nvar _createContext3 = _interopRequireDefault(_createContext2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.createElement = _element.createElement;\nexports.cloneElement = _element.cloneElement;\nexports.isValidElement = _element.isValidElement;\nexports.createFactory = _element.createFactory;\nexports.Component = _component2.default;\nexports.PureComponent = _purecomponent2.default;\nexports.PropTypes = _proptypes2.default;\nexports.render = _render3.default;\nexports.hydrate = _hydrate3.default;\nexports.createPortal = _createPortal3.default;\nexports.findDOMNode = _findDOMNode3.default;\nexports.unmountComponentAtNode = _unmountComponentAtNode3.default;\nexports.findComponentInstance = _findComponentInstance3.default;\nexports.setNativeProps = _setNativeProps3.default;\nexports.version = _version3.default;\nexports.Children = _children2.default;\nexports.createContext = _createContext3.default;\nexports['default'] = module.exports;\nexports.default = module.exports;","const options = {\n  root: null,\n  rootMargin: '0px',\n  threshold: 0.0\n};\nlet appearEvt, disappearEvt;\nlet intersectionObserver;\n\nfunction initIntersection() {\n  appearEvt = document.createEvent('HTMLEvents');\n  disappearEvt = document.createEvent('HTMLEvents');\n  appearEvt.initEvent('appear', false, true);\n  disappearEvt.initEvent('disappear', false, true);\n\n  intersectionObserver = new IntersectionObserver(handleIntersect, options);\n}\n\nfunction handleIntersect(entries) {\n  entries.forEach((entry) => {\n    const { target, boundingClientRect, intersectionRatio } = entry;\n\n    // is inview\n    if (intersectionRatio > 0) {\n      target.dataset.appeared = true;\n      target.dispatchEvent(appearEvt);\n    } else if (target.dataset.appeared) {\n      target.dataset.appeared = false;\n      target.dispatchEvent(disappearEvt);\n    }\n  });\n}\n\nexport function observerElement(element) {\n  intersectionObserver.observe(element);\n}\n\nexport function isExistIntersection() {\n  return typeof IntersectionObserver === 'function';\n}\n\nexport default function createIntersectionObserver() {\n  initIntersection();\n}\n","let offsetTop = 0;\nlet appearEvt, disappearEvt;\nlet _appearDoms = [];\n\nclass AppearRegistry {\n  static createEvent() {\n    appearEvt = document.createEvent('HTMLEvents');\n    disappearEvt = document.createEvent('HTMLEvents');\n    appearEvt.initEvent('appear', false, true);\n    disappearEvt.initEvent('disappear', false, true);\n  }\n\n  constructor(elements) {\n    this.current = [];\n    this.elements = elements;\n\n    this.options = {\n      container: window,\n      wait: 100,\n      x: 0,\n      y: 0,\n      cls: 'appear',\n      once: false,\n      onReset: function() {},\n      onAppear: function() {},\n      onDisappear: function() {}\n    };\n    this.container = null;\n    this.appearWatchElements = null;\n\n    this.initConfig.apply(this, arguments);\n  }\n\n  initConfig(opts) {\n    this.extend(this.options, opts || (opts = {}));\n    this.appearWatchElements = this.appearWatchElements || this.getElements();\n    this.bindEvent();\n  }\n\n  extend(target, el) {\n    for (let k in el) {\n      if (el.hasOwnProperty(k)) {\n        target[k] = el[k];\n      }\n    }\n    return target;\n  }\n\n  inViewport(element, offset, type) {\n    let { top, right, bottom, left } = element.getBoundingClientRect();\n\n    left = offset.right > left && offset.left < right;\n    top = offset.bottom > top - offsetTop && offset.top < bottom;\n    return left && top;\n  }\n\n  getElements(type) {\n    let container = this.options.container;\n    let appearWatchElements;\n    this.container = container;\n\n    appearWatchElements = _appearDoms || [];\n    appearWatchElements = [].slice.call(appearWatchElements, null);\n\n    return appearWatchElements;\n  }\n\n  // check dom inview\n  check(nodes) {\n    raf(() => {\n      this.calculate(nodes);\n    });\n  }\n\n  // calculate everyone dom inview\n  calculate(nodes) {\n    let container = this.container;\n    let elements = nodes || this.getElements();\n    let containerOffset = getOffset(window, {\n      x: this.options.x,\n      y: this.options.y\n    });\n    let isOnce = this.options.once;\n    let ev = arguments[0] || {};\n\n    if (!container) {\n      return;\n    }\n\n    if (elements && elements.length > 0) {\n      [].forEach.call(elements, (ele, i) => {\n        if (ele) {\n          if (ele.isOnce && ele._hasAppear) {\n            _appearDoms.splice(i, 1);\n            elements.splice(i, 1);\n            return;\n          }\n          this.checkEveryDom(ele, containerOffset, isOnce, appearEvt, disappearEvt, 'normal', i);\n        }\n      });\n    }\n  }\n\n  checkEveryDom(ele, containerOffset, isOnce, cacheAppearEvt, cacheDisappearEvt, type, pos) {\n    let eleOffset = getOffset(ele);\n    let direction = this.getDirection(ele._eleOffset, eleOffset);\n    let isInView = this.inViewport(ele, containerOffset, type);\n    let appear = ele._appear;\n    let _hasAppear = ele._hasAppear;\n    let _hasDisAppear = ele._hasDisAppear;\n    ele._eleOffset = eleOffset;\n\n    cacheAppearEvt.direction = direction;\n    cacheDisappearEvt.direction = direction;\n    if (isInView && !appear) {\n      if (isOnce && !_hasAppear || !isOnce) {\n        ele.dispatchEvent(cacheAppearEvt);\n        ele._hasAppear = true;\n        ele._appear = true;\n      }\n    } else if (!isInView && appear) {\n      if (isOnce && !_hasDisAppear || !isOnce) {\n        ele.dispatchEvent(cacheDisappearEvt);\n        ele._hasDisAppear = true;\n        ele._appear = false;\n      }\n    }\n  }\n\n  // reset\n  reset(opts) {\n    this.initConfig(opts);\n    this.appearWatchElements.forEach((ele) => {\n      delete ele._hasAppear;\n      delete ele._hasDisAppear;\n      delete ele._appear;\n    });\n    return this;\n  }\n  bindEvent() {\n    let handle = throttle(() => {\n      this.check();\n    }, this.options.wait);\n    if (this.__handle) {\n      this.container.removeEventListener('scroll', this.__handle, false, true);\n      this.__handle = null;\n    }\n    this.__handle = handle;\n    this.container.addEventListener('scroll', handle, false, true);\n  }\n\n  getDirection(beforeOffset, nowOffset) {\n    var direction = 'none';\n    var horizental = beforeOffset.left - nowOffset.left;\n    var vertical = beforeOffset.top - nowOffset.top;\n    if (vertical == 0) {\n      if (horizental != 0) {\n        direction = horizental > 0 ? 'left' : 'right';\n      } else {\n        direction = 'none';\n      }\n    }\n    if (horizental == 0) {\n      if (vertical != 0) {\n        direction = vertical > 0 ? 'up' : 'down';\n      } else {\n        direction = 'none';\n      }\n    }\n    return direction;\n  }\n}\n\nlet raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || function(c) {\n  setTimeout(c, 1 / 60 * 1e3);\n};\n\nfunction throttle(fn, wait) {\n  let context, args, result;\n  let timeout = null;\n  let previous = 0;\n\n  const later = () => {\n    previous = Date.now();\n    timeout = null;\n    result = fn.apply(context, args);\n  };\n  return function() {\n    const now = Date.now();\n    const remaining = wait - (now - previous);\n    context = this;\n    args = arguments;\n\n    if (remaining <= 0) {\n      clearTimeout(timeout);\n      timeout = null;\n      previous = now;\n      result = fn.apply(context, args);\n    } else if (!timeout) {\n      timeout = setTimeout(later, remaining);\n    }\n    return result;\n  };\n}\n\nexport function config(opts) {\n  if (opts.offsetTop && typeof opts.offsetTop === 'number') {\n    offsetTop = opts.offsetTop;\n  }\n}\n\nexport function getOffset(el, param) {\n  let l, r, b, t;\n  if (!el) {\n    return;\n  }\n  if (!param) {\n    param = {x: 0, y: 0};\n  }\n\n  if (el === window) {\n    l = 0;\n    t = 0;\n    r = l + el.innerWidth;\n    b = t + el.innerHeight;\n  } else if (el.parentNode === null) {\n    l = 0;\n    t = 0;\n    r = 0;\n    b = 0;\n  } else {\n    const { top, right, bottom, left } = el.getBoundingClientRect();\n    l = left;\n    t = top;\n    r = right;\n    b = bottom;\n  }\n\n  return {\n    'left': l,\n    'top': t,\n    'right': r + param.x,\n    'bottom': b + param.y\n  };\n}\n\n// add element\nexport function pushElement(node) {\n  if (_appearDoms.indexOf(node) === -1 && !node.appended) {\n    let isOnce = Boolean(node.getAttribute('isonce')) || Boolean(node.getAttribute('data-once'));\n    node.isOnce = isOnce;\n    node.appended = true;\n    _appearDoms.push(node);\n    node._eleOffset = getOffset(node);\n  }\n}\n\nexport default AppearRegistry;\n","import Registry, { config, getOffset, pushElement } from './appearRegistry';\nimport createIntersectionObserver, { observerElement, isExistIntersection } from './intersectionObserver';\n\nlet instance = null;\nconst existIntersection = isExistIntersection();\n\nconst appear = () => {\n  if (existIntersection) {\n    createIntersectionObserver();\n    injectEventListenerHook();\n  } else {\n    let instances = [];\n\n    Registry.createEvent();\n    injectEventListenerHook(instances);\n\n    instance = new Registry({\n      container: window\n    });\n    instances.push(instance);\n\n    let control = {\n      config,\n    };\n\n    return control;\n  }\n};\n\n\n// hijack addEventListener、removeEventListener\nconst injectEventListenerHook = (instances = []) => {\n  let nativeAddEventListener = Node.prototype.addEventListener;\n  let nativeRemoveEventListener = Node.prototype.removeEventListener;\n\n  Node.prototype.addEventListener = function(eventName, eventHandler, useCapture, isNotWatch) {\n    const lowerCaseEventName = eventName.toLowerCase();\n    const isAppearEvent = lowerCaseEventName === 'appear' || lowerCaseEventName === 'disappear';\n    if (isAppearEvent) {\n      if (existIntersection) {\n        observerElement(this);\n      } else {\n        pushElement(this);\n      }\n    }\n    if (!existIntersection) {\n      if (instance && isAppearEvent) {\n        instance.check([this]);\n      }\n\n      if (lowerCaseEventName === 'scroll' && !isNotWatch) {\n        instance = new Registry({\n          container: this\n        });\n        instances.push(instance);\n      }\n    }\n    nativeAddEventListener.call(this, eventName, eventHandler, useCapture);\n  };\n\n  Node.prototype.removeEventListener = function(eventName, eventHandler, useCapture, isNotWatch) {\n    let lowerCaseEventName = eventName.toLowerCase();\n\n    // destroy scroller\n    if (!existIntersection && lowerCaseEventName === 'scroll' && !isNotWatch) {\n      instances.forEach((instance, index) => {\n        if (instance.__handle && instance.container === this) {\n          this.removeEventListener('scroll', instance.__handle, false, true);\n          instance.__handle = null;\n          instance.appearWatchElements = [];\n          instance.container = null;\n          instances.splice(index, 1);\n        }\n      });\n    }\n    nativeRemoveEventListener.call(this, eventName, eventHandler, useCapture);\n  };\n};\n\nexport default appear();\n","(function(global) {\n  if (global.define) {\n    return;\n  }\n\n  /* eslint strict:0 */\n  var modules = {};\n  var inGuard = false;\n\n  function def(id, deps, factory) {\n    if (deps instanceof Function) {\n      factory = deps;\n      deps = [];\n    }\n\n    modules[id] = {\n      factory: factory,\n      deps: deps,\n      module: {exports: {}},\n      isInitialized: false,\n      hasError: false,\n    };\n  }\n\n  function req(id) {\n    // Weex built-in modules\n    if (id.indexOf('@weex-module') === 0) {\n      return {};\n    }\n\n    var originId = id;\n    var mod = modules[id];\n    // Node like require\n    if (!mod) {\n      id = id + '/index';\n      mod = modules[id];\n    }\n\n    if (mod && mod.isInitialized) {\n      return mod.module.exports;\n    }\n\n    return requireImpl(id, originId);\n  }\n\n  function requireImpl(id, originId) {\n    if (global.ErrorUtils && !inGuard) {\n      inGuard = true;\n      var returnValue;\n      try {\n        returnValue = requireImpl.apply(this, arguments);\n      } catch (e) {\n        global.ErrorUtils.reportFatalError(e);\n      }\n      inGuard = false;\n      return returnValue;\n    }\n\n    var mod = modules[id];\n    if (!mod) {\n      throw new Error(\n        'Requiring unknown module \"' + originId + '\"'\n      );\n    }\n\n    if (mod.hasError) {\n      throw new Error(\n        'Requiring module \"' + originId + '\" which threw an exception'\n      );\n    }\n\n    try {\n      // We must optimistically mark mod as initialized before running the factory to keep any\n      // require cycles inside the factory from causing an infinite require loop.\n      mod.isInitialized = true;\n\n      // keep args in sync with with defineModuleCode in\n      // rax/bundler/src/resolver.js\n      mod.factory(req, mod.module.exports, mod.module);\n    } catch (e) {\n      mod.hasError = true;\n      mod.isInitialized = false;\n      throw e;\n    }\n\n    return mod.module.exports;\n  }\n\n  global.define = def;\n  global.require = req;\n})(this || typeof global === 'object' && global || typeof window === 'object' && window);\n","// Generated by CoffeeScript 1.12.2\n(function() {\n  var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n  if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n    module.exports = function() {\n      return performance.now();\n    };\n  } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n    module.exports = function() {\n      return (getNanoSeconds() - nodeLoadTime) / 1e6;\n    };\n    hrtime = process.hrtime;\n    getNanoSeconds = function() {\n      var hr;\n      hr = hrtime();\n      return hr[0] * 1e9 + hr[1];\n    };\n    moduleLoadTime = getNanoSeconds();\n    upTime = process.uptime() * 1e9;\n    nodeLoadTime = moduleLoadTime - upTime;\n  } else if (Date.now) {\n    module.exports = function() {\n      return Date.now() - loadTime;\n    };\n    loadTime = Date.now();\n  } else {\n    module.exports = function() {\n      return new Date().getTime() - loadTime;\n    };\n    loadTime = new Date().getTime();\n  }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var now = require('performance-now')\n  , root = typeof window === 'undefined' ? global : window\n  , vendors = ['moz', 'webkit']\n  , suffix = 'AnimationFrame'\n  , raf = root['request' + suffix]\n  , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n  raf = root[vendors[i] + 'Request' + suffix]\n  caf = root[vendors[i] + 'Cancel' + suffix]\n      || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n  var last = 0\n    , id = 0\n    , queue = []\n    , frameDuration = 1000 / 60\n\n  raf = function(callback) {\n    if(queue.length === 0) {\n      var _now = now()\n        , next = Math.max(0, frameDuration - (_now - last))\n      last = next + _now\n      setTimeout(function() {\n        var cp = queue.slice(0)\n        // Clear queue here to prevent\n        // callbacks from appending listeners\n        // to the current frame's queue\n        queue.length = 0\n        for(var i = 0; i < cp.length; i++) {\n          if(!cp[i].cancelled) {\n            try{\n              cp[i].callback(last)\n            } catch(e) {\n              setTimeout(function() { throw e }, 0)\n            }\n          }\n        }\n      }, Math.round(next))\n    }\n    queue.push({\n      handle: ++id,\n      callback: callback,\n      cancelled: false\n    })\n    return id\n  }\n\n  caf = function(handle) {\n    for(var i = 0; i < queue.length; i++) {\n      if(queue[i].handle === handle) {\n        queue[i].cancelled = true\n      }\n    }\n  }\n}\n\nmodule.exports = function(fn) {\n  // Wrap in a new function to prevent\n  // `cancel` potentially being assigned\n  // to the native rAF function\n  return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n  caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n  if (!object) {\n    object = root;\n  }\n  object.requestAnimationFrame = raf\n  object.cancelAnimationFrame = caf\n}\n","require('./').polyfill()\n","(function(self) {\n  'use strict';\n\n  if (self.fetch) {\n    return\n  }\n\n  var support = {\n    searchParams: 'URLSearchParams' in self,\n    iterable: 'Symbol' in self && 'iterator' in Symbol,\n    blob: 'FileReader' in self && 'Blob' in self && (function() {\n      try {\n        new Blob()\n        return true\n      } catch(e) {\n        return false\n      }\n    })(),\n    formData: 'FormData' in self,\n    arrayBuffer: 'ArrayBuffer' in self\n  }\n\n  if (support.arrayBuffer) {\n    var viewClasses = [\n      '[object Int8Array]',\n      '[object Uint8Array]',\n      '[object Uint8ClampedArray]',\n      '[object Int16Array]',\n      '[object Uint16Array]',\n      '[object Int32Array]',\n      '[object Uint32Array]',\n      '[object Float32Array]',\n      '[object Float64Array]'\n    ]\n\n    var isDataView = function(obj) {\n      return obj && DataView.prototype.isPrototypeOf(obj)\n    }\n\n    var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n      return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n    }\n  }\n\n  function normalizeName(name) {\n    if (typeof name !== 'string') {\n      name = String(name)\n    }\n    if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n      throw new TypeError('Invalid character in header field name')\n    }\n    return name.toLowerCase()\n  }\n\n  function normalizeValue(value) {\n    if (typeof value !== 'string') {\n      value = String(value)\n    }\n    return value\n  }\n\n  // Build a destructive iterator for the value list\n  function iteratorFor(items) {\n    var iterator = {\n      next: function() {\n        var value = items.shift()\n        return {done: value === undefined, value: value}\n      }\n    }\n\n    if (support.iterable) {\n      iterator[Symbol.iterator] = function() {\n        return iterator\n      }\n    }\n\n    return iterator\n  }\n\n  function Headers(headers) {\n    this.map = {}\n\n    if (headers instanceof Headers) {\n      headers.forEach(function(value, name) {\n        this.append(name, value)\n      }, this)\n    } else if (Array.isArray(headers)) {\n      headers.forEach(function(header) {\n        this.append(header[0], header[1])\n      }, this)\n    } else if (headers) {\n      Object.getOwnPropertyNames(headers).forEach(function(name) {\n        this.append(name, headers[name])\n      }, this)\n    }\n  }\n\n  Headers.prototype.append = function(name, value) {\n    name = normalizeName(name)\n    value = normalizeValue(value)\n    var oldValue = this.map[name]\n    this.map[name] = oldValue ? oldValue+','+value : value\n  }\n\n  Headers.prototype['delete'] = function(name) {\n    delete this.map[normalizeName(name)]\n  }\n\n  Headers.prototype.get = function(name) {\n    name = normalizeName(name)\n    return this.has(name) ? this.map[name] : null\n  }\n\n  Headers.prototype.has = function(name) {\n    return this.map.hasOwnProperty(normalizeName(name))\n  }\n\n  Headers.prototype.set = function(name, value) {\n    this.map[normalizeName(name)] = normalizeValue(value)\n  }\n\n  Headers.prototype.forEach = function(callback, thisArg) {\n    for (var name in this.map) {\n      if (this.map.hasOwnProperty(name)) {\n        callback.call(thisArg, this.map[name], name, this)\n      }\n    }\n  }\n\n  Headers.prototype.keys = function() {\n    var items = []\n    this.forEach(function(value, name) { items.push(name) })\n    return iteratorFor(items)\n  }\n\n  Headers.prototype.values = function() {\n    var items = []\n    this.forEach(function(value) { items.push(value) })\n    return iteratorFor(items)\n  }\n\n  Headers.prototype.entries = function() {\n    var items = []\n    this.forEach(function(value, name) { items.push([name, value]) })\n    return iteratorFor(items)\n  }\n\n  if (support.iterable) {\n    Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n  }\n\n  function consumed(body) {\n    if (body.bodyUsed) {\n      return Promise.reject(new TypeError('Already read'))\n    }\n    body.bodyUsed = true\n  }\n\n  function fileReaderReady(reader) {\n    return new Promise(function(resolve, reject) {\n      reader.onload = function() {\n        resolve(reader.result)\n      }\n      reader.onerror = function() {\n        reject(reader.error)\n      }\n    })\n  }\n\n  function readBlobAsArrayBuffer(blob) {\n    var reader = new FileReader()\n    var promise = fileReaderReady(reader)\n    reader.readAsArrayBuffer(blob)\n    return promise\n  }\n\n  function readBlobAsText(blob) {\n    var reader = new FileReader()\n    var promise = fileReaderReady(reader)\n    reader.readAsText(blob)\n    return promise\n  }\n\n  function readArrayBufferAsText(buf) {\n    var view = new Uint8Array(buf)\n    var chars = new Array(view.length)\n\n    for (var i = 0; i < view.length; i++) {\n      chars[i] = String.fromCharCode(view[i])\n    }\n    return chars.join('')\n  }\n\n  function bufferClone(buf) {\n    if (buf.slice) {\n      return buf.slice(0)\n    } else {\n      var view = new Uint8Array(buf.byteLength)\n      view.set(new Uint8Array(buf))\n      return view.buffer\n    }\n  }\n\n  function Body() {\n    this.bodyUsed = false\n\n    this._initBody = function(body) {\n      this._bodyInit = body\n      if (!body) {\n        this._bodyText = ''\n      } else if (typeof body === 'string') {\n        this._bodyText = body\n      } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n        this._bodyBlob = body\n      } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n        this._bodyFormData = body\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this._bodyText = body.toString()\n      } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n        this._bodyArrayBuffer = bufferClone(body.buffer)\n        // IE 10-11 can't handle a DataView body.\n        this._bodyInit = new Blob([this._bodyArrayBuffer])\n      } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n        this._bodyArrayBuffer = bufferClone(body)\n      } else {\n        throw new Error('unsupported BodyInit type')\n      }\n\n      if (!this.headers.get('content-type')) {\n        if (typeof body === 'string') {\n          this.headers.set('content-type', 'text/plain;charset=UTF-8')\n        } else if (this._bodyBlob && this._bodyBlob.type) {\n          this.headers.set('content-type', this._bodyBlob.type)\n        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n          this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n        }\n      }\n    }\n\n    if (support.blob) {\n      this.blob = function() {\n        var rejected = consumed(this)\n        if (rejected) {\n          return rejected\n        }\n\n        if (this._bodyBlob) {\n          return Promise.resolve(this._bodyBlob)\n        } else if (this._bodyArrayBuffer) {\n          return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n        } else if (this._bodyFormData) {\n          throw new Error('could not read FormData body as blob')\n        } else {\n          return Promise.resolve(new Blob([this._bodyText]))\n        }\n      }\n\n      this.arrayBuffer = function() {\n        if (this._bodyArrayBuffer) {\n          return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n        } else {\n          return this.blob().then(readBlobAsArrayBuffer)\n        }\n      }\n    }\n\n    this.text = function() {\n      var rejected = consumed(this)\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return readBlobAsText(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as text')\n      } else {\n        return Promise.resolve(this._bodyText)\n      }\n    }\n\n    if (support.formData) {\n      this.formData = function() {\n        return this.text().then(decode)\n      }\n    }\n\n    this.json = function() {\n      return this.text().then(JSON.parse)\n    }\n\n    return this\n  }\n\n  // HTTP methods whose capitalization should be normalized\n  var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n  function normalizeMethod(method) {\n    var upcased = method.toUpperCase()\n    return (methods.indexOf(upcased) > -1) ? upcased : method\n  }\n\n  function Request(input, options) {\n    options = options || {}\n    var body = options.body\n\n    if (input instanceof Request) {\n      if (input.bodyUsed) {\n        throw new TypeError('Already read')\n      }\n      this.url = input.url\n      this.credentials = input.credentials\n      if (!options.headers) {\n        this.headers = new Headers(input.headers)\n      }\n      this.method = input.method\n      this.mode = input.mode\n      if (!body && input._bodyInit != null) {\n        body = input._bodyInit\n        input.bodyUsed = true\n      }\n    } else {\n      this.url = String(input)\n    }\n\n    this.credentials = options.credentials || this.credentials || 'omit'\n    if (options.headers || !this.headers) {\n      this.headers = new Headers(options.headers)\n    }\n    this.method = normalizeMethod(options.method || this.method || 'GET')\n    this.mode = options.mode || this.mode || null\n    this.referrer = null\n\n    if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n      throw new TypeError('Body not allowed for GET or HEAD requests')\n    }\n    this._initBody(body)\n  }\n\n  Request.prototype.clone = function() {\n    return new Request(this, { body: this._bodyInit })\n  }\n\n  function decode(body) {\n    var form = new FormData()\n    body.trim().split('&').forEach(function(bytes) {\n      if (bytes) {\n        var split = bytes.split('=')\n        var name = split.shift().replace(/\\+/g, ' ')\n        var value = split.join('=').replace(/\\+/g, ' ')\n        form.append(decodeURIComponent(name), decodeURIComponent(value))\n      }\n    })\n    return form\n  }\n\n  function parseHeaders(rawHeaders) {\n    var headers = new Headers()\n    // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n    // https://tools.ietf.org/html/rfc7230#section-3.2\n    var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n    preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n      var parts = line.split(':')\n      var key = parts.shift().trim()\n      if (key) {\n        var value = parts.join(':').trim()\n        headers.append(key, value)\n      }\n    })\n    return headers\n  }\n\n  Body.call(Request.prototype)\n\n  function Response(bodyInit, options) {\n    if (!options) {\n      options = {}\n    }\n\n    this.type = 'default'\n    this.status = options.status === undefined ? 200 : options.status\n    this.ok = this.status >= 200 && this.status < 300\n    this.statusText = 'statusText' in options ? options.statusText : 'OK'\n    this.headers = new Headers(options.headers)\n    this.url = options.url || ''\n    this._initBody(bodyInit)\n  }\n\n  Body.call(Response.prototype)\n\n  Response.prototype.clone = function() {\n    return new Response(this._bodyInit, {\n      status: this.status,\n      statusText: this.statusText,\n      headers: new Headers(this.headers),\n      url: this.url\n    })\n  }\n\n  Response.error = function() {\n    var response = new Response(null, {status: 0, statusText: ''})\n    response.type = 'error'\n    return response\n  }\n\n  var redirectStatuses = [301, 302, 303, 307, 308]\n\n  Response.redirect = function(url, status) {\n    if (redirectStatuses.indexOf(status) === -1) {\n      throw new RangeError('Invalid status code')\n    }\n\n    return new Response(null, {status: status, headers: {location: url}})\n  }\n\n  self.Headers = Headers\n  self.Request = Request\n  self.Response = Response\n\n  self.fetch = function(input, init) {\n    return new Promise(function(resolve, reject) {\n      var request = new Request(input, init)\n      var xhr = new XMLHttpRequest()\n\n      xhr.onload = function() {\n        var options = {\n          status: xhr.status,\n          statusText: xhr.statusText,\n          headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n        }\n        options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n        var body = 'response' in xhr ? xhr.response : xhr.responseText\n        resolve(new Response(body, options))\n      }\n\n      xhr.onerror = function() {\n        reject(new TypeError('Network request failed'))\n      }\n\n      xhr.ontimeout = function() {\n        reject(new TypeError('Network request failed'))\n      }\n\n      xhr.open(request.method, request.url, true)\n\n      if (request.credentials === 'include') {\n        xhr.withCredentials = true\n      } else if (request.credentials === 'omit') {\n        xhr.withCredentials = false\n      }\n\n      if ('responseType' in xhr && support.blob) {\n        xhr.responseType = 'blob'\n      }\n\n      request.headers.forEach(function(value, name) {\n        xhr.setRequestHeader(name, value)\n      })\n\n      xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n    })\n  }\n  self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n","// Production steps of ECMA-262, Edition 6, 22.1.2.1\n// Reference: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from\nif (!Array.from) {\n  Array.from = (function() {\n    var toStr = Object.prototype.toString;\n    var isCallable = function(fn) {\n      return typeof fn === 'function' || toStr.call(fn) === '[object Function]';\n    };\n    var toInteger = function(value) {\n      var number = Number(value);\n      if (isNaN(number)) {\n        return 0;\n      }\n      if (number === 0 || !isFinite(number)) {\n        return number;\n      }\n      return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));\n    };\n    var maxSafeInteger = Math.pow(2, 53) - 1;\n    var toLength = function(value) {\n      var len = toInteger(value);\n      return Math.min(Math.max(len, 0), maxSafeInteger);\n    };\n\n    // The length property of the from method is 1.\n    return function from(arrayLike/* , mapFn, thisArg */) {\n      // 1. Let C be the this value.\n      var C = this;\n\n      // 2. Let items be ToObject(arrayLike).\n      var items = Object(arrayLike);\n\n      // 3. ReturnIfAbrupt(items).\n      if (arrayLike == null) {\n        throw new TypeError('Array.from requires an array-like object - not null or undefined');\n      }\n\n      // 4. If mapfn is undefined, then let mapping be false.\n      var mapFn = arguments.length > 1 ? arguments[1] : void undefined;\n      var T;\n      if (typeof mapFn !== 'undefined') {\n        // 5. else\n        // 5. a If IsCallable(mapfn) is false, throw a TypeError exception.\n        if (!isCallable(mapFn)) {\n          throw new TypeError('Array.from: when provided, the second argument must be a function');\n        }\n\n        // 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.\n        if (arguments.length > 2) {\n          T = arguments[2];\n        }\n      }\n\n      // 10. Let lenValue be Get(items, \"length\").\n      // 11. Let len be ToLength(lenValue).\n      var len = toLength(items.length);\n\n      // 13. If IsConstructor(C) is true, then\n      // 13. a. Let A be the result of calling the [[Construct]] internal method of C with an argument list containing the single item len.\n      // 14. a. Else, Let A be ArrayCreate(len).\n      var A = isCallable(C) ? Object(new C(len)) : new Array(len);\n\n      // 16. Let k be 0.\n      var k = 0;\n      // 17. Repeat, while k < len… (also steps a - h)\n      var kValue;\n      while (k < len) {\n        kValue = items[k];\n        if (mapFn) {\n          A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);\n        } else {\n          A[k] = kValue;\n        }\n        k += 1;\n      }\n      // 18. Let putStatus be Put(A, \"length\", len, true).\n      A.length = len;\n      // 20. Return A.\n      return A;\n    };\n  }());\n}\n","// WARNING: This is an optimized version that fails on hasOwnProperty checks\n// and non objects. It's not spec-compliant. It's a perf optimization.\n/* eslint strict:0 */\nif (!Object.assign) {\n  Object.assign = function(target, sources) {\n    for (let nextIndex = 1; nextIndex < arguments.length; nextIndex++) {\n      let nextSource = arguments[nextIndex];\n      if (nextSource == null) {\n        continue;\n      }\n\n      // We don't currently support accessors nor proxies. Therefore this\n      // copy cannot throw. If we ever supported this then we must handle\n      // exceptions and side-effects.\n      for (let key in nextSource) {\n        target[key] = nextSource[key];\n      }\n    }\n\n    return target;\n  };\n}\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * Returns an array of the given object's own enumerable entries.\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries\n *\n */\nif (!Object.entries) {\n  Object.entries = function(object) {\n    // `null` and `undefined` values are not allowed.\n    if (object == null) {\n      throw new TypeError('Object.entries called on non-object');\n    }\n\n    let entries = [];\n    for (let key in object) {\n      if (hasOwnProperty.call(object, key)) {\n        entries.push([key, object[key]]);\n      }\n    }\n    return entries;\n  };\n}\n\n\n/**\n * Returns an array of the given object's own enumerable entries.\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values\n *\n */\nif (!Object.values) {\n  Object.values = function(object) {\n    // `null` and `undefined` values are not allowed.\n    if (object == null) {\n      throw new TypeError('Object.values called on non-object');\n    }\n\n    let values = [];\n    for (let key in object) {\n      if (hasOwnProperty.call(object, key)) {\n        values.push(object[key]);\n      }\n    }\n    return values;\n  };\n}\n\nif (!Object.defineProperties) {\n  Object.defineProperties = function(object, descriptors) {\n    for (var property in descriptors) {\n      Object.defineProperty(object, property, descriptors[property]);\n    }\n    return object;\n  };\n}\n\n// https://gist.github.com/WebReflection/5593554\nif (!Object.setPrototypeOf) {\n  Object.setPrototypeOf = (function(Object, magic) {\n    var set;\n    function setPrototypeOf(O, proto) {\n      set.call(O, proto);\n      return O;\n    }\n    try {\n      // this works already in Firefox and Safari\n      set = Object.getOwnPropertyDescriptor(Object.prototype, magic).set;\n      set.call({}, null);\n    } catch (e) {\n      if (\n        // IE < 11 cannot be shimmed\n        Object.prototype !== {}[magic] ||\n        // neither can any browser that actually\n        // implemented __proto__ correctly\n        // (all but old V8 will return here)\n        {__proto__: null}.__proto__ === void 0\n        // this case means null objects cannot be passed\n        // through setPrototypeOf in a reliable way\n        // which means here a **Sham** is needed instead\n      ) {\n        return;\n      }\n      // nodejs 0.8 and 0.10 are (buggy and..) fine here\n      // probably Chrome or some old Mobile stock browser\n      set = function(proto) {\n        this[magic] = proto;\n      };\n      // please note that this will **not** work\n      // in those browsers that do not inherit\n      // __proto__ by mistake from Object.prototype\n      // in these cases we should probably throw an error\n      // or at least be informed about the issue\n      setPrototypeOf.polyfill = setPrototypeOf(\n        setPrototypeOf({}, null),\n        Object.prototype\n      ) instanceof Object;\n      // setPrototypeOf.polyfill === true means it works as meant\n      // setPrototypeOf.polyfill === false means it's not 100% reliable\n      // setPrototypeOf.polyfill === undefined\n      // or\n      // setPrototypeOf.polyfill ==  null means it's not a polyfill\n      // which means it works as expected\n      // we can even delete Object.prototype.__proto__;\n    }\n    return setPrototypeOf;\n  }(Object, '__proto__'));\n}\n\nif (!Object.is) {\n  Object.is = function(x, y) {\n    if (x === y) {\n      // 0 === -0, but they are not identical\n      return x !== 0 || 1 / x === 1 / y;\n    }\n\n    // NaN !== NaN, but they are identical.\n    // NaNs are the only non-reflexive value, i.e., if x !== x,\n    // then x is a NaN.\n    // isNaN is broken: it converts its argument to number, so\n    // isNaN(\"foo\") => true\n    return x !== x && y !== y;\n  };\n}\n","if (!Number.isNaN) {\n  // http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan\n  Number.isNaN = function isNaN(value) {\n    return value !== value;\n  };\n}\n","'use strict';\n\n// https://github.com/ericf/css-mediaquery\n\nvar RE_MEDIA_QUERY = /^(?:(only|not)?\\s*([_a-z][_a-z0-9-]*)|(\\([^\\)]+\\)))(?:\\s*and\\s*(.*))?$/i,\n    RE_MQ_EXPRESSION = /^\\(\\s*([_a-z-][_a-z0-9-]*)\\s*(?:\\:\\s*([^\\)]+))?\\s*\\)$/,\n    RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/;\n\nfunction _matches(media, values) {\n  return _parseQuery(media).some(function (query) {\n    var inverse = query.inverse;\n\n    var typeMatch = query.type === 'all' || values.type === query.type;\n\n    if (typeMatch && inverse || !(typeMatch || inverse)) {\n      return false;\n    }\n\n    var expressionsMatch = query.expressions.every(function (expression) {\n      var feature = expression.feature,\n          modifier = expression.modifier,\n          expValue = expression.value,\n          value = values[feature];\n\n      if (!value) {\n        return false;\n      }\n\n      switch (feature) {\n        case 'width':\n        case 'height':\n          expValue = parseFloat(expValue);\n          value = parseFloat(value);\n          break;\n      }\n\n      switch (modifier) {\n        case 'min':\n          return value >= expValue;\n        case 'max':\n          return value <= expValue;\n        default:\n          return value === expValue;\n      }\n    });\n\n    return expressionsMatch && !inverse || !expressionsMatch && inverse;\n  });\n};\n\nfunction _parseQuery(media) {\n  return media.split(',').map(function (query) {\n    query = query.trim();\n\n    var captures = query.match(RE_MEDIA_QUERY);\n\n    if (!captures) {\n      throw new SyntaxError('Invalid CSS media query: \"' + query + '\"');\n    }\n\n    var modifier = captures[1],\n        type = captures[2],\n        expressions = ((captures[3] || '') + (captures[4] || '')).trim(),\n        parsed = {};\n\n    parsed.inverse = !!modifier && modifier.toLowerCase() === 'not';\n    parsed.type = type ? type.toLowerCase() : 'all';\n\n    if (!expressions) {\n      parsed.expressions = [];\n      return parsed;\n    }\n\n    expressions = expressions.match(/\\([^\\)]+\\)/g);\n\n    if (!expressions) {\n      throw new SyntaxError('Invalid CSS media query: \"' + query + '\"');\n    }\n\n    parsed.expressions = expressions.map(function (expression) {\n      var captures = expression.match(RE_MQ_EXPRESSION);\n\n      if (!captures) {\n        throw new SyntaxError('Invalid CSS media query: \"' + query + '\"');\n      }\n\n      var feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n\n      return {\n        modifier: feature[1],\n        feature: feature[2],\n        value: captures[2]\n      };\n    });\n\n    return parsed;\n  });\n};\n\nfunction matchMedia(media) {\n  var mql = {\n    matches: false,\n    media: media\n  };\n\n  if (media === '') {\n    mql.matches = true;\n    return mql;\n  }\n\n  mql.matches = _matches(media, {\n    type: 'screen',\n    width: window.screen.width,\n    height: window.screen.height\n  });\n\n  return mql;\n}\n\nmodule.exports = matchMedia;","'use strict';\n\n// https://github.com/Polymer/URL\n\nvar URLSearchParams = require('./url-search-params');\n\nvar relative = Object.create(null);\nrelative.ftp = 21;\nrelative.file = 0;\nrelative.gopher = 70;\nrelative.http = 80;\nrelative.https = 443;\nrelative.ws = 80;\nrelative.wss = 443;\n\nvar relativePathDotMapping = Object.create(null);\nrelativePathDotMapping['%2e'] = '.';\nrelativePathDotMapping['.%2e'] = '..';\nrelativePathDotMapping['%2e.'] = '..';\nrelativePathDotMapping['%2e%2e'] = '..';\n\nfunction isRelativeScheme(scheme) {\n  return relative[scheme] !== undefined;\n}\n\nfunction invalid() {\n  clear.call(this);\n  this._isInvalid = true;\n}\n\nfunction IDNAToASCII(h) {\n  if ('' == h) {\n    invalid.call(this);\n  }\n  // XXX\n  return h.toLowerCase();\n}\n\nfunction percentEscape(c) {\n  var unicode = c.charCodeAt(0);\n  if (unicode > 0x20 && unicode < 0x7F &&\n  // \" # < > ? `\n  [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) == -1) {\n    return c;\n  }\n  return encodeURIComponent(c);\n}\n\nfunction percentEscapeQuery(c) {\n  // XXX This actually needs to encode c using encoding and then\n  // convert the bytes one-by-one.\n\n  var unicode = c.charCodeAt(0);\n  if (unicode > 0x20 && unicode < 0x7F &&\n  // \" # < > ` (do not escape '?')\n  [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) == -1) {\n    return c;\n  }\n  return encodeURIComponent(c);\n}\n\nvar EOF = undefined,\n    ALPHA = /[a-zA-Z]/,\n    ALPHANUMERIC = /[a-zA-Z0-9\\+\\-\\.]/;\n\nfunction parse(input, stateOverride, base) {\n  function err(message) {\n    errors.push(message);\n  }\n\n  var state = stateOverride || 'scheme start',\n      cursor = 0,\n      buffer = '',\n      seenAt = false,\n      seenBracket = false,\n      errors = [];\n\n  loop: while ((input[cursor - 1] != EOF || cursor == 0) && !this._isInvalid) {\n    var c = input[cursor];\n    switch (state) {\n      case 'scheme start':\n        if (c && ALPHA.test(c)) {\n          buffer += c.toLowerCase(); // ASCII-safe\n          state = 'scheme';\n        } else if (!stateOverride) {\n          buffer = '';\n          state = 'no scheme';\n          continue;\n        } else {\n          err('Invalid scheme.');\n          break loop;\n        }\n        break;\n\n      case 'scheme':\n        if (c && ALPHANUMERIC.test(c)) {\n          buffer += c.toLowerCase(); // ASCII-safe\n        } else if (':' == c) {\n          this._scheme = buffer;\n          buffer = '';\n          if (stateOverride) {\n            break loop;\n          }\n          if (isRelativeScheme(this._scheme)) {\n            this._isRelative = true;\n          }\n          if ('file' == this._scheme) {\n            state = 'relative';\n          } else if (this._isRelative && base && base._scheme == this._scheme) {\n            state = 'relative or authority';\n          } else if (this._isRelative) {\n            state = 'authority first slash';\n          } else {\n            state = 'scheme data';\n          }\n        } else if (!stateOverride) {\n          buffer = '';\n          cursor = 0;\n          state = 'no scheme';\n          continue;\n        } else if (EOF == c) {\n          break loop;\n        } else {\n          err('Code point not allowed in scheme: ' + c);\n          break loop;\n        }\n        break;\n\n      case 'scheme data':\n        if ('?' == c) {\n          state = 'query';\n        } else if ('#' == c) {\n          this._fragment = '#';\n          state = 'fragment';\n        } else {\n          // XXX error handling\n          if (EOF != c && '\\t' != c && '\\n' != c && '\\r' != c) {\n            this._schemeData += percentEscape(c);\n          }\n        }\n        break;\n\n      case 'no scheme':\n        if (!base || !isRelativeScheme(base._scheme)) {\n          err('Missing scheme.');\n          invalid.call(this);\n        } else {\n          state = 'relative';\n          continue;\n        }\n        break;\n\n      case 'relative or authority':\n        if ('/' == c && '/' == input[cursor + 1]) {\n          state = 'authority ignore slashes';\n        } else {\n          err('Expected /, got: ' + c);\n          state = 'relative';\n          continue;\n        }\n        break;\n\n      case 'relative':\n        this._isRelative = true;\n        if ('file' != this._scheme) this._scheme = base._scheme;\n        if (EOF == c) {\n          this._host = base._host;\n          this._port = base._port;\n          this._path = base._path.slice();\n          this._query = base._query;\n          this._username = base._username;\n          this._password = base._password;\n          break loop;\n        } else if ('/' == c || '\\\\' == c) {\n          if ('\\\\' == c) err('\\\\ is an invalid code point.');\n          state = 'relative slash';\n        } else if ('?' == c) {\n          this._host = base._host;\n          this._port = base._port;\n          this._path = base._path.slice();\n          this._query = '?';\n          this._username = base._username;\n          this._password = base._password;\n          state = 'query';\n        } else if ('#' == c) {\n          this._host = base._host;\n          this._port = base._port;\n          this._path = base._path.slice();\n          this._query = base._query;\n          this._fragment = '#';\n          this._username = base._username;\n          this._password = base._password;\n          state = 'fragment';\n        } else {\n          var nextC = input[cursor + 1];\n          var nextNextC = input[cursor + 2];\n          if ('file' != this._scheme || !ALPHA.test(c) || nextC != ':' && nextC != '|' || EOF != nextNextC && '/' != nextNextC && '\\\\' != nextNextC && '?' != nextNextC && '#' != nextNextC) {\n            this._host = base._host;\n            this._port = base._port;\n            this._username = base._username;\n            this._password = base._password;\n            this._path = base._path.slice();\n            this._path.pop();\n          }\n          state = 'relative path';\n          continue;\n        }\n        break;\n\n      case 'relative slash':\n        if ('/' == c || '\\\\' == c) {\n          if ('\\\\' == c) {\n            err('\\\\ is an invalid code point.');\n          }\n          if ('file' == this._scheme) {\n            state = 'file host';\n          } else {\n            state = 'authority ignore slashes';\n          }\n        } else {\n          if ('file' != this._scheme) {\n            this._host = base._host;\n            this._port = base._port;\n            this._username = base._username;\n            this._password = base._password;\n          }\n          state = 'relative path';\n          continue;\n        }\n        break;\n\n      case 'authority first slash':\n        if ('/' == c) {\n          state = 'authority second slash';\n        } else {\n          err(\"Expected '/', got: \" + c);\n          state = 'authority ignore slashes';\n          continue;\n        }\n        break;\n\n      case 'authority second slash':\n        state = 'authority ignore slashes';\n        if ('/' != c) {\n          err(\"Expected '/', got: \" + c);\n          continue;\n        }\n        break;\n\n      case 'authority ignore slashes':\n        if ('/' != c && '\\\\' != c) {\n          state = 'authority';\n          continue;\n        } else {\n          err('Expected authority, got: ' + c);\n        }\n        break;\n\n      case 'authority':\n        if ('@' == c) {\n          if (seenAt) {\n            err('@ already seen.');\n            buffer += '%40';\n          }\n          seenAt = true;\n          for (var i = 0; i < buffer.length; i++) {\n            var cp = buffer[i];\n            if ('\\t' == cp || '\\n' == cp || '\\r' == cp) {\n              err('Invalid whitespace in authority.');\n              continue;\n            }\n            // XXX check URL code points\n            if (':' == cp && null === this._password) {\n              this._password = '';\n              continue;\n            }\n            var tempC = percentEscape(cp);\n            null !== this._password ? this._password += tempC : this._username += tempC;\n          }\n          buffer = '';\n        } else if (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' == c) {\n          cursor -= buffer.length;\n          buffer = '';\n          state = 'host';\n          continue;\n        } else {\n          buffer += c;\n        }\n        break;\n\n      case 'file host':\n        if (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' == c) {\n          if (buffer.length == 2 && ALPHA.test(buffer[0]) && (buffer[1] == ':' || buffer[1] == '|')) {\n            state = 'relative path';\n          } else if (buffer.length == 0) {\n            state = 'relative path start';\n          } else {\n            this._host = IDNAToASCII.call(this, buffer);\n            buffer = '';\n            state = 'relative path start';\n          }\n          continue;\n        } else if ('\\t' == c || '\\n' == c || '\\r' == c) {\n          err('Invalid whitespace in file host.');\n        } else {\n          buffer += c;\n        }\n        break;\n\n      case 'host':\n      case 'hostname':\n        if (':' == c && !seenBracket) {\n          // XXX host parsing\n          this._host = IDNAToASCII.call(this, buffer);\n          buffer = '';\n          state = 'port';\n          if ('hostname' == stateOverride) {\n            break loop;\n          }\n        } else if (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' == c) {\n          this._host = IDNAToASCII.call(this, buffer);\n          buffer = '';\n          state = 'relative path start';\n          if (stateOverride) {\n            break loop;\n          }\n          continue;\n        } else if ('\\t' != c && '\\n' != c && '\\r' != c) {\n          if ('[' == c) {\n            seenBracket = true;\n          } else if (']' == c) {\n            seenBracket = false;\n          }\n          buffer += c;\n        } else {\n          err('Invalid code point in host/hostname: ' + c);\n        }\n        break;\n\n      case 'port':\n        if (/[0-9]/.test(c)) {\n          buffer += c;\n        } else if (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' == c || stateOverride) {\n          if ('' != buffer) {\n            var temp = parseInt(buffer, 10);\n            if (temp != relative[this._scheme]) {\n              this._port = temp + '';\n            }\n            buffer = '';\n          }\n          if (stateOverride) {\n            break loop;\n          }\n          state = 'relative path start';\n          continue;\n        } else if ('\\t' == c || '\\n' == c || '\\r' == c) {\n          err('Invalid code point in port: ' + c);\n        } else {\n          invalid.call(this);\n        }\n        break;\n\n      case 'relative path start':\n        if ('\\\\' == c) err(\"'\\\\' not allowed in path.\");\n        state = 'relative path';\n        if ('/' != c && '\\\\' != c) {\n          continue;\n        }\n        break;\n\n      case 'relative path':\n        if (EOF == c || '/' == c || '\\\\' == c || !stateOverride && ('?' == c || '#' == c)) {\n          if ('\\\\' == c) {\n            err('\\\\ not allowed in relative path.');\n          }\n          var tmp;\n          if (tmp = relativePathDotMapping[buffer.toLowerCase()]) {\n            buffer = tmp;\n          }\n          if ('..' == buffer) {\n            this._path.pop();\n            if ('/' != c && '\\\\' != c) {\n              this._path.push('');\n            }\n          } else if ('.' == buffer && '/' != c && '\\\\' != c) {\n            this._path.push('');\n          } else if ('.' != buffer) {\n            if ('file' == this._scheme && this._path.length == 0 && buffer.length == 2 && ALPHA.test(buffer[0]) && buffer[1] == '|') {\n              buffer = buffer[0] + ':';\n            }\n            this._path.push(buffer);\n          }\n          buffer = '';\n          if ('?' == c) {\n            this._query = '?';\n            state = 'query';\n          } else if ('#' == c) {\n            this._fragment = '#';\n            state = 'fragment';\n          }\n        } else if ('\\t' != c && '\\n' != c && '\\r' != c) {\n          buffer += percentEscape(c);\n        }\n        break;\n\n      case 'query':\n        if (!stateOverride && '#' == c) {\n          this._fragment = '#';\n          state = 'fragment';\n        } else if (EOF != c && '\\t' != c && '\\n' != c && '\\r' != c) {\n          this._query += percentEscapeQuery(c);\n        }\n        break;\n\n      case 'fragment':\n        if (EOF != c && '\\t' != c && '\\n' != c && '\\r' != c) {\n          this._fragment += c;\n        }\n        break;\n    }\n\n    cursor++;\n  }\n}\n\nfunction clear() {\n  this._scheme = '';\n  this._schemeData = '';\n  this._username = '';\n  this._password = null;\n  this._host = '';\n  this._port = '';\n  this._path = [];\n  this._query = '';\n  this._fragment = '';\n  this._isInvalid = false;\n  this._isRelative = false;\n}\n\n// Does not process domain names or IP addresses.\n// Does not handle encoding for the query parameter.\nfunction URL(url, base /* , encoding */) {\n  if (base !== undefined && !(base instanceof URL)) base = new URL(String(base));\n\n  this._url = url;\n  clear.call(this);\n\n  var input = url.replace(/^[ \\t\\r\\n\\f]+|[ \\t\\r\\n\\f]+$/g, '');\n  // encoding = encoding || 'utf-8'\n\n  parse.call(this, input, null, base);\n}\n\nURL.prototype = {\n  toString: function toString() {\n    return this.href;\n  },\n  get href() {\n    if (this._isInvalid) return this._url;\n\n    var authority = '';\n    if ('' != this._username || null != this._password) {\n      authority = this._username + (null != this._password ? ':' + this._password : '') + '@';\n    }\n\n    return this.protocol + (this._isRelative ? '//' + authority + this.host : '') + this.pathname + this._query + this._fragment;\n  },\n  set href(href) {\n    clear.call(this);\n    parse.call(this, href);\n  },\n\n  get protocol() {\n    return this._scheme + ':';\n  },\n  set protocol(protocol) {\n    if (this._isInvalid) return;\n    parse.call(this, protocol + ':', 'scheme start');\n  },\n\n  get host() {\n    return this._isInvalid ? '' : this._port ? this._host + ':' + this._port : this._host;\n  },\n  set host(host) {\n    if (this._isInvalid || !this._isRelative) return;\n    parse.call(this, host, 'host');\n  },\n\n  get hostname() {\n    return this._host;\n  },\n  set hostname(hostname) {\n    if (this._isInvalid || !this._isRelative) return;\n    parse.call(this, hostname, 'hostname');\n  },\n\n  get port() {\n    return this._port;\n  },\n  set port(port) {\n    if (this._isInvalid || !this._isRelative) return;\n    parse.call(this, port, 'port');\n  },\n\n  get pathname() {\n    return this._isInvalid ? '' : this._isRelative ? '/' + this._path.join('/') : this._schemeData;\n  },\n  set pathname(pathname) {\n    if (this._isInvalid || !this._isRelative) return;\n    this._path = [];\n    parse.call(this, pathname, 'relative path start');\n  },\n\n  get search() {\n    return this._isInvalid || !this._query || '?' == this._query ? '' : this._query;\n  },\n  set search(search) {\n    if (this._isInvalid || !this._isRelative) return;\n    this._query = '?';\n    if ('?' == search[0]) search = search.slice(1);\n    parse.call(this, search, 'query');\n  },\n\n  get searchParams() {\n    return new URLSearchParams(this.search);\n  },\n\n  get hash() {\n    return this._isInvalid || !this._fragment || '#' == this._fragment ? '' : this._fragment;\n  },\n  set hash(hash) {\n    if (this._isInvalid) return;\n    this._fragment = '#';\n    if ('#' == hash[0]) hash = hash.slice(1);\n    parse.call(this, hash, 'fragment');\n  },\n\n  get origin() {\n    var host;\n    if (this._isInvalid || !this._scheme) {\n      return '';\n    }\n    // javascript: Gecko returns String(\"\"), WebKit/Blink String(\"null\")\n    // Gecko throws error for \"data://\"\n    // data: Gecko returns \"\", Blink returns \"data://\", WebKit returns \"null\"\n    // Gecko returns String(\"\") for file: mailto:\n    // WebKit/Blink returns String(\"SCHEME://\") for file: mailto:\n    switch (this._scheme) {\n      case 'data':\n      case 'file':\n      case 'javascript':\n      case 'mailto':\n        return 'null';\n    }\n    host = this.host;\n    if (!host) {\n      return '';\n    }\n    return this._scheme + '://' + host;\n  }\n};\n\nmodule.exports = URL;","\"use strict\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar FontFace = function FontFace(family, source) {\n  _classCallCheck(this, FontFace);\n\n  this.family = family;\n  this.source = source;\n};\n\nmodule.exports = FontFace;","'use strict';\n\n/* eslint no-extend-native: \"off\" */\n\nvar counter = Date.now() % 1e9;\n\nvar WeakSet = function WeakSet(data) {\n  this.name = '__st' + (Math.random() * 1e9 >>> 0) + (counter++ + '__');\n  data && data.forEach && data.forEach(this.add, this);\n};\n\nWeakSet.prototype.add = function (obj) {\n  var name = this.name;\n  if (!obj[name]) Object.defineProperty(obj, name, { value: true, writable: true });\n  return this;\n};\n\nWeakSet.prototype.delete = function (obj) {\n  if (!obj[this.name]) return false;\n  obj[this.name] = undefined;\n  return true;\n};\n\nWeakSet.prototype.has = function (obj) {\n  return !!obj[this.name];\n};\n\nmodule.exports = WeakSet;","'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* eslint no-extend-native: \"off\" */\n\nvar defineProperty = Object.defineProperty;\nvar counter = Date.now() % 1e9;\n\nvar WeakMap = function WeakMap(data) {\n  this.name = '__st' + (Math.random() * 1e9 >>> 0) + (counter++ + '__');\n\n  // If data is iterable (indicated by presence of a forEach method), pre-populate the map\n  data && data.forEach && data.forEach(function (item) {\n    this.set.apply(this, item);\n  }, this);\n};\n\nWeakMap.prototype.set = function (key, value) {\n  if ((typeof key === 'undefined' ? 'undefined' : _typeof(key)) !== 'object' && typeof key !== 'function') throw new TypeError('Invalid value used as weak map key');\n\n  var entry = key[this.name];\n  if (entry && entry[0] === key) entry[1] = value;else defineProperty(key, this.name, { value: [key, value], writable: true });\n  return this;\n};\n\nWeakMap.prototype.get = function (key) {\n  var entry;\n  return (entry = key[this.name]) && entry[0] === key ? entry[1] : undefined;\n};\n\nWeakMap.prototype.delete = function (key) {\n  var entry = key[this.name];\n  if (!entry || entry[0] !== key) return false;\n  entry[0] = entry[1] = undefined;\n  return true;\n};\n\nWeakMap.prototype.has = function (key) {\n  var entry = key[this.name];\n  if (!entry) return false;\n  return entry[0] === key;\n};\n\nmodule.exports = WeakMap;","'use strict';\n\nvar _symbol = require('./symbol');\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Deleted map items mess with iterator pointers, so rather than removing them mark them as deleted. Can't use undefined or null since those both valid keys so use a private symbol.\nvar undefMarker = (0, _symbol2.default)('undef');\n\n// NaN cannot be found in an array using indexOf, so we encode NaNs using a private symbol.\n/* eslint no-extend-native: \"off\" */\nvar NaNMarker = (0, _symbol2.default)('NaN');\n\nvar ACCESSOR_SUPPORT = true;\n\nfunction encodeVal(data) {\n  // Number.isNaN not extist in iOS 8.x\n  return data !== data ? NaNMarker : data;\n}\n\nfunction decodeVal(encodedData) {\n  return encodedData === NaNMarker ? NaN : encodedData;\n}\n\nfunction makeIterator(setInst, getter) {\n  var nextIdx = 0;\n  return {\n    next: function next() {\n      while (setInst._values[nextIdx] === undefMarker) {\n        nextIdx++;\n      }if (nextIdx === setInst._values.length) {\n        return { value: void 0, done: true };\n      } else {\n        return { value: getter.call(setInst, nextIdx++), done: false };\n      }\n    }\n  };\n}\n\nfunction calcSize(setInst) {\n  var size = 0;\n  for (var i = 0, s = setInst._values.length; i < s; i++) {\n    if (setInst._values[i] !== undefMarker) size++;\n  }\n  return size;\n}\n\nvar Set = function Set(data) {\n  this._values = [];\n\n  // If `data` is iterable (indicated by presence of a forEach method), pre-populate the set\n  data && typeof data.forEach === 'function' && data.forEach(function (item) {\n    this.add.call(this, item);\n  }, this);\n\n  if (!ACCESSOR_SUPPORT) this.size = calcSize(this);\n};\n\n// Some old engines do not support ES5 getters/setters.  Since Set only requires these for the size property, we can fall back to setting the size property statically each time the size of the set changes.\ntry {\n  Object.defineProperty(Set.prototype, 'size', {\n    get: function get() {\n      return calcSize(this);\n    }\n  });\n} catch (e) {\n  ACCESSOR_SUPPORT = false;\n}\n\nSet.prototype.add = function (value) {\n  value = encodeVal(value);\n  if (this._values.indexOf(value) === -1) {\n    this._values.push(value);\n    if (!ACCESSOR_SUPPORT) this.size = calcSize(this);\n  }\n  return this;\n};\nSet.prototype.has = function (value) {\n  return this._values.indexOf(encodeVal(value)) !== -1;\n};\nSet.prototype.delete = function (value) {\n  var idx = this._values.indexOf(encodeVal(value));\n  if (idx === -1) return false;\n  this._values[idx] = undefMarker;\n  if (!ACCESSOR_SUPPORT) this.size = calcSize(this);\n  return true;\n};\nSet.prototype.clear = function () {\n  this._values = [];\n  if (!ACCESSOR_SUPPORT) this.size = 0;\n};\nSet.prototype.values = Set.prototype.keys = function () {\n  return makeIterator(this, function (i) {\n    return decodeVal(this._values[i]);\n  });\n};\nSet.prototype.entries = Set.prototype[_symbol2.default.iterator] = function () {\n  return makeIterator(this, function (i) {\n    return [decodeVal(this._values[i]), decodeVal(this._values[i])];\n  });\n};\nSet.prototype.forEach = function (callbackFn, thisArg) {\n  thisArg = thisArg || global;\n  var iterator = this.entries();\n  var result = iterator.next();\n  while (result.done === false) {\n    callbackFn.call(thisArg, result.value[1], result.value[0], this);\n    result = iterator.next();\n  }\n};\n\nSet.prototype[_symbol2.default.species] = Set;\n\nObject.defineProperty(Set, 'constructor', {\n  value: Set\n});\n\ntry {\n  Object.defineProperty(Set, 'length', {\n    value: 0\n  });\n} catch (e) {}\n\nmodule.exports = Set;","'use strict';\n\nvar _symbol = require('./symbol');\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Deleted map items mess with iterator pointers, so rather than removing them mark them as deleted. Can't use undefined or null since those both valid keys so use a private symbol.\nvar undefMarker = (0, _symbol2.default)('undef');\n// NaN cannot be found in an array using indexOf, so we encode NaNs using a private symbol.\n/* eslint no-extend-native: \"off\" */\nvar NaNMarker = (0, _symbol2.default)('NaN');\nvar ACCESSOR_SUPPORT = true;\n\nfunction encodeKey(key) {\n  // Number.isNaN not extist in iOS 8.x\n  return key !== key ? NaNMarker : key;\n}\n\nfunction decodeKey(encodedKey) {\n  return encodedKey === NaNMarker ? NaN : encodedKey;\n}\n\nfunction makeIterator(mapInst, getter) {\n  var nextIdx = 0;\n  var done = false;\n  return {\n    next: function next() {\n      if (nextIdx === mapInst._keys.length) done = true;\n      if (!done) {\n        while (mapInst._keys[nextIdx] === undefMarker) {\n          nextIdx++;\n        }return { value: getter.call(mapInst, nextIdx++), done: false };\n      } else {\n        return { value: void 0, done: true };\n      }\n    }\n  };\n}\n\nfunction calcSize(mapInst) {\n  var size = 0;\n  for (var i = 0, s = mapInst._keys.length; i < s; i++) {\n    if (mapInst._keys[i] !== undefMarker) size++;\n  }\n  return size;\n}\n\nfunction hasProtoMethod(instance, method) {\n  return typeof instance[method] === 'function';\n}\n\nvar Map = function Map(data) {\n  this._keys = [];\n  this._values = [];\n  // If `data` is iterable (indicated by presence of a forEach method), pre-populate the map\n  if (data && hasProtoMethod(data, 'forEach')) {\n    // Fastpath: If `data` is a Map, shortcircuit all following the checks\n    if (data instanceof Map ||\n    // If `data` is not an instance of Map, it could be because you have a Map from an iframe or a worker or something.\n    // Check if  `data` has all the `Map` methods and if so, assume data is another Map\n    hasProtoMethod(data, 'clear') && hasProtoMethod(data, 'delete') && hasProtoMethod(data, 'entries') && hasProtoMethod(data, 'forEach') && hasProtoMethod(data, 'get') && hasProtoMethod(data, 'has') && hasProtoMethod(data, 'keys') && hasProtoMethod(data, 'set') && hasProtoMethod(data, 'values')) {\n      data.forEach(function (value, key) {\n        this.set.apply(this, [key, value]);\n      }, this);\n    } else {\n      data.forEach(function (item) {\n        this.set.apply(this, item);\n      }, this);\n    }\n  }\n\n  if (!ACCESSOR_SUPPORT) this.size = calcSize(this);\n};\nMap.prototype = {};\n\n// Some old engines do not support ES5 getters/setters.  Since Map only requires these for the size property, we can fall back to setting the size property statically each time the size of the map changes.\ntry {\n  Object.defineProperty(Map.prototype, 'size', {\n    get: function get() {\n      return calcSize(this);\n    }\n  });\n} catch (e) {\n  ACCESSOR_SUPPORT = false;\n}\n\nMap.prototype.get = function (key) {\n  var idx = this._keys.indexOf(encodeKey(key));\n  return idx !== -1 ? this._values[idx] : undefined;\n};\nMap.prototype.set = function (key, value) {\n  var idx = this._keys.indexOf(encodeKey(key));\n  if (idx !== -1) {\n    this._values[idx] = value;\n  } else {\n    this._keys.push(encodeKey(key));\n    this._values.push(value);\n    if (!ACCESSOR_SUPPORT) this.size = calcSize(this);\n  }\n  return this;\n};\nMap.prototype.has = function (key) {\n  return this._keys.indexOf(encodeKey(key)) !== -1;\n};\nMap.prototype.delete = function (key) {\n  var idx = this._keys.indexOf(encodeKey(key));\n  if (idx === -1) return false;\n  this._keys[idx] = undefMarker;\n  this._values[idx] = undefMarker;\n  if (!ACCESSOR_SUPPORT) this.size = calcSize(this);\n  return true;\n};\nMap.prototype.clear = function () {\n  this._keys = this._values = [];\n  if (!ACCESSOR_SUPPORT) this.size = 0;\n};\nMap.prototype.values = function () {\n  return makeIterator(this, function (i) {\n    return this._values[i];\n  });\n};\nMap.prototype.keys = function () {\n  return makeIterator(this, function (i) {\n    return decodeKey(this._keys[i]);\n  });\n};\nMap.prototype.entries = Map.prototype[_symbol2.default.iterator] = function () {\n  return makeIterator(this, function (i) {\n    return [decodeKey(this._keys[i]), this._values[i]];\n  });\n};\nMap.prototype.forEach = function (callbackFn, thisArg) {\n  thisArg = thisArg || global;\n  var iterator = this.entries();\n  var result = iterator.next();\n  while (result.done === false) {\n    callbackFn.call(thisArg, result.value[1], result.value[0], this);\n    result = iterator.next();\n  }\n};\n\nMap.prototype[_symbol2.default.species] = Map;\n\nObject.defineProperty(Map, 'constructor', {\n  value: Map\n});\n\ntry {\n  Object.defineProperty(Map, 'length', {\n    value: 0\n  });\n} catch (e) {}\n\nmodule.exports = Map;","'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* eslint no-extend-native: \"off\" */\n\nfunction noop() {}\n\n// Use polyfill for setImmediate for performance gains\nvar asap = typeof setImmediate === 'function' && setImmediate || function (fn) {\n  if (typeof setTimeout === 'function') {\n    setTimeout(fn, 0);\n  } else {\n    fn();\n  }\n};\n\nvar onUnhandledRejection = function onUnhandledRejection(err) {\n  if (typeof console !== 'undefined' && console) {\n    console.log('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n  }\n};\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n  return function () {\n    fn.apply(thisArg, arguments);\n  };\n}\n\nfunction Promise(fn) {\n  if (_typeof(this) !== 'object') throw new TypeError('Promises must be constructed via new');\n  if (typeof fn !== 'function') throw new TypeError('Promise resolver is not a function');\n  this._state = 0;\n  this._handled = false;\n  this._value = undefined;\n  this._deferreds = [];\n\n  doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n  while (self._state === 3) {\n    self = self._value;\n  }\n  if (self._state === 0) {\n    self._deferreds.push(deferred);\n    return;\n  }\n  self._handled = true;\n  asap(function () {\n    var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n    if (cb === null) {\n      (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n      return;\n    }\n    var ret;\n    try {\n      ret = cb(self._value);\n    } catch (e) {\n      reject(deferred.promise, e);\n      return;\n    }\n    resolve(deferred.promise, ret);\n  });\n}\n\nfunction resolve(self, newValue) {\n  try {\n    // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n    if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');\n    if (newValue && ((typeof newValue === 'undefined' ? 'undefined' : _typeof(newValue)) === 'object' || typeof newValue === 'function')) {\n      var then = newValue.then;\n      if (newValue instanceof Promise) {\n        self._state = 3;\n        self._value = newValue;\n        finale(self);\n        return;\n      } else if (typeof then === 'function') {\n        doResolve(bind(then, newValue), self);\n        return;\n      }\n    }\n    self._state = 1;\n    self._value = newValue;\n    finale(self);\n  } catch (e) {\n    reject(self, e);\n  }\n}\n\nfunction reject(self, newValue) {\n  self._state = 2;\n  self._value = newValue;\n  finale(self);\n}\n\nfunction finale(self) {\n  if (self._state === 2 && self._deferreds.length === 0) {\n    asap(function () {\n      if (!self._handled) {\n        onUnhandledRejection(self._value);\n      }\n    });\n  }\n\n  for (var i = 0, len = self._deferreds.length; i < len; i++) {\n    handle(self, self._deferreds[i]);\n  }\n  self._deferreds = null;\n}\n\nfunction Handler(onFulfilled, onRejected, promise) {\n  this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n  this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n  this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n  var done = false;\n  try {\n    fn(function (value) {\n      if (done) return;\n      done = true;\n      resolve(self, value);\n    }, function (reason) {\n      if (done) return;\n      done = true;\n      reject(self, reason);\n    });\n  } catch (ex) {\n    if (done) return;\n    done = true;\n    reject(self, ex);\n  }\n}\n\nPromise.prototype.catch = function (onRejected) {\n  return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function (onFulfilled, onRejected) {\n  var prom = new this.constructor(noop);\n\n  handle(this, new Handler(onFulfilled, onRejected, prom));\n  return prom;\n};\n\nPromise.all = function (arr) {\n  var args = Array.prototype.slice.call(arr);\n\n  return new Promise(function (resolve, reject) {\n    if (args.length === 0) return resolve([]);\n    var remaining = args.length;\n\n    function res(i, val) {\n      try {\n        if (val && ((typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' || typeof val === 'function')) {\n          var then = val.then;\n          if (typeof then === 'function') {\n            then.call(val, function (val) {\n              res(i, val);\n            }, reject);\n            return;\n          }\n        }\n        args[i] = val;\n        if (--remaining === 0) {\n          resolve(args);\n        }\n      } catch (ex) {\n        reject(ex);\n      }\n    }\n\n    for (var i = 0; i < args.length; i++) {\n      res(i, args[i]);\n    }\n  });\n};\n\nPromise.resolve = function (value) {\n  if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.constructor === Promise) {\n    return value;\n  }\n\n  return new Promise(function (resolve) {\n    resolve(value);\n  });\n};\n\nPromise.reject = function (value) {\n  return new Promise(function (resolve, reject) {\n    reject(value);\n  });\n};\n\nPromise.race = function (values) {\n  return new Promise(function (resolve, reject) {\n    for (var i = 0, len = values.length; i < len; i++) {\n      values[i].then(resolve, reject);\n    }\n  });\n};\n\n/**\n * Set the immediate function to execute callbacks\n * @param fn {function} Function to execute\n * @private\n */\nPromise._setImmediateFn = function _setImmediateFn(fn) {\n  asap = fn;\n};\n\nPromise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {\n  onUnhandledRejection = fn;\n};\n\nmodule.exports = Promise;","'use strict';\n\nmodule.exports = {\n  get Promise() {\n    return require('./promise');\n  },\n  get Symbol() {\n    return require('./symbol');\n  },\n  get Map() {\n    return require('./map');\n  },\n  get Set() {\n    return require('./set');\n  },\n  get WeakMap() {\n    return require('./weakmap');\n  },\n  get WeakSet() {\n    return require('./weakset');\n  },\n  get FontFace() {\n    return require('./fontface');\n  },\n  get URL() {\n    return require('./url');\n  },\n  get URLSearchParams() {\n    return require('./url-search-params');\n  },\n  get matchMedia() {\n    return require('./matchMedia');\n  }\n};","const global = window;\n\nconst shared = require('runtime-shared');\n\n// ES\nrequire('./number');\nrequire('./object');\nrequire('./array');\n\nif (!global.Promise) {\n  global.Promise = shared.Promise;\n}\n\nif (!global.Symbol) {\n  global.Symbol = shared.Symbol;\n}\n\nif (!global.Map) {\n  global.Map = shared.Map;\n}\n\nif (!global.Set) {\n  global.Set = shared.Set;\n}\n\nif (!global.WeakMap) {\n  global.WeakMap = shared.WeakMap;\n}\n\nif (!global.WeakSet) {\n  global.WeakSet = shared.WeakSet;\n}\n\n// W3C\nrequire('whatwg-fetch');\nrequire('raf/polyfill');\n\nif (!global.FontFace) {\n  global.FontFace = shared.FontFace;\n}\n\nif (!global.matchMedia) {\n  global.matchMedia = shared.matchMedia;\n}\n\nif (!global.URL) {\n  global.URL = shared.URL;\n}\n\nif (!global.URLSearchParams) {\n  global.URLSearchParams = shared.URLSearchParams;\n}\n\nif (!document.fonts) {\n  document.fonts = {\n    add: function(fontFace) {\n      let fontFaceRule = `@font-face {\n        font-family: ${fontFace.family};\n        src: ${fontFace.source}\n      }`;\n\n      let styleElement = document.createElement('style');\n      styleElement.innerHTML = fontFaceRule;\n      document.head.appendChild(styleElement);\n    }\n  };\n}\n\n// ModuleJS\nrequire('./require');\n\n// Polyfills for weex\nrequire('./appear');\n\n// Default Builtin modules\nglobal.define('rax', function(req, exports, module) {\n  module.exports = require('rax');\n});\n"],"sourceRoot":""}