diff --git a/pkg/mac/build.sh b/pkg/mac/build.sh index a138a8a5..cd2908ef 100755 --- a/pkg/mac/build.sh +++ b/pkg/mac/build.sh @@ -178,6 +178,11 @@ _complete_bundle() { # run complete-bundle to copy the dependent libraries and frameworks and fix the rpaths ./complete-bundle.sh "$BUILDROOT/$APP_BUNDLE_NAME" || { echo complete-bundle.sh failed; exit 1; } + pushd $SOURCEDIR/web + yarn install + yarn run webpacker + popd + # copy the web directory to the bundle as it is required by runtime cp -r $SOURCEDIR/web "$BUILDROOT/$APP_BUNDLE_NAME/Contents/Resources/" || exit 1 cd "$BUILDROOT/$APP_BUNDLE_NAME/Contents/Resources/web" diff --git a/pkg/pip/build.sh b/pkg/pip/build.sh index 3ceaec4f..e9d88350 100755 --- a/pkg/pip/build.sh +++ b/pkg/pip/build.sh @@ -57,6 +57,15 @@ do tar cf - $FILE | (cd ../pip-build/pgadmin4; tar xf -) done +yarn install +yarn run webpacker + +for FILE in `ls -d pgAdmin/static/js/generated/*` +do + echo Adding $FILE + tar cf - $FILE | (cd ../pip-build/pgadmin4; tar xf -) +done + cd ../docs for FILE in `git ls-files` do diff --git a/pkg/src/build.sh b/pkg/src/build.sh index a2c6f90e..bf6bc284 100755 --- a/pkg/src/build.sh +++ b/pkg/src/build.sh @@ -69,6 +69,17 @@ do tar cf - $FILE | (cd src-build/$TARBALL_NAME; tar xf -) done +pushd web + yarn install + yarn run webpacker + + for FILE in `ls -d pgAdmin/static/js/generated/*` + do + echo Adding $FILE + tar cf - $FILE | (cd ../src-build/$TARBALL_NAME/web; tar xf -) + done +popd + # Create the tarball echo Creating tarball... cd src-build diff --git a/web/.eslintrc.js b/web/.eslintrc.js new file mode 100644 index 00000000..c60569db --- /dev/null +++ b/web/.eslintrc.js @@ -0,0 +1,45 @@ +module.exports = { + 'env': { + 'browser': true, + 'es6': true, + 'amd': true, + 'jasmine': true, + }, + 'extends': 'eslint:recommended', + 'parserOptions': { + 'ecmaFeatures': { + 'experimentalObjectRestSpread': true, + 'jsx': true + }, + 'sourceType': 'module' + }, + 'plugins': [ + 'react' + ], + 'globals': { + '_': true, + 'module': true, + }, + 'rules': { + 'indent': [ + 'error', + 2 + ], + 'linebreak-style': [ + 'error', + 'unix' + ], + 'quotes': [ + 'error', + 'single' + ], + 'semi': [ + 'error', + 'always' + ], + 'comma-dangle': [ + 'error', + 'always-multiline' + ] + } +}; \ No newline at end of file diff --git a/web/karma.conf.js b/web/karma.conf.js index baa912c7..feeee77f 100644 --- a/web/karma.conf.js +++ b/web/karma.conf.js @@ -1,63 +1,54 @@ // Karma configuration // Generated on Wed Mar 01 2017 14:19:28 GMT-0500 (EST) +const webpackConfig = require('./webpack.test.config.js'); -module.exports = function(config) { +module.exports = function (config) { config.set({ - - // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: '', - - - // frameworks to use - // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ['jasmine', 'requirejs'], - - - // list of files / patterns to load in the browser + frameworks: ['jasmine'], + plugins: [ + 'karma-webpack', + 'karma-phantomjs-launcher', + 'karma-jasmine', + 'karma-jasmine-html-reporter', + ], files: [ - 'regression/javascript/test-main.js', - {pattern: 'regression/javascript/**/*.js', included: false}, + {pattern: 'pgadmin/static/**/*.js', included: false}, {pattern: 'pgadmin/static/vendor/**/*.js', included: false}, - {pattern: 'pgadmin/static/js/**/*.js', included: false}, {pattern: 'pgadmin/browser/static/js/**/*.js', included: false}, - {pattern: 'pgadmin/static/img/*.png', included: false} + 'regression/javascript/**/*.jsx', + 'regression/javascript/**/*.js', ], - // list of files to exclude exclude: [ 'pgadmin/static/vendor/**/*[Tt]est.js', 'pgadmin/static/vendor/**/*[Ss]pec.js' ], - // preprocess matching files before serving them to the browser // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor preprocessors: { + 'regression/javascript/**/*.js': ['webpack'], + // 'regression/javascript/**/*.jsx': ['webpack'], }, + webpack: webpackConfig, + webpackMiddleware: { + stats: 'errors-only', + }, - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['progress'], - - - // web server port port: 9876, - // enable / disable colors in the output (reporters and logs) colors: true, - // level of logging // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_INFO, + logLevel: config.LOG_WARN, // enable / disable watching file and executing tests whenever any file changes - autoWatch: false, + autoWatch: true, // start these browsers @@ -67,10 +58,10 @@ module.exports = function(config) { // Continuous Integration mode // if true, Karma captures browsers, runs the tests and exits - singleRun: true, + singleRun: false, // Concurrency level // how many browser should be started simultaneous concurrency: Infinity - }) -} + }); +}; diff --git a/web/package.json b/web/package.json index 80e4e5ad..40070da0 100644 --- a/web/package.json +++ b/web/package.json @@ -1,10 +1,43 @@ { "devDependencies": { - "jasmine-core": "^2.5.2", - "karma": "^1.5.0", - "karma-jasmine": "^1.1.0", - "karma-phantomjs-launcher": "^1.0.2", - "karma-requirejs": "^1.1.0", - "requirejs": "^2.3.3" + "babel-core": "~6.24.0", + "babel-loader": "~6.4.1", + "babel-preset-es2015": "~6.24.0", + "babel-preset-react": "~6.23.0", + "enzyme": "~2.8.2", + "jasmine-core": "~2.5.2", + "karma": "~1.5.0", + "karma-babel-preprocessor": "^6.0.1", + "karma-browserify": "~5.1.1", + "karma-jasmine": "~1.1.0", + "karma-jasmine-html-reporter": "~0.2.2", + "karma-phantomjs-launcher": "~1.0.2", + "karma-requirejs": "~1.1.0", + "karma-sourcemap-loader": "~0.3.7", + "karma-webpack": "~2.0.3", + "react-addons-test-utils": "~15.4.2", + "webpack": "~2.3.1" + }, + "dependencies": { + "axios": "^0.16.1", + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-polyfill": "^6.23.0", + "babel-preset-es2015-without-strict": "~0.0.4", + "babelify": "~7.3.0", + "browserify": "~14.1.0", + "exports-loader": "~0.6.4", + "imports-loader": "git+https://github.com/webpack-contrib/imports-loader.git#44d6f48463b256a17c1ba6fd9b5cc1449b4e379d", + "react": "~15.4.2", + "react-dom": "~15.4.2", + "requirejs": "~2.3.3", + "underscore": "~1.8.3", + "watchify": "~3.9.0" + }, + "scripts": { + "bundle": "yarn run webpack -- --optimize-minimize --config webpack.config.js", + "test:karma-once": "yarn run karma start -- --single-run", + "test:karma": "yarn run karma start", + "test:feature": "yarn run bundle && python regression/runtests.py --pkg feature_tests", + "test": "yarn run test:karma-once && yarn run bundle && python regression/runtests.py" } } diff --git a/web/pgAdmin4.py b/web/pgAdmin4.py index 24e1564a..1db49584 100644 --- a/web/pgAdmin4.py +++ b/web/pgAdmin4.py @@ -22,17 +22,36 @@ if sys.path[0] != root: import config from pgadmin import create_app +from pgadmin.utils import u, fs_encoding, file_quote + +if config.DEBUG: + from pgadmin.utils.javascript.javascript_bundler import JavascriptBundler, JsState # Get the config database schema version. We store this in pgadmin.model # as it turns out that putting it in the config files isn't a great idea from pgadmin.model import SCHEMA_VERSION config.SETTINGS_SCHEMA_VERSION = SCHEMA_VERSION +########################################################################## +# Sanity checks +########################################################################## + +# Check if the database exists. If it does not, create it. +if not os.path.isfile(config.SQLITE_PATH): + setupfile = os.path.join( + os.path.dirname(os.path.realpath(u(__file__, fs_encoding))), u'setup.py' + ) + exec(open(file_quote(setupfile), 'r').read()) ########################################################################## -# Server starup +# Server startup ########################################################################## +# Build Javascript files +if config.DEBUG: + javascriptBundler = JavascriptBundler() + javascriptBundler.bundle() + # Create the app! app = create_app() @@ -41,6 +60,13 @@ if config.DEBUG: else: app.debug = False +# respond to JS +if config.DEBUG: + if javascriptBundler.report() == JsState.NONE: + app.logger.error("Unable to generate javascript") + app.logger.error("To run the app ensure that yarn install command runs successfully") + raise Exception("No generated javascript, aborting") + # Start the web server. The port number should have already been set by the # runtime if we're running in desktop mode, otherwise we'll just use the # Flask default. diff --git a/web/pgadmin/static/js/generated/reactComponents.js b/web/pgadmin/static/js/generated/reactComponents.js new file mode 100644 index 00000000..234cf494 --- /dev/null +++ b/web/pgadmin/static/js/generated/reactComponents.js @@ -0,0 +1,20 @@ +define(function(){return function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=81)}([function(e,t){function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function r(e){if(l===setTimeout)return setTimeout(e,0);if((l===n||!l)&&setTimeout)return l=setTimeout,setTimeout(e,0);try{return l(e,0)}catch(t){try{return l.call(null,e,0)}catch(t){return l.call(this,e,0)}}}function i(e){if(p===clearTimeout)return clearTimeout(e);if((p===o||!p)&&clearTimeout)return p=clearTimeout,clearTimeout(e);try{return p(e)}catch(t){try{return p.call(null,e)}catch(t){return p.call(this,e)}}}function a(){m&&f&&(m=!1,f.length?h=f.concat(h):v=-1,h.length&&s())}function s(){if(!m){var e=r(a);m=!0;for(var t=h.length;t;){for(f=h,h=[];++v1)for(var n=1;n1?t-1:0),o=1;o2?o-2:0),i=2;i1){for(var _=Array(E),N=0;N1){for(var E=Array(y),_=0;_-1||("production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",e):a("96",e)),!l.plugins[o]){n.extractEvents||("production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",e):a("97",e)),l.plugins[o]=n;var i=n.eventTypes;for(var p in i)r(i[p],n,p)||("production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",p,e):a("98",p,e))}}}function r(e,n,o){l.eventNameDispatchConfigs.hasOwnProperty(o)&&("production"!==t.env.NODE_ENV?s(!1,"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",o):a("99",o)),l.eventNameDispatchConfigs[o]=e;var r=e.phasedRegistrationNames;if(r){for(var u in r)if(r.hasOwnProperty(u)){var c=r[u];i(c,n,o)}return!0}return!!e.registrationName&&(i(e.registrationName,n,o),!0)}function i(e,n,o){if(l.registrationNameModules[e]&&("production"!==t.env.NODE_ENV?s(!1,"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",e):a("100",e)),l.registrationNameModules[e]=n,l.registrationNameDependencies[e]=n.eventTypes[o].dependencies,"production"!==t.env.NODE_ENV){var r=e.toLowerCase();l.possibleRegistrationNames[r]=e,"onDoubleClick"===e&&(l.possibleRegistrationNames.ondblclick=e)}}var a=n(3),s=n(1),u=null,c={},l={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:"production"!==t.env.NODE_ENV?{}:null,injectEventPluginOrder:function(e){u&&("production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."):a("101")),u=Array.prototype.slice.call(e),o()},injectEventPluginsByName:function(e){var n=!1;for(var r in e)if(e.hasOwnProperty(r)){var i=e[r];c.hasOwnProperty(r)&&c[r]===i||(c[r]&&("production"!==t.env.NODE_ENV?s(!1,"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.",r):a("102",r)),c[r]=i,n=!0)}n&&o()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return l.registrationNameModules[t.registrationName]||null;if(void 0!==t.phasedRegistrationNames){var n=t.phasedRegistrationNames;for(var o in n)if(n.hasOwnProperty(o)){var r=l.registrationNameModules[n[o]];if(r)return r}}return null},_resetEventPlugins:function(){u=null;for(var e in c)c.hasOwnProperty(e)&&delete c[e];l.plugins.length=0;var n=l.eventNameDispatchConfigs;for(var o in n)n.hasOwnProperty(o)&&delete n[o];var r=l.registrationNameModules;for(var i in r)r.hasOwnProperty(i)&&delete r[i];if("production"!==t.env.NODE_ENV){var a=l.possibleRegistrationNames;for(var s in a)a.hasOwnProperty(s)&&delete a[s]}}};e.exports=l}).call(t,n(0))},function(e,t,n){"use strict";function o(e){return Object.prototype.hasOwnProperty.call(e,m)||(e[m]=f++,p[e[m]]={}),p[e[m]]}var r,i=n(4),a=n(25),s=n(128),u=n(67),c=n(164),l=n(44),p={},d=!1,f=0,h={topAbort:"abort",topAnimationEnd:c("animationend")||"animationend",topAnimationIteration:c("animationiteration")||"animationiteration",topAnimationStart:c("animationstart")||"animationstart",topBlur:"blur",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topChange:"change",topClick:"click",topCompositionEnd:"compositionend",topCompositionStart:"compositionstart",topCompositionUpdate:"compositionupdate",topContextMenu:"contextmenu",topCopy:"copy",topCut:"cut",topDoubleClick:"dblclick",topDrag:"drag",topDragEnd:"dragend",topDragEnter:"dragenter",topDragExit:"dragexit",topDragLeave:"dragleave",topDragOver:"dragover",topDragStart:"dragstart",topDrop:"drop",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topFocus:"focus",topInput:"input",topKeyDown:"keydown",topKeyPress:"keypress",topKeyUp:"keyup",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topMouseDown:"mousedown",topMouseMove:"mousemove",topMouseOut:"mouseout",topMouseOver:"mouseover",topMouseUp:"mouseup",topPaste:"paste",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topScroll:"scroll",topSeeked:"seeked",topSeeking:"seeking",topSelectionChange:"selectionchange",topStalled:"stalled",topSuspend:"suspend",topTextInput:"textInput",topTimeUpdate:"timeupdate",topTouchCancel:"touchcancel",topTouchEnd:"touchend",topTouchMove:"touchmove",topTouchStart:"touchstart",topTransitionEnd:c("transitionend")||"transitionend",topVolumeChange:"volumechange",topWaiting:"waiting",topWheel:"wheel"},m="_reactListenersID"+String(Math.random()).slice(2),v=i({},s,{ReactEventListener:null,injection:{injectReactEventListener:function(e){e.setHandleTopLevel(v.handleTopLevel),v.ReactEventListener=e}},setEnabled:function(e){v.ReactEventListener&&v.ReactEventListener.setEnabled(e)},isEnabled:function(){return!(!v.ReactEventListener||!v.ReactEventListener.isEnabled())},listenTo:function(e,t){for(var n=t,r=o(n),i=a.registrationNameDependencies[e],s=0;s]/;e.exports=r},function(e,t,n){"use strict";var o,r=n(6),i=n(33),a=/^[ \r\n\t\f]/,s=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,u=n(40),c=u(function(e,t){if(e.namespaceURI!==i.svg||"innerHTML"in e)e.innerHTML=t;else{o=o||document.createElement("div"),o.innerHTML=""+t+"";for(var n=o.firstChild;n.firstChild;)e.appendChild(n.firstChild)}});if(r.canUseDOM){var l=document.createElement("div");l.innerHTML=" ",""===l.innerHTML&&(c=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),a.test(t)||"<"===t[0]&&s.test(t)){e.innerHTML=String.fromCharCode(65279)+t;var n=e.firstChild;1===n.data.length?e.removeChild(n):n.deleteData(0,1)}else e.innerHTML=t}),l=null}e.exports=c},function(e,t,n){"use strict";function o(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!==e&&t!==t}function r(e,t){if(o(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var a=0;a0&&o.length<20?n+" (keys: "+o.join(", ")+")":n}function i(e,n){var o=u.get(e);if(!o){if("production"!==t.env.NODE_ENV){var r=e.constructor;"production"!==t.env.NODE_ENV&&d(!n,"%s(...): Can only update a mounted or mounting component. This usually means you called %s() on an unmounted component. This is a no-op. Please check the code for the %s component.",n,n,r&&(r.displayName||r.name)||"ReactClass")}return null}return"production"!==t.env.NODE_ENV&&"production"!==t.env.NODE_ENV&&d(null==s.current,"%s(...): Cannot update during an existing state transition (such as within `render` or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to `componentWillMount`.",n),o}var a=n(3),s=n(11),u=n(23),c=n(8),l=n(10),p=n(1),d=n(2),f={isMounted:function(e){if("production"!==t.env.NODE_ENV){var n=s.current;null!==n&&("production"!==t.env.NODE_ENV&&d(n._warnedAboutRefsInRender,"%s is accessing isMounted inside its render() function. render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.",n.getName()||"A component"),n._warnedAboutRefsInRender=!0)}var o=u.get(e);return!!o&&!!o._renderedComponent},enqueueCallback:function(e,t,n){f.validateCallback(t,n);var r=i(e);if(!r)return null;r._pendingCallbacks?r._pendingCallbacks.push(t):r._pendingCallbacks=[t],o(r)},enqueueCallbackInternal:function(e,t){e._pendingCallbacks?e._pendingCallbacks.push(t):e._pendingCallbacks=[t],o(e)},enqueueForceUpdate:function(e){var t=i(e,"forceUpdate");t&&(t._pendingForceUpdate=!0,o(t))},enqueueReplaceState:function(e,t){var n=i(e,"replaceState");n&&(n._pendingStateQueue=[t],n._pendingReplaceState=!0,o(n))},enqueueSetState:function(e,n){"production"!==t.env.NODE_ENV&&(c.debugTool.onSetState(),"production"!==t.env.NODE_ENV&&d(null!=n,"setState(...): You passed an undefined or null state object; instead, use forceUpdate()."));var r=i(e,"setState");if(r){(r._pendingStateQueue||(r._pendingStateQueue=[])).push(n),o(r)}},enqueueElementInternal:function(e,t,n){e._pendingElement=t,e._context=n,o(e)},validateCallback:function(e,n){e&&"function"!=typeof e&&("production"!==t.env.NODE_ENV?p(!1,"%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.",n,r(e)):a("122",n,r(e)))}};e.exports=f}).call(t,n(0))},function(e,t,n){"use strict";var o=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,o,r){MSApp.execUnsafeLocalFunction(function(){return e(t,n,o,r)})}:e};e.exports=o},function(e,t,n){"use strict";function o(e){var t,n=e.keyCode;return"charCode"in e?0===(t=e.charCode)&&13===n&&(t=13):t=n,t>=32||13===t?t:0}e.exports=o},function(e,t,n){"use strict";function o(e){var t=this,n=t.nativeEvent;if(n.getModifierState)return n.getModifierState(e);var o=i[e];return!!o&&!!n[o]}function r(e){return o}var i={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};e.exports=r},function(e,t,n){"use strict";function o(e){var t=e.target||e.srcElement||window;return t.correspondingUseElement&&(t=t.correspondingUseElement),3===t.nodeType?t.parentNode:t}e.exports=o},function(e,t,n){"use strict";/** + * 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 o(e,t){if(!i.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,o=n in document;if(!o){var a=document.createElement("div");a.setAttribute(n,"return;"),o="function"==typeof a[n]}return!o&&r&&"wheel"===e&&(o=document.implementation.hasFeature("Events.wheel","3.0")),o}var r,i=n(6);i.canUseDOM&&(r=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("","")),e.exports=o},function(e,t,n){"use strict";function o(e,t){var n=null===e||!1===e,o=null===t||!1===t;if(n||o)return n===o;var r=typeof e,i=typeof t;return"string"===r||"number"===r?"string"===i||"number"===i:"object"===i&&e.type===t.type&&e.key===t.key}e.exports=o},function(e,t,n){"use strict";(function(t){var o=n(4),r=n(9),i=n(2),a=r;if("production"!==t.env.NODE_ENV){var s=["address","applet","area","article","aside","base","basefont","bgsound","blockquote","body","br","button","caption","center","col","colgroup","dd","details","dir","div","dl","dt","embed","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","img","input","isindex","li","link","listing","main","marquee","menu","menuitem","meta","nav","noembed","noframes","noscript","object","ol","p","param","plaintext","pre","script","section","select","source","style","summary","table","tbody","td","template","textarea","tfoot","th","thead","title","tr","track","ul","wbr","xmp"],u=["applet","caption","html","table","td","th","marquee","object","template","foreignObject","desc","title"],c=u.concat(["button"]),l=["dd","dt","li","option","optgroup","p","rp","rt"],p={current:null,formTag:null,aTagInScope:null,buttonTagInScope:null,nobrTagInScope:null,pTagInButtonScope:null,listItemTagAutoclosing:null,dlItemTagAutoclosing:null},d=function(e,t,n){var r=o({},e||p),i={tag:t,instance:n};return-1!==u.indexOf(t)&&(r.aTagInScope=null,r.buttonTagInScope=null,r.nobrTagInScope=null),-1!==c.indexOf(t)&&(r.pTagInButtonScope=null),-1!==s.indexOf(t)&&"address"!==t&&"div"!==t&&"p"!==t&&(r.listItemTagAutoclosing=null,r.dlItemTagAutoclosing=null),r.current=i,"form"===t&&(r.formTag=i),"a"===t&&(r.aTagInScope=i),"button"===t&&(r.buttonTagInScope=i),"nobr"===t&&(r.nobrTagInScope=i),"p"===t&&(r.pTagInButtonScope=i),"li"===t&&(r.listItemTagAutoclosing=i),"dd"!==t&&"dt"!==t||(r.dlItemTagAutoclosing=i),r},f=function(e,t){switch(t){case"select":return"option"===e||"optgroup"===e||"#text"===e;case"optgroup":return"option"===e||"#text"===e;case"option":return"#text"===e;case"tr":return"th"===e||"td"===e||"style"===e||"script"===e||"template"===e;case"tbody":case"thead":case"tfoot":return"tr"===e||"style"===e||"script"===e||"template"===e;case"colgroup":return"col"===e||"template"===e;case"table":return"caption"===e||"colgroup"===e||"tbody"===e||"tfoot"===e||"thead"===e||"style"===e||"script"===e||"template"===e;case"head":return"base"===e||"basefont"===e||"bgsound"===e||"link"===e||"meta"===e||"title"===e||"noscript"===e||"noframes"===e||"style"===e||"script"===e||"template"===e;case"html":return"head"===e||"body"===e;case"#document":return"html"===e}switch(e){case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":return"h1"!==t&&"h2"!==t&&"h3"!==t&&"h4"!==t&&"h5"!==t&&"h6"!==t;case"rp":case"rt":return-1===l.indexOf(t);case"body":case"caption":case"col":case"colgroup":case"frame":case"head":case"html":case"tbody":case"td":case"tfoot":case"th":case"thead":case"tr":return null==t}return!0},h=function(e,t){switch(e){case"address":case"article":case"aside":case"blockquote":case"center":case"details":case"dialog":case"dir":case"div":case"dl":case"fieldset":case"figcaption":case"figure":case"footer":case"header":case"hgroup":case"main":case"menu":case"nav":case"ol":case"p":case"section":case"summary":case"ul":case"pre":case"listing":case"table":case"hr":case"xmp":case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":return t.pTagInButtonScope;case"form":return t.formTag||t.pTagInButtonScope;case"li":return t.listItemTagAutoclosing;case"dd":case"dt":return t.dlItemTagAutoclosing;case"button":return t.buttonTagInScope;case"a":return t.aTagInScope;case"nobr":return t.nobrTagInScope}return null},m=function(e){if(!e)return[];var t=[];do{t.push(e)}while(e=e._currentElement._owner);return t.reverse(),t},v={};a=function(e,n,o,r){r=r||p;var a=r.current,s=a&&a.tag;null!=n&&("production"!==t.env.NODE_ENV&&i(null==e,"validateDOMNesting: when childText is passed, childTag should be null"),e="#text");var u=f(e,s)?null:a,c=u?null:h(e,r),l=u||c;if(l){var d,g=l.tag,y=l.instance,E=o&&o._currentElement._owner,_=y&&y._currentElement._owner,N=m(E),b=m(_),C=Math.min(N.length,b.length),D=-1;for(d=0;d "),T=!!u+"|"+e+"|"+g+"|"+x;if(v[T])return;v[T]=!0;var k=e,I="";if("#text"===e?/\S/.test(n)?k="Text nodes":(k="Whitespace text nodes",I=" Make sure you don't have any extra whitespace between tags on each line of your source code."):k="<"+e+">",u){var P="";"table"===g&&"tr"===e&&(P+=" Add a to your code to match the DOM tree generated by the browser."),"production"!==t.env.NODE_ENV&&i(!1,"validateDOMNesting(...): %s cannot appear as a child of <%s>.%s See %s.%s",k,g,I,x,P)}else"production"!==t.env.NODE_ENV&&i(!1,"validateDOMNesting(...): %s cannot appear as a descendant of <%s>. See %s.",k,g,x)}},a.updatedAncestorInfo=d,a.isTagValidInContext=function(e,t){t=t||p;var n=t.current,o=n&&n.tag;return f(e,o)&&!h(e,t)}}e.exports=a}).call(t,n(0))},function(e,t,n){"use strict";(function(t){function o(e,t,n){this.props=e,this.context=t,this.refs=s,this.updater=n||i}var r=n(16),i=n(48),a=n(50),s=n(20),u=n(1),c=n(2);if(o.prototype.isReactComponent={},o.prototype.setState=function(e,n){"object"!=typeof e&&"function"!=typeof e&&null!=e&&("production"!==t.env.NODE_ENV?u(!1,"setState(...): takes an object of state variables to update or a function which returns an object of state variables."):r("85")),this.updater.enqueueSetState(this,e),n&&this.updater.enqueueCallback(this,n,"setState")},o.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this),e&&this.updater.enqueueCallback(this,e,"forceUpdate")},"production"!==t.env.NODE_ENV){var l={isMounted:["isMounted","Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."],replaceState:["replaceState","Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."]};for(var p in l)l.hasOwnProperty(p)&&function(e,n){a&&Object.defineProperty(o.prototype,e,{get:function(){"production"!==t.env.NODE_ENV&&c(!1,"%s(...) is deprecated in plain JavaScript React classes. %s",n[0],n[1])}})}(p,l[p])}e.exports=o}).call(t,n(0))},function(e,t,n){"use strict";(function(t){function o(e,n){if("production"!==t.env.NODE_ENV){var o=e.constructor;"production"!==t.env.NODE_ENV&&r(!1,"%s(...): Can only update a mounted or mounting component. This usually means you called %s() on an unmounted component. This is a no-op. Please check the code for the %s component.",n,n,o&&(o.displayName||o.name)||"ReactClass")}}var r=n(2),i={isMounted:function(e){return!1},enqueueCallback:function(e,t){},enqueueForceUpdate:function(e){o(e,"forceUpdate")},enqueueReplaceState:function(e,t){o(e,"replaceState")},enqueueSetState:function(e,t){o(e,"setState")}};e.exports=i}).call(t,n(0))},function(e,t,n){"use strict";(function(t){var n={};"production"!==t.env.NODE_ENV&&(n={prop:"prop",context:"context",childContext:"child context"}),e.exports=n}).call(t,n(0))},function(e,t,n){"use strict";(function(t){var n=!1;if("production"!==t.env.NODE_ENV)try{Object.defineProperty({},"x",{get:function(){}}),n=!0}catch(e){}e.exports=n}).call(t,n(0))},function(e,t,n){"use strict";function o(e){var t=e&&(r&&e[r]||e[i]);if("function"==typeof t)return t}var r="function"==typeof Symbol&&Symbol.iterator,i="@@iterator";e.exports=o},function(e,t,n){"use strict";(function(t){var o=n(9),r={listen:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!1),{remove:function(){e.removeEventListener(t,n,!1)}}):e.attachEvent?(e.attachEvent("on"+t,n),{remove:function(){e.detachEvent("on"+t,n)}}):void 0},capture:function(e,n,r){return e.addEventListener?(e.addEventListener(n,r,!0),{remove:function(){e.removeEventListener(n,r,!0)}}):("production"!==t.env.NODE_ENV&&console.error("Attempted to listen to events during the capture phase on a browser that does not support the capture phase. Your application will not receive some events."),{remove:o})},registerDefault:function(){}};e.exports=r}).call(t,n(0))},function(e,t,n){"use strict";function o(e){try{e.focus()}catch(e){}}e.exports=o},function(e,t,n){"use strict";function o(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}e.exports=o},function(e,t,n){"use strict";function o(e,t){return e+t.charAt(0).toUpperCase()+t.substring(1)}var r={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridColumn:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},i=["Webkit","ms","Moz","O"];Object.keys(r).forEach(function(e){i.forEach(function(t){r[o(t,e)]=r[e]})});var a={background:{backgroundAttachment:!0,backgroundColor:!0,backgroundImage:!0,backgroundPositionX:!0,backgroundPositionY:!0,backgroundRepeat:!0},backgroundPosition:{backgroundPositionX:!0,backgroundPositionY:!0},border:{borderWidth:!0,borderStyle:!0,borderColor:!0},borderBottom:{borderBottomWidth:!0,borderBottomStyle:!0,borderBottomColor:!0},borderLeft:{borderLeftWidth:!0,borderLeftStyle:!0,borderLeftColor:!0},borderRight:{borderRightWidth:!0,borderRightStyle:!0,borderRightColor:!0},borderTop:{borderTopWidth:!0,borderTopStyle:!0,borderTopColor:!0},font:{fontStyle:!0,fontVariant:!0,fontWeight:!0,fontSize:!0,lineHeight:!0,fontFamily:!0},outline:{outlineWidth:!0,outlineStyle:!0,outlineColor:!0}},s={isUnitlessNumber:r,shorthandPropertyExpansions:a};e.exports=s},function(e,t,n){"use strict";(function(t){function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=n(3),i=n(14),a=n(1),s=function(){function e(t){o(this,e),this._callbacks=null,this._contexts=null,this._arg=t}return e.prototype.enqueue=function(e,t){this._callbacks=this._callbacks||[],this._callbacks.push(e),this._contexts=this._contexts||[],this._contexts.push(t)},e.prototype.notifyAll=function(){var e=this._callbacks,n=this._contexts,o=this._arg;if(e&&n){e.length!==n.length&&("production"!==t.env.NODE_ENV?a(!1,"Mismatched list of contexts in callback queue"):r("24")),this._callbacks=null,this._contexts=null;for(var i=0;i must be an array if `multiple` is true.%s",a,r(o)):!n.multiple&&s&&"production"!==t.env.NODE_ENV&&d(!1,"The `%s` prop supplied to ',""],c=[1,"","
"],l=[3,"","
"],p=[1,'',""],d={"*":[1,"?
","
"],area:[1,"",""],col:[2,"","
"],legend:[1,"
","
"],param:[1,"",""],tr:[2,"","
"],optgroup:u,option:u,caption:c,colgroup:c,tbody:c,tfoot:c,thead:c,td:l,th:l};["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan"].forEach(function(e){d[e]=p,s[e]=!0}),e.exports=o}).call(t,n(0))},function(e,t,n){"use strict";function o(e){return e.Window&&e instanceof e.Window?{x:e.pageXOffset||e.document.documentElement.scrollLeft,y:e.pageYOffset||e.document.documentElement.scrollTop}:{x:e.scrollLeft,y:e.scrollTop}}e.exports=o},function(e,t,n){"use strict";function o(e){return e.replace(r,"-$1").toLowerCase()}var r=/([A-Z])/g;e.exports=o},function(e,t,n){"use strict";function o(e){return r(e).replace(i,"-ms-")}var r=n(89),i=/^ms-/;e.exports=o},function(e,t,n){"use strict";function o(e){var t=e?e.ownerDocument||e:document,n=t.defaultView||window;return!(!e||!("function"==typeof n.Node?e instanceof n.Node:"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName))}e.exports=o},function(e,t,n){"use strict";function o(e){return r(e)&&3==e.nodeType}var r=n(91);e.exports=o},function(e,t,n){"use strict";function o(e){var t={};return function(n){return t.hasOwnProperty(n)||(t[n]=e.call(this,n)),t[n]}}e.exports=o},function(e,t,n){"use strict";var o,r=n(6);r.canUseDOM&&(o=window.performance||window.msPerformance||window.webkitPerformance),e.exports=o||{}},function(e,t,n){"use strict";var o,r=n(94);o=r.now?function(){return r.now()}:function(){return Date.now()},e.exports=o},function(e,t,n){"use strict";var o={Properties:{"aria-current":0,"aria-details":0,"aria-disabled":0,"aria-hidden":0,"aria-invalid":0,"aria-keyshortcuts":0,"aria-label":0,"aria-roledescription":0,"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,"aria-atomic":0,"aria-busy":0,"aria-live":0,"aria-relevant":0,"aria-dropeffect":0,"aria-grabbed":0,"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:{}};e.exports=o},function(e,t,n){"use strict";var o=n(5),r=n(53),i={focusDOMComponent:function(){r(o.getNodeFromInstance(this))}};e.exports=i},function(e,t,n){"use strict";function o(e){return(e.ctrlKey||e.altKey||e.metaKey)&&!(e.ctrlKey&&e.altKey)}function r(e){switch(e){case"topCompositionStart":return O.compositionStart;case"topCompositionEnd":return O.compositionEnd;case"topCompositionUpdate":return O.compositionUpdate}}function i(e,t){return"topKeyDown"===e&&t.keyCode===y}function a(e,t){switch(e){case"topKeyUp":return-1!==g.indexOf(t.keyCode);case"topKeyDown":return t.keyCode!==y;case"topKeyPress":case"topMouseDown":case"topBlur":return!0;default:return!1}}function s(e){var t=e.detail;return"object"==typeof t&&"data"in t?t.data:null}function u(e,t,n,o){var u,c;if(E?u=r(e):x?a(e,n)&&(u=O.compositionEnd):i(e,n)&&(u=O.compositionStart),!u)return null;b&&(x||u!==O.compositionStart?u===O.compositionEnd&&x&&(c=x.getData()):x=h.getPooled(o));var l=m.getPooled(u,t,n,o);if(c)l.data=c;else{var p=s(n);null!==p&&(l.data=p)}return d.accumulateTwoPhaseDispatches(l),l}function c(e,t){switch(e){case"topCompositionEnd":return s(t);case"topKeyPress":return t.which!==C?null:(w=!0,D);case"topTextInput":var n=t.data;return n===D&&w?null:n;default:return null}}function l(e,t){if(x){if("topCompositionEnd"===e||!E&&a(e,t)){var n=x.getData();return h.release(x),x=null,n}return null}switch(e){case"topPaste":return null;case"topKeyPress":return t.which&&!o(t)?String.fromCharCode(t.which):null;case"topCompositionEnd":return b?null:t.data;default:return null}}function p(e,t,n,o){var r;if(!(r=N?c(e,n):l(e,n)))return null;var i=v.getPooled(O.beforeInput,t,n,o);return i.data=r,d.accumulateTwoPhaseDispatches(i),i}var d=n(22),f=n(6),h=n(104),m=n(147),v=n(150),g=[9,13,27,32],y=229,E=f.canUseDOM&&"CompositionEvent"in window,_=null;f.canUseDOM&&"documentMode"in document&&(_=document.documentMode);var N=f.canUseDOM&&"TextEvent"in window&&!_&&!function(){var e=window.opera;return"object"==typeof e&&"function"==typeof e.version&&parseInt(e.version(),10)<=12}(),b=f.canUseDOM&&(!E||_&&_>8&&_<=11),C=32,D=String.fromCharCode(C),O={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"]}},w=!1,x=null,T={eventTypes:O,extractEvents:function(e,t,n,o){return[u(e,t,n,o),p(e,t,n,o)]}};e.exports=T},function(e,t,n){"use strict";(function(t){var o=n(55),r=n(6),i=n(8),a=n(83),s=n(157),u=n(90),c=n(93),l=n(2),p=c(function(e){return u(e)}),d=!1,f="cssFloat";if(r.canUseDOM){var h=document.createElement("div").style;try{h.font=""}catch(e){d=!0}void 0===document.documentElement.style.cssFloat&&(f="styleFloat")}if("production"!==t.env.NODE_ENV)var m=/^(?:webkit|moz|o)[A-Z]/,v=/;\s*$/,g={},y={},E=!1,_=function(e,n){g.hasOwnProperty(e)&&g[e]||(g[e]=!0,"production"!==t.env.NODE_ENV&&l(!1,"Unsupported style property %s. Did you mean %s?%s",e,a(e),D(n)))},N=function(e,n){g.hasOwnProperty(e)&&g[e]||(g[e]=!0,"production"!==t.env.NODE_ENV&&l(!1,"Unsupported vendor-prefixed style property %s. Did you mean %s?%s",e,e.charAt(0).toUpperCase()+e.slice(1),D(n)))},b=function(e,n,o){y.hasOwnProperty(n)&&y[n]||(y[n]=!0,"production"!==t.env.NODE_ENV&&l(!1,'Style property values shouldn\'t contain a semicolon.%s Try "%s: %s" instead.',D(o),e,n.replace(v,"")))},C=function(e,n,o){E||(E=!0,"production"!==t.env.NODE_ENV&&l(!1,"`NaN` is an invalid value for the `%s` css style property.%s",e,D(o)))},D=function(e){if(e){var t=e.getName();if(t)return" Check the render method of `"+t+"`."}return""},O=function(e,t,n){var o;n&&(o=n._currentElement._owner),e.indexOf("-")>-1?_(e,o):m.test(e)?N(e,o):v.test(t)&&b(e,t,o),"number"==typeof t&&isNaN(t)&&C(e,0,o)};var w={createMarkupForStyles:function(e,n){var o="";for(var r in e)if(e.hasOwnProperty(r)){var i=e[r];"production"!==t.env.NODE_ENV&&O(r,i,n),null!=i&&(o+=p(r)+":",o+=s(r,i,n)+";")}return o||null},setValueForStyles:function(e,n,r){"production"!==t.env.NODE_ENV&&i.debugTool.onHostOperation({instanceID:r._debugID,type:"update styles",payload:n});var a=e.style;for(var u in n)if(n.hasOwnProperty(u)){"production"!==t.env.NODE_ENV&&O(u,n[u],r);var c=s(u,n[u],r);if("float"!==u&&"cssFloat"!==u||(u=f),c)a[u]=c;else{var l=d&&o.shorthandPropertyExpansions[u];if(l)for(var p in l)a[p]="";else a[u]=""}}}};e.exports=w}).call(t,n(0))},function(e,t,n){"use strict";function o(e){var t=e.nodeName&&e.nodeName.toLowerCase();return"select"===t||"input"===t&&"file"===e.type}function r(e){var t=C.getPooled(x.change,k,e,D(e));E.accumulateTwoPhaseDispatches(t),b.batchedUpdates(i,t)}function i(e){y.enqueueEvents(e),y.processEventQueue(!1)}function a(e,t){T=e,k=t,T.attachEvent("onchange",r)}function s(){T&&(T.detachEvent("onchange",r),T=null,k=null)}function u(e,t){if("topChange"===e)return t}function c(e,t,n){"topFocus"===e?(s(),a(t,n)):"topBlur"===e&&s()}function l(e,t){T=e,k=t,I=e.value,P=Object.getOwnPropertyDescriptor(e.constructor.prototype,"value"),Object.defineProperty(T,"value",R),T.attachEvent?T.attachEvent("onpropertychange",d):T.addEventListener("propertychange",d,!1)}function p(){T&&(delete T.value,T.detachEvent?T.detachEvent("onpropertychange",d):T.removeEventListener("propertychange",d,!1),T=null,k=null,I=null,P=null)}function d(e){if("value"===e.propertyName){var t=e.srcElement.value;t!==I&&(I=t,r(e))}}function f(e,t){if("topInput"===e)return t}function h(e,t,n){"topFocus"===e?(p(),l(t,n)):"topBlur"===e&&p()}function m(e,t){if(("topSelectionChange"===e||"topKeyUp"===e||"topKeyDown"===e)&&T&&T.value!==I)return I=T.value,k}function v(e){return e.nodeName&&"input"===e.nodeName.toLowerCase()&&("checkbox"===e.type||"radio"===e.type)}function g(e,t){if("topClick"===e)return t}var y=n(21),E=n(22),_=n(6),N=n(5),b=n(10),C=n(12),D=n(43),O=n(44),w=n(73),x={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:["topBlur","topChange","topClick","topFocus","topInput","topKeyDown","topKeyUp","topSelectionChange"]}},T=null,k=null,I=null,P=null,S=!1;_.canUseDOM&&(S=O("change")&&(!document.documentMode||document.documentMode>8));var V=!1;_.canUseDOM&&(V=O("input")&&(!document.documentMode||document.documentMode>11));var R={get:function(){return P.get.call(this)},set:function(e){I=""+e,P.set.call(this,e)}},M={eventTypes:x,extractEvents:function(e,t,n,r){var i,a,s=t?N.getNodeFromInstance(t):window;if(o(s)?S?i=u:a=c:w(s)?V?i=f:(i=m,a=h):v(s)&&(i=g),i){var l=i(e,t);if(l){var p=C.getPooled(x.change,l,n,r);return p.type="change",E.accumulateTwoPhaseDispatches(p),p}}a&&a(e,s,t)}};e.exports=M},function(e,t,n){"use strict";(function(t){var o=n(3),r=n(17),i=n(6),a=n(86),s=n(9),u=n(1),c={dangerouslyReplaceNodeWithMarkup:function(e,n){if(i.canUseDOM||("production"!==t.env.NODE_ENV?u(!1,"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."):o("56")),n||("production"!==t.env.NODE_ENV?u(!1,"dangerouslyReplaceNodeWithMarkup(...): Missing markup."):o("57")),"HTML"===e.nodeName&&("production"!==t.env.NODE_ENV?u(!1,"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()."):o("58")),"string"==typeof n){var c=a(n,s)[0];e.parentNode.replaceChild(c,e)}else r.replaceChildWithTree(e,n)}};e.exports=c}).call(t,n(0))},function(e,t,n){"use strict";var o=["ResponderEventPlugin","SimpleEventPlugin","TapEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin"];e.exports=o},function(e,t,n){"use strict";var o=n(22),r=n(5),i=n(27),a={mouseEnter:{registrationName:"onMouseEnter",dependencies:["topMouseOut","topMouseOver"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["topMouseOut","topMouseOver"]}},s={eventTypes:a,extractEvents:function(e,t,n,s){if("topMouseOver"===e&&(n.relatedTarget||n.fromElement))return null;if("topMouseOut"!==e&&"topMouseOver"!==e)return null;var u;if(s.window===s)u=s;else{var c=s.ownerDocument;u=c?c.defaultView||c.parentWindow:window}var l,p;if("topMouseOut"===e){l=t;var d=n.relatedTarget||n.toElement;p=d?r.getClosestInstanceFromNode(d):null}else l=null,p=t;if(l===p)return null;var f=null==l?u:r.getNodeFromInstance(l),h=null==p?u:r.getNodeFromInstance(p),m=i.getPooled(a.mouseLeave,l,n,s);m.type="mouseleave",m.target=f,m.relatedTarget=h;var v=i.getPooled(a.mouseEnter,p,n,s);return v.type="mouseenter",v.target=h,v.relatedTarget=f,o.accumulateEnterLeaveDispatches(m,v,l,p),[m,v]}};e.exports=s},function(e,t,n){"use strict";function o(e){this._root=e,this._startText=this.getText(),this._fallbackText=null}var r=n(4),i=n(14),a=n(71);r(o.prototype,{destructor:function(){this._root=null,this._startText=null,this._fallbackText=null},getText:function(){return"value"in this._root?this._root.value:this._root[a()]},getData:function(){if(this._fallbackText)return this._fallbackText;var e,t,n=this._startText,o=n.length,r=this.getText(),i=r.length;for(e=0;e1?1-t:void 0;return this._fallbackText=r.slice(e,s),this._fallbackText}}),i.addPoolingTo(o),e.exports=o},function(e,t,n){"use strict";var o=n(13),r=o.injection.MUST_USE_PROPERTY,i=o.injection.HAS_BOOLEAN_VALUE,a=o.injection.HAS_NUMERIC_VALUE,s=o.injection.HAS_POSITIVE_NUMERIC_VALUE,u=o.injection.HAS_OVERLOADED_BOOLEAN_VALUE,c={isCustomAttribute:RegExp.prototype.test.bind(new RegExp("^(data|aria)-["+o.ATTRIBUTE_NAME_CHAR+"]*$")),Properties:{accept:0,acceptCharset:0,accessKey:0,action:0,allowFullScreen:i,allowTransparency:0,alt:0,as:0,async:i,autoComplete:0,autoPlay:i,capture:i,cellPadding:0,cellSpacing:0,charSet:0,challenge:0,checked:r|i,cite:0,classID:0,className:0,cols:s,colSpan:0,content:0,contentEditable:0,contextMenu:0,controls:i,coords:0,crossOrigin:0,data:0,dateTime:0,default:i,defer:i,dir:0,disabled:i,download:u,draggable:0,encType:0,form:0,formAction:0,formEncType:0,formMethod:0,formNoValidate:i,formTarget:0,frameBorder:0,headers:0,height:0,hidden:i,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:i,low:0,manifest:0,marginHeight:0,marginWidth:0,max:0,maxLength:0,media:0,mediaGroup:0,method:0,min:0,minLength:0,multiple:r|i,muted:r|i,name:0,nonce:0,noValidate:i,open:i,optimum:0,pattern:0,placeholder:0,playsInline:i,poster:0,preload:0,profile:0,radioGroup:0,readOnly:i,referrerPolicy:0,rel:0,required:i,reversed:i,role:0,rows:s,rowSpan:a,sandbox:0,scope:0,scoped:i,scrolling:0,seamless:i,selected:r|i,shape:0,size:s,sizes:0,span:s,spellCheck:0,src:0,srcDoc:0,srcLang:0,srcSet:0,start:a,step:0,style:0,summary:0,tabIndex:0,target:0,title:0,type:0,useMap:0,value:0,width:0,wmode:0,wrap:0,about:0,datatype:0,inlist:0,prefix:0,property:0,resource:0,typeof:0,vocab:0,autoCapitalize:0,autoCorrect:0,autoSave:0,color:0,itemProp:0,itemScope:i,itemType:0,itemID:0,itemRef:0,results:0,security:0,unselectable:0},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{}};e.exports=c},function(e,t,n){"use strict";(function(t){function o(e,o,i,u){var c=void 0===e[i];"production"!==t.env.NODE_ENV&&(r||(r=n(7)),c||"production"!==t.env.NODE_ENV&&l(!1,"flattenChildren(...): Encountered two children with the same key, `%s`. Child keys must be unique; when two children share a key, only the first child will be used.%s",s.unescape(i),r.getStackAddendumByID(u))),null!=o&&c&&(e[i]=a(o,!0))}var r,i=n(18),a=n(72),s=n(35),u=n(45),c=n(75),l=n(2);void 0!==t&&t.env&&"test"===t.env.NODE_ENV&&(r=n(7));var p={instantiateChildren:function(e,n,r,i){if(null==e)return null;var a={};return"production"!==t.env.NODE_ENV?c(e,function(e,t,n){return o(e,t,n,i)},a):c(e,o,a),a},updateChildren:function(e,t,n,o,r,s,c,l,p){if(t||e){var d,f;for(d in t)if(t.hasOwnProperty(d)){f=e&&e[d];var h=f&&f._currentElement,m=t[d];if(null!=f&&u(h,m))i.receiveComponent(f,m,r,l),t[d]=f;else{f&&(o[d]=i.getHostNode(f),i.unmountComponent(f,!1));var v=a(m,!0);t[d]=v;var g=i.mountComponent(v,r,s,c,l,p);n.push(g)}}for(d in e)!e.hasOwnProperty(d)||t&&t.hasOwnProperty(d)||(f=e[d],o[d]=i.getHostNode(f),i.unmountComponent(f,!1))}},unmountChildren:function(e,t){for(var n in e)if(e.hasOwnProperty(n)){var o=e[n];i.unmountComponent(o,t)}}};e.exports=p}).call(t,n(0))},function(e,t,n){"use strict";var o=n(32),r=n(114),i={processChildrenUpdates:r.dangerouslyProcessChildrenUpdates,replaceNodeWithMarkup:o.dangerouslyReplaceNodeWithMarkup};e.exports=i},function(e,t,n){"use strict";(function(t){function o(e){}function r(e,n){"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV&&C(null===n||!1===n||l.isValidElement(n),"%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.",e.displayName||e.name||"Component"),"production"!==t.env.NODE_ENV&&C(!e.childContextTypes,"%s(...): childContextTypes cannot be defined on a functional component.",e.displayName||e.name||"Component"))}function i(e){return!(!e.prototype||!e.prototype.isReactComponent)}function a(e){return!(!e.prototype||!e.prototype.isPureReactComponent)}function s(e,t,n){if(0===t)return e();m.debugTool.onBeginLifeCycleTimer(t,n);try{return e()}finally{m.debugTool.onEndLifeCycleTimer(t,n)}}var u=n(3),c=n(4),l=n(19),p=n(37),d=n(11),f=n(38),h=n(23),m=n(8),v=n(65),g=n(18);if("production"!==t.env.NODE_ENV)var y=n(156);var E=n(20),_=n(1),N=n(31),b=n(45),C=n(2),D={ImpureClass:0,PureClass:1,StatelessFunctional:2};o.prototype.render=function(){var e=h.get(this)._currentElement.type,t=e(this.props,this.context,this.updater);return r(e,t),t};var O=1,w={construct:function(e){this._currentElement=e,this._rootNodeID=0,this._compositeType=null,this._instance=null,this._hostParent=null,this._hostContainerInfo=null,this._updateBatchNumber=null,this._pendingElement=null,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._renderedNodeType=null,this._renderedComponent=null,this._context=null,this._mountOrder=0,this._topLevelWrapper=null,this._pendingCallbacks=null,this._calledComponentWillUnmount=!1,"production"!==t.env.NODE_ENV&&(this._warnedAboutRefsInRender=!1)},mountComponent:function(e,n,c,p){var d=this;this._context=p,this._mountOrder=O++,this._hostParent=n,this._hostContainerInfo=c;var f,m=this._currentElement.props,v=this._processContext(p),g=this._currentElement.type,y=e.getUpdateQueue(),N=i(g),b=this._constructComponent(N,m,v,y);if(N||null!=b&&null!=b.render?a(g)?this._compositeType=D.PureClass:this._compositeType=D.ImpureClass:(f=b,r(g,f),null===b||!1===b||l.isValidElement(b)||("production"!==t.env.NODE_ENV?_(!1,"%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.",g.displayName||g.name||"Component"):u("105",g.displayName||g.name||"Component")),b=new o(g),this._compositeType=D.StatelessFunctional),"production"!==t.env.NODE_ENV){null==b.render&&"production"!==t.env.NODE_ENV&&C(!1,"%s(...): No `render` method found on the returned component instance: you may have forgotten to define `render`.",g.displayName||g.name||"Component");var w=b.props!==m,x=g.displayName||g.name||"Component";"production"!==t.env.NODE_ENV&&C(void 0===b.props||!w,"%s(...): When calling super() in `%s`, make sure to pass up the same props that your component's constructor was passed.",x,x)}b.props=m,b.context=v,b.refs=E,b.updater=y,this._instance=b,h.set(b,this),"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV&&C(!b.getInitialState||b.getInitialState.isReactClassApproved||b.state,"getInitialState was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Did you mean to define a state property instead?",this.getName()||"a component"),"production"!==t.env.NODE_ENV&&C(!b.getDefaultProps||b.getDefaultProps.isReactClassApproved,"getDefaultProps was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Use a static property to define defaultProps instead.",this.getName()||"a component"),"production"!==t.env.NODE_ENV&&C(!b.propTypes,"propTypes was defined as an instance property on %s. Use a static property to define propTypes instead.",this.getName()||"a component"),"production"!==t.env.NODE_ENV&&C(!b.contextTypes,"contextTypes was defined as an instance property on %s. Use a static property to define contextTypes instead.",this.getName()||"a component"),"production"!==t.env.NODE_ENV&&C("function"!=typeof b.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.",this.getName()||"A component"),"production"!==t.env.NODE_ENV&&C("function"!=typeof b.componentDidUnmount,"%s has a method called componentDidUnmount(). But there is no such lifecycle method. Did you mean componentWillUnmount()?",this.getName()||"A component"),"production"!==t.env.NODE_ENV&&C("function"!=typeof b.componentWillRecieveProps,"%s has a method called componentWillRecieveProps(). Did you mean componentWillReceiveProps()?",this.getName()||"A component"));var T=b.state;void 0===T&&(b.state=T=null),("object"!=typeof T||Array.isArray(T))&&("production"!==t.env.NODE_ENV?_(!1,"%s.state: must be set to an object or null",this.getName()||"ReactCompositeComponent"):u("106",this.getName()||"ReactCompositeComponent")),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1;var k;return k=b.unstable_handleError?this.performInitialMountWithErrorHandling(f,n,c,e,p):this.performInitialMount(f,n,c,e,p),b.componentDidMount&&("production"!==t.env.NODE_ENV?e.getReactMountReady().enqueue(function(){s(function(){return b.componentDidMount()},d._debugID,"componentDidMount")}):e.getReactMountReady().enqueue(b.componentDidMount,b)),k},_constructComponent:function(e,n,o,r){if("production"===t.env.NODE_ENV)return this._constructComponentWithoutOwner(e,n,o,r);d.current=this;try{return this._constructComponentWithoutOwner(e,n,o,r)}finally{d.current=null}},_constructComponentWithoutOwner:function(e,n,o,r){var i=this._currentElement.type;return e?"production"!==t.env.NODE_ENV?s(function(){return new i(n,o,r)},this._debugID,"ctor"):new i(n,o,r):"production"!==t.env.NODE_ENV?s(function(){return i(n,o,r)},this._debugID,"render"):i(n,o,r)},performInitialMountWithErrorHandling:function(e,t,n,o,r){var i,a=o.checkpoint();try{i=this.performInitialMount(e,t,n,o,r)}catch(s){o.rollback(a),this._instance.unstable_handleError(s),this._pendingStateQueue&&(this._instance.state=this._processPendingState(this._instance.props,this._instance.context)),a=o.checkpoint(),this._renderedComponent.unmountComponent(!0),o.rollback(a),i=this.performInitialMount(e,t,n,o,r)}return i},performInitialMount:function(e,n,o,r,i){var a=this._instance,u=0;"production"!==t.env.NODE_ENV&&(u=this._debugID),a.componentWillMount&&("production"!==t.env.NODE_ENV?s(function(){return a.componentWillMount()},u,"componentWillMount"):a.componentWillMount(),this._pendingStateQueue&&(a.state=this._processPendingState(a.props,a.context))),void 0===e&&(e=this._renderValidatedComponent());var c=v.getType(e);this._renderedNodeType=c;var l=this._instantiateReactComponent(e,c!==v.EMPTY);this._renderedComponent=l;var p=g.mountComponent(l,r,n,o,this._processChildContext(i),u);if("production"!==t.env.NODE_ENV&&0!==u){var d=0!==l._debugID?[l._debugID]:[];m.debugTool.onSetChildren(u,d)}return p},getHostNode:function(){return g.getHostNode(this._renderedComponent)},unmountComponent:function(e){if(this._renderedComponent){var n=this._instance;if(n.componentWillUnmount&&!n._calledComponentWillUnmount)if(n._calledComponentWillUnmount=!0,e){var o=this.getName()+".componentWillUnmount()";f.invokeGuardedCallback(o,n.componentWillUnmount.bind(n))}else"production"!==t.env.NODE_ENV?s(function(){return n.componentWillUnmount()},this._debugID,"componentWillUnmount"):n.componentWillUnmount();this._renderedComponent&&(g.unmountComponent(this._renderedComponent,e),this._renderedNodeType=null,this._renderedComponent=null,this._instance=null),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._pendingCallbacks=null,this._pendingElement=null,this._context=null,this._rootNodeID=0,this._topLevelWrapper=null,h.remove(n)}},_maskContext:function(e){var t=this._currentElement.type,n=t.contextTypes;if(!n)return E;var o={};for(var r in n)o[r]=e[r];return o},_processContext:function(e){var n=this._maskContext(e);if("production"!==t.env.NODE_ENV){var o=this._currentElement.type;o.contextTypes&&this._checkContextTypes(o.contextTypes,n,"context")}return n},_processChildContext:function(e){var n,o=this._currentElement.type,r=this._instance;if(r.getChildContext)if("production"!==t.env.NODE_ENV){m.debugTool.onBeginProcessingChildContext();try{n=r.getChildContext()}finally{m.debugTool.onEndProcessingChildContext()}}else n=r.getChildContext();if(n){"object"!=typeof o.childContextTypes&&("production"!==t.env.NODE_ENV?_(!1,"%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().",this.getName()||"ReactCompositeComponent"):u("107",this.getName()||"ReactCompositeComponent")),"production"!==t.env.NODE_ENV&&this._checkContextTypes(o.childContextTypes,n,"childContext");for(var i in n)i in o.childContextTypes||("production"!==t.env.NODE_ENV?_(!1,'%s.getChildContext(): key "%s" is not defined in childContextTypes.',this.getName()||"ReactCompositeComponent",i):u("108",this.getName()||"ReactCompositeComponent",i));return c({},e,n)}return e},_checkContextTypes:function(e,n,o){"production"!==t.env.NODE_ENV&&y(e,n,o,this.getName(),null,this._debugID)},receiveComponent:function(e,t,n){var o=this._currentElement,r=this._context;this._pendingElement=null,this.updateComponent(t,o,e,r,n)},performUpdateIfNecessary:function(e){null!=this._pendingElement?g.receiveComponent(this,this._pendingElement,e,this._context):null!==this._pendingStateQueue||this._pendingForceUpdate?this.updateComponent(e,this._currentElement,this._currentElement,this._context,this._context):this._updateBatchNumber=null},updateComponent:function(e,n,o,r,i){var a=this._instance;null==a&&("production"!==t.env.NODE_ENV?_(!1,"Attempted to update component `%s` that has already been unmounted (or failed to mount).",this.getName()||"ReactCompositeComponent"):u("136",this.getName()||"ReactCompositeComponent"));var c,l=!1;this._context===i?c=a.context:(c=this._processContext(i),l=!0);var p=n.props,d=o.props;n!==o&&(l=!0),l&&a.componentWillReceiveProps&&("production"!==t.env.NODE_ENV?s(function(){return a.componentWillReceiveProps(d,c)},this._debugID,"componentWillReceiveProps"):a.componentWillReceiveProps(d,c));var f=this._processPendingState(d,c),h=!0;this._pendingForceUpdate||(a.shouldComponentUpdate?h="production"!==t.env.NODE_ENV?s(function(){return a.shouldComponentUpdate(d,f,c)},this._debugID,"shouldComponentUpdate"):a.shouldComponentUpdate(d,f,c):this._compositeType===D.PureClass&&(h=!N(p,d)||!N(a.state,f))),"production"!==t.env.NODE_ENV&&"production"!==t.env.NODE_ENV&&C(void 0!==h,"%s.shouldComponentUpdate(): Returned undefined instead of a boolean value. Make sure to return true or false.",this.getName()||"ReactCompositeComponent"),this._updateBatchNumber=null,h?(this._pendingForceUpdate=!1,this._performComponentUpdate(o,d,f,c,e,i)):(this._currentElement=o,this._context=i,a.props=d,a.state=f,a.context=c)},_processPendingState:function(e,t){var n=this._instance,o=this._pendingStateQueue,r=this._pendingReplaceState;if(this._pendingReplaceState=!1,this._pendingStateQueue=null,!o)return n.state;if(r&&1===o.length)return o[0];for(var i=c({},r?o[0]:n.state),a=r?1:0;a-1&&-1===navigator.userAgent.indexOf("Edge")||navigator.userAgent.indexOf("Firefox")>-1)){var h=-1===window.location.protocol.indexOf("http")&&-1===navigator.userAgent.indexOf("Firefox");console.debug("Download the React DevTools "+(h?"and use an HTTP server (instead of a file: URL) ":"")+"for a better development experience: https://fb.me/react-devtools")}var m=function(){};"production"!==t.env.NODE_ENV&&d(-1!==(m.name||m.toString()).indexOf("testFn"),"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.");var v=document.documentMode&&document.documentMode<8;"production"!==t.env.NODE_ENV&&d(!v,'Internet Explorer is running in compatibility mode; please add the following tag to your HTML to prevent this from happening: ');for(var g=[Array.isArray,Array.prototype.every,Array.prototype.forEach,Array.prototype.indexOf,Array.prototype.map,Date.now,Function.prototype.bind,Object.keys,String.prototype.trim],y=0;y",r(e),r(n)))}}function a(e,n){n&&(re[e._tag]&&(null!=n.children||null!=n.dangerouslySetInnerHTML)&&("production"!==t.env.NODE_ENV?F(!1,"%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s",e._tag,e._currentElement._owner?" Check the render method of "+e._currentElement._owner.getName()+".":""):g("137",e._tag,e._currentElement._owner?" Check the render method of "+e._currentElement._owner.getName()+".":"")),null!=n.dangerouslySetInnerHTML&&(null!=n.children&&("production"!==t.env.NODE_ENV?F(!1,"Can only set one of `children` or `props.dangerouslySetInnerHTML`."):g("60")),"object"==typeof n.dangerouslySetInnerHTML&&G in n.dangerouslySetInnerHTML||("production"!==t.env.NODE_ENV?F(!1,"`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information."):g("61"))),"production"!==t.env.NODE_ENV&&("production"!==t.env.NODE_ENV&&W(null==n.innerHTML,"Directly setting property `innerHTML` is not permitted. For more information, lookup documentation on `dangerouslySetInnerHTML`."),"production"!==t.env.NODE_ENV&&W(n.suppressContentEditableWarning||!n.contentEditable||null==n.children,"A component is `contentEditable` and contains `children` managed by React. It is now your responsibility to guarantee that none of those nodes are unexpectedly modified or duplicated. This is probably not intentional."),"production"!==t.env.NODE_ENV&&W(null==n.onFocusIn&&null==n.onFocusOut,"React uses onFocus and onBlur instead of onFocusIn and onFocusOut. All React events are normalized to bubble, so onFocusIn and onFocusOut are not needed/supported by React.")),null!=n.style&&"object"!=typeof n.style&&("production"!==t.env.NODE_ENV?F(!1,"The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.%s",o(e)):g("62",o(e))))}function s(e,n,o,r){if(!(r instanceof A)){"production"!==t.env.NODE_ENV&&"production"!==t.env.NODE_ENV&&W("onScroll"!==n||j("scroll",!0),"This browser doesn't support the `onScroll` event");var i=e._hostContainerInfo,a=i._node&&i._node.nodeType===J,s=a?i._node:i._ownerDocument;z(n,s),r.getReactMountReady().enqueue(u,{inst:e,registrationName:n,listener:o})}}function u(){var e=this;O.putListener(e.inst,e.registrationName,e.listener)}function c(){var e=this;I.postMountWrapper(e)}function l(){var e=this;V.postMountWrapper(e)}function p(){var e=this;P.postMountWrapper(e)}function d(){var e=this;e._rootNodeID||("production"!==t.env.NODE_ENV?F(!1,"Must be mounted to trap events"):g("63"));var n=K(e);switch(n||("production"!==t.env.NODE_ENV?F(!1,"trapBubbledEvent(...): Requires node to be rendered."):g("64")),e._tag){case"iframe":case"object":e._wrapperState.listeners=[x.trapBubbledEvent("topLoad","load",n)];break;case"video":case"audio":e._wrapperState.listeners=[];for(var o in te)te.hasOwnProperty(o)&&e._wrapperState.listeners.push(x.trapBubbledEvent(o,te[o],n));break;case"source":e._wrapperState.listeners=[x.trapBubbledEvent("topError","error",n)];break;case"img":e._wrapperState.listeners=[x.trapBubbledEvent("topError","error",n),x.trapBubbledEvent("topLoad","load",n)];break;case"form":e._wrapperState.listeners=[x.trapBubbledEvent("topReset","reset",n),x.trapBubbledEvent("topSubmit","submit",n)];break;case"input":case"select":case"textarea":e._wrapperState.listeners=[x.trapBubbledEvent("topInvalid","invalid",n)]}}function f(){S.postUpdateWrapper(this)}function h(e){se.call(ae,e)||(ie.test(e)||("production"!==t.env.NODE_ENV?F(!1,"Invalid tag: %s",e):g("65",e)),ae[e]=!0)}function m(e,t){return e.indexOf("-")>=0||null!=t.is}function v(e){var n=e.type;h(n),this._currentElement=e,this._tag=n.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,"production"!==t.env.NODE_ENV&&(this._ancestorInfo=null,ee.call(this,null))}var g=n(3),y=n(4),E=n(97),_=n(99),N=n(17),b=n(33),C=n(13),D=n(57),O=n(21),w=n(25),x=n(26),T=n(58),k=n(5),I=n(115),P=n(118),S=n(59),V=n(121),R=n(8),M=n(134),A=n(139),U=n(9),L=n(29),F=n(1),j=n(44),B=n(31),H=n(46),W=n(2),q=T,Y=O.deleteListener,K=k.getNodeFromInstance,z=x.listenTo,X=w.registrationNameModules,$={string:!0,number:!0},G="__html",Q={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null},J=11,Z={},ee=U;"production"!==t.env.NODE_ENV&&(ee=function(e){var t=null!=this._contentDebugID,n=this._debugID,o=-n;if(null==e)return t&&R.debugTool.onUnmountComponent(this._contentDebugID),void(this._contentDebugID=null);H(null,String(e),this,this._ancestorInfo),this._contentDebugID=o,t?(R.debugTool.onBeforeUpdateComponent(o,e),R.debugTool.onUpdateComponent(o)):(R.debugTool.onBeforeMountComponent(o,e,n),R.debugTool.onMountComponent(o),R.debugTool.onSetChildren(n,[o]))});var te={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"},ne={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},oe={listing:!0,pre:!0,textarea:!0},re=y({menuitem:!0},ne),ie=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,ae={},se={}.hasOwnProperty,ue=1;v.displayName="ReactDOMComponent",v.Mixin={mountComponent:function(e,n,o,r){this._rootNodeID=ue++,this._domID=o._idCounter++,this._hostParent=n,this._hostContainerInfo=o;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},e.getReactMountReady().enqueue(d,this);break;case"input":I.mountWrapper(this,i,n),i=I.getHostProps(this,i),e.getReactMountReady().enqueue(d,this);break;case"option":P.mountWrapper(this,i,n),i=P.getHostProps(this,i);break;case"select":S.mountWrapper(this,i,n),i=S.getHostProps(this,i),e.getReactMountReady().enqueue(d,this);break;case"textarea":V.mountWrapper(this,i,n),i=V.getHostProps(this,i),e.getReactMountReady().enqueue(d,this)}a(this,i);var s,u;if(null!=n?(s=n._namespaceURI,u=n._tag):o._tag&&(s=o._namespaceURI,u=o._tag),(null==s||s===b.svg&&"foreignobject"===u)&&(s=b.html),s===b.html&&("svg"===this._tag?s=b.svg:"math"===this._tag&&(s=b.mathml)),this._namespaceURI=s,"production"!==t.env.NODE_ENV){var f;null!=n?f=n._ancestorInfo:o._tag&&(f=o._ancestorInfo),f&&H(this._tag,null,this,f),this._ancestorInfo=H.updatedAncestorInfo(f,this._tag,this)}var h;if(e.useCreateElement){var m,v=o._ownerDocument;if(s===b.html)if("script"===this._tag){var g=v.createElement("div"),y=this._currentElement.type;g.innerHTML="<"+y+">",m=g.removeChild(g.firstChild)}else m=i.is?v.createElement(this._currentElement.type,i.is):v.createElement(this._currentElement.type);else m=v.createElementNS(s,this._currentElement.type);k.precacheNode(this,m),this._flags|=q.hasCachedChildNodes,this._hostParent||D.setAttributeForRoot(m),this._updateDOMProperties(null,i,e);var _=N(m);this._createInitialChildren(e,i,r,_),h=_}else{var C=this._createOpenTagMarkupAndPutListeners(e,i),O=this._createContentMarkup(e,i,r);h=!O&&ne[this._tag]?C+"/>":C+">"+O+""}switch(this._tag){case"input":e.getReactMountReady().enqueue(c,this),i.autoFocus&&e.getReactMountReady().enqueue(E.focusDOMComponent,this);break;case"textarea":e.getReactMountReady().enqueue(l,this),i.autoFocus&&e.getReactMountReady().enqueue(E.focusDOMComponent,this);break;case"select":case"button":i.autoFocus&&e.getReactMountReady().enqueue(E.focusDOMComponent,this);break;case"option":e.getReactMountReady().enqueue(p,this)}return h},_createOpenTagMarkupAndPutListeners:function(e,n){var o="<"+this._currentElement.type;for(var r in n)if(n.hasOwnProperty(r)){var i=n[r];if(null!=i)if(X.hasOwnProperty(r))i&&s(this,r,i,e);else{"style"===r&&(i&&("production"!==t.env.NODE_ENV&&(this._previousStyle=i),i=this._previousStyleCopy=y({},n.style)),i=_.createMarkupForStyles(i,this));var a=null;null!=this._tag&&m(this._tag,n)?Q.hasOwnProperty(r)||(a=D.createMarkupForCustomAttribute(r,i)):a=D.createMarkupForProperty(r,i),a&&(o+=" "+a)}}return e.renderToStaticMarkup?o:(this._hostParent||(o+=" "+D.createMarkupForRoot()),o+=" "+D.createMarkupForID(this._domID))},_createContentMarkup:function(e,n,o){var r="",i=n.dangerouslySetInnerHTML;if(null!=i)null!=i.__html&&(r=i.__html);else{var a=$[typeof n.children]?n.children:null,s=null!=a?null:n.children;if(null!=a)r=L(a),"production"!==t.env.NODE_ENV&&ee.call(this,a);else if(null!=s){var u=this.mountChildren(s,e,o);r=u.join("")}}return oe[this._tag]&&"\n"===r.charAt(0)?"\n"+r:r},_createInitialChildren:function(e,n,o,r){var i=n.dangerouslySetInnerHTML;if(null!=i)null!=i.__html&&N.queueHTML(r,i.__html);else{var a=$[typeof n.children]?n.children:null,s=null!=a?null:n.children;if(null!=a)""!==a&&("production"!==t.env.NODE_ENV&&ee.call(this,a),N.queueText(r,a));else if(null!=s)for(var u=this.mountChildren(s,e,o),c=0;c tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg , , and ) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.",this._tag):g("66",this._tag)}this.unmountChildren(e),k.uncacheNode(this),O.deleteAllListeners(this),this._rootNodeID=0,this._domID=0,this._wrapperState=null,"production"!==t.env.NODE_ENV&&ee.call(this,null)},getPublicInstance:function(){return K(this)}},y(v.prototype,v.Mixin,M.Mixin),e.exports=v}).call(t,n(0))},function(e,t,n){"use strict";(function(t){function o(e,n){var o={_topLevelWrapper:e,_idCounter:1,_ownerDocument:n?n.nodeType===i?n:n.ownerDocument:null,_node:n,_tag:n?n.nodeName.toLowerCase():null,_namespaceURI:n?n.namespaceURI:null};return"production"!==t.env.NODE_ENV&&(o._ancestorInfo=n?r.updatedAncestorInfo(null,o._tag,null):null),o}var r=n(46),i=9;e.exports=o}).call(t,n(0))},function(e,t,n){"use strict";var o=n(4),r=n(17),i=n(5),a=function(e){this._currentElement=null,this._hostNode=null,this._hostParent=null,this._hostContainerInfo=null,this._domID=0};o(a.prototype,{mountComponent:function(e,t,n,o){var a=n._idCounter++;this._domID=a,this._hostParent=t,this._hostContainerInfo=n;var s=" react-empty: "+this._domID+" ";if(e.useCreateElement){var u=n._ownerDocument,c=u.createComment(s);return i.precacheNode(this,c),r(c)}return e.renderToStaticMarkup?"":"\x3c!--"+s+"--\x3e"},receiveComponent:function(){},getHostNode:function(){return i.getNodeFromInstance(this)},unmountComponent:function(){i.uncacheNode(this)}}),e.exports=a},function(e,t,n){"use strict";var o={useCreateElement:!0,useFiber:!1};e.exports=o},function(e,t,n){"use strict";var o=n(32),r=n(5),i={dangerouslyProcessChildrenUpdates:function(e,t){var n=r.getNodeFromInstance(e);o.processUpdates(n,t)}};e.exports=i},function(e,t,n){"use strict";(function(t){function o(){this._rootNodeID&&_.updateWrapper(this)}function r(e){return"checkbox"===e.type||"radio"===e.type?null!=e.checked:null!=e.value}function i(e){var n=this._currentElement.props,r=c.executeOnChange(n,e);p.asap(o,this);var i=n.name;if("radio"===n.type&&null!=i){for(var s=l.getNodeFromInstance(this),u=s;u.parentNode;)u=u.parentNode;for(var f=u.querySelectorAll("input[name="+JSON.stringify(""+i)+'][type="radio"]'),h=0;h tag. For details, see https://fb.me/invalid-aria-prop%s",a,n.type,s.getStackAddendumByID(e)):r.length>1&&"production"!==t.env.NODE_ENV&&u(!1,"Invalid aria props %s on <%s> tag. For details, see https://fb.me/invalid-aria-prop%s",a,n.type,s.getStackAddendumByID(e))}function i(e,t){null!=t&&"string"==typeof t.type&&(t.type.indexOf("-")>=0||t.props.is||r(e,t))}var a=n(13),s=n(7),u=n(2),c={},l=new RegExp("^(aria)-["+a.ATTRIBUTE_NAME_CHAR+"]*$"),p={onBeforeMountComponent:function(e,n){"production"!==t.env.NODE_ENV&&i(e,n)},onBeforeUpdateComponent:function(e,n){"production"!==t.env.NODE_ENV&&i(e,n)}};e.exports=p}).call(t,n(0))},function(e,t,n){"use strict";(function(t){function o(e,n){null!=n&&("input"!==n.type&&"textarea"!==n.type&&"select"!==n.type||null==n.props||null!==n.props.value||a||("production"!==t.env.NODE_ENV&&i(!1,"`value` prop on `%s` should not be null. Consider using the empty string to clear the component or `undefined` for uncontrolled components.%s",n.type,r.getStackAddendumByID(e)),a=!0))}var r=n(7),i=n(2),a=!1,s={onBeforeMountComponent:function(e,t){o(e,t)},onBeforeUpdateComponent:function(e,t){o(e,t)}};e.exports=s}).call(t,n(0))},function(e,t,n){"use strict";(function(t){function o(e){var n="";return i.Children.forEach(e,function(e){null!=e&&("string"==typeof e||"number"==typeof e?n+=e:c||(c=!0,"production"!==t.env.NODE_ENV&&u(!1,"Only strings and numbers are supported as