From 38baff403e9d42657bc93e5778984995abc54e87 Mon Sep 17 00:00:00 2001 From: hollow-owl <71401395+hollow-owl@users.noreply.github.com> Date: Wed, 11 Sep 2024 12:24:52 -0500 Subject: [PATCH 1/5] Add PWA --- docs/img/icon.png | Bin 0 -> 185917 bytes docs/index.html | 12 ++++++++- docs/manifest.webmanifest | 17 +++++++++++++ docs/sw.js | 52 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 docs/img/icon.png create mode 100644 docs/manifest.webmanifest create mode 100644 docs/sw.js diff --git a/docs/img/icon.png b/docs/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4cb25a9421d9014a803b5f63a15bbcf6cb7ad99b GIT binary patch literal 185917 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 rfAz}$6w?3n=70S5|6i<7$Q= 俄罗斯方块 +

- + + + \ No newline at end of file diff --git a/docs/manifest.webmanifest b/docs/manifest.webmanifest new file mode 100644 index 00000000..3f660f38 --- /dev/null +++ b/docs/manifest.webmanifest @@ -0,0 +1,17 @@ +{ + "name": "Github Page PWA", + "short_name": "GPPWA", + "description": "Github Page as a Progressive Web App", + "scope": "/react-tetris/", + "start_url": "/react-tetris/", + "background_color": "#ffffff", + "theme_color": "#ffffff", + "display": "standalone", + "icons": [ + { + "src": "/react-tetris/img/icon.png", + "type": "image/png", + "sizes": "700x700" + } + ] +} \ No newline at end of file diff --git a/docs/sw.js b/docs/sw.js new file mode 100644 index 00000000..8b6e912d --- /dev/null +++ b/docs/sw.js @@ -0,0 +1,52 @@ +var GHPATH = '/react-tetris'; +var APP_PREFIX = 'gppwa_'; +var VERSION = 'version_002'; +var URLS = [ + `${GHPATH}/`, + `${GHPATH}/index.html`, + `${GHPATH}/css/styles.css`, + `${GHPATH}/img/icon.png`, + `${GHPATH}/js/app.js` +] + +var CACHE_NAME = APP_PREFIX + VERSION +self.addEventListener('fetch', function (e) { + console.log('Fetch request : ' + e.request.url); + e.respondWith( + caches.match(e.request).then(function (request) { + if (request) { + console.log('Responding with cache : ' + e.request.url); + return request + } else { + console.log('File is not cached, fetching : ' + e.request.url); + return fetch(e.request) + } + }) + ) +}) + +self.addEventListener('install', function (e) { + e.waitUntil( + caches.open(CACHE_NAME).then(function (cache) { + console.log('Installing cache : ' + CACHE_NAME); + return cache.addAll(URLS) + }) + ) +}) + +self.addEventListener('activate', function (e) { + e.waitUntil( + caches.keys().then(function (keyList) { + var cacheWhitelist = keyList.filter(function (key) { + return key.indexOf(APP_PREFIX) + }) + cacheWhitelist.push(CACHE_NAME); + return Promise.all(keyList.map(function (key, i) { + if (cacheWhitelist.indexOf(key) === -1) { + console.log('Deleting cache : ' + keyList[i] ); + return caches.delete(keyList[i]) + } + })) + }) + ) +}) \ No newline at end of file From 25d8793939f1168ade779a412ce1f07799ec2130 Mon Sep 17 00:00:00 2001 From: hollow-owl <71401395+hollow-owl@users.noreply.github.com> Date: Wed, 11 Sep 2024 12:28:22 -0500 Subject: [PATCH 2/5] Add cache paths --- docs/sw.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/sw.js b/docs/sw.js index 8b6e912d..8ec37949 100644 --- a/docs/sw.js +++ b/docs/sw.js @@ -4,9 +4,9 @@ var VERSION = 'version_002'; var URLS = [ `${GHPATH}/`, `${GHPATH}/index.html`, - `${GHPATH}/css/styles.css`, - `${GHPATH}/img/icon.png`, - `${GHPATH}/js/app.js` + `${GHPATH}/css-1.0.1.css`, + `${GHPATH}/app-1.0.1.js`, + `${GHPATH}/loader.css` ] var CACHE_NAME = APP_PREFIX + VERSION From d4079516e2e6f8a279282923560da33b453808c9 Mon Sep 17 00:00:00 2001 From: hollow-owl <71401395+hollow-owl@users.noreply.github.com> Date: Sat, 14 Sep 2024 16:09:01 -0500 Subject: [PATCH 3/5] Add icons --- docs/img/icon.png | Bin 185917 -> 0 bytes docs/img/icons/android-chrome-192x192.png | Bin 0 -> 6365 bytes docs/img/icons/android-chrome-512x512.png | Bin 0 -> 24416 bytes docs/manifest.webmanifest | 23 +++++++++++++--------- docs/sw.js | 2 +- 5 files changed, 15 insertions(+), 10 deletions(-) delete mode 100644 docs/img/icon.png create mode 100644 docs/img/icons/android-chrome-192x192.png create mode 100644 docs/img/icons/android-chrome-512x512.png diff --git a/docs/img/icon.png b/docs/img/icon.png deleted file mode 100644 index 4cb25a9421d9014a803b5f63a15bbcf6cb7ad99b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185917 zcmeFZg;$j8_dZN_gM_3aQbTu_gwi10Al=cN)MRqCl*eTq_dTw+=F2=NR6#2Z*-@aEkti?Of8+*iQzE=U`al&%6-b4G zMweaHu>OrT_oK2{Q~-Yz2+c@2j=cKlZNXLZ0B2%R_ogYmF{jOHFE9 z_d|tc^{r=2Y|B@^7WlBZIR8Ds3^X|LE2U#`YV~hK5&nBb1t65a4nzqH`1c{IhW}}$ zbaz#4>%Y$cFJ5_YA^-3DqSOEcdo}EGep+{f%g#hV%by zEdZ+hqlq`n7$(`{-)3Lk%d4*iHa_a44Ftr##=EkM{w*Z6$2Ou0(7*2@2 zlMG1I(>BlOPF$OMXf7^B$Hc^Rvudq38+>jvSA!}fB&1pO0ktQZG_?Nvf$eLzJoROj zTD9J1{}v%SMIhC0@G)Dd$x!Wfd>S+pgH4xv9Z5LP4eGb7NQ^;=)OI09(_P{EH#UF zO=6(%g})fY)P%vix4qqNUH&~J>+!sx;dZw;vXofFPw+V@>0m<6_wVG3i;HH1#-sf1~+{ga`*hBq=ReO7+CXc*|$Z13)*`aprWD?|6^tK5|Q@7k)Az|gdlwn zZh32qpyd2}{&oH*y&4N#zti}vmCZDJ=Cy2^q~1Ih7XPLw%==9Ip_*%EgH|#k10Ocw zr<>utva+GpBcGtWJ9T{X3(0?LbaoO@GR-=}@UwaIvt3&oMkkD!*WpNO9oMB=uGb"],area:[1,"",""],col:[2,"","
"],legend:[1,"
","
"],param:[1,"",""],tr:[2,"","
"],optgroup:s,option:s,caption:c,colgroup:c,tbody:c,tfoot:c,thead:c,td:l,th:l},d=["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan"];d.forEach(function(t){p[t]=f,u[t]=!0}),t.exports=r},function(t,e,n){"use strict";var r=n(77),o=n(35),i={dangerouslyProcessChildrenUpdates:function(t,e){var n=o.getNodeFromInstance(t);r.processUpdates(n,e)}};t.exports=i},function(t,e,n){"use strict";function r(t){if(t){var e=t._currentElement._owner||null;if(e){var n=e.getName();if(n)return" This DOM node was rendered by `"+n+"`."}}return""}function o(t,e){e&&(Q[t._tag]&&(null!=e.children||null!=e.dangerouslySetInnerHTML?m("137",t._tag,t._currentElement._owner?" Check the render method of "+t._currentElement._owner.getName()+".":""):void 0),null!=e.dangerouslySetInnerHTML&&(null!=e.children?m("60"):void 0,"object"==typeof e.dangerouslySetInnerHTML&&Y in e.dangerouslySetInnerHTML?void 0:m("61")),null!=e.style&&"object"!=typeof e.style?m("62",r(t)):void 0)}function i(t,e,n,r){if(!(r instanceof N)){var o=t._hostContainerInfo,i=o._node&&o._node.nodeType===K,u=i?o._node:o._ownerDocument;F(e,u),r.getReactMountReady().enqueue(a,{inst:t,registrationName:e,listener:n})}}function a(){var t=this;S.putListener(t.inst,t.registrationName,t.listener)}function u(){var t=this;k.postMountWrapper(t)}function s(){var t=this;R.postMountWrapper(t)}function c(){var t=this;M.postMountWrapper(t)}function l(){L.track(this)}function f(){var t=this;t._rootNodeID?void 0:m("63");var e=B(t);switch(e?void 0:m("64"),t._tag){case"iframe":case"object":t._wrapperState.listeners=[P.trapBubbledEvent("topLoad","load",e)];break;case"video":case"audio":t._wrapperState.listeners=[];for(var n in H)H.hasOwnProperty(n)&&t._wrapperState.listeners.push(P.trapBubbledEvent(n,H[n],e));break;case"source":t._wrapperState.listeners=[P.trapBubbledEvent("topError","error",e)];break;case"img":t._wrapperState.listeners=[P.trapBubbledEvent("topError","error",e),P.trapBubbledEvent("topLoad","load",e)];break;case"form":t._wrapperState.listeners=[P.trapBubbledEvent("topReset","reset",e),P.trapBubbledEvent("topSubmit","submit",e)];break;case"input":case"select":case"textarea":t._wrapperState.listeners=[P.trapBubbledEvent("topInvalid","invalid",e)]}}function p(){I.postUpdateWrapper(this)}function d(t){Z.call(G,t)||($.test(t)?void 0:m("65",t),G[t]=!0)}function h(t,e){return t.indexOf("-")>=0||null!=e.is}function v(t){var e=t.type;d(e),this._currentElement=t,this._tag=e.toLowerCase(),this._namespaceURI=null,this._renderedChildren=null,this._previousStyle=null,this._previousStyleCopy=null,this._hostNode=null,this._hostParent=null,this._rootNodeID=0,this._domID=0,this._hostContainerInfo=null,this._wrapperState=null,this._topLevelWrapper=null,this._flags=0}var m=n(36),y=n(3),g=n(90),_=n(92),b=n(78),w=n(79),E=n(37),C=n(100),S=n(43),x=n(44),P=n(102),T=n(38),O=n(35),k=n(105),M=n(108),I=n(109),R=n(110),A=(n(63),n(111)),N=n(130),D=(n(8),n(83)),L=(n(11),n(67),n(119),n(65)),j=(n(133),n(7),T),U=S.deleteListener,B=O.getNodeFromInstance,F=P.listenTo,z=x.registrationNameModules,q={string:!0,number:!0},V="style",Y="__html",W={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null},K=11,H={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled",topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"},J={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},X={listing:!0,pre:!0,textarea:!0},Q=y({menuitem:!0},J),$=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,G={},Z={}.hasOwnProperty,tt=1;v.displayName="ReactDOMComponent",v.Mixin={mountComponent:function(t,e,n,r){this._rootNodeID=tt++,this._domID=n._idCounter++,this._hostParent=e,this._hostContainerInfo=n;var i=this._currentElement.props;switch(this._tag){case"audio":case"form":case"iframe":case"img":case"link":case"object":case"source":case"video":this._wrapperState={listeners:null},t.getReactMountReady().enqueue(f,this);break;case"input":k.mountWrapper(this,i,e),i=k.getHostProps(this,i),t.getReactMountReady().enqueue(l,this),t.getReactMountReady().enqueue(f,this);break;case"option":M.mountWrapper(this,i,e),i=M.getHostProps(this,i);break;case"select":I.mountWrapper(this,i,e),i=I.getHostProps(this,i),t.getReactMountReady().enqueue(f,this);break;case"textarea":R.mountWrapper(this,i,e),i=R.getHostProps(this,i),t.getReactMountReady().enqueue(l,this),t.getReactMountReady().enqueue(f,this)}o(this,i);var a,p;null!=e?(a=e._namespaceURI,p=e._tag):n._tag&&(a=n._namespaceURI,p=n._tag),(null==a||a===w.svg&&"foreignobject"===p)&&(a=w.html),a===w.html&&("svg"===this._tag?a=w.svg:"math"===this._tag&&(a=w.mathml)),this._namespaceURI=a;var d;if(t.useCreateElement){var h,v=n._ownerDocument;if(a===w.html)if("script"===this._tag){var m=v.createElement("div"),y=this._currentElement.type;m.innerHTML="<"+y+">",h=m.removeChild(m.firstChild)}else h=i.is?v.createElement(this._currentElement.type,i.is):v.createElement(this._currentElement.type);else h=v.createElementNS(a,this._currentElement.type);O.precacheNode(this,h),this._flags|=j.hasCachedChildNodes,this._hostParent||C.setAttributeForRoot(h),this._updateDOMProperties(null,i,t);var _=b(h);this._createInitialChildren(t,i,r,_),d=_}else{var E=this._createOpenTagMarkupAndPutListeners(t,i),S=this._createContentMarkup(t,i,r);d=!S&&J[this._tag]?E+"/>":E+">"+S+""}switch(this._tag){case"input":t.getReactMountReady().enqueue(u,this),i.autoFocus&&t.getReactMountReady().enqueue(g.focusDOMComponent,this);break;case"textarea":t.getReactMountReady().enqueue(s,this),i.autoFocus&&t.getReactMountReady().enqueue(g.focusDOMComponent,this);break;case"select":i.autoFocus&&t.getReactMountReady().enqueue(g.focusDOMComponent,this);break;case"button":i.autoFocus&&t.getReactMountReady().enqueue(g.focusDOMComponent,this);break;case"option":t.getReactMountReady().enqueue(c,this)}return d},_createOpenTagMarkupAndPutListeners:function(t,e){var n="<"+this._currentElement.type;for(var r in e)if(e.hasOwnProperty(r)){var o=e[r];if(null!=o)if(z.hasOwnProperty(r))o&&i(this,r,o,t);else{r===V&&(o&&(o=this._previousStyleCopy=y({},e.style)),o=_.createMarkupForStyles(o,this));var a=null;null!=this._tag&&h(this._tag,e)?W.hasOwnProperty(r)||(a=C.createMarkupForCustomAttribute(r,o)):a=C.createMarkupForProperty(r,o),a&&(n+=" "+a)}}return t.renderToStaticMarkup?n:(this._hostParent||(n+=" "+C.createMarkupForRoot()),n+=" "+C.createMarkupForID(this._domID))},_createContentMarkup:function(t,e,n){var r="",o=e.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&(r=o.__html);else{var i=q[typeof e.children]?e.children:null,a=null!=i?null:e.children;if(null!=i)r=D(i);else if(null!=a){var u=this.mountChildren(a,t,n);r=u.join("")}}return X[this._tag]&&"\n"===r.charAt(0)?"\n"+r:r},_createInitialChildren:function(t,e,n,r){var o=e.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&b.queueHTML(r,o.__html);else{var i=q[typeof e.children]?e.children:null,a=null!=i?null:e.children;if(null!=i)""!==i&&b.queueText(r,i);else if(null!=a)for(var u=this.mountChildren(a,t,n),s=0;s1)for(var n=1;n0&&r.length<20?n+" (keys: "+r.join(", ")+")":n}function i(t,e){var n=u.get(t);if(!n){return null}return n}var a=n(36),u=(n(16),n(113)),s=(n(63),n(57)),c=(n(11),n(7),{isMounted:function(t){var e=u.get(t);return!!e&&!!e._renderedComponent},enqueueCallback:function(t,e,n){c.validateCallback(e,n);var o=i(t);return o?(o._pendingCallbacks?o._pendingCallbacks.push(e):o._pendingCallbacks=[e],void r(o)):null},enqueueCallbackInternal:function(t,e){t._pendingCallbacks?t._pendingCallbacks.push(e):t._pendingCallbacks=[e],r(t)},enqueueForceUpdate:function(t){ -var e=i(t,"forceUpdate");e&&(e._pendingForceUpdate=!0,r(e))},enqueueReplaceState:function(t,e,n){var o=i(t,"replaceState");o&&(o._pendingStateQueue=[e],o._pendingReplaceState=!0,void 0!==n&&null!==n&&(c.validateCallback(n,"replaceState"),o._pendingCallbacks?o._pendingCallbacks.push(n):o._pendingCallbacks=[n]),r(o))},enqueueSetState:function(t,e){var n=i(t,"setState");if(n){var o=n._pendingStateQueue||(n._pendingStateQueue=[]);o.push(e),r(n)}},enqueueElementInternal:function(t,e,n){t._pendingElement=e,t._context=n,r(t)},validateCallback:function(t,e){t&&"function"!=typeof t?a("122",e,o(t)):void 0}});t.exports=c},function(t,e,n){"use strict";var r=(n(3),n(8)),o=(n(7),r);t.exports=o},function(t,e,n){"use strict";var r=n(3),o=n(78),i=n(35),a=function(t){this._currentElement=null,this._hostNode=null,this._hostParent=null,this._hostContainerInfo=null,this._domID=0};r(a.prototype,{mountComponent:function(t,e,n,r){var a=n._idCounter++;this._domID=a,this._hostParent=e,this._hostContainerInfo=n;var u=" react-empty: "+this._domID+" ";if(t.useCreateElement){var s=n._ownerDocument,c=s.createComment(u);return i.precacheNode(this,c),o(c)}return t.renderToStaticMarkup?"":""},receiveComponent:function(){},getHostNode:function(){return i.getNodeFromInstance(this)},unmountComponent:function(){i.uncacheNode(this)}}),t.exports=a},function(t,e,n){"use strict";function r(t,e){"_hostNode"in t?void 0:s("33"),"_hostNode"in e?void 0:s("33");for(var n=0,r=t;r;r=r._hostParent)n++;for(var o=0,i=e;i;i=i._hostParent)o++;for(;n-o>0;)t=t._hostParent,n--;for(;o-n>0;)e=e._hostParent,o--;for(var a=n;a--;){if(t===e)return t;t=t._hostParent,e=e._hostParent}return null}function o(t,e){"_hostNode"in t?void 0:s("35"),"_hostNode"in e?void 0:s("35");for(;e;){if(e===t)return!0;e=e._hostParent}return!1}function i(t){return"_hostNode"in t?void 0:s("36"),t._hostParent}function a(t,e,n){for(var r=[];t;)r.push(t),t=t._hostParent;var o;for(o=r.length;o-- >0;)e(r[o],"captured",n);for(o=0;o0;)n(s[c],"captured",i)}var s=n(36);n(11);t.exports={isAncestor:o,getLowestCommonAncestor:r,getParentInstance:i,traverseTwoPhase:a,traverseEnterLeave:u}},function(t,e,n){"use strict";var r=n(36),o=n(3),i=n(77),a=n(78),u=n(35),s=n(83),c=(n(11),n(133),function(t){this._currentElement=t,this._stringText=""+t,this._hostNode=null,this._hostParent=null,this._domID=0,this._mountIndex=0,this._closingComment=null,this._commentNodes=null});o(c.prototype,{mountComponent:function(t,e,n,r){var o=n._idCounter++,i=" react-text: "+o+" ",c=" /react-text ";if(this._domID=o,this._hostParent=e,t.useCreateElement){var l=n._ownerDocument,f=l.createComment(i),p=l.createComment(c),d=a(l.createDocumentFragment());return a.queueChild(d,a(f)),this._stringText&&a.queueChild(d,a(l.createTextNode(this._stringText))),a.queueChild(d,a(p)),u.precacheNode(this,f),this._closingComment=p,d}var h=s(this._stringText);return t.renderToStaticMarkup?h:""+h+""},receiveComponent:function(t,e){if(t!==this._currentElement){this._currentElement=t;var n=""+t;if(n!==this._stringText){this._stringText=n;var r=this.getHostNode();i.replaceDelimitedText(r[0],r[1],n)}}},getHostNode:function(){var t=this._commentNodes;if(t)return t;if(!this._closingComment)for(var e=u.getNodeFromInstance(this),n=e.nextSibling;;){if(null==n?r("67",this._domID):void 0,8===n.nodeType&&" /react-text "===n.nodeValue){this._closingComment=n;break}n=n.nextSibling}return t=[this._hostNode,this._closingComment],this._commentNodes=t,t},unmountComponent:function(){this._closingComment=null,this._commentNodes=null,u.uncacheNode(this)}}),t.exports=c},function(t,e,n){"use strict";function r(){this.reinitializeTransaction()}var o=n(3),i=n(57),a=n(64),u=n(8),s={initialize:u,close:function(){p.isBatchingUpdates=!1}},c={initialize:u,close:i.flushBatchedUpdates.bind(i)},l=[c,s];o(r.prototype,a,{getTransactionWrappers:function(){return l}});var f=new r,p={isBatchingUpdates:!1,batchedUpdates:function(t,e,n,r,o,i){var a=p.isBatchingUpdates;return p.isBatchingUpdates=!0,a?t(e,n,r,o,i):f.perform(t,null,e,n,r,o,i)}};t.exports=p},function(t,e,n){"use strict";function r(t){for(;t._hostParent;)t=t._hostParent;var e=f.getNodeFromInstance(t),n=e.parentNode;return f.getClosestInstanceFromNode(n)}function o(t,e){this.topLevelType=t,this.nativeEvent=e,this.ancestors=[]}function i(t){var e=d(t.nativeEvent),n=f.getClosestInstanceFromNode(e),o=n;do t.ancestors.push(o),o=o&&r(o);while(o);for(var i=0;ie.end?(n=e.end,r=e.start):(n=e.start,r=e.end),o.moveToElementText(t),o.moveStart("character",n),o.setEndPoint("EndToStart",o),o.moveEnd("character",r-n),o.select()}function u(t,e){if(window.getSelection){var n=window.getSelection(),r=t[l()].length,o=Math.min(e.start,r),i=void 0===e.end?o:Math.min(e.end,r);if(!n.extend&&o>i){var a=i;i=o,o=a}var u=c(t,o),s=c(t,i);if(u&&s){var f=document.createRange();f.setStart(u.node,u.offset),n.removeAllRanges(),o>i?(n.addRange(f),n.extend(s.node,s.offset)):(f.setEnd(s.node,s.offset),n.addRange(f))}}}var s=n(49),c=n(145),l=n(52),f=s.canUseDOM&&"selection"in document&&!("getSelection"in window),p={getOffsets:f?o:i,setOffsets:f?a:u};t.exports=p},function(t,e){"use strict";function n(t){for(;t&&t.firstChild;)t=t.firstChild;return t}function r(t){for(;t;){if(t.nextSibling)return t.nextSibling;t=t.parentNode}}function o(t,e){for(var o=n(t),i=0,a=0;o;){if(3===o.nodeType){if(a=i+o.textContent.length,i<=e&&a>=e)return{node:o,offset:e-i};i=a}o=n(r(o))}}t.exports=o},function(t,e,n){"use strict";function r(t,e){return!(!t||!e)&&(t===e||!o(t)&&(o(e)?r(t,e.parentNode):"contains"in t?t.contains(e):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(e))))}var o=n(147);t.exports=r},function(t,e,n){"use strict";function r(t){return o(t)&&3==t.nodeType}var o=n(148);t.exports=r},function(t,e){"use strict";function n(t){var e=t?t.ownerDocument||t:document,n=e.defaultView||window;return!(!t||!("function"==typeof n.Node?t instanceof n.Node:"object"==typeof t&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName))}t.exports=n},function(t,e){"use strict";function n(t){if(t=t||("undefined"!=typeof document?document:void 0),"undefined"==typeof t)return null;try{return t.activeElement||t.body}catch(e){return t.body}}t.exports=n},function(t,e){"use strict";var n={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"},r={accentHeight:"accent-height",accumulate:0,additive:0,alignmentBaseline:"alignment-baseline",allowReorder:"allowReorder",alphabetic:0,amplitude:0,arabicForm:"arabic-form",ascent:0,attributeName:"attributeName",attributeType:"attributeType",autoReverse:"autoReverse",azimuth:0,baseFrequency:"baseFrequency",baseProfile:"baseProfile",baselineShift:"baseline-shift",bbox:0,begin:0,bias:0,by:0,calcMode:"calcMode",capHeight:"cap-height",clip:0,clipPath:"clip-path",clipRule:"clip-rule",clipPathUnits:"clipPathUnits",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",contentScriptType:"contentScriptType",contentStyleType:"contentStyleType",cursor:0,cx:0,cy:0,d:0,decelerate:0,descent:0,diffuseConstant:"diffuseConstant",direction:0,display:0,divisor:0,dominantBaseline:"dominant-baseline",dur:0,dx:0,dy:0,edgeMode:"edgeMode",elevation:0,enableBackground:"enable-background",end:0,exponent:0,externalResourcesRequired:"externalResourcesRequired",fill:0,fillOpacity:"fill-opacity",fillRule:"fill-rule",filter:0,filterRes:"filterRes",filterUnits:"filterUnits",floodColor:"flood-color",floodOpacity:"flood-opacity",focusable:0,fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",format:0,from:0,fx:0,fy:0,g1:0,g2:0,glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",glyphRef:"glyphRef",gradientTransform:"gradientTransform",gradientUnits:"gradientUnits",hanging:0,horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",ideographic:0,imageRendering:"image-rendering",in:0,in2:0,intercept:0,k:0,k1:0,k2:0,k3:0,k4:0,kernelMatrix:"kernelMatrix",kernelUnitLength:"kernelUnitLength",kerning:0,keyPoints:"keyPoints",keySplines:"keySplines",keyTimes:"keyTimes",lengthAdjust:"lengthAdjust",letterSpacing:"letter-spacing",lightingColor:"lighting-color",limitingConeAngle:"limitingConeAngle",local:0,markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",markerHeight:"markerHeight",markerUnits:"markerUnits",markerWidth:"markerWidth",mask:0,maskContentUnits:"maskContentUnits",maskUnits:"maskUnits",mathematical:0,mode:0,numOctaves:"numOctaves",offset:0,opacity:0,operator:0,order:0,orient:0,orientation:0,origin:0,overflow:0,overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pathLength:"pathLength",patternContentUnits:"patternContentUnits",patternTransform:"patternTransform",patternUnits:"patternUnits",pointerEvents:"pointer-events",points:0,pointsAtX:"pointsAtX",pointsAtY:"pointsAtY",pointsAtZ:"pointsAtZ",preserveAlpha:"preserveAlpha",preserveAspectRatio:"preserveAspectRatio",primitiveUnits:"primitiveUnits",r:0,radius:0,refX:"refX",refY:"refY",renderingIntent:"rendering-intent",repeatCount:"repeatCount",repeatDur:"repeatDur",requiredExtensions:"requiredExtensions",requiredFeatures:"requiredFeatures",restart:0,result:0,rotate:0,rx:0,ry:0,scale:0,seed:0,shapeRendering:"shape-rendering",slope:0,spacing:0,specularConstant:"specularConstant",specularExponent:"specularExponent",speed:0,spreadMethod:"spreadMethod",startOffset:"startOffset",stdDeviation:"stdDeviation",stemh:0,stemv:0,stitchTiles:"stitchTiles",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",string:0,stroke:0,strokeDasharray:"stroke-dasharray",strokeDashoffset:"stroke-dashoffset",strokeLinecap:"stroke-linecap",strokeLinejoin:"stroke-linejoin",strokeMiterlimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",surfaceScale:"surfaceScale",systemLanguage:"systemLanguage",tableValues:"tableValues",targetX:"targetX",targetY:"targetY",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",textLength:"textLength",to:0,transform:0,u1:0,u2:0,underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicode:0,unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",values:0,vectorEffect:"vector-effect",version:0,vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",viewBox:"viewBox",viewTarget:"viewTarget",visibility:0,widths:0,wordSpacing:"word-spacing",writingMode:"writing-mode",x:0,xHeight:"x-height",x1:0,x2:0,xChannelSelector:"xChannelSelector",xlinkActuate:"xlink:actuate",xlinkArcrole:"xlink:arcrole",xlinkHref:"xlink:href",xlinkRole:"xlink:role",xlinkShow:"xlink:show",xlinkTitle:"xlink:title",xlinkType:"xlink:type",xmlBase:"xml:base",xmlns:0,xmlnsXlink:"xmlns:xlink",xmlLang:"xml:lang",xmlSpace:"xml:space",y:0,y1:0,y2:0,yChannelSelector:"yChannelSelector",z:0,zoomAndPan:"zoomAndPan"},o={Properties:{},DOMAttributeNamespaces:{xlinkActuate:n.xlink,xlinkArcrole:n.xlink,xlinkHref:n.xlink,xlinkRole:n.xlink,xlinkShow:n.xlink,xlinkTitle:n.xlink,xlinkType:n.xlink,xmlBase:n.xml,xmlLang:n.xml,xmlSpace:n.xml},DOMAttributeNames:{}};Object.keys(r).forEach(function(t){o.Properties[t]=0,r[t]&&(o.DOMAttributeNames[t]=r[t])}),t.exports=o},function(t,e,n){"use strict";function r(t){if("selectionStart"in t&&s.hasSelectionCapabilities(t))return{start:t.selectionStart,end:t.selectionEnd};if(window.getSelection){var e=window.getSelection();return{anchorNode:e.anchorNode,anchorOffset:e.anchorOffset,focusNode:e.focusNode,focusOffset:e.focusOffset}}if(document.selection){var n=document.selection.createRange();return{parentElement:n.parentElement(),text:n.text,top:n.boundingTop,left:n.boundingLeft}}}function o(t,e){if(g||null==v||v!==l())return null;var n=r(v);if(!y||!p(y,n)){y=n;var o=c.getPooled(h.select,m,t,e);return o.type="select",o.target=v,i.accumulateTwoPhaseDispatches(o),o}return null}var i=n(42),a=n(49),u=n(35),s=n(143),c=n(54),l=n(149),f=n(68),p=n(119),d=a.canUseDOM&&"documentMode"in document&&document.documentMode<=11,h={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:["topBlur","topContextMenu","topFocus","topKeyDown","topKeyUp","topMouseDown","topMouseUp","topSelectionChange"]}},v=null,m=null,y=null,g=!1,_=!1,b={eventTypes:h,extractEvents:function(t,e,n,r){if(!_)return null;var i=e?u.getNodeFromInstance(e):window;switch(t){case"topFocus":(f(i)||"true"===i.contentEditable)&&(v=i,m=e,y=null);break;case"topBlur":v=null,m=null,y=null;break;case"topMouseDown":g=!0;break;case"topContextMenu":case"topMouseUp":return g=!1,o(n,r);case"topSelectionChange":if(d)break;case"topKeyDown":case"topKeyUp":return o(n,r)}return null},didPutListener:function(t,e,n){"onSelect"===e&&(_=!0)}};t.exports=b},function(t,e,n){"use strict";function r(t){return"."+t._rootNodeID}function o(t){return"button"===t||"input"===t||"select"===t||"textarea"===t}var i=n(36),a=n(139),u=n(42),s=n(35),c=n(153),l=n(154),f=n(54),p=n(155),d=n(156),h=n(71),v=n(159),m=n(160),y=n(161),g=n(72),_=n(162),b=n(8),w=n(157),E=(n(11),{}),C={};["abort","animationEnd","animationIteration","animationStart","blur","canPlay","canPlayThrough","click","contextMenu","copy","cut","doubleClick","drag","dragEnd","dragEnter","dragExit","dragLeave","dragOver","dragStart","drop","durationChange","emptied","encrypted","ended","error","focus","input","invalid","keyDown","keyPress","keyUp","load","loadedData","loadedMetadata","loadStart","mouseDown","mouseMove","mouseOut","mouseOver","mouseUp","paste","pause","play","playing","progress","rateChange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeUpdate","touchCancel","touchEnd","touchMove","touchStart","transitionEnd","volumeChange","waiting","wheel"].forEach(function(t){var e=t[0].toUpperCase()+t.slice(1),n="on"+e,r="top"+e,o={phasedRegistrationNames:{bubbled:n,captured:n+"Capture"},dependencies:[r]};E[t]=o,C[r]=o});var S={},x={eventTypes:E,extractEvents:function(t,e,n,r){var o=C[t];if(!o)return null;var a;switch(t){case"topAbort":case"topCanPlay":case"topCanPlayThrough":case"topDurationChange":case"topEmptied":case"topEncrypted":case"topEnded":case"topError":case"topInput":case"topInvalid":case"topLoad":case"topLoadedData":case"topLoadedMetadata":case"topLoadStart":case"topPause":case"topPlay":case"topPlaying":case"topProgress":case"topRateChange":case"topReset":case"topSeeked":case"topSeeking":case"topStalled":case"topSubmit":case"topSuspend":case"topTimeUpdate":case"topVolumeChange":case"topWaiting":a=f;break;case"topKeyPress":if(0===w(n))return null;case"topKeyDown":case"topKeyUp":a=d;break;case"topBlur":case"topFocus":a=p;break;case"topClick":if(2===n.button)return null;case"topDoubleClick":case"topMouseDown":case"topMouseMove":case"topMouseUp":case"topMouseOut":case"topMouseOver":case"topContextMenu":a=h;break;case"topDrag":case"topDragEnd":case"topDragEnter":case"topDragExit":case"topDragLeave":case"topDragOver":case"topDragStart":case"topDrop":a=v;break;case"topTouchCancel":case"topTouchEnd":case"topTouchMove":case"topTouchStart":a=m;break;case"topAnimationEnd":case"topAnimationIteration":case"topAnimationStart":a=c;break;case"topTransitionEnd":a=y;break;case"topScroll":a=g;break;case"topWheel":a=_;break;case"topCopy":case"topCut":case"topPaste":a=l}a?void 0:i("86",t);var s=a.getPooled(o,e,n,r);return u.accumulateTwoPhaseDispatches(s),s},didPutListener:function(t,e,n){if("onClick"===e&&!o(t._tag)){var i=r(t),u=s.getNodeFromInstance(t);S[i]||(S[i]=a.listen(u,"click",b))}},willDeleteListener:function(t,e){if("onClick"===e&&!o(t._tag)){var n=r(t);S[n].remove(),delete S[n]}}};t.exports=x},function(t,e,n){"use strict";function r(t,e,n,r){return o.call(this,t,e,n,r)}var o=n(54),i={animationName:null,elapsedTime:null,pseudoElement:null};o.augmentClass(r,i),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return o.call(this,t,e,n,r)}var o=n(54),i={clipboardData:function(t){return"clipboardData"in t?t.clipboardData:window.clipboardData}};o.augmentClass(r,i),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return o.call(this,t,e,n,r)}var o=n(72),i={relatedTarget:null};o.augmentClass(r,i),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return o.call(this,t,e,n,r)}var o=n(72),i=n(157),a=n(158),u=n(74),s={key:a,location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:u,charCode:function(t){return"keypress"===t.type?i(t):0},keyCode:function(t){return"keydown"===t.type||"keyup"===t.type?t.keyCode:0},which:function(t){return"keypress"===t.type?i(t):"keydown"===t.type||"keyup"===t.type?t.keyCode:0}};o.augmentClass(r,s),t.exports=r},function(t,e){"use strict";function n(t){var e,n=t.keyCode;return"charCode"in t?(e=t.charCode,0===e&&13===n&&(e=13)):e=n,e>=32||13===e?e:0}t.exports=n},function(t,e,n){"use strict";function r(t){if(t.key){var e=i[t.key]||t.key;if("Unidentified"!==e)return e}if("keypress"===t.type){var n=o(t);return 13===n?"Enter":String.fromCharCode(n)}return"keydown"===t.type||"keyup"===t.type?a[t.keyCode]||"Unidentified":""}var o=n(157),i={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},a={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"};t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return o.call(this,t,e,n,r)}var o=n(71),i={dataTransfer:null};o.augmentClass(r,i),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return o.call(this,t,e,n,r)}var o=n(72),i=n(74),a={touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:i};o.augmentClass(r,a),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return o.call(this,t,e,n,r)}var o=n(54),i={propertyName:null,elapsedTime:null,pseudoElement:null};o.augmentClass(r,i),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return o.call(this,t,e,n,r)}var o=n(71),i={deltaX:function(t){return"deltaX"in t?t.deltaX:"wheelDeltaX"in t?-t.wheelDeltaX:0},deltaY:function(t){return"deltaY"in t?t.deltaY:"wheelDeltaY"in t?-t.wheelDeltaY:"wheelDelta"in t?-t.wheelDelta:0},deltaZ:null,deltaMode:null};o.augmentClass(r,i),t.exports=r},function(t,e,n){"use strict";function r(t,e){for(var n=Math.min(t.length,e.length),r=0;r.":"function"==typeof e?" Instead of passing a class like Foo, pass React.createElement(Foo) or .":null!=e&&void 0!==e.props?" This may be caused by unintentionally loading two independent copies of React.":"");var a,u=m.createElement(U,{child:e});if(t){var s=E.get(t);a=s._processChildContext(s._context)}else a=T;var l=p(n);if(l){var f=l._currentElement,h=f.props.child;if(M(h,e)){var v=l._renderedComponent.getPublicInstance(),y=r&&function(){r.call(v)};return B._updateRootComponent(l,u,a,n,y),v}B.unmountComponentAtNode(n)}var g=o(n),_=g&&!!i(g),b=c(n),w=_&&!l&&!b,C=B._renderNewRootComponent(u,n,w,a)._renderedComponent.getPublicInstance();return r&&r.call(C),C},render:function(t,e,n){return B._renderSubtreeIntoContainer(null,t,e,n)},unmountComponentAtNode:function(t){l(t)?void 0:d("40");var e=p(t);if(!e){c(t),1===t.nodeType&&t.hasAttribute(R);return!1}return delete L[e._instance.rootID],P.batchedUpdates(s,e,t,!1),!0},_mountImageIntoNode:function(t,e,n,i,a){if(l(e)?void 0:d("41"),i){var u=o(e);if(C.canReuseMarkup(t,u))return void g.precacheNode(n,u);var s=u.getAttribute(C.CHECKSUM_ATTR_NAME);u.removeAttribute(C.CHECKSUM_ATTR_NAME);var c=u.outerHTML;u.setAttribute(C.CHECKSUM_ATTR_NAME,s);var f=t,p=r(f,c),v=" (client) "+f.substring(p-20,p+20)+"\n (server) "+c.substring(p-20,p+20);e.nodeType===N?d("42",v):void 0}if(e.nodeType===N?d("43"):void 0,a.useCreateElement){for(;e.lastChild;)e.removeChild(e.lastChild);h.insertTreeBefore(e,t,null)}else k(e,t),g.precacheNode(n,e.firstChild)}};t.exports=B},function(t,e,n){"use strict";function r(t,e){var n={_topLevelWrapper:t,_idCounter:1,_ownerDocument:e?e.nodeType===o?e:e.ownerDocument:null,_node:e,_tag:e?e.nodeName.toLowerCase():null,_namespaceURI:e?e.namespaceURI:null};return n}var o=(n(133),9);t.exports=r},function(t,e){"use strict";var n={useCreateElement:!0,useFiber:!1};t.exports=n},function(t,e,n){"use strict";var r=n(167),o=/\/?>/,i=/^<\!\-\-/,a={CHECKSUM_ATTR_NAME:"data-react-checksum",addChecksumToMarkup:function(t){var e=r(t);return i.test(t)?t:t.replace(o," "+a.CHECKSUM_ATTR_NAME+'="'+e+'"$&')},canReuseMarkup:function(t,e){var n=e.getAttribute(a.CHECKSUM_ATTR_NAME);n=n&&parseInt(n,10);var o=r(t);return o===n}};t.exports=a},function(t,e){"use strict";function n(t){for(var e=1,n=0,o=0,i=t.length,a=i&-4;o3&&void 0!==arguments[3]?arguments[3]:{},c=Boolean(t),p=t||S,h=void 0;h="function"==typeof e?e:e?(0,y.default)(e):x;var m=n||P,g=r.pure,_=void 0===g||g,b=r.withRef,E=void 0!==b&&b,k=_&&m!==P,M=O++;return function(t){function e(t,e,n){var r=m(t,e,n);return r}var n="Connect("+u(t)+")",r=function(r){function u(t,e){o(this,u);var a=i(this,r.call(this,t,e));a.version=M,a.store=t.store||e.store,(0,C.default)(a.store,'Could not find "store" in either the context or '+('props of "'+n+'". ')+"Either wrap the root component in a , "+('or explicitly pass "store" as a prop to "'+n+'".'));var s=a.store.getState();return a.state={storeState:s},a.clearCache(),a}return a(u,r),u.prototype.shouldComponentUpdate=function(){return!_||this.haveOwnPropsChanged||this.hasStoreStateChanged},u.prototype.computeStateProps=function(t,e){if(!this.finalMapStateToProps)return this.configureFinalMapState(t,e);var n=t.getState(),r=this.doStatePropsDependOnOwnProps?this.finalMapStateToProps(n,e):this.finalMapStateToProps(n);return r},u.prototype.configureFinalMapState=function(t,e){var n=p(t.getState(),e),r="function"==typeof n;return this.finalMapStateToProps=r?n:p,this.doStatePropsDependOnOwnProps=1!==this.finalMapStateToProps.length,r?this.computeStateProps(t,e):n},u.prototype.computeDispatchProps=function(t,e){if(!this.finalMapDispatchToProps)return this.configureFinalMapDispatch(t,e);var n=t.dispatch,r=this.doDispatchPropsDependOnOwnProps?this.finalMapDispatchToProps(n,e):this.finalMapDispatchToProps(n);return r},u.prototype.configureFinalMapDispatch=function(t,e){var n=h(t.dispatch,e),r="function"==typeof n;return this.finalMapDispatchToProps=r?n:h,this.doDispatchPropsDependOnOwnProps=1!==this.finalMapDispatchToProps.length,r?this.computeDispatchProps(t,e):n},u.prototype.updateStatePropsIfNeeded=function(){var t=this.computeStateProps(this.store,this.props);return(!this.stateProps||!(0,v.default)(t,this.stateProps))&&(this.stateProps=t,!0)},u.prototype.updateDispatchPropsIfNeeded=function(){var t=this.computeDispatchProps(this.store,this.props);return(!this.dispatchProps||!(0,v.default)(t,this.dispatchProps))&&(this.dispatchProps=t,!0)},u.prototype.updateMergedPropsIfNeeded=function(){var t=e(this.stateProps,this.dispatchProps,this.props);return!(this.mergedProps&&k&&(0,v.default)(t,this.mergedProps))&&(this.mergedProps=t,!0)},u.prototype.isSubscribed=function(){return"function"==typeof this.unsubscribe},u.prototype.trySubscribe=function(){c&&!this.unsubscribe&&(this.unsubscribe=this.store.subscribe(this.handleChange.bind(this)),this.handleChange())},u.prototype.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null)},u.prototype.componentDidMount=function(){this.trySubscribe()},u.prototype.componentWillReceiveProps=function(t){_&&(0,v.default)(t,this.props)||(this.haveOwnPropsChanged=!0)},u.prototype.componentWillUnmount=function(){this.tryUnsubscribe(),this.clearCache()},u.prototype.clearCache=function(){this.dispatchProps=null,this.stateProps=null,this.mergedProps=null,this.haveOwnPropsChanged=!0,this.hasStoreStateChanged=!0,this.haveStatePropsBeenPrecalculated=!1,this.statePropsPrecalculationError=null,this.renderedElement=null,this.finalMapDispatchToProps=null,this.finalMapStateToProps=null},u.prototype.handleChange=function(){if(this.unsubscribe){var t=this.store.getState(),e=this.state.storeState;if(!_||e!==t){if(_&&!this.doStatePropsDependOnOwnProps){var n=s(this.updateStatePropsIfNeeded,this);if(!n)return;n===T&&(this.statePropsPrecalculationError=T.value),this.haveStatePropsBeenPrecalculated=!0}this.hasStoreStateChanged=!0,this.setState({storeState:t})}}},u.prototype.getWrappedInstance=function(){return(0,C.default)(E,"To access the wrapped instance, you need to specify { withRef: true } as the fourth argument of the connect() call."),this.refs.wrappedInstance},u.prototype.render=function(){var e=this.haveOwnPropsChanged,n=this.hasStoreStateChanged,r=this.haveStatePropsBeenPrecalculated,o=this.statePropsPrecalculationError,i=this.renderedElement;if(this.haveOwnPropsChanged=!1,this.hasStoreStateChanged=!1,this.haveStatePropsBeenPrecalculated=!1,this.statePropsPrecalculationError=null,o)throw o;var a=!0,u=!0;_&&i&&(a=n||e&&this.doStatePropsDependOnOwnProps,u=e&&this.doDispatchPropsDependOnOwnProps);var s=!1,c=!1;r?s=!0:a&&(s=this.updateStatePropsIfNeeded()),u&&(c=this.updateDispatchPropsIfNeeded());var p=!0;return p=!!(s||c||e)&&this.updateMergedPropsIfNeeded(),!p&&i?i:(E?this.renderedElement=(0,f.createElement)(t,l({},this.mergedProps,{ref:"wrappedInstance"})):this.renderedElement=(0,f.createElement)(t,this.mergedProps),this.renderedElement)},u}(f.Component);return r.displayName=n,r.WrappedComponent=t,r.contextTypes={store:d.default},r.propTypes={store:d.default},(0,w.default)(r,t)}}e.__esModule=!0;var l=Object.assign||function(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments[1];if(s)throw s;for(var r=!1,i={},a=0;a1&&void 0!==arguments[1]?arguments[1]:i.default.Map,n=Object.keys(t);return function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e(),o=arguments[1];return r.withMutations(function(e){n.forEach(function(n){var r=t[n],i=e.get(n),u=r(i,o);(0,a.validateNextState)(u,n,o),e.set(n,u)})})}},t.exports=e.default},function(t,e,n){!function(e,n){t.exports=n()}(this,function(){"use strict";function t(t,e){e&&(t.prototype=Object.create(e.prototype)),t.prototype.constructor=t}function e(t){return i(t)?t:k(t)}function n(t){return a(t)?t:M(t)}function r(t){return u(t)?t:I(t)}function o(t){return i(t)&&!s(t)?t:R(t)}function i(t){return!(!t||!t[cn])}function a(t){return!(!t||!t[ln])}function u(t){return!(!t||!t[fn])}function s(t){return a(t)||u(t)}function c(t){return!(!t||!t[pn])}function l(t){return t.value=!1,t}function f(t){t&&(t.value=!0)}function p(){}function d(t,e){e=e||0;for(var n=Math.max(0,t.length-e),r=new Array(n),o=0;o>>0;if(""+n!==e||4294967295===n)return NaN;e=n}return e<0?h(t)+e:e}function m(){return!0}function y(t,e,n){return(0===t||void 0!==n&&t<=-n)&&(void 0===e||void 0!==n&&e>=n)}function g(t,e){return b(t,e,0)}function _(t,e){return b(t,e,e)}function b(t,e,n){return void 0===t?n:t<0?Math.max(0,e+t):void 0===e?t:Math.min(e,t)}function w(t){this.next=t}function E(t,e,n,r){var o=0===t?e:1===t?n:[e,n];return r?r.value=o:r={value:o,done:!1},r}function C(){return{value:void 0,done:!0}}function S(t){return!!T(t)}function x(t){return t&&"function"==typeof t.next}function P(t){var e=T(t);return e&&e.call(t)}function T(t){var e=t&&(Cn&&t[Cn]||t[Sn]);if("function"==typeof e)return e}function O(t){return t&&"number"==typeof t.length}function k(t){return null===t||void 0===t?U():i(t)?t.toSeq():z(t)}function M(t){return null===t||void 0===t?U().toKeyedSeq():i(t)?a(t)?t.toSeq():t.fromEntrySeq():B(t)}function I(t){return null===t||void 0===t?U():i(t)?a(t)?t.entrySeq():t.toIndexedSeq():F(t)}function R(t){return(null===t||void 0===t?U():i(t)?a(t)?t.entrySeq():t:F(t)).toSetSeq()}function A(t){this._array=t,this.size=t.length}function N(t){var e=Object.keys(t);this._object=t,this._keys=e,this.size=e.length}function D(t){this._iterable=t,this.size=t.length||t.size}function L(t){this._iterator=t,this._iteratorCache=[]}function j(t){return!(!t||!t[Pn])}function U(){return Tn||(Tn=new A([]))}function B(t){var e=Array.isArray(t)?new A(t).fromEntrySeq():x(t)?new L(t).fromEntrySeq():S(t)?new D(t).fromEntrySeq():"object"==typeof t?new N(t):void 0;if(!e)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+t);return e}function F(t){var e=q(t);if(!e)throw new TypeError("Expected Array or iterable object of values: "+t);return e}function z(t){var e=q(t)||"object"==typeof t&&new N(t);if(!e)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+t);return e}function q(t){return O(t)?new A(t):x(t)?new L(t):S(t)?new D(t):void 0}function V(t,e,n,r){var o=t._cache;if(o){for(var i=o.length-1,a=0;a<=i;a++){var u=o[n?i-a:a];if(e(u[1],r?u[0]:a,t)===!1)return a+1}return a}return t.__iterateUncached(e,n)}function Y(t,e,n,r){var o=t._cache;if(o){var i=o.length-1,a=0;return new w(function(){var t=o[n?i-a:a];return a++>i?C():E(e,r?t[0]:a-1,t[1])})}return t.__iteratorUncached(e,n)}function W(t,e){return e?K(e,t,"",{"":t}):H(t)}function K(t,e,n,r){return Array.isArray(e)?t.call(r,n,I(e).map(function(n,r){return K(t,n,r,e)})):J(e)?t.call(r,n,M(e).map(function(n,r){return K(t,n,r,e)})):e}function H(t){return Array.isArray(t)?I(t).map(H).toList():J(t)?M(t).map(H).toMap():t}function J(t){return t&&(t.constructor===Object||void 0===t.constructor)}function X(t,e){if(t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1;if("function"==typeof t.valueOf&&"function"==typeof e.valueOf){if(t=t.valueOf(),e=e.valueOf(),t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1}return!("function"!=typeof t.equals||"function"!=typeof e.equals||!t.equals(e))}function Q(t,e){if(t===e)return!0;if(!i(e)||void 0!==t.size&&void 0!==e.size&&t.size!==e.size||void 0!==t.__hash&&void 0!==e.__hash&&t.__hash!==e.__hash||a(t)!==a(e)||u(t)!==u(e)||c(t)!==c(e))return!1;if(0===t.size&&0===e.size)return!0;var n=!s(t);if(c(t)){var r=t.entries();return e.every(function(t,e){var o=r.next().value;return o&&X(o[1],t)&&(n||X(o[0],e))})&&r.next().done}var o=!1;if(void 0===t.size)if(void 0===e.size)"function"==typeof t.cacheResult&&t.cacheResult();else{o=!0;var l=t;t=e,e=l}var f=!0,p=e.__iterate(function(e,r){if(n?!t.has(e):o?!X(e,t.get(r,yn)):!X(t.get(r,yn),e))return f=!1,!1});return f&&t.size===p}function $(t,e){if(!(this instanceof $))return new $(t,e);if(this._value=t,this.size=void 0===e?1/0:Math.max(0,e),0===this.size){if(On)return On;On=this}}function G(t,e){if(!t)throw new Error(e)}function Z(t,e,n){if(!(this instanceof Z))return new Z(t,e,n);if(G(0!==n,"Cannot step a Range by 0"),t=t||0,void 0===e&&(e=1/0),n=void 0===n?1:Math.abs(n),e>>1&1073741824|3221225471&t}function it(t){if(t===!1||null===t||void 0===t)return 0;if("function"==typeof t.valueOf&&(t=t.valueOf(),t===!1||null===t||void 0===t))return 0;if(t===!0)return 1;var e=typeof t;if("number"===e){if(t!==t||t===1/0)return 0;var n=0|t;for(n!==t&&(n^=4294967295*t);t>4294967295;)t/=4294967295,n^=t;return ot(n)}if("string"===e)return t.length>jn?at(t):ut(t);if("function"==typeof t.hashCode)return t.hashCode();if("object"===e)return st(t);if("function"==typeof t.toString)return ut(t.toString());throw new Error("Value type "+e+" cannot be hashed.")}function at(t){var e=Fn[t];return void 0===e&&(e=ut(t),Bn===Un&&(Bn=0,Fn={}),Bn++,Fn[t]=e),e}function ut(t){for(var e=0,n=0;n0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}function lt(t){G(t!==1/0,"Cannot perform this action with an infinite size.")}function ft(t){return null===t||void 0===t?Et():pt(t)&&!c(t)?t:Et().withMutations(function(e){var r=n(t);lt(r.size),r.forEach(function(t,n){return e.set(n,t)})})}function pt(t){return!(!t||!t[zn])}function dt(t,e){this.ownerID=t,this.entries=e}function ht(t,e,n){this.ownerID=t,this.bitmap=e,this.nodes=n}function vt(t,e,n){this.ownerID=t,this.count=e,this.nodes=n}function mt(t,e,n){this.ownerID=t,this.keyHash=e,this.entries=n}function yt(t,e,n){this.ownerID=t,this.keyHash=e,this.entry=n}function gt(t,e,n){this._type=e,this._reverse=n,this._stack=t._root&&bt(t._root)}function _t(t,e){return E(t,e[0],e[1])}function bt(t,e){return{node:t,index:0,__prev:e}}function wt(t,e,n,r){var o=Object.create(qn);return o.size=t,o._root=e,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function Et(){return Vn||(Vn=wt(0))}function Ct(t,e,n){var r,o;if(t._root){var i=l(gn),a=l(_n);if(r=St(t._root,t.__ownerID,0,void 0,e,n,i,a),!a.value)return t;o=t.size+(i.value?n===yn?-1:1:0)}else{if(n===yn)return t;o=1,r=new dt(t.__ownerID,[[e,n]])}return t.__ownerID?(t.size=o,t._root=r,t.__hash=void 0,t.__altered=!0,t):r?wt(o,r):Et()}function St(t,e,n,r,o,i,a,u){return t?t.update(e,n,r,o,i,a,u):i===yn?t:(f(u),f(a),new yt(e,r,[o,i]))}function xt(t){return t.constructor===yt||t.constructor===mt}function Pt(t,e,n,r,o){if(t.keyHash===r)return new mt(e,r,[t.entry,o]);var i,a=(0===n?t.keyHash:t.keyHash>>>n)&mn,u=(0===n?r:r>>>n)&mn,s=a===u?[Pt(t,e,n+hn,r,o)]:(i=new yt(e,r,o),a>>=1)a[u]=1&n?e[i++]:void 0;return a[r]=o,new vt(t,i+1,a)}function Mt(t,e,r){for(var o=[],a=0;a>1&1431655765,t=(858993459&t)+(t>>2&858993459),t=t+(t>>4)&252645135,t+=t>>8,t+=t>>16,127&t}function Lt(t,e,n,r){var o=r?t:d(t);return o[e]=n,o}function jt(t,e,n,r){var o=t.length+1;if(r&&e+1===o)return t[e]=n,t;for(var i=new Array(o),a=0,u=0;u0&&oi?0:i-n,c=a-n;return c>vn&&(c=vn),function(){if(o===c)return Qn;var t=e?--c:o++;return r&&r[t]}}function o(t,r,o){var u,s=t&&t.array,c=o>i?0:i-o>>r,l=(a-o>>r)+1;return l>vn&&(l=vn),function(){for(;;){if(u){var t=u();if(t!==Qn)return t;u=null}if(c===l)return Qn;var i=e?--l:c++;u=n(s&&s[i],r-hn,o+(i<=t.size||e<0)return t.withMutations(function(t){e<0?Xt(t,e).set(0,n):Xt(t,0,e+1).set(e,n)});e+=t._origin;var r=t._tail,o=t._root,i=l(_n);return e>=$t(t._capacity)?r=Kt(r,t.__ownerID,0,e,n,i):o=Kt(o,t.__ownerID,t._level,e,n,i),i.value?t.__ownerID?(t._root=o,t._tail=r,t.__hash=void 0,t.__altered=!0,t):Vt(t._origin,t._capacity,t._level,o,r):t}function Kt(t,e,n,r,o,i){var a=r>>>n&mn,u=t&&a0){var c=t&&t.array[a],l=Kt(c,e,n-hn,r,o,i);return l===c?t:(s=Ht(t,e),s.array[a]=l,s)}return u&&t.array[a]===o?t:(f(i),s=Ht(t,e),void 0===o&&a===s.array.length-1?s.array.pop():s.array[a]=o,s)}function Ht(t,e){return e&&t&&e===t.ownerID?t:new zt(t?t.array.slice():[],e)}function Jt(t,e){if(e>=$t(t._capacity))return t._tail;if(e<1<0;)n=n.array[e>>>r&mn],r-=hn;return n}}function Xt(t,e,n){void 0!==e&&(e|=0),void 0!==n&&(n|=0);var r=t.__ownerID||new p,o=t._origin,i=t._capacity,a=o+e,u=void 0===n?i:n<0?i+n:o+n;if(a===o&&u===i)return t;if(a>=u)return t.clear();for(var s=t._level,c=t._root,l=0;a+l<0;)c=new zt(c&&c.array.length?[void 0,c]:[],r),s+=hn,l+=1<=1<f?new zt([],r):h;if(h&&d>f&&ahn;y-=hn){var g=f>>>y&mn;m=m.array[g]=Ht(m.array[g],r)}m.array[f>>>hn&mn]=h}if(u=d)a-=d,u-=d,s=hn,c=null,v=v&&v.removeBefore(r,0,a);else if(a>o||d>>s&mn;if(_!==d>>>s&mn)break;_&&(l+=(1<o&&(c=c.removeBefore(r,s,a-l)),c&&da&&(a=c.size),i(s)||(c=c.map(function(t){return W(t)})),o.push(c)}return a>t.size&&(t=t.setSize(a)),At(t,e,o)}function $t(t){return t>>hn<=vn&&a.size>=2*i.size?(o=a.filter(function(t,e){return void 0!==t&&u!==e}),r=o.toKeyedSeq().map(function(t){return t[0]}).flip().toMap(),t.__ownerID&&(r.__ownerID=o.__ownerID=t.__ownerID)):(r=i.remove(e),o=u===a.size-1?a.pop():a.set(u,void 0))}else if(s){if(n===a.get(u)[1])return t;r=i,o=a.set(u,[e,n])}else r=i.set(e,a.size),o=a.set(a.size,[e,n]);return t.__ownerID?(t.size=r.size,t._map=r,t._list=o,t.__hash=void 0,t):te(r,o)}function re(t,e){this._iter=t,this._useKeys=e,this.size=t.size}function oe(t){this._iter=t,this.size=t.size}function ie(t){this._iter=t,this.size=t.size}function ae(t){this._iter=t,this.size=t.size}function ue(t){var e=Oe(t);return e._iter=t,e.size=t.size,e.flip=function(){return t},e.reverse=function(){var e=t.reverse.apply(this);return e.flip=function(){return t.reverse()},e},e.has=function(e){return t.includes(e)},e.includes=function(e){return t.has(e)},e.cacheResult=ke,e.__iterateUncached=function(e,n){ -var r=this;return t.__iterate(function(t,n){return e(n,t,r)!==!1},n)},e.__iteratorUncached=function(e,n){if(e===En){var r=t.__iterator(e,n);return new w(function(){var t=r.next();if(!t.done){var e=t.value[0];t.value[0]=t.value[1],t.value[1]=e}return t})}return t.__iterator(e===wn?bn:wn,n)},e}function se(t,e,n){var r=Oe(t);return r.size=t.size,r.has=function(e){return t.has(e)},r.get=function(r,o){var i=t.get(r,yn);return i===yn?o:e.call(n,i,r,t)},r.__iterateUncached=function(r,o){var i=this;return t.__iterate(function(t,o,a){return r(e.call(n,t,o,a),o,i)!==!1},o)},r.__iteratorUncached=function(r,o){var i=t.__iterator(En,o);return new w(function(){var o=i.next();if(o.done)return o;var a=o.value,u=a[0];return E(r,u,e.call(n,a[1],u,t),o)})},r}function ce(t,e){var n=Oe(t);return n._iter=t,n.size=t.size,n.reverse=function(){return t},t.flip&&(n.flip=function(){var e=ue(t);return e.reverse=function(){return t.flip()},e}),n.get=function(n,r){return t.get(e?n:-1-n,r)},n.has=function(n){return t.has(e?n:-1-n)},n.includes=function(e){return t.includes(e)},n.cacheResult=ke,n.__iterate=function(e,n){var r=this;return t.__iterate(function(t,n){return e(t,n,r)},!n)},n.__iterator=function(e,n){return t.__iterator(e,!n)},n}function le(t,e,n,r){var o=Oe(t);return r&&(o.has=function(r){var o=t.get(r,yn);return o!==yn&&!!e.call(n,o,r,t)},o.get=function(r,o){var i=t.get(r,yn);return i!==yn&&e.call(n,i,r,t)?i:o}),o.__iterateUncached=function(o,i){var a=this,u=0;return t.__iterate(function(t,i,s){if(e.call(n,t,i,s))return u++,o(t,r?i:u-1,a)},i),u},o.__iteratorUncached=function(o,i){var a=t.__iterator(En,i),u=0;return new w(function(){for(;;){var i=a.next();if(i.done)return i;var s=i.value,c=s[0],l=s[1];if(e.call(n,l,c,t))return E(o,r?c:u++,l,i)}})},o}function fe(t,e,n){var r=ft().asMutable();return t.__iterate(function(o,i){r.update(e.call(n,o,i,t),0,function(t){return t+1})}),r.asImmutable()}function pe(t,e,n){var r=a(t),o=(c(t)?Gt():ft()).asMutable();t.__iterate(function(i,a){o.update(e.call(n,i,a,t),function(t){return t=t||[],t.push(r?[a,i]:i),t})});var i=Te(t);return o.map(function(e){return Se(t,i(e))})}function de(t,e,n,r){var o=t.size;if(void 0!==e&&(e|=0),void 0!==n&&(n===1/0?n=o:n|=0),y(e,n,o))return t;var i=g(e,o),a=_(n,o);if(i!==i||a!==a)return de(t.toSeq().cacheResult(),e,n,r);var u,s=a-i;s===s&&(u=s<0?0:s);var c=Oe(t);return c.size=0===u?u:t.size&&u||void 0,!r&&j(t)&&u>=0&&(c.get=function(e,n){return e=v(this,e),e>=0&&eu)return C();var t=o.next();return r||e===wn?t:e===bn?E(e,s-1,void 0,t):E(e,s-1,t.value[1],t)})},c}function he(t,e,n){var r=Oe(t);return r.__iterateUncached=function(r,o){var i=this;if(o)return this.cacheResult().__iterate(r,o);var a=0;return t.__iterate(function(t,o,u){return e.call(n,t,o,u)&&++a&&r(t,o,i)}),a},r.__iteratorUncached=function(r,o){var i=this;if(o)return this.cacheResult().__iterator(r,o);var a=t.__iterator(En,o),u=!0;return new w(function(){if(!u)return C();var t=a.next();if(t.done)return t;var o=t.value,s=o[0],c=o[1];return e.call(n,c,s,i)?r===En?t:E(r,s,c,t):(u=!1,C())})},r}function ve(t,e,n,r){var o=Oe(t);return o.__iterateUncached=function(o,i){var a=this;if(i)return this.cacheResult().__iterate(o,i);var u=!0,s=0;return t.__iterate(function(t,i,c){if(!u||!(u=e.call(n,t,i,c)))return s++,o(t,r?i:s-1,a)}),s},o.__iteratorUncached=function(o,i){var a=this;if(i)return this.cacheResult().__iterator(o,i);var u=t.__iterator(En,i),s=!0,c=0;return new w(function(){var t,i,l;do{if(t=u.next(),t.done)return r||o===wn?t:o===bn?E(o,c++,void 0,t):E(o,c++,t.value[1],t);var f=t.value;i=f[0],l=f[1],s&&(s=e.call(n,l,i,a))}while(s);return o===En?t:E(o,i,l,t)})},o}function me(t,e){var r=a(t),o=[t].concat(e).map(function(t){return i(t)?r&&(t=n(t)):t=r?B(t):F(Array.isArray(t)?t:[t]),t}).filter(function(t){return 0!==t.size});if(0===o.length)return t;if(1===o.length){var s=o[0];if(s===t||r&&a(s)||u(t)&&u(s))return s}var c=new A(o);return r?c=c.toKeyedSeq():u(t)||(c=c.toSetSeq()),c=c.flatten(!0),c.size=o.reduce(function(t,e){if(void 0!==t){var n=e.size;if(void 0!==n)return t+n}},0),c}function ye(t,e,n){var r=Oe(t);return r.__iterateUncached=function(r,o){function a(t,c){var l=this;t.__iterate(function(t,o){return(!e||c0}function Ce(t,n,r){var o=Oe(t);return o.size=new A(r).map(function(t){return t.size}).min(),o.__iterate=function(t,e){for(var n,r=this.__iterator(wn,e),o=0;!(n=r.next()).done&&t(n.value,o++,this)!==!1;);return o},o.__iteratorUncached=function(t,o){var i=r.map(function(t){return t=e(t),P(o?t.reverse():t)}),a=0,u=!1;return new w(function(){var e;return u||(e=i.map(function(t){return t.next()}),u=e.some(function(t){return t.done})),u?C():E(t,a++,n.apply(null,e.map(function(t){return t.value})))})},o}function Se(t,e){return j(t)?e:t.constructor(e)}function xe(t){if(t!==Object(t))throw new TypeError("Expected [K, V] tuple: "+t)}function Pe(t){return lt(t.size),h(t)}function Te(t){return a(t)?n:u(t)?r:o}function Oe(t){return Object.create((a(t)?M:u(t)?I:R).prototype)}function ke(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):k.prototype.cacheResult.call(this)}function Me(t,e){return t>e?1:te?-1:0}function on(t){if(t.size===1/0)return 0;var e=c(t),n=a(t),r=e?1:0,o=t.__iterate(n?e?function(t,e){r=31*r+un(it(t),it(e))|0}:function(t,e){r=r+un(it(t),it(e))|0}:e?function(t){r=31*r+it(t)|0}:function(t){r=r+it(t)|0});return an(o,r)}function an(t,e){return e=In(e,3432918353),e=In(e<<15|e>>>-15,461845907),e=In(e<<13|e>>>-13,5),e=(e+3864292196|0)^t,e=In(e^e>>>16,2246822507),e=In(e^e>>>13,3266489909),e=ot(e^e>>>16)}function un(t,e){return t^e+2654435769+(t<<6)+(t>>2)|0}var sn=Array.prototype.slice;t(n,e),t(r,e),t(o,e),e.isIterable=i,e.isKeyed=a,e.isIndexed=u,e.isAssociative=s,e.isOrdered=c,e.Keyed=n,e.Indexed=r,e.Set=o;var cn="@@__IMMUTABLE_ITERABLE__@@",ln="@@__IMMUTABLE_KEYED__@@",fn="@@__IMMUTABLE_INDEXED__@@",pn="@@__IMMUTABLE_ORDERED__@@",dn="delete",hn=5,vn=1<r?C():E(t,o,n[e?r-o++:o++])})},t(N,M),N.prototype.get=function(t,e){return void 0===e||this.has(t)?this._object[t]:e},N.prototype.has=function(t){return this._object.hasOwnProperty(t)},N.prototype.__iterate=function(t,e){for(var n=this._object,r=this._keys,o=r.length-1,i=0;i<=o;i++){var a=r[e?o-i:i];if(t(n[a],a,this)===!1)return i+1}return i},N.prototype.__iterator=function(t,e){var n=this._object,r=this._keys,o=r.length-1,i=0;return new w(function(){var a=r[e?o-i:i];return i++>o?C():E(t,a,n[a])})},N.prototype[pn]=!0,t(D,I),D.prototype.__iterateUncached=function(t,e){if(e)return this.cacheResult().__iterate(t,e);var n=this._iterable,r=P(n),o=0;if(x(r))for(var i;!(i=r.next()).done&&t(i.value,o++,this)!==!1;);return o},D.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=this._iterable,r=P(n);if(!x(r))return new w(C);var o=0;return new w(function(){var e=r.next();return e.done?e:E(t,o++,e.value)})},t(L,I),L.prototype.__iterateUncached=function(t,e){if(e)return this.cacheResult().__iterate(t,e);for(var n=this._iterator,r=this._iteratorCache,o=0;o=r.length){var e=n.next();if(e.done)return e;r[o]=e.value}return E(t,o,r[o++])})};var Tn;t($,I),$.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},$.prototype.get=function(t,e){return this.has(t)?this._value:e},$.prototype.includes=function(t){return X(this._value,t)},$.prototype.slice=function(t,e){var n=this.size;return y(t,e,n)?this:new $(this._value,_(e,n)-g(t,n))},$.prototype.reverse=function(){return this},$.prototype.indexOf=function(t){return X(this._value,t)?0:-1},$.prototype.lastIndexOf=function(t){return X(this._value,t)?this.size:-1},$.prototype.__iterate=function(t,e){for(var n=0;n=0&&e=0&&nn?C():E(t,i++,a)})},Z.prototype.equals=function(t){return t instanceof Z?this._start===t._start&&this._end===t._end&&this._step===t._step:Q(this,t)};var kn;t(tt,e),t(et,tt),t(nt,tt),t(rt,tt),tt.Keyed=et,tt.Indexed=nt,tt.Set=rt;var Mn,In="function"==typeof Math.imul&&Math.imul(4294967295,2)===-2?Math.imul:function(t,e){t|=0,e|=0;var n=65535&t,r=65535&e;return n*r+((t>>>16)*r+n*(e>>>16)<<16>>>0)|0},Rn=Object.isExtensible,An=function(){try{return Object.defineProperty({},"@",{}),!0}catch(t){return!1}}(),Nn="function"==typeof WeakMap;Nn&&(Mn=new WeakMap);var Dn=0,Ln="__immutablehash__";"function"==typeof Symbol&&(Ln=Symbol(Ln));var jn=16,Un=255,Bn=0,Fn={};t(ft,et),ft.of=function(){var t=sn.call(arguments,0);return Et().withMutations(function(e){for(var n=0;n=t.length)throw new Error("Missing value for key: "+t[n]);e.set(t[n],t[n+1])}})},ft.prototype.toString=function(){return this.__toString("Map {","}")},ft.prototype.get=function(t,e){return this._root?this._root.get(0,void 0,t,e):e},ft.prototype.set=function(t,e){return Ct(this,t,e)},ft.prototype.setIn=function(t,e){return this.updateIn(t,yn,function(){return e})},ft.prototype.remove=function(t){return Ct(this,t,yn)},ft.prototype.deleteIn=function(t){return this.updateIn(t,function(){return yn})},ft.prototype.update=function(t,e,n){return 1===arguments.length?t(this):this.updateIn([t],e,n)},ft.prototype.updateIn=function(t,e,n){n||(n=e,e=void 0);var r=Nt(this,Ie(t),e,n);return r===yn?void 0:r},ft.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Et()},ft.prototype.merge=function(){return Mt(this,void 0,arguments)},ft.prototype.mergeWith=function(t){var e=sn.call(arguments,1);return Mt(this,t,e)},ft.prototype.mergeIn=function(t){var e=sn.call(arguments,1);return this.updateIn(t,Et(),function(t){return"function"==typeof t.merge?t.merge.apply(t,e):e[e.length-1]})},ft.prototype.mergeDeep=function(){return Mt(this,It,arguments)},ft.prototype.mergeDeepWith=function(t){var e=sn.call(arguments,1);return Mt(this,Rt(t),e)},ft.prototype.mergeDeepIn=function(t){var e=sn.call(arguments,1);return this.updateIn(t,Et(),function(t){return"function"==typeof t.mergeDeep?t.mergeDeep.apply(t,e):e[e.length-1]})},ft.prototype.sort=function(t){return Gt(be(this,t))},ft.prototype.sortBy=function(t,e){return Gt(be(this,e,t))},ft.prototype.withMutations=function(t){var e=this.asMutable();return t(e),e.wasAltered()?e.__ensureOwner(this.__ownerID):this},ft.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new p)},ft.prototype.asImmutable=function(){return this.__ensureOwner()},ft.prototype.wasAltered=function(){return this.__altered},ft.prototype.__iterator=function(t,e){return new gt(this,t,e)},ft.prototype.__iterate=function(t,e){var n=this,r=0;return this._root&&this._root.iterate(function(e){return r++,t(e[1],e[0],n)},e),r},ft.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?wt(this.size,this._root,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},ft.isMap=pt;var zn="@@__IMMUTABLE_MAP__@@",qn=ft.prototype;qn[zn]=!0,qn[dn]=qn.remove,qn.removeIn=qn.deleteIn,dt.prototype.get=function(t,e,n,r){for(var o=this.entries,i=0,a=o.length;i=Yn)return Tt(t,s,r,o);var h=t&&t===this.ownerID,v=h?s:d(s);return p?u?c===l-1?v.pop():v[c]=v.pop():v[c]=[r,o]:v.push([r,o]),h?(this.entries=v,this):new dt(t,v)}},ht.prototype.get=function(t,e,n,r){void 0===e&&(e=it(n));var o=1<<((0===t?e:e>>>t)&mn),i=this.bitmap;return 0===(i&o)?r:this.nodes[Dt(i&o-1)].get(t+hn,e,n,r)},ht.prototype.update=function(t,e,n,r,o,i,a){void 0===n&&(n=it(r));var u=(0===e?n:n>>>e)&mn,s=1<=Wn)return kt(t,p,c,u,h);if(l&&!h&&2===p.length&&xt(p[1^f]))return p[1^f];if(l&&h&&1===p.length&&xt(h))return h;var v=t&&t===this.ownerID,m=l?h?c:c^s:c|s,y=l?h?Lt(p,f,h,v):Ut(p,f,v):jt(p,f,h,v);return v?(this.bitmap=m,this.nodes=y,this):new ht(t,m,y)},vt.prototype.get=function(t,e,n,r){void 0===e&&(e=it(n));var o=(0===t?e:e>>>t)&mn,i=this.nodes[o];return i?i.get(t+hn,e,n,r):r},vt.prototype.update=function(t,e,n,r,o,i,a){void 0===n&&(n=it(r));var u=(0===e?n:n>>>e)&mn,s=o===yn,c=this.nodes,l=c[u];if(s&&!l)return this;var f=St(l,t,e+hn,n,r,o,i,a);if(f===l)return this;var p=this.count;if(l){if(!f&&(p--,p=0&&t>>e&mn;if(r>=this.array.length)return new zt([],t);var o,i=0===r;if(e>0){var a=this.array[r];if(o=a&&a.removeBefore(t,e-hn,n),o===a&&i)return this}if(i&&!o)return this;var u=Ht(this,t);if(!i)for(var s=0;s>>e&mn;if(r>=this.array.length)return this;var o;if(e>0){var i=this.array[r];if(o=i&&i.removeAfter(t,e-hn,n),o===i&&r===this.array.length-1)return this}var a=Ht(this,t);return a.array.splice(r+1),o&&(a.array[r]=o),a};var Xn,Qn={};t(Gt,ft),Gt.of=function(){return this(arguments)},Gt.prototype.toString=function(){return this.__toString("OrderedMap {","}")},Gt.prototype.get=function(t,e){var n=this._map.get(t);return void 0!==n?this._list.get(n)[1]:e},Gt.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):ee()},Gt.prototype.set=function(t,e){return ne(this,t,e)},Gt.prototype.remove=function(t){return ne(this,t,yn)},Gt.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},Gt.prototype.__iterate=function(t,e){var n=this;return this._list.__iterate(function(e){return e&&t(e[1],e[0],n)},e)},Gt.prototype.__iterator=function(t,e){return this._list.fromEntrySeq().__iterator(t,e)},Gt.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t),n=this._list.__ensureOwner(t);return t?te(e,n,t,this.__hash):(this.__ownerID=t,this._map=e,this._list=n,this)},Gt.isOrderedMap=Zt,Gt.prototype[pn]=!0,Gt.prototype[dn]=Gt.prototype.remove;var $n;t(re,M),re.prototype.get=function(t,e){return this._iter.get(t,e)},re.prototype.has=function(t){return this._iter.has(t)},re.prototype.valueSeq=function(){return this._iter.valueSeq()},re.prototype.reverse=function(){var t=this,e=ce(this,!0);return this._useKeys||(e.valueSeq=function(){return t._iter.toSeq().reverse()}),e},re.prototype.map=function(t,e){var n=this,r=se(this,t,e);return this._useKeys||(r.valueSeq=function(){return n._iter.toSeq().map(t,e)}),r},re.prototype.__iterate=function(t,e){var n,r=this;return this._iter.__iterate(this._useKeys?function(e,n){return t(e,n,r)}:(n=e?Pe(this):0,function(o){return t(o,e?--n:n++,r)}),e)},re.prototype.__iterator=function(t,e){if(this._useKeys)return this._iter.__iterator(t,e);var n=this._iter.__iterator(wn,e),r=e?Pe(this):0;return new w(function(){var o=n.next();return o.done?o:E(t,e?--r:r++,o.value,o)})},re.prototype[pn]=!0,t(oe,I),oe.prototype.includes=function(t){return this._iter.includes(t)},oe.prototype.__iterate=function(t,e){var n=this,r=0;return this._iter.__iterate(function(e){return t(e,r++,n)},e)},oe.prototype.__iterator=function(t,e){var n=this._iter.__iterator(wn,e),r=0;return new w(function(){var e=n.next();return e.done?e:E(t,r++,e.value,e)})},t(ie,R),ie.prototype.has=function(t){return this._iter.includes(t)},ie.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate(function(e){return t(e,e,n)},e)},ie.prototype.__iterator=function(t,e){var n=this._iter.__iterator(wn,e);return new w(function(){var e=n.next();return e.done?e:E(t,e.value,e.value,e)})},t(ae,M),ae.prototype.entrySeq=function(){return this._iter.toSeq()},ae.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate(function(e){if(e){xe(e);var r=i(e);return t(r?e.get(1):e[1],r?e.get(0):e[0],n)}},e)},ae.prototype.__iterator=function(t,e){var n=this._iter.__iterator(wn,e);return new w(function(){for(;;){var e=n.next();if(e.done)return e;var r=e.value;if(r){xe(r);var o=i(r);return E(t,o?r.get(0):r[0],o?r.get(1):r[1],e)}}})},oe.prototype.cacheResult=re.prototype.cacheResult=ie.prototype.cacheResult=ae.prototype.cacheResult=ke,t(Re,et),Re.prototype.toString=function(){return this.__toString(Ne(this)+" {","}")},Re.prototype.has=function(t){return this._defaultValues.hasOwnProperty(t)},Re.prototype.get=function(t,e){if(!this.has(t))return e;var n=this._defaultValues[t];return this._map?this._map.get(t,n):n},Re.prototype.clear=function(){if(this.__ownerID)return this._map&&this._map.clear(),this;var t=this.constructor;return t._empty||(t._empty=Ae(this,Et()))},Re.prototype.set=function(t,e){if(!this.has(t))throw new Error('Cannot set unknown key "'+t+'" on '+Ne(this));if(this._map&&!this._map.has(t)){var n=this._defaultValues[t];if(e===n)return this}var r=this._map&&this._map.set(t,e);return this.__ownerID||r===this._map?this:Ae(this,r)},Re.prototype.remove=function(t){if(!this.has(t))return this;var e=this._map&&this._map.remove(t);return this.__ownerID||e===this._map?this:Ae(this,e)},Re.prototype.wasAltered=function(){return this._map.wasAltered()},Re.prototype.__iterator=function(t,e){var r=this;return n(this._defaultValues).map(function(t,e){return r.get(e)}).__iterator(t,e)},Re.prototype.__iterate=function(t,e){var r=this;return n(this._defaultValues).map(function(t,e){return r.get(e)}).__iterate(t,e)},Re.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map&&this._map.__ensureOwner(t);return t?Ae(this,e,t):(this.__ownerID=t,this._map=e,this)};var Gn=Re.prototype;Gn[dn]=Gn.remove,Gn.deleteIn=Gn.removeIn=qn.removeIn,Gn.merge=qn.merge,Gn.mergeWith=qn.mergeWith,Gn.mergeIn=qn.mergeIn,Gn.mergeDeep=qn.mergeDeep,Gn.mergeDeepWith=qn.mergeDeepWith,Gn.mergeDeepIn=qn.mergeDeepIn,Gn.setIn=qn.setIn,Gn.update=qn.update,Gn.updateIn=qn.updateIn,Gn.withMutations=qn.withMutations,Gn.asMutable=qn.asMutable,Gn.asImmutable=qn.asImmutable,t(je,rt),je.of=function(){return this(arguments)},je.fromKeys=function(t){return this(n(t).keySeq())},je.prototype.toString=function(){return this.__toString("Set {","}")},je.prototype.has=function(t){return this._map.has(t)},je.prototype.add=function(t){return Be(this,this._map.set(t,!0))},je.prototype.remove=function(t){return Be(this,this._map.remove(t))},je.prototype.clear=function(){return Be(this,this._map.clear())},je.prototype.union=function(){var t=sn.call(arguments,0);return t=t.filter(function(t){return 0!==t.size}),0===t.length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations(function(e){for(var n=0;n=0;n--)e={value:arguments[n],next:e};return this.__ownerID?(this.size=t,this._head=e,this.__hash=void 0,this.__altered=!0,this):Je(t,e)},Ke.prototype.pushAll=function(t){if(t=r(t),0===t.size)return this;lt(t.size);var e=this.size,n=this._head;return t.reverse().forEach(function(t){e++,n={value:t,next:n}}),this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):Je(e,n)},Ke.prototype.pop=function(){return this.slice(1)},Ke.prototype.unshift=function(){return this.push.apply(this,arguments)},Ke.prototype.unshiftAll=function(t){return this.pushAll(t)},Ke.prototype.shift=function(){return this.pop.apply(this,arguments)},Ke.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Xe()},Ke.prototype.slice=function(t,e){if(y(t,e,this.size))return this;var n=g(t,this.size),r=_(e,this.size);if(r!==this.size)return nt.prototype.slice.call(this,t,e);for(var o=this.size-n,i=this._head;n--;)i=i.next;return this.__ownerID?(this.size=o,this._head=i,this.__hash=void 0,this.__altered=!0,this):Je(o,i)},Ke.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Je(this.size,this._head,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},Ke.prototype.__iterate=function(t,e){if(e)return this.reverse().__iterate(t);for(var n=0,r=this._head;r&&t(r.value,n++,this)!==!1;)r=r.next;return n},Ke.prototype.__iterator=function(t,e){if(e)return this.reverse().__iterator(t);var n=0,r=this._head;return new w(function(){if(r){var e=r.value;return r=r.next,E(t,n++,e)}return C()})},Ke.isStack=He;var or="@@__IMMUTABLE_STACK__@@",ir=Ke.prototype;ir[or]=!0,ir.withMutations=qn.withMutations,ir.asMutable=qn.asMutable,ir.asImmutable=qn.asImmutable,ir.wasAltered=qn.wasAltered;var ar;e.Iterator=w,Qe(e,{toArray:function(){lt(this.size);var t=new Array(this.size||0);return this.valueSeq().__iterate(function(e,n){t[n]=e}),t},toIndexedSeq:function(){return new oe(this)},toJS:function(){return this.toSeq().map(function(t){return t&&"function"==typeof t.toJS?t.toJS():t}).__toJS()},toJSON:function(){return this.toSeq().map(function(t){return t&&"function"==typeof t.toJSON?t.toJSON():t}).__toJS()},toKeyedSeq:function(){return new re(this,!0)},toMap:function(){return ft(this.toKeyedSeq())},toObject:function(){lt(this.size);var t={};return this.__iterate(function(e,n){t[n]=e}),t},toOrderedMap:function(){return Gt(this.toKeyedSeq())},toOrderedSet:function(){return qe(a(this)?this.valueSeq():this)},toSet:function(){return je(a(this)?this.valueSeq():this)},toSetSeq:function(){return new ie(this)},toSeq:function(){return u(this)?this.toIndexedSeq():a(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Ke(a(this)?this.valueSeq():this)},toList:function(){return Bt(a(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(t,e){return 0===this.size?t+e:t+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+e},concat:function(){var t=sn.call(arguments,0);return Se(this,me(this,t))},includes:function(t){return this.some(function(e){return X(e,t)})},entries:function(){return this.__iterator(En)},every:function(t,e){lt(this.size);var n=!0;return this.__iterate(function(r,o,i){if(!t.call(e,r,o,i))return n=!1,!1}),n},filter:function(t,e){return Se(this,le(this,t,e,!0))},find:function(t,e,n){var r=this.findEntry(t,e);return r?r[1]:n},forEach:function(t,e){return lt(this.size),this.__iterate(e?t.bind(e):t)},join:function(t){lt(this.size),t=void 0!==t?""+t:",";var e="",n=!0;return this.__iterate(function(r){n?n=!1:e+=t,e+=null!==r&&void 0!==r?r.toString():""}),e},keys:function(){return this.__iterator(bn)},map:function(t,e){return Se(this,se(this,t,e))},reduce:function(t,e,n){lt(this.size);var r,o;return arguments.length<2?o=!0:r=e,this.__iterate(function(e,i,a){o?(o=!1,r=e):r=t.call(n,r,e,i,a)}),r},reduceRight:function(t,e,n){var r=this.toKeyedSeq().reverse();return r.reduce.apply(r,arguments)},reverse:function(){return Se(this,ce(this,!0))},slice:function(t,e){return Se(this,de(this,t,e,!0))},some:function(t,e){return!this.every(Ze(t),e)},sort:function(t){return Se(this,be(this,t))},values:function(){return this.__iterator(wn)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some(function(){return!0})},count:function(t,e){return h(t?this.toSeq().filter(t,e):this)},countBy:function(t,e){return fe(this,t,e)},equals:function(t){return Q(this,t)},entrySeq:function(){var t=this;if(t._cache)return new A(t._cache);var e=t.toSeq().map(Ge).toIndexedSeq();return e.fromEntrySeq=function(){return t.toSeq()},e},filterNot:function(t,e){return this.filter(Ze(t),e)},findEntry:function(t,e,n){var r=n;return this.__iterate(function(n,o,i){if(t.call(e,n,o,i))return r=[o,n],!1}),r},findKey:function(t,e){var n=this.findEntry(t,e);return n&&n[0]},findLast:function(t,e,n){return this.toKeyedSeq().reverse().find(t,e,n)},findLastEntry:function(t,e,n){return this.toKeyedSeq().reverse().findEntry(t,e,n)},findLastKey:function(t,e){return this.toKeyedSeq().reverse().findKey(t,e)},first:function(){return this.find(m)},flatMap:function(t,e){return Se(this,ge(this,t,e))},flatten:function(t){return Se(this,ye(this,t,!0))},fromEntrySeq:function(){return new ae(this)},get:function(t,e){return this.find(function(e,n){return X(n,t)},void 0,e)},getIn:function(t,e){for(var n,r=this,o=Ie(t);!(n=o.next()).done;){var i=n.value;if(r=r&&r.get?r.get(i,yn):yn,r===yn)return e}return r},groupBy:function(t,e){return pe(this,t,e)},has:function(t){return this.get(t,yn)!==yn},hasIn:function(t){return this.getIn(t,yn)!==yn},isSubset:function(t){return t="function"==typeof t.includes?t:e(t),this.every(function(e){return t.includes(e)})},isSuperset:function(t){return t="function"==typeof t.isSubset?t:e(t),t.isSubset(this)},keyOf:function(t){return this.findKey(function(e){return X(e,t)})},keySeq:function(){return this.toSeq().map($e).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(t){return this.toKeyedSeq().reverse().keyOf(t)},max:function(t){return we(this,t)},maxBy:function(t,e){return we(this,e,t)},min:function(t){return we(this,t?tn(t):rn)},minBy:function(t,e){return we(this,e?tn(e):rn,t)},rest:function(){return this.slice(1)},skip:function(t){return this.slice(Math.max(0,t))},skipLast:function(t){return Se(this,this.toSeq().reverse().skip(t).reverse())},skipWhile:function(t,e){return Se(this,ve(this,t,e,!0))},skipUntil:function(t,e){return this.skipWhile(Ze(t),e)},sortBy:function(t,e){return Se(this,be(this,e,t))},take:function(t){return this.slice(0,Math.max(0,t))},takeLast:function(t){return Se(this,this.toSeq().reverse().take(t).reverse())},takeWhile:function(t,e){return Se(this,he(this,t,e))},takeUntil:function(t,e){return this.takeWhile(Ze(t),e)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=on(this))}});var ur=e.prototype;ur[cn]=!0,ur[xn]=ur.values,ur.__toJS=ur.toArray,ur.__toStringMapper=en,ur.inspect=ur.toSource=function(){return this.toString()},ur.chain=ur.flatMap,ur.contains=ur.includes,Qe(n,{flip:function(){return Se(this,ue(this))},mapEntries:function(t,e){var n=this,r=0;return Se(this,this.toSeq().map(function(o,i){return t.call(e,[i,o],r++,n)}).fromEntrySeq())},mapKeys:function(t,e){var n=this;return Se(this,this.toSeq().flip().map(function(r,o){return t.call(e,r,o,n)}).flip())}});var sr=n.prototype;sr[ln]=!0,sr[xn]=ur.entries,sr.__toJS=ur.toObject,sr.__toStringMapper=function(t,e){return JSON.stringify(e)+": "+en(t)},Qe(r,{toKeyedSeq:function(){return new re(this,!1)},filter:function(t,e){return Se(this,le(this,t,e,!1))},findIndex:function(t,e){var n=this.findEntry(t,e);return n?n[0]:-1},indexOf:function(t){var e=this.keyOf(t);return void 0===e?-1:e},lastIndexOf:function(t){var e=this.lastKeyOf(t);return void 0===e?-1:e},reverse:function(){return Se(this,ce(this,!1))},slice:function(t,e){return Se(this,de(this,t,e,!1))},splice:function(t,e){var n=arguments.length;if(e=Math.max(0|e,0),0===n||2===n&&!e)return this;t=g(t,t<0?this.count():this.size);var r=this.slice(0,t);return Se(this,1===n?r:r.concat(d(arguments,2),this.slice(t+e)))},findLastIndex:function(t,e){var n=this.findLastEntry(t,e);return n?n[0]:-1},first:function(){return this.get(0)},flatten:function(t){return Se(this,ye(this,t,!1))},get:function(t,e){return t=v(this,t),t<0||this.size===1/0||void 0!==this.size&&t>this.size?e:this.find(function(e,n){return n===t},void 0,e)},has:function(t){return t=v(this,t),t>=0&&(void 0!==this.size?this.size===1/0||t0?"Unexpected "+(1===a.length?"property":"properties")+' "'+a.join('", "')+'" found in '+o+'. Expected to find one of the known reducer property names instead: "'+r.join('", "')+'". Unexpected properties will be ignored.':null},t.exports=e.default},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,n){if(void 0===t)throw new Error('Reducer "'+e+'" returned undefined when handling "'+n.type+'" action. To ignore an action, you must explicitly return the previous state.')},t.exports=e.default},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=n(214),u=!(!a.lastRecord||void 0===a.lastRecord.pause)&&!!a.lastRecord.pause,s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,e=arguments[1];switch(e.type){case i.PAUSE:return e.data;default:return t}};e.default=s},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.PAUSE="PAUSE",e.MUSIC="MUSIC",e.MATRIX="MATRIX",e.NEXT_BLOCK="NEXT_BLOCK",e.MOVE_BLOCK="MOVE_BLOCK",e.START_LINES="START_LINES",e.MAX="MAX",e.POINTS="POINTS",e.SPEED_START="SPEED_START",e.SPEED_RUN="SPEED_RUN",e.LOCK="LOCK",e.CLEAR_LINES="CLEAR_LINES",e.RESET="RESET",e.DROP="DROP",e.KEY_DROP="KEY_DROP",e.KEY_DOWN="KEY_DOWN",e.KEY_LEFT="KEY_LEFT",e.KEY_RIGHT="KEY_RIGHT",e.KEY_ROTATE="KEY_ROTATE",e.KEY_RESET="KEY_RESET",e.KEY_MUSIC="KEY_MUSIC",e.KEY_PAUSE="KEY_PAUSE",e.FOCUS="FOCUS"},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var o=n(207),i=n(215),a=r(i),u={I:[[1,1,1,1]],L:[[0,0,1],[1,1,1]],J:[[1,0,0],[1,1,1]],Z:[[1,1,0],[0,1,1]],S:[[0,1,1],[1,1,0]],O:[[1,1],[1,1]],T:[[0,1,0],[1,1,1]]},s={I:[[-1,1],[1,-1]],L:[[0,0]],J:[[0,0]],Z:[[0,0]],S:[[0,0]],O:[[0,0]],T:[[0,0],[1,0],[-1,1],[0,-1]]},c=Object.keys(u),l=[800,650,500,370,250,160],f=[50,60,70,80,90,100],p=[1,1,1,1,1,1,1,1,1,1],d=[0,0,0,0,0,0,0,0,0,0],h=function(){for(var t=[],e=0;e<20;e++)t.push((0,o.List)(d));return(0,o.List)(t)}(),v=[100,300,700,1500],m="REACT_TETRIS",y=function(){var t=localStorage.getItem(m);if(!t)return!1;try{window.btoa&&(t=atob(t)),t=decodeURIComponent(t),t=JSON.parse(t)}catch(t){return(window.console||window.console.error)&&window.console.error("读取记录错误:",t),!1}return t}(),g=999999,_=function(){var t=["transform","webkitTransform","msTransform","mozTransform","oTransform"],e=document.body;return t.filter(function(t){return void 0!==e.style[t]})[0]}(),b=20,w=function(t){var e=new RegExp("\\?(?:.+&)?"+t+"=(.*?)(?:&.*)?$"),n=window.location.toString().match(e);return n?decodeURI(n[1]):""},E=function(){var t=w("lan").toLowerCase();return t=a.default.lan.indexOf(t)===-1?a.default.default:t}();document.title=a.default.data.title[E],t.exports={blockShape:u,origin:s,blockType:c,speeds:l,delays:f,fillLine:p,blankLine:d,blankMatrix:h,clearPoints:v,StorageKey:m,lastRecord:y,maxPoint:g,eachLines:b,transform:_,lan:E,i18n:a.default.data}},function(t,e){t.exports={lan:["cn","en","fr","fa"],default:"cn",data:{title:{cn:"俄罗斯方块",en:"T E T R I S",fr:"T E T R I S",fa:"خانه سازی"},github:{cn:"GitHub",en:"GitHub",fr:"GitHub",fa:"گیت‌هاب"},linkTitle:{cn:"查看源代码",en:"View data source",fr:"Afficher la source des données",fa:"مشاهده سورس پروژه"},QRCode:{cn:"二维码",en:"QR code",fr:"QR code",fa:"کیوآر کد"},titleCenter:{cn:"俄罗斯方块
TETRIS",en:"TETRIS",fr:"TETRIS",fa:"خانه سازی"},point:{cn:"得分",en:"Point",fr:"Score",fa:"امتیاز"},highestScore:{cn:"最高分",en:"Max",fr:"Max",fa:"حداکثر"},lastRound:{cn:"上轮得分",en:"Last Round",fr:"Dernier Tour",fa:"آخرین دور"},cleans:{cn:"消除行",en:"Cleans",fr:"Lignes",fa:"پاک کرد"},level:{cn:"级别",en:"Level",fr:"Difficulté",fa:"سطح"},startLine:{cn:"起始行",en:"Start Line",fr:"Ligne Départ",fa:"خط شروع"},next:{cn:"下一个",en:"Next",fr:"Prochain",fa:"بعدی"},pause:{cn:"暂停",en:"Pause",fr:"Pause",fa:"مکث"},sound:{cn:"音效",en:"Sound",fr:"Sonore",fa:"صدا"},reset:{cn:"重玩",en:"Reset",fr:"Réinitialiser",fa:"ریست"},rotation:{cn:"旋转",en:"Rotation",fr:"Rotation",fa:"چرخش"},left:{cn:"左移",en:"Left",fr:"Gauche",fa:"چپ"},right:{cn:"右移",en:"Right",fr:"Droite",fa:"راست"},down:{cn:"下移",en:"Down",fr:"Bas",fa:"پایین"},drop:{cn:"掉落",en:"Drop",fr:"Tomber",fa:"سقوط"}}}},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=n(214),u=n(217),s=!a.lastRecord||void 0===a.lastRecord.music||!!a.lastRecord.music;u.hasWebAudioAPI.data||(s=!1);var c=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,e=arguments[1];switch(e.type){case i.MUSIC:return!!u.hasWebAudioAPI.data&&e.data;default:return t}};e.default=c},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var o=n(203),i=r(o),a=window.AudioContext||window.webkitAudioContext||window.mozAudioContext||window.oAudioContext||window.msAudioContext,u={data:!!a&&location.protocol.indexOf("http")!==-1},s={};!function(){if(u.data){var t="./music.mp3",e=new a,n=new XMLHttpRequest;n.open("GET",t,!0),n.responseType="arraybuffer",n.onload=function(){e.decodeAudioData(n.response,function(t){var n=function(){var n=e.createBufferSource();return n.buffer=t,n.connect(e.destination),n};s.killStart=function(){s.start=function(){}},s.start=function(){s.killStart(),i.default.getState().get("music")&&n().start(0,3.7202,3.6224)},s.clear=function(){i.default.getState().get("music")&&n().start(0,0,.7675)},s.fall=function(){i.default.getState().get("music")&&n().start(0,1.2558,.3546)},s.gameover=function(){i.default.getState().get("music")&&n().start(0,8.1276,1.1437)},s.rotate=function(){i.default.getState().get("music")&&n().start(0,2.2471,.0807)},s.move=function(){i.default.getState().get("music")&&n().start(0,2.9088,.1437)}},function(e){window.console&&window.console.error&&(window.console.error("音频: "+t+" 读取错误",e),u.data=!1)})},n.send()}}(),t.exports={hasWebAudioAPI:u,music:s}},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(207),i=n(213),a=r(i),u=n(214),s=u.lastRecord&&Array.isArray(u.lastRecord.matrix)?(0,o.List)(u.lastRecord.matrix.map(function(t){return(0,o.List)(t)})):u.blankMatrix,c=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,e=arguments[1];switch(e.type){case a.MATRIX:return e.data;default:return t}};e.default=c},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(220),i=n(213),a=r(i),u=n(214),s=u.lastRecord&&u.blockType.indexOf(u.lastRecord.next)!==-1?u.lastRecord.next:(0,o.getNextType)(),c=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,e=arguments[1];switch(e.type){case a.NEXT_BLOCK:return e.data;default:return t}};e.default=c},function(t,e,n){"use strict";var r=n(214),o=function(){var t=["hidden","webkitHidden","mozHidden","msHidden"];return t=t.filter(function(t){return t in document}),t.length>0&&t[0]}(),i=function(){return!!o&&o.replace(/hidden/i,"visibilitychange")}(),a=function(){return!o||!document[o]},u={getNextType:function(){var t=r.blockType.length;return r.blockType[Math.floor(Math.random()*t)]},want:function(t,e){var n=t.xy,r=t.shape,o=r.get(0).size;return r.every(function(t,r){return t.every(function(t,i){return!(n[1]<0)&&(!(n[1]+o>10)&&(n[0]+r<0||!(n[0]+r>=20)&&(!t||!e.get(n[0]+r).get(n[1]+i))))})})},isClear:function(t){var e=[];return t.forEach(function(t,n){t.every(function(t){return!!t})&&e.push(n)}),0!==e.length&&e},isOver:function(t){return t.get(0).some(function(t){return!!t})},subscribeRecord:function(t){t.subscribe(function(){var e=t.getState().toJS();e.lock||(e=JSON.stringify(e),e=encodeURIComponent(e),window.btoa&&(e=btoa(e)),localStorage.setItem(r.StorageKey,e))})},isMobile:function(){var t=navigator.userAgent,e=/Android (\d+\.\d+)/.test(t),n=t.indexOf("iPhone")>-1,r=t.indexOf("iPod")>-1,o=t.indexOf("iPad")>-1,i=t.indexOf("NokiaN")>-1;return e||n||r||o||i},visibilityChangeEvent:i,isFocus:a};t.exports=u},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var i=n(207),a=n(213),u=o(a),s=n(214),c=n(222),l=r(c),f=function(){if(!s.lastRecord||!s.lastRecord.cur)return null;var t=s.lastRecord.cur,e={type:t.type,rotateIndex:t.rotateIndex,shape:(0,i.List)(t.shape.map(function(t){return(0,i.List)(t)})),xy:t.xy};return new l.default(e)}(),p=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f,e=arguments[1];switch(e.type){case u.MOVE_BLOCK:return e.data;default:return t}};e.default=p},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n=a.origin[this.type].length?0:this.rotateIndex+1;return{shape:e,type:this.type,xy:n,rotateIndex:r,timeStamp:this.timeStamp}}},{key:"fall",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return{shape:this.shape,type:this.type,xy:[this.xy.get(0)+t,this.xy.get(1)],rotateIndex:this.rotateIndex,timeStamp:Date.now()}}},{key:"right",value:function(){return{shape:this.shape,type:this.type,xy:[this.xy.get(0),this.xy.get(1)+1],rotateIndex:this.rotateIndex,timeStamp:this.timeStamp}}},{key:"left",value:function(){return{shape:this.shape,type:this.type,xy:[this.xy.get(0),this.xy.get(1)-1],rotateIndex:this.rotateIndex,timeStamp:this.timeStamp}}}]),t}();e.default=u},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=n(214),u=a.lastRecord&&!isNaN(parseInt(a.lastRecord.startLines,10))?parseInt(a.lastRecord.startLines,10):0;(u<0||u>10)&&(u=0);var s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,e=arguments[1];switch(e.type){case i.START_LINES:return e.data;default:return t}};e.default=s},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=n(214),u=a.lastRecord&&!isNaN(parseInt(a.lastRecord.max,10))?parseInt(a.lastRecord.max,10):0;u<0?u=0:u>a.maxPoint&&(u=a.maxPoint);var s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,e=arguments[1];switch(e.type){case i.MAX:return e.data>999999?999999:e.data;default:return t}};e.default=s},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=n(214),u=a.lastRecord&&!isNaN(parseInt(a.lastRecord.points,10))?parseInt(a.lastRecord.points,10):0;u<0?u=0:u>a.maxPoint&&(u=a.maxPoint);var s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,e=arguments[1];switch(e.type){case i.POINTS:return e.data>a.maxPoint?a.maxPoint:e.data;default:return t}};e.default=s},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=n(214),u=a.lastRecord&&!isNaN(parseInt(a.lastRecord.speedStart,10))?parseInt(a.lastRecord.speedStart,10):1;(u<1||u>6)&&(u=1);var s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,e=arguments[1];switch(e.type){case i.SPEED_START:return e.data;default:return t}};e.default=s},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=n(214),u=a.lastRecord&&!isNaN(parseInt(a.lastRecord.speedRun,10))?parseInt(a.lastRecord.speedRun,10):1;(u<1||u>6)&&(u=1);var s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,e=arguments[1];switch(e.type){case i.SPEED_RUN:return e.data;default:return t}};e.default=s},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=n(214),u=!(!a.lastRecord||void 0===a.lastRecord.lock)&&!!a.lastRecord.lock,s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,e=arguments[1];switch(e.type){case i.LOCK:return e.data;default:return t}};e.default=s},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=n(214),u=a.lastRecord&&!isNaN(parseInt(a.lastRecord.clearLines,10))?parseInt(a.lastRecord.clearLines,10):0;u<0&&(u=0);var s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,e=arguments[1];switch(e.type){case i.CLEAR_LINES:return e.data;default:return t}};e.default=s},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=n(214),u=!(!a.lastRecord||!a.lastRecord.reset)&&!!a.lastRecord.reset,s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,e=arguments[1];switch(e.type){case i.RESET:return e.data;default:return t}};e.default=s},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=n(214),u=!(!a.lastRecord||void 0===a.lastRecord.drop)&&!!a.lastRecord.drop,s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,e=arguments[1];switch(e.type){case i.DROP:return e.data;default:return t}};e.default=s},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(205),i=n(233),a=r(i),u=n(234),s=r(u),c=n(235),l=r(c),f=n(236),p=r(f),d=n(237),h=r(d),v=n(238),m=r(v),y=n(239),g=r(y),_=n(240),b=r(_),w=(0,o.combineReducers)({drop:a.default,down:s.default,left:l.default,right:p.default,rotate:h.default,reset:m.default,music:g.default,pause:b.default});e.default=w},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=!1,u=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,e=arguments[1];switch(e.type){case i.KEY_DROP:return e.data;default:return t}};e.default=u},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=!1,u=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,e=arguments[1];switch(e.type){case i.KEY_DOWN:return e.data;default:return t}};e.default=u},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=!1,u=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,e=arguments[1];switch(e.type){case i.KEY_LEFT:return e.data;default:return t}};e.default=u},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=!1,u=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,e=arguments[1];switch(e.type){case i.KEY_RIGHT:return e.data;default:return t}};e.default=u},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=!1,u=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,e=arguments[1];switch(e.type){case i.KEY_ROTATE:return e.data;default:return t}};e.default=u},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=!1,u=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,e=arguments[1];switch(e.type){case i.KEY_RESET:return e.data;default:return t}};e.default=u},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=!1,u=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,e=arguments[1];switch(e.type){case i.KEY_MUSIC:return e.data;default:return t}};e.default=u},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=!1,u=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,e=arguments[1];switch(e.type){case i.KEY_PAUSE:return e.data;default:return t}};e.default=u},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}Object.defineProperty(e,"__esModule",{value:!0});var o=n(213),i=r(o),a=n(220),u=(0,a.isFocus)(),s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,e=arguments[1];switch(e.type){case i.FOCUS:return e.data;default:return t}};e.default=s},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function"); -}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function u(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},e=(0,g.isClear)(t.matrix),n=t.reset;this.setState({clearLines:e,isOver:n}),e&&!this.state.clearLines&&this.clearAnimate(e),e||!n||this.state.isOver||this.over(t)}},{key:"shouldComponentUpdate",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.props;return!(f.default.is(t.matrix,e.matrix)&&f.default.is(t.cur&&t.cur.shape,e.cur&&e.cur.shape)&&f.default.is(t.cur&&t.cur.xy,e.cur&&e.cur.xy))||this.state.clearLines||this.state.isOver}},{key:"getResult",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props,e=t.cur,n=e&&e.shape,r=e&&e.xy,o=t.matrix,i=this.state.clearLines;if(i){var a=this.state.animateColor;i.forEach(function(t){o=o.set(t,(0,l.List)([a,a,a,a,a,a,a,a,a,a]))})}else n&&n.forEach(function(t,e){return t.forEach(function(t,n){if(t&&r.get(0)+e>=0){var a=o.get(r.get(0)+e),u=void 0;u=1!==a.get(r.get(1)+n)||i?1:2,a=a.set(r.get(1)+n,u),o=o.set(r.get(0)+e,a)}})});return o}},{key:"clearAnimate",value:function(){var t=this,e=function(e){E(function(){t.setState({animateColor:0}),E(function(){t.setState({animateColor:2}),"function"==typeof e&&e()},100)},100)};e(function(){e(function(){e(function(){E(function(){w.default.clearLines(t.props.matrix,t.state.clearLines)},100)})})})}},{key:"over",value:function(t){var e=this,n=this.getResult(t);this.setState({overState:n});for(var r=function(t){if(t<=19)n=n.set(19-t,(0,l.List)(_.fillLine));else{if(!(t>=20&&t<=39))return void w.default.overEnd();n=n.set(t-20,(0,l.List)(_.blankLine))}e.setState({overState:n})},o=0;o<=40;o++)E(r.bind(null,o),40*(o+1))}},{key:"render",value:function(){var t=void 0;return t=this.state.isOver?this.state.overState:this.getResult(),c.default.createElement("div",{className:y.default.matrix},t.map(function(t,e){return c.default.createElement("p",{key:e},t.map(function(t,e){return c.default.createElement("b",{className:(0,d.default)({c:1===t,d:2===t}),key:e})}))}))}}]),e}(c.default.Component);e.default=C,C.propTypes={matrix:v.default.object.isRequired,cur:v.default.object,reset:v.default.bool.isRequired}},function(t,e){t.exports={matrix:"_6pVK"}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(207),i=n(203),a=r(i),u=n(220),s=n(248),c=r(s),l=n(214),f=n(217),p=function(t){for(var e=function(t,e){for(var n=parseInt((e-t+1)*Math.random()+t,10),r=[],i=0;i=0){var r=o.get(s.get(0)+e);r=r.set(s.get(1)+n,1),o=o.set(s.get(0)+e,r)}})}),d.nextAround(o)}};clearTimeout(d.fallInterval),d.fallInterval=setTimeout(o,void 0===e?l.speeds[n.get("speedRun")-1]:e)},nextAround:function(t,e){clearTimeout(d.fallInterval),a.default.dispatch(c.default.lock(!0)),a.default.dispatch(c.default.matrix(t)),"function"==typeof e&&e();var n=a.default.getState().get("points")+10+2*(a.default.getState().get("speedRun")-1);return d.dispatchPoints(n),(0,u.isClear)(t)?void(f.music.clear&&f.music.clear()):(0,u.isOver)(t)?(f.music.gameover&&f.music.gameover(),void d.overStart()):void setTimeout(function(){a.default.dispatch(c.default.lock(!1)),a.default.dispatch(c.default.moveBlock({type:a.default.getState().get("next")})),a.default.dispatch(c.default.nextBlock()),d.auto()},100)},focus:function(t){if(a.default.dispatch(c.default.focus(t)),!t)return void clearTimeout(d.fallInterval);var e=a.default.getState();!e.get("cur")||e.get("reset")||e.get("pause")||d.auto()},pause:function(t){return a.default.dispatch(c.default.pause(t)),t?void clearTimeout(d.fallInterval):void d.auto()},clearLines:function t(e,n){var r=a.default.getState(),i=e;n.forEach(function(t){i=i.splice(t,1),i=i.unshift((0,o.List)(l.blankLine))}),a.default.dispatch(c.default.matrix(i)),a.default.dispatch(c.default.moveBlock({type:r.get("next")})),a.default.dispatch(c.default.nextBlock()),d.auto(),a.default.dispatch(c.default.lock(!1));var t=r.get("clearLines")+n.length;a.default.dispatch(c.default.clearLines(t));var u=a.default.getState().get("points")+l.clearPoints[n.length-1];d.dispatchPoints(u);var s=Math.floor(t/l.eachLines),f=r.get("speedStart")+s;f=f>6?6:f,a.default.dispatch(c.default.speedRun(f))},overStart:function(){clearTimeout(d.fallInterval),a.default.dispatch(c.default.lock(!0)),a.default.dispatch(c.default.reset(!0)),a.default.dispatch(c.default.pause(!1))},overEnd:function(){a.default.dispatch(c.default.matrix(l.blankMatrix)),a.default.dispatch(c.default.moveBlock({reset:!0})),a.default.dispatch(c.default.reset(!1)),a.default.dispatch(c.default.lock(!1)),a.default.dispatch(c.default.clearLines(0))},dispatchPoints:function(t){a.default.dispatch(c.default.points(t)),t>0&&t>a.default.getState().get("max")&&a.default.dispatch(c.default.max(t))}};e.default=d},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function i(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:(0,b.getNextType)();return{type:E.NEXT_BLOCK,data:t}}function a(t){return{type:E.MOVE_BLOCK,data:t.reset===!0?null:new S.default(t)}}function u(t){return{type:E.SPEED_START,data:t}}function s(t){return{type:E.SPEED_RUN,data:t}}function c(t){return{type:E.START_LINES,data:t}}function l(t){return{type:E.MATRIX,data:t}}function f(t){return{type:E.LOCK,data:t}}function p(t){return{type:E.CLEAR_LINES,data:t}}function d(t){return{type:E.POINTS,data:t}}function h(t){return{type:E.MAX,data:t}}function v(t){return{type:E.RESET,data:t}}function m(t){return{type:E.DROP,data:t}}function y(t){return{type:E.PAUSE,data:t}}function g(t){return{type:E.MUSIC,data:t}}function _(t){return{type:E.FOCUS,data:t}}Object.defineProperty(e,"__esModule",{value:!0});var b=n(220),w=n(213),E=o(w),C=n(222),S=r(C),x=n(249),P=r(x);e.default={nextBlock:i,moveBlock:a,speedStart:u,speedRun:s,startLines:c,matrix:l,lock:f,clearLines:p,points:d,reset:v,max:h,drop:m,pause:y,keyboard:P.default,music:g,focus:_}},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function o(t){return{type:d.KEY_DROP,data:t}}function i(t){return{type:d.KEY_DOWN,data:t}}function a(t){return{type:d.KEY_LEFT,data:t}}function u(t){return{type:d.KEY_RIGHT,data:t}}function s(t){return{type:d.KEY_ROTATE,data:t}}function c(t){return{type:d.KEY_RESET,data:t}}function l(t){return{type:d.KEY_MUSIC,data:t}}function f(t){return{type:d.KEY_PAUSE,data:t}}Object.defineProperty(e,"__esModule",{value:!0});var p=n(213),d=r(p);e.default={drop:o,down:i,left:a,right:u,rotate:s,reset:c,music:l,pause:f}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var u=function(){function t(t,e){for(var n=0;n=i?m:v,number:o});else{var a=function t(){n.setState({label:y,number:o}),e.timeout=setTimeout(function(){n.setState({label:m,number:i}),e.timeout=setTimeout(t,3e3)},3e3)};0!==o?a():this.setState({label:m,number:i})}}},{key:"render",value:function(){return c.default.createElement("div",null,c.default.createElement("p",null,this.state.label),c.default.createElement(d.default,{number:this.state.number}))}}]),e}(c.default.Component);e.default=g,g.statics={timeout:null},g.propTypes={cur:f.default.bool,max:f.default.number.isRequired,point:f.default.number.isRequired}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function u(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var n=0;n6?1:c+1,t.dispatch(s.default.speedStart(c))}}}})},h=function(t){t.dispatch(s.default.keyboard.right(!1)),a.default.up({key:"right"})};e.default={down:d,up:h}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(220),i=n(269),a=r(i),u=n(248),s=r(u),c=n(247),l=r(c),f=n(217),p=function(t){t.dispatch(s.default.keyboard.down(!0)),null!==t.getState().get("cur")?a.default.down({key:"down",begin:40,interval:40,callback:function(e){var n=t.getState();if(!n.get("lock")){f.music.move&&f.music.move();var r=n.get("cur");if(null!==r){if(n.get("pause"))return void l.default.pause(!1);var i=r.fall();if((0,o.want)(i,n.get("matrix")))t.dispatch(s.default.moveBlock(i)),l.default.auto();else{var a=n.get("matrix"),u=r.shape,c=r.xy;u.forEach(function(t,e){return t.forEach(function(t,n){if(t&&c.get(0)+e>=0){var r=a.get(c.get(0)+e);r=r.set(c.get(1)+n,1),a=a.set(c.get(0)+e,r)}})}),l.default.nextAround(a,e)}}}}}):a.default.down({key:"down",begin:200,interval:100,callback:function(){if(!t.getState().get("lock")){var e=t.getState(),n=e.get("cur");if(!n){f.music.move&&f.music.move();var r=e.get("startLines");r=r-1<0?10:r-1,t.dispatch(s.default.startLines(r))}}}})},d=function(t){t.dispatch(s.default.keyboard.down(!1)),a.default.up({key:"down"})};e.default={down:p,up:d}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(220),i=n(269),a=r(i),u=n(248),s=r(u),c=n(247),l=r(c),f=n(217),p=function(t){t.dispatch(s.default.keyboard.rotate(!0)),null!==t.getState().get("cur")?a.default.down({key:"rotate",once:!0,callback:function(){var e=t.getState();if(!e.get("lock")){e.get("pause")&&l.default.pause(!1);var n=e.get("cur");if(null!==n){f.music.rotate&&f.music.rotate();var r=n.rotate();(0,o.want)(r,e.get("matrix"))&&t.dispatch(s.default.moveBlock(r))}}}}):a.default.down({key:"rotate",begin:200,interval:100,callback:function(){if(!t.getState().get("lock")){f.music.move&&f.music.move();var e=t.getState(),n=e.get("cur");if(!n){var r=e.get("startLines");r=r+1>10?0:r+1,t.dispatch(s.default.startLines(r))}}}})},d=function(t){t.dispatch(s.default.keyboard.rotate(!1)),a.default.up({key:"rotate"})};e.default={down:p,up:d}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(220),i=n(269),a=r(i),u=n(248),s=r(u),c=n(247),l=r(c),f=n(217),p=function(t){t.dispatch(s.default.keyboard.drop(!0)),a.default.down({key:"space",once:!0,callback:function(){var e=t.getState();if(!e.get("lock")){var n=e.get("cur");if(null!==n){if(e.get("pause"))return void l.default.pause(!1);f.music.fall&&f.music.fall();for(var r=0,i=n.fall(r);(0,o.want)(i,e.get("matrix"));)i=n.fall(r),r++;var a=e.get("matrix");i=n.fall(r-2),t.dispatch(s.default.moveBlock(i));var u=i.shape,c=i.xy;u.forEach(function(t,e){return t.forEach(function(t,n){if(t&&c[0]+e>=0){var r=a.get(c[0]+e);r=r.set(c[1]+n,1),a=a.set(c[0]+e,r)}})}),t.dispatch(s.default.drop(!0)),setTimeout(function(){t.dispatch(s.default.drop(!1))},100),l.default.nextAround(a)}else l.default.start()}}})},d=function(t){t.dispatch(s.default.keyboard.drop(!1)),a.default.up({key:"space"})};e.default={down:p,up:d}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(269),i=r(o),a=n(248),u=r(a),s=function(t){t.dispatch(u.default.keyboard.music(!0)),t.getState().get("lock")||i.default.down({key:"s",once:!0,callback:function(){t.getState().get("lock")||t.dispatch(u.default.music(!t.getState().get("music")))}})},c=function(t){t.dispatch(u.default.keyboard.music(!1)),i.default.up({key:"s"})};e.default={down:s,up:c}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(269),i=r(o),a=n(247),u=r(a),s=n(248),c=r(s),l=function(t){t.dispatch(c.default.keyboard.reset(!0)),t.getState().get("lock")||(null!==t.getState().get("cur")?i.default.down({key:"r",once:!0,callback:function(){u.default.overStart()}}):i.default.down({key:"r",once:!0,callback:function(){t.getState().get("lock")||u.default.start()}}))},f=function(t){t.dispatch(c.default.keyboard.reset(!1)),i.default.up({key:"r"})};e.default={down:l,up:f}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(269),i=r(o),a=n(247),u=r(a),s=n(248),c=r(s),l=function(t){t.dispatch(c.default.keyboard.pause(!0)),i.default.down({key:"p",once:!0,callback:function(){var e=t.getState();if(!e.get("lock")){var n=e.get("cur"),r=e.get("pause");null!==n?u.default.pause(!r):u.default.start()}}})},f=function(t){t.dispatch(c.default.keyboard.pause(!1)),i.default.up({key:"p"})};e.default={down:l,up:f}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function u(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var n=0;n=0&&u<=6&&(0===s||6===s)||s>=0&&s<=6&&(0===u||6===u)||u>=2&&u<=4&&s>=2&&s<=4?t.set(i+u,a+s,!0,!0):t.set(i+u,a+s,!1,!0))}function o(t){for(var e=t.size,n=8;n>u&1),t.set(n,r,o,!0),t.set(r,n,o,!0)}function u(t,e,n){var r,o,i=t.size,a=C.getEncodedBits(e,n);for(r=0;r<15;r++)o=1===(a>>r&1),r<6?t.set(r,8,o,!0):r<8?t.set(r+1,8,o,!0):t.set(i-15+r,8,o,!0),r<8?t.set(8,i-r-1,o,!0):r<9?t.set(8,15-r-1+1,o,!0):t.set(8,15-r-1,o,!0);t.set(i-8,8,1,!0)}function s(t,e){for(var n=t.size,r=-1,o=n-1,i=7,a=0,u=n-1;u>0;u-=2)for(6===u&&u--;;){for(var s=0;s<2;s++)if(!t.isReserved(o,u-s)){var c=!1;a>>i&1)),t.set(o,u-s,c),i--,i===-1&&(a++,i=7)}if(o+=r,o<0||n<=o){o-=r,r=-r;break}}}function c(t,e,n){var r=new v;n.forEach(function(e){r.put(e.mode.bit,4),r.put(e.getLength(),S.getCharCountIndicator(e.mode,t)),e.write(r)});var o=d.getSymbolTotalCodewords(t),i=b.getTotalCodewordsCount(t,e),a=8*(o-i);for(r.getLengthInBits()+4<=a&&r.put(0,4);r.getLengthInBits()%8!==0;)r.putBit(0);for(var u=(a-r.getLengthInBits())/8,s=0;s=7&&a(b,e),s(b,y),isNaN(l)&&(l=_.getBestMask(b,u.bind(null,b,n))),_.applyMask(l,b),u(b,n,l),{modules:b,version:e,errorCorrectionLevel:n,maskPattern:l,segments:f}}var p=n(281),d=n(287),h=n(288),v=n(289),m=n(290),y=n(291),g=n(292),_=n(293),b=n(294),w=n(295),E=n(298),C=n(302),S=n(299),x=n(303),P=n(286);e.create=function(t,e){if("undefined"==typeof t||""===t)throw new Error("No input text");var n,r,o=h.M;return"undefined"!=typeof e&&(o=h.from(e.errorCorrectionLevel,h.M),n=E.from(e.version),r=_.from(e.maskPattern),e.toSJISFunc&&d.setToSJISFunction(e.toSJISFunc)),f(t,n,o,r)}},function(t,e,n){(function(e){"use strict";function r(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()}catch(t){return!1}}function e(t,n,r){return e.TYPED_ARRAY_SUPPORT||this instanceof e?"number"==typeof t?u(this,t):m(this,t,n,r):new e(t,n,r)}function o(t){if(t>=g)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+g.toString(16)+" bytes");return 0|t}function i(t){return t!==t}function a(t,n){var r;return e.TYPED_ARRAY_SUPPORT?(r=new Uint8Array(n),r.__proto__=e.prototype):(r=t,null===r&&(r=new e(n)),r.length=n),r}function u(t,n){var r=a(t,n<0?0:0|o(n));if(!e.TYPED_ARRAY_SUPPORT)for(var i=0;i55295&&n<57344){if(!o){if(n>56319){(e-=3)>-1&&i.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(e-=3)>-1&&i.push(239,191,189),o=n;continue}n=(o-55296<<10|n-56320)+65536}else o&&(e-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((e-=1)<0)break;i.push(n)}else if(n<2048){if((e-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function d(t){if(e.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;return 0===n?0:p(t).length}function h(t,e,n,r){for(var o=0;o=e.length||o>=t.length);++o)e[o+n]=t[o];return o}function v(t,e,n,r){return h(p(e,t.length-n),t,n,r)}function m(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?l(t,e,n,r):"string"==typeof e?s(t,e,n):f(t,e)}var y=n(286);e.TYPED_ARRAY_SUPPORT=r();var g=e.TYPED_ARRAY_SUPPORT?2147483647:1073741823;e.TYPED_ARRAY_SUPPORT&&(e.prototype.__proto__=Uint8Array.prototype,e.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&e[Symbol.species]===e&&Object.defineProperty(e,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1})),e.prototype.write=function(t,e,n){void 0===e?(n=this.length,e=0):void 0===n&&"string"==typeof e?(n=this.length,e=0):isFinite(e)&&(e|=0,isFinite(n)?n|=0:n=void 0);var r=this.length-e;if((void 0===n||n>r)&&(n=r),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");return v(this,t,e,n)},e.prototype.slice=function(t,n){var r=this.length;t=~~t,n=void 0===n?r:~~n,t<0?(t+=r,t<0&&(t=0)):t>r&&(t=r),n<0?(n+=r,n<0&&(n=0)):n>r&&(n=r),n=t.length&&(n=t.length),n||(n=0),o>0&&o=this.length)throw new RangeError("sourceStart out of bounds");if(o<0)throw new RangeError("sourceEnd out of bounds");o>this.length&&(o=this.length),t.length-n=0;--i)t[i+n]=this[i+r];else if(a<1e3||!e.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0);var i;if("number"==typeof t)for(i=n;i 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var argIndex = 0; + var message = 'Warning: ' + format.replace(/%s/g, function () { + return args[argIndex++]; + }); + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; + + warning = function warning(condition, format) { + if (format === undefined) { + throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); + } + + if (format.indexOf('Failed Composite propType: ') === 0) { + return; // Ignore CompositeComponent proptype check. + } + + if (!condition) { + for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { + args[_key2 - 2] = arguments[_key2]; + } + + printWarning.apply(undefined, [format].concat(args)); + } + }; + } + + // /-- Inlined from fbjs -- + + var MIXINS_KEY = 'mixins'; + + // Helper function to allow the creation of anonymous functions which do not + // have .name set to the name of the variable being assigned to. + function identity(fn) { + return fn; + } + + var ReactPropTypeLocationNames; + if (false) { + ReactPropTypeLocationNames = { + prop: 'prop', + context: 'context', + childContext: 'child context' + }; + } else { + ReactPropTypeLocationNames = {}; + } + + function factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) { + /** + * Policies that describe methods in `ReactClassInterface`. + */ + + var injectedMixins = []; + + /** + * Composite components are higher-level components that compose other composite + * or host components. + * + * To create a new type of `ReactClass`, pass a specification of + * your new class to `React.createClass`. The only requirement of your class + * specification is that you implement a `render` method. + * + * var MyComponent = React.createClass({ + * render: function() { + * return
Hello World
; + * } + * }); + * + * The class specification supports a specific protocol of methods that have + * special meaning (e.g. `render`). See `ReactClassInterface` for + * more the comprehensive protocol. Any other properties and methods in the + * class specification will be available on the prototype. + * + * @interface ReactClassInterface + * @internal + */ + var ReactClassInterface = { + /** + * An array of Mixin objects to include when defining your component. + * + * @type {array} + * @optional + */ + mixins: 'DEFINE_MANY', + + /** + * An object containing properties and methods that should be defined on + * the component's constructor instead of its prototype (static methods). + * + * @type {object} + * @optional + */ + statics: 'DEFINE_MANY', + + /** + * Definition of prop types for this component. + * + * @type {object} + * @optional + */ + propTypes: 'DEFINE_MANY', + + /** + * Definition of context types for this component. + * + * @type {object} + * @optional + */ + contextTypes: 'DEFINE_MANY', + + /** + * Definition of context types this component sets for its children. + * + * @type {object} + * @optional + */ + childContextTypes: 'DEFINE_MANY', + + // ==== Definition methods ==== + + /** + * Invoked when the component is mounted. Values in the mapping will be set on + * `this.props` if that prop is not specified (i.e. using an `in` check). + * + * This method is invoked before `getInitialState` and therefore cannot rely + * on `this.state` or use `this.setState`. + * + * @return {object} + * @optional + */ + getDefaultProps: 'DEFINE_MANY_MERGED', + + /** + * Invoked once before the component is mounted. The return value will be used + * as the initial value of `this.state`. + * + * getInitialState: function() { + * return { + * isOn: false, + * fooBaz: new BazFoo() + * } + * } + * + * @return {object} + * @optional + */ + getInitialState: 'DEFINE_MANY_MERGED', + + /** + * @return {object} + * @optional + */ + getChildContext: 'DEFINE_MANY_MERGED', + + /** + * Uses props from `this.props` and state from `this.state` to render the + * structure of the component. + * + * No guarantees are made about when or how often this method is invoked, so + * it must not have side effects. + * + * render: function() { + * var name = this.props.name; + * return
Hello, {name}!
; + * } + * + * @return {ReactComponent} + * @required + */ + render: 'DEFINE_ONCE', + + // ==== Delegate methods ==== + + /** + * Invoked when the component is initially created and about to be mounted. + * This may have side effects, but any external subscriptions or data created + * by this method must be cleaned up in `componentWillUnmount`. + * + * @optional + */ + componentWillMount: 'DEFINE_MANY', + + /** + * Invoked when the component has been mounted and has a DOM representation. + * However, there is no guarantee that the DOM node is in the document. + * + * Use this as an opportunity to operate on the DOM when the component has + * been mounted (initialized and rendered) for the first time. + * + * @param {DOMElement} rootNode DOM element representing the component. + * @optional + */ + componentDidMount: 'DEFINE_MANY', + + /** + * Invoked before the component receives new props. + * + * Use this as an opportunity to react to a prop transition by updating the + * state using `this.setState`. Current props are accessed via `this.props`. + * + * componentWillReceiveProps: function(nextProps, nextContext) { + * this.setState({ + * likesIncreasing: nextProps.likeCount > this.props.likeCount + * }); + * } + * + * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop + * transition may cause a state change, but the opposite is not true. If you + * need it, you are probably looking for `componentWillUpdate`. + * + * @param {object} nextProps + * @optional + */ + componentWillReceiveProps: 'DEFINE_MANY', + + /** + * Invoked while deciding if the component should be updated as a result of + * receiving new props, state and/or context. + * + * Use this as an opportunity to `return false` when you're certain that the + * transition to the new props/state/context will not require a component + * update. + * + * shouldComponentUpdate: function(nextProps, nextState, nextContext) { + * return !equal(nextProps, this.props) || + * !equal(nextState, this.state) || + * !equal(nextContext, this.context); + * } + * + * @param {object} nextProps + * @param {?object} nextState + * @param {?object} nextContext + * @return {boolean} True if the component should update. + * @optional + */ + shouldComponentUpdate: 'DEFINE_ONCE', + + /** + * Invoked when the component is about to update due to a transition from + * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState` + * and `nextContext`. + * + * Use this as an opportunity to perform preparation before an update occurs. + * + * NOTE: You **cannot** use `this.setState()` in this method. + * + * @param {object} nextProps + * @param {?object} nextState + * @param {?object} nextContext + * @param {ReactReconcileTransaction} transaction + * @optional + */ + componentWillUpdate: 'DEFINE_MANY', + + /** + * Invoked when the component's DOM representation has been updated. + * + * Use this as an opportunity to operate on the DOM when the component has + * been updated. + * + * @param {object} prevProps + * @param {?object} prevState + * @param {?object} prevContext + * @param {DOMElement} rootNode DOM element representing the component. + * @optional + */ + componentDidUpdate: 'DEFINE_MANY', + + /** + * Invoked when the component is about to be removed from its parent and have + * its DOM representation destroyed. + * + * Use this as an opportunity to deallocate any external resources. + * + * NOTE: There is no `componentDidUnmount` since your component will have been + * destroyed by that point. + * + * @optional + */ + componentWillUnmount: 'DEFINE_MANY', + + /** + * Replacement for (deprecated) `componentWillMount`. + * + * @optional + */ + UNSAFE_componentWillMount: 'DEFINE_MANY', + + /** + * Replacement for (deprecated) `componentWillReceiveProps`. + * + * @optional + */ + UNSAFE_componentWillReceiveProps: 'DEFINE_MANY', + + /** + * Replacement for (deprecated) `componentWillUpdate`. + * + * @optional + */ + UNSAFE_componentWillUpdate: 'DEFINE_MANY', + + // ==== Advanced methods ==== + + /** + * Updates the component's currently mounted DOM representation. + * + * By default, this implements React's rendering and reconciliation algorithm. + * Sophisticated clients may wish to override this. + * + * @param {ReactReconcileTransaction} transaction + * @internal + * @overridable + */ + updateComponent: 'OVERRIDE_BASE' + }; + + /** + * Similar to ReactClassInterface but for static methods. + */ + var ReactClassStaticInterface = { + /** + * This method is invoked after a component is instantiated and when it + * receives new props. Return an object to update state in response to + * prop changes. Return null to indicate no change to state. + * + * If an object is returned, its keys will be merged into the existing state. + * + * @return {object || null} + * @optional + */ + getDerivedStateFromProps: 'DEFINE_MANY_MERGED' + }; + + /** + * Mapping from class specification keys to special processing functions. + * + * Although these are declared like instance properties in the specification + * when defining classes using `React.createClass`, they are actually static + * and are accessible on the constructor instead of the prototype. Despite + * being static, they must be defined outside of the "statics" key under + * which all other static methods are defined. + */ + var RESERVED_SPEC_KEYS = { + displayName: function(Constructor, displayName) { + Constructor.displayName = displayName; + }, + mixins: function(Constructor, mixins) { + if (mixins) { + for (var i = 0; i < mixins.length; i++) { + mixSpecIntoComponent(Constructor, mixins[i]); + } + } + }, + childContextTypes: function(Constructor, childContextTypes) { + if (false) { + validateTypeDef(Constructor, childContextTypes, 'childContext'); + } + Constructor.childContextTypes = _assign( + {}, + Constructor.childContextTypes, + childContextTypes + ); + }, + contextTypes: function(Constructor, contextTypes) { + if (false) { + validateTypeDef(Constructor, contextTypes, 'context'); + } + Constructor.contextTypes = _assign( + {}, + Constructor.contextTypes, + contextTypes + ); + }, + /** + * Special case getDefaultProps which should move into statics but requires + * automatic merging. + */ + getDefaultProps: function(Constructor, getDefaultProps) { + if (Constructor.getDefaultProps) { + Constructor.getDefaultProps = createMergedResultFunction( + Constructor.getDefaultProps, + getDefaultProps + ); + } else { + Constructor.getDefaultProps = getDefaultProps; + } + }, + propTypes: function(Constructor, propTypes) { + if (false) { + validateTypeDef(Constructor, propTypes, 'prop'); + } + Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes); + }, + statics: function(Constructor, statics) { + mixStaticSpecIntoComponent(Constructor, statics); + }, + autobind: function() {} + }; + + function validateTypeDef(Constructor, typeDef, location) { + for (var propName in typeDef) { + if (typeDef.hasOwnProperty(propName)) { + // use a warning instead of an _invariant so components + // don't show up in prod but only in __DEV__ + if (false) { + warning( + typeof typeDef[propName] === 'function', + '%s: %s type `%s` is invalid; it must be a function, usually from ' + + 'React.PropTypes.', + Constructor.displayName || 'ReactClass', + ReactPropTypeLocationNames[location], + propName + ); + } + } + } + } + + function validateMethodOverride(isAlreadyDefined, name) { + var specPolicy = ReactClassInterface.hasOwnProperty(name) + ? ReactClassInterface[name] + : null; + + // Disallow overriding of base class methods unless explicitly allowed. + if (ReactClassMixin.hasOwnProperty(name)) { + _invariant( + specPolicy === 'OVERRIDE_BASE', + 'ReactClassInterface: You are attempting to override ' + + '`%s` from your class specification. Ensure that your method names ' + + 'do not overlap with React methods.', + name + ); + } + + // Disallow defining methods more than once unless explicitly allowed. + if (isAlreadyDefined) { + _invariant( + specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED', + 'ReactClassInterface: You are attempting to define ' + + '`%s` on your component more than once. This conflict may be due ' + + 'to a mixin.', + name + ); + } + } + + /** + * Mixin helper which handles policy validation and reserved + * specification keys when building React classes. + */ + function mixSpecIntoComponent(Constructor, spec) { + if (!spec) { + if (false) { + var typeofSpec = typeof spec; + var isMixinValid = typeofSpec === 'object' && spec !== null; + + if (process.env.NODE_ENV !== 'production') { + warning( + isMixinValid, + "%s: You're attempting to include a mixin that is either null " + + 'or not an object. Check the mixins included by the component, ' + + 'as well as any mixins they include themselves. ' + + 'Expected object but got %s.', + Constructor.displayName || 'ReactClass', + spec === null ? null : typeofSpec + ); + } + } + + return; + } + + _invariant( + typeof spec !== 'function', + "ReactClass: You're attempting to " + + 'use a component class or function as a mixin. Instead, just use a ' + + 'regular object.' + ); + _invariant( + !isValidElement(spec), + "ReactClass: You're attempting to " + + 'use a component as a mixin. Instead, just use a regular object.' + ); + + var proto = Constructor.prototype; + var autoBindPairs = proto.__reactAutoBindPairs; + + // By handling mixins before any other properties, we ensure the same + // chaining order is applied to methods with DEFINE_MANY policy, whether + // mixins are listed before or after these methods in the spec. + if (spec.hasOwnProperty(MIXINS_KEY)) { + RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins); + } + + for (var name in spec) { + if (!spec.hasOwnProperty(name)) { + continue; + } + + if (name === MIXINS_KEY) { + // We have already handled mixins in a special case above. + continue; + } + + var property = spec[name]; + var isAlreadyDefined = proto.hasOwnProperty(name); + validateMethodOverride(isAlreadyDefined, name); + + if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) { + RESERVED_SPEC_KEYS[name](Constructor, property); + } else { + // Setup methods on prototype: + // The following member methods should not be automatically bound: + // 1. Expected ReactClass methods (in the "interface"). + // 2. Overridden methods (that were mixed in). + var isReactClassMethod = ReactClassInterface.hasOwnProperty(name); + var isFunction = typeof property === 'function'; + var shouldAutoBind = + isFunction && + !isReactClassMethod && + !isAlreadyDefined && + spec.autobind !== false; + + if (shouldAutoBind) { + autoBindPairs.push(name, property); + proto[name] = property; + } else { + if (isAlreadyDefined) { + var specPolicy = ReactClassInterface[name]; + + // These cases should already be caught by validateMethodOverride. + _invariant( + isReactClassMethod && + (specPolicy === 'DEFINE_MANY_MERGED' || + specPolicy === 'DEFINE_MANY'), + 'ReactClass: Unexpected spec policy %s for key %s ' + + 'when mixing in component specs.', + specPolicy, + name + ); + + // For methods which are defined more than once, call the existing + // methods before calling the new property, merging if appropriate. + if (specPolicy === 'DEFINE_MANY_MERGED') { + proto[name] = createMergedResultFunction(proto[name], property); + } else if (specPolicy === 'DEFINE_MANY') { + proto[name] = createChainedFunction(proto[name], property); + } + } else { + proto[name] = property; + if (false) { + // Add verbose displayName to the function, which helps when looking + // at profiling tools. + if (typeof property === 'function' && spec.displayName) { + proto[name].displayName = spec.displayName + '_' + name; + } + } + } + } + } + } + } + + function mixStaticSpecIntoComponent(Constructor, statics) { + if (!statics) { + return; + } + + for (var name in statics) { + var property = statics[name]; + if (!statics.hasOwnProperty(name)) { + continue; + } + + var isReserved = name in RESERVED_SPEC_KEYS; + _invariant( + !isReserved, + 'ReactClass: You are attempting to define a reserved ' + + 'property, `%s`, that shouldn\'t be on the "statics" key. Define it ' + + 'as an instance property instead; it will still be accessible on the ' + + 'constructor.', + name + ); + + var isAlreadyDefined = name in Constructor; + if (isAlreadyDefined) { + var specPolicy = ReactClassStaticInterface.hasOwnProperty(name) + ? ReactClassStaticInterface[name] + : null; + + _invariant( + specPolicy === 'DEFINE_MANY_MERGED', + 'ReactClass: You are attempting to define ' + + '`%s` on your component more than once. This conflict may be ' + + 'due to a mixin.', + name + ); + + Constructor[name] = createMergedResultFunction(Constructor[name], property); + + return; + } + + Constructor[name] = property; + } + } + + /** + * Merge two objects, but throw if both contain the same key. + * + * @param {object} one The first object, which is mutated. + * @param {object} two The second object + * @return {object} one after it has been mutated to contain everything in two. + */ + function mergeIntoWithNoDuplicateKeys(one, two) { + _invariant( + one && two && typeof one === 'object' && typeof two === 'object', + 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.' + ); + + for (var key in two) { + if (two.hasOwnProperty(key)) { + _invariant( + one[key] === undefined, + 'mergeIntoWithNoDuplicateKeys(): ' + + 'Tried to merge two objects with the same key: `%s`. This conflict ' + + 'may be due to a mixin; in particular, this may be caused by two ' + + 'getInitialState() or getDefaultProps() methods returning objects ' + + 'with clashing keys.', + key + ); + one[key] = two[key]; + } + } + return one; + } + + /** + * Creates a function that invokes two functions and merges their return values. + * + * @param {function} one Function to invoke first. + * @param {function} two Function to invoke second. + * @return {function} Function that invokes the two argument functions. + * @private + */ + function createMergedResultFunction(one, two) { + return function mergedResult() { + var a = one.apply(this, arguments); + var b = two.apply(this, arguments); + if (a == null) { + return b; + } else if (b == null) { + return a; + } + var c = {}; + mergeIntoWithNoDuplicateKeys(c, a); + mergeIntoWithNoDuplicateKeys(c, b); + return c; + }; + } + + /** + * Creates a function that invokes two functions and ignores their return vales. + * + * @param {function} one Function to invoke first. + * @param {function} two Function to invoke second. + * @return {function} Function that invokes the two argument functions. + * @private + */ + function createChainedFunction(one, two) { + return function chainedFunction() { + one.apply(this, arguments); + two.apply(this, arguments); + }; + } + + /** + * Binds a method to the component. + * + * @param {object} component Component whose method is going to be bound. + * @param {function} method Method to be bound. + * @return {function} The bound method. + */ + function bindAutoBindMethod(component, method) { + var boundMethod = method.bind(component); + if (false) { + boundMethod.__reactBoundContext = component; + boundMethod.__reactBoundMethod = method; + boundMethod.__reactBoundArguments = null; + var componentName = component.constructor.displayName; + var _bind = boundMethod.bind; + boundMethod.bind = function(newThis) { + for ( + var _len = arguments.length, + args = Array(_len > 1 ? _len - 1 : 0), + _key = 1; + _key < _len; + _key++ + ) { + args[_key - 1] = arguments[_key]; + } + + // User is trying to bind() an autobound method; we effectively will + // ignore the value of "this" that the user is trying to use, so + // let's warn. + if (newThis !== component && newThis !== null) { + if (process.env.NODE_ENV !== 'production') { + warning( + false, + 'bind(): React component methods may only be bound to the ' + + 'component instance. See %s', + componentName + ); + } + } else if (!args.length) { + if (process.env.NODE_ENV !== 'production') { + warning( + false, + 'bind(): You are binding a component method to the component. ' + + 'React does this for you automatically in a high-performance ' + + 'way, so you can safely remove this call. See %s', + componentName + ); + } + return boundMethod; + } + var reboundMethod = _bind.apply(boundMethod, arguments); + reboundMethod.__reactBoundContext = component; + reboundMethod.__reactBoundMethod = method; + reboundMethod.__reactBoundArguments = args; + return reboundMethod; + }; + } + return boundMethod; + } + + /** + * Binds all auto-bound methods in a component. + * + * @param {object} component Component whose method is going to be bound. + */ + function bindAutoBindMethods(component) { + var pairs = component.__reactAutoBindPairs; + for (var i = 0; i < pairs.length; i += 2) { + var autoBindKey = pairs[i]; + var method = pairs[i + 1]; + component[autoBindKey] = bindAutoBindMethod(component, method); + } + } + + var IsMountedPreMixin = { + componentDidMount: function() { + this.__isMounted = true; + } + }; + + var IsMountedPostMixin = { + componentWillUnmount: function() { + this.__isMounted = false; + } + }; + + /** + * Add more to the ReactClass base class. These are all legacy features and + * therefore not already part of the modern ReactComponent. + */ + var ReactClassMixin = { + /** + * TODO: This will be deprecated because state should always keep a consistent + * type signature and the only use case for this, is to avoid that. + */ + replaceState: function(newState, callback) { + this.updater.enqueueReplaceState(this, newState, callback); + }, + + /** + * Checks whether or not this composite component is mounted. + * @return {boolean} True if mounted, false otherwise. + * @protected + * @final + */ + isMounted: function() { + if (false) { + warning( + this.__didWarnIsMounted, + '%s: isMounted is deprecated. Instead, make sure to clean up ' + + 'subscriptions and pending requests in componentWillUnmount to ' + + 'prevent memory leaks.', + (this.constructor && this.constructor.displayName) || + this.name || + 'Component' + ); + this.__didWarnIsMounted = true; + } + return !!this.__isMounted; + } + }; + + var ReactClassComponent = function() {}; + _assign( + ReactClassComponent.prototype, + ReactComponent.prototype, + ReactClassMixin + ); + + /** + * Creates a composite component class given a class specification. + * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass + * + * @param {object} spec Class specification (which must define `render`). + * @return {function} Component constructor function. + * @public + */ + function createClass(spec) { + // To keep our warnings more understandable, we'll use a little hack here to + // ensure that Constructor.name !== 'Constructor'. This makes sure we don't + // unnecessarily identify a class without displayName as 'Constructor'. + var Constructor = identity(function(props, context, updater) { + // This constructor gets overridden by mocks. The argument is used + // by mocks to assert on what gets mounted. + + if (false) { + warning( + this instanceof Constructor, + 'Something is calling a React component directly. Use a factory or ' + + 'JSX instead. See: https://fb.me/react-legacyfactory' + ); + } + + // Wire up auto-binding + if (this.__reactAutoBindPairs.length) { + bindAutoBindMethods(this); + } + + this.props = props; + this.context = context; + this.refs = emptyObject; + this.updater = updater || ReactNoopUpdateQueue; + + this.state = null; + + // ReactClasses doesn't have constructors. Instead, they use the + // getInitialState and componentWillMount methods for initialization. + + var initialState = this.getInitialState ? this.getInitialState() : null; + if (false) { + // We allow auto-mocks to proceed as if they're returning null. + if ( + initialState === undefined && + this.getInitialState._isMockFunction + ) { + // This is probably bad practice. Consider warning here and + // deprecating this convenience. + initialState = null; + } + } + _invariant( + typeof initialState === 'object' && !Array.isArray(initialState), + '%s.getInitialState(): must return an object or null', + Constructor.displayName || 'ReactCompositeComponent' + ); + + this.state = initialState; + }); + Constructor.prototype = new ReactClassComponent(); + Constructor.prototype.constructor = Constructor; + Constructor.prototype.__reactAutoBindPairs = []; + + injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor)); + + mixSpecIntoComponent(Constructor, IsMountedPreMixin); + mixSpecIntoComponent(Constructor, spec); + mixSpecIntoComponent(Constructor, IsMountedPostMixin); + + // Initialize the defaultProps property after all mixins have been merged. + if (Constructor.getDefaultProps) { + Constructor.defaultProps = Constructor.getDefaultProps(); + } + + if (false) { + // This is a tag to indicate that the use of these method names is ok, + // since it's used with createClass. If it's not, then it's likely a + // mistake so we'll warn you to use the static property, property + // initializer or constructor respectively. + if (Constructor.getDefaultProps) { + Constructor.getDefaultProps.isReactClassApproved = {}; + } + if (Constructor.prototype.getInitialState) { + Constructor.prototype.getInitialState.isReactClassApproved = {}; + } + } + + _invariant( + Constructor.prototype.render, + 'createClass(...): Class specification must implement a `render` method.' + ); + + if (false) { + warning( + !Constructor.prototype.componentShouldUpdate, + '%s has a method called ' + + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + + 'The name is phrased as a question because the function is ' + + 'expected to return a value.', + spec.displayName || 'A component' + ); + warning( + !Constructor.prototype.componentWillRecieveProps, + '%s has a method called ' + + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', + spec.displayName || 'A component' + ); + warning( + !Constructor.prototype.UNSAFE_componentWillRecieveProps, + '%s has a method called UNSAFE_componentWillRecieveProps(). ' + + 'Did you mean UNSAFE_componentWillReceiveProps()?', + spec.displayName || 'A component' + ); + } + + // Reduce time spent doing lookups by setting these on the prototype. + for (var methodName in ReactClassInterface) { + if (!Constructor.prototype[methodName]) { + Constructor.prototype[methodName] = null; + } + } + + return Constructor; + } + + return createClass; + } + + module.exports = factory; + + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + 'use strict'; + + var _prodInvariant = __webpack_require__(5); + + var ReactElement = __webpack_require__(15); + + var invariant = __webpack_require__(11); + + /** + * Returns the first child in a collection of children and verifies that there + * is only one child in the collection. + * + * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only + * + * The current implementation of this function assumes that a single child gets + * passed without a wrapper, but the purpose of this helper function is to + * abstract away the particular structure of children. + * + * @param {?object} children Child collection structure. + * @return {ReactElement} The first and only `ReactElement` contained in the + * structure. + */ + function onlyChild(children) { + !ReactElement.isValidElement(children) ? false ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0; + return children; + } + + module.exports = onlyChild; + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + module.exports = __webpack_require__(35); + + +/***/ }), +/* 35 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + /* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/ + + 'use strict'; + + var ReactDOMComponentTree = __webpack_require__(36); + var ReactDefaultInjection = __webpack_require__(40); + var ReactMount = __webpack_require__(164); + var ReactReconciler = __webpack_require__(61); + var ReactUpdates = __webpack_require__(58); + var ReactVersion = __webpack_require__(169); + + var findDOMNode = __webpack_require__(170); + var getHostComponentFromComposite = __webpack_require__(171); + var renderSubtreeIntoContainer = __webpack_require__(172); + var warning = __webpack_require__(7); + + ReactDefaultInjection.inject(); + + var ReactDOM = { + findDOMNode: findDOMNode, + render: ReactMount.render, + unmountComponentAtNode: ReactMount.unmountComponentAtNode, + version: ReactVersion, + + /* eslint-disable camelcase */ + unstable_batchedUpdates: ReactUpdates.batchedUpdates, + unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer + /* eslint-enable camelcase */ + }; + + // Inject the runtime into a devtools global hook regardless of browser. + // Allows for debugging when the hook is injected on the page. + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') { + __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({ + ComponentTree: { + getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode, + getNodeFromInstance: function (inst) { + // inst is an internal instance (but could be a composite) + if (inst._renderedComponent) { + inst = getHostComponentFromComposite(inst); + } + if (inst) { + return ReactDOMComponentTree.getNodeFromInstance(inst); + } else { + return null; + } + } + }, + Mount: ReactMount, + Reconciler: ReactReconciler + }); + } + + if (false) { + var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); + if (ExecutionEnvironment.canUseDOM && window.top === window.self) { + // First check if devtools is not installed + if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') { + // If we're in Chrome or Firefox, provide a download link if not installed. + if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) { + // Firefox does not have the issue with devtools loaded over file:// + var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1; + console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools'); + } + } + + var testFunc = function testFn() {}; + process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, "It looks like you're using a minified copy of the development build " + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0; + + // If we're in IE8, check to see if we are in compatibility mode and provide + // information on preventing compatibility mode + var ieCompatibilityMode = document.documentMode && document.documentMode < 8; + + process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '') : void 0; + + var expectedFeatures = [ + // shims + Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim]; + + for (var i = 0; i < expectedFeatures.length; i++) { + if (!expectedFeatures[i]) { + process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0; + break; + } + } + } + } + + if (false) { + var ReactInstrumentation = require('./ReactInstrumentation'); + var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook'); + var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook'); + var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook'); + + ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook); + ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook); + ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook); + } + + module.exports = ReactDOM; + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var _prodInvariant = __webpack_require__(37); + + var DOMProperty = __webpack_require__(38); + var ReactDOMComponentFlags = __webpack_require__(39); + + var invariant = __webpack_require__(11); + + var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME; + var Flags = ReactDOMComponentFlags; + + var internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2); + + /** + * Check if a given node should be cached. + */ + function shouldPrecacheNode(node, nodeID) { + return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' '; + } + + /** + * Drill down (through composites and empty components) until we get a host or + * host text component. + * + * This is pretty polymorphic but unavoidable with the current structure we have + * for `_renderedChildren`. + */ + function getRenderedHostOrTextFromComponent(component) { + var rendered; + while (rendered = component._renderedComponent) { + component = rendered; + } + return component; + } + + /** + * Populate `_hostNode` on the rendered host/text component with the given + * DOM node. The passed `inst` can be a composite. + */ + function precacheNode(inst, node) { + var hostInst = getRenderedHostOrTextFromComponent(inst); + hostInst._hostNode = node; + node[internalInstanceKey] = hostInst; + } + + function uncacheNode(inst) { + var node = inst._hostNode; + if (node) { + delete node[internalInstanceKey]; + inst._hostNode = null; + } + } + + /** + * Populate `_hostNode` on each child of `inst`, assuming that the children + * match up with the DOM (element) children of `node`. + * + * We cache entire levels at once to avoid an n^2 problem where we access the + * children of a node sequentially and have to walk from the start to our target + * node every time. + * + * Since we update `_renderedChildren` and the actual DOM at (slightly) + * different times, we could race here and see a newer `_renderedChildren` than + * the DOM nodes we see. To avoid this, ReactMultiChild calls + * `prepareToManageChildren` before we change `_renderedChildren`, at which + * time the container's child nodes are always cached (until it unmounts). + */ + function precacheChildNodes(inst, node) { + if (inst._flags & Flags.hasCachedChildNodes) { + return; + } + var children = inst._renderedChildren; + var childNode = node.firstChild; + outer: for (var name in children) { + if (!children.hasOwnProperty(name)) { + continue; + } + var childInst = children[name]; + var childID = getRenderedHostOrTextFromComponent(childInst)._domID; + if (childID === 0) { + // We're currently unmounting this child in ReactMultiChild; skip it. + continue; + } + // We assume the child nodes are in the same order as the child instances. + for (; childNode !== null; childNode = childNode.nextSibling) { + if (shouldPrecacheNode(childNode, childID)) { + precacheNode(childInst, childNode); + continue outer; + } + } + // We reached the end of the DOM children without finding an ID match. + true ? false ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0; + } + inst._flags |= Flags.hasCachedChildNodes; + } + + /** + * Given a DOM node, return the closest ReactDOMComponent or + * ReactDOMTextComponent instance ancestor. + */ + function getClosestInstanceFromNode(node) { + if (node[internalInstanceKey]) { + return node[internalInstanceKey]; + } + + // Walk up the tree until we find an ancestor whose instance we have cached. + var parents = []; + while (!node[internalInstanceKey]) { + parents.push(node); + if (node.parentNode) { + node = node.parentNode; + } else { + // Top of the tree. This node must not be part of a React tree (or is + // unmounted, potentially). + return null; + } + } + + var closest; + var inst; + for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) { + closest = inst; + if (parents.length) { + precacheChildNodes(inst, node); + } + } + + return closest; + } + + /** + * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent + * instance, or null if the node was not rendered by this React. + */ + function getInstanceFromNode(node) { + var inst = getClosestInstanceFromNode(node); + if (inst != null && inst._hostNode === node) { + return inst; + } else { + return null; + } + } + + /** + * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding + * DOM node. + */ + function getNodeFromInstance(inst) { + // Without this first invariant, passing a non-DOM-component triggers the next + // invariant for a missing parent, which is super confusing. + !(inst._hostNode !== undefined) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0; + + if (inst._hostNode) { + return inst._hostNode; + } + + // Walk up the tree until we find an ancestor whose DOM node we have cached. + var parents = []; + while (!inst._hostNode) { + parents.push(inst); + !inst._hostParent ? false ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0; + inst = inst._hostParent; + } + + // Now parents contains each ancestor that does *not* have a cached native + // node, and `inst` is the deepest ancestor that does. + for (; parents.length; inst = parents.pop()) { + precacheChildNodes(inst, inst._hostNode); + } + + return inst._hostNode; + } + + var ReactDOMComponentTree = { + getClosestInstanceFromNode: getClosestInstanceFromNode, + getInstanceFromNode: getInstanceFromNode, + getNodeFromInstance: getNodeFromInstance, + precacheChildNodes: precacheChildNodes, + precacheNode: precacheNode, + uncacheNode: uncacheNode + }; + + module.exports = ReactDOMComponentTree; + +/***/ }), +/* 37 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + 'use strict'; + + /** + * WARNING: DO NOT manually require this module. + * This is a replacement for `invariant(...)` used by the error code system + * and will _only_ be required by the corresponding babel pass. + * It always throws. + */ + + function reactProdInvariant(code) { + var argCount = arguments.length - 1; + + var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code; + + for (var argIdx = 0; argIdx < argCount; argIdx++) { + message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]); + } + + message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.'; + + var error = new Error(message); + error.name = 'Invariant Violation'; + error.framesToPop = 1; // we don't care about reactProdInvariant's own frame + + throw error; + } + + module.exports = reactProdInvariant; + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. * - * @author Feross Aboukhadijeh - * @license MIT + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var _prodInvariant = __webpack_require__(37); + + var invariant = __webpack_require__(11); + + function checkMask(value, bitmask) { + return (value & bitmask) === bitmask; + } + + var DOMPropertyInjection = { + /** + * Mapping from normalized, camelcased property names to a configuration that + * specifies how the associated DOM property should be accessed or rendered. + */ + MUST_USE_PROPERTY: 0x1, + HAS_BOOLEAN_VALUE: 0x4, + HAS_NUMERIC_VALUE: 0x8, + HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8, + HAS_OVERLOADED_BOOLEAN_VALUE: 0x20, + + /** + * Inject some specialized knowledge about the DOM. This takes a config object + * with the following properties: + * + * isCustomAttribute: function that given an attribute name will return true + * if it can be inserted into the DOM verbatim. Useful for data-* or aria-* + * attributes where it's impossible to enumerate all of the possible + * attribute names, + * + * Properties: object mapping DOM property name to one of the + * DOMPropertyInjection constants or null. If your attribute isn't in here, + * it won't get written to the DOM. + * + * DOMAttributeNames: object mapping React attribute name to the DOM + * attribute name. Attribute names not specified use the **lowercase** + * normalized name. + * + * DOMAttributeNamespaces: object mapping React attribute name to the DOM + * attribute namespace URL. (Attribute names not specified use no namespace.) + * + * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties. + * Property names not specified use the normalized name. + * + * DOMMutationMethods: Properties that require special mutation methods. If + * `value` is undefined, the mutation method should unset the property. + * + * @param {object} domPropertyConfig the config as described above. + */ + injectDOMPropertyConfig: function (domPropertyConfig) { + var Injection = DOMPropertyInjection; + var Properties = domPropertyConfig.Properties || {}; + var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {}; + var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {}; + var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {}; + var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {}; + + if (domPropertyConfig.isCustomAttribute) { + DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute); + } + + for (var propName in Properties) { + !!DOMProperty.properties.hasOwnProperty(propName) ? false ? invariant(false, 'injectDOMPropertyConfig(...): You\'re trying to inject DOM property \'%s\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : _prodInvariant('48', propName) : void 0; + + var lowerCased = propName.toLowerCase(); + var propConfig = Properties[propName]; + + var propertyInfo = { + attributeName: lowerCased, + attributeNamespace: null, + propertyName: propName, + mutationMethod: null, + + mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY), + hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE), + hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE), + hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE), + hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE) + }; + !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? false ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0; + + if (false) { + DOMProperty.getPossibleStandardName[lowerCased] = propName; + } + + if (DOMAttributeNames.hasOwnProperty(propName)) { + var attributeName = DOMAttributeNames[propName]; + propertyInfo.attributeName = attributeName; + if (false) { + DOMProperty.getPossibleStandardName[attributeName] = propName; + } + } + + if (DOMAttributeNamespaces.hasOwnProperty(propName)) { + propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName]; + } + + if (DOMPropertyNames.hasOwnProperty(propName)) { + propertyInfo.propertyName = DOMPropertyNames[propName]; + } + + if (DOMMutationMethods.hasOwnProperty(propName)) { + propertyInfo.mutationMethod = DOMMutationMethods[propName]; + } + + DOMProperty.properties[propName] = propertyInfo; + } + } + }; + + /* eslint-disable max-len */ + var ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD'; + /* eslint-enable max-len */ + + /** + * DOMProperty exports lookup objects that can be used like functions: + * + * > DOMProperty.isValid['id'] + * true + * > DOMProperty.isValid['foobar'] + * undefined + * + * Although this may be confusing, it performs better in general. + * + * @see http://jsperf.com/key-exists + * @see http://jsperf.com/key-missing */ -"use strict";function r(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}function o(){return a.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function i(t,e){if(o()=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function m(t){return+t!=t&&(t=0),a.alloc(+t)}function y(t,e){if(a.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return W(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return J(t).length;default:if(r)return W(t).length;e=(""+e).toLowerCase(),r=!0}}function g(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,e>>>=0,n<=e)return"";for(t||(t="utf8");;)switch(t){case"hex":return A(this,e,n);case"utf8":case"utf-8":return k(this,e,n);case"ascii":return I(this,e,n);case"latin1":case"binary":return R(this,e,n);case"base64":return O(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function _(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function b(t,e,n,r,o){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(o)return-1;n=t.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof e&&(e=a.from(e,r)),a.isBuffer(e))return 0===e.length?-1:w(t,e,n,r,o);if("number"==typeof e)return e&=255,a.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):w(t,[e],n,r,o);throw new TypeError("val must be string, number or Buffer")}function w(t,e,n,r,o){function i(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}var a=1,u=t.length,s=e.length;if(void 0!==r&&(r=String(r).toLowerCase(),"ucs2"===r||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;a=2,u/=2,s/=2,n/=2}var c;if(o){var l=-1;for(c=n;cu&&(n=u-s),c=n;c>=0;c--){for(var f=!0,p=0;po&&(r=o)):r=o;var i=e.length;if(i%2!==0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var a=0;a239?4:i>223?3:i>191?2:1;if(o+u<=n){var s,c,l,f;switch(u){case 1:i<128&&(a=i);break;case 2:s=t[o+1],128===(192&s)&&(f=(31&i)<<6|63&s,f>127&&(a=f));break;case 3:s=t[o+1],c=t[o+2],128===(192&s)&&128===(192&c)&&(f=(15&i)<<12|(63&s)<<6|63&c,f>2047&&(f<55296||f>57343)&&(a=f));break;case 4:s=t[o+1],c=t[o+2],l=t[o+3],128===(192&s)&&128===(192&c)&&128===(192&l)&&(f=(15&i)<<18|(63&s)<<12|(63&c)<<6|63&l,f>65535&&f<1114112&&(a=f))}}null===a?(a=65533,u=1):a>65535&&(a-=65536,r.push(a>>>10&1023|55296),a=56320|1023&a),r.push(a),o+=u}return M(r)}function M(t){var e=t.length;if(e<=tt)return String.fromCharCode.apply(String,t);for(var n="",r=0;rr)&&(n=r);for(var o="",i=e;in)throw new RangeError("Trying to access beyond buffer length")}function L(t,e,n,r,o,i){if(!a.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>o||et.length)throw new RangeError("Index out of range")}function j(t,e,n,r){e<0&&(e=65535+e+1);for(var o=0,i=Math.min(t.length-n,2);o>>8*(r?o:1-o)}function U(t,e,n,r){e<0&&(e=4294967295+e+1);for(var o=0,i=Math.min(t.length-n,4);o>>8*(r?o:3-o)&255}function B(t,e,n,r,o,i){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function F(t,e,n,r,o){return o||B(t,e,n,4,3.4028234663852886e38,-3.4028234663852886e38),G.write(t,e,n,r,23,4),n+4}function z(t,e,n,r,o){return o||B(t,e,n,8,1.7976931348623157e308,-1.7976931348623157e308),G.write(t,e,n,r,52,8),n+8}function q(t){if(t=V(t).replace(et,""),t.length<2)return"";for(;t.length%4!==0;)t+="=";return t}function V(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function Y(t){return t<16?"0"+t.toString(16):t.toString(16)}function W(t,e){e=e||1/0;for(var n,r=t.length,o=null,i=[],a=0;a55295&&n<57344){if(!o){if(n>56319){(e-=3)>-1&&i.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(e-=3)>-1&&i.push(239,191,189),o=n;continue}n=(o-55296<<10|n-56320)+65536}else o&&(e-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((e-=1)<0)break;i.push(n)}else if(n<2048){if((e-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function K(t){for(var e=[],n=0;n>8,o=n%256,i.push(o),i.push(r);return i}function J(t){return $.toByteArray(q(t))}function X(t,e,n,r){for(var o=0;o=e.length||o>=t.length);++o)e[o+n]=t[o];return o}function Q(t){return t!==t}var $=n(283),G=n(284),Z=n(285);e.Buffer=a,e.SlowBuffer=m,e.INSPECT_MAX_BYTES=50,a.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:r(),e.kMaxLength=o(),a.poolSize=8192,a._augment=function(t){return t.__proto__=a.prototype,t},a.from=function(t,e,n){return u(null,t,e,n)},a.TYPED_ARRAY_SUPPORT&&(a.prototype.__proto__=Uint8Array.prototype,a.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&a[Symbol.species]===a&&Object.defineProperty(a,Symbol.species,{value:null,configurable:!0})),a.alloc=function(t,e,n){return c(null,t,e,n)},a.allocUnsafe=function(t){return l(null,t)},a.allocUnsafeSlow=function(t){return l(null,t)},a.isBuffer=function(t){return!(null==t||!t._isBuffer)},a.compare=function(t,e){if(!a.isBuffer(t)||!a.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,o=0,i=Math.min(n,r);o0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),""},a.prototype.compare=function(t,e,n,r,o){if(!a.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),e<0||n>t.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&e>=n)return 0;if(r>=o)return-1;if(e>=n)return 1;if(e>>>=0,n>>>=0,r>>>=0,o>>>=0,this===t)return 0;for(var i=o-r,u=n-e,s=Math.min(i,u),c=this.slice(r,o),l=t.slice(e,n),f=0;fo)&&(n=o),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return E(this,t,e,n);case"utf8":case"utf-8":return C(this,t,e,n);case"ascii":return S(this,t,e,n);case"latin1":case"binary":return x(this,t,e,n);case"base64":return P(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,e,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var tt=4096;a.prototype.slice=function(t,e){var n=this.length;t=~~t,e=void 0===e?n:~~e,t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),e0&&(o*=256);)r+=this[t+--e]*o;return r},a.prototype.readUInt8=function(t,e){return e||D(t,1,this.length),this[t]},a.prototype.readUInt16LE=function(t,e){return e||D(t,2,this.length),this[t]|this[t+1]<<8},a.prototype.readUInt16BE=function(t,e){return e||D(t,2,this.length),this[t]<<8|this[t+1]},a.prototype.readUInt32LE=function(t,e){return e||D(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},a.prototype.readUInt32BE=function(t,e){return e||D(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},a.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||D(t,e,this.length);for(var r=this[t],o=1,i=0;++i=o&&(r-=Math.pow(2,8*e)),r},a.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||D(t,e,this.length);for(var r=e,o=1,i=this[t+--r];r>0&&(o*=256);)i+=this[t+--r]*o;return o*=128,i>=o&&(i-=Math.pow(2,8*e)),i},a.prototype.readInt8=function(t,e){return e||D(t,1,this.length),128&this[t]?(255-this[t]+1)*-1:this[t]},a.prototype.readInt16LE=function(t,e){e||D(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},a.prototype.readInt16BE=function(t,e){e||D(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},a.prototype.readInt32LE=function(t,e){return e||D(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},a.prototype.readInt32BE=function(t,e){return e||D(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},a.prototype.readFloatLE=function(t,e){return e||D(t,4,this.length),G.read(this,t,!0,23,4)},a.prototype.readFloatBE=function(t,e){return e||D(t,4,this.length),G.read(this,t,!1,23,4)},a.prototype.readDoubleLE=function(t,e){return e||D(t,8,this.length),G.read(this,t,!0,52,8)},a.prototype.readDoubleBE=function(t,e){return e||D(t,8,this.length),G.read(this,t,!1,52,8)},a.prototype.writeUIntLE=function(t,e,n,r){if(t=+t,e|=0,n|=0,!r){var o=Math.pow(2,8*n)-1;L(this,t,e,n,o,0)}var i=1,a=0;for(this[e]=255&t;++a=0&&(a*=256);)this[e+i]=t/a&255;return e+n},a.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||L(this,t,e,1,255,0),a.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},a.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||L(this,t,e,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):j(this,t,e,!0),e+2},a.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||L(this,t,e,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):j(this,t,e,!1),e+2},a.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||L(this,t,e,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):U(this,t,e,!0),e+4},a.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||L(this,t,e,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):U(this,t,e,!1),e+4},a.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var o=Math.pow(2,8*n-1);L(this,t,e,n,o-1,-o)}var i=0,a=1,u=0;for(this[e]=255&t;++i>0)-u&255;return e+n},a.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var o=Math.pow(2,8*n-1);L(this,t,e,n,o-1,-o)}var i=n-1,a=1,u=0;for(this[e+i]=255&t;--i>=0&&(a*=256);)t<0&&0===u&&0!==this[e+i+1]&&(u=1),this[e+i]=(t/a>>0)-u&255;return e+n},a.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||L(this,t,e,1,127,-128),a.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},a.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||L(this,t,e,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):j(this,t,e,!0),e+2},a.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||L(this,t,e,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):j(this,t,e,!1),e+2},a.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||L(this,t,e,4,2147483647,-2147483648),a.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):U(this,t,e,!0),e+4},a.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||L(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),a.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):U(this,t,e,!1),e+4},a.prototype.writeFloatLE=function(t,e,n){return F(this,t,e,!0,n)},a.prototype.writeFloatBE=function(t,e,n){return F(this,t,e,!1,n)},a.prototype.writeDoubleLE=function(t,e,n){return z(this,t,e,!0,n)},a.prototype.writeDoubleBE=function(t,e,n){return z(this,t,e,!1,n)},a.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e=0;--o)t[o+e]=this[o+n];else if(i<1e3||!a.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,t||(t=0);var i;if("number"==typeof t)for(i=e;i0)throw new Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");n===-1&&(n=e);var r=n===e?0:4-n%4;return[n,r]}function r(t){var e=n(t),r=e[0],o=e[1];return 3*(r+o)/4-o}function o(t,e,n){return 3*(e+n)/4-n}function i(t){for(var e,r=n(t),i=r[0],a=r[1],u=new f(o(t,i,a)),s=0,c=a>0?i-4:i,p=0;p>16&255,u[s++]=e>>8&255,u[s++]=255&e;return 2===a&&(e=l[t.charCodeAt(p)]<<2|l[t.charCodeAt(p+1)]>>4,u[s++]=255&e),1===a&&(e=l[t.charCodeAt(p)]<<10|l[t.charCodeAt(p+1)]<<4|l[t.charCodeAt(p+2)]>>2,u[s++]=e>>8&255,u[s++]=255&e),u}function a(t){return c[t>>18&63]+c[t>>12&63]+c[t>>6&63]+c[63&t]}function u(t,e,n){for(var r,o=[],i=e;is?s:a+i));return 1===r?(e=t[n-1],o.push(c[e>>2]+c[e<<4&63]+"==")):2===r&&(e=(t[n-2]<<8)+t[n-1],o.push(c[e>>10]+c[e>>4&63]+c[e<<2&63]+"=")),o.join("")}e.byteLength=r,e.toByteArray=i,e.fromByteArray=s;for(var c=[],l=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=0,h=p.length;d>1,l=-7,f=n?o-1:0,p=n?-1:1,d=t[e+f];for(f+=p,i=d&(1<<-l)-1,d>>=-l,l+=u;l>0;i=256*i+t[e+f],f+=p,l-=8);for(a=i&(1<<-l)-1,i>>=-l,l+=r;l>0;a=256*a+t[e+f],f+=p,l-=8);if(0===i)i=1-c;else{if(i===s)return a?NaN:(d?-1:1)*(1/0);a+=Math.pow(2,r),i-=c}return(d?-1:1)*a*Math.pow(2,i-r)},e.write=function(t,e,n,r,o,i){var a,u,s,c=8*i-o-1,l=(1<>1,p=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:i-1,h=r?1:-1,v=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(u=isNaN(e)?1:0,a=l):(a=Math.floor(Math.log(e)/Math.LN2),e*(s=Math.pow(2,-a))<1&&(a--,s*=2),e+=a+f>=1?p/s:p*Math.pow(2,1-f),e*s>=2&&(a++,s/=2),a+f>=l?(u=0,a=l):a+f>=1?(u=(e*s-1)*Math.pow(2,o),a+=f):(u=e*Math.pow(2,f-1)*Math.pow(2,o),a=0));o>=8;t[n+d]=255&u,d+=h,u/=256,o-=8);for(a=a<0;t[n+d]=255&a,d+=h,a/=256,c-=8);t[n+d-h]|=128*v}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e){var n,r=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return 4*t+17},e.getSymbolTotalCodewords=function(t){return r[t]},e.getBCHDigit=function(t){for(var e=0;0!==t;)e++,t>>>=1;return e},e.setToSJISFunction=function(t){if("function"!=typeof t)throw new Error('"toSJISFunc" is not a valid function.');n=t},e.isKanjiModeEnabled=function(){return"undefined"!=typeof n},e.toSJIS=function(t){return n(t)}},function(t,e){function n(t){if("string"!=typeof t)throw new Error("Param is not a string");var n=t.toLowerCase();switch(n){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+t)}}e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2},e.isValid=function(t){return t&&"undefined"!=typeof t.bit&&t.bit>=0&&t.bit<4},e.from=function(t,r){if(e.isValid(t))return t;try{return n(t)}catch(t){return r}}},function(t,e){function n(){this.buffer=[],this.length=0}n.prototype={get:function(t){var e=Math.floor(t/8);return 1===(this.buffer[e]>>>7-t%8&1)},put:function(t,e){for(var n=0;n>>e-n-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}},t.exports=n},function(t,e,n){function r(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=new o(t*t),this.data.fill(0),this.reservedBit=new o(t*t),this.reservedBit.fill(0)}var o=n(281);r.prototype.set=function(t,e,n,r){var o=t*this.size+e;this.data[o]=n,r&&(this.reservedBit[o]=!0)},r.prototype.get=function(t,e){return this.data[t*this.size+e]},r.prototype.xor=function(t,e,n){this.data[t*this.size+e]^=n},r.prototype.isReserved=function(t,e){return this.reservedBit[t*this.size+e]},t.exports=r},function(t,e,n){var r=n(287).getSymbolSize;e.getRowColCoords=function(t){if(1===t)return[];for(var e=Math.floor(t/7)+2,n=r(t),o=145===n?26:2*Math.ceil((n-13)/(2*e-2)),i=[n-7],a=1;a=0&&t<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(t){for(var e=t.size,n=0,o=0,i=0,a=null,u=null,s=0;s=5&&(n+=r.N1+(o-5)),a=l,o=1),l=t.get(c,s),l===u?i++:(i>=5&&(n+=r.N1+(i-5)),u=l,i=1)}o>=5&&(n+=r.N1+(o-5)),i>=5&&(n+=r.N1+(i-5))}return n},e.getPenaltyN2=function(t){for(var e=t.size,n=0,o=0;o=10&&(1488===o||93===o)&&n++,i=i<<1&2047|t.get(u,a),u>=10&&(1488===i||93===i)&&n++}return n*r.N3},e.getPenaltyN4=function(t){for(var e=0,n=t.data.length,o=0;o0){var u=new o(this.degree);return u.fill(0),r.copy(u,a),u}return r},t.exports=r},function(t,e,n){var r=n(281),o=n(297);e.mul=function(t,e){var n=new r(t.length+e.length-1);n.fill(0);for(var i=0;i=0;){for(var i=n[0],a=0;a1)return a(t,o);if(0===t.length)return 1;n=t[0]}else n=t;return r(n.mode,n.getLength(),o)},e.getEncodedBits=function(t){if(!f.isValid(t)||t<7)throw new Error("Invalid QR Code version");for(var e=t<<12;u.getBCHDigit(e)-h>=0;)e^=d<=1&&e<10?t.ccBits[0]:e<27?t.ccBits[1]:t.ccBits[2]},e.getBestModeForData=function(t){return i.testNumeric(t)?e.NUMERIC:i.testAlphanumeric(t)?e.ALPHANUMERIC:i.testKanji(t)?e.KANJI:e.BYTE; -},e.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},e.isValid=function(t){return t&&t.bit&&t.ccBits},e.from=function(t,n){if(e.isValid(t))return t;try{return r(t)}catch(t){return n}}},function(t,e){e.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40}},function(t,e){var n="[0-9]+",r="[A-Z $%*+\\-./:]+",o="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";o=o.replace(/u/g,"\\u");var i="(?:(?![A-Z0-9 $%*+\\-./:]|"+o+")(?:.|[\r\n]))+";e.KANJI=new RegExp(o,"g"),e.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),e.BYTE=new RegExp(i,"g"),e.NUMERIC=new RegExp(n,"g"),e.ALPHANUMERIC=new RegExp(r,"g");var a=new RegExp("^"+o+"$"),u=new RegExp("^"+n+"$"),s=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");e.testKanji=function(t){return a.test(t)},e.testNumeric=function(t){return u.test(t)},e.testAlphanumeric=function(t){return s.test(t)}},function(t,e,n){var r=n(287),o=1335,i=21522,a=r.getBCHDigit(o);e.getEncodedBits=function(t,e){for(var n=t.bit<<3|e,u=n<<10;r.getBCHDigit(u)-a>=0;)u^=o<=0?t[t.length-1]:null;return n&&n.mode===e.mode?(t[t.length-1].data+=e.data,t):(t.push(e),t)},[])}function s(t){for(var e=[],n=0;n0&&(n=this.data.substr(e),r=parseInt(n,10),t.put(r,3*o+1))},t.exports=r},function(t,e,n){function r(t){this.mode=o.ALPHANUMERIC,this.data=t}var o=n(299),i=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];r.getBitsLength=function(t){return 11*Math.floor(t/2)+6*(t%2)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(t){var e;for(e=0;e+2<=this.data.length;e+=2){var n=45*i.indexOf(this.data[e]);n+=i.indexOf(this.data[e+1]),t.put(n,11)}this.data.length%2&&t.put(i.indexOf(this.data[e]),6)},t.exports=r},function(t,e,n){function r(t){this.mode=i.BYTE,this.data=new o(t)}var o=n(281),i=n(299);r.getBitsLength=function(t){return 8*t},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(t){for(var e=0,n=this.data.length;e=33088&&n<=40956)n-=33088;else{if(!(n>=57408&&n<=60351))throw new Error("Invalid SJIS character: "+this.data[e]+"\nMake sure your charset is UTF-8");n-=49472}n=192*(n>>>8&255)+(255&n),t.put(n,13)}},t.exports=r},function(t,e,n){"use strict";var r={single_source_shortest_paths:function(t,e,n){var o={},i={};i[e]=0;var a=r.PriorityQueue.make();a.push(e,0);for(var u,s,c,l,f,p,d,h,v;!a.empty();){u=a.pop(),s=u.value,l=u.cost,f=t[s]||{};for(c in f)f.hasOwnProperty(c)&&(p=f[c],d=l+p,h=i[c],v="undefined"==typeof i[c],(v||h>d)&&(i[c]=d,a.push(c,d),o[c]=s))}if("undefined"!=typeof n&&"undefined"==typeof i[n]){var m=["Could not find a path from ",e," to ",n,"."].join("");throw new Error(m)}return o},extract_shortest_path_from_predecessor_list:function(t,e){for(var n,r=[],o=e;o;)r.push(o),n=t[o],o=t[o];return r.reverse(),r},find_path:function(t,e,n){var o=r.single_source_shortest_paths(t,e,n);return r.extract_shortest_path_from_predecessor_list(o,n)},PriorityQueue:{make:function(t){var e,n=r.PriorityQueue,o={};t=t||{};for(e in n)n.hasOwnProperty(e)&&(o[e]=n[e]);return o.queue=[],o.sorter=t.sorter||n.default_sorter,o},default_sorter:function(t,e){return t.cost-e.cost},push:function(t,e){var n={value:t,cost:e};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};t.exports=r},function(t,e,n){function r(t,e,n){t.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=n,e.width=n,e.style.height=n+"px",e.style.width=n+"px"}function o(){try{return document.createElement("canvas")}catch(t){throw new Error("You need to specify a canvas element")}}var i=n(310);e.render=function(t,e,n){var a=n,u=e;"undefined"!=typeof a||e&&e.getContext||(a=e,e=void 0),e||(u=o()),a=i.getOptions(a);var s=i.getImageWidth(t.modules.size,a),c=u.getContext("2d"),l=c.createImageData(s,s);return i.qrToImageData(l.data,t,a),r(c,u,s),c.putImageData(l,0,0),u},e.renderToDataURL=function(t,n,r){var o=r;"undefined"!=typeof o||n&&n.getContext||(o=n,n=void 0),o||(o={});var i=e.render(t,n,o),a=o.type||"image/png",u=o.rendererOpts||{};return i.toDataURL(a,u.quality)}},function(t,e){function n(t){if("string"!=typeof t)throw new Error("Color should be defined as hex string");var e=t.slice().replace("#","").split("");if(e.length<3||5===e.length||e.length>8)throw new Error("Invalid hex color: "+t);3!==e.length&&4!==e.length||(e=Array.prototype.concat.apply([],e.map(function(t){return[t,t]}))),6===e.length&&e.push("F","F");var n=parseInt(e.join(""),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:255&n,hex:"#"+e.slice(0,6).join("")}}e.getOptions=function(t){t||(t={}),t.color||(t.color={});var e="undefined"==typeof t.margin||null===t.margin||t.margin<0?4:t.margin,r=t.width&&t.width>=21?t.width:void 0,o=t.scale||4;return{width:r,scale:r?4:o,margin:e,color:{dark:n(t.color.dark||"#000000ff"),light:n(t.color.light||"#ffffffff")},type:t.type,rendererOpts:t.rendererOpts||{}}},e.getScale=function(t,e){return e.width&&e.width>=t+2*e.margin?e.width/(t+2*e.margin):e.scale},e.getImageWidth=function(t,n){var r=e.getScale(t,n);return Math.floor((t+2*n.margin)*r)},e.qrToImageData=function(t,n,r){for(var o=n.modules.size,i=n.modules.data,a=e.getScale(o,r),u=Math.floor((o+2*r.margin)*a),s=r.margin*a,c=[r.color.light,r.color.dark],l=0;l=s&&f>=s&&l0&&c>0&&t[s-1]||(r+=a?o("M",c+n,.5+l+n):o("m",i,0),i=0,a=!1),c+1':"",f="',p='viewBox="0 0 '+c+" "+c+'"',d=o.width?'width="'+o.width+'" height="'+o.width+'" ':"",h=''+l+f+"\n";return"function"==typeof n&&n(null,h),h}},function(t,e){t.exports={guide:"_2iIk",right:"_15Dj",left:"_I0Q",qr:"_111n",up:"_2fH-",down:"_1Pbk",space:"_3qj_"}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var o=n(203),i=r(o),a=n(267),u=r(a),s={37:"left",38:"rotate",39:"right",40:"down",32:"space",83:"s",82:"r",80:"p"},c=void 0,l=Object.keys(s).map(function(t){return parseInt(t,10)}),f=function(t){if(t.metaKey!==!0&&l.indexOf(t.keyCode)!==-1){var e=s[t.keyCode];e!==c&&(c=e,u.default[e].down(i.default))}},p=function(t){if(t.metaKey!==!0&&l.indexOf(t.keyCode)!==-1){var e=s[t.keyCode];e===c&&(c=""),u.default[e].up(i.default)}};document.addEventListener("keydown",f,!0),document.addEventListener("keyup",p,!0)}]); + var DOMProperty = { + ID_ATTRIBUTE_NAME: 'data-reactid', + ROOT_ATTRIBUTE_NAME: 'data-reactroot', + + ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR, + ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040', + + /** + * Map from property "standard name" to an object with info about how to set + * the property in the DOM. Each object contains: + * + * attributeName: + * Used when rendering markup or with `*Attribute()`. + * attributeNamespace + * propertyName: + * Used on DOM node instances. (This includes properties that mutate due to + * external factors.) + * mutationMethod: + * If non-null, used instead of the property or `setAttribute()` after + * initial render. + * mustUseProperty: + * Whether the property must be accessed and mutated as an object property. + * hasBooleanValue: + * Whether the property should be removed when set to a falsey value. + * hasNumericValue: + * Whether the property must be numeric or parse as a numeric and should be + * removed when set to a falsey value. + * hasPositiveNumericValue: + * Whether the property must be positive numeric or parse as a positive + * numeric and should be removed when set to a falsey value. + * hasOverloadedBooleanValue: + * Whether the property can be used as a flag as well as with a value. + * Removed when strictly equal to false; present without a value when + * strictly equal to true; present with a value otherwise. + */ + properties: {}, + + /** + * Mapping from lowercase property names to the properly cased version, used + * to warn in the case of missing properties. Available only in __DEV__. + * + * autofocus is predefined, because adding it to the property whitelist + * causes unintended side effects. + * + * @type {Object} + */ + getPossibleStandardName: false ? { autofocus: 'autoFocus' } : null, + + /** + * All of the isCustomAttribute() functions that have been injected. + */ + _isCustomAttributeFunctions: [], + + /** + * Checks whether a property name is a custom attribute. + * @method + */ + isCustomAttribute: function (attributeName) { + for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) { + var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i]; + if (isCustomAttributeFn(attributeName)) { + return true; + } + } + return false; + }, + + injection: DOMPropertyInjection + }; + + module.exports = DOMProperty; + +/***/ }), +/* 39 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2015-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var ReactDOMComponentFlags = { + hasCachedChildNodes: 1 << 0 + }; + + module.exports = ReactDOMComponentFlags; + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var ARIADOMPropertyConfig = __webpack_require__(41); + var BeforeInputEventPlugin = __webpack_require__(42); + var ChangeEventPlugin = __webpack_require__(57); + var DefaultEventPluginOrder = __webpack_require__(70); + var EnterLeaveEventPlugin = __webpack_require__(71); + var HTMLDOMPropertyConfig = __webpack_require__(76); + var ReactComponentBrowserEnvironment = __webpack_require__(77); + var ReactDOMComponent = __webpack_require__(90); + var ReactDOMComponentTree = __webpack_require__(36); + var ReactDOMEmptyComponent = __webpack_require__(135); + var ReactDOMTreeTraversal = __webpack_require__(136); + var ReactDOMTextComponent = __webpack_require__(137); + var ReactDefaultBatchingStrategy = __webpack_require__(138); + var ReactEventListener = __webpack_require__(139); + var ReactInjection = __webpack_require__(142); + var ReactReconcileTransaction = __webpack_require__(143); + var SVGDOMPropertyConfig = __webpack_require__(151); + var SelectEventPlugin = __webpack_require__(152); + var SimpleEventPlugin = __webpack_require__(153); + + var alreadyInjected = false; + + function inject() { + if (alreadyInjected) { + // TODO: This is currently true because these injections are shared between + // the client and the server package. They should be built independently + // and not share any injection state. Then this problem will be solved. + return; + } + alreadyInjected = true; + + ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener); + + /** + * Inject modules for resolving DOM hierarchy and plugin ordering. + */ + ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder); + ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree); + ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal); + + /** + * Some important event plugins included by default (without having to require + * them). + */ + ReactInjection.EventPluginHub.injectEventPluginsByName({ + SimpleEventPlugin: SimpleEventPlugin, + EnterLeaveEventPlugin: EnterLeaveEventPlugin, + ChangeEventPlugin: ChangeEventPlugin, + SelectEventPlugin: SelectEventPlugin, + BeforeInputEventPlugin: BeforeInputEventPlugin + }); + + ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent); + + ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent); + + ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig); + ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig); + ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig); + + ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) { + return new ReactDOMEmptyComponent(instantiate); + }); + + ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction); + ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy); + + ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment); + } + + module.exports = { + inject: inject + }; + +/***/ }), +/* 41 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var ARIADOMPropertyConfig = { + Properties: { + // Global States and Properties + 'aria-current': 0, // state + 'aria-details': 0, + 'aria-disabled': 0, // state + 'aria-hidden': 0, // state + 'aria-invalid': 0, // state + 'aria-keyshortcuts': 0, + 'aria-label': 0, + 'aria-roledescription': 0, + // Widget Attributes + 'aria-autocomplete': 0, + 'aria-checked': 0, + 'aria-expanded': 0, + 'aria-haspopup': 0, + 'aria-level': 0, + 'aria-modal': 0, + 'aria-multiline': 0, + 'aria-multiselectable': 0, + 'aria-orientation': 0, + 'aria-placeholder': 0, + 'aria-pressed': 0, + 'aria-readonly': 0, + 'aria-required': 0, + 'aria-selected': 0, + 'aria-sort': 0, + 'aria-valuemax': 0, + 'aria-valuemin': 0, + 'aria-valuenow': 0, + 'aria-valuetext': 0, + // Live Region Attributes + 'aria-atomic': 0, + 'aria-busy': 0, + 'aria-live': 0, + 'aria-relevant': 0, + // Drag-and-Drop Attributes + 'aria-dropeffect': 0, + 'aria-grabbed': 0, + // Relationship Attributes + 'aria-activedescendant': 0, + 'aria-colcount': 0, + 'aria-colindex': 0, + 'aria-colspan': 0, + 'aria-controls': 0, + 'aria-describedby': 0, + 'aria-errormessage': 0, + 'aria-flowto': 0, + 'aria-labelledby': 0, + 'aria-owns': 0, + 'aria-posinset': 0, + 'aria-rowcount': 0, + 'aria-rowindex': 0, + 'aria-rowspan': 0, + 'aria-setsize': 0 + }, + DOMAttributeNames: {}, + DOMPropertyNames: {} + }; + + module.exports = ARIADOMPropertyConfig; + +/***/ }), +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var EventPropagators = __webpack_require__(43); + var ExecutionEnvironment = __webpack_require__(50); + var FallbackCompositionState = __webpack_require__(51); + var SyntheticCompositionEvent = __webpack_require__(54); + var SyntheticInputEvent = __webpack_require__(56); + + var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space + var START_KEYCODE = 229; + + var canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window; + + var documentMode = null; + if (ExecutionEnvironment.canUseDOM && 'documentMode' in document) { + documentMode = document.documentMode; + } + + // Webkit offers a very useful `textInput` event that can be used to + // directly represent `beforeInput`. The IE `textinput` event is not as + // useful, so we don't use it. + var canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto(); + + // In IE9+, we have access to composition events, but the data supplied + // by the native compositionend event may be incorrect. Japanese ideographic + // spaces, for instance (\u3000) are not recorded correctly. + var useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11); + + /** + * Opera <= 12 includes TextEvent in window, but does not fire + * text input events. Rely on keypress instead. + */ + function isPresto() { + var opera = window.opera; + return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12; + } + + var SPACEBAR_CODE = 32; + var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE); + + // Events and their corresponding property names. + var eventTypes = { + beforeInput: { + phasedRegistrationNames: { + bubbled: 'onBeforeInput', + captured: 'onBeforeInputCapture' + }, + dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste'] + }, + compositionEnd: { + phasedRegistrationNames: { + bubbled: 'onCompositionEnd', + captured: 'onCompositionEndCapture' + }, + dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown'] + }, + compositionStart: { + phasedRegistrationNames: { + bubbled: 'onCompositionStart', + captured: 'onCompositionStartCapture' + }, + dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown'] + }, + compositionUpdate: { + phasedRegistrationNames: { + bubbled: 'onCompositionUpdate', + captured: 'onCompositionUpdateCapture' + }, + dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown'] + } + }; + + // Track whether we've ever handled a keypress on the space key. + var hasSpaceKeypress = false; + + /** + * Return whether a native keypress event is assumed to be a command. + * This is required because Firefox fires `keypress` events for key commands + * (cut, copy, select-all, etc.) even though no character is inserted. + */ + function isKeypressCommand(nativeEvent) { + return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && + // ctrlKey && altKey is equivalent to AltGr, and is not a command. + !(nativeEvent.ctrlKey && nativeEvent.altKey); + } + + /** + * Translate native top level events into event types. + * + * @param {string} topLevelType + * @return {object} + */ + function getCompositionEventType(topLevelType) { + switch (topLevelType) { + case 'topCompositionStart': + return eventTypes.compositionStart; + case 'topCompositionEnd': + return eventTypes.compositionEnd; + case 'topCompositionUpdate': + return eventTypes.compositionUpdate; + } + } + + /** + * Does our fallback best-guess model think this event signifies that + * composition has begun? + * + * @param {string} topLevelType + * @param {object} nativeEvent + * @return {boolean} + */ + function isFallbackCompositionStart(topLevelType, nativeEvent) { + return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE; + } + + /** + * Does our fallback mode think that this event is the end of composition? + * + * @param {string} topLevelType + * @param {object} nativeEvent + * @return {boolean} + */ + function isFallbackCompositionEnd(topLevelType, nativeEvent) { + switch (topLevelType) { + case 'topKeyUp': + // Command keys insert or clear IME input. + return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1; + case 'topKeyDown': + // Expect IME keyCode on each keydown. If we get any other + // code we must have exited earlier. + return nativeEvent.keyCode !== START_KEYCODE; + case 'topKeyPress': + case 'topMouseDown': + case 'topBlur': + // Events are not possible without cancelling IME. + return true; + default: + return false; + } + } + + /** + * Google Input Tools provides composition data via a CustomEvent, + * with the `data` property populated in the `detail` object. If this + * is available on the event object, use it. If not, this is a plain + * composition event and we have nothing special to extract. + * + * @param {object} nativeEvent + * @return {?string} + */ + function getDataFromCustomEvent(nativeEvent) { + var detail = nativeEvent.detail; + if (typeof detail === 'object' && 'data' in detail) { + return detail.data; + } + return null; + } + + // Track the current IME composition fallback object, if any. + var currentComposition = null; + + /** + * @return {?object} A SyntheticCompositionEvent. + */ + function extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var eventType; + var fallbackData; + + if (canUseCompositionEvent) { + eventType = getCompositionEventType(topLevelType); + } else if (!currentComposition) { + if (isFallbackCompositionStart(topLevelType, nativeEvent)) { + eventType = eventTypes.compositionStart; + } + } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) { + eventType = eventTypes.compositionEnd; + } + + if (!eventType) { + return null; + } + + if (useFallbackCompositionData) { + // The current composition is stored statically and must not be + // overwritten while composition continues. + if (!currentComposition && eventType === eventTypes.compositionStart) { + currentComposition = FallbackCompositionState.getPooled(nativeEventTarget); + } else if (eventType === eventTypes.compositionEnd) { + if (currentComposition) { + fallbackData = currentComposition.getData(); + } + } + } + + var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget); + + if (fallbackData) { + // Inject data generated from fallback path into the synthetic event. + // This matches the property of native CompositionEventInterface. + event.data = fallbackData; + } else { + var customData = getDataFromCustomEvent(nativeEvent); + if (customData !== null) { + event.data = customData; + } + } + + EventPropagators.accumulateTwoPhaseDispatches(event); + return event; + } + + /** + * @param {string} topLevelType Record from `EventConstants`. + * @param {object} nativeEvent Native browser event. + * @return {?string} The string corresponding to this `beforeInput` event. + */ + function getNativeBeforeInputChars(topLevelType, nativeEvent) { + switch (topLevelType) { + case 'topCompositionEnd': + return getDataFromCustomEvent(nativeEvent); + case 'topKeyPress': + /** + * If native `textInput` events are available, our goal is to make + * use of them. However, there is a special case: the spacebar key. + * In Webkit, preventing default on a spacebar `textInput` event + * cancels character insertion, but it *also* causes the browser + * to fall back to its default spacebar behavior of scrolling the + * page. + * + * Tracking at: + * https://code.google.com/p/chromium/issues/detail?id=355103 + * + * To avoid this issue, use the keypress event as if no `textInput` + * event is available. + */ + var which = nativeEvent.which; + if (which !== SPACEBAR_CODE) { + return null; + } + + hasSpaceKeypress = true; + return SPACEBAR_CHAR; + + case 'topTextInput': + // Record the characters to be added to the DOM. + var chars = nativeEvent.data; + + // If it's a spacebar character, assume that we have already handled + // it at the keypress level and bail immediately. Android Chrome + // doesn't give us keycodes, so we need to blacklist it. + if (chars === SPACEBAR_CHAR && hasSpaceKeypress) { + return null; + } + + return chars; + + default: + // For other native event types, do nothing. + return null; + } + } + + /** + * For browsers that do not provide the `textInput` event, extract the + * appropriate string to use for SyntheticInputEvent. + * + * @param {string} topLevelType Record from `EventConstants`. + * @param {object} nativeEvent Native browser event. + * @return {?string} The fallback string for this `beforeInput` event. + */ + function getFallbackBeforeInputChars(topLevelType, nativeEvent) { + // If we are currently composing (IME) and using a fallback to do so, + // try to extract the composed characters from the fallback object. + // If composition event is available, we extract a string only at + // compositionevent, otherwise extract it at fallback events. + if (currentComposition) { + if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) { + var chars = currentComposition.getData(); + FallbackCompositionState.release(currentComposition); + currentComposition = null; + return chars; + } + return null; + } + + switch (topLevelType) { + case 'topPaste': + // If a paste event occurs after a keypress, throw out the input + // chars. Paste events should not lead to BeforeInput events. + return null; + case 'topKeyPress': + /** + * As of v27, Firefox may fire keypress events even when no character + * will be inserted. A few possibilities: + * + * - `which` is `0`. Arrow keys, Esc key, etc. + * + * - `which` is the pressed key code, but no char is available. + * Ex: 'AltGr + d` in Polish. There is no modified character for + * this key combination and no character is inserted into the + * document, but FF fires the keypress for char code `100` anyway. + * No `input` event will occur. + * + * - `which` is the pressed key code, but a command combination is + * being used. Ex: `Cmd+C`. No character is inserted, and no + * `input` event will occur. + */ + if (nativeEvent.which && !isKeypressCommand(nativeEvent)) { + return String.fromCharCode(nativeEvent.which); + } + return null; + case 'topCompositionEnd': + return useFallbackCompositionData ? null : nativeEvent.data; + default: + return null; + } + } + + /** + * Extract a SyntheticInputEvent for `beforeInput`, based on either native + * `textInput` or fallback behavior. + * + * @return {?object} A SyntheticInputEvent. + */ + function extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var chars; + + if (canUseTextInputEvent) { + chars = getNativeBeforeInputChars(topLevelType, nativeEvent); + } else { + chars = getFallbackBeforeInputChars(topLevelType, nativeEvent); + } + + // If no characters are being inserted, no BeforeInput event should + // be fired. + if (!chars) { + return null; + } + + var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget); + + event.data = chars; + EventPropagators.accumulateTwoPhaseDispatches(event); + return event; + } + + /** + * Create an `onBeforeInput` event to match + * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents. + * + * This event plugin is based on the native `textInput` event + * available in Chrome, Safari, Opera, and IE. This event fires after + * `onKeyPress` and `onCompositionEnd`, but before `onInput`. + * + * `beforeInput` is spec'd but not implemented in any browsers, and + * the `input` event does not provide any useful information about what has + * actually been added, contrary to the spec. Thus, `textInput` is the best + * available event to identify the characters that have actually been inserted + * into the target node. + * + * This plugin is also responsible for emitting `composition` events, thus + * allowing us to share composition fallback code for both `beforeInput` and + * `composition` event types. + */ + var BeforeInputEventPlugin = { + eventTypes: eventTypes, + + extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)]; + } + }; + + module.exports = BeforeInputEventPlugin; + +/***/ }), +/* 43 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var EventPluginHub = __webpack_require__(44); + var EventPluginUtils = __webpack_require__(46); + + var accumulateInto = __webpack_require__(48); + var forEachAccumulated = __webpack_require__(49); + var warning = __webpack_require__(7); + + var getListener = EventPluginHub.getListener; + + /** + * Some event types have a notion of different registration names for different + * "phases" of propagation. This finds listeners by a given phase. + */ + function listenerAtPhase(inst, event, propagationPhase) { + var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase]; + return getListener(inst, registrationName); + } + + /** + * Tags a `SyntheticEvent` with dispatched listeners. Creating this function + * here, allows us to not have to bind or create functions for each event. + * Mutating the event's members allows us to not have to create a wrapping + * "dispatch" object that pairs the event with the listener. + */ + function accumulateDirectionalDispatches(inst, phase, event) { + if (false) { + process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0; + } + var listener = listenerAtPhase(inst, event, phase); + if (listener) { + event._dispatchListeners = accumulateInto(event._dispatchListeners, listener); + event._dispatchInstances = accumulateInto(event._dispatchInstances, inst); + } + } + + /** + * Collect dispatches (must be entirely collected before dispatching - see unit + * tests). Lazily allocate the array to conserve memory. We must loop through + * each event and perform the traversal for each one. We cannot perform a + * single traversal for the entire collection of events because each event may + * have a different target. + */ + function accumulateTwoPhaseDispatchesSingle(event) { + if (event && event.dispatchConfig.phasedRegistrationNames) { + EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event); + } + } + + /** + * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID. + */ + function accumulateTwoPhaseDispatchesSingleSkipTarget(event) { + if (event && event.dispatchConfig.phasedRegistrationNames) { + var targetInst = event._targetInst; + var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null; + EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event); + } + } + + /** + * Accumulates without regard to direction, does not look for phased + * registration names. Same as `accumulateDirectDispatchesSingle` but without + * requiring that the `dispatchMarker` be the same as the dispatched ID. + */ + function accumulateDispatches(inst, ignoredDirection, event) { + if (event && event.dispatchConfig.registrationName) { + var registrationName = event.dispatchConfig.registrationName; + var listener = getListener(inst, registrationName); + if (listener) { + event._dispatchListeners = accumulateInto(event._dispatchListeners, listener); + event._dispatchInstances = accumulateInto(event._dispatchInstances, inst); + } + } + } + + /** + * Accumulates dispatches on an `SyntheticEvent`, but only for the + * `dispatchMarker`. + * @param {SyntheticEvent} event + */ + function accumulateDirectDispatchesSingle(event) { + if (event && event.dispatchConfig.registrationName) { + accumulateDispatches(event._targetInst, null, event); + } + } + + function accumulateTwoPhaseDispatches(events) { + forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle); + } + + function accumulateTwoPhaseDispatchesSkipTarget(events) { + forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget); + } + + function accumulateEnterLeaveDispatches(leave, enter, from, to) { + EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter); + } + + function accumulateDirectDispatches(events) { + forEachAccumulated(events, accumulateDirectDispatchesSingle); + } + + /** + * A small set of propagation patterns, each of which will accept a small amount + * of information, and generate a set of "dispatch ready event objects" - which + * are sets of events that have already been annotated with a set of dispatched + * listener functions/ids. The API is designed this way to discourage these + * propagation strategies from actually executing the dispatches, since we + * always want to collect the entire set of dispatches before executing event a + * single one. + * + * @constructor EventPropagators + */ + var EventPropagators = { + accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches, + accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget, + accumulateDirectDispatches: accumulateDirectDispatches, + accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches + }; + + module.exports = EventPropagators; + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var _prodInvariant = __webpack_require__(37); + + var EventPluginRegistry = __webpack_require__(45); + var EventPluginUtils = __webpack_require__(46); + var ReactErrorUtils = __webpack_require__(47); + + var accumulateInto = __webpack_require__(48); + var forEachAccumulated = __webpack_require__(49); + var invariant = __webpack_require__(11); + + /** + * Internal store for event listeners + */ + var listenerBank = {}; + + /** + * Internal queue of events that have accumulated their dispatches and are + * waiting to have their dispatches executed. + */ + var eventQueue = null; + + /** + * Dispatches an event and releases it back into the pool, unless persistent. + * + * @param {?object} event Synthetic event to be dispatched. + * @param {boolean} simulated If the event is simulated (changes exn behavior) + * @private + */ + var executeDispatchesAndRelease = function (event, simulated) { + if (event) { + EventPluginUtils.executeDispatchesInOrder(event, simulated); + + if (!event.isPersistent()) { + event.constructor.release(event); + } + } + }; + var executeDispatchesAndReleaseSimulated = function (e) { + return executeDispatchesAndRelease(e, true); + }; + var executeDispatchesAndReleaseTopLevel = function (e) { + return executeDispatchesAndRelease(e, false); + }; + + var getDictionaryKey = function (inst) { + // Prevents V8 performance issue: + // https://github.com/facebook/react/pull/7232 + return '.' + inst._rootNodeID; + }; + + function isInteractive(tag) { + return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea'; + } + + function shouldPreventMouseEvent(name, type, props) { + switch (name) { + case 'onClick': + case 'onClickCapture': + case 'onDoubleClick': + case 'onDoubleClickCapture': + case 'onMouseDown': + case 'onMouseDownCapture': + case 'onMouseMove': + case 'onMouseMoveCapture': + case 'onMouseUp': + case 'onMouseUpCapture': + return !!(props.disabled && isInteractive(type)); + default: + return false; + } + } + + /** + * This is a unified interface for event plugins to be installed and configured. + * + * Event plugins can implement the following properties: + * + * `extractEvents` {function(string, DOMEventTarget, string, object): *} + * Required. When a top-level event is fired, this method is expected to + * extract synthetic events that will in turn be queued and dispatched. + * + * `eventTypes` {object} + * Optional, plugins that fire events must publish a mapping of registration + * names that are used to register listeners. Values of this mapping must + * be objects that contain `registrationName` or `phasedRegistrationNames`. + * + * `executeDispatch` {function(object, function, string)} + * Optional, allows plugins to override how an event gets dispatched. By + * default, the listener is simply invoked. + * + * Each plugin that is injected into `EventsPluginHub` is immediately operable. + * + * @public + */ + var EventPluginHub = { + /** + * Methods for injecting dependencies. + */ + injection: { + /** + * @param {array} InjectedEventPluginOrder + * @public + */ + injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder, + + /** + * @param {object} injectedNamesToPlugins Map from names to plugin modules. + */ + injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName + }, + + /** + * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent. + * + * @param {object} inst The instance, which is the source of events. + * @param {string} registrationName Name of listener (e.g. `onClick`). + * @param {function} listener The callback to store. + */ + putListener: function (inst, registrationName, listener) { + !(typeof listener === 'function') ? false ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0; + + var key = getDictionaryKey(inst); + var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {}); + bankForRegistrationName[key] = listener; + + var PluginModule = EventPluginRegistry.registrationNameModules[registrationName]; + if (PluginModule && PluginModule.didPutListener) { + PluginModule.didPutListener(inst, registrationName, listener); + } + }, + + /** + * @param {object} inst The instance, which is the source of events. + * @param {string} registrationName Name of listener (e.g. `onClick`). + * @return {?function} The stored callback. + */ + getListener: function (inst, registrationName) { + // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not + // live here; needs to be moved to a better place soon + var bankForRegistrationName = listenerBank[registrationName]; + if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) { + return null; + } + var key = getDictionaryKey(inst); + return bankForRegistrationName && bankForRegistrationName[key]; + }, + + /** + * Deletes a listener from the registration bank. + * + * @param {object} inst The instance, which is the source of events. + * @param {string} registrationName Name of listener (e.g. `onClick`). + */ + deleteListener: function (inst, registrationName) { + var PluginModule = EventPluginRegistry.registrationNameModules[registrationName]; + if (PluginModule && PluginModule.willDeleteListener) { + PluginModule.willDeleteListener(inst, registrationName); + } + + var bankForRegistrationName = listenerBank[registrationName]; + // TODO: This should never be null -- when is it? + if (bankForRegistrationName) { + var key = getDictionaryKey(inst); + delete bankForRegistrationName[key]; + } + }, + + /** + * Deletes all listeners for the DOM element with the supplied ID. + * + * @param {object} inst The instance, which is the source of events. + */ + deleteAllListeners: function (inst) { + var key = getDictionaryKey(inst); + for (var registrationName in listenerBank) { + if (!listenerBank.hasOwnProperty(registrationName)) { + continue; + } + + if (!listenerBank[registrationName][key]) { + continue; + } + + var PluginModule = EventPluginRegistry.registrationNameModules[registrationName]; + if (PluginModule && PluginModule.willDeleteListener) { + PluginModule.willDeleteListener(inst, registrationName); + } + + delete listenerBank[registrationName][key]; + } + }, + + /** + * Allows registered plugins an opportunity to extract events from top-level + * native browser events. + * + * @return {*} An accumulation of synthetic events. + * @internal + */ + extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var events; + var plugins = EventPluginRegistry.plugins; + for (var i = 0; i < plugins.length; i++) { + // Not every plugin in the ordering may be loaded at runtime. + var possiblePlugin = plugins[i]; + if (possiblePlugin) { + var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget); + if (extractedEvents) { + events = accumulateInto(events, extractedEvents); + } + } + } + return events; + }, + + /** + * Enqueues a synthetic event that should be dispatched when + * `processEventQueue` is invoked. + * + * @param {*} events An accumulation of synthetic events. + * @internal + */ + enqueueEvents: function (events) { + if (events) { + eventQueue = accumulateInto(eventQueue, events); + } + }, + + /** + * Dispatches all synthetic events on the event queue. + * + * @internal + */ + processEventQueue: function (simulated) { + // Set `eventQueue` to null before processing it so that we can tell if more + // events get enqueued while processing. + var processingEventQueue = eventQueue; + eventQueue = null; + if (simulated) { + forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated); + } else { + forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel); + } + !!eventQueue ? false ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0; + // This would be a good time to rethrow if any of the event handlers threw. + ReactErrorUtils.rethrowCaughtError(); + }, + + /** + * These are needed for tests only. Do not use! + */ + __purge: function () { + listenerBank = {}; + }, + + __getListenerBank: function () { + return listenerBank; + } + }; + + module.exports = EventPluginHub; + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + var _prodInvariant = __webpack_require__(37); + + var invariant = __webpack_require__(11); + + /** + * Injectable ordering of event plugins. + */ + var eventPluginOrder = null; + + /** + * Injectable mapping from names to event plugin modules. + */ + var namesToPlugins = {}; + + /** + * Recomputes the plugin list using the injected plugins and plugin ordering. + * + * @private + */ + function recomputePluginOrdering() { + if (!eventPluginOrder) { + // Wait until an `eventPluginOrder` is injected. + return; + } + for (var pluginName in namesToPlugins) { + var pluginModule = namesToPlugins[pluginName]; + var pluginIndex = eventPluginOrder.indexOf(pluginName); + !(pluginIndex > -1) ? false ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0; + if (EventPluginRegistry.plugins[pluginIndex]) { + continue; + } + !pluginModule.extractEvents ? false ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0; + EventPluginRegistry.plugins[pluginIndex] = pluginModule; + var publishedEvents = pluginModule.eventTypes; + for (var eventName in publishedEvents) { + !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? false ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0; + } + } + } + + /** + * Publishes an event so that it can be dispatched by the supplied plugin. + * + * @param {object} dispatchConfig Dispatch configuration for the event. + * @param {object} PluginModule Plugin publishing the event. + * @return {boolean} True if the event was successfully published. + * @private + */ + function publishEventForPlugin(dispatchConfig, pluginModule, eventName) { + !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? false ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0; + EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig; + + var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames; + if (phasedRegistrationNames) { + for (var phaseName in phasedRegistrationNames) { + if (phasedRegistrationNames.hasOwnProperty(phaseName)) { + var phasedRegistrationName = phasedRegistrationNames[phaseName]; + publishRegistrationName(phasedRegistrationName, pluginModule, eventName); + } + } + return true; + } else if (dispatchConfig.registrationName) { + publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName); + return true; + } + return false; + } + + /** + * Publishes a registration name that is used to identify dispatched events and + * can be used with `EventPluginHub.putListener` to register listeners. + * + * @param {string} registrationName Registration name to add. + * @param {object} PluginModule Plugin publishing the event. + * @private + */ + function publishRegistrationName(registrationName, pluginModule, eventName) { + !!EventPluginRegistry.registrationNameModules[registrationName] ? false ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0; + EventPluginRegistry.registrationNameModules[registrationName] = pluginModule; + EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies; + + if (false) { + var lowerCasedName = registrationName.toLowerCase(); + EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName; + + if (registrationName === 'onDoubleClick') { + EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName; + } + } + } + + /** + * Registers plugins so that they can extract and dispatch events. + * + * @see {EventPluginHub} + */ + var EventPluginRegistry = { + /** + * Ordered list of injected plugins. + */ + plugins: [], + + /** + * Mapping from event name to dispatch config + */ + eventNameDispatchConfigs: {}, + + /** + * Mapping from registration name to plugin module + */ + registrationNameModules: {}, + + /** + * Mapping from registration name to event name + */ + registrationNameDependencies: {}, + + /** + * Mapping from lowercase registration names to the properly cased version, + * used to warn in the case of missing event handlers. Available + * only in __DEV__. + * @type {Object} + */ + possibleRegistrationNames: false ? {} : null, + // Trust the developer to only use possibleRegistrationNames in __DEV__ + + /** + * Injects an ordering of plugins (by plugin name). This allows the ordering + * to be decoupled from injection of the actual plugins so that ordering is + * always deterministic regardless of packaging, on-the-fly injection, etc. + * + * @param {array} InjectedEventPluginOrder + * @internal + * @see {EventPluginHub.injection.injectEventPluginOrder} + */ + injectEventPluginOrder: function (injectedEventPluginOrder) { + !!eventPluginOrder ? false ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0; + // Clone the ordering so it cannot be dynamically mutated. + eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder); + recomputePluginOrdering(); + }, + + /** + * Injects plugins to be used by `EventPluginHub`. The plugin names must be + * in the ordering injected by `injectEventPluginOrder`. + * + * Plugins can be injected as part of page initialization or on-the-fly. + * + * @param {object} injectedNamesToPlugins Map from names to plugin modules. + * @internal + * @see {EventPluginHub.injection.injectEventPluginsByName} + */ + injectEventPluginsByName: function (injectedNamesToPlugins) { + var isOrderingDirty = false; + for (var pluginName in injectedNamesToPlugins) { + if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) { + continue; + } + var pluginModule = injectedNamesToPlugins[pluginName]; + if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) { + !!namesToPlugins[pluginName] ? false ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0; + namesToPlugins[pluginName] = pluginModule; + isOrderingDirty = true; + } + } + if (isOrderingDirty) { + recomputePluginOrdering(); + } + }, + + /** + * Looks up the plugin for the supplied event. + * + * @param {object} event A synthetic event. + * @return {?object} The plugin that created the supplied event. + * @internal + */ + getPluginModuleForEvent: function (event) { + var dispatchConfig = event.dispatchConfig; + if (dispatchConfig.registrationName) { + return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null; + } + if (dispatchConfig.phasedRegistrationNames !== undefined) { + // pulling phasedRegistrationNames out of dispatchConfig helps Flow see + // that it is not undefined. + var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames; + + for (var phase in phasedRegistrationNames) { + if (!phasedRegistrationNames.hasOwnProperty(phase)) { + continue; + } + var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]]; + if (pluginModule) { + return pluginModule; + } + } + } + return null; + }, + + /** + * Exposed for unit testing. + * @private + */ + _resetEventPlugins: function () { + eventPluginOrder = null; + for (var pluginName in namesToPlugins) { + if (namesToPlugins.hasOwnProperty(pluginName)) { + delete namesToPlugins[pluginName]; + } + } + EventPluginRegistry.plugins.length = 0; + + var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs; + for (var eventName in eventNameDispatchConfigs) { + if (eventNameDispatchConfigs.hasOwnProperty(eventName)) { + delete eventNameDispatchConfigs[eventName]; + } + } + + var registrationNameModules = EventPluginRegistry.registrationNameModules; + for (var registrationName in registrationNameModules) { + if (registrationNameModules.hasOwnProperty(registrationName)) { + delete registrationNameModules[registrationName]; + } + } + + if (false) { + var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames; + for (var lowerCasedName in possibleRegistrationNames) { + if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) { + delete possibleRegistrationNames[lowerCasedName]; + } + } + } + } + }; + + module.exports = EventPluginRegistry; + +/***/ }), +/* 46 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var _prodInvariant = __webpack_require__(37); + + var ReactErrorUtils = __webpack_require__(47); + + var invariant = __webpack_require__(11); + var warning = __webpack_require__(7); + + /** + * Injected dependencies: + */ + + /** + * - `ComponentTree`: [required] Module that can convert between React instances + * and actual node references. + */ + var ComponentTree; + var TreeTraversal; + var injection = { + injectComponentTree: function (Injected) { + ComponentTree = Injected; + if (false) { + process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0; + } + }, + injectTreeTraversal: function (Injected) { + TreeTraversal = Injected; + if (false) { + process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0; + } + } + }; + + function isEndish(topLevelType) { + return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel'; + } + + function isMoveish(topLevelType) { + return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove'; + } + function isStartish(topLevelType) { + return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart'; + } + + var validateEventDispatches; + if (false) { + validateEventDispatches = function (event) { + var dispatchListeners = event._dispatchListeners; + var dispatchInstances = event._dispatchInstances; + + var listenersIsArr = Array.isArray(dispatchListeners); + var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0; + + var instancesIsArr = Array.isArray(dispatchInstances); + var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0; + + process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0; + }; + } + + /** + * Dispatch the event to the listener. + * @param {SyntheticEvent} event SyntheticEvent to handle + * @param {boolean} simulated If the event is simulated (changes exn behavior) + * @param {function} listener Application-level callback + * @param {*} inst Internal component instance + */ + function executeDispatch(event, simulated, listener, inst) { + var type = event.type || 'unknown-event'; + event.currentTarget = EventPluginUtils.getNodeFromInstance(inst); + if (simulated) { + ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event); + } else { + ReactErrorUtils.invokeGuardedCallback(type, listener, event); + } + event.currentTarget = null; + } + + /** + * Standard/simple iteration through an event's collected dispatches. + */ + function executeDispatchesInOrder(event, simulated) { + var dispatchListeners = event._dispatchListeners; + var dispatchInstances = event._dispatchInstances; + if (false) { + validateEventDispatches(event); + } + if (Array.isArray(dispatchListeners)) { + for (var i = 0; i < dispatchListeners.length; i++) { + if (event.isPropagationStopped()) { + break; + } + // Listeners and Instances are two parallel arrays that are always in sync. + executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]); + } + } else if (dispatchListeners) { + executeDispatch(event, simulated, dispatchListeners, dispatchInstances); + } + event._dispatchListeners = null; + event._dispatchInstances = null; + } + + /** + * Standard/simple iteration through an event's collected dispatches, but stops + * at the first dispatch execution returning true, and returns that id. + * + * @return {?string} id of the first dispatch execution who's listener returns + * true, or null if no listener returned true. + */ + function executeDispatchesInOrderStopAtTrueImpl(event) { + var dispatchListeners = event._dispatchListeners; + var dispatchInstances = event._dispatchInstances; + if (false) { + validateEventDispatches(event); + } + if (Array.isArray(dispatchListeners)) { + for (var i = 0; i < dispatchListeners.length; i++) { + if (event.isPropagationStopped()) { + break; + } + // Listeners and Instances are two parallel arrays that are always in sync. + if (dispatchListeners[i](event, dispatchInstances[i])) { + return dispatchInstances[i]; + } + } + } else if (dispatchListeners) { + if (dispatchListeners(event, dispatchInstances)) { + return dispatchInstances; + } + } + return null; + } + + /** + * @see executeDispatchesInOrderStopAtTrueImpl + */ + function executeDispatchesInOrderStopAtTrue(event) { + var ret = executeDispatchesInOrderStopAtTrueImpl(event); + event._dispatchInstances = null; + event._dispatchListeners = null; + return ret; + } + + /** + * Execution of a "direct" dispatch - there must be at most one dispatch + * accumulated on the event or it is considered an error. It doesn't really make + * sense for an event with multiple dispatches (bubbled) to keep track of the + * return values at each dispatch execution, but it does tend to make sense when + * dealing with "direct" dispatches. + * + * @return {*} The return value of executing the single dispatch. + */ + function executeDirectDispatch(event) { + if (false) { + validateEventDispatches(event); + } + var dispatchListener = event._dispatchListeners; + var dispatchInstance = event._dispatchInstances; + !!Array.isArray(dispatchListener) ? false ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0; + event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null; + var res = dispatchListener ? dispatchListener(event) : null; + event.currentTarget = null; + event._dispatchListeners = null; + event._dispatchInstances = null; + return res; + } + + /** + * @param {SyntheticEvent} event + * @return {boolean} True iff number of dispatches accumulated is greater than 0. + */ + function hasDispatches(event) { + return !!event._dispatchListeners; + } + + /** + * General utilities that are useful in creating custom Event Plugins. + */ + var EventPluginUtils = { + isEndish: isEndish, + isMoveish: isMoveish, + isStartish: isStartish, + + executeDirectDispatch: executeDirectDispatch, + executeDispatchesInOrder: executeDispatchesInOrder, + executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue, + hasDispatches: hasDispatches, + + getInstanceFromNode: function (node) { + return ComponentTree.getInstanceFromNode(node); + }, + getNodeFromInstance: function (node) { + return ComponentTree.getNodeFromInstance(node); + }, + isAncestor: function (a, b) { + return TreeTraversal.isAncestor(a, b); + }, + getLowestCommonAncestor: function (a, b) { + return TreeTraversal.getLowestCommonAncestor(a, b); + }, + getParentInstance: function (inst) { + return TreeTraversal.getParentInstance(inst); + }, + traverseTwoPhase: function (target, fn, arg) { + return TreeTraversal.traverseTwoPhase(target, fn, arg); + }, + traverseEnterLeave: function (from, to, fn, argFrom, argTo) { + return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo); + }, + + injection: injection + }; + + module.exports = EventPluginUtils; + +/***/ }), +/* 47 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + var caughtError = null; + + /** + * Call a function while guarding against errors that happens within it. + * + * @param {String} name of the guard to use for logging or debugging + * @param {Function} func The function to invoke + * @param {*} a First argument + * @param {*} b Second argument + */ + function invokeGuardedCallback(name, func, a) { + try { + func(a); + } catch (x) { + if (caughtError === null) { + caughtError = x; + } + } + } + + var ReactErrorUtils = { + invokeGuardedCallback: invokeGuardedCallback, + + /** + * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event + * handler are sure to be rethrown by rethrowCaughtError. + */ + invokeGuardedCallbackWithCatch: invokeGuardedCallback, + + /** + * During execution of guarded functions we will capture the first error which + * we will rethrow to be handled by the top level error handler. + */ + rethrowCaughtError: function () { + if (caughtError) { + var error = caughtError; + caughtError = null; + throw error; + } + } + }; + + if (false) { + /** + * To help development we can get better devtools integration by simulating a + * real browser event. + */ + if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') { + var fakeNode = document.createElement('react'); + ReactErrorUtils.invokeGuardedCallback = function (name, func, a) { + var boundFunc = function () { + func(a); + }; + var evtType = 'react-' + name; + fakeNode.addEventListener(evtType, boundFunc, false); + var evt = document.createEvent('Event'); + evt.initEvent(evtType, false, false); + fakeNode.dispatchEvent(evt); + fakeNode.removeEventListener(evtType, boundFunc, false); + }; + } + } + + module.exports = ReactErrorUtils; + +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + var _prodInvariant = __webpack_require__(37); + + var invariant = __webpack_require__(11); + + /** + * Accumulates items that must not be null or undefined into the first one. This + * is used to conserve memory by avoiding array allocations, and thus sacrifices + * API cleanness. Since `current` can be null before being passed in and not + * null after this function, make sure to assign it back to `current`: + * + * `a = accumulateInto(a, b);` + * + * This API should be sparingly used. Try `accumulate` for something cleaner. + * + * @return {*|array<*>} An accumulation of items. + */ + + function accumulateInto(current, next) { + !(next != null) ? false ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0; + + if (current == null) { + return next; + } + + // Both are not empty. Warning: Never call x.concat(y) when you are not + // certain that x is an Array (x could be a string with concat method). + if (Array.isArray(current)) { + if (Array.isArray(next)) { + current.push.apply(current, next); + return current; + } + current.push(next); + return current; + } + + if (Array.isArray(next)) { + // A bit too dangerous to mutate `next`. + return [current].concat(next); + } + + return [current, next]; + } + + module.exports = accumulateInto; + +/***/ }), +/* 49 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + /** + * @param {array} arr an "accumulation" of items which is either an Array or + * a single item. Useful when paired with the `accumulate` module. This is a + * simple utility that allows us to reason about a collection of items, but + * handling the case when there is exactly one item (and we do not need to + * allocate an array). + */ + + function forEachAccumulated(arr, cb, scope) { + if (Array.isArray(arr)) { + arr.forEach(cb, scope); + } else if (arr) { + cb.call(scope, arr); + } + } + + module.exports = forEachAccumulated; + +/***/ }), +/* 50 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); + + /** + * Simple, lightweight module assisting with the detection and context of + * Worker. Helps avoid circular dependencies and allows code to reason about + * whether or not they are in a Worker, even if they never include the main + * `ReactWorker` dependency. + */ + var ExecutionEnvironment = { + + canUseDOM: canUseDOM, + + canUseWorkers: typeof Worker !== 'undefined', + + canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent), + + canUseViewport: canUseDOM && !!window.screen, + + isInWorker: !canUseDOM // For now, this is true - might change in the future. + + }; + + module.exports = ExecutionEnvironment; + +/***/ }), +/* 51 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var _assign = __webpack_require__(3); + + var PooledClass = __webpack_require__(52); + + var getTextContentAccessor = __webpack_require__(53); + + /** + * This helper class stores information about text content of a target node, + * allowing comparison of content before and after a given event. + * + * Identify the node where selection currently begins, then observe + * both its text content and its current position in the DOM. Since the + * browser may natively replace the target node during composition, we can + * use its position to find its replacement. + * + * @param {DOMEventTarget} root + */ + function FallbackCompositionState(root) { + this._root = root; + this._startText = this.getText(); + this._fallbackText = null; + } + + _assign(FallbackCompositionState.prototype, { + destructor: function () { + this._root = null; + this._startText = null; + this._fallbackText = null; + }, + + /** + * Get current text of input. + * + * @return {string} + */ + getText: function () { + if ('value' in this._root) { + return this._root.value; + } + return this._root[getTextContentAccessor()]; + }, + + /** + * Determine the differing substring between the initially stored + * text content and the current content. + * + * @return {string} + */ + getData: function () { + if (this._fallbackText) { + return this._fallbackText; + } + + var start; + var startValue = this._startText; + var startLength = startValue.length; + var end; + var endValue = this.getText(); + var endLength = endValue.length; + + for (start = 0; start < startLength; start++) { + if (startValue[start] !== endValue[start]) { + break; + } + } + + var minEnd = startLength - start; + for (end = 1; end <= minEnd; end++) { + if (startValue[startLength - end] !== endValue[endLength - end]) { + break; + } + } + + var sliceTail = end > 1 ? 1 - end : undefined; + this._fallbackText = endValue.slice(start, sliceTail); + return this._fallbackText; + } + }); + + PooledClass.addPoolingTo(FallbackCompositionState); + + module.exports = FallbackCompositionState; + +/***/ }), +/* 52 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + var _prodInvariant = __webpack_require__(37); + + var invariant = __webpack_require__(11); + + /** + * Static poolers. Several custom versions for each potential number of + * arguments. A completely generic pooler is easy to implement, but would + * require accessing the `arguments` object. In each of these, `this` refers to + * the Class itself, not an instance. If any others are needed, simply add them + * here, or in their own files. + */ + var oneArgumentPooler = function (copyFieldsFrom) { + var Klass = this; + if (Klass.instancePool.length) { + var instance = Klass.instancePool.pop(); + Klass.call(instance, copyFieldsFrom); + return instance; + } else { + return new Klass(copyFieldsFrom); + } + }; + + var twoArgumentPooler = function (a1, a2) { + var Klass = this; + if (Klass.instancePool.length) { + var instance = Klass.instancePool.pop(); + Klass.call(instance, a1, a2); + return instance; + } else { + return new Klass(a1, a2); + } + }; + + var threeArgumentPooler = function (a1, a2, a3) { + var Klass = this; + if (Klass.instancePool.length) { + var instance = Klass.instancePool.pop(); + Klass.call(instance, a1, a2, a3); + return instance; + } else { + return new Klass(a1, a2, a3); + } + }; + + var fourArgumentPooler = function (a1, a2, a3, a4) { + var Klass = this; + if (Klass.instancePool.length) { + var instance = Klass.instancePool.pop(); + Klass.call(instance, a1, a2, a3, a4); + return instance; + } else { + return new Klass(a1, a2, a3, a4); + } + }; + + var standardReleaser = function (instance) { + var Klass = this; + !(instance instanceof Klass) ? false ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0; + instance.destructor(); + if (Klass.instancePool.length < Klass.poolSize) { + Klass.instancePool.push(instance); + } + }; + + var DEFAULT_POOL_SIZE = 10; + var DEFAULT_POOLER = oneArgumentPooler; + + /** + * Augments `CopyConstructor` to be a poolable class, augmenting only the class + * itself (statically) not adding any prototypical fields. Any CopyConstructor + * you give this may have a `poolSize` property, and will look for a + * prototypical `destructor` on instances. + * + * @param {Function} CopyConstructor Constructor that can be used to reset. + * @param {Function} pooler Customizable pooler. + */ + var addPoolingTo = function (CopyConstructor, pooler) { + // Casting as any so that flow ignores the actual implementation and trusts + // it to match the type we declared + var NewKlass = CopyConstructor; + NewKlass.instancePool = []; + NewKlass.getPooled = pooler || DEFAULT_POOLER; + if (!NewKlass.poolSize) { + NewKlass.poolSize = DEFAULT_POOL_SIZE; + } + NewKlass.release = standardReleaser; + return NewKlass; + }; + + var PooledClass = { + addPoolingTo: addPoolingTo, + oneArgumentPooler: oneArgumentPooler, + twoArgumentPooler: twoArgumentPooler, + threeArgumentPooler: threeArgumentPooler, + fourArgumentPooler: fourArgumentPooler + }; + + module.exports = PooledClass; + +/***/ }), +/* 53 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var ExecutionEnvironment = __webpack_require__(50); + + var contentKey = null; + + /** + * Gets the key used to access text content on a DOM node. + * + * @return {?string} Key used to access text content. + * @internal + */ + function getTextContentAccessor() { + if (!contentKey && ExecutionEnvironment.canUseDOM) { + // Prefer textContent to innerText because many browsers support both but + // SVG elements don't support innerText even when
does. + contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText'; + } + return contentKey; + } + + module.exports = getTextContentAccessor; + +/***/ }), +/* 54 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var SyntheticEvent = __webpack_require__(55); + + /** + * @interface Event + * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents + */ + var CompositionEventInterface = { + data: null + }; + + /** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticUIEvent} + */ + function SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); + } + + SyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface); + + module.exports = SyntheticCompositionEvent; + +/***/ }), +/* 55 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var _assign = __webpack_require__(3); + + var PooledClass = __webpack_require__(52); + + var emptyFunction = __webpack_require__(8); + var warning = __webpack_require__(7); + + var didWarnForAddedNewProperty = false; + var isProxySupported = typeof Proxy === 'function'; + + var shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances']; + + /** + * @interface Event + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ + var EventInterface = { + type: null, + target: null, + // currentTarget is set when dispatching; no use in copying it here + currentTarget: emptyFunction.thatReturnsNull, + eventPhase: null, + bubbles: null, + cancelable: null, + timeStamp: function (event) { + return event.timeStamp || Date.now(); + }, + defaultPrevented: null, + isTrusted: null + }; + + /** + * Synthetic events are dispatched by event plugins, typically in response to a + * top-level event delegation handler. + * + * These systems should generally use pooling to reduce the frequency of garbage + * collection. The system should check `isPersistent` to determine whether the + * event should be released into the pool after being dispatched. Users that + * need a persisted event should invoke `persist`. + * + * Synthetic events (and subclasses) implement the DOM Level 3 Events API by + * normalizing browser quirks. Subclasses do not necessarily have to implement a + * DOM interface; custom application-specific events can also subclass this. + * + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {*} targetInst Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @param {DOMEventTarget} nativeEventTarget Target node. + */ + function SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) { + if (false) { + // these have a getter/setter for warnings + delete this.nativeEvent; + delete this.preventDefault; + delete this.stopPropagation; + } + + this.dispatchConfig = dispatchConfig; + this._targetInst = targetInst; + this.nativeEvent = nativeEvent; + + var Interface = this.constructor.Interface; + for (var propName in Interface) { + if (!Interface.hasOwnProperty(propName)) { + continue; + } + if (false) { + delete this[propName]; // this has a getter/setter for warnings + } + var normalize = Interface[propName]; + if (normalize) { + this[propName] = normalize(nativeEvent); + } else { + if (propName === 'target') { + this.target = nativeEventTarget; + } else { + this[propName] = nativeEvent[propName]; + } + } + } + + var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false; + if (defaultPrevented) { + this.isDefaultPrevented = emptyFunction.thatReturnsTrue; + } else { + this.isDefaultPrevented = emptyFunction.thatReturnsFalse; + } + this.isPropagationStopped = emptyFunction.thatReturnsFalse; + return this; + } + + _assign(SyntheticEvent.prototype, { + preventDefault: function () { + this.defaultPrevented = true; + var event = this.nativeEvent; + if (!event) { + return; + } + + if (event.preventDefault) { + event.preventDefault(); + // eslint-disable-next-line valid-typeof + } else if (typeof event.returnValue !== 'unknown') { + event.returnValue = false; + } + this.isDefaultPrevented = emptyFunction.thatReturnsTrue; + }, + + stopPropagation: function () { + var event = this.nativeEvent; + if (!event) { + return; + } + + if (event.stopPropagation) { + event.stopPropagation(); + // eslint-disable-next-line valid-typeof + } else if (typeof event.cancelBubble !== 'unknown') { + // The ChangeEventPlugin registers a "propertychange" event for + // IE. This event does not support bubbling or cancelling, and + // any references to cancelBubble throw "Member not found". A + // typeof check of "unknown" circumvents this issue (and is also + // IE specific). + event.cancelBubble = true; + } + + this.isPropagationStopped = emptyFunction.thatReturnsTrue; + }, + + /** + * We release all dispatched `SyntheticEvent`s after each event loop, adding + * them back into the pool. This allows a way to hold onto a reference that + * won't be added back into the pool. + */ + persist: function () { + this.isPersistent = emptyFunction.thatReturnsTrue; + }, + + /** + * Checks if this event should be released back into the pool. + * + * @return {boolean} True if this should not be released, false otherwise. + */ + isPersistent: emptyFunction.thatReturnsFalse, + + /** + * `PooledClass` looks for `destructor` on each instance it releases. + */ + destructor: function () { + var Interface = this.constructor.Interface; + for (var propName in Interface) { + if (false) { + Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName])); + } else { + this[propName] = null; + } + } + for (var i = 0; i < shouldBeReleasedProperties.length; i++) { + this[shouldBeReleasedProperties[i]] = null; + } + if (false) { + Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null)); + Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction)); + Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction)); + } + } + }); + + SyntheticEvent.Interface = EventInterface; + + /** + * Helper to reduce boilerplate when creating subclasses. + * + * @param {function} Class + * @param {?object} Interface + */ + SyntheticEvent.augmentClass = function (Class, Interface) { + var Super = this; + + var E = function () {}; + E.prototype = Super.prototype; + var prototype = new E(); + + _assign(prototype, Class.prototype); + Class.prototype = prototype; + Class.prototype.constructor = Class; + + Class.Interface = _assign({}, Super.Interface, Interface); + Class.augmentClass = Super.augmentClass; + + PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler); + }; + + /** Proxying after everything set on SyntheticEvent + * to resolve Proxy issue on some WebKit browsers + * in which some Event properties are set to undefined (GH#10010) + */ + if (false) { + if (isProxySupported) { + /*eslint-disable no-func-assign */ + SyntheticEvent = new Proxy(SyntheticEvent, { + construct: function (target, args) { + return this.apply(target, Object.create(target.prototype), args); + }, + apply: function (constructor, that, args) { + return new Proxy(constructor.apply(that, args), { + set: function (target, prop, value) { + if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) { + process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), "This synthetic event is reused for performance reasons. If you're " + "seeing this, you're adding a new property in the synthetic event object. " + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0; + didWarnForAddedNewProperty = true; + } + target[prop] = value; + return true; + } + }); + } + }); + /*eslint-enable no-func-assign */ + } + } + + PooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler); + + module.exports = SyntheticEvent; + + /** + * Helper to nullify syntheticEvent instance properties when destructing + * + * @param {object} SyntheticEvent + * @param {String} propName + * @return {object} defineProperty object + */ + function getPooledWarningPropertyDefinition(propName, getVal) { + var isFunction = typeof getVal === 'function'; + return { + configurable: true, + set: set, + get: get + }; + + function set(val) { + var action = isFunction ? 'setting the method' : 'setting the property'; + warn(action, 'This is effectively a no-op'); + return val; + } + + function get() { + var action = isFunction ? 'accessing the method' : 'accessing the property'; + var result = isFunction ? 'This is a no-op function' : 'This is set to null'; + warn(action, result); + return getVal; + } + + function warn(action, result) { + var warningCondition = false; + false ? warning(warningCondition, "This synthetic event is reused for performance reasons. If you're seeing this, " + "you're %s `%s` on a released/nullified synthetic event. %s. " + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0; + } + } + +/***/ }), +/* 56 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var SyntheticEvent = __webpack_require__(55); + + /** + * @interface Event + * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105 + * /#events-inputevents + */ + var InputEventInterface = { + data: null + }; + + /** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticUIEvent} + */ + function SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); + } + + SyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface); + + module.exports = SyntheticInputEvent; + +/***/ }), +/* 57 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var EventPluginHub = __webpack_require__(44); + var EventPropagators = __webpack_require__(43); + var ExecutionEnvironment = __webpack_require__(50); + var ReactDOMComponentTree = __webpack_require__(36); + var ReactUpdates = __webpack_require__(58); + var SyntheticEvent = __webpack_require__(55); + + var inputValueTracking = __webpack_require__(66); + var getEventTarget = __webpack_require__(67); + var isEventSupported = __webpack_require__(68); + var isTextInputElement = __webpack_require__(69); + + var eventTypes = { + change: { + phasedRegistrationNames: { + bubbled: 'onChange', + captured: 'onChangeCapture' + }, + dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange'] + } + }; + + function createAndAccumulateChangeEvent(inst, nativeEvent, target) { + var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, target); + event.type = 'change'; + EventPropagators.accumulateTwoPhaseDispatches(event); + return event; + } + /** + * For IE shims + */ + var activeElement = null; + var activeElementInst = null; + + /** + * SECTION: handle `change` event + */ + function shouldUseChangeEvent(elem) { + var nodeName = elem.nodeName && elem.nodeName.toLowerCase(); + return nodeName === 'select' || nodeName === 'input' && elem.type === 'file'; + } + + var doesChangeEventBubble = false; + if (ExecutionEnvironment.canUseDOM) { + // See `handleChange` comment below + doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8); + } + + function manualDispatchChangeEvent(nativeEvent) { + var event = createAndAccumulateChangeEvent(activeElementInst, nativeEvent, getEventTarget(nativeEvent)); + + // If change and propertychange bubbled, we'd just bind to it like all the + // other events and have it go through ReactBrowserEventEmitter. Since it + // doesn't, we manually listen for the events and so we have to enqueue and + // process the abstract event manually. + // + // Batching is necessary here in order to ensure that all event handlers run + // before the next rerender (including event handlers attached to ancestor + // elements instead of directly on the input). Without this, controlled + // components don't work properly in conjunction with event bubbling because + // the component is rerendered and the value reverted before all the event + // handlers can run. See https://github.com/facebook/react/issues/708. + ReactUpdates.batchedUpdates(runEventInBatch, event); + } + + function runEventInBatch(event) { + EventPluginHub.enqueueEvents(event); + EventPluginHub.processEventQueue(false); + } + + function startWatchingForChangeEventIE8(target, targetInst) { + activeElement = target; + activeElementInst = targetInst; + activeElement.attachEvent('onchange', manualDispatchChangeEvent); + } + + function stopWatchingForChangeEventIE8() { + if (!activeElement) { + return; + } + activeElement.detachEvent('onchange', manualDispatchChangeEvent); + activeElement = null; + activeElementInst = null; + } + + function getInstIfValueChanged(targetInst, nativeEvent) { + var updated = inputValueTracking.updateValueIfChanged(targetInst); + var simulated = nativeEvent.simulated === true && ChangeEventPlugin._allowSimulatedPassThrough; + + if (updated || simulated) { + return targetInst; + } + } + + function getTargetInstForChangeEvent(topLevelType, targetInst) { + if (topLevelType === 'topChange') { + return targetInst; + } + } + + function handleEventsForChangeEventIE8(topLevelType, target, targetInst) { + if (topLevelType === 'topFocus') { + // stopWatching() should be a noop here but we call it just in case we + // missed a blur event somehow. + stopWatchingForChangeEventIE8(); + startWatchingForChangeEventIE8(target, targetInst); + } else if (topLevelType === 'topBlur') { + stopWatchingForChangeEventIE8(); + } + } + + /** + * SECTION: handle `input` event + */ + var isInputEventSupported = false; + if (ExecutionEnvironment.canUseDOM) { + // IE9 claims to support the input event but fails to trigger it when + // deleting text, so we ignore its input events. + + isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9); + } + + /** + * (For IE <=9) Starts tracking propertychange events on the passed-in element + * and override the value property so that we can distinguish user events from + * value changes in JS. + */ + function startWatchingForValueChange(target, targetInst) { + activeElement = target; + activeElementInst = targetInst; + activeElement.attachEvent('onpropertychange', handlePropertyChange); + } + + /** + * (For IE <=9) Removes the event listeners from the currently-tracked element, + * if any exists. + */ + function stopWatchingForValueChange() { + if (!activeElement) { + return; + } + activeElement.detachEvent('onpropertychange', handlePropertyChange); + + activeElement = null; + activeElementInst = null; + } + + /** + * (For IE <=9) Handles a propertychange event, sending a `change` event if + * the value of the active element has changed. + */ + function handlePropertyChange(nativeEvent) { + if (nativeEvent.propertyName !== 'value') { + return; + } + if (getInstIfValueChanged(activeElementInst, nativeEvent)) { + manualDispatchChangeEvent(nativeEvent); + } + } + + function handleEventsForInputEventPolyfill(topLevelType, target, targetInst) { + if (topLevelType === 'topFocus') { + // In IE8, we can capture almost all .value changes by adding a + // propertychange handler and looking for events with propertyName + // equal to 'value' + // In IE9, propertychange fires for most input events but is buggy and + // doesn't fire when text is deleted, but conveniently, selectionchange + // appears to fire in all of the remaining cases so we catch those and + // forward the event if the value has changed + // In either case, we don't want to call the event handler if the value + // is changed from JS so we redefine a setter for `.value` that updates + // our activeElementValue variable, allowing us to ignore those changes + // + // stopWatching() should be a noop here but we call it just in case we + // missed a blur event somehow. + stopWatchingForValueChange(); + startWatchingForValueChange(target, targetInst); + } else if (topLevelType === 'topBlur') { + stopWatchingForValueChange(); + } + } + + // For IE8 and IE9. + function getTargetInstForInputEventPolyfill(topLevelType, targetInst, nativeEvent) { + if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') { + // On the selectionchange event, the target is just document which isn't + // helpful for us so just check activeElement instead. + // + // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire + // propertychange on the first input event after setting `value` from a + // script and fires only keydown, keypress, keyup. Catching keyup usually + // gets it and catching keydown lets us fire an event for the first + // keystroke if user does a key repeat (it'll be a little delayed: right + // before the second keystroke). Other input methods (e.g., paste) seem to + // fire selectionchange normally. + return getInstIfValueChanged(activeElementInst, nativeEvent); + } + } + + /** + * SECTION: handle `click` event + */ + function shouldUseClickEvent(elem) { + // Use the `click` event to detect changes to checkbox and radio inputs. + // This approach works across all browsers, whereas `change` does not fire + // until `blur` in IE8. + var nodeName = elem.nodeName; + return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio'); + } + + function getTargetInstForClickEvent(topLevelType, targetInst, nativeEvent) { + if (topLevelType === 'topClick') { + return getInstIfValueChanged(targetInst, nativeEvent); + } + } + + function getTargetInstForInputOrChangeEvent(topLevelType, targetInst, nativeEvent) { + if (topLevelType === 'topInput' || topLevelType === 'topChange') { + return getInstIfValueChanged(targetInst, nativeEvent); + } + } + + function handleControlledInputBlur(inst, node) { + // TODO: In IE, inst is occasionally null. Why? + if (inst == null) { + return; + } + + // Fiber and ReactDOM keep wrapper state in separate places + var state = inst._wrapperState || node._wrapperState; + + if (!state || !state.controlled || node.type !== 'number') { + return; + } + + // If controlled, assign the value attribute to the current value on blur + var value = '' + node.value; + if (node.getAttribute('value') !== value) { + node.setAttribute('value', value); + } + } + + /** + * This plugin creates an `onChange` event that normalizes change events + * across form elements. This event fires at a time when it's possible to + * change the element's value without seeing a flicker. + * + * Supported elements are: + * - input (see `isTextInputElement`) + * - textarea + * - select + */ + var ChangeEventPlugin = { + eventTypes: eventTypes, + + _allowSimulatedPassThrough: true, + _isInputEventSupported: isInputEventSupported, + + extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window; + + var getTargetInstFunc, handleEventFunc; + if (shouldUseChangeEvent(targetNode)) { + if (doesChangeEventBubble) { + getTargetInstFunc = getTargetInstForChangeEvent; + } else { + handleEventFunc = handleEventsForChangeEventIE8; + } + } else if (isTextInputElement(targetNode)) { + if (isInputEventSupported) { + getTargetInstFunc = getTargetInstForInputOrChangeEvent; + } else { + getTargetInstFunc = getTargetInstForInputEventPolyfill; + handleEventFunc = handleEventsForInputEventPolyfill; + } + } else if (shouldUseClickEvent(targetNode)) { + getTargetInstFunc = getTargetInstForClickEvent; + } + + if (getTargetInstFunc) { + var inst = getTargetInstFunc(topLevelType, targetInst, nativeEvent); + if (inst) { + var event = createAndAccumulateChangeEvent(inst, nativeEvent, nativeEventTarget); + return event; + } + } + + if (handleEventFunc) { + handleEventFunc(topLevelType, targetNode, targetInst); + } + + // When blurring, set the value attribute for number inputs + if (topLevelType === 'topBlur') { + handleControlledInputBlur(targetInst, targetNode); + } + } + }; + + module.exports = ChangeEventPlugin; + +/***/ }), +/* 58 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var _prodInvariant = __webpack_require__(37), + _assign = __webpack_require__(3); + + var CallbackQueue = __webpack_require__(59); + var PooledClass = __webpack_require__(52); + var ReactFeatureFlags = __webpack_require__(60); + var ReactReconciler = __webpack_require__(61); + var Transaction = __webpack_require__(65); + + var invariant = __webpack_require__(11); + + var dirtyComponents = []; + var updateBatchNumber = 0; + var asapCallbackQueue = CallbackQueue.getPooled(); + var asapEnqueued = false; + + var batchingStrategy = null; + + function ensureInjected() { + !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? false ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0; + } + + var NESTED_UPDATES = { + initialize: function () { + this.dirtyComponentsLength = dirtyComponents.length; + }, + close: function () { + if (this.dirtyComponentsLength !== dirtyComponents.length) { + // Additional updates were enqueued by componentDidUpdate handlers or + // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run + // these new updates so that if A's componentDidUpdate calls setState on + // B, B will update before the callback A's updater provided when calling + // setState. + dirtyComponents.splice(0, this.dirtyComponentsLength); + flushBatchedUpdates(); + } else { + dirtyComponents.length = 0; + } + } + }; + + var UPDATE_QUEUEING = { + initialize: function () { + this.callbackQueue.reset(); + }, + close: function () { + this.callbackQueue.notifyAll(); + } + }; + + var TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING]; + + function ReactUpdatesFlushTransaction() { + this.reinitializeTransaction(); + this.dirtyComponentsLength = null; + this.callbackQueue = CallbackQueue.getPooled(); + this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled( + /* useCreateElement */true); + } + + _assign(ReactUpdatesFlushTransaction.prototype, Transaction, { + getTransactionWrappers: function () { + return TRANSACTION_WRAPPERS; + }, + + destructor: function () { + this.dirtyComponentsLength = null; + CallbackQueue.release(this.callbackQueue); + this.callbackQueue = null; + ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction); + this.reconcileTransaction = null; + }, + + perform: function (method, scope, a) { + // Essentially calls `this.reconcileTransaction.perform(method, scope, a)` + // with this transaction's wrappers around it. + return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a); + } + }); + + PooledClass.addPoolingTo(ReactUpdatesFlushTransaction); + + function batchedUpdates(callback, a, b, c, d, e) { + ensureInjected(); + return batchingStrategy.batchedUpdates(callback, a, b, c, d, e); + } + + /** + * Array comparator for ReactComponents by mount ordering. + * + * @param {ReactComponent} c1 first component you're comparing + * @param {ReactComponent} c2 second component you're comparing + * @return {number} Return value usable by Array.prototype.sort(). + */ + function mountOrderComparator(c1, c2) { + return c1._mountOrder - c2._mountOrder; + } + + function runBatchedUpdates(transaction) { + var len = transaction.dirtyComponentsLength; + !(len === dirtyComponents.length) ? false ? invariant(false, 'Expected flush transaction\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0; + + // Since reconciling a component higher in the owner hierarchy usually (not + // always -- see shouldComponentUpdate()) will reconcile children, reconcile + // them before their children by sorting the array. + dirtyComponents.sort(mountOrderComparator); + + // Any updates enqueued while reconciling must be performed after this entire + // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and + // C, B could update twice in a single batch if C's render enqueues an update + // to B (since B would have already updated, we should skip it, and the only + // way we can know to do so is by checking the batch counter). + updateBatchNumber++; + + for (var i = 0; i < len; i++) { + // If a component is unmounted before pending changes apply, it will still + // be here, but we assume that it has cleared its _pendingCallbacks and + // that performUpdateIfNecessary is a noop. + var component = dirtyComponents[i]; + + // If performUpdateIfNecessary happens to enqueue any new updates, we + // shouldn't execute the callbacks until the next render happens, so + // stash the callbacks first + var callbacks = component._pendingCallbacks; + component._pendingCallbacks = null; + + var markerName; + if (ReactFeatureFlags.logTopLevelRenders) { + var namedComponent = component; + // Duck type TopLevelWrapper. This is probably always true. + if (component._currentElement.type.isReactTopLevelWrapper) { + namedComponent = component._renderedComponent; + } + markerName = 'React update: ' + namedComponent.getName(); + console.time(markerName); + } + + ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber); + + if (markerName) { + console.timeEnd(markerName); + } + + if (callbacks) { + for (var j = 0; j < callbacks.length; j++) { + transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance()); + } + } + } + } + + var flushBatchedUpdates = function () { + // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents + // array and perform any updates enqueued by mount-ready handlers (i.e., + // componentDidUpdate) but we need to check here too in order to catch + // updates enqueued by setState callbacks and asap calls. + while (dirtyComponents.length || asapEnqueued) { + if (dirtyComponents.length) { + var transaction = ReactUpdatesFlushTransaction.getPooled(); + transaction.perform(runBatchedUpdates, null, transaction); + ReactUpdatesFlushTransaction.release(transaction); + } + + if (asapEnqueued) { + asapEnqueued = false; + var queue = asapCallbackQueue; + asapCallbackQueue = CallbackQueue.getPooled(); + queue.notifyAll(); + CallbackQueue.release(queue); + } + } + }; + + /** + * Mark a component as needing a rerender, adding an optional callback to a + * list of functions which will be executed once the rerender occurs. + */ + function enqueueUpdate(component) { + ensureInjected(); + + // Various parts of our code (such as ReactCompositeComponent's + // _renderValidatedComponent) assume that calls to render aren't nested; + // verify that that's the case. (This is called by each top-level update + // function, like setState, forceUpdate, etc.; creation and + // destruction of top-level components is guarded in ReactMount.) + + if (!batchingStrategy.isBatchingUpdates) { + batchingStrategy.batchedUpdates(enqueueUpdate, component); + return; + } + + dirtyComponents.push(component); + if (component._updateBatchNumber == null) { + component._updateBatchNumber = updateBatchNumber + 1; + } + } + + /** + * Enqueue a callback to be run at the end of the current batching cycle. Throws + * if no updates are currently being performed. + */ + function asap(callback, context) { + invariant(batchingStrategy.isBatchingUpdates, "ReactUpdates.asap: Can't enqueue an asap callback in a context where" + 'updates are not being batched.'); + asapCallbackQueue.enqueue(callback, context); + asapEnqueued = true; + } + + var ReactUpdatesInjection = { + injectReconcileTransaction: function (ReconcileTransaction) { + !ReconcileTransaction ? false ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0; + ReactUpdates.ReactReconcileTransaction = ReconcileTransaction; + }, + + injectBatchingStrategy: function (_batchingStrategy) { + !_batchingStrategy ? false ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0; + !(typeof _batchingStrategy.batchedUpdates === 'function') ? false ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0; + !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? false ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0; + batchingStrategy = _batchingStrategy; + } + }; + + var ReactUpdates = { + /** + * React references `ReactReconcileTransaction` using this property in order + * to allow dependency injection. + * + * @internal + */ + ReactReconcileTransaction: null, + + batchedUpdates: batchedUpdates, + enqueueUpdate: enqueueUpdate, + flushBatchedUpdates: flushBatchedUpdates, + injection: ReactUpdatesInjection, + asap: asap + }; + + module.exports = ReactUpdates; + +/***/ }), +/* 59 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + var _prodInvariant = __webpack_require__(37); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var PooledClass = __webpack_require__(52); + + var invariant = __webpack_require__(11); + + /** + * A specialized pseudo-event module to help keep track of components waiting to + * be notified when their DOM representations are available for use. + * + * This implements `PooledClass`, so you should never need to instantiate this. + * Instead, use `CallbackQueue.getPooled()`. + * + * @class ReactMountReady + * @implements PooledClass + * @internal + */ + + var CallbackQueue = function () { + function CallbackQueue(arg) { + _classCallCheck(this, CallbackQueue); + + this._callbacks = null; + this._contexts = null; + this._arg = arg; + } + + /** + * Enqueues a callback to be invoked when `notifyAll` is invoked. + * + * @param {function} callback Invoked when `notifyAll` is invoked. + * @param {?object} context Context to call `callback` with. + * @internal + */ + + + CallbackQueue.prototype.enqueue = function enqueue(callback, context) { + this._callbacks = this._callbacks || []; + this._callbacks.push(callback); + this._contexts = this._contexts || []; + this._contexts.push(context); + }; + + /** + * Invokes all enqueued callbacks and clears the queue. This is invoked after + * the DOM representation of a component has been created or updated. + * + * @internal + */ + + + CallbackQueue.prototype.notifyAll = function notifyAll() { + var callbacks = this._callbacks; + var contexts = this._contexts; + var arg = this._arg; + if (callbacks && contexts) { + !(callbacks.length === contexts.length) ? false ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0; + this._callbacks = null; + this._contexts = null; + for (var i = 0; i < callbacks.length; i++) { + callbacks[i].call(contexts[i], arg); + } + callbacks.length = 0; + contexts.length = 0; + } + }; + + CallbackQueue.prototype.checkpoint = function checkpoint() { + return this._callbacks ? this._callbacks.length : 0; + }; + + CallbackQueue.prototype.rollback = function rollback(len) { + if (this._callbacks && this._contexts) { + this._callbacks.length = len; + this._contexts.length = len; + } + }; + + /** + * Resets the internal queue. + * + * @internal + */ + + + CallbackQueue.prototype.reset = function reset() { + this._callbacks = null; + this._contexts = null; + }; + + /** + * `PooledClass` looks for this. + */ + + + CallbackQueue.prototype.destructor = function destructor() { + this.reset(); + }; + + return CallbackQueue; + }(); + + module.exports = PooledClass.addPoolingTo(CallbackQueue); + +/***/ }), +/* 60 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + var ReactFeatureFlags = { + // When true, call console.time() before and .timeEnd() after each top-level + // render (both initial renders and updates). Useful when looking at prod-mode + // timeline profiles in Chrome, for example. + logTopLevelRenders: false + }; + + module.exports = ReactFeatureFlags; + +/***/ }), +/* 61 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var ReactRef = __webpack_require__(62); + var ReactInstrumentation = __webpack_require__(64); + + var warning = __webpack_require__(7); + + /** + * Helper to call ReactRef.attachRefs with this composite component, split out + * to avoid allocations in the transaction mount-ready queue. + */ + function attachRefs() { + ReactRef.attachRefs(this, this._currentElement); + } + + var ReactReconciler = { + /** + * Initializes the component, renders markup, and registers event listeners. + * + * @param {ReactComponent} internalInstance + * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction + * @param {?object} the containing host component instance + * @param {?object} info about the host container + * @return {?string} Rendered markup to be inserted into the DOM. + * @final + * @internal + */ + mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID) // 0 in production and for roots + { + if (false) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID); + } + } + var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID); + if (internalInstance._currentElement && internalInstance._currentElement.ref != null) { + transaction.getReactMountReady().enqueue(attachRefs, internalInstance); + } + if (false) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID); + } + } + return markup; + }, + + /** + * Returns a value that can be passed to + * ReactComponentEnvironment.replaceNodeWithMarkup. + */ + getHostNode: function (internalInstance) { + return internalInstance.getHostNode(); + }, + + /** + * Releases any resources allocated by `mountComponent`. + * + * @final + * @internal + */ + unmountComponent: function (internalInstance, safely) { + if (false) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID); + } + } + ReactRef.detachRefs(internalInstance, internalInstance._currentElement); + internalInstance.unmountComponent(safely); + if (false) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID); + } + } + }, + + /** + * Update a component using a new element. + * + * @param {ReactComponent} internalInstance + * @param {ReactElement} nextElement + * @param {ReactReconcileTransaction} transaction + * @param {object} context + * @internal + */ + receiveComponent: function (internalInstance, nextElement, transaction, context) { + var prevElement = internalInstance._currentElement; + + if (nextElement === prevElement && context === internalInstance._context) { + // Since elements are immutable after the owner is rendered, + // we can do a cheap identity compare here to determine if this is a + // superfluous reconcile. It's possible for state to be mutable but such + // change should trigger an update of the owner which would recreate + // the element. We explicitly check for the existence of an owner since + // it's possible for an element created outside a composite to be + // deeply mutated and reused. + + // TODO: Bailing out early is just a perf optimization right? + // TODO: Removing the return statement should affect correctness? + return; + } + + if (false) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement); + } + } + + var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement); + + if (refsChanged) { + ReactRef.detachRefs(internalInstance, prevElement); + } + + internalInstance.receiveComponent(nextElement, transaction, context); + + if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) { + transaction.getReactMountReady().enqueue(attachRefs, internalInstance); + } + + if (false) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID); + } + } + }, + + /** + * Flush any dirty changes in a component. + * + * @param {ReactComponent} internalInstance + * @param {ReactReconcileTransaction} transaction + * @internal + */ + performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) { + if (internalInstance._updateBatchNumber !== updateBatchNumber) { + // The component's enqueued batch number should always be the current + // batch or the following one. + false ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0; + return; + } + if (false) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement); + } + } + internalInstance.performUpdateIfNecessary(transaction); + if (false) { + if (internalInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID); + } + } + } + }; + + module.exports = ReactReconciler; + +/***/ }), +/* 62 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + var ReactOwner = __webpack_require__(63); + + var ReactRef = {}; + + function attachRef(ref, component, owner) { + if (typeof ref === 'function') { + ref(component.getPublicInstance()); + } else { + // Legacy ref + ReactOwner.addComponentAsRefTo(component, ref, owner); + } + } + + function detachRef(ref, component, owner) { + if (typeof ref === 'function') { + ref(null); + } else { + // Legacy ref + ReactOwner.removeComponentAsRefFrom(component, ref, owner); + } + } + + ReactRef.attachRefs = function (instance, element) { + if (element === null || typeof element !== 'object') { + return; + } + var ref = element.ref; + if (ref != null) { + attachRef(ref, instance, element._owner); + } + }; + + ReactRef.shouldUpdateRefs = function (prevElement, nextElement) { + // If either the owner or a `ref` has changed, make sure the newest owner + // has stored a reference to `this`, and the previous owner (if different) + // has forgotten the reference to `this`. We use the element instead + // of the public this.props because the post processing cannot determine + // a ref. The ref conceptually lives on the element. + + // TODO: Should this even be possible? The owner cannot change because + // it's forbidden by shouldUpdateReactComponent. The ref can change + // if you swap the keys of but not the refs. Reconsider where this check + // is made. It probably belongs where the key checking and + // instantiateReactComponent is done. + + var prevRef = null; + var prevOwner = null; + if (prevElement !== null && typeof prevElement === 'object') { + prevRef = prevElement.ref; + prevOwner = prevElement._owner; + } + + var nextRef = null; + var nextOwner = null; + if (nextElement !== null && typeof nextElement === 'object') { + nextRef = nextElement.ref; + nextOwner = nextElement._owner; + } + + return prevRef !== nextRef || + // If owner changes but we have an unchanged function ref, don't update refs + typeof nextRef === 'string' && nextOwner !== prevOwner; + }; + + ReactRef.detachRefs = function (instance, element) { + if (element === null || typeof element !== 'object') { + return; + } + var ref = element.ref; + if (ref != null) { + detachRef(ref, instance, element._owner); + } + }; + + module.exports = ReactRef; + +/***/ }), +/* 63 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + var _prodInvariant = __webpack_require__(37); + + var invariant = __webpack_require__(11); + + /** + * @param {?object} object + * @return {boolean} True if `object` is a valid owner. + * @final + */ + function isValidOwner(object) { + return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function'); + } + + /** + * ReactOwners are capable of storing references to owned components. + * + * All components are capable of //being// referenced by owner components, but + * only ReactOwner components are capable of //referencing// owned components. + * The named reference is known as a "ref". + * + * Refs are available when mounted and updated during reconciliation. + * + * var MyComponent = React.createClass({ + * render: function() { + * return ( + *
+ * + *
+ * ); + * }, + * handleClick: function() { + * this.refs.custom.handleClick(); + * }, + * componentDidMount: function() { + * this.refs.custom.initialize(); + * } + * }); + * + * Refs should rarely be used. When refs are used, they should only be done to + * control data that is not handled by React's data flow. + * + * @class ReactOwner + */ + var ReactOwner = { + /** + * Adds a component by ref to an owner component. + * + * @param {ReactComponent} component Component to reference. + * @param {string} ref Name by which to refer to the component. + * @param {ReactOwner} owner Component on which to record the ref. + * @final + * @internal + */ + addComponentAsRefTo: function (component, ref, owner) { + !isValidOwner(owner) ? false ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. 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 React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0; + owner.attachRef(ref, component); + }, + + /** + * Removes a component by ref from an owner component. + * + * @param {ReactComponent} component Component to dereference. + * @param {string} ref Name of the ref to remove. + * @param {ReactOwner} owner Component on which the ref is recorded. + * @final + * @internal + */ + removeComponentAsRefFrom: function (component, ref, owner) { + !isValidOwner(owner) ? false ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0; + var ownerPublicInstance = owner.getPublicInstance(); + // Check that `component`'s owner is still alive and that `component` is still the current ref + // because we do not want to detach the ref if another component stole it. + if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) { + owner.detachRef(ref); + } + } + }; + + module.exports = ReactOwner; + +/***/ }), +/* 64 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2016-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + // Trust the developer to only use ReactInstrumentation with a __DEV__ check + + var debugTool = null; + + if (false) { + var ReactDebugTool = require('./ReactDebugTool'); + debugTool = ReactDebugTool; + } + + module.exports = { debugTool: debugTool }; + +/***/ }), +/* 65 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + var _prodInvariant = __webpack_require__(37); + + var invariant = __webpack_require__(11); + + var OBSERVED_ERROR = {}; + + /** + * `Transaction` creates a black box that is able to wrap any method such that + * certain invariants are maintained before and after the method is invoked + * (Even if an exception is thrown while invoking the wrapped method). Whoever + * instantiates a transaction can provide enforcers of the invariants at + * creation time. The `Transaction` class itself will supply one additional + * automatic invariant for you - the invariant that any transaction instance + * should not be run while it is already being run. You would typically create a + * single instance of a `Transaction` for reuse multiple times, that potentially + * is used to wrap several different methods. Wrappers are extremely simple - + * they only require implementing two methods. + * + *
+	 *                       wrappers (injected at creation time)
+	 *                                      +        +
+	 *                                      |        |
+	 *                    +-----------------|--------|--------------+
+	 *                    |                 v        |              |
+	 *                    |      +---------------+   |              |
+	 *                    |   +--|    wrapper1   |---|----+         |
+	 *                    |   |  +---------------+   v    |         |
+	 *                    |   |          +-------------+  |         |
+	 *                    |   |     +----|   wrapper2  |--------+   |
+	 *                    |   |     |    +-------------+  |     |   |
+	 *                    |   |     |                     |     |   |
+	 *                    |   v     v                     v     v   | wrapper
+	 *                    | +---+ +---+   +---------+   +---+ +---+ | invariants
+	 * perform(anyMethod) | |   | |   |   |         |   |   | |   | | maintained
+	 * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->
+	 *                    | |   | |   |   |         |   |   | |   | |
+	 *                    | |   | |   |   |         |   |   | |   | |
+	 *                    | |   | |   |   |         |   |   | |   | |
+	 *                    | +---+ +---+   +---------+   +---+ +---+ |
+	 *                    |  initialize                    close    |
+	 *                    +-----------------------------------------+
+	 * 
+ * + * Use cases: + * - Preserving the input selection ranges before/after reconciliation. + * Restoring selection even in the event of an unexpected error. + * - Deactivating events while rearranging the DOM, preventing blurs/focuses, + * while guaranteeing that afterwards, the event system is reactivated. + * - Flushing a queue of collected DOM mutations to the main UI thread after a + * reconciliation takes place in a worker thread. + * - Invoking any collected `componentDidUpdate` callbacks after rendering new + * content. + * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue + * to preserve the `scrollTop` (an automatic scroll aware DOM). + * - (Future use case): Layout calculations before and after DOM updates. + * + * Transactional plugin API: + * - A module that has an `initialize` method that returns any precomputation. + * - and a `close` method that accepts the precomputation. `close` is invoked + * when the wrapped process is completed, or has failed. + * + * @param {Array} transactionWrapper Wrapper modules + * that implement `initialize` and `close`. + * @return {Transaction} Single transaction for reuse in thread. + * + * @class Transaction + */ + var TransactionImpl = { + /** + * Sets up this instance so that it is prepared for collecting metrics. Does + * so such that this setup method may be used on an instance that is already + * initialized, in a way that does not consume additional memory upon reuse. + * That can be useful if you decide to make your subclass of this mixin a + * "PooledClass". + */ + reinitializeTransaction: function () { + this.transactionWrappers = this.getTransactionWrappers(); + if (this.wrapperInitData) { + this.wrapperInitData.length = 0; + } else { + this.wrapperInitData = []; + } + this._isInTransaction = false; + }, + + _isInTransaction: false, + + /** + * @abstract + * @return {Array} Array of transaction wrappers. + */ + getTransactionWrappers: null, + + isInTransaction: function () { + return !!this._isInTransaction; + }, + + /* eslint-disable space-before-function-paren */ + + /** + * Executes the function within a safety window. Use this for the top level + * methods that result in large amounts of computation/mutations that would + * need to be safety checked. The optional arguments helps prevent the need + * to bind in many cases. + * + * @param {function} method Member of scope to call. + * @param {Object} scope Scope to invoke from. + * @param {Object?=} a Argument to pass to the method. + * @param {Object?=} b Argument to pass to the method. + * @param {Object?=} c Argument to pass to the method. + * @param {Object?=} d Argument to pass to the method. + * @param {Object?=} e Argument to pass to the method. + * @param {Object?=} f Argument to pass to the method. + * + * @return {*} Return value from `method`. + */ + perform: function (method, scope, a, b, c, d, e, f) { + /* eslint-enable space-before-function-paren */ + !!this.isInTransaction() ? false ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0; + var errorThrown; + var ret; + try { + this._isInTransaction = true; + // Catching errors makes debugging more difficult, so we start with + // errorThrown set to true before setting it to false after calling + // close -- if it's still set to true in the finally block, it means + // one of these calls threw. + errorThrown = true; + this.initializeAll(0); + ret = method.call(scope, a, b, c, d, e, f); + errorThrown = false; + } finally { + try { + if (errorThrown) { + // If `method` throws, prefer to show that stack trace over any thrown + // by invoking `closeAll`. + try { + this.closeAll(0); + } catch (err) {} + } else { + // Since `method` didn't throw, we don't want to silence the exception + // here. + this.closeAll(0); + } + } finally { + this._isInTransaction = false; + } + } + return ret; + }, + + initializeAll: function (startIndex) { + var transactionWrappers = this.transactionWrappers; + for (var i = startIndex; i < transactionWrappers.length; i++) { + var wrapper = transactionWrappers[i]; + try { + // Catching errors makes debugging more difficult, so we start with the + // OBSERVED_ERROR state before overwriting it with the real return value + // of initialize -- if it's still set to OBSERVED_ERROR in the finally + // block, it means wrapper.initialize threw. + this.wrapperInitData[i] = OBSERVED_ERROR; + this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null; + } finally { + if (this.wrapperInitData[i] === OBSERVED_ERROR) { + // The initializer for wrapper i threw an error; initialize the + // remaining wrappers but silence any exceptions from them to ensure + // that the first error is the one to bubble up. + try { + this.initializeAll(i + 1); + } catch (err) {} + } + } + } + }, + + /** + * Invokes each of `this.transactionWrappers.close[i]` functions, passing into + * them the respective return values of `this.transactionWrappers.init[i]` + * (`close`rs that correspond to initializers that failed will not be + * invoked). + */ + closeAll: function (startIndex) { + !this.isInTransaction() ? false ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0; + var transactionWrappers = this.transactionWrappers; + for (var i = startIndex; i < transactionWrappers.length; i++) { + var wrapper = transactionWrappers[i]; + var initData = this.wrapperInitData[i]; + var errorThrown; + try { + // Catching errors makes debugging more difficult, so we start with + // errorThrown set to true before setting it to false after calling + // close -- if it's still set to true in the finally block, it means + // wrapper.close threw. + errorThrown = true; + if (initData !== OBSERVED_ERROR && wrapper.close) { + wrapper.close.call(this, initData); + } + errorThrown = false; + } finally { + if (errorThrown) { + // The closer for wrapper i threw an error; close the remaining + // wrappers but silence any exceptions from them to ensure that the + // first error is the one to bubble up. + try { + this.closeAll(i + 1); + } catch (e) {} + } + } + } + this.wrapperInitData.length = 0; + } + }; + + module.exports = TransactionImpl; + +/***/ }), +/* 66 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var ReactDOMComponentTree = __webpack_require__(36); + + function isCheckable(elem) { + var type = elem.type; + var nodeName = elem.nodeName; + return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio'); + } + + function getTracker(inst) { + return inst._wrapperState.valueTracker; + } + + function attachTracker(inst, tracker) { + inst._wrapperState.valueTracker = tracker; + } + + function detachTracker(inst) { + inst._wrapperState.valueTracker = null; + } + + function getValueFromNode(node) { + var value; + if (node) { + value = isCheckable(node) ? '' + node.checked : node.value; + } + return value; + } + + var inputValueTracking = { + // exposed for testing + _getTrackerFromNode: function (node) { + return getTracker(ReactDOMComponentTree.getInstanceFromNode(node)); + }, + + + track: function (inst) { + if (getTracker(inst)) { + return; + } + + var node = ReactDOMComponentTree.getNodeFromInstance(inst); + var valueField = isCheckable(node) ? 'checked' : 'value'; + var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField); + + var currentValue = '' + node[valueField]; + + // if someone has already defined a value or Safari, then bail + // and don't track value will cause over reporting of changes, + // but it's better then a hard failure + // (needed for certain tests that spyOn input values and Safari) + if (node.hasOwnProperty(valueField) || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') { + return; + } + + Object.defineProperty(node, valueField, { + enumerable: descriptor.enumerable, + configurable: true, + get: function () { + return descriptor.get.call(this); + }, + set: function (value) { + currentValue = '' + value; + descriptor.set.call(this, value); + } + }); + + attachTracker(inst, { + getValue: function () { + return currentValue; + }, + setValue: function (value) { + currentValue = '' + value; + }, + stopTracking: function () { + detachTracker(inst); + delete node[valueField]; + } + }); + }, + + updateValueIfChanged: function (inst) { + if (!inst) { + return false; + } + var tracker = getTracker(inst); + + if (!tracker) { + inputValueTracking.track(inst); + return true; + } + + var lastValue = tracker.getValue(); + var nextValue = getValueFromNode(ReactDOMComponentTree.getNodeFromInstance(inst)); + + if (nextValue !== lastValue) { + tracker.setValue(nextValue); + return true; + } + + return false; + }, + stopTracking: function (inst) { + var tracker = getTracker(inst); + if (tracker) { + tracker.stopTracking(); + } + } + }; + + module.exports = inputValueTracking; + +/***/ }), +/* 67 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + /** + * Gets the target node from a native browser event by accounting for + * inconsistencies in browser DOM APIs. + * + * @param {object} nativeEvent Native browser event. + * @return {DOMEventTarget} Target node. + */ + + function getEventTarget(nativeEvent) { + var target = nativeEvent.target || nativeEvent.srcElement || window; + + // Normalize SVG element events #4963 + if (target.correspondingUseElement) { + target = target.correspondingUseElement; + } + + // Safari may fire events on text nodes (Node.TEXT_NODE is 3). + // @see http://www.quirksmode.org/js/events_properties.html + return target.nodeType === 3 ? target.parentNode : target; + } + + module.exports = getEventTarget; + +/***/ }), +/* 68 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var ExecutionEnvironment = __webpack_require__(50); + + var useHasFeature; + if (ExecutionEnvironment.canUseDOM) { + useHasFeature = document.implementation && document.implementation.hasFeature && + // always returns true in newer browsers as per the standard. + // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature + document.implementation.hasFeature('', '') !== true; + } + + /** + * Checks if an event is supported in the current execution environment. + * + * NOTE: This will not work correctly for non-generic events such as `change`, + * `reset`, `load`, `error`, and `select`. + * + * Borrows from Modernizr. + * + * @param {string} eventNameSuffix Event name, e.g. "click". + * @param {?boolean} capture Check if the capture phase is supported. + * @return {boolean} True if the event is supported. + * @internal + * @license Modernizr 3.0.0pre (Custom Build) | MIT + */ + function isEventSupported(eventNameSuffix, capture) { + if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) { + return false; + } + + var eventName = 'on' + eventNameSuffix; + var isSupported = eventName in document; + + if (!isSupported) { + var element = document.createElement('div'); + element.setAttribute(eventName, 'return;'); + isSupported = typeof element[eventName] === 'function'; + } + + if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') { + // This is the only way to test support for the `wheel` event in IE9+. + isSupported = document.implementation.hasFeature('Events.wheel', '3.0'); + } + + return isSupported; + } + + module.exports = isEventSupported; + +/***/ }), +/* 69 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + /** + * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary + */ + + var supportedInputTypes = { + color: true, + date: true, + datetime: true, + 'datetime-local': true, + email: true, + month: true, + number: true, + password: true, + range: true, + search: true, + tel: true, + text: true, + time: true, + url: true, + week: true + }; + + function isTextInputElement(elem) { + var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase(); + + if (nodeName === 'input') { + return !!supportedInputTypes[elem.type]; + } + + if (nodeName === 'textarea') { + return true; + } + + return false; + } + + module.exports = isTextInputElement; + +/***/ }), +/* 70 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + /** + * Module that is injectable into `EventPluginHub`, that specifies a + * deterministic ordering of `EventPlugin`s. A convenient way to reason about + * plugins, without having to package every one of them. This is better than + * having plugins be ordered in the same order that they are injected because + * that ordering would be influenced by the packaging order. + * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that + * preventing default on events is convenient in `SimpleEventPlugin` handlers. + */ + + var DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin']; + + module.exports = DefaultEventPluginOrder; + +/***/ }), +/* 71 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var EventPropagators = __webpack_require__(43); + var ReactDOMComponentTree = __webpack_require__(36); + var SyntheticMouseEvent = __webpack_require__(72); + + var eventTypes = { + mouseEnter: { + registrationName: 'onMouseEnter', + dependencies: ['topMouseOut', 'topMouseOver'] + }, + mouseLeave: { + registrationName: 'onMouseLeave', + dependencies: ['topMouseOut', 'topMouseOver'] + } + }; + + var EnterLeaveEventPlugin = { + eventTypes: eventTypes, + + /** + * For almost every interaction we care about, there will be both a top-level + * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that + * we do not extract duplicate events. However, moving the mouse into the + * browser from outside will not fire a `mouseout` event. In this case, we use + * the `mouseover` top-level event. + */ + extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) { + if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) { + return null; + } + if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') { + // Must not be a mouse in or mouse out - ignoring. + return null; + } + + var win; + if (nativeEventTarget.window === nativeEventTarget) { + // `nativeEventTarget` is probably a window object. + win = nativeEventTarget; + } else { + // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8. + var doc = nativeEventTarget.ownerDocument; + if (doc) { + win = doc.defaultView || doc.parentWindow; + } else { + win = window; + } + } + + var from; + var to; + if (topLevelType === 'topMouseOut') { + from = targetInst; + var related = nativeEvent.relatedTarget || nativeEvent.toElement; + to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null; + } else { + // Moving to a node from outside the window. + from = null; + to = targetInst; + } + + if (from === to) { + // Nothing pertains to our managed components. + return null; + } + + var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from); + var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to); + + var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget); + leave.type = 'mouseleave'; + leave.target = fromNode; + leave.relatedTarget = toNode; + + var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget); + enter.type = 'mouseenter'; + enter.target = toNode; + enter.relatedTarget = fromNode; + + EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to); + + return [leave, enter]; + } + }; + + module.exports = EnterLeaveEventPlugin; + +/***/ }), +/* 72 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var SyntheticUIEvent = __webpack_require__(73); + var ViewportMetrics = __webpack_require__(74); + + var getEventModifierState = __webpack_require__(75); + + /** + * @interface MouseEvent + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ + var MouseEventInterface = { + screenX: null, + screenY: null, + clientX: null, + clientY: null, + ctrlKey: null, + shiftKey: null, + altKey: null, + metaKey: null, + getModifierState: getEventModifierState, + button: function (event) { + // Webkit, Firefox, IE9+ + // which: 1 2 3 + // button: 0 1 2 (standard) + var button = event.button; + if ('which' in event) { + return button; + } + // IE<9 + // which: undefined + // button: 0 0 0 + // button: 1 4 2 (onmouseup) + return button === 2 ? 2 : button === 4 ? 1 : 0; + }, + buttons: null, + relatedTarget: function (event) { + return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement); + }, + // "Proprietary" Interface. + pageX: function (event) { + return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft; + }, + pageY: function (event) { + return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop; + } + }; + + /** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticUIEvent} + */ + function SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); + } + + SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface); + + module.exports = SyntheticMouseEvent; + +/***/ }), +/* 73 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var SyntheticEvent = __webpack_require__(55); + + var getEventTarget = __webpack_require__(67); + + /** + * @interface UIEvent + * @see http://www.w3.org/TR/DOM-Level-3-Events/ + */ + var UIEventInterface = { + view: function (event) { + if (event.view) { + return event.view; + } + + var target = getEventTarget(event); + if (target.window === target) { + // target is a window object + return target; + } + + var doc = target.ownerDocument; + // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8. + if (doc) { + return doc.defaultView || doc.parentWindow; + } else { + return window; + } + }, + detail: function (event) { + return event.detail || 0; + } + }; + + /** + * @param {object} dispatchConfig Configuration used to dispatch this event. + * @param {string} dispatchMarker Marker identifying the event target. + * @param {object} nativeEvent Native browser event. + * @extends {SyntheticEvent} + */ + function SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) { + return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); + } + + SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface); + + module.exports = SyntheticUIEvent; + +/***/ }), +/* 74 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var ViewportMetrics = { + currentScrollLeft: 0, + + currentScrollTop: 0, + + refreshScrollValues: function (scrollPosition) { + ViewportMetrics.currentScrollLeft = scrollPosition.x; + ViewportMetrics.currentScrollTop = scrollPosition.y; + } + }; + + module.exports = ViewportMetrics; + +/***/ }), +/* 75 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + /** + * Translation from modifier key to the associated property in the event. + * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers + */ + + var modifierKeyToProp = { + Alt: 'altKey', + Control: 'ctrlKey', + Meta: 'metaKey', + Shift: 'shiftKey' + }; + + // IE8 does not implement getModifierState so we simply map it to the only + // modifier keys exposed by the event itself, does not support Lock-keys. + // Currently, all major browsers except Chrome seems to support Lock-keys. + function modifierStateGetter(keyArg) { + var syntheticEvent = this; + var nativeEvent = syntheticEvent.nativeEvent; + if (nativeEvent.getModifierState) { + return nativeEvent.getModifierState(keyArg); + } + var keyProp = modifierKeyToProp[keyArg]; + return keyProp ? !!nativeEvent[keyProp] : false; + } + + function getEventModifierState(nativeEvent) { + return modifierStateGetter; + } + + module.exports = getEventModifierState; + +/***/ }), +/* 76 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var DOMProperty = __webpack_require__(38); + + var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY; + var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE; + var HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE; + var HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE; + var HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE; + + var HTMLDOMPropertyConfig = { + isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')), + Properties: { + /** + * Standard Properties + */ + accept: 0, + acceptCharset: 0, + accessKey: 0, + action: 0, + allowFullScreen: HAS_BOOLEAN_VALUE, + allowTransparency: 0, + alt: 0, + // specifies target context for links with `preload` type + as: 0, + async: HAS_BOOLEAN_VALUE, + autoComplete: 0, + // autoFocus is polyfilled/normalized by AutoFocusUtils + // autoFocus: HAS_BOOLEAN_VALUE, + autoPlay: HAS_BOOLEAN_VALUE, + capture: HAS_BOOLEAN_VALUE, + cellPadding: 0, + cellSpacing: 0, + charSet: 0, + challenge: 0, + checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, + cite: 0, + classID: 0, + className: 0, + cols: HAS_POSITIVE_NUMERIC_VALUE, + colSpan: 0, + content: 0, + contentEditable: 0, + contextMenu: 0, + controls: HAS_BOOLEAN_VALUE, + controlsList: 0, + coords: 0, + crossOrigin: 0, + data: 0, // For `` acts as `src`. + dateTime: 0, + 'default': HAS_BOOLEAN_VALUE, + defer: HAS_BOOLEAN_VALUE, + dir: 0, + disabled: HAS_BOOLEAN_VALUE, + download: HAS_OVERLOADED_BOOLEAN_VALUE, + draggable: 0, + encType: 0, + form: 0, + formAction: 0, + formEncType: 0, + formMethod: 0, + formNoValidate: HAS_BOOLEAN_VALUE, + formTarget: 0, + frameBorder: 0, + headers: 0, + height: 0, + hidden: HAS_BOOLEAN_VALUE, + high: 0, + href: 0, + hrefLang: 0, + htmlFor: 0, + httpEquiv: 0, + icon: 0, + id: 0, + inputMode: 0, + integrity: 0, + is: 0, + keyParams: 0, + keyType: 0, + kind: 0, + label: 0, + lang: 0, + list: 0, + loop: HAS_BOOLEAN_VALUE, + low: 0, + manifest: 0, + marginHeight: 0, + marginWidth: 0, + max: 0, + maxLength: 0, + media: 0, + mediaGroup: 0, + method: 0, + min: 0, + minLength: 0, + // Caution; `option.selected` is not updated if `select.multiple` is + // disabled with `removeAttribute`. + multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, + muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, + name: 0, + nonce: 0, + noValidate: HAS_BOOLEAN_VALUE, + open: HAS_BOOLEAN_VALUE, + optimum: 0, + pattern: 0, + placeholder: 0, + playsInline: HAS_BOOLEAN_VALUE, + poster: 0, + preload: 0, + profile: 0, + radioGroup: 0, + readOnly: HAS_BOOLEAN_VALUE, + referrerPolicy: 0, + rel: 0, + required: HAS_BOOLEAN_VALUE, + reversed: HAS_BOOLEAN_VALUE, + role: 0, + rows: HAS_POSITIVE_NUMERIC_VALUE, + rowSpan: HAS_NUMERIC_VALUE, + sandbox: 0, + scope: 0, + scoped: HAS_BOOLEAN_VALUE, + scrolling: 0, + seamless: HAS_BOOLEAN_VALUE, + selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE, + shape: 0, + size: HAS_POSITIVE_NUMERIC_VALUE, + sizes: 0, + span: HAS_POSITIVE_NUMERIC_VALUE, + spellCheck: 0, + src: 0, + srcDoc: 0, + srcLang: 0, + srcSet: 0, + start: HAS_NUMERIC_VALUE, + step: 0, + style: 0, + summary: 0, + tabIndex: 0, + target: 0, + title: 0, + // Setting .type throws on non- tags + type: 0, + useMap: 0, + value: 0, + width: 0, + wmode: 0, + wrap: 0, + + /** + * RDFa Properties + */ + about: 0, + datatype: 0, + inlist: 0, + prefix: 0, + // property is also supported for OpenGraph in meta tags. + property: 0, + resource: 0, + 'typeof': 0, + vocab: 0, + + /** + * Non-standard Properties + */ + // autoCapitalize and autoCorrect are supported in Mobile Safari for + // keyboard hints. + autoCapitalize: 0, + autoCorrect: 0, + // autoSave allows WebKit/Blink to persist values of input fields on page reloads + autoSave: 0, + // color is for Safari mask-icon link + color: 0, + // itemProp, itemScope, itemType are for + // Microdata support. See http://schema.org/docs/gs.html + itemProp: 0, + itemScope: HAS_BOOLEAN_VALUE, + itemType: 0, + // itemID and itemRef are for Microdata support as well but + // only specified in the WHATWG spec document. See + // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api + itemID: 0, + itemRef: 0, + // results show looking glass icon and recent searches on input + // search fields in WebKit/Blink + results: 0, + // IE-only attribute that specifies security restrictions on an iframe + // as an alternative to the sandbox attribute on IE<10 + security: 0, + // IE-only attribute that controls focus behavior + unselectable: 0 + }, + DOMAttributeNames: { + acceptCharset: 'accept-charset', + className: 'class', + htmlFor: 'for', + httpEquiv: 'http-equiv' + }, + DOMPropertyNames: {}, + DOMMutationMethods: { + value: function (node, value) { + if (value == null) { + return node.removeAttribute('value'); + } + + // Number inputs get special treatment due to some edge cases in + // Chrome. Let everything else assign the value attribute as normal. + // https://github.com/facebook/react/issues/7253#issuecomment-236074326 + if (node.type !== 'number' || node.hasAttribute('value') === false) { + node.setAttribute('value', '' + value); + } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) { + // Don't assign an attribute if validation reports bad + // input. Chrome will clear the value. Additionally, don't + // operate on inputs that have focus, otherwise Chrome might + // strip off trailing decimal places and cause the user's + // cursor position to jump to the beginning of the input. + // + // In ReactDOMInput, we have an onBlur event that will trigger + // this function again when focus is lost. + node.setAttribute('value', '' + value); + } + } + } + }; + + module.exports = HTMLDOMPropertyConfig; + +/***/ }), +/* 77 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var DOMChildrenOperations = __webpack_require__(78); + var ReactDOMIDOperations = __webpack_require__(89); + + /** + * Abstracts away all functionality of the reconciler that requires knowledge of + * the browser context. TODO: These callers should be refactored to avoid the + * need for this injection. + */ + var ReactComponentBrowserEnvironment = { + processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates, + + replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup + }; + + module.exports = ReactComponentBrowserEnvironment; + +/***/ }), +/* 78 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var DOMLazyTree = __webpack_require__(79); + var Danger = __webpack_require__(85); + var ReactDOMComponentTree = __webpack_require__(36); + var ReactInstrumentation = __webpack_require__(64); + + var createMicrosoftUnsafeLocalFunction = __webpack_require__(82); + var setInnerHTML = __webpack_require__(81); + var setTextContent = __webpack_require__(83); + + function getNodeAfter(parentNode, node) { + // Special case for text components, which return [open, close] comments + // from getHostNode. + if (Array.isArray(node)) { + node = node[1]; + } + return node ? node.nextSibling : parentNode.firstChild; + } + + /** + * Inserts `childNode` as a child of `parentNode` at the `index`. + * + * @param {DOMElement} parentNode Parent node in which to insert. + * @param {DOMElement} childNode Child node to insert. + * @param {number} index Index at which to insert the child. + * @internal + */ + var insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) { + // We rely exclusively on `insertBefore(node, null)` instead of also using + // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so + // we are careful to use `null`.) + parentNode.insertBefore(childNode, referenceNode); + }); + + function insertLazyTreeChildAt(parentNode, childTree, referenceNode) { + DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode); + } + + function moveChild(parentNode, childNode, referenceNode) { + if (Array.isArray(childNode)) { + moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode); + } else { + insertChildAt(parentNode, childNode, referenceNode); + } + } + + function removeChild(parentNode, childNode) { + if (Array.isArray(childNode)) { + var closingComment = childNode[1]; + childNode = childNode[0]; + removeDelimitedText(parentNode, childNode, closingComment); + parentNode.removeChild(closingComment); + } + parentNode.removeChild(childNode); + } + + function moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) { + var node = openingComment; + while (true) { + var nextNode = node.nextSibling; + insertChildAt(parentNode, node, referenceNode); + if (node === closingComment) { + break; + } + node = nextNode; + } + } + + function removeDelimitedText(parentNode, startNode, closingComment) { + while (true) { + var node = startNode.nextSibling; + if (node === closingComment) { + // The closing comment is removed by ReactMultiChild. + break; + } else { + parentNode.removeChild(node); + } + } + } + + function replaceDelimitedText(openingComment, closingComment, stringText) { + var parentNode = openingComment.parentNode; + var nodeAfterComment = openingComment.nextSibling; + if (nodeAfterComment === closingComment) { + // There are no text nodes between the opening and closing comments; insert + // a new one if stringText isn't empty. + if (stringText) { + insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment); + } + } else { + if (stringText) { + // Set the text content of the first node after the opening comment, and + // remove all following nodes up until the closing comment. + setTextContent(nodeAfterComment, stringText); + removeDelimitedText(parentNode, nodeAfterComment, closingComment); + } else { + removeDelimitedText(parentNode, openingComment, closingComment); + } + } + + if (false) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID, + type: 'replace text', + payload: stringText + }); + } + } + + var dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup; + if (false) { + dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) { + Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup); + if (prevInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: prevInstance._debugID, + type: 'replace with', + payload: markup.toString() + }); + } else { + var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node); + if (nextInstance._debugID !== 0) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: nextInstance._debugID, + type: 'mount', + payload: markup.toString() + }); + } + } + }; + } + + /** + * Operations for updating with DOM children. + */ + var DOMChildrenOperations = { + dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup, + + replaceDelimitedText: replaceDelimitedText, + + /** + * Updates a component's children by processing a series of updates. The + * update configurations are each expected to have a `parentNode` property. + * + * @param {array} updates List of update configurations. + * @internal + */ + processUpdates: function (parentNode, updates) { + if (false) { + var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID; + } + + for (var k = 0; k < updates.length; k++) { + var update = updates[k]; + switch (update.type) { + case 'INSERT_MARKUP': + insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode)); + if (false) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: parentNodeDebugID, + type: 'insert child', + payload: { + toIndex: update.toIndex, + content: update.content.toString() + } + }); + } + break; + case 'MOVE_EXISTING': + moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode)); + if (false) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: parentNodeDebugID, + type: 'move child', + payload: { fromIndex: update.fromIndex, toIndex: update.toIndex } + }); + } + break; + case 'SET_MARKUP': + setInnerHTML(parentNode, update.content); + if (false) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: parentNodeDebugID, + type: 'replace children', + payload: update.content.toString() + }); + } + break; + case 'TEXT_CONTENT': + setTextContent(parentNode, update.content); + if (false) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: parentNodeDebugID, + type: 'replace text', + payload: update.content.toString() + }); + } + break; + case 'REMOVE_NODE': + removeChild(parentNode, update.fromNode); + if (false) { + ReactInstrumentation.debugTool.onHostOperation({ + instanceID: parentNodeDebugID, + type: 'remove child', + payload: { fromIndex: update.fromIndex } + }); + } + break; + } + } + } + }; + + module.exports = DOMChildrenOperations; + +/***/ }), +/* 79 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2015-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var DOMNamespaces = __webpack_require__(80); + var setInnerHTML = __webpack_require__(81); + + var createMicrosoftUnsafeLocalFunction = __webpack_require__(82); + var setTextContent = __webpack_require__(83); + + var ELEMENT_NODE_TYPE = 1; + var DOCUMENT_FRAGMENT_NODE_TYPE = 11; + + /** + * In IE (8-11) and Edge, appending nodes with no children is dramatically + * faster than appending a full subtree, so we essentially queue up the + * .appendChild calls here and apply them so each node is added to its parent + * before any children are added. + * + * In other browsers, doing so is slower or neutral compared to the other order + * (in Firefox, twice as slow) so we only do this inversion in IE. + * + * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode. + */ + var enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\bEdge\/\d/.test(navigator.userAgent); + + function insertTreeChildren(tree) { + if (!enableLazy) { + return; + } + var node = tree.node; + var children = tree.children; + if (children.length) { + for (var i = 0; i < children.length; i++) { + insertTreeBefore(node, children[i], null); + } + } else if (tree.html != null) { + setInnerHTML(node, tree.html); + } else if (tree.text != null) { + setTextContent(node, tree.text); + } + } + + var insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) { + // DocumentFragments aren't actually part of the DOM after insertion so + // appending children won't update the DOM. We need to ensure the fragment + // is properly populated first, breaking out of our lazy approach for just + // this level. Also, some plugins (like Flash Player) will read + // nodes immediately upon insertion into the DOM, so + // must also be populated prior to insertion into the DOM. + if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) { + insertTreeChildren(tree); + parentNode.insertBefore(tree.node, referenceNode); + } else { + parentNode.insertBefore(tree.node, referenceNode); + insertTreeChildren(tree); + } + }); + + function replaceChildWithTree(oldNode, newTree) { + oldNode.parentNode.replaceChild(newTree.node, oldNode); + insertTreeChildren(newTree); + } + + function queueChild(parentTree, childTree) { + if (enableLazy) { + parentTree.children.push(childTree); + } else { + parentTree.node.appendChild(childTree.node); + } + } + + function queueHTML(tree, html) { + if (enableLazy) { + tree.html = html; + } else { + setInnerHTML(tree.node, html); + } + } + + function queueText(tree, text) { + if (enableLazy) { + tree.text = text; + } else { + setTextContent(tree.node, text); + } + } + + function toString() { + return this.node.nodeName; + } + + function DOMLazyTree(node) { + return { + node: node, + children: [], + html: null, + text: null, + toString: toString + }; + } + + DOMLazyTree.insertTreeBefore = insertTreeBefore; + DOMLazyTree.replaceChildWithTree = replaceChildWithTree; + DOMLazyTree.queueChild = queueChild; + DOMLazyTree.queueHTML = queueHTML; + DOMLazyTree.queueText = queueText; + + module.exports = DOMLazyTree; + +/***/ }), +/* 80 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var DOMNamespaces = { + html: 'http://www.w3.org/1999/xhtml', + mathml: 'http://www.w3.org/1998/Math/MathML', + svg: 'http://www.w3.org/2000/svg' + }; + + module.exports = DOMNamespaces; + +/***/ }), +/* 81 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var ExecutionEnvironment = __webpack_require__(50); + var DOMNamespaces = __webpack_require__(80); + + var WHITESPACE_TEST = /^[ \r\n\t\f]/; + var NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/; + + var createMicrosoftUnsafeLocalFunction = __webpack_require__(82); + + // SVG temp container for IE lacking innerHTML + var reusableSVGContainer; + + /** + * Set the innerHTML property of a node, ensuring that whitespace is preserved + * even in IE8. + * + * @param {DOMElement} node + * @param {string} html + * @internal + */ + var setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) { + // IE does not have innerHTML for SVG nodes, so instead we inject the + // new markup in a temp node and then move the child nodes across into + // the target node + if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) { + reusableSVGContainer = reusableSVGContainer || document.createElement('div'); + reusableSVGContainer.innerHTML = '' + html + ''; + var svgNode = reusableSVGContainer.firstChild; + while (svgNode.firstChild) { + node.appendChild(svgNode.firstChild); + } + } else { + node.innerHTML = html; + } + }); + + if (ExecutionEnvironment.canUseDOM) { + // IE8: When updating a just created node with innerHTML only leading + // whitespace is removed. When updating an existing node with innerHTML + // whitespace in root TextNodes is also collapsed. + // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html + + // Feature detection; only IE8 is known to behave improperly like this. + var testElement = document.createElement('div'); + testElement.innerHTML = ' '; + if (testElement.innerHTML === '') { + setInnerHTML = function (node, html) { + // Magic theory: IE8 supposedly differentiates between added and updated + // nodes when processing innerHTML, innerHTML on updated nodes suffers + // from worse whitespace behavior. Re-adding a node like this triggers + // the initial and more favorable whitespace behavior. + // TODO: What to do on a detached node? + if (node.parentNode) { + node.parentNode.replaceChild(node, node); + } + + // We also implement a workaround for non-visible tags disappearing into + // thin air on IE8, this only happens if there is no visible text + // in-front of the non-visible tags. Piggyback on the whitespace fix + // and simply check if any non-visible tags appear in the source. + if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) { + // Recover leading whitespace by temporarily prepending any character. + // \uFEFF has the potential advantage of being zero-width/invisible. + // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode + // in hopes that this is preserved even if "\uFEFF" is transformed to + // the actual Unicode character (by Babel, for example). + // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216 + node.innerHTML = String.fromCharCode(0xfeff) + html; + + // deleteData leaves an empty `TextNode` which offsets the index of all + // children. Definitely want to avoid this. + var textNode = node.firstChild; + if (textNode.data.length === 1) { + node.removeChild(textNode); + } else { + textNode.deleteData(0, 1); + } + } else { + node.innerHTML = html; + } + }; + } + testElement = null; + } + + module.exports = setInnerHTML; + +/***/ }), +/* 82 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + /* globals MSApp */ + + 'use strict'; + + /** + * Create a function which has 'unsafe' privileges (required by windows8 apps) + */ + + var createMicrosoftUnsafeLocalFunction = function (func) { + if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) { + return function (arg0, arg1, arg2, arg3) { + MSApp.execUnsafeLocalFunction(function () { + return func(arg0, arg1, arg2, arg3); + }); + }; + } else { + return func; + } + }; + + module.exports = createMicrosoftUnsafeLocalFunction; + +/***/ }), +/* 83 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var ExecutionEnvironment = __webpack_require__(50); + var escapeTextContentForBrowser = __webpack_require__(84); + var setInnerHTML = __webpack_require__(81); + + /** + * Set the textContent property of a node, ensuring that whitespace is preserved + * even in IE8. innerText is a poor substitute for textContent and, among many + * issues, inserts
instead of the literal newline chars. innerHTML behaves + * as it should. + * + * @param {DOMElement} node + * @param {string} text + * @internal + */ + var setTextContent = function (node, text) { + if (text) { + var firstChild = node.firstChild; + + if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) { + firstChild.nodeValue = text; + return; + } + } + node.textContent = text; + }; + + if (ExecutionEnvironment.canUseDOM) { + if (!('textContent' in document.documentElement)) { + setTextContent = function (node, text) { + if (node.nodeType === 3) { + node.nodeValue = text; + return; + } + setInnerHTML(node, escapeTextContentForBrowser(text)); + }; + } + } + + module.exports = setTextContent; + +/***/ }), +/* 84 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2016-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * Based on the escape-html library, which is used under the MIT License below: + * + * Copyright (c) 2012-2013 TJ Holowaychuk + * Copyright (c) 2015 Andreas Lubbe + * Copyright (c) 2015 Tiancheng "Timothy" Gu + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * 'Software'), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + + 'use strict'; + + // code copied and modified from escape-html + /** + * Module variables. + * @private + */ + + var matchHtmlRegExp = /["'&<>]/; + + /** + * Escape special characters in the given string of html. + * + * @param {string} string The string to escape for inserting into HTML + * @return {string} + * @public + */ + + function escapeHtml(string) { + var str = '' + string; + var match = matchHtmlRegExp.exec(str); + + if (!match) { + return str; + } + + var escape; + var html = ''; + var index = 0; + var lastIndex = 0; + + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + // " + escape = '"'; + break; + case 38: + // & + escape = '&'; + break; + case 39: + // ' + escape = '''; // modified from escape-html; used to be ''' + break; + case 60: + // < + escape = '<'; + break; + case 62: + // > + escape = '>'; + break; + default: + continue; + } + + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + + lastIndex = index + 1; + html += escape; + } + + return lastIndex !== index ? html + str.substring(lastIndex, index) : html; + } + // end code copied and modified from escape-html + + /** + * Escapes text to prevent scripting attacks. + * + * @param {*} text Text value to escape. + * @return {string} An escaped string. + */ + function escapeTextContentForBrowser(text) { + if (typeof text === 'boolean' || typeof text === 'number') { + // this shortcircuit helps perf for types that we know will never have + // special characters, especially given that this function is used often + // for numeric dom ids. + return '' + text; + } + return escapeHtml(text); + } + + module.exports = escapeTextContentForBrowser; + +/***/ }), +/* 85 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var _prodInvariant = __webpack_require__(37); + + var DOMLazyTree = __webpack_require__(79); + var ExecutionEnvironment = __webpack_require__(50); + + var createNodesFromMarkup = __webpack_require__(86); + var emptyFunction = __webpack_require__(8); + var invariant = __webpack_require__(11); + + var Danger = { + /** + * Replaces a node with a string of markup at its current position within its + * parent. The markup must render into a single root node. + * + * @param {DOMElement} oldChild Child node to replace. + * @param {string} markup Markup to render in place of the child node. + * @internal + */ + dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) { + !ExecutionEnvironment.canUseDOM ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0; + !markup ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0; + !(oldChild.nodeName !== 'HTML') ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0; + + if (typeof markup === 'string') { + var newChild = createNodesFromMarkup(markup, emptyFunction)[0]; + oldChild.parentNode.replaceChild(newChild, oldChild); + } else { + DOMLazyTree.replaceChildWithTree(oldChild, markup); + } + } + }; + + module.exports = Danger; + +/***/ }), +/* 86 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @typechecks + */ + + /*eslint-disable fb-www/unsafe-html*/ + + var ExecutionEnvironment = __webpack_require__(50); + + var createArrayFromMixed = __webpack_require__(87); + var getMarkupWrap = __webpack_require__(88); + var invariant = __webpack_require__(11); + + /** + * Dummy container used to render all markup. + */ + var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null; + + /** + * Pattern used by `getNodeName`. + */ + var nodeNamePattern = /^\s*<(\w+)/; + + /** + * Extracts the `nodeName` of the first element in a string of markup. + * + * @param {string} markup String of markup. + * @return {?string} Node name of the supplied markup. + */ + function getNodeName(markup) { + var nodeNameMatch = markup.match(nodeNamePattern); + return nodeNameMatch && nodeNameMatch[1].toLowerCase(); + } + + /** + * Creates an array containing the nodes rendered from the supplied markup. The + * optionally supplied `handleScript` function will be invoked once for each + * - - + + \ No newline at end of file diff --git a/server/img/icons/android-chrome-192x192.png b/server/img/icons/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..560d0aea6089b94e4003f7310a8489640974ba9e GIT binary patch literal 6365 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 BT}=Q0 literal 0 HcmV?d00001 diff --git a/server/img/icons/android-chrome-512x512.png b/server/img/icons/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..b362c14bf54b7dbae232e7fb1e833f42b2342e7f GIT binary patch literal 24416 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 b(?v2(k&C((er|9<@Uvy3 俄罗斯方块 +
@@ -16,5 +17,14 @@
加载中...
+ + \ No newline at end of file diff --git a/server/manifest.webmanifest b/server/manifest.webmanifest new file mode 100644 index 00000000..6163d356 --- /dev/null +++ b/server/manifest.webmanifest @@ -0,0 +1,22 @@ +{ + "name": "俄罗斯方块", + "short_name": "react-tetris", + "description": "使用React、Redux、Immutable制作的俄罗斯方块", + "scope": "/react-tetris/", + "start_url": "/react-tetris/", + "background_color": "#f3cb14", + "theme_color": "#ffffff", + "display": "standalone", + "icons": [ + { + "src": "./img/icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "./img/icons/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} \ No newline at end of file diff --git a/server/sw.js b/server/sw.js new file mode 100644 index 00000000..2504ff19 --- /dev/null +++ b/server/sw.js @@ -0,0 +1,52 @@ +var GHPATH = '/react-tetris'; +var APP_PREFIX = 'react_tetris_'; +var VERSION = 'version_002'; +var URLS = [ + `${GHPATH}/`, + `${GHPATH}/index.html`, + `${GHPATH}/css-1.0.1.css`, + `${GHPATH}/app-1.0.1.js`, + `${GHPATH}/loader.css` +] + +var CACHE_NAME = APP_PREFIX + VERSION +self.addEventListener('fetch', function (e) { + console.log('Fetch request : ' + e.request.url); + e.respondWith( + caches.match(e.request).then(function (request) { + if (request) { + console.log('Responding with cache : ' + e.request.url); + return request + } else { + console.log('File is not cached, fetching : ' + e.request.url); + return fetch(e.request) + } + }) + ) +}) + +self.addEventListener('install', function (e) { + e.waitUntil( + caches.open(CACHE_NAME).then(function (cache) { + console.log('Installing cache : ' + CACHE_NAME); + return cache.addAll(URLS) + }) + ) +}) + +self.addEventListener('activate', function (e) { + e.waitUntil( + caches.keys().then(function (keyList) { + var cacheWhitelist = keyList.filter(function (key) { + return key.indexOf(APP_PREFIX) + }) + cacheWhitelist.push(CACHE_NAME); + return Promise.all(keyList.map(function (key, i) { + if (cacheWhitelist.indexOf(key) === -1) { + console.log('Deleting cache : ' + keyList[i] ); + return caches.delete(keyList[i]) + } + })) + }) + ) +}) \ No newline at end of file diff --git a/w.config.js b/w.config.js index d7e06f2b..3c55abbc 100644 --- a/w.config.js +++ b/w.config.js @@ -77,6 +77,9 @@ var productionPlugins = [ new CopyWebpackPlugin([ { from: './src/resource/music/music.mp3' }, { from: './src/resource/css/loader.css' }, + { from: './server/img', to: 'img' }, + { from: './server/manifest.webmanifest'}, + { from: './server/sw.js' }, ]), // HTML 模板 new HtmlWebpackPlugin({ From 98828db462bd1db284b64a4af5a75cb95b00d57b Mon Sep 17 00:00:00 2001 From: hollow-owl <71401395+hollow-owl@users.noreply.github.com> Date: Sat, 14 Sep 2024 16:21:52 -0500 Subject: [PATCH 5/5] Remove short_name --- docs/manifest.webmanifest | 1 - server/manifest.webmanifest | 1 - 2 files changed, 2 deletions(-) diff --git a/docs/manifest.webmanifest b/docs/manifest.webmanifest index 6163d356..47eda1c7 100644 --- a/docs/manifest.webmanifest +++ b/docs/manifest.webmanifest @@ -1,6 +1,5 @@ { "name": "俄罗斯方块", - "short_name": "react-tetris", "description": "使用React、Redux、Immutable制作的俄罗斯方块", "scope": "/react-tetris/", "start_url": "/react-tetris/", diff --git a/server/manifest.webmanifest b/server/manifest.webmanifest index 6163d356..47eda1c7 100644 --- a/server/manifest.webmanifest +++ b/server/manifest.webmanifest @@ -1,6 +1,5 @@ { "name": "俄罗斯方块", - "short_name": "react-tetris", "description": "使用React、Redux、Immutable制作的俄罗斯方块", "scope": "/react-tetris/", "start_url": "/react-tetris/",

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 BT}=Q0 literal 0 HcmV?d00001 diff --git a/docs/img/icons/android-chrome-512x512.png b/docs/img/icons/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..b362c14bf54b7dbae232e7fb1e833f42b2342e7f GIT binary patch literal 24416 zcmdqJXH=6*^fx+B2oRd|VgaHeAVokCR9X-b8-hv`1Y!lG7b#K_YzQb8q)3for+4YG zAX23F(4^PUA++S3oO9m)z3;jo@0YvoTCSxG^UUnoeSUk7p~mM8csO@(0sweUpE_|7 z02KTu3SijaUrWBN>i}TE=@YspzBV(79R9o1y)&A)@@GqK%*5~Wce(ZQ^>E*fTQ3=m zCu5_(aW81&$$0h<4-rGAs;NSKCfA;at<0Qu|F|~I}UM%o@WJ}13_A_C#_W@c?hIk}( z*HI-We#ouxCx+(#u_qXyh}r*giqC#G{2kZR^D+PZ4g-GuD}Eg5A({^;svfg`^zQ%` zh_U>~ZV|}eyvA{_?f){A2=Lrc^2}dao&reY@syUEOjUpbD5A>$2R0%7DGJm^PP(ns+HVh5E&UTU%?N!_y1!Be9#K;563Bd zW}9p8`X{Wy{R_BAmJGGJ8rfD|?%{k#oxa4J)8*F% z%afN()r7*fDE9c9)pYCp6F3`o-2s^Zjt3l92jW8w@O|xreoTJ19|uU5$eHx5B;})H zse$RVz^>sdKDkp~>E71y9ioSj0mt~wM7jb$Nr(Lc_9{s%xRm~LZ=>aJuU$|)I7N8g ze7w=fdwnDeFG#Q{wsKnNAJiwVaz5!B+cOY&04)WE`HjUjQ35QwKu90h5KT_9%s`6c z^r4^?{OgO$1 zaE_BWfc(}c`Y=MAiEr8QMHWC4;nrvJ%@k^u$!U!uA4M6UHXKPffU09r&QS#FcVjw= zHVCDxS#f~O^}HvG^bL}~7rLGuSAXRk%Z>w`x0THJNND09=u;GAQGN=i8AtE)I{@V! zd>RGS`sXVvpwA06@-GW?3s_Uga1%xI(<8e4cWJlnP^)HqzZ?gay zChd8U_U0V(%5;5T!ky5e%RJ%}c*KLP`^z!N^S5pGhnUmyp{}Mqyy#c~-MwW?i#w!! zo@oc_^LLLu1{S(%9k3&nHu2<&l!8D@s`$s3sB+qHtu8&zK0~gx|hG7S0AWWzFhjp@kv3hULQOJ zcjM+|&M}09*nhb>)~tjkUr}D*V~+7d^*Uky$~W!-cw8lt$K*FT0LoyrHutKL9#E|# zd9gFcVj=b4aNOWJB#emTf-@}bm-2nK^OCzS&nNyP@jX!DwKl?qB8ahyn+;RXNeAJn zYK%Y9_MmZLW+{J|)7t;HeM+Elj)q26yFu_TXbh@-Kc^wS(z0Nm6jNmt?h}Yz*;M=L;K1Js<5Ar0c@`cBsye*qPsbfag(d%ki8LMd1&K z`C*u27`WCR)iaug$HC9*T$W6JLMP?_OFA6&VF<+ z$TObKdu}sS@`Rl zp@k8p{+OAj@B`Bqqgu?Pe}RJg6z6+!Ru4$sJg|eQLwHU&Z9hJL)`}m@L#q**e6Ewm$2aBqC#Xv&^Ti})MsVCZ(k|e^oV%y;NkG_6jGO+ji)THei z3hO9=!du@O{K4Gu7PP`x#L{2;9-$eGmBXy;5BdGV#=7fWq#+ zZrX2x#x2+R?PczG8}9h!Z^F109|+wMaf><4A_^uArYD@~Y-n73x=}xr+%4wDl=7)* zaTGogtQ}!~X%D&m_OKy0j~?{*tlj@ejvH=z@RQo;YYg#M?8^wI~hJ3joQ)4ZmydAny2ix}mIkx&KW@=_~5{A6( zlR~x+z^SI&dCbsFwuHxSKmIwt|30u!pO}CLYV?J)|BCn35i z?Vrn>F~n{|91C-`S0~_V0-d)sMUX~rjb<*UaV0}#RF>1$gL*ahk54jzYkjcvKCpEh z)Uod6WqK_>X1ejg4u`3qhpn#yTQf09nQ?;EK3BkBH#G-%&LM65V`WPr0uAD zB2{E>i)Tuc|Jcddg}c@C1ksOo@%`5;J61}YlvAtp-G2B>GkPrN{>=j>ASv(no?m0F z1EkR(mxgVx6u|i-sO-U3;j)2Dghe`{;a6OAx!nX3}Ne_YYUC;WjfltFOwe&jVSETO48EGV4-goj)edhykxU%#9PSr@ly z>NL1&L%att23x;Sq$BeoSe%w?J_XcHay3{#CCjQ8_LG__pOy>V+Iqx6jJU;^W+;Bp zXI!E!-p-==U{s0FGax4w3c1$PGsS=(Sm-v|l-rq8v6{N|{eq4XD$Ibv2S&Q>6O9T( zUG1fJaG!J;a2)GXiuk3^5ZUJVE)5BjAQ;lhY^s)>X)C7jo{n$&v#&9n^BFa)-;PZz zxMNO0)8$KdxOO`>NU(c2^AJNWj#d)4nSM&>!FZ6)#8~7Ot>IzCVlGC47^|>Tx@ceg zWE!;W`~S$@2pF6Hk ziO>3;Zz)eNoXuGno%yX5sN&U-#2dKPhYn8OkdbBx<&keB*wS3n=|3J+R7!89TNS%h z6=YBf+G<84L^bv=Z|#pflvjehB{svjqzXX<09!e4mL!ho@#-s`kB>l zv$}Z++m7QCSO71s_x{JPHEqL;bE!e{&ysn1pHk#lR#V$DZJy;+E4#YUJURK7hKh7r zl!pdR&aBRMIS4W`(zL&3PHmf=Ez&bvnVq(-x zH^b}xsB_ZV1V4Hgim02#h8oIG4w@O0K`kTz8z5A{nFJ(RjC*#-(sxP_4-=J^t#Yar zHaJ}6E);Of4}hqm;Dw3hVNSPguKP9qs^)!BP-4yp|xx?6QZqF zev2?%5nrtgj?f4!9ji|qFUghJutD30<50M*bKhDnOyd6jeag&?(;UWnv)_v1WRT-H z`~@)XA7+JIU9fdne#VaPGm9Jb(?{lh_RuZY&Z2!0x3&Ag_o@|$pJ^SFmgh{M;Jb|k z#~(d(y0>J@@BAv{gMEHx%F|<&q=l8lMI<7#|JENZCqc&FEooGm_MJL3^uc5MpqqvH z*)6I0vd>W6-rX*$p;#}WgwSMKmX|x*@2w17?f@^Ixp$&C@vB@U56^Bc8CK|(pP|W7 zbu1(-IgxTqWY?I&#lEBZe_XR2u_jYJo4)jCr_i4aEoY|eQ_deL&0SyPN_2T%_~S(I z)~as&ChzMF+mSppc|Ua5=i{Ip_-6kipRQXh)N{f>F83gDB{i&~_daM`Q2NO#6df#? zC@Rm!n#0Q1B4%+O^aL8ufngM`2!V=Z;qJnqMuZa6oC zkN5nL@h<-R_qV2aeX=h`1%$CY2aUs-9+R>t><9NVRy8m)k$vXOlDsRZ?Din9AHtaw zoORifyR3au`zI3Mfg&mrkFi(317GENi5$dupIkBG*&-kox0Pp`QRXr8dbaO{cs#|q zY4J?lp=QRz-lXFpUlyi>WVZNXKVh|Rss`+fsW4oT^PxWLarH5vj*2Jx{?>oW5f>=! zau3iJ^8CO#V9y0jDlsL}$6Oa?Z>%G~N>gOP(iq=v(;kV~X$2J4Y%$Xm$o32ki;CNx zx9GC78(E#97MGc+xlVV|@1EM7z!B`;8mKQW$ptp_`n$hK>4X_JiVz!|u?XIsTb;_? zo8O<-(;6D`B5`eYxbiYLu0PNrm4L?SpBy@Tff+WgJ~G*HAz?h6%D6_vXDhAk;N!); zVzWsFjoOT&Nb&HOv&FeGUS1h??;Q^;B~fm;!<@smwHNW0UuxVld&7m$lffy9`+Mpw zb}FC(C1fhUH2mIh^Nd}Zr6429(fempgnC~t+CZC^ylqTtJ143RO-4x&Wewz?%H4;N zg8R$Uz|o)XA&$&&}3?=Qa*lDG57CTK_qUog5fX_^!3Y; zkT;Z@R@+MyvfMko7hPg0wyBIdmPR`+QhjiBiTuA=s-VpSV1G|oPx6B>uuZN-livi^ z#CELSX)xQR7I`ZiRCw5F+bH2zmM9qpH(BBBvfJMnpH4?{z38a ze);Vhl3{rj5jz5 zx+dv^-z?87!Htnb!xbGy@o-SNikr^mbSVv2=lrc-FR8zG8rPU(6thE8c>}rDFC`rB zuW8b=_L+8T5Z6gayx3@tIk!2{QMdJsog|bx*NBFuE1+t*WtfyOEn~#;>7g!q0QuB! zQ(K5PLrAqA$1gnC;?+^?`WY7$v(oR{cSI01%8_+L<9*=Bk28VLDoHvV#7k8Q#!b!Z zNk^0XP&rGL-g0D3G{kGtzTFpu-tknc+p?PfMeqPiuFfL|ZAHnf@5N-<#0RdgEMtg) zMHpjZZ=ueCHIIpfx2%-?Yv&JuGu4-W_@WyNU)$xw=3SNqDo>j_C&&J6rUmakS z4V4M~1V7a{9gGrT^t;n+w9;D(Enk3z$d2`1td|1Qs^s$CQ6y^*KWV9$v9#t=KJ_RgdxK{dZS z%HzA2nHOyiA0S2@L?WIcqaT43IPSOZG)(t)XbN1MdAUI;43`Gbv!3-ylU2fX*=n!b z1{2SK8~Q4oP#sCadd$ zSQ&B^pgHz#=gBG}O|;jRfjo$}vJGtx#1W@Vc(WjtA8ELj%?ur4fVo+elT1stK%XRQO7 zwxxC|i?y;^r-8oObcY=2gFvK5^&kr7ltW+N8MZNRb5+H=UFE0@BNyaTcx@#}lLkvg zFAqdGV3rRS2Lp(7sbu)xItB@v=#;w`Ez-cqyvc=4rkOuMViRcmi0O{)2sAa1()kP; z7R<0sX+EF@~A5?E%^#dX)|4C59te>1UEa}?rW3)*K+UP*KGDMR4a|XxE>i! z4ExjJOpI$a#02a?MSE`T1z!$oLn4jaEQYk)VYvS35Oc~Z{|S&iPp3CLRMLrINBByC z{%*K&OCtuLafw6Ed^(Ka7Zp4Lx4%6A<3gHu7(QnBIDys=ynxF_?ZBIBlGTGbx?eq^h=DKLlOEw4h1G8GRg&SiCdF;Z+WNZ`9 znH?tkA!FZvy+qiK!rtK$p*({JQ+3d6iJ5?|;e%cKpwT&bz}+U>zgWe>*ZWl$K#XSR zE7eaI;Wh4z`$u}t2%0>6fgE~007JBY8UepPp>f2)VjpBn6yBxgtTZdG;aK!XHu|^_ zaee1KFb{s-4rJ2So_)IH3zN1-o_c-o`V+Squ1oyeAh?}A2g&#Ue~_P(04yAsQFq$R z01|OcG9@qb3M9f~O>KGtLzLbw1chSX?E68f1v=1k4QZ9h@FdkVCZi&M9SVF6tr>s! zmLeUEBAx!lTp~_2X`*%s654Xeab5=EI}c>8Y^LaVaAMn$LrTcppZEH!f8Os~RZq1o z_ogmW(n@U=D#omLzSQE<;}{w2%Gl^F%Gg*BXb{)vao;I=%;g7LYWilt^?~w=+an)? zOYXRidpjF|SFXGJ{=X&;iaDaH4I=s1xqRGcja!ESxfnpO(x3o+)69mWj`OFvz zDA_;Uo_FW&vXbe&TC1&Sa=-H+W3*)7s*fN_NeVbEnD1|4;X6TG$0AuU$r!nZCi)@p zwisD)+YbbhS(HCE{kR^7gZ>3AZ`RI^#@+lR@7t7y!U-Bdl$rv6#(5`(A)MRrQ8Ad`KGAwCpooqwnXg>FVT2(9m>|#07O{F}>-ZmC8d(c}VU=^5pq$0gQKPI-(b3=fEZMkGc*l#&I%x$t z&SyKEDc$arLhmy3fj?Hxr=Rr1tLyo&BFe63=SqJvW3oCv|BnGMsV(U#Og9BiJeqK<3*V2FJ~oUlEtOO84(f&2$q?3#Dd?6O$`!^Ou-A`LcdG?&g@_?RieJgeaqwX%aZDN&RCJXBI@qWS`EN>A-NwBsKP&t{ zE*?hVqxpZ@U6g_ONbkL<0!hSpKlP<;K?3;d7#vVY-PZG7-mIK)e-l8z!0ZJ$z?&|y zUcI!WV)#<-^7Gzutu6;*dc4N#oi@%->r68M&JWmh4lD7y4XreKAg3_g@Yb@Ia0cIS zV9Zeo)NN%tg9_FGBatjt;|0Fq`NPm9wK@^=Y@RVI9m%dUGN^%XFH1Ju23+nUcvzbQ zc`voUHgxq7sv;P7df+9$@VZsUq(VzyCy(UzU95Y`12vXZI9>am_G}sKok~upOU5c^ zDFz36U&J$9G>+nzC#uDuqr1`m?&wWsK}R<~yWs?Me|hlgN$YA{sWb#nv_RLSt-j#6 zx8&v70CCieiG20>8(fU+(7b)w_EiiosV09Gr)KlPw`0-i#s)&XaipVP%?H_##&_<9 zw(T(SU{=G%Xy#?dQxwm2?_bV5Bk^d4k$9c>nfp}~8aD?5Vz|J_hPg?pj$>wb^yc4j zYn9{LYP$z=FAVF3eqlfM25*BTUbImD>v4lnmBV_>r*ra9)gqRh#maXcvG}te7DQEN z5~87>w!D^3r;lg?x|BEF3YHL?=P=L@^|XlUdA{K738bLDUbi6Jfjm!^C9^cDPPM=|gODv^??JjbEt&|9r;<_U6*U4J;_(Qppalf6l=iS`-mYy8;k`~>{gcsrnJ}m2y(xa0<_x}+E$!T}u3%9fi0#u%6)YsXmkKJ?#w2jC3Zk;Sznz<*rQSvKb zM9(54uo7{~!sFWF)s7YVU02r_v@hZ*wL7s*;1=UoY*IwP8OX{{vG;JbXx#nLGGS|4 z(di%VM@JfX9RlxMIX^Zcv(0wA?v&h!OrU1P)NT|l{GyDg)QGJHT{tjbr+9!rYdS~$;r49h`wlm! z%*zS}d+kLxr@NewZYk27Guz_$exwJ%c=!=VwyTL--9r(Wv$pBk*v`~_(U3Y!e_zAOtSv3~t*My704 z>8%blHEQL7uZ6DG(RzKiZ$8_ZN!puNV;TP{-8c8`K;cmI=IDb&f1RuO(wfWW{ETA) zpEMA!n;9Ns;lb!jd_cu$T|QeZ9O>#0GuzVe;>253b@(eR*vcR)uf@9a_X>gpl*QEV z!HtVd!)o)$&nwxDA{W0gEqmK{=W?A@>K(0V9*sphMZAP(HYqW%@bujKktc+kHi$E? zQ17_pn`eG%b(QDsGo|SRgYEBD+q%j(CVTE>?%M{5h(O7Sl9%K4d}c<;lff0Il`z0| z%vQxmD=&MTRZP-9k8mYxK*w;!-^V8)(3cR+KEO4Cbe@$US_YNPHP=9mmorFO;A#;C zR|TE}UvZbPT+>YHEys$>Fn2hPizIkQIgKJ1pSn~V7mv`UFL7yl3HK)lkj6=$kLex^ zx9r&<*AZS((EvsgWhLYaqgd?Jc93bgR(%j9ca~IsZ#kSg-?{ob&@E+0a>w5aQ75ip zVgtH!S$$W~)z=^jW$_yD$_wJJmOO|ADiJQ-s=P2&^)q(*b4UP^q@UmqY|65w)ahU2 zdxc%)8L1u4-%HAe^~vEe^+t3#&WM)DF81(=ZSRz~pVZ!PXpZr1;;%UO^TsMAb-KIB zow07jWwu^Uy`v~dO5ZeA6HK%csw#0uJD6LR|6pZ4~MJ)ryc+UxaR1!QhvxiQ(ZBdJh& zOOjyY!Js)*X9jHzyY9i6SKS`$#LJ&7YA`)66?jBWBvoFsWLw8I@c>mqJJqenu!~CH zR0>>`BwTT0%qww8J1ML^6JTiOas?}F8{A0MTkUNN&P<+EBVRdUf9(~9GaF6+edU4e zZL`>=the?W7%xCa_usF+;D zEj2x0zo&J(4+p5|a9vhXXQQ$k`bvWgo1L-B#z6u5zE}4!IO8bSwht9pw9&yU@$jE%7K@snbQ{c|9m^xX zTiuPGn3xsrp$*Lc)@q%2B*W=j7ok2G+wXnWXD6CCnGKYAiKso{DBNeF59R&Q5@!m2 zb=%mbkw<$yYu=6(o`{|Z5Z4UT*(;!VjkHpcyB=!onAZC1*}~E<_F;PA7K6n*d|GiQ=T{69_)<)&g?f3!suW@*)?lnf9kuH$Nqh$rMlUm zV8Imo`by={I4$l`wLxUXPaJjB9G85LCPX2TwEb9;I)ms#c9%C8XCo^@K^ufAYF_%R zoTy6FXu4w;;n?P6F!CgHGClf;U4R^Rme6|~J7;{dYRvnKZe-c{BUd(@?Sqr_d@92R zcXfG8D^o{MyIfI8dM~^NB zekX-h1mJCVUn`68moaf1-1v5FhY9`aRL<~4lxg5+kBNhqvg9-^}+^aI$+}N>Z*^q zh~i5^bs*tp^~wt5nwA^K14gq5d50z_R+;@ikr5SP__AODR?6Er(MtyV6+hma4F2{4 z%jvWKl~!Kht`E|T(oeIyD>E~e0@G8H*3^j8>(7$^$S*9Cd$Scn1VD+x2Lv%Li1H0e zgH9sbQo6=ln3edwB1+g`A7f^Uu}hkDx^~5We`30s+ZeCTP5pUrjN>mWu`O(K)e886QHT9W!bjm% zf0!*S)eov{5uX?r$iEUa;8g&^U`qT2O?0WdG?y&R2sg_Uo;#Up9dGw&>%e^Vk5j8*!)DXr;R-lQ} zhO>ypeb9LWHISMs4eGs1nHvfs0)$n`iDBXhZ`Q(jQQ6nHi&VtAz+^H;OFNzhiv-=A z^MMUYN19hocz5V|&)yf%a#)B-bY(@d#1Z2!Pknt`p-3*o%M|>|w*psSox=|#UBHRB-iydga<;gETO^|kB%T_MhFMwHBblvcHCOJa7bKzvxcnd}Qh|2|HA1Tc)nu(4ucBkNgw>|sz2)k8CFp5w z#LDz;h`~eKGv~d?3th9TelvffoG(ug*K0fMcNR{w5CT3B^KD}kYl2aZ&Wb8&g8Y{e z)~2NOXB7%-Eo|MKFEGa6#nVe`>71`Q@`c|J{|MT8DUuq(#HR$G4W&}Slg6MW99k3HSwxy#9y zws6*e>sUPDMg^<9WuSI{Rl7|=0edO<>SP7XGOa*DZ2?%BDX4C%(G~;?4>l_x1WsUN z4TpR1(iFnXgmztCi9r)}qF=`>ioBD3^TE4@Yrs{f?wONZ!QR@H$3T{HKvRbYrY)+| zLZ{^^f@q5;$a8iWiVsNx7s{VtOWiN!S5X7quHHZEY?B?SqcyC=eG?GHe%sA1-@RNO zW^N2pR_KA;6KNmfz6ijvBK#>BQ!-XBdu&DL84(qPY&WtTO zYh#uEOhwHQBgVlSv6)6Cuuw$i?(hNcSJ_UmvYf-ohRhXS0XNjCrh@2CSRDcYvwk-1iA|3Q8b z7(PumZW$MW+L+f#Yw-y@j5H>kBi6Daa%@-#S7b0U8%C{wurKsL11X9?6SOdV=Q%JY zunp2!WiHP)1jup%XVwRbL|Ir+U?&aeNV4GbPn_$rf^~&F!dr*H5}2TOJ2UqCS0sSB zuFl+qG@fEEyrKlL6HP=RRk}nBxCTCKPK;70u+O(qJ3cd|>Q6b3n_?BXz5*c{FV1^d z@|{iMVpBA{^ucc8sVV9i6s{0?R7+fXq?*Zc5^&Fa!COxs@`}meo)*zfO@E@qB6kDT z%8w&(XYrv=ag*1Bis2RNzt+m;S*vh>`8?NLzAaV}0x3!rHydYN=2?T;AYiZB_-W*h zgCYu=so$nfV9r5gl4kprizo&Pz?WTwQh8^{)w~&V_bJ%Zbi@mxPnt!3? zC-}ts!F_A%>lZy2;$}tFy3a-Sm`~wR8Dz_p>((reziK=5`GH!LnrrYozA!0%DQ&Y?~U<&UsB0JCi#6XYqzY7HiA)*h>Xx&I#A5Tl&t{8SglRKG|Mfj)IFb7Sj; z|B{#e%>k;`uHv)i9~xNZ3SC8eQ`PIsf~I=ned^0>6(k>c99ycJZ>^mQxBKBtWENXH zoO>F#i;nov=wG6e*{JPhZz%a?*DKf7hntcveX)yzkZXqB>XjGlq=1e2M|YX{%t&%4 z#k_c1XAsNA*%m7=?zwuhAL1sn4RP}&cq`7COM~)*(CGD11J$`NHhxLdE37R&1b~vQ zT_gd1Emw_ zB0>Du_j?f3k-6pqP|8k5ldtih2EM<}Sndt;Ln0(5i+Q-j3w0^LESJ@|DU-t{5_b3F z4t@xG^F~nweDtT@o8gsb8=&3~j(U@Mh+ny;Hp_#F3Rj7%B5rP(xy|ll=T~~yE(QA3 zhe_)w0U;KAHkgV)jyS5YsePmNw|H)(odTu4hdmgJ&-ShAtZZuwLw=*lpAI68g}#rR z8v2SnWs0er4)Pz1sdK>@R^vVj<==`}xtKM(IgJNuKVhdXU*zGpuC=#Oq@pUI6bp=r zv6^62lDGH10gLTfOi!`K!tsIjvJ2j07xZoKwzdDMmmZGL!0Rthz$^E4^BpGD6uq?kZTPW-YS_$zR*8S_B_aJVQ77d9<`<6$@;(}IW!<3?;KaYL`7xcvGxvTcyXH}l5rR&^{{uB#y) zo2MEQX>VsEteWV)+ff7LKBom8{K!nni;{rAYU`rtsE$#jv42gGC}4y}O-zLq$-AI+;K3rW@Apmd zj8CI~UwJt~uWS=VY=QiR2mG27WbUv-fEmQb4jpo@{BD970BdycS)RVs<>xWIg0XE@Lj;7nm9 z&Sb^|-|O;M(mhOV$|Q>Hq|r7Oez)F|Wsau}$d{hn*t9CNP%$E_r5^q~)7P~OJ1oA( zENl^+kteL=>$NO+!BJH|;8jjfg(Y>et{`}0e?n7veyC7ig7=poqq+Gv&$(T%mW9`o z6H(*C89`$kWp;MI@VO(pzJ>PJPE?+#ZW}S7-2T#6x`LGv3JI$ThkB`m(;yKuryG1(llb#-DOSljel#kS zIHexqE#zi@97hq>;}V$e^bYp)Pm8wRH+PEl$}(m&kl8TWdRnK*C)1k~J9CZ*D>hfD z%~DP7Rf@$|^w&myG##AfP~N%CxhQou^D4c;tUPGh@e*EQp4$7@Om*I&xn#7KEKQ%D zwJFURIB8WxkOFtttU<#<3E)KGek^tFrf?qZna}r~&c^t+-HljJKPZCxwsz?+P2yRd zrUZ^#3V118pn%Nues#sU*+=`Fi?5!JPm0AXe3XGzk7PB3G$W42Jv=#Nn$Ij_x!ilT zqj4L8HP1$M=Djsdw_o_devJB9KU#h$sUkqyr-cLQGz<&Tu5pO^y(+LHx&Oq=vz5$Jxf+@isiW z!gPbLzN+y)bL!pOq0m*yrwX)&2uI5od<$!WX*%p_wl-jxqIreQ?b{GBnx9VYFV1$f18!YeY)@4bcWu~$QqzG=qP<96gD41=1!mn*2vAf>`=JKim;zQ*aUSg zXHp-$(>Ufp8f%-}qSfI$)E-N(D{MEWZq0oZ&cU5_o_g^160lPYTzD-Qtv|1fB9->< z);uZ=^UK&Y{y?iR6gm3TdHU?;4t&MAu+0O+D*%%#{jkFoqEf;cIi1#~XRJIKwk1~) zPZ32%UCi{wc)n#F@3kt8*{22QSoc68Q;BRYF zIqR{YP87yKJB88oE|@PCzMaIg+0Sg9x{oHV{1(PW+by;H3DQoSNuPeClfJ3CZW| zw9XkQZnS=Qb}e(o^T>WsD)E~&cmX|~izORJSga4E!27Fv)@%z$?H1!|s$IVN{4C$8 z|D(@hRe5<_J;SA{+K%L;wd2G4QeMHJshr5F;mBySN=}!>&)5EF(SJicNh@y)Vm2wS z3bfhCVS9cH8`_kbNbf@in#OpxiH_OZT5YU_1$2b1zDf_!NURflJM&yr8ud!fylcUv z_H0fT=t&U3a*1&rn6p?di4o@#?5=UWPMdPi zh2~Xfm(bFGZfaKDS7+(1fecDwJ8#>y#yq7;nekmL07&vOdjV7)y!vLPZYRnu$3qQ9_@`vR_It~kK?aCq_;IkowPdc10LINWEW%(}lrm>03g~H_=#16HI)96pK zM~pY<0+=uRz-HC8mDS8|VU^sE&djDpQC;N2*p2&h=(j}2O6T|&VUIPTBTtEAcPQ!U z&SLtB`xScR{=N7Z%w_TE#Nt2kx761U{r7;C))FTJ*w#i4TQ1jZrI!NEZLiG9W3+~6 z_4~9}H{4%a$40hsvi0Pb*->XRDo$GX_iYbXc<<^>`P-xFBQeribPae{YQTyG~ODVjw_3-!^`&}ru%6+vDVz&~@FD7kP9ccK@o5H)a(=|NctMO?oDZ@FM z>e%Wwt^MI}b%mU#0WOOWy?oLlm5IltdvARPp27ZCNgT=*y%`*%+*Pz;r16V6mFjF| zGQE%x&}PN$tst@Cc$^`#!FQhHiF!I`cBJA*OncVd5{q<}dYaVD2 zpHQIJVh%j zw(^txnM)zmLW@vm{4Re8e_9GUerW992P0W|7%z$} zxl!xNQVKCakD%?1O3`eq@6$I&5aaaBKi-RpE7f-dllnOyZ$=;C0FpiS=6`P)tRLj{ z!7N-7(dv&wE6mWv)bY=qd-l>aY~Jx31QfZAlJ=*&noXJLMfa1} zS_=tlL-(S}Hx`pcdV&N2S2RXu5mnd9t&K)7QcPem_S>Yh%OWdzRT=~xL`ZG94Q%!| z&fd#pxl|+68N?& zM$62LbHGYxO{v(Gu!#l3tc`}gzTn!%+FLEYPp}_~WZ4&5k=}(G*w_>sXb@o`z0{?R@RN<4N1dXmjT=5(K`HMFPk~AfY47{HarP~b5YWP9&U6Jp83`6OQULOb_#f?nv z_TS&w@V@qDY)Hh5YKt16NW!NH=TS5!;yI`jqAH16+zsCq@m57^zOO`KSAi_wTy^dn zCHP*<>7aPAKd*t`_Gl@fEn%a7l*Ik8X0WhoLFiNa{)g8?HmIF1rj;wq=on)3rf;($ z<{Z;+?#uEf_?NJfW28|qht`z%%Kq#TwY<$oa$E0=|6U)8Sw~@-MAQ(9=G8eOhp)Xg zwsKh@IZ&iB^M>}vJ0;19CdN&tA3}z3kXah3$u@U+|NH+ZgwWmc@bCn`?g*5`?9I?S z65LMBl3%TSLa4tIU-V*+Ead;McCP#%>hA5ISull+B~&-r`9>0=B!(6xp>#_mZl%Z? z5=AqkRo$VKC56;eT4bNdGE*scWt|E)GJ{YmYm8-<=lZC=&-w>Euh;YS8)iP|e9m>9 z>s;r3y{~ryA%!>b*_Adalo>kWy7Opfbo8>YkQd@_z7B{{R0+^S)M#wE2>%c8uiJj5 z?d_dDxX}9t@!7)-X%gH!o=P#}!LAYUO%om|p}H&j=F^;{ne{`us{J=UH-bC2->I4rV|5G4(P}8R z@#ErQy&qa{ERn<)LIP3a6R*`yM^F&S!9cN6K>0hqMcU@^FW|ZQ7$A3fik@?coQu(| zT>1B^e#1E{fcN=H0*z$^zq3k=Ok~MMqXlhPS*_Zlg8LZXhTr^c;KHPBwmVGhP_(WP zda>*9+;j727v$h3kOZS@341q)I%rJvI1x&-*91k??fH zG`Nl*v7x#8bl`zjJVEOxko{J{I1lQrg9d=Ukj&i1ul~qu)SC`pF6yVtpiQRSflpt+|o%C41W%g zuvR%s=>;%g@jEXl$mui%&Nh@Eg_43LTF3j=#~bQcs+4C?zLsY<)Sdh= zqC$n&YQ4OS$-g)JMR43A_>ZUdUcL>_&(uQO^L8v;`lq-pIgK`NMG+3jKppuA4(E81 zbD=Fi`vBqg#4(IopC`LD0N(m4yo0ie3%CQ2{gn-4^g&htv(&r(_`Ji|!UpcUJV`lyZ#!M=j0vQ~?vHbNYu;cPJ zz8pIHP-u^BvRM_p+O@33i}7?fcuSvBhb!M~5fKyDvE{zJ5h%%0>JV2pTxz-f+A3`T z!W(@^ihpOc5%HgV__K-}vCt>OhS!J6i~Dh9v))h?_|n0Hw5mdL zTwE$|=L*CKjQw8xLLo567ab$|k2qSnGtfwfJ^FUhcrpE}rKxX?Qx`d>4TkA{8BWGX+w`fp#2 zUsA%$WVr|BWG}{%#b5sgb&A6kjH8_mmA|!filbu`ZAEb7P-Z@7ML%ARgHKA0dqcZlOb&^o ze1$zy=%IIi66hO`MBn<7s|B%lqf`nO-^fH$-Gi)H>XBE1uzlQJEpq67qUzTtl5)tk zAw$C3|5Z7(ioe(7O;&~HbN=jnV7}gKR}sNkSw7Z;-Y^@I;#PR9qvg?xj>i!n0_63= z1YX9FZBWQaMm2Fyel2t*3H+LsN$-I7;!OA+;kD);$n^7oJXKzdbq1=mSgHSo$-1R` zcJUWWUC%4Ai@wJ$N`Kc>S{)m}j+;lX78Bg7TB5bL&Sa#sQl8^K#?+7kv;=tlo2U?^t`tvyY-% zgRjPK&Nk>!7tW&{SG=vvfb#4m;kjl5(oWC^b5{TQ-D_eEE~ys(=MC;>NNf3DSoulE z&B}R!zOmjRtv9S%!tW;XI`7@`w1!;4APPrLdl&LSjk5EBo>}+cgw5U*{zuW*)8S6b zLk~Z-BvJ)$v1IkadkgzqrljCL(;S?NtcUf11wOlYObCUKC@G`isQEUu{4)S5h#S@b z;Y%;>gwdxdciBn11rf2^**B_d=zE4-XKy50Fm>V<@TvC5ZDR09N*1?eU7wzEnNogH z6u>PvIx0V}mja!L3R!gI+NGoGvll=tvB=e(ZRjIXR0Y;nVn)s7ZGhY-Go#i;v^t=e z5F47c8=33GICNsXq5N_5-+oVz9RGS09y~9hN8cm9mv{Fn?s6s8-M-{WD+7fiF zP8@hK2<3y|W*=fHegst(rBS?iRJ zk~;Q0@b%hzFqyBowXFF4dAZ?F%vx>RV)47I%iAVHy4vn@T=~m-mBj*>HFa6QZkSHg zK@TB{(4?aS*Pr^3vjt>fu0!bQmn!)?F#~ibGMc+|Rf-6M4`b9_xVjPp_LiIP#&>i* zdgbv*u*+8o1E3DzI;21@7=(SS@Wk4Xj6s$_7!uWa3&l1?aGoK7q@&I!35=sfW}UzOm$AP<)sw< z!%z)Msg5vdg?DNYjxY4#ypEd{oUVooPJ-F8zY0HY8jS)O5lsF_uP(`6b3UH6;^g{C zW|EX&xeFSNMjJd@C#z!*rt^0itRAZN{B&#cw1+EHcgs>4JQ15AzIXR>oO8r%YT1_U z?UW?nqGU;X<&T{SL7rJ}S)AYerllj@CRw3HHmm;YmCzQ&L`YCpOB;S1R|r0 zj*fTx9P_IsCavYr1*?-@DJ{Hv+V!KUGj7p=sWVgZh!J8)2MUL%@Z1MMz{;?c*6iM@ zMIL4zXVz~$%zyDTvoWIVMS|GOH(YplZa+vi`dNV|jt5!Rsv2q{+x@#0_og;pIlb!` zj?Dgen#;Tvhjcej2}bGLMp`UAM{apjZjhQ%SUHpRu?->z11&3FqL@S5YqtXLO=9?= z_O2sq>jn8+Psh-_NdsxUx!v0#0r`)9MgIaa-@IBfTMdo<&KR!IjYj7+Sk&hmyxvS8 z1uxgmrHyi;wi8SueI6mJ%iOxs+3q~YSe&vls6gk~((eatDVIb-w|&8nb2{5k#*WwLSxRu1q(6aA4r*k5 zKfX&2y>P+bJV~P6-nOk5(zKUwaG17~_(ndA>bLfqra}wz_nVsNbqTQ%6D=~*hp9aL z=q@Plv8R@+Q6SSkD{%u7=gU~a^vt1fl^l+ovC&Tk8^s?Y(jD!Wyd`w#+}uz0o>FBX zWn)Zh$OpT+G%ss@JP${%iieXQKK(m3dkqt^+ZN;?E-}~~g$|%PJ2eEdRggqGTlDBu zLngT40b3VRa(jF{N8%((V|T?=kYXH>gYfufvFpbPR$IgsgsMf@7{BuICF9WKMXP+? z-Q{VFGdnbrMcos3Sd0XX8EG8p z9i*GiOJ{31mDiD;D#0KkOVnO819;syv#mv5tnXl5Yz9o_s{|(T{d#5yST@ZsIU(= z7R@<|!;y=%{g=SAF~(Qq-xasJ9QP8S=XjoJA|^y;WDb8WzZp1wGG(otp6VoTsrK}9 zLR0^CTMj(13?A51WS5h-dlQ<$=&ooneG3F(k<*ju z3wwb@<*NCHi7CbD{eXt^jt$MX!_`W;wu@uymo~S4%V5U2b(aq9bG0Xx?4gc;?1^tX z*whsJ&hE*F_srkyL8j5#BX(W1Es2zE_5G!o$GHP5t;wgiG5-tbJ{Er5LQb=$KUx>I zT2wn$^OKqNTfNt3A2kN*DUiv-d~^hQqR}lMM`Fuj2@22`Y2(V6?Y{td)J@6Cice>` zSE3htPXf^%8n-di81JgPxDf;-RNCj{ zvOuDjwsNH|K42kAHl#98|9+%8CnJcx;l0q&dVM&ujV!QDb{iNcNta7=g7xughsK*$ zW7CiaCzpy}gCWQBv=T8TIA=^-OgpV(S@@kQ$zhOPL#6Pc%mF+{0=g}U~`>}x_%vi2EG~^utFF9wq|C0i^FnKV{|1Rl! z?kep=re%>xfA~SKMY6eBD$h7m3Kj)mUUIsP-vT0@-ke+a%KG?L2{9J!BuGMn8fL&T z3)QvsK;a4((B3!~E7fF0x&qjlvyNw`G<^+O@3}1N8Fj&#ZrNYqi5-Kv0VJ0O;0eXf zy(V*k714iqvsyg_er$?$wh)^nS6N}M1t0$z+y3?Ce=V4t`G0egQa>w`l9Y&B{?gJ| zJVEpb2wUvJh0C#{0&^uu?Yx8aqA^KP@Fq1C2ni8^8@FOd0r*xp5SG)H*sDTCW6smg z!YQia(Y)iQn|8v(`p;aJzyc-gake@nCAF?43Uj~xI*C5o{Pg1gH$%gP{^qK(wU0NA ztNmCgkhrzW*1#21ZyNLe^_QPwmzL5$7AuJeQCsc+put!WMf7P5mrK=k0)=wSGFlLQ zlTM}kY5lO%Pp#TlZ|AIr@LM3dYyF|K7}NX&Tl|y>9y9$h7)1`k$(FSEO<1}GkN+P- b(?v2(k&C((er|9<@Uvy3 Date: Sat, 14 Sep 2024 16:17:38 -0500 Subject: [PATCH 4/5] Change build --- docs/app-1.0.1.js | 35914 +++++++++++++++++- docs/app-1.0.1.js.map | 2 +- docs/index.html | 6 +- server/img/icons/android-chrome-192x192.png | Bin 0 -> 6365 bytes server/img/icons/android-chrome-512x512.png | Bin 0 -> 24416 bytes server/index.tmpl.html | 10 + server/manifest.webmanifest | 22 + server/sw.js | 52 + w.config.js | 3 + 9 files changed, 35974 insertions(+), 35 deletions(-) create mode 100644 server/img/icons/android-chrome-192x192.png create mode 100644 server/img/icons/android-chrome-512x512.png create mode 100644 server/manifest.webmanifest create mode 100644 server/sw.js diff --git a/docs/app-1.0.1.js b/docs/app-1.0.1.js index cb731e98..6930f512 100644 --- a/docs/app-1.0.1.js +++ b/docs/app-1.0.1.js @@ -1,9 +1,2724 @@ -!function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var o=n(1),i=r(o),a=n(33),u=n(172),s=n(203),c=r(s),l=n(242),f=r(l);n(214),n(313);var p=n(220);(0,p.subscribeRecord)(c.default),(0,a.render)(i.default.createElement(u.Provider,{store:c.default},i.default.createElement(f.default,null)),document.getElementById("root"))},function(t,e,n){"use strict";t.exports=n(2)},function(t,e,n){"use strict";var r=n(3),o=n(4),i=n(13),a=n(21),u=n(15),s=n(22),c=n(29),l=n(30),f=n(32),p=u.createElement,d=u.createFactory,h=u.cloneElement,v=r,m=function(t){return t},y={Children:{map:i.map,forEach:i.forEach,count:i.count,toArray:i.toArray,only:f},Component:o.Component,PureComponent:o.PureComponent,createElement:p,cloneElement:h,isValidElement:u.isValidElement,PropTypes:s,createClass:l,createFactory:d,createMixin:m,DOM:a,version:c,__spread:v};t.exports=y},function(t,e){/* +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + var _react = __webpack_require__(1); + + var _react2 = _interopRequireDefault(_react); + + var _reactDom = __webpack_require__(34); + + var _reactRedux = __webpack_require__(173); + + var _store = __webpack_require__(204); + + var _store2 = _interopRequireDefault(_store); + + var _containers = __webpack_require__(243); + + var _containers2 = _interopRequireDefault(_containers); + + __webpack_require__(215); + + __webpack_require__(308); + + var _unit = __webpack_require__(221); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + (0, _unit.subscribeRecord)(_store2.default); // 将更新的状态记录到localStorage + + (0, _reactDom.render)(_react2.default.createElement( + _reactRedux.Provider, + { store: _store2.default }, + _react2.default.createElement(_containers2.default, null) + ), document.getElementById('root')); + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + module.exports = __webpack_require__(2); + + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var _assign = __webpack_require__(3); + + var ReactBaseClasses = __webpack_require__(4); + var ReactChildren = __webpack_require__(13); + var ReactDOMFactories = __webpack_require__(21); + var ReactElement = __webpack_require__(15); + var ReactPropTypes = __webpack_require__(22); + var ReactVersion = __webpack_require__(30); + + var createReactClass = __webpack_require__(31); + var onlyChild = __webpack_require__(33); + + var createElement = ReactElement.createElement; + var createFactory = ReactElement.createFactory; + var cloneElement = ReactElement.cloneElement; + + if (false) { + var lowPriorityWarning = require('./lowPriorityWarning'); + var canDefineProperty = require('./canDefineProperty'); + var ReactElementValidator = require('./ReactElementValidator'); + var didWarnPropTypesDeprecated = false; + createElement = ReactElementValidator.createElement; + createFactory = ReactElementValidator.createFactory; + cloneElement = ReactElementValidator.cloneElement; + } + + var __spread = _assign; + var createMixin = function (mixin) { + return mixin; + }; + + if (false) { + var warnedForSpread = false; + var warnedForCreateMixin = false; + __spread = function () { + lowPriorityWarning(warnedForSpread, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.'); + warnedForSpread = true; + return _assign.apply(null, arguments); + }; + + createMixin = function (mixin) { + lowPriorityWarning(warnedForCreateMixin, 'React.createMixin is deprecated and should not be used. ' + 'In React v16.0, it will be removed. ' + 'You can use this mixin directly instead. ' + 'See https://fb.me/createmixin-was-never-implemented for more info.'); + warnedForCreateMixin = true; + return mixin; + }; + } + + var React = { + // Modern + + Children: { + map: ReactChildren.map, + forEach: ReactChildren.forEach, + count: ReactChildren.count, + toArray: ReactChildren.toArray, + only: onlyChild + }, + + Component: ReactBaseClasses.Component, + PureComponent: ReactBaseClasses.PureComponent, + + createElement: createElement, + cloneElement: cloneElement, + isValidElement: ReactElement.isValidElement, + + // Classic + + PropTypes: ReactPropTypes, + createClass: createReactClass, + createFactory: createFactory, + createMixin: createMixin, + + // This looks DOM specific but these are actually isomorphic helpers + // since they are just generating DOM strings. + DOM: ReactDOMFactories, + + version: ReactVersion, + + // Deprecated hook for JSX spread, don't use this for anything. + __spread: __spread + }; + + if (false) { + var warnedForCreateClass = false; + if (canDefineProperty) { + Object.defineProperty(React, 'PropTypes', { + get: function () { + lowPriorityWarning(didWarnPropTypesDeprecated, 'Accessing PropTypes via the main React package is deprecated,' + ' and will be removed in React v16.0.' + ' Use the latest available v15.* prop-types package from npm instead.' + ' For info on usage, compatibility, migration and more, see ' + 'https://fb.me/prop-types-docs'); + didWarnPropTypesDeprecated = true; + return ReactPropTypes; + } + }); + + Object.defineProperty(React, 'createClass', { + get: function () { + lowPriorityWarning(warnedForCreateClass, 'Accessing createClass via the main React package is deprecated,' + ' and will be removed in React v16.0.' + " Use a plain JavaScript class instead. If you're not yet " + 'ready to migrate, create-react-class v15.* is available ' + 'on npm as a temporary, drop-in replacement. ' + 'For more info see https://fb.me/react-create-class'); + warnedForCreateClass = true; + return createReactClass; + } + }); + } + + // React.DOM factories are deprecated. Wrap these methods so that + // invocations of the React.DOM namespace and alert users to switch + // to the `react-dom-factories` package. + React.DOM = {}; + var warnedForFactories = false; + Object.keys(ReactDOMFactories).forEach(function (factory) { + React.DOM[factory] = function () { + if (!warnedForFactories) { + lowPriorityWarning(false, 'Accessing factories like React.DOM.%s has been deprecated ' + 'and will be removed in v16.0+. Use the ' + 'react-dom-factories package instead. ' + ' Version 1.0 provides a drop-in replacement.' + ' For more info, see https://fb.me/react-dom-factories', factory); + warnedForFactories = true; + } + return ReactDOMFactories[factory].apply(ReactDOMFactories, arguments); + }; + }); + } + + module.exports = React; + +/***/ }), +/* 3 */ +/***/ (function(module, exports) { + + /* object-assign (c) Sindre Sorhus @license MIT */ -"use strict";function n(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function r(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(e).map(function(t){return e[t]});if("0123456789"!==r.join(""))return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(t){o[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},o)).join("")}catch(t){return!1}}var o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;t.exports=r()?Object.assign:function(t,e){for(var r,u,s=n(t),c=1;c1){for(var m=Array(v),y=0;y1){for(var _=Array(g),b=0;b 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var argIndex = 0; + var message = 'Warning: ' + format.replace(/%s/g, function () { + return args[argIndex++]; + }); + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; + + warning = function warning(condition, format) { + if (format === undefined) { + throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); + } + + if (format.indexOf('Failed Composite propType: ') === 0) { + return; // Ignore CompositeComponent proptype check. + } + + if (!condition) { + for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { + args[_key2 - 2] = arguments[_key2]; + } + + printWarning.apply(undefined, [format].concat(args)); + } + }; + } + + module.exports = warning; + +/***/ }), +/* 8 */ +/***/ (function(module, exports) { + + "use strict"; + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + function makeEmptyFunction(arg) { + return function () { + return arg; + }; + } + + /** + * This function accepts and discards inputs; it has no side effects. This is + * primarily useful idiomatically for overridable function endpoints which + * always need to be callable, since JS lacks a null-call idiom ala Cocoa. + */ + var emptyFunction = function emptyFunction() {}; + + emptyFunction.thatReturns = makeEmptyFunction; + emptyFunction.thatReturnsFalse = makeEmptyFunction(false); + emptyFunction.thatReturnsTrue = makeEmptyFunction(true); + emptyFunction.thatReturnsNull = makeEmptyFunction(null); + emptyFunction.thatReturnsThis = function () { + return this; + }; + emptyFunction.thatReturnsArgument = function (arg) { + return arg; + }; + + module.exports = emptyFunction; + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + var canDefineProperty = false; + if (false) { + try { + // $FlowFixMe https://github.com/facebook/flow/issues/285 + Object.defineProperty({}, 'x', { get: function () {} }); + canDefineProperty = true; + } catch (x) { + // IE will fail on defineProperty + } + } + + module.exports = canDefineProperty; + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var emptyObject = {}; + + if (false) { + Object.freeze(emptyObject); + } + + module.exports = emptyObject; + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + /** + * Use invariant() to assert state which your program assumes to be true. + * + * Provide sprintf-style format (only %s is supported) and arguments + * to provide information about what broke and what you were + * expecting. + * + * The invariant message will be stripped in production, but the invariant + * will remain to ensure logic does not differ in production. + */ + + var validateFormat = function validateFormat(format) {}; + + if (false) { + validateFormat = function validateFormat(format) { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + }; + } + + function invariant(condition, format, a, b, c, d, e, f) { + validateFormat(format); + + if (!condition) { + var error; + if (format === undefined) { + error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error(format.replace(/%s/g, function () { + return args[argIndex++]; + })); + error.name = 'Invariant Violation'; + } + + error.framesToPop = 1; // we don't care about invariant's own frame + throw error; + } + } + + module.exports = invariant; + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + /** + * Forked from fbjs/warning: + * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js + * + * Only change is we use console.warn instead of console.error, + * and do nothing when 'console' is not supported. + * This really simplifies the code. + * --- + * Similar to invariant but only logs a warning if the condition is not met. + * This can be used to log issues in development environments in critical + * paths. Removing the logging code for production environments will keep the + * same logic and follow the same code paths. + */ + + var lowPriorityWarning = function () {}; + + if (false) { + var printWarning = function (format) { + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var argIndex = 0; + var message = 'Warning: ' + format.replace(/%s/g, function () { + return args[argIndex++]; + }); + if (typeof console !== 'undefined') { + console.warn(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; + + lowPriorityWarning = function (condition, format) { + if (format === undefined) { + throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); + } + if (!condition) { + for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { + args[_key2 - 2] = arguments[_key2]; + } + + printWarning.apply(undefined, [format].concat(args)); + } + }; + } + + module.exports = lowPriorityWarning; + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var PooledClass = __webpack_require__(14); + var ReactElement = __webpack_require__(15); + + var emptyFunction = __webpack_require__(8); + var traverseAllChildren = __webpack_require__(18); + + var twoArgumentPooler = PooledClass.twoArgumentPooler; + var fourArgumentPooler = PooledClass.fourArgumentPooler; + + var userProvidedKeyEscapeRegex = /\/+/g; + function escapeUserProvidedKey(text) { + return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/'); + } + + /** + * PooledClass representing the bookkeeping associated with performing a child + * traversal. Allows avoiding binding callbacks. + * + * @constructor ForEachBookKeeping + * @param {!function} forEachFunction Function to perform traversal with. + * @param {?*} forEachContext Context to perform context with. + */ + function ForEachBookKeeping(forEachFunction, forEachContext) { + this.func = forEachFunction; + this.context = forEachContext; + this.count = 0; + } + ForEachBookKeeping.prototype.destructor = function () { + this.func = null; + this.context = null; + this.count = 0; + }; + PooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler); + + function forEachSingleChild(bookKeeping, child, name) { + var func = bookKeeping.func, + context = bookKeeping.context; + + func.call(context, child, bookKeeping.count++); + } + + /** + * Iterates through children that are typically specified as `props.children`. + * + * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach + * + * The provided forEachFunc(child, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} forEachFunc + * @param {*} forEachContext Context for forEachContext. + */ + function forEachChildren(children, forEachFunc, forEachContext) { + if (children == null) { + return children; + } + var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext); + traverseAllChildren(children, forEachSingleChild, traverseContext); + ForEachBookKeeping.release(traverseContext); + } + + /** + * PooledClass representing the bookkeeping associated with performing a child + * mapping. Allows avoiding binding callbacks. + * + * @constructor MapBookKeeping + * @param {!*} mapResult Object containing the ordered map of results. + * @param {!function} mapFunction Function to perform mapping with. + * @param {?*} mapContext Context to perform mapping with. + */ + function MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) { + this.result = mapResult; + this.keyPrefix = keyPrefix; + this.func = mapFunction; + this.context = mapContext; + this.count = 0; + } + MapBookKeeping.prototype.destructor = function () { + this.result = null; + this.keyPrefix = null; + this.func = null; + this.context = null; + this.count = 0; + }; + PooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler); + + function mapSingleChildIntoContext(bookKeeping, child, childKey) { + var result = bookKeeping.result, + keyPrefix = bookKeeping.keyPrefix, + func = bookKeeping.func, + context = bookKeeping.context; + + + var mappedChild = func.call(context, child, bookKeeping.count++); + if (Array.isArray(mappedChild)) { + mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument); + } else if (mappedChild != null) { + if (ReactElement.isValidElement(mappedChild)) { + mappedChild = ReactElement.cloneAndReplaceKey(mappedChild, + // Keep both the (mapped) and old keys if they differ, just as + // traverseAllChildren used to do for objects as children + keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey); + } + result.push(mappedChild); + } + } + + function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) { + var escapedPrefix = ''; + if (prefix != null) { + escapedPrefix = escapeUserProvidedKey(prefix) + '/'; + } + var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context); + traverseAllChildren(children, mapSingleChildIntoContext, traverseContext); + MapBookKeeping.release(traverseContext); + } + + /** + * Maps children that are typically specified as `props.children`. + * + * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map + * + * The provided mapFunction(child, key, index) will be called for each + * leaf child. + * + * @param {?*} children Children tree container. + * @param {function(*, int)} func The map function. + * @param {*} context Context for mapFunction. + * @return {object} Object containing the ordered map of results. + */ + function mapChildren(children, func, context) { + if (children == null) { + return children; + } + var result = []; + mapIntoWithKeyPrefixInternal(children, result, null, func, context); + return result; + } + + function forEachSingleChildDummy(traverseContext, child, name) { + return null; + } + + /** + * Count the number of children that are typically specified as + * `props.children`. + * + * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count + * + * @param {?*} children Children tree container. + * @return {number} The number of children. + */ + function countChildren(children, context) { + return traverseAllChildren(children, forEachSingleChildDummy, null); + } + + /** + * Flatten a children object (typically specified as `props.children`) and + * return an array with appropriately re-keyed children. + * + * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray + */ + function toArray(children) { + var result = []; + mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument); + return result; + } + + var ReactChildren = { + forEach: forEachChildren, + map: mapChildren, + mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal, + count: countChildren, + toArray: toArray + }; + + module.exports = ReactChildren; + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + var _prodInvariant = __webpack_require__(5); + + var invariant = __webpack_require__(11); + + /** + * Static poolers. Several custom versions for each potential number of + * arguments. A completely generic pooler is easy to implement, but would + * require accessing the `arguments` object. In each of these, `this` refers to + * the Class itself, not an instance. If any others are needed, simply add them + * here, or in their own files. + */ + var oneArgumentPooler = function (copyFieldsFrom) { + var Klass = this; + if (Klass.instancePool.length) { + var instance = Klass.instancePool.pop(); + Klass.call(instance, copyFieldsFrom); + return instance; + } else { + return new Klass(copyFieldsFrom); + } + }; + + var twoArgumentPooler = function (a1, a2) { + var Klass = this; + if (Klass.instancePool.length) { + var instance = Klass.instancePool.pop(); + Klass.call(instance, a1, a2); + return instance; + } else { + return new Klass(a1, a2); + } + }; + + var threeArgumentPooler = function (a1, a2, a3) { + var Klass = this; + if (Klass.instancePool.length) { + var instance = Klass.instancePool.pop(); + Klass.call(instance, a1, a2, a3); + return instance; + } else { + return new Klass(a1, a2, a3); + } + }; + + var fourArgumentPooler = function (a1, a2, a3, a4) { + var Klass = this; + if (Klass.instancePool.length) { + var instance = Klass.instancePool.pop(); + Klass.call(instance, a1, a2, a3, a4); + return instance; + } else { + return new Klass(a1, a2, a3, a4); + } + }; + + var standardReleaser = function (instance) { + var Klass = this; + !(instance instanceof Klass) ? false ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0; + instance.destructor(); + if (Klass.instancePool.length < Klass.poolSize) { + Klass.instancePool.push(instance); + } + }; + + var DEFAULT_POOL_SIZE = 10; + var DEFAULT_POOLER = oneArgumentPooler; + + /** + * Augments `CopyConstructor` to be a poolable class, augmenting only the class + * itself (statically) not adding any prototypical fields. Any CopyConstructor + * you give this may have a `poolSize` property, and will look for a + * prototypical `destructor` on instances. + * + * @param {Function} CopyConstructor Constructor that can be used to reset. + * @param {Function} pooler Customizable pooler. + */ + var addPoolingTo = function (CopyConstructor, pooler) { + // Casting as any so that flow ignores the actual implementation and trusts + // it to match the type we declared + var NewKlass = CopyConstructor; + NewKlass.instancePool = []; + NewKlass.getPooled = pooler || DEFAULT_POOLER; + if (!NewKlass.poolSize) { + NewKlass.poolSize = DEFAULT_POOL_SIZE; + } + NewKlass.release = standardReleaser; + return NewKlass; + }; + + var PooledClass = { + addPoolingTo: addPoolingTo, + oneArgumentPooler: oneArgumentPooler, + twoArgumentPooler: twoArgumentPooler, + threeArgumentPooler: threeArgumentPooler, + fourArgumentPooler: fourArgumentPooler + }; + + module.exports = PooledClass; + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var _assign = __webpack_require__(3); + + var ReactCurrentOwner = __webpack_require__(16); + + var warning = __webpack_require__(7); + var canDefineProperty = __webpack_require__(9); + var hasOwnProperty = Object.prototype.hasOwnProperty; + + var REACT_ELEMENT_TYPE = __webpack_require__(17); + + var RESERVED_PROPS = { + key: true, + ref: true, + __self: true, + __source: true + }; + + var specialPropKeyWarningShown, specialPropRefWarningShown; + + function hasValidRef(config) { + if (false) { + if (hasOwnProperty.call(config, 'ref')) { + var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.ref !== undefined; + } + + function hasValidKey(config) { + if (false) { + if (hasOwnProperty.call(config, 'key')) { + var getter = Object.getOwnPropertyDescriptor(config, 'key').get; + if (getter && getter.isReactWarning) { + return false; + } + } + } + return config.key !== undefined; + } + + function defineKeyPropWarningGetter(props, displayName) { + var warnAboutAccessingKey = function () { + if (!specialPropKeyWarningShown) { + specialPropKeyWarningShown = true; + false ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0; + } + }; + warnAboutAccessingKey.isReactWarning = true; + Object.defineProperty(props, 'key', { + get: warnAboutAccessingKey, + configurable: true + }); + } + + function defineRefPropWarningGetter(props, displayName) { + var warnAboutAccessingRef = function () { + if (!specialPropRefWarningShown) { + specialPropRefWarningShown = true; + false ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0; + } + }; + warnAboutAccessingRef.isReactWarning = true; + Object.defineProperty(props, 'ref', { + get: warnAboutAccessingRef, + configurable: true + }); + } + + /** + * Factory method to create a new React element. This no longer adheres to + * the class pattern, so do not use new to call it. Also, no instanceof check + * will work. Instead test $$typeof field against Symbol.for('react.element') to check + * if something is a React Element. + * + * @param {*} type + * @param {*} key + * @param {string|object} ref + * @param {*} self A *temporary* helper to detect places where `this` is + * different from the `owner` when React.createElement is called, so that we + * can warn. We want to get rid of owner and replace string `ref`s with arrow + * functions, and as long as `this` and owner are the same, there will be no + * change in behavior. + * @param {*} source An annotation object (added by a transpiler or otherwise) + * indicating filename, line number, and/or other information. + * @param {*} owner + * @param {*} props + * @internal + */ + var ReactElement = function (type, key, ref, self, source, owner, props) { + var element = { + // This tag allow us to uniquely identify this as a React Element + $$typeof: REACT_ELEMENT_TYPE, + + // Built-in properties that belong on the element + type: type, + key: key, + ref: ref, + props: props, + + // Record the component responsible for creating this element. + _owner: owner + }; + + if (false) { + // The validation flag is currently mutative. We put it on + // an external backing store so that we can freeze the whole object. + // This can be replaced with a WeakMap once they are implemented in + // commonly used development environments. + element._store = {}; + + // To make comparing ReactElements easier for testing purposes, we make + // the validation flag non-enumerable (where possible, which should + // include every environment we run tests in), so the test framework + // ignores it. + if (canDefineProperty) { + Object.defineProperty(element._store, 'validated', { + configurable: false, + enumerable: false, + writable: true, + value: false + }); + // self and source are DEV only properties. + Object.defineProperty(element, '_self', { + configurable: false, + enumerable: false, + writable: false, + value: self + }); + // Two elements created in two different places should be considered + // equal for testing purposes and therefore we hide it from enumeration. + Object.defineProperty(element, '_source', { + configurable: false, + enumerable: false, + writable: false, + value: source + }); + } else { + element._store.validated = false; + element._self = self; + element._source = source; + } + if (Object.freeze) { + Object.freeze(element.props); + Object.freeze(element); + } + } + + return element; + }; + + /** + * Create and return a new ReactElement of the given type. + * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement + */ + ReactElement.createElement = function (type, config, children) { + var propName; + + // Reserved names are extracted + var props = {}; + + var key = null; + var ref = null; + var self = null; + var source = null; + + if (config != null) { + if (hasValidRef(config)) { + ref = config.ref; + } + if (hasValidKey(config)) { + key = '' + config.key; + } + + self = config.__self === undefined ? null : config.__self; + source = config.__source === undefined ? null : config.__source; + // Remaining properties are added to a new props object + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + props[propName] = config[propName]; + } + } + } + + // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + var childrenLength = arguments.length - 2; + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + if (false) { + if (Object.freeze) { + Object.freeze(childArray); + } + } + props.children = childArray; + } + + // Resolve default props + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; + for (propName in defaultProps) { + if (props[propName] === undefined) { + props[propName] = defaultProps[propName]; + } + } + } + if (false) { + if (key || ref) { + if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) { + var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; + if (key) { + defineKeyPropWarningGetter(props, displayName); + } + if (ref) { + defineRefPropWarningGetter(props, displayName); + } + } + } + } + return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); + }; + + /** + * Return a function that produces ReactElements of a given type. + * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory + */ + ReactElement.createFactory = function (type) { + var factory = ReactElement.createElement.bind(null, type); + // Expose the type on the factory and the prototype so that it can be + // easily accessed on elements. E.g. `.type === Foo`. + // This should not be named `constructor` since this may not be the function + // that created the element, and it may not even be a constructor. + // Legacy hook TODO: Warn if this is accessed + factory.type = type; + return factory; + }; + + ReactElement.cloneAndReplaceKey = function (oldElement, newKey) { + var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); + + return newElement; + }; + + /** + * Clone and return a new ReactElement using element as the starting point. + * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement + */ + ReactElement.cloneElement = function (element, config, children) { + var propName; + + // Original props are copied + var props = _assign({}, element.props); + + // Reserved names are extracted + var key = element.key; + var ref = element.ref; + // Self is preserved since the owner is preserved. + var self = element._self; + // Source is preserved since cloneElement is unlikely to be targeted by a + // transpiler, and the original source is probably a better indicator of the + // true owner. + var source = element._source; + + // Owner will be preserved, unless ref is overridden + var owner = element._owner; + + if (config != null) { + if (hasValidRef(config)) { + // Silently steal the ref from the parent. + ref = config.ref; + owner = ReactCurrentOwner.current; + } + if (hasValidKey(config)) { + key = '' + config.key; + } + + // Remaining properties override existing props + var defaultProps; + if (element.type && element.type.defaultProps) { + defaultProps = element.type.defaultProps; + } + for (propName in config) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { + if (config[propName] === undefined && defaultProps !== undefined) { + // Resolve default props + props[propName] = defaultProps[propName]; + } else { + props[propName] = config[propName]; + } + } + } + } + + // Children can be more than one argument, and those are transferred onto + // the newly allocated props object. + var childrenLength = arguments.length - 2; + if (childrenLength === 1) { + props.children = children; + } else if (childrenLength > 1) { + var childArray = Array(childrenLength); + for (var i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 2]; + } + props.children = childArray; + } + + return ReactElement(element.type, key, ref, self, source, owner, props); + }; + + /** + * Verifies the object is a ReactElement. + * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement + * @param {?object} object + * @return {boolean} True if `object` is a valid component. + * @final + */ + ReactElement.isValidElement = function (object) { + return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; + }; + + module.exports = ReactElement; + +/***/ }), +/* 16 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + /** + * Keeps track of the current owner. + * + * The current owner is the component who should own any components that are + * currently being constructed. + */ + var ReactCurrentOwner = { + /** + * @internal + * @type {ReactComponent} + */ + current: null + }; + + module.exports = ReactCurrentOwner; + +/***/ }), +/* 17 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + // The Symbol used to tag the ReactElement type. If there is no native Symbol + // nor polyfill, then a plain number is used for performance. + + var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7; + + module.exports = REACT_ELEMENT_TYPE; + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var _prodInvariant = __webpack_require__(5); + + var ReactCurrentOwner = __webpack_require__(16); + var REACT_ELEMENT_TYPE = __webpack_require__(17); + + var getIteratorFn = __webpack_require__(19); + var invariant = __webpack_require__(11); + var KeyEscapeUtils = __webpack_require__(20); + var warning = __webpack_require__(7); + + var SEPARATOR = '.'; + var SUBSEPARATOR = ':'; + + /** + * This is inlined from ReactElement since this file is shared between + * isomorphic and renderers. We could extract this to a + * + */ + + /** + * TODO: Test that a single child and an array with one item have the same key + * pattern. + */ + + var didWarnAboutMaps = false; + + /** + * Generate a key string that identifies a component within a set. + * + * @param {*} component A component that could contain a manual key. + * @param {number} index Index that is used if a manual key is not provided. + * @return {string} + */ + function getComponentKey(component, index) { + // Do some typechecking here since we call this blindly. We want to ensure + // that we don't block potential future ES APIs. + if (component && typeof component === 'object' && component.key != null) { + // Explicit key + return KeyEscapeUtils.escape(component.key); + } + // Implicit key determined by the index in the set + return index.toString(36); + } + + /** + * @param {?*} children Children tree container. + * @param {!string} nameSoFar Name of the key path so far. + * @param {!function} callback Callback to invoke with each child found. + * @param {?*} traverseContext Used to pass information throughout the traversal + * process. + * @return {!number} The number of children in this subtree. + */ + function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { + var type = typeof children; + + if (type === 'undefined' || type === 'boolean') { + // All of the above are perceived as null. + children = null; + } + + if (children === null || type === 'string' || type === 'number' || + // The following is inlined from ReactElement. This means we can optimize + // some checks. React Fiber also inlines this logic for similar purposes. + type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) { + callback(traverseContext, children, + // If it's the only child, treat the name as if it was wrapped in an array + // so that it's consistent if the number of children grows. + nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar); + return 1; + } + + var child; + var nextName; + var subtreeCount = 0; // Count of children found in the current subtree. + var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; + + if (Array.isArray(children)) { + for (var i = 0; i < children.length; i++) { + child = children[i]; + nextName = nextNamePrefix + getComponentKey(child, i); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } else { + var iteratorFn = getIteratorFn(children); + if (iteratorFn) { + var iterator = iteratorFn.call(children); + var step; + if (iteratorFn !== children.entries) { + var ii = 0; + while (!(step = iterator.next()).done) { + child = step.value; + nextName = nextNamePrefix + getComponentKey(child, ii++); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } else { + if (false) { + var mapsAsChildrenAddendum = ''; + if (ReactCurrentOwner.current) { + var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName(); + if (mapsAsChildrenOwnerName) { + mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.'; + } + } + process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0; + didWarnAboutMaps = true; + } + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + child = entry[1]; + nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0); + subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); + } + } + } + } else if (type === 'object') { + var addendum = ''; + if (false) { + addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.'; + if (children._isReactElement) { + addendum = " It looks like you're using an element created by a different " + 'version of React. Make sure to use only one copy of React.'; + } + if (ReactCurrentOwner.current) { + var name = ReactCurrentOwner.current.getName(); + if (name) { + addendum += ' Check the render method of `' + name + '`.'; + } + } + } + var childrenString = String(children); + true ? false ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0; + } + } + + return subtreeCount; + } + + /** + * Traverses children that are typically specified as `props.children`, but + * might also be specified through attributes: + * + * - `traverseAllChildren(this.props.children, ...)` + * - `traverseAllChildren(this.props.leftPanelChildren, ...)` + * + * The `traverseContext` is an optional argument that is passed through the + * entire traversal. It can be used to store accumulations or anything else that + * the callback might find relevant. + * + * @param {?*} children Children tree object. + * @param {!function} callback To invoke upon traversing each child. + * @param {?*} traverseContext Context for traversal. + * @return {!number} The number of children in this subtree. + */ + function traverseAllChildren(children, callback, traverseContext) { + if (children == null) { + return 0; + } + + return traverseAllChildrenImpl(children, '', callback, traverseContext); + } + + module.exports = traverseAllChildren; + +/***/ }), +/* 19 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + /* global Symbol */ + + var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + + /** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ + function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } + } + + module.exports = getIteratorFn; + +/***/ }), +/* 20 */ +/***/ (function(module, exports) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * + */ + + 'use strict'; + + /** + * Escape and wrap key so it is safe to use as a reactid + * + * @param {string} key to be escaped. + * @return {string} the escaped key. + */ + + function escape(key) { + var escapeRegex = /[=:]/g; + var escaperLookup = { + '=': '=0', + ':': '=2' + }; + var escapedString = ('' + key).replace(escapeRegex, function (match) { + return escaperLookup[match]; + }); + + return '$' + escapedString; + } + + /** + * Unescape and unwrap key for human-readable display + * + * @param {string} key to unescape. + * @return {string} the unescaped key. + */ + function unescape(key) { + var unescapeRegex = /(=0|=2)/g; + var unescaperLookup = { + '=0': '=', + '=2': ':' + }; + var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1); + + return ('' + keySubstring).replace(unescapeRegex, function (match) { + return unescaperLookup[match]; + }); + } + + var KeyEscapeUtils = { + escape: escape, + unescape: unescape + }; + + module.exports = KeyEscapeUtils; + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var ReactElement = __webpack_require__(15); + + /** + * Create a factory that creates HTML tag elements. + * + * @private + */ + var createDOMFactory = ReactElement.createFactory; + if (false) { + var ReactElementValidator = require('./ReactElementValidator'); + createDOMFactory = ReactElementValidator.createFactory; + } + + /** + * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes. + * + * @public + */ + var ReactDOMFactories = { + a: createDOMFactory('a'), + abbr: createDOMFactory('abbr'), + address: createDOMFactory('address'), + area: createDOMFactory('area'), + article: createDOMFactory('article'), + aside: createDOMFactory('aside'), + audio: createDOMFactory('audio'), + b: createDOMFactory('b'), + base: createDOMFactory('base'), + bdi: createDOMFactory('bdi'), + bdo: createDOMFactory('bdo'), + big: createDOMFactory('big'), + blockquote: createDOMFactory('blockquote'), + body: createDOMFactory('body'), + br: createDOMFactory('br'), + button: createDOMFactory('button'), + canvas: createDOMFactory('canvas'), + caption: createDOMFactory('caption'), + cite: createDOMFactory('cite'), + code: createDOMFactory('code'), + col: createDOMFactory('col'), + colgroup: createDOMFactory('colgroup'), + data: createDOMFactory('data'), + datalist: createDOMFactory('datalist'), + dd: createDOMFactory('dd'), + del: createDOMFactory('del'), + details: createDOMFactory('details'), + dfn: createDOMFactory('dfn'), + dialog: createDOMFactory('dialog'), + div: createDOMFactory('div'), + dl: createDOMFactory('dl'), + dt: createDOMFactory('dt'), + em: createDOMFactory('em'), + embed: createDOMFactory('embed'), + fieldset: createDOMFactory('fieldset'), + figcaption: createDOMFactory('figcaption'), + figure: createDOMFactory('figure'), + footer: createDOMFactory('footer'), + form: createDOMFactory('form'), + h1: createDOMFactory('h1'), + h2: createDOMFactory('h2'), + h3: createDOMFactory('h3'), + h4: createDOMFactory('h4'), + h5: createDOMFactory('h5'), + h6: createDOMFactory('h6'), + head: createDOMFactory('head'), + header: createDOMFactory('header'), + hgroup: createDOMFactory('hgroup'), + hr: createDOMFactory('hr'), + html: createDOMFactory('html'), + i: createDOMFactory('i'), + iframe: createDOMFactory('iframe'), + img: createDOMFactory('img'), + input: createDOMFactory('input'), + ins: createDOMFactory('ins'), + kbd: createDOMFactory('kbd'), + keygen: createDOMFactory('keygen'), + label: createDOMFactory('label'), + legend: createDOMFactory('legend'), + li: createDOMFactory('li'), + link: createDOMFactory('link'), + main: createDOMFactory('main'), + map: createDOMFactory('map'), + mark: createDOMFactory('mark'), + menu: createDOMFactory('menu'), + menuitem: createDOMFactory('menuitem'), + meta: createDOMFactory('meta'), + meter: createDOMFactory('meter'), + nav: createDOMFactory('nav'), + noscript: createDOMFactory('noscript'), + object: createDOMFactory('object'), + ol: createDOMFactory('ol'), + optgroup: createDOMFactory('optgroup'), + option: createDOMFactory('option'), + output: createDOMFactory('output'), + p: createDOMFactory('p'), + param: createDOMFactory('param'), + picture: createDOMFactory('picture'), + pre: createDOMFactory('pre'), + progress: createDOMFactory('progress'), + q: createDOMFactory('q'), + rp: createDOMFactory('rp'), + rt: createDOMFactory('rt'), + ruby: createDOMFactory('ruby'), + s: createDOMFactory('s'), + samp: createDOMFactory('samp'), + script: createDOMFactory('script'), + section: createDOMFactory('section'), + select: createDOMFactory('select'), + small: createDOMFactory('small'), + source: createDOMFactory('source'), + span: createDOMFactory('span'), + strong: createDOMFactory('strong'), + style: createDOMFactory('style'), + sub: createDOMFactory('sub'), + summary: createDOMFactory('summary'), + sup: createDOMFactory('sup'), + table: createDOMFactory('table'), + tbody: createDOMFactory('tbody'), + td: createDOMFactory('td'), + textarea: createDOMFactory('textarea'), + tfoot: createDOMFactory('tfoot'), + th: createDOMFactory('th'), + thead: createDOMFactory('thead'), + time: createDOMFactory('time'), + title: createDOMFactory('title'), + tr: createDOMFactory('tr'), + track: createDOMFactory('track'), + u: createDOMFactory('u'), + ul: createDOMFactory('ul'), + 'var': createDOMFactory('var'), + video: createDOMFactory('video'), + wbr: createDOMFactory('wbr'), + + // SVG + circle: createDOMFactory('circle'), + clipPath: createDOMFactory('clipPath'), + defs: createDOMFactory('defs'), + ellipse: createDOMFactory('ellipse'), + g: createDOMFactory('g'), + image: createDOMFactory('image'), + line: createDOMFactory('line'), + linearGradient: createDOMFactory('linearGradient'), + mask: createDOMFactory('mask'), + path: createDOMFactory('path'), + pattern: createDOMFactory('pattern'), + polygon: createDOMFactory('polygon'), + polyline: createDOMFactory('polyline'), + radialGradient: createDOMFactory('radialGradient'), + rect: createDOMFactory('rect'), + stop: createDOMFactory('stop'), + svg: createDOMFactory('svg'), + text: createDOMFactory('text'), + tspan: createDOMFactory('tspan') + }; + + module.exports = ReactDOMFactories; + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + 'use strict'; + + var _require = __webpack_require__(15), + isValidElement = _require.isValidElement; + + var factory = __webpack_require__(23); + + module.exports = factory(isValidElement); + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + 'use strict'; + + // React 15.5 references this module, and assumes PropTypes are still callable in production. + // Therefore we re-export development-only version with all the PropTypes checks here. + // However if one is migrating to the `prop-types` npm library, they will go through the + // `index.js` entry point, and it will branch depending on the environment. + var factory = __webpack_require__(24); + module.exports = function(isValidElement) { + // It is still allowed in 15.5. + var throwOnDirectAccess = false; + return factory(isValidElement, throwOnDirectAccess); + }; + + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + 'use strict'; + + var ReactIs = __webpack_require__(25); + var assign = __webpack_require__(3); + + var ReactPropTypesSecret = __webpack_require__(27); + var has = __webpack_require__(28); + var checkPropTypes = __webpack_require__(29); + + var printWarning = function() {}; + + if (false) { + printWarning = function(text) { + var message = 'Warning: ' + text; + if (typeof console !== 'undefined') { + console.error(message); + } + try { + // --- Welcome to debugging React --- + // This error was thrown as a convenience so that you can use this stack + // to find the callsite that caused this warning to fire. + throw new Error(message); + } catch (x) {} + }; + } + + function emptyFunctionThatReturnsNull() { + return null; + } + + module.exports = function(isValidElement, throwOnDirectAccess) { + /* global Symbol */ + var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. + + /** + * Returns the iterator method function contained on the iterable object. + * + * Be sure to invoke the function with the iterable as context: + * + * var iteratorFn = getIteratorFn(myIterable); + * if (iteratorFn) { + * var iterator = iteratorFn.call(myIterable); + * ... + * } + * + * @param {?object} maybeIterable + * @return {?function} + */ + function getIteratorFn(maybeIterable) { + var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } + } + + /** + * Collection of methods that allow declaration and validation of props that are + * supplied to React components. Example usage: + * + * var Props = require('ReactPropTypes'); + * var MyArticle = React.createClass({ + * propTypes: { + * // An optional string prop named "description". + * description: Props.string, + * + * // A required enum prop named "category". + * category: Props.oneOf(['News','Photos']).isRequired, + * + * // A prop named "dialog" that requires an instance of Dialog. + * dialog: Props.instanceOf(Dialog).isRequired + * }, + * render: function() { ... } + * }); + * + * A more formal specification of how these methods are used: + * + * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) + * decl := ReactPropTypes.{type}(.isRequired)? + * + * Each and every declaration produces a function with the same signature. This + * allows the creation of custom validation functions. For example: + * + * var MyLink = React.createClass({ + * propTypes: { + * // An optional string or URI prop named "href". + * href: function(props, propName, componentName) { + * var propValue = props[propName]; + * if (propValue != null && typeof propValue !== 'string' && + * !(propValue instanceof URI)) { + * return new Error( + * 'Expected a string or an URI for ' + propName + ' in ' + + * componentName + * ); + * } + * } + * }, + * render: function() {...} + * }); + * + * @internal + */ + + var ANONYMOUS = '<>'; + + // Important! + // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. + var ReactPropTypes = { + array: createPrimitiveTypeChecker('array'), + bigint: createPrimitiveTypeChecker('bigint'), + bool: createPrimitiveTypeChecker('boolean'), + func: createPrimitiveTypeChecker('function'), + number: createPrimitiveTypeChecker('number'), + object: createPrimitiveTypeChecker('object'), + string: createPrimitiveTypeChecker('string'), + symbol: createPrimitiveTypeChecker('symbol'), + + any: createAnyTypeChecker(), + arrayOf: createArrayOfTypeChecker, + element: createElementTypeChecker(), + elementType: createElementTypeTypeChecker(), + instanceOf: createInstanceTypeChecker, + node: createNodeChecker(), + objectOf: createObjectOfTypeChecker, + oneOf: createEnumTypeChecker, + oneOfType: createUnionTypeChecker, + shape: createShapeTypeChecker, + exact: createStrictShapeTypeChecker, + }; + + /** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ + /*eslint-disable no-self-compare*/ + function is(x, y) { + // SameValue algorithm + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return x !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } + } + /*eslint-enable no-self-compare*/ + + /** + * We use an Error-like object for backward compatibility as people may call + * PropTypes directly and inspect their output. However, we don't use real + * Errors anymore. We don't inspect their stack anyway, and creating them + * is prohibitively expensive if they are created too often, such as what + * happens in oneOfType() for any type before the one that matched. + */ + function PropTypeError(message, data) { + this.message = message; + this.data = data && typeof data === 'object' ? data: {}; + this.stack = ''; + } + // Make `instanceof Error` still work for returned errors. + PropTypeError.prototype = Error.prototype; + + function createChainableTypeChecker(validate) { + if (false) { + var manualPropTypeCallCache = {}; + var manualPropTypeWarningCount = 0; + } + function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { + componentName = componentName || ANONYMOUS; + propFullName = propFullName || propName; + + if (secret !== ReactPropTypesSecret) { + if (throwOnDirectAccess) { + // New behavior only for users of `prop-types` package + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use `PropTypes.checkPropTypes()` to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + } else if (false) { + // Old behavior for people using React.PropTypes + var cacheKey = componentName + ':' + propName; + if ( + !manualPropTypeCallCache[cacheKey] && + // Avoid spamming the console because they are often not actionable except for lib authors + manualPropTypeWarningCount < 3 + ) { + printWarning( + 'You are manually calling a React.PropTypes validation ' + + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + + 'and will throw in the standalone `prop-types` package. ' + + 'You may be seeing this warning due to a third-party PropTypes ' + + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' + ); + manualPropTypeCallCache[cacheKey] = true; + manualPropTypeWarningCount++; + } + } + } + if (props[propName] == null) { + if (isRequired) { + if (props[propName] === null) { + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); + } + return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); + } + return null; + } else { + return validate(props, propName, componentName, location, propFullName); + } + } + + var chainedCheckType = checkType.bind(null, false); + chainedCheckType.isRequired = checkType.bind(null, true); + + return chainedCheckType; + } + + function createPrimitiveTypeChecker(expectedType) { + function validate(props, propName, componentName, location, propFullName, secret) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== expectedType) { + // `propValue` being instance of, say, date/regexp, pass the 'object' + // check, but we can offer a more precise error message here rather than + // 'of type `object`'. + var preciseType = getPreciseType(propValue); + + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), + {expectedType: expectedType} + ); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createAnyTypeChecker() { + return createChainableTypeChecker(emptyFunctionThatReturnsNull); + } + + function createArrayOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); + } + var propValue = props[propName]; + if (!Array.isArray(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); + } + for (var i = 0; i < propValue.length; i++) { + var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!isValidElement(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createElementTypeTypeChecker() { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + if (!ReactIs.isValidElementType(propValue)) { + var propType = getPropType(propValue); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createInstanceTypeChecker(expectedClass) { + function validate(props, propName, componentName, location, propFullName) { + if (!(props[propName] instanceof expectedClass)) { + var expectedClassName = expectedClass.name || ANONYMOUS; + var actualClassName = getClassName(props[propName]); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createEnumTypeChecker(expectedValues) { + if (!Array.isArray(expectedValues)) { + if (false) { + if (arguments.length > 1) { + printWarning( + 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' + ); + } else { + printWarning('Invalid argument supplied to oneOf, expected an array.'); + } + } + return emptyFunctionThatReturnsNull; + } + + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + for (var i = 0; i < expectedValues.length; i++) { + if (is(propValue, expectedValues[i])) { + return null; + } + } + + var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { + var type = getPreciseType(value); + if (type === 'symbol') { + return String(value); + } + return value; + }); + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); + } + return createChainableTypeChecker(validate); + } + + function createObjectOfTypeChecker(typeChecker) { + function validate(props, propName, componentName, location, propFullName) { + if (typeof typeChecker !== 'function') { + return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); + } + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); + } + for (var key in propValue) { + if (has(propValue, key)) { + var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error instanceof Error) { + return error; + } + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createUnionTypeChecker(arrayOfTypeCheckers) { + if (!Array.isArray(arrayOfTypeCheckers)) { + false ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; + return emptyFunctionThatReturnsNull; + } + + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + if (typeof checker !== 'function') { + printWarning( + 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' + ); + return emptyFunctionThatReturnsNull; + } + } + + function validate(props, propName, componentName, location, propFullName) { + var expectedTypes = []; + for (var i = 0; i < arrayOfTypeCheckers.length; i++) { + var checker = arrayOfTypeCheckers[i]; + var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret); + if (checkerResult == null) { + return null; + } + if (checkerResult.data && has(checkerResult.data, 'expectedType')) { + expectedTypes.push(checkerResult.data.expectedType); + } + } + var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': ''; + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.')); + } + return createChainableTypeChecker(validate); + } + + function createNodeChecker() { + function validate(props, propName, componentName, location, propFullName) { + if (!isNode(props[propName])) { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); + } + return null; + } + return createChainableTypeChecker(validate); + } + + function invalidValidatorError(componentName, location, propFullName, key, type) { + return new PropTypeError( + (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.' + ); + } + + function createShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + for (var key in shapeTypes) { + var checker = shapeTypes[key]; + if (typeof checker !== 'function') { + return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + return createChainableTypeChecker(validate); + } + + function createStrictShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + // We need to check all keys in case some are required but missing from props. + var allKeys = assign({}, props[propName], shapeTypes); + for (var key in allKeys) { + var checker = shapeTypes[key]; + if (has(shapeTypes, key) && typeof checker !== 'function') { + return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); + } + if (!checker) { + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') + ); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + + return createChainableTypeChecker(validate); + } + + function isNode(propValue) { + switch (typeof propValue) { + case 'number': + case 'string': + case 'undefined': + return true; + case 'boolean': + return !propValue; + case 'object': + if (Array.isArray(propValue)) { + return propValue.every(isNode); + } + if (propValue === null || isValidElement(propValue)) { + return true; + } + + var iteratorFn = getIteratorFn(propValue); + if (iteratorFn) { + var iterator = iteratorFn.call(propValue); + var step; + if (iteratorFn !== propValue.entries) { + while (!(step = iterator.next()).done) { + if (!isNode(step.value)) { + return false; + } + } + } else { + // Iterator will provide entry [k,v] tuples rather than values. + while (!(step = iterator.next()).done) { + var entry = step.value; + if (entry) { + if (!isNode(entry[1])) { + return false; + } + } + } + } + } else { + return false; + } + + return true; + default: + return false; + } + } + + function isSymbol(propType, propValue) { + // Native Symbol. + if (propType === 'symbol') { + return true; + } + + // falsy value can't be a Symbol + if (!propValue) { + return false; + } + + // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' + if (propValue['@@toStringTag'] === 'Symbol') { + return true; + } + + // Fallback for non-spec compliant Symbols which are polyfilled. + if (typeof Symbol === 'function' && propValue instanceof Symbol) { + return true; + } + + return false; + } + + // Equivalent of `typeof` but with special handling for array and regexp. + function getPropType(propValue) { + var propType = typeof propValue; + if (Array.isArray(propValue)) { + return 'array'; + } + if (propValue instanceof RegExp) { + // Old webkits (at least until Android 4.0) return 'function' rather than + // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ + // passes PropTypes.object. + return 'object'; + } + if (isSymbol(propType, propValue)) { + return 'symbol'; + } + return propType; + } + + // This handles more types than `getPropType`. Only used for error messages. + // See `createPrimitiveTypeChecker`. + function getPreciseType(propValue) { + if (typeof propValue === 'undefined' || propValue === null) { + return '' + propValue; + } + var propType = getPropType(propValue); + if (propType === 'object') { + if (propValue instanceof Date) { + return 'date'; + } else if (propValue instanceof RegExp) { + return 'regexp'; + } + } + return propType; + } + + // Returns a string that is postfixed to a warning about an invalid type. + // For example, "undefined" or "of type array" + function getPostfixForTypeWarning(value) { + var type = getPreciseType(value); + switch (type) { + case 'array': + case 'object': + return 'an ' + type; + case 'boolean': + case 'date': + case 'regexp': + return 'a ' + type; + default: + return type; + } + } + + // Returns class name of the object, if any. + function getClassName(propValue) { + if (!propValue.constructor || !propValue.constructor.name) { + return ANONYMOUS; + } + return propValue.constructor.name; + } + + ReactPropTypes.checkPropTypes = checkPropTypes; + ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; + }; + + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + if (true) { + module.exports = __webpack_require__(26); + } else { + module.exports = require('./cjs/react-is.development.js'); + } + + +/***/ }), +/* 26 */ +/***/ (function(module, exports) { + + /** @license React v16.13.1 * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. @@ -11,39 +2726,33176 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ -"use strict";function n(t){if("object"==typeof t&&null!==t){var e=t.$$typeof;switch(e){case i:switch(t=t.type){case p:case d:case u:case c:case s:case v:return t;default:switch(t=t&&t.$$typeof){case f:case h:case l:return t;default:return e}}case y:case m:case a:return e}}}function r(t){return n(t)===d}Object.defineProperty(e,"__esModule",{value:!0});var o="function"==typeof Symbol&&Symbol.for,i=o?Symbol.for("react.element"):60103,a=o?Symbol.for("react.portal"):60106,u=o?Symbol.for("react.fragment"):60107,s=o?Symbol.for("react.strict_mode"):60108,c=o?Symbol.for("react.profiler"):60114,l=o?Symbol.for("react.provider"):60109,f=o?Symbol.for("react.context"):60110,p=o?Symbol.for("react.async_mode"):60111,d=o?Symbol.for("react.concurrent_mode"):60111,h=o?Symbol.for("react.forward_ref"):60112,v=o?Symbol.for("react.suspense"):60113,m=o?Symbol.for("react.memo"):60115,y=o?Symbol.for("react.lazy"):60116;e.typeOf=n,e.AsyncMode=p,e.ConcurrentMode=d,e.ContextConsumer=f,e.ContextProvider=l,e.Element=i,e.ForwardRef=h,e.Fragment=u,e.Lazy=y,e.Memo=m,e.Portal=a,e.Profiler=c,e.StrictMode=s,e.Suspense=v,e.isValidElementType=function(t){return"string"==typeof t||"function"==typeof t||t===u||t===d||t===c||t===s||t===v||"object"==typeof t&&null!==t&&(t.$$typeof===y||t.$$typeof===m||t.$$typeof===l||t.$$typeof===f||t.$$typeof===h)},e.isAsyncMode=function(t){return r(t)||n(t)===p},e.isConcurrentMode=r,e.isContextConsumer=function(t){return n(t)===f},e.isContextProvider=function(t){return n(t)===l},e.isElement=function(t){return"object"==typeof t&&null!==t&&t.$$typeof===i},e.isForwardRef=function(t){return n(t)===h},e.isFragment=function(t){return n(t)===u},e.isLazy=function(t){return n(t)===y},e.isMemo=function(t){return n(t)===m},e.isPortal=function(t){return n(t)===a},e.isProfiler=function(t){return n(t)===c},e.isStrictMode=function(t){return n(t)===s},e.isSuspense=function(t){return n(t)===v}},function(t,e){"use strict";var n="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";t.exports=n},function(t,e,n){"use strict";function r(t,e,n,r,o){}r.resetWarningCache=function(){},t.exports=r},function(t,e){"use strict";t.exports="15.6.2"},function(t,e,n){"use strict";var r=n(4),o=r.Component,i=n(15),a=i.isValidElement,u=n(6),s=n(31);t.exports=s(o,a,u)},function(t,e,n){"use strict";function r(t){return t}function o(t,e,n){function o(t,e){var n=g.hasOwnProperty(e)?g[e]:null;C.hasOwnProperty(e)&&s("OVERRIDE_BASE"===n,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",e),t&&s("DEFINE_MANY"===n||"DEFINE_MANY_MERGED"===n,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",e)}function i(t,n){if(n){s("function"!=typeof n,"ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object."),s(!e(n),"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object.");var r=t.prototype,i=r.__reactAutoBindPairs;n.hasOwnProperty(c)&&b.mixins(t,n.mixins);for(var a in n)if(n.hasOwnProperty(a)&&a!==c){var u=n[a],l=r.hasOwnProperty(a);if(o(l,a),b.hasOwnProperty(a))b[a](t,u);else{var f=g.hasOwnProperty(a),h="function"==typeof u,v=h&&!f&&!l&&n.autobind!==!1;if(v)i.push(a,u),r[a]=u;else if(l){var m=g[a];s(f&&("DEFINE_MANY_MERGED"===m||"DEFINE_MANY"===m),"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",m,a),"DEFINE_MANY_MERGED"===m?r[a]=p(r[a],u):"DEFINE_MANY"===m&&(r[a]=d(r[a],u))}else r[a]=u}}}else;}function l(t,e){if(e)for(var n in e){var r=e[n];if(e.hasOwnProperty(n)){var o=n in b;s(!o,'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',n);var i=n in t;if(i){var a=_.hasOwnProperty(n)?_[n]:null;return s("DEFINE_MANY_MERGED"===a,"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",n),void(t[n]=p(t[n],r))}t[n]=r}}}function f(t,e){s(t&&e&&"object"==typeof t&&"object"==typeof e,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.");for(var n in e)e.hasOwnProperty(n)&&(s(void 0===t[n],"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",n),t[n]=e[n]);return t}function p(t,e){return function(){var n=t.apply(this,arguments),r=e.apply(this,arguments);if(null==n)return r;if(null==r)return n;var o={};return f(o,n),f(o,r),o}}function d(t,e){return function(){t.apply(this,arguments),e.apply(this,arguments)}}function h(t,e){var n=e.bind(t);return n}function v(t){for(var e=t.__reactAutoBindPairs,n=0;n8&&w<=11),S=32,x=String.fromCharCode(S),P={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["topCompositionEnd","topKeyPress","topTextInput","topPaste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:["topBlur","topCompositionEnd","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:["topBlur","topCompositionStart","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:["topBlur","topCompositionUpdate","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]}},T=!1,O=null,k={eventTypes:P,extractEvents:function(t,e,n,r){return[c(t,e,n,r),p(t,e,n,r)]}};t.exports=k},function(t,e,n){"use strict";function r(t,e,n){var r=e.dispatchConfig.phasedRegistrationNames[n];return y(t,r)}function o(t,e,n){var o=r(t,n,e);o&&(n._dispatchListeners=v(n._dispatchListeners,o),n._dispatchInstances=v(n._dispatchInstances,t))}function i(t){t&&t.dispatchConfig.phasedRegistrationNames&&h.traverseTwoPhase(t._targetInst,o,t)}function a(t){if(t&&t.dispatchConfig.phasedRegistrationNames){var e=t._targetInst,n=e?h.getParentInstance(e):null;h.traverseTwoPhase(n,o,t)}}function u(t,e,n){if(n&&n.dispatchConfig.registrationName){var r=n.dispatchConfig.registrationName,o=y(t,r);o&&(n._dispatchListeners=v(n._dispatchListeners,o),n._dispatchInstances=v(n._dispatchInstances,t))}}function s(t){t&&t.dispatchConfig.registrationName&&u(t._targetInst,null,t)}function c(t){m(t,i)}function l(t){m(t,a)}function f(t,e,n,r){h.traverseEnterLeave(n,r,u,t,e)}function p(t){m(t,s)}var d=n(43),h=n(45),v=n(47),m=n(48),y=(n(7),d.getListener),g={accumulateTwoPhaseDispatches:c,accumulateTwoPhaseDispatchesSkipTarget:l,accumulateDirectDispatches:p,accumulateEnterLeaveDispatches:f};t.exports=g},function(t,e,n){"use strict";function r(t){return"button"===t||"input"===t||"select"===t||"textarea"===t}function o(t,e,n){switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":return!(!n.disabled||!r(e));default:return!1}}var i=n(36),a=n(44),u=n(45),s=n(46),c=n(47),l=n(48),f=(n(11),{}),p=null,d=function(t,e){t&&(u.executeDispatchesInOrder(t,e),t.isPersistent()||t.constructor.release(t))},h=function(t){return d(t,!0)},v=function(t){return d(t,!1)},m=function(t){return"."+t._rootNodeID},y={injection:{injectEventPluginOrder:a.injectEventPluginOrder,injectEventPluginsByName:a.injectEventPluginsByName},putListener:function(t,e,n){"function"!=typeof n?i("94",e,typeof n):void 0;var r=m(t),o=f[e]||(f[e]={});o[r]=n;var u=a.registrationNameModules[e];u&&u.didPutListener&&u.didPutListener(t,e,n)},getListener:function(t,e){var n=f[e];if(o(e,t._currentElement.type,t._currentElement.props))return null;var r=m(t);return n&&n[r]},deleteListener:function(t,e){var n=a.registrationNameModules[e];n&&n.willDeleteListener&&n.willDeleteListener(t,e);var r=f[e];if(r){var o=m(t);delete r[o]}},deleteAllListeners:function(t){var e=m(t);for(var n in f)if(f.hasOwnProperty(n)&&f[n][e]){var r=a.registrationNameModules[n];r&&r.willDeleteListener&&r.willDeleteListener(t,n),delete f[n][e]}},extractEvents:function(t,e,n,r){for(var o,i=a.plugins,u=0;u-1?void 0:a("96",t),!c.plugins[n]){e.extractEvents?void 0:a("97",t),c.plugins[n]=e;var r=e.eventTypes;for(var i in r)o(r[i],e,i)?void 0:a("98",i,t)}}}function o(t,e,n){c.eventNameDispatchConfigs.hasOwnProperty(n)?a("99",n):void 0,c.eventNameDispatchConfigs[n]=t;var r=t.phasedRegistrationNames;if(r){for(var o in r)if(r.hasOwnProperty(o)){var u=r[o];i(u,e,n)}return!0}return!!t.registrationName&&(i(t.registrationName,e,n),!0)}function i(t,e,n){c.registrationNameModules[t]?a("100",t):void 0,c.registrationNameModules[t]=e,c.registrationNameDependencies[t]=e.eventTypes[n].dependencies}var a=n(36),u=(n(11),null),s={},c={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:null,injectEventPluginOrder:function(t){u?a("101"):void 0,u=Array.prototype.slice.call(t),r()},injectEventPluginsByName:function(t){var e=!1;for(var n in t)if(t.hasOwnProperty(n)){var o=t[n];s.hasOwnProperty(n)&&s[n]===o||(s[n]?a("102",n):void 0,s[n]=o,e=!0)}e&&r()},getPluginModuleForEvent:function(t){var e=t.dispatchConfig;if(e.registrationName)return c.registrationNameModules[e.registrationName]||null;if(void 0!==e.phasedRegistrationNames){var n=e.phasedRegistrationNames;for(var r in n)if(n.hasOwnProperty(r)){var o=c.registrationNameModules[n[r]];if(o)return o}}return null},_resetEventPlugins:function(){u=null;for(var t in s)s.hasOwnProperty(t)&&delete s[t];c.plugins.length=0;var e=c.eventNameDispatchConfigs;for(var n in e)e.hasOwnProperty(n)&&delete e[n];var r=c.registrationNameModules;for(var o in r)r.hasOwnProperty(o)&&delete r[o]}};t.exports=c},function(t,e,n){"use strict";function r(t){return"topMouseUp"===t||"topTouchEnd"===t||"topTouchCancel"===t}function o(t){return"topMouseMove"===t||"topTouchMove"===t}function i(t){return"topMouseDown"===t||"topTouchStart"===t}function a(t,e,n,r){var o=t.type||"unknown-event";t.currentTarget=y.getNodeFromInstance(r),e?v.invokeGuardedCallbackWithCatch(o,n,t):v.invokeGuardedCallback(o,n,t),t.currentTarget=null}function u(t,e){var n=t._dispatchListeners,r=t._dispatchInstances;if(Array.isArray(n))for(var o=0;o1?1-e:void 0;return this._fallbackText=o.slice(t,u),this._fallbackText}}),i.addPoolingTo(r),t.exports=r},function(t,e,n){"use strict";var r=n(36),o=(n(11),function(t){var e=this;if(e.instancePool.length){var n=e.instancePool.pop();return e.call(n,t),n}return new e(t)}),i=function(t,e){var n=this;if(n.instancePool.length){var r=n.instancePool.pop();return n.call(r,t,e),r}return new n(t,e)},a=function(t,e,n){var r=this;if(r.instancePool.length){var o=r.instancePool.pop();return r.call(o,t,e,n),o}return new r(t,e,n)},u=function(t,e,n,r){var o=this;if(o.instancePool.length){var i=o.instancePool.pop();return o.call(i,t,e,n,r),i}return new o(t,e,n,r)},s=function(t){var e=this;t instanceof e?void 0:r("25"),t.destructor(),e.instancePool.length8));var D=!1;C.canUseDOM&&(D=k("input")&&(!document.documentMode||document.documentMode>9));var L={eventTypes:I,_allowSimulatedPassThrough:!0,_isInputEventSupported:D,extractEvents:function(t,e,n,i){var a,u,s=e?S.getNodeFromInstance(e):window;if(o(s)?N?a=l:u=f:M(s)?D?a=_:(a=m,u=v):y(s)&&(a=g),a){var c=a(t,e,n);if(c){var p=r(c,n,i);return p}}u&&u(t,s,e),"topBlur"===t&&b(e,s)}};t.exports=L},function(t,e,n){"use strict";function r(){O.ReactReconcileTransaction&&E?void 0:l("123")}function o(){this.reinitializeTransaction(),this.dirtyComponentsLength=null,this.callbackQueue=p.getPooled(),this.reconcileTransaction=O.ReactReconcileTransaction.getPooled(!0)}function i(t,e,n,o,i,a){return r(),E.batchedUpdates(t,e,n,o,i,a)}function a(t,e){return t._mountOrder-e._mountOrder}function u(t){var e=t.dirtyComponentsLength;e!==g.length?l("124",e,g.length):void 0,g.sort(a),_++;for(var n=0;n]/,s=n(81),c=s(function(t,e){if(t.namespaceURI!==i.svg||"innerHTML"in t)t.innerHTML=e;else{r=r||document.createElement("div"),r.innerHTML=""+e+"";for(var n=r.firstChild;n.firstChild;)t.appendChild(n.firstChild)}});if(o.canUseDOM){var l=document.createElement("div");l.innerHTML=" ",""===l.innerHTML&&(c=function(t,e){if(t.parentNode&&t.parentNode.replaceChild(t,t),a.test(e)||"<"===e[0]&&u.test(e)){t.innerHTML=String.fromCharCode(65279)+e;var n=t.firstChild;1===n.data.length?t.removeChild(n):n.deleteData(0,1)}else t.innerHTML=e}),l=null}t.exports=c},function(t,e){"use strict";var n=function(t){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,n,r,o){MSApp.execUnsafeLocalFunction(function(){return t(e,n,r,o)})}:t};t.exports=n},function(t,e,n){"use strict";var r=n(49),o=n(83),i=n(80),a=function(t,e){if(e){var n=t.firstChild;if(n&&n===t.lastChild&&3===n.nodeType)return void(n.nodeValue=e)}t.textContent=e};r.canUseDOM&&("textContent"in document.documentElement||(a=function(t,e){return 3===t.nodeType?void(t.nodeValue=e):void i(t,o(e))})),t.exports=a},function(t,e){"use strict";function n(t){var e=""+t,n=o.exec(e);if(!n)return e;var r,i="",a=0,u=0;for(a=n.index;a]/;t.exports=r},function(t,e,n){"use strict";var r=n(36),o=n(78),i=n(49),a=n(85),u=n(8),s=(n(11),{dangerouslyReplaceNodeWithMarkup:function(t,e){if(i.canUseDOM?void 0:r("56"),e?void 0:r("57"),"HTML"===t.nodeName?r("58"):void 0,"string"==typeof e){var n=a(e,u)[0];t.parentNode.replaceChild(n,t)}else o.replaceChildWithTree(t,e)}});t.exports=s},function(t,e,n){"use strict";function r(t){var e=t.match(l);return e&&e[1].toLowerCase()}function o(t,e){var n=c;c?void 0:s(!1);var o=r(t),i=o&&u(o);if(i){n.innerHTML=i[1]+t+i[2];for(var l=i[0];l--;)n=n.lastChild}else n.innerHTML=t;var f=n.getElementsByTagName("script");f.length&&(e?void 0:s(!1),a(f).forEach(e));for(var p=Array.from(n.childNodes);n.lastChild;)n.removeChild(n.lastChild);return p}var i=n(49),a=n(86),u=n(87),s=n(11),c=i.canUseDOM?document.createElement("div"):null,l=/^\s*<(\w+)/;t.exports=o},function(t,e,n){"use strict";function r(t){var e=t.length;if(Array.isArray(t)||"object"!=typeof t&&"function"!=typeof t?a(!1):void 0,"number"!=typeof e?a(!1):void 0,0===e||e-1 in t?void 0:a(!1),"function"==typeof t.callee?a(!1):void 0,t.hasOwnProperty)try{return Array.prototype.slice.call(t)}catch(t){}for(var n=Array(e),r=0;r":a.innerHTML="<"+t+">",u[t]=!a.firstChild),u[t]?p[t]:null}var o=n(49),i=n(11),a=o.canUseDOM?document.createElement("div"):null,u={},s=[1,'"],c=[1,"","
"],l=[3,"","
"],f=[1,'',""],p={"*":[1,"?