Merge the latest version of Speedometer 2.0 to browserbench.org against at r222534.
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 29 Sep 2017 02:42:46 +0000 (02:42 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 29 Sep 2017 02:42:46 +0000 (02:42 +0000)
Rubber-stamped by Saam Barati (a while ago).

* Speedometer2.0: Replaced with PerformanceTests/Speedometer.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@222645 268f45cc-cd09-0410-ab3c-d52691b4dbfc

210 files changed:
Websites/browserbench.org/ChangeLog
Websites/browserbench.org/Speedometer2.0/InteractiveRunner.html
Websites/browserbench.org/Speedometer2.0/resources/benchmark-runner.js
Websites/browserbench.org/Speedometer2.0/resources/main.js
Websites/browserbench.org/Speedometer2.0/resources/tests.js
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/assets/css/todomvc-app.css
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/index.html
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/inline.3b7f8ce2e6bc2f77dd83.bundle.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/inline.28efc571905d42a672b0.bundle.js with 92% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/main.f1c5d33a6950c335064d.bundle.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/main.c82799edffc751aa6590.bundle.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/styles.d41d8cd98f00b204e980.bundle.css [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angular/src/assets/css/todomvc-app.css
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/index.css
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/base.js
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angularjs/package-lock.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angularjs/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angularjs/todomvc-index.html
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/backbone/js/app.js
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/assets/todomvc.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/assets/todomvc.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/assets/vendor.css [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/assets/vendor.css with 63% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/assets/vendor.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/assets/vendor.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/crossdomain.xml [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/crossdomain.xml with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/index.html [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/robots.txt [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/robots.txt with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/.bowerrc [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/.bowerrc with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/.editorconfig [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/.editorconfig with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/.ember-cli [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/.ember-cli with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/.gitignore [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/.gitignore with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/.jshintrc [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/.jshintrc with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/.travis.yml [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/.travis.yml with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/.watchmanconfig [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/.watchmanconfig with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/README.md [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/app.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/app.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/components/todo-item.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/components/todo-item.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/components/todo-list.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/components/todo-list.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/controllers/active.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/controllers/active.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/controllers/application.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/controllers/application.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/controllers/completed.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/controllers/completed.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/helpers/gt.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/helpers/gt.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/helpers/pluralize.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/helpers/pluralize.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/index.html [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/index.html with 50% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/instance-initializers/global.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/resolver.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/resolver.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/router.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/routes/application.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/routes/application.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/services/memory.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/services/memory.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/services/repo.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/services/repo.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/active.hbs [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/templates/active.hbs with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/application.hbs [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/templates/application.hbs with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/completed.hbs [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/templates/completed.hbs with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/components/todo-item.hbs [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/templates/components/todo-item.hbs with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/components/todo-list.hbs [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/templates/components/todo-list.hbs with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/index.hbs [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/templates/index.hbs with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/bower.json [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/config/environment.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/ember-cli-build.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/ember-cli-build.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/package.json [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/public/crossdomain.xml [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/dist/crossdomain.xml with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/public/robots.txt [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/dist/robots.txt with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/testem.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/testem.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/tests/.jshintrc [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/destroy-app.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/destroy-app.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/module-for-acceptance.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/resolver.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/resolver.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/start-app.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/tests/index.html [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/tests/index.html with 54% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/tests/test-helper.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/tests/test-helper.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/vendor/base.css [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/vendor/base.css with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/vendor/index.css [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/vendor/index.css with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/testem.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/tests/index.html [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/.bowerrc [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/.editorconfig [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/.ember-cli [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/.gitignore [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/.jshintrc [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/README.md
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/app.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/components/todo-item.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/components/todo-list.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/controllers/active.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/controllers/application.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/controllers/completed.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/helpers/gt.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/helpers/pluralize.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/index.html [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/index.html with 90% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/resolver.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/router.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/app/router.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/routes/application.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/services/memory.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/services/repo.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/styles/.gitkeep [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/active.hbs [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/application.hbs [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/completed.hbs [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/components/todo-item.hbs [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/components/todo-list.hbs [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/index.hbs [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/bower.json [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/bower.json with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/config/environment.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/config/environment.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/dist/assets/todomvc-5d3e8eb3d5b3740a33185edcb11eeb57.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/dist/assets/todomvc-7601ffca6150ed633f0f333fe76bfaf2.js with 56% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/dist/assets/vendor-820919567eb7bd4d9fac358a90a5aac4.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/dist/assets/vendor-820919567eb7bd4d9fac358a90a5aac4.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/dist/assets/vendor-a45c44bc56b4692cca4a96b6916c0fde.css [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/dist/crossdomain.xml [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/public/crossdomain.xml with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/dist/index.html [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/dist/index.html with 53% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/dist/robots.txt [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/public/robots.txt with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/ember-cli-build.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/package-lock.json [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/package-lock.json with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/package.json [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/package.json with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/public/crossdomain.xml [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/public/robots.txt [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/README.md [deleted file]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/dist/assets/vendor-7b5c98520910afa58d74e05ec86cd873.css [deleted file]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/testem.js
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/tests/helpers/destroy-app.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/tests/helpers/module-for-acceptance.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/module-for-acceptance.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/tests/helpers/resolver.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/tests/helpers/start-app.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/tests/helpers/start-app.js with 100% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/tests/index.html
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/tests/test-helper.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/vendor/base.css [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/vendor/index.css [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-app-css/index.css
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-app-css/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-common/base.js
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-common/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/inferno/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/jquery/index.html
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/jquery/js/app.js
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-app-css/index.css
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-app-css/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/base.js
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/jquery/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/asset-manifest.json [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/index.html
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/service-worker.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.21111742.css [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.21111742.css.map [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.f04a7319.css [deleted file]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.f04a7319.css.map [deleted file]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.18b409e1.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.18b409e1.js.map [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.69cd9655.js [deleted file]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.69cd9655.js.map [deleted file]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/package-lock.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/build/build.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/build/check-versions.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/build/dev-client.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/build/dev-server.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/build/utils.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/build/vue-loader.conf.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/build/webpack.base.conf.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/build/webpack.dev.conf.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/build/webpack.prod.conf.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/build/webpack.test.conf.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/index.html
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/css/app.5b47040a23ec3fcb78037de398c53557.css [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/css/app.5b47040a23ec3fcb78037de398c53557.css.map [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/css/app.dca4292ab322c1e7d51534e72981032e.css [deleted file]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/css/app.dca4292ab322c1e7d51534e72981032e.css.map [deleted file]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/app.d6ed8935438f44e9843a.js [deleted file]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/app.d6ed8935438f44e9843a.js.map [deleted file]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/app.e6c010d57d53537f4ad2.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/app.e6c010d57d53537f4ad2.js.map [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/manifest.a307c7f9a5da5dc72bb5.js [deleted file]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/manifest.aa9978aa96ee948f2a4c.js [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/manifest.aa9978aa96ee948f2a4c.js.map [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/manifest.a307c7f9a5da5dc72bb5.js.map with 95% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/vendor.2e4e9e528664fa796d3a.js.map [deleted file]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/vendor.e7008001a8bed009bbf1.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/vendor.2e4e9e528664fa796d3a.js with 74% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/vendor.e7008001a8bed009bbf1.js.map [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/package-lock.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/vuejs-cli/src/components/todo.css
Websites/browserbench.org/Speedometer2.0/resources/todomvc/dependency-examples/flight/flight/app/templates/stats.html
Websites/browserbench.org/Speedometer2.0/resources/todomvc/dependency-examples/flight/flight/index.html
Websites/browserbench.org/Speedometer2.0/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/index.css
Websites/browserbench.org/Speedometer2.0/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/base.js
Websites/browserbench.org/Speedometer2.0/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/dependency-examples/flight/flight/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/functional-prog-examples/elm/node_modules/todomvc-app-css/index.css
Websites/browserbench.org/Speedometer2.0/resources/todomvc/functional-prog-examples/elm/node_modules/todomvc-common/base.js
Websites/browserbench.org/Speedometer2.0/resources/todomvc/functional-prog-examples/elm/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.930ad8b83126862d7445.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.71bb1f671e4e65604d05.js with 98% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.930ad8b83126862d7445.js.map [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.71bb1f671e4e65604d05.js.map with 99% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.e81199b00da2921d9c94.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.2102040c9a6e04cc046e.js with 91% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.e81199b00da2921d9c94.js.map [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.2102040c9a6e04cc046e.js.map with 95% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.577c6bc09319b27fed34.js [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.b16cc08e016d07886f5f.js with 89% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.577c6bc09319b27fed34.js.map [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.b16cc08e016d07886f5f.js.map with 93% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/index.html
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.930ad8b83126862d7445.css [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.71bb1f671e4e65604d05.css with 80% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.930ad8b83126862d7445.css.map [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.71bb1f671e4e65604d05.css.map with 57% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.577c6bc09319b27fed34.css [new file with mode: 0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.577c6bc09319b27fed34.css.map [moved from Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.b16cc08e016d07886f5f.css.map with 55% similarity]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.b16cc08e016d07886f5f.css [deleted file]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/package-lock.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015-babel-webpack/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-app-css/index.css
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-app-css/package.json [changed mode: 0755->0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-app-css/readme.md [changed mode: 0755->0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/base.js
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/package.json [changed mode: 0755->0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/readme.md [changed mode: 0755->0644]
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/es2015/package.json
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/vanillajs/node_modules/todomvc-app-css/index.css
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/vanillajs/node_modules/todomvc-common/base.js
Websites/browserbench.org/Speedometer2.0/resources/todomvc/vanilla-examples/vanillajs/package.json

index 6280931..c276ae5 100644 (file)
@@ -1,3 +1,11 @@
+2017-09-28  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Merge the latest version of Speedometer 2.0 to browserbench.org against at r222534.
+
+        Rubber-stamped by Saam Barati (a while ago).
+
+        * Speedometer2.0: Replaced with PerformanceTests/Speedometer.
+
 2017-09-10  Jon Davis  <jond@apple.com>
 
         Minor design changes for browserbench.org landing page
index 20ca6a1..3e6f078 100644 (file)
@@ -141,7 +141,10 @@ function startTest() {
                 }
                 results += suiteName + ' : ' + suiteResults.total + ' ms\n';
             }
+            results += 'Arithmetic Mean : ' + measuredValues.mean  + ' ms\n';
+            results += 'Geometric Mean : ' + measuredValues.geomean  + ' ms\n';
             results += 'Total : ' + measuredValues.total + ' ms\n';
+            results += 'Score : ' + measuredValues.score + ' rpm\n';
 
             if (!results)
                 return;
index 1974b3f..47cedfc 100644 (file)
@@ -194,7 +194,7 @@ BenchmarkState.prototype.prepareCurrentSuite = function (runner, frame) {
 BenchmarkRunner.prototype.step = function (state) {
     if (!state) {
         state = new BenchmarkState(this._suites);
-        this._measuredValues = {tests: {}, total: 0};
+        this._measuredValues = {tests: {}, total: 0, mean: NaN, geomean: NaN, score: NaN};
     }
 
     var suite = state.currentSuite();
@@ -207,7 +207,6 @@ BenchmarkRunner.prototype.step = function (state) {
 
     if (state.isFirstTest()) {
         this._removeFrame();
-        this._masuredValuesForCurrentSuite = {};
         var self = this;
         return state.prepareCurrentSuite(this, this._appendFrame()).then(function (prepareReturnValue) {
             self._prepareReturnValue = prepareReturnValue;
@@ -260,7 +259,6 @@ BenchmarkRunner.prototype._runTestAndRecordResults = function (state) {
             self._measuredValues.tests[suite.name] = suiteResults;
             suiteResults.tests[test.name] = {tests: {'Sync': syncTime, 'Async': asyncTime}, total: total};
             suiteResults.total += total;
-            self._measuredValues.total += total;
 
             if (self._client && self._client.didRunTest)
                 self._client.didRunTest(suite, test);
@@ -275,8 +273,26 @@ BenchmarkRunner.prototype._runTestAndRecordResults = function (state) {
 BenchmarkRunner.prototype._finalize = function () {
     this._removeFrame();
 
-    if (this._client && this._client.didRunSuites)
+    if (this._client && this._client.didRunSuites) {
+        var product = 1;
+        var values = [];
+        for (var suiteName in this._measuredValues.tests) {
+            var suiteTotal = this._measuredValues.tests[suiteName].total;
+            product *= suiteTotal;
+            values.push(suiteTotal);
+        }
+
+        values.sort(function (a, b) { return a - b }); // Avoid the loss of significance for the sum.
+        var total = values.reduce(function (a, b) { return a + b });
+        var geomean = Math.pow(product, 1 / values.length);
+
+        var correctionFactor = 3; // This factor makes the test score look reasonably fit within 0 to 140.
+        this._measuredValues.total = total;
+        this._measuredValues.mean = total / values.length;
+        this._measuredValues.geomean = geomean;
+        this._measuredValues.score = 60 * 1000 / geomean / correctionFactor;
         this._client.didRunSuites(this._measuredValues);
+    }
 
     if (this._runNextIteration)
         this._runNextIteration();
index 59dc7e1..2ab8777 100644 (file)
@@ -1,9 +1,9 @@
 window.benchmarkClient = {
     displayUnit: 'runs/min',
     iterationCount: 10,
-    testsCount: null,
+    stepCount: null,
     suitesCount: null,
-    _timeValues: [],
+    _measuredValuesList: [],
     _finishedTestCount: 0,
     _progressCompleted: null,
     willAddTestFrame: function (frame) {
@@ -13,17 +13,17 @@ window.benchmarkClient = {
         frame.style.top = main.offsetTop + parseInt(style.borderTopWidth) + parseInt(style.paddingTop) + 'px';
     },
     willRunTest: function (suite, test) {
-        document.getElementById('info').textContent = suite.name + ' ( ' + this._finishedTestCount + ' / ' + this.testsCount + ' )';
+        document.getElementById('info').textContent = suite.name + ' ( ' + this._finishedTestCount + ' / ' + this.stepCount + ' )';
     },
     didRunTest: function () {
         this._finishedTestCount++;
-        this._progressCompleted.style.width = (this._finishedTestCount * 100 / this.testsCount) + '%';
+        this._progressCompleted.style.width = (this._finishedTestCount * 100 / this.stepCount) + '%';
     },
     didRunSuites: function (measuredValues) {
-        this._timeValues.push(measuredValues.total);
+        this._measuredValuesList.push(measuredValues);
     },
     willStartFirstIteration: function () {
-        this._timeValues = [];
+        this._measuredValuesList = [];
         this._finishedTestCount = 0;
         this._progressCompleted = document.getElementById('progress-completed');
         document.getElementById('logo-link').onclick = function (event) { event.preventDefault(); return false; }
@@ -31,7 +31,7 @@ window.benchmarkClient = {
     didFinishLastIteration: function () {
         document.getElementById('logo-link').onclick = null;
 
-        var results = this._computeResults(this._timeValues, this.displayUnit);
+        var results = this._computeResults(this._measuredValuesList, this.displayUnit);
 
         this._updateGaugeNeedle(results.mean);
         document.getElementById('result-number').textContent = results.formattedMean;
@@ -47,12 +47,12 @@ window.benchmarkClient = {
         } else
             showResultsSummary();
     },
-    _computeResults: function (timeValues, displayUnit) {
+    _computeResults: function (measuredValuesList, displayUnit) {
         var suitesCount = this.suitesCount;
-        function totalTimeInDisplayUnit(time) {
+        function valueForUnit(measuredValues) {
             if (displayUnit == 'ms')
-                return time;
-            return computeScore(time);
+                return measuredValues.geomean;
+            return measuredValues.score;
         }
 
         function sigFigFromPercentDelta(percentDelta) {
@@ -64,7 +64,7 @@ window.benchmarkClient = {
             return number.toPrecision(Math.max(nonDecimalDigitCount, Math.min(6, sigFig)));
         }
 
-        var values = timeValues.map(totalTimeInDisplayUnit);
+        var values = measuredValuesList.map(valueForUnit);
         var sum = values.reduce(function (a, b) { return a + b; }, 0);
         var arithmeticMean = sum / values.length;
         var meanSigFig = 4;
@@ -83,8 +83,8 @@ window.benchmarkClient = {
         var formattedMean = toSigFigPrecision(arithmeticMean, Math.max(meanSigFig, 3));
 
         return {
-            formattedValues: timeValues.map(function (time) {
-                return toSigFigPrecision(totalTimeInDisplayUnit(time), 4) + ' ' + displayUnit;
+            formattedValues: values.map(function (value) {
+                return toSigFigPrecision(value, 4) + ' ' + displayUnit;
             }),
             mean: arithmeticMean,
             formattedMean: formattedMean,
@@ -196,8 +196,8 @@ function startBenchmark() {
     }
 
     var enabledSuites = Suites.filter(function (suite) { return !suite.disabled; });
-    var totalSubtestCount = enabledSuites.reduce(function (testsCount, suite) { return testsCount + suite.tests.length; }, 0);
-    benchmarkClient.testsCount = benchmarkClient.iterationCount * totalSubtestCount;
+    var totalSubtestsCount = enabledSuites.reduce(function (testsCount, suite) { return testsCount + suite.tests.length; }, 0);
+    benchmarkClient.stepCount = benchmarkClient.iterationCount * totalSubtestsCount;
     benchmarkClient.suitesCount = enabledSuites.length;
     var runner = new BenchmarkRunner(Suites, benchmarkClient);
     runner.runMultipleIterations(benchmarkClient.iterationCount);
@@ -205,10 +205,6 @@ function startBenchmark() {
     return true;
 }
 
-function computeScore(time) {
-    return 60 * 1000 * benchmarkClient.suitesCount / time;
-}
-
 function showSection(sectionIdentifier, pushState) {
     var currentSectionElement = document.querySelector('section.selected');
     console.assert(currentSectionElement);
index dd9a6fa..c8261e3 100644 (file)
@@ -166,7 +166,36 @@ Suites.push({
 
 Suites.push({
     name: 'EmberJS-TodoMVC',
-    url: 'todomvc/architecture-examples/emberjs/index.html',
+    url: 'todomvc/architecture-examples/emberjs/dist/index.html',
+    prepare: function (runner, contentWindow, contentDocument) {
+        return runner.waitForElement('#new-todo').then(function (element) {
+            element.focus();
+            return element;
+        });
+    },
+    tests: [
+        new BenchmarkTestStep('Adding' + numberOfItemsToAdd + 'Items', function (newTodo, contentWindow, contentDocument) {
+            for (var i = 0; i < numberOfItemsToAdd; i++) {
+                newTodo.value = 'Something to do ' + i;
+                triggerEnter(newTodo, 'keydown');
+            }
+        }),
+        new BenchmarkTestStep('CompletingAllItems', function (params, contentWindow, contentDocument) {
+            var checkboxes = contentDocument.querySelectorAll('.toggle');
+            for (var i = 0; i < checkboxes.length; i++)
+                checkboxes[i].click();
+        }),
+        new BenchmarkTestStep('DeletingItems', function (params, contentWindow, contentDocument) {
+            var deleteButtons = contentDocument.querySelectorAll('.destroy');
+            for (var i = 0; i < deleteButtons.length; i++)
+                deleteButtons[i].click();
+        }),
+    ]
+});
+
+Suites.push({
+    name: 'EmberJS-Debug-TodoMVC',
+    url: 'todomvc/architecture-examples/emberjs-debug/index.html',
     prepare: function (runner, contentWindow, contentDocument) {
         return runner.waitForElement('#new-todo').then(function (element) {
             element.focus();
@@ -198,9 +227,10 @@ Suites.push({
     url: 'todomvc/architecture-examples/backbone/index.html',
     prepare: function (runner, contentWindow, contentDocument) {
     contentWindow.Backbone.sync = function () {}
-        return runner.waitForElement('.new-todo').then(function (element) {
-            element.focus();
-            return element;
+        return runner.waitForElement('#appIsReady').then(function (element) {
+            var newTodo = contentDocument.querySelector('.new-todo');
+            newTodo.focus();
+            return newTodo;
         });
     },
     tests: [
@@ -212,12 +242,12 @@ Suites.push({
         }),
         new BenchmarkTestStep('CompletingAllItems', function (newTodo, contentWindow, contentDocument) {
             var checkboxes = contentDocument.querySelectorAll('.toggle');
-            for (var i = 0; i < checkboxes.length; i++)
+            for (var i = 0; i < numberOfItemsToAdd; i++)
                 checkboxes[i].click();
         }),
         new BenchmarkTestStep('DeletingAllItems', function (newTodo, contentWindow, contentDocument) {
             var deleteButtons = contentDocument.querySelectorAll('.destroy');
-            for (var i = 0; i < deleteButtons.length; i++)
+            for (var i = 0; i < numberOfItemsToAdd; i++)
                 deleteButtons[i].click();
         }),
     ]
@@ -326,9 +356,10 @@ Suites.push({
     name: 'jQuery-TodoMVC',
     url: 'todomvc/architecture-examples/jquery/index.html',
     prepare: function (runner, contentWindow, contentDocument) {
-        return runner.waitForElement('#new-todo').then(function (element) {
-            element.focus();
-            return element;
+        return runner.waitForElement('#appIsReady').then(function (element) {
+            var newTodo = contentDocument.getElementById('new-todo');
+            newTodo.focus();
+            return newTodo;
         });
     },
     tests: [
index 10e3d2f..e04fbdb 100644 (file)
@@ -112,28 +112,32 @@ body {
     border-top: 1px solid #e6e6e6;
 }
 
-label[for='toggle-all'] {
-    display: none;
-}
-
 .toggle-all {
+    text-align: center;
+    border: none; /* Mobile Safari */
+    opacity: 0;
     position: absolute;
-    top: -55px;
-    left: -12px;
+}
+
+.toggle-all + label {
     width: 60px;
     height: 34px;
-    text-align: center;
-    border: none; /* Mobile Safari */
+    font-size: 0;
+    position: absolute;
+    top: -52px;
+    left: -13px;
+    -webkit-transform: rotate(90deg);
+    transform: rotate(90deg);
 }
 
-.toggle-all:before {
+.toggle-all + label:before {
     content: '❯';
     font-size: 22px;
     color: #e6e6e6;
     padding: 10px 27px 10px 27px;
 }
 
-.toggle-all:checked:before {
+.toggle-all:checked + label:before {
     color: #737373;
 }
 
@@ -183,18 +187,27 @@ label[for='toggle-all'] {
     appearance: none;
 }
 
-.todo-list li .toggle:after {
-    content: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="-10 -18 100 135"><circle cx="50" cy="50" r="50" fill="none" stroke="#ededed" stroke-width="3"/></svg>');
+.todo-list li .toggle {
+    opacity: 0;
 }
 
-.todo-list li .toggle:checked:after {
-    content: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="-10 -18 100 135"><circle cx="50" cy="50" r="50" fill="none" stroke="#bddad5" stroke-width="3"/><path fill="#5dc2af" d="M72 25L42 71 27 56l-4 4 20 20 34-52z"/></svg>');
+.todo-list li .toggle + label {
+    /*
+        Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433
+        IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/
+    */
+    background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E');
+    background-repeat: no-repeat;
+    background-position: center left;
+}
+
+.todo-list li .toggle:checked + label {
+    background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E');
 }
 
 .todo-list li label {
     word-break: break-all;
-    padding: 15px 60px 15px 15px;
-    margin-left: 45px;
+    padding: 15px 15px 15px 60px;
     display: block;
     line-height: 1.2;
     transition: color 0.4s;
@@ -350,13 +363,6 @@ html .clear-completed:active {
     .todo-list li .toggle {
         height: 40px;
     }
-
-    .toggle-all {
-        -webkit-transform: rotate(90deg);
-        transform: rotate(90deg);
-        -webkit-appearance: none;
-        appearance: none;
-    }
 }
 
 @media (max-width: 430px) {
index a2f2f4a..dacbe04 100644 (file)
@@ -11,5 +11,5 @@
 <body>
   <app-root>Loading...</app-root>
   <!-- Credits: Addy Osmani -->
-<script type="text/javascript" src="inline.28efc571905d42a672b0.bundle.js"></script><script type="text/javascript" src="polyfills.3a2aed82a0c9b24e6585.bundle.js"></script><script type="text/javascript" src="vendor.9a296bbc1909830a9106.bundle.js"></script><script type="text/javascript" src="main.c82799edffc751aa6590.bundle.js"></script></body>
+<script type="text/javascript" src="inline.3b7f8ce2e6bc2f77dd83.bundle.js"></script><script type="text/javascript" src="polyfills.3a2aed82a0c9b24e6585.bundle.js"></script><script type="text/javascript" src="vendor.9a296bbc1909830a9106.bundle.js"></script><script type="text/javascript" src="main.f1c5d33a6950c335064d.bundle.js"></script></body>
 </html>
@@ -1 +1 @@
-!function(e){function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var n=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var u,i,f,l=0,s=[];l<t.length;l++)i=t[l],o[i]&&s.push(o[i][0]),o[i]=0;for(u in c)Object.prototype.hasOwnProperty.call(c,u)&&(e[u]=c[u]);for(n&&n(t,c,a);s.length;)s.shift()();if(a)for(l=0;l<a.length;l++)f=r(r.s=a[l]);return f};var t={},o={4:0};r.e=function(e){function n(){c.onerror=c.onload=null,clearTimeout(a);var r=o[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),o[e]=void 0)}if(0===o[e])return Promise.resolve();if(o[e])return o[e][2];var t=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.charset="utf-8",c.async=!0,c.timeout=12e4,r.nc&&c.setAttribute("nonce",r.nc),c.src=r.p+""+e+"."+{0:"3a2aed82a0c9b24e6585",1:"c82799edffc751aa6590",2:"a63205ae4b55b180b58c"}[e]+".chunk.js";var a=setTimeout(n,12e4);c.onerror=c.onload=n;var u=new Promise(function(r,n){o[e]=[r,n]});return o[e][2]=u,t.appendChild(c),u},r.m=e,r.c=t,r.i=function(e){return e},r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
+!function(e){function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var n=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var u,i,f,l=0,s=[];l<t.length;l++)i=t[l],o[i]&&s.push(o[i][0]),o[i]=0;for(u in c)Object.prototype.hasOwnProperty.call(c,u)&&(e[u]=c[u]);for(n&&n(t,c,a);s.length;)s.shift()();if(a)for(l=0;l<a.length;l++)f=r(r.s=a[l]);return f};var t={},o={4:0};r.e=function(e){function n(){c.onerror=c.onload=null,clearTimeout(a);var r=o[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),o[e]=void 0)}if(0===o[e])return Promise.resolve();if(o[e])return o[e][2];var t=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.charset="utf-8",c.async=!0,c.timeout=12e4,r.nc&&c.setAttribute("nonce",r.nc),c.src=r.p+""+e+"."+{0:"3a2aed82a0c9b24e6585",1:"f1c5d33a6950c335064d",2:"a63205ae4b55b180b58c"}[e]+".chunk.js";var a=setTimeout(n,12e4);c.onerror=c.onload=n;var u=new Promise(function(r,n){o[e]=[r,n]});return o[e][2]=u,t.appendChild(c),u},r.m=e,r.c=t,r.i=function(e){return e},r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/styles.d41d8cd98f00b204e980.bundle.css b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/angular/dist/styles.d41d8cd98f00b204e980.bundle.css
new file mode 100644 (file)
index 0000000..e69de29
index 10e3d2f..e04fbdb 100644 (file)
@@ -112,28 +112,32 @@ body {
     border-top: 1px solid #e6e6e6;
 }
 
-label[for='toggle-all'] {
-    display: none;
-}
-
 .toggle-all {
+    text-align: center;
+    border: none; /* Mobile Safari */
+    opacity: 0;
     position: absolute;
-    top: -55px;
-    left: -12px;
+}
+
+.toggle-all + label {
     width: 60px;
     height: 34px;
-    text-align: center;
-    border: none; /* Mobile Safari */
+    font-size: 0;
+    position: absolute;
+    top: -52px;
+    left: -13px;
+    -webkit-transform: rotate(90deg);
+    transform: rotate(90deg);
 }
 
-.toggle-all:before {
+.toggle-all + label:before {
     content: '❯';
     font-size: 22px;
     color: #e6e6e6;
     padding: 10px 27px 10px 27px;
 }
 
-.toggle-all:checked:before {
+.toggle-all:checked + label:before {
     color: #737373;
 }
 
@@ -183,18 +187,27 @@ label[for='toggle-all'] {
     appearance: none;
 }
 
-.todo-list li .toggle:after {
-    content: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="-10 -18 100 135"><circle cx="50" cy="50" r="50" fill="none" stroke="#ededed" stroke-width="3"/></svg>');
+.todo-list li .toggle {
+    opacity: 0;
 }
 
-.todo-list li .toggle:checked:after {
-    content: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="-10 -18 100 135"><circle cx="50" cy="50" r="50" fill="none" stroke="#bddad5" stroke-width="3"/><path fill="#5dc2af" d="M72 25L42 71 27 56l-4 4 20 20 34-52z"/></svg>');
+.todo-list li .toggle + label {
+    /*
+        Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433
+        IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/
+    */
+    background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E');
+    background-repeat: no-repeat;
+    background-position: center left;
+}
+
+.todo-list li .toggle:checked + label {
+    background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E');
 }
 
 .todo-list li label {
     word-break: break-all;
-    padding: 15px 60px 15px 15px;
-    margin-left: 45px;
+    padding: 15px 15px 15px 60px;
     display: block;
     line-height: 1.2;
     transition: color 0.4s;
@@ -350,13 +363,6 @@ html .clear-completed:active {
     .todo-list li .toggle {
         height: 40px;
     }
-
-    .toggle-all {
-        -webkit-transform: rotate(90deg);
-        transform: rotate(90deg);
-        -webkit-appearance: none;
-        appearance: none;
-    }
 }
 
 @media (max-width: 430px) {
index 17ea180..e04fbdb 100644 (file)
@@ -17,8 +17,7 @@ button {
     -webkit-appearance: none;
     appearance: none;
     -webkit-font-smoothing: antialiased;
-    -moz-font-smoothing: antialiased;
-    font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
 }
 
 body {
@@ -30,21 +29,19 @@ body {
     max-width: 550px;
     margin: 0 auto;
     -webkit-font-smoothing: antialiased;
-    -moz-font-smoothing: antialiased;
-    font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
     font-weight: 300;
 }
 
-button,
-input[type="checkbox"] {
-    outline: none;
+:focus {
+    outline: 0;
 }
 
 .hidden {
     display: none;
 }
 
-#todoapp {
+.todoapp {
     background: #fff;
     margin: 130px 0 40px 0;
     position: relative;
@@ -52,25 +49,25 @@ input[type="checkbox"] {
                 0 25px 50px 0 rgba(0, 0, 0, 0.1);
 }
 
-#todoapp input::-webkit-input-placeholder {
+.todoapp input::-webkit-input-placeholder {
     font-style: italic;
     font-weight: 300;
     color: #e6e6e6;
 }
 
-#todoapp input::-moz-placeholder {
+.todoapp input::-moz-placeholder {
     font-style: italic;
     font-weight: 300;
     color: #e6e6e6;
 }
 
-#todoapp input::input-placeholder {
+.todoapp input::input-placeholder {
     font-style: italic;
     font-weight: 300;
     color: #e6e6e6;
 }
 
-#todoapp h1 {
+.todoapp h1 {
     position: absolute;
     top: -155px;
     width: 100%;
@@ -83,7 +80,7 @@ input[type="checkbox"] {
     text-rendering: optimizeLegibility;
 }
 
-#new-todo,
+.new-todo,
 .edit {
     position: relative;
     margin: 0;
@@ -93,88 +90,90 @@ input[type="checkbox"] {
     font-weight: inherit;
     line-height: 1.4em;
     border: 0;
-    outline: none;
     color: inherit;
     padding: 6px;
     border: 1px solid #999;
     box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2);
     box-sizing: border-box;
     -webkit-font-smoothing: antialiased;
-    -moz-font-smoothing: antialiased;
-    font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
 }
 
-#new-todo {
+.new-todo {
     padding: 16px 16px 16px 60px;
     border: none;
     background: rgba(0, 0, 0, 0.003);
     box-shadow: inset 0 -2px 1px rgba(0,0,0,0.03);
 }
 
-#main {
+.main {
     position: relative;
     z-index: 2;
     border-top: 1px solid #e6e6e6;
 }
 
-label[for='toggle-all'] {
-    display: none;
+.toggle-all {
+    text-align: center;
+    border: none; /* Mobile Safari */
+    opacity: 0;
+    position: absolute;
 }
 
-#toggle-all {
-    position: absolute;
-    top: -55px;
-    left: -12px;
+.toggle-all + label {
     width: 60px;
     height: 34px;
-    text-align: center;
-    border: none; /* Mobile Safari */
+    font-size: 0;
+    position: absolute;
+    top: -52px;
+    left: -13px;
+    -webkit-transform: rotate(90deg);
+    transform: rotate(90deg);
 }
 
-#toggle-all:before {
+.toggle-all + label:before {
     content: '❯';
     font-size: 22px;
     color: #e6e6e6;
     padding: 10px 27px 10px 27px;
 }
 
-#toggle-all:checked:before {
+.toggle-all:checked + label:before {
     color: #737373;
 }
 
-#todo-list {
+.todo-list {
     margin: 0;
     padding: 0;
     list-style: none;
 }
 
-#todo-list li {
+.todo-list li {
     position: relative;
     font-size: 24px;
     border-bottom: 1px solid #ededed;
 }
 
-#todo-list li:last-child {
+.todo-list li:last-child {
     border-bottom: none;
 }
 
-#todo-list li.editing {
+.todo-list li.editing {
     border-bottom: none;
     padding: 0;
 }
 
-#todo-list li.editing .edit {
+.todo-list li.editing .edit {
     display: block;
     width: 506px;
-    padding: 13px 17px 12px 17px;
+    padding: 12px 16px;
     margin: 0 0 0 43px;
 }
 
-#todo-list li.editing .view {
+.todo-list li.editing .view {
     display: none;
 }
 
-#todo-list li .toggle {
+.todo-list li .toggle {
     text-align: center;
     width: 40px;
     /* auto, since non-WebKit browsers doesn't support input styling */
@@ -188,30 +187,38 @@ label[for='toggle-all'] {
     appearance: none;
 }
 
-#todo-list li .toggle:after {
-    content: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="-10 -18 100 135"><circle cx="50" cy="50" r="50" fill="none" stroke="#ededed" stroke-width="3"/></svg>');
+.todo-list li .toggle {
+    opacity: 0;
+}
+
+.todo-list li .toggle + label {
+    /*
+        Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433
+        IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/
+    */
+    background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E');
+    background-repeat: no-repeat;
+    background-position: center left;
 }
 
-#todo-list li .toggle:checked:after {
-    content: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="-10 -18 100 135"><circle cx="50" cy="50" r="50" fill="none" stroke="#bddad5" stroke-width="3"/><path fill="#5dc2af" d="M72 25L42 71 27 56l-4 4 20 20 34-52z"/></svg>');
+.todo-list li .toggle:checked + label {
+    background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E');
 }
 
-#todo-list li label {
-    white-space: pre;
-    word-break: break-word;
-    padding: 15px 60px 15px 15px;
-    margin-left: 45px;
+.todo-list li label {
+    word-break: break-all;
+    padding: 15px 15px 15px 60px;
     display: block;
     line-height: 1.2;
     transition: color 0.4s;
 }
 
-#todo-list li.completed label {
+.todo-list li.completed label {
     color: #d9d9d9;
     text-decoration: line-through;
 }
 
-#todo-list li .destroy {
+.todo-list li .destroy {
     display: none;
     position: absolute;
     top: 0;
@@ -226,27 +233,27 @@ label[for='toggle-all'] {
     transition: color 0.2s ease-out;
 }
 
-#todo-list li .destroy:hover {
+.todo-list li .destroy:hover {
     color: #af5b5e;
 }
 
-#todo-list li .destroy:after {
+.todo-list li .destroy:after {
     content: '×';
 }
 
-#todo-list li:hover .destroy {
+.todo-list li:hover .destroy {
     display: block;
 }
 
-#todo-list li .edit {
+.todo-list li .edit {
     display: none;
 }
 
-#todo-list li.editing:last-child {
+.todo-list li.editing:last-child {
     margin-bottom: -1px;
 }
 
-#footer {
+.footer {
     color: #777;
     padding: 10px 15px;
     height: 20px;
@@ -254,7 +261,7 @@ label[for='toggle-all'] {
     border-top: 1px solid #e6e6e6;
 }
 
-#footer:before {
+.footer:before {
     content: '';
     position: absolute;
     right: 0;
@@ -269,16 +276,16 @@ label[for='toggle-all'] {
                 0 17px 2px -6px rgba(0, 0, 0, 0.2);
 }
 
-#todo-count {
+.todo-count {
     float: left;
     text-align: left;
 }
 
-#todo-count strong {
+.todo-count strong {
     font-weight: 300;
 }
 
-#filters {
+.filters {
     margin: 0;
     padding: 0;
     list-style: none;
@@ -287,11 +294,11 @@ label[for='toggle-all'] {
     left: 0;
 }
 
-#filters li {
+.filters li {
     display: inline;
 }
 
-#filters li a {
+.filters li a {
     color: inherit;
     margin: 3px;
     padding: 3px 7px;
@@ -300,30 +307,28 @@ label[for='toggle-all'] {
     border-radius: 3px;
 }
 
-#filters li a.selected,
-#filters li a:hover {
+.filters li a:hover {
     border-color: rgba(175, 47, 47, 0.1);
 }
 
-#filters li a.selected {
+.filters li a.selected {
     border-color: rgba(175, 47, 47, 0.2);
 }
 
-#clear-completed,
-html #clear-completed:active {
+.clear-completed,
+html .clear-completed:active {
     float: right;
     position: relative;
     line-height: 20px;
     text-decoration: none;
     cursor: pointer;
-    position: relative;
 }
 
-#clear-completed:hover {
+.clear-completed:hover {
     text-decoration: underline;
 }
 
-#info {
+.info {
     margin: 65px auto 0;
     color: #bfbfbf;
     font-size: 10px;
@@ -331,17 +336,17 @@ html #clear-completed:active {
     text-align: center;
 }
 
-#info p {
+.info p {
     line-height: 1;
 }
 
-#info a {
+.info a {
     color: inherit;
     text-decoration: none;
     font-weight: 400;
 }
 
-#info a:hover {
+.info a:hover {
     text-decoration: underline;
 }
 
@@ -350,29 +355,22 @@ html #clear-completed:active {
     Can't use it globally since it destroys checkboxes in Firefox
 */
 @media screen and (-webkit-min-device-pixel-ratio:0) {
-    #toggle-all,
-    #todo-list li .toggle {
+    .toggle-all,
+    .todo-list li .toggle {
         background: none;
     }
 
-    #todo-list li .toggle {
+    .todo-list li .toggle {
         height: 40px;
     }
-
-    #toggle-all {
-        -webkit-transform: rotate(90deg);
-        transform: rotate(90deg);
-        -webkit-appearance: none;
-        appearance: none;
-    }
 }
 
 @media (max-width: 430px) {
-    #footer {
+    .footer {
         height: 50px;
     }
 
-    #filters {
+    .filters {
         bottom: 10px;
     }
 }
index 0a6c760..1183655 100644 (file)
@@ -1,27 +1,27 @@
 {
-  "_from": "todomvc-app-css@^1.0.1",
-  "_id": "todomvc-app-css@1.0.4",
+  "_from": "todomvc-app-css@^2.1.0",
+  "_id": "todomvc-app-css@2.1.0",
   "_inBundle": false,
-  "_integrity": "sha1-0lKSeabaW++wa1XAwyTF/P2U1lY=",
+  "_integrity": "sha1-tvJxbTOa+i5feZNH0qSLBTliQqU=",
   "_location": "/todomvc-app-css",
   "_phantomChildren": {},
   "_requested": {
     "type": "range",
     "registry": true,
-    "raw": "todomvc-app-css@^1.0.1",
+    "raw": "todomvc-app-css@^2.1.0",
     "name": "todomvc-app-css",
     "escapedName": "todomvc-app-css",
-    "rawSpec": "^1.0.1",
+    "rawSpec": "^2.1.0",
     "saveSpec": null,
-    "fetchSpec": "^1.0.1"
+    "fetchSpec": "^2.1.0"
   },
   "_requiredBy": [
     "/"
   ],
-  "_resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-1.0.4.tgz",
-  "_shasum": "d2529279a6da5befb06b55c0c324c5fcfd94d656",
-  "_spec": "todomvc-app-css@^1.0.1",
-  "_where": "/Users/mathiasb/projects/WebKit-Git/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs",
+  "_resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-2.1.0.tgz",
+  "_shasum": "b6f2716d339afa2e5f799347d2a48b05396242a5",
+  "_spec": "todomvc-app-css@^2.1.0",
+  "_where": "/Users/mathiasb/projects/WebKit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs",
   "author": {
     "name": "Sindre Sorhus",
     "email": "sindresorhus@gmail.com",
@@ -53,5 +53,6 @@
     "type": "git",
     "url": "git+https://github.com/tastejs/todomvc-app-css.git"
   },
-  "version": "1.0.4"
+  "style": "index.css",
+  "version": "2.1.0"
 }
index 81e006b..e1676db 100644 (file)
@@ -21,7 +21,7 @@
                 }
             }
             return object;
-        }
+        };
 
         // By default, Underscore uses ERB-style template delimiters, change the
         // following template settings to use alternative delimiters.
index 5020df4..2d242a3 100644 (file)
@@ -1,27 +1,27 @@
 {
-  "_from": "todomvc-common@^1.0.0",
-  "_id": "todomvc-common@1.0.3",
+  "_from": "todomvc-common@^1.0.4",
+  "_id": "todomvc-common@1.0.4",
   "_inBundle": false,
-  "_integrity": "sha1-y6GGgQnKpAG5COv3d5TMEBS3SHM=",
+  "_integrity": "sha512-AA0Z4exovEqubhbZCrzzn9roVT4zvOncS319p2zIc4CsNe5B9TLL7Sei1NIV6d+WrgR5rOi+y0I9Y6GE7xgNOw==",
   "_location": "/todomvc-common",
   "_phantomChildren": {},
   "_requested": {
     "type": "range",
     "registry": true,
-    "raw": "todomvc-common@^1.0.0",
+    "raw": "todomvc-common@^1.0.4",
     "name": "todomvc-common",
     "escapedName": "todomvc-common",
-    "rawSpec": "^1.0.0",
+    "rawSpec": "^1.0.4",
     "saveSpec": null,
-    "fetchSpec": "^1.0.0"
+    "fetchSpec": "^1.0.4"
   },
   "_requiredBy": [
     "/"
   ],
-  "_resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.3.tgz",
-  "_shasum": "cba1868109caa401b908ebf77794cc1014b74873",
-  "_spec": "todomvc-common@^1.0.0",
-  "_where": "/Users/mathiasb/projects/WebKit-Git/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs",
+  "_resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.4.tgz",
+  "_shasum": "23099af886c2f0525bfd4537e078f12d0074309e",
+  "_spec": "todomvc-common@^1.0.4",
+  "_where": "/Users/mathiasb/projects/WebKit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs",
   "author": {
     "name": "TasteJS"
   },
@@ -50,5 +50,5 @@
     "url": "git+https://github.com/tastejs/todomvc-common.git"
   },
   "style": "base.css",
-  "version": "1.0.3"
+  "version": "1.0.4"
 }
index 457fed4..ecba40a 100644 (file)
       "integrity": "sha1-r0VZMpn1WHTQJhAYrbEVIKOBfSo="
     },
     "todomvc-app-css": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-1.0.4.tgz",
-      "integrity": "sha1-0lKSeabaW++wa1XAwyTF/P2U1lY="
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-2.1.0.tgz",
+      "integrity": "sha1-tvJxbTOa+i5feZNH0qSLBTliQqU="
     },
     "todomvc-common": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.3.tgz",
-      "integrity": "sha1-y6GGgQnKpAG5COv3d5TMEBS3SHM="
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.4.tgz",
+      "integrity": "sha512-AA0Z4exovEqubhbZCrzzn9roVT4zvOncS319p2zIc4CsNe5B9TLL7Sei1NIV6d+WrgR5rOi+y0I9Y6GE7xgNOw=="
     }
   }
 }
index ec48b84..7aef1a4 100644 (file)
@@ -7,7 +7,7 @@
     "angular": "1.6.5",
     "angular-resource": "1.6.5",
     "angular-route": "1.6.5",
-    "todomvc-app-css": "^1.0.1",
-    "todomvc-common": "^1.0.0"
+    "todomvc-app-css": "^2.1.0",
+    "todomvc-common": "^1.0.4"
   }
 }
index d6e3b1c..b3cbbb2 100644 (file)
@@ -1,14 +1,14 @@
-<section id="todoapp">
+<section id="todoapp" class="todoapp">
     <header id="header">
         <h1>todos</h1>
-        <form id="todo-form" ng-submit="addTodo()">
-            <input id="new-todo" placeholder="What needs to be done?" ng-model="newTodo" ng-disabled="saving" autofocus>
+        <form id="todo-form" class="todo-form" ng-submit="addTodo()">
+            <input id="new-todo" class="new-todo" placeholder="What needs to be done?" ng-model="newTodo" ng-disabled="saving" autofocus>
         </form>
     </header>
-    <section id="main" ng-show="todos.length" ng-cloak>
-        <input id="toggle-all" type="checkbox" ng-model="allChecked" ng-click="markAll(allChecked)">
+    <section id="main" class="main" ng-show="todos.length" ng-cloak>
+        <input id="toggle-all" class="toggle-all" type="checkbox" ng-model="allChecked" ng-click="markAll(allChecked)">
         <label for="toggle-all">Mark all as complete</label>
-        <ul id="todo-list">
+        <ul id="todo-list" class="todo-list">
             <li ng-repeat="todo in todos | filter:statusFilter track by $index" ng-class="{completed: todo.completed, editing: todo == editedTodo}">
                 <div class="view">
                     <input class="toggle" type="checkbox" ng-model="todo.completed" ng-change="toggleCompleted(todo)">
             </li>
         </ul>
     </section>
-    <footer id="footer" ng-show="todos.length" ng-cloak>
-        <span id="todo-count"><strong>{{remainingCount}}</strong>
-                        <ng-pluralize count="remainingCount" when="{ one: 'item left', other: 'items left' }"></ng-pluralize>
-                    </span>
-        <ul id="filters">
+    <footer id="footer" class="footer" ng-show="todos.length" ng-cloak>
+        <span id="todo-count" class="todo-count"><strong>{{remainingCount}}</strong>
+            <ng-pluralize count="remainingCount" when="{ one: 'item left', other: 'items left' }"></ng-pluralize>
+        </span>
+        <ul id="filters" class="filters">
             <li>
                 <a ng-class="{selected: status == ''} " href="#/">All</a>
             </li>
                 <a ng-class="{selected: status == 'completed'}" href="#/completed">Completed</a>
             </li>
         </ul>
-        <button id="clear-completed" ng-click="clearCompletedTodos()" ng-show="completedCount">Clear completed</button>
+        <button id="clear-completed" class="clear-completed" ng-click="clearCompletedTodos()" ng-show="completedCount">Clear completed</button>
     </footer>
 </section>
-<footer id="info">
+<footer id="info" class="info">
     <p>Double-click to edit a todo</p>
     <p>Credits:
-        <a href="http://twitter.com/cburgdorf">Christoph Burgdorf</a>,
+        <a href="https://twitter.com/cburgdorf">Christoph Burgdorf</a>,
         <a href="http://ericbidelman.com">Eric Bidelman</a>,
         <a href="http://jacobmumm.com">Jacob Mumm</a> and
         <a href="http://blog.igorminar.com">Igor Minar</a>
     </p>
     <p>Part of <a href="http://todomvc.com">TodoMVC</a></p>
-</footer>
\ No newline at end of file
+</footer>
index 1e139d3..4c4bde3 100644 (file)
@@ -9,4 +9,8 @@ $(function () {
 
     // kick things off by creating the `App`
     window.appView = new app.AppView();
+
+    var dummyNodeToNotifyAppIsReady = document.createElement('div');
+    dummyNodeToNotifyAppIsReady.id = 'appIsReady';
+    document.body.appendChild(dummyNodeToNotifyAppIsReady);
 });
@@ -1,145 +1,3 @@
-hr {
-    margin: 20px 0;
-    border: 0;
-    border-top: 1px dashed #c5c5c5;
-    border-bottom: 1px dashed #f7f7f7;
-}
-
-.learn a {
-    font-weight: normal;
-    text-decoration: none;
-    color: #b83f45;
-}
-
-.learn a:hover {
-    text-decoration: underline;
-    color: #787e7e;
-}
-
-.learn h3,
-.learn h4,
-.learn h5 {
-    margin: 10px 0;
-    font-weight: 500;
-    line-height: 1.2;
-    color: #000;
-}
-
-.learn h3 {
-    font-size: 24px;
-}
-
-.learn h4 {
-    font-size: 18px;
-}
-
-.learn h5 {
-    margin-bottom: 0;
-    font-size: 14px;
-}
-
-.learn ul {
-    padding: 0;
-    margin: 0 0 30px 25px;
-}
-
-.learn li {
-    line-height: 20px;
-}
-
-.learn p {
-    font-size: 15px;
-    font-weight: 300;
-    line-height: 1.3;
-    margin-top: 0;
-    margin-bottom: 0;
-}
-
-#issue-count {
-    display: none;
-}
-
-.quote {
-    border: none;
-    margin: 20px 0 60px 0;
-}
-
-.quote p {
-    font-style: italic;
-}
-
-.quote p:before {
-    content: '“';
-    font-size: 50px;
-    opacity: .15;
-    position: absolute;
-    top: -20px;
-    left: 3px;
-}
-
-.quote p:after {
-    content: '”';
-    font-size: 50px;
-    opacity: .15;
-    position: absolute;
-    bottom: -42px;
-    right: 3px;
-}
-
-.quote footer {
-    position: absolute;
-    bottom: -40px;
-    right: 0;
-}
-
-.quote footer img {
-    border-radius: 3px;
-}
-
-.quote footer a {
-    margin-left: 5px;
-    vertical-align: middle;
-}
-
-.speech-bubble {
-    position: relative;
-    padding: 10px;
-    background: rgba(0, 0, 0, .04);
-    border-radius: 5px;
-}
-
-.speech-bubble:after {
-    content: '';
-    position: absolute;
-    top: 100%;
-    right: 30px;
-    border: 13px solid transparent;
-    border-top-color: rgba(0, 0, 0, .04);
-}
-
-.learn-bar > .learn {
-    position: absolute;
-    width: 272px;
-    top: 8px;
-    left: -300px;
-    padding: 10px;
-    border-radius: 5px;
-    background-color: rgba(255, 255, 255, .6);
-    transition-property: left;
-    transition-duration: 500ms;
-}
-
-@media (min-width: 899px) {
-    .learn-bar {
-        width: auto;
-        padding-left: 300px;
-    }
-
-    .learn-bar > .learn {
-        left: 8px;
-    }
-}
-
 html,
 body {
     margin: 0;
@@ -159,8 +17,7 @@ button {
     -webkit-appearance: none;
     appearance: none;
     -webkit-font-smoothing: antialiased;
-    -moz-font-smoothing: antialiased;
-    font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
 }
 
 body {
@@ -172,14 +29,12 @@ body {
     max-width: 550px;
     margin: 0 auto;
     -webkit-font-smoothing: antialiased;
-    -moz-font-smoothing: antialiased;
-    font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
     font-weight: 300;
 }
 
-button,
-input[type="checkbox"] {
-    outline: none;
+:focus {
+    outline: 0;
 }
 
 .hidden {
@@ -235,15 +90,13 @@ input[type="checkbox"] {
     font-weight: inherit;
     line-height: 1.4em;
     border: 0;
-    outline: none;
     color: inherit;
     padding: 6px;
     border: 1px solid #999;
     box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2);
     box-sizing: border-box;
     -webkit-font-smoothing: antialiased;
-    -moz-font-smoothing: antialiased;
-    font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
 }
 
 #new-todo {
@@ -259,28 +112,32 @@ input[type="checkbox"] {
     border-top: 1px solid #e6e6e6;
 }
 
-label[for='toggle-all'] {
-    display: none;
-}
-
 #toggle-all {
+    text-align: center;
+    border: none; /* Mobile Safari */
+    opacity: 0;
     position: absolute;
-    top: -55px;
-    left: -12px;
+}
+
+#toggle-all + label {
     width: 60px;
     height: 34px;
-    text-align: center;
-    border: none; /* Mobile Safari */
+    font-size: 0;
+    position: absolute;
+    top: -52px;
+    left: -13px;
+    -webkit-transform: rotate(90deg);
+    transform: rotate(90deg);
 }
 
-#toggle-all:before {
+#toggle-all + label:before {
     content: '❯';
     font-size: 22px;
     color: #e6e6e6;
     padding: 10px 27px 10px 27px;
 }
 
-#toggle-all:checked:before {
+#toggle-all:checked + label:before {
     color: #737373;
 }
 
@@ -308,7 +165,7 @@ label[for='toggle-all'] {
 #todo-list li.editing .edit {
     display: block;
     width: 506px;
-    padding: 13px 17px 12px 17px;
+    padding: 12px 16px;
     margin: 0 0 0 43px;
 }
 
@@ -330,19 +187,27 @@ label[for='toggle-all'] {
     appearance: none;
 }
 
-#todo-list li .toggle:after {
-    content: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="-10 -18 100 135"><circle cx="50" cy="50" r="50" fill="none" stroke="#ededed" stroke-width="3"/></svg>');
+#todo-list li .toggle {
+    opacity: 0;
+}
+
+#todo-list li .toggle + label {
+    /*
+        Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433
+        IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/
+    */
+    background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E');
+    background-repeat: no-repeat;
+    background-position: center left;
 }
 
-#todo-list li .toggle:checked:after {
-    content: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="-10 -18 100 135"><circle cx="50" cy="50" r="50" fill="none" stroke="#bddad5" stroke-width="3"/><path fill="#5dc2af" d="M72 25L42 71 27 56l-4 4 20 20 34-52z"/></svg>');
+#todo-list li .toggle:checked + label {
+    background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E');
 }
 
 #todo-list li label {
-    white-space: pre;
-    word-break: break-word;
-    padding: 15px 60px 15px 15px;
-    margin-left: 45px;
+    word-break: break-all;
+    padding: 15px 15px 15px 60px;
     display: block;
     line-height: 1.2;
     transition: color 0.4s;
@@ -442,7 +307,6 @@ label[for='toggle-all'] {
     border-radius: 3px;
 }
 
-#filters li a.selected,
 #filters li a:hover {
     border-color: rgba(175, 47, 47, 0.1);
 }
@@ -458,7 +322,6 @@ html #clear-completed:active {
     line-height: 20px;
     text-decoration: none;
     cursor: pointer;
-    position: relative;
 }
 
 #clear-completed:hover {
@@ -500,13 +363,6 @@ html #clear-completed:active {
     #todo-list li .toggle {
         height: 40px;
     }
-
-    #toggle-all {
-        -webkit-transform: rotate(90deg);
-        transform: rotate(90deg);
-        -webkit-appearance: none;
-        appearance: none;
-    }
 }
 
 @media (max-width: 430px) {
@@ -518,4 +374,3 @@ html #clear-completed:active {
         bottom: 10px;
     }
 }
-
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/index.html b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/index.html
new file mode 100644 (file)
index 0000000..ed2a1cf
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <title>Todomvc</title>
+    <meta name="description" content="">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+   
+<meta name="todomvc/config/environment" content="%7B%22modulePrefix%22%3A%22todomvc%22%2C%22environment%22%3A%22development%22%2C%22locationType%22%3A%22none%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%7D%2C%22APP%22%3A%7B%22name%22%3A%22todomvc%22%2C%22version%22%3A%220.0.0%202c3f8158%22%7D%2C%22exportApplicationGlobal%22%3Atrue%7D" />
+
+    <link rel="stylesheet" href="assets/vendor.css">
+
+    
+  </head>
+  <body>
+    
+
+    <script src="assets/vendor.js"></script>
+    <script src="assets/todomvc.js"></script>
+
+    
+  </body>
+</html>
\ No newline at end of file
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/README.md b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/README.md
new file mode 100644 (file)
index 0000000..5bd8a83
--- /dev/null
@@ -0,0 +1,15 @@
+# Ember.js TodoMVC Example using Ember CLI
+
+> A framework for creating ambitious web applications.
+
+> _[Ember.js - emberjs.com](http://emberjs.com)_
+> _[Ember CLI - ember-cli.com](http://ember-cli.com)_
+
+## Note for people updating this app.
+
+The `index.html` and the `assets` folder in the parent folder as simlinks into the items with the
+same names inside `dist`. The `dist` folder has to be checked in git and built for production.
+
+To work on this comment `<base href="/examples/ember-cli/index.html" />` in the `app/index.html`
+and uncommented it back before doing the production build.
+
@@ -3,15 +3,22 @@
   <head>
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>Ember.js TodoMVC example</title>
+    <title>Todomvc</title>
     <meta name="description" content="">
     <meta name="viewport" content="width=device-width, initial-scale=1">
-    <meta name="todomvc/config/environment" content="%7B%22modulePrefix%22%3A%22todomvc%22%2C%22environment%22%3A%22development%22%2C%22baseURL%22%3Anull%2C%22locationType%22%3A%22hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%7D%7D%2C%22APP%22%3A%7B%22name%22%3A%22todomvc%22%2C%22version%22%3A%220.0.0+32a851f1%22%7D%2C%22exportApplicationGlobal%22%3Atrue%7D" />
+    {{content-for "head"}}
+
     <link rel="stylesheet" href="assets/vendor.css">
     <link rel="stylesheet" href="assets/todomvc.css">
+
+    {{content-for "head-footer"}}
   </head>
   <body>
+    {{content-for "body"}}
+
     <script src="assets/vendor.js"></script>
     <script src="assets/todomvc.js"></script>
+
+    {{content-for "body-footer"}}
   </body>
 </html>
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/instance-initializers/global.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/instance-initializers/global.js
new file mode 100644 (file)
index 0000000..34c9a9d
--- /dev/null
@@ -0,0 +1,10 @@
+// app/instance-initializers/global.js
+
+export function initialize(application) {
+  window.App = application;  // or window.Whatever
+}
+
+export default {
+  name: 'global',
+  initialize: initialize
+};
\ No newline at end of file
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/router.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/app/router.js
new file mode 100644 (file)
index 0000000..4c60bf9
--- /dev/null
@@ -0,0 +1,13 @@
+import Ember from 'ember';
+import config from './config/environment';
+
+const Router = Ember.Router.extend({
+    location: config.locationType
+});
+
+Router.map(function () {
+    this.route('active');
+    this.route('completed');
+});
+
+export default Router;
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/bower.json b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/bower.json
new file mode 100644 (file)
index 0000000..220a001
--- /dev/null
@@ -0,0 +1,9 @@
+{
+  "name": "todomvc",
+  "dependencies": {
+    "ember": "~2.6.0",
+    "ember-cli-shims": "0.1.1",
+    "ember-cli-test-loader": "0.2.2",
+    "ember-qunit-notifications": "0.1.0"
+  }
+}
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/config/environment.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/config/environment.js
new file mode 100644 (file)
index 0000000..59744b3
--- /dev/null
@@ -0,0 +1,47 @@
+/* jshint node: true */
+
+module.exports = function (environment) {
+    var ENV = {
+        modulePrefix: 'todomvc',
+        environment: environment,
+        baseURL: null,
+        locationType: 'auto',
+        EmberENV: {
+            FEATURES: {
+                // Here you can enable experimental features on an ember canary build
+                // e.g. 'with-controller': true
+            }
+        },
+
+        APP: {
+            // Here you can pass flags/options to your application instance
+            // when it is created
+        }
+    };
+
+    // if (environment === 'development') {
+    //  ENV.APP.LOG_RESOLVER = true;
+    //  ENV.APP.LOG_ACTIVE_GENERATION = true;
+    //  ENV.APP.LOG_TRANSITIONS = true;
+    //  ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
+    //  ENV.APP.LOG_VIEW_LOOKUPS = true;
+    // }
+
+    if (environment === 'test') {
+        // Testem prefers this...
+        ENV.baseURL = '/';
+        ENV.locationType = 'none';
+
+        // keep test console output quieter
+        ENV.APP.LOG_ACTIVE_GENERATION = false;
+        ENV.APP.LOG_VIEW_LOOKUPS = false;
+
+        ENV.APP.rootElement = '#ember-testing';
+    }
+
+    // if (environment === 'production') {
+
+    // }
+
+    return ENV;
+};
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/package.json b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/package.json
new file mode 100644 (file)
index 0000000..5be6573
--- /dev/null
@@ -0,0 +1,42 @@
+{
+  "name": "todomvc",
+  "version": "0.0.0",
+  "description": "Small description for todomvc goes here",
+  "private": true,
+  "directories": {
+    "doc": "doc",
+    "test": "tests"
+  },
+  "scripts": {
+    "build": "ember build",
+    "start": "ember server",
+    "test": "ember test"
+  },
+  "repository": "",
+  "engines": {
+    "node": ">= 0.10.0"
+  },
+  "author": "",
+  "license": "MIT",
+  "devDependencies": {
+    "broccoli-asset-rev": "^2.4.2",
+    "ember-ajax": "0.7.1",
+    "ember-cli": "2.5.0",
+    "ember-cli-app-version": "^1.0.0",
+    "ember-cli-babel": "^5.1.6",
+    "ember-cli-dependency-checker": "^1.2.0",
+    "ember-cli-htmlbars": "^1.0.3",
+    "ember-cli-htmlbars-inline-precompile": "^0.3.1",
+    "ember-cli-inject-live-reload": "^1.4.0",
+    "ember-cli-jshint": "^1.0.0",
+    "ember-cli-qunit": "^1.4.0",
+    "ember-cli-release": "0.2.8",
+    "ember-cli-sri": "^2.1.0",
+    "ember-cli-uglify": "^1.2.0",
+    "ember-export-application-global": "^1.0.5",
+    "ember-inflector": "1.9.4",
+    "ember-load-initializers": "^0.5.1",
+    "ember-resolver": "^2.0.3",
+    "loader.js": "^4.0.1"
+  }
+}
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/tests/.jshintrc b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/tests/.jshintrc
new file mode 100644 (file)
index 0000000..6ec0b7c
--- /dev/null
@@ -0,0 +1,52 @@
+{
+  "predef": [
+    "document",
+    "window",
+    "location",
+    "setTimeout",
+    "$",
+    "-Promise",
+    "define",
+    "console",
+    "visit",
+    "exists",
+    "fillIn",
+    "click",
+    "keyEvent",
+    "triggerEvent",
+    "find",
+    "findWithAssert",
+    "wait",
+    "DS",
+    "andThen",
+    "currentURL",
+    "currentPath",
+    "currentRouteName"
+  ],
+  "node": false,
+  "browser": false,
+  "boss": true,
+  "curly": true,
+  "debug": false,
+  "devel": false,
+  "eqeqeq": true,
+  "evil": true,
+  "forin": false,
+  "immed": false,
+  "laxbreak": false,
+  "newcap": true,
+  "noarg": true,
+  "noempty": false,
+  "nonew": false,
+  "nomen": false,
+  "onevar": false,
+  "plusplus": false,
+  "regexp": false,
+  "undef": true,
+  "sub": true,
+  "strict": false,
+  "white": false,
+  "eqnull": true,
+  "esnext": true,
+  "unused": true
+}
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/module-for-acceptance.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/module-for-acceptance.js
new file mode 100644 (file)
index 0000000..dbd80fc
--- /dev/null
@@ -0,0 +1,22 @@
+import { module } from 'qunit';
+import startApp from '../helpers/start-app';
+import destroyApp from '../helpers/destroy-app';
+
+export default function (name, options = {}) {
+    module(name, {
+        beforeEach() {
+            this.application = startApp();
+
+            if (options.beforeEach) {
+                options.beforeEach.apply(this, arguments);
+            }
+        },
+
+        afterEach() {
+            if (options.afterEach) {
+                options.afterEach.apply(this, arguments);
+            }
+            destroyApp(this.application);
+        }
+    });
+}
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/start-app.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/start-app.js
new file mode 100644 (file)
index 0000000..ef1b6b5
--- /dev/null
@@ -0,0 +1,18 @@
+import Ember from 'ember';
+import Application from '../../app';
+import config from '../../config/environment';
+
+export default function startApp(attrs) {
+    let application;
+
+    let attributes = Ember.merge({}, config.APP);
+    attributes = Ember.merge(attributes, attrs); // use defaults, but you can override;
+
+    Ember.run(() => {
+        application = Application.create(attributes);
+        application.setupForTesting();
+        application.injectTestHelpers();
+    });
+
+    return application;
+}
@@ -10,9 +10,9 @@
     {{content-for "head"}}
     {{content-for "test-head"}}
 
-    <link rel="stylesheet" href="{{rootURL}}assets/vendor.css">
-    <link rel="stylesheet" href="{{rootURL}}assets/todomvc.css">
-    <link rel="stylesheet" href="{{rootURL}}assets/test-support.css">
+    <link rel="stylesheet" href="assets/vendor.css">
+    <link rel="stylesheet" href="assets/todomvc.css">
+    <link rel="stylesheet" href="assets/test-support.css">
 
     {{content-for "head-footer"}}
     {{content-for "test-head-footer"}}
     {{content-for "body"}}
     {{content-for "test-body"}}
 
-    <script src="/testem.js" integrity=""></script>
-    <script src="{{rootURL}}assets/vendor.js"></script>
-    <script src="{{rootURL}}assets/test-support.js"></script>
-    <script src="{{rootURL}}assets/todomvc.js"></script>
-    <script src="{{rootURL}}assets/tests.js"></script>
+    <script src="testem.js" integrity=""></script>
+    <script src="assets/vendor.js"></script>
+    <script src="assets/test-support.js"></script>
+    <script src="assets/todomvc.js"></script>
+    <script src="assets/tests.js"></script>
+    <script src="assets/test-loader.js"></script>
 
     {{content-for "body-footer"}}
     {{content-for "test-body-footer"}}
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/testem.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/testem.js
new file mode 100644 (file)
index 0000000..1fe084c
--- /dev/null
@@ -0,0 +1,19 @@
+/**
+ * This is dummy file that exists for the sole purpose
+ * of allowing tests to run directly in the browser as
+ * well as by Testem.
+ *
+ * Testem is configured to run tests directly against
+ * the test build of index.html, which requires a
+ * snippet to load the testem.js file:
+ *   <script src="/testem.js"></script>
+ * This has to go before the qunit framework and app
+ * tests are loaded.
+ *
+ * Testem internally supplies this file. However, if you
+ * run the tests directly in the browser (localhost:8000/tests),
+ * this file does not exist.
+ *
+ * Hence the purpose of this fake file. This file is served
+ * directly from the express server to satisify the script load.
+ */
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/tests/index.html b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs-debug/tests/index.html
new file mode 100644 (file)
index 0000000..2ab218e
--- /dev/null
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <title>Todomvc Tests</title>
+    <meta name="description" content="">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+
+    <base href="/" />
+<meta name="todomvc/config/environment" content="%7B%22modulePrefix%22%3A%22todomvc%22%2C%22environment%22%3A%22test%22%2C%22baseURL%22%3A%22/%22%2C%22locationType%22%3A%22none%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%7D%2C%22APP%22%3A%7B%22LOG_ACTIVE_GENERATION%22%3Afalse%2C%22LOG_VIEW_LOOKUPS%22%3Afalse%2C%22rootElement%22%3A%22%23ember-testing%22%2C%22name%22%3A%22todomvc%22%2C%22version%22%3A%220.0.0+%22%7D%2C%22exportApplicationGlobal%22%3Atrue%7D" />
+    
+
+    <link rel="stylesheet" href="assets/vendor.css">
+    <link rel="stylesheet" href="assets/todomvc.css">
+    <link rel="stylesheet" href="assets/test-support.css">
+
+    
+    
+  </head>
+  <body>
+    
+    <div id="qunit"></div>
+<div id="qunit-fixture"></div>
+
+<div id="ember-testing-container">
+  <div id="ember-testing"></div>
+</div>
+
+
+    <script src="testem.js" integrity=""></script>
+    <script src="assets/vendor.js"></script>
+    <script src="assets/test-support.js"></script>
+    <script src="assets/todomvc.js"></script>
+    <script src="assets/tests.js"></script>
+    <script src="assets/test-loader.js"></script>
+
+    
+    <script>Ember.assert('The tests file was not loaded. Make sure your tests index.html includes "assets/tests.js".', EmberENV.TESTS_FILE_LOADED);</script>
+  </body>
+</html>
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/.bowerrc b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/.bowerrc
new file mode 100644 (file)
index 0000000..959e169
--- /dev/null
@@ -0,0 +1,4 @@
+{
+  "directory": "bower_components",
+  "analytics": false
+}
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/.editorconfig b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/.editorconfig
new file mode 100644 (file)
index 0000000..47c5438
--- /dev/null
@@ -0,0 +1,34 @@
+# EditorConfig helps developers define and maintain consistent
+# coding styles between different editors and IDEs
+# editorconfig.org
+
+root = true
+
+
+[*]
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+indent_style = space
+indent_size = 2
+
+[*.js]
+indent_style = space
+indent_size = 2
+
+[*.hbs]
+insert_final_newline = false
+indent_style = space
+indent_size = 2
+
+[*.css]
+indent_style = space
+indent_size = 2
+
+[*.html]
+indent_style = space
+indent_size = 2
+
+[*.{diff,md}]
+trim_trailing_whitespace = false
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/.ember-cli b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/.ember-cli
new file mode 100644 (file)
index 0000000..ee64cfe
--- /dev/null
@@ -0,0 +1,9 @@
+{
+  /**
+    Ember CLI sends analytics information by default. The data is completely
+    anonymous, but there are times when you might want to disable this behavior.
+
+    Setting `disableAnalytics` to true will prevent any data from being sent.
+  */
+  "disableAnalytics": false
+}
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/.gitignore b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/.gitignore
new file mode 100644 (file)
index 0000000..76ca1e5
--- /dev/null
@@ -0,0 +1,18 @@
+# See http://help.github.com/ignore-files/ for more about ignoring files.
+
+# compiled output
+# /dist
+/dist/assets/.gitkeep
+/tmp
+
+# dependencies
+/node_modules
+/bower_components
+
+# misc
+/.sass-cache
+/connect.lock
+/coverage/*
+/libpeerconnection.log
+npm-debug.log
+testem.log
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/.jshintrc b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/.jshintrc
new file mode 100644 (file)
index 0000000..08096ef
--- /dev/null
@@ -0,0 +1,32 @@
+{
+  "predef": [
+    "document",
+    "window",
+    "-Promise"
+  ],
+  "browser": true,
+  "boss": true,
+  "curly": true,
+  "debug": false,
+  "devel": true,
+  "eqeqeq": true,
+  "evil": true,
+  "forin": false,
+  "immed": false,
+  "laxbreak": false,
+  "newcap": true,
+  "noarg": true,
+  "noempty": false,
+  "nonew": false,
+  "nomen": false,
+  "onevar": false,
+  "plusplus": false,
+  "regexp": false,
+  "undef": true,
+  "sub": true,
+  "strict": false,
+  "white": false,
+  "eqnull": true,
+  "esnext": true,
+  "unused": true
+}
index 1324b26..b863488 100644 (file)
@@ -1,3 +1,8 @@
 # Speedometer 2.0: Ember.js TodoMVC example
 
-See `source/README.md`.
+## Test locally
+
+1. `npm install && bower install`
+2. `npm run build`
+3. Run a local server from the `dist` directory. (You could use [`npm i -g http-server`](https://github.com/indexzero/http-server).)
+4. Open the URL pointing to the local server in your web browser of choice.
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/app.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/app.js
new file mode 100644 (file)
index 0000000..f260c4c
--- /dev/null
@@ -0,0 +1,18 @@
+import Ember from 'ember';
+import Resolver from './resolver';
+import loadInitializers from 'ember-load-initializers';
+import config from './config/environment';
+
+let App;
+
+Ember.MODEL_FACTORY_INJECTIONS = true;
+
+App = Ember.Application.extend({
+    modulePrefix: config.modulePrefix,
+    podModulePrefix: config.podModulePrefix,
+    Resolver
+});
+
+loadInitializers(App, config.modulePrefix);
+
+export default App;
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/components/todo-item.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/components/todo-item.js
new file mode 100644 (file)
index 0000000..0de7fbf
--- /dev/null
@@ -0,0 +1,49 @@
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+    repo: Ember.inject.service(),
+    tagName: 'li',
+    editing: false,
+    classNameBindings: ['todo.completed', 'editing'],
+
+    actions: {
+        startEditing() {
+            this.get('onStartEdit')();
+            this.set('editing', true);
+            Ember.run.scheduleOnce('afterRender', this, 'focusInput');
+        },
+
+        doneEditing(todoTitle) {
+            if (!this.get('editing')) { return; }
+            if (Ember.isBlank(todoTitle)) {
+                this.send('removeTodo');
+            } else {
+                this.set('todo.title', todoTitle.trim());
+                this.set('editing', false);
+                this.get('onEndEdit')();
+            }
+        },
+
+        handleKeydown(e) {
+            if (e.keyCode === 13) {
+                e.target.blur();
+            } else if (e.keyCode === 27) {
+                this.set('editing', false);
+            }
+        },
+
+        toggleCompleted(e) {
+            let todo = this.get('todo');
+            Ember.set(todo, 'completed', e.target.checked);
+            this.get('repo').persist();
+        },
+
+        removeTodo() {
+            this.get('repo').delete(this.get('todo'));
+        }
+    },
+
+    focusInput() {
+        this.element.querySelector('input.edit').focus();
+    }
+});
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/components/todo-list.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/components/todo-list.js
new file mode 100644 (file)
index 0000000..cd8183c
--- /dev/null
@@ -0,0 +1,28 @@
+import Ember from 'ember';
+
+export default Ember.Component.extend({
+    repo: Ember.inject.service(),
+    tagName: 'section',
+    elementId: 'main',
+    classNames: ['main'],
+    canToggle: true,
+    allCompleted: Ember.computed('todos.@each.completed', function () {
+        return this.get('todos').isEvery('completed');
+    }),
+
+    actions: {
+        enableToggle() {
+            this.set('canToggle', true);
+        },
+
+        disableToggle() {
+            this.set('canToggle', false);
+        },
+
+        toggleAll() {
+            let allCompleted = this.get('allCompleted');
+            this.get('todos').forEach(todo => Ember.set(todo, 'completed', !allCompleted));
+            this.get('repo').persist();
+        }
+    }
+});
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/controllers/active.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/controllers/active.js
new file mode 100644 (file)
index 0000000..df03d40
--- /dev/null
@@ -0,0 +1,5 @@
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+    todos: Ember.computed.filterBy('model', 'completed', false)
+});
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/controllers/application.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/controllers/application.js
new file mode 100644 (file)
index 0000000..c814e5f
--- /dev/null
@@ -0,0 +1,20 @@
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+    repo: Ember.inject.service(),
+    remaining: Ember.computed.filterBy('model', 'completed', false),
+    completed: Ember.computed.filterBy('model', 'completed'),
+    actions: {
+        createTodo(e) {
+            if (e.keyCode === 13 && !Ember.isBlank(e.target.value)) {
+                this.get('repo').add({ title: e.target.value.trim(), completed: false });
+                e.target.value = '';
+            }
+        },
+
+        clearCompleted() {
+            this.get('model').removeObjects(this.get('completed'));
+            this.get('repo').persist();
+        }
+    }
+});
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/controllers/completed.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/controllers/completed.js
new file mode 100644 (file)
index 0000000..634d00a
--- /dev/null
@@ -0,0 +1,5 @@
+import Ember from 'ember';
+
+export default Ember.Controller.extend({
+    todos: Ember.computed.filterBy('model', 'completed', true)
+});
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/helpers/gt.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/helpers/gt.js
new file mode 100644 (file)
index 0000000..f370695
--- /dev/null
@@ -0,0 +1,7 @@
+import Ember from 'ember';
+
+export function gt([n1, n2]/*, hash*/) {
+    return n1 > n2;
+}
+
+export default Ember.Helper.helper(gt);
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/helpers/pluralize.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/helpers/pluralize.js
new file mode 100644 (file)
index 0000000..b1f1a2a
--- /dev/null
@@ -0,0 +1,8 @@
+import Ember from 'ember';
+import { pluralize } from 'ember-inflector';
+
+export function pluralizeHelper([singular, count]/*, hash*/) {
+    return count === 1 ? singular : pluralize(singular);
+}
+
+export default Ember.Helper.helper(pluralizeHelper);
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/resolver.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/resolver.js
new file mode 100644 (file)
index 0000000..2fb563d
--- /dev/null
@@ -0,0 +1,3 @@
+import Resolver from 'ember-resolver';
+
+export default Resolver;
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/routes/application.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/routes/application.js
new file mode 100644 (file)
index 0000000..296a375
--- /dev/null
@@ -0,0 +1,8 @@
+import Ember from 'ember';
+
+export default Ember.Route.extend({
+    repo: Ember.inject.service(),
+    model() {
+        return this.get('repo').findAll();
+    }
+});
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/services/memory.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/services/memory.js
new file mode 100644 (file)
index 0000000..74c5cdf
--- /dev/null
@@ -0,0 +1,78 @@
+(function(root) {
+  var localStorageMemory = {};
+  var cache = {};
+
+  /**
+   * number of stored items.
+   */
+  localStorageMemory.length = 0;
+
+  /**
+   * returns item for passed key, or null
+   *
+   * @para {String} key
+   *       name of item to be returned
+   * @returns {String|null}
+   */
+  localStorageMemory.getItem = function(key) {
+    return cache[key] || null;
+  };
+
+  /**
+   * sets item for key to passed value, as String
+   *
+   * @para {String} key
+   *       name of item to be set
+   * @para {String} value
+   *       value, will always be turned into a String
+   * @returns {undefined}
+   */
+  localStorageMemory.setItem = function(key, value) {
+    if (typeof value === 'undefined') {
+      localStorageMemory.removeItem(key);
+    } else {
+      if (!(cache.hasOwnProperty(key))) {
+        localStorageMemory.length++;
+      }
+
+      cache[key] = '' + value;
+    }
+  };
+
+  /**
+   * removes item for passed key
+   *
+   * @para {String} key
+   *       name of item to be removed
+   * @returns {undefined}
+   */
+  localStorageMemory.removeItem = function(key) {
+    if (cache.hasOwnProperty(key)) {
+      delete cache[key];
+      localStorageMemory.length--;
+    }
+  };
+
+  /**
+   * returns name of key at passed index
+   *
+   * @para {Number} index
+   *       Position for key to be returned (starts at 0)
+   * @returns {String|null}
+   */
+  localStorageMemory.key = function(index) {
+    return Object.keys(cache)[index] || null;
+  };
+
+  /**
+   * removes all stored items and sets length to 0
+   *
+   * @returns {undefined}
+   */
+  localStorageMemory.clear = function() {
+    cache = {};
+    localStorageMemory.length = 0;
+  };
+
+    root.localStorageMemory = localStorageMemory;
+})(window);
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/services/repo.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/services/repo.js
new file mode 100644 (file)
index 0000000..cffa385
--- /dev/null
@@ -0,0 +1,27 @@
+import Ember from 'ember';
+import localStorageMemory from './memory';
+
+export default Ember.Service.extend({
+    lastId: 0,
+    data: null,
+    findAll() {
+        return this.get('data') ||
+            this.set('data', JSON.parse(window.localStorageMemory.getItem('todos') || '[]'));
+    },
+
+    add(attrs) {
+        let todo = Object.assign({ id: this.incrementProperty('lastId') }, attrs);
+        this.get('data').pushObject(todo);
+        this.persist();
+        return todo;
+    },
+
+    delete(todo) {
+        this.get('data').removeObject(todo);
+        this.persist();
+    },
+
+    persist() {
+        window.localStorageMemory.setItem('todos', JSON.stringify(this.get('data')));
+    }
+});
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/styles/.gitkeep b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/styles/.gitkeep
new file mode 100644 (file)
index 0000000..edf5819
--- /dev/null
@@ -0,0 +1,2 @@
+# This file ensures the `app/styles` directory is included in the repository.
+# Without that directory present, the Ember TodoMVC example fails to build.
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/active.hbs b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/active.hbs
new file mode 100644 (file)
index 0000000..de244f4
--- /dev/null
@@ -0,0 +1 @@
+{{todo-list todos=todos}}
\ No newline at end of file
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/application.hbs b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/application.hbs
new file mode 100644 (file)
index 0000000..70bf119
--- /dev/null
@@ -0,0 +1,29 @@
+<section id="todoapp" class="todoapp">
+  <header id="header" class="header">
+    <h1>todos</h1>
+    <input type="text" id="new-todo" class="new-todo" onkeydown={{action 'createTodo'}} placeholder="What needs to be done?" autofocus>
+  </header>
+    {{outlet}}
+    {{#if (gt model.length 0)}}
+      <footer id="footer" class="footer">
+        <span id="todo-count" class="todo-count"><strong>{{remaining.length}}</strong> {{pluralize 'item' remaining.length}} left</span>
+        <ul id="filters" class="filters">
+          <li>{{#link-to "index" activeClass="selected"}}All{{/link-to}}</li>
+          <li>{{#link-to "active" activeClass="selected"}}Active{{/link-to}}</li>
+          <li>{{#link-to "completed" activeClass="selected"}}Completed{{/link-to}}</li>
+        </ul>
+        {{#if completed.length}}
+          <button id="clear-completed" class="clear-completed" onclick={{action 'clearCompleted'}}>Clear completed</button>
+        {{/if}}
+      </footer>
+    {{/if}}
+</section>
+<footer id="info" class="info">
+  <p>Double-click to edit a todo</p>
+  <p>
+    Created by
+    <a href="http://github.com/cibernox">Miguel Camba</a>,
+    <a href="http://github.com/addyosmani">Addy Osmani</a>
+  </p>
+  <p>Part of <a href="http://todomvc.com">TodoMVC</a></p>
+</footer>
\ No newline at end of file
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/completed.hbs b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/completed.hbs
new file mode 100644 (file)
index 0000000..de244f4
--- /dev/null
@@ -0,0 +1 @@
+{{todo-list todos=todos}}
\ No newline at end of file
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/components/todo-item.hbs b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/components/todo-item.hbs
new file mode 100644 (file)
index 0000000..c06975e
--- /dev/null
@@ -0,0 +1,6 @@
+<div class="view">
+  <input type="checkbox" class="toggle" checked={{todo.completed}} onchange={{action 'toggleCompleted'}}>
+  <label ondblclick={{action 'startEditing'}}>{{todo.title}}</label>
+  <button onclick={{action 'removeTodo'}} class="destroy"></button>
+</div>
+<input type="text" class="edit" value={{todo.title}} onblur={{action 'doneEditing' value='target.value'}} onkeydown={{action 'handleKeydown'}} autofocus>
\ No newline at end of file
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/components/todo-list.hbs b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/components/todo-list.hbs
new file mode 100644 (file)
index 0000000..4e3c2b2
--- /dev/null
@@ -0,0 +1,10 @@
+{{#if todos.length}}
+  {{#if canToggle}}
+    <input type="checkbox" id="toggle-all" class="toggle-all" checked={{allCompleted}} onchange={{action 'toggleAll'}}>
+  {{/if}}
+  <ul id="todo-list" class="todo-list">
+    {{#each todos as |todo|}}
+      {{todo-item todo=todo onStartEdit=(action 'disableToggle') onEndEdit=(action 'enableToggle')}}
+    {{/each}}
+  </ul>
+{{/if}}
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/index.hbs b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/app/templates/index.hbs
new file mode 100644 (file)
index 0000000..7d5565c
--- /dev/null
@@ -0,0 +1,3 @@
+{{#if model.length}}
+  {{todo-list todos=model}}
+{{/if}}
@@ -1,7 +1,7 @@
 "use strict"
 define("todomvc/app",["exports","ember","todomvc/resolver","ember-load-initializers","todomvc/config/environment"],function(e,t,o,n,l){var i=void 0
 t.default.MODEL_FACTORY_INJECTIONS=!0,i=t.default.Application.extend({modulePrefix:l.default.modulePrefix,podModulePrefix:l.default.podModulePrefix,Resolver:o.default}),(0,n.default)(i,l.default.modulePrefix),e.default=i}),define("todomvc/components/todo-item",["exports","ember"],function(e,t){e.default=t.default.Component.extend({repo:t.default.inject.service(),tagName:"li",editing:!1,classNameBindings:["todo.completed","editing"],actions:{startEditing:function(){this.get("onStartEdit")(),this.set("editing",!0),t.default.run.scheduleOnce("afterRender",this,"focusInput")},doneEditing:function(e){this.get("editing")&&(t.default.isBlank(e)?this.send("removeTodo"):(this.set("todo.title",e.trim()),this.set("editing",!1),this.get("onEndEdit")()))},handleKeydown:function(e){13===e.keyCode?e.target.blur():27===e.keyCode&&this.set("editing",!1)},toggleCompleted:function(e){var o=this.get("todo")
-t.default.set(o,"completed",e.target.checked),this.get("repo").persist()},removeTodo:function(){this.get("repo").delete(this.get("todo"))}},focusInput:function(){this.element.querySelector("input.edit").focus()}})}),define("todomvc/components/todo-list",["exports","ember"],function(e,t){e.default=t.default.Component.extend({repo:t.default.inject.service(),tagName:"section",elementId:"main",canToggle:!0,allCompleted:t.default.computed("todos.@each.completed",function(){return this.get("todos").isEvery("completed")}),actions:{enableToggle:function(){this.set("canToggle",!0)},disableToggle:function(){this.set("canToggle",!1)},toggleAll:function(){var e=this.get("allCompleted")
+t.default.set(o,"completed",e.target.checked),this.get("repo").persist()},removeTodo:function(){this.get("repo").delete(this.get("todo"))}},focusInput:function(){this.element.querySelector("input.edit").focus()}})}),define("todomvc/components/todo-list",["exports","ember"],function(e,t){e.default=t.default.Component.extend({repo:t.default.inject.service(),tagName:"section",elementId:"main",classNames:["main"],canToggle:!0,allCompleted:t.default.computed("todos.@each.completed",function(){return this.get("todos").isEvery("completed")}),actions:{enableToggle:function(){this.set("canToggle",!0)},disableToggle:function(){this.set("canToggle",!1)},toggleAll:function(){var e=this.get("allCompleted")
 this.get("todos").forEach(function(o){return t.default.set(o,"completed",!e)}),this.get("repo").persist()}}})}),define("todomvc/controllers/active",["exports","ember"],function(e,t){e.default=t.default.Controller.extend({todos:t.default.computed.filterBy("model","completed",!1)})}),define("todomvc/controllers/application",["exports","ember"],function(e,t){e.default=t.default.Controller.extend({repo:t.default.inject.service(),remaining:t.default.computed.filterBy("model","completed",!1),completed:t.default.computed.filterBy("model","completed"),actions:{createTodo:function(e){13!==e.keyCode||t.default.isBlank(e.target.value)||(this.get("repo").add({title:e.target.value.trim(),completed:!1}),e.target.value="")},clearCompleted:function(){this.get("model").removeObjects(this.get("completed")),this.get("repo").persist()}}})}),define("todomvc/controllers/completed",["exports","ember"],function(e,t){e.default=t.default.Controller.extend({todos:t.default.computed.filterBy("model","completed",!0)})}),define("todomvc/helpers/app-version",["exports","ember","todomvc/config/environment","ember-cli-app-version/utils/regexp"],function(e,t,o,n){function l(e){var t=arguments.length<=1||void 0===arguments[1]?{}:arguments[1]
 return t.hideSha?i.match(n.versionRegExp)[0]:t.hideVersion?i.match(n.shaRegExp)[0]:i}e.appVersion=l
 var i=o.default.APP.version
@@ -26,5 +26,5 @@ n=self}var l,i=o.default.exportApplicationGlobal
 l="string"==typeof i?i:t.default.String.classify(o.default.modulePrefix),n[l]||(n[l]=e,e.reopen({willDestroy:function(){this._super.apply(this,arguments),delete n[l]}}))}}e.initialize=n,e.default={name:"export-application-global",initialize:n}}),define("todomvc/resolver",["exports","ember-resolver"],function(e,t){e.default=t.default}),define("todomvc/router",["exports","ember","todomvc/config/environment"],function(e,t,o){var n=t.default.Router.extend({location:o.default.locationType,rootURL:o.default.rootURL})
 n.map(function(){this.route("active"),this.route("completed")}),e.default=n}),define("todomvc/routes/application",["exports","ember"],function(e,t){e.default=t.default.Route.extend({repo:t.default.inject.service(),model:function(){return this.get("repo").findAll()}})}),define("todomvc/services/ajax",["exports","ember-ajax/services/ajax"],function(e,t){Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})}),define("todomvc/services/memory",["exports"],function(e){(function(e){var t={},o={}
 t.length=0,t.getItem=function(e){return o[e]||null},t.setItem=function(e,n){void 0===n?t.removeItem(e):(o.hasOwnProperty(e)||t.length++,o[e]=""+n)},t.removeItem=function(e){o.hasOwnProperty(e)&&(delete o[e],t.length--)},t.key=function(e){return Object.keys(o)[e]||null},t.clear=function(){o={},t.length=0},e.localStorageMemory=t})(window)}),define("todomvc/services/repo",["exports","ember","todomvc/services/memory"],function(e,t,o){e.default=t.default.Service.extend({lastId:0,data:null,findAll:function(){return this.get("data")||this.set("data",JSON.parse(window.localStorageMemory.getItem("todos")||"[]"))},add:function(e){var t=Object.assign({id:this.incrementProperty("lastId")},e)
-return this.get("data").pushObject(t),this.persist(),t},delete:function(e){this.get("data").removeObject(e),this.persist()},persist:function(){window.localStorageMemory.setItem("todos",JSON.stringify(this.get("data")))}})}),define("todomvc/templates/active",["exports"],function(e){e.default=Ember.HTMLBars.template({id:"aAsc4Lt8",block:'{"statements":[[1,[33,["todo-list"],null,[["todos"],[[28,["todos"]]]]],false]],"locals":[],"named":[],"yields":[],"hasPartials":false}',meta:{moduleName:"todomvc/templates/active.hbs"}})}),define("todomvc/templates/application",["exports"],function(e){e.default=Ember.HTMLBars.template({id:"BYnyz5ON",block:'{"statements":[[11,"section",[]],[15,"id","todoapp"],[13],[0,"\\n  "],[11,"header",[]],[15,"id","header"],[13],[0,"\\n    "],[11,"h1",[]],[13],[0,"todos"],[14],[0,"\\n    "],[11,"input",[]],[15,"type","text"],[15,"id","new-todo"],[16,"onkeydown",[33,["action"],[[28,[null]],"createTodo"],null],null],[15,"placeholder","What needs to be done?"],[15,"autofocus",""],[13],[14],[0,"\\n  "],[14],[0,"\\n    "],[1,[26,["outlet"]],false],[0,"\\n"],[6,["if"],[[33,["gt"],[[28,["model","length"]],0],null]],null,{"statements":[[0,"      "],[11,"footer",[]],[15,"id","footer"],[13],[0,"\\n        "],[11,"span",[]],[15,"id","todo-count"],[13],[11,"strong",[]],[13],[1,[28,["remaining","length"]],false],[14],[0," "],[1,[33,["pluralize"],["item",[28,["remaining","length"]]],null],false],[0," left"],[14],[0,"\\n        "],[11,"ul",[]],[15,"id","filters"],[13],[0,"\\n          "],[11,"li",[]],[13],[6,["link-to"],["index"],[["activeClass"],["selected"]],{"statements":[[0,"All"]],"locals":[]},null],[14],[0,"\\n          "],[11,"li",[]],[13],[6,["link-to"],["active"],[["activeClass"],["selected"]],{"statements":[[0,"Active"]],"locals":[]},null],[14],[0,"\\n          "],[11,"li",[]],[13],[6,["link-to"],["completed"],[["activeClass"],["selected"]],{"statements":[[0,"Completed"]],"locals":[]},null],[14],[0,"\\n        "],[14],[0,"\\n"],[6,["if"],[[28,["completed","length"]]],null,{"statements":[[0,"          "],[11,"button",[]],[15,"id","clear-completed"],[16,"onclick",[33,["action"],[[28,[null]],"clearCompleted"],null],null],[13],[0,"Clear completed"],[14],[0,"\\n"]],"locals":[]},null],[0,"      "],[14],[0,"\\n"]],"locals":[]},null],[14],[0,"\\n"],[11,"footer",[]],[15,"id","info"],[13],[0,"\\n  "],[11,"p",[]],[13],[0,"Double-click to edit a todo"],[14],[0,"\\n  "],[11,"p",[]],[13],[0,"\\n    Created by\\n    "],[11,"a",[]],[15,"href","http://github.com/cibernox"],[13],[0,"Miguel Camba"],[14],[0,",\\n    "],[11,"a",[]],[15,"href","http://github.com/addyosmani"],[13],[0,"Addy Osmani"],[14],[0,"\\n  "],[14],[0,"\\n  "],[11,"p",[]],[13],[0,"Part of "],[11,"a",[]],[15,"href","http://todomvc.com"],[13],[0,"TodoMVC"],[14],[14],[0,"\\n"],[14]],"locals":[],"named":[],"yields":[],"hasPartials":false}',meta:{moduleName:"todomvc/templates/application.hbs"}})}),define("todomvc/templates/completed",["exports"],function(e){e.default=Ember.HTMLBars.template({id:"F4la9wtb",block:'{"statements":[[1,[33,["todo-list"],null,[["todos"],[[28,["todos"]]]]],false]],"locals":[],"named":[],"yields":[],"hasPartials":false}',meta:{moduleName:"todomvc/templates/completed.hbs"}})}),define("todomvc/templates/components/todo-item",["exports"],function(e){e.default=Ember.HTMLBars.template({id:"dQ3+cK5E",block:'{"statements":[[11,"div",[]],[15,"class","view"],[13],[0,"\\n  "],[11,"input",[]],[15,"type","checkbox"],[15,"class","toggle"],[16,"checked",[28,["todo","completed"]],null],[16,"onchange",[33,["action"],[[28,[null]],"toggleCompleted"],null],null],[13],[14],[0,"\\n  "],[11,"label",[]],[16,"ondblclick",[33,["action"],[[28,[null]],"startEditing"],null],null],[13],[1,[28,["todo","title"]],false],[14],[0,"\\n  "],[11,"button",[]],[16,"onclick",[33,["action"],[[28,[null]],"removeTodo"],null],null],[15,"class","destroy"],[13],[14],[0,"\\n"],[14],[0,"\\n"],[11,"input",[]],[15,"type","text"],[15,"class","edit"],[16,"value",[28,["todo","title"]],null],[16,"onblur",[33,["action"],[[28,[null]],"doneEditing"],[["value"],["target.value"]]],null],[16,"onkeydown",[33,["action"],[[28,[null]],"handleKeydown"],null],null],[15,"autofocus",""],[13],[14]],"locals":[],"named":[],"yields":[],"hasPartials":false}',meta:{moduleName:"todomvc/templates/components/todo-item.hbs"}})}),define("todomvc/templates/components/todo-list",["exports"],function(e){e.default=Ember.HTMLBars.template({id:"XGmWWD63",block:'{"statements":[[6,["if"],[[28,["todos","length"]]],null,{"statements":[[6,["if"],[[28,["canToggle"]]],null,{"statements":[[0,"    "],[11,"input",[]],[15,"type","checkbox"],[15,"id","toggle-all"],[16,"checked",[26,["allCompleted"]],null],[16,"onchange",[33,["action"],[[28,[null]],"toggleAll"],null],null],[13],[14],[0,"\\n"]],"locals":[]},null],[0,"  "],[11,"ul",[]],[15,"id","todo-list"],[15,"class","todo-list"],[13],[0,"\\n"],[6,["each"],[[28,["todos"]]],null,{"statements":[[0,"      "],[1,[33,["todo-item"],null,[["todo","onStartEdit","onEndEdit"],[[28,["todo"]],[33,["action"],[[28,[null]],"disableToggle"],null],[33,["action"],[[28,[null]],"enableToggle"],null]]]],false],[0,"\\n"]],"locals":["todo"]},null],[0,"  "],[14],[0,"\\n"]],"locals":[]},null]],"locals":[],"named":[],"yields":[],"hasPartials":false}',meta:{moduleName:"todomvc/templates/components/todo-list.hbs"}})}),define("todomvc/templates/index",["exports"],function(e){e.default=Ember.HTMLBars.template({id:"hBadNIpo",block:'{"statements":[[6,["if"],[[28,["model","length"]]],null,{"statements":[[0,"  "],[1,[33,["todo-list"],null,[["todos"],[[28,["model"]]]]],false],[0,"\\n"]],"locals":[]},null]],"locals":[],"named":[],"yields":[],"hasPartials":false}',meta:{moduleName:"todomvc/templates/index.hbs"}})}),define("todomvc/config/environment",["ember"],function(e){try{var t="todomvc/config/environment",o=document.querySelector('meta[name="'+t+'"]').getAttribute("content"),n=JSON.parse(unescape(o)),l={default:n}
-return Object.defineProperty(l,"__esModule",{value:!0}),l}catch(e){throw new Error('Could not read config from meta tag with name "'+t+'".')}}),runningTests||require("todomvc/app").default.create({name:"todomvc",version:"0.0.0+164d27e2"})
+return this.get("data").pushObject(t),this.persist(),t},delete:function(e){this.get("data").removeObject(e),this.persist()},persist:function(){window.localStorageMemory.setItem("todos",JSON.stringify(this.get("data")))}})}),define("todomvc/templates/active",["exports"],function(e){e.default=Ember.HTMLBars.template({id:"aAsc4Lt8",block:'{"statements":[[1,[33,["todo-list"],null,[["todos"],[[28,["todos"]]]]],false]],"locals":[],"named":[],"yields":[],"hasPartials":false}',meta:{moduleName:"todomvc/templates/active.hbs"}})}),define("todomvc/templates/application",["exports"],function(e){e.default=Ember.HTMLBars.template({id:"LO5Br/dD",block:'{"statements":[[11,"section",[]],[15,"id","todoapp"],[15,"class","todoapp"],[13],[0,"\\n  "],[11,"header",[]],[15,"id","header"],[15,"class","header"],[13],[0,"\\n    "],[11,"h1",[]],[13],[0,"todos"],[14],[0,"\\n    "],[11,"input",[]],[15,"type","text"],[15,"id","new-todo"],[15,"class","new-todo"],[16,"onkeydown",[33,["action"],[[28,[null]],"createTodo"],null],null],[15,"placeholder","What needs to be done?"],[15,"autofocus",""],[13],[14],[0,"\\n  "],[14],[0,"\\n    "],[1,[26,["outlet"]],false],[0,"\\n"],[6,["if"],[[33,["gt"],[[28,["model","length"]],0],null]],null,{"statements":[[0,"      "],[11,"footer",[]],[15,"id","footer"],[15,"class","footer"],[13],[0,"\\n        "],[11,"span",[]],[15,"id","todo-count"],[15,"class","todo-count"],[13],[11,"strong",[]],[13],[1,[28,["remaining","length"]],false],[14],[0," "],[1,[33,["pluralize"],["item",[28,["remaining","length"]]],null],false],[0," left"],[14],[0,"\\n        "],[11,"ul",[]],[15,"id","filters"],[15,"class","filters"],[13],[0,"\\n          "],[11,"li",[]],[13],[6,["link-to"],["index"],[["activeClass"],["selected"]],{"statements":[[0,"All"]],"locals":[]},null],[14],[0,"\\n          "],[11,"li",[]],[13],[6,["link-to"],["active"],[["activeClass"],["selected"]],{"statements":[[0,"Active"]],"locals":[]},null],[14],[0,"\\n          "],[11,"li",[]],[13],[6,["link-to"],["completed"],[["activeClass"],["selected"]],{"statements":[[0,"Completed"]],"locals":[]},null],[14],[0,"\\n        "],[14],[0,"\\n"],[6,["if"],[[28,["completed","length"]]],null,{"statements":[[0,"          "],[11,"button",[]],[15,"id","clear-completed"],[15,"class","clear-completed"],[16,"onclick",[33,["action"],[[28,[null]],"clearCompleted"],null],null],[13],[0,"Clear completed"],[14],[0,"\\n"]],"locals":[]},null],[0,"      "],[14],[0,"\\n"]],"locals":[]},null],[14],[0,"\\n"],[11,"footer",[]],[15,"id","info"],[15,"class","info"],[13],[0,"\\n  "],[11,"p",[]],[13],[0,"Double-click to edit a todo"],[14],[0,"\\n  "],[11,"p",[]],[13],[0,"\\n    Created by\\n    "],[11,"a",[]],[15,"href","http://github.com/cibernox"],[13],[0,"Miguel Camba"],[14],[0,",\\n    "],[11,"a",[]],[15,"href","http://github.com/addyosmani"],[13],[0,"Addy Osmani"],[14],[0,"\\n  "],[14],[0,"\\n  "],[11,"p",[]],[13],[0,"Part of "],[11,"a",[]],[15,"href","http://todomvc.com"],[13],[0,"TodoMVC"],[14],[14],[0,"\\n"],[14]],"locals":[],"named":[],"yields":[],"hasPartials":false}',meta:{moduleName:"todomvc/templates/application.hbs"}})}),define("todomvc/templates/completed",["exports"],function(e){e.default=Ember.HTMLBars.template({id:"F4la9wtb",block:'{"statements":[[1,[33,["todo-list"],null,[["todos"],[[28,["todos"]]]]],false]],"locals":[],"named":[],"yields":[],"hasPartials":false}',meta:{moduleName:"todomvc/templates/completed.hbs"}})}),define("todomvc/templates/components/todo-item",["exports"],function(e){e.default=Ember.HTMLBars.template({id:"dQ3+cK5E",block:'{"statements":[[11,"div",[]],[15,"class","view"],[13],[0,"\\n  "],[11,"input",[]],[15,"type","checkbox"],[15,"class","toggle"],[16,"checked",[28,["todo","completed"]],null],[16,"onchange",[33,["action"],[[28,[null]],"toggleCompleted"],null],null],[13],[14],[0,"\\n  "],[11,"label",[]],[16,"ondblclick",[33,["action"],[[28,[null]],"startEditing"],null],null],[13],[1,[28,["todo","title"]],false],[14],[0,"\\n  "],[11,"button",[]],[16,"onclick",[33,["action"],[[28,[null]],"removeTodo"],null],null],[15,"class","destroy"],[13],[14],[0,"\\n"],[14],[0,"\\n"],[11,"input",[]],[15,"type","text"],[15,"class","edit"],[16,"value",[28,["todo","title"]],null],[16,"onblur",[33,["action"],[[28,[null]],"doneEditing"],[["value"],["target.value"]]],null],[16,"onkeydown",[33,["action"],[[28,[null]],"handleKeydown"],null],null],[15,"autofocus",""],[13],[14]],"locals":[],"named":[],"yields":[],"hasPartials":false}',meta:{moduleName:"todomvc/templates/components/todo-item.hbs"}})}),define("todomvc/templates/components/todo-list",["exports"],function(e){e.default=Ember.HTMLBars.template({id:"UPycDhZO",block:'{"statements":[[6,["if"],[[28,["todos","length"]]],null,{"statements":[[6,["if"],[[28,["canToggle"]]],null,{"statements":[[0,"    "],[11,"input",[]],[15,"type","checkbox"],[15,"id","toggle-all"],[15,"class","toggle-all"],[16,"checked",[26,["allCompleted"]],null],[16,"onchange",[33,["action"],[[28,[null]],"toggleAll"],null],null],[13],[14],[0,"\\n"]],"locals":[]},null],[0,"  "],[11,"ul",[]],[15,"id","todo-list"],[15,"class","todo-list"],[13],[0,"\\n"],[6,["each"],[[28,["todos"]]],null,{"statements":[[0,"      "],[1,[33,["todo-item"],null,[["todo","onStartEdit","onEndEdit"],[[28,["todo"]],[33,["action"],[[28,[null]],"disableToggle"],null],[33,["action"],[[28,[null]],"enableToggle"],null]]]],false],[0,"\\n"]],"locals":["todo"]},null],[0,"  "],[14],[0,"\\n"]],"locals":[]},null]],"locals":[],"named":[],"yields":[],"hasPartials":false}',meta:{moduleName:"todomvc/templates/components/todo-list.hbs"}})}),define("todomvc/templates/index",["exports"],function(e){e.default=Ember.HTMLBars.template({id:"hBadNIpo",block:'{"statements":[[6,["if"],[[28,["model","length"]]],null,{"statements":[[0,"  "],[1,[33,["todo-list"],null,[["todos"],[[28,["model"]]]]],false],[0,"\\n"]],"locals":[]},null]],"locals":[],"named":[],"yields":[],"hasPartials":false}',meta:{moduleName:"todomvc/templates/index.hbs"}})}),define("todomvc/config/environment",["ember"],function(e){try{var t="todomvc/config/environment",o=document.querySelector('meta[name="'+t+'"]').getAttribute("content"),n=JSON.parse(unescape(o)),l={default:n}
+return Object.defineProperty(l,"__esModule",{value:!0}),l}catch(e){throw new Error('Could not read config from meta tag with name "'+t+'".')}}),runningTests||require("todomvc/app").default.create({name:"todomvc",version:"0.0.0+bc37752f"})
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/dist/assets/vendor-a45c44bc56b4692cca4a96b6916c0fde.css b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/dist/assets/vendor-a45c44bc56b4692cca4a96b6916c0fde.css
new file mode 100644 (file)
index 0000000..6329fa1
--- /dev/null
@@ -0,0 +1 @@
+#issue-count,.hidden{display:none}.edit,.new-todo,body,button{-moz-osx-font-smoothing:grayscale}.footer,.todoapp h1,.toggle-all{text-align:center}hr{margin:20px 0;border:0;border-top:1px dashed #c5c5c5;border-bottom:1px dashed #f7f7f7}.learn a{font-weight:400;text-decoration:none;color:#b83f45}.learn a:hover{text-decoration:underline;color:#787e7e}.learn h3,.learn h4,.learn h5{margin:10px 0;font-weight:500;line-height:1.2;color:#000}.learn h3{font-size:24px}.learn h4{font-size:18px}.learn h5{margin-bottom:0;font-size:14px}.learn ul{padding:0;margin:0 0 30px 25px}.learn li{line-height:20px}.learn p{font-size:15px;font-weight:300;line-height:1.3;margin-top:0;margin-bottom:0}.quote p:after,.quote p:before{font-size:50px;opacity:.15;position:absolute}.quote{border:none;margin:20px 0 60px}.quote p{font-style:italic}.quote p:before{content:'“';top:-20px;left:3px}.quote p:after{content:'”';bottom:-42px;right:3px}.quote footer{position:absolute;bottom:-40px;right:0}.quote footer img{border-radius:3px}.quote footer a{margin-left:5px;vertical-align:middle}.speech-bubble{position:relative;padding:10px;background:rgba(0,0,0,.04);border-radius:5px}.speech-bubble:after{content:'';position:absolute;top:100%;right:30px;border:13px solid transparent;border-top-color:rgba(0,0,0,.04)}.learn-bar>.learn{position:absolute;width:272px;top:8px;left:-300px;padding:10px;border-radius:5px;background-color:rgba(255,255,255,.6);transition-property:left;transition-duration:.5s}@media (min-width:899px){.learn-bar{width:auto;padding-left:300px}.learn-bar>.learn{left:8px}}body,button,html{margin:0;padding:0}button{border:0;background:0 0;font-size:100%;vertical-align:baseline;font-family:inherit;font-weight:inherit;color:inherit;-webkit-appearance:none;appearance:none;-webkit-font-smoothing:antialiased}body{font:14px 'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:1.4em;background:#f5f5f5;color:#4d4d4d;min-width:230px;max-width:550px;margin:0 auto;-webkit-font-smoothing:antialiased;font-weight:300}:focus{outline:0}.todoapp{background:#fff;margin:130px 0 40px;position:relative;box-shadow:0 2px 4px 0 rgba(0,0,0,.2),0 25px 50px 0 rgba(0,0,0,.1)}.todoapp input::-webkit-input-placeholder{font-style:italic;font-weight:300;color:#e6e6e6}.todoapp input::-moz-placeholder{font-style:italic;font-weight:300;color:#e6e6e6}.todoapp input::input-placeholder{font-style:italic;font-weight:300;color:#e6e6e6}.todoapp h1{position:absolute;top:-155px;width:100%;font-size:100px;font-weight:100;color:rgba(175,47,47,.15);-webkit-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;text-rendering:optimizeLegibility}.edit,.new-todo{position:relative;margin:0;width:100%;font-size:24px;font-family:inherit;font-weight:inherit;line-height:1.4em;color:inherit;padding:6px;border:1px solid #999;box-shadow:inset 0 -1px 5px 0 rgba(0,0,0,.2);box-sizing:border-box;-webkit-font-smoothing:antialiased}.new-todo{padding:16px 16px 16px 60px;border:none;background:rgba(0,0,0,.003);box-shadow:inset 0 -2px 1px rgba(0,0,0,.03)}.main{position:relative;z-index:2;border-top:1px solid #e6e6e6}.toggle-all{border:none;opacity:0;position:absolute}.toggle-all+label{width:60px;height:34px;font-size:0;position:absolute;top:-52px;left:-13px;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.toggle-all+label:before{content:'❯';font-size:22px;color:#e6e6e6;padding:10px 27px}.toggle-all:checked+label:before{color:#737373}.todo-list{margin:0;padding:0;list-style:none}.todo-list li{position:relative;font-size:24px;border-bottom:1px solid #ededed}.todo-list li:last-child{border-bottom:none}.todo-list li.editing{border-bottom:none;padding:0}.todo-list li.editing .edit{display:block;width:506px;padding:12px 16px;margin:0 0 0 43px}.todo-list li.editing .view{display:none}.todo-list li .toggle{text-align:center;width:40px;height:auto;position:absolute;top:0;bottom:0;margin:auto 0;border:none;-webkit-appearance:none;appearance:none;opacity:0}.todo-list li .toggle+label{background-image:url(data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E);background-repeat:no-repeat;background-position:center left}.todo-list li .toggle:checked+label{background-image:url(data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E)}.todo-list li label{word-break:break-all;padding:15px 15px 15px 60px;display:block;line-height:1.2;transition:color .4s}.todo-list li.completed label{color:#d9d9d9;text-decoration:line-through}.todo-list li .destroy{display:none;position:absolute;top:0;right:10px;bottom:0;width:40px;height:40px;margin:auto 0 11px;font-size:30px;color:#cc9a9a;transition:color .2s ease-out}.filters,.footer:before{position:absolute;right:0;left:0}.todo-list li .destroy:hover{color:#af5b5e}.todo-list li .destroy:after{content:'×'}.todo-list li:hover .destroy{display:block}.todo-list li .edit{display:none}.todo-list li.editing:last-child{margin-bottom:-1px}.footer{color:#777;padding:10px 15px;height:20px;border-top:1px solid #e6e6e6}.footer:before{content:'';bottom:0;height:50px;overflow:hidden;box-shadow:0 1px 1px rgba(0,0,0,.2),0 8px 0 -3px #f6f6f6,0 9px 1px -3px rgba(0,0,0,.2),0 16px 0 -6px #f6f6f6,0 17px 2px -6px rgba(0,0,0,.2)}.todo-count{float:left;text-align:left}.todo-count strong{font-weight:300}.filters{margin:0;padding:0;list-style:none}.filters li{display:inline}.filters li a{color:inherit;margin:3px;padding:3px 7px;text-decoration:none;border:1px solid transparent;border-radius:3px}.filters li a:hover{border-color:rgba(175,47,47,.1)}.filters li a.selected{border-color:rgba(175,47,47,.2)}.clear-completed,html .clear-completed:active{float:right;position:relative;line-height:20px;text-decoration:none;cursor:pointer}.clear-completed:hover{text-decoration:underline}.info{margin:65px auto 0;color:#bfbfbf;font-size:10px;text-shadow:0 1px 0 rgba(255,255,255,.5);text-align:center}.info p{line-height:1}.info a{color:inherit;text-decoration:none;font-weight:400}.info a:hover{text-decoration:underline}@media screen and (-webkit-min-device-pixel-ratio:0){.todo-list li .toggle,.toggle-all{background:0 0}.todo-list li .toggle{height:40px}}@media (max-width:430px){.footer{height:50px}.filters{bottom:10px}}
\ No newline at end of file
@@ -7,15 +7,14 @@
     <meta name="description" content="">
     <meta name="viewport" content="width=device-width, initial-scale=1">
     
-<meta name="todomvc/config/environment" content="%7B%22modulePrefix%22%3A%22todomvc%22%2C%22environment%22%3A%22production%22%2C%22baseURL%22%3Anull%2C%22locationType%22%3A%22hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%7D%7D%2C%22APP%22%3A%7B%22name%22%3A%22todomvc%22%2C%22version%22%3A%220.0.0+164d27e2%22%7D%2C%22exportApplicationGlobal%22%3Afalse%7D" />
-    <link rel="stylesheet" href="assets/vendor-7b5c98520910afa58d74e05ec86cd873.css" integrity="sha256-bsagGHduhay9QPLUFpddcZFq7Kmr2ScM3VKnWhdX8oM= sha512-eNsGN2aLecWPvoqNVH8oXK8o/IJ7rO5ti0zgS8lF8LiwmKUHdEIuFduwcDL1VLAt2r+3YjgDzoSNYK6c57pJzw==" >
-    <link rel="stylesheet" href="assets/todomvc-d41d8cd98f00b204e9800998ecf8427e.css" integrity="sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==" >
+<meta name="todomvc/config/environment" content="%7B%22modulePrefix%22%3A%22todomvc%22%2C%22environment%22%3A%22production%22%2C%22baseURL%22%3Anull%2C%22locationType%22%3A%22hash%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%2C%22EXTEND_PROTOTYPES%22%3A%7B%22Date%22%3Afalse%7D%7D%2C%22APP%22%3A%7B%22name%22%3A%22todomvc%22%2C%22version%22%3A%220.0.0+bc37752f%22%7D%2C%22exportApplicationGlobal%22%3Afalse%7D" />
+    <link rel="stylesheet" href="assets/vendor-a45c44bc56b4692cca4a96b6916c0fde.css" integrity="sha256-wri71NgRSS8Ri2MYmuencXvYL+yQDweqc4LX9yrCstw= sha512-Quz1uKZ8tcCIvB9safdsFiWlRSunJyK+8elapH+Mx4qLx2+1CzYOAbjpaQDpmlMttL+Nra1P361yZrIyRhPDDA==" >
     
   </head>
   <body>
     
     <script src="assets/vendor-820919567eb7bd4d9fac358a90a5aac4.js" integrity="sha256-BZHBbf1U21+kgPYmoIK7gLkqHu88v5cwEVFfwUPXojs= sha512-2YWrAbR45p8fk3/y4Qhbok/KUfLE/v6yMSUqIWncTmWqfJbyJj0+AiTkJL03k0oPUMZbFYyQx9SuL6XoXp4sgg==" ></script>
-    <script src="assets/todomvc-7601ffca6150ed633f0f333fe76bfaf2.js" integrity="sha256-J9SBPSVPiTlDzBrAevEqRvNz3E++u7jNErZ79EDgR3g= sha512-8QtnoWm6aXdKWOIsnuqQwaU575TkOmagUJS66bIqqZzwM8aUduM6DHlrbTsopZ9M5ok9NLqhKsafEXHWQP0cXg==" ></script>
+    <script src="assets/todomvc-5d3e8eb3d5b3740a33185edcb11eeb57.js" integrity="sha256-TlR3MSC0+pEW7ypWHo2KbKJ8aGi7ebK3AAyXVdGlGJk= sha512-VrNV9WfIGB3sR8fm1qhLQwIISD4AQbarc5PqrKAddfNg+eNY/NynTA3N/eW0SHWQtOmNxSMOtP+aZlKfLi3r2A==" ></script>
     
   </body>
 </html>
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/ember-cli-build.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/ember-cli-build.js
new file mode 100644 (file)
index 0000000..b1dbf59
--- /dev/null
@@ -0,0 +1,26 @@
+/*jshint node:true*/
+/* global require, module */
+var EmberApp = require('ember-cli/lib/broccoli/ember-app');
+
+module.exports = function (defaults) {
+    var app = new EmberApp(defaults, {
+        // Add options here
+    });
+
+    app.import('vendor/base.css');
+    app.import('vendor/index.css');
+    // Use `app.import` to add additional libraries to the generated
+    // output files.
+    //
+    // If you need to use different assets in different
+    // environments, specify an object as the first parameter. That
+    // object's keys should be the environment name and the values
+    // should be the asset to use in that environment.
+    //
+    // If the library that you are including contains AMD or ES6
+    // modules that you would like to import into your application
+    // please specify an object with the list of modules as keys
+    // along with the exports of each module as its value.
+
+    return app.toTree();
+};
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/public/crossdomain.xml b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/public/crossdomain.xml
new file mode 100644 (file)
index 0000000..0c16a7a
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
+<cross-domain-policy>
+  <!-- Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->
+
+  <!-- Most restrictive policy: -->
+  <site-control permitted-cross-domain-policies="none"/>
+
+  <!-- Least restrictive policy: -->
+  <!--
+  <site-control permitted-cross-domain-policies="all"/>
+  <allow-access-from domain="*" to-ports="*" secure="false"/>
+  <allow-http-request-headers-from domain="*" headers="*" secure="false"/>
+  -->
+</cross-domain-policy>
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/public/robots.txt b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/public/robots.txt
new file mode 100644 (file)
index 0000000..f591645
--- /dev/null
@@ -0,0 +1,3 @@
+# http://www.robotstxt.org
+User-agent: *
+Disallow:
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/README.md b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/README.md
deleted file mode 100644 (file)
index b863488..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-# Speedometer 2.0: Ember.js TodoMVC example
-
-## Test locally
-
-1. `npm install && bower install`
-2. `npm run build`
-3. Run a local server from the `dist` directory. (You could use [`npm i -g http-server`](https://github.com/indexzero/http-server).)
-4. Open the URL pointing to the local server in your web browser of choice.
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/dist/assets/vendor-7b5c98520910afa58d74e05ec86cd873.css b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/source/dist/assets/vendor-7b5c98520910afa58d74e05ec86cd873.css
deleted file mode 100644 (file)
index 3f5cff9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#issue-count,.hidden,label[for=toggle-all]{display:none}#footer,#info,#todoapp h1,#toggle-all{text-align:center}hr{margin:20px 0;border:0;border-top:1px dashed #c5c5c5;border-bottom:1px dashed #f7f7f7}.learn a{font-weight:400;text-decoration:none;color:#b83f45}.learn a:hover{text-decoration:underline;color:#787e7e}.learn h3,.learn h4,.learn h5{margin:10px 0;font-weight:500;line-height:1.2;color:#000}.learn h3{font-size:24px}.learn h4{font-size:18px}.learn h5{margin-bottom:0;font-size:14px}.learn ul{padding:0;margin:0 0 30px 25px}.learn li{line-height:20px}.learn p{font-size:15px;font-weight:300;line-height:1.3;margin-top:0;margin-bottom:0}.quote p:after,.quote p:before{font-size:50px;opacity:.15;position:absolute}.quote{border:none;margin:20px 0 60px}.quote p{font-style:italic}.quote p:before{content:'“';top:-20px;left:3px}.quote p:after{content:'”';bottom:-42px;right:3px}.quote footer{position:absolute;bottom:-40px;right:0}.quote footer img{border-radius:3px}.quote footer a{margin-left:5px;vertical-align:middle}.speech-bubble{position:relative;padding:10px;background:rgba(0,0,0,.04);border-radius:5px}.speech-bubble:after{content:'';position:absolute;top:100%;right:30px;border:13px solid transparent;border-top-color:rgba(0,0,0,.04)}.learn-bar>.learn{position:absolute;width:272px;top:8px;left:-300px;padding:10px;border-radius:5px;background-color:rgba(255,255,255,.6);transition-property:left;transition-duration:.5s}#main,#new-todo,#todo-list li,#todoapp,.edit{position:relative}@media (min-width:899px){.learn-bar{width:auto;padding-left:300px}.learn-bar>.learn{left:8px}}body,button,html{padding:0;margin:0}button{border:0;background:0 0;font-size:100%;vertical-align:baseline;font-family:inherit;font-weight:inherit;color:inherit;-webkit-appearance:none;appearance:none;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;font-smoothing:antialiased}body{font:14px 'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:1.4em;background:#f5f5f5;color:#4d4d4d;min-width:230px;max-width:550px;margin:0 auto;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;font-smoothing:antialiased;font-weight:300}button,input[type=checkbox]{outline:0}#todoapp{background:#fff;margin:130px 0 40px;box-shadow:0 2px 4px 0 rgba(0,0,0,.2),0 25px 50px 0 rgba(0,0,0,.1)}#todoapp input::-webkit-input-placeholder{font-style:italic;font-weight:300;color:#e6e6e6}#todoapp input::-moz-placeholder{font-style:italic;font-weight:300;color:#e6e6e6}#todoapp input::input-placeholder{font-style:italic;font-weight:300;color:#e6e6e6}#todoapp h1{position:absolute;top:-155px;width:100%;font-size:100px;font-weight:100;color:rgba(175,47,47,.15);-webkit-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;text-rendering:optimizeLegibility}#new-todo,.edit{margin:0;width:100%;font-size:24px;font-family:inherit;font-weight:inherit;line-height:1.4em;outline:0;color:inherit;padding:6px;border:1px solid #999;box-shadow:inset 0 -1px 5px 0 rgba(0,0,0,.2);box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;font-smoothing:antialiased}#new-todo{padding:16px 16px 16px 60px;border:none;background:rgba(0,0,0,.003);box-shadow:inset 0 -2px 1px rgba(0,0,0,.03)}#main{z-index:2;border-top:1px solid #e6e6e6}#toggle-all{position:absolute;top:-55px;left:-12px;width:60px;height:34px;border:none}#toggle-all:before{content:'❯';font-size:22px;color:#e6e6e6;padding:10px 27px}#toggle-all:checked:before{color:#737373}#todo-list{margin:0;padding:0;list-style:none}#todo-list li{font-size:24px;border-bottom:1px solid #ededed}#todo-list li:last-child{border-bottom:none}#todo-list li.editing{border-bottom:none;padding:0}#todo-list li.editing .edit{display:block;width:506px;padding:13px 17px 12px;margin:0 0 0 43px}#todo-list li.editing .view{display:none}#todo-list li .toggle{text-align:center;width:40px;height:auto;position:absolute;top:0;bottom:0;margin:auto 0;border:none;-webkit-appearance:none;appearance:none}#todo-list li .toggle:after{content:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="-10 -18 100 135"><circle cx="50" cy="50" r="50" fill="none" stroke="#ededed" stroke-width="3"/></svg>')}#todo-list li .toggle:checked:after{content:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="-10 -18 100 135"><circle cx="50" cy="50" r="50" fill="none" stroke="#bddad5" stroke-width="3"/><path fill="#5dc2af" d="M72 25L42 71 27 56l-4 4 20 20 34-52z"/></svg>')}#todo-list li label{white-space:pre;word-break:break-word;padding:15px 60px 15px 15px;margin-left:45px;display:block;line-height:1.2;transition:color .4s}#todo-list li.completed label{color:#d9d9d9;text-decoration:line-through}#todo-list li .destroy{display:none;position:absolute;top:0;right:10px;bottom:0;width:40px;height:40px;margin:auto 0 11px;font-size:30px;color:#cc9a9a;transition:color .2s ease-out}#filters,#footer:before{position:absolute;right:0;left:0}#todo-list li .destroy:hover{color:#af5b5e}#filters li a,#info a{color:inherit;text-decoration:none}#todo-list li .destroy:after{content:'×'}#todo-list li:hover .destroy{display:block}#todo-list li .edit{display:none}#todo-list li.editing:last-child{margin-bottom:-1px}#footer{color:#777;padding:10px 15px;height:20px;border-top:1px solid #e6e6e6}#footer:before{content:'';bottom:0;height:50px;overflow:hidden;box-shadow:0 1px 1px rgba(0,0,0,.2),0 8px 0 -3px #f6f6f6,0 9px 1px -3px rgba(0,0,0,.2),0 16px 0 -6px #f6f6f6,0 17px 2px -6px rgba(0,0,0,.2)}#todo-count{float:left;text-align:left}#todo-count strong{font-weight:300}#filters{margin:0;padding:0;list-style:none}#filters li{display:inline}#filters li a{margin:3px;padding:3px 7px;border:1px solid transparent;border-radius:3px}#filters li a.selected,#filters li a:hover{border-color:rgba(175,47,47,.1)}#filters li a.selected{border-color:rgba(175,47,47,.2)}#clear-completed,html #clear-completed:active{float:right;line-height:20px;text-decoration:none;cursor:pointer;position:relative}#clear-completed:hover,#info a:hover{text-decoration:underline}#info{margin:65px auto 0;color:#bfbfbf;font-size:10px;text-shadow:0 1px 0 rgba(255,255,255,.5)}#info p{line-height:1}#info a{font-weight:400}@media screen and (-webkit-min-device-pixel-ratio:0){#todo-list li .toggle,#toggle-all{background:0 0}#todo-list li .toggle{height:40px}#toggle-all{-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-appearance:none;appearance:none}}@media (max-width:430px){#footer{height:50px}#filters{bottom:10px}}
\ No newline at end of file
index 1fe084c..de142ee 100644 (file)
@@ -1,19 +1,13 @@
-/**
- * This is dummy file that exists for the sole purpose
- * of allowing tests to run directly in the browser as
- * well as by Testem.
- *
- * Testem is configured to run tests directly against
- * the test build of index.html, which requires a
- * snippet to load the testem.js file:
- *   <script src="/testem.js"></script>
- * This has to go before the qunit framework and app
- * tests are loaded.
- *
- * Testem internally supplies this file. However, if you
- * run the tests directly in the browser (localhost:8000/tests),
- * this file does not exist.
- *
- * Hence the purpose of this fake file. This file is served
- * directly from the express server to satisify the script load.
- */
+/*jshint node:true*/
+module.exports = {
+    framework: 'qunit',
+    test_page: 'tests/index.html?hidepassed',
+    disable_watching: true,
+    launch_in_ci: [
+        'PhantomJS'
+    ],
+    launch_in_dev: [
+        'PhantomJS',
+        'Chrome'
+    ]
+};
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/tests/helpers/destroy-app.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/tests/helpers/destroy-app.js
new file mode 100644 (file)
index 0000000..13d4989
--- /dev/null
@@ -0,0 +1,5 @@
+import Ember from 'ember';
+
+export default function destroyApp(application) {
+    Ember.run(application, 'destroy');
+}
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/tests/helpers/resolver.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/tests/helpers/resolver.js
new file mode 100644 (file)
index 0000000..50e9179
--- /dev/null
@@ -0,0 +1,11 @@
+import Resolver from '../../resolver';
+import config from '../../config/environment';
+
+const resolver = Resolver.create();
+
+resolver.namespace = {
+    modulePrefix: config.modulePrefix,
+    podModulePrefix: config.podModulePrefix
+};
+
+export default resolver;
index 2ab218e..112787f 100644 (file)
@@ -7,35 +7,27 @@
     <meta name="description" content="">
     <meta name="viewport" content="width=device-width, initial-scale=1">
 
-    <base href="/" />
-<meta name="todomvc/config/environment" content="%7B%22modulePrefix%22%3A%22todomvc%22%2C%22environment%22%3A%22test%22%2C%22baseURL%22%3A%22/%22%2C%22locationType%22%3A%22none%22%2C%22EmberENV%22%3A%7B%22FEATURES%22%3A%7B%7D%7D%2C%22APP%22%3A%7B%22LOG_ACTIVE_GENERATION%22%3Afalse%2C%22LOG_VIEW_LOOKUPS%22%3Afalse%2C%22rootElement%22%3A%22%23ember-testing%22%2C%22name%22%3A%22todomvc%22%2C%22version%22%3A%220.0.0+%22%7D%2C%22exportApplicationGlobal%22%3Atrue%7D" />
-    
+    {{content-for "head"}}
+    {{content-for "test-head"}}
 
-    <link rel="stylesheet" href="assets/vendor.css">
-    <link rel="stylesheet" href="assets/todomvc.css">
-    <link rel="stylesheet" href="assets/test-support.css">
+    <link rel="stylesheet" href="{{rootURL}}assets/vendor.css">
+    <link rel="stylesheet" href="{{rootURL}}assets/todomvc.css">
+    <link rel="stylesheet" href="{{rootURL}}assets/test-support.css">
 
-    
-    
+    {{content-for "head-footer"}}
+    {{content-for "test-head-footer"}}
   </head>
   <body>
-    
-    <div id="qunit"></div>
-<div id="qunit-fixture"></div>
+    {{content-for "body"}}
+    {{content-for "test-body"}}
 
-<div id="ember-testing-container">
-  <div id="ember-testing"></div>
-</div>
+    <script src="/testem.js" integrity=""></script>
+    <script src="{{rootURL}}assets/vendor.js"></script>
+    <script src="{{rootURL}}assets/test-support.js"></script>
+    <script src="{{rootURL}}assets/todomvc.js"></script>
+    <script src="{{rootURL}}assets/tests.js"></script>
 
-
-    <script src="testem.js" integrity=""></script>
-    <script src="assets/vendor.js"></script>
-    <script src="assets/test-support.js"></script>
-    <script src="assets/todomvc.js"></script>
-    <script src="assets/tests.js"></script>
-    <script src="assets/test-loader.js"></script>
-
-    
-    <script>Ember.assert('The tests file was not loaded. Make sure your tests index.html includes "assets/tests.js".', EmberENV.TESTS_FILE_LOADED);</script>
+    {{content-for "body-footer"}}
+    {{content-for "test-body-footer"}}
   </body>
 </html>
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/tests/test-helper.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/tests/test-helper.js
new file mode 100644 (file)
index 0000000..dc9961f
--- /dev/null
@@ -0,0 +1,6 @@
+import resolver from './helpers/resolver';
+import {
+    setResolver
+} from 'ember-qunit';
+
+setResolver(resolver);
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/vendor/base.css b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/vendor/base.css
new file mode 100644 (file)
index 0000000..4d25d3c
--- /dev/null
@@ -0,0 +1,141 @@
+hr {
+    margin: 20px 0;
+    border: 0;
+    border-top: 1px dashed #c5c5c5;
+    border-bottom: 1px dashed #f7f7f7;
+}
+
+.learn a {
+    font-weight: normal;
+    text-decoration: none;
+    color: #b83f45;
+}
+
+.learn a:hover {
+    text-decoration: underline;
+    color: #787e7e;
+}
+
+.learn h3,
+.learn h4,
+.learn h5 {
+    margin: 10px 0;
+    font-weight: 500;
+    line-height: 1.2;
+    color: #000;
+}
+
+.learn h3 {
+    font-size: 24px;
+}
+
+.learn h4 {
+    font-size: 18px;
+}
+
+.learn h5 {
+    margin-bottom: 0;
+    font-size: 14px;
+}
+
+.learn ul {
+    padding: 0;
+    margin: 0 0 30px 25px;
+}
+
+.learn li {
+    line-height: 20px;
+}
+
+.learn p {
+    font-size: 15px;
+    font-weight: 300;
+    line-height: 1.3;
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+#issue-count {
+    display: none;
+}
+
+.quote {
+    border: none;
+    margin: 20px 0 60px 0;
+}
+
+.quote p {
+    font-style: italic;
+}
+
+.quote p:before {
+    content: '“';
+    font-size: 50px;
+    opacity: .15;
+    position: absolute;
+    top: -20px;
+    left: 3px;
+}
+
+.quote p:after {
+    content: '”';
+    font-size: 50px;
+    opacity: .15;
+    position: absolute;
+    bottom: -42px;
+    right: 3px;
+}
+
+.quote footer {
+    position: absolute;
+    bottom: -40px;
+    right: 0;
+}
+
+.quote footer img {
+    border-radius: 3px;
+}
+
+.quote footer a {
+    margin-left: 5px;
+    vertical-align: middle;
+}
+
+.speech-bubble {
+    position: relative;
+    padding: 10px;
+    background: rgba(0, 0, 0, .04);
+    border-radius: 5px;
+}
+
+.speech-bubble:after {
+    content: '';
+    position: absolute;
+    top: 100%;
+    right: 30px;
+    border: 13px solid transparent;
+    border-top-color: rgba(0, 0, 0, .04);
+}
+
+.learn-bar > .learn {
+    position: absolute;
+    width: 272px;
+    top: 8px;
+    left: -300px;
+    padding: 10px;
+    border-radius: 5px;
+    background-color: rgba(255, 255, 255, .6);
+    transition-property: left;
+    transition-duration: 500ms;
+}
+
+@media (min-width: 899px) {
+    .learn-bar {
+        width: auto;
+        padding-left: 300px;
+    }
+
+    .learn-bar > .learn {
+        left: 8px;
+    }
+}
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/vendor/index.css b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/emberjs/vendor/index.css
new file mode 100644 (file)
index 0000000..e04fbdb
--- /dev/null
@@ -0,0 +1,376 @@
+html,
+body {
+    margin: 0;
+    padding: 0;
+}
+
+button {
+    margin: 0;
+    padding: 0;
+    border: 0;
+    background: none;
+    font-size: 100%;
+    vertical-align: baseline;
+    font-family: inherit;
+    font-weight: inherit;
+    color: inherit;
+    -webkit-appearance: none;
+    appearance: none;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+}
+
+body {
+    font: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif;
+    line-height: 1.4em;
+    background: #f5f5f5;
+    color: #4d4d4d;
+    min-width: 230px;
+    max-width: 550px;
+    margin: 0 auto;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+    font-weight: 300;
+}
+
+:focus {
+    outline: 0;
+}
+
+.hidden {
+    display: none;
+}
+
+.todoapp {
+    background: #fff;
+    margin: 130px 0 40px 0;
+    position: relative;
+    box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2),
+                0 25px 50px 0 rgba(0, 0, 0, 0.1);
+}
+
+.todoapp input::-webkit-input-placeholder {
+    font-style: italic;
+    font-weight: 300;
+    color: #e6e6e6;
+}
+
+.todoapp input::-moz-placeholder {
+    font-style: italic;
+    font-weight: 300;
+    color: #e6e6e6;
+}
+
+.todoapp input::input-placeholder {
+    font-style: italic;
+    font-weight: 300;
+    color: #e6e6e6;
+}
+
+.todoapp h1 {
+    position: absolute;
+    top: -155px;
+    width: 100%;
+    font-size: 100px;
+    font-weight: 100;
+    text-align: center;
+    color: rgba(175, 47, 47, 0.15);
+    -webkit-text-rendering: optimizeLegibility;
+    -moz-text-rendering: optimizeLegibility;
+    text-rendering: optimizeLegibility;
+}
+
+.new-todo,
+.edit {
+    position: relative;
+    margin: 0;
+    width: 100%;
+    font-size: 24px;
+    font-family: inherit;
+    font-weight: inherit;
+    line-height: 1.4em;
+    border: 0;
+    color: inherit;
+    padding: 6px;
+    border: 1px solid #999;
+    box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2);
+    box-sizing: border-box;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+}
+
+.new-todo {
+    padding: 16px 16px 16px 60px;
+    border: none;
+    background: rgba(0, 0, 0, 0.003);
+    box-shadow: inset 0 -2px 1px rgba(0,0,0,0.03);
+}
+
+.main {
+    position: relative;
+    z-index: 2;
+    border-top: 1px solid #e6e6e6;
+}
+
+.toggle-all {
+    text-align: center;
+    border: none; /* Mobile Safari */
+    opacity: 0;
+    position: absolute;
+}
+
+.toggle-all + label {
+    width: 60px;
+    height: 34px;
+    font-size: 0;
+    position: absolute;
+    top: -52px;
+    left: -13px;
+    -webkit-transform: rotate(90deg);
+    transform: rotate(90deg);
+}
+
+.toggle-all + label:before {
+    content: '❯';
+    font-size: 22px;
+    color: #e6e6e6;
+    padding: 10px 27px 10px 27px;
+}
+
+.toggle-all:checked + label:before {
+    color: #737373;
+}
+
+.todo-list {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+}
+
+.todo-list li {
+    position: relative;
+    font-size: 24px;
+    border-bottom: 1px solid #ededed;
+}
+
+.todo-list li:last-child {
+    border-bottom: none;
+}
+
+.todo-list li.editing {
+    border-bottom: none;
+    padding: 0;
+}
+
+.todo-list li.editing .edit {
+    display: block;
+    width: 506px;
+    padding: 12px 16px;
+    margin: 0 0 0 43px;
+}
+
+.todo-list li.editing .view {
+    display: none;
+}
+
+.todo-list li .toggle {
+    text-align: center;
+    width: 40px;
+    /* auto, since non-WebKit browsers doesn't support input styling */
+    height: auto;
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    margin: auto 0;
+    border: none; /* Mobile Safari */
+    -webkit-appearance: none;
+    appearance: none;
+}
+
+.todo-list li .toggle {
+    opacity: 0;
+}
+
+.todo-list li .toggle + label {
+    /*
+        Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433
+        IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/
+    */
+    background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E');
+    background-repeat: no-repeat;
+    background-position: center left;
+}
+
+.todo-list li .toggle:checked + label {
+    background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E');
+}
+
+.todo-list li label {
+    word-break: break-all;
+    padding: 15px 15px 15px 60px;
+    display: block;
+    line-height: 1.2;
+    transition: color 0.4s;
+}
+
+.todo-list li.completed label {
+    color: #d9d9d9;
+    text-decoration: line-through;
+}
+
+.todo-list li .destroy {
+    display: none;
+    position: absolute;
+    top: 0;
+    right: 10px;
+    bottom: 0;
+    width: 40px;
+    height: 40px;
+    margin: auto 0;
+    font-size: 30px;
+    color: #cc9a9a;
+    margin-bottom: 11px;
+    transition: color 0.2s ease-out;
+}
+
+.todo-list li .destroy:hover {
+    color: #af5b5e;
+}
+
+.todo-list li .destroy:after {
+    content: '×';
+}
+
+.todo-list li:hover .destroy {
+    display: block;
+}
+
+.todo-list li .edit {
+    display: none;
+}
+
+.todo-list li.editing:last-child {
+    margin-bottom: -1px;
+}
+
+.footer {
+    color: #777;
+    padding: 10px 15px;
+    height: 20px;
+    text-align: center;
+    border-top: 1px solid #e6e6e6;
+}
+
+.footer:before {
+    content: '';
+    position: absolute;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    height: 50px;
+    overflow: hidden;
+    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2),
+                0 8px 0 -3px #f6f6f6,
+                0 9px 1px -3px rgba(0, 0, 0, 0.2),
+                0 16px 0 -6px #f6f6f6,
+                0 17px 2px -6px rgba(0, 0, 0, 0.2);
+}
+
+.todo-count {
+    float: left;
+    text-align: left;
+}
+
+.todo-count strong {
+    font-weight: 300;
+}
+
+.filters {
+    margin: 0;
+    padding: 0;
+    list-style: none;
+    position: absolute;
+    right: 0;
+    left: 0;
+}
+
+.filters li {
+    display: inline;
+}
+
+.filters li a {
+    color: inherit;
+    margin: 3px;
+    padding: 3px 7px;
+    text-decoration: none;
+    border: 1px solid transparent;
+    border-radius: 3px;
+}
+
+.filters li a:hover {
+    border-color: rgba(175, 47, 47, 0.1);
+}
+
+.filters li a.selected {
+    border-color: rgba(175, 47, 47, 0.2);
+}
+
+.clear-completed,
+html .clear-completed:active {
+    float: right;
+    position: relative;
+    line-height: 20px;
+    text-decoration: none;
+    cursor: pointer;
+}
+
+.clear-completed:hover {
+    text-decoration: underline;
+}
+
+.info {
+    margin: 65px auto 0;
+    color: #bfbfbf;
+    font-size: 10px;
+    text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+    text-align: center;
+}
+
+.info p {
+    line-height: 1;
+}
+
+.info a {
+    color: inherit;
+    text-decoration: none;
+    font-weight: 400;
+}
+
+.info a:hover {
+    text-decoration: underline;
+}
+
+/*
+    Hack to remove background from Mobile Safari.
+    Can't use it globally since it destroys checkboxes in Firefox
+*/
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+    .toggle-all,
+    .todo-list li .toggle {
+        background: none;
+    }
+
+    .todo-list li .toggle {
+        height: 40px;
+    }
+}
+
+@media (max-width: 430px) {
+    .footer {
+        height: 50px;
+    }
+
+    .filters {
+        bottom: 10px;
+    }
+}
index 10e3d2f..e04fbdb 100644 (file)
@@ -112,28 +112,32 @@ body {
     border-top: 1px solid #e6e6e6;
 }
 
-label[for='toggle-all'] {
-    display: none;
-}
-
 .toggle-all {
+    text-align: center;
+    border: none; /* Mobile Safari */
+    opacity: 0;
     position: absolute;
-    top: -55px;
-    left: -12px;
+}
+
+.toggle-all + label {
     width: 60px;
     height: 34px;
-    text-align: center;
-    border: none; /* Mobile Safari */
+    font-size: 0;
+    position: absolute;
+    top: -52px;
+    left: -13px;
+    -webkit-transform: rotate(90deg);
+    transform: rotate(90deg);
 }
 
-.toggle-all:before {
+.toggle-all + label:before {
     content: '❯';
     font-size: 22px;
     color: #e6e6e6;
     padding: 10px 27px 10px 27px;
 }
 
-.toggle-all:checked:before {
+.toggle-all:checked + label:before {
     color: #737373;
 }
 
@@ -183,18 +187,27 @@ label[for='toggle-all'] {
     appearance: none;
 }
 
-.todo-list li .toggle:after {
-    content: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="-10 -18 100 135"><circle cx="50" cy="50" r="50" fill="none" stroke="#ededed" stroke-width="3"/></svg>');
+.todo-list li .toggle {
+    opacity: 0;
 }
 
-.todo-list li .toggle:checked:after {
-    content: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="-10 -18 100 135"><circle cx="50" cy="50" r="50" fill="none" stroke="#bddad5" stroke-width="3"/><path fill="#5dc2af" d="M72 25L42 71 27 56l-4 4 20 20 34-52z"/></svg>');
+.todo-list li .toggle + label {
+    /*
+        Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433
+        IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/
+    */
+    background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E');
+    background-repeat: no-repeat;
+    background-position: center left;
+}
+
+.todo-list li .toggle:checked + label {
+    background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E');
 }
 
 .todo-list li label {
     word-break: break-all;
-    padding: 15px 60px 15px 15px;
-    margin-left: 45px;
+    padding: 15px 15px 15px 60px;
     display: block;
     line-height: 1.2;
     transition: color 0.4s;
@@ -350,13 +363,6 @@ html .clear-completed:active {
     .todo-list li .toggle {
         height: 40px;
     }
-
-    .toggle-all {
-        -webkit-transform: rotate(90deg);
-        transform: rotate(90deg);
-        -webkit-appearance: none;
-        appearance: none;
-    }
 }
 
 @media (max-width: 430px) {
index 46531c5..63b81a8 100644 (file)
@@ -1,18 +1,43 @@
 {
-  "name": "todomvc-app-css",
-  "style": "index.css",
-  "version": "2.0.6",
-  "description": "CSS for TodoMVC apps",
-  "license": "CC-BY-4.0",
-  "repository": "tastejs/todomvc-app-css",
+  "_from": "todomvc-app-css@^2.1.0",
+  "_id": "todomvc-app-css@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-tvJxbTOa+i5feZNH0qSLBTliQqU=",
+  "_location": "/todomvc-app-css",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "todomvc-app-css@^2.1.0",
+    "name": "todomvc-app-css",
+    "escapedName": "todomvc-app-css",
+    "rawSpec": "^2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.1.0"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-2.1.0.tgz",
+  "_shasum": "b6f2716d339afa2e5f799347d2a48b05396242a5",
+  "_spec": "todomvc-app-css@^2.1.0",
+  "_where": "/Users/mathiasb/projects/WebKit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/inferno",
   "author": {
     "name": "Sindre Sorhus",
     "email": "sindresorhus@gmail.com",
     "url": "sindresorhus.com"
   },
+  "bugs": {
+    "url": "https://github.com/tastejs/todomvc-app-css/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "CSS for TodoMVC apps",
   "files": [
     "index.css"
   ],
+  "homepage": "https://github.com/tastejs/todomvc-app-css#readme",
   "keywords": [
     "todomvc",
     "tastejs",
     "css",
     "style",
     "stylesheet"
-  ]
+  ],
+  "license": "CC-BY-4.0",
+  "name": "todomvc-app-css",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/tastejs/todomvc-app-css.git"
+  },
+  "style": "index.css",
+  "version": "2.1.0"
 }
index 81e006b..e1676db 100644 (file)
@@ -21,7 +21,7 @@
                 }
             }
             return object;
-        }
+        };
 
         // By default, Underscore uses ERB-style template delimiters, change the
         // following template settings to use alternative delimiters.
index 57c6c5f..4018c19 100644 (file)
@@ -1,20 +1,55 @@
 {
-  "name": "todomvc-common",
-  "version": "1.0.3",
+  "_from": "todomvc-common@^1.0.4",
+  "_id": "todomvc-common@1.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-AA0Z4exovEqubhbZCrzzn9roVT4zvOncS319p2zIc4CsNe5B9TLL7Sei1NIV6d+WrgR5rOi+y0I9Y6GE7xgNOw==",
+  "_location": "/todomvc-common",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "todomvc-common@^1.0.4",
+    "name": "todomvc-common",
+    "escapedName": "todomvc-common",
+    "rawSpec": "^1.0.4",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.4"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.4.tgz",
+  "_shasum": "23099af886c2f0525bfd4537e078f12d0074309e",
+  "_spec": "todomvc-common@^1.0.4",
+  "_where": "/Users/mathiasb/projects/WebKit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/inferno",
+  "author": {
+    "name": "TasteJS"
+  },
+  "bugs": {
+    "url": "https://github.com/tastejs/todomvc-common/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
   "description": "Common TodoMVC utilities used by our apps",
-  "license": "MIT",
-  "repository": "tastejs/todomvc-common",
-  "author": "TasteJS",
-  "main": "base.js",
-  "style": "base.css",
   "files": [
     "base.js",
     "base.css"
   ],
+  "homepage": "https://github.com/tastejs/todomvc-common#readme",
   "keywords": [
     "todomvc",
     "tastejs",
     "util",
     "utilities"
-  ]
+  ],
+  "license": "MIT",
+  "main": "base.js",
+  "name": "todomvc-common",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/tastejs/todomvc-common.git"
+  },
+  "style": "base.css",
+  "version": "1.0.4"
 }
index 075ed52..4eae839 100644 (file)
@@ -8,8 +8,8 @@
   "dependencies": {
     "inferno": "beta32",
     "inferno-component": "beta32",
-    "todomvc-app-css": "^2.0.0",
-    "todomvc-common": "^1.0.0"
+    "todomvc-app-css": "^2.1.0",
+    "todomvc-common": "^1.0.4"
   },
   "devDependencies": {
     "babel-core": "^6.5.2",
index 1cf803e..63610b2 100644 (file)
@@ -8,19 +8,19 @@
         <link rel="stylesheet" href="css/app.css">
     </head>
     <body>
-        <section id="todoapp">
-            <header id="header">
+        <section id="todoapp" class="todoapp">
+            <header id="header" class="header">
                 <h1>todos</h1>
-                <input id="new-todo" placeholder="What needs to be done?" autofocus>
+                <input id="new-todo" class="new-todo" placeholder="What needs to be done?" autofocus>
             </header>
-            <section id="main">
-                <input id="toggle-all" type="checkbox">
+            <section id="main" class="main">
+                <input id="toggle-all" class="toggle-all" type="checkbox">
                 <label for="toggle-all">Mark all as complete</label>
-                <ul id="todo-list"></ul>
+                <ul id="todo-list" class="todo-list"></ul>
             </section>
-            <footer id="footer"></footer>
+            <footer id="footer" class="footer"></footer>
         </section>
-        <footer id="info">
+        <footer id="info" class="info">
             <p>Double-click to edit a todo</p>
             <p>Created by <a href="http://sindresorhus.com">Sindre Sorhus</a></p>
             <p>Part of <a href="http://todomvc.com">TodoMVC</a></p>
@@ -38,8 +38,8 @@
         {{/this}}
         </script>
         <script id="footer-template" type="text/x-handlebars-template">
-            <span id="todo-count"><strong>{{activeTodoCount}}</strong> {{activeTodoWord}} left</span>
-            <ul id="filters">
+            <span id="todo-count" class="todo-count"><strong>{{activeTodoCount}}</strong> {{activeTodoWord}} left</span>
+            <ul id="filters" class="filters">
                 <li>
                     <a {{#eq filter 'all'}}class="selected"{{/eq}} href="#/all">All</a>
                 </li>
index 23f4aea..f345d09 100644 (file)
@@ -46,6 +46,10 @@ jQuery(function ($) {
                     this.render();
                 }.bind(this)
             }).init('/all');
+
+            var dummyNodeToNotifyAppIsReady = document.createElement('div');
+            dummyNodeToNotifyAppIsReady.id = 'appIsReady';
+            document.body.appendChild(dummyNodeToNotifyAppIsReady);
         },
         bindEvents: function () {
             $('#new-todo').on('keyup', this.create.bind(this));
index 17ea180..e04fbdb 100644 (file)
@@ -17,8 +17,7 @@ button {
     -webkit-appearance: none;
     appearance: none;
     -webkit-font-smoothing: antialiased;
-    -moz-font-smoothing: antialiased;
-    font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
 }
 
 body {
@@ -30,21 +29,19 @@ body {
     max-width: 550px;
     margin: 0 auto;
     -webkit-font-smoothing: antialiased;
-    -moz-font-smoothing: antialiased;
-    font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
     font-weight: 300;
 }
 
-button,
-input[type="checkbox"] {
-    outline: none;
+:focus {
+    outline: 0;
 }
 
 .hidden {
     display: none;
 }
 
-#todoapp {
+.todoapp {
     background: #fff;
     margin: 130px 0 40px 0;
     position: relative;
@@ -52,25 +49,25 @@ input[type="checkbox"] {
                 0 25px 50px 0 rgba(0, 0, 0, 0.1);
 }
 
-#todoapp input::-webkit-input-placeholder {
+.todoapp input::-webkit-input-placeholder {
     font-style: italic;
     font-weight: 300;
     color: #e6e6e6;
 }
 
-#todoapp input::-moz-placeholder {
+.todoapp input::-moz-placeholder {
     font-style: italic;
     font-weight: 300;
     color: #e6e6e6;
 }
 
-#todoapp input::input-placeholder {
+.todoapp input::input-placeholder {
     font-style: italic;
     font-weight: 300;
     color: #e6e6e6;
 }
 
-#todoapp h1 {
+.todoapp h1 {
     position: absolute;
     top: -155px;
     width: 100%;
@@ -83,7 +80,7 @@ input[type="checkbox"] {
     text-rendering: optimizeLegibility;
 }
 
-#new-todo,
+.new-todo,
 .edit {
     position: relative;
     margin: 0;
@@ -93,88 +90,90 @@ input[type="checkbox"] {
     font-weight: inherit;
     line-height: 1.4em;
     border: 0;
-    outline: none;
     color: inherit;
     padding: 6px;
     border: 1px solid #999;
     box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2);
     box-sizing: border-box;
     -webkit-font-smoothing: antialiased;
-    -moz-font-smoothing: antialiased;
-    font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
 }
 
-#new-todo {
+.new-todo {
     padding: 16px 16px 16px 60px;
     border: none;
     background: rgba(0, 0, 0, 0.003);
     box-shadow: inset 0 -2px 1px rgba(0,0,0,0.03);
 }
 
-#main {
+.main {
     position: relative;
     z-index: 2;
     border-top: 1px solid #e6e6e6;
 }
 
-label[for='toggle-all'] {
-    display: none;
+.toggle-all {
+    text-align: center;
+    border: none; /* Mobile Safari */
+    opacity: 0;
+    position: absolute;
 }
 
-#toggle-all {
-    position: absolute;
-    top: -55px;
-    left: -12px;
+.toggle-all + label {
     width: 60px;
     height: 34px;
-    text-align: center;
-    border: none; /* Mobile Safari */
+    font-size: 0;
+    position: absolute;
+    top: -52px;
+    left: -13px;
+    -webkit-transform: rotate(90deg);
+    transform: rotate(90deg);
 }
 
-#toggle-all:before {
+.toggle-all + label:before {
     content: '❯';
     font-size: 22px;
     color: #e6e6e6;
     padding: 10px 27px 10px 27px;
 }
 
-#toggle-all:checked:before {
+.toggle-all:checked + label:before {
     color: #737373;
 }
 
-#todo-list {
+.todo-list {
     margin: 0;
     padding: 0;
     list-style: none;
 }
 
-#todo-list li {
+.todo-list li {
     position: relative;
     font-size: 24px;
     border-bottom: 1px solid #ededed;
 }
 
-#todo-list li:last-child {
+.todo-list li:last-child {
     border-bottom: none;
 }
 
-#todo-list li.editing {
+.todo-list li.editing {
     border-bottom: none;
     padding: 0;
 }
 
-#todo-list li.editing .edit {
+.todo-list li.editing .edit {
     display: block;
     width: 506px;
-    padding: 13px 17px 12px 17px;
+    padding: 12px 16px;
     margin: 0 0 0 43px;
 }
 
-#todo-list li.editing .view {
+.todo-list li.editing .view {
     display: none;
 }
 
-#todo-list li .toggle {
+.todo-list li .toggle {
     text-align: center;
     width: 40px;
     /* auto, since non-WebKit browsers doesn't support input styling */
@@ -188,30 +187,38 @@ label[for='toggle-all'] {
     appearance: none;
 }
 
-#todo-list li .toggle:after {
-    content: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="-10 -18 100 135"><circle cx="50" cy="50" r="50" fill="none" stroke="#ededed" stroke-width="3"/></svg>');
+.todo-list li .toggle {
+    opacity: 0;
+}
+
+.todo-list li .toggle + label {
+    /*
+        Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433
+        IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/
+    */
+    background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E');
+    background-repeat: no-repeat;
+    background-position: center left;
 }
 
-#todo-list li .toggle:checked:after {
-    content: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="-10 -18 100 135"><circle cx="50" cy="50" r="50" fill="none" stroke="#bddad5" stroke-width="3"/><path fill="#5dc2af" d="M72 25L42 71 27 56l-4 4 20 20 34-52z"/></svg>');
+.todo-list li .toggle:checked + label {
+    background-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E');
 }
 
-#todo-list li label {
-    white-space: pre;
-    word-break: break-word;
-    padding: 15px 60px 15px 15px;
-    margin-left: 45px;
+.todo-list li label {
+    word-break: break-all;
+    padding: 15px 15px 15px 60px;
     display: block;
     line-height: 1.2;
     transition: color 0.4s;
 }
 
-#todo-list li.completed label {
+.todo-list li.completed label {
     color: #d9d9d9;
     text-decoration: line-through;
 }
 
-#todo-list li .destroy {
+.todo-list li .destroy {
     display: none;
     position: absolute;
     top: 0;
@@ -226,27 +233,27 @@ label[for='toggle-all'] {
     transition: color 0.2s ease-out;
 }
 
-#todo-list li .destroy:hover {
+.todo-list li .destroy:hover {
     color: #af5b5e;
 }
 
-#todo-list li .destroy:after {
+.todo-list li .destroy:after {
     content: '×';
 }
 
-#todo-list li:hover .destroy {
+.todo-list li:hover .destroy {
     display: block;
 }
 
-#todo-list li .edit {
+.todo-list li .edit {
     display: none;
 }
 
-#todo-list li.editing:last-child {
+.todo-list li.editing:last-child {
     margin-bottom: -1px;
 }
 
-#footer {
+.footer {
     color: #777;
     padding: 10px 15px;
     height: 20px;
@@ -254,7 +261,7 @@ label[for='toggle-all'] {
     border-top: 1px solid #e6e6e6;
 }
 
-#footer:before {
+.footer:before {
     content: '';
     position: absolute;
     right: 0;
@@ -269,16 +276,16 @@ label[for='toggle-all'] {
                 0 17px 2px -6px rgba(0, 0, 0, 0.2);
 }
 
-#todo-count {
+.todo-count {
     float: left;
     text-align: left;
 }
 
-#todo-count strong {
+.todo-count strong {
     font-weight: 300;
 }
 
-#filters {
+.filters {
     margin: 0;
     padding: 0;
     list-style: none;
@@ -287,11 +294,11 @@ label[for='toggle-all'] {
     left: 0;
 }
 
-#filters li {
+.filters li {
     display: inline;
 }
 
-#filters li a {
+.filters li a {
     color: inherit;
     margin: 3px;
     padding: 3px 7px;
@@ -300,30 +307,28 @@ label[for='toggle-all'] {
     border-radius: 3px;
 }
 
-#filters li a.selected,
-#filters li a:hover {
+.filters li a:hover {
     border-color: rgba(175, 47, 47, 0.1);
 }
 
-#filters li a.selected {
+.filters li a.selected {
     border-color: rgba(175, 47, 47, 0.2);
 }
 
-#clear-completed,
-html #clear-completed:active {
+.clear-completed,
+html .clear-completed:active {
     float: right;
     position: relative;
     line-height: 20px;
     text-decoration: none;
     cursor: pointer;
-    position: relative;
 }
 
-#clear-completed:hover {
+.clear-completed:hover {
     text-decoration: underline;
 }
 
-#info {
+.info {
     margin: 65px auto 0;
     color: #bfbfbf;
     font-size: 10px;
@@ -331,17 +336,17 @@ html #clear-completed:active {
     text-align: center;
 }
 
-#info p {
+.info p {
     line-height: 1;
 }
 
-#info a {
+.info a {
     color: inherit;
     text-decoration: none;
     font-weight: 400;
 }
 
-#info a:hover {
+.info a:hover {
     text-decoration: underline;
 }
 
@@ -350,29 +355,22 @@ html #clear-completed:active {
     Can't use it globally since it destroys checkboxes in Firefox
 */
 @media screen and (-webkit-min-device-pixel-ratio:0) {
-    #toggle-all,
-    #todo-list li .toggle {
+    .toggle-all,
+    .todo-list li .toggle {
         background: none;
     }
 
-    #todo-list li .toggle {
+    .todo-list li .toggle {
         height: 40px;
     }
-
-    #toggle-all {
-        -webkit-transform: rotate(90deg);
-        transform: rotate(90deg);
-        -webkit-appearance: none;
-        appearance: none;
-    }
 }
 
 @media (max-width: 430px) {
-    #footer {
+    .footer {
         height: 50px;
     }
 
-    #filters {
+    .filters {
         bottom: 10px;
     }
 }
index 550efa6..abff9e6 100644 (file)
@@ -1,46 +1,27 @@
 {
-  "_args": [
-    [
-      {
-        "raw": "todomvc-app-css@~1.0.1",
-        "scope": null,
-        "escapedName": "todomvc-app-css",
-        "name": "todomvc-app-css",
-        "rawSpec": "~1.0.1",
-        "spec": ">=1.0.1 <1.1.0",
-        "type": "range"
-      },
-      "/Users/addyo/projects/speedometer/resources/todomvc/architecture-examples/jquery"
-    ]
-  ],
-  "_from": "todomvc-app-css@>=1.0.1 <1.1.0",
-  "_id": "todomvc-app-css@1.0.4",
-  "_inCache": true,
+  "_from": "todomvc-app-css@^2.1.0",
+  "_id": "todomvc-app-css@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-tvJxbTOa+i5feZNH0qSLBTliQqU=",
   "_location": "/todomvc-app-css",
-  "_nodeVersion": "0.12.0",
-  "_npmUser": {
-    "name": "sindresorhus",
-    "email": "sindresorhus@gmail.com"
-  },
-  "_npmVersion": "2.5.1",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "todomvc-app-css@~1.0.1",
-    "scope": null,
-    "escapedName": "todomvc-app-css",
+    "type": "range",
+    "registry": true,
+    "raw": "todomvc-app-css@^2.1.0",
     "name": "todomvc-app-css",
-    "rawSpec": "~1.0.1",
-    "spec": ">=1.0.1 <1.1.0",
-    "type": "range"
+    "escapedName": "todomvc-app-css",
+    "rawSpec": "^2.1.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.1.0"
   },
   "_requiredBy": [
     "/"
   ],
-  "_resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-1.0.4.tgz",
-  "_shasum": "d2529279a6da5befb06b55c0c324c5fcfd94d656",
-  "_shrinkwrap": null,
-  "_spec": "todomvc-app-css@~1.0.1",
-  "_where": "/Users/addyo/projects/speedometer/resources/todomvc/architecture-examples/jquery",
+  "_resolved": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-2.1.0.tgz",
+  "_shasum": "b6f2716d339afa2e5f799347d2a48b05396242a5",
+  "_spec": "todomvc-app-css@^2.1.0",
+  "_where": "/Users/mathiasb/projects/WebKit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/jquery",
   "author": {
     "name": "Sindre Sorhus",
     "email": "sindresorhus@gmail.com",
   "bugs": {
     "url": "https://github.com/tastejs/todomvc-app-css/issues"
   },
-  "dependencies": {},
+  "bundleDependencies": false,
+  "deprecated": false,
   "description": "CSS for TodoMVC apps",
-  "devDependencies": {},
-  "directories": {},
-  "dist": {
-    "shasum": "d2529279a6da5befb06b55c0c324c5fcfd94d656",
-    "tarball": "https://registry.npmjs.org/todomvc-app-css/-/todomvc-app-css-1.0.4.tgz"
-  },
   "files": [
     "index.css"
   ],
-  "gitHead": "1e4e38884a35193eaf1808a5ba44421832867184",
-  "homepage": "https://github.com/tastejs/todomvc-app-css",
+  "homepage": "https://github.com/tastejs/todomvc-app-css#readme",
   "keywords": [
     "todomvc",
     "tastejs",
     "stylesheet"
   ],
   "license": "CC-BY-4.0",
-  "maintainers": [
-    {
-      "name": "sindresorhus",
-      "email": "sindresorhus@gmail.com"
-    },
-    {
-      "name": "addyosmani",
-      "email": "addyosmani@gmail.com"
-    },
-    {
-      "name": "passy",
-      "email": "phartig@rdrei.net"
-    },
-    {
-      "name": "stephenplusplus",
-      "email": "sawchuk@gmail.com"
-    }
-  ],
   "name": "todomvc-app-css",
-  "optionalDependencies": {},
-  "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/tastejs/todomvc-app-css.git"
   },
-  "scripts": {},
-  "version": "1.0.4"
+  "style": "index.css",
+  "version": "2.1.0"
 }
index 81e006b..e1676db 100644 (file)
@@ -21,7 +21,7 @@
                 }
             }
             return object;
-        }
+        };
 
         // By default, Underscore uses ERB-style template delimiters, change the
         // following template settings to use alternative delimiters.
index 5525d43..5200ebd 100644 (file)
@@ -1,69 +1,40 @@
 {
-  "_args": [
-    [
-      {
-        "raw": "todomvc-common@~1.0.1",
-        "scope": null,
-        "escapedName": "todomvc-common",
-        "name": "todomvc-common",
-        "rawSpec": "~1.0.1",
-        "spec": ">=1.0.1 <1.1.0",
-        "type": "range"
-      },
-      "/Users/addyo/projects/speedometer/resources/todomvc/architecture-examples/jquery"
-    ]
-  ],
-  "_from": "todomvc-common@>=1.0.1 <1.1.0",
-  "_id": "todomvc-common@1.0.3",
-  "_inCache": true,
+  "_from": "todomvc-common@^1.0.4",
+  "_id": "todomvc-common@1.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-AA0Z4exovEqubhbZCrzzn9roVT4zvOncS319p2zIc4CsNe5B9TLL7Sei1NIV6d+WrgR5rOi+y0I9Y6GE7xgNOw==",
   "_location": "/todomvc-common",
-  "_nodeVersion": "7.1.0",
-  "_npmOperationalInternal": {
-    "host": "packages-18-east.internal.npmjs.com",
-    "tmp": "tmp/todomvc-common-1.0.3.tgz_1479276361227_0.51124880136922"
-  },
-  "_npmUser": {
-    "name": "sindresorhus",
-    "email": "sindresorhus@gmail.com"
-  },
-  "_npmVersion": "3.10.9",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "todomvc-common@~1.0.1",
-    "scope": null,
-    "escapedName": "todomvc-common",
+    "type": "range",
+    "registry": true,
+    "raw": "todomvc-common@^1.0.4",
     "name": "todomvc-common",
-    "rawSpec": "~1.0.1",
-    "spec": ">=1.0.1 <1.1.0",
-    "type": "range"
+    "escapedName": "todomvc-common",
+    "rawSpec": "^1.0.4",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.4"
   },
   "_requiredBy": [
     "/"
   ],
-  "_resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.3.tgz",
-  "_shasum": "cba1868109caa401b908ebf77794cc1014b74873",
-  "_shrinkwrap": null,
-  "_spec": "todomvc-common@~1.0.1",
-  "_where": "/Users/addyo/projects/speedometer/resources/todomvc/architecture-examples/jquery",
+  "_resolved": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.4.tgz",
+  "_shasum": "23099af886c2f0525bfd4537e078f12d0074309e",
+  "_spec": "todomvc-common@^1.0.4",
+  "_where": "/Users/mathiasb/projects/WebKit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/jquery",
   "author": {
     "name": "TasteJS"
   },
   "bugs": {
     "url": "https://github.com/tastejs/todomvc-common/issues"
   },
-  "dependencies": {},
+  "bundleDependencies": false,
+  "deprecated": false,
   "description": "Common TodoMVC utilities used by our apps",
-  "devDependencies": {},
-  "directories": {},
-  "dist": {
-    "shasum": "cba1868109caa401b908ebf77794cc1014b74873",
-    "tarball": "https://registry.npmjs.org/todomvc-common/-/todomvc-common-1.0.3.tgz"
-  },
   "files": [
     "base.js",
     "base.css"
   ],
-  "gitHead": "e7425bafb9561d766b769844810e0496734ffe8c",
   "homepage": "https://github.com/tastejs/todomvc-common#readme",
   "keywords": [
     "todomvc",
   ],
   "license": "MIT",
   "main": "base.js",
-  "maintainers": [
-    {
-      "name": "sindresorhus",
-      "email": "sindresorhus@gmail.com"
-    },
-    {
-      "name": "addyosmani",
-      "email": "addyosmani@gmail.com"
-    },
-    {
-      "name": "passy",
-      "email": "phartig@rdrei.net"
-    },
-    {
-      "name": "stephenplusplus",
-      "email": "sawchuk@gmail.com"
-    }
-  ],
   "name": "todomvc-common",
-  "optionalDependencies": {},
-  "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/tastejs/todomvc-common.git"
   },
-  "scripts": {},
   "style": "base.css",
-  "version": "1.0.3"
+  "version": "1.0.4"
 }
index 097c85f..acccc09 100644 (file)
@@ -4,7 +4,7 @@
     "director": "~1.2.2",
     "handlebars": "^4.0.6",
     "jquery": "^3.1.1",
-    "todomvc-app-css": "~1.0.1",
-    "todomvc-common": "~1.0.1"
+    "todomvc-app-css": "^2.1.0",
+    "todomvc-common": "^1.0.4"
   }
 }
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/asset-manifest.json b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/asset-manifest.json
new file mode 100644 (file)
index 0000000..8885d82
--- /dev/null
@@ -0,0 +1,6 @@
+{
+  "main.css": "static/css/main.21111742.css",
+  "main.css.map": "static/css/main.21111742.css.map",
+  "main.js": "static/js/main.18b409e1.js",
+  "main.js.map": "static/js/main.18b409e1.js.map"
+}
\ No newline at end of file
index 54407c5..8521f2f 100644 (file)
@@ -1 +1 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>React Redux TodoMVC example</title><link href="./static/css/main.f04a7319.css" rel="stylesheet"></head><body><div class="todoapp" id="root"></div><script type="text/javascript" src="./static/js/main.69cd9655.js"></script></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>React Redux TodoMVC example</title><link href="./static/css/main.21111742.css" rel="stylesheet"></head><body><div class="todoapp" id="root"></div><script type="text/javascript" src="./static/js/main.18b409e1.js"></script></body></html>
\ No newline at end of file
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/service-worker.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/service-worker.js
new file mode 100644 (file)
index 0000000..ff8d47d
--- /dev/null
@@ -0,0 +1 @@
+"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}var precacheConfig=[["./index.html","70e95a3f3a1d1cbd333b8544580c4130"],["./static/css/main.21111742.css","fec2811be103da4460c67500f37bb3fb"],["./static/js/main.18b409e1.js","bc76e5d850c48a3ae24784e335ef0b0e"]],cacheName="sw-precache-v3-sw-precache-webpack-plugin-"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var n=new URL(e);return"/"===n.pathname.slice(-1)&&(n.pathname+=t),n.toString()},cleanResponse=function(e){return e.redirected?("body"in e?Promise.resolve(e.body):e.blob()).then(function(t){return new Response(t,{headers:e.headers,status:e.status,statusText:e.statusText})}):Promise.resolve(e)},createCacheKey=function(e,t,n,r){var a=new URL(e);return r&&a.pathname.match(r)||(a.search+=(a.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(n)),a.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var n=new URL(t).pathname;return e.some(function(e){return n.match(e)})},stripIgnoredUrlParameters=function(e,t){var n=new URL(e);return n.hash="",n.search=n.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),n.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],n=e[1],r=new URL(t,self.location),a=createCacheKey(r,hashParamName,n,/\.\w{8}\./);return[r.toString(),a]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(n){if(!t.has(n)){var r=new Request(n,{credentials:"same-origin"});return fetch(r).then(function(t){if(!t.ok)throw new Error("Request for "+n+" returned a response with status "+t.status);return cleanResponse(t).then(function(t){return e.put(n,t)})})}}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(n){return Promise.all(n.map(function(n){if(!t.has(n.url))return e.delete(n)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,n=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);(t=urlsToCacheKeys.has(n))||(n=addDirectoryIndex(n,"index.html"),t=urlsToCacheKeys.has(n));!t&&"navigate"===e.request.mode&&isPathWhitelisted(["^(?!\\/__).*"],e.request.url)&&(n=new URL("./index.html",self.location).toString(),t=urlsToCacheKeys.has(n)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(n)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}});
\ No newline at end of file
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.21111742.css b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.21111742.css
new file mode 100644 (file)
index 0000000..5e5aa19
--- /dev/null
@@ -0,0 +1,2 @@
+body,button,html{margin:0;padding:0}button{border:0;background:none;font-size:100%;vertical-align:baseline;font-family:inherit;font-weight:inherit;color:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-font-smoothing:antialiased}body,button{-moz-osx-font-smoothing:grayscale}body{font:14px Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.4em;background:#f5f5f5;color:#4d4d4d;min-width:230px;max-width:550px;margin:0 auto;-webkit-font-smoothing:antialiased;font-weight:300}:focus{outline:0}.hidden{display:none}.todoapp{background:#fff;margin:130px 0 40px;position:relative;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.2),0 25px 50px 0 rgba(0,0,0,.1);box-shadow:0 2px 4px 0 rgba(0,0,0,.2),0 25px 50px 0 rgba(0,0,0,.1)}.todoapp input::-webkit-input-placeholder{font-style:italic;font-weight:300;color:#e6e6e6}.todoapp input::-moz-placeholder{font-style:italic;font-weight:300;color:#e6e6e6}.todoapp input::input-placeholder{font-style:italic;font-weight:300;color:#e6e6e6}.todoapp h1{position:absolute;top:-155px;width:100%;font-size:100px;font-weight:100;text-align:center;color:rgba(175,47,47,.15);-webkit-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;text-rendering:optimizeLegibility}.edit,.new-todo{position:relative;margin:0;width:100%;font-size:24px;font-family:inherit;font-weight:inherit;line-height:1.4em;border:0;color:inherit;padding:6px;border:1px solid #999;-webkit-box-shadow:inset 0 -1px 5px 0 rgba(0,0,0,.2);box-shadow:inset 0 -1px 5px 0 rgba(0,0,0,.2);-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.new-todo{padding:16px 16px 16px 60px;border:none;background:rgba(0,0,0,.003);-webkit-box-shadow:inset 0 -2px 1px rgba(0,0,0,.03);box-shadow:inset 0 -2px 1px rgba(0,0,0,.03)}.main{position:relative;z-index:2;border-top:1px solid #e6e6e6}.toggle-all{text-align:center;border:none;opacity:0;position:absolute}.toggle-all+label{width:60px;height:34px;font-size:0;position:absolute;top:-52px;left:-13px;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.toggle-all+label:before{content:"\276F";font-size:22px;color:#e6e6e6;padding:10px 27px}.toggle-all:checked+label:before{color:#737373}.todo-list{margin:0;padding:0;list-style:none}.todo-list li{position:relative;font-size:24px;border-bottom:1px solid #ededed}.todo-list li:last-child{border-bottom:none}.todo-list li.editing{border-bottom:none;padding:0}.todo-list li.editing .edit{display:block;width:506px;padding:12px 16px;margin:0 0 0 43px}.todo-list li.editing .view{display:none}.todo-list li .toggle{text-align:center;width:40px;height:auto;position:absolute;top:0;bottom:0;margin:auto 0;border:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0}.todo-list li .toggle+label{background-image:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:0}.todo-list li .toggle:checked+label{background-image:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E")}.todo-list li label{word-break:break-all;padding:15px 15px 15px 60px;display:block;line-height:1.2;-webkit-transition:color .4s;-o-transition:color .4s;transition:color .4s}.todo-list li.completed label{color:#d9d9d9;text-decoration:line-through}.todo-list li .destroy{display:none;position:absolute;top:0;right:10px;bottom:0;width:40px;height:40px;margin:auto 0;font-size:30px;color:#cc9a9a;margin-bottom:11px;-webkit-transition:color .2s ease-out;-o-transition:color .2s ease-out;transition:color .2s ease-out}.todo-list li .destroy:hover{color:#af5b5e}.todo-list li .destroy:after{content:"\D7"}.todo-list li:hover .destroy{display:block}.todo-list li .edit{display:none}.todo-list li.editing:last-child{margin-bottom:-1px}.footer{color:#777;padding:10px 15px;height:20px;text-align:center;border-top:1px solid #e6e6e6}.footer:before{content:"";position:absolute;right:0;bottom:0;left:0;height:50px;overflow:hidden;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.2),0 8px 0 -3px #f6f6f6,0 9px 1px -3px rgba(0,0,0,.2),0 16px 0 -6px #f6f6f6,0 17px 2px -6px rgba(0,0,0,.2);box-shadow:0 1px 1px rgba(0,0,0,.2),0 8px 0 -3px #f6f6f6,0 9px 1px -3px rgba(0,0,0,.2),0 16px 0 -6px #f6f6f6,0 17px 2px -6px rgba(0,0,0,.2)}.todo-count{float:left;text-align:left}.todo-count strong{font-weight:300}.filters{margin:0;padding:0;list-style:none;position:absolute;right:0;left:0}.filters li{display:inline}.filters li a{color:inherit;margin:3px;padding:3px 7px;text-decoration:none;border:1px solid transparent;border-radius:3px}.filters li a:hover{border-color:rgba(175,47,47,.1)}.filters li a.selected{border-color:rgba(175,47,47,.2)}.clear-completed,html .clear-completed:active{float:right;position:relative;line-height:20px;text-decoration:none;cursor:pointer}.clear-completed:hover{text-decoration:underline}.info{margin:65px auto 0;color:#bfbfbf;font-size:10px;text-shadow:0 1px 0 hsla(0,0%,100%,.5);text-align:center}.info p{line-height:1}.info a{color:inherit;text-decoration:none;font-weight:400}.info a:hover{text-decoration:underline}@media screen and (-webkit-min-device-pixel-ratio:0){.todo-list li .toggle,.toggle-all{background:none}.todo-list li .toggle{height:40px}}@media (max-width:430px){.footer{height:50px}.filters{bottom:10px}}
+/*# sourceMappingURL=main.21111742.css.map*/
\ No newline at end of file
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.21111742.css.map b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.21111742.css.map
new file mode 100644 (file)
index 0000000..f74c6fd
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"sources":["../node_modules/todomvc-app-css/index.css"],"names":[],"mappings":"AAMA,iBAJC,SACA,SAAW,CAkBX,OAZA,SACA,gBACA,eACA,wBACA,oBACA,oBACA,cACA,wBACA,qBACK,gBACL,kCAAoC,CAIrC,YAHC,iCAAmC,CAcnC,KAVA,oDACA,kBACA,mBACA,cACA,gBACA,gBACA,cACA,mCAEA,eAAiB,CAGlB,OACC,SAAW,CAGZ,QACC,YAAc,CAGf,SACC,gBACA,oBACA,kBACA,2EAEQ,kEACqC,CAG9C,0CACC,kBACA,gBACA,aAAe,CAGhB,iCACC,kBACA,gBACA,aAAe,CAGhB,kCACC,kBACA,gBACA,aAAe,CAGhB,YACC,kBACA,WACA,WACA,gBACA,gBACA,kBACA,0BACA,0CACA,uCACA,iCAAmC,CAGpC,gBAEC,kBACA,SACA,WACA,eACA,oBACA,oBACA,kBACA,SACA,cACA,YACA,sBACA,qDACQ,6CACR,8BACQ,sBACR,mCACA,iCAAmC,CAGpC,UACC,4BACA,YACA,4BACA,oDACQ,2CAA8C,CAGvD,MACC,kBACA,UACA,4BAA8B,CAG/B,YACC,kBACA,YACA,UACA,iBAAmB,CAGpB,kBACC,WACA,YACA,YACA,kBACA,UACA,WACA,gCACA,4BACI,uBAAyB,CAG9B,yBACC,gBACA,eACA,cACA,iBAA6B,CAG9B,iCACC,aAAe,CAGhB,WACC,SACA,UACA,eAAiB,CAGlB,cACC,kBACA,eACA,+BAAiC,CAGlC,yBACC,kBAAoB,CAGrB,sBACC,mBACA,SAAW,CAGZ,4BACC,cACA,YACA,kBACA,iBAAmB,CAGpB,4BACC,YAAc,CAGf,sBACC,kBACA,WAEA,YACA,kBACA,MACA,SACA,cACA,YACA,wBACA,qBACK,gBAIL,SAAW,CAGZ,4BAKC,oUACA,4BACA,qBAAiC,CAGlC,oCACC,waAA0a,CAG3a,oBACC,qBACA,4BACA,cACA,gBACA,6BACA,wBACA,oBAAuB,CAGxB,8BACC,cACA,4BAA8B,CAG/B,uBACC,aACA,kBACA,MACA,WACA,SACA,WACA,YACA,cACA,eACA,cACA,mBACA,sCACA,iCACA,6BAAgC,CAGjC,6BACC,aAAe,CAGhB,6BACC,aAAa,CAGd,6BACC,aAAe,CAGhB,oBACC,YAAc,CAGf,iCACC,kBAAoB,CAGrB,QACC,WACA,kBACA,YACA,kBACA,4BAA8B,CAG/B,eACC,WACA,kBACA,QACA,SACA,OACA,YACA,gBACA,oJAKQ,2IAIuC,CAGhD,YACC,WACA,eAAiB,CAGlB,mBACC,eAAiB,CAGlB,SACC,SACA,UACA,gBACA,kBACA,QACA,MAAQ,CAGT,YACC,cAAgB,CAGjB,cACC,cACA,WACA,gBACA,qBACA,6BACA,iBAAmB,CAGpB,oBACC,+BAAqC,CAGtC,uBACC,+BAAqC,CAGtC,8CAEC,YACA,kBACA,iBACA,qBACA,cAAgB,CAGjB,uBACC,yBAA2B,CAG5B,MACC,mBACA,cACA,eACA,uCACA,iBAAmB,CAGpB,QACC,aAAe,CAGhB,QACC,cACA,qBACA,eAAiB,CAGlB,cACC,yBAA2B,CAO5B,qDACC,kCAEC,eAAiB,CAGlB,sBACC,WAAa,CACb,CAGF,yBACC,QACC,WAAa,CAGd,SACC,WAAa,CACb","file":"static/css/main.21111742.css","sourcesContent":["html,\nbody {\n\tmargin: 0;\n\tpadding: 0;\n}\n\nbutton {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tbackground: none;\n\tfont-size: 100%;\n\tvertical-align: baseline;\n\tfont-family: inherit;\n\tfont-weight: inherit;\n\tcolor: inherit;\n\t-webkit-appearance: none;\n\t-moz-appearance: none;\n\t     appearance: none;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nbody {\n\tfont: 14px 'Helvetica Neue', Helvetica, Arial, sans-serif;\n\tline-height: 1.4em;\n\tbackground: #f5f5f5;\n\tcolor: #4d4d4d;\n\tmin-width: 230px;\n\tmax-width: 550px;\n\tmargin: 0 auto;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\tfont-weight: 300;\n}\n\n:focus {\n\toutline: 0;\n}\n\n.hidden {\n\tdisplay: none;\n}\n\n.todoapp {\n\tbackground: #fff;\n\tmargin: 130px 0 40px 0;\n\tposition: relative;\n\t-webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2),\n\t            0 25px 50px 0 rgba(0, 0, 0, 0.1);\n\t        box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2),\n\t            0 25px 50px 0 rgba(0, 0, 0, 0.1);\n}\n\n.todoapp input::-webkit-input-placeholder {\n\tfont-style: italic;\n\tfont-weight: 300;\n\tcolor: #e6e6e6;\n}\n\n.todoapp input::-moz-placeholder {\n\tfont-style: italic;\n\tfont-weight: 300;\n\tcolor: #e6e6e6;\n}\n\n.todoapp input::input-placeholder {\n\tfont-style: italic;\n\tfont-weight: 300;\n\tcolor: #e6e6e6;\n}\n\n.todoapp h1 {\n\tposition: absolute;\n\ttop: -155px;\n\twidth: 100%;\n\tfont-size: 100px;\n\tfont-weight: 100;\n\ttext-align: center;\n\tcolor: rgba(175, 47, 47, 0.15);\n\t-webkit-text-rendering: optimizeLegibility;\n\t-moz-text-rendering: optimizeLegibility;\n\ttext-rendering: optimizeLegibility;\n}\n\n.new-todo,\n.edit {\n\tposition: relative;\n\tmargin: 0;\n\twidth: 100%;\n\tfont-size: 24px;\n\tfont-family: inherit;\n\tfont-weight: inherit;\n\tline-height: 1.4em;\n\tborder: 0;\n\tcolor: inherit;\n\tpadding: 6px;\n\tborder: 1px solid #999;\n\t-webkit-box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2);\n\t        box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2);\n\t-webkit-box-sizing: border-box;\n\t        box-sizing: border-box;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\n.new-todo {\n\tpadding: 16px 16px 16px 60px;\n\tborder: none;\n\tbackground: rgba(0, 0, 0, 0.003);\n\t-webkit-box-shadow: inset 0 -2px 1px rgba(0,0,0,0.03);\n\t        box-shadow: inset 0 -2px 1px rgba(0,0,0,0.03);\n}\n\n.main {\n\tposition: relative;\n\tz-index: 2;\n\tborder-top: 1px solid #e6e6e6;\n}\n\n.toggle-all {\n\ttext-align: center;\n\tborder: none; /* Mobile Safari */\n\topacity: 0;\n\tposition: absolute;\n}\n\n.toggle-all + label {\n\twidth: 60px;\n\theight: 34px;\n\tfont-size: 0;\n\tposition: absolute;\n\ttop: -52px;\n\tleft: -13px;\n\t-webkit-transform: rotate(90deg);\n\t-ms-transform: rotate(90deg);\n\t    transform: rotate(90deg);\n}\n\n.toggle-all + label:before {\n\tcontent: '❯';\n\tfont-size: 22px;\n\tcolor: #e6e6e6;\n\tpadding: 10px 27px 10px 27px;\n}\n\n.toggle-all:checked + label:before {\n\tcolor: #737373;\n}\n\n.todo-list {\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style: none;\n}\n\n.todo-list li {\n\tposition: relative;\n\tfont-size: 24px;\n\tborder-bottom: 1px solid #ededed;\n}\n\n.todo-list li:last-child {\n\tborder-bottom: none;\n}\n\n.todo-list li.editing {\n\tborder-bottom: none;\n\tpadding: 0;\n}\n\n.todo-list li.editing .edit {\n\tdisplay: block;\n\twidth: 506px;\n\tpadding: 12px 16px;\n\tmargin: 0 0 0 43px;\n}\n\n.todo-list li.editing .view {\n\tdisplay: none;\n}\n\n.todo-list li .toggle {\n\ttext-align: center;\n\twidth: 40px;\n\t/* auto, since non-WebKit browsers doesn't support input styling */\n\theight: auto;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tmargin: auto 0;\n\tborder: none; /* Mobile Safari */\n\t-webkit-appearance: none;\n\t-moz-appearance: none;\n\t     appearance: none;\n}\n\n.todo-list li .toggle {\n\topacity: 0;\n}\n\n.todo-list li .toggle + label {\n\t/*\n\t\tFirefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433\n\t\tIE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/\n\t*/\n\tbackground-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E');\n\tbackground-repeat: no-repeat;\n\tbackground-position: center left;\n}\n\n.todo-list li .toggle:checked + label {\n\tbackground-image: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E');\n}\n\n.todo-list li label {\n\tword-break: break-all;\n\tpadding: 15px 15px 15px 60px;\n\tdisplay: block;\n\tline-height: 1.2;\n\t-webkit-transition: color 0.4s;\n\t-o-transition: color 0.4s;\n\ttransition: color 0.4s;\n}\n\n.todo-list li.completed label {\n\tcolor: #d9d9d9;\n\ttext-decoration: line-through;\n}\n\n.todo-list li .destroy {\n\tdisplay: none;\n\tposition: absolute;\n\ttop: 0;\n\tright: 10px;\n\tbottom: 0;\n\twidth: 40px;\n\theight: 40px;\n\tmargin: auto 0;\n\tfont-size: 30px;\n\tcolor: #cc9a9a;\n\tmargin-bottom: 11px;\n\t-webkit-transition: color 0.2s ease-out;\n\t-o-transition: color 0.2s ease-out;\n\ttransition: color 0.2s ease-out;\n}\n\n.todo-list li .destroy:hover {\n\tcolor: #af5b5e;\n}\n\n.todo-list li .destroy:after {\n\tcontent: '×';\n}\n\n.todo-list li:hover .destroy {\n\tdisplay: block;\n}\n\n.todo-list li .edit {\n\tdisplay: none;\n}\n\n.todo-list li.editing:last-child {\n\tmargin-bottom: -1px;\n}\n\n.footer {\n\tcolor: #777;\n\tpadding: 10px 15px;\n\theight: 20px;\n\ttext-align: center;\n\tborder-top: 1px solid #e6e6e6;\n}\n\n.footer:before {\n\tcontent: '';\n\tposition: absolute;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\theight: 50px;\n\toverflow: hidden;\n\t-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2),\n\t            0 8px 0 -3px #f6f6f6,\n\t            0 9px 1px -3px rgba(0, 0, 0, 0.2),\n\t            0 16px 0 -6px #f6f6f6,\n\t            0 17px 2px -6px rgba(0, 0, 0, 0.2);\n\t        box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2),\n\t            0 8px 0 -3px #f6f6f6,\n\t            0 9px 1px -3px rgba(0, 0, 0, 0.2),\n\t            0 16px 0 -6px #f6f6f6,\n\t            0 17px 2px -6px rgba(0, 0, 0, 0.2);\n}\n\n.todo-count {\n\tfloat: left;\n\ttext-align: left;\n}\n\n.todo-count strong {\n\tfont-weight: 300;\n}\n\n.filters {\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style: none;\n\tposition: absolute;\n\tright: 0;\n\tleft: 0;\n}\n\n.filters li {\n\tdisplay: inline;\n}\n\n.filters li a {\n\tcolor: inherit;\n\tmargin: 3px;\n\tpadding: 3px 7px;\n\ttext-decoration: none;\n\tborder: 1px solid transparent;\n\tborder-radius: 3px;\n}\n\n.filters li a:hover {\n\tborder-color: rgba(175, 47, 47, 0.1);\n}\n\n.filters li a.selected {\n\tborder-color: rgba(175, 47, 47, 0.2);\n}\n\n.clear-completed,\nhtml .clear-completed:active {\n\tfloat: right;\n\tposition: relative;\n\tline-height: 20px;\n\ttext-decoration: none;\n\tcursor: pointer;\n}\n\n.clear-completed:hover {\n\ttext-decoration: underline;\n}\n\n.info {\n\tmargin: 65px auto 0;\n\tcolor: #bfbfbf;\n\tfont-size: 10px;\n\ttext-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);\n\ttext-align: center;\n}\n\n.info p {\n\tline-height: 1;\n}\n\n.info a {\n\tcolor: inherit;\n\ttext-decoration: none;\n\tfont-weight: 400;\n}\n\n.info a:hover {\n\ttext-decoration: underline;\n}\n\n/*\n\tHack to remove background from Mobile Safari.\n\tCan't use it globally since it destroys checkboxes in Firefox\n*/\n@media screen and (-webkit-min-device-pixel-ratio:0) {\n\t.toggle-all,\n\t.todo-list li .toggle {\n\t\tbackground: none;\n\t}\n\n\t.todo-list li .toggle {\n\t\theight: 40px;\n\t}\n}\n\n@media (max-width: 430px) {\n\t.footer {\n\t\theight: 50px;\n\t}\n\n\t.filters {\n\t\tbottom: 10px;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/todomvc-app-css/index.css"],"sourceRoot":""}
\ No newline at end of file
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.f04a7319.css b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.f04a7319.css
deleted file mode 100644 (file)
index 48bcf9c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-body,button,html{margin:0;padding:0}button{border:0;background:none;font-size:100%;vertical-align:baseline;font-family:inherit;font-weight:inherit;color:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-font-smoothing:antialiased}body,button{-moz-osx-font-smoothing:grayscale}body{font:14px Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.4em;background:#f5f5f5;color:#4d4d4d;min-width:230px;max-width:550px;margin:0 auto;-webkit-font-smoothing:antialiased;font-weight:300}:focus{outline:0}.hidden{display:none}.todoapp{background:#fff;margin:130px 0 40px;position:relative;box-shadow:0 2px 4px 0 rgba(0,0,0,.2),0 25px 50px 0 rgba(0,0,0,.1)}.todoapp input::-webkit-input-placeholder{font-style:italic;font-weight:300;color:#e6e6e6}.todoapp input::-moz-placeholder{font-style:italic;font-weight:300;color:#e6e6e6}.todoapp input::input-placeholder{font-style:italic;font-weight:300;color:#e6e6e6}.todoapp h1{position:absolute;top:-155px;width:100%;font-size:100px;font-weight:100;text-align:center;color:rgba(175,47,47,.15);-webkit-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;text-rendering:optimizeLegibility}.edit,.new-todo{position:relative;margin:0;width:100%;font-size:24px;font-family:inherit;font-weight:inherit;line-height:1.4em;border:0;color:inherit;padding:6px;border:1px solid #999;box-shadow:inset 0 -1px 5px 0 rgba(0,0,0,.2);box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.new-todo{padding:16px 16px 16px 60px;border:none;background:rgba(0,0,0,.003);box-shadow:inset 0 -2px 1px rgba(0,0,0,.03)}.main{position:relative;z-index:2;border-top:1px solid #e6e6e6}.toggle-all{text-align:center;border:none;opacity:0;position:absolute}.toggle-all+label{width:60px;height:34px;font-size:0;position:absolute;top:-52px;left:-13px;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.toggle-all+label:before{content:'\276F';font-size:22px;color:#e6e6e6;padding:10px 27px}.toggle-all:checked+label:before{color:#737373}.todo-list{margin:0;padding:0;list-style:none}.todo-list li{position:relative;font-size:24px;border-bottom:1px solid #ededed}.todo-list li:last-child{border-bottom:none}.todo-list li.editing{border-bottom:none;padding:0}.todo-list li.editing .edit{display:block;width:506px;padding:12px 16px;margin:0 0 0 43px}.todo-list li.editing .view{display:none}.todo-list li .toggle{text-align:center;width:40px;height:auto;position:absolute;top:0;bottom:0;margin:auto 0;border:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0}.todo-list li .toggle+label{background-image:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E');background-repeat:no-repeat;background-position:0}.todo-list li .toggle:checked+label{background-image:url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E')}.todo-list li label{word-break:break-all;padding:15px 15px 15px 60px;display:block;line-height:1.2;-webkit-transition:color .4s;transition:color .4s}.todo-list li.completed label{color:#d9d9d9;text-decoration:line-through}.todo-list li .destroy{display:none;position:absolute;top:0;right:10px;bottom:0;width:40px;height:40px;margin:auto 0;font-size:30px;color:#cc9a9a;margin-bottom:11px;-webkit-transition:color .2s ease-out;transition:color .2s ease-out}.todo-list li .destroy:hover{color:#af5b5e}.todo-list li .destroy:after{content:'\D7'}.todo-list li:hover .destroy{display:block}.todo-list li .edit{display:none}.todo-list li.editing:last-child{margin-bottom:-1px}.footer{color:#777;padding:10px 15px;height:20px;text-align:center;border-top:1px solid #e6e6e6}.footer:before{content:'';position:absolute;right:0;bottom:0;left:0;height:50px;overflow:hidden;box-shadow:0 1px 1px rgba(0,0,0,.2),0 8px 0 -3px #f6f6f6,0 9px 1px -3px rgba(0,0,0,.2),0 16px 0 -6px #f6f6f6,0 17px 2px -6px rgba(0,0,0,.2)}.todo-count{float:left;text-align:left}.todo-count strong{font-weight:300}.filters{margin:0;padding:0;list-style:none;position:absolute;right:0;left:0}.filters li{display:inline}.filters li a{color:inherit;margin:3px;padding:3px 7px;text-decoration:none;border:1px solid transparent;border-radius:3px}.filters li a:hover{border-color:rgba(175,47,47,.1)}.filters li a.selected{border-color:rgba(175,47,47,.2)}.clear-completed,html .clear-completed:active{float:right;position:relative;line-height:20px;text-decoration:none;cursor:pointer}.clear-completed:hover{text-decoration:underline}.info{margin:65px auto 0;color:#bfbfbf;font-size:10px;text-shadow:0 1px 0 hsla(0,0%,100%,.5);text-align:center}.info p{line-height:1}.info a{color:inherit;text-decoration:none;font-weight:400}.info a:hover{text-decoration:underline}@media screen and (-webkit-min-device-pixel-ratio:0){.todo-list li .toggle,.toggle-all{background:none}.todo-list li .toggle{height:40px}}@media (max-width:430px){.footer{height:50px}.filters{bottom:10px}}
-/*# sourceMappingURL=main.f04a7319.css.map*/
\ No newline at end of file
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.f04a7319.css.map b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.f04a7319.css.map
deleted file mode 100644 (file)
index 6bf76e7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":[],"names":[],"mappings":"","file":"static/css/main.f04a7319.css","sourceRoot":""}
\ No newline at end of file
diff --git a/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.18b409e1.js b/Websites/browserbench.org/Speedometer2.0/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.18b409e1.js
new file mode 100644 (file)
index 0000000..5902155
--- /dev/null
@@ -0,0 +1,2 @@
+!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},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=97)}([function(e,t,n){"use strict";function r(e,t,n,r,i,a,u,s){if(o(t),!e){var c;if(void 0===t)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,r,i,a,u,s],p=0;c=new Error(t.replace(/%s/g,function(){return l[p++]})),c.name="Invariant Violation"}throw c.framesToPop=1,c}}var o=function(e){};e.exports=r},function(e,t,n){"use strict";var r=n(6),o=r;e.exports=o},function(e,t,n){"use strict";function r(e){for(var t=arguments.length-1,n="Minified React error #"+e+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+e,r=0;r<t;r++)n+="&args[]="+encodeURIComponent(arguments[r+1]);n+=" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";var o=new Error(n);throw o.name="Invariant Violation",o.framesToPop=1,o}e.exports=r},function(e,t,n){"use strict";function r(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}var o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,u,s=r(e),c=1;c<arguments.length;c++){n=Object(arguments[c]);for(var l in n)i.call(n,l)&&(s[l]=n[l]);if(o){u=o(n);for(var p=0;p<u.length;p++)a.call(n,u[p])&&(s[u[p]]=n[u[p]])}}return s}},function(e,t,n){"use strict";function r(e,t){return 1===e.nodeType&&e.getAttribute(h)===String(t)||8===e.nodeType&&e.nodeValue===" react-text: "+t+" "||8===e.nodeType&&e.nodeValue===" react-empty: "+t+" "}function o(e){for(var t;t=e._renderedComponent;)e=t;return e}function i(e,t){var n=o(e);n._hostNode=t,t[v]=n}function a(e){var t=e._hostNode;t&&(delete t[v],e._hostNode=null)}function u(e,t){if(!(e._flags&m.hasCachedChildNodes)){var n=e._renderedChildren,a=t.firstChild;e:for(var u in n)if(n.hasOwnProperty(u)){var s=n[u],c=o(s)._domID;if(0!==c){for(;null!==a;a=a.nextSibling)if(r(a,c)){i(s,a);continue e}p("32",c)}}e._flags|=m.hasCachedChildNodes}}function s(e){if(e[v])return e[v];for(var t=[];!e[v];){if(t.push(e),!e.parentNode)return null;e=e.parentNode}for(var n,r;e&&(r=e[v]);e=t.pop())n=r,t.length&&u(r,e);return n}function c(e){var t=s(e);return null!=t&&t._hostNode===e?t:null}function l(e){if(void 0===e._hostNode&&p("33"),e._hostNode)return e._hostNode;for(var t=[];!e._hostNode;)t.push(e),e._hostParent||p("34"),e=e._hostParent;for(;t.length;e=t.pop())u(e,e._hostNode);return e._hostNode}var p=n(2),f=n(15),d=n(58),h=(n(0),f.ID_ATTRIBUTE_NAME),m=d,v="__reactInternalInstance$"+Math.random().toString(36).slice(2),y={getClosestInstanceFromNode:s,getInstanceFromNode:c,getNodeFromInstance:l,precacheChildNodes:u,precacheNode:i,uncacheNode:a};e.exports=y},function(e,t,n){"use strict";var r=!("undefined"===typeof window||!window.document||!window.document.createElement),o={canUseDOM:r,canUseWorkers:"undefined"!==typeof Worker,canUseEventListeners:r&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:r&&!!window.screen,isInWorker:!r};e.exports=o},function(e,t,n){"use strict";function r(e){return function(){return e}}var o=function(){};o.thatReturns=r,o.thatReturnsFalse=r(!1),o.thatReturnsTrue=r(!0),o.thatReturnsNull=r(null),o.thatReturnsThis=function(){return this},o.thatReturnsArgument=function(e){return e},e.exports=o},function(e,t,n){"use strict";var r=null;e.exports={debugTool:r}},function(e,t,n){"use strict";function r(){O.ReactReconcileTransaction&&C||l("123")}function o(){this.reinitializeTransaction(),this.dirtyComponentsLength=null,this.callbackQueue=f.getPooled(),this.reconcileTransaction=O.ReactReconcileTransaction.getPooled(!0)}function i(e,t,n,o,i,a){return r(),C.batchedUpdates(e,t,n,o,i,a)}function a(e,t){return e._mountOrder-t._mountOrder}function u(e){var t=e.dirtyComponentsLength;t!==y.length&&l("124",t,y.length),y.sort(a),g++;for(var n=0;n<t;n++){var r=y[n],o=r._pendingCallbacks;r._pendingCallbacks=null;var i;if(h.logTopLevelRenders){var u=r;r._currentElement.type.isReactTopLevelWrapper&&(u=r._renderedComponent),i="React update: "+u.getName(),console.time(i)}if(m.performUpdateIfNecessary(r,e.reconcileTransaction,g),i&&console.timeEnd(i),o)for(var s=0;s<o.length;s++)e.callbackQueue.enqueue(o[s],r.getPublicInstance())}}function s(e){if(r(),!C.isBatchingUpdates)return void C.batchedUpdates(s,e);y.push(e),null==e._updateBatchNumber&&(e._updateBatchNumber=g+1)}function c(e,t){C.isBatchingUpdates||l("125"),b.enqueue(e,t),_=!0}var l=n(2),p=n(3),f=n(62),d=n(12),h=n(63),m=n(16),v=n(24),y=(n(0),[]),g=0,b=f.getPooled(),_=!1,C=null,w={initialize:function(){this.dirtyComponentsLength=y.length},close:function(){this.dirtyComponentsLength!==y.length?(y.splice(0,this.dirtyComponentsLength),T()):y.length=0}},E={initialize:function(){this.callbackQueue.reset()},close:function(){this.callbackQueue.notifyAll()}},x=[w,E];p(o.prototype,v,{getTransactionWrappers:function(){return x},destructor:function(){this.dirtyComponentsLength=null,f.release(this.callbackQueue),this.callbackQueue=null,O.ReactReconcileTransaction.release(this.reconcileTransaction),this.reconcileTransaction=null},perform:function(e,t,n){return v.perform.call(this,this.reconcileTransaction.perform,this.reconcileTransaction,e,t,n)}}),d.addPoolingTo(o);var T=function(){for(;y.length||_;){if(y.length){var e=o.getPooled();e.perform(u,null,e),o.release(e)}if(_){_=!1;var t=b;b=f.getPooled(),t.notifyAll(),f.release(t)}}},P={injectReconcileTransaction:function(e){e||l("126"),O.ReactReconcileTransaction=e},injectBatchingStrategy:function(e){e||l("127"),"function"!==typeof e.batchedUpdates&&l("128"),"boolean"!==typeof e.isBatchingUpdates&&l("129"),C=e}},O={ReactReconcileTransaction:null,batchedUpdates:i,enqueueUpdate:s,flushBatchedUpdates:T,injection:P,asap:c};e.exports=O},function(e,t,n){"use strict";e.exports=n(13)},function(e,t,n){"use strict";var r={current:null};e.exports=r},function(e,t,n){"use strict";function r(e,t,n,r){this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n;var o=this.constructor.Interface;for(var i in o)if(o.hasOwnProperty(i)){var u=o[i];u?this[i]=u(n):"target"===i?this.target=r:this[i]=n[i]}var s=null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue;return this.isDefaultPrevented=s?a.thatReturnsTrue:a.thatReturnsFalse,this.isPropagationStopped=a.thatReturnsFalse,this}var o=n(3),i=n(12),a=n(6),u=(n(1),["dispatchConfig","_targetInst","nativeEvent","isDefaultPrevented","isPropagationStopped","_dispatchListeners","_dispatchInstances"]),s={type:null,target:null,currentTarget:a.thatReturnsNull,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};o(r.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!==typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=a.thatReturnsTrue)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!==typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=a.thatReturnsTrue)},persist:function(){this.isPersistent=a.thatReturnsTrue},isPersistent:a.thatReturnsFalse,destructor:function(){var e=this.constructor.Interface;for(var t in e)this[t]=null;for(var n=0;n<u.length;n++)this[u[n]]=null}}),r.Interface=s,r.augmentClass=function(e,t){var n=this,r=function(){};r.prototype=n.prototype;var a=new r;o(a,e.prototype),e.prototype=a,e.prototype.constructor=e,e.Interface=o({},n.Interface,t),e.augmentClass=n.augmentClass,i.addPoolingTo(e,i.fourArgumentPooler)},i.addPoolingTo(r,i.fourArgumentPooler),e.exports=r},function(e,t,n){"use strict";var r=n(2),o=(n(0),function(e){var t=this;if(t.instancePool.length){var n=t.instancePool.pop();return t.call(n,e),n}return new t(e)}),i=function(e,t){var n=this;if(n.instancePool.length){var r=n.instancePool.pop();return n.call(r,e,t),r}return new n(e,t)},a=function(e,t,n){var r=this;if(r.instancePool.length){var o=r.instancePool.pop();return r.call(o,e,t,n),o}return new r(e,t,n)},u=function(e,t,n,r){var o=this;if(o.instancePool.length){var i=o.instancePool.pop();return o.call(i,e,t,n,r),i}return new o(e,t,n,r)},s=function(e){var t=this;e instanceof t||r("25"),e.destructor(),t.instancePool.length<t.poolSize&&t.instancePool.push(e)},c=o,l=function(e,t){var n=e;return n.instancePool=[],n.getPooled=t||c,n.poolSize||(n.poolSize=10),n.release=s,n},p={addPoolingTo:l,oneArgumentPooler:o,twoArgumentPooler:i,threeArgumentPooler:a,fourArgumentPooler:u};e.exports=p},function(e,t,n){"use strict";var r=n(3),o=n(52),i=n(105),a=n(110),u=n(14),s=n(111),c=n(114),l=n(115),p=n(117),f=u.createElement,d=u.createFactory,h=u.cloneElement,m=r,v=function(e){return e},y={Children:{map:i.map,forEach:i.forEach,count:i.count,toArray:i.toArray,only:p},Component:o.Component,PureComponent:o.PureComponent,createElement:f,cloneElement:h,isValidElement:u.isValidElement,PropTypes:s,createClass:l,createFactory:d,createMixin:v,DOM:a,version:c,__spread:m};e.exports=y},function(e,t,n){"use strict";function r(e){return void 0!==e.ref}function o(e){return void 0!==e.key}var i=n(3),a=n(10),u=(n(1),n(54),Object.prototype.hasOwnProperty),s=n(55),c={key:!0,ref:!0,__self:!0,__source:!0},l=function(e,t,n,r,o,i,a){var u={$$typeof:s,type:e,key:t,ref:n,props:a,_owner:i};return u};l.createElement=function(e,t,n){var i,s={},p=null,f=null;if(null!=t){r(t)&&(f=t.ref),o(t)&&(p=""+t.key),void 0===t.__self?null:t.__self,void 0===t.__source?null:t.__source;for(i in t)u.call(t,i)&&!c.hasOwnProperty(i)&&(s[i]=t[i])}var d=arguments.length-2;if(1===d)s.children=n;else if(d>1){for(var h=Array(d),m=0;m<d;m++)h[m]=arguments[m+2];s.children=h}if(e&&e.defaultProps){var v=e.defaultProps;for(i in v)void 0===s[i]&&(s[i]=v[i])}return l(e,p,f,0,0,a.current,s)},l.createFactory=function(e){var t=l.createElement.bind(null,e);return t.type=e,t},l.cloneAndReplaceKey=function(e,t){return l(e.type,t,e.ref,e._self,e._source,e._owner,e.props)},l.cloneElement=function(e,t,n){var s,p=i({},e.props),f=e.key,d=e.ref,h=(e._self,e._source,e._owner);if(null!=t){r(t)&&(d=t.ref,h=a.current),o(t)&&(f=""+t.key);var m;e.type&&e.type.defaultProps&&(m=e.type.defaultProps);for(s in t)u.call(t,s)&&!c.hasOwnProperty(s)&&(void 0===t[s]&&void 0!==m?p[s]=m[s]:p[s]=t[s])}var v=arguments.length-2;if(1===v)p.children=n;else if(v>1){for(var y=Array(v),g=0;g<v;g++)y[g]=arguments[g+2];p.children=y}return l(e.type,f,d,0,0,h,p)},l.isValidElement=function(e){return"object"===typeof e&&null!==e&&e.$$typeof===s},e.exports=l},function(e,t,n){"use strict";function r(e,t){return(e&t)===t}var o=n(2),i=(n(0),{MUST_USE_PROPERTY:1,HAS_BOOLEAN_VALUE:4,HAS_NUMERIC_VALUE:8,HAS_POSITIVE_NUMERIC_VALUE:24,HAS_OVERLOADED_BOOLEAN_VALUE:32,injectDOMPropertyConfig:function(e){var t=i,n=e.Properties||{},a=e.DOMAttributeNamespaces||{},s=e.DOMAttributeNames||{},c=e.DOMPropertyNames||{},l=e.DOMMutationMethods||{};e.isCustomAttribute&&u._isCustomAttributeFunctions.push(e.isCustomAttribute);for(var p in n){u.properties.hasOwnProperty(p)&&o("48",p);var f=p.toLowerCase(),d=n[p],h={attributeName:f,attributeNamespace:null,propertyName:p,mutationMethod:null,mustUseProperty:r(d,t.MUST_USE_PROPERTY),hasBooleanValue:r(d,t.HAS_BOOLEAN_VALUE),hasNumericValue:r(d,t.HAS_NUMERIC_VALUE),hasPositiveNumericValue:r(d,t.HAS_POSITIVE_NUMERIC_VALUE),hasOverloadedBooleanValue:r(d,t.HAS_OVERLOADED_BOOLEAN_VALUE)};if(h.hasBooleanValue+h.hasNumericValue+h.hasOverloadedBooleanValue<=1||o("50",p),s.hasOwnProperty(p)){var m=s[p];h.attributeName=m}a.hasOwnProperty(p)&&(h.attributeNamespace=a[p]),c.hasOwnProperty(p)&&(h.propertyName=c[p]),l.hasOwnProperty(p)&&(h.mutationMethod=l[p]),u.properties[p]=h}}}),a=":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",u={ID_ATTRIBUTE_NAME:"data-reactid",ROOT_ATTRIBUTE_NAME:"data-reactroot",ATTRIBUTE_NAME_START_CHAR:a,ATTRIBUTE_NAME_CHAR:a+"\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",properties:{},getPossibleStandardName:null,_isCustomAttributeFunctions:[],isCustomAttribute:function(e){for(var t=0;t<u._isCustomAttributeFunctions.length;t++){if((0,u._isCustomAttributeFunctions[t])(e))return!0}return!1},injection:i};e.exports=u},function(e,t,n){"use strict";function r(){o.attachRefs(this,this._currentElement)}var o=n(127),i=(n(7),n(1),{mountComponent:function(e,t,n,o,i,a){var u=e.mountComponent(t,n,o,i,a);return e._currentElement&&null!=e._currentElement.ref&&t.getReactMountReady().enqueue(r,e),u},getHostNode:function(e){return e.getHostNode()},unmountComponent:function(e,t){o.detachRefs(e,e._currentElement),e.unmountComponent(t)},receiveComponent:function(e,t,n,i){var a=e._currentElement;if(t!==a||i!==e._context){var u=o.shouldUpdateRefs(a,t);u&&o.detachRefs(e,a),e.receiveComponent(t,n,i),u&&e._currentElement&&null!=e._currentElement.ref&&n.getReactMountReady().enqueue(r,e)}},performUpdateIfNecessary:function(e,t,n){e._updateBatchNumber===n&&e.performUpdateIfNecessary(t)}});e.exports=i},function(e,t,n){"use strict";function r(e){if(h){var t=e.node,n=e.children;if(n.length)for(var r=0;r<n.length;r++)m(t,n[r],null);else null!=e.html?p(t,e.html):null!=e.text&&d(t,e.text)}}function o(e,t){e.parentNode.replaceChild(t.node,e),r(t)}function i(e,t){h?e.children.push(t):e.node.appendChild(t.node)}function a(e,t){h?e.html=t:p(e.node,t)}function u(e,t){h?e.text=t:d(e.node,t)}function s(){return this.node.nodeName}function c(e){return{node:e,children:[],html:null,text:null,toString:s}}var l=n(38),p=n(26),f=n(39),d=n(67),h="undefined"!==typeof document&&"number"===typeof document.documentMode||"undefined"!==typeof navigator&&"string"===typeof navigator.userAgent&&/\bEdge\/\d/.test(navigator.userAgent),m=f(function(e,t,n){11===t.node.nodeType||1===t.node.nodeType&&"object"===t.node.nodeName.toLowerCase()&&(null==t.node.namespaceURI||t.node.namespaceURI===l.html)?(r(t),e.insertBefore(t.node,n)):(e.insertBefore(t.node,n),r(t))});c.insertTreeBefore=m,c.replaceChildWithTree=o,c.queueChild=i,c.queueHTML=a,c.queueText=u,e.exports=c},function(e,t,n){"use strict";function r(e){for(var t=arguments.length-1,n="Minified React error #"+e+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+e,r=0;r<t;r++)n+="&args[]="+encodeURIComponent(arguments[r+1]);n+=" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";var o=new Error(n);throw o.name="Invariant Violation",o.framesToPop=1,o}e.exports=r},function(e,t,n){"use strict";function r(e,t,n){var r=t.dispatchConfig.phasedRegistrationNames[n];return y(e,r)}function o(e,t,n){var o=r(e,n,t);o&&(n._dispatchListeners=m(n._dispatchListeners,o),n._dispatchInstances=m(n._dispatchInstances,e))}function i(e){e&&e.dispatchConfig.phasedRegistrationNames&&h.traverseTwoPhase(e._targetInst,o,e)}function a(e){if(e&&e.dispatchConfig.phasedRegistrationNames){var t=e._targetInst,n=t?h.getParentInstance(t):null;h.traverseTwoPhase(n,o,e)}}function u(e,t,n){if(n&&n.dispatchConfig.registrationName){var r=n.dispatchConfig.registrationName,o=y(e,r);o&&(n._dispatchListeners=m(n._dispatchListeners,o),n._dispatchInstances=m(n._dispatchInstances,e))}}function s(e){e&&e.dispatchConfig.registrationName&&u(e._targetInst,null,e)}function c(e){v(e,i)}function l(e){v(e,a)}function p(e,t,n,r){h.traverseEnterLeave(n,r,u,e,t)}function f(e){v(e,s)}var d=n(20),h=n(32),m=n(59),v=n(60),y=(n(1),d.getListener),g={accumulateTwoPhaseDispatches:c,accumulateTwoPhaseDispatchesSkipTarget:l,accumulateDirectDispatches:f,accumulateEnterLeaveDispatches:p};e.exports=g},function(e,t,n){"use strict";function r(e){return"button"===e||"input"===e||"select"===e||"textarea"===e}function o(e,t,n){switch(e){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":return!(!n.disabled||!r(t));default:return!1}}var i=n(2),a=n(31),u=n(32),s=n(33),c=n(59),l=n(60),p=(n(0),{}),f=null,d=function(e,t){e&&(u.executeDispatchesInOrder(e,t),e.isPersistent()||e.constructor.release(e))},h=function(e){return d(e,!0)},m=function(e){return d(e,!1)},v=function(e){return"."+e._rootNodeID},y={injection:{injectEventPluginOrder:a.injectEventPluginOrder,injectEventPluginsByName:a.injectEventPluginsByName},putListener:function(e,t,n){"function"!==typeof n&&i("94",t,typeof n);var r=v(e);(p[t]||(p[t]={}))[r]=n;var o=a.registrationNameModules[t];o&&o.didPutListener&&o.didPutListener(e,t,n)},getListener:function(e,t){var n=p[t];if(o(t,e._currentElement.type,e._currentElement.props))return null;var r=v(e);return n&&n[r]},deleteListener:function(e,t){var n=a.registrationNameModules[t];n&&n.willDeleteListener&&n.willDeleteListener(e,t);var r=p[t];if(r){delete r[v(e)]}},deleteAllListeners:function(e){var t=v(e);for(var n in p)if(p.hasOwnProperty(n)&&p[n][t]){var r=a.registrationNameModules[n];r&&r.willDeleteListener&&r.willDeleteListener(e,n),delete p[n][t]}},extractEvents:function(e,t,n,r){for(var o,i=a.plugins,u=0;u<i.length;u++){var s=i[u];if(s){var l=s.extractEvents(e,t,n,r);l&&(o=c(o,l))}}return o},enqueueEvents:function(e){e&&(f=c(f,e))},processEventQueue:function(e){var t=f;f=null,e?l(t,h):l(t,m),f&&i("95"),s.rethrowCaughtError()},__purge:function(){p={}},__getListenerBank:function(){return p}};e.exports=y},function(e,t,n){"use strict";function r(e,t,n,r){return o.call(this,e,t,n,r)}var o=n(11),i=n(34),a={view:function(e){if(e.view)return e.view;var t=i(e);if(t.window===t)return t;var n=t.ownerDocument;return n?n.defaultView||n.parentWindow:window},detail:function(e){return e.detail||0}};o.augmentClass(r,a),e.exports=r},function(e,t,n){"use strict";var r={remove:function(e){e._reactInternalInstance=void 0},get:function(e){return e._reactInternalInstance},has:function(e){return void 0!==e._reactInternalInstance},set:function(e,t){e._reactInternalInstance=t}};e.exports=r},function(e,t,n){"use strict";var r={};e.exports=r},function(e,t,n){"use strict";var r=n(2),o=(n(0),{}),i={reinitializeTransaction:function(){this.transactionWrappers=this.getTransactionWrappers(),this.wrapperInitData?this.wrapperInitData.length=0:this.wrapperInitData=[],this._isInTransaction=!1},_isInTransaction:!1,getTransactionWrappers:null,isInTransaction:function(){return!!this._isInTransaction},perform:function(e,t,n,o,i,a,u,s){this.isInTransaction()&&r("27");var c,l;try{this._isInTransaction=!0,c=!0,this.initializeAll(0),l=e.call(t,n,o,i,a,u,s),c=!1}finally{try{if(c)try{this.closeAll(0)}catch(e){}else this.closeAll(0)}finally{this._isInTransaction=!1}}return l},initializeAll:function(e){for(var t=this.transactionWrappers,n=e;n<t.length;n++){var r=t[n];try{this.wrapperInitData[n]=o,this.wrapperInitData[n]=r.initialize?r.initialize.call(this):null}finally{if(this.wrapperInitData[n]===o)try{this.initializeAll(n+1)}catch(e){}}}},closeAll:function(e){this.isInTransaction()||r("28");for(var t=this.transactionWrappers,n=e;n<t.length;n++){var i,a=t[n],u=this.wrapperInitData[n];try{i=!0,u!==o&&a.close&&a.close.call(this,u),i=!1}finally{if(i)try{this.closeAll(n+1)}catch(e){}}}this.wrapperInitData.length=0}};e.exports=i},function(e,t,n){"use strict";function r(e,t,n,r){return o.call(this,e,t,n,r)}var o=n(21),i=n(66),a=n(36),u={screenX:null,screenY:null,clientX:null,clientY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:a,button:function(e){var t=e.button;return"which"in e?t:2===t?2:4===t?1:0},buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},pageX:function(e){return"pageX"in e?e.pageX:e.clientX+i.currentScrollLeft},pageY:function(e){return"pageY"in e?e.pageY:e.clientY+i.currentScrollTop}};o.augmentClass(r,u),e.exports=r},function(e,t,n){"use strict";var r,o=n(5),i=n(38),a=/^[ \r\n\t\f]/,u=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,s=n(39),c=s(function(e,t){if(e.namespaceURI!==i.svg||"innerHTML"in e)e.innerHTML=t;else{r=r||document.createElement("div"),r.innerHTML="<svg>"+t+"</svg>";for(var n=r.firstChild;n.firstChild;)e.appendChild(n.firstChild)}});if(o.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]&&u.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 r(e){var t=""+e,n=i.exec(t);if(!n)return t;var r,o="",a=0,u=0;for(a=n.index;a<t.length;a++){switch(t.charCodeAt(a)){case 34:r="&quot;";break;case 38:r="&amp;";break;case 39:r="&#x27;";break;case 60:r="&lt;";break;case 62:r="&gt;";break;default:continue}u!==a&&(o+=t.substring(u,a)),u=a+1,o+=r}return u!==a?o+t.substring(u,a):o}function o(e){return"boolean"===typeof e||"number"===typeof e?""+e:r(e)}var i=/["'&<>]/;e.exports=o},function(e,t,n){"use strict";function r(e){return Object.prototype.hasOwnProperty.call(e,m)||(e[m]=d++,p[e[m]]={}),p[e[m]]}var o,i=n(3),a=n(31),u=n(148),s=n(66),c=n(149),l=n(35),p={},f=!1,d=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({},u,{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,o=r(n),i=a.registrationNameDependencies[e],u=0;u<i.length;u++){var s=i[u];o.hasOwnProperty(s)&&o[s]||("topWheel"===s?l("wheel")?v.ReactEventListener.trapBubbledEvent("topWheel","wheel",n):l("mousewheel")?v.ReactEventListener.trapBubbledEvent("topWheel","mousewheel",n):v.ReactEventListener.trapBubbledEvent("topWheel","DOMMouseScroll",n):"topScroll"===s?l("scroll",!0)?v.ReactEventListener.trapCapturedEvent("topScroll","scroll",n):v.ReactEventListener.trapBubbledEvent("topScroll","scroll",v.ReactEventListener.WINDOW_HANDLE):"topFocus"===s||"topBlur"===s?(l("focus",!0)?(v.ReactEventListener.trapCapturedEvent("topFocus","focus",n),v.ReactEventListener.trapCapturedEvent("topBlur","blur",n)):l("focusin")&&(v.ReactEventListener.trapBubbledEvent("topFocus","focusin",n),v.ReactEventListener.trapBubbledEvent("topBlur","focusout",n)),o.topBlur=!0,o.topFocus=!0):h.hasOwnProperty(s)&&v.ReactEventListener.trapBubbledEvent(s,h[s],n),o[s]=!0)}},trapBubbledEvent:function(e,t,n){return v.ReactEventListener.trapBubbledEvent(e,t,n)},trapCapturedEvent:function(e,t,n){return v.ReactEventListener.trapCapturedEvent(e,t,n)},supportsEventPageXY:function(){if(!document.createEvent)return!1;var e=document.createEvent("MouseEvent");return null!=e&&"pageX"in e},ensureScrollValueMonitoring:function(){if(void 0===o&&(o=v.supportsEventPageXY()),!o&&!f){var e=s.refreshScrollValues;v.ReactEventListener.monitorScrollValue(e),f=!0}}});e.exports=v},function(e,t,n){"use strict";var r=n(84),o=n(207),i=n(208);n(209),n(87),n(86);n.d(t,"c",function(){return r.b}),n.d(t,"b",function(){return o.a}),n.d(t,"a",function(){return i.a})},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"===typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";function r(){if(u)for(var e in s){var t=s[e],n=u.indexOf(e);if(n>-1||a("96",e),!c.plugins[n]){t.extractEvents||a("97",e),c.plugins[n]=t;var r=t.eventTypes;for(var i in r)o(r[i],t,i)||a("98",i,e)}}}function o(e,t,n){c.eventNameDispatchConfigs.hasOwnProperty(n)&&a("99",n),c.eventNameDispatchConfigs[n]=e;var r=e.phasedRegistrationNames;if(r){for(var o in r)if(r.hasOwnProperty(o)){var u=r[o];i(u,t,n)}return!0}return!!e.registrationName&&(i(e.registrationName,t,n),!0)}function i(e,t,n){c.registrationNameModules[e]&&a("100",e),c.registrationNameModules[e]=t,c.registrationNameDependencies[e]=t.eventTypes[n].dependencies}var a=n(2),u=(n(0),null),s={},c={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:null,injectEventPluginOrder:function(e){u&&a("101"),u=Array.prototype.slice.call(e),r()},injectEventPluginsByName:function(e){var t=!1;for(var n in e)if(e.hasOwnProperty(n)){var o=e[n];s.hasOwnProperty(n)&&s[n]===o||(s[n]&&a("102",n),s[n]=o,t=!0)}t&&r()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return c.registrationNameModules[t.registrationName]||null;if(void 0!==t.phasedRegistrationNames){var n=t.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 e in s)s.hasOwnProperty(e)&&delete s[e];c.plugins.length=0;var t=c.eventNameDispatchConfigs;for(var n in t)t.hasOwnProperty(n)&&delete t[n];var r=c.registrationNameModules;for(var o in r)r.hasOwnProperty(o)&&delete r[o]}};e.exports=c},function(e,t,n){"use strict";function r(e){return"topMouseUp"===e||"topTouchEnd"===e||"topTouchCancel"===e}function o(e){return"topMouseMove"===e||"topTouchMove"===e}function i(e){return"topMouseDown"===e||"topTouchStart"===e}function a(e,t,n,r){var o=e.type||"unknown-event";e.currentTarget=y.getNodeFromInstance(r),t?m.invokeGuardedCallbackWithCatch(o,n,e):m.invokeGuardedCallback(o,n,e),e.currentTarget=null}function u(e,t){var n=e._dispatchListeners,r=e._dispatchInstances;if(Array.isArray(n))for(var o=0;o<n.length&&!e.isPropagationStopped();o++)a(e,t,n[o],r[o]);else n&&a(e,t,n,r);e._dispatchListeners=null,e._dispatchInstances=null}function s(e){var t=e._dispatchListeners,n=e._dispatchInstances;if(Array.isArray(t)){for(var r=0;r<t.length&&!e.isPropagationStopped();r++)if(t[r](e,n[r]))return n[r]}else if(t&&t(e,n))return n;return null}function c(e){var t=s(e);return e._dispatchInstances=null,e._dispatchListeners=null,t}function l(e){var t=e._dispatchListeners,n=e._dispatchInstances;Array.isArray(t)&&h("103"),e.currentTarget=t?y.getNodeFromInstance(n):null;var r=t?t(e):null;return e.currentTarget=null,e._dispatchListeners=null,e._dispatchInstances=null,r}function p(e){return!!e._dispatchListeners}var f,d,h=n(2),m=n(33),v=(n(0),n(1),{injectComponentTree:function(e){f=e},injectTreeTraversal:function(e){d=e}}),y={isEndish:r,isMoveish:o,isStartish:i,executeDirectDispatch:l,executeDispatchesInOrder:u,executeDispatchesInOrderStopAtTrue:c,hasDispatches:p,getInstanceFromNode:function(e){return f.getInstanceFromNode(e)},getNodeFromInstance:function(e){return f.getNodeFromInstance(e)},isAncestor:function(e,t){return d.isAncestor(e,t)},getLowestCommonAncestor:function(e,t){return d.getLowestCommonAncestor(e,t)},getParentInstance:function(e){return d.getParentInstance(e)},traverseTwoPhase:function(e,t,n){return d.traverseTwoPhase(e,t,n)},traverseEnterLeave:function(e,t,n,r,o){return d.traverseEnterLeave(e,t,n,r,o)},injection:v};e.exports=y},function(e,t,n){"use strict";function r(e,t,n){try{t(n)}catch(e){null===o&&(o=e)}}var o=null,i={invokeGuardedCallback:r,invokeGuardedCallbackWithCatch:r,rethrowCaughtError:function(){if(o){var e=o;throw o=null,e}}};e.exports=i},function(e,t,n){"use strict";function r(e){var t=e.target||e.srcElement||window;return t.correspondingUseElement&&(t=t.correspondingUseElement),3===t.nodeType?t.parentNode:t}e.exports=r},function(e,t,n){"use strict";function r(e,t){if(!i.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,r=n in document;if(!r){var a=document.createElement("div");a.setAttribute(n,"return;"),r="function"===typeof a[n]}return!r&&o&&"wheel"===e&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var o,i=n(5);i.canUseDOM&&(o=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("","")),e.exports=r},function(e,t,n){"use strict";function r(e){var t=this,n=t.nativeEvent;if(n.getModifierState)return n.getModifierState(e);var r=i[e];return!!r&&!!n[r]}function o(e){return r}var i={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};e.exports=o},function(e,t,n){"use strict";function r(e,t){return Array.isArray(t)&&(t=t[1]),t?t.nextSibling:e.firstChild}function o(e,t,n){l.insertTreeBefore(e,t,n)}function i(e,t,n){Array.isArray(t)?u(e,t[0],t[1],n):m(e,t,n)}function a(e,t){if(Array.isArray(t)){var n=t[1];t=t[0],s(e,t,n),e.removeChild(n)}e.removeChild(t)}function u(e,t,n,r){for(var o=t;;){var i=o.nextSibling;if(m(e,o,r),o===n)break;o=i}}function s(e,t,n){for(;;){var r=t.nextSibling;if(r===n)break;e.removeChild(r)}}function c(e,t,n){var r=e.parentNode,o=e.nextSibling;o===t?n&&m(r,document.createTextNode(n),o):n?(h(o,n),s(r,o,t)):s(r,e,t)}var l=n(17),p=n(133),f=(n(4),n(7),n(39)),d=n(26),h=n(67),m=f(function(e,t,n){e.insertBefore(t,n)}),v=p.dangerouslyReplaceNodeWithMarkup,y={dangerouslyReplaceNodeWithMarkup:v,replaceDelimitedText:c,processUpdates:function(e,t){for(var n=0;n<t.length;n++){var u=t[n];switch(u.type){case"INSERT_MARKUP":o(e,u.content,r(e,u.afterNode));break;case"MOVE_EXISTING":i(e,u.fromNode,r(e,u.afterNode));break;case"SET_MARKUP":d(e,u.content);break;case"TEXT_CONTENT":h(e,u.content);break;case"REMOVE_NODE":a(e,u.fromNode)}}}};e.exports=y},function(e,t,n){"use strict";var r={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};e.exports=r},function(e,t,n){"use strict";var r=function(e){return"undefined"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,r,o){MSApp.execUnsafeLocalFunction(function(){return e(t,n,r,o)})}:e};e.exports=r},function(e,t,n){"use strict";function r(e){null!=e.checkedLink&&null!=e.valueLink&&u("87")}function o(e){r(e),(null!=e.value||null!=e.onChange)&&u("88")}function i(e){r(e),(null!=e.checked||null!=e.onChange)&&u("89")}function a(e){if(e){var t=e.getName();if(t)return" Check the render method of `"+t+"`."}return""}var u=n(2),s=n(151),c=n(56),l=n(13),p=c(l.isValidElement),f=(n(0),n(1),{button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0}),d={value:function(e,t,n){return!e[t]||f[e.type]||e.onChange||e.readOnly||e.disabled?null:new Error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.")},checked:function(e,t,n){return!e[t]||e.onChange||e.readOnly||e.disabled?null:new Error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")},onChange:p.func},h={},m={checkPropTypes:function(e,t,n){for(var r in d){if(d.hasOwnProperty(r))var o=d[r](t,r,e,"prop",null,s);if(o instanceof Error&&!(o.message in h)){h[o.message]=!0;a(n)}}},getValue:function(e){return e.valueLink?(o(e),e.valueLink.value):e.value},getChecked:function(e){return e.checkedLink?(i(e),e.checkedLink.value):e.checked},executeOnChange:function(e,t){return e.valueLink?(o(e),e.valueLink.requestChange(t.target.value)):e.checkedLink?(i(e),e.checkedLink.requestChange(t.target.checked)):e.onChange?e.onChange.call(void 0,t):void 0}};e.exports=m},function(e,t,n){"use strict";var r=n(2),o=(n(0),!1),i={replaceNodeWithMarkup:null,processChildrenUpdates:null,injection:{injectEnvironment:function(e){o&&r("104"),i.replaceNodeWithMarkup=e.replaceNodeWithMarkup,i.processChildrenUpdates=e.processChildrenUpdates,o=!0}}};e.exports=i},function(e,t,n){"use strict";function r(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function o(e,t){if(r(e,t))return!0;if("object"!==typeof e||null===e||"object"!==typeof t||null===t)return!1;var n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(var a=0;a<n.length;a++)if(!i.call(t,n[a])||!r(e[n[a]],t[n[a]]))return!1;return!0}var i=Object.prototype.hasOwnProperty;e.exports=o},function(e,t,n){"use strict";function r(e,t){var n=null===e||!1===e,r=null===t||!1===t;if(n||r)return n===r;var o=typeof e,i=typeof t;return"string"===o||"number"===o?"string"===i||"number"===i:"object"===i&&e.type===t.type&&e.key===t.key}e.exports=r},function(e,t,n){"use strict";function r(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,function(e){return t[e]})}function o(e){var t=/(=0|=2)/g,n={"=0":"=","=2":":"};return(""+("."===e[0]&&"$"===e[1]?e.substring(2):e.substring(1))).replace(t,function(e){return n[e]})}var i={escape:r,unescape:o};e.exports=i},function(e,t,n){"use strict";function r(e){s.enqueueUpdate(e)}function o(e){var t=typeof e;if("object"!==t)return t;var n=e.constructor&&e.constructor.name||t,r=Object.keys(e);return r.length>0&&r.length<20?n+" (keys: "+r.join(", ")+")":n}function i(e,t){var n=u.get(e);if(!n){return null}return n}var a=n(2),u=(n(10),n(22)),s=(n(7),n(8)),c=(n(0),n(1),{isMounted:function(e){var t=u.get(e);return!!t&&!!t._renderedComponent},enqueueCallback:function(e,t,n){c.validateCallback(t,n);var o=i(e);if(!o)return null;o._pendingCallbacks?o._pendingCallbacks.push(t):o._pendingCallbacks=[t],r(o)},enqueueCallbackInternal:function(e,t){e._pendingCallbacks?e._pendingCallbacks.push(t):e._pendingCallbacks=[t],r(e)},enqueueForceUpdate:function(e){var t=i(e,"forceUpdate");t&&(t._pendingForceUpdate=!0,r(t))},enqueueReplaceState:function(e,t,n){var o=i(e,"replaceState");o&&(o._pendingStateQueue=[t],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(e,t){var n=i(e,"setState");if(n){(n._pendingStateQueue||(n._pendingStateQueue=[])).push(t),r(n)}},enqueueElementInternal:function(e,t,n){e._pendingElement=t,e._context=n,r(e)},validateCallback:function(e,t){e&&"function"!==typeof e&&a("122",t,o(e))}});e.exports=c},function(e,t,n){"use strict";var r=(n(3),n(6)),o=(n(1),r);e.exports=o},function(e,t,n){"use strict";function r(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=r},function(e,t,n){"use strict";function r(e){if(!Object(a.a)(e)||Object(o.a)(e)!=u)return!1;var t=Object(i.a)(e);if(null===t)return!0;var n=p.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&l.call(n)==f}var o=n(195),i=n(200),a=n(202),u="[object Object]",s=Function.prototype,c=Object.prototype,l=s.toString,p=c.hasOwnProperty,f=l.call(Object);t.a=r},function(e,t,n){"use strict";function r(e){"undefined"!==typeof console&&"function"===typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}t.a=r},function(e,t,n){var r,o;!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r))e.push(n.apply(null,r));else if("object"===o)for(var a in r)i.call(r,a)&&r[a]&&e.push(a)}}return e.join(" ")}var i={}.hasOwnProperty;"undefined"!==typeof e&&e.exports?e.exports=n:(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";function r(){}function o(e){try{return e.then}catch(e){return y=e,g}}function i(e,t){try{return e(t)}catch(e){return y=e,g}}function a(e,t,n){try{e(t,n)}catch(e){return y=e,g}}function u(e){if("object"!==typeof this)throw new TypeError("Promises must be constructed via new");if("function"!==typeof e)throw new TypeError("Promise constructor's argument is not a function");this._75=0,this._83=0,this._18=null,this._38=null,e!==r&&m(e,this)}function s(e,t,n){return new e.constructor(function(o,i){var a=new u(r);a.then(o,i),c(e,new h(t,n,a))})}function c(e,t){for(;3===e._83;)e=e._18;if(u._47&&u._47(e),0===e._83)return 0===e._75?(e._75=1,void(e._38=t)):1===e._75?(e._75=2,void(e._38=[e._38,t])):void e._38.push(t);l(e,t)}function l(e,t){v(function(){var n=1===e._83?t.onFulfilled:t.onRejected;if(null===n)return void(1===e._83?p(t.promise,e._18):f(t.promise,e._18));var r=i(n,e._18);r===g?f(t.promise,y):p(t.promise,r)})}function p(e,t){if(t===e)return f(e,new TypeError("A promise cannot be resolved with itself."));if(t&&("object"===typeof t||"function"===typeof t)){var n=o(t);if(n===g)return f(e,y);if(n===e.then&&t instanceof u)return e._83=3,e._18=t,void d(e);if("function"===typeof n)return void m(n.bind(t),e)}e._83=1,e._18=t,d(e)}function f(e,t){e._83=2,e._18=t,u._71&&u._71(e,t),d(e)}function d(e){if(1===e._75&&(c(e,e._38),e._38=null),2===e._75){for(var t=0;t<e._38.length;t++)c(e,e._38[t]);e._38=null}}function h(e,t,n){this.onFulfilled="function"===typeof e?e:null,this.onRejected="function"===typeof t?t:null,this.promise=n}function m(e,t){var n=!1,r=a(e,function(e){n||(n=!0,p(t,e))},function(e){n||(n=!0,f(t,e))});n||r!==g||(n=!0,f(t,y))}var v=n(100),y=null,g={};e.exports=u,u._47=null,u._71=null,u._44=r,u.prototype.then=function(e,t){if(this.constructor!==u)return s(this,e,t);var n=new u(r);return c(this,new h(e,t,n)),n}},function(e,t,n){"use strict";function r(e,t,n){this.props=e,this.context=t,this.refs=c,this.updater=n||s}function o(e,t,n){this.props=e,this.context=t,this.refs=c,this.updater=n||s}function i(){}var a=n(18),u=n(3),s=n(53),c=(n(54),n(23));n(0),n(104);r.prototype.isReactComponent={},r.prototype.setState=function(e,t){"object"!==typeof e&&"function"!==typeof e&&null!=e&&a("85"),this.updater.enqueueSetState(this,e),t&&this.updater.enqueueCallback(this,t,"setState")},r.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this),e&&this.updater.enqueueCallback(this,e,"forceUpdate")};i.prototype=r.prototype,o.prototype=new i,o.prototype.constructor=o,u(o.prototype,r.prototype),o.prototype.isPureReactComponent=!0,e.exports={Component:r,PureComponent:o}},function(e,t,n){"use strict";var r=(n(1),{isMounted:function(e){return!1},enqueueCallback:function(e,t){},enqueueForceUpdate:function(e){},enqueueReplaceState:function(e,t){},enqueueSetState:function(e,t){}});e.exports=r},function(e,t,n){"use strict";var r=!1;e.exports=r},function(e,t,n){"use strict";var r="function"===typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;e.exports=r},function(e,t,n){"use strict";var r=n(112);e.exports=function(e){return r(e,!1)}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";var r={hasCachedChildNodes:1};e.exports=r},function(e,t,n){"use strict";function r(e,t){return null==t&&o("30"),null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}var o=n(2);n(0);e.exports=r},function(e,t,n){"use strict";function r(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}e.exports=r},function(e,t,n){"use strict";function r(){return!i&&o.canUseDOM&&(i="textContent"in document.documentElement?"textContent":"innerText"),i}var o=n(5),i=null;e.exports=r},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=n(2),i=n(12),a=(n(0),function(){function e(t){r(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,t=this._contexts,n=this._arg;if(e&&t){e.length!==t.length&&o("24"),this._callbacks=null,this._contexts=null;for(var r=0;r<e.length;r++)e[r].call(t[r],n);e.length=0,t.length=0}},e.prototype.checkpoint=function(){return this._callbacks?this._callbacks.length:0},e.prototype.rollback=function(e){this._callbacks&&this._contexts&&(this._callbacks.length=e,this._contexts.length=e)},e.prototype.reset=function(){this._callbacks=null,this._contexts=null},e.prototype.destructor=function(){this.reset()},e}());e.exports=i.addPoolingTo(a)},function(e,t,n){"use strict";var r={logTopLevelRenders:!1};e.exports=r},function(e,t,n){"use strict";function r(e){var t=e.type,n=e.nodeName;return n&&"input"===n.toLowerCase()&&("checkbox"===t||"radio"===t)}function o(e){return e._wrapperState.valueTracker}function i(e,t){e._wrapperState.valueTracker=t}function a(e){delete e._wrapperState.valueTracker}function u(e){var t;return e&&(t=r(e)?""+e.checked:e.value),t}var s=n(4),c={_getTrackerFromNode:function(e){return o(s.getInstanceFromNode(e))},track:function(e){if(!o(e)){var t=s.getNodeFromInstance(e),n=r(t)?"checked":"value",u=Object.getOwnPropertyDescriptor(t.constructor.prototype,n),c=""+t[n];t.hasOwnProperty(n)||"function"!==typeof u.get||"function"!==typeof u.set||(Object.defineProperty(t,n,{enumerable:u.enumerable,configurable:!0,get:function(){return u.get.call(this)},set:function(e){c=""+e,u.set.call(this,e)}}),i(e,{getValue:function(){return c},setValue:function(e){c=""+e},stopTracking:function(){a(e),delete t[n]}}))}},updateValueIfChanged:function(e){if(!e)return!1;var t=o(e);if(!t)return c.track(e),!0;var n=t.getValue(),r=u(s.getNodeFromInstance(e));return r!==n&&(t.setValue(r),!0)},stopTracking:function(e){var t=o(e);t&&t.stopTracking()}};e.exports=c},function(e,t,n){"use strict";function r(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!o[e.type]:"textarea"===t}var o={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};e.exports=r},function(e,t,n){"use strict";var r={currentScrollLeft:0,currentScrollTop:0,refreshScrollValues:function(e){r.currentScrollLeft=e.x,r.currentScrollTop=e.y}};e.exports=r},function(e,t,n){"use strict";var r=n(5),o=n(27),i=n(26),a=function(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t};r.canUseDOM&&("textContent"in document.documentElement||(a=function(e,t){if(3===e.nodeType)return void(e.nodeValue=t);i(e,o(t))})),e.exports=a},function(e,t,n){"use strict";function r(e){try{e.focus()}catch(e){}}e.exports=r},function(e,t,n){"use strict";function r(e,t){return e+t.charAt(0).toUpperCase()+t.substring(1)}var o={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,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!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(o).forEach(function(e){i.forEach(function(t){o[r(t,e)]=o[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}},u={isUnitlessNumber:o,shorthandPropertyExpansions:a};e.exports=u},function(e,t,n){"use strict";function r(e){return!!c.hasOwnProperty(e)||!s.hasOwnProperty(e)&&(u.test(e)?(c[e]=!0,!0):(s[e]=!0,!1))}function o(e,t){return null==t||e.hasBooleanValue&&!t||e.hasNumericValue&&isNaN(t)||e.hasPositiveNumericValue&&t<1||e.hasOverloadedBooleanValue&&!1===t}var i=n(15),a=(n(4),n(7),n(147)),u=(n(1),new RegExp("^["+i.ATTRIBUTE_NAME_START_CHAR+"]["+i.ATTRIBUTE_NAME_CHAR+"]*$")),s={},c={},l={createMarkupForID:function(e){return i.ID_ATTRIBUTE_NAME+"="+a(e)},setAttributeForID:function(e,t){e.setAttribute(i.ID_ATTRIBUTE_NAME,t)},createMarkupForRoot:function(){return i.ROOT_ATTRIBUTE_NAME+'=""'},setAttributeForRoot:function(e){e.setAttribute(i.ROOT_ATTRIBUTE_NAME,"")},createMarkupForProperty:function(e,t){var n=i.properties.hasOwnProperty(e)?i.properties[e]:null;if(n){if(o(n,t))return"";var r=n.attributeName;return n.hasBooleanValue||n.hasOverloadedBooleanValue&&!0===t?r+'=""':r+"="+a(t)}return i.isCustomAttribute(e)?null==t?"":e+"="+a(t):null},createMarkupForCustomAttribute:function(e,t){return r(e)&&null!=t?e+"="+a(t):""},setValueForProperty:function(e,t,n){var r=i.properties.hasOwnProperty(t)?i.properties[t]:null;if(r){var a=r.mutationMethod;if(a)a(e,n);else{if(o(r,n))return void this.deleteValueForProperty(e,t);if(r.mustUseProperty)e[r.propertyName]=n;else{var u=r.attributeName,s=r.attributeNamespace;s?e.setAttributeNS(s,u,""+n):r.hasBooleanValue||r.hasOverloadedBooleanValue&&!0===n?e.setAttribute(u,""):e.setAttribute(u,""+n)}}}else if(i.isCustomAttribute(t))return void l.setValueForAttribute(e,t,n)},setValueForAttribute:function(e,t,n){if(r(t)){null==n?e.removeAttribute(t):e.setAttribute(t,""+n)}},deleteValueForAttribute:function(e,t){e.removeAttribute(t)},deleteValueForProperty:function(e,t){var n=i.properties.hasOwnProperty(t)?i.properties[t]:null;if(n){var r=n.mutationMethod;if(r)r(e,void 0);else if(n.mustUseProperty){var o=n.propertyName;n.hasBooleanValue?e[o]=!1:e[o]=""}else e.removeAttribute(n.attributeName)}else i.isCustomAttribute(t)&&e.removeAttribute(t)}};e.exports=l},function(e,t,n){"use strict";function r(){if(this._rootNodeID&&this._wrapperState.pendingUpdate){this._wrapperState.pendingUpdate=!1;var e=this._currentElement.props,t=u.getValue(e);null!=t&&o(this,Boolean(e.multiple),t)}}function o(e,t,n){var r,o,i=s.getNodeFromInstance(e).options;if(t){for(r={},o=0;o<n.length;o++)r[""+n[o]]=!0;for(o=0;o<i.length;o++){var a=r.hasOwnProperty(i[o].value);i[o].selected!==a&&(i[o].selected=a)}}else{for(r=""+n,o=0;o<i.length;o++)if(i[o].value===r)return void(i[o].selected=!0);i.length&&(i[0].selected=!0)}}function i(e){var t=this._currentElement.props,n=u.executeOnChange(t,e);return this._rootNodeID&&(this._wrapperState.pendingUpdate=!0),c.asap(r,this),n}var a=n(3),u=n(40),s=n(4),c=n(8),l=(n(1),!1),p={getHostProps:function(e,t){return a({},t,{onChange:e._wrapperState.onChange,value:void 0})},mountWrapper:function(e,t){var n=u.getValue(t);e._wrapperState={pendingUpdate:!1,initialValue:null!=n?n:t.defaultValue,listeners:null,onChange:i.bind(e),wasMultiple:Boolean(t.multiple)},void 0===t.value||void 0===t.defaultValue||l||(l=!0)},getSelectValueContext:function(e){return e._wrapperState.initialValue},postUpdateWrapper:function(e){var t=e._currentElement.props;e._wrapperState.initialValue=void 0;var n=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=Boolean(t.multiple);var r=u.getValue(t);null!=r?(e._wrapperState.pendingUpdate=!1,o(e,Boolean(t.multiple),r)):n!==Boolean(t.multiple)&&(null!=t.defaultValue?o(e,Boolean(t.multiple),t.defaultValue):o(e,Boolean(t.multiple),t.multiple?[]:""))}};e.exports=p},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function o(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===r||!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&&d&&(m=!1,d.length?h=d.concat(h):v=-1,h.length&&u())}function u(){if(!m){var e=o(a);m=!0;for(var t=h.length;t;){for(d=h,h=[];++v<t;)d&&d[v].run();v=-1,t=h.length}d=null,m=!1,i(e)}}function s(e,t){this.fun=e,this.array=t}function c(){}var l,p,f=e.exports={};!function(){try{l="function"===typeof setTimeout?setTimeout:n}catch(e){l=n}try{p="function"===typeof clearTimeout?clearTimeout:r}catch(e){p=r}}();var d,h=[],m=!1,v=-1;f.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];h.push(new s(e,t)),1!==h.length||m||o(u)},s.prototype.run=function(){this.fun.apply(null,this.array)},f.title="browser",f.browser=!0,f.env={},f.argv=[],f.version="",f.versions={},f.on=c,f.addListener=c,f.once=c,f.off=c,f.removeListener=c,f.removeAllListeners=c,f.emit=c,f.prependListener=c,f.prependOnceListener=c,f.listeners=function(e){return[]},f.binding=function(e){throw new Error("process.binding is not supported")},f.cwd=function(){return"/"},f.chdir=function(e){throw new Error("process.chdir is not supported")},f.umask=function(){return 0}},function(e,t,n){"use strict";function r(e){if(e){var t=e.getName();if(t)return" Check the render method of `"+t+"`."}return""}function o(e){return"function"===typeof e&&"undefined"!==typeof e.prototype&&"function"===typeof e.prototype.mountComponent&&"function"===typeof e.prototype.receiveComponent}function i(e,t){var n;if(null===e||!1===e)n=c.create(i);else if("object"===typeof e){var u=e,s=u.type;if("function"!==typeof s&&"string"!==typeof s){var f="";f+=r(u._owner),a("130",null==s?s:typeof s,f)}"string"===typeof u.type?n=l.createInternalComponent(u):o(u.type)?(n=new u.type(u),n.getHostNode||(n.getHostNode=n.getNativeNode)):n=new p(u)}else"string"===typeof e||"number"===typeof e?n=l.createInstanceForText(e):a("131",typeof e);return n._mountIndex=0,n._mountImage=null,n}var a=n(2),u=n(3),s=n(156),c=n(75),l=n(76),p=(n(157),n(0),n(1),function(e){this.construct(e)});u(p.prototype,s,{_instantiateReactComponent:i}),e.exports=i},function(e,t,n){"use strict";var r=n(2),o=n(13),i=(n(0),{HOST:0,COMPOSITE:1,EMPTY:2,getType:function(e){return null===e||!1===e?i.EMPTY:o.isValidElement(e)?"function"===typeof e.type?i.COMPOSITE:i.HOST:void r("26",e)}});e.exports=i},function(e,t,n){"use strict";var r,o={injectEmptyComponentFactory:function(e){r=e}},i={create:function(e){return r(e)}};i.injection=o,e.exports=i},function(e,t,n){"use strict";function r(e){return u||a("111",e.type),new u(e)}function o(e){return new s(e)}function i(e){return e instanceof s}var a=n(2),u=(n(0),null),s=null,c={injectGenericComponentClass:function(e){u=e},injectTextC