summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs')
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.bower.json34
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.eslintrc.json11
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.github/CODEOWNERS1
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.travis.yml25
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/CONTRIBUTING.md66
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/LICENSE.md19
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/README.md169
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/bower.json24
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/closure-output.txt10
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/custom-elements-es5-adapter.js16
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/custom-elements-es5-adapter-index.js16
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-ce-index.js21
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-index.js20
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-sd-ce-index.js22
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-sd-ce-pf-index.js26
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-sd-index.js21
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-sd-ce-index.js42
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/externs/webcomponents.js25
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/gulpfile.js187
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/package-lock.json9534
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/package.json56
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/post-polyfill.js63
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/pre-polyfill.js63
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/promise.js26
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/unresolved.js31
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/wct.conf.json6
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-ce.js81
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-ce.js.map1
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd-ce.js198
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd-ce.js.map1
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd.js181
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd.js.map1
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi.js55
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi.js.map1
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-lite.js221
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-lite.js.map1
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-loader.js74
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-sd-ce.js172
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-sd-ce.js.map1
39 files changed, 11522 insertions, 0 deletions
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.bower.json b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.bower.json
new file mode 100644
index 00000000000..162339f7e45
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.bower.json
@@ -0,0 +1,34 @@
+{
+ "name": "webcomponentsjs",
+ "description": "Web components polyfill",
+ "main": "webcomponents.js",
+ "homepage": "http://webcomponents.org",
+ "authors": [
+ "The Polymer Authors"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/webcomponents/webcomponentsjs.git"
+ },
+ "keywords": [
+ "webcomponents",
+ "web-components",
+ "polyfill",
+ "shim"
+ ],
+ "license": "BSD-3-Clause",
+ "ignore": [],
+ "devDependencies": {
+ "web-component-tester": "^v6.0.0"
+ },
+ "version": "1.2.0",
+ "_release": "1.2.0",
+ "_resolution": {
+ "type": "version",
+ "tag": "v1.2.0",
+ "commit": "e6728c15201987b0f71aec6464b743d4277d99ae"
+ },
+ "_source": "https://github.com/webcomponents/webcomponentsjs.git",
+ "_target": "^v1.1.0",
+ "_originalSource": "webcomponents/webcomponentsjs"
+} \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.eslintrc.json b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.eslintrc.json
new file mode 100644
index 00000000000..fcf4db69f4f
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.eslintrc.json
@@ -0,0 +1,11 @@
+{
+ "extends": "eslint:recommended",
+ "env": {
+ "browser": true,
+ "es6": true
+ },
+ "parserOptions": {
+ "ecmaVersion": 6,
+ "sourceType": "module"
+ }
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.github/CODEOWNERS b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.github/CODEOWNERS
new file mode 100644
index 00000000000..93bd76fe93e
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.github/CODEOWNERS
@@ -0,0 +1 @@
+* @azakus
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.travis.yml b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.travis.yml
new file mode 100644
index 00000000000..a72b5cff873
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/.travis.yml
@@ -0,0 +1,25 @@
+language: node_js
+sudo: required
+dist: trusty
+node_js: stable
+addons:
+ firefox: latest
+ apt:
+ sources:
+ - google-chrome
+ packages:
+ - google-chrome-stable
+before_script:
+- export DISPLAY=:99.0
+- sh -e /etc/init.d/xvfb start
+- sleep 3
+script:
+- npm install -g bower
+- bower install
+- wct -l chrome
+- wct -l firefox
+- if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then wct -s 'windows 10/microsoftedge@14' -s 'windows 8.1/internet explorer@11' -s 'os x 10.11/safari@10' -s 'os x 10.11/safari@9' -s 'Linux/chrome@41'; fi
+env:
+ global:
+ - secure: Fpp9LwJSGOdTrSIImQTlbzxozBsqe/2AJN5OfTXSe12FZxqzz50gevdxQcIlLypKaNyCtjb980DJbwdJR2cXUqaunLZAPWxrKa7ZPwamUxW+zVL7EHqy5zuvD+yJ+Vmk3ahs3WBTVyJ8T3XoaSfo9VumDIcKggWGJwgvM3blIMg=
+ - secure: Bj8MgzUVP0X8MLgK3d9eF48V7x0rPJyrN1IyguzKyJJVC8LV2XZXF+6o/M+zNsVMSsjhgXMkS3RRuaUShxO/OS6gHeG31FWcZqbXfZfgMMyH8a8zDls+r8m2lGEICaZo1OTXR0uiR/VNVt7n2xoBnTmjmRFwkaxAZk4yCjbXYzQ=
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/CONTRIBUTING.md b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/CONTRIBUTING.md
new file mode 100644
index 00000000000..29a78331707
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/CONTRIBUTING.md
@@ -0,0 +1,66 @@
+# Contributing
+
+Want to contribute to webcomponents.js? Great!
+
+We are more than happy to accept external contributions to the project in the form of [bug reports](../../issues) and pull requests.
+
+For any bug report, please use [this jsbin](http://jsbin.com/birajez/edit?html,console,output) to provide a concrete reproduction case that we can debug.
+
+## Contributor License Agreement
+
+Before we can accept patches, there's a quick web form you need to fill out.
+
+- If you're contributing as an individual (e.g. you own the intellectual property), fill out [this form](http://code.google.com/legal/individual-cla-v1.0.html).
+- If you're contributing under a company, fill out [this form](http://code.google.com/legal/corporate-cla-v1.0.html) instead.
+
+This CLA asserts that contributions are owned by you and that we can license all work under our [license](LICENSE).
+
+Other projects require a similar agreement: jQuery, Firefox, Apache, Node, and many more.
+
+[More about CLAs](https://www.google.com/search?q=Contributor%20License%20Agreement)
+
+## Initial setup
+
+1. Setup Gulp: `sudo npm install -g gulp`
+1. Fork the project on github and pull down your copy.
+ > replace the {{ username }} with your username and {{ repository }} with the repository name
+
+ git clone git@github.com:{{ username }}/{{ repository }}.git
+
+1. Test your change results in a working build.
+ > in the repo you've made changes to, try generating a build:
+
+ cd $REPO
+ npm install
+ gulp
+
+The builds will be placed into the `dist/` directory if all goes well.
+
+1. Commit your code and make a pull request.
+
+That's it for the one time setup. Now you're ready to make a change.
+
+## Submitting a pull request
+
+We iterate fast! To avoid potential merge conflicts, it's a good idea to pull from the main project before making a change and submitting a pull request. The easiest way to do this is setup a remote called `upstream` and do a pull before working on a change:
+
+ git remote add upstream git://github.com/polymer/webcomponentsjs.git
+
+Then before making a change, do a pull from the upstream `master` branch:
+
+ git pull upstream master
+
+To make life easier, add a "pull upstream" alias in your `.gitconfig`:
+
+ [alias]
+ pu = !"git fetch origin -v; git fetch upstream -v; git merge upstream/master"
+
+That will pull in changes from your forked repo, the main (upstream) repo, and merge the two. Then it's just a matter of running `git pu` before a change and pushing to your repo:
+
+ git checkout master
+ git pu
+ # make change
+ git commit -a -m 'Awesome things.'
+ git push
+
+Lastly, don't forget to submit the pull request.
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/LICENSE.md b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/LICENSE.md
new file mode 100644
index 00000000000..bb3f440330f
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/LICENSE.md
@@ -0,0 +1,19 @@
+# License
+
+Everything in this repo is BSD style license unless otherwise specified.
+
+Copyright (c) 2015 The Polymer Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+* Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/README.md b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/README.md
new file mode 100644
index 00000000000..dc1b41cb513
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/README.md
@@ -0,0 +1,169 @@
+webcomponents.js (v1 spec polyfills)
+================
+
+[![Build Status](https://travis-ci.org/webcomponents/webcomponentsjs.svg?branch=master)](https://travis-ci.org/webcomponents/webcomponentsjs)
+
+> **Note**. For polyfills that work with the older Custom Elements and Shadow DOM v0 specs, see the [v0 branch](https://github.com/webcomponents/webcomponentsjs/tree/v0).
+
+A suite of polyfills supporting the [Web Components](http://webcomponents.org) specs:
+
+- **Custom Elements v1**: allows authors to define their own custom tags ([spec](https://w3c.github.io/webcomponents/spec/custom/), [tutorial](https://developers.google.com/web/fundamentals/getting-started/primers/customelements)).
+- **HTML Imports**: a way to include and reuse HTML documents via other HTML documents ([spec](https://w3c.github.io/webcomponents/spec/imports/), [tutorial](https://www.html5rocks.com/en/tutorials/webcomponents/imports/)).
+- **Shadow DOM v1**: provides encapsulation by hiding DOM subtrees under shadow roots ([spec](https://w3c.github.io/webcomponents/spec/shadow/), [tutorial](https://developers.google.com/web/fundamentals/getting-started/primers/shadowdom)).
+
+For browsers that need it, there are also some minor polyfills included:
+- [`HTMLTemplateElement`](https://github.com/webcomponents/template)
+- [`Promise`](https://github.com/stefanpenner/es6-promise)
+- `Event`, `CustomEvent`, `MouseEvent` constructors and `Object.assign`, `Array.from` (see [webcomponents-platform](https://github.com/webcomponents/webcomponents-platform))
+
+## How to use
+
+The polyfills are built (concatenated & minified) into several bundles that target
+different browsers and spec readiness:
+
+- `webcomponents-hi.js` -- HTML Imports (needed by Safari Tech Preview)
+- `webcomponents-hi-ce.js` -- HTML Imports and Custom Elements v1 (needed by Safari 10)
+- `webcomponents-hi-sd-ce.js` -- HTML Imports, Custom Elements v1 and Shady DOM/CSS (needed by Safari 9, Firefox, Edge)
+- `webcomponents-sd-ce.js` -- Custom Elements and Shady DOM/CSS (no HTML Imports)
+- `webcomponents-lite.js` -- all of the polyfills: HTML Imports, Custom Elements, Shady DOM/CSS and generic platform polyfills (such as ES6 Promise, Constructable events, etc.) (needed by Internet Explorer 11), and Template (needed by IE 11 and Edge)
+
+If you are only targeting a specific browser, you can just use the bundle that's
+needed by it; alternatively, if your server is capable of serving different assets based on user agent, you can send the polyfill bundle that's necessary for the browser making that request.
+
+## `webcomponents-loader.js`
+Alternatively, this repo also comes with `webcomponents-loader.js`, a client-side
+loader that dynamically loads the minimum polyfill bundle, using feature detection.
+Note that because the bundle will be loaded asynchronously, you should wait for the `WebComponentsReady` before you can safely assume that all the polyfills have
+loaded and are ready to be used (i.e. if you want to dynamically load other custom
+elements, etc.).
+
+Additionally, you can check if `window.WebComponents` exists to know if the `WebComponentsReady` event will fire, and you can check if `window.WebComponents.ready` is true to check if the `WebComponentsReady` event has already fired.
+
+Here's an example:
+
+```html
+<!-- Load polyfills; note that "loader" will load these async -->
+<script src="bower_components/webcomponentsjs/webcomponents-loader.js"></script>
+
+<!-- Load a custom element definition via HTMLImports -->
+<link rel="import" href="my-element.html">
+
+<!-- Use the custom element -->
+<my-element></my-element>
+
+<!-- Interact with the upgraded element -->
+<script>
+ window.addEventListener('WebComponentsReady', function() {
+ // At this point we are guaranteed that all required polyfills have loaded,
+ // all HTML imports have loaded, and all defined custom elements have upgraded
+ let MyElement = customElements.get('my-element');
+ let element = document.querySelector('my-element');
+ console.assert(element instanceof MyElement); // 👍
+ element.someAPI(); // 👍
+ });
+</script>
+```
+
+## `custom-elements-es5-adapter.js`
+According to the spec, Custom Elements must be ES6 classes (https://html.spec.whatwg.org/multipage/scripting.html#custom-element-conformance). Since most projects need to support a wide range of browsers that don't necessary support ES6, it may make sense to compile your project to ES5. However, ES5-style custom element classes will **not** work with native Custom Elements because ES5-style classes cannot properly extend ES6 classes, like `HTMLElement`.
+
+To work around this, load `custom-elements-es5-adapter.js` before declaring new Custom Elements.
+
+**The adapter must NOT be compiled.**
+
+```html
+<!-- Load Custom Elements es5 adapter -->
+<script src="bower_components/webcomponentsjs/custom-elements-es5-adapter.js"></script>
+<!-- Load polyfills; note that "loader" will load these async -->
+<script src="bower_components/webcomponentsjs/webcomponents-loader.js"></script>
+<!-- Load the es5 compiled custom element definition -->
+<link rel="import" href="my-es5-element.html">
+
+<!-- Use the custom element -->
+<my-es5-element></my-es5-element>
+```
+
+## Browser Support
+
+The polyfills are intended to work in the latest versions of evergreen browsers. See below
+for our complete browser support matrix:
+
+| Polyfill | IE11+ | Chrome* | Firefox* | Safari 9+* | Chrome Android* | Mobile Safari* |
+| ---------- |:-----:|:-------:|:--------:|:----------:|:---------------:|:--------------:|
+| Custom Elements | ✓ | ✓ | ✓ | ✓ | ✓| ✓ |
+| HTML Imports | ✓ | ✓ | ✓ | ✓| ✓| ✓ |
+| Shady CSS/DOM | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
+
+\*Indicates the current version of the browser
+
+The polyfills may work in older browsers, however require additional polyfills (such as classList, or other [platform](https://github.com/webcomponents/webcomponents-platform)
+polyfills) to be used. We cannot guarantee support for browsers outside of our compatibility matrix.
+
+
+### Manually Building
+
+If you wish to build the bundles yourself, you'll need `node` and `npm` on your system:
+
+ * install [node.js](http://nodejs.org/) using the instructions on their website
+ * use `npm` to install [gulp.js](http://gulpjs.com/): `npm install -g gulp`
+
+Now you are ready to build the polyfills with:
+
+ # install dependencies
+ npm install
+ bower install
+ # build
+ gulp
+
+The builds will be placed into the root directory.
+
+## Contribute
+
+See the [contributing guide](CONTRIBUTING.md)
+
+## License
+
+Everything in this repository is BSD style license unless otherwise specified.
+
+Copyright (c) 2015 The Polymer Authors. All rights reserved.
+
+## Helper utilities
+
+### `WebComponentsReady`
+
+Under native HTML Imports, `<script>` tags in the main document block the loading of such imports. This is to ensure the imports have loaded and any registered elements in them have been upgraded.
+
+The `webcomponents-lite.js` polyfill (as well as the smaller bundles and the loader) parse element definitions and handle their upgrade asynchronously. If prematurely fetching the element from the DOM before it has an opportunity to upgrade, you'll be working with an `HTMLUnknownElement`.
+
+For these situations, you can use the `WebComponentsReady` event as a signal before interacting with the element. The criteria for this event to fire is all Custom Elements with definitions registered by the time HTML Imports available at load time have loaded have upgraded.
+
+```js
+window.addEventListener('WebComponentsReady', function(e) {
+ // imports are loaded and elements have been registered
+ console.log('Components are ready');
+});
+```
+
+## Known Issues
+
+ * [ShadowDOM CSS is not encapsulated out of the box](#shadycss)
+ * [Custom element's constructor property is unreliable](#constructor)
+ * [Contenteditable elements do not trigger MutationObserver](#contentedit)
+ * [ShadyCSS: :host(.zot:not(.bar:nth-child(2))) doesn't work](#nestedparens)
+
+### ShadowDOM CSS is not encapsulated out of the box <a id="shadycss"></a>
+The ShadowDOM polyfill is not able to encapsulate CSS in ShadowDOM out of the box. You need to use specific code from the ShadyCSS library, included with the polyfill. See [ShadyCSS instructions](https://github.com/webcomponents/shadycss).
+
+### Custom element's constructor property is unreliable <a id="constructor"></a>
+See [#215](https://github.com/webcomponents/webcomponentsjs/issues/215) for background.
+
+In Safari and IE, instances of Custom Elements have a `constructor` property of `HTMLUnknownElementConstructor` and `HTMLUnknownElement`, respectively. It's unsafe to rely on this property for checking element types.
+
+It's worth noting that `customElement.__proto__.__proto__.constructor` is `HTMLElementPrototype` and that the prototype chain isn't modified by the polyfills(onto `ElementPrototype`, etc.)
+
+### Contenteditable elements do not trigger MutationObserver <a id="contentedit"></a>
+Using the MutationObserver polyfill, it isn't possible to monitor mutations of an element marked `contenteditable`.
+See [the mailing list](https://groups.google.com/forum/#!msg/polymer-dev/LHdtRVXXVsA/v1sGoiTYWUkJ)
+
+### ShadyCSS: :host(.zot:not(.bar:nth-child(2))) doesn't work <a id="nestedparens"></a>
+ShadyCSS `:host()` rules can only have (at most) 1-level of nested parentheses in its argument selector under ShadyCSS. For example, `:host(.zot)` and `:host(.zot:not(.bar))` both work, but `:host(.zot:not(.bar:nth-child(2)))` does not.
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/bower.json b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/bower.json
new file mode 100644
index 00000000000..4f5d918b183
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/bower.json
@@ -0,0 +1,24 @@
+{
+ "name": "webcomponentsjs",
+ "description": "Web components polyfill",
+ "main": "webcomponents.js",
+ "homepage": "http://webcomponents.org",
+ "authors": [
+ "The Polymer Authors"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/webcomponents/webcomponentsjs.git"
+ },
+ "keywords": [
+ "webcomponents",
+ "web-components",
+ "polyfill",
+ "shim"
+ ],
+ "license": "BSD-3-Clause",
+ "ignore": [],
+ "devDependencies": {
+ "web-component-tester": "^v6.0.0"
+ }
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/closure-output.txt b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/closure-output.txt
new file mode 100644
index 00000000000..e7db2a2133f
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/closure-output.txt
@@ -0,0 +1,10 @@
+/**
+@license @nocompile
+Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+(function(){%output%}).call(this); \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/custom-elements-es5-adapter.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/custom-elements-es5-adapter.js
new file mode 100644
index 00000000000..4bcb525b475
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/custom-elements-es5-adapter.js
@@ -0,0 +1,16 @@
+(function () {
+'use strict';
+
+(()=>{'use strict';if(!window.customElements)return;const a=window.HTMLElement,b=window.customElements.define,c=window.customElements.get,d=new Map,e=new Map;let f=!1,g=!1;window.HTMLElement=function(){if(!f){const a=d.get(this.constructor),b=c.call(window.customElements,a);g=!0;const e=new b;return e}f=!1;},window.HTMLElement.prototype=a.prototype;Object.defineProperty(window,'customElements',{value:window.customElements,configurable:!0,writable:!0}),Object.defineProperty(window.customElements,'define',{value:(c,h)=>{const i=h.prototype,j=class extends a{constructor(){super(),Object.setPrototypeOf(this,i),g||(f=!0,h.call(this)),g=!1;}},k=j.prototype;j.observedAttributes=h.observedAttributes,k.connectedCallback=i.connectedCallback,k.disconnectedCallback=i.disconnectedCallback,k.attributeChangedCallback=i.attributeChangedCallback,k.adoptedCallback=i.adoptedCallback,d.set(h,c),e.set(c,h),b.call(window.customElements,c,j);},configurable:!0,writable:!0}),Object.defineProperty(window.customElements,'get',{value:(a)=>e.get(a),configurable:!0,writable:!0});})();
+
+/**
+@license
+Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+
+}());
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/custom-elements-es5-adapter-index.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/custom-elements-es5-adapter-index.js
new file mode 100644
index 00000000000..7000b62ce97
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/custom-elements-es5-adapter-index.js
@@ -0,0 +1,16 @@
+/**
+@license
+Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+'use strict';
+
+/*
+ * Polyfills loaded: Custom Elements ES5 Shim
+ */
+
+import '../node_modules/@webcomponents/custom-elements/src/native-shim.js';
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-ce-index.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-ce-index.js
new file mode 100644
index 00000000000..4f6ab4da8f6
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-ce-index.js
@@ -0,0 +1,21 @@
+/**
+@license
+Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+'use strict';
+
+/*
+ * Polyfills loaded: HTML Imports, Custom Elements
+ * Used in: Safari 10, Firefox once SD is shipped
+ */
+
+import '../node_modules/@webcomponents/html-imports/src/html-imports.js';
+import '../node_modules/@webcomponents/custom-elements/src/custom-elements.js';
+
+import '../src/post-polyfill.js';
+import '../src/unresolved.js';
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-index.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-index.js
new file mode 100644
index 00000000000..e55027f7456
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-index.js
@@ -0,0 +1,20 @@
+/**
+@license
+Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+'use strict';
+
+/*
+ * Polyfills loaded: HTML Imports
+ * Used in: Safari Tech Preview
+ */
+
+import '../node_modules/@webcomponents/html-imports/src/html-imports.js';
+
+import '../src/post-polyfill.js';
+import '../src/unresolved.js'; \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-sd-ce-index.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-sd-ce-index.js
new file mode 100644
index 00000000000..3dbc4dac273
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-sd-ce-index.js
@@ -0,0 +1,22 @@
+/**
+@license
+Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+'use strict';
+
+/*
+ * Polyfills loaded: HTML Imports, Custom Elements, Shady DOM/Shady CSS
+ * Used in: Safari 9, Firefox, Edge
+ */
+
+import '../node_modules/@webcomponents/html-imports/src/html-imports.js';
+import '../node_modules/@webcomponents/shadydom/src/shadydom.js';
+import '../node_modules/@webcomponents/custom-elements/src/custom-elements.js';
+import '../node_modules/@webcomponents/shadycss/entrypoints/scoping-shim.js';
+import '../src/post-polyfill.js';
+import '../src/unresolved.js';
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-sd-ce-pf-index.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-sd-ce-pf-index.js
new file mode 100644
index 00000000000..4e32ab2f368
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-sd-ce-pf-index.js
@@ -0,0 +1,26 @@
+/**
+@license
+Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+'use strict';
+
+/*
+ * Polyfills loaded: HTML Imports, Custom Elements, Shady DOM/Shady CSS, platform polyfills, template
+ * Used in: IE 11
+ */
+
+import '../node_modules/@webcomponents/webcomponents-platform/webcomponents-platform.js';
+import '../node_modules/@webcomponents/template/template.js';
+import '../src/promise.js';
+import '../node_modules/@webcomponents/html-imports/src/html-imports.js';
+import '../src/pre-polyfill.js';
+import '../node_modules/@webcomponents/shadydom/src/shadydom.js';
+import '../node_modules/@webcomponents/custom-elements/src/custom-elements.js';
+import '../node_modules/@webcomponents/shadycss/entrypoints/scoping-shim.js';
+import '../src/post-polyfill.js';
+import '../src/unresolved.js'; \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-sd-index.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-sd-index.js
new file mode 100644
index 00000000000..ca217ce74d8
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-hi-sd-index.js
@@ -0,0 +1,21 @@
+/**
+@license
+Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+'use strict';
+
+/*
+ * Polyfills loaded: HTML Imports, Shady DOM/Shady CSS
+ * Used in: Firefox with CustomElements enabled
+ */
+
+import '../node_modules/@webcomponents/html-imports/src/html-imports.js';
+import '../node_modules/@webcomponents/shadydom/src/shadydom.js';
+import '../node_modules/@webcomponents/shadycss/entrypoints/scoping-shim.js';
+import '../src/post-polyfill.js';
+import '../src/unresolved.js';
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-sd-ce-index.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-sd-ce-index.js
new file mode 100644
index 00000000000..1ff8e2c4939
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/entrypoints/webcomponents-sd-ce-index.js
@@ -0,0 +1,42 @@
+/**
+@license
+Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+'use strict';
+
+/*
+ * Polyfills loaded: Custom Elements, Shady DOM/Shady CSS
+ * Used in: Safari 9, Firefox, Edge
+ */
+
+import '../node_modules/@webcomponents/shadydom/src/shadydom.js';
+import '../node_modules/@webcomponents/custom-elements/src/custom-elements.js';
+import '../node_modules/@webcomponents/shadycss/entrypoints/scoping-shim.js';
+
+let document = window.document;
+// global for (1) existence means `WebComponentsReady` will file,
+// (2) WebComponents.ready == true means event has fired.
+window.WebComponents = window.WebComponents || {};
+
+function fire() {
+ requestAnimationFrame(() => {
+ window.WebComponents.ready = true;
+ window.document.dispatchEvent(new CustomEvent('WebComponentsReady', { bubbles: true }));
+ })
+}
+
+function wait() {
+ fire();
+ document.removeEventListener('readystatechange', wait);
+}
+
+if (document.readyState !== 'loading') {
+ fire();
+} else {
+ document.addEventListener('readystatechange', wait);
+} \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/externs/webcomponents.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/externs/webcomponents.js
new file mode 100644
index 00000000000..43f7794b98e
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/externs/webcomponents.js
@@ -0,0 +1,25 @@
+/**
+ * @license
+ * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+ * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ * Code distributed by Google as part of the polymer project is also
+ * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+ *
+ * @fileoverview Symbols needed to compile webcomponents
+ * @externs
+ */
+var require;
+var global;
+var ES6Promise;
+var process;
+var define;
+var module;
+var exports;
+
+var ShadyDOM;
+var WebComponents;
+
+/** @type !Function */
+Promise.cast; \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/gulpfile.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/gulpfile.js
new file mode 100644
index 00000000000..d7049066c96
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/gulpfile.js
@@ -0,0 +1,187 @@
+/**
+ * @license
+ * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+ * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ * Code distributed by Google as part of the polymer project is also
+ * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+ */
+
+'use strict';
+
+/* eslint-env node */
+/* eslint-disable no-console */
+
+const gulp = require('gulp');
+const sourcemaps = require('gulp-sourcemaps');
+const rename = require('gulp-rename');
+const rollup = require('rollup-stream');
+const source = require('vinyl-source-stream');
+const del = require('del');
+const runseq = require('run-sequence');
+const closure = require('google-closure-compiler').gulp();
+const babel = require('rollup-plugin-babel');
+
+function debugify(sourceName, fileName, extraRollupOptions) {
+ if (!fileName)
+ fileName = sourceName;
+
+ const options = {
+ entry: `./entrypoints/${sourceName}-index.js`,
+ format: 'iife',
+ moduleName: 'webcomponentsjs'
+ };
+
+ Object.assign(options, extraRollupOptions);
+
+ return rollup(options)
+ .pipe(source(`${sourceName}-index.js`), 'entrypoints')
+ .pipe(rename(fileName + '.js'))
+ .pipe(gulp.dest('./'))
+}
+
+function closurify(sourceName, fileName) {
+ if (!fileName) {
+ fileName = sourceName;
+ }
+
+ const closureOptions = {
+ new_type_inf: true,
+ compilation_level: 'ADVANCED',
+ language_in: 'ES6_STRICT',
+ language_out: 'ES5_STRICT',
+ isolation_mode: 'NONE',
+ output_wrapper_file: 'closure-output.txt',
+ assume_function_wrapper: true,
+ js_output_file: `${fileName}.js`,
+ warning_level: 'VERBOSE',
+ rewrite_polyfills: false,
+ module_resolution: 'NODE',
+ entry_point: `entrypoints/${sourceName}-index.js`,
+ dependency_mode: 'STRICT',
+ externs: [
+ 'externs/webcomponents.js',
+ 'node_modules/@webcomponents/custom-elements/externs/custom-elements.js',
+ 'node_modules/@webcomponents/html-imports/externs/html-imports.js',
+ 'node_modules/@webcomponents/shadycss/externs/shadycss-externs.js',
+ 'node_modules/@webcomponents/shadydom/externs/shadydom.js'
+ ]
+ };
+
+ return gulp.src([
+ 'entrypoints/*.js',
+ 'src/*.js',
+ 'node_modules/es6-promise/lib/es6-promise/**/*.js',
+ 'node_modules/@webcomponents/**/*.js',
+ '!node_modules/@webcomponents/*/externs/*.js',
+ '!node_modules/@webcomponents/*/node_modules/**',
+ '!**/bower_components/**'
+ ], {base: './', follow: true})
+ .pipe(sourcemaps.init())
+ .pipe(closure(closureOptions))
+ .pipe(sourcemaps.write('.'))
+ .pipe(gulp.dest('.'));
+}
+
+gulp.task('debugify-hi', () => {
+ return debugify('webcomponents-hi')
+});
+
+gulp.task('debugify-hi-ce', () => {
+ return debugify('webcomponents-hi-ce')
+});
+
+gulp.task('debugify-hi-sd-ce', () => {
+ return debugify('webcomponents-hi-sd-ce')
+});
+
+gulp.task('debugify-hi-sd-ce-pf', () => {
+ // The es6-promise polyfill needs to set the correct context.
+ // See https://github.com/rollup/rollup/wiki/Troubleshooting#this-is-undefined
+ const extraOptions = {context: 'window'};
+ return debugify('webcomponents-hi-sd-ce-pf', 'webcomponents-lite', extraOptions)
+});
+
+gulp.task('debugify-sd-ce', () => {
+ return debugify('webcomponents-sd-ce')
+});
+
+gulp.task('debugify-hi-sd', () => {
+ return debugify('webcomponents-hi-sd')
+});
+
+gulp.task('closurify-hi', () => {
+ return closurify('webcomponents-hi')
+});
+
+gulp.task('closurify-hi-ce', () => {
+ return closurify('webcomponents-hi-ce')
+});
+
+gulp.task('closurify-hi-sd-ce', () => {
+ return closurify('webcomponents-hi-sd-ce')
+});
+
+gulp.task('closurify-hi-sd-ce-pf', () => {
+ return closurify('webcomponents-hi-sd-ce-pf', 'webcomponents-lite')
+});
+
+gulp.task('closurify-sd-ce', () => {
+ return closurify('webcomponents-sd-ce')
+});
+
+gulp.task('closurify-hi-sd', () => {
+ return closurify('webcomponents-hi-sd')
+})
+
+function singleLicenseComment() {
+ let hasLicense = false;
+ return (comment) => {
+ if (hasLicense) {
+ return false;
+ }
+ return hasLicense = /@license/.test(comment);
+ }
+}
+
+const babelOptions = {
+ presets: 'minify',
+ shouldPrintComment: singleLicenseComment()
+};
+
+gulp.task('debugify-ce-es5-adapter', () => {
+ return debugify('custom-elements-es5-adapter', '', {plugins: [babel(babelOptions)]});
+});
+
+gulp.task('default', ['closure']);
+
+gulp.task('clean-builds', () => {
+ return del(['custom-elements-es5-adapter.js{,.map}', 'webcomponents*.js{,.map}', '!webcomponents-loader.js']);
+});
+
+gulp.task('debug', (cb) => {
+ const tasks = [
+ 'debugify-hi',
+ 'debugify-hi-ce',
+ 'debugify-hi-sd',
+ 'debugify-hi-sd-ce',
+ 'debugify-hi-sd-ce-pf',
+ 'debugify-sd-ce',
+ 'debugify-ce-es5-adapter'
+ ];
+ runseq('clean-builds', tasks, cb);
+});
+
+gulp.task('closure', (cb) => {
+ const tasks = [
+ 'closurify-hi',
+ 'closurify-hi-ce',
+ 'closurify-hi-sd',
+ 'closurify-hi-sd-ce',
+ 'closurify-hi-sd-ce-pf',
+ 'closurify-sd-ce',
+ 'debugify-ce-es5-adapter'
+ ];
+ runseq('clean-builds', ...tasks, cb);
+}); \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/package-lock.json b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/package-lock.json
new file mode 100644
index 00000000000..9f7a77c5761
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/package-lock.json
@@ -0,0 +1,9534 @@
+{
+ "name": "@webcomponents/webcomponentsjs",
+ "version": "1.2.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@gulp-sourcemaps/identity-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.1.tgz",
+ "integrity": "sha1-z6I7xYQPkQTOMqZedNt+epdLvuE=",
+ "dev": true,
+ "requires": {
+ "acorn": "5.3.0",
+ "css": "2.2.1",
+ "normalize-path": "2.1.1",
+ "source-map": "0.5.7",
+ "through2": "2.0.3"
+ }
+ },
+ "@gulp-sourcemaps/map-sources": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz",
+ "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=",
+ "dev": true,
+ "requires": {
+ "normalize-path": "2.1.1",
+ "through2": "2.0.3"
+ }
+ },
+ "@polymer/sinonjs": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/@polymer/sinonjs/-/sinonjs-1.17.1.tgz",
+ "integrity": "sha512-/U8F/cOTrbF2iVVYgINYmvKbtbexs+89Q3v8AaHADRYabTg7aOZGOb0RyWpOI+sUJt04kj63U4FwMhzW5r4wZA==",
+ "dev": true
+ },
+ "@polymer/test-fixture": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@polymer/test-fixture/-/test-fixture-0.0.3.tgz",
+ "integrity": "sha1-REN1JpfU2Sk7vEEuoLXk00HxSdk=",
+ "dev": true
+ },
+ "@types/assert": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/assert/-/assert-0.0.29.tgz",
+ "integrity": "sha1-jlYnhbqlq9p8BKSfZmXq50MZKNM=",
+ "dev": true
+ },
+ "@types/babel-core": {
+ "version": "6.25.3",
+ "resolved": "https://registry.npmjs.org/@types/babel-core/-/babel-core-6.25.3.tgz",
+ "integrity": "sha512-OlUjfM+Qv+XwcaucEiekBIhfAYe4q4ruvQZZcCkOtQZ27Hykxm1LLY2s0mE6LtP9XQt6x+TUvS70KW2e8Mz0ZA==",
+ "dev": true,
+ "requires": {
+ "@types/babel-generator": "6.25.1",
+ "@types/babel-template": "6.25.0",
+ "@types/babel-traverse": "6.25.3",
+ "@types/babel-types": "7.0.0",
+ "@types/babylon": "6.16.2"
+ }
+ },
+ "@types/babel-generator": {
+ "version": "6.25.1",
+ "resolved": "https://registry.npmjs.org/@types/babel-generator/-/babel-generator-6.25.1.tgz",
+ "integrity": "sha512-nKNz9Ch4WP2TFZjQROhxqqS2SCk0OoDzGazJI6S+2sGgW9P7N4o3vluZAXFuPEnRqtz2A0vrrkK3tjQktxIlRw==",
+ "dev": true,
+ "requires": {
+ "@types/babel-types": "7.0.0"
+ }
+ },
+ "@types/babel-template": {
+ "version": "6.25.0",
+ "resolved": "https://registry.npmjs.org/@types/babel-template/-/babel-template-6.25.0.tgz",
+ "integrity": "sha512-TtyfVlrprX92xSuKa8D//7vFz5kBJODBw5IQ1hQXehqO+me26vt1fyNxOZyXhUq2a7jRyT72V8p68IyH4NEZNA==",
+ "dev": true,
+ "requires": {
+ "@types/babel-types": "7.0.0",
+ "@types/babylon": "6.16.2"
+ }
+ },
+ "@types/babel-traverse": {
+ "version": "6.25.3",
+ "resolved": "https://registry.npmjs.org/@types/babel-traverse/-/babel-traverse-6.25.3.tgz",
+ "integrity": "sha512-4FaulWyA7nrXPkzoukL2VmSpxCnBZwc+MgwZqO30gtHCrtaUXnoxymdYfxzf3CZN80zjtrVzKfLlZ7FPYvrhQQ==",
+ "dev": true,
+ "requires": {
+ "@types/babel-types": "7.0.0"
+ }
+ },
+ "@types/babel-types": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.0.tgz",
+ "integrity": "sha512-PyWcbX0W4r4GcgXLI0Vu4jyJ/Erueo3PwjgvQcOmWAOBW0ObhzBBciEX+sHvjkNE0umI6nqD192FDKvYZTL91A==",
+ "dev": true
+ },
+ "@types/babylon": {
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.2.tgz",
+ "integrity": "sha512-+Jty46mPaWe1VAyZbfvgJM4BAdklLWxrT5tc/RjvCgLrtk6gzRY6AOnoWFv4p6hVxhJshDdr2hGVn56alBp97Q==",
+ "dev": true,
+ "requires": {
+ "@types/babel-types": "7.0.0"
+ }
+ },
+ "@types/bluebird": {
+ "version": "3.5.19",
+ "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.19.tgz",
+ "integrity": "sha512-2nHw8pBp6J0N4mHPEO5GJptmd0KKjLFz/wpBiLMOT8UVnGqAP2e7P44wKVj+ujPvsFuIGyB2waDA3dpYX3c6Aw==",
+ "dev": true
+ },
+ "@types/body-parser": {
+ "version": "1.16.8",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.16.8.tgz",
+ "integrity": "sha512-BdN2PXxOFnTXFcyONPW6t0fHjz2fvRZHVMFpaS0wYr+Y8fWEaNOs4V8LEu/fpzQlMx+ahdndgTaGTwPC+J/EeA==",
+ "dev": true,
+ "requires": {
+ "@types/express": "4.11.0",
+ "@types/node": "8.5.9"
+ }
+ },
+ "@types/chai": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.1.tgz",
+ "integrity": "sha512-nU82bD1xUJ1BKKPNQPJffXjNQtjh5XdF7hqKhnjrpLw+5jMJdJcx6UqwWycCPnKKWQbNszOq9g9vSn1Xc0Ll/Q==",
+ "dev": true
+ },
+ "@types/chai-subset": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.1.tgz",
+ "integrity": "sha512-Aof+FLfWzBPzDgJ2uuBuPNOBHVx9Siyw4vmOcsMgsuxX1nfUWSlzpq4pdvQiaBgGjGS7vP/Oft5dpJbX4krT1A==",
+ "dev": true,
+ "requires": {
+ "@types/chai": "4.1.1"
+ }
+ },
+ "@types/chalk": {
+ "version": "0.4.31",
+ "resolved": "https://registry.npmjs.org/@types/chalk/-/chalk-0.4.31.tgz",
+ "integrity": "sha1-ox10JBprHtu5c8822XooloNKUfk=",
+ "dev": true
+ },
+ "@types/clone": {
+ "version": "0.1.30",
+ "resolved": "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz",
+ "integrity": "sha1-5zZWSMG0ITalnH1QQGN7O1yDthQ=",
+ "dev": true
+ },
+ "@types/compression": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/@types/compression/-/compression-0.0.33.tgz",
+ "integrity": "sha1-ldxzOiM5qoRjgdfxN3eS0lU9wn0=",
+ "dev": true,
+ "requires": {
+ "@types/express": "4.11.0"
+ }
+ },
+ "@types/content-type": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@types/content-type/-/content-type-1.1.2.tgz",
+ "integrity": "sha512-w2d7fBCYbCBUBTGtkC4JfX1FicTtgEmq7wTTjc7rC5RA/JdB1Bi7o88nKzUqAnIIBXJVmq0n4tTmF3PJN8QqCg==",
+ "dev": true
+ },
+ "@types/cssbeautify": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@types/cssbeautify/-/cssbeautify-0.3.1.tgz",
+ "integrity": "sha1-jgvuj33suVIlDaDK6+BeMFkcF+8=",
+ "dev": true
+ },
+ "@types/doctrine": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.1.tgz",
+ "integrity": "sha1-uZny2fe0PKvgoaLzm8IDvH3K2p0=",
+ "dev": true
+ },
+ "@types/escodegen": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/@types/escodegen/-/escodegen-0.0.2.tgz",
+ "integrity": "sha1-fOpBqyQukQ6xD2WuGK66RZ1ms18=",
+ "dev": true
+ },
+ "@types/estraverse": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estraverse/-/estraverse-0.0.6.tgz",
+ "integrity": "sha1-Zp9833KreX5hJfjQD+0z1M8wwiE=",
+ "dev": true,
+ "requires": {
+ "@types/estree": "0.0.37"
+ }
+ },
+ "@types/estree": {
+ "version": "0.0.37",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.37.tgz",
+ "integrity": "sha512-1IT6vNpmU9w18P3v6mN9idv18z5KPVTi4t7+rU9VLnkxo0LCam8IXy/eSVzOaQ1Wpabra2cN3A8K/SliPK/Suw==",
+ "dev": true
+ },
+ "@types/events": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-1.1.0.tgz",
+ "integrity": "sha512-y3bR98mzYOo0pAZuiLari+cQyiKk3UXRuT45h1RjhfeCzqkjaVsfZJNaxdgtk7/3tzOm1ozLTqEqMP3VbI48jw==",
+ "dev": true
+ },
+ "@types/express": {
+ "version": "4.11.0",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.11.0.tgz",
+ "integrity": "sha512-N1Wdp3v4KmdO3W/CM7KXrDwM4xcVZjlHF2dAOs7sNrTUX8PY3G4n9NkaHlfjGFEfgFeHmRRjywoBd4VkujDs9w==",
+ "dev": true,
+ "requires": {
+ "@types/body-parser": "1.16.8",
+ "@types/express-serve-static-core": "4.11.1",
+ "@types/serve-static": "1.13.1"
+ }
+ },
+ "@types/express-serve-static-core": {
+ "version": "4.11.1",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.11.1.tgz",
+ "integrity": "sha512-EehCl3tpuqiM8RUb+0255M8PhhSwTtLfmO7zBBdv0ay/VTd/zmrqDfQdZFsa5z/PVMbH2yCMZPXsnrImpATyIw==",
+ "dev": true,
+ "requires": {
+ "@types/events": "1.1.0",
+ "@types/node": "8.5.9"
+ }
+ },
+ "@types/freeport": {
+ "version": "1.0.21",
+ "resolved": "https://registry.npmjs.org/@types/freeport/-/freeport-1.0.21.tgz",
+ "integrity": "sha1-c/ZUPtZ9PKP/+XuYVZFZi3CSBm8=",
+ "dev": true,
+ "optional": true
+ },
+ "@types/glob": {
+ "version": "5.0.34",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.34.tgz",
+ "integrity": "sha512-sUvpieq+HsWTLdkeOI8Mi8u22Ag3AoGuM3sv+XMP1bKtbaIAHpEA2f52K2mz6vK5PVhTa3bFyRZLZMqTxOo2Cw==",
+ "dev": true,
+ "requires": {
+ "@types/events": "1.1.0",
+ "@types/minimatch": "3.0.3",
+ "@types/node": "8.5.9"
+ }
+ },
+ "@types/glob-stream": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/@types/glob-stream/-/glob-stream-6.1.0.tgz",
+ "integrity": "sha512-RHv6ZQjcTncXo3thYZrsbAVwoy4vSKosSWhuhuQxLOTv74OJuFQxXkmUuZCr3q9uNBEVCvIzmZL/FeRNbHZGUg==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "5.0.34",
+ "@types/node": "8.5.9"
+ }
+ },
+ "@types/launchpad": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@types/launchpad/-/launchpad-0.6.0.tgz",
+ "integrity": "sha1-NylhCbfyd/bmxf1+DAcGvJGPu1E=",
+ "dev": true,
+ "optional": true
+ },
+ "@types/mime": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-0.0.29.tgz",
+ "integrity": "sha1-+8/TMFc7kS71nu7hRgK/rOYwdUs=",
+ "dev": true
+ },
+ "@types/minimatch": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
+ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+ "dev": true
+ },
+ "@types/mz": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/mz/-/mz-0.0.29.tgz",
+ "integrity": "sha1-vCRyjGSZc/HHhR6QM/nOUlZowns=",
+ "dev": true,
+ "requires": {
+ "@types/bluebird": "3.5.19",
+ "@types/node": "8.5.9"
+ }
+ },
+ "@types/node": {
+ "version": "8.5.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.5.9.tgz",
+ "integrity": "sha512-s+c3AjymyAccTI4hcgNFK4mToH8l+hyPDhu4LIkn71lRy56FLijGu00fyLgldjM/846Pmk9N4KFUs2P8GDs0pA==",
+ "dev": true
+ },
+ "@types/opn": {
+ "version": "3.0.28",
+ "resolved": "https://registry.npmjs.org/@types/opn/-/opn-3.0.28.tgz",
+ "integrity": "sha1-CX0NHJtXSVc6XZbfEyOHu20CEYo=",
+ "dev": true,
+ "requires": {
+ "@types/node": "8.5.9"
+ }
+ },
+ "@types/parse5": {
+ "version": "2.2.34",
+ "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-2.2.34.tgz",
+ "integrity": "sha1-44cKEOgnNacg9i1x3NGDunjvOp0=",
+ "dev": true,
+ "requires": {
+ "@types/node": "8.5.9"
+ }
+ },
+ "@types/pem": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/@types/pem/-/pem-1.9.3.tgz",
+ "integrity": "sha512-+hHbGi9PAyHVeRdMJN6yNuMWoshJ+7oTqYuhBB1/vHq0Tfu46ucbvgxmhwBfe0GCiJZvCa20VHhHsA0mY5W6hQ==",
+ "dev": true
+ },
+ "@types/serve-static": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.1.tgz",
+ "integrity": "sha512-jDMH+3BQPtvqZVIcsH700Dfi8Q3MIcEx16g/VdxjoqiGR/NntekB10xdBpirMKnPe9z2C5cBmL0vte0YttOr3Q==",
+ "dev": true,
+ "requires": {
+ "@types/express-serve-static-core": "4.11.1",
+ "@types/mime": "0.0.29"
+ }
+ },
+ "@types/spdy": {
+ "version": "3.4.4",
+ "resolved": "https://registry.npmjs.org/@types/spdy/-/spdy-3.4.4.tgz",
+ "integrity": "sha512-N9LBlbVRRYq6HgYpPkqQc3a9HJ/iEtVZToW6xlTtJiMhmRJ7jJdV7TaZQJw/Ve/1ePUsQiCTDc4JMuzzag94GA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "8.5.9"
+ }
+ },
+ "@types/ua-parser-js": {
+ "version": "0.7.32",
+ "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.32.tgz",
+ "integrity": "sha512-+z7Q72Mlnq6SFkQYHzLg2Z70pIsgRVzgx1b5PV8eUv5uaZ/zoqIs45XnhtToW4gTeX4FbjIP49nhIjyvPF4rPg==",
+ "dev": true
+ },
+ "@types/vinyl": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.2.tgz",
+ "integrity": "sha512-2iYpNuOl98SrLPBZfEN9Mh2JCJ2EI9HU35SfgBEb51DcmaHkhp8cKMblYeBqMQiwXMgAD3W60DbQ4i/UdLiXhw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "8.5.9"
+ }
+ },
+ "@types/vinyl-fs": {
+ "version": "0.0.28",
+ "resolved": "https://registry.npmjs.org/@types/vinyl-fs/-/vinyl-fs-0.0.28.tgz",
+ "integrity": "sha1-RmMBe8gCxlcOrk80Cf1cq/l8v94=",
+ "dev": true,
+ "requires": {
+ "@types/glob-stream": "6.1.0",
+ "@types/node": "8.5.9",
+ "@types/vinyl": "2.0.2"
+ }
+ },
+ "@types/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@types/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-ZrJDWpvg75LTGX4XwuneY9s6bF3OeZcGTpoGh3zDV9ytzcHMFsRrMIaLBRJZQMBoGyKs6unBQfVdrLZiYfb1zQ==",
+ "dev": true,
+ "optional": true
+ },
+ "@types/winston": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/@types/winston/-/winston-2.3.7.tgz",
+ "integrity": "sha512-jNhbkxPtt9xbzvihfA0OavjJbpCIyTDSmwE03BVXgCKcz9lwNsq4cg2wsNkY4Av5eH35ttBArhYtVJa6CIrg2A==",
+ "dev": true,
+ "requires": {
+ "@types/node": "8.5.9"
+ }
+ },
+ "@webcomponents/custom-elements": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@webcomponents/custom-elements/-/custom-elements-1.1.0.tgz",
+ "integrity": "sha512-M872VYia7mXvtgsxKTTNBNPDYNLEvM3DDd0reyNusd/5weWH0XouKYYgp68b6gvWdMPHcMomg3SzUZaOo/bv9w==",
+ "dev": true
+ },
+ "@webcomponents/html-imports": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@webcomponents/html-imports/-/html-imports-1.1.1.tgz",
+ "integrity": "sha512-GVywdQzoSGtXv0qlGjqxFefSeLvICsT5QQaEhPKW6swhdIoNtTb6LJ4D/EBcfukgNcOLocplGz99YDVVHnqAEQ==",
+ "dev": true
+ },
+ "@webcomponents/shadycss": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@webcomponents/shadycss/-/shadycss-1.1.3.tgz",
+ "integrity": "sha512-tGap6j8LVgy8ORM7pL5Yf6u8tTUH0jJaMmA5St/Ijy9WCNttDnrmZTiEF7fl7QQNerzMnCVQHtO0vuX8kybxfQ==",
+ "dev": true
+ },
+ "@webcomponents/shadydom": {
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/@webcomponents/shadydom/-/shadydom-1.0.14.tgz",
+ "integrity": "sha512-6jhMR4gEJr6xe4pg+GjmOVx8GB2XAaCIEND6+YUV3EcgOIaCG6jl2QJJ4JiuFmJALNBn2sHIsnz6Gvw74F9Mzw==",
+ "dev": true
+ },
+ "@webcomponents/template": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/@webcomponents/template/-/template-1.2.4.tgz",
+ "integrity": "sha512-lbhJfT+VuQ9/1hLrX7vkbz+vbJBGwkhnwHeEdajBgDCu5La+FmfnTyBPyYplBN/3yDss9jJ0HMMrKFho3KYXPQ==",
+ "dev": true
+ },
+ "@webcomponents/webcomponents-platform": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@webcomponents/webcomponents-platform/-/webcomponents-platform-1.0.0.tgz",
+ "integrity": "sha1-iHkUY4DdvsuGF+MiSX1Z53w/9Gg=",
+ "dev": true
+ },
+ "@webcomponents/webcomponentsjs": {
+ "version": "1.0.22",
+ "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-1.0.22.tgz",
+ "integrity": "sha512-VREMJxIe5ydR6LdMpg27ojyfL635jH03680na5X2LNLY2UF1GOzNrNOAVaEf2mr+SDUpc9Rey+gt+qCvtbCGhQ==",
+ "dev": true
+ },
+ "accepts": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz",
+ "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=",
+ "dev": true,
+ "requires": {
+ "mime-types": "2.1.17",
+ "negotiator": "0.6.1"
+ }
+ },
+ "accessibility-developer-tools": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/accessibility-developer-tools/-/accessibility-developer-tools-2.12.0.tgz",
+ "integrity": "sha1-PaDM6dbsY3OWS4TzXbfPw996tRQ=",
+ "dev": true
+ },
+ "acorn": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz",
+ "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==",
+ "dev": true
+ },
+ "acorn-jsx": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
+ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
+ "dev": true,
+ "requires": {
+ "acorn": "3.3.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
+ "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
+ "dev": true
+ }
+ }
+ },
+ "adm-zip": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz",
+ "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=",
+ "dev": true,
+ "optional": true
+ },
+ "after": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
+ "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
+ "dev": true
+ },
+ "agent-base": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz",
+ "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "extend": "3.0.1",
+ "semver": "5.0.3"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz",
+ "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "ajv": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "dev": true,
+ "requires": {
+ "co": "4.6.0",
+ "fast-deep-equal": "1.1.0",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.3.1"
+ }
+ },
+ "ajv-keywords": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz",
+ "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=",
+ "dev": true
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true
+ },
+ "ansi-align": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz",
+ "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=",
+ "dev": true,
+ "requires": {
+ "string-width": "1.0.2"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "ansi-cyan": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
+ "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-escape-sequences": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-3.0.0.tgz",
+ "integrity": "sha1-HBg5S2r5t2/5pjUJ+kl2af0s5T4=",
+ "dev": true,
+ "requires": {
+ "array-back": "1.0.4"
+ }
+ },
+ "ansi-escapes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz",
+ "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==",
+ "dev": true
+ },
+ "ansi-gray": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
+ "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-red": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
+ "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "ansi-wrap": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
+ "dev": true
+ },
+ "any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=",
+ "dev": true
+ },
+ "append-field": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/append-field/-/append-field-0.1.0.tgz",
+ "integrity": "sha1-bdxY+gg8e8VF08WZWygwzCNm1Eo=",
+ "dev": true
+ },
+ "archiver": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz",
+ "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=",
+ "dev": true,
+ "requires": {
+ "archiver-utils": "1.3.0",
+ "async": "2.6.0",
+ "buffer-crc32": "0.2.13",
+ "glob": "7.1.2",
+ "lodash": "4.17.4",
+ "readable-stream": "2.3.3",
+ "tar-stream": "1.5.2",
+ "walkdir": "0.0.11",
+ "zip-stream": "1.2.0"
+ }
+ },
+ "archiver-utils": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz",
+ "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=",
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2",
+ "graceful-fs": "4.1.11",
+ "lazystream": "1.0.0",
+ "lodash": "4.17.4",
+ "normalize-path": "2.1.1",
+ "readable-stream": "2.3.3"
+ }
+ },
+ "archy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
+ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
+ "dev": true
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "1.0.3"
+ }
+ },
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "1.1.0"
+ }
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
+ "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=",
+ "dev": true
+ },
+ "array-back": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
+ "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
+ "dev": true,
+ "requires": {
+ "typical": "2.6.1"
+ }
+ },
+ "array-differ": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
+ "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
+ "dev": true
+ },
+ "array-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
+ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
+ "dev": true
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+ "dev": true
+ },
+ "array-slice": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz",
+ "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=",
+ "dev": true
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "1.0.3"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+ "dev": true
+ },
+ "arraybuffer.slice": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
+ "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==",
+ "dev": true
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
+ "dev": true
+ },
+ "asn1": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
+ "dev": true
+ },
+ "assert-plus": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
+ "dev": true
+ },
+ "assertion-error": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
+ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+ "dev": true
+ },
+ "async": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
+ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
+ "dev": true,
+ "requires": {
+ "lodash": "4.17.4"
+ }
+ },
+ "async-limiter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
+ "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true
+ },
+ "atob": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz",
+ "integrity": "sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=",
+ "dev": true
+ },
+ "aws-sign2": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+ "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
+ "dev": true
+ },
+ "aws4": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
+ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
+ "dev": true
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "esutils": "2.0.2",
+ "js-tokens": "3.0.2"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "babel-core": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz",
+ "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "babel-generator": "6.26.0",
+ "babel-helpers": "6.24.1",
+ "babel-messages": "6.23.0",
+ "babel-register": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "convert-source-map": "1.5.0",
+ "debug": "2.6.9",
+ "json5": "0.5.1",
+ "lodash": "4.17.4",
+ "minimatch": "3.0.4",
+ "path-is-absolute": "1.0.1",
+ "private": "0.1.7",
+ "slash": "1.0.0",
+ "source-map": "0.5.7"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "babel-generator": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz",
+ "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=",
+ "dev": true,
+ "requires": {
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "detect-indent": "4.0.0",
+ "jsesc": "1.3.0",
+ "lodash": "4.17.4",
+ "source-map": "0.5.7",
+ "trim-right": "1.0.1"
+ }
+ },
+ "babel-helper-call-delegate": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
+ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
+ "dev": true,
+ "requires": {
+ "babel-helper-hoist-variables": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-define-map": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz",
+ "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "lodash": "4.17.4"
+ }
+ },
+ "babel-helper-evaluate-path": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.2.0.tgz",
+ "integrity": "sha512-0EK9TUKMxHL549hWDPkQoS7R0Ozg1CDLheVBHYds2B2qoAvmr9ejY3zOXFsrICK73TN7bPhU14PBeKc8jcBTwg==",
+ "dev": true
+ },
+ "babel-helper-flip-expressions": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.2.0.tgz",
+ "integrity": "sha512-rAsPA1pWBc7e2E6HepkP2e1sXugT+Oq/VCqhyuHJ8aJ2d/ifwnJfd4Qxjm21qlW43AN8tqaeByagKK6wECFMSw==",
+ "dev": true
+ },
+ "babel-helper-function-name": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
+ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
+ "dev": true,
+ "requires": {
+ "babel-helper-get-function-arity": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-get-function-arity": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
+ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-hoist-variables": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
+ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-is-nodes-equiv": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz",
+ "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=",
+ "dev": true
+ },
+ "babel-helper-is-void-0": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.2.0.tgz",
+ "integrity": "sha512-Axj1AYuD0E3Dl7nT3KxROP7VekEofz3XtEljzURf3fABalLpr8PamtgLFt+zuxtaCxRf9iuZmbAMMYWri5Bazw==",
+ "dev": true
+ },
+ "babel-helper-mark-eval-scopes": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.2.0.tgz",
+ "integrity": "sha512-KJuwrOUcHbvbh6he4xRXZFLaivK9DF9o3CrvpWnK1Wp0B+1ANYABXBMgwrnNFIDK/AvicxQ9CNr8wsgivlp4Aw==",
+ "dev": true
+ },
+ "babel-helper-optimise-call-expression": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz",
+ "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-regex": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz",
+ "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "lodash": "4.17.4"
+ }
+ },
+ "babel-helper-remove-or-void": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.2.0.tgz",
+ "integrity": "sha512-1Z41upf/XR+PwY7Nd+F15Jo5BiQi5205ZXUuKed3yoyQgDkMyoM7vAdjEJS/T+M6jy32sXjskMUgms4zeiVtRA==",
+ "dev": true
+ },
+ "babel-helper-replace-supers": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
+ "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=",
+ "dev": true,
+ "requires": {
+ "babel-helper-optimise-call-expression": "6.24.1",
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-to-multiple-sequence-expressions": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.2.0.tgz",
+ "integrity": "sha512-ij9lpfdP3+Zc/7kNwa+NXbTrUlsYEWPwt/ugmQO0qflzLrveTIkbfOqQztvitk81aG5NblYDQXDlRohzu3oa8Q==",
+ "dev": true
+ },
+ "babel-helpers": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
+ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0"
+ }
+ },
+ "babel-messages": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-minify-builtins": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.2.0.tgz",
+ "integrity": "sha512-4i+8ntaS8gwVUcOz5y+zE+55OVOl2nTbmHV51D4wAIiKcRI8U5K//ip1GHfhsgk/NJrrHK7h97Oy5jpqt0Iixg==",
+ "dev": true,
+ "requires": {
+ "babel-helper-evaluate-path": "0.2.0"
+ }
+ },
+ "babel-plugin-minify-constant-folding": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.2.0.tgz",
+ "integrity": "sha512-B3ffQBEUQ8ydlIkYv2MkZtTCbV7FAkWAV7NkyhcXlGpD10PaCxNGQ/B9oguXGowR1m16Q5nGhvNn8Pkn1MO6Hw==",
+ "dev": true,
+ "requires": {
+ "babel-helper-evaluate-path": "0.2.0"
+ }
+ },
+ "babel-plugin-minify-dead-code-elimination": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.2.0.tgz",
+ "integrity": "sha512-zE7y3pRyzA4zK5nBou0kTcwUTSQ/AiFrynt1cIEYN7vcO2gS9ZFZoI0aO9JYLUdct5fsC1vfB35408yrzTyVfg==",
+ "dev": true,
+ "requires": {
+ "babel-helper-evaluate-path": "0.2.0",
+ "babel-helper-mark-eval-scopes": "0.2.0",
+ "babel-helper-remove-or-void": "0.2.0",
+ "lodash.some": "4.6.0"
+ }
+ },
+ "babel-plugin-minify-flip-comparisons": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.2.0.tgz",
+ "integrity": "sha512-QOqXSEmD/LhT3LpM1WCyzAGcQZYYKJF7oOHvS6QbpomHenydrV53DMdPX2mK01icBExKZcJAHF209wvDBa+CSg==",
+ "dev": true,
+ "requires": {
+ "babel-helper-is-void-0": "0.2.0"
+ }
+ },
+ "babel-plugin-minify-guarded-expressions": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.2.0.tgz",
+ "integrity": "sha512-5+NSPdRQ9mnrHaA+zFj+D5OzmSiv90EX5zGH6cWQgR/OUqmCHSDqgTRPFvOctgpo8MJyO7Rt7ajs2UfLnlAwYg==",
+ "dev": true,
+ "requires": {
+ "babel-helper-flip-expressions": "0.2.0"
+ }
+ },
+ "babel-plugin-minify-infinity": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.2.0.tgz",
+ "integrity": "sha512-U694vrla1lN6vDHWGrR832t3a/A2eh+kyl019LxEE2+sS4VTydyOPRsAOIYAdJegWRA4cMX1lm9azAN0cLIr8g==",
+ "dev": true
+ },
+ "babel-plugin-minify-mangle-names": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.2.0.tgz",
+ "integrity": "sha512-Gixuak1/CO7VCdjn15/8Bxe/QsAtDG4zPbnsNoe1mIJGCIH/kcmSjFhMlGJtXDQZd6EKzeMfA5WmX9+jvGRefw==",
+ "dev": true,
+ "requires": {
+ "babel-helper-mark-eval-scopes": "0.2.0"
+ }
+ },
+ "babel-plugin-minify-numeric-literals": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.2.0.tgz",
+ "integrity": "sha512-VcLpb+r1YS7+RIOXdRsFVLLqoh22177USpHf+JM/g1nZbzdqENmfd5v534MLAbRErhbz6SyK+NQViVzVtBxu8g==",
+ "dev": true
+ },
+ "babel-plugin-minify-replace": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.2.0.tgz",
+ "integrity": "sha512-SEW6zoSVxh3OH6E1LCgyhhTWMnCv+JIRu5h5IlJDA11tU4ZeSF7uPQcO4vN/o52+FssRB26dmzJ/8D+z0QPg5Q==",
+ "dev": true
+ },
+ "babel-plugin-minify-simplify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.2.0.tgz",
+ "integrity": "sha512-Mj3Mwy2zVosMfXDWXZrQH5/uMAyfJdmDQ1NVqit+ArbHC3LlXVzptuyC1JxTyai/wgFvjLaichm/7vSUshkWqw==",
+ "dev": true,
+ "requires": {
+ "babel-helper-flip-expressions": "0.2.0",
+ "babel-helper-is-nodes-equiv": "0.0.1",
+ "babel-helper-to-multiple-sequence-expressions": "0.2.0"
+ }
+ },
+ "babel-plugin-minify-type-constructors": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.2.0.tgz",
+ "integrity": "sha512-NiOvvA9Pq6bki6nP4BayXwT5GZadw7DJFDDzHmkpnOQpENWe8RtHtKZM44MG1R6EQ5XxgbLdsdhswIzTkFlO5g==",
+ "dev": true,
+ "requires": {
+ "babel-helper-is-void-0": "0.2.0"
+ }
+ },
+ "babel-plugin-transform-es2015-arrow-functions": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
+ "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-block-scoped-functions": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz",
+ "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-block-scoping": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz",
+ "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "lodash": "4.17.4"
+ }
+ },
+ "babel-plugin-transform-es2015-classes": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz",
+ "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
+ "dev": true,
+ "requires": {
+ "babel-helper-define-map": "6.26.0",
+ "babel-helper-function-name": "6.24.1",
+ "babel-helper-optimise-call-expression": "6.24.1",
+ "babel-helper-replace-supers": "6.24.1",
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-computed-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
+ "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-destructuring": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
+ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-duplicate-keys": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz",
+ "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-for-of": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
+ "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-function-name": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz",
+ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-literals": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz",
+ "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-amd": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz",
+ "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-es2015-modules-commonjs": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-commonjs": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz",
+ "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-strict-mode": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-object-super": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz",
+ "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=",
+ "dev": true,
+ "requires": {
+ "babel-helper-replace-supers": "6.24.1",
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-parameters": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
+ "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
+ "dev": true,
+ "requires": {
+ "babel-helper-call-delegate": "6.24.1",
+ "babel-helper-get-function-arity": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-shorthand-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
+ "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-spread": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
+ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-sticky-regex": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz",
+ "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
+ "dev": true,
+ "requires": {
+ "babel-helper-regex": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-template-literals": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
+ "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-typeof-symbol": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz",
+ "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-unicode-regex": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz",
+ "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
+ "dev": true,
+ "requires": {
+ "babel-helper-regex": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "regexpu-core": "2.0.0"
+ }
+ },
+ "babel-plugin-transform-inline-consecutive-adds": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.2.0.tgz",
+ "integrity": "sha512-GlhOuLOQ28ua9prg0hT33HslCrEmz9xWXy9ZNZSACppCyRxxRW+haYtRgm7uYXCcd0q8ggCWD2pfWEJp5iiZfQ==",
+ "dev": true
+ },
+ "babel-plugin-transform-member-expression-literals": {
+ "version": "6.8.5",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.8.5.tgz",
+ "integrity": "sha512-Ux3ligf+ukzWaCbBYOstDuFBhRgMiJHlpJBKV4P47qtzVkd0lg1ddPj9fqIJqAM0n+CvxipyrZrnNnw3CdtQCg==",
+ "dev": true
+ },
+ "babel-plugin-transform-merge-sibling-variables": {
+ "version": "6.8.6",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.8.6.tgz",
+ "integrity": "sha512-o5Jioq553HtEAUN5uty7ELJMenXIxHI3PIs1yLqYWYQwP6mg6IPVAJ+U7i4zr9XGF/kb2RGsdehglGTV+vngqA==",
+ "dev": true
+ },
+ "babel-plugin-transform-minify-booleans": {
+ "version": "6.8.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.8.3.tgz",
+ "integrity": "sha512-bPbUhkeN2Nc0KH0/A19GwQGj8w+CvdJzyu8t59VoEDgsNMQ9Bopzi5DrVkrSsVjbYUaZpzq/DYLrH+wD5K2Tig==",
+ "dev": true
+ },
+ "babel-plugin-transform-property-literals": {
+ "version": "6.8.5",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.8.5.tgz",
+ "integrity": "sha512-MmiQsQ5AcIaRZMJD0zY5C4H3xuHm06/nWgtOsz7AXV44VEIXIlPiJ39IFYJ4Qx67/fEm8zJAedzR8t+B7d10Bg==",
+ "dev": true,
+ "requires": {
+ "esutils": "2.0.2"
+ }
+ },
+ "babel-plugin-transform-regenerator": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
+ "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=",
+ "dev": true,
+ "requires": {
+ "regenerator-transform": "0.10.1"
+ }
+ },
+ "babel-plugin-transform-regexp-constructors": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.2.0.tgz",
+ "integrity": "sha512-7IsQ6aQx6LAaOqy97/PthTf+5Nx9grZww3r6E62IdWe76Yr8KsuwVjxzqSPQvESJqTE3EMADQ9S0RtwWDGNG9Q==",
+ "dev": true
+ },
+ "babel-plugin-transform-remove-console": {
+ "version": "6.8.5",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.8.5.tgz",
+ "integrity": "sha512-uuCKvtweCyIvvC8fi92EcWRtO2Kt5KMNMRK6BhpDXdeb3sxvGM7453RSmgeu4DlKns3OlvY9Ep5Q9m5a7RQAgg==",
+ "dev": true
+ },
+ "babel-plugin-transform-remove-debugger": {
+ "version": "6.8.5",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.8.5.tgz",
+ "integrity": "sha512-InDQDdHPOLJKM+G6oXrEesf+P29QFBmcTXID+TAvZziVz+38xe2VO/Bn3FcRcRtnOOycbgsJkUNp9jIK+ist6g==",
+ "dev": true
+ },
+ "babel-plugin-transform-remove-undefined": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.2.0.tgz",
+ "integrity": "sha512-O8v57tPMHkp89kA4ZfQEYds/pzgvz/QYerBJjIuL5/Jc7RnvMVRA5gJY9zFKP7WayW8WOSBV4vh8Y8FJRio+ow==",
+ "dev": true,
+ "requires": {
+ "babel-helper-evaluate-path": "0.2.0"
+ }
+ },
+ "babel-plugin-transform-simplify-comparison-operators": {
+ "version": "6.8.5",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.5.tgz",
+ "integrity": "sha512-B3HlBZb+Uq86nRj5yNPO6pJ3noEdqHvzYkEYoUWtrsWTv48ZIRatYlumoOiif/v8llF13YjYjx9zhyznDx+N9g==",
+ "dev": true
+ },
+ "babel-plugin-transform-strict-mode": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
+ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-undefined-to-void": {
+ "version": "6.8.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.8.3.tgz",
+ "integrity": "sha512-goYwp8dMrzHD6x9GjZ2M85Mk2vxf1h85CnUgAjfftUnlJvzF4uj5MrbReHBTbjQ96C8CuRzvhYZ3tv8H3Sc1ZA==",
+ "dev": true
+ },
+ "babel-preset-minify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.2.0.tgz",
+ "integrity": "sha512-mR8Q44RmMzm18bM2Lqd9uiPopzk5GDCtVuquNbLFmX6lOKnqWoenaNBxnWW0UhBFC75lEHTIgNGCbnsRI0pJVw==",
+ "dev": true,
+ "requires": {
+ "babel-plugin-minify-builtins": "0.2.0",
+ "babel-plugin-minify-constant-folding": "0.2.0",
+ "babel-plugin-minify-dead-code-elimination": "0.2.0",
+ "babel-plugin-minify-flip-comparisons": "0.2.0",
+ "babel-plugin-minify-guarded-expressions": "0.2.0",
+ "babel-plugin-minify-infinity": "0.2.0",
+ "babel-plugin-minify-mangle-names": "0.2.0",
+ "babel-plugin-minify-numeric-literals": "0.2.0",
+ "babel-plugin-minify-replace": "0.2.0",
+ "babel-plugin-minify-simplify": "0.2.0",
+ "babel-plugin-minify-type-constructors": "0.2.0",
+ "babel-plugin-transform-inline-consecutive-adds": "0.2.0",
+ "babel-plugin-transform-member-expression-literals": "6.8.5",
+ "babel-plugin-transform-merge-sibling-variables": "6.8.6",
+ "babel-plugin-transform-minify-booleans": "6.8.3",
+ "babel-plugin-transform-property-literals": "6.8.5",
+ "babel-plugin-transform-regexp-constructors": "0.2.0",
+ "babel-plugin-transform-remove-console": "6.8.5",
+ "babel-plugin-transform-remove-debugger": "6.8.5",
+ "babel-plugin-transform-remove-undefined": "0.2.0",
+ "babel-plugin-transform-simplify-comparison-operators": "6.8.5",
+ "babel-plugin-transform-undefined-to-void": "6.8.3",
+ "lodash.isplainobject": "4.0.6"
+ }
+ },
+ "babel-register": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
+ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
+ "dev": true,
+ "requires": {
+ "babel-core": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "core-js": "2.5.1",
+ "home-or-tmp": "2.0.0",
+ "lodash": "4.17.4",
+ "mkdirp": "0.5.1",
+ "source-map-support": "0.4.18"
+ }
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "dev": true,
+ "requires": {
+ "core-js": "2.5.1",
+ "regenerator-runtime": "0.11.0"
+ }
+ },
+ "babel-template": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
+ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "lodash": "4.17.4"
+ }
+ },
+ "babel-traverse": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
+ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "debug": "2.6.9",
+ "globals": "9.18.0",
+ "invariant": "2.2.2",
+ "lodash": "4.17.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "babel-types": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
+ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "esutils": "2.0.2",
+ "lodash": "4.17.4",
+ "to-fast-properties": "1.0.3"
+ }
+ },
+ "babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true
+ },
+ "backo2": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
+ "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "base64-arraybuffer": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
+ "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
+ "dev": true
+ },
+ "base64-js": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz",
+ "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=",
+ "dev": true,
+ "optional": true
+ },
+ "base64id": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
+ "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
+ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "tweetnacl": "0.14.5"
+ }
+ },
+ "beeper": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz",
+ "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=",
+ "dev": true
+ },
+ "better-assert": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
+ "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
+ "dev": true,
+ "requires": {
+ "callsite": "1.0.0"
+ }
+ },
+ "bl": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz",
+ "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.3.3"
+ }
+ },
+ "blob": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
+ "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
+ "dev": true
+ },
+ "body-parser": {
+ "version": "1.18.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
+ "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
+ "dev": true,
+ "requires": {
+ "bytes": "3.0.0",
+ "content-type": "1.0.4",
+ "debug": "2.6.9",
+ "depd": "1.1.2",
+ "http-errors": "1.6.2",
+ "iconv-lite": "0.4.19",
+ "on-finished": "2.3.0",
+ "qs": "6.5.1",
+ "raw-body": "2.3.2",
+ "type-is": "1.6.15"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "boom": {
+ "version": "2.10.1",
+ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+ "dev": true,
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "boxen": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz",
+ "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=",
+ "dev": true,
+ "requires": {
+ "ansi-align": "1.1.0",
+ "camelcase": "2.1.1",
+ "chalk": "1.1.3",
+ "cli-boxes": "1.0.0",
+ "filled-array": "1.1.0",
+ "object-assign": "4.1.1",
+ "repeating": "2.0.1",
+ "string-width": "1.0.2",
+ "widest-line": "1.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
+ "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "dev": true,
+ "requires": {
+ "expand-range": "1.8.2",
+ "preserve": "0.2.0",
+ "repeat-element": "1.1.2"
+ }
+ },
+ "browser-capabilities": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/browser-capabilities/-/browser-capabilities-0.2.2.tgz",
+ "integrity": "sha512-iS5g9+yT/T7jr9BTjDi5Hu2soieyce457ad+fdp6uDlYp6pacX7ZG/nYtCZ+KQiMCxRfbd65OhAg7GbVJ3RcBw==",
+ "dev": true,
+ "requires": {
+ "@types/ua-parser-js": "0.7.32",
+ "ua-parser-js": "0.7.17"
+ }
+ },
+ "browser-stdout": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz",
+ "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=",
+ "dev": true
+ },
+ "browserstack": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.0.tgz",
+ "integrity": "sha1-tWVCWtYu1ywQgqHrl51TE8fUdU8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "https-proxy-agent": "1.0.0"
+ }
+ },
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+ "dev": true
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "dev": true
+ },
+ "busboy": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
+ "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=",
+ "dev": true,
+ "requires": {
+ "dicer": "0.2.5",
+ "readable-stream": "1.1.14"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+ "dev": true
+ },
+ "caller-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
+ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
+ "dev": true,
+ "requires": {
+ "callsites": "0.2.0"
+ }
+ },
+ "callsite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+ "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
+ "dev": true
+ },
+ "callsites": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
+ "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "2.1.1",
+ "map-obj": "1.0.1"
+ }
+ },
+ "capture-stack-trace": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz",
+ "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=",
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
+ "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
+ "dev": true
+ },
+ "chai": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz",
+ "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=",
+ "dev": true,
+ "requires": {
+ "assertion-error": "1.1.0",
+ "check-error": "1.0.2",
+ "deep-eql": "3.0.1",
+ "get-func-name": "2.0.0",
+ "pathval": "1.1.0",
+ "type-detect": "4.0.7"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
+ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.1"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ }
+ }
+ },
+ "chardet": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
+ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
+ "dev": true
+ },
+ "charenc": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
+ "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
+ "dev": true
+ },
+ "check-error": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
+ "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
+ "dev": true
+ },
+ "circular-json": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
+ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
+ "dev": true
+ },
+ "cleankill": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/cleankill/-/cleankill-2.0.0.tgz",
+ "integrity": "sha1-WYMN/ItBHVPccq0J1Fp46jMWGpE=",
+ "dev": true
+ },
+ "cli-boxes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "2.0.0"
+ }
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "dev": true
+ },
+ "clone": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz",
+ "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=",
+ "dev": true
+ },
+ "clone-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
+ "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=",
+ "dev": true
+ },
+ "clone-stats": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
+ "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
+ "dev": true
+ },
+ "cloneable-readable": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.0.0.tgz",
+ "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "process-nextick-args": "1.0.7",
+ "through2": "2.0.3"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true
+ },
+ "color-convert": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
+ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+ "dev": true
+ },
+ "colors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
+ "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
+ "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "1.0.0"
+ }
+ },
+ "command-line-args": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-3.0.5.tgz",
+ "integrity": "sha1-W9StReeYPlwTRJGOQCgO4mk8WsA=",
+ "dev": true,
+ "requires": {
+ "array-back": "1.0.4",
+ "feature-detect-es6": "1.4.0",
+ "find-replace": "1.0.3",
+ "typical": "2.6.1"
+ }
+ },
+ "command-line-usage": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-3.0.8.tgz",
+ "integrity": "sha1-tqIJeMGzg0d/XBGlKUKLiAv+D00=",
+ "dev": true,
+ "requires": {
+ "ansi-escape-sequences": "3.0.0",
+ "array-back": "1.0.4",
+ "feature-detect-es6": "1.4.0",
+ "table-layout": "0.3.0",
+ "typical": "2.6.1"
+ }
+ },
+ "commander": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
+ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
+ "dev": true,
+ "requires": {
+ "graceful-readlink": "1.0.1"
+ }
+ },
+ "component-bind": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
+ "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
+ "dev": true
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+ "dev": true
+ },
+ "component-inherit": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
+ "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
+ "dev": true
+ },
+ "compress-commons": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz",
+ "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=",
+ "dev": true,
+ "requires": {
+ "buffer-crc32": "0.2.13",
+ "crc32-stream": "2.0.0",
+ "normalize-path": "2.1.1",
+ "readable-stream": "2.3.3"
+ }
+ },
+ "compressible": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz",
+ "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.30.0"
+ }
+ },
+ "compression": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.1.tgz",
+ "integrity": "sha1-7/JgPvwuIs+G810uuTWJ+YdTc9s=",
+ "dev": true,
+ "requires": {
+ "accepts": "1.3.4",
+ "bytes": "3.0.0",
+ "compressible": "2.0.12",
+ "debug": "2.6.9",
+ "on-headers": "1.0.1",
+ "safe-buffer": "5.1.1",
+ "vary": "1.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
+ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3",
+ "typedarray": "0.0.6"
+ }
+ },
+ "concat-with-sourcemaps": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.0.5.tgz",
+ "integrity": "sha512-YtnS0VEY+e2Khzsey/6mra9EoM6h/5gxaC0e3mcHpA5yfDxafhygytNmcJWodvUgyXzSiL5MSkPO6bQGgfliHw==",
+ "dev": true,
+ "requires": {
+ "source-map": "0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "configstore": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz",
+ "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=",
+ "dev": true,
+ "requires": {
+ "dot-prop": "3.0.0",
+ "graceful-fs": "4.1.11",
+ "mkdirp": "0.5.1",
+ "object-assign": "4.1.1",
+ "os-tmpdir": "1.0.2",
+ "osenv": "0.1.4",
+ "uuid": "2.0.3",
+ "write-file-atomic": "1.3.4",
+ "xdg-basedir": "2.0.0"
+ }
+ },
+ "content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+ "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
+ "dev": true
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz",
+ "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=",
+ "dev": true
+ },
+ "cookie": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
+ "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
+ "dev": true
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+ "dev": true
+ },
+ "core-js": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz",
+ "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "crc": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz",
+ "integrity": "sha1-XZyPt3okXNXsopHl0tAFM0urAII=",
+ "dev": true
+ },
+ "crc32-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz",
+ "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=",
+ "dev": true,
+ "requires": {
+ "crc": "3.5.0",
+ "readable-stream": "2.3.3"
+ },
+ "dependencies": {
+ "crc": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz",
+ "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=",
+ "dev": true
+ }
+ }
+ },
+ "create-error-class": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
+ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
+ "dev": true,
+ "requires": {
+ "capture-stack-trace": "1.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "4.1.1",
+ "shebang-command": "1.2.0",
+ "which": "1.3.0"
+ }
+ },
+ "crypt": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
+ "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=",
+ "dev": true
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+ "dev": true,
+ "requires": {
+ "boom": "2.10.1"
+ }
+ },
+ "crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+ "dev": true,
+ "optional": true
+ },
+ "css": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz",
+ "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "source-map": "0.1.43",
+ "source-map-resolve": "0.3.1",
+ "urix": "0.1.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.1.43",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
+ "dev": true,
+ "requires": {
+ "amdefine": "1.0.1"
+ }
+ }
+ }
+ },
+ "cssbeautify": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/cssbeautify/-/cssbeautify-0.3.1.tgz",
+ "integrity": "sha1-Et0fc0A1wub6ymfcvc73TkKBE5c=",
+ "dev": true
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "1.0.2"
+ }
+ },
+ "cycle": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
+ "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=",
+ "dev": true
+ },
+ "d": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
+ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
+ "dev": true,
+ "requires": {
+ "es5-ext": "0.10.38"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "dateformat": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz",
+ "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=",
+ "dev": true
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "debug-fabulous": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.0.0.tgz",
+ "integrity": "sha512-dsd50qQ1atDeurcxL7XOjPp4nZCGZzWIONDujDXzl1atSyC3hMbZD+v6440etw+Vt0Pr8ce4TQzHfX3KZM05Mw==",
+ "dev": true,
+ "requires": {
+ "debug": "3.1.0",
+ "memoizee": "0.4.11",
+ "object-assign": "4.1.1"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "deep-eql": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
+ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
+ "dev": true,
+ "requires": {
+ "type-detect": "4.0.7"
+ }
+ },
+ "deep-extend": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz",
+ "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=",
+ "dev": true
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "defaults": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
+ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+ "dev": true,
+ "requires": {
+ "clone": "1.0.2"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz",
+ "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=",
+ "dev": true
+ }
+ }
+ },
+ "del": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
+ "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
+ "dev": true,
+ "requires": {
+ "globby": "6.1.0",
+ "is-path-cwd": "1.0.0",
+ "is-path-in-cwd": "1.0.0",
+ "p-map": "1.2.0",
+ "pify": "3.0.0",
+ "rimraf": "2.6.2"
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "dev": true
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+ "dev": true
+ },
+ "deprecated": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz",
+ "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=",
+ "dev": true
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+ "dev": true
+ },
+ "detect-file": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz",
+ "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=",
+ "dev": true,
+ "requires": {
+ "fs-exists-sync": "0.1.0"
+ }
+ },
+ "detect-indent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
+ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+ "dev": true,
+ "requires": {
+ "repeating": "2.0.1"
+ }
+ },
+ "detect-newline": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
+ "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=",
+ "dev": true
+ },
+ "detect-node": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz",
+ "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=",
+ "dev": true
+ },
+ "dicer": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz",
+ "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.1.14",
+ "streamsearch": "0.1.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "diff": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz",
+ "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=",
+ "dev": true
+ },
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "2.0.2"
+ }
+ },
+ "dom-urls": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/dom-urls/-/dom-urls-1.1.0.tgz",
+ "integrity": "sha1-AB3fgWKM0ecGElxxdvU8zsVdkY4=",
+ "dev": true,
+ "requires": {
+ "urijs": "1.19.0"
+ }
+ },
+ "dom5": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/dom5/-/dom5-2.3.0.tgz",
+ "integrity": "sha1-+CBJdb0NrLvltYqKk//B/tD/zSo=",
+ "dev": true,
+ "requires": {
+ "@types/clone": "0.1.30",
+ "@types/node": "6.0.96",
+ "@types/parse5": "2.2.34",
+ "clone": "2.1.1",
+ "parse5": "2.2.3"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "6.0.96",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.96.tgz",
+ "integrity": "sha512-fsOOY6tMQ3jCB2wD51XFDmmpgm4wVKkJECdcVRqapbJEa7awJDcr+SaH8toz+4r4KW8YQ3M7ybXMoSDo1QGewA==",
+ "dev": true
+ }
+ }
+ },
+ "dot-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
+ "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
+ "dev": true,
+ "requires": {
+ "is-obj": "1.0.1"
+ }
+ },
+ "duplexer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
+ "dev": true
+ },
+ "duplexer2": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
+ "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.1.14"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "duplexer3": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
+ "dev": true,
+ "optional": true
+ },
+ "duplexify": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.3.tgz",
+ "integrity": "sha512-g8ID9OroF9hKt2POf8YLayy+9594PzmM3scI00/uBXocX3TWNgoB67hjzkFe9ITAbQOne/lLdBxHXvYUM4ZgGA==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "1.4.1",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3",
+ "stream-shift": "1.0.0"
+ },
+ "dependencies": {
+ "end-of-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0"
+ }
+ }
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
+ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "0.1.1"
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+ "dev": true
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+ "dev": true
+ },
+ "end-of-stream": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz",
+ "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=",
+ "dev": true,
+ "requires": {
+ "once": "1.3.3"
+ },
+ "dependencies": {
+ "once": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
+ "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ }
+ }
+ },
+ "engine.io": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.4.tgz",
+ "integrity": "sha1-PQIRtwpVLOhB/8fahiezAamkFi4=",
+ "dev": true,
+ "requires": {
+ "accepts": "1.3.3",
+ "base64id": "1.0.0",
+ "cookie": "0.3.1",
+ "debug": "2.6.9",
+ "engine.io-parser": "2.1.2",
+ "uws": "0.14.5",
+ "ws": "3.3.3"
+ },
+ "dependencies": {
+ "accepts": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
+ "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
+ "dev": true,
+ "requires": {
+ "mime-types": "2.1.17",
+ "negotiator": "0.6.1"
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "engine.io-client": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.4.tgz",
+ "integrity": "sha1-T88TcLRxY70s6b4nM5ckMDUNTqE=",
+ "dev": true,
+ "requires": {
+ "component-emitter": "1.2.1",
+ "component-inherit": "0.0.3",
+ "debug": "2.6.9",
+ "engine.io-parser": "2.1.2",
+ "has-cors": "1.1.0",
+ "indexof": "0.0.1",
+ "parseqs": "0.0.5",
+ "parseuri": "0.0.5",
+ "ws": "3.3.3",
+ "xmlhttprequest-ssl": "1.5.5",
+ "yeast": "0.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "engine.io-parser": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz",
+ "integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==",
+ "dev": true,
+ "requires": {
+ "after": "0.8.2",
+ "arraybuffer.slice": "0.0.7",
+ "base64-arraybuffer": "0.1.5",
+ "blob": "0.0.4",
+ "has-binary2": "1.0.2"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "0.2.1"
+ }
+ },
+ "es5-ext": {
+ "version": "0.10.38",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.38.tgz",
+ "integrity": "sha512-jCMyePo7AXbUESwbl8Qi01VSH2piY9s/a3rSU/5w/MlTIx8HPL1xn2InGN8ejt/xulcJgnTO7vqNtOAxzYd2Kg==",
+ "dev": true,
+ "requires": {
+ "es6-iterator": "2.0.3",
+ "es6-symbol": "3.1.1"
+ }
+ },
+ "es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.38",
+ "es6-symbol": "3.1.1"
+ }
+ },
+ "es6-promise": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz",
+ "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==",
+ "dev": true
+ },
+ "es6-symbol": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
+ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.38"
+ }
+ },
+ "es6-weak-map": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
+ "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.38",
+ "es6-iterator": "2.0.3",
+ "es6-symbol": "3.1.1"
+ }
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "escodegen": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz",
+ "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==",
+ "dev": true,
+ "requires": {
+ "esprima": "3.1.3",
+ "estraverse": "4.2.0",
+ "esutils": "2.0.2",
+ "optionator": "0.8.2",
+ "source-map": "0.5.7"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
+ "dev": true
+ }
+ }
+ },
+ "eslint": {
+ "version": "4.19.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz",
+ "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==",
+ "dev": true,
+ "requires": {
+ "ajv": "5.5.2",
+ "babel-code-frame": "6.26.0",
+ "chalk": "2.3.0",
+ "concat-stream": "1.6.0",
+ "cross-spawn": "5.1.0",
+ "debug": "3.1.0",
+ "doctrine": "2.1.0",
+ "eslint-scope": "3.7.1",
+ "eslint-visitor-keys": "1.0.0",
+ "espree": "3.5.4",
+ "esquery": "1.0.0",
+ "esutils": "2.0.2",
+ "file-entry-cache": "2.0.0",
+ "functional-red-black-tree": "1.0.1",
+ "glob": "7.1.2",
+ "globals": "11.3.0",
+ "ignore": "3.3.7",
+ "imurmurhash": "0.1.4",
+ "inquirer": "3.3.0",
+ "is-resolvable": "1.1.0",
+ "js-yaml": "3.11.0",
+ "json-stable-stringify-without-jsonify": "1.0.1",
+ "levn": "0.3.0",
+ "lodash": "4.17.4",
+ "minimatch": "3.0.4",
+ "mkdirp": "0.5.1",
+ "natural-compare": "1.4.0",
+ "optionator": "0.8.2",
+ "path-is-inside": "1.0.2",
+ "pluralize": "7.0.0",
+ "progress": "2.0.0",
+ "regexpp": "1.0.1",
+ "require-uncached": "1.0.3",
+ "semver": "5.5.0",
+ "strip-ansi": "4.0.0",
+ "strip-json-comments": "2.0.1",
+ "table": "4.0.2",
+ "text-table": "0.2.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
+ "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==",
+ "dev": true
+ },
+ "espree": {
+ "version": "3.5.4",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
+ "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
+ "dev": true,
+ "requires": {
+ "acorn": "5.5.3",
+ "acorn-jsx": "3.0.1"
+ }
+ },
+ "globals": {
+ "version": "11.3.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz",
+ "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-scope": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
+ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
+ "dev": true,
+ "requires": {
+ "esrecurse": "4.2.1",
+ "estraverse": "4.2.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
+ "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
+ "dev": true
+ },
+ "espree": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz",
+ "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==",
+ "dev": true,
+ "requires": {
+ "acorn": "5.3.0",
+ "acorn-jsx": "3.0.1"
+ }
+ },
+ "esprima": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
+ "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
+ "dev": true
+ },
+ "esquery": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz",
+ "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=",
+ "dev": true,
+ "requires": {
+ "estraverse": "4.2.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "4.2.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ },
+ "estree-walker": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz",
+ "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+ "dev": true
+ },
+ "event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.38"
+ }
+ },
+ "event-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.1.7.tgz",
+ "integrity": "sha1-tMVAAS0P4UmEIPPYlGAI22OTw3o=",
+ "dev": true,
+ "requires": {
+ "duplexer": "0.1.1",
+ "from": "0.1.7",
+ "map-stream": "0.1.0",
+ "pause-stream": "0.0.11",
+ "split": "0.2.10",
+ "stream-combiner": "0.0.4",
+ "through": "2.3.8"
+ }
+ },
+ "eventemitter3": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz",
+ "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=",
+ "dev": true
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "cross-spawn": "5.1.0",
+ "get-stream": "3.0.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "dev": true,
+ "requires": {
+ "is-posix-bracket": "0.1.1"
+ }
+ },
+ "expand-range": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "dev": true,
+ "requires": {
+ "fill-range": "2.2.3"
+ }
+ },
+ "expand-tilde": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz",
+ "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=",
+ "dev": true,
+ "requires": {
+ "os-homedir": "1.0.2"
+ }
+ },
+ "express": {
+ "version": "4.16.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz",
+ "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=",
+ "dev": true,
+ "requires": {
+ "accepts": "1.3.4",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.18.2",
+ "content-disposition": "0.5.2",
+ "content-type": "1.0.4",
+ "cookie": "0.3.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "1.1.2",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "etag": "1.8.1",
+ "finalhandler": "1.1.0",
+ "fresh": "0.5.2",
+ "merge-descriptors": "1.0.1",
+ "methods": "1.1.2",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.2",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "2.0.2",
+ "qs": "6.5.1",
+ "range-parser": "1.2.0",
+ "safe-buffer": "5.1.1",
+ "send": "0.16.1",
+ "serve-static": "1.13.1",
+ "setprototypeof": "1.1.0",
+ "statuses": "1.3.1",
+ "type-is": "1.6.15",
+ "utils-merge": "1.0.1",
+ "vary": "1.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "send": {
+ "version": "0.16.1",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz",
+ "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "1.1.2",
+ "destroy": "1.0.4",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "etag": "1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "1.6.2",
+ "mime": "1.4.1",
+ "ms": "2.0.0",
+ "on-finished": "2.3.0",
+ "range-parser": "1.2.0",
+ "statuses": "1.3.1"
+ }
+ },
+ "setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+ "dev": true
+ },
+ "statuses": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
+ "dev": true
+ }
+ }
+ },
+ "extend": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+ "dev": true
+ },
+ "extend-shallow": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
+ "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
+ "dev": true,
+ "requires": {
+ "kind-of": "1.1.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
+ "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=",
+ "dev": true
+ }
+ }
+ },
+ "external-editor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz",
+ "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==",
+ "dev": true,
+ "requires": {
+ "chardet": "0.4.2",
+ "iconv-lite": "0.4.19",
+ "tmp": "0.0.33"
+ }
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+ "dev": true
+ },
+ "eyes": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
+ "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=",
+ "dev": true
+ },
+ "fancy-log": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz",
+ "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "time-stamp": "1.1.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "fast-deep-equal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "fd-slicer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
+ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "pend": "1.2.0"
+ }
+ },
+ "feature-detect-es6": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/feature-detect-es6/-/feature-detect-es6-1.4.0.tgz",
+ "integrity": "sha512-7OnRV38WLydGuGcdm/fGk2SG9uo5ljslBSbPhCfEW5Gl0lX/IliaAVXYiYUBcI0UHTbepqO4T1SkJ74K8gtcDg==",
+ "dev": true,
+ "requires": {
+ "array-back": "1.0.4"
+ }
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "1.0.5"
+ }
+ },
+ "file-entry-cache": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
+ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
+ "dev": true,
+ "requires": {
+ "flat-cache": "1.3.0",
+ "object-assign": "4.1.1"
+ }
+ },
+ "filename-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
+ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
+ "dev": true,
+ "requires": {
+ "is-number": "2.1.0",
+ "isobject": "2.1.0",
+ "randomatic": "1.1.7",
+ "repeat-element": "1.1.2",
+ "repeat-string": "1.6.1"
+ }
+ },
+ "filled-array": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz",
+ "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=",
+ "dev": true
+ },
+ "finalhandler": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
+ "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.2",
+ "statuses": "1.3.1",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "statuses": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
+ "dev": true
+ }
+ }
+ },
+ "find-index": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz",
+ "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=",
+ "dev": true
+ },
+ "find-port": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/find-port/-/find-port-1.0.1.tgz",
+ "integrity": "sha1-2whKbL+ZVk2Zhprnn73s9m6KGFw=",
+ "dev": true,
+ "requires": {
+ "async": "0.2.10"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
+ "dev": true
+ }
+ }
+ },
+ "find-replace": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz",
+ "integrity": "sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A=",
+ "dev": true,
+ "requires": {
+ "array-back": "1.0.4",
+ "test-value": "2.1.0"
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "findup-sync": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz",
+ "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=",
+ "dev": true,
+ "requires": {
+ "detect-file": "0.1.0",
+ "is-glob": "2.0.1",
+ "micromatch": "2.3.11",
+ "resolve-dir": "0.1.1"
+ }
+ },
+ "fined": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz",
+ "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "2.0.2",
+ "is-plain-object": "2.0.4",
+ "object.defaults": "1.1.0",
+ "object.pick": "1.3.0",
+ "parse-filepath": "1.0.1"
+ },
+ "dependencies": {
+ "expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "1.0.1"
+ }
+ }
+ }
+ },
+ "first-chunk-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz",
+ "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=",
+ "dev": true
+ },
+ "flagged-respawn": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz",
+ "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=",
+ "dev": true
+ },
+ "flat-cache": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
+ "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=",
+ "dev": true,
+ "requires": {
+ "circular-json": "0.3.3",
+ "del": "2.2.2",
+ "graceful-fs": "4.1.11",
+ "write": "0.2.1"
+ },
+ "dependencies": {
+ "del": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
+ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
+ "dev": true,
+ "requires": {
+ "globby": "5.0.0",
+ "is-path-cwd": "1.0.0",
+ "is-path-in-cwd": "1.0.0",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "rimraf": "2.6.2"
+ }
+ },
+ "globby": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
+ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
+ "dev": true,
+ "requires": {
+ "array-union": "1.0.2",
+ "arrify": "1.0.1",
+ "glob": "7.1.2",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "dev": true,
+ "requires": {
+ "for-in": "1.0.2"
+ }
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
+ "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+ "dev": true,
+ "requires": {
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.5",
+ "mime-types": "2.1.17"
+ }
+ },
+ "formatio": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz",
+ "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=",
+ "dev": true,
+ "requires": {
+ "samsam": "1.3.0"
+ }
+ },
+ "forwarded": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
+ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
+ "dev": true
+ },
+ "freeport": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/freeport/-/freeport-1.0.5.tgz",
+ "integrity": "sha1-JV6KuEFwwzuoXZkOghrl9KGpvF0=",
+ "dev": true,
+ "optional": true
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+ "dev": true
+ },
+ "from": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
+ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
+ "dev": true
+ },
+ "fs-exists-sync": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz",
+ "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=",
+ "dev": true
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "gaze": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz",
+ "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=",
+ "dev": true,
+ "requires": {
+ "globule": "0.1.0"
+ }
+ },
+ "generate-function": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
+ "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
+ "dev": true
+ },
+ "generate-object-property": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
+ "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
+ "dev": true,
+ "requires": {
+ "is-property": "1.0.2"
+ }
+ },
+ "get-func-name": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
+ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
+ "dev": true
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "glob-base": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "dev": true,
+ "requires": {
+ "glob-parent": "2.0.0",
+ "is-glob": "2.0.1"
+ }
+ },
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "dev": true,
+ "requires": {
+ "is-glob": "2.0.1"
+ }
+ },
+ "glob-stream": {
+ "version": "3.1.18",
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz",
+ "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=",
+ "dev": true,
+ "requires": {
+ "glob": "4.5.3",
+ "glob2base": "0.0.12",
+ "minimatch": "2.0.10",
+ "ordered-read-streams": "0.1.0",
+ "through2": "0.6.5",
+ "unique-stream": "1.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz",
+ "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=",
+ "dev": true,
+ "requires": {
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "2.0.10",
+ "once": "1.4.0"
+ }
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
+ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.1"
+ }
+ }
+ }
+ },
+ "glob-watcher": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz",
+ "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=",
+ "dev": true,
+ "requires": {
+ "gaze": "0.5.2"
+ }
+ },
+ "glob2base": {
+ "version": "0.0.12",
+ "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz",
+ "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=",
+ "dev": true,
+ "requires": {
+ "find-index": "0.1.1"
+ }
+ },
+ "global-dirs": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ini": "1.3.4"
+ }
+ },
+ "global-modules": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz",
+ "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=",
+ "dev": true,
+ "requires": {
+ "global-prefix": "0.1.5",
+ "is-windows": "0.2.0"
+ }
+ },
+ "global-prefix": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz",
+ "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "1.0.1",
+ "ini": "1.3.4",
+ "is-windows": "0.2.0",
+ "which": "1.3.0"
+ }
+ },
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+ "dev": true
+ },
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+ "dev": true,
+ "requires": {
+ "array-union": "1.0.2",
+ "glob": "7.1.2",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "globule": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz",
+ "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=",
+ "dev": true,
+ "requires": {
+ "glob": "3.1.21",
+ "lodash": "1.0.2",
+ "minimatch": "0.2.14"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "3.1.21",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
+ "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "1.2.3",
+ "inherits": "1.0.2",
+ "minimatch": "0.2.14"
+ }
+ },
+ "graceful-fs": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
+ "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
+ "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz",
+ "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
+ "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "2.7.3",
+ "sigmund": "1.0.1"
+ }
+ }
+ }
+ },
+ "glogg": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz",
+ "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=",
+ "dev": true,
+ "requires": {
+ "sparkles": "1.0.0"
+ }
+ },
+ "google-closure-compiler": {
+ "version": "20171203.0.0",
+ "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20171203.0.0.tgz",
+ "integrity": "sha1-gpW5QFo145HB2I0IJYBo4x0TEaE=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "vinyl": "2.1.0",
+ "vinyl-sourcemaps-apply": "0.2.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "got": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz",
+ "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=",
+ "dev": true,
+ "requires": {
+ "create-error-class": "3.0.2",
+ "duplexer2": "0.1.4",
+ "is-redirect": "1.0.0",
+ "is-retry-allowed": "1.1.0",
+ "is-stream": "1.1.0",
+ "lowercase-keys": "1.0.0",
+ "node-status-codes": "1.0.0",
+ "object-assign": "4.1.1",
+ "parse-json": "2.2.0",
+ "pinkie-promise": "2.0.1",
+ "read-all-stream": "3.1.0",
+ "readable-stream": "2.3.3",
+ "timed-out": "3.1.3",
+ "unzip-response": "1.0.2",
+ "url-parse-lax": "1.0.0"
+ },
+ "dependencies": {
+ "duplexer2": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
+ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.3.3"
+ }
+ }
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "graceful-readlink": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
+ "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
+ "dev": true
+ },
+ "growl": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz",
+ "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=",
+ "dev": true
+ },
+ "gulp": {
+ "version": "3.9.1",
+ "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz",
+ "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=",
+ "dev": true,
+ "requires": {
+ "archy": "1.0.0",
+ "chalk": "1.1.3",
+ "deprecated": "0.0.1",
+ "gulp-util": "3.0.8",
+ "interpret": "1.0.4",
+ "liftoff": "2.3.0",
+ "minimist": "1.2.0",
+ "orchestrator": "0.3.8",
+ "pretty-hrtime": "1.0.3",
+ "semver": "4.3.6",
+ "tildify": "1.2.0",
+ "v8flags": "2.1.1",
+ "vinyl-fs": "0.3.14"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "semver": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
+ "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "gulp-add-src": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/gulp-add-src/-/gulp-add-src-0.2.0.tgz",
+ "integrity": "sha1-nhApRhn5Gg5/QhfE9eUYQbzb7xc=",
+ "dev": true,
+ "requires": {
+ "event-stream": "3.1.7",
+ "streamqueue": "0.1.3",
+ "through2": "0.4.2",
+ "vinyl-fs": "0.3.14"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "through2": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz",
+ "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.0.34",
+ "xtend": "2.1.2"
+ }
+ },
+ "xtend": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
+ "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
+ "dev": true,
+ "requires": {
+ "object-keys": "0.4.0"
+ }
+ }
+ }
+ },
+ "gulp-header": {
+ "version": "1.8.12",
+ "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz",
+ "integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==",
+ "dev": true,
+ "requires": {
+ "concat-with-sourcemaps": "1.0.5",
+ "lodash.template": "4.4.0",
+ "through2": "2.0.3"
+ },
+ "dependencies": {
+ "lodash.template": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz",
+ "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.templatesettings": "4.1.0"
+ }
+ },
+ "lodash.templatesettings": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz",
+ "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "3.0.0"
+ }
+ }
+ }
+ },
+ "gulp-rename": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz",
+ "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=",
+ "dev": true
+ },
+ "gulp-sourcemaps": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-2.6.4.tgz",
+ "integrity": "sha1-y7IAhFCxvM5s0jv5gze+dRv24wo=",
+ "dev": true,
+ "requires": {
+ "@gulp-sourcemaps/identity-map": "1.0.1",
+ "@gulp-sourcemaps/map-sources": "1.0.0",
+ "acorn": "5.3.0",
+ "convert-source-map": "1.5.0",
+ "css": "2.2.1",
+ "debug-fabulous": "1.0.0",
+ "detect-newline": "2.1.0",
+ "graceful-fs": "4.1.11",
+ "source-map": "0.6.1",
+ "strip-bom-string": "1.0.0",
+ "through2": "2.0.3"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "gulp-util": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz",
+ "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=",
+ "dev": true,
+ "requires": {
+ "array-differ": "1.0.0",
+ "array-uniq": "1.0.3",
+ "beeper": "1.1.1",
+ "chalk": "1.1.3",
+ "dateformat": "2.2.0",
+ "fancy-log": "1.3.0",
+ "gulplog": "1.0.0",
+ "has-gulplog": "0.1.0",
+ "lodash._reescape": "3.0.0",
+ "lodash._reevaluate": "3.0.0",
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.template": "3.6.2",
+ "minimist": "1.2.0",
+ "multipipe": "0.1.2",
+ "object-assign": "3.0.0",
+ "replace-ext": "0.0.1",
+ "through2": "2.0.3",
+ "vinyl": "0.5.3"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "clone": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz",
+ "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=",
+ "dev": true
+ },
+ "clone-stats": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
+ "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
+ "dev": true
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
+ "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
+ "dev": true
+ },
+ "replace-ext": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
+ "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "vinyl": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
+ "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
+ "dev": true,
+ "requires": {
+ "clone": "1.0.2",
+ "clone-stats": "0.0.1",
+ "replace-ext": "0.0.1"
+ }
+ }
+ }
+ },
+ "gulplog": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
+ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
+ "dev": true,
+ "requires": {
+ "glogg": "1.0.0"
+ }
+ },
+ "handle-thing": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz",
+ "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
+ "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "commander": "2.9.0",
+ "is-my-json-valid": "2.17.1",
+ "pinkie-promise": "2.0.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "has-binary2": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.2.tgz",
+ "integrity": "sha1-6D26SfC5vk0CbSc2U1DZ8D9Uvpg=",
+ "dev": true,
+ "requires": {
+ "isarray": "2.0.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
+ "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
+ "dev": true
+ }
+ }
+ },
+ "has-color": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz",
+ "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=",
+ "dev": true
+ },
+ "has-cors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
+ "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "has-gulplog": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz",
+ "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
+ "dev": true,
+ "requires": {
+ "sparkles": "1.0.0"
+ }
+ },
+ "hawk": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+ "dev": true,
+ "requires": {
+ "boom": "2.10.1",
+ "cryptiles": "2.0.5",
+ "hoek": "2.16.3",
+ "sntp": "1.0.9"
+ }
+ },
+ "he": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
+ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
+ "dev": true
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+ "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
+ "dev": true
+ },
+ "home-or-tmp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
+ "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
+ "dev": true,
+ "requires": {
+ "os-homedir": "1.0.2",
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "homedir-polyfill": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
+ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
+ "dev": true,
+ "requires": {
+ "parse-passwd": "1.0.0"
+ }
+ },
+ "hosted-git-info": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
+ "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
+ "dev": true
+ },
+ "hpack.js": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
+ "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "obuf": "1.1.1",
+ "readable-stream": "2.3.3",
+ "wbuf": "1.7.2"
+ }
+ },
+ "http-deceiver": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
+ "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+ "dev": true
+ },
+ "http-errors": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
+ "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
+ "dev": true,
+ "requires": {
+ "depd": "1.1.1",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.0.3",
+ "statuses": "1.4.0"
+ },
+ "dependencies": {
+ "depd": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
+ "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
+ "dev": true
+ }
+ }
+ },
+ "http-proxy": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz",
+ "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=",
+ "dev": true,
+ "requires": {
+ "eventemitter3": "1.2.0",
+ "requires-port": "1.0.0"
+ }
+ },
+ "http-proxy-middleware": {
+ "version": "0.17.4",
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz",
+ "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=",
+ "dev": true,
+ "requires": {
+ "http-proxy": "1.16.2",
+ "is-glob": "3.1.0",
+ "lodash": "4.17.4",
+ "micromatch": "2.3.11"
+ },
+ "dependencies": {
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ }
+ }
+ },
+ "http-signature": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+ "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "0.2.0",
+ "jsprim": "1.4.1",
+ "sshpk": "1.13.1"
+ }
+ },
+ "https-proxy-agent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz",
+ "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "agent-base": "2.1.1",
+ "debug": "2.6.9",
+ "extend": "3.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
+ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz",
+ "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==",
+ "dev": true
+ },
+ "import-lazy": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+ "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
+ "dev": true,
+ "optional": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "requires": {
+ "repeating": "2.0.1"
+ }
+ },
+ "indexof": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz",
+ "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=",
+ "dev": true
+ },
+ "inquirer": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
+ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "3.0.0",
+ "chalk": "2.3.0",
+ "cli-cursor": "2.1.0",
+ "cli-width": "2.2.0",
+ "external-editor": "2.1.0",
+ "figures": "2.0.0",
+ "lodash": "4.17.4",
+ "mute-stream": "0.0.7",
+ "run-async": "2.3.0",
+ "rx-lite": "4.0.8",
+ "rx-lite-aggregates": "4.0.8",
+ "string-width": "2.1.1",
+ "strip-ansi": "4.0.0",
+ "through": "2.3.8"
+ }
+ },
+ "interpret": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz",
+ "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=",
+ "dev": true
+ },
+ "invariant": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz",
+ "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=",
+ "dev": true,
+ "requires": {
+ "loose-envify": "1.3.1"
+ }
+ },
+ "ipaddr.js": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz",
+ "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=",
+ "dev": true
+ },
+ "is-absolute": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz",
+ "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=",
+ "dev": true,
+ "requires": {
+ "is-relative": "0.2.1",
+ "is-windows": "0.2.0"
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-buffer": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
+ "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+ "dev": true
+ },
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+ "dev": true,
+ "requires": {
+ "builtin-modules": "1.1.1"
+ }
+ },
+ "is-dotfile": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+ "dev": true
+ },
+ "is-equal-shallow": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "dev": true,
+ "requires": {
+ "is-primitive": "2.0.0"
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "1.0.0"
+ }
+ },
+ "is-installed-globally": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "global-dirs": "0.1.1",
+ "is-path-inside": "1.0.0"
+ }
+ },
+ "is-my-json-valid": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz",
+ "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==",
+ "dev": true,
+ "requires": {
+ "generate-function": "2.0.0",
+ "generate-object-property": "1.2.0",
+ "jsonpointer": "4.0.1",
+ "xtend": "4.0.1"
+ }
+ },
+ "is-npm": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+ "dev": true
+ },
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "dev": true
+ },
+ "is-path-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
+ "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz",
+ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=",
+ "dev": true,
+ "requires": {
+ "is-path-inside": "1.0.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz",
+ "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "1.0.2"
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "is-posix-bracket": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+ "dev": true
+ },
+ "is-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+ "dev": true
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
+ },
+ "is-property": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
+ "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
+ "dev": true
+ },
+ "is-redirect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
+ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
+ "dev": true
+ },
+ "is-relative": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz",
+ "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=",
+ "dev": true,
+ "requires": {
+ "is-unc-path": "0.1.2"
+ }
+ },
+ "is-resolvable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
+ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
+ "dev": true
+ },
+ "is-retry-allowed": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
+ "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "is-unc-path": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz",
+ "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=",
+ "dev": true,
+ "requires": {
+ "unc-path-regex": "0.1.2"
+ }
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "is-valid-glob": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz",
+ "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=",
+ "dev": true
+ },
+ "is-windows": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz",
+ "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
+ "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
+ "dev": true,
+ "requires": {
+ "argparse": "1.0.10",
+ "esprima": "4.0.0"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true,
+ "optional": true
+ },
+ "jsesc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
+ "dev": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+ "dev": true
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+ "dev": true,
+ "requires": {
+ "jsonify": "0.0.0"
+ }
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
+ },
+ "json3": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
+ "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
+ "dev": true
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+ "dev": true
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true
+ },
+ "jsonpointer": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
+ "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
+ "dev": true
+ },
+ "jsonschema": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.2.tgz",
+ "integrity": "sha512-iX5OFQ6yx9NgbHCwse51ohhKgLuLL7Z5cNOeZOPIlDUtAMrxlruHLzVZxbltdHE5mEDXN+75oFOwq6Gn0MZwsA==",
+ "dev": true
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.5"
+ }
+ },
+ "latest-version": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz",
+ "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=",
+ "dev": true,
+ "requires": {
+ "package-json": "2.4.0"
+ }
+ },
+ "launchpad": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/launchpad/-/launchpad-0.7.0.tgz",
+ "integrity": "sha1-9CfTwOFehp7hVROCi6/vwW+ce8M=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "async": "2.6.0",
+ "browserstack": "1.5.0",
+ "debug": "2.6.9",
+ "plist": "2.1.0",
+ "q": "1.5.1",
+ "underscore": "1.8.3"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "underscore": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
+ "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "lazy-req": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz",
+ "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=",
+ "dev": true
+ },
+ "lazystream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
+ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.3.3"
+ }
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2"
+ }
+ },
+ "liftoff": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz",
+ "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=",
+ "dev": true,
+ "requires": {
+ "extend": "3.0.1",
+ "findup-sync": "0.4.3",
+ "fined": "1.1.0",
+ "flagged-respawn": "0.3.2",
+ "lodash.isplainobject": "4.0.6",
+ "lodash.isstring": "4.0.1",
+ "lodash.mapvalues": "4.6.0",
+ "rechoir": "0.6.2",
+ "resolve": "1.4.0"
+ }
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "strip-bom": "2.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "0.2.1"
+ }
+ }
+ }
+ },
+ "lodash": {
+ "version": "4.17.4",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+ "dev": true
+ },
+ "lodash._baseassign": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz",
+ "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=",
+ "dev": true,
+ "requires": {
+ "lodash._basecopy": "3.0.1",
+ "lodash.keys": "3.1.2"
+ }
+ },
+ "lodash._basecopy": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
+ "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
+ "dev": true
+ },
+ "lodash._basecreate": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz",
+ "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=",
+ "dev": true
+ },
+ "lodash._basetostring": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz",
+ "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=",
+ "dev": true
+ },
+ "lodash._basevalues": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz",
+ "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=",
+ "dev": true
+ },
+ "lodash._getnative": {
+ "version": "3.9.1",
+ "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
+ "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
+ "dev": true
+ },
+ "lodash._isiterateecall": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
+ "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
+ "dev": true
+ },
+ "lodash._reescape": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz",
+ "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=",
+ "dev": true
+ },
+ "lodash._reevaluate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz",
+ "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=",
+ "dev": true
+ },
+ "lodash._reinterpolate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
+ "dev": true
+ },
+ "lodash._root": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
+ "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
+ "dev": true
+ },
+ "lodash.create": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz",
+ "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=",
+ "dev": true,
+ "requires": {
+ "lodash._baseassign": "3.2.0",
+ "lodash._basecreate": "3.0.3",
+ "lodash._isiterateecall": "3.0.9"
+ }
+ },
+ "lodash.defaults": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
+ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
+ "dev": true
+ },
+ "lodash.escape": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
+ "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
+ "dev": true,
+ "requires": {
+ "lodash._root": "3.0.1"
+ }
+ },
+ "lodash.isarguments": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
+ "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
+ "dev": true
+ },
+ "lodash.isarray": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
+ "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
+ "dev": true
+ },
+ "lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
+ "dev": true
+ },
+ "lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
+ "dev": true
+ },
+ "lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=",
+ "dev": true
+ },
+ "lodash.keys": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
+ "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
+ "dev": true,
+ "requires": {
+ "lodash._getnative": "3.9.1",
+ "lodash.isarguments": "3.1.0",
+ "lodash.isarray": "3.0.4"
+ }
+ },
+ "lodash.mapvalues": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz",
+ "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=",
+ "dev": true
+ },
+ "lodash.restparam": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
+ "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=",
+ "dev": true
+ },
+ "lodash.some": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
+ "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=",
+ "dev": true
+ },
+ "lodash.template": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
+ "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
+ "dev": true,
+ "requires": {
+ "lodash._basecopy": "3.0.1",
+ "lodash._basetostring": "3.0.1",
+ "lodash._basevalues": "3.0.0",
+ "lodash._isiterateecall": "3.0.9",
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.escape": "3.2.0",
+ "lodash.keys": "3.1.2",
+ "lodash.restparam": "3.6.1",
+ "lodash.templatesettings": "3.1.1"
+ }
+ },
+ "lodash.templatesettings": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
+ "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.escape": "3.2.0"
+ }
+ },
+ "lolex": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz",
+ "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=",
+ "dev": true
+ },
+ "loose-envify": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
+ "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
+ "dev": true,
+ "requires": {
+ "js-tokens": "3.0.2"
+ }
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "0.4.1",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "lowercase-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
+ "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
+ "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "1.0.2",
+ "yallist": "2.1.2"
+ }
+ },
+ "lru-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
+ "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=",
+ "dev": true,
+ "requires": {
+ "es5-ext": "0.10.38"
+ }
+ },
+ "make-dir": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz",
+ "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "pify": "3.0.0"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
+ "map-stream": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
+ "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=",
+ "dev": true
+ },
+ "md5": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz",
+ "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=",
+ "dev": true,
+ "requires": {
+ "charenc": "0.0.2",
+ "crypt": "0.0.2",
+ "is-buffer": "1.1.5"
+ }
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+ "dev": true
+ },
+ "memoizee": {
+ "version": "0.4.11",
+ "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.11.tgz",
+ "integrity": "sha1-vemBdmPJ5A/bKk6hw2cpYIeujI8=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.38",
+ "es6-weak-map": "2.0.2",
+ "event-emitter": "0.3.5",
+ "is-promise": "2.1.0",
+ "lru-queue": "0.1.0",
+ "next-tick": "1.0.0",
+ "timers-ext": "0.1.2"
+ }
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "2.1.0",
+ "decamelize": "1.2.0",
+ "loud-rejection": "1.6.0",
+ "map-obj": "1.0.1",
+ "minimist": "1.2.0",
+ "normalize-package-data": "2.4.0",
+ "object-assign": "4.1.1",
+ "read-pkg-up": "1.0.1",
+ "redent": "1.0.0",
+ "trim-newlines": "1.0.0"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ }
+ }
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+ "dev": true
+ },
+ "merge-stream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
+ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.3.3"
+ }
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "dev": true,
+ "requires": {
+ "arr-diff": "2.0.0",
+ "array-unique": "0.2.1",
+ "braces": "1.8.5",
+ "expand-brackets": "0.1.5",
+ "extglob": "0.3.2",
+ "filename-regex": "2.0.1",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1",
+ "kind-of": "3.2.2",
+ "normalize-path": "2.1.1",
+ "object.omit": "2.0.1",
+ "parse-glob": "3.0.4",
+ "regex-cache": "0.4.4"
+ }
+ },
+ "mime": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.30.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
+ "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.17",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
+ "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.30.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ },
+ "minimalistic-assert": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz",
+ "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.8"
+ }
+ },
+ "minimatch-all": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/minimatch-all/-/minimatch-all-1.1.0.tgz",
+ "integrity": "sha1-QMSWonouEo0Zv3WOdrsBoMcUV4c=",
+ "dev": true,
+ "requires": {
+ "minimatch": "3.0.4"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "mocha": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz",
+ "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==",
+ "dev": true,
+ "requires": {
+ "browser-stdout": "1.3.0",
+ "commander": "2.9.0",
+ "debug": "2.6.8",
+ "diff": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "glob": "7.1.1",
+ "growl": "1.9.2",
+ "he": "1.1.1",
+ "json3": "3.3.2",
+ "lodash.create": "3.1.1",
+ "mkdirp": "0.5.1",
+ "supports-color": "3.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.8",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+ "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
+ "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz",
+ "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=",
+ "dev": true,
+ "requires": {
+ "has-flag": "1.0.0"
+ }
+ }
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "multer": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/multer/-/multer-1.3.0.tgz",
+ "integrity": "sha1-CSsmcPaEb6SRSWXvyM+Uwg/sbNI=",
+ "dev": true,
+ "requires": {
+ "append-field": "0.1.0",
+ "busboy": "0.2.14",
+ "concat-stream": "1.6.0",
+ "mkdirp": "0.5.1",
+ "object-assign": "3.0.0",
+ "on-finished": "2.3.0",
+ "type-is": "1.6.15",
+ "xtend": "4.0.1"
+ },
+ "dependencies": {
+ "object-assign": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
+ "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
+ "dev": true
+ }
+ }
+ },
+ "multipipe": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz",
+ "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
+ "dev": true,
+ "requires": {
+ "duplexer2": "0.0.2"
+ }
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
+ },
+ "mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dev": true,
+ "requires": {
+ "any-promise": "1.3.0",
+ "object-assign": "4.1.1",
+ "thenify-all": "1.6.0"
+ }
+ },
+ "native-promise-only": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz",
+ "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=",
+ "dev": true
+ },
+ "natives": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz",
+ "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=",
+ "dev": true
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "negotiator": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+ "dev": true
+ },
+ "next-tick": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
+ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
+ "dev": true
+ },
+ "node-status-codes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz",
+ "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=",
+ "dev": true
+ },
+ "nodegit-promise": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/nodegit-promise/-/nodegit-promise-4.0.0.tgz",
+ "integrity": "sha1-VyKxhPLfcycWEGSnkdLoQskWezQ=",
+ "dev": true,
+ "requires": {
+ "asap": "2.0.6"
+ }
+ },
+ "nomnom": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz",
+ "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=",
+ "dev": true,
+ "requires": {
+ "chalk": "0.4.0",
+ "underscore": "1.6.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
+ "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
+ "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "1.0.0",
+ "has-color": "0.1.7",
+ "strip-ansi": "0.1.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
+ "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=",
+ "dev": true
+ }
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "2.5.0",
+ "is-builtin-module": "1.0.0",
+ "semver": "5.5.0",
+ "validate-npm-package-license": "3.0.1"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "1.1.0"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "path-key": "2.0.1"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+ "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "object-component": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
+ "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
+ "dev": true
+ },
+ "object-keys": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
+ "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
+ "dev": true
+ },
+ "object.defaults": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+ "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
+ "dev": true,
+ "requires": {
+ "array-each": "1.0.1",
+ "array-slice": "1.0.0",
+ "for-own": "1.0.0",
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "dev": true,
+ "requires": {
+ "for-in": "1.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "object.omit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "dev": true,
+ "requires": {
+ "for-own": "0.1.5",
+ "is-extendable": "0.1.1"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "obuf": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz",
+ "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=",
+ "dev": true
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "dev": true,
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
+ "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "1.2.0"
+ }
+ },
+ "opn": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-3.0.3.tgz",
+ "integrity": "sha1-ttmec5n3jWXDuq/+8fsojpuFJDo=",
+ "dev": true,
+ "requires": {
+ "object-assign": "4.1.1"
+ }
+ },
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "dev": true,
+ "requires": {
+ "deep-is": "0.1.3",
+ "fast-levenshtein": "2.0.6",
+ "levn": "0.3.0",
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2",
+ "wordwrap": "1.0.0"
+ }
+ },
+ "orchestrator": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz",
+ "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "0.1.5",
+ "sequencify": "0.0.7",
+ "stream-consume": "0.1.0"
+ }
+ },
+ "ordered-read-streams": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz",
+ "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=",
+ "dev": true
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "osenv": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz",
+ "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=",
+ "dev": true,
+ "requires": {
+ "os-homedir": "1.0.2",
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true,
+ "optional": true
+ },
+ "p-map": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
+ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
+ "dev": true
+ },
+ "package-json": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz",
+ "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=",
+ "dev": true,
+ "requires": {
+ "got": "5.7.1",
+ "registry-auth-token": "3.3.1",
+ "registry-url": "3.1.0",
+ "semver": "5.5.0"
+ }
+ },
+ "parse-filepath": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz",
+ "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=",
+ "dev": true,
+ "requires": {
+ "is-absolute": "0.2.6",
+ "map-cache": "0.2.2",
+ "path-root": "0.1.1"
+ }
+ },
+ "parse-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "dev": true,
+ "requires": {
+ "glob-base": "0.3.0",
+ "is-dotfile": "1.0.3",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1"
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.1"
+ }
+ },
+ "parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+ "dev": true
+ },
+ "parse5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-2.2.3.tgz",
+ "integrity": "sha1-DE/EHBAAxea5PUiwP4CDg3g06fY=",
+ "dev": true
+ },
+ "parseqs": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
+ "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
+ "dev": true,
+ "requires": {
+ "better-assert": "1.0.2"
+ }
+ },
+ "parseuri": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
+ "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
+ "dev": true,
+ "requires": {
+ "better-assert": "1.0.2"
+ }
+ },
+ "parseurl": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
+ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true,
+ "optional": true
+ },
+ "path-parse": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
+ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
+ "dev": true
+ },
+ "path-root": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+ "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
+ "dev": true,
+ "requires": {
+ "path-root-regex": "0.1.2"
+ }
+ },
+ "path-root-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
+ "dev": true
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+ "dev": true
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "pathval": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz",
+ "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=",
+ "dev": true
+ },
+ "pause-stream": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
+ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
+ "dev": true,
+ "requires": {
+ "through": "2.3.8"
+ }
+ },
+ "pem": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/pem/-/pem-1.12.3.tgz",
+ "integrity": "sha512-hT7GwvQL35+0iqgYUl8vn5I5pAVR0HcJas07TXL8bNaR4c5kAFRquk4ZqQk1F9YMcQOr6WjGdY5OnDC0RBnzig==",
+ "dev": true,
+ "requires": {
+ "md5": "2.2.1",
+ "os-tmpdir": "1.0.2",
+ "safe-buffer": "5.1.1",
+ "which": "1.3.0"
+ }
+ },
+ "pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+ "dev": true,
+ "optional": true
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "2.0.4"
+ }
+ },
+ "plist": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz",
+ "integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "base64-js": "1.2.0",
+ "xmlbuilder": "8.2.2",
+ "xmldom": "0.1.27"
+ }
+ },
+ "plugin-error": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
+ "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
+ "dev": true,
+ "requires": {
+ "ansi-cyan": "0.1.1",
+ "ansi-red": "0.1.1",
+ "arr-diff": "1.1.0",
+ "arr-union": "2.1.0",
+ "extend-shallow": "1.1.4"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
+ "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "1.1.0",
+ "array-slice": "0.2.3"
+ }
+ },
+ "array-slice": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
+ "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
+ "dev": true
+ }
+ }
+ },
+ "pluralize": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
+ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
+ "dev": true
+ },
+ "plylog": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/plylog/-/plylog-0.5.0.tgz",
+ "integrity": "sha1-yXbrodgNLdmRAF18EQ2vh0FUeI8=",
+ "dev": true,
+ "requires": {
+ "@types/node": "4.2.23",
+ "@types/winston": "2.3.7",
+ "winston": "2.4.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "4.2.23",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-4.2.23.tgz",
+ "integrity": "sha512-U6IchCNLRyswc9p6G6lxWlbE+KwAhZp6mGo6MD2yWpmFomhYmetK+c98OpKyvphNn04CU3aXeJrXdOqbXVTS/w==",
+ "dev": true
+ }
+ }
+ },
+ "polymer-analyzer": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/polymer-analyzer/-/polymer-analyzer-2.7.0.tgz",
+ "integrity": "sha512-yD5FYQ8thX/2vHTaEgTtCs/NSG3ko4VlEb0IjM/PFsu03lHNHnpadC1NGwKyvI9vOjcFhnw4mDEVW0lbxLo8Eg==",
+ "dev": true,
+ "requires": {
+ "@types/chai-subset": "1.3.1",
+ "@types/chalk": "0.4.31",
+ "@types/clone": "0.1.30",
+ "@types/cssbeautify": "0.3.1",
+ "@types/doctrine": "0.0.1",
+ "@types/escodegen": "0.0.2",
+ "@types/estraverse": "0.0.6",
+ "@types/estree": "0.0.37",
+ "@types/node": "6.0.96",
+ "@types/parse5": "2.2.34",
+ "chalk": "1.1.3",
+ "clone": "2.1.1",
+ "cssbeautify": "0.3.1",
+ "doctrine": "2.1.0",
+ "dom5": "2.3.0",
+ "escodegen": "1.9.0",
+ "espree": "3.5.2",
+ "estraverse": "4.2.0",
+ "jsonschema": "1.2.2",
+ "parse5": "2.2.3",
+ "shady-css-parser": "0.1.0",
+ "stable": "0.1.6",
+ "strip-indent": "2.0.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "6.0.96",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.96.tgz",
+ "integrity": "sha512-fsOOY6tMQ3jCB2wD51XFDmmpgm4wVKkJECdcVRqapbJEa7awJDcr+SaH8toz+4r4KW8YQ3M7ybXMoSDo1QGewA==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "polymer-build": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/polymer-build/-/polymer-build-2.1.1.tgz",
+ "integrity": "sha512-SW6gxS0UPz864jECKMXPEdtq3549xzludPAQpxEqeDz6pSAeY/AFDWRG78Gw+z+mS2KES16Wwkc9IdMagBj3FQ==",
+ "dev": true,
+ "requires": {
+ "@types/mz": "0.0.31",
+ "@types/node": "6.0.96",
+ "@types/parse5": "2.2.34",
+ "@types/vinyl": "2.0.2",
+ "@types/vinyl-fs": "0.0.28",
+ "dom5": "2.3.0",
+ "multipipe": "1.0.2",
+ "mz": "2.7.0",
+ "parse5": "2.2.3",
+ "plylog": "0.5.0",
+ "polymer-analyzer": "2.7.0",
+ "polymer-bundler": "3.1.1",
+ "polymer-project-config": "3.7.0",
+ "sw-precache": "5.2.0",
+ "vinyl": "1.2.0",
+ "vinyl-fs": "2.4.4"
+ },
+ "dependencies": {
+ "@types/mz": {
+ "version": "0.0.31",
+ "resolved": "https://registry.npmjs.org/@types/mz/-/mz-0.0.31.tgz",
+ "integrity": "sha1-pNgMCC/v5x5Ap8DwfR5lVbu8e1I=",
+ "dev": true,
+ "requires": {
+ "@types/node": "6.0.96"
+ }
+ },
+ "@types/node": {
+ "version": "6.0.96",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.96.tgz",
+ "integrity": "sha512-fsOOY6tMQ3jCB2wD51XFDmmpgm4wVKkJECdcVRqapbJEa7awJDcr+SaH8toz+4r4KW8YQ3M7ybXMoSDo1QGewA==",
+ "dev": true
+ },
+ "clone": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz",
+ "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=",
+ "dev": true
+ },
+ "clone-stats": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
+ "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
+ "dev": true
+ },
+ "duplexer2": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
+ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.3.3"
+ }
+ },
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true,
+ "requires": {
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "3.1.0",
+ "path-dirname": "1.0.2"
+ }
+ },
+ "glob-stream": {
+ "version": "5.3.5",
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz",
+ "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=",
+ "dev": true,
+ "requires": {
+ "extend": "3.0.1",
+ "glob": "5.0.15",
+ "glob-parent": "3.1.0",
+ "micromatch": "2.3.11",
+ "ordered-read-streams": "0.3.0",
+ "through2": "0.6.5",
+ "to-absolute-glob": "0.1.1",
+ "unique-stream": "2.2.1"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.1"
+ }
+ }
+ }
+ },
+ "gulp-sourcemaps": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz",
+ "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=",
+ "dev": true,
+ "requires": {
+ "convert-source-map": "1.5.0",
+ "graceful-fs": "4.1.11",
+ "strip-bom": "2.0.0",
+ "through2": "2.0.3",
+ "vinyl": "1.2.0"
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "2.1.1"
+ }
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "multipipe": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-1.0.2.tgz",
+ "integrity": "sha1-zBPv2DPJzamfIk+GhGG44aP9k50=",
+ "dev": true,
+ "requires": {
+ "duplexer2": "0.1.4",
+ "object-assign": "4.1.1"
+ }
+ },
+ "ordered-read-streams": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz",
+ "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=",
+ "dev": true,
+ "requires": {
+ "is-stream": "1.1.0",
+ "readable-stream": "2.3.3"
+ }
+ },
+ "replace-ext": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
+ "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "0.2.1"
+ }
+ },
+ "unique-stream": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz",
+ "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=",
+ "dev": true,
+ "requires": {
+ "json-stable-stringify": "1.0.1",
+ "through2-filter": "2.0.0"
+ }
+ },
+ "vinyl": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
+ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
+ "dev": true,
+ "requires": {
+ "clone": "1.0.3",
+ "clone-stats": "0.0.1",
+ "replace-ext": "0.0.1"
+ }
+ },
+ "vinyl-fs": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz",
+ "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=",
+ "dev": true,
+ "requires": {
+ "duplexify": "3.5.3",
+ "glob-stream": "5.3.5",
+ "graceful-fs": "4.1.11",
+ "gulp-sourcemaps": "1.6.0",
+ "is-valid-glob": "0.3.0",
+ "lazystream": "1.0.0",
+ "lodash.isequal": "4.5.0",
+ "merge-stream": "1.0.1",
+ "mkdirp": "0.5.1",
+ "object-assign": "4.1.1",
+ "readable-stream": "2.3.3",
+ "strip-bom": "2.0.0",
+ "strip-bom-stream": "1.0.0",
+ "through2": "2.0.3",
+ "through2-filter": "2.0.0",
+ "vali-date": "1.0.0",
+ "vinyl": "1.2.0"
+ }
+ }
+ }
+ },
+ "polymer-bundler": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/polymer-bundler/-/polymer-bundler-3.1.1.tgz",
+ "integrity": "sha512-a/MItYr/rTRZ8Ymj5npmoAAm89RC5hRh4yz8bs22GyMn+NlE7HqJ4EzLrPkyRWlOyBhbhYFPx2Zot8PlaWXvmQ==",
+ "dev": true,
+ "requires": {
+ "clone": "2.1.1",
+ "command-line-args": "3.0.5",
+ "command-line-usage": "3.0.8",
+ "dom5": "2.3.0",
+ "espree": "3.5.2",
+ "mkdirp": "0.5.1",
+ "parse5": "2.2.3",
+ "polymer-analyzer": "2.7.0",
+ "source-map": "0.5.7"
+ }
+ },
+ "polymer-project-config": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/polymer-project-config/-/polymer-project-config-3.7.0.tgz",
+ "integrity": "sha512-d3GTy/JRu05rlaaiLRTDgSU4ZbbS/KQiZ6NFIFWQCJytJ32EhDTl2rK10xsf2ll0G2c97FqFV67IsBRF0yXthg==",
+ "dev": true,
+ "requires": {
+ "@types/node": "6.0.96",
+ "jsonschema": "1.2.2",
+ "minimatch-all": "1.1.0",
+ "plylog": "0.5.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "6.0.96",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.96.tgz",
+ "integrity": "sha512-fsOOY6tMQ3jCB2wD51XFDmmpgm4wVKkJECdcVRqapbJEa7awJDcr+SaH8toz+4r4KW8YQ3M7ybXMoSDo1QGewA==",
+ "dev": true
+ }
+ }
+ },
+ "polyserve": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/polyserve/-/polyserve-0.23.0.tgz",
+ "integrity": "sha512-ijzCbFttKG1F0hMTWWIzMoo+sxsfpXctoHFigw2ViBcvUt/aUBfJCUTHPKHhi/3zAgtw5Ej3SgoIOY9LflpXAw==",
+ "dev": true,
+ "requires": {
+ "@types/assert": "0.0.29",
+ "@types/babel-core": "6.25.3",
+ "@types/babylon": "6.16.2",
+ "@types/compression": "0.0.33",
+ "@types/content-type": "1.1.2",
+ "@types/express": "4.11.0",
+ "@types/mime": "0.0.29",
+ "@types/mz": "0.0.29",
+ "@types/node": "8.5.9",
+ "@types/opn": "3.0.28",
+ "@types/parse5": "2.2.34",
+ "@types/pem": "1.9.3",
+ "@types/serve-static": "1.13.1",
+ "@types/spdy": "3.4.4",
+ "@types/ua-parser-js": "0.7.32",
+ "babel-core": "6.26.0",
+ "babel-plugin-transform-es2015-arrow-functions": "6.22.0",
+ "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0",
+ "babel-plugin-transform-es2015-block-scoping": "6.26.0",
+ "babel-plugin-transform-es2015-classes": "6.24.1",
+ "babel-plugin-transform-es2015-computed-properties": "6.24.1",
+ "babel-plugin-transform-es2015-destructuring": "6.23.0",
+ "babel-plugin-transform-es2015-duplicate-keys": "6.24.1",
+ "babel-plugin-transform-es2015-for-of": "6.23.0",
+ "babel-plugin-transform-es2015-function-name": "6.24.1",
+ "babel-plugin-transform-es2015-literals": "6.22.0",
+ "babel-plugin-transform-es2015-modules-amd": "6.24.1",
+ "babel-plugin-transform-es2015-object-super": "6.24.1",
+ "babel-plugin-transform-es2015-parameters": "6.24.1",
+ "babel-plugin-transform-es2015-shorthand-properties": "6.24.1",
+ "babel-plugin-transform-es2015-spread": "6.22.0",
+ "babel-plugin-transform-es2015-sticky-regex": "6.24.1",
+ "babel-plugin-transform-es2015-template-literals": "6.22.0",
+ "babel-plugin-transform-es2015-typeof-symbol": "6.23.0",
+ "babel-plugin-transform-es2015-unicode-regex": "6.24.1",
+ "babel-plugin-transform-regenerator": "6.26.0",
+ "babylon": "6.18.0",
+ "browser-capabilities": "0.2.2",
+ "command-line-args": "3.0.5",
+ "command-line-usage": "3.0.8",
+ "compression": "1.7.1",
+ "content-type": "1.0.4",
+ "dom5": "2.3.0",
+ "express": "4.16.2",
+ "find-port": "1.0.1",
+ "http-proxy-middleware": "0.17.4",
+ "lru-cache": "4.1.1",
+ "mime": "1.4.1",
+ "mz": "2.7.0",
+ "opn": "3.0.3",
+ "parse5": "2.2.3",
+ "pem": "1.12.3",
+ "polymer-build": "2.1.1",
+ "requirejs": "2.3.5",
+ "resolve": "1.4.0",
+ "send": "0.14.2",
+ "spdy": "3.4.7"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+ "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "dev": true,
+ "requires": {
+ "ms": "0.7.1"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
+ "dev": true
+ }
+ }
+ },
+ "etag": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz",
+ "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=",
+ "dev": true
+ },
+ "fresh": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz",
+ "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=",
+ "dev": true
+ },
+ "http-errors": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz",
+ "integrity": "sha1-eIwNLB3iyBuebowBhDtrl+uSB1A=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "setprototypeof": "1.0.2",
+ "statuses": "1.3.1"
+ }
+ },
+ "ms": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+ "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
+ "dev": true
+ },
+ "send": {
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.14.2.tgz",
+ "integrity": "sha1-ObBDiz9RC+Xcb2Z6EfcWiTaM3u8=",
+ "dev": true,
+ "requires": {
+ "debug": "2.2.0",
+ "depd": "1.1.2",
+ "destroy": "1.0.4",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "etag": "1.7.0",
+ "fresh": "0.3.0",
+ "http-errors": "1.5.1",
+ "mime": "1.3.4",
+ "ms": "0.7.2",
+ "on-finished": "2.3.0",
+ "range-parser": "1.2.0",
+ "statuses": "1.3.1"
+ },
+ "dependencies": {
+ "mime": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
+ "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=",
+ "dev": true
+ }
+ }
+ },
+ "setprototypeof": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz",
+ "integrity": "sha1-gaVSFB7BBLiOic44MQOtXGZWTQg=",
+ "dev": true
+ },
+ "statuses": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
+ "dev": true
+ }
+ }
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "prepend-http": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+ "dev": true
+ },
+ "preserve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+ "dev": true
+ },
+ "pretty-bytes": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz",
+ "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=",
+ "dev": true
+ },
+ "pretty-hrtime": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
+ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=",
+ "dev": true
+ },
+ "private": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz",
+ "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+ "dev": true
+ },
+ "progress": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
+ "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
+ "dev": true
+ },
+ "promisify-node": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/promisify-node/-/promisify-node-0.4.0.tgz",
+ "integrity": "sha1-MoA4dOxBF4TkeGwzmQKoeheaRpw=",
+ "dev": true,
+ "requires": {
+ "nodegit-promise": "4.0.0",
+ "object-assign": "4.1.1"
+ }
+ },
+ "proxy-addr": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz",
+ "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=",
+ "dev": true,
+ "requires": {
+ "forwarded": "0.1.2",
+ "ipaddr.js": "1.5.2"
+ }
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ },
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+ "dev": true,
+ "optional": true
+ },
+ "qs": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+ "dev": true
+ },
+ "randomatic": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
+ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
+ "dev": true,
+ "requires": {
+ "is-number": "3.0.0",
+ "kind-of": "4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.5"
+ }
+ }
+ }
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
+ "dev": true
+ },
+ "raw-body": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
+ "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
+ "dev": true,
+ "requires": {
+ "bytes": "3.0.0",
+ "http-errors": "1.6.2",
+ "iconv-lite": "0.4.19",
+ "unpipe": "1.0.0"
+ }
+ },
+ "rc": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.4.tgz",
+ "integrity": "sha1-oPYGyq4qO4YrvQ74VILAElsxX6M=",
+ "dev": true,
+ "requires": {
+ "deep-extend": "0.4.2",
+ "ini": "1.3.4",
+ "minimist": "1.2.0",
+ "strip-json-comments": "2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ }
+ }
+ },
+ "read-all-stream": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz",
+ "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "2.0.1",
+ "readable-stream": "2.3.3"
+ }
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "1.1.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "1.1.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "requires": {
+ "find-up": "1.1.2",
+ "read-pkg": "1.1.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
+ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "safe-buffer": "5.1.1",
+ "string_decoder": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+ "dev": true,
+ "requires": {
+ "resolve": "1.4.0"
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "requires": {
+ "indent-string": "2.1.0",
+ "strip-indent": "1.0.1"
+ },
+ "dependencies": {
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "4.0.1"
+ }
+ }
+ }
+ },
+ "reduce-flatten": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz",
+ "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=",
+ "dev": true
+ },
+ "regenerate": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz",
+ "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==",
+ "dev": true
+ },
+ "regenerator-runtime": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz",
+ "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==",
+ "dev": true
+ },
+ "regenerator-transform": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz",
+ "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "private": "0.1.7"
+ }
+ },
+ "regex-cache": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+ "dev": true,
+ "requires": {
+ "is-equal-shallow": "0.1.3"
+ }
+ },
+ "regexpp": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.0.1.tgz",
+ "integrity": "sha512-8Ph721maXiOYSLtaDGKVmDn5wdsNaF6Px85qFNeMPQq0r8K5Y10tgP6YuR65Ws35n4DvzFcCxEnRNBIXQunzLw==",
+ "dev": true
+ },
+ "regexpu-core": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz",
+ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
+ "dev": true,
+ "requires": {
+ "regenerate": "1.3.3",
+ "regjsgen": "0.2.0",
+ "regjsparser": "0.1.5"
+ }
+ },
+ "registry-auth-token": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz",
+ "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=",
+ "dev": true,
+ "requires": {
+ "rc": "1.2.4",
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "registry-url": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
+ "dev": true,
+ "requires": {
+ "rc": "1.2.4"
+ }
+ },
+ "regjsgen": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
+ "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
+ "dev": true
+ },
+ "regjsparser": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
+ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
+ "dev": true,
+ "requires": {
+ "jsesc": "0.5.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+ "dev": true
+ }
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "repeat-element": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "requires": {
+ "is-finite": "1.0.2"
+ }
+ },
+ "replace-ext": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
+ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
+ "dev": true
+ },
+ "request": {
+ "version": "2.79.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
+ "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "0.6.0",
+ "aws4": "1.6.0",
+ "caseless": "0.11.0",
+ "combined-stream": "1.0.5",
+ "extend": "3.0.1",
+ "forever-agent": "0.6.1",
+ "form-data": "2.1.4",
+ "har-validator": "2.0.6",
+ "hawk": "3.1.3",
+ "http-signature": "1.1.1",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.17",
+ "oauth-sign": "0.8.2",
+ "qs": "6.3.2",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.3",
+ "tunnel-agent": "0.4.3",
+ "uuid": "3.2.1"
+ },
+ "dependencies": {
+ "qs": {
+ "version": "6.3.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
+ "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=",
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
+ "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==",
+ "dev": true
+ }
+ }
+ },
+ "require-uncached": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
+ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
+ "dev": true,
+ "requires": {
+ "caller-path": "0.1.0",
+ "resolve-from": "1.0.1"
+ }
+ },
+ "requirejs": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.5.tgz",
+ "integrity": "sha512-svnO+aNcR/an9Dpi44C7KSAy5fFGLtmPbaaCeQaklUz8BQhS64tWWIIlvEA5jrWICzlO/X9KSzSeXFnZdBu8nw==",
+ "dev": true
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz",
+ "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==",
+ "dev": true,
+ "requires": {
+ "path-parse": "1.0.5"
+ }
+ },
+ "resolve-dir": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz",
+ "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "1.2.2",
+ "global-modules": "0.2.3"
+ }
+ },
+ "resolve-from": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
+ "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
+ "dev": true
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "2.0.1",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2"
+ }
+ },
+ "rollup": {
+ "version": "0.45.2",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.45.2.tgz",
+ "integrity": "sha512-2+bq5GQSrocdhr+M92mOQRmF1evtLRzv9NdmEC2wo7BILvTG8irHCtD0q+zg8ikNu63iJicdN5IzyxAXRTFKOQ==",
+ "dev": true,
+ "requires": {
+ "source-map-support": "0.4.18"
+ }
+ },
+ "rollup-plugin-babel": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-2.7.1.tgz",
+ "integrity": "sha1-FlKBl7D5OKFTb0RoPHqT1XMYL1c=",
+ "dev": true,
+ "requires": {
+ "babel-core": "6.26.0",
+ "babel-plugin-transform-es2015-classes": "6.24.1",
+ "object-assign": "4.1.1",
+ "rollup-pluginutils": "1.5.2"
+ }
+ },
+ "rollup-pluginutils": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz",
+ "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=",
+ "dev": true,
+ "requires": {
+ "estree-walker": "0.2.1",
+ "minimatch": "3.0.4"
+ }
+ },
+ "rollup-stream": {
+ "version": "1.23.1",
+ "resolved": "https://registry.npmjs.org/rollup-stream/-/rollup-stream-1.23.1.tgz",
+ "integrity": "sha512-niUbTM3sqckz1FNebsSiN+koCR7RdgrRZ2HCcR4V2DT9PSs53tB4z1xzdTGxrX6bo3QT00R2sQA5n1jr/to69Q==",
+ "dev": true,
+ "requires": {
+ "rollup": "0.45.2"
+ }
+ },
+ "run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "dev": true,
+ "requires": {
+ "is-promise": "2.1.0"
+ }
+ },
+ "run-sequence": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/run-sequence/-/run-sequence-2.2.1.tgz",
+ "integrity": "sha512-qkzZnQWMZjcKbh3CNly2srtrkaO/2H/SI5f2eliMCapdRD3UhMrwjfOAZJAnZ2H8Ju4aBzFZkBGXUqFs9V0yxw==",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "fancy-log": "1.3.2",
+ "plugin-error": "0.1.2"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "fancy-log": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz",
+ "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=",
+ "dev": true,
+ "requires": {
+ "ansi-gray": "0.1.1",
+ "color-support": "1.1.3",
+ "time-stamp": "1.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "rx-lite": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
+ "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
+ "dev": true
+ },
+ "rx-lite-aggregates": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
+ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
+ "dev": true,
+ "requires": {
+ "rx-lite": "4.0.8"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+ "dev": true
+ },
+ "samsam": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz",
+ "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==",
+ "dev": true
+ },
+ "sauce-connect-launcher": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/sauce-connect-launcher/-/sauce-connect-launcher-1.2.3.tgz",
+ "integrity": "sha1-0vkxrXro/avxlopEDnsgQXrKf4Y=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "adm-zip": "0.4.7",
+ "async": "2.6.0",
+ "https-proxy-agent": "1.0.0",
+ "lodash": "4.17.4",
+ "rimraf": "2.6.2"
+ }
+ },
+ "select-hose": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
+ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+ "dev": true
+ },
+ "selenium-standalone": {
+ "version": "6.12.0",
+ "resolved": "https://registry.npmjs.org/selenium-standalone/-/selenium-standalone-6.12.0.tgz",
+ "integrity": "sha1-eJcw2wmhBfHM4SxkJNeV0RxUO9Q=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "async": "2.6.0",
+ "commander": "2.9.0",
+ "cross-spawn": "5.1.0",
+ "debug": "3.1.0",
+ "lodash": "4.17.4",
+ "minimist": "1.2.0",
+ "mkdirp": "0.5.1",
+ "progress": "2.0.0",
+ "request": "2.79.0",
+ "tar-stream": "1.5.2",
+ "urijs": "1.19.0",
+ "which": "1.3.0",
+ "yauzl": "2.9.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "semver": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
+ "dev": true
+ },
+ "semver-diff": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
+ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
+ "dev": true,
+ "requires": {
+ "semver": "5.5.0"
+ }
+ },
+ "send": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.11.1.tgz",
+ "integrity": "sha1-G+q/1C+eJwn5kCivMHisErRwktU=",
+ "dev": true,
+ "requires": {
+ "debug": "2.1.3",
+ "depd": "1.0.1",
+ "destroy": "1.0.3",
+ "escape-html": "1.0.1",
+ "etag": "1.5.1",
+ "fresh": "0.2.4",
+ "mime": "1.2.11",
+ "ms": "0.7.0",
+ "on-finished": "2.2.1",
+ "range-parser": "1.0.3"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.1.3.tgz",
+ "integrity": "sha1-zoqxte6PvuK/o7Yzyrk9NmtjQY4=",
+ "dev": true,
+ "requires": {
+ "ms": "0.7.0"
+ }
+ },
+ "depd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz",
+ "integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo=",
+ "dev": true
+ },
+ "destroy": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz",
+ "integrity": "sha1-tDO0ck5x/YVR2YhRdIUcX8N34sk=",
+ "dev": true
+ },
+ "ee-first": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz",
+ "integrity": "sha1-ag18YiHkkP7v2S7D9EHJzozQl/Q=",
+ "dev": true
+ },
+ "escape-html": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz",
+ "integrity": "sha1-GBoobq05ejmpKFfPsdQwUuNWv/A=",
+ "dev": true
+ },
+ "etag": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.5.1.tgz",
+ "integrity": "sha1-VMUN4E7kJpVWKSWsVmWIKRvn6eo=",
+ "dev": true,
+ "requires": {
+ "crc": "3.2.1"
+ }
+ },
+ "fresh": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.4.tgz",
+ "integrity": "sha1-NYJJkgbJcjcUGQ7ddLRgT+tKYUw=",
+ "dev": true
+ },
+ "mime": {
+ "version": "1.2.11",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz",
+ "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=",
+ "dev": true
+ },
+ "ms": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.0.tgz",
+ "integrity": "sha1-hlvpTC5zl62KV9pqYzpuLzB5i4M=",
+ "dev": true
+ },
+ "on-finished": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.2.1.tgz",
+ "integrity": "sha1-XIXBzDYpn3gCllP2Z/J7a5nrwCk=",
+ "dev": true,
+ "requires": {
+ "ee-first": "1.1.0"
+ }
+ },
+ "range-parser": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz",
+ "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=",
+ "dev": true
+ }
+ }
+ },
+ "sequencify": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz",
+ "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=",
+ "dev": true
+ },
+ "serve-static": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz",
+ "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==",
+ "dev": true,
+ "requires": {
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "parseurl": "1.3.2",
+ "send": "0.16.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "send": {
+ "version": "0.16.1",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz",
+ "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "1.1.2",
+ "destroy": "1.0.4",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "etag": "1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "1.6.2",
+ "mime": "1.4.1",
+ "ms": "2.0.0",
+ "on-finished": "2.3.0",
+ "range-parser": "1.2.0",
+ "statuses": "1.3.1"
+ }
+ },
+ "statuses": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
+ "dev": true
+ }
+ }
+ },
+ "server-destroy": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz",
+ "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=",
+ "dev": true
+ },
+ "serviceworker-cache-polyfill": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/serviceworker-cache-polyfill/-/serviceworker-cache-polyfill-4.0.0.tgz",
+ "integrity": "sha1-3hnuc77yGrPAdAo3sz22JGS6ves=",
+ "dev": true
+ },
+ "setprototypeof": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
+ "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
+ "dev": true
+ },
+ "shady-css-parser": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/shady-css-parser/-/shady-css-parser-0.1.0.tgz",
+ "integrity": "sha512-irfJUUkEuDlNHKZNAp2r7zOyMlmbfVJ+kWSfjlCYYUx/7dJnANLCyTzQZsuxy5NJkvtNwSxY5Gj8MOlqXUQPyA==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "sigmund": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "sinon": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.4.1.tgz",
+ "integrity": "sha512-vFTrO9Wt0ECffDYIPSP/E5bBugt0UjcBQOfQUMh66xzkyPEnhl/vM2LRZi2ajuTdkH07sA6DzrM6KvdvGIH8xw==",
+ "dev": true,
+ "requires": {
+ "diff": "3.2.0",
+ "formatio": "1.2.0",
+ "lolex": "1.6.0",
+ "native-promise-only": "0.8.1",
+ "path-to-regexp": "1.7.0",
+ "samsam": "1.3.0",
+ "text-encoding": "0.6.4",
+ "type-detect": "4.0.7"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "path-to-regexp": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz",
+ "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=",
+ "dev": true,
+ "requires": {
+ "isarray": "0.0.1"
+ }
+ }
+ }
+ },
+ "sinon-chai": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz",
+ "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==",
+ "dev": true
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
+ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0"
+ }
+ },
+ "slide": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
+ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
+ "dev": true
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+ "dev": true,
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "socket.io": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.4.tgz",
+ "integrity": "sha1-waRZDO/4fs8TxyZS8Eb3FrKeYBQ=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "engine.io": "3.1.4",
+ "socket.io-adapter": "1.1.1",
+ "socket.io-client": "2.0.4",
+ "socket.io-parser": "3.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "socket.io-adapter": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz",
+ "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=",
+ "dev": true
+ },
+ "socket.io-client": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.4.tgz",
+ "integrity": "sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44=",
+ "dev": true,
+ "requires": {
+ "backo2": "1.0.2",
+ "base64-arraybuffer": "0.1.5",
+ "component-bind": "1.0.0",
+ "component-emitter": "1.2.1",
+ "debug": "2.6.9",
+ "engine.io-client": "3.1.4",
+ "has-cors": "1.1.0",
+ "indexof": "0.0.1",
+ "object-component": "0.0.3",
+ "parseqs": "0.0.5",
+ "parseuri": "0.0.5",
+ "socket.io-parser": "3.1.2",
+ "to-array": "0.1.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "socket.io-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.2.tgz",
+ "integrity": "sha1-28IoIVH8T6675Aru3Ady66YZ9/I=",
+ "dev": true,
+ "requires": {
+ "component-emitter": "1.2.1",
+ "debug": "2.6.9",
+ "has-binary2": "1.0.2",
+ "isarray": "2.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "isarray": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
+ "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
+ "dev": true
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz",
+ "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=",
+ "dev": true,
+ "requires": {
+ "atob": "1.1.3",
+ "resolve-url": "0.2.1",
+ "source-map-url": "0.3.0",
+ "urix": "0.1.0"
+ }
+ },
+ "source-map-support": {
+ "version": "0.4.18",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
+ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+ "dev": true,
+ "requires": {
+ "source-map": "0.5.7"
+ }
+ },
+ "source-map-url": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz",
+ "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=",
+ "dev": true
+ },
+ "sparkles": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz",
+ "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=",
+ "dev": true
+ },
+ "spdx-correct": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
+ "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
+ "dev": true,
+ "requires": {
+ "spdx-license-ids": "1.2.2"
+ }
+ },
+ "spdx-expression-parse": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
+ "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
+ "dev": true
+ },
+ "spdx-license-ids": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
+ "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
+ "dev": true
+ },
+ "spdy": {
+ "version": "3.4.7",
+ "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz",
+ "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "handle-thing": "1.2.5",
+ "http-deceiver": "1.2.7",
+ "safe-buffer": "5.1.1",
+ "select-hose": "2.0.0",
+ "spdy-transport": "2.0.20"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "spdy-transport": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz",
+ "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "detect-node": "2.0.3",
+ "hpack.js": "2.1.6",
+ "obuf": "1.1.1",
+ "readable-stream": "2.3.3",
+ "safe-buffer": "5.1.1",
+ "wbuf": "1.7.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "split": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz",
+ "integrity": "sha1-Zwl8YB1pfOE2j0GPBs0gHPBSGlc=",
+ "dev": true,
+ "requires": {
+ "through": "2.3.8"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "sshpk": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
+ "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
+ "dev": true,
+ "requires": {
+ "asn1": "0.2.3",
+ "assert-plus": "1.0.0",
+ "bcrypt-pbkdf": "1.0.1",
+ "dashdash": "1.14.1",
+ "ecc-jsbn": "0.1.1",
+ "getpass": "0.1.7",
+ "jsbn": "0.1.1",
+ "tweetnacl": "0.14.5"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "stable": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.6.tgz",
+ "integrity": "sha1-kQ9dKu17Ugxud3SZwfMuE5/eyxA=",
+ "dev": true
+ },
+ "stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
+ "dev": true
+ },
+ "stacky": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/stacky/-/stacky-1.3.1.tgz",
+ "integrity": "sha1-PxF+UYe5pz0j+HbWnwXIWxGAShI=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "lodash": "3.10.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
+ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
+ "dev": true
+ },
+ "stream-combiner": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
+ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
+ "dev": true,
+ "requires": {
+ "duplexer": "0.1.1"
+ }
+ },
+ "stream-consume": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz",
+ "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=",
+ "dev": true
+ },
+ "stream-shift": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+ "dev": true
+ },
+ "streamqueue": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/streamqueue/-/streamqueue-0.1.3.tgz",
+ "integrity": "sha1-sQ1lFYr1ec46X0jJJ20B2yPU+LU=",
+ "dev": true,
+ "requires": {
+ "isstream": "0.1.2",
+ "readable-stream": "1.0.34"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
+ "streamsearch": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
+ "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
+ },
+ "stringstream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
+ "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ }
+ }
+ },
+ "strip-bom": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz",
+ "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=",
+ "dev": true,
+ "requires": {
+ "first-chunk-stream": "1.0.0",
+ "is-utf8": "0.2.1"
+ }
+ },
+ "strip-bom-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz",
+ "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=",
+ "dev": true,
+ "requires": {
+ "first-chunk-stream": "1.0.0",
+ "strip-bom": "2.0.0"
+ },
+ "dependencies": {
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "0.2.1"
+ }
+ }
+ }
+ },
+ "strip-bom-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+ "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=",
+ "dev": true
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true,
+ "optional": true
+ },
+ "strip-indent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
+ "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "sw-precache": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/sw-precache/-/sw-precache-5.2.0.tgz",
+ "integrity": "sha512-sKctdX+5hUxkqJ/1DM88ubQ+QRvyw7CnxWdk909N2DgvxMqc1gcQFrwL7zpVc87wFmCA/OvRQd0iMC2XdFopYg==",
+ "dev": true,
+ "requires": {
+ "dom-urls": "1.1.0",
+ "es6-promise": "4.1.1",
+ "glob": "7.1.2",
+ "lodash.defaults": "4.2.0",
+ "lodash.template": "4.4.0",
+ "meow": "3.7.0",
+ "mkdirp": "0.5.1",
+ "pretty-bytes": "4.0.2",
+ "sw-toolbox": "3.6.0",
+ "update-notifier": "1.0.3"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "lodash.template": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz",
+ "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.templatesettings": "4.1.0"
+ }
+ },
+ "lodash.templatesettings": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz",
+ "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "update-notifier": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz",
+ "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=",
+ "dev": true,
+ "requires": {
+ "boxen": "0.6.0",
+ "chalk": "1.1.3",
+ "configstore": "2.1.0",
+ "is-npm": "1.0.0",
+ "latest-version": "2.0.0",
+ "lazy-req": "1.1.0",
+ "semver-diff": "2.1.0",
+ "xdg-basedir": "2.0.0"
+ }
+ }
+ }
+ },
+ "sw-toolbox": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/sw-toolbox/-/sw-toolbox-3.6.0.tgz",
+ "integrity": "sha1-Jt8dHHA0hljk3qKIQxkUm3sxg7U=",
+ "dev": true,
+ "requires": {
+ "path-to-regexp": "1.7.0",
+ "serviceworker-cache-polyfill": "4.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "path-to-regexp": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz",
+ "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=",
+ "dev": true,
+ "requires": {
+ "isarray": "0.0.1"
+ }
+ }
+ }
+ },
+ "table": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz",
+ "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==",
+ "dev": true,
+ "requires": {
+ "ajv": "5.5.2",
+ "ajv-keywords": "2.1.1",
+ "chalk": "2.3.0",
+ "lodash": "4.17.4",
+ "slice-ansi": "1.0.0",
+ "string-width": "2.1.1"
+ }
+ },
+ "table-layout": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.3.0.tgz",
+ "integrity": "sha1-buINxIPbNxs+XIf3BO0vfHmdLJo=",
+ "dev": true,
+ "requires": {
+ "array-back": "1.0.4",
+ "core-js": "2.5.1",
+ "deep-extend": "0.4.2",
+ "feature-detect-es6": "1.4.0",
+ "typical": "2.6.1",
+ "wordwrapjs": "2.0.0"
+ }
+ },
+ "tar-stream": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.2.tgz",
+ "integrity": "sha1-+8bG6DwaGdTLSMfZYXH8JI7/x78=",
+ "dev": true,
+ "requires": {
+ "bl": "1.2.1",
+ "end-of-stream": "1.4.1",
+ "readable-stream": "2.3.3",
+ "xtend": "4.0.1"
+ },
+ "dependencies": {
+ "end-of-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0"
+ }
+ }
+ }
+ },
+ "temp": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
+ "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-tmpdir": "1.0.2",
+ "rimraf": "2.2.8"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
+ "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "term-size": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "execa": "0.7.0"
+ }
+ },
+ "test-value": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz",
+ "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=",
+ "dev": true,
+ "requires": {
+ "array-back": "1.0.4",
+ "typical": "2.6.1"
+ }
+ },
+ "text-encoding": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz",
+ "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=",
+ "dev": true
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "thenify": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz",
+ "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=",
+ "dev": true,
+ "requires": {
+ "any-promise": "1.3.0"
+ }
+ },
+ "thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=",
+ "dev": true,
+ "requires": {
+ "thenify": "3.3.0"
+ }
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.3.3",
+ "xtend": "4.0.1"
+ }
+ },
+ "through2-filter": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz",
+ "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=",
+ "dev": true,
+ "requires": {
+ "through2": "2.0.3",
+ "xtend": "4.0.1"
+ }
+ },
+ "tildify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz",
+ "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=",
+ "dev": true,
+ "requires": {
+ "os-homedir": "1.0.2"
+ }
+ },
+ "time-stamp": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
+ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
+ "dev": true
+ },
+ "timed-out": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz",
+ "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=",
+ "dev": true
+ },
+ "timers-ext": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.2.tgz",
+ "integrity": "sha1-YcxHp2wavTGV8UUn+XjViulMUgQ=",
+ "dev": true,
+ "requires": {
+ "es5-ext": "0.10.38",
+ "next-tick": "1.0.0"
+ }
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "to-absolute-glob": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz",
+ "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "2.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "to-array": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
+ "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
+ "dev": true
+ },
+ "to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
+ "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
+ "dev": true,
+ "requires": {
+ "punycode": "1.4.1"
+ }
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ },
+ "trim-right": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
+ "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
+ "dev": true
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "dev": true,
+ "optional": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "1.1.2"
+ }
+ },
+ "type-detect": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.7.tgz",
+ "integrity": "sha512-4Rh17pAMVdMWzktddFhISRnUnFIStObtUMNGzDwlA6w/77bmGv3aBbRdCmQR6IjzfkTo9otnW+2K/cDRhKSxDA==",
+ "dev": true
+ },
+ "type-is": {
+ "version": "1.6.15",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
+ "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
+ "dev": true,
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "2.1.17"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "typical": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz",
+ "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=",
+ "dev": true
+ },
+ "ua-parser-js": {
+ "version": "0.7.17",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz",
+ "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==",
+ "dev": true
+ },
+ "ultron": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
+ "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==",
+ "dev": true
+ },
+ "unc-path-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
+ "dev": true
+ },
+ "underscore": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
+ "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=",
+ "dev": true
+ },
+ "underscore.string": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz",
+ "integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "unique-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz",
+ "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=",
+ "dev": true
+ },
+ "unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "crypto-random-string": "1.0.0"
+ }
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "dev": true
+ },
+ "unzip-response": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz",
+ "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=",
+ "dev": true
+ },
+ "update-notifier": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz",
+ "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "boxen": "1.3.0",
+ "chalk": "2.3.0",
+ "configstore": "3.1.1",
+ "import-lazy": "2.1.0",
+ "is-installed-globally": "0.1.0",
+ "is-npm": "1.0.0",
+ "latest-version": "3.1.0",
+ "semver-diff": "2.1.0",
+ "xdg-basedir": "3.0.0"
+ },
+ "dependencies": {
+ "ansi-align": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "2.1.1"
+ }
+ },
+ "boxen": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
+ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-align": "2.0.0",
+ "camelcase": "4.1.0",
+ "chalk": "2.3.0",
+ "cli-boxes": "1.0.0",
+ "string-width": "2.1.1",
+ "term-size": "1.2.0",
+ "widest-line": "2.0.0"
+ }
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true,
+ "optional": true
+ },
+ "configstore": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz",
+ "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "dot-prop": "4.2.0",
+ "graceful-fs": "4.1.11",
+ "make-dir": "1.1.0",
+ "unique-string": "1.0.0",
+ "write-file-atomic": "2.3.0",
+ "xdg-basedir": "3.0.0"
+ }
+ },
+ "dot-prop": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
+ "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-obj": "1.0.1"
+ }
+ },
+ "got": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "create-error-class": "3.0.2",
+ "duplexer3": "0.1.4",
+ "get-stream": "3.0.0",
+ "is-redirect": "1.0.0",
+ "is-retry-allowed": "1.1.0",
+ "is-stream": "1.1.0",
+ "lowercase-keys": "1.0.0",
+ "safe-buffer": "5.1.1",
+ "timed-out": "4.0.1",
+ "unzip-response": "2.0.1",
+ "url-parse-lax": "1.0.0"
+ }
+ },
+ "latest-version": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
+ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "package-json": "4.0.1"
+ }
+ },
+ "package-json": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
+ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "got": "6.7.1",
+ "registry-auth-token": "3.3.1",
+ "registry-url": "3.1.0",
+ "semver": "5.5.0"
+ }
+ },
+ "timed-out": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
+ "dev": true,
+ "optional": true
+ },
+ "unzip-response": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
+ "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
+ "dev": true,
+ "optional": true
+ },
+ "widest-line": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz",
+ "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "2.1.1"
+ }
+ },
+ "write-file-atomic": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
+ "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "imurmurhash": "0.1.4",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "xdg-basedir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
+ "dev": true
+ }
+ }
+ },
+ "urijs": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.0.tgz",
+ "integrity": "sha512-Qs2odXn0hST5VSPVjpi73CMqtbAoanahaqWBujGU+IyMrMqpWcIhDewxQRhCkmqYxuyvICDcSuLdv2O7ncWBGw==",
+ "dev": true
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
+ "url-parse-lax": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
+ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
+ "dev": true,
+ "requires": {
+ "prepend-http": "1.0.4"
+ }
+ },
+ "user-home": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
+ "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=",
+ "dev": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+ "dev": true
+ },
+ "uuid": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
+ "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
+ "dev": true
+ },
+ "uws": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/uws/-/uws-0.14.5.tgz",
+ "integrity": "sha1-Z6rzPEaypYel9mZtAPdpEyjxSdw=",
+ "dev": true,
+ "optional": true
+ },
+ "v8flags": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
+ "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
+ "dev": true,
+ "requires": {
+ "user-home": "1.1.1"
+ }
+ },
+ "vali-date": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz",
+ "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=",
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
+ "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "1.0.2",
+ "spdx-expression-parse": "1.0.4"
+ }
+ },
+ "vargs": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/vargs/-/vargs-0.1.0.tgz",
+ "integrity": "sha1-a2GE2mUgzDIEzhtAfKwm2SYJ6/8=",
+ "dev": true
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+ "dev": true
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "1.3.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ }
+ }
+ },
+ "vinyl": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz",
+ "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=",
+ "dev": true,
+ "requires": {
+ "clone": "2.1.1",
+ "clone-buffer": "1.0.0",
+ "clone-stats": "1.0.0",
+ "cloneable-readable": "1.0.0",
+ "remove-trailing-separator": "1.1.0",
+ "replace-ext": "1.0.0"
+ }
+ },
+ "vinyl-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vinyl-buffer/-/vinyl-buffer-1.0.1.tgz",
+ "integrity": "sha1-lsGjR5uMU5JULGEgKQE7Wyf4i78=",
+ "dev": true,
+ "requires": {
+ "bl": "1.2.1",
+ "through2": "2.0.3"
+ }
+ },
+ "vinyl-fs": {
+ "version": "0.3.14",
+ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz",
+ "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=",
+ "dev": true,
+ "requires": {
+ "defaults": "1.0.3",
+ "glob-stream": "3.1.18",
+ "glob-watcher": "0.0.6",
+ "graceful-fs": "3.0.11",
+ "mkdirp": "0.5.1",
+ "strip-bom": "1.0.0",
+ "through2": "0.6.5",
+ "vinyl": "0.4.6"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
+ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
+ "dev": true
+ },
+ "clone-stats": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
+ "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
+ "dev": true
+ },
+ "graceful-fs": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz",
+ "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
+ "dev": true,
+ "requires": {
+ "natives": "1.1.0"
+ }
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.1"
+ }
+ },
+ "vinyl": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
+ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
+ "dev": true,
+ "requires": {
+ "clone": "0.2.0",
+ "clone-stats": "0.0.1"
+ }
+ }
+ }
+ },
+ "vinyl-source-stream": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.2.tgz",
+ "integrity": "sha1-YrU6E1YQqJbpjKlr7jqH8Aio54A=",
+ "dev": true,
+ "requires": {
+ "through2": "2.0.3",
+ "vinyl": "0.4.6"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
+ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=",
+ "dev": true
+ },
+ "clone-stats": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
+ "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
+ "dev": true
+ },
+ "vinyl": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
+ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
+ "dev": true,
+ "requires": {
+ "clone": "0.2.0",
+ "clone-stats": "0.0.1"
+ }
+ }
+ }
+ },
+ "vinyl-sourcemaps-apply": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz",
+ "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=",
+ "dev": true,
+ "requires": {
+ "source-map": "0.5.7"
+ }
+ },
+ "walkdir": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz",
+ "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=",
+ "dev": true
+ },
+ "wbuf": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz",
+ "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=",
+ "dev": true,
+ "requires": {
+ "minimalistic-assert": "1.0.0"
+ }
+ },
+ "wct-local": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wct-local/-/wct-local-2.1.0.tgz",
+ "integrity": "sha512-OiMSbxp6e5tyvTbUA4VAQbw4we53EXEmekx9BbIgS/HryoQISzap5DSAE/kvpRpJ2Axt0z12d8ChxqwNflApfA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "@types/express": "4.11.0",
+ "@types/freeport": "1.0.21",
+ "@types/launchpad": "0.6.0",
+ "@types/node": "9.3.0",
+ "@types/which": "1.3.1",
+ "chalk": "2.3.0",
+ "cleankill": "2.0.0",
+ "freeport": "1.0.5",
+ "launchpad": "0.7.0",
+ "promisify-node": "0.4.0",
+ "selenium-standalone": "6.12.0",
+ "which": "1.3.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-9.3.0.tgz",
+ "integrity": "sha512-wNBfvNjzsJl4tswIZKXCFQY0lss9nKUyJnG6T94X/eqjRgI2jHZ4evdjhQYBSan/vGtF6XVXPApOmNH2rf0KKw==",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "wct-sauce": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/wct-sauce/-/wct-sauce-2.0.0.tgz",
+ "integrity": "sha512-amICD6iZOVJEJ4uymfdPFdk17CkSIYwHPDzDh4cH/ITYcNskZ3VB/2VPtU9ZIKuWMVdqPwfBovXcjlhn8+8idA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "cleankill": "2.0.0",
+ "lodash": "3.10.1",
+ "request": "2.79.0",
+ "sauce-connect-launcher": "1.2.3",
+ "temp": "0.8.3",
+ "uuid": "2.0.3"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+ "dev": true,
+ "optional": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "wd": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/wd/-/wd-1.5.0.tgz",
+ "integrity": "sha512-e/KpzTlhtSG3Ek0AcRz4G6PhxGsc53Nro+GkI1er9p05tWQ7W9dpGZR5SqQzGUqvbaqJCThDSAGaY7LHgi6MiA==",
+ "dev": true,
+ "requires": {
+ "archiver": "1.3.0",
+ "async": "2.0.1",
+ "lodash": "4.16.2",
+ "mkdirp": "0.5.1",
+ "q": "1.4.1",
+ "request": "2.79.0",
+ "underscore.string": "3.3.4",
+ "vargs": "0.1.0"
+ },
+ "dependencies": {
+ "async": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.0.1.tgz",
+ "integrity": "sha1-twnMAoCpw28J9FNr6CPIOKkEniU=",
+ "dev": true,
+ "requires": {
+ "lodash": "4.16.2"
+ }
+ },
+ "lodash": {
+ "version": "4.16.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.16.2.tgz",
+ "integrity": "sha1-PmJtuCcEimmSgaihJSJjJs/A5lI=",
+ "dev": true
+ },
+ "q": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
+ "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=",
+ "dev": true
+ }
+ }
+ },
+ "web-component-tester": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/web-component-tester/-/web-component-tester-6.5.0.tgz",
+ "integrity": "sha512-C8nK7mhLTGzm/3QcjBIzI5Pk3OLrEvup246Pc9stAD+sTvLWtH8tjVL+vU5KCOAdudKVnelGMbE4ICaNrl69+A==",
+ "dev": true,
+ "requires": {
+ "@polymer/sinonjs": "1.17.1",
+ "@polymer/test-fixture": "0.0.3",
+ "@webcomponents/webcomponentsjs": "1.0.22",
+ "accessibility-developer-tools": "2.12.0",
+ "async": "2.6.0",
+ "body-parser": "1.18.2",
+ "chai": "4.1.2",
+ "chalk": "1.1.3",
+ "cleankill": "2.0.0",
+ "express": "4.16.2",
+ "findup-sync": "1.0.0",
+ "glob": "7.1.2",
+ "lodash": "3.10.1",
+ "mocha": "3.5.3",
+ "multer": "1.3.0",
+ "nomnom": "1.8.1",
+ "polyserve": "0.23.0",
+ "promisify-node": "0.4.0",
+ "resolve": "1.4.0",
+ "semver": "5.5.0",
+ "send": "0.11.1",
+ "server-destroy": "1.0.1",
+ "sinon": "2.4.1",
+ "sinon-chai": "2.14.0",
+ "socket.io": "2.0.4",
+ "stacky": "1.3.1",
+ "update-notifier": "2.3.0",
+ "wct-local": "2.1.0",
+ "wct-sauce": "2.0.0",
+ "wd": "1.5.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "findup-sync": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-1.0.0.tgz",
+ "integrity": "sha1-b35LV7buOkA3tEFOrt6j9Y9x4Ow=",
+ "dev": true,
+ "requires": {
+ "detect-file": "0.1.0",
+ "is-glob": "2.0.1",
+ "micromatch": "2.3.11",
+ "resolve-dir": "0.1.1"
+ }
+ },
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "which": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
+ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
+ "dev": true,
+ "requires": {
+ "isexe": "2.0.0"
+ }
+ },
+ "widest-line": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz",
+ "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=",
+ "dev": true,
+ "requires": {
+ "string-width": "1.0.2"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ }
+ }
+ },
+ "winston": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.0.tgz",
+ "integrity": "sha1-gIBQuT1SZh7Z+2wms/DIJnCLCu4=",
+ "dev": true,
+ "requires": {
+ "async": "1.0.0",
+ "colors": "1.0.3",
+ "cycle": "1.0.3",
+ "eyes": "0.1.8",
+ "isstream": "0.1.2",
+ "stack-trace": "0.0.10"
+ },
+ "dependencies": {
+ "async": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
+ "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=",
+ "dev": true
+ }
+ }
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ },
+ "wordwrapjs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-2.0.0.tgz",
+ "integrity": "sha1-q1X2leYRjak4WP3XDAU9HF4BrCA=",
+ "dev": true,
+ "requires": {
+ "array-back": "1.0.4",
+ "feature-detect-es6": "1.4.0",
+ "reduce-flatten": "1.0.1",
+ "typical": "2.6.1"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "write": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
+ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
+ "dev": true,
+ "requires": {
+ "mkdirp": "0.5.1"
+ }
+ },
+ "write-file-atomic": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
+ "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "imurmurhash": "0.1.4",
+ "slide": "1.1.6"
+ }
+ },
+ "ws": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
+ "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
+ "dev": true,
+ "requires": {
+ "async-limiter": "1.0.0",
+ "safe-buffer": "5.1.1",
+ "ultron": "1.1.1"
+ }
+ },
+ "xdg-basedir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz",
+ "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=",
+ "dev": true,
+ "requires": {
+ "os-homedir": "1.0.2"
+ }
+ },
+ "xmlbuilder": {
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz",
+ "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=",
+ "dev": true,
+ "optional": true
+ },
+ "xmldom": {
+ "version": "0.1.27",
+ "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
+ "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=",
+ "dev": true,
+ "optional": true
+ },
+ "xmlhttprequest-ssl": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
+ "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=",
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ },
+ "yauzl": {
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.1.tgz",
+ "integrity": "sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "buffer-crc32": "0.2.13",
+ "fd-slicer": "1.0.1"
+ }
+ },
+ "yeast": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
+ "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
+ "dev": true
+ },
+ "zip-stream": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz",
+ "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=",
+ "dev": true,
+ "requires": {
+ "archiver-utils": "1.3.0",
+ "compress-commons": "1.2.2",
+ "lodash": "4.17.4",
+ "readable-stream": "2.3.3"
+ }
+ }
+ }
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/package.json b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/package.json
new file mode 100644
index 00000000000..a434247bd83
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/package.json
@@ -0,0 +1,56 @@
+{
+ "name": "@webcomponents/webcomponentsjs",
+ "version": "1.2.0",
+ "description": "Web Components Polyfills",
+ "main": "webcomponents-lite.js",
+ "directories": {
+ "test": "tests"
+ },
+ "keywords": [
+ "webcomponents",
+ "web-components",
+ "polyfill",
+ "shim"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/webcomponents/webcomponentsjs.git"
+ },
+ "author": "The Polymer Authors",
+ "license": "BSD-3-Clause",
+ "bugs": {
+ "url": "https://github.com/webcomponents/webcomponentsjs/issues"
+ },
+ "scripts": {
+ "build": "gulp",
+ "test": "wct"
+ },
+ "homepage": "https://webcomponents.org/polyfills",
+ "devDependencies": {
+ "@webcomponents/custom-elements": "^1.1.0",
+ "@webcomponents/html-imports": "^1.1.1",
+ "@webcomponents/shadycss": "^1.1.3",
+ "@webcomponents/shadydom": "^1.0.14",
+ "@webcomponents/template": "^1.2.4",
+ "@webcomponents/webcomponents-platform": "^1.0.0",
+ "babel-preset-minify": "^0.2.0",
+ "del": "^3.0.0",
+ "es6-promise": "4.1.x",
+ "eslint": "^4.19.1",
+ "google-closure-compiler": "^20171203.0.0",
+ "gulp": "^3.8.8",
+ "gulp-add-src": "^0.2.0",
+ "gulp-header": "^1.8.12",
+ "gulp-rename": "^1.2.2",
+ "gulp-sourcemaps": "^2.6.4",
+ "rollup-plugin-babel": "^2.7.1",
+ "rollup-stream": "=1.23",
+ "run-sequence": "^2.2.1",
+ "vinyl-buffer": "^1.0.1",
+ "vinyl-source-stream": "^1.1.2",
+ "web-component-tester": "^6.5.0"
+ },
+ "publishConfig": {
+ "access": "public"
+ }
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/post-polyfill.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/post-polyfill.js
new file mode 100644
index 00000000000..2e36ad32268
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/post-polyfill.js
@@ -0,0 +1,63 @@
+/**
+ * @license
+ * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
+ * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ * Code distributed by Google as part of the polymer project is also
+ * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+ */
+
+'use strict';
+
+let customElements = window['customElements'];
+let HTMLImports = window['HTMLImports'];
+let Template = window['HTMLTemplateElement'];
+
+// global for (1) existence means `WebComponentsReady` will file,
+// (2) WebComponents.ready == true means event has fired.
+window.WebComponents = window.WebComponents || {};
+
+if (customElements && customElements['polyfillWrapFlushCallback']) {
+ // Here we ensure that the public `HTMLImports.whenReady`
+ // always comes *after* custom elements have upgraded.
+ let flushCallback;
+ let runAndClearCallback = function runAndClearCallback() {
+ if (flushCallback) {
+ // make sure to run the HTMLTemplateElement polyfill before custom elements upgrade
+ if (Template.bootstrap) {
+ Template.bootstrap(window.document);
+ }
+ let cb = flushCallback;
+ flushCallback = null;
+ cb();
+ return true;
+ }
+ }
+ let origWhenReady = HTMLImports['whenReady'];
+ customElements['polyfillWrapFlushCallback'](function(cb) {
+ flushCallback = cb;
+ origWhenReady(runAndClearCallback);
+ });
+
+ HTMLImports['whenReady'] = function(cb) {
+ origWhenReady(function() {
+ // custom element code may add dynamic imports
+ // to match processing of native custom elements before
+ // domContentLoaded, we wait for these imports to resolve first.
+ if (runAndClearCallback()) {
+ HTMLImports['whenReady'](cb);
+ } else {
+ cb();
+ }
+ });
+ }
+
+}
+
+HTMLImports['whenReady'](function() {
+ requestAnimationFrame(function() {
+ window.WebComponents.ready = true;
+ document.dispatchEvent(new CustomEvent('WebComponentsReady', {bubbles: true}));
+ });
+}); \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/pre-polyfill.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/pre-polyfill.js
new file mode 100644
index 00000000000..336a86ebdd4
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/pre-polyfill.js
@@ -0,0 +1,63 @@
+/**
+ * @license
+ * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
+ * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ * Code distributed by Google as part of the polymer project is also
+ * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+ */
+
+'use strict';
+
+// Establish scope.
+window['WebComponents'] = window['WebComponents'] || {'flags':{}};
+
+// loading script
+let file = 'webcomponents-lite.js';
+let script = document.querySelector('script[src*="' + file + '"]');
+let flagMatcher = /wc-(.+)/;
+
+// Flags. Convert url arguments to flags
+let flags = {};
+if (!flags['noOpts']) {
+ // from url
+ location.search.slice(1).split('&').forEach(function(option) {
+ let parts = option.split('=');
+ let match;
+ if (parts[0] && (match = parts[0].match(flagMatcher))) {
+ flags[match[1]] = parts[1] || true;
+ }
+ });
+ // from script
+ if (script) {
+ for (let i=0, a; (a=script.attributes[i]); i++) {
+ if (a.name !== 'src') {
+ flags[a.name] = a.value || true;
+ }
+ }
+ }
+ // log flags
+ if (flags['log'] && flags['log']['split']) {
+ let parts = flags['log'].split(',');
+ flags['log'] = {};
+ parts.forEach(function(f) {
+ flags['log'][f] = true;
+ });
+ } else {
+ flags['log'] = {};
+ }
+}
+
+// exports
+window['WebComponents']['flags'] = flags;
+let forceShady = flags['shadydom'];
+if (forceShady) {
+ window['ShadyDOM'] = window['ShadyDOM'] || {};
+ window['ShadyDOM']['force'] = forceShady;
+}
+
+let forceCE = flags['register'] || flags['ce'];
+if (forceCE && window['customElements']) {
+ window['customElements']['forcePolyfill'] = forceCE;
+} \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/promise.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/promise.js
new file mode 100644
index 00000000000..ca01d623147
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/promise.js
@@ -0,0 +1,26 @@
+/**
+@license
+Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+'use strict';
+import ES6Promise from '../node_modules/es6-promise/lib/es6-promise/promise.js';
+
+/*
+Assign the ES6 promise polyfill to window ourselves instead of using the "auto" polyfill
+to work around https://github.com/webcomponents/webcomponentsjs/issues/837
+*/
+if (!window.Promise) {
+ window.Promise = ES6Promise;
+ // save Promise API
+ ES6Promise.prototype['catch'] = ES6Promise.prototype.catch;
+ ES6Promise.prototype['then'] = ES6Promise.prototype.then;
+ ES6Promise['all'] = ES6Promise.all;
+ ES6Promise['race'] = ES6Promise.race;
+ ES6Promise['resolve'] = ES6Promise.resolve;
+ ES6Promise['reject'] = ES6Promise.reject;
+} \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/unresolved.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/unresolved.js
new file mode 100644
index 00000000000..f6f2bb24dbe
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/src/unresolved.js
@@ -0,0 +1,31 @@
+/**
+ * @license
+ * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
+ * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ * Code distributed by Google as part of the polymer project is also
+ * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+ */
+
+'use strict';
+// It's desireable to provide a default stylesheet
+// that's convenient for styling unresolved elements, but
+// it's cumbersome to have to include this manually in every page.
+// It would make sense to put inside some HTMLImport but
+// the HTMLImports polyfill does not allow loading of stylesheets
+// that block rendering. Therefore this injection is tolerated here.
+//
+// NOTE: position: relative fixes IE's failure to inherit opacity
+// when a child is not statically positioned.
+let style = document.createElement('style');
+style.textContent = ''
+ + 'body {'
+ + 'transition: opacity ease-in 0.2s;'
+ + ' } \n'
+ + 'body[unresolved] {'
+ + 'opacity: 0; display: block; overflow: hidden; position: relative;'
+ + ' } \n'
+ ;
+let head = document.querySelector('head');
+head.insertBefore(style, head.firstChild); \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/wct.conf.json b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/wct.conf.json
new file mode 100644
index 00000000000..76d7ee0bc6f
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/wct.conf.json
@@ -0,0 +1,6 @@
+{
+ "suites": ["tests/runner.html"],
+ "clientOptions": {
+ "environmentImports": []
+ }
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-ce.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-ce.js
new file mode 100644
index 00000000000..916284ca2f5
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-ce.js
@@ -0,0 +1,81 @@
+/**
+@license @nocompile
+Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+(function(){/*
+
+ Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ Code distributed by Google as part of the polymer project is also
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+'use strict';(function(a){function b(a,b){if("function"===typeof window.CustomEvent)return new CustomEvent(a,b);var c=document.createEvent("CustomEvent");c.initCustomEvent(a,!!b.bubbles,!!b.cancelable,b.detail);return c}function c(a){if(J)return a.ownerDocument!==document?a.ownerDocument:null;var b=a.__importDoc;if(!b&&a.parentNode){b=a.parentNode;if("function"===typeof b.closest)b=b.closest("link[rel=import]");else for(;!h(b)&&(b=b.parentNode););a.__importDoc=b}return b}function d(a){var b=l(document,
+"link[rel=import]:not([import-dependency])"),c=b.length;c?r(b,function(b){return k(b,function(){0===--c&&a()})}):a()}function e(a){function b(){"loading"!==document.readyState&&document.body&&(document.removeEventListener("readystatechange",b),a())}document.addEventListener("readystatechange",b);b()}function f(a){e(function(){return d(function(){return a&&a()})})}function k(a,b){if(a.__loaded)b&&b();else if("script"===a.localName&&!a.src||"style"===a.localName&&!a.firstChild)a.__loaded=!0,b&&b();
+else{var c=function(e){a.removeEventListener(e.type,c);a.__loaded=!0;b&&b()};a.addEventListener("load",c);K&&"style"===a.localName||a.addEventListener("error",c)}}function h(a){return a.nodeType===Node.ELEMENT_NODE&&"link"===a.localName&&"import"===a.rel}function g(){var a=this;this.a={};this.b=0;this.c=new MutationObserver(function(b){return a.K(b)});this.c.observe(document.head,{childList:!0,subtree:!0});this.loadImports(document)}function n(a){r(l(a,"template"),function(a){r(l(a.content,'script:not([type]),script[type="application/javascript"],script[type="text/javascript"]'),
+function(a){var b=document.createElement("script");r(a.attributes,function(a){return b.setAttribute(a.name,a.value)});b.textContent=a.textContent;a.parentNode.replaceChild(b,a)});n(a.content)})}function l(a,b){return a.childNodes.length?a.querySelectorAll(b):ya}function r(a,b,c){var e=a?a.length:0,d=c?-1:1;for(c=c?e-1:0;c<e&&0<=c;c+=d)b(a[c],c)}var A=document.createElement("link"),J="import"in A,ya=A.querySelectorAll("*"),L=null;!1==="currentScript"in document&&Object.defineProperty(document,"currentScript",
+{get:function(){return L||("complete"!==document.readyState?document.scripts[document.scripts.length-1]:null)},configurable:!0});var za=/(url\()([^)]*)(\))/g,Aa=/(@import[\s]+(?!url\())([^;]*)(;)/g,Ba=/(<link[^>]*)(rel=['|"]?stylesheet['|"]?[^>]*>)/g,t={I:function(a,b){a.href&&a.setAttribute("href",t.j(a.getAttribute("href"),b));a.src&&a.setAttribute("src",t.j(a.getAttribute("src"),b));if("style"===a.localName){var c=t.D(a.textContent,b,za);a.textContent=t.D(c,b,Aa)}},D:function(a,b,c){return a.replace(c,
+function(a,c,e,d){a=e.replace(/["']/g,"");b&&(a=t.j(a,b));return c+"'"+a+"'"+d})},j:function(a,b){if(void 0===t.m){t.m=!1;try{var c=new URL("b","http://a");c.pathname="c%20d";t.m="http://a/c%20d"===c.href}catch(Va){}}if(t.m)return(new URL(a,b)).href;c=t.F;c||(c=document.implementation.createHTMLDocument("temp"),t.F=c,c.A=c.createElement("base"),c.head.appendChild(c.A),c.w=c.createElement("a"));c.A.href=b;c.w.href=a;return c.w.href||a}},Z={async:!0,load:function(a,b,c){if(a)if(a.match(/^data:/)){a=
+a.split(",");var e=a[1];e=-1<a[0].indexOf(";base64")?atob(e):decodeURIComponent(e);b(e)}else{var d=new XMLHttpRequest;d.open("GET",a,Z.async);d.onload=function(){var a=d.responseURL||d.getResponseHeader("Location");a&&0===a.indexOf("/")&&(a=(location.origin||location.protocol+"//"+location.host)+a);var e=d.response||d.responseText;304===d.status||0===d.status||200<=d.status&&300>d.status?b(e,a):c(e)};d.send()}else c("error: href must be specified")}},K=/Trident/.test(navigator.userAgent)||/Edge\/\d./i.test(navigator.userAgent);
+g.prototype.loadImports=function(a){var b=this;r(l(a,"link[rel=import]"),function(a){return b.B(a)})};g.prototype.B=function(a){var b=this,c=a.href;if(void 0!==this.a[c]){var e=this.a[c];e&&e.__loaded&&(a.__import=e,this.g(a))}else this.b++,this.a[c]="pending",Z.load(c,function(a,e){a=b.L(a,e||c);b.a[c]=a;b.b--;b.loadImports(a);b.C()},function(){b.a[c]=null;b.b--;b.C()})};g.prototype.L=function(a,b){if(!a)return document.createDocumentFragment();K&&(a=a.replace(Ba,function(a,b,c){return-1===a.indexOf("type=")?
+b+" type=import-disable "+c:a}));var c=document.createElement("template");c.innerHTML=a;if(c.content)a=c.content,n(a);else for(a=document.createDocumentFragment();c.firstChild;)a.appendChild(c.firstChild);if(c=a.querySelector("base"))b=t.j(c.getAttribute("href"),b),c.removeAttribute("href");var e=0;r(l(a,'link[rel=import],link[rel=stylesheet][href][type=import-disable],style:not([type]),link[rel=stylesheet][href]:not([type]),script:not([type]),script[type="application/javascript"],script[type="text/javascript"]'),
+function(a){k(a);t.I(a,b);a.setAttribute("import-dependency","");"script"===a.localName&&!a.src&&a.textContent&&(a.setAttribute("src","data:text/javascript;charset=utf-8,"+encodeURIComponent(a.textContent+("\n//# sourceURL="+b+(e?"-"+e:"")+".js\n"))),a.textContent="",e++)});return a};g.prototype.C=function(){var a=this;if(!this.b){this.c.disconnect();this.flatten(document);var b=!1,c=!1,e=function(){c&&b&&(a.loadImports(document),a.b||(a.c.observe(document.head,{childList:!0,subtree:!0}),a.J()))};
+this.N(function(){c=!0;e()});this.M(function(){b=!0;e()})}};g.prototype.flatten=function(a){var b=this;r(l(a,"link[rel=import]"),function(a){var c=b.a[a.href];(a.__import=c)&&c.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(b.a[a.href]=a,a.readyState="loading",a.__import=a,b.flatten(c),a.appendChild(c))})};g.prototype.M=function(a){function b(d){if(d<e){var f=c[d],h=document.createElement("script");f.removeAttribute("import-dependency");r(f.attributes,function(a){return h.setAttribute(a.name,a.value)});
+L=h;f.parentNode.replaceChild(h,f);k(h,function(){L=null;b(d+1)})}else a()}var c=l(document,"script[import-dependency]"),e=c.length;b(0)};g.prototype.N=function(a){var b=l(document,"style[import-dependency],link[rel=stylesheet][import-dependency]"),e=b.length;if(e){var d=K&&!!document.querySelector("link[rel=stylesheet][href][type=import-disable]");r(b,function(b){k(b,function(){b.removeAttribute("import-dependency");0===--e&&a()});if(d&&b.parentNode!==document.head){var f=document.createElement(b.localName);
+f.__appliedElement=b;f.setAttribute("type","import-placeholder");b.parentNode.insertBefore(f,b.nextSibling);for(f=c(b);f&&c(f);)f=c(f);f.parentNode!==document.head&&(f=null);document.head.insertBefore(b,f);b.removeAttribute("type")}})}else a()};g.prototype.J=function(){var a=this;r(l(document,"link[rel=import]"),function(b){return a.g(b)},!0)};g.prototype.g=function(a){a.__loaded||(a.__loaded=!0,a.import&&(a.import.readyState="complete"),a.dispatchEvent(b(a.import?"load":"error",{bubbles:!1,cancelable:!1,
+detail:void 0})))};g.prototype.K=function(a){var b=this;r(a,function(a){return r(a.addedNodes,function(a){a&&a.nodeType===Node.ELEMENT_NODE&&(h(a)?b.B(a):b.loadImports(a))})})};var M=null;if(J)r(l(document,"link[rel=import]"),function(a){a.import&&"loading"===a.import.readyState||(a.__loaded=!0)}),A=function(a){a=a.target;h(a)&&(a.__loaded=!0)},document.addEventListener("load",A,!0),document.addEventListener("error",A,!0);else{var B=Object.getOwnPropertyDescriptor(Node.prototype,"baseURI");Object.defineProperty((!B||
+B.configurable?Node:Element).prototype,"baseURI",{get:function(){var a=h(this)?this:c(this);return a?a.href:B&&B.get?B.get.call(this):(document.querySelector("base")||window.location).href},configurable:!0,enumerable:!0});Object.defineProperty(HTMLLinkElement.prototype,"import",{get:function(){return this.__import||null},configurable:!0,enumerable:!0});e(function(){M=new g})}f(function(){return document.dispatchEvent(b("HTMLImportsLoaded",{cancelable:!0,bubbles:!0,detail:void 0}))});a.useNative=J;
+a.whenReady=f;a.importForElement=c;a.loadImports=function(a){M&&M.loadImports(a)}})(window.HTMLImports=window.HTMLImports||{});var aa=new Set("annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph".split(" "));function ba(a){var b=aa.has(a);a=/^[a-z][.0-9_a-z]*-[\-.0-9_a-z]*$/.test(a);return!b&&a}function m(a){var b=a.isConnected;if(void 0!==b)return b;for(;a&&!(a.__CE_isImportDocument||a instanceof Document);)a=a.parentNode||(window.ShadowRoot&&a instanceof ShadowRoot?a.host:void 0);return!(!a||!(a.__CE_isImportDocument||a instanceof Document))}
+function p(a,b){for(;b&&b!==a&&!b.nextSibling;)b=b.parentNode;return b&&b!==a?b.nextSibling:null}
+function q(a,b,c){c=void 0===c?new Set:c;for(var d=a;d;){if(d.nodeType===Node.ELEMENT_NODE){var e=d;b(e);var f=e.localName;if("link"===f&&"import"===e.getAttribute("rel")){d=e.import;if(d instanceof Node&&!c.has(d))for(c.add(d),d=d.firstChild;d;d=d.nextSibling)q(d,b,c);d=p(a,e);continue}else if("template"===f){d=p(a,e);continue}if(e=e.__CE_shadowRoot)for(e=e.firstChild;e;e=e.nextSibling)q(e,b,c)}d=d.firstChild?d.firstChild:p(a,d)}}function u(a,b,c){a[b]=c};function v(){this.a=new Map;this.g=new Map;this.c=[];this.b=!1}function ca(a,b,c){a.a.set(b,c);a.g.set(c.constructor,c)}function da(a,b){a.b=!0;a.c.push(b)}function w(a,b){a.b&&q(b,function(b){return x(a,b)})}function x(a,b){if(a.b&&!b.__CE_patched){b.__CE_patched=!0;for(var c=0;c<a.c.length;c++)a.c[c](b)}}function y(a,b){var c=[];q(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state?a.connectedCallback(d):z(a,d)}}
+function C(a,b){var c=[];q(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state&&a.disconnectedCallback(d)}}
+function D(a,b,c){c=void 0===c?{}:c;var d=c.O||new Set,e=c.l||function(b){return z(a,b)},f=[];q(b,function(b){if("link"===b.localName&&"import"===b.getAttribute("rel")){var c=b.import;c instanceof Node&&(c.__CE_isImportDocument=!0,c.__CE_hasRegistry=!0);c&&"complete"===c.readyState?c.__CE_documentLoadHandled=!0:b.addEventListener("load",function(){var c=b.import;if(!c.__CE_documentLoadHandled){c.__CE_documentLoadHandled=!0;var f=new Set(d);f.delete(c);D(a,c,{O:f,l:e})}})}else f.push(b)},d);if(a.b)for(b=
+0;b<f.length;b++)x(a,f[b]);for(b=0;b<f.length;b++)e(f[b])}
+function z(a,b){if(void 0===b.__CE_state){var c=b.ownerDocument;if(c.defaultView||c.__CE_isImportDocument&&c.__CE_hasRegistry)if(c=a.a.get(b.localName)){c.constructionStack.push(b);var d=c.constructor;try{try{if(new d!==b)throw Error("The custom element constructor did not produce the element being upgraded.");}finally{c.constructionStack.pop()}}catch(k){throw b.__CE_state=2,k;}b.__CE_state=1;b.__CE_definition=c;if(c.attributeChangedCallback)for(c=c.observedAttributes,d=0;d<c.length;d++){var e=c[d],
+f=b.getAttribute(e);null!==f&&a.attributeChangedCallback(b,e,null,f,null)}m(b)&&a.connectedCallback(b)}}}v.prototype.connectedCallback=function(a){var b=a.__CE_definition;b.connectedCallback&&b.connectedCallback.call(a)};v.prototype.disconnectedCallback=function(a){var b=a.__CE_definition;b.disconnectedCallback&&b.disconnectedCallback.call(a)};
+v.prototype.attributeChangedCallback=function(a,b,c,d,e){var f=a.__CE_definition;f.attributeChangedCallback&&-1<f.observedAttributes.indexOf(b)&&f.attributeChangedCallback.call(a,b,c,d,e)};function E(a){var b=document;this.f=a;this.a=b;this.b=void 0;D(this.f,this.a);"loading"===this.a.readyState&&(this.b=new MutationObserver(this.c.bind(this)),this.b.observe(this.a,{childList:!0,subtree:!0}))}E.prototype.disconnect=function(){this.b&&this.b.disconnect()};E.prototype.c=function(a){var b=this.a.readyState;"interactive"!==b&&"complete"!==b||this.disconnect();for(b=0;b<a.length;b++)for(var c=a[b].addedNodes,d=0;d<c.length;d++)D(this.f,c[d])};function ea(){var a=this;this.b=this.a=void 0;this.c=new Promise(function(b){a.b=b;a.a&&b(a.a)})}function fa(a){if(a.a)throw Error("Already resolved.");a.a=void 0;a.b&&a.b(void 0)};function F(a){this.o=!1;this.f=a;this.v=new Map;this.s=function(a){return a()};this.h=!1;this.u=[];this.G=new E(a)}
+F.prototype.a=function(a,b){var c=this;if(!(b instanceof Function))throw new TypeError("Custom element constructors must be functions.");if(!ba(a))throw new SyntaxError("The element name '"+a+"' is not valid.");if(this.f.a.get(a))throw Error("A custom element with name '"+a+"' has already been defined.");if(this.o)throw Error("A custom element is already being defined.");this.o=!0;try{var d=function(a){var b=e[a];if(void 0!==b&&!(b instanceof Function))throw Error("The '"+a+"' callback must be a function.");
+return b},e=b.prototype;if(!(e instanceof Object))throw new TypeError("The custom element constructor's prototype is not an object.");var f=d("connectedCallback");var k=d("disconnectedCallback");var h=d("adoptedCallback");var g=d("attributeChangedCallback");var n=b.observedAttributes||[]}catch(l){return}finally{this.o=!1}b={localName:a,constructor:b,connectedCallback:f,disconnectedCallback:k,adoptedCallback:h,attributeChangedCallback:g,observedAttributes:n,constructionStack:[]};ca(this.f,a,b);this.u.push(b);
+this.h||(this.h=!0,this.s(function(){return ha(c)}))};F.prototype.l=function(a){D(this.f,a)};function ha(a){if(!1!==a.h){a.h=!1;for(var b=a.u,c=[],d=new Map,e=0;e<b.length;e++)d.set(b[e].localName,[]);D(a.f,document,{l:function(b){if(void 0===b.__CE_state){var e=b.localName,f=d.get(e);f?f.push(b):a.f.a.get(e)&&c.push(b)}}});for(e=0;e<c.length;e++)z(a.f,c[e]);for(;0<b.length;){var f=b.shift();e=f.localName;f=d.get(f.localName);for(var k=0;k<f.length;k++)z(a.f,f[k]);(e=a.v.get(e))&&fa(e)}}}
+F.prototype.get=function(a){if(a=this.f.a.get(a))return a.constructor};F.prototype.b=function(a){if(!ba(a))return Promise.reject(new SyntaxError("'"+a+"' is not a valid custom element name."));var b=this.v.get(a);if(b)return b.c;b=new ea;this.v.set(a,b);this.f.a.get(a)&&!this.u.some(function(b){return b.localName===a})&&fa(b);return b.c};F.prototype.c=function(a){this.G.disconnect();var b=this.s;this.s=function(c){return a(function(){return b(c)})}};window.CustomElementRegistry=F;
+F.prototype.define=F.prototype.a;F.prototype.upgrade=F.prototype.l;F.prototype.get=F.prototype.get;F.prototype.whenDefined=F.prototype.b;F.prototype.polyfillWrapFlushCallback=F.prototype.c;var G=window.Document.prototype.createElement,ia=window.Document.prototype.createElementNS,ja=window.Document.prototype.importNode,ka=window.Document.prototype.prepend,la=window.Document.prototype.append,ma=window.DocumentFragment.prototype.prepend,na=window.DocumentFragment.prototype.append,oa=window.Node.prototype.cloneNode,H=window.Node.prototype.appendChild,pa=window.Node.prototype.insertBefore,I=window.Node.prototype.removeChild,qa=window.Node.prototype.replaceChild,N=Object.getOwnPropertyDescriptor(window.Node.prototype,
+"textContent"),ra=window.Element.prototype.attachShadow,O=Object.getOwnPropertyDescriptor(window.Element.prototype,"innerHTML"),P=window.Element.prototype.getAttribute,sa=window.Element.prototype.setAttribute,ta=window.Element.prototype.removeAttribute,Q=window.Element.prototype.getAttributeNS,ua=window.Element.prototype.setAttributeNS,va=window.Element.prototype.removeAttributeNS,wa=window.Element.prototype.insertAdjacentElement,xa=window.Element.prototype.insertAdjacentHTML,Ca=window.Element.prototype.prepend,
+Da=window.Element.prototype.append,R=window.Element.prototype.before,Ea=window.Element.prototype.after,Fa=window.Element.prototype.replaceWith,Ga=window.Element.prototype.remove,Ha=window.HTMLElement,S=Object.getOwnPropertyDescriptor(window.HTMLElement.prototype,"innerHTML"),Ia=window.HTMLElement.prototype.insertAdjacentElement,Ja=window.HTMLElement.prototype.insertAdjacentHTML;var Ka=new function(){};function La(){var a=T;window.HTMLElement=function(){function b(){var b=this.constructor,d=a.g.get(b);if(!d)throw Error("The custom element being constructed was not registered with `customElements`.");var e=d.constructionStack;if(0===e.length)return e=G.call(document,d.localName),Object.setPrototypeOf(e,b.prototype),e.__CE_state=1,e.__CE_definition=d,x(a,e),e;d=e.length-1;var f=e[d];if(f===Ka)throw Error("The HTMLElement constructor was either called reentrantly for this constructor or called multiple times.");
+e[d]=Ka;Object.setPrototypeOf(f,b.prototype);x(a,f);return f}b.prototype=Ha.prototype;return b}()};function U(a,b,c){function d(b){return function(c){for(var e=[],d=0;d<arguments.length;++d)e[d-0]=arguments[d];d=[];for(var f=[],n=0;n<e.length;n++){var l=e[n];l instanceof Element&&m(l)&&f.push(l);if(l instanceof DocumentFragment)for(l=l.firstChild;l;l=l.nextSibling)d.push(l);else d.push(l)}b.apply(this,e);for(e=0;e<f.length;e++)C(a,f[e]);if(m(this))for(e=0;e<d.length;e++)f=d[e],f instanceof Element&&y(a,f)}}void 0!==c.i&&(b.prepend=d(c.i));void 0!==c.append&&(b.append=d(c.append))};function Ma(){var a=T;u(Document.prototype,"createElement",function(b){if(this.__CE_hasRegistry){var c=a.a.get(b);if(c)return new c.constructor}b=G.call(this,b);x(a,b);return b});u(Document.prototype,"importNode",function(b,c){b=ja.call(this,b,c);this.__CE_hasRegistry?D(a,b):w(a,b);return b});u(Document.prototype,"createElementNS",function(b,c){if(this.__CE_hasRegistry&&(null===b||"http://www.w3.org/1999/xhtml"===b)){var d=a.a.get(c);if(d)return new d.constructor}b=ia.call(this,b,c);x(a,b);return b});
+U(a,Document.prototype,{i:ka,append:la})};function Na(){var a=T;function b(b,d){Object.defineProperty(b,"textContent",{enumerable:d.enumerable,configurable:!0,get:d.get,set:function(b){if(this.nodeType===Node.TEXT_NODE)d.set.call(this,b);else{var c=void 0;if(this.firstChild){var e=this.childNodes,h=e.length;if(0<h&&m(this)){c=Array(h);for(var g=0;g<h;g++)c[g]=e[g]}}d.set.call(this,b);if(c)for(b=0;b<c.length;b++)C(a,c[b])}}})}u(Node.prototype,"insertBefore",function(b,d){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);
+b=pa.call(this,b,d);if(m(this))for(d=0;d<c.length;d++)y(a,c[d]);return b}c=m(b);d=pa.call(this,b,d);c&&C(a,b);m(this)&&y(a,b);return d});u(Node.prototype,"appendChild",function(b){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);b=H.call(this,b);if(m(this))for(var e=0;e<c.length;e++)y(a,c[e]);return b}c=m(b);e=H.call(this,b);c&&C(a,b);m(this)&&y(a,b);return e});u(Node.prototype,"cloneNode",function(b){b=oa.call(this,b);this.ownerDocument.__CE_hasRegistry?D(a,b):w(a,
+b);return b});u(Node.prototype,"removeChild",function(b){var c=m(b),e=I.call(this,b);c&&C(a,b);return e});u(Node.prototype,"replaceChild",function(b,d){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);b=qa.call(this,b,d);if(m(this))for(C(a,d),d=0;d<c.length;d++)y(a,c[d]);return b}c=m(b);var f=qa.call(this,b,d),k=m(this);k&&C(a,d);c&&C(a,b);k&&y(a,b);return f});N&&N.get?b(Node.prototype,N):da(a,function(a){b(a,{enumerable:!0,configurable:!0,get:function(){for(var a=
+[],b=0;b<this.childNodes.length;b++)a.push(this.childNodes[b].textContent);return a.join("")},set:function(a){for(;this.firstChild;)I.call(this,this.firstChild);H.call(this,document.createTextNode(a))}})})};function Oa(a){var b=Element.prototype;function c(b){return function(c){for(var e=[],d=0;d<arguments.length;++d)e[d-0]=arguments[d];d=[];for(var h=[],g=0;g<e.length;g++){var n=e[g];n instanceof Element&&m(n)&&h.push(n);if(n instanceof DocumentFragment)for(n=n.firstChild;n;n=n.nextSibling)d.push(n);else d.push(n)}b.apply(this,e);for(e=0;e<h.length;e++)C(a,h[e]);if(m(this))for(e=0;e<d.length;e++)h=d[e],h instanceof Element&&y(a,h)}}void 0!==R&&(b.before=c(R));void 0!==R&&(b.after=c(Ea));void 0!==Fa&&
+u(b,"replaceWith",function(b){for(var c=[],d=0;d<arguments.length;++d)c[d-0]=arguments[d];d=[];for(var k=[],h=0;h<c.length;h++){var g=c[h];g instanceof Element&&m(g)&&k.push(g);if(g instanceof DocumentFragment)for(g=g.firstChild;g;g=g.nextSibling)d.push(g);else d.push(g)}h=m(this);Fa.apply(this,c);for(c=0;c<k.length;c++)C(a,k[c]);if(h)for(C(a,this),c=0;c<d.length;c++)k=d[c],k instanceof Element&&y(a,k)});void 0!==Ga&&u(b,"remove",function(){var b=m(this);Ga.call(this);b&&C(a,this)})};function Pa(){var a=T;function b(b,c){Object.defineProperty(b,"innerHTML",{enumerable:c.enumerable,configurable:!0,get:c.get,set:function(b){var e=this,d=void 0;m(this)&&(d=[],q(this,function(a){a!==e&&d.push(a)}));c.set.call(this,b);if(d)for(var f=0;f<d.length;f++){var k=d[f];1===k.__CE_state&&a.disconnectedCallback(k)}this.ownerDocument.__CE_hasRegistry?D(a,this):w(a,this);return b}})}function c(b,c){u(b,"insertAdjacentElement",function(b,e){var d=m(e);b=c.call(this,b,e);d&&C(a,e);m(b)&&y(a,e);
+return b})}function d(b,c){function e(b,c){for(var e=[];b!==c;b=b.nextSibling)e.push(b);for(c=0;c<e.length;c++)D(a,e[c])}u(b,"insertAdjacentHTML",function(a,b){a=a.toLowerCase();if("beforebegin"===a){var d=this.previousSibling;c.call(this,a,b);e(d||this.parentNode.firstChild,this)}else if("afterbegin"===a)d=this.firstChild,c.call(this,a,b),e(this.firstChild,d);else if("beforeend"===a)d=this.lastChild,c.call(this,a,b),e(d||this.firstChild,null);else if("afterend"===a)d=this.nextSibling,c.call(this,
+a,b),e(this.nextSibling,d);else throw new SyntaxError("The value provided ("+String(a)+") is not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'.");})}ra&&u(Element.prototype,"attachShadow",function(a){return this.__CE_shadowRoot=a=ra.call(this,a)});O&&O.get?b(Element.prototype,O):S&&S.get?b(HTMLElement.prototype,S):da(a,function(a){b(a,{enumerable:!0,configurable:!0,get:function(){return oa.call(this,!0).innerHTML},set:function(a){var b="template"===this.localName,c=b?this.content:
+this,e=G.call(document,this.localName);for(e.innerHTML=a;0<c.childNodes.length;)I.call(c,c.childNodes[0]);for(a=b?e.content:e;0<a.childNodes.length;)H.call(c,a.childNodes[0])}})});u(Element.prototype,"setAttribute",function(b,c){if(1!==this.__CE_state)return sa.call(this,b,c);var e=P.call(this,b);sa.call(this,b,c);c=P.call(this,b);a.attributeChangedCallback(this,b,e,c,null)});u(Element.prototype,"setAttributeNS",function(b,c,d){if(1!==this.__CE_state)return ua.call(this,b,c,d);var e=Q.call(this,b,
+c);ua.call(this,b,c,d);d=Q.call(this,b,c);a.attributeChangedCallback(this,c,e,d,b)});u(Element.prototype,"removeAttribute",function(b){if(1!==this.__CE_state)return ta.call(this,b);var c=P.call(this,b);ta.call(this,b);null!==c&&a.attributeChangedCallback(this,b,c,null,null)});u(Element.prototype,"removeAttributeNS",function(b,c){if(1!==this.__CE_state)return va.call(this,b,c);var d=Q.call(this,b,c);va.call(this,b,c);var e=Q.call(this,b,c);d!==e&&a.attributeChangedCallback(this,c,d,e,b)});Ia?c(HTMLElement.prototype,
+Ia):wa?c(Element.prototype,wa):console.warn("Custom Elements: `Element#insertAdjacentElement` was not patched.");Ja?d(HTMLElement.prototype,Ja):xa?d(Element.prototype,xa):console.warn("Custom Elements: `Element#insertAdjacentHTML` was not patched.");U(a,Element.prototype,{i:Ca,append:Da});Oa(a)};var V=window.customElements;if(!V||V.forcePolyfill||"function"!=typeof V.define||"function"!=typeof V.get){var T=new v;La();Ma();U(T,DocumentFragment.prototype,{i:ma,append:na});Na();Pa();document.__CE_hasRegistry=!0;var customElements=new F(T);Object.defineProperty(window,"customElements",{configurable:!0,enumerable:!0,value:customElements})};/*
+
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ Code distributed by Google as part of the polymer project is also
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+var W=window.customElements,X=window.HTMLImports,Qa=window.HTMLTemplateElement;window.WebComponents=window.WebComponents||{};if(W&&W.polyfillWrapFlushCallback){var Y,Ra=function(){if(Y){Qa.H&&Qa.H(window.document);var a=Y;Y=null;a();return!0}},Sa=X.whenReady;W.polyfillWrapFlushCallback(function(a){Y=a;Sa(Ra)});X.whenReady=function(a){Sa(function(){Ra()?X.whenReady(a):a()})}}
+X.whenReady(function(){requestAnimationFrame(function(){window.WebComponents.ready=!0;document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))})});var Ta=document.createElement("style");Ta.textContent="body {transition: opacity ease-in 0.2s; } \nbody[unresolved] {opacity: 0; display: block; overflow: hidden; position: relative; } \n";var Ua=document.querySelector("head");Ua.insertBefore(Ta,Ua.firstChild);/*
+
+Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+}).call(this);
+
+//# sourceMappingURL=webcomponents-hi-ce.js.map
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-ce.js.map b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-ce.js.map
new file mode 100644
index 00000000000..ad850a2db16
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-ce.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["node_modules/@webcomponents/html-imports/src/html-imports.js","node_modules/@webcomponents/custom-elements/src/Utilities.js","node_modules/@webcomponents/custom-elements/src/CustomElementInternals.js","node_modules/@webcomponents/custom-elements/src/CustomElementState.js","node_modules/@webcomponents/custom-elements/src/DocumentConstructionObserver.js","node_modules/@webcomponents/custom-elements/src/CustomElementRegistry.js","node_modules/@webcomponents/custom-elements/src/Deferred.js","node_modules/@webcomponents/custom-elements/src/Patch/Native.js","node_modules/@webcomponents/custom-elements/src/AlreadyConstructedMarker.js","node_modules/@webcomponents/custom-elements/src/Patch/HTMLElement.js","node_modules/@webcomponents/custom-elements/src/custom-elements.js","node_modules/@webcomponents/custom-elements/src/Patch/Interface/ParentNode.js","node_modules/@webcomponents/custom-elements/src/Patch/Document.js","node_modules/@webcomponents/custom-elements/src/Patch/Node.js","node_modules/@webcomponents/custom-elements/src/Patch/Interface/ChildNode.js","node_modules/@webcomponents/custom-elements/src/Patch/Element.js","node_modules/@webcomponents/custom-elements/src/Patch/DocumentFragment.js","src/post-polyfill.js","src/unresolved.js"],"names":["scope","newCustomEvent","type","params","window","CustomEvent","event","document","createEvent","initCustomEvent","bubbles","cancelable","detail","importForElement","element","useNative","ownerDocument","doc","parentNode","closest","importSelector","isImportLink","whenImportsReady","callback","imports","QSA","rootImportSelector","pending","length","forEach","imp","whenElementLoaded","whenDocumentReady","stateChanged","readyState","body","removeEventListener","addEventListener","whenReady","localName","src","firstChild","onLoadingDone","isIE","node","nodeType","Node","ELEMENT_NODE","rel","constructor","Importer","documents","inflight","dynamicImportsMO","MutationObserver","m","handleMutations","observe","head","childList","subtree","loadImports","replaceScripts","fragment","template","content","scriptsSelector","script","clone","createElement","attributes","attr","setAttribute","name","value","textContent","replaceChild","selector","childNodes","querySelectorAll","emptyNodeList","list","inverseOrder","increment","i","link","currentScript","Object","defineProperty","get","scripts","configurable","CSS_URL_REGEXP","CSS_IMPORT_REGEXP","STYLESHEET_REGEXP","Path","fixUrls","base","href","resolveUrl","getAttribute","r","replaceUrls","text","linkUrl","regexp","replace","pre","url","post","urlPath","undefined","__workingURL","u","URL","pathname","e","__tempDoc","implementation","createHTMLDocument","__base","appendChild","__anchor","Xhr","async","load","success","fail","match","pieces","split","resource","header","indexOf","atob","decodeURIComponent","request","XMLHttpRequest","open","onload","request.onload","redirectedUrl","responseURL","getResponseHeader","location","origin","protocol","host","response","responseText","status","send","test","navigator","userAgent","links","loadImport","fireEventIfNeeded","makeDocument","processImportsIfLoadingDone","createDocumentFragment","p1","p2","innerHTML","baseEl","querySelector","removeAttribute","inlineScriptIndex","n$","importDependenciesSelector","n","importDependencyAttr","encodeURIComponent","num","disconnect","flatten","scriptsOk","stylesOk","fireEvents","waitForStyles","runScripts","DOCUMENT_FRAGMENT_NODE","cloneScript","l","s","s$","pendingScriptsSelector","pendingStylesSelector","needsMove","disabledLinkSelector","placeholder","insertBefore","nextSibling","newSibling","import","dispatchEvent","eventType","mutations","addedNodes","elem","importer","imps","target","native_baseURI","getOwnPropertyDescriptor","prototype","klass","Element","ownerDoc","call","enumerable","HTMLLinkElement","HTMLImports","reservedTagList","Set","isValidCustomElementName","reserved","has","validForm","isConnected","nativeValue","current","__CE_isImportDocument","Document","ShadowRoot","nextSiblingOrAncestorSibling","root","start","walkDeepDescendantElements","visitedImports","importNode","add","child","shadowRoot","__CE_shadowRoot","setPropertyUnchecked","destination","CustomElementInternals","_localNameToDefinition","Map","_constructorToDefinition","_patches","_hasPatches","setDefinition","definition","set","addPatch","listener","push","patchTree","patch","__CE_patched","connectTree","elements","custom","__CE_state","connectedCallback","upgradeElement","disconnectTree","disconnectedCallback","patchAndUpgradeTree","options","upgrade","gatherElements","__CE_hasRegistry","__CE_documentLoadHandled","clonedVisitedImports","delete","defaultView","localNameToDefinition","constructionStack","result","Error","pop","failed","__CE_definition","attributeChangedCallback","observedAttributes","oldValue","newValue","namespace","DocumentConstructionObserver","internals","_internals","_document","_observer","_handleMutations","bind","j","Deferred","_resolve","_value","_promise","Promise","resolve","CustomElementRegistry","_elementDefinitionIsRunning","_whenDefinedDeferred","_flushCallback","this._flushCallback","fn","_flushPending","_pendingDefinitions","_documentConstructionObserver","define","Function","TypeError","SyntaxError","getCallback","callbackValue","adoptedCallback","_flush","pendingDefinitions","elementsWithStableDefinitions","elementsWithPendingDefinitions","pendingElements","shift","pendingUpgradableElements","deferred","whenDefined","reject","prior","some","d","polyfillWrapFlushCallback","outer","inner","flush","Document_createElement","Document_createElementNS","createElementNS","Document_importNode","Document_prepend","Document_append","DocumentFragment_prepend","DocumentFragment","DocumentFragment_append","Node_cloneNode","cloneNode","Node_appendChild","Node_insertBefore","Node_removeChild","removeChild","Node_replaceChild","Node_textContent","Element_attachShadow","Element_innerHTML","Element_getAttribute","Element_setAttribute","Element_removeAttribute","Element_getAttributeNS","getAttributeNS","Element_setAttributeNS","setAttributeNS","Element_removeAttributeNS","removeAttributeNS","Element_insertAdjacentElement","Element_insertAdjacentHTML","Element_prepend","Element_append","Element_before","Element_after","Element_replaceWith","Element_remove","HTMLElement","HTMLElement_innerHTML","HTMLElement_insertAdjacentElement","HTMLElement_insertAdjacentHTML","$jscompDefaultExport","AlreadyConstructedMarker","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_createElement.call","setPrototypeOf","lastIndex","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement","builtIn","appendPrependPatch","builtInMethod","flattenedNodes","connectedElements","nodes","apply","prepend","append","deep","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_importNode.call","NS_HTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_createElementNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_prepend","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_append","patch_textContent","baseDescriptor","assignedValue","TEXT_NODE","removedNodes","childNodesLength","Array","refNode","insertedNodes","slice","nativeResult","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_insertBefore.call","nodeWasConnected","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_appendChild.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_cloneNode.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_removeChild.call","nodeToInsert","nodeToRemove","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_replaceChild.call","nodeToInsertWasConnected","thisIsConnected","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_textContent","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_textContent.get","parts","join","createTextNode","beforeAfterPatch","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_before","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_after","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_replaceWith","wasConnected","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_remove","patch_innerHTML","htmlString","removedElements","patch_insertAdjacentElement","baseMethod","position","insertedElement","patch_insertAdjacentHTML","upgradeNodesInRange","end","toLowerCase","marker","previousSibling","lastChild","String","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_attachShadow","init","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_attachShadow.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_innerHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_innerHTML.get","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_innerHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_innerHTML.get","isTemplate","rawElement","container","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_setAttribute.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_getAttribute.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_setAttributeNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_getAttributeNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_removeAttribute.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_removeAttributeNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_insertAdjacentElement","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_insertAdjacentElement","console","warn","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_insertAdjacentHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_insertAdjacentHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_prepend","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_append","priorCustomElements","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.DocumentFragment_prepend","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.DocumentFragment_append","customElements","Template","WebComponents","flushCallback","runAndClearCallback","bootstrap","cb","origWhenReady","requestAnimationFrame","ready","style"],"mappings":"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","file":"webcomponents-hi-ce.js","sourcesContent":["/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n(scope => {\n\n /********************* base setup *********************/\n const link = document.createElement('link');\n const useNative = Boolean('import' in link);\n const emptyNodeList = link.querySelectorAll('*');\n\n // Polyfill `currentScript` for browsers without it.\n let currentScript = null;\n if ('currentScript' in document === false) {\n Object.defineProperty(document, 'currentScript', {\n get() {\n return currentScript ||\n // NOTE: only works when called in synchronously executing code.\n // readyState should check if `loading` but IE10 is\n // interactive when scripts run so we cheat. This is not needed by\n // html-imports polyfill but helps generally polyfill `currentScript`.\n (document.readyState !== 'complete' ?\n document.scripts[document.scripts.length - 1] : null);\n },\n configurable: true\n });\n }\n\n /**\n * @param {Array|NodeList|NamedNodeMap} list\n * @param {!Function} callback\n * @param {boolean=} inverseOrder\n */\n const forEach = (list, callback, inverseOrder) => {\n const length = list ? list.length : 0;\n const increment = inverseOrder ? -1 : 1;\n let i = inverseOrder ? length - 1 : 0;\n for (; i < length && i >= 0; i = i + increment) {\n callback(list[i], i);\n }\n };\n\n /**\n * @param {!Node} node\n * @param {!string} selector\n * @return {!NodeList<!Element>}\n */\n const QSA = (node, selector) => {\n // IE 11 throws a SyntaxError if a node with no children is queried with\n // a selector containing the `:not([type])` syntax.\n if (!node.childNodes.length) {\n return emptyNodeList;\n }\n return node.querySelectorAll(selector);\n };\n\n /**\n * @param {!DocumentFragment} fragment\n */\n const replaceScripts = (fragment) => {\n forEach(QSA(fragment, 'template'), template => {\n forEach(QSA(template.content, scriptsSelector), script => {\n const clone = /** @type {!HTMLScriptElement} */\n (document.createElement('script'));\n forEach(script.attributes, attr => clone.setAttribute(attr.name, attr.value));\n clone.textContent = script.textContent;\n script.parentNode.replaceChild(clone, script);\n });\n replaceScripts(template.content);\n });\n };\n\n /********************* path fixup *********************/\n const CSS_URL_REGEXP = /(url\\()([^)]*)(\\))/g;\n const CSS_IMPORT_REGEXP = /(@import[\\s]+(?!url\\())([^;]*)(;)/g;\n const STYLESHEET_REGEXP = /(<link[^>]*)(rel=['|\"]?stylesheet['|\"]?[^>]*>)/g;\n\n // path fixup: style elements in imports must be made relative to the main\n // document. We fixup url's in url() and @import.\n const Path = {\n\n fixUrls(element, base) {\n if (element.href) {\n element.setAttribute('href',\n Path.resolveUrl(element.getAttribute('href'), base));\n }\n if (element.src) {\n element.setAttribute('src',\n Path.resolveUrl(element.getAttribute('src'), base));\n }\n if (element.localName === 'style') {\n const r = Path.replaceUrls(element.textContent, base, CSS_URL_REGEXP);\n element.textContent = Path.replaceUrls(r, base, CSS_IMPORT_REGEXP);\n }\n },\n\n replaceUrls(text, linkUrl, regexp) {\n return text.replace(regexp, (m, pre, url, post) => {\n let urlPath = url.replace(/[\"']/g, '');\n if (linkUrl) {\n urlPath = Path.resolveUrl(urlPath, linkUrl);\n }\n return pre + '\\'' + urlPath + '\\'' + post;\n });\n },\n\n resolveUrl(url, base) {\n // Lazy feature detection.\n if (Path.__workingURL === undefined) {\n Path.__workingURL = false;\n try {\n const u = new URL('b', 'http://a');\n u.pathname = 'c%20d';\n Path.__workingURL = (u.href === 'http://a/c%20d');\n } catch (e) {}\n }\n\n if (Path.__workingURL) {\n return (new URL(url, base)).href;\n }\n\n // Fallback to creating an anchor into a disconnected document.\n let doc = Path.__tempDoc;\n if (!doc) {\n doc = document.implementation.createHTMLDocument('temp');\n Path.__tempDoc = doc;\n doc.__base = doc.createElement('base');\n doc.head.appendChild(doc.__base);\n doc.__anchor = doc.createElement('a');\n }\n doc.__base.href = base;\n doc.__anchor.href = url;\n return doc.__anchor.href || url;\n }\n };\n\n /********************* Xhr processor *********************/\n const Xhr = {\n\n async: true,\n\n /**\n * @param {!string} url\n * @param {!function(!string, string=)} success\n * @param {!function(!string)} fail\n */\n load(url, success, fail) {\n if (!url) {\n fail('error: href must be specified');\n } else if (url.match(/^data:/)) {\n // Handle Data URI Scheme\n const pieces = url.split(',');\n const header = pieces[0];\n let resource = pieces[1];\n if (header.indexOf(';base64') > -1) {\n resource = atob(resource);\n } else {\n resource = decodeURIComponent(resource);\n }\n success(resource);\n } else {\n const request = new XMLHttpRequest();\n request.open('GET', url, Xhr.async);\n request.onload = () => {\n // Servers redirecting an import can add a Location header to help us\n // polyfill correctly. Handle relative and full paths.\n // Prefer responseURL which already resolves redirects\n // https://xhr.spec.whatwg.org/#the-responseurl-attribute\n let redirectedUrl = request.responseURL || request.getResponseHeader('Location');\n if (redirectedUrl && redirectedUrl.indexOf('/') === 0) {\n // In IE location.origin might not work\n // https://connect.microsoft.com/IE/feedback/details/1763802/location-origin-is-undefined-in-ie-11-on-windows-10-but-works-on-windows-7\n const origin = (location.origin || location.protocol + '//' + location.host);\n redirectedUrl = origin + redirectedUrl;\n }\n const resource = /** @type {string} */ (request.response || request.responseText);\n if (request.status === 304 || request.status === 0 ||\n request.status >= 200 && request.status < 300) {\n success(resource, redirectedUrl);\n } else {\n fail(resource);\n }\n };\n request.send();\n }\n }\n };\n\n /********************* importer *********************/\n\n const isIE = /Trident/.test(navigator.userAgent) ||\n /Edge\\/\\d./i.test(navigator.userAgent);\n\n const importSelector = 'link[rel=import]';\n\n // Used to disable loading of resources.\n const importDisableType = 'import-disable';\n\n const disabledLinkSelector = `link[rel=stylesheet][href][type=${importDisableType}]`;\n\n const scriptsSelector = `script:not([type]),script[type=\"application/javascript\"],` +\n `script[type=\"text/javascript\"]`;\n\n const importDependenciesSelector = `${importSelector},${disabledLinkSelector},` +\n `style:not([type]),link[rel=stylesheet][href]:not([type]),` + scriptsSelector;\n\n const importDependencyAttr = 'import-dependency';\n\n const rootImportSelector = `${importSelector}:not([${importDependencyAttr}])`;\n\n const pendingScriptsSelector = `script[${importDependencyAttr}]`;\n\n const pendingStylesSelector = `style[${importDependencyAttr}],` +\n `link[rel=stylesheet][${importDependencyAttr}]`;\n\n /**\n * Importer will:\n * - load any linked import documents (with deduping)\n * - whenever an import is loaded, prompt the parser to try to parse\n * - observe imported documents for new elements (these are handled via the\n * dynamic importer)\n */\n class Importer {\n constructor() {\n this.documents = {};\n // Used to keep track of pending loads, so that flattening and firing of\n // events can be done when all resources are ready.\n this.inflight = 0;\n this.dynamicImportsMO = new MutationObserver(m => this.handleMutations(m));\n // Observe changes on <head>.\n this.dynamicImportsMO.observe(document.head, {\n childList: true,\n subtree: true\n });\n // 1. Load imports contents\n // 2. Assign them to first import links on the document\n // 3. Wait for import styles & scripts to be done loading/running\n // 4. Fire load/error events\n this.loadImports(document);\n }\n\n /**\n * @param {!(HTMLDocument|DocumentFragment|Element)} doc\n */\n loadImports(doc) {\n const links = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(doc, importSelector));\n forEach(links, link => this.loadImport(link));\n }\n\n /**\n * @param {!HTMLLinkElement} link\n */\n loadImport(link) {\n const url = link.href;\n // This resource is already being handled by another import.\n if (this.documents[url] !== undefined) {\n // If import is already loaded, we can safely associate it to the link\n // and fire the load/error event.\n const imp = this.documents[url];\n if (imp && imp['__loaded']) {\n link['__import'] = imp;\n this.fireEventIfNeeded(link);\n }\n return;\n }\n this.inflight++;\n // Mark it as pending to notify others this url is being loaded.\n this.documents[url] = 'pending';\n Xhr.load(url, (resource, redirectedUrl) => {\n const doc = this.makeDocument(resource, redirectedUrl || url);\n this.documents[url] = doc;\n this.inflight--;\n // Load subtree.\n this.loadImports(doc);\n this.processImportsIfLoadingDone();\n }, () => {\n // If load fails, handle error.\n this.documents[url] = null;\n this.inflight--;\n this.processImportsIfLoadingDone();\n });\n }\n\n /**\n * Creates a new document containing resource and normalizes urls accordingly.\n * @param {string=} resource\n * @param {string=} url\n * @return {!DocumentFragment}\n */\n makeDocument(resource, url) {\n if (!resource) {\n return document.createDocumentFragment();\n }\n\n if (isIE) {\n // <link rel=stylesheet> should be appended to <head>. Not doing so\n // in IE/Edge breaks the cascading order. We disable the loading by\n // setting the type before setting innerHTML to avoid loading\n // resources twice.\n resource = resource.replace(STYLESHEET_REGEXP, (match, p1, p2) => {\n if (match.indexOf('type=') === -1) {\n return `${p1} type=${importDisableType} ${p2}`;\n }\n return match;\n });\n }\n\n let content;\n const template = /** @type {!HTMLTemplateElement} */\n (document.createElement('template'));\n template.innerHTML = resource;\n if (template.content) {\n content = template.content;\n // Clone scripts inside templates since they won't execute when the\n // hosting template is cloned.\n replaceScripts(content);\n } else {\n // <template> not supported, create fragment and move content into it.\n content = document.createDocumentFragment();\n while (template.firstChild) {\n content.appendChild(template.firstChild);\n }\n }\n\n // Support <base> in imported docs. Resolve url and remove its href.\n const baseEl = content.querySelector('base');\n if (baseEl) {\n url = Path.resolveUrl(baseEl.getAttribute('href'), url);\n baseEl.removeAttribute('href');\n }\n\n const n$ = /** @type {!NodeList<!(HTMLLinkElement|HTMLScriptElement|HTMLStyleElement)>} */\n (QSA(content, importDependenciesSelector));\n // For source map hints.\n let inlineScriptIndex = 0;\n forEach(n$, n => {\n // Listen for load/error events, then fix urls.\n whenElementLoaded(n);\n Path.fixUrls(n, url);\n // Mark for easier selectors.\n n.setAttribute(importDependencyAttr, '');\n // Generate source map hints for inline scripts.\n if (n.localName === 'script' && !n.src && n.textContent) {\n const num = inlineScriptIndex ? `-${inlineScriptIndex}` : '';\n const content = n.textContent + `\\n//# sourceURL=${url}${num}.js\\n`;\n // We use the src attribute so it triggers load/error events, and it's\n // easier to capture errors (e.g. parsing) like this.\n n.setAttribute('src', 'data:text/javascript;charset=utf-8,' + encodeURIComponent(content));\n n.textContent = '';\n inlineScriptIndex++;\n }\n });\n return content;\n }\n\n /**\n * Waits for loaded imports to finish loading scripts and styles, then fires\n * the load/error events.\n */\n processImportsIfLoadingDone() {\n // Wait until all resources are ready, then load import resources.\n if (this.inflight) return;\n\n // Stop observing, flatten & load resource, then restart observing <head>.\n this.dynamicImportsMO.disconnect();\n this.flatten(document);\n // We wait for styles to load, and at the same time we execute the scripts,\n // then fire the load/error events for imports to have faster whenReady\n // callback execution.\n // NOTE: This is different for native behavior where scripts would be\n // executed after the styles before them are loaded.\n // To achieve that, we could select pending styles and scripts in the\n // document and execute them sequentially in their dom order.\n let scriptsOk = false,\n stylesOk = false;\n const onLoadingDone = () => {\n if (stylesOk && scriptsOk) {\n // Catch any imports that might have been added while we\n // weren't looking, wait for them as well.\n this.loadImports(document);\n if (this.inflight) return;\n\n // Restart observing.\n this.dynamicImportsMO.observe(document.head, {\n childList: true,\n subtree: true\n });\n this.fireEvents();\n }\n }\n this.waitForStyles(() => {\n stylesOk = true;\n onLoadingDone();\n });\n this.runScripts(() => {\n scriptsOk = true;\n onLoadingDone();\n });\n }\n\n /**\n * @param {!HTMLDocument} doc\n */\n flatten(doc) {\n const n$ = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(doc, importSelector));\n forEach(n$, n => {\n const imp = this.documents[n.href];\n n['__import'] = /** @type {!Document} */ (imp);\n if (imp && imp.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n // We set the .import to be the link itself, and update its readyState.\n // Other links with the same href will point to this link.\n this.documents[n.href] = n;\n n.readyState = 'loading';\n n['__import'] = n;\n this.flatten(imp);\n n.appendChild(imp);\n }\n });\n }\n\n /**\n * Replaces all the imported scripts with a clone in order to execute them.\n * Updates the `currentScript`.\n * @param {!function()} callback\n */\n runScripts(callback) {\n const s$ = QSA(document, pendingScriptsSelector);\n const l = s$.length;\n const cloneScript = i => {\n if (i < l) {\n // The pending scripts have been generated through innerHTML and\n // browsers won't execute them for security reasons. We cannot use\n // s.cloneNode(true) either, the only way to run the script is manually\n // creating a new element and copying its attributes.\n const s = s$[i];\n const clone = /** @type {!HTMLScriptElement} */\n (document.createElement('script'));\n // Remove import-dependency attribute to avoid double cloning.\n s.removeAttribute(importDependencyAttr);\n forEach(s.attributes, attr => clone.setAttribute(attr.name, attr.value));\n // Update currentScript and replace original with clone script.\n currentScript = clone;\n s.parentNode.replaceChild(clone, s);\n whenElementLoaded(clone, () => {\n currentScript = null;\n cloneScript(i + 1);\n });\n } else {\n callback();\n }\n };\n cloneScript(0);\n }\n\n /**\n * Waits for all the imported stylesheets/styles to be loaded.\n * @param {!function()} callback\n */\n waitForStyles(callback) {\n const s$ = /** @type {!NodeList<!(HTMLLinkElement|HTMLStyleElement)>} */\n (QSA(document, pendingStylesSelector));\n let pending = s$.length;\n if (!pending) {\n callback();\n return;\n }\n // <link rel=stylesheet> should be appended to <head>. Not doing so\n // in IE/Edge breaks the cascading order\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10472273/\n // If there is one <link rel=stylesheet> imported, we must move all imported\n // links and styles to <head>.\n const needsMove = isIE && !!document.querySelector(disabledLinkSelector);\n forEach(s$, s => {\n // Listen for load/error events, remove selector once is done loading.\n whenElementLoaded(s, () => {\n s.removeAttribute(importDependencyAttr);\n if (--pending === 0) {\n callback();\n }\n });\n // Check if was already moved to head, to handle the case where the element\n // has already been moved but it is still loading.\n if (needsMove && s.parentNode !== document.head) {\n // Replace the element we're about to move with a placeholder.\n const placeholder = document.createElement(s.localName);\n // Add reference of the moved element.\n placeholder['__appliedElement'] = s;\n // Disable this from appearing in document.styleSheets.\n placeholder.setAttribute('type', 'import-placeholder');\n // Append placeholder next to the sibling, and move original to <head>.\n s.parentNode.insertBefore(placeholder, s.nextSibling);\n let newSibling = importForElement(s);\n while (newSibling && importForElement(newSibling)) {\n newSibling = importForElement(newSibling);\n }\n if (newSibling.parentNode !== document.head) {\n newSibling = null;\n }\n document.head.insertBefore(s, newSibling);\n // Enable the loading of <link rel=stylesheet>.\n s.removeAttribute('type');\n }\n });\n }\n\n /**\n * Fires load/error events for imports in the right order .\n */\n fireEvents() {\n const n$ = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(document, importSelector));\n // Inverse order to have events firing bottom-up.\n forEach(n$, n => this.fireEventIfNeeded(n), true);\n }\n\n /**\n * Fires load/error event for the import if this wasn't done already.\n * @param {!HTMLLinkElement} link\n */\n fireEventIfNeeded(link) {\n // Don't fire twice same event.\n if (!link['__loaded']) {\n link['__loaded'] = true;\n // Update link's import readyState.\n link.import && (link.import.readyState = 'complete');\n const eventType = link.import ? 'load' : 'error';\n link.dispatchEvent(newCustomEvent(eventType, {\n bubbles: false,\n cancelable: false,\n detail: undefined\n }));\n }\n }\n\n /**\n * @param {Array<MutationRecord>} mutations\n */\n handleMutations(mutations) {\n forEach(mutations, m => forEach(m.addedNodes, elem => {\n if (elem && elem.nodeType === Node.ELEMENT_NODE) {\n // NOTE: added scripts are not updating currentScript in IE.\n if (isImportLink(elem)) {\n this.loadImport( /** @type {!HTMLLinkElement} */ (elem));\n } else {\n this.loadImports( /** @type {!Element} */ (elem));\n }\n }\n }));\n }\n }\n\n /**\n * @param {!Node} node\n * @return {boolean}\n */\n const isImportLink = node => {\n return node.nodeType === Node.ELEMENT_NODE && node.localName === 'link' &&\n ( /** @type {!HTMLLinkElement} */ (node).rel === 'import');\n };\n\n /**\n * Waits for an element to finish loading. If already done loading, it will\n * mark the element accordingly.\n * @param {!(HTMLLinkElement|HTMLScriptElement|HTMLStyleElement)} element\n * @param {function()=} callback\n */\n const whenElementLoaded = (element, callback) => {\n if (element['__loaded']) {\n callback && callback();\n } else if ((element.localName === 'script' && !element.src) ||\n (element.localName === 'style' && !element.firstChild)) {\n // Inline scripts and empty styles don't trigger load/error events,\n // consider them already loaded.\n element['__loaded'] = true;\n callback && callback();\n } else {\n const onLoadingDone = event => {\n element.removeEventListener(event.type, onLoadingDone);\n element['__loaded'] = true;\n callback && callback();\n };\n element.addEventListener('load', onLoadingDone);\n // NOTE: We listen only for load events in IE/Edge, because in IE/Edge\n // <style> with @import will fire error events for each failing @import,\n // and finally will trigger the load event when all @import are\n // finished (even if all fail).\n if (!isIE || element.localName !== 'style') {\n element.addEventListener('error', onLoadingDone);\n }\n }\n }\n\n /**\n * Calls the callback when all imports in the document at call time\n * (or at least document ready) have loaded. Callback is called synchronously\n * if imports are already done loading.\n * @param {function()=} callback\n */\n const whenReady = callback => {\n // 1. ensure the document is in a ready state (has dom), then\n // 2. watch for loading of imports and call callback when done\n whenDocumentReady(() => whenImportsReady(() => callback && callback()));\n }\n\n /**\n * Invokes the callback when document is in ready state. Callback is called\n * synchronously if document is already done loading.\n * @param {!function()} callback\n */\n const whenDocumentReady = callback => {\n const stateChanged = () => {\n // NOTE: Firefox can hit readystate interactive without document.body existing.\n // This is anti-spec, but we handle it here anyways by waiting for next change.\n if (document.readyState !== 'loading' && !!document.body) {\n document.removeEventListener('readystatechange', stateChanged);\n callback();\n }\n }\n document.addEventListener('readystatechange', stateChanged);\n stateChanged();\n }\n\n /**\n * Invokes the callback after all imports are loaded. Callback is called\n * synchronously if imports are already done loading.\n * @param {!function()} callback\n */\n const whenImportsReady = callback => {\n let imports = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(document, rootImportSelector));\n let pending = imports.length;\n if (!pending) {\n callback();\n return;\n }\n forEach(imports, imp => whenElementLoaded(imp, () => {\n if (--pending === 0) {\n callback();\n }\n }));\n }\n\n /**\n * Returns the import document containing the element.\n * @param {!Node} element\n * @return {HTMLLinkElement|Document|undefined}\n */\n const importForElement = element => {\n if (useNative) {\n // Return only if not in the main doc!\n return element.ownerDocument !== document ? element.ownerDocument : null;\n }\n let doc = element['__importDoc'];\n if (!doc && element.parentNode) {\n doc = /** @type {!Element} */ (element.parentNode);\n if (typeof doc.closest === 'function') {\n // Element.closest returns the element itself if it matches the selector,\n // so we search the closest import starting from the parent.\n doc = doc.closest(importSelector);\n } else {\n // Walk up the parent tree until we find an import.\n while (!isImportLink(doc) && (doc = doc.parentNode)) {}\n }\n element['__importDoc'] = doc;\n }\n return doc;\n }\n\n let importer = null;\n /**\n * Ensures imports contained in the element are imported.\n * Use this to handle dynamic imports attached to body.\n * @param {!(HTMLDocument|Element)} doc\n */\n const loadImports = (doc) => {\n if (importer) {\n importer.loadImports(doc);\n }\n };\n\n const newCustomEvent = (type, params) => {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(type, params);\n }\n const event = /** @type {!CustomEvent} */ (document.createEvent('CustomEvent'));\n event.initCustomEvent(type, Boolean(params.bubbles), Boolean(params.cancelable), params.detail);\n return event;\n };\n\n if (useNative) {\n // Check for imports that might already be done loading by the time this\n // script is actually executed. Native imports are blocking, so the ones\n // available in the document by this time should already have failed\n // or have .import defined.\n const imps = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(document, importSelector));\n forEach(imps, imp => {\n if (!imp.import || imp.import.readyState !== 'loading') {\n imp['__loaded'] = true;\n }\n });\n // Listen for load/error events to capture dynamically added scripts.\n /**\n * @type {!function(!Event)}\n */\n const onLoadingDone = event => {\n const elem = /** @type {!Element} */ (event.target);\n if (isImportLink(elem)) {\n elem['__loaded'] = true;\n }\n };\n document.addEventListener('load', onLoadingDone, true /* useCapture */ );\n document.addEventListener('error', onLoadingDone, true /* useCapture */ );\n } else {\n // Override baseURI so that imported elements' baseURI can be used seemlessly\n // on native or polyfilled html-imports.\n // NOTE: a <link rel=import> will have `link.baseURI === link.href`, as the link\n // itself is used as the `import` document.\n /** @type {Object|undefined} */\n const native_baseURI = Object.getOwnPropertyDescriptor(Node.prototype, 'baseURI');\n // NOTE: if not configurable (e.g. safari9), set it on the Element prototype. \n const klass = !native_baseURI || native_baseURI.configurable ? Node : Element;\n Object.defineProperty(klass.prototype, 'baseURI', {\n get() {\n const ownerDoc = /** @type {HTMLLinkElement} */ (isImportLink(this) ? this : importForElement(this));\n if (ownerDoc) return ownerDoc.href;\n // Use native baseURI if possible.\n if (native_baseURI && native_baseURI.get) return native_baseURI.get.call(this);\n // Polyfill it if not available.\n const base = /** @type {HTMLBaseElement} */ (document.querySelector('base'));\n return (base || window.location).href;\n },\n configurable: true,\n enumerable: true\n });\n\n // Define 'import' read-only property.\n Object.defineProperty(HTMLLinkElement.prototype, 'import', {\n get() {\n return /** @type {HTMLLinkElement} */ (this)['__import'] || null;\n },\n configurable: true,\n enumerable: true\n });\n\n whenDocumentReady(() => {\n importer = new Importer()\n });\n }\n\n /**\n Add support for the `HTMLImportsLoaded` event and the `HTMLImports.whenReady`\n method. This api is necessary because unlike the native implementation,\n script elements do not force imports to resolve. Instead, users should wrap\n code in either an `HTMLImportsLoaded` handler or after load time in an\n `HTMLImports.whenReady(callback)` call.\n\n NOTE: This module also supports these apis under the native implementation.\n Therefore, if this file is loaded, the same code can be used under both\n the polyfill and native implementation.\n */\n whenReady(() => document.dispatchEvent(newCustomEvent('HTMLImportsLoaded', {\n cancelable: true,\n bubbles: true,\n detail: undefined\n })));\n\n // exports\n scope.useNative = useNative;\n scope.whenReady = whenReady;\n scope.importForElement = importForElement;\n scope.loadImports = loadImports;\n\n})(window.HTMLImports = (window.HTMLImports || {}));","const reservedTagList = new Set([\n 'annotation-xml',\n 'color-profile',\n 'font-face',\n 'font-face-src',\n 'font-face-uri',\n 'font-face-format',\n 'font-face-name',\n 'missing-glyph',\n]);\n\n/**\n * @param {string} localName\n * @returns {boolean}\n */\nexport function isValidCustomElementName(localName) {\n const reserved = reservedTagList.has(localName);\n const validForm = /^[a-z][.0-9_a-z]*-[\\-.0-9_a-z]*$/.test(localName);\n return !reserved && validForm;\n}\n\n/**\n * @private\n * @param {!Node} node\n * @return {boolean}\n */\nexport function isConnected(node) {\n // Use `Node#isConnected`, if defined.\n const nativeValue = node.isConnected;\n if (nativeValue !== undefined) {\n return nativeValue;\n }\n\n /** @type {?Node|undefined} */\n let current = node;\n while (current && !(current.__CE_isImportDocument || current instanceof Document)) {\n current = current.parentNode || (window.ShadowRoot && current instanceof ShadowRoot ? current.host : undefined);\n }\n return !!(current && (current.__CE_isImportDocument || current instanceof Document));\n}\n\n/**\n * @param {!Node} root\n * @param {!Node} start\n * @return {?Node}\n */\nfunction nextSiblingOrAncestorSibling(root, start) {\n let node = start;\n while (node && node !== root && !node.nextSibling) {\n node = node.parentNode;\n }\n return (!node || node === root) ? null : node.nextSibling;\n}\n\n/**\n * @param {!Node} root\n * @param {!Node} start\n * @return {?Node}\n */\nfunction nextNode(root, start) {\n return start.firstChild ? start.firstChild : nextSiblingOrAncestorSibling(root, start);\n}\n\n/**\n * @param {!Node} root\n * @param {!function(!Element)} callback\n * @param {!Set<Node>=} visitedImports\n */\nexport function walkDeepDescendantElements(root, callback, visitedImports = new Set()) {\n let node = root;\n while (node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = /** @type {!Element} */(node);\n\n callback(element);\n\n const localName = element.localName;\n if (localName === 'link' && element.getAttribute('rel') === 'import') {\n // If this import (polyfilled or not) has it's root node available,\n // walk it.\n const importNode = /** @type {!Node} */ (element.import);\n if (importNode instanceof Node && !visitedImports.has(importNode)) {\n // Prevent multiple walks of the same import root.\n visitedImports.add(importNode);\n\n for (let child = importNode.firstChild; child; child = child.nextSibling) {\n walkDeepDescendantElements(child, callback, visitedImports);\n }\n }\n\n // Ignore descendants of import links to prevent attempting to walk the\n // elements created by the HTML Imports polyfill that we just walked\n // above.\n node = nextSiblingOrAncestorSibling(root, element);\n continue;\n } else if (localName === 'template') {\n // Ignore descendants of templates. There shouldn't be any descendants\n // because they will be moved into `.content` during construction in\n // browsers that support template but, in case they exist and are still\n // waiting to be moved by a polyfill, they will be ignored.\n node = nextSiblingOrAncestorSibling(root, element);\n continue;\n }\n\n // Walk shadow roots.\n const shadowRoot = element.__CE_shadowRoot;\n if (shadowRoot) {\n for (let child = shadowRoot.firstChild; child; child = child.nextSibling) {\n walkDeepDescendantElements(child, callback, visitedImports);\n }\n }\n }\n\n node = nextNode(root, node);\n }\n}\n\n/**\n * Used to suppress Closure's \"Modifying the prototype is only allowed if the\n * constructor is in the same scope\" warning without using\n * `@suppress {newCheckTypes, duplicate}` because `newCheckTypes` is too broad.\n *\n * @param {!Object} destination\n * @param {string} name\n * @param {*} value\n */\nexport function setPropertyUnchecked(destination, name, value) {\n destination[name] = value;\n}\n","import * as Utilities from './Utilities.js';\nimport CEState from './CustomElementState.js';\n\nexport default class CustomElementInternals {\n constructor() {\n /** @type {!Map<string, !CustomElementDefinition>} */\n this._localNameToDefinition = new Map();\n\n /** @type {!Map<!Function, !CustomElementDefinition>} */\n this._constructorToDefinition = new Map();\n\n /** @type {!Array<!function(!Node)>} */\n this._patches = [];\n\n /** @type {boolean} */\n this._hasPatches = false;\n }\n\n /**\n * @param {string} localName\n * @param {!CustomElementDefinition} definition\n */\n setDefinition(localName, definition) {\n this._localNameToDefinition.set(localName, definition);\n this._constructorToDefinition.set(definition.constructor, definition);\n }\n\n /**\n * @param {string} localName\n * @return {!CustomElementDefinition|undefined}\n */\n localNameToDefinition(localName) {\n return this._localNameToDefinition.get(localName);\n }\n\n /**\n * @param {!Function} constructor\n * @return {!CustomElementDefinition|undefined}\n */\n constructorToDefinition(constructor) {\n return this._constructorToDefinition.get(constructor);\n }\n\n /**\n * @param {!function(!Node)} listener\n */\n addPatch(listener) {\n this._hasPatches = true;\n this._patches.push(listener);\n }\n\n /**\n * @param {!Node} node\n */\n patchTree(node) {\n if (!this._hasPatches) return;\n\n Utilities.walkDeepDescendantElements(node, element => this.patch(element));\n }\n\n /**\n * @param {!Node} node\n */\n patch(node) {\n if (!this._hasPatches) return;\n\n if (node.__CE_patched) return;\n node.__CE_patched = true;\n\n for (let i = 0; i < this._patches.length; i++) {\n this._patches[i](node);\n }\n }\n\n /**\n * @param {!Node} root\n */\n connectTree(root) {\n const elements = [];\n\n Utilities.walkDeepDescendantElements(root, element => elements.push(element));\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (element.__CE_state === CEState.custom) {\n this.connectedCallback(element);\n } else {\n this.upgradeElement(element);\n }\n }\n }\n\n /**\n * @param {!Node} root\n */\n disconnectTree(root) {\n const elements = [];\n\n Utilities.walkDeepDescendantElements(root, element => elements.push(element));\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (element.__CE_state === CEState.custom) {\n this.disconnectedCallback(element);\n }\n }\n }\n\n /**\n * Upgrades all uncustomized custom elements at and below a root node for\n * which there is a definition. When custom element reaction callbacks are\n * assumed to be called synchronously (which, by the current DOM / HTML spec\n * definitions, they are *not*), callbacks for both elements customized\n * synchronously by the parser and elements being upgraded occur in the same\n * relative order.\n *\n * NOTE: This function, when used to simulate the construction of a tree that\n * is already created but not customized (i.e. by the parser), does *not*\n * prevent the element from reading the 'final' (true) state of the tree. For\n * example, the element, during truly synchronous parsing / construction would\n * see that it contains no children as they have not yet been inserted.\n * However, this function does not modify the tree, the element will\n * (incorrectly) have children. Additionally, self-modification restrictions\n * for custom element constructors imposed by the DOM spec are *not* enforced.\n *\n *\n * The following nested list shows the steps extending down from the HTML\n * spec's parsing section that cause elements to be synchronously created and\n * upgraded:\n *\n * The \"in body\" insertion mode:\n * https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n * - Switch on token:\n * .. other cases ..\n * -> Any other start tag\n * - [Insert an HTML element](below) for the token.\n *\n * Insert an HTML element:\n * https://html.spec.whatwg.org/multipage/syntax.html#insert-an-html-element\n * - Insert a foreign element for the token in the HTML namespace:\n * https://html.spec.whatwg.org/multipage/syntax.html#insert-a-foreign-element\n * - Create an element for a token:\n * https://html.spec.whatwg.org/multipage/syntax.html#create-an-element-for-the-token\n * - Will execute script flag is true?\n * - (Element queue pushed to the custom element reactions stack.)\n * - Create an element:\n * https://dom.spec.whatwg.org/#concept-create-element\n * - Sync CE flag is true?\n * - Constructor called.\n * - Self-modification restrictions enforced.\n * - Sync CE flag is false?\n * - (Upgrade reaction enqueued.)\n * - Attributes appended to element.\n * (`attributeChangedCallback` reactions enqueued.)\n * - Will execute script flag is true?\n * - (Element queue popped from the custom element reactions stack.\n * Reactions in the popped stack are invoked.)\n * - (Element queue pushed to the custom element reactions stack.)\n * - Insert the element:\n * https://dom.spec.whatwg.org/#concept-node-insert\n * - Shadow-including descendants are connected. During parsing\n * construction, there are no shadow-*excluding* descendants.\n * However, the constructor may have validly attached a shadow\n * tree to itself and added descendants to that shadow tree.\n * (`connectedCallback` reactions enqueued.)\n * - (Element queue popped from the custom element reactions stack.\n * Reactions in the popped stack are invoked.)\n *\n * @param {!Node} root\n * @param {{\n * visitedImports: (!Set<!Node>|undefined),\n * upgrade: (!function(!Element)|undefined),\n * }=} options\n */\n patchAndUpgradeTree(root, options = {}) {\n const visitedImports = options.visitedImports || new Set();\n const upgrade = options.upgrade || (element => this.upgradeElement(element));\n\n const elements = [];\n\n const gatherElements = element => {\n if (element.localName === 'link' && element.getAttribute('rel') === 'import') {\n // The HTML Imports polyfill sets a descendant element of the link to\n // the `import` property, specifically this is *not* a Document.\n const importNode = /** @type {?Node} */ (element.import);\n\n if (importNode instanceof Node) {\n importNode.__CE_isImportDocument = true;\n // Connected links are associated with the registry.\n importNode.__CE_hasRegistry = true;\n }\n\n if (importNode && importNode.readyState === 'complete') {\n importNode.__CE_documentLoadHandled = true;\n } else {\n // If this link's import root is not available, its contents can't be\n // walked. Wait for 'load' and walk it when it's ready.\n element.addEventListener('load', () => {\n const importNode = /** @type {!Node} */ (element.import);\n\n if (importNode.__CE_documentLoadHandled) return;\n importNode.__CE_documentLoadHandled = true;\n\n // Clone the `visitedImports` set that was populated sync during\n // the `patchAndUpgradeTree` call that caused this 'load' handler to\n // be added. Then, remove *this* link's import node so that we can\n // walk that import again, even if it was partially walked later\n // during the same `patchAndUpgradeTree` call.\n const clonedVisitedImports = new Set(visitedImports);\n clonedVisitedImports.delete(importNode);\n\n this.patchAndUpgradeTree(importNode, {visitedImports: clonedVisitedImports, upgrade});\n });\n }\n } else {\n elements.push(element);\n }\n };\n\n // `walkDeepDescendantElements` populates (and internally checks against)\n // `visitedImports` when traversing a loaded import.\n Utilities.walkDeepDescendantElements(root, gatherElements, visitedImports);\n\n if (this._hasPatches) {\n for (let i = 0; i < elements.length; i++) {\n this.patch(elements[i]);\n }\n }\n\n for (let i = 0; i < elements.length; i++) {\n upgrade(elements[i]);\n }\n }\n\n /**\n * @param {!Element} element\n */\n upgradeElement(element) {\n const currentState = element.__CE_state;\n if (currentState !== undefined) return;\n\n // Prevent elements created in documents without a browsing context from\n // upgrading.\n //\n // https://html.spec.whatwg.org/multipage/custom-elements.html#look-up-a-custom-element-definition\n // \"If document does not have a browsing context, return null.\"\n //\n // https://html.spec.whatwg.org/multipage/window-object.html#dom-document-defaultview\n // \"The defaultView IDL attribute of the Document interface, on getting,\n // must return this Document's browsing context's WindowProxy object, if\n // this Document has an associated browsing context, or null otherwise.\"\n const ownerDocument = element.ownerDocument;\n if (\n !ownerDocument.defaultView &&\n !(ownerDocument.__CE_isImportDocument && ownerDocument.__CE_hasRegistry)\n ) return;\n\n const definition = this.localNameToDefinition(element.localName);\n if (!definition) return;\n\n definition.constructionStack.push(element);\n\n const constructor = definition.constructor;\n try {\n try {\n let result = new (constructor)();\n if (result !== element) {\n throw new Error('The custom element constructor did not produce the element being upgraded.');\n }\n } finally {\n definition.constructionStack.pop();\n }\n } catch (e) {\n element.__CE_state = CEState.failed;\n throw e;\n }\n\n element.__CE_state = CEState.custom;\n element.__CE_definition = definition;\n\n if (definition.attributeChangedCallback) {\n const observedAttributes = definition.observedAttributes;\n for (let i = 0; i < observedAttributes.length; i++) {\n const name = observedAttributes[i];\n const value = element.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(element, name, null, value, null);\n }\n }\n }\n\n if (Utilities.isConnected(element)) {\n this.connectedCallback(element);\n }\n }\n\n /**\n * @param {!Element} element\n */\n connectedCallback(element) {\n const definition = element.__CE_definition;\n if (definition.connectedCallback) {\n definition.connectedCallback.call(element);\n }\n }\n\n /**\n * @param {!Element} element\n */\n disconnectedCallback(element) {\n const definition = element.__CE_definition;\n if (definition.disconnectedCallback) {\n definition.disconnectedCallback.call(element);\n }\n }\n\n /**\n * @param {!Element} element\n * @param {string} name\n * @param {?string} oldValue\n * @param {?string} newValue\n * @param {?string} namespace\n */\n attributeChangedCallback(element, name, oldValue, newValue, namespace) {\n const definition = element.__CE_definition;\n if (\n definition.attributeChangedCallback &&\n definition.observedAttributes.indexOf(name) > -1\n ) {\n definition.attributeChangedCallback.call(element, name, oldValue, newValue, namespace);\n }\n }\n}\n","/**\n * @enum {number}\n */\nconst CustomElementState = {\n custom: 1,\n failed: 2,\n};\n\nexport default CustomElementState;\n","import CustomElementInternals from './CustomElementInternals.js';\n\nexport default class DocumentConstructionObserver {\n constructor(internals, doc) {\n /**\n * @type {!CustomElementInternals}\n */\n this._internals = internals;\n\n /**\n * @type {!Document}\n */\n this._document = doc;\n\n /**\n * @type {MutationObserver|undefined}\n */\n this._observer = undefined;\n\n\n // Simulate tree construction for all currently accessible nodes in the\n // document.\n this._internals.patchAndUpgradeTree(this._document);\n\n if (this._document.readyState === 'loading') {\n this._observer = new MutationObserver(this._handleMutations.bind(this));\n\n // Nodes created by the parser are given to the observer *before* the next\n // task runs. Inline scripts are run in a new task. This means that the\n // observer will be able to handle the newly parsed nodes before the inline\n // script is run.\n this._observer.observe(this._document, {\n childList: true,\n subtree: true,\n });\n }\n }\n\n disconnect() {\n if (this._observer) {\n this._observer.disconnect();\n }\n }\n\n /**\n * @param {!Array<!MutationRecord>} mutations\n */\n _handleMutations(mutations) {\n // Once the document's `readyState` is 'interactive' or 'complete', all new\n // nodes created within that document will be the result of script and\n // should be handled by patching.\n const readyState = this._document.readyState;\n if (readyState === 'interactive' || readyState === 'complete') {\n this.disconnect();\n }\n\n for (let i = 0; i < mutations.length; i++) {\n const addedNodes = mutations[i].addedNodes;\n for (let j = 0; j < addedNodes.length; j++) {\n const node = addedNodes[j];\n this._internals.patchAndUpgradeTree(node);\n }\n }\n }\n}\n","import CustomElementInternals from './CustomElementInternals.js';\nimport DocumentConstructionObserver from './DocumentConstructionObserver.js';\nimport Deferred from './Deferred.js';\nimport * as Utilities from './Utilities.js';\n\n/**\n * @unrestricted\n */\nexport default class CustomElementRegistry {\n\n /**\n * @param {!CustomElementInternals} internals\n */\n constructor(internals) {\n /**\n * @private\n * @type {boolean}\n */\n this._elementDefinitionIsRunning = false;\n\n /**\n * @private\n * @type {!CustomElementInternals}\n */\n this._internals = internals;\n\n /**\n * @private\n * @type {!Map<string, !Deferred<undefined>>}\n */\n this._whenDefinedDeferred = new Map();\n\n /**\n * The default flush callback triggers the document walk synchronously.\n * @private\n * @type {!Function}\n */\n this._flushCallback = fn => fn();\n\n /**\n * @private\n * @type {boolean}\n */\n this._flushPending = false;\n\n /**\n * @private\n * @type {!Array<!CustomElementDefinition>}\n */\n this._pendingDefinitions = [];\n\n /**\n * @private\n * @type {!DocumentConstructionObserver}\n */\n this._documentConstructionObserver = new DocumentConstructionObserver(internals, document);\n }\n\n /**\n * @param {string} localName\n * @param {!Function} constructor\n */\n define(localName, constructor) {\n if (!(constructor instanceof Function)) {\n throw new TypeError('Custom element constructors must be functions.');\n }\n\n if (!Utilities.isValidCustomElementName(localName)) {\n throw new SyntaxError(`The element name '${localName}' is not valid.`);\n }\n\n if (this._internals.localNameToDefinition(localName)) {\n throw new Error(`A custom element with name '${localName}' has already been defined.`);\n }\n\n if (this._elementDefinitionIsRunning) {\n throw new Error('A custom element is already being defined.');\n }\n this._elementDefinitionIsRunning = true;\n\n let connectedCallback;\n let disconnectedCallback;\n let adoptedCallback;\n let attributeChangedCallback;\n let observedAttributes;\n try {\n /** @type {!Object} */\n const prototype = constructor.prototype;\n if (!(prototype instanceof Object)) {\n throw new TypeError('The custom element constructor\\'s prototype is not an object.');\n }\n\n function getCallback(name) {\n const callbackValue = prototype[name];\n if (callbackValue !== undefined && !(callbackValue instanceof Function)) {\n throw new Error(`The '${name}' callback must be a function.`);\n }\n return callbackValue;\n }\n\n connectedCallback = getCallback('connectedCallback');\n disconnectedCallback = getCallback('disconnectedCallback');\n adoptedCallback = getCallback('adoptedCallback');\n attributeChangedCallback = getCallback('attributeChangedCallback');\n observedAttributes = constructor['observedAttributes'] || [];\n } catch (e) {\n return;\n } finally {\n this._elementDefinitionIsRunning = false;\n }\n\n const definition = {\n localName,\n constructor,\n connectedCallback,\n disconnectedCallback,\n adoptedCallback,\n attributeChangedCallback,\n observedAttributes,\n constructionStack: [],\n };\n\n this._internals.setDefinition(localName, definition);\n this._pendingDefinitions.push(definition);\n\n // If we've already called the flush callback and it hasn't called back yet,\n // don't call it again.\n if (!this._flushPending) {\n this._flushPending = true;\n this._flushCallback(() => this._flush());\n }\n }\n\n upgrade(element) {\n this._internals.patchAndUpgradeTree(element);\n }\n\n _flush() {\n // If no new definitions were defined, don't attempt to flush. This could\n // happen if a flush callback keeps the function it is given and calls it\n // multiple times.\n if (this._flushPending === false) return;\n this._flushPending = false;\n\n const pendingDefinitions = this._pendingDefinitions;\n\n /**\n * Unupgraded elements with definitions that were defined *before* the last\n * flush, in document order.\n * @type {!Array<!Element>}\n */\n const elementsWithStableDefinitions = [];\n\n /**\n * A map from `localName`s of definitions that were defined *after* the last\n * flush to unupgraded elements matching that definition, in document order.\n * @type {!Map<string, !Array<!Element>>}\n */\n const elementsWithPendingDefinitions = new Map();\n for (let i = 0; i < pendingDefinitions.length; i++) {\n elementsWithPendingDefinitions.set(pendingDefinitions[i].localName, []);\n }\n\n this._internals.patchAndUpgradeTree(document, {\n upgrade: element => {\n // Ignore the element if it has already upgraded or failed to upgrade.\n if (element.__CE_state !== undefined) return;\n\n const localName = element.localName;\n\n // If there is an applicable pending definition for the element, add the\n // element to the list of elements to be upgraded with that definition.\n const pendingElements = elementsWithPendingDefinitions.get(localName);\n if (pendingElements) {\n pendingElements.push(element);\n // If there is *any other* applicable definition for the element, add it\n // to the list of elements with stable definitions that need to be upgraded.\n } else if (this._internals.localNameToDefinition(localName)) {\n elementsWithStableDefinitions.push(element);\n }\n },\n });\n\n // Upgrade elements with 'stable' definitions first.\n for (let i = 0; i < elementsWithStableDefinitions.length; i++) {\n this._internals.upgradeElement(elementsWithStableDefinitions[i]);\n }\n\n // Upgrade elements with 'pending' definitions in the order they were defined.\n while (pendingDefinitions.length > 0) {\n const definition = pendingDefinitions.shift();\n const localName = definition.localName;\n\n // Attempt to upgrade all applicable elements.\n const pendingUpgradableElements = elementsWithPendingDefinitions.get(definition.localName);\n for (let i = 0; i < pendingUpgradableElements.length; i++) {\n this._internals.upgradeElement(pendingUpgradableElements[i]);\n }\n\n // Resolve any promises created by `whenDefined` for the definition.\n const deferred = this._whenDefinedDeferred.get(localName);\n if (deferred) {\n deferred.resolve(undefined);\n }\n }\n }\n\n /**\n * @param {string} localName\n * @return {Function|undefined}\n */\n get(localName) {\n const definition = this._internals.localNameToDefinition(localName);\n if (definition) {\n return definition.constructor;\n }\n\n return undefined;\n }\n\n /**\n * @param {string} localName\n * @return {!Promise<undefined>}\n */\n whenDefined(localName) {\n if (!Utilities.isValidCustomElementName(localName)) {\n return Promise.reject(new SyntaxError(`'${localName}' is not a valid custom element name.`));\n }\n\n const prior = this._whenDefinedDeferred.get(localName);\n if (prior) {\n return prior.toPromise();\n }\n\n const deferred = new Deferred();\n this._whenDefinedDeferred.set(localName, deferred);\n\n const definition = this._internals.localNameToDefinition(localName);\n // Resolve immediately only if the given local name has a definition *and*\n // the full document walk to upgrade elements with that local name has\n // already happened.\n if (definition && !this._pendingDefinitions.some(d => d.localName === localName)) {\n deferred.resolve(undefined);\n }\n\n return deferred.toPromise();\n }\n\n polyfillWrapFlushCallback(outer) {\n this._documentConstructionObserver.disconnect();\n const inner = this._flushCallback;\n this._flushCallback = flush => outer(() => inner(flush));\n }\n}\n\n// Closure compiler exports.\nwindow['CustomElementRegistry'] = CustomElementRegistry;\nCustomElementRegistry.prototype['define'] = CustomElementRegistry.prototype.define;\nCustomElementRegistry.prototype['upgrade'] = CustomElementRegistry.prototype.upgrade;\nCustomElementRegistry.prototype['get'] = CustomElementRegistry.prototype.get;\nCustomElementRegistry.prototype['whenDefined'] = CustomElementRegistry.prototype.whenDefined;\nCustomElementRegistry.prototype['polyfillWrapFlushCallback'] = CustomElementRegistry.prototype.polyfillWrapFlushCallback;\n","/**\n * @template T\n */\nexport default class Deferred {\n constructor() {\n /**\n * @private\n * @type {T|undefined}\n */\n this._value = undefined;\n\n /**\n * @private\n * @type {Function|undefined}\n */\n this._resolve = undefined;\n\n /**\n * @private\n * @type {!Promise<T>}\n */\n this._promise = new Promise(resolve => {\n this._resolve = resolve;\n\n if (this._value) {\n resolve(this._value);\n }\n });\n }\n\n /**\n * @param {T} value\n */\n resolve(value) {\n if (this._value) {\n throw new Error('Already resolved.');\n }\n\n this._value = value;\n\n if (this._resolve) {\n this._resolve(value);\n }\n }\n\n /**\n * @return {!Promise<T>}\n */\n toPromise() {\n return this._promise;\n }\n}\n","export default {\n Document_createElement: window.Document.prototype.createElement,\n Document_createElementNS: window.Document.prototype.createElementNS,\n Document_importNode: window.Document.prototype.importNode,\n Document_prepend: window.Document.prototype['prepend'],\n Document_append: window.Document.prototype['append'],\n DocumentFragment_prepend: window.DocumentFragment.prototype['prepend'],\n DocumentFragment_append: window.DocumentFragment.prototype['append'],\n Node_cloneNode: window.Node.prototype.cloneNode,\n Node_appendChild: window.Node.prototype.appendChild,\n Node_insertBefore: window.Node.prototype.insertBefore,\n Node_removeChild: window.Node.prototype.removeChild,\n Node_replaceChild: window.Node.prototype.replaceChild,\n Node_textContent: Object.getOwnPropertyDescriptor(window.Node.prototype, 'textContent'),\n Element_attachShadow: window.Element.prototype['attachShadow'],\n Element_innerHTML: Object.getOwnPropertyDescriptor(window.Element.prototype, 'innerHTML'),\n Element_getAttribute: window.Element.prototype.getAttribute,\n Element_setAttribute: window.Element.prototype.setAttribute,\n Element_removeAttribute: window.Element.prototype.removeAttribute,\n Element_getAttributeNS: window.Element.prototype.getAttributeNS,\n Element_setAttributeNS: window.Element.prototype.setAttributeNS,\n Element_removeAttributeNS: window.Element.prototype.removeAttributeNS,\n Element_insertAdjacentElement: window.Element.prototype['insertAdjacentElement'],\n Element_insertAdjacentHTML: window.Element.prototype['insertAdjacentHTML'],\n Element_prepend: window.Element.prototype['prepend'],\n Element_append: window.Element.prototype['append'],\n Element_before: window.Element.prototype['before'],\n Element_after: window.Element.prototype['after'],\n Element_replaceWith: window.Element.prototype['replaceWith'],\n Element_remove: window.Element.prototype['remove'],\n HTMLElement: window.HTMLElement,\n HTMLElement_innerHTML: Object.getOwnPropertyDescriptor(window.HTMLElement.prototype, 'innerHTML'),\n HTMLElement_insertAdjacentElement: window.HTMLElement.prototype['insertAdjacentElement'],\n HTMLElement_insertAdjacentHTML: window.HTMLElement.prototype['insertAdjacentHTML'],\n};\n","/**\n * This class exists only to work around Closure's lack of a way to describe\n * singletons. It represents the 'already constructed marker' used in custom\n * element construction stacks.\n *\n * https://html.spec.whatwg.org/#concept-already-constructed-marker\n */\nclass AlreadyConstructedMarker {}\n\nexport default new AlreadyConstructedMarker();\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport CEState from '../CustomElementState.js';\nimport AlreadyConstructedMarker from '../AlreadyConstructedMarker.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n window['HTMLElement'] = (function() {\n /**\n * @type {function(new: HTMLElement): !HTMLElement}\n */\n function HTMLElement() {\n // This should really be `new.target` but `new.target` can't be emulated\n // in ES5. Assuming the user keeps the default value of the constructor's\n // prototype's `constructor` property, this is equivalent.\n /** @type {!Function} */\n const constructor = this.constructor;\n\n const definition = internals.constructorToDefinition(constructor);\n if (!definition) {\n throw new Error('The custom element being constructed was not registered with `customElements`.');\n }\n\n const constructionStack = definition.constructionStack;\n\n if (constructionStack.length === 0) {\n const element = Native.Document_createElement.call(document, definition.localName);\n Object.setPrototypeOf(element, constructor.prototype);\n element.__CE_state = CEState.custom;\n element.__CE_definition = definition;\n internals.patch(element);\n return element;\n }\n\n const lastIndex = constructionStack.length - 1;\n const element = constructionStack[lastIndex];\n if (element === AlreadyConstructedMarker) {\n throw new Error('The HTMLElement constructor was either called reentrantly for this constructor or called multiple times.');\n }\n constructionStack[lastIndex] = AlreadyConstructedMarker;\n\n Object.setPrototypeOf(element, constructor.prototype);\n internals.patch(/** @type {!HTMLElement} */ (element));\n\n return element;\n }\n\n HTMLElement.prototype = Native.HTMLElement.prototype;\n\n return HTMLElement;\n })();\n};\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport CustomElementInternals from './CustomElementInternals.js';\nimport CustomElementRegistry from './CustomElementRegistry.js';\n\nimport PatchHTMLElement from './Patch/HTMLElement.js';\nimport PatchDocument from './Patch/Document.js';\nimport PatchDocumentFragment from './Patch/DocumentFragment.js';\nimport PatchNode from './Patch/Node.js';\nimport PatchElement from './Patch/Element.js';\n\nconst priorCustomElements = window['customElements'];\n\nif (!priorCustomElements ||\n priorCustomElements['forcePolyfill'] ||\n (typeof priorCustomElements['define'] != 'function') ||\n (typeof priorCustomElements['get'] != 'function')) {\n /** @type {!CustomElementInternals} */\n const internals = new CustomElementInternals();\n\n PatchHTMLElement(internals);\n PatchDocument(internals);\n PatchDocumentFragment(internals);\n PatchNode(internals);\n PatchElement(internals);\n\n // The main document is always associated with the registry.\n document.__CE_hasRegistry = true;\n\n /** @type {!CustomElementRegistry} */\n const customElements = new CustomElementRegistry(internals);\n\n Object.defineProperty(window, 'customElements', {\n configurable: true,\n enumerable: true,\n value: customElements,\n });\n}\n","import CustomElementInternals from '../../CustomElementInternals.js';\nimport * as Utilities from '../../Utilities.js';\n\n/**\n * @typedef {{\n * prepend: !function(...(!Node|string)),\n * append: !function(...(!Node|string)),\n * }}\n */\nlet ParentNodeNativeMethods;\n\n/**\n * @param {!CustomElementInternals} internals\n * @param {!Object} destination\n * @param {!ParentNodeNativeMethods} builtIn\n */\nexport default function(internals, destination, builtIn) {\n /**\n * @param {!function(...(!Node|string))} builtInMethod\n * @return {!function(...(!Node|string))}\n */\n function appendPrependPatch(builtInMethod) {\n return function(...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n * @type {!Array<!Node>}\n */\n const flattenedNodes = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n * @type {!Array<!Node>}\n */\n const connectedElements = [];\n\n for (var i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n builtInMethod.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n };\n }\n\n if (builtIn.prepend !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'prepend', appendPrependPatch(builtIn.prepend));\n }\n\n if (builtIn.append !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'append', appendPrependPatch(builtIn.append));\n }\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport * as Utilities from '../Utilities.js';\n\nimport PatchParentNode from './Interface/ParentNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n Utilities.setPropertyUnchecked(Document.prototype, 'createElement',\n /**\n * @this {Document}\n * @param {string} localName\n * @return {!Element}\n */\n function(localName) {\n // Only create custom elements if this document is associated with the registry.\n if (this.__CE_hasRegistry) {\n const definition = internals.localNameToDefinition(localName);\n if (definition) {\n return new (definition.constructor)();\n }\n }\n\n const result = /** @type {!Element} */\n (Native.Document_createElement.call(this, localName));\n internals.patch(result);\n return result;\n });\n\n Utilities.setPropertyUnchecked(Document.prototype, 'importNode',\n /**\n * @this {Document}\n * @param {!Node} node\n * @param {boolean=} deep\n * @return {!Node}\n */\n function(node, deep) {\n const clone = Native.Document_importNode.call(this, node, deep);\n // Only create custom elements if this document is associated with the registry.\n if (!this.__CE_hasRegistry) {\n internals.patchTree(clone);\n } else {\n internals.patchAndUpgradeTree(clone);\n }\n return clone;\n });\n\n const NS_HTML = \"http://www.w3.org/1999/xhtml\";\n\n Utilities.setPropertyUnchecked(Document.prototype, 'createElementNS',\n /**\n * @this {Document}\n * @param {?string} namespace\n * @param {string} localName\n * @return {!Element}\n */\n function(namespace, localName) {\n // Only create custom elements if this document is associated with the registry.\n if (this.__CE_hasRegistry && (namespace === null || namespace === NS_HTML)) {\n const definition = internals.localNameToDefinition(localName);\n if (definition) {\n return new (definition.constructor)();\n }\n }\n\n const result = /** @type {!Element} */\n (Native.Document_createElementNS.call(this, namespace, localName));\n internals.patch(result);\n return result;\n });\n\n PatchParentNode(internals, Document.prototype, {\n prepend: Native.Document_prepend,\n append: Native.Document_append,\n });\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport * as Utilities from '../Utilities.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n // `Node#nodeValue` is implemented on `Attr`.\n // `Node#textContent` is implemented on `Attr`, `Element`.\n\n Utilities.setPropertyUnchecked(Node.prototype, 'insertBefore',\n /**\n * @this {Node}\n * @param {!Node} node\n * @param {?Node} refNode\n * @return {!Node}\n */\n function(node, refNode) {\n if (node instanceof DocumentFragment) {\n const insertedNodes = Array.prototype.slice.apply(node.childNodes);\n const nativeResult = Native.Node_insertBefore.call(this, node, refNode);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeWasConnected = Utilities.isConnected(node);\n const nativeResult = Native.Node_insertBefore.call(this, node, refNode);\n\n if (nodeWasConnected) {\n internals.disconnectTree(node);\n }\n\n if (Utilities.isConnected(this)) {\n internals.connectTree(node);\n }\n\n return nativeResult;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'appendChild',\n /**\n * @this {Node}\n * @param {!Node} node\n * @return {!Node}\n */\n function(node) {\n if (node instanceof DocumentFragment) {\n const insertedNodes = Array.prototype.slice.apply(node.childNodes);\n const nativeResult = Native.Node_appendChild.call(this, node);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeWasConnected = Utilities.isConnected(node);\n const nativeResult = Native.Node_appendChild.call(this, node);\n\n if (nodeWasConnected) {\n internals.disconnectTree(node);\n }\n\n if (Utilities.isConnected(this)) {\n internals.connectTree(node);\n }\n\n return nativeResult;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'cloneNode',\n /**\n * @this {Node}\n * @param {boolean=} deep\n * @return {!Node}\n */\n function(deep) {\n const clone = Native.Node_cloneNode.call(this, deep);\n // Only create custom elements if this element's owner document is\n // associated with the registry.\n if (!this.ownerDocument.__CE_hasRegistry) {\n internals.patchTree(clone);\n } else {\n internals.patchAndUpgradeTree(clone);\n }\n return clone;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'removeChild',\n /**\n * @this {Node}\n * @param {!Node} node\n * @return {!Node}\n */\n function(node) {\n const nodeWasConnected = Utilities.isConnected(node);\n const nativeResult = Native.Node_removeChild.call(this, node);\n\n if (nodeWasConnected) {\n internals.disconnectTree(node);\n }\n\n return nativeResult;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'replaceChild',\n /**\n * @this {Node}\n * @param {!Node} nodeToInsert\n * @param {!Node} nodeToRemove\n * @return {!Node}\n */\n function(nodeToInsert, nodeToRemove) {\n if (nodeToInsert instanceof DocumentFragment) {\n const insertedNodes = Array.prototype.slice.apply(nodeToInsert.childNodes);\n const nativeResult = Native.Node_replaceChild.call(this, nodeToInsert, nodeToRemove);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n internals.disconnectTree(nodeToRemove);\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeToInsertWasConnected = Utilities.isConnected(nodeToInsert);\n const nativeResult = Native.Node_replaceChild.call(this, nodeToInsert, nodeToRemove);\n const thisIsConnected = Utilities.isConnected(this);\n\n if (thisIsConnected) {\n internals.disconnectTree(nodeToRemove);\n }\n\n if (nodeToInsertWasConnected) {\n internals.disconnectTree(nodeToInsert);\n }\n\n if (thisIsConnected) {\n internals.connectTree(nodeToInsert);\n }\n\n return nativeResult;\n });\n\n\n function patch_textContent(destination, baseDescriptor) {\n Object.defineProperty(destination, 'textContent', {\n enumerable: baseDescriptor.enumerable,\n configurable: true,\n get: baseDescriptor.get,\n set: /** @this {Node} */ function(assignedValue) {\n // If this is a text node then there are no nodes to disconnect.\n if (this.nodeType === Node.TEXT_NODE) {\n baseDescriptor.set.call(this, assignedValue);\n return;\n }\n\n let removedNodes = undefined;\n // Checking for `firstChild` is faster than reading `childNodes.length`\n // to compare with 0.\n if (this.firstChild) {\n // Using `childNodes` is faster than `children`, even though we only\n // care about elements.\n const childNodes = this.childNodes;\n const childNodesLength = childNodes.length;\n if (childNodesLength > 0 && Utilities.isConnected(this)) {\n // Copying an array by iterating is faster than using slice.\n removedNodes = new Array(childNodesLength);\n for (let i = 0; i < childNodesLength; i++) {\n removedNodes[i] = childNodes[i];\n }\n }\n }\n\n baseDescriptor.set.call(this, assignedValue);\n\n if (removedNodes) {\n for (let i = 0; i < removedNodes.length; i++) {\n internals.disconnectTree(removedNodes[i]);\n }\n }\n },\n });\n }\n\n if (Native.Node_textContent && Native.Node_textContent.get) {\n patch_textContent(Node.prototype, Native.Node_textContent);\n } else {\n internals.addPatch(function(element) {\n patch_textContent(element, {\n enumerable: true,\n configurable: true,\n // NOTE: This implementation of the `textContent` getter assumes that\n // text nodes' `textContent` getter will not be patched.\n get: /** @this {Node} */ function() {\n /** @type {!Array<string>} */\n const parts = [];\n\n for (let i = 0; i < this.childNodes.length; i++) {\n parts.push(this.childNodes[i].textContent);\n }\n\n return parts.join('');\n },\n set: /** @this {Node} */ function(assignedValue) {\n while (this.firstChild) {\n Native.Node_removeChild.call(this, this.firstChild);\n }\n Native.Node_appendChild.call(this, document.createTextNode(assignedValue));\n },\n });\n });\n }\n};\n","import CustomElementInternals from '../../CustomElementInternals.js';\nimport * as Utilities from '../../Utilities.js';\n\n/**\n * @typedef {{\n * before: !function(...(!Node|string)),\n * after: !function(...(!Node|string)),\n * replaceWith: !function(...(!Node|string)),\n * remove: !function(),\n * }}\n */\nlet ChildNodeNativeMethods;\n\n/**\n * @param {!CustomElementInternals} internals\n * @param {!Object} destination\n * @param {!ChildNodeNativeMethods} builtIn\n */\nexport default function(internals, destination, builtIn) {\n /**\n * @param {!function(...(!Node|string))} builtInMethod\n * @return {!function(...(!Node|string))}\n */\n function beforeAfterPatch(builtInMethod) {\n return function(...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n * @type {!Array<!Node>}\n */\n const flattenedNodes = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n * @type {!Array<!Node>}\n */\n const connectedElements = [];\n\n for (var i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n builtInMethod.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n };\n }\n\n if (builtIn.before !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'before', beforeAfterPatch(builtIn.before));\n }\n\n if (builtIn.before !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'after', beforeAfterPatch(builtIn.after));\n }\n\n if (builtIn.replaceWith !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'replaceWith',\n /**\n * @param {...(!Node|string)} nodes\n */\n function(...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n * @type {!Array<!Node>}\n */\n const flattenedNodes = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n * @type {!Array<!Node>}\n */\n const connectedElements = [];\n\n for (var i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n const wasConnected = Utilities.isConnected(this);\n\n builtIn.replaceWith.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (wasConnected) {\n internals.disconnectTree(this);\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n });\n }\n\n if (builtIn.remove !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'remove',\n function() {\n const wasConnected = Utilities.isConnected(this);\n\n builtIn.remove.call(this);\n\n if (wasConnected) {\n internals.disconnectTree(this);\n }\n });\n }\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport CEState from '../CustomElementState.js';\nimport * as Utilities from '../Utilities.js';\n\nimport PatchParentNode from './Interface/ParentNode.js';\nimport PatchChildNode from './Interface/ChildNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n if (Native.Element_attachShadow) {\n Utilities.setPropertyUnchecked(Element.prototype, 'attachShadow',\n /**\n * @this {Element}\n * @param {!{mode: string}} init\n * @return {ShadowRoot}\n */\n function(init) {\n const shadowRoot = Native.Element_attachShadow.call(this, init);\n this.__CE_shadowRoot = shadowRoot;\n return shadowRoot;\n });\n }\n\n\n function patch_innerHTML(destination, baseDescriptor) {\n Object.defineProperty(destination, 'innerHTML', {\n enumerable: baseDescriptor.enumerable,\n configurable: true,\n get: baseDescriptor.get,\n set: /** @this {Element} */ function(htmlString) {\n const isConnected = Utilities.isConnected(this);\n\n // NOTE: In IE11, when using the native `innerHTML` setter, all nodes\n // that were previously descendants of the context element have all of\n // their children removed as part of the set - the entire subtree is\n // 'disassembled'. This work around walks the subtree *before* using the\n // native setter.\n /** @type {!Array<!Element>|undefined} */\n let removedElements = undefined;\n if (isConnected) {\n removedElements = [];\n Utilities.walkDeepDescendantElements(this, element => {\n if (element !== this) {\n removedElements.push(element);\n }\n });\n }\n\n baseDescriptor.set.call(this, htmlString);\n\n if (removedElements) {\n for (let i = 0; i < removedElements.length; i++) {\n const element = removedElements[i];\n if (element.__CE_state === CEState.custom) {\n internals.disconnectedCallback(element);\n }\n }\n }\n\n // Only create custom elements if this element's owner document is\n // associated with the registry.\n if (!this.ownerDocument.__CE_hasRegistry) {\n internals.patchTree(this);\n } else {\n internals.patchAndUpgradeTree(this);\n }\n return htmlString;\n },\n });\n }\n\n if (Native.Element_innerHTML && Native.Element_innerHTML.get) {\n patch_innerHTML(Element.prototype, Native.Element_innerHTML);\n } else if (Native.HTMLElement_innerHTML && Native.HTMLElement_innerHTML.get) {\n patch_innerHTML(HTMLElement.prototype, Native.HTMLElement_innerHTML);\n } else {\n\n internals.addPatch(function(element) {\n patch_innerHTML(element, {\n enumerable: true,\n configurable: true,\n // Implements getting `innerHTML` by performing an unpatched `cloneNode`\n // of the element and returning the resulting element's `innerHTML`.\n // TODO: Is this too expensive?\n get: /** @this {Element} */ function() {\n return Native.Node_cloneNode.call(this, true).innerHTML;\n },\n // Implements setting `innerHTML` by creating an unpatched element,\n // setting `innerHTML` of that element and replacing the target\n // element's children with those of the unpatched element.\n set: /** @this {Element} */ function(assignedValue) {\n // NOTE: re-route to `content` for `template` elements.\n // We need to do this because `template.appendChild` does not\n // route into `template.content`.\n const isTemplate = (this.localName === 'template');\n /** @type {!Node} */\n const content = isTemplate ? (/** @type {!HTMLTemplateElement} */\n (this)).content : this;\n /** @type {!Node} */\n const rawElement = Native.Document_createElement.call(document,\n this.localName);\n rawElement.innerHTML = assignedValue;\n\n while (content.childNodes.length > 0) {\n Native.Node_removeChild.call(content, content.childNodes[0]);\n }\n const container = isTemplate ? rawElement.content : rawElement;\n while (container.childNodes.length > 0) {\n Native.Node_appendChild.call(content, container.childNodes[0]);\n }\n },\n });\n });\n }\n\n\n Utilities.setPropertyUnchecked(Element.prototype, 'setAttribute',\n /**\n * @this {Element}\n * @param {string} name\n * @param {string} newValue\n */\n function(name, newValue) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_setAttribute.call(this, name, newValue);\n }\n\n const oldValue = Native.Element_getAttribute.call(this, name);\n Native.Element_setAttribute.call(this, name, newValue);\n newValue = Native.Element_getAttribute.call(this, name);\n internals.attributeChangedCallback(this, name, oldValue, newValue, null);\n });\n\n Utilities.setPropertyUnchecked(Element.prototype, 'setAttributeNS',\n /**\n * @this {Element}\n * @param {?string} namespace\n * @param {string} name\n * @param {string} newValue\n */\n function(namespace, name, newValue) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_setAttributeNS.call(this, namespace, name, newValue);\n }\n\n const oldValue = Native.Element_getAttributeNS.call(this, namespace, name);\n Native.Element_setAttributeNS.call(this, namespace, name, newValue);\n newValue = Native.Element_getAttributeNS.call(this, namespace, name);\n internals.attributeChangedCallback(this, name, oldValue, newValue, namespace);\n });\n\n Utilities.setPropertyUnchecked(Element.prototype, 'removeAttribute',\n /**\n * @this {Element}\n * @param {string} name\n */\n function(name) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_removeAttribute.call(this, name);\n }\n\n const oldValue = Native.Element_getAttribute.call(this, name);\n Native.Element_removeAttribute.call(this, name);\n if (oldValue !== null) {\n internals.attributeChangedCallback(this, name, oldValue, null, null);\n }\n });\n\n Utilities.setPropertyUnchecked(Element.prototype, 'removeAttributeNS',\n /**\n * @this {Element}\n * @param {?string} namespace\n * @param {string} name\n */\n function(namespace, name) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_removeAttributeNS.call(this, namespace, name);\n }\n\n const oldValue = Native.Element_getAttributeNS.call(this, namespace, name);\n Native.Element_removeAttributeNS.call(this, namespace, name);\n // In older browsers, `Element#getAttributeNS` may return the empty string\n // instead of null if the attribute does not exist. For details, see;\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttributeNS#Notes\n const newValue = Native.Element_getAttributeNS.call(this, namespace, name);\n if (oldValue !== newValue) {\n internals.attributeChangedCallback(this, name, oldValue, newValue, namespace);\n }\n });\n\n\n function patch_insertAdjacentElement(destination, baseMethod) {\n Utilities.setPropertyUnchecked(destination, 'insertAdjacentElement',\n /**\n * @this {Element}\n * @param {string} position\n * @param {!Element} element\n * @return {?Element}\n */\n function(position, element) {\n const wasConnected = Utilities.isConnected(element);\n const insertedElement = /** @type {!Element} */\n (baseMethod.call(this, position, element));\n\n if (wasConnected) {\n internals.disconnectTree(element);\n }\n\n if (Utilities.isConnected(insertedElement)) {\n internals.connectTree(element);\n }\n return insertedElement;\n });\n }\n\n if (Native.HTMLElement_insertAdjacentElement) {\n patch_insertAdjacentElement(HTMLElement.prototype, Native.HTMLElement_insertAdjacentElement);\n } else if (Native.Element_insertAdjacentElement) {\n patch_insertAdjacentElement(Element.prototype, Native.Element_insertAdjacentElement);\n } else {\n console.warn('Custom Elements: `Element#insertAdjacentElement` was not patched.');\n }\n\n\n function patch_insertAdjacentHTML(destination, baseMethod) {\n /**\n * Patches and upgrades all nodes which are siblings between `start`\n * (inclusive) and `end` (exclusive). If `end` is `null`, then all siblings\n * following `start` will be patched and upgraded.\n * @param {!Node} start\n * @param {?Node} end\n */\n function upgradeNodesInRange(start, end) {\n const nodes = [];\n for (let node = start; node !== end; node = node.nextSibling) {\n nodes.push(node);\n }\n for (let i = 0; i < nodes.length; i++) {\n internals.patchAndUpgradeTree(nodes[i]);\n }\n }\n\n Utilities.setPropertyUnchecked(destination, 'insertAdjacentHTML',\n /**\n * @this {Element}\n * @param {string} position\n * @param {string} text\n */\n function(position, text) {\n position = position.toLowerCase();\n\n if (position === \"beforebegin\") {\n const marker = this.previousSibling;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(\n /** @type {!Node} */ (marker || this.parentNode.firstChild), this);\n } else if (position === \"afterbegin\") {\n const marker = this.firstChild;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(/** @type {!Node} */ (this.firstChild), marker);\n } else if (position === \"beforeend\") {\n const marker = this.lastChild;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(marker || this.firstChild, null);\n } else if (position === \"afterend\") {\n const marker = this.nextSibling;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(/** @type {!Node} */ (this.nextSibling), marker);\n } else {\n throw new SyntaxError(`The value provided (${String(position)}) is ` +\n \"not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'.\");\n }\n });\n }\n\n if (Native.HTMLElement_insertAdjacentHTML) {\n patch_insertAdjacentHTML(HTMLElement.prototype, Native.HTMLElement_insertAdjacentHTML);\n } else if (Native.Element_insertAdjacentHTML) {\n patch_insertAdjacentHTML(Element.prototype, Native.Element_insertAdjacentHTML);\n } else {\n console.warn('Custom Elements: `Element#insertAdjacentHTML` was not patched.');\n }\n\n\n PatchParentNode(internals, Element.prototype, {\n prepend: Native.Element_prepend,\n append: Native.Element_append,\n });\n\n PatchChildNode(internals, Element.prototype, {\n before: Native.Element_before,\n after: Native.Element_after,\n replaceWith: Native.Element_replaceWith,\n remove: Native.Element_remove,\n });\n};\n","import CustomElementInternals from '../CustomElementInternals.js';\nimport Native from './Native.js';\nimport PatchParentNode from './Interface/ParentNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n PatchParentNode(internals, DocumentFragment.prototype, {\n prepend: Native.DocumentFragment_prepend,\n append: Native.DocumentFragment_append,\n });\n};\n","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n'use strict';\n\nlet customElements = window['customElements'];\nlet HTMLImports = window['HTMLImports'];\nlet Template = window['HTMLTemplateElement'];\n\n// global for (1) existence means `WebComponentsReady` will file,\n// (2) WebComponents.ready == true means event has fired.\nwindow.WebComponents = window.WebComponents || {};\n\nif (customElements && customElements['polyfillWrapFlushCallback']) {\n // Here we ensure that the public `HTMLImports.whenReady`\n // always comes *after* custom elements have upgraded.\n let flushCallback;\n let runAndClearCallback = function runAndClearCallback() {\n if (flushCallback) {\n // make sure to run the HTMLTemplateElement polyfill before custom elements upgrade\n if (Template.bootstrap) {\n Template.bootstrap(window.document);\n }\n let cb = flushCallback;\n flushCallback = null;\n cb();\n return true;\n }\n }\n let origWhenReady = HTMLImports['whenReady'];\n customElements['polyfillWrapFlushCallback'](function(cb) {\n flushCallback = cb;\n origWhenReady(runAndClearCallback);\n });\n\n HTMLImports['whenReady'] = function(cb) {\n origWhenReady(function() {\n // custom element code may add dynamic imports\n // to match processing of native custom elements before\n // domContentLoaded, we wait for these imports to resolve first.\n if (runAndClearCallback()) {\n HTMLImports['whenReady'](cb);\n } else {\n cb();\n }\n });\n }\n\n}\n\nHTMLImports['whenReady'](function() {\n requestAnimationFrame(function() {\n window.WebComponents.ready = true;\n document.dispatchEvent(new CustomEvent('WebComponentsReady', {bubbles: true}));\n });\n});","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n'use strict';\n// It's desireable to provide a default stylesheet\n// that's convenient for styling unresolved elements, but\n// it's cumbersome to have to include this manually in every page.\n// It would make sense to put inside some HTMLImport but\n// the HTMLImports polyfill does not allow loading of stylesheets\n// that block rendering. Therefore this injection is tolerated here.\n//\n// NOTE: position: relative fixes IE's failure to inherit opacity\n// when a child is not statically positioned.\nlet style = document.createElement('style');\nstyle.textContent = ''\n + 'body {'\n + 'transition: opacity ease-in 0.2s;'\n + ' } \\n'\n + 'body[unresolved] {'\n + 'opacity: 0; display: block; overflow: hidden; position: relative;'\n + ' } \\n'\n ;\nlet head = document.querySelector('head');\nhead.insertBefore(style, head.firstChild);"]} \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd-ce.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd-ce.js
new file mode 100644
index 00000000000..8a1a917a94f
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd-ce.js
@@ -0,0 +1,198 @@
+/**
+@license @nocompile
+Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+(function(){/*
+
+ Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ Code distributed by Google as part of the polymer project is also
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+'use strict';var n,q="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,ba="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};function ca(){ca=function(){};q.Symbol||(q.Symbol=da)}var da=function(){var a=0;return function(b){return"jscomp_symbol_"+(b||"")+a++}}();
+function ea(){ca();var a=q.Symbol.iterator;a||(a=q.Symbol.iterator=q.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&ba(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return fa(this)}});ea=function(){}}function fa(a){var b=0;return ha(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function ha(a){ea();a={next:a};a[q.Symbol.iterator]=function(){return this};return a}function ia(a){ea();var b=a[Symbol.iterator];return b?b.call(a):fa(a)}
+function ka(a){for(var b,c=[];!(b=a.next()).done;)c.push(b.value);return c}
+(function(a){function b(a,b){if("function"===typeof window.CustomEvent)return new CustomEvent(a,b);var c=document.createEvent("CustomEvent");c.initCustomEvent(a,!!b.bubbles,!!b.cancelable,b.detail);return c}function c(a){if(E)return a.ownerDocument!==document?a.ownerDocument:null;var b=a.__importDoc;if(!b&&a.parentNode){b=a.parentNode;if("function"===typeof b.closest)b=b.closest("link[rel=import]");else for(;!g(b)&&(b=b.parentNode););a.__importDoc=b}return b}function d(a){var b=m(document,"link[rel=import]:not([import-dependency])"),
+c=b.length;c?p(b,function(b){return h(b,function(){0===--c&&a()})}):a()}function e(a){function b(){"loading"!==document.readyState&&document.body&&(document.removeEventListener("readystatechange",b),a())}document.addEventListener("readystatechange",b);b()}function f(a){e(function(){return d(function(){return a&&a()})})}function h(a,b){if(a.__loaded)b&&b();else if("script"===a.localName&&!a.src||"style"===a.localName&&!a.firstChild)a.__loaded=!0,b&&b();else{var c=function(d){a.removeEventListener(d.type,
+c);a.__loaded=!0;b&&b()};a.addEventListener("load",c);Pa&&"style"===a.localName||a.addEventListener("error",c)}}function g(a){return a.nodeType===Node.ELEMENT_NODE&&"link"===a.localName&&"import"===a.rel}function k(){var a=this;this.a={};this.b=0;this.c=new MutationObserver(function(b){return a.Ka(b)});this.c.observe(document.head,{childList:!0,subtree:!0});this.loadImports(document)}function l(a){p(m(a,"template"),function(a){p(m(a.content,'script:not([type]),script[type="application/javascript"],script[type="text/javascript"]'),
+function(a){var b=document.createElement("script");p(a.attributes,function(a){return b.setAttribute(a.name,a.value)});b.textContent=a.textContent;a.parentNode.replaceChild(b,a)});l(a.content)})}function m(a,b){return a.childNodes.length?a.querySelectorAll(b):aa}function p(a,b,c){var d=a?a.length:0,e=c?-1:1;for(c=c?d-1:0;c<d&&0<=c;c+=e)b(a[c],c)}var z=document.createElement("link"),E="import"in z,aa=z.querySelectorAll("*"),Qa=null;!1==="currentScript"in document&&Object.defineProperty(document,"currentScript",
+{get:function(){return Qa||("complete"!==document.readyState?document.scripts[document.scripts.length-1]:null)},configurable:!0});var ke=/(url\()([^)]*)(\))/g,le=/(@import[\s]+(?!url\())([^;]*)(;)/g,me=/(<link[^>]*)(rel=['|"]?stylesheet['|"]?[^>]*>)/g,H={Ea:function(a,b){a.href&&a.setAttribute("href",H.U(a.getAttribute("href"),b));a.src&&a.setAttribute("src",H.U(a.getAttribute("src"),b));if("style"===a.localName){var c=H.oa(a.textContent,b,ke);a.textContent=H.oa(c,b,le)}},oa:function(a,b,c){return a.replace(c,
+function(a,c,d,e){a=d.replace(/["']/g,"");b&&(a=H.U(a,b));return c+"'"+a+"'"+e})},U:function(a,b){if(void 0===H.$){H.$=!1;try{var c=new URL("b","http://a");c.pathname="c%20d";H.$="http://a/c%20d"===c.href}catch(gg){}}if(H.$)return(new URL(a,b)).href;c=H.va;c||(c=document.implementation.createHTMLDocument("temp"),H.va=c,c.ha=c.createElement("base"),c.head.appendChild(c.ha),c.ga=c.createElement("a"));c.ha.href=b;c.ga.href=a;return c.ga.href||a}},Xb={async:!0,load:function(a,b,c){if(a)if(a.match(/^data:/)){a=
+a.split(",");var d=a[1];d=-1<a[0].indexOf(";base64")?atob(d):decodeURIComponent(d);b(d)}else{var e=new XMLHttpRequest;e.open("GET",a,Xb.async);e.onload=function(){var a=e.responseURL||e.getResponseHeader("Location");a&&0===a.indexOf("/")&&(a=(location.origin||location.protocol+"//"+location.host)+a);var d=e.response||e.responseText;304===e.status||0===e.status||200<=e.status&&300>e.status?b(d,a):c(d)};e.send()}else c("error: href must be specified")}},Pa=/Trident/.test(navigator.userAgent)||/Edge\/\d./i.test(navigator.userAgent);
+k.prototype.loadImports=function(a){var b=this;a=m(a,"link[rel=import]");p(a,function(a){return b.m(a)})};k.prototype.m=function(a){var b=this,c=a.href;if(void 0!==this.a[c]){var d=this.a[c];d&&d.__loaded&&(a.__import=d,this.g(a))}else this.b++,this.a[c]="pending",Xb.load(c,function(a,d){a=b.La(a,d||c);b.a[c]=a;b.b--;b.loadImports(a);b.H()},function(){b.a[c]=null;b.b--;b.H()})};k.prototype.La=function(a,b){if(!a)return document.createDocumentFragment();Pa&&(a=a.replace(me,function(a,b,c){return-1===
+a.indexOf("type=")?b+" type=import-disable "+c:a}));var c=document.createElement("template");c.innerHTML=a;if(c.content)a=c.content,l(a);else for(a=document.createDocumentFragment();c.firstChild;)a.appendChild(c.firstChild);if(c=a.querySelector("base"))b=H.U(c.getAttribute("href"),b),c.removeAttribute("href");c=m(a,'link[rel=import],link[rel=stylesheet][href][type=import-disable],style:not([type]),link[rel=stylesheet][href]:not([type]),script:not([type]),script[type="application/javascript"],script[type="text/javascript"]');
+var d=0;p(c,function(a){h(a);H.Ea(a,b);a.setAttribute("import-dependency","");"script"===a.localName&&!a.src&&a.textContent&&(a.setAttribute("src","data:text/javascript;charset=utf-8,"+encodeURIComponent(a.textContent+("\n//# sourceURL="+b+(d?"-"+d:"")+".js\n"))),a.textContent="",d++)});return a};k.prototype.H=function(){var a=this;if(!this.b){this.c.disconnect();this.flatten(document);var b=!1,c=!1,d=function(){c&&b&&(a.loadImports(document),a.b||(a.c.observe(document.head,{childList:!0,subtree:!0}),
+a.Ia()))};this.Na(function(){c=!0;d()});this.Ma(function(){b=!0;d()})}};k.prototype.flatten=function(a){var b=this;a=m(a,"link[rel=import]");p(a,function(a){var c=b.a[a.href];(a.__import=c)&&c.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(b.a[a.href]=a,a.readyState="loading",a.__import=a,b.flatten(c),a.appendChild(c))})};k.prototype.Ma=function(a){function b(e){if(e<d){var f=c[e],g=document.createElement("script");f.removeAttribute("import-dependency");p(f.attributes,function(a){return g.setAttribute(a.name,
+a.value)});Qa=g;f.parentNode.replaceChild(g,f);h(g,function(){Qa=null;b(e+1)})}else a()}var c=m(document,"script[import-dependency]"),d=c.length;b(0)};k.prototype.Na=function(a){var b=m(document,"style[import-dependency],link[rel=stylesheet][import-dependency]"),d=b.length;if(d){var e=Pa&&!!document.querySelector("link[rel=stylesheet][href][type=import-disable]");p(b,function(b){h(b,function(){b.removeAttribute("import-dependency");0===--d&&a()});if(e&&b.parentNode!==document.head){var f=document.createElement(b.localName);
+f.__appliedElement=b;f.setAttribute("type","import-placeholder");b.parentNode.insertBefore(f,b.nextSibling);for(f=c(b);f&&c(f);)f=c(f);f.parentNode!==document.head&&(f=null);document.head.insertBefore(b,f);b.removeAttribute("type")}})}else a()};k.prototype.Ia=function(){var a=this,b=m(document,"link[rel=import]");p(b,function(b){return a.g(b)},!0)};k.prototype.g=function(a){a.__loaded||(a.__loaded=!0,a.import&&(a.import.readyState="complete"),a.dispatchEvent(b(a.import?"load":"error",{bubbles:!1,
+cancelable:!1,detail:void 0})))};k.prototype.Ka=function(a){var b=this;p(a,function(a){return p(a.addedNodes,function(a){a&&a.nodeType===Node.ELEMENT_NODE&&(g(a)?b.m(a):b.loadImports(a))})})};var Ra=null;if(E)z=m(document,"link[rel=import]"),p(z,function(a){a.import&&"loading"===a.import.readyState||(a.__loaded=!0)}),z=function(a){a=a.target;g(a)&&(a.__loaded=!0)},document.addEventListener("load",z,!0),document.addEventListener("error",z,!0);else{var ja=Object.getOwnPropertyDescriptor(Node.prototype,
+"baseURI");Object.defineProperty((!ja||ja.configurable?Node:Element).prototype,"baseURI",{get:function(){var a=g(this)?this:c(this);return a?a.href:ja&&ja.get?ja.get.call(this):(document.querySelector("base")||window.location).href},configurable:!0,enumerable:!0});Object.defineProperty(HTMLLinkElement.prototype,"import",{get:function(){return this.__import||null},configurable:!0,enumerable:!0});e(function(){Ra=new k})}f(function(){return document.dispatchEvent(b("HTMLImportsLoaded",{cancelable:!0,
+bubbles:!0,detail:void 0}))});a.useNative=E;a.whenReady=f;a.importForElement=c;a.loadImports=function(a){Ra&&Ra.loadImports(a)}})(window.HTMLImports=window.HTMLImports||{});/*
+
+Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+function la(){this.na=this.root=null;this.R=!1;this.A=this.M=this.da=this.assignedSlot=this.assignedNodes=this.F=null;this.childNodes=this.nextSibling=this.previousSibling=this.lastChild=this.firstChild=this.parentNode=this.I=void 0;this.ta=this.ia=!1}la.prototype.toJSON=function(){return{}};function r(a){a.Y||(a.Y=new la);return a.Y}function t(a){return a&&a.Y};var u=window.ShadyDOM||{};u.Ga=!(!Element.prototype.attachShadow||!Node.prototype.getRootNode);var ma=Object.getOwnPropertyDescriptor(Node.prototype,"firstChild");u.u=!!(ma&&ma.configurable&&ma.get);u.la=u.force||!u.Ga;var na=navigator.userAgent.match("Trident"),oa=navigator.userAgent.match("Edge");void 0===u.qa&&(u.qa=u.u&&(na||oa));function v(a){return(a=t(a))&&void 0!==a.firstChild}function w(a){return"ShadyRoot"===a.ya}function pa(a){a=a.getRootNode();if(w(a))return a}
+var qa=Element.prototype,ra=qa.matches||qa.matchesSelector||qa.mozMatchesSelector||qa.msMatchesSelector||qa.oMatchesSelector||qa.webkitMatchesSelector;function sa(a,b){if(a&&b)for(var c=Object.getOwnPropertyNames(b),d=0,e;d<c.length&&(e=c[d]);d++){var f=Object.getOwnPropertyDescriptor(b,e);f&&Object.defineProperty(a,e,f)}}function ta(a,b){for(var c=[],d=1;d<arguments.length;++d)c[d-1]=arguments[d];for(d=0;d<c.length;d++)sa(a,c[d]);return a}function ua(a,b){for(var c in b)a[c]=b[c]}
+var va=document.createTextNode(""),wa=0,xa=[];(new MutationObserver(function(){for(;xa.length;)try{xa.shift()()}catch(a){throw va.textContent=wa++,a;}})).observe(va,{characterData:!0});function ya(a){xa.push(a);va.textContent=wa++}var za=!!document.contains;function Aa(a,b){for(;b;){if(b==a)return!0;b=b.parentNode}return!1};var Ba=[],Ca;function Da(a){Ca||(Ca=!0,ya(Ea));Ba.push(a)}function Ea(){Ca=!1;for(var a=!!Ba.length;Ba.length;)Ba.shift()();return a}Ea.list=Ba;function Fa(){this.a=!1;this.addedNodes=[];this.removedNodes=[];this.P=new Set}function Ga(a){a.a||(a.a=!0,ya(function(){Ha(a)}))}function Ha(a){if(a.a){a.a=!1;var b=a.takeRecords();b.length&&a.P.forEach(function(a){a(b)})}}Fa.prototype.takeRecords=function(){if(this.addedNodes.length||this.removedNodes.length){var a=[{addedNodes:this.addedNodes,removedNodes:this.removedNodes}];this.addedNodes=[];this.removedNodes=[];return a}return[]};
+function Ia(a,b){var c=r(a);c.F||(c.F=new Fa);c.F.P.add(b);var d=c.F;return{wa:b,C:d,za:a,takeRecords:function(){return d.takeRecords()}}}function Ja(a){var b=a&&a.C;b&&(b.P.delete(a.wa),b.P.size||(r(a.za).F=null))}
+function Ka(a,b){var c=b.getRootNode();return a.map(function(a){var b=c===a.target.getRootNode();if(b&&a.addedNodes){if(b=Array.from(a.addedNodes).filter(function(a){return c===a.getRootNode()}),b.length)return a=Object.create(a),Object.defineProperty(a,"addedNodes",{value:b,configurable:!0}),a}else if(b)return a}).filter(function(a){return a})};var x={},La=Element.prototype.insertBefore,Ma=Element.prototype.replaceChild,Na=Element.prototype.removeChild,Oa=Element.prototype.setAttribute,Sa=Element.prototype.removeAttribute,Ta=Element.prototype.cloneNode,Ua=Document.prototype.importNode,Va=Element.prototype.addEventListener,Wa=Element.prototype.removeEventListener,Xa=Window.prototype.addEventListener,Ya=Window.prototype.removeEventListener,Za=Element.prototype.dispatchEvent,$a=Node.prototype.contains||HTMLElement.prototype.contains,ab=Document.prototype.getElementById,
+bb=Element.prototype.querySelector,cb=DocumentFragment.prototype.querySelector,db=Document.prototype.querySelector,eb=Element.prototype.querySelectorAll,fb=DocumentFragment.prototype.querySelectorAll,gb=Document.prototype.querySelectorAll;x.appendChild=Element.prototype.appendChild;x.insertBefore=La;x.replaceChild=Ma;x.removeChild=Na;x.setAttribute=Oa;x.removeAttribute=Sa;x.cloneNode=Ta;x.importNode=Ua;x.addEventListener=Va;x.removeEventListener=Wa;x.Ua=Xa;x.Va=Ya;x.dispatchEvent=Za;x.contains=$a;
+x.getElementById=ab;x.cb=bb;x.gb=cb;x.ab=db;x.querySelector=function(a){switch(this.nodeType){case Node.ELEMENT_NODE:return bb.call(this,a);case Node.DOCUMENT_NODE:return db.call(this,a);default:return cb.call(this,a)}};x.eb=eb;x.hb=fb;x.bb=gb;x.querySelectorAll=function(a){switch(this.nodeType){case Node.ELEMENT_NODE:return eb.call(this,a);case Node.DOCUMENT_NODE:return gb.call(this,a);default:return fb.call(this,a)}};var hb=/[&\u00A0"]/g,ib=/[&\u00A0<>]/g;function jb(a){switch(a){case "&":return"&amp;";case "<":return"&lt;";case ">":return"&gt;";case '"':return"&quot;";case "\u00a0":return"&nbsp;"}}function kb(a){for(var b={},c=0;c<a.length;c++)b[a[c]]=!0;return b}var lb=kb("area base br col command embed hr img input keygen link meta param source track wbr".split(" ")),mb=kb("style script xmp iframe noembed noframes plaintext noscript".split(" "));
+function nb(a,b){"template"===a.localName&&(a=a.content);for(var c="",d=b?b(a):a.childNodes,e=0,f=d.length,h;e<f&&(h=d[e]);e++){a:{var g=h;var k=a;var l=b;switch(g.nodeType){case Node.ELEMENT_NODE:for(var m=g.localName,p="<"+m,z=g.attributes,E=0;k=z[E];E++)p+=" "+k.name+'="'+k.value.replace(hb,jb)+'"';p+=">";g=lb[m]?p:p+nb(g,l)+"</"+m+">";break a;case Node.TEXT_NODE:g=g.data;g=k&&mb[k.localName]?g:g.replace(ib,jb);break a;case Node.COMMENT_NODE:g="\x3c!--"+g.data+"--\x3e";break a;default:throw window.console.error(g),
+Error("not implemented");}}c+=g}return c};var y={},A=document.createTreeWalker(document,NodeFilter.SHOW_ALL,null,!1),B=document.createTreeWalker(document,NodeFilter.SHOW_ELEMENT,null,!1);function ob(a){var b=[];A.currentNode=a;for(a=A.firstChild();a;)b.push(a),a=A.nextSibling();return b}y.parentNode=function(a){A.currentNode=a;return A.parentNode()};y.firstChild=function(a){A.currentNode=a;return A.firstChild()};y.lastChild=function(a){A.currentNode=a;return A.lastChild()};y.previousSibling=function(a){A.currentNode=a;return A.previousSibling()};
+y.nextSibling=function(a){A.currentNode=a;return A.nextSibling()};y.childNodes=ob;y.parentElement=function(a){B.currentNode=a;return B.parentNode()};y.firstElementChild=function(a){B.currentNode=a;return B.firstChild()};y.lastElementChild=function(a){B.currentNode=a;return B.lastChild()};y.previousElementSibling=function(a){B.currentNode=a;return B.previousSibling()};y.nextElementSibling=function(a){B.currentNode=a;return B.nextSibling()};
+y.children=function(a){var b=[];B.currentNode=a;for(a=B.firstChild();a;)b.push(a),a=B.nextSibling();return b};y.innerHTML=function(a){return nb(a,function(a){return ob(a)})};y.textContent=function(a){switch(a.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:a=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1);for(var b="",c;c=a.nextNode();)b+=c.nodeValue;return b;default:return a.nodeValue}};var C={},pb=u.u,qb=[Node.prototype,Element.prototype,HTMLElement.prototype];function D(a){var b;a:{for(b=0;b<qb.length;b++){var c=qb[b];if(c.hasOwnProperty(a)){b=c;break a}}b=void 0}if(!b)throw Error("Could not find descriptor for "+a);return Object.getOwnPropertyDescriptor(b,a)}
+var F=pb?{parentNode:D("parentNode"),firstChild:D("firstChild"),lastChild:D("lastChild"),previousSibling:D("previousSibling"),nextSibling:D("nextSibling"),childNodes:D("childNodes"),parentElement:D("parentElement"),previousElementSibling:D("previousElementSibling"),nextElementSibling:D("nextElementSibling"),innerHTML:D("innerHTML"),textContent:D("textContent"),firstElementChild:D("firstElementChild"),lastElementChild:D("lastElementChild"),children:D("children")}:{},rb=pb?{firstElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,
+"firstElementChild"),lastElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,"lastElementChild"),children:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,"children")}:{},sb=pb?{firstElementChild:Object.getOwnPropertyDescriptor(Document.prototype,"firstElementChild"),lastElementChild:Object.getOwnPropertyDescriptor(Document.prototype,"lastElementChild"),children:Object.getOwnPropertyDescriptor(Document.prototype,"children")}:{};C.ma=F;C.fb=rb;C.$a=sb;C.parentNode=function(a){return F.parentNode.get.call(a)};
+C.firstChild=function(a){return F.firstChild.get.call(a)};C.lastChild=function(a){return F.lastChild.get.call(a)};C.previousSibling=function(a){return F.previousSibling.get.call(a)};C.nextSibling=function(a){return F.nextSibling.get.call(a)};C.childNodes=function(a){return Array.prototype.slice.call(F.childNodes.get.call(a))};C.parentElement=function(a){return F.parentElement.get.call(a)};C.previousElementSibling=function(a){return F.previousElementSibling.get.call(a)};C.nextElementSibling=function(a){return F.nextElementSibling.get.call(a)};
+C.innerHTML=function(a){return F.innerHTML.get.call(a)};C.textContent=function(a){return F.textContent.get.call(a)};C.children=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:a=rb.children.get.call(a);break;case Node.DOCUMENT_NODE:a=sb.children.get.call(a);break;default:a=F.children.get.call(a)}return Array.prototype.slice.call(a)};
+C.firstElementChild=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return rb.firstElementChild.get.call(a);case Node.DOCUMENT_NODE:return sb.firstElementChild.get.call(a);default:return F.firstElementChild.get.call(a)}};C.lastElementChild=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return rb.lastElementChild.get.call(a);case Node.DOCUMENT_NODE:return sb.lastElementChild.get.call(a);default:return F.lastElementChild.get.call(a)}};var G=u.qa?C:y;function tb(a){for(;a.firstChild;)a.removeChild(a.firstChild)}
+var ub=u.u,vb=document.implementation.createHTMLDocument("inert"),wb=Object.getOwnPropertyDescriptor(Node.prototype,"isConnected"),xb=wb&&wb.get,yb=Object.getOwnPropertyDescriptor(Document.prototype,"activeElement"),zb={parentElement:{get:function(){var a=t(this);(a=a&&a.parentNode)&&a.nodeType!==Node.ELEMENT_NODE&&(a=null);return void 0!==a?a:G.parentElement(this)},configurable:!0},parentNode:{get:function(){var a=t(this);a=a&&a.parentNode;return void 0!==a?a:G.parentNode(this)},configurable:!0},
+nextSibling:{get:function(){var a=t(this);a=a&&a.nextSibling;return void 0!==a?a:G.nextSibling(this)},configurable:!0},previousSibling:{get:function(){var a=t(this);a=a&&a.previousSibling;return void 0!==a?a:G.previousSibling(this)},configurable:!0},nextElementSibling:{get:function(){var a=t(this);if(a&&void 0!==a.nextSibling){for(a=this.nextSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return G.nextElementSibling(this)},configurable:!0},previousElementSibling:{get:function(){var a=
+t(this);if(a&&void 0!==a.previousSibling){for(a=this.previousSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return G.previousElementSibling(this)},configurable:!0}},Ab={className:{get:function(){return this.getAttribute("class")||""},set:function(a){this.setAttribute("class",a)},configurable:!0}},Bb={childNodes:{get:function(){if(v(this)){var a=t(this);if(!a.childNodes){a.childNodes=[];for(var b=this.firstChild;b;b=b.nextSibling)a.childNodes.push(b)}var c=a.childNodes}else c=
+G.childNodes(this);c.item=function(a){return c[a]};return c},configurable:!0},childElementCount:{get:function(){return this.children.length},configurable:!0},firstChild:{get:function(){var a=t(this);a=a&&a.firstChild;return void 0!==a?a:G.firstChild(this)},configurable:!0},lastChild:{get:function(){var a=t(this);a=a&&a.lastChild;return void 0!==a?a:G.lastChild(this)},configurable:!0},textContent:{get:function(){if(v(this)){for(var a=[],b=0,c=this.childNodes,d;d=c[b];b++)d.nodeType!==Node.COMMENT_NODE&&
+a.push(d.textContent);return a.join("")}return G.textContent(this)},set:function(a){if("undefined"===typeof a||null===a)a="";switch(this.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:if(!v(this)&&ub){var b=this.firstChild;(b!=this.lastChild||b&&b.nodeType!=Node.TEXT_NODE)&&tb(this);C.ma.textContent.set.call(this,a)}else tb(this),(0<a.length||this.nodeType===Node.ELEMENT_NODE)&&this.appendChild(document.createTextNode(a));break;default:this.nodeValue=a}},configurable:!0},firstElementChild:{get:function(){var a=
+t(this);if(a&&void 0!==a.firstChild){for(a=this.firstChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return G.firstElementChild(this)},configurable:!0},lastElementChild:{get:function(){var a=t(this);if(a&&void 0!==a.lastChild){for(a=this.lastChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return G.lastElementChild(this)},configurable:!0},children:{get:function(){var a=v(this)?Array.prototype.filter.call(this.childNodes,function(a){return a.nodeType===Node.ELEMENT_NODE}):
+G.children(this);a.item=function(b){return a[b]};return a},configurable:!0},innerHTML:{get:function(){return v(this)?nb("template"===this.localName?this.content:this):G.innerHTML(this)},set:function(a){var b="template"===this.localName?this.content:this;tb(b);var c=this.localName;c&&"template"!==c||(c="div");c=vb.createElement(c);for(ub?C.ma.innerHTML.set.call(c,a):c.innerHTML=a;c.firstChild;)b.appendChild(c.firstChild)},configurable:!0}},Cb={shadowRoot:{get:function(){var a=t(this);return a&&a.na||
+null},configurable:!0}},Db={activeElement:{get:function(){var a=yb&&yb.get?yb.get.call(document):u.u?void 0:document.activeElement;if(a&&a.nodeType){var b=!!w(this);if(this===document||b&&this.host!==a&&x.contains.call(this.host,a)){for(b=pa(a);b&&b!==this;)a=b.host,b=pa(a);a=this===document?b?null:a:b===this?a:null}else a=null}else a=null;return a},set:function(){},configurable:!0}};
+function I(a,b,c){for(var d in b){var e=Object.getOwnPropertyDescriptor(a,d);e&&e.configurable||!e&&c?Object.defineProperty(a,d,b[d]):c&&console.warn("Could not define",d,"on",a)}}function J(a){I(a,zb);I(a,Ab);I(a,Bb);I(a,Db)}
+function Eb(){var a=Fb.prototype;a.__proto__=DocumentFragment.prototype;I(a,zb,!0);I(a,Bb,!0);I(a,Db,!0);Object.defineProperties(a,{nodeType:{value:Node.DOCUMENT_FRAGMENT_NODE,configurable:!0},nodeName:{value:"#document-fragment",configurable:!0},nodeValue:{value:null,configurable:!0}});["localName","namespaceURI","prefix"].forEach(function(b){Object.defineProperty(a,b,{value:void 0,configurable:!0})});["ownerDocument","baseURI","isConnected"].forEach(function(b){Object.defineProperty(a,b,{get:function(){return this.host[b]},
+configurable:!0})})}var Gb=u.u?function(){}:function(a){var b=r(a);b.ia||(b.ia=!0,I(a,zb,!0),I(a,Ab,!0))},Hb=u.u?function(){}:function(a){r(a).ta||(I(a,Bb,!0),I(a,Cb,!0))};var Ib=G.childNodes;function Jb(a,b,c){Gb(a);c=c||null;var d=r(a),e=r(b),f=c?r(c):null;d.previousSibling=c?f.previousSibling:b.lastChild;if(f=t(d.previousSibling))f.nextSibling=a;if(f=t(d.nextSibling=c))f.previousSibling=a;d.parentNode=b;c?c===e.firstChild&&(e.firstChild=a):(e.lastChild=a,e.firstChild||(e.firstChild=a));e.childNodes=null}
+function Kb(a,b){var c=r(a);if(void 0===c.firstChild)for(b=b||Ib(a),c.firstChild=b[0]||null,c.lastChild=b[b.length-1]||null,Hb(a),c=0;c<b.length;c++){var d=b[c],e=r(d);e.parentNode=a;e.nextSibling=b[c+1]||null;e.previousSibling=b[c-1]||null;Gb(d)}};var Lb=G.parentNode;
+function Mb(a,b,c){if(b===a)throw Error("Failed to execute 'appendChild' on 'Node': The new child element contains the parent.");if(c){var d=t(c);d=d&&d.parentNode;if(void 0!==d&&d!==a||void 0===d&&Lb(c)!==a)throw Error("Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.");}if(c===b)return b;b.parentNode&&Nb(b.parentNode,b);var e,f;if(!b.__noInsertionPoint){if(f=e=pa(a)){var h;"slot"===b.localName?h=[b]:b.querySelectorAll&&
+(h=b.querySelectorAll("slot"));f=h&&h.length?h:void 0}f&&(h=e,d=f,h.s=h.s||[],h.f=h.f||[],h.h=h.h||{},h.s.push.apply(h.s,[].concat(d instanceof Array?d:ka(ia(d)))))}("slot"===a.localName||f)&&(e=e||pa(a))&&Ob(e);if(v(a)){e=c;Hb(a);f=r(a);void 0!==f.firstChild&&(f.childNodes=null);if(b.nodeType===Node.DOCUMENT_FRAGMENT_NODE){f=b.childNodes;for(h=0;h<f.length;h++)Jb(f[h],a,e);e=r(b);f=void 0!==e.firstChild?null:void 0;e.firstChild=e.lastChild=f;e.childNodes=f}else Jb(b,a,e);e=t(a);if(Pb(a)){Ob(e.root);
+var g=!0}else e.root&&(g=!0)}g||(g=w(a)?a.host:a,c?(c=Qb(c),x.insertBefore.call(g,b,c)):x.appendChild.call(g,b));Rb(a,b);return b}
+function Nb(a,b){if(b.parentNode!==a)throw Error("The node to be removed is not a child of this node: "+b);var c=pa(b),d=t(a);if(v(a)){var e=r(b),f=r(a);b===f.firstChild&&(f.firstChild=e.nextSibling);b===f.lastChild&&(f.lastChild=e.previousSibling);var h=e.previousSibling,g=e.nextSibling;h&&(r(h).nextSibling=g);g&&(r(g).previousSibling=h);e.parentNode=e.previousSibling=e.nextSibling=void 0;void 0!==f.childNodes&&(f.childNodes=null);if(Pb(a)){Ob(d.root);var k=!0}}Sb(b);if(c){(e=a&&"slot"===a.localName)&&
+(k=!0);if(c.f){Tb(c);f=c.h;for(aa in f)for(h=f[aa],g=0;g<h.length;g++){var l=h[g];if(Aa(b,l)){h.splice(g,1);var m=c.f.indexOf(l);0<=m&&c.f.splice(m,1);g--;m=t(l);if(l=m.A)for(var p=0;p<l.length;p++){var z=l[p],E=Ub(z);E&&x.removeChild.call(E,z)}m.A=[];m.assignedNodes=[];m=!0}}var aa=m}else aa=void 0;(aa||e)&&Ob(c)}k||(k=w(a)?a.host:a,(!d.root&&"slot"!==b.localName||k===Lb(b))&&x.removeChild.call(k,b));Rb(a,null,b);return b}
+function Sb(a){var b=t(a);if(b&&void 0!==b.I){b=a.childNodes;for(var c=0,d=b.length,e;c<d&&(e=b[c]);c++)Sb(e)}if(a=t(a))a.I=void 0}function Qb(a){var b=a;a&&"slot"===a.localName&&(b=(b=(b=t(a))&&b.A)&&b.length?b[0]:Qb(a.nextSibling));return b}function Pb(a){return(a=(a=t(a))&&a.root)&&Vb(a)}
+function Wb(a,b){if("slot"===b)a=a.parentNode,Pb(a)&&Ob(t(a).root);else if("slot"===a.localName&&"name"===b&&(b=pa(a))){if(b.f){var c=a.ua,d=Yb(a);if(d!==c){c=b.h[c];var e=c.indexOf(a);0<=e&&c.splice(e,1);c=b.h[d]||(b.h[d]=[]);c.push(a);1<c.length&&(b.h[d]=Zb(c))}}Ob(b)}}function Rb(a,b,c){if(a=(a=t(a))&&a.F)b&&a.addedNodes.push(b),c&&a.removedNodes.push(c),Ga(a)}
+function $b(a){if(a&&a.nodeType){var b=r(a),c=b.I;void 0===c&&(w(a)?(c=a,b.I=c):(c=(c=a.parentNode)?$b(c):a,x.contains.call(document.documentElement,a)&&(b.I=c)));return c}}function ac(a,b,c){var d=[];bc(a.childNodes,b,c,d);return d}function bc(a,b,c,d){for(var e=0,f=a.length,h;e<f&&(h=a[e]);e++){var g;if(g=h.nodeType===Node.ELEMENT_NODE){g=h;var k=b,l=c,m=d,p=k(g);p&&m.push(g);l&&l(p)?g=p:(bc(g.childNodes,k,l,m),g=void 0)}if(g)break}}var cc=null;
+function dc(a,b,c){cc||(cc=window.ShadyCSS&&window.ShadyCSS.ScopingShim);cc&&"class"===b?cc.setElementClass(a,c):(x.setAttribute.call(a,b,c),Wb(a,b))}function ec(a,b){if(a.ownerDocument!==document)return x.importNode.call(document,a,b);var c=x.importNode.call(document,a,!1);if(b){a=a.childNodes;b=0;for(var d;b<a.length;b++)d=ec(a[b],!0),c.appendChild(d)}return c};var fc="__eventWrappers"+Date.now(),gc={blur:!0,focus:!0,focusin:!0,focusout:!0,click:!0,dblclick:!0,mousedown:!0,mouseenter:!0,mouseleave:!0,mousemove:!0,mouseout:!0,mouseover:!0,mouseup:!0,wheel:!0,beforeinput:!0,input:!0,keydown:!0,keyup:!0,compositionstart:!0,compositionupdate:!0,compositionend:!0,touchstart:!0,touchend:!0,touchmove:!0,touchcancel:!0,pointerover:!0,pointerenter:!0,pointerdown:!0,pointermove:!0,pointerup:!0,pointercancel:!0,pointerout:!0,pointerleave:!0,gotpointercapture:!0,lostpointercapture:!0,
+dragstart:!0,drag:!0,dragenter:!0,dragleave:!0,dragover:!0,drop:!0,dragend:!0,DOMActivate:!0,DOMFocusIn:!0,DOMFocusOut:!0,keypress:!0};function hc(a,b){var c=[],d=a;for(a=a===window?window:a.getRootNode();d;)c.push(d),d=d.assignedSlot?d.assignedSlot:d.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&d.host&&(b||d!==a)?d.host:d.parentNode;c[c.length-1]===document&&c.push(window);return c}
+function ic(a,b){if(!w)return a;a=hc(a,!0);for(var c=0,d,e,f,h;c<b.length;c++)if(d=b[c],f=d===window?window:d.getRootNode(),f!==e&&(h=a.indexOf(f),e=f),!w(f)||-1<h)return d}
+var jc={get composed(){!1!==this.isTrusted&&void 0===this.W&&(this.W=gc[this.type]);return this.W||!1},composedPath:function(){this.b||(this.b=hc(this.__target,this.composed));return this.b},get target(){return ic(this.currentTarget,this.composedPath())},get relatedTarget(){if(!this.X)return null;this.c||(this.c=hc(this.X,!0));return ic(this.currentTarget,this.c)},stopPropagation:function(){Event.prototype.stopPropagation.call(this);this.a=!0},stopImmediatePropagation:function(){Event.prototype.stopImmediatePropagation.call(this);
+this.a=this.g=!0}};function kc(a){function b(b,d){b=new a(b,d);b.W=d&&!!d.composed;return b}ua(b,a);b.prototype=a.prototype;return b}var lc={focus:!0,blur:!0};function mc(a){return a.__target!==a.target||a.X!==a.relatedTarget}function nc(a,b,c){if(c=b.__handlers&&b.__handlers[a.type]&&b.__handlers[a.type][c])for(var d=0,e;(e=c[d])&&(!mc(a)||a.target!==a.relatedTarget)&&(e.call(b,a),!a.g);d++);}
+function oc(a){var b=a.composedPath();Object.defineProperty(a,"currentTarget",{get:function(){return d},configurable:!0});for(var c=b.length-1;0<=c;c--){var d=b[c];nc(a,d,"capture");if(a.a)return}Object.defineProperty(a,"eventPhase",{get:function(){return Event.AT_TARGET}});var e;for(c=0;c<b.length;c++){d=b[c];var f=t(d);f=f&&f.root;if(0===c||f&&f===e)if(nc(a,d,"bubble"),d!==window&&(e=d.getRootNode()),a.a)break}}
+function pc(a,b,c,d,e,f){for(var h=0;h<a.length;h++){var g=a[h],k=g.type,l=g.capture,m=g.once,p=g.passive;if(b===g.node&&c===k&&d===l&&e===m&&f===p)return h}return-1}
+function qc(a,b,c){if(b){var d=typeof b;if("function"===d||"object"===d)if("object"!==d||b.handleEvent&&"function"===typeof b.handleEvent){if(c&&"object"===typeof c){var e=!!c.capture;var f=!!c.once;var h=!!c.passive}else e=!!c,h=f=!1;var g=c&&c.Z||this,k=b[fc];if(k){if(-1<pc(k,g,a,e,f,h))return}else b[fc]=[];k=function(e){f&&this.removeEventListener(a,b,c);e.__target||rc(e);if(g!==this){var h=Object.getOwnPropertyDescriptor(e,"currentTarget");Object.defineProperty(e,"currentTarget",{get:function(){return g},
+configurable:!0})}if(e.composed||-1<e.composedPath().indexOf(g))if(mc(e)&&e.target===e.relatedTarget)e.eventPhase===Event.BUBBLING_PHASE&&e.stopImmediatePropagation();else if(e.eventPhase===Event.CAPTURING_PHASE||e.bubbles||e.target===g||g instanceof Window){var k="function"===d?b.call(g,e):b.handleEvent&&b.handleEvent(e);g!==this&&(h?(Object.defineProperty(e,"currentTarget",h),h=null):delete e.currentTarget);return k}};b[fc].push({node:g,type:a,capture:e,once:f,passive:h,Wa:k});lc[a]?(this.__handlers=
+this.__handlers||{},this.__handlers[a]=this.__handlers[a]||{capture:[],bubble:[]},this.__handlers[a][e?"capture":"bubble"].push(k)):(this instanceof Window?x.Ua:x.addEventListener).call(this,a,k,c)}}}
+function sc(a,b,c){if(b){if(c&&"object"===typeof c){var d=!!c.capture;var e=!!c.once;var f=!!c.passive}else d=!!c,f=e=!1;var h=c&&c.Z||this,g=void 0;var k=null;try{k=b[fc]}catch(l){}k&&(e=pc(k,h,a,d,e,f),-1<e&&(g=k.splice(e,1)[0].Wa,k.length||(b[fc]=void 0)));(this instanceof Window?x.Va:x.removeEventListener).call(this,a,g||b,c);g&&lc[a]&&this.__handlers&&this.__handlers[a]&&(a=this.__handlers[a][d?"capture":"bubble"],g=a.indexOf(g),-1<g&&a.splice(g,1))}}
+function tc(){for(var a in lc)window.addEventListener(a,function(a){a.__target||(rc(a),oc(a))},!0)}function rc(a){a.__target=a.target;a.X=a.relatedTarget;if(u.u){var b=Object.getPrototypeOf(a);if(!b.hasOwnProperty("__patchProto")){var c=Object.create(b);c.Ya=b;sa(c,jc);b.__patchProto=c}a.__proto__=b.__patchProto}else sa(a,jc)}var uc=kc(window.Event),vc=kc(window.CustomEvent),wc=kc(window.MouseEvent);function xc(a,b){return{index:a,J:[],O:b}}
+function yc(a,b,c,d){var e=0,f=0,h=0,g=0,k=Math.min(b-e,d-f);if(0==e&&0==f)a:{for(h=0;h<k;h++)if(a[h]!==c[h])break a;h=k}if(b==a.length&&d==c.length){g=a.length;for(var l=c.length,m=0;m<k-h&&zc(a[--g],c[--l]);)m++;g=m}e+=h;f+=h;b-=g;d-=g;if(0==b-e&&0==d-f)return[];if(e==b){for(b=xc(e,0);f<d;)b.J.push(c[f++]);return[b]}if(f==d)return[xc(e,b-e)];k=e;h=f;d=d-h+1;g=b-k+1;b=Array(d);for(l=0;l<d;l++)b[l]=Array(g),b[l][0]=l;for(l=0;l<g;l++)b[0][l]=l;for(l=1;l<d;l++)for(m=1;m<g;m++)if(a[k+m-1]===c[h+l-1])b[l][m]=
+b[l-1][m-1];else{var p=b[l-1][m]+1,z=b[l][m-1]+1;b[l][m]=p<z?p:z}k=b.length-1;h=b[0].length-1;d=b[k][h];for(a=[];0<k||0<h;)0==k?(a.push(2),h--):0==h?(a.push(3),k--):(g=b[k-1][h-1],l=b[k-1][h],m=b[k][h-1],p=l<m?l<g?l:g:m<g?m:g,p==g?(g==d?a.push(0):(a.push(1),d=g),k--,h--):p==l?(a.push(3),k--,d=l):(a.push(2),h--,d=m));a.reverse();b=void 0;k=[];for(h=0;h<a.length;h++)switch(a[h]){case 0:b&&(k.push(b),b=void 0);e++;f++;break;case 1:b||(b=xc(e,0));b.O++;e++;b.J.push(c[f]);f++;break;case 2:b||(b=xc(e,0));
+b.O++;e++;break;case 3:b||(b=xc(e,0)),b.J.push(c[f]),f++}b&&k.push(b);return k}function zc(a,b){return a===b};var Ub=G.parentNode,Ac=G.childNodes,Bc={};function Cc(a){var b=[];do b.unshift(a);while(a=a.parentNode);return b}function Fb(a,b,c){if(a!==Bc)throw new TypeError("Illegal constructor");this.ya="ShadyRoot";a=Ac(b);this.host=b;this.a=c&&c.mode;Kb(b,a);c=t(b);c.root=this;c.na="closed"!==this.a?this:null;c=r(this);c.firstChild=c.lastChild=c.parentNode=c.nextSibling=c.previousSibling=null;c.childNodes=[];this.N=!1;this.s=this.h=this.f=null;c=0;for(var d=a.length;c<d;c++)x.removeChild.call(b,a[c])}
+function Ob(a){a.N||(a.N=!0,Da(function(){return Dc(a)}))}function Dc(a){for(var b;a;){a.N&&(b=a);a:{var c=a;a=c.host.getRootNode();if(w(a))for(var d=c.host.childNodes,e=0;e<d.length;e++)if(c=d[e],"slot"==c.localName)break a;a=void 0}}b&&b._renderRoot()}
+Fb.prototype._renderRoot=function(){this.N=!1;if(this.f){Tb(this);for(var a=0,b;a<this.f.length;a++){b=this.f[a];var c=t(b),d=c.assignedNodes;c.assignedNodes=[];c.A=[];if(c.da=d)for(c=0;c<d.length;c++){var e=t(d[c]);e.M=e.assignedSlot;e.assignedSlot===b&&(e.assignedSlot=null)}}for(b=this.host.firstChild;b;b=b.nextSibling)Ec(this,b);for(a=0;a<this.f.length;a++){b=this.f[a];d=t(b);if(!d.assignedNodes.length)for(c=b.firstChild;c;c=c.nextSibling)Ec(this,c,b);(c=(c=t(b.parentNode))&&c.root)&&Vb(c)&&c._renderRoot();
+Fc(this,d.A,d.assignedNodes);if(c=d.da){for(e=0;e<c.length;e++)t(c[e]).M=null;d.da=null;c.length>d.assignedNodes.length&&(d.R=!0)}d.R&&(d.R=!1,Gc(this,b))}a=this.f;b=[];for(d=0;d<a.length;d++)c=a[d].parentNode,(e=t(c))&&e.root||!(0>b.indexOf(c))||b.push(c);for(a=0;a<b.length;a++){d=b[a];c=d===this?this.host:d;e=[];d=d.childNodes;for(var f=0;f<d.length;f++){var h=d[f];if("slot"==h.localName){h=t(h).A;for(var g=0;g<h.length;g++)e.push(h[g])}else e.push(h)}d=void 0;f=Ac(c);h=yc(e,e.length,f,f.length);
+for(var k=g=0;g<h.length&&(d=h[g]);g++){for(var l=0,m;l<d.J.length&&(m=d.J[l]);l++)Ub(m)===c&&x.removeChild.call(c,m),f.splice(d.index+k,1);k-=d.O}for(k=0;k<h.length&&(d=h[k]);k++)for(g=f[d.index],l=d.index;l<d.index+d.O;l++)m=e[l],x.insertBefore.call(c,m,g),f.splice(l,0,m)}}};function Ec(a,b,c){var d=r(b),e=d.M;d.M=null;c||(c=(a=a.h[b.slot||"__catchall"])&&a[0]);c?(r(c).assignedNodes.push(b),d.assignedSlot=c):d.assignedSlot=void 0;e!==d.assignedSlot&&d.assignedSlot&&(r(d.assignedSlot).R=!0)}
+function Fc(a,b,c){for(var d=0,e;d<c.length&&(e=c[d]);d++)if("slot"==e.localName){var f=t(e).assignedNodes;f&&f.length&&Fc(a,b,f)}else b.push(c[d])}function Gc(a,b){x.dispatchEvent.call(b,new Event("slotchange"));b=t(b);b.assignedSlot&&Gc(a,b.assignedSlot)}function Tb(a){if(a.s&&a.s.length){for(var b=a.s,c,d=0;d<b.length;d++){var e=b[d];Kb(e);Kb(e.parentNode);var f=Yb(e);a.h[f]?(c=c||{},c[f]=!0,a.h[f].push(e)):a.h[f]=[e];a.f.push(e)}if(c)for(var h in c)a.h[h]=Zb(a.h[h]);a.s=[]}}
+function Yb(a){var b=a.name||a.getAttribute("name")||"__catchall";return a.ua=b}function Zb(a){return a.sort(function(a,c){a=Cc(a);for(var b=Cc(c),e=0;e<a.length;e++){c=a[e];var f=b[e];if(c!==f)return a=Array.from(c.parentNode.childNodes),a.indexOf(c)-a.indexOf(f)}})}function Vb(a){Tb(a);return!(!a.f||!a.f.length)};function Hc(a){var b=a.getRootNode();w(b)&&Dc(b);return(a=t(a))&&a.assignedSlot||null}
+var Ic={addEventListener:qc.bind(window),removeEventListener:sc.bind(window)},Jc={addEventListener:qc,removeEventListener:sc,appendChild:function(a){return Mb(this,a)},insertBefore:function(a,b){return Mb(this,a,b)},removeChild:function(a){return Nb(this,a)},replaceChild:function(a,b){Mb(this,a,b);Nb(this,b);return a},cloneNode:function(a){if("template"==this.localName)var b=x.cloneNode.call(this,a);else if(b=x.cloneNode.call(this,!1),a){a=this.childNodes;for(var c=0,d;c<a.length;c++)d=a[c].cloneNode(!0),
+b.appendChild(d)}return b},getRootNode:function(){return $b(this)},contains:function(a){return Aa(this,a)},dispatchEvent:function(a){Ea();return x.dispatchEvent.call(this,a)}};
+Object.defineProperties(Jc,{isConnected:{get:function(){if(xb&&xb.call(this))return!0;if(this.nodeType==Node.DOCUMENT_FRAGMENT_NODE)return!1;var a=this.ownerDocument;if(za){if(x.contains.call(a,this))return!0}else if(a.documentElement&&x.contains.call(a.documentElement,this))return!0;for(a=this;a&&!(a instanceof Document);)a=a.parentNode||(w(a)?a.host:void 0);return!!(a&&a instanceof Document)},configurable:!0}});
+var Kc={get assignedSlot(){return Hc(this)}},Lc={querySelector:function(a){return ac(this,function(b){return ra.call(b,a)},function(a){return!!a})[0]||null},querySelectorAll:function(a,b){if(b){b=Array.prototype.slice.call(x.querySelectorAll(this,a));var c=this.getRootNode();return b.filter(function(a){return a.getRootNode()==c})}return ac(this,function(b){return ra.call(b,a)})}},Mc={assignedNodes:function(a){if("slot"===this.localName){var b=this.getRootNode();w(b)&&Dc(b);return(b=t(this))?(a&&a.flatten?
+b.A:b.assignedNodes)||[]:[]}}},Nc=ta({setAttribute:function(a,b){dc(this,a,b)},removeAttribute:function(a){x.removeAttribute.call(this,a);Wb(this,a)},attachShadow:function(a){if(!this)throw"Must provide a host.";if(!a)throw"Not enough arguments.";return new Fb(Bc,this,a)},get slot(){return this.getAttribute("slot")},set slot(a){dc(this,"slot",a)},get assignedSlot(){return Hc(this)}},Lc,Mc);Object.defineProperties(Nc,Cb);
+var Oc=ta({importNode:function(a,b){return ec(a,b)},getElementById:function(a){return ac(this,function(b){return b.id==a},function(a){return!!a})[0]||null}},Lc);Object.defineProperties(Oc,{_activeElement:Db.activeElement});
+var Pc=HTMLElement.prototype.blur,Qc=ta({blur:function(){var a=t(this);(a=(a=a&&a.root)&&a.activeElement)?a.blur():Pc.call(this)}}),Rc={addEventListener:function(a,b,c){"object"!==typeof c&&(c={capture:!!c});c.Z=this;this.host.addEventListener(a,b,c)},removeEventListener:function(a,b,c){"object"!==typeof c&&(c={capture:!!c});c.Z=this;this.host.removeEventListener(a,b,c)},getElementById:function(a){return ac(this,function(b){return b.id==a},function(a){return!!a})[0]||null}};
+function K(a,b){for(var c=Object.getOwnPropertyNames(b),d=0;d<c.length;d++){var e=c[d],f=Object.getOwnPropertyDescriptor(b,e);f.value?a[e]=f.value:Object.defineProperty(a,e,f)}};if(u.la){var ShadyDOM={inUse:u.la,patch:function(a){Hb(a);Gb(a);return a},isShadyRoot:w,enqueue:Da,flush:Ea,settings:u,filterMutations:Ka,observeChildren:Ia,unobserveChildren:Ja,nativeMethods:x,nativeTree:G};window.ShadyDOM=ShadyDOM;window.Event=uc;window.CustomEvent=vc;window.MouseEvent=wc;tc();var Sc=window.customElements&&window.customElements.nativeHTMLElement||HTMLElement;K(Fb.prototype,Rc);K(window.Node.prototype,Jc);K(window.Window.prototype,Ic);K(window.Text.prototype,Kc);K(window.DocumentFragment.prototype,
+Lc);K(window.Element.prototype,Nc);K(window.Document.prototype,Oc);window.HTMLSlotElement&&K(window.HTMLSlotElement.prototype,Mc);K(Sc.prototype,Qc);u.u&&(J(window.Node.prototype),J(window.Text.prototype),J(window.DocumentFragment.prototype),J(window.Element.prototype),J(Sc.prototype),J(window.Document.prototype),window.HTMLSlotElement&&J(window.HTMLSlotElement.prototype));Eb();window.ShadowRoot=Fb};var Tc=new Set("annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph".split(" "));function Uc(a){var b=Tc.has(a);a=/^[a-z][.0-9_a-z]*-[\-.0-9_a-z]*$/.test(a);return!b&&a}function L(a){var b=a.isConnected;if(void 0!==b)return b;for(;a&&!(a.__CE_isImportDocument||a instanceof Document);)a=a.parentNode||(window.ShadowRoot&&a instanceof ShadowRoot?a.host:void 0);return!(!a||!(a.__CE_isImportDocument||a instanceof Document))}
+function Vc(a,b){for(;b&&b!==a&&!b.nextSibling;)b=b.parentNode;return b&&b!==a?b.nextSibling:null}
+function M(a,b,c){c=void 0===c?new Set:c;for(var d=a;d;){if(d.nodeType===Node.ELEMENT_NODE){var e=d;b(e);var f=e.localName;if("link"===f&&"import"===e.getAttribute("rel")){d=e.import;if(d instanceof Node&&!c.has(d))for(c.add(d),d=d.firstChild;d;d=d.nextSibling)M(d,b,c);d=Vc(a,e);continue}else if("template"===f){d=Vc(a,e);continue}if(e=e.__CE_shadowRoot)for(e=e.firstChild;e;e=e.nextSibling)M(e,b,c)}d=d.firstChild?d.firstChild:Vc(a,d)}}function N(a,b,c){a[b]=c};function Wc(){this.a=new Map;this.m=new Map;this.g=[];this.c=!1}function Xc(a,b,c){a.a.set(b,c);a.m.set(c.constructor,c)}function Yc(a,b){a.c=!0;a.g.push(b)}function Zc(a,b){a.c&&M(b,function(b){return a.b(b)})}Wc.prototype.b=function(a){if(this.c&&!a.__CE_patched){a.__CE_patched=!0;for(var b=0;b<this.g.length;b++)this.g[b](a)}};function O(a,b){var c=[];M(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state?a.connectedCallback(d):$c(a,d)}}
+function P(a,b){var c=[];M(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state&&a.disconnectedCallback(d)}}
+function Q(a,b,c){c=void 0===c?{}:c;var d=c.Ta||new Set,e=c.V||function(b){return $c(a,b)},f=[];M(b,function(b){if("link"===b.localName&&"import"===b.getAttribute("rel")){var c=b.import;c instanceof Node&&(c.__CE_isImportDocument=!0,c.__CE_hasRegistry=!0);c&&"complete"===c.readyState?c.__CE_documentLoadHandled=!0:b.addEventListener("load",function(){var c=b.import;if(!c.__CE_documentLoadHandled){c.__CE_documentLoadHandled=!0;var f=new Set(d);f.delete(c);Q(a,c,{Ta:f,V:e})}})}else f.push(b)},d);if(a.c)for(b=
+0;b<f.length;b++)a.b(f[b]);for(b=0;b<f.length;b++)e(f[b])}
+function $c(a,b){if(void 0===b.__CE_state){var c=b.ownerDocument;if(c.defaultView||c.__CE_isImportDocument&&c.__CE_hasRegistry)if(c=a.a.get(b.localName)){c.constructionStack.push(b);var d=c.constructor;try{try{if(new d!==b)throw Error("The custom element constructor did not produce the element being upgraded.");}finally{c.constructionStack.pop()}}catch(h){throw b.__CE_state=2,h;}b.__CE_state=1;b.__CE_definition=c;if(c.attributeChangedCallback)for(c=c.observedAttributes,d=0;d<c.length;d++){var e=c[d],
+f=b.getAttribute(e);null!==f&&a.attributeChangedCallback(b,e,null,f,null)}L(b)&&a.connectedCallback(b)}}}Wc.prototype.connectedCallback=function(a){var b=a.__CE_definition;b.connectedCallback&&b.connectedCallback.call(a)};Wc.prototype.disconnectedCallback=function(a){var b=a.__CE_definition;b.disconnectedCallback&&b.disconnectedCallback.call(a)};
+Wc.prototype.attributeChangedCallback=function(a,b,c,d,e){var f=a.__CE_definition;f.attributeChangedCallback&&-1<f.observedAttributes.indexOf(b)&&f.attributeChangedCallback.call(a,b,c,d,e)};function ad(a){var b=document;this.i=a;this.a=b;this.C=void 0;Q(this.i,this.a);"loading"===this.a.readyState&&(this.C=new MutationObserver(this.b.bind(this)),this.C.observe(this.a,{childList:!0,subtree:!0}))}ad.prototype.disconnect=function(){this.C&&this.C.disconnect()};ad.prototype.b=function(a){var b=this.a.readyState;"interactive"!==b&&"complete"!==b||this.disconnect();for(b=0;b<a.length;b++)for(var c=a[b].addedNodes,d=0;d<c.length;d++)Q(this.i,c[d])};function bd(){var a=this;this.b=this.a=void 0;this.c=new Promise(function(b){a.b=b;a.a&&b(a.a)})}function cd(a){if(a.a)throw Error("Already resolved.");a.a=void 0;a.b&&a.b(void 0)};function R(a){this.aa=!1;this.i=a;this.ea=new Map;this.ba=function(a){return a()};this.L=!1;this.ca=[];this.xa=new ad(a)}n=R.prototype;
+n.define=function(a,b){var c=this;if(!(b instanceof Function))throw new TypeError("Custom element constructors must be functions.");if(!Uc(a))throw new SyntaxError("The element name '"+a+"' is not valid.");if(this.i.a.get(a))throw Error("A custom element with name '"+a+"' has already been defined.");if(this.aa)throw Error("A custom element is already being defined.");this.aa=!0;try{var d=function(a){var b=e[a];if(void 0!==b&&!(b instanceof Function))throw Error("The '"+a+"' callback must be a function.");
+return b},e=b.prototype;if(!(e instanceof Object))throw new TypeError("The custom element constructor's prototype is not an object.");var f=d("connectedCallback");var h=d("disconnectedCallback");var g=d("adoptedCallback");var k=d("attributeChangedCallback");var l=b.observedAttributes||[]}catch(m){return}finally{this.aa=!1}b={localName:a,constructor:b,connectedCallback:f,disconnectedCallback:h,adoptedCallback:g,attributeChangedCallback:k,observedAttributes:l,constructionStack:[]};Xc(this.i,a,b);this.ca.push(b);
+this.L||(this.L=!0,this.ba(function(){return dd(c)}))};n.V=function(a){Q(this.i,a)};function dd(a){if(!1!==a.L){a.L=!1;for(var b=a.ca,c=[],d=new Map,e=0;e<b.length;e++)d.set(b[e].localName,[]);Q(a.i,document,{V:function(b){if(void 0===b.__CE_state){var e=b.localName,f=d.get(e);f?f.push(b):a.i.a.get(e)&&c.push(b)}}});for(e=0;e<c.length;e++)$c(a.i,c[e]);for(;0<b.length;){var f=b.shift();e=f.localName;f=d.get(f.localName);for(var h=0;h<f.length;h++)$c(a.i,f[h]);(e=a.ea.get(e))&&cd(e)}}}
+n.get=function(a){if(a=this.i.a.get(a))return a.constructor};n.ra=function(a){if(!Uc(a))return Promise.reject(new SyntaxError("'"+a+"' is not a valid custom element name."));var b=this.ea.get(a);if(b)return b.c;b=new bd;this.ea.set(a,b);this.i.a.get(a)&&!this.ca.some(function(b){return b.localName===a})&&cd(b);return b.c};n.Oa=function(a){this.xa.disconnect();var b=this.ba;this.ba=function(c){return a(function(){return b(c)})}};window.CustomElementRegistry=R;R.prototype.define=R.prototype.define;
+R.prototype.upgrade=R.prototype.V;R.prototype.get=R.prototype.get;R.prototype.whenDefined=R.prototype.ra;R.prototype.polyfillWrapFlushCallback=R.prototype.Oa;var ed=window.Document.prototype.createElement,fd=window.Document.prototype.createElementNS,gd=window.Document.prototype.importNode,hd=window.Document.prototype.prepend,id=window.Document.prototype.append,jd=window.DocumentFragment.prototype.prepend,kd=window.DocumentFragment.prototype.append,ld=window.Node.prototype.cloneNode,md=window.Node.prototype.appendChild,nd=window.Node.prototype.insertBefore,od=window.Node.prototype.removeChild,pd=window.Node.prototype.replaceChild,qd=Object.getOwnPropertyDescriptor(window.Node.prototype,
+"textContent"),rd=window.Element.prototype.attachShadow,sd=Object.getOwnPropertyDescriptor(window.Element.prototype,"innerHTML"),td=window.Element.prototype.getAttribute,ud=window.Element.prototype.setAttribute,vd=window.Element.prototype.removeAttribute,wd=window.Element.prototype.getAttributeNS,xd=window.Element.prototype.setAttributeNS,yd=window.Element.prototype.removeAttributeNS,zd=window.Element.prototype.insertAdjacentElement,Ad=window.Element.prototype.insertAdjacentHTML,Bd=window.Element.prototype.prepend,
+Cd=window.Element.prototype.append,Dd=window.Element.prototype.before,Ed=window.Element.prototype.after,Fd=window.Element.prototype.replaceWith,Gd=window.Element.prototype.remove,Hd=window.HTMLElement,Id=Object.getOwnPropertyDescriptor(window.HTMLElement.prototype,"innerHTML"),Jd=window.HTMLElement.prototype.insertAdjacentElement,Kd=window.HTMLElement.prototype.insertAdjacentHTML;var Ld=new function(){};function Md(){var a=Nd;window.HTMLElement=function(){function b(){var b=this.constructor,d=a.m.get(b);if(!d)throw Error("The custom element being constructed was not registered with `customElements`.");var e=d.constructionStack;if(0===e.length)return e=ed.call(document,d.localName),Object.setPrototypeOf(e,b.prototype),e.__CE_state=1,e.__CE_definition=d,a.b(e),e;d=e.length-1;var f=e[d];if(f===Ld)throw Error("The HTMLElement constructor was either called reentrantly for this constructor or called multiple times.");
+e[d]=Ld;Object.setPrototypeOf(f,b.prototype);a.b(f);return f}b.prototype=Hd.prototype;return b}()};function Od(a,b,c){function d(b){return function(c){for(var d=[],e=0;e<arguments.length;++e)d[e-0]=arguments[e];e=[];for(var f=[],l=0;l<d.length;l++){var m=d[l];m instanceof Element&&L(m)&&f.push(m);if(m instanceof DocumentFragment)for(m=m.firstChild;m;m=m.nextSibling)e.push(m);else e.push(m)}b.apply(this,d);for(d=0;d<f.length;d++)P(a,f[d]);if(L(this))for(d=0;d<e.length;d++)f=e[d],f instanceof Element&&O(a,f)}}void 0!==c.T&&(b.prepend=d(c.T));void 0!==c.append&&(b.append=d(c.append))};function Pd(){var a=Nd;N(Document.prototype,"createElement",function(b){if(this.__CE_hasRegistry){var c=a.a.get(b);if(c)return new c.constructor}b=ed.call(this,b);a.b(b);return b});N(Document.prototype,"importNode",function(b,c){b=gd.call(this,b,c);this.__CE_hasRegistry?Q(a,b):Zc(a,b);return b});N(Document.prototype,"createElementNS",function(b,c){if(this.__CE_hasRegistry&&(null===b||"http://www.w3.org/1999/xhtml"===b)){var d=a.a.get(c);if(d)return new d.constructor}b=fd.call(this,b,c);a.b(b);return b});
+Od(a,Document.prototype,{T:hd,append:id})};function Qd(){var a=Nd;function b(b,d){Object.defineProperty(b,"textContent",{enumerable:d.enumerable,configurable:!0,get:d.get,set:function(b){if(this.nodeType===Node.TEXT_NODE)d.set.call(this,b);else{var c=void 0;if(this.firstChild){var e=this.childNodes,g=e.length;if(0<g&&L(this)){c=Array(g);for(var k=0;k<g;k++)c[k]=e[k]}}d.set.call(this,b);if(c)for(b=0;b<c.length;b++)P(a,c[b])}}})}N(Node.prototype,"insertBefore",function(b,d){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);
+b=nd.call(this,b,d);if(L(this))for(d=0;d<c.length;d++)O(a,c[d]);return b}c=L(b);d=nd.call(this,b,d);c&&P(a,b);L(this)&&O(a,b);return d});N(Node.prototype,"appendChild",function(b){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);b=md.call(this,b);if(L(this))for(var e=0;e<c.length;e++)O(a,c[e]);return b}c=L(b);e=md.call(this,b);c&&P(a,b);L(this)&&O(a,b);return e});N(Node.prototype,"cloneNode",function(b){b=ld.call(this,b);this.ownerDocument.__CE_hasRegistry?Q(a,b):
+Zc(a,b);return b});N(Node.prototype,"removeChild",function(b){var c=L(b),e=od.call(this,b);c&&P(a,b);return e});N(Node.prototype,"replaceChild",function(b,d){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);b=pd.call(this,b,d);if(L(this))for(P(a,d),d=0;d<c.length;d++)O(a,c[d]);return b}c=L(b);var f=pd.call(this,b,d),h=L(this);h&&P(a,d);c&&P(a,b);h&&O(a,b);return f});qd&&qd.get?b(Node.prototype,qd):Yc(a,function(a){b(a,{enumerable:!0,configurable:!0,get:function(){for(var a=
+[],b=0;b<this.childNodes.length;b++)a.push(this.childNodes[b].textContent);return a.join("")},set:function(a){for(;this.firstChild;)od.call(this,this.firstChild);md.call(this,document.createTextNode(a))}})})};function Rd(a){var b=Element.prototype;function c(b){return function(c){for(var d=[],e=0;e<arguments.length;++e)d[e-0]=arguments[e];e=[];for(var g=[],k=0;k<d.length;k++){var l=d[k];l instanceof Element&&L(l)&&g.push(l);if(l instanceof DocumentFragment)for(l=l.firstChild;l;l=l.nextSibling)e.push(l);else e.push(l)}b.apply(this,d);for(d=0;d<g.length;d++)P(a,g[d]);if(L(this))for(d=0;d<e.length;d++)g=e[d],g instanceof Element&&O(a,g)}}void 0!==Dd&&(b.before=c(Dd));void 0!==Dd&&(b.after=c(Ed));void 0!==
+Fd&&N(b,"replaceWith",function(b){for(var c=[],d=0;d<arguments.length;++d)c[d-0]=arguments[d];d=[];for(var h=[],g=0;g<c.length;g++){var k=c[g];k instanceof Element&&L(k)&&h.push(k);if(k instanceof DocumentFragment)for(k=k.firstChild;k;k=k.nextSibling)d.push(k);else d.push(k)}g=L(this);Fd.apply(this,c);for(c=0;c<h.length;c++)P(a,h[c]);if(g)for(P(a,this),c=0;c<d.length;c++)h=d[c],h instanceof Element&&O(a,h)});void 0!==Gd&&N(b,"remove",function(){var b=L(this);Gd.call(this);b&&P(a,this)})};function Sd(){var a=Nd;function b(b,c){Object.defineProperty(b,"innerHTML",{enumerable:c.enumerable,configurable:!0,get:c.get,set:function(b){var d=this,e=void 0;L(this)&&(e=[],M(this,function(a){a!==d&&e.push(a)}));c.set.call(this,b);if(e)for(var f=0;f<e.length;f++){var h=e[f];1===h.__CE_state&&a.disconnectedCallback(h)}this.ownerDocument.__CE_hasRegistry?Q(a,this):Zc(a,this);return b}})}function c(b,c){N(b,"insertAdjacentElement",function(b,d){var e=L(d);b=c.call(this,b,d);e&&P(a,d);L(b)&&O(a,d);
+return b})}function d(b,c){function d(b,c){for(var d=[];b!==c;b=b.nextSibling)d.push(b);for(c=0;c<d.length;c++)Q(a,d[c])}N(b,"insertAdjacentHTML",function(a,b){a=a.toLowerCase();if("beforebegin"===a){var e=this.previousSibling;c.call(this,a,b);d(e||this.parentNode.firstChild,this)}else if("afterbegin"===a)e=this.firstChild,c.call(this,a,b),d(this.firstChild,e);else if("beforeend"===a)e=this.lastChild,c.call(this,a,b),d(e||this.firstChild,null);else if("afterend"===a)e=this.nextSibling,c.call(this,
+a,b),d(this.nextSibling,e);else throw new SyntaxError("The value provided ("+String(a)+") is not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'.");})}rd&&N(Element.prototype,"attachShadow",function(a){return this.__CE_shadowRoot=a=rd.call(this,a)});sd&&sd.get?b(Element.prototype,sd):Id&&Id.get?b(HTMLElement.prototype,Id):Yc(a,function(a){b(a,{enumerable:!0,configurable:!0,get:function(){return ld.call(this,!0).innerHTML},set:function(a){var b="template"===this.localName,c=b?this.content:
+this,d=ed.call(document,this.localName);for(d.innerHTML=a;0<c.childNodes.length;)od.call(c,c.childNodes[0]);for(a=b?d.content:d;0<a.childNodes.length;)md.call(c,a.childNodes[0])}})});N(Element.prototype,"setAttribute",function(b,c){if(1!==this.__CE_state)return ud.call(this,b,c);var d=td.call(this,b);ud.call(this,b,c);c=td.call(this,b);a.attributeChangedCallback(this,b,d,c,null)});N(Element.prototype,"setAttributeNS",function(b,c,d){if(1!==this.__CE_state)return xd.call(this,b,c,d);var e=wd.call(this,
+b,c);xd.call(this,b,c,d);d=wd.call(this,b,c);a.attributeChangedCallback(this,c,e,d,b)});N(Element.prototype,"removeAttribute",function(b){if(1!==this.__CE_state)return vd.call(this,b);var c=td.call(this,b);vd.call(this,b);null!==c&&a.attributeChangedCallback(this,b,c,null,null)});N(Element.prototype,"removeAttributeNS",function(b,c){if(1!==this.__CE_state)return yd.call(this,b,c);var d=wd.call(this,b,c);yd.call(this,b,c);var e=wd.call(this,b,c);d!==e&&a.attributeChangedCallback(this,c,d,e,b)});Jd?
+c(HTMLElement.prototype,Jd):zd?c(Element.prototype,zd):console.warn("Custom Elements: `Element#insertAdjacentElement` was not patched.");Kd?d(HTMLElement.prototype,Kd):Ad?d(Element.prototype,Ad):console.warn("Custom Elements: `Element#insertAdjacentHTML` was not patched.");Od(a,Element.prototype,{T:Bd,append:Cd});Rd(a)};var Td=window.customElements;if(!Td||Td.forcePolyfill||"function"!=typeof Td.define||"function"!=typeof Td.get){var Nd=new Wc;Md();Pd();Od(Nd,DocumentFragment.prototype,{T:jd,append:kd});Qd();Sd();document.__CE_hasRegistry=!0;var customElements=new R(Nd);Object.defineProperty(window,"customElements",{configurable:!0,enumerable:!0,value:customElements})};/*
+
+Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+function Ud(){this.end=this.start=0;this.rules=this.parent=this.previous=null;this.cssText=this.parsedCssText="";this.atRule=!1;this.type=0;this.parsedSelector=this.selector=this.keyframesName=""}
+function Vd(a){a=a.replace(Wd,"").replace(Xd,"");var b=Yd,c=a,d=new Ud;d.start=0;d.end=c.length;for(var e=d,f=0,h=c.length;f<h;f++)if("{"===c[f]){e.rules||(e.rules=[]);var g=e,k=g.rules[g.rules.length-1]||null;e=new Ud;e.start=f+1;e.parent=g;e.previous=k;g.rules.push(e)}else"}"===c[f]&&(e.end=f+1,e=e.parent||d);return b(d,a)}
+function Yd(a,b){var c=b.substring(a.start,a.end-1);a.parsedCssText=a.cssText=c.trim();a.parent&&(c=b.substring(a.previous?a.previous.end:a.parent.start,a.start-1),c=Zd(c),c=c.replace($d," "),c=c.substring(c.lastIndexOf(";")+1),c=a.parsedSelector=a.selector=c.trim(),a.atRule=0===c.indexOf("@"),a.atRule?0===c.indexOf("@media")?a.type=ae:c.match(be)&&(a.type=ce,a.keyframesName=a.selector.split($d).pop()):a.type=0===c.indexOf("--")?de:ee);if(c=a.rules)for(var d=0,e=c.length,f;d<e&&(f=c[d]);d++)Yd(f,
+b);return a}function Zd(a){return a.replace(/\\([0-9a-f]{1,6})\s/gi,function(a,c){a=c;for(c=6-a.length;c--;)a="0"+a;return"\\"+a})}
+function fe(a,b,c){c=void 0===c?"":c;var d="";if(a.cssText||a.rules){var e=a.rules,f;if(f=e)f=e[0],f=!(f&&f.selector&&0===f.selector.indexOf("--"));if(f){f=0;for(var h=e.length,g;f<h&&(g=e[f]);f++)d=fe(g,b,d)}else b?b=a.cssText:(b=a.cssText,b=b.replace(ge,"").replace(he,""),b=b.replace(ie,"").replace(je,"")),(d=b.trim())&&(d=" "+d+"\n")}d&&(a.selector&&(c+=a.selector+" {\n"),c+=d,a.selector&&(c+="}\n\n"));return c}
+var ee=1,ce=7,ae=4,de=1E3,Wd=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim,Xd=/@import[^;]*;/gim,ge=/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,he=/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\n]|$)?/gim,ie=/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/gim,je=/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,be=/^@[^\s]*keyframes/,$d=/\s+/g;var S=!(window.ShadyDOM&&window.ShadyDOM.inUse),ne;function oe(a){ne=a&&a.shimcssproperties?!1:S||!(navigator.userAgent.match(/AppleWebKit\/601|Edge\/15/)||!window.CSS||!CSS.supports||!CSS.supports("box-shadow","0 0 0 var(--foo)"))}window.ShadyCSS&&void 0!==window.ShadyCSS.nativeCss?ne=window.ShadyCSS.nativeCss:window.ShadyCSS?(oe(window.ShadyCSS),window.ShadyCSS=void 0):oe(window.WebComponents&&window.WebComponents.flags);var T=ne;var pe=/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};{])+)|\{([^}]*)\}(?:(?=[;\s}])|$))/gi,qe=/(?:^|\W+)@apply\s*\(?([^);\n]*)\)?/gi,re=/(--[\w-]+)\s*([:,;)]|$)/gi,se=/(animation\s*:)|(animation-name\s*:)/,te=/@media\s(.*)/,ue=/\{[^}]*\}/g;var ve=new Set;function we(a,b){if(!a)return"";"string"===typeof a&&(a=Vd(a));b&&xe(a,b);return fe(a,T)}function ye(a){!a.__cssRules&&a.textContent&&(a.__cssRules=Vd(a.textContent));return a.__cssRules||null}function ze(a){return!!a.parent&&a.parent.type===ce}function xe(a,b,c,d){if(a){var e=!1,f=a.type;if(d&&f===ae){var h=a.selector.match(te);h&&(window.matchMedia(h[1]).matches||(e=!0))}f===ee?b(a):c&&f===ce?c(a):f===de&&(e=!0);if((a=a.rules)&&!e){e=0;f=a.length;for(var g;e<f&&(g=a[e]);e++)xe(g,b,c,d)}}}
+function Ae(a,b,c,d){var e=document.createElement("style");b&&e.setAttribute("scope",b);e.textContent=a;Be(e,c,d);return e}var U=null;function Be(a,b,c){b=b||document.head;b.insertBefore(a,c&&c.nextSibling||b.firstChild);U?a.compareDocumentPosition(U)===Node.DOCUMENT_POSITION_PRECEDING&&(U=a):U=a}
+function Ce(a,b){var c=a.indexOf("var(");if(-1===c)return b(a,"","","");a:{var d=0;var e=c+3;for(var f=a.length;e<f;e++)if("("===a[e])d++;else if(")"===a[e]&&0===--d)break a;e=-1}d=a.substring(c+4,e);c=a.substring(0,c);a=Ce(a.substring(e+1),b);e=d.indexOf(",");return-1===e?b(c,d.trim(),"",a):b(c,d.substring(0,e).trim(),d.substring(e+1).trim(),a)}function De(a,b){S?a.setAttribute("class",b):window.ShadyDOM.nativeMethods.setAttribute.call(a,"class",b)}
+function V(a){var b=a.localName,c="";b?-1<b.indexOf("-")||(c=b,b=a.getAttribute&&a.getAttribute("is")||""):(b=a.is,c=a.extends);return{is:b,K:c}};function Ee(){}function Fe(a,b,c){var d=W;a.__styleScoped?a.__styleScoped=null:Ge(d,a,b||"",c)}function Ge(a,b,c,d){b.nodeType===Node.ELEMENT_NODE&&He(b,c,d);if(b="template"===b.localName?(b.content||b.Za).childNodes:b.children||b.childNodes)for(var e=0;e<b.length;e++)Ge(a,b[e],c,d)}
+function He(a,b,c){if(b)if(a.classList)c?(a.classList.remove("style-scope"),a.classList.remove(b)):(a.classList.add("style-scope"),a.classList.add(b));else if(a.getAttribute){var d=a.getAttribute(Ie);c?d&&(b=d.replace("style-scope","").replace(b,""),De(a,b)):De(a,(d?d+" ":"")+"style-scope "+b)}}function Je(a,b,c){var d=W,e=a.__cssBuild;S||"shady"===e?b=we(b,c):(a=V(a),b=Ke(d,b,a.is,a.K,c)+"\n\n");return b.trim()}
+function Ke(a,b,c,d,e){var f=Le(c,d);c=c?Me+c:"";return we(b,function(b){b.c||(b.selector=b.l=Ne(a,b,a.b,c,f),b.c=!0);e&&e(b,c,f)})}function Le(a,b){return b?"[is="+a+"]":a}function Ne(a,b,c,d,e){var f=b.selector.split(Oe);if(!ze(b)){b=0;for(var h=f.length,g;b<h&&(g=f[b]);b++)f[b]=c.call(a,g,d,e)}return f.join(Oe)}function Pe(a){return a.replace(Qe,function(a,c,d){-1<d.indexOf("+")?d=d.replace(/\+/g,"___"):-1<d.indexOf("___")&&(d=d.replace(/___/g,"+"));return":"+c+"("+d+")"})}
+Ee.prototype.b=function(a,b,c){var d=!1;a=a.trim();var e=Qe.test(a);e&&(a=a.replace(Qe,function(a,b,c){return":"+b+"("+c.replace(/\s/g,"")+")"}),a=Pe(a));a=a.replace(Re,Se+" $1");a=a.replace(Te,function(a,e,g){d||(a=Ue(g,e,b,c),d=d||a.stop,e=a.Da,g=a.value);return e+g});e&&(a=Pe(a));return a};
+function Ue(a,b,c,d){var e=a.indexOf(Ve);0<=a.indexOf(Se)?a=We(a,d):0!==e&&(a=c?Xe(a,c):a);c=!1;0<=e&&(b="",c=!0);if(c){var f=!0;c&&(a=a.replace(Ye,function(a,b){return" > "+b}))}a=a.replace(Ze,function(a,b,c){return'[dir="'+c+'"] '+b+", "+b+'[dir="'+c+'"]'});return{value:a,Da:b,stop:f}}function Xe(a,b){a=a.split($e);a[0]+=b;return a.join($e)}
+function We(a,b){var c=a.match(af);return(c=c&&c[2].trim()||"")?c[0].match(bf)?a.replace(af,function(a,c,f){return b+f}):c.split(bf)[0]===b?c:cf:a.replace(Se,b)}function df(a){a.selector===ef&&(a.selector="html")}Ee.prototype.c=function(a){return a.match(Ve)?this.b(a,ff):Xe(a.trim(),ff)};q.Object.defineProperties(Ee.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return"style-scope"}}});
+var Qe=/:(nth[-\w]+)\(([^)]+)\)/,ff=":not(.style-scope)",Oe=",",Te=/(^|[\s>+~]+)((?:\[.+?\]|[^\s>+~=[])+)/g,bf=/[[.:#*]/,Se=":host",ef=":root",Ve="::slotted",Re=new RegExp("^("+Ve+")"),af=/(:host)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,Ye=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,Ze=/(.*):dir\((?:(ltr|rtl))\)/,Me=".",$e=":",Ie="class",cf="should_not_match",W=new Ee;function gf(a,b,c,d){this.w=a||null;this.b=b||null;this.fa=c||[];this.G=null;this.K=d||"";this.a=this.o=this.B=null}function X(a){return a?a.__styleInfo:null}function hf(a,b){return a.__styleInfo=b}gf.prototype.c=function(){return this.w};gf.prototype._getStyleRules=gf.prototype.c;function jf(a){var b=this.matches||this.matchesSelector||this.mozMatchesSelector||this.msMatchesSelector||this.oMatchesSelector||this.webkitMatchesSelector;return b&&b.call(this,a)}var kf=navigator.userAgent.match("Trident");function lf(){}function mf(a){var b={},c=[],d=0;xe(a,function(a){nf(a);a.index=d++;a=a.j.cssText;for(var c;c=re.exec(a);){var e=c[1];":"!==c[2]&&(b[e]=!0)}},function(a){c.push(a)});a.b=c;a=[];for(var e in b)a.push(e);return a}
+function nf(a){if(!a.j){var b={},c={};of(a,c)&&(b.v=c,a.rules=null);b.cssText=a.parsedCssText.replace(ue,"").replace(pe,"");a.j=b}}function of(a,b){var c=a.j;if(c){if(c.v)return Object.assign(b,c.v),!0}else{c=a.parsedCssText;for(var d;a=pe.exec(c);){d=(a[2]||a[3]).trim();if("inherit"!==d||"unset"!==d)b[a[1].trim()]=d;d=!0}return d}}
+function pf(a,b,c){b&&(b=0<=b.indexOf(";")?qf(a,b,c):Ce(b,function(b,e,f,h){if(!e)return b+h;(e=pf(a,c[e],c))&&"initial"!==e?"apply-shim-inherit"===e&&(e="inherit"):e=pf(a,c[f]||f,c)||f;return b+(e||"")+h}));return b&&b.trim()||""}
+function qf(a,b,c){b=b.split(";");for(var d=0,e,f;d<b.length;d++)if(e=b[d]){qe.lastIndex=0;if(f=qe.exec(e))e=pf(a,c[f[1]],c);else if(f=e.indexOf(":"),-1!==f){var h=e.substring(f);h=h.trim();h=pf(a,h,c)||h;e=e.substring(0,f)+h}b[d]=e&&e.lastIndexOf(";")===e.length-1?e.slice(0,-1):e||""}return b.join(";")}
+function rf(a,b){var c={},d=[];xe(a,function(a){a.j||nf(a);var e=a.l||a.parsedSelector;b&&a.j.v&&e&&jf.call(b,e)&&(of(a,c),a=a.index,e=parseInt(a/32,10),d[e]=(d[e]||0)|1<<a%32)},null,!0);return{v:c,key:d}}
+function sf(a,b,c,d){b.j||nf(b);if(b.j.v){var e=V(a);a=e.is;e=e.K;e=a?Le(a,e):"html";var f=b.parsedSelector,h=":host > *"===f||"html"===f,g=0===f.indexOf(":host")&&!h;"shady"===c&&(h=f===e+" > *."+e||-1!==f.indexOf("html"),g=!h&&0===f.indexOf(e));"shadow"===c&&(h=":host > *"===f||"html"===f,g=g&&!h);if(h||g)c=e,g&&(b.l||(b.l=Ne(W,b,W.b,a?Me+a:"",e)),c=b.l||e),d({Qa:c,Ja:g,ib:h})}}
+function tf(a,b){var c={},d={},e=b&&b.__cssBuild;xe(b,function(b){sf(a,b,e,function(e){jf.call(a.g||a,e.Qa)&&(e.Ja?of(b,c):of(b,d))})},null,!0);return{Pa:d,Ha:c}}
+function uf(a,b,c,d){var e=V(b),f=Le(e.is,e.K),h=new RegExp("(?:^|[^.#[:])"+(b.extends?"\\"+f.slice(0,-1)+"\\]":f)+"($|[.:[\\s>+~])");e=X(b).w;var g=vf(e,d);return Je(b,e,function(b){var e="";b.j||nf(b);b.j.cssText&&(e=qf(a,b.j.cssText,c));b.cssText=e;if(!S&&!ze(b)&&b.cssText){var k=e=b.cssText;null==b.ka&&(b.ka=se.test(e));if(b.ka)if(null==b.S){b.S=[];for(var p in g)k=g[p],k=k(e),e!==k&&(e=k,b.S.push(p))}else{for(p=0;p<b.S.length;++p)k=g[b.S[p]],e=k(e);k=e}b.cssText=k;b.l=b.l||b.selector;e="."+d;
+p=b.l.split(",");k=0;for(var z=p.length,E;k<z&&(E=p[k]);k++)p[k]=E.match(h)?E.replace(f,e):e+" "+E;b.selector=p.join(",")}})}function vf(a,b){a=a.b;var c={};if(!S&&a)for(var d=0,e=a[d];d<a.length;e=a[++d]){var f=e,h=b;f.g=new RegExp("\\b"+f.keyframesName+"(?!\\B|-)","g");f.a=f.keyframesName+"-"+h;f.l=f.l||f.selector;f.selector=f.l.replace(f.keyframesName,f.a);c[e.keyframesName]=wf(e)}return c}function wf(a){return function(b){return b.replace(a.g,a.a)}}
+function xf(a,b){var c=yf,d=ye(a);a.textContent=we(d,function(a){var d=a.cssText=a.parsedCssText;a.j&&a.j.cssText&&(d=d.replace(ge,"").replace(he,""),a.cssText=qf(c,d,b))})}q.Object.defineProperties(lf.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return"x-scope"}}});var yf=new lf;var zf={},Af=window.customElements;if(Af&&!S){var Bf=Af.define;Af.define=function(a,b,c){var d=document.createComment(" Shady DOM styles for "+a+" "),e=document.head;e.insertBefore(d,(U?U.nextSibling:null)||e.firstChild);U=d;zf[a]=d;Bf.call(Af,a,b,c)}};function Cf(){this.cache={}}Cf.prototype.store=function(a,b,c,d){var e=this.cache[a]||[];e.push({v:b,styleElement:c,o:d});100<e.length&&e.shift();this.cache[a]=e};Cf.prototype.fetch=function(a,b,c){if(a=this.cache[a])for(var d=a.length-1;0<=d;d--){var e=a[d],f;a:{for(f=0;f<c.length;f++){var h=c[f];if(e.v[h]!==b[h]){f=!1;break a}}f=!0}if(f)return e}};function Df(){}
+function Ef(a){for(var b=0;b<a.length;b++){var c=a[b];if(c.target!==document.documentElement&&c.target!==document.head)for(var d=0;d<c.addedNodes.length;d++){var e=c.addedNodes[d];if(e.nodeType===Node.ELEMENT_NODE){var f=e.getRootNode();var h=e;var g=[];h.classList?g=Array.from(h.classList):h instanceof window.SVGElement&&h.hasAttribute("class")&&(g=h.getAttribute("class").split(/\s+/));h=g;g=h.indexOf(W.a);if((h=-1<g?h[g+1]:"")&&f===e.ownerDocument)Fe(e,h,!0);else if(f.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&
+(f=f.host))if(f=V(f).is,h===f)for(e=window.ShadyDOM.nativeMethods.querySelectorAll.call(e,":not(."+W.a+")"),f=0;f<e.length;f++)He(e[f],h);else h&&Fe(e,h,!0),Fe(e,f)}}}}
+if(!S){var Ff=new MutationObserver(Ef),Gf=function(a){Ff.observe(a,{childList:!0,subtree:!0})};if(window.customElements&&!window.customElements.polyfillWrapFlushCallback)Gf(document);else{var Hf=function(){Gf(document.body)};window.HTMLImports?window.HTMLImports.whenReady(Hf):requestAnimationFrame(function(){if("loading"===document.readyState){var a=function(){Hf();document.removeEventListener("readystatechange",a)};document.addEventListener("readystatechange",a)}else Hf()})}Df=function(){Ef(Ff.takeRecords())}}
+var If=Df;var Jf={};var Kf=Promise.resolve();function Lf(a){if(a=Jf[a])a._applyShimCurrentVersion=a._applyShimCurrentVersion||0,a._applyShimValidatingVersion=a._applyShimValidatingVersion||0,a._applyShimNextVersion=(a._applyShimNextVersion||0)+1}function Mf(a){return a._applyShimCurrentVersion===a._applyShimNextVersion}function Nf(a){a._applyShimValidatingVersion=a._applyShimNextVersion;a.a||(a.a=!0,Kf.then(function(){a._applyShimCurrentVersion=a._applyShimNextVersion;a.a=!1}))};var Of=null,Pf=window.HTMLImports&&window.HTMLImports.whenReady||null,Qf;function Rf(a){requestAnimationFrame(function(){Pf?Pf(a):(Of||(Of=new Promise(function(a){Qf=a}),"complete"===document.readyState?Qf():document.addEventListener("readystatechange",function(){"complete"===document.readyState&&Qf()})),Of.then(function(){a&&a()}))})};var Sf=new Cf;function Y(){var a=this;this.H={};this.c=document.documentElement;var b=new Ud;b.rules=[];this.g=hf(this.c,new gf(b));this.m=!1;this.b=this.a=null;Rf(function(){Tf(a)})}n=Y.prototype;n.sa=function(){If()};n.Fa=function(a){return ye(a)};n.Sa=function(a){return we(a)};
+n.prepareTemplate=function(a,b,c){if(!a.b){a.b=!0;a.name=b;a.extends=c;Jf[b]=a;var d=(d=a.content.querySelector("style"))?d.getAttribute("css-build")||"":"";var e=[];for(var f=a.content.querySelectorAll("style"),h=0;h<f.length;h++){var g=f[h];if(g.hasAttribute("shady-unscoped")){if(!S){var k=g.textContent;ve.has(k)||(ve.add(k),k=g.cloneNode(!0),document.head.appendChild(k));g.parentNode.removeChild(g)}}else e.push(g.textContent),g.parentNode.removeChild(g)}e=e.join("").trim();c={is:b,extends:c,Xa:d};
+S||Fe(a.content,b);Tf(this);f=qe.test(e)||pe.test(e);qe.lastIndex=0;pe.lastIndex=0;e=Vd(e);f&&T&&this.a&&this.a.transformRules(e,b);a._styleAst=e;a.c=d;d=[];T||(d=mf(a._styleAst));if(!d.length||T)e=S?a.content:null,b=zf[b],f=Je(c,a._styleAst),b=f.length?Ae(f,c.is,e,b):void 0,a.ja=b;a.Aa=d}};
+function Uf(a){!a.b&&window.ShadyCSS&&window.ShadyCSS.CustomStyleInterface&&(a.b=window.ShadyCSS.CustomStyleInterface,a.b.transformCallback=function(b){a.pa(b)},a.b.validateCallback=function(){requestAnimationFrame(function(){(a.b.enqueued||a.m)&&a.D()})})}function Tf(a){!a.a&&window.ShadyCSS&&window.ShadyCSS.ApplyShim&&(a.a=window.ShadyCSS.ApplyShim,a.a.invalidCallback=Lf);Uf(a)}
+n.D=function(){Tf(this);if(this.b){var a=this.b.processStyles();if(this.b.enqueued){if(T)for(var b=0;b<a.length;b++){var c=this.b.getStyleForCustomStyle(a[b]);if(c&&T&&this.a){var d=ye(c);Tf(this);this.a.transformRules(d);c.textContent=we(d)}}else for(Vf(this,this.c,this.g),b=0;b<a.length;b++)(c=this.b.getStyleForCustomStyle(a[b]))&&xf(c,this.g.B);this.b.enqueued=!1;this.m&&!T&&this.styleDocument()}}};
+n.styleElement=function(a,b){var c=V(a).is,d=X(a);if(!d){var e=V(a);d=e.is;e=e.K;var f=zf[d];d=Jf[d];if(d){var h=d._styleAst;var g=d.Aa}d=hf(a,new gf(h,f,g,e))}a!==this.c&&(this.m=!0);b&&(d.G=d.G||{},Object.assign(d.G,b));if(T){if(d.G){b=d.G;for(var k in b)null===k?a.style.removeProperty(k):a.style.setProperty(k,b[k])}if(((k=Jf[c])||a===this.c)&&k&&k.ja&&!Mf(k)){if(Mf(k)||k._applyShimValidatingVersion!==k._applyShimNextVersion)Tf(this),this.a&&this.a.transformRules(k._styleAst,c),k.ja.textContent=
+Je(a,d.w),Nf(k);S&&(c=a.shadowRoot)&&(c.querySelector("style").textContent=Je(a,d.w));d.w=k._styleAst}}else if(Vf(this,a,d),d.fa&&d.fa.length){c=d;k=V(a).is;d=(b=Sf.fetch(k,c.B,c.fa))?b.styleElement:null;h=c.o;(g=b&&b.o)||(g=this.H[k]=(this.H[k]||0)+1,g=k+"-"+g);c.o=g;g=c.o;e=yf;e=d?d.textContent||"":uf(e,a,c.B,g);f=X(a);var l=f.a;l&&!S&&l!==d&&(l._useCount--,0>=l._useCount&&l.parentNode&&l.parentNode.removeChild(l));S?f.a?(f.a.textContent=e,d=f.a):e&&(d=Ae(e,g,a.shadowRoot,f.b)):d?d.parentNode||
+(kf&&-1<e.indexOf("@media")&&(d.textContent=e),Be(d,null,f.b)):e&&(d=Ae(e,g,null,f.b));d&&(d._useCount=d._useCount||0,f.a!=d&&d._useCount++,f.a=d);g=d;S||(d=c.o,f=e=a.getAttribute("class")||"",h&&(f=e.replace(new RegExp("\\s*x-scope\\s*"+h+"\\s*","g")," ")),f+=(f?" ":"")+"x-scope "+d,e!==f&&De(a,f));b||Sf.store(k,c.B,g,c.o)}};function Wf(a,b){return(b=b.getRootNode().host)?X(b)?b:Wf(a,b):a.c}
+function Vf(a,b,c){a=Wf(a,b);var d=X(a);a=Object.create(d.B||null);var e=tf(b,c.w);b=rf(d.w,b).v;Object.assign(a,e.Ha,b,e.Pa);b=c.G;for(var f in b)if((e=b[f])||0===e)a[f]=e;f=yf;b=Object.getOwnPropertyNames(a);for(e=0;e<b.length;e++)d=b[e],a[d]=pf(f,a[d],a);c.B=a}n.styleDocument=function(a){this.styleSubtree(this.c,a)};
+n.styleSubtree=function(a,b){var c=a.shadowRoot;(c||a===this.c)&&this.styleElement(a,b);if(b=c&&(c.children||c.childNodes))for(a=0;a<b.length;a++)this.styleSubtree(b[a]);else if(a=a.children||a.childNodes)for(b=0;b<a.length;b++)this.styleSubtree(a[b])};n.pa=function(a){var b=this,c=ye(a);xe(c,function(a){if(S)df(a);else{var c=W;a.selector=a.parsedSelector;df(a);a.selector=a.l=Ne(c,a,c.c,void 0,void 0)}T&&(Tf(b),b.a&&b.a.transformRule(a))});T?a.textContent=we(c):this.g.w.rules.push(c)};
+n.getComputedStyleValue=function(a,b){var c;T||(c=(X(a)||X(Wf(this,a))).B[b]);return(c=c||window.getComputedStyle(a).getPropertyValue(b))?c.trim():""};n.Ra=function(a,b){var c=a.getRootNode();b=b?b.split(/\s/):[];c=c.host&&c.host.localName;if(!c){var d=a.getAttribute("class");if(d){d=d.split(/\s/);for(var e=0;e<d.length;e++)if(d[e]===W.a){c=d[e+1];break}}}c&&b.push(W.a,c);T||(c=X(a))&&c.o&&b.push(yf.a,c.o);De(a,b.join(" "))};n.Ba=function(a){return X(a)};Y.prototype.flush=Y.prototype.sa;
+Y.prototype.prepareTemplate=Y.prototype.prepareTemplate;Y.prototype.styleElement=Y.prototype.styleElement;Y.prototype.styleDocument=Y.prototype.styleDocument;Y.prototype.styleSubtree=Y.prototype.styleSubtree;Y.prototype.getComputedStyleValue=Y.prototype.getComputedStyleValue;Y.prototype.setElementClass=Y.prototype.Ra;Y.prototype._styleInfoForNode=Y.prototype.Ba;Y.prototype.transformCustomStyleForDocument=Y.prototype.pa;Y.prototype.getStyleAst=Y.prototype.Fa;Y.prototype.styleAstToString=Y.prototype.Sa;
+Y.prototype.flushCustomStyles=Y.prototype.D;Object.defineProperties(Y.prototype,{nativeShadow:{get:function(){return S}},nativeCss:{get:function(){return T}}});var Z=new Y,Xf,Yf;window.ShadyCSS&&(Xf=window.ShadyCSS.ApplyShim,Yf=window.ShadyCSS.CustomStyleInterface);window.ShadyCSS={ScopingShim:Z,prepareTemplate:function(a,b,c){Z.D();Z.prepareTemplate(a,b,c)},styleSubtree:function(a,b){Z.D();Z.styleSubtree(a,b)},styleElement:function(a){Z.D();Z.styleElement(a)},styleDocument:function(a){Z.D();Z.styleDocument(a)},getComputedStyleValue:function(a,b){return Z.getComputedStyleValue(a,b)},nativeCss:T,nativeShadow:S};Xf&&(window.ShadyCSS.ApplyShim=Xf);
+Yf&&(window.ShadyCSS.CustomStyleInterface=Yf);/*
+
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ Code distributed by Google as part of the polymer project is also
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+var Zf=window.customElements,$f=window.HTMLImports,ag=window.HTMLTemplateElement;window.WebComponents=window.WebComponents||{};if(Zf&&Zf.polyfillWrapFlushCallback){var bg,cg=function(){if(bg){ag.Ca&&ag.Ca(window.document);var a=bg;bg=null;a();return!0}},dg=$f.whenReady;Zf.polyfillWrapFlushCallback(function(a){bg=a;dg(cg)});$f.whenReady=function(a){dg(function(){cg()?$f.whenReady(a):a()})}}
+$f.whenReady(function(){requestAnimationFrame(function(){window.WebComponents.ready=!0;document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))})});var eg=document.createElement("style");eg.textContent="body {transition: opacity ease-in 0.2s; } \nbody[unresolved] {opacity: 0; display: block; overflow: hidden; position: relative; } \n";var fg=document.querySelector("head");fg.insertBefore(eg,fg.firstChild);}).call(this);
+
+//# sourceMappingURL=webcomponents-hi-sd-ce.js.map
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd-ce.js.map b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd-ce.js.map
new file mode 100644
index 00000000000..40142c326bf
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd-ce.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["node_modules/@webcomponents/html-imports/src/html-imports.js"," [synthetic:util/global] "," [synthetic:util/defineproperty] "," [synthetic:es6/symbol] "," [synthetic:es6/util/makeiterator] "," [synthetic:es6/util/arrayfromiterator] ","node_modules/@webcomponents/shadydom/src/shady-data.js","node_modules/@webcomponents/shadydom/src/utils.js","node_modules/@webcomponents/shadydom/src/flush.js","node_modules/@webcomponents/shadydom/src/observe-changes.js","node_modules/@webcomponents/shadydom/src/native-methods.js","node_modules/@webcomponents/shadydom/src/innerHTML.js","node_modules/@webcomponents/shadydom/src/native-tree-walker.js","node_modules/@webcomponents/shadydom/src/native-tree-accessors.js","node_modules/@webcomponents/shadydom/src/native-tree.js","node_modules/@webcomponents/shadydom/src/patch-accessors.js","node_modules/@webcomponents/shadydom/src/attach-shadow.js","node_modules/@webcomponents/shadydom/src/patch-builtins.js","node_modules/@webcomponents/shadydom/src/logical-tree.js","node_modules/@webcomponents/shadydom/src/logical-mutation.js"," [synthetic:es6/util/arrayfromiterable] ","node_modules/@webcomponents/shadydom/src/patch-events.js","node_modules/@webcomponents/shadydom/src/array-splice.js","node_modules/@webcomponents/shadydom/src/shadydom.js","node_modules/@webcomponents/custom-elements/src/Utilities.js","node_modules/@webcomponents/custom-elements/src/CustomElementInternals.js","node_modules/@webcomponents/custom-elements/src/CustomElementState.js","node_modules/@webcomponents/custom-elements/src/DocumentConstructionObserver.js","node_modules/@webcomponents/custom-elements/src/CustomElementRegistry.js","node_modules/@webcomponents/custom-elements/src/Deferred.js","node_modules/@webcomponents/custom-elements/src/Patch/Native.js","node_modules/@webcomponents/custom-elements/src/AlreadyConstructedMarker.js","node_modules/@webcomponents/custom-elements/src/Patch/HTMLElement.js","node_modules/@webcomponents/custom-elements/src/custom-elements.js","node_modules/@webcomponents/custom-elements/src/Patch/Interface/ParentNode.js","node_modules/@webcomponents/custom-elements/src/Patch/Document.js","node_modules/@webcomponents/custom-elements/src/Patch/Node.js","node_modules/@webcomponents/custom-elements/src/Patch/Interface/ChildNode.js","node_modules/@webcomponents/custom-elements/src/Patch/Element.js","node_modules/@webcomponents/custom-elements/src/Patch/DocumentFragment.js","node_modules/@webcomponents/shadycss/src/css-parse.js","node_modules/@webcomponents/shadycss/src/style-settings.js","node_modules/@webcomponents/shadycss/src/common-regex.js","node_modules/@webcomponents/shadycss/src/unscoped-style-handler.js","node_modules/@webcomponents/shadycss/src/style-util.js","node_modules/@webcomponents/shadycss/src/style-transformer.js","node_modules/@webcomponents/shadycss/src/style-info.js","node_modules/@webcomponents/shadycss/src/style-properties.js","node_modules/@webcomponents/shadycss/src/style-placeholder.js","node_modules/@webcomponents/shadycss/src/style-cache.js","node_modules/@webcomponents/shadycss/src/document-watcher.js","node_modules/@webcomponents/shadycss/src/template-map.js","node_modules/@webcomponents/shadycss/src/apply-shim-utils.js","node_modules/@webcomponents/shadycss/src/document-wait.js","node_modules/@webcomponents/shadycss/src/scoping-shim.js","node_modules/@webcomponents/shadycss/src/common-utils.js","node_modules/@webcomponents/shadycss/entrypoints/scoping-shim.js","src/post-polyfill.js","src/unresolved.js"],"names":["$jscomp.global","$jscomp.defineProperty","$jscomp.initSymbol","$jscomp.Symbol","$jscomp.SYMBOL_PREFIX","$jscomp.arrayIterator","$jscomp.initSymbolIterator","$jscomp.iteratorPrototype","scope","newCustomEvent","type","params","window","CustomEvent","event","document","createEvent","initCustomEvent","bubbles","cancelable","detail","importForElement","element","useNative","ownerDocument","doc","parentNode","closest","importSelector","isImportLink","whenImportsReady","callback","imports","QSA","rootImportSelector","pending","length","forEach","imp","whenElementLoaded","whenDocumentReady","stateChanged","readyState","body","removeEventListener","addEventListener","whenReady","localName","src","firstChild","onLoadingDone","isIE","node","nodeType","Node","ELEMENT_NODE","rel","constructor","Importer","documents","inflight","dynamicImportsMO","MutationObserver","m","handleMutations","observe","head","childList","subtree","loadImports","replaceScripts","fragment","template","content","scriptsSelector","script","clone","createElement","attributes","attr","setAttribute","name","value","textContent","replaceChild","selector","childNodes","querySelectorAll","emptyNodeList","list","inverseOrder","increment","i","link","currentScript","Object","defineProperty","get","scripts","configurable","CSS_URL_REGEXP","CSS_IMPORT_REGEXP","STYLESHEET_REGEXP","Path","fixUrls","base","href","resolveUrl","getAttribute","r","replaceUrls","text","linkUrl","regexp","replace","pre","url","post","urlPath","undefined","__workingURL","u","URL","pathname","e","__tempDoc","implementation","createHTMLDocument","__base","appendChild","__anchor","Xhr","async","load","success","fail","match","pieces","split","resource","header","indexOf","atob","decodeURIComponent","request","XMLHttpRequest","open","onload","request.onload","redirectedUrl","responseURL","getResponseHeader","location","origin","protocol","host","response","responseText","status","send","test","navigator","userAgent","links","loadImport","fireEventIfNeeded","makeDocument","processImportsIfLoadingDone","createDocumentFragment","p1","p2","innerHTML","baseEl","querySelector","removeAttribute","n$","importDependenciesSelector","inlineScriptIndex","n","importDependencyAttr","encodeURIComponent","num","disconnect","flatten","scriptsOk","stylesOk","fireEvents","waitForStyles","runScripts","DOCUMENT_FRAGMENT_NODE","cloneScript","l","s","s$","pendingScriptsSelector","pendingStylesSelector","needsMove","disabledLinkSelector","placeholder","insertBefore","nextSibling","newSibling","import","dispatchEvent","eventType","mutations","addedNodes","elem","importer","imps","target","native_baseURI","getOwnPropertyDescriptor","prototype","klass","Element","ownerDoc","call","enumerable","HTMLLinkElement","HTMLImports","ShadyData","publicRoot","root","dirty","flattenedNodes","_prevAssignedSlot","_previouslyAssignedNodes","assignedSlot","assignedNodes","observer","previousSibling","lastChild","ownerShadyRoot","__insideAccessors","__outsideAccessors","toJSON","ensureShadyDataForNode","__shady","shadyDataForNode","settings","hasNativeShadowDOM","attachShadow","getRootNode","desc","hasDescriptors","inUse","IS_IE","IS_EDGE","useNativeAccessors","isTrackingLogicalChildNodes","nodeData","isShadyRoot","obj","_localName","ownerShadyRootForNode","p","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","extend","source","getOwnPropertyNames","pd","extendAll","sources","mixin","twiddle","createTextNode","queue","shift","characterData","microtask","push","hasDocumentContains","contains","container","flushList","scheduled","enqueue","flush","didFlush","AsyncObserver","_scheduled","removedNodes","callbacks","Set","schedule","takeRecords","cb","observeChildren","sd","add","_callback","_observer","_node","unobserveChildren","handle","delete","size","filterMutations","targetRootNode","map","mutation","mutationInScope","nodes","Array","from","filter","create","removeChild","cloneNode","importNode","Document","windowAddEventListener","Window","windowRemoveEventListener","HTMLElement","getElementById","elementQuerySelector","fragmentQuerySelector","DocumentFragment","documentQuerySelector","elementQuerySelectorAll","fragmentQuerySelectorAll","documentQuerySelectorAll","DOCUMENT_NODE","escapeAttrRegExp","escapeDataRegExp","escapeReplace","c","makeSet","arr","set","voidElements","plaintextParents","getInnerHTML","c$","child","tagName","attrs","TEXT_NODE","data","COMMENT_NODE","console","error","Error","nodeWalker","createTreeWalker","NodeFilter","SHOW_ALL","elementWalker","SHOW_ELEMENT","currentNode","parentElement","firstElementChild","lastElementChild","previousElementSibling","nextElementSibling","children","textWalker","SHOW_TEXT","nextNode","nodeValue","nativeProtos","findNodeDescriptor","proto","hasOwnProperty","nodeAccessors","fragmentAccessors","documentAccessors","slice","accessors","nativeTreeAccessors","nativeTreeWalker","clearNode","inertDoc","nativeIsConnectedAccessors","nativeIsConnected","nativeActiveElementDescriptor","OutsideAccessors","ClassNameAccessor","className","InsideAccessors","item","childNodes.item","index","childElementCount","tc","cn","join","nativeAccessors","children.item","containerName","htmlContainer","ShadowRootAccessor","shadowRoot","ActiveElementAccessor","activeElement","active","nativeContains","activeRoot","patchAccessorGroup","descriptors","force","objDesc","warn","patchAccessors","patchShadowRootAccessors","ShadyRoot","__proto__","defineProperties","nodeName","prop","patchOutsideElementAccessors","patchInsideElementAccessors","linkNode","ref_node","containerData","ref_nodeData","psd","nsd","recordChildNodes","parent","refData","ownerRoot","slotsAdded","slots","_ensureSlotData","_pendingSlots","_slotList","_slotMap","$jscomp.arrayFromIterator","$jscomp.makeIterator","_asyncRender","resetTo","parentData","hasShadowRootWithSlot","preventNativeInsert","firstComposedNode","nativeMethods","scheduleObserver","preventNativeRemove","removeOwnerShadyRoot","changeSlotContent","_validateSlots","slot","splice","x","didRemove","removingInsertionPoint","composed","flattened","_hasInsertionPoint","distributeAttributeChange","oldName","__slotName","_nameForSlot","_sortSlots","addedNode","removedNode","documentElement","query","matcher","halter","queryElements","elements","result","scopingShim","deep","nc","eventWrappersName","Date","now","alwaysComposed","pathComposer","startNode","composedPath","current","startRoot","retarget","refNode","path","refNodePath","ancestor","lastRoot","rootIdx","eventMixin","isTrusted","__composed","__composedPath","currentTarget","relatedTarget","__relatedTarget","__relatedTargetComposedPath","stopPropagation","Event","__propagationStopped","stopImmediatePropagation","__immediatePropagationStopped","mixinComposedFlag","Base","klazz","options","nonBubblingEventsToRetarget","hasRetargeted","fireHandlers","phase","hs","__handlers","fn","retargetNonBubblingEvent","AT_TARGET","lastFiredRoot","findListener","wrappers","capture","once","passive","savedType","savedListener","savedCapture","savedOnce","savedPassive","savedNode","fnOrObj","optionsOrCapture","handlerType","handleEvent","__shadyTarget","wrapperFn","patchEvent","lastCurrentTargetDesc","eventPhase","BUBBLING_PHASE","CAPTURING_PHASE","ret","ael","idx","activateFocusEventOverrides","ev","getPrototypeOf","patchProto","__sourceProto","PatchedEvent","PatchedCustomEvent","PatchedMouseEvent","MouseEvent","newSplice","addedCount","removed","calcSplices","currentEnd","old","oldEnd","currentStart","oldStart","prefixCount","suffixCount","minLength","Math","min","currentValue","previousValue","index1","index2","count","equals","rowCount","columnCount","distances","j","north","west","edits","EDIT_ADD","EDIT_DELETE","northWest","EDIT_LEAVE","EDIT_UPDATE","reverse","splices","oldIndex","ShadyRootConstructionToken","ancestorList","ancestors","unshift","token","TypeError","SHADYROOT_NAME","_mode","mode","hostData","MODE_CLOSED","rootData","_renderPending","_render","renderRoot","_distribute","slotData","_distributeNodeToSlot","slotParentRoot","slotParentData","_addAssignedToFlattenedNodes","prevAssignedNodes","_fireSlotChange","_compose","composeList","targetNode","distributedNode","d","next","forcedSlot","oldSlot","CATCHALL_NAME","assigned","nestedAssigned","slotNamesToSort","_mapSlots","sort","a","b","listA","listB","nA","nB","getAssignedSlot","windowMixin","bind","nodeMixin","IsConnectedAccessor","isConnected","textMixin","fragmentMixin","o","slotMixin","elementMixin","documentMixin","id","nativeBlur","blur","htmlElementMixin","shadowActive","shadowRootMixin","patchBuiltin","ShadyDOM","patch","nativeHTMLElement","Text","HTMLSlotElement","ShadowRoot","reservedTagList","isValidCustomElementName","reserved","has","validForm","nativeValue","__CE_isImportDocument","nextSiblingOrAncestorSibling","start","walkDeepDescendantElements","visitedImports","__CE_shadowRoot","setPropertyUnchecked","destination","CustomElementInternals","_localNameToDefinition","Map","_constructorToDefinition","_patches","_hasPatches","setDefinition","definition","addPatch","listener","patchTree","__CE_patched","connectTree","custom","__CE_state","connectedCallback","upgradeElement","disconnectTree","disconnectedCallback","patchAndUpgradeTree","upgrade","gatherElements","__CE_hasRegistry","__CE_documentLoadHandled","clonedVisitedImports","defaultView","localNameToDefinition","constructionStack","pop","failed","__CE_definition","attributeChangedCallback","observedAttributes","oldValue","newValue","namespace","DocumentConstructionObserver","internals","_internals","_document","_handleMutations","Deferred","_resolve","_value","_promise","Promise","resolve","CustomElementRegistry","_elementDefinitionIsRunning","_whenDefinedDeferred","_flushCallback","this._flushCallback","_flushPending","_pendingDefinitions","_documentConstructionObserver","CustomElementRegistry$$module$node_modules$$webcomponents$custom_elements$src$CustomElementRegistry.prototype","?.prototype","define","Function","SyntaxError","getCallback","callbackValue","adoptedCallback","_flush","pendingDefinitions","elementsWithStableDefinitions","elementsWithPendingDefinitions","pendingElements","pendingUpgradableElements","deferred","CustomElementRegistry$$module$node_modules$$webcomponents$custom_elements$src$CustomElementRegistry_prototype$whenDefined","whenDefined","reject","prior","some","polyfillWrapFlushCallback","outer","inner","Document_createElement","Document_createElementNS","createElementNS","Document_importNode","Document_prepend","Document_append","DocumentFragment_prepend","DocumentFragment_append","Node_cloneNode","Node_appendChild","Node_insertBefore","Node_removeChild","Node_replaceChild","Node_textContent","Element_attachShadow","Element_innerHTML","Element_getAttribute","Element_setAttribute","Element_removeAttribute","Element_getAttributeNS","getAttributeNS","Element_setAttributeNS","setAttributeNS","Element_removeAttributeNS","removeAttributeNS","Element_insertAdjacentElement","Element_insertAdjacentHTML","Element_prepend","Element_append","Element_before","Element_after","Element_replaceWith","Element_remove","HTMLElement_innerHTML","HTMLElement_insertAdjacentElement","HTMLElement_insertAdjacentHTML","$jscompDefaultExport","AlreadyConstructedMarker","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_createElement.call","setPrototypeOf","lastIndex","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement","builtIn","appendPrependPatch","builtInMethod","connectedElements","apply","prepend","append","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_importNode.call","NS_HTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_createElementNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_prepend","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_append","patch_textContent","baseDescriptor","assignedValue","childNodesLength","insertedNodes","nativeResult","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_insertBefore.call","nodeWasConnected","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_appendChild.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_cloneNode.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_removeChild.call","nodeToInsert","nodeToRemove","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_replaceChild.call","nodeToInsertWasConnected","thisIsConnected","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_textContent","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_textContent.get","parts","beforeAfterPatch","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_before","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_after","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_replaceWith","wasConnected","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_remove","patch_innerHTML","htmlString","removedElements","patch_insertAdjacentElement","baseMethod","position","insertedElement","patch_insertAdjacentHTML","upgradeNodesInRange","end","toLowerCase","marker","String","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_attachShadow","init","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_attachShadow.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_innerHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_innerHTML.get","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_innerHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_innerHTML.get","isTemplate","rawElement","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_setAttribute.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_getAttribute.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_setAttributeNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_getAttributeNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_removeAttribute.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_removeAttributeNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_insertAdjacentElement","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_insertAdjacentElement","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_insertAdjacentHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_insertAdjacentHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_prepend","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_append","priorCustomElements","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.DocumentFragment_prepend","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.DocumentFragment_append","customElements","StyleNode","parse","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.comments","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.port","parseCss","OPEN_BRACE","previous","CLOSE_BRACE","t","substring","trim","ss","_expandUnicodeEscapes","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.multipleSpaces","lastIndexOf","AT_START","MEDIA_START","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.MEDIA_RULE","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.keyframesRule","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.KEYFRAMES_RULE","VAR_START","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.MIXIN_RULE","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.STYLE_RULE","r$","code","repeat","stringify","preserveProperties","cssText","rules","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.customProp","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.mixinProp","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.mixinApply","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.varApply","STYLE_RULE","KEYFRAMES_RULE","MEDIA_RULE","MIXIN_RULE","comments","port","customProp","mixinProp","mixinApply","varApply","keyframesRule","multipleSpaces","nativeShadow","nativeCssVariables_","calcCssVariables","CSS","supports","ShadyCSS","nativeCss","nativeCssVariables","VAR_ASSIGN","MIXIN_MATCH","VAR_CONSUMED","ANIMATION_MATCH","MEDIA_MATCH","BRACKETED","styleTextSet","toCssText","forEachRule","rulesForStyle","style","isKeyframesSelector","rule","styleRuleCallback","keyframesRuleCallback","onlyActiveRules","skipRules","matchMedia","applyCss","moniker","contextNode","applyStyle","lastHeadApplyNode","compareDocumentPosition","DOCUMENT_POSITION_PRECEDING","processVariableAndFallback","str","level","prefix","suffix","comma","fallback","setElementClassRaw","getIsExtends","typeExtension","is","extends","StyleTransformer","dom","shouldRemoveScope","_transformDom","_content","classList","remove","SCOPE_NAME","CLASS","elementStyles","styleRules","cssBuildType","css","ext","hostScope","_calcHostScope","CSS_CLASS_PREFIX","isScoped","transformedSelector","_transformRuleCss","self","_transformComplexSelector","transformer","p$","COMPLEX_SELECTOR_SEP","_twiddleNthPlus","NTH","inside","stop","isNth","SLOTTED_START","HOST","SIMPLE_SELECTOR_SEP","info","_transformCompoundSelector","combinator","slottedIndex","SLOTTED","_transformHostSelector","_transformSimpleSelector","slotted","SLOTTED_PAREN","paren","DIR_PAREN","before","dir","PSEUDO_PREFIX","HOST_PAREN","SIMPLE_SELECTOR_PREFIX","typeSelector","SELECTOR_NO_MATCH","normalizeRootSelector","ROOT","_transformDocumentSelector","SCOPE_DOC_SELECTOR","$jscomp.global.Object.defineProperties","RegExp","StyleInfo","ast","ownStylePropertyNames","overrideStyleProperties","customStyle","scopeSelector","styleProperties","styleInfo","_getStyleRules","method","StyleProperties","decorateStyles","props","keyframes","ruleIndex","decorateRule","propertyInfo","exec","onKeyframesRule","_keyframes","names","properties","collectProperties","hasProperties","assign","any","valueForProperty","property","valueForProperties","propertyValue","colon","pp","propertyDataFromStyles","selectorToMatch","parseInt","key","whenHostOrRootRule","cssBuild","parsedSelector","isRoot","isHost","hostAndRootPropertiesForScope","hostProps","rootProps","_element","transformStyles","hostSelector","hostRx","HOST_PREFIX","rxHostSelector","HOST_SUFFIX","StyleInfo$$module$node_modules$$webcomponents$shadycss$src$style_info.get","keyframeTransforms","_elementKeyframeTransforms","output","input","hasAnimations","keyframeNamesToTransform","keyframe","transform","keyframesRules","keyframesNameRx","transformedKeyframesName","scopeId","_keyframesRuleTransformer","applyCustomStyle","XSCOPE_NAME","placeholderMap","ce","origDefine","wrappedDefine","clazz","placeHolder","createComment","after","StyleCache","cache","store","tagname","styleElement","typeMax","fetch","ownPropertyNames","entry","pn","handler","mxns","mxn","classes","hasAttribute","currentScope","newScope","unscoped","delayedStart","requestAnimationFrame","module$node_modules$$webcomponents$shadycss$src$document_watcher.flush","templateMap","promise","invalidate","elementName","templateIsValid","startValidatingTemplate","_validating","then","readyPromise","resolveFn","documentWait","styleCache","ScopingShim","_scopeCounter","_documentOwner","_documentOwnerStyleInfo","StyleInfo$$module$node_modules$$webcomponents$shadycss$src$style_info.set","_elementsHaveApplied","_customStyleInterface","_applyShim","_ensure","ScopingShim$$module$node_modules$$webcomponents$shadycss$src$scoping_shim.prototype","ScopingShim$$module$node_modules$$webcomponents$shadycss$src$scoping_shim_prototype$flush","getStyleAst","styleAstToString","prepareTemplate","_prepared","styleTextParts","styles","scopingAttribute","newStyle","__cssBuild","_cssBuild","shadowroot","_style","_ownPropertyNames","_ensureCustomStyleInterface","CustomStyleInterface","transformCustomStyleForDocument","flushCustomStyles","_ensureApplyShim","ApplyShim","customStyles","_revalidateCustomStyleApplyShim","_updateProperties","_applyCustomStyles","styleDocument","overrideProps","_isRootOwner","removeProperty","setProperty","cachedStyle","cacheEntry","oldScopeSelector","cachedScopeSelector","applyElementStyle","v","_styleOwnerForNode","owner","ownerStyleInfo","hostAndRootProps","propertiesMatchingHost","propertyData","overrides","reify","styleSubtree","shadowChildren","documentRule","_transformRule","getComputedStyleValue","getComputedStyle","getPropertyValue","setElementClass","classString","scopeName","classAttr","k$","_styleInfoForNode","elementExtends","Template","WebComponents","flushCallback","runAndClearCallback","bootstrap","origWhenReady","ready"],"mappings":"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","file":"webcomponents-hi-sd-ce.js","sourcesContent":["/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n(scope => {\n\n /********************* base setup *********************/\n const link = document.createElement('link');\n const useNative = Boolean('import' in link);\n const emptyNodeList = link.querySelectorAll('*');\n\n // Polyfill `currentScript` for browsers without it.\n let currentScript = null;\n if ('currentScript' in document === false) {\n Object.defineProperty(document, 'currentScript', {\n get() {\n return currentScript ||\n // NOTE: only works when called in synchronously executing code.\n // readyState should check if `loading` but IE10 is\n // interactive when scripts run so we cheat. This is not needed by\n // html-imports polyfill but helps generally polyfill `currentScript`.\n (document.readyState !== 'complete' ?\n document.scripts[document.scripts.length - 1] : null);\n },\n configurable: true\n });\n }\n\n /**\n * @param {Array|NodeList|NamedNodeMap} list\n * @param {!Function} callback\n * @param {boolean=} inverseOrder\n */\n const forEach = (list, callback, inverseOrder) => {\n const length = list ? list.length : 0;\n const increment = inverseOrder ? -1 : 1;\n let i = inverseOrder ? length - 1 : 0;\n for (; i < length && i >= 0; i = i + increment) {\n callback(list[i], i);\n }\n };\n\n /**\n * @param {!Node} node\n * @param {!string} selector\n * @return {!NodeList<!Element>}\n */\n const QSA = (node, selector) => {\n // IE 11 throws a SyntaxError if a node with no children is queried with\n // a selector containing the `:not([type])` syntax.\n if (!node.childNodes.length) {\n return emptyNodeList;\n }\n return node.querySelectorAll(selector);\n };\n\n /**\n * @param {!DocumentFragment} fragment\n */\n const replaceScripts = (fragment) => {\n forEach(QSA(fragment, 'template'), template => {\n forEach(QSA(template.content, scriptsSelector), script => {\n const clone = /** @type {!HTMLScriptElement} */\n (document.createElement('script'));\n forEach(script.attributes, attr => clone.setAttribute(attr.name, attr.value));\n clone.textContent = script.textContent;\n script.parentNode.replaceChild(clone, script);\n });\n replaceScripts(template.content);\n });\n };\n\n /********************* path fixup *********************/\n const CSS_URL_REGEXP = /(url\\()([^)]*)(\\))/g;\n const CSS_IMPORT_REGEXP = /(@import[\\s]+(?!url\\())([^;]*)(;)/g;\n const STYLESHEET_REGEXP = /(<link[^>]*)(rel=['|\"]?stylesheet['|\"]?[^>]*>)/g;\n\n // path fixup: style elements in imports must be made relative to the main\n // document. We fixup url's in url() and @import.\n const Path = {\n\n fixUrls(element, base) {\n if (element.href) {\n element.setAttribute('href',\n Path.resolveUrl(element.getAttribute('href'), base));\n }\n if (element.src) {\n element.setAttribute('src',\n Path.resolveUrl(element.getAttribute('src'), base));\n }\n if (element.localName === 'style') {\n const r = Path.replaceUrls(element.textContent, base, CSS_URL_REGEXP);\n element.textContent = Path.replaceUrls(r, base, CSS_IMPORT_REGEXP);\n }\n },\n\n replaceUrls(text, linkUrl, regexp) {\n return text.replace(regexp, (m, pre, url, post) => {\n let urlPath = url.replace(/[\"']/g, '');\n if (linkUrl) {\n urlPath = Path.resolveUrl(urlPath, linkUrl);\n }\n return pre + '\\'' + urlPath + '\\'' + post;\n });\n },\n\n resolveUrl(url, base) {\n // Lazy feature detection.\n if (Path.__workingURL === undefined) {\n Path.__workingURL = false;\n try {\n const u = new URL('b', 'http://a');\n u.pathname = 'c%20d';\n Path.__workingURL = (u.href === 'http://a/c%20d');\n } catch (e) {}\n }\n\n if (Path.__workingURL) {\n return (new URL(url, base)).href;\n }\n\n // Fallback to creating an anchor into a disconnected document.\n let doc = Path.__tempDoc;\n if (!doc) {\n doc = document.implementation.createHTMLDocument('temp');\n Path.__tempDoc = doc;\n doc.__base = doc.createElement('base');\n doc.head.appendChild(doc.__base);\n doc.__anchor = doc.createElement('a');\n }\n doc.__base.href = base;\n doc.__anchor.href = url;\n return doc.__anchor.href || url;\n }\n };\n\n /********************* Xhr processor *********************/\n const Xhr = {\n\n async: true,\n\n /**\n * @param {!string} url\n * @param {!function(!string, string=)} success\n * @param {!function(!string)} fail\n */\n load(url, success, fail) {\n if (!url) {\n fail('error: href must be specified');\n } else if (url.match(/^data:/)) {\n // Handle Data URI Scheme\n const pieces = url.split(',');\n const header = pieces[0];\n let resource = pieces[1];\n if (header.indexOf(';base64') > -1) {\n resource = atob(resource);\n } else {\n resource = decodeURIComponent(resource);\n }\n success(resource);\n } else {\n const request = new XMLHttpRequest();\n request.open('GET', url, Xhr.async);\n request.onload = () => {\n // Servers redirecting an import can add a Location header to help us\n // polyfill correctly. Handle relative and full paths.\n // Prefer responseURL which already resolves redirects\n // https://xhr.spec.whatwg.org/#the-responseurl-attribute\n let redirectedUrl = request.responseURL || request.getResponseHeader('Location');\n if (redirectedUrl && redirectedUrl.indexOf('/') === 0) {\n // In IE location.origin might not work\n // https://connect.microsoft.com/IE/feedback/details/1763802/location-origin-is-undefined-in-ie-11-on-windows-10-but-works-on-windows-7\n const origin = (location.origin || location.protocol + '//' + location.host);\n redirectedUrl = origin + redirectedUrl;\n }\n const resource = /** @type {string} */ (request.response || request.responseText);\n if (request.status === 304 || request.status === 0 ||\n request.status >= 200 && request.status < 300) {\n success(resource, redirectedUrl);\n } else {\n fail(resource);\n }\n };\n request.send();\n }\n }\n };\n\n /********************* importer *********************/\n\n const isIE = /Trident/.test(navigator.userAgent) ||\n /Edge\\/\\d./i.test(navigator.userAgent);\n\n const importSelector = 'link[rel=import]';\n\n // Used to disable loading of resources.\n const importDisableType = 'import-disable';\n\n const disabledLinkSelector = `link[rel=stylesheet][href][type=${importDisableType}]`;\n\n const scriptsSelector = `script:not([type]),script[type=\"application/javascript\"],` +\n `script[type=\"text/javascript\"]`;\n\n const importDependenciesSelector = `${importSelector},${disabledLinkSelector},` +\n `style:not([type]),link[rel=stylesheet][href]:not([type]),` + scriptsSelector;\n\n const importDependencyAttr = 'import-dependency';\n\n const rootImportSelector = `${importSelector}:not([${importDependencyAttr}])`;\n\n const pendingScriptsSelector = `script[${importDependencyAttr}]`;\n\n const pendingStylesSelector = `style[${importDependencyAttr}],` +\n `link[rel=stylesheet][${importDependencyAttr}]`;\n\n /**\n * Importer will:\n * - load any linked import documents (with deduping)\n * - whenever an import is loaded, prompt the parser to try to parse\n * - observe imported documents for new elements (these are handled via the\n * dynamic importer)\n */\n class Importer {\n constructor() {\n this.documents = {};\n // Used to keep track of pending loads, so that flattening and firing of\n // events can be done when all resources are ready.\n this.inflight = 0;\n this.dynamicImportsMO = new MutationObserver(m => this.handleMutations(m));\n // Observe changes on <head>.\n this.dynamicImportsMO.observe(document.head, {\n childList: true,\n subtree: true\n });\n // 1. Load imports contents\n // 2. Assign them to first import links on the document\n // 3. Wait for import styles & scripts to be done loading/running\n // 4. Fire load/error events\n this.loadImports(document);\n }\n\n /**\n * @param {!(HTMLDocument|DocumentFragment|Element)} doc\n */\n loadImports(doc) {\n const links = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(doc, importSelector));\n forEach(links, link => this.loadImport(link));\n }\n\n /**\n * @param {!HTMLLinkElement} link\n */\n loadImport(link) {\n const url = link.href;\n // This resource is already being handled by another import.\n if (this.documents[url] !== undefined) {\n // If import is already loaded, we can safely associate it to the link\n // and fire the load/error event.\n const imp = this.documents[url];\n if (imp && imp['__loaded']) {\n link['__import'] = imp;\n this.fireEventIfNeeded(link);\n }\n return;\n }\n this.inflight++;\n // Mark it as pending to notify others this url is being loaded.\n this.documents[url] = 'pending';\n Xhr.load(url, (resource, redirectedUrl) => {\n const doc = this.makeDocument(resource, redirectedUrl || url);\n this.documents[url] = doc;\n this.inflight--;\n // Load subtree.\n this.loadImports(doc);\n this.processImportsIfLoadingDone();\n }, () => {\n // If load fails, handle error.\n this.documents[url] = null;\n this.inflight--;\n this.processImportsIfLoadingDone();\n });\n }\n\n /**\n * Creates a new document containing resource and normalizes urls accordingly.\n * @param {string=} resource\n * @param {string=} url\n * @return {!DocumentFragment}\n */\n makeDocument(resource, url) {\n if (!resource) {\n return document.createDocumentFragment();\n }\n\n if (isIE) {\n // <link rel=stylesheet> should be appended to <head>. Not doing so\n // in IE/Edge breaks the cascading order. We disable the loading by\n // setting the type before setting innerHTML to avoid loading\n // resources twice.\n resource = resource.replace(STYLESHEET_REGEXP, (match, p1, p2) => {\n if (match.indexOf('type=') === -1) {\n return `${p1} type=${importDisableType} ${p2}`;\n }\n return match;\n });\n }\n\n let content;\n const template = /** @type {!HTMLTemplateElement} */\n (document.createElement('template'));\n template.innerHTML = resource;\n if (template.content) {\n content = template.content;\n // Clone scripts inside templates since they won't execute when the\n // hosting template is cloned.\n replaceScripts(content);\n } else {\n // <template> not supported, create fragment and move content into it.\n content = document.createDocumentFragment();\n while (template.firstChild) {\n content.appendChild(template.firstChild);\n }\n }\n\n // Support <base> in imported docs. Resolve url and remove its href.\n const baseEl = content.querySelector('base');\n if (baseEl) {\n url = Path.resolveUrl(baseEl.getAttribute('href'), url);\n baseEl.removeAttribute('href');\n }\n\n const n$ = /** @type {!NodeList<!(HTMLLinkElement|HTMLScriptElement|HTMLStyleElement)>} */\n (QSA(content, importDependenciesSelector));\n // For source map hints.\n let inlineScriptIndex = 0;\n forEach(n$, n => {\n // Listen for load/error events, then fix urls.\n whenElementLoaded(n);\n Path.fixUrls(n, url);\n // Mark for easier selectors.\n n.setAttribute(importDependencyAttr, '');\n // Generate source map hints for inline scripts.\n if (n.localName === 'script' && !n.src && n.textContent) {\n const num = inlineScriptIndex ? `-${inlineScriptIndex}` : '';\n const content = n.textContent + `\\n//# sourceURL=${url}${num}.js\\n`;\n // We use the src attribute so it triggers load/error events, and it's\n // easier to capture errors (e.g. parsing) like this.\n n.setAttribute('src', 'data:text/javascript;charset=utf-8,' + encodeURIComponent(content));\n n.textContent = '';\n inlineScriptIndex++;\n }\n });\n return content;\n }\n\n /**\n * Waits for loaded imports to finish loading scripts and styles, then fires\n * the load/error events.\n */\n processImportsIfLoadingDone() {\n // Wait until all resources are ready, then load import resources.\n if (this.inflight) return;\n\n // Stop observing, flatten & load resource, then restart observing <head>.\n this.dynamicImportsMO.disconnect();\n this.flatten(document);\n // We wait for styles to load, and at the same time we execute the scripts,\n // then fire the load/error events for imports to have faster whenReady\n // callback execution.\n // NOTE: This is different for native behavior where scripts would be\n // executed after the styles before them are loaded.\n // To achieve that, we could select pending styles and scripts in the\n // document and execute them sequentially in their dom order.\n let scriptsOk = false,\n stylesOk = false;\n const onLoadingDone = () => {\n if (stylesOk && scriptsOk) {\n // Catch any imports that might have been added while we\n // weren't looking, wait for them as well.\n this.loadImports(document);\n if (this.inflight) return;\n\n // Restart observing.\n this.dynamicImportsMO.observe(document.head, {\n childList: true,\n subtree: true\n });\n this.fireEvents();\n }\n }\n this.waitForStyles(() => {\n stylesOk = true;\n onLoadingDone();\n });\n this.runScripts(() => {\n scriptsOk = true;\n onLoadingDone();\n });\n }\n\n /**\n * @param {!HTMLDocument} doc\n */\n flatten(doc) {\n const n$ = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(doc, importSelector));\n forEach(n$, n => {\n const imp = this.documents[n.href];\n n['__import'] = /** @type {!Document} */ (imp);\n if (imp && imp.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n // We set the .import to be the link itself, and update its readyState.\n // Other links with the same href will point to this link.\n this.documents[n.href] = n;\n n.readyState = 'loading';\n n['__import'] = n;\n this.flatten(imp);\n n.appendChild(imp);\n }\n });\n }\n\n /**\n * Replaces all the imported scripts with a clone in order to execute them.\n * Updates the `currentScript`.\n * @param {!function()} callback\n */\n runScripts(callback) {\n const s$ = QSA(document, pendingScriptsSelector);\n const l = s$.length;\n const cloneScript = i => {\n if (i < l) {\n // The pending scripts have been generated through innerHTML and\n // browsers won't execute them for security reasons. We cannot use\n // s.cloneNode(true) either, the only way to run the script is manually\n // creating a new element and copying its attributes.\n const s = s$[i];\n const clone = /** @type {!HTMLScriptElement} */\n (document.createElement('script'));\n // Remove import-dependency attribute to avoid double cloning.\n s.removeAttribute(importDependencyAttr);\n forEach(s.attributes, attr => clone.setAttribute(attr.name, attr.value));\n // Update currentScript and replace original with clone script.\n currentScript = clone;\n s.parentNode.replaceChild(clone, s);\n whenElementLoaded(clone, () => {\n currentScript = null;\n cloneScript(i + 1);\n });\n } else {\n callback();\n }\n };\n cloneScript(0);\n }\n\n /**\n * Waits for all the imported stylesheets/styles to be loaded.\n * @param {!function()} callback\n */\n waitForStyles(callback) {\n const s$ = /** @type {!NodeList<!(HTMLLinkElement|HTMLStyleElement)>} */\n (QSA(document, pendingStylesSelector));\n let pending = s$.length;\n if (!pending) {\n callback();\n return;\n }\n // <link rel=stylesheet> should be appended to <head>. Not doing so\n // in IE/Edge breaks the cascading order\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10472273/\n // If there is one <link rel=stylesheet> imported, we must move all imported\n // links and styles to <head>.\n const needsMove = isIE && !!document.querySelector(disabledLinkSelector);\n forEach(s$, s => {\n // Listen for load/error events, remove selector once is done loading.\n whenElementLoaded(s, () => {\n s.removeAttribute(importDependencyAttr);\n if (--pending === 0) {\n callback();\n }\n });\n // Check if was already moved to head, to handle the case where the element\n // has already been moved but it is still loading.\n if (needsMove && s.parentNode !== document.head) {\n // Replace the element we're about to move with a placeholder.\n const placeholder = document.createElement(s.localName);\n // Add reference of the moved element.\n placeholder['__appliedElement'] = s;\n // Disable this from appearing in document.styleSheets.\n placeholder.setAttribute('type', 'import-placeholder');\n // Append placeholder next to the sibling, and move original to <head>.\n s.parentNode.insertBefore(placeholder, s.nextSibling);\n let newSibling = importForElement(s);\n while (newSibling && importForElement(newSibling)) {\n newSibling = importForElement(newSibling);\n }\n if (newSibling.parentNode !== document.head) {\n newSibling = null;\n }\n document.head.insertBefore(s, newSibling);\n // Enable the loading of <link rel=stylesheet>.\n s.removeAttribute('type');\n }\n });\n }\n\n /**\n * Fires load/error events for imports in the right order .\n */\n fireEvents() {\n const n$ = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(document, importSelector));\n // Inverse order to have events firing bottom-up.\n forEach(n$, n => this.fireEventIfNeeded(n), true);\n }\n\n /**\n * Fires load/error event for the import if this wasn't done already.\n * @param {!HTMLLinkElement} link\n */\n fireEventIfNeeded(link) {\n // Don't fire twice same event.\n if (!link['__loaded']) {\n link['__loaded'] = true;\n // Update link's import readyState.\n link.import && (link.import.readyState = 'complete');\n const eventType = link.import ? 'load' : 'error';\n link.dispatchEvent(newCustomEvent(eventType, {\n bubbles: false,\n cancelable: false,\n detail: undefined\n }));\n }\n }\n\n /**\n * @param {Array<MutationRecord>} mutations\n */\n handleMutations(mutations) {\n forEach(mutations, m => forEach(m.addedNodes, elem => {\n if (elem && elem.nodeType === Node.ELEMENT_NODE) {\n // NOTE: added scripts are not updating currentScript in IE.\n if (isImportLink(elem)) {\n this.loadImport( /** @type {!HTMLLinkElement} */ (elem));\n } else {\n this.loadImports( /** @type {!Element} */ (elem));\n }\n }\n }));\n }\n }\n\n /**\n * @param {!Node} node\n * @return {boolean}\n */\n const isImportLink = node => {\n return node.nodeType === Node.ELEMENT_NODE && node.localName === 'link' &&\n ( /** @type {!HTMLLinkElement} */ (node).rel === 'import');\n };\n\n /**\n * Waits for an element to finish loading. If already done loading, it will\n * mark the element accordingly.\n * @param {!(HTMLLinkElement|HTMLScriptElement|HTMLStyleElement)} element\n * @param {function()=} callback\n */\n const whenElementLoaded = (element, callback) => {\n if (element['__loaded']) {\n callback && callback();\n } else if ((element.localName === 'script' && !element.src) ||\n (element.localName === 'style' && !element.firstChild)) {\n // Inline scripts and empty styles don't trigger load/error events,\n // consider them already loaded.\n element['__loaded'] = true;\n callback && callback();\n } else {\n const onLoadingDone = event => {\n element.removeEventListener(event.type, onLoadingDone);\n element['__loaded'] = true;\n callback && callback();\n };\n element.addEventListener('load', onLoadingDone);\n // NOTE: We listen only for load events in IE/Edge, because in IE/Edge\n // <style> with @import will fire error events for each failing @import,\n // and finally will trigger the load event when all @import are\n // finished (even if all fail).\n if (!isIE || element.localName !== 'style') {\n element.addEventListener('error', onLoadingDone);\n }\n }\n }\n\n /**\n * Calls the callback when all imports in the document at call time\n * (or at least document ready) have loaded. Callback is called synchronously\n * if imports are already done loading.\n * @param {function()=} callback\n */\n const whenReady = callback => {\n // 1. ensure the document is in a ready state (has dom), then\n // 2. watch for loading of imports and call callback when done\n whenDocumentReady(() => whenImportsReady(() => callback && callback()));\n }\n\n /**\n * Invokes the callback when document is in ready state. Callback is called\n * synchronously if document is already done loading.\n * @param {!function()} callback\n */\n const whenDocumentReady = callback => {\n const stateChanged = () => {\n // NOTE: Firefox can hit readystate interactive without document.body existing.\n // This is anti-spec, but we handle it here anyways by waiting for next change.\n if (document.readyState !== 'loading' && !!document.body) {\n document.removeEventListener('readystatechange', stateChanged);\n callback();\n }\n }\n document.addEventListener('readystatechange', stateChanged);\n stateChanged();\n }\n\n /**\n * Invokes the callback after all imports are loaded. Callback is called\n * synchronously if imports are already done loading.\n * @param {!function()} callback\n */\n const whenImportsReady = callback => {\n let imports = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(document, rootImportSelector));\n let pending = imports.length;\n if (!pending) {\n callback();\n return;\n }\n forEach(imports, imp => whenElementLoaded(imp, () => {\n if (--pending === 0) {\n callback();\n }\n }));\n }\n\n /**\n * Returns the import document containing the element.\n * @param {!Node} element\n * @return {HTMLLinkElement|Document|undefined}\n */\n const importForElement = element => {\n if (useNative) {\n // Return only if not in the main doc!\n return element.ownerDocument !== document ? element.ownerDocument : null;\n }\n let doc = element['__importDoc'];\n if (!doc && element.parentNode) {\n doc = /** @type {!Element} */ (element.parentNode);\n if (typeof doc.closest === 'function') {\n // Element.closest returns the element itself if it matches the selector,\n // so we search the closest import starting from the parent.\n doc = doc.closest(importSelector);\n } else {\n // Walk up the parent tree until we find an import.\n while (!isImportLink(doc) && (doc = doc.parentNode)) {}\n }\n element['__importDoc'] = doc;\n }\n return doc;\n }\n\n let importer = null;\n /**\n * Ensures imports contained in the element are imported.\n * Use this to handle dynamic imports attached to body.\n * @param {!(HTMLDocument|Element)} doc\n */\n const loadImports = (doc) => {\n if (importer) {\n importer.loadImports(doc);\n }\n };\n\n const newCustomEvent = (type, params) => {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(type, params);\n }\n const event = /** @type {!CustomEvent} */ (document.createEvent('CustomEvent'));\n event.initCustomEvent(type, Boolean(params.bubbles), Boolean(params.cancelable), params.detail);\n return event;\n };\n\n if (useNative) {\n // Check for imports that might already be done loading by the time this\n // script is actually executed. Native imports are blocking, so the ones\n // available in the document by this time should already have failed\n // or have .import defined.\n const imps = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(document, importSelector));\n forEach(imps, imp => {\n if (!imp.import || imp.import.readyState !== 'loading') {\n imp['__loaded'] = true;\n }\n });\n // Listen for load/error events to capture dynamically added scripts.\n /**\n * @type {!function(!Event)}\n */\n const onLoadingDone = event => {\n const elem = /** @type {!Element} */ (event.target);\n if (isImportLink(elem)) {\n elem['__loaded'] = true;\n }\n };\n document.addEventListener('load', onLoadingDone, true /* useCapture */ );\n document.addEventListener('error', onLoadingDone, true /* useCapture */ );\n } else {\n // Override baseURI so that imported elements' baseURI can be used seemlessly\n // on native or polyfilled html-imports.\n // NOTE: a <link rel=import> will have `link.baseURI === link.href`, as the link\n // itself is used as the `import` document.\n /** @type {Object|undefined} */\n const native_baseURI = Object.getOwnPropertyDescriptor(Node.prototype, 'baseURI');\n // NOTE: if not configurable (e.g. safari9), set it on the Element prototype. \n const klass = !native_baseURI || native_baseURI.configurable ? Node : Element;\n Object.defineProperty(klass.prototype, 'baseURI', {\n get() {\n const ownerDoc = /** @type {HTMLLinkElement} */ (isImportLink(this) ? this : importForElement(this));\n if (ownerDoc) return ownerDoc.href;\n // Use native baseURI if possible.\n if (native_baseURI && native_baseURI.get) return native_baseURI.get.call(this);\n // Polyfill it if not available.\n const base = /** @type {HTMLBaseElement} */ (document.querySelector('base'));\n return (base || window.location).href;\n },\n configurable: true,\n enumerable: true\n });\n\n // Define 'import' read-only property.\n Object.defineProperty(HTMLLinkElement.prototype, 'import', {\n get() {\n return /** @type {HTMLLinkElement} */ (this)['__import'] || null;\n },\n configurable: true,\n enumerable: true\n });\n\n whenDocumentReady(() => {\n importer = new Importer()\n });\n }\n\n /**\n Add support for the `HTMLImportsLoaded` event and the `HTMLImports.whenReady`\n method. This api is necessary because unlike the native implementation,\n script elements do not force imports to resolve. Instead, users should wrap\n code in either an `HTMLImportsLoaded` handler or after load time in an\n `HTMLImports.whenReady(callback)` call.\n\n NOTE: This module also supports these apis under the native implementation.\n Therefore, if this file is loaded, the same code can be used under both\n the polyfill and native implementation.\n */\n whenReady(() => document.dispatchEvent(newCustomEvent('HTMLImportsLoaded', {\n cancelable: true,\n bubbles: true,\n detail: undefined\n })));\n\n // exports\n scope.useNative = useNative;\n scope.whenReady = whenReady;\n scope.importForElement = importForElement;\n scope.loadImports = loadImports;\n\n})(window.HTMLImports = (window.HTMLImports || {}));",null,null,null,null,null,"/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n\nexport class ShadyData {\n constructor() {\n /** @type {ShadowRoot} */\n this.root = null;\n /** @type {ShadowRoot} */\n this.publicRoot = null;\n this.dirty = false;\n this.observer = null;\n /** @type {Array<Node>} */\n this.assignedNodes = null;\n /** @type {Element} */\n this.assignedSlot = null;\n /** @type {Array<Node>} */\n this._previouslyAssignedNodes = null;\n /** @type {Element} */\n this._prevAssignedSlot = null;\n /** @type {Array<Node>} */\n this.flattenedNodes = null;\n this.ownerShadyRoot = undefined;\n /** @type {Node|undefined} */\n this.parentNode = undefined;\n /** @type {Node|undefined} */\n this.firstChild = undefined;\n /** @type {Node|undefined} */\n this.lastChild = undefined;\n /** @type {Node|undefined} */\n this.previousSibling = undefined;\n /** @type {Node|undefined} */\n this.nextSibling = undefined;\n /** @type {Array<Node>|undefined} */\n this.childNodes = undefined;\n this.__outsideAccessors = false;\n this.__insideAccessors = false;\n }\n\n toJSON() {\n return {};\n }\n}\n\nexport function ensureShadyDataForNode(node) {\n if (!node.__shady) {\n node.__shady = new ShadyData();\n }\n return node.__shady;\n}\n\nexport function shadyDataForNode(node) {\n return node && node.__shady;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nimport {shadyDataForNode} from './shady-data.js';\n\nexport let settings = window['ShadyDOM'] || {};\n\nsettings.hasNativeShadowDOM = Boolean(Element.prototype.attachShadow && Node.prototype.getRootNode);\n\nlet desc = Object.getOwnPropertyDescriptor(Node.prototype, 'firstChild');\n\nsettings.hasDescriptors = Boolean(desc && desc.configurable && desc.get);\nsettings.inUse = settings['force'] || !settings.hasNativeShadowDOM;\n\n// Default to using native accessors (instead of treewalker) only for\n// IE/Edge where they are faster.\nconst IS_IE = navigator.userAgent.match('Trident');\nconst IS_EDGE = navigator.userAgent.match('Edge');\nif (settings.useNativeAccessors === undefined) {\n settings.useNativeAccessors = settings.hasDescriptors && (IS_IE || IS_EDGE);\n}\n\nexport function isTrackingLogicalChildNodes(node) {\n const nodeData = shadyDataForNode(node);\n return (nodeData && nodeData.firstChild !== undefined);\n}\n\nexport function isShadyRoot(obj) {\n return Boolean(obj._localName === 'ShadyRoot');\n}\n\nexport function ownerShadyRootForNode(node) {\n let root = node.getRootNode();\n if (isShadyRoot(root)) {\n return root;\n }\n}\n\nlet p = Element.prototype;\nlet matches = p.matches || p.matchesSelector ||\n p.mozMatchesSelector || p.msMatchesSelector ||\n p.oMatchesSelector || p.webkitMatchesSelector;\n\nexport function matchesSelector(element, selector) {\n return matches.call(element, selector);\n}\n\nfunction copyOwnProperty(name, source, target) {\n let pd = Object.getOwnPropertyDescriptor(source, name);\n if (pd) {\n Object.defineProperty(target, name, pd);\n }\n}\n\nexport function extend(target, source) {\n if (target && source) {\n let n$ = Object.getOwnPropertyNames(source);\n for (let i=0, n; (i<n$.length) && (n=n$[i]); i++) {\n copyOwnProperty(n, source, target);\n }\n }\n return target || source;\n}\n\nexport function extendAll(target, ...sources) {\n for (let i=0; i < sources.length; i++) {\n extend(target, sources[i]);\n }\n return target;\n}\n\nexport function mixin(target, source) {\n for (var i in source) {\n target[i] = source[i];\n }\n return target;\n}\n\nexport function patchPrototype(obj, mixin) {\n let proto = Object.getPrototypeOf(obj);\n if (!proto.hasOwnProperty('__patchProto')) {\n let patchProto = Object.create(proto);\n patchProto.__sourceProto = proto;\n extend(patchProto, mixin);\n proto['__patchProto'] = patchProto;\n }\n // old browsers don't have setPrototypeOf\n obj.__proto__ = proto['__patchProto'];\n}\n\n\nlet twiddle = document.createTextNode('');\nlet content = 0;\nlet queue = [];\nnew MutationObserver(() => {\n while (queue.length) {\n // catch errors in user code...\n try {\n queue.shift()();\n } catch(e) {\n // enqueue another record and throw\n twiddle.textContent = content++;\n throw(e);\n }\n }\n}).observe(twiddle, {characterData: true});\n\n// use MutationObserver to get microtask async timing.\nexport function microtask(callback) {\n queue.push(callback);\n twiddle.textContent = content++;\n}\n\nexport const hasDocumentContains = Boolean(document.contains);\n\nexport function contains(container, node) {\n while (node) {\n if (node == container) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\n\n// render enqueuer/flusher\nlet flushList = [];\nlet scheduled;\nexport function enqueue(callback) {\n if (!scheduled) {\n scheduled = true;\n utils.microtask(flush);\n }\n flushList.push(callback);\n}\n\nexport function flush() {\n scheduled = false;\n let didFlush = Boolean(flushList.length);\n while (flushList.length) {\n flushList.shift()();\n }\n return didFlush;\n}\n\nflush['list'] = flushList;\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {ensureShadyDataForNode} from './shady-data.js';\n\nclass AsyncObserver {\n\n constructor() {\n this._scheduled = false;\n this.addedNodes = [];\n this.removedNodes = [];\n this.callbacks = new Set();\n }\n\n schedule() {\n if (!this._scheduled) {\n this._scheduled = true;\n utils.microtask(() => {\n this.flush();\n });\n }\n }\n\n flush() {\n if (this._scheduled) {\n this._scheduled = false;\n let mutations = this.takeRecords();\n if (mutations.length) {\n this.callbacks.forEach(function(cb) {\n cb(mutations);\n });\n }\n }\n }\n\n takeRecords() {\n if (this.addedNodes.length || this.removedNodes.length) {\n let mutations = [{\n addedNodes: this.addedNodes,\n removedNodes: this.removedNodes\n }];\n this.addedNodes = [];\n this.removedNodes = [];\n return mutations;\n }\n return [];\n }\n\n}\n\n// TODO(sorvell): consider instead polyfilling MutationObserver\n// directly so that users do not have to fork their code.\n// Supporting the entire api may be challenging: e.g. filtering out\n// removed nodes in the wrong scope and seeing non-distributing\n// subtree child mutations.\nexport let observeChildren = function(node, callback) {\n const sd = ensureShadyDataForNode(node);\n if (!sd.observer) {\n sd.observer = new AsyncObserver();\n }\n sd.observer.callbacks.add(callback);\n let observer = sd.observer;\n return {\n _callback: callback,\n _observer: observer,\n _node: node,\n takeRecords() {\n return observer.takeRecords()\n }\n };\n}\n\nexport let unobserveChildren = function(handle) {\n let observer = handle && handle._observer;\n if (observer) {\n observer.callbacks.delete(handle._callback);\n if (!observer.callbacks.size) {\n ensureShadyDataForNode(handle._node).observer = null;\n }\n }\n}\n\nexport function filterMutations(mutations, target) {\n /** @const {Node} */\n const targetRootNode = target.getRootNode();\n return mutations.map(function(mutation) {\n /** @const {boolean} */\n const mutationInScope = (targetRootNode === mutation.target.getRootNode());\n if (mutationInScope && mutation.addedNodes) {\n let nodes = Array.from(mutation.addedNodes).filter(function(n) {\n return (targetRootNode === n.getRootNode());\n });\n if (nodes.length) {\n mutation = Object.create(mutation);\n Object.defineProperty(mutation, 'addedNodes', {\n value: nodes,\n configurable: true\n });\n return mutation;\n }\n } else if (mutationInScope) {\n return mutation;\n }\n }).filter(function(m) { return m});\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nexport let appendChild = Element.prototype.appendChild;\nexport let insertBefore = Element.prototype.insertBefore;\nexport let replaceChild = Element.prototype.replaceChild;\nexport let removeChild = Element.prototype.removeChild;\nexport let setAttribute = Element.prototype.setAttribute;\nexport let removeAttribute = Element.prototype.removeAttribute;\nexport let cloneNode = Element.prototype.cloneNode;\nexport let importNode = Document.prototype.importNode;\nexport let addEventListener = Element.prototype.addEventListener;\nexport let removeEventListener = Element.prototype.removeEventListener;\nexport let windowAddEventListener = Window.prototype.addEventListener;\nexport let windowRemoveEventListener = Window.prototype.removeEventListener;\nexport let dispatchEvent = Element.prototype.dispatchEvent;\nexport let contains = Node.prototype.contains || HTMLElement.prototype.contains;\nexport let getElementById = Document.prototype.getElementById;\nexport let elementQuerySelector = Element.prototype.querySelector;\nexport let fragmentQuerySelector = DocumentFragment.prototype.querySelector;\nexport let documentQuerySelector = Document.prototype.querySelector;\nexport let querySelector = function(selector) {\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n return elementQuerySelector.call(this, selector);\n case Node.DOCUMENT_NODE:\n return documentQuerySelector.call(this, selector);\n default:\n return fragmentQuerySelector.call(this, selector);\n }\n};\nexport let elementQuerySelectorAll = Element.prototype.querySelectorAll;\nexport let fragmentQuerySelectorAll = DocumentFragment.prototype.querySelectorAll;\nexport let documentQuerySelectorAll = Document.prototype.querySelectorAll;\nexport let querySelectorAll = function(selector) {\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n return elementQuerySelectorAll.call(this, selector);\n case Node.DOCUMENT_NODE:\n return documentQuerySelectorAll.call(this, selector);\n default:\n return fragmentQuerySelectorAll.call(this, selector);\n }\n};","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n// Cribbed from ShadowDOM polyfill\n// https://github.com/webcomponents/webcomponentsjs/blob/master/src/ShadowDOM/wrappers/HTMLElement.js#L28\n/////////////////////////////////////////////////////////////////////////////\n// innerHTML and outerHTML\n\n// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#escapingString\nlet escapeAttrRegExp = /[&\\u00A0\"]/g;\nlet escapeDataRegExp = /[&\\u00A0<>]/g;\n\nfunction escapeReplace(c) {\n switch (c) {\n case '&':\n return '&amp;';\n case '<':\n return '&lt;';\n case '>':\n return '&gt;';\n case '\"':\n return '&quot;';\n case '\\u00A0':\n return '&nbsp;';\n }\n}\n\nfunction escapeAttr(s) {\n return s.replace(escapeAttrRegExp, escapeReplace);\n}\n\nfunction escapeData(s) {\n return s.replace(escapeDataRegExp, escapeReplace);\n}\n\nfunction makeSet(arr) {\n let set = {};\n for (let i = 0; i < arr.length; i++) {\n set[arr[i]] = true;\n }\n return set;\n}\n\n// http://www.whatwg.org/specs/web-apps/current-work/#void-elements\nlet voidElements = makeSet([\n 'area',\n 'base',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]);\n\nlet plaintextParents = makeSet([\n 'style',\n 'script',\n 'xmp',\n 'iframe',\n 'noembed',\n 'noframes',\n 'plaintext',\n 'noscript'\n]);\n\n/**\n * @param {Node} node\n * @param {Node} parentNode\n * @param {Function=} callback\n */\nexport function getOuterHTML(node, parentNode, callback) {\n switch (node.nodeType) {\n case Node.ELEMENT_NODE: {\n let tagName = node.localName;\n let s = '<' + tagName;\n let attrs = node.attributes;\n for (let i = 0, attr; (attr = attrs[i]); i++) {\n s += ' ' + attr.name + '=\"' + escapeAttr(attr.value) + '\"';\n }\n s += '>';\n if (voidElements[tagName]) {\n return s;\n }\n return s + getInnerHTML(node, callback) + '</' + tagName + '>';\n }\n case Node.TEXT_NODE: {\n let data = /** @type {Text} */ (node).data;\n if (parentNode && plaintextParents[parentNode.localName]) {\n return data;\n }\n return escapeData(data);\n }\n case Node.COMMENT_NODE: {\n return '<!--' + /** @type {Comment} */ (node).data + '-->';\n }\n default: {\n window.console.error(node);\n throw new Error('not implemented');\n }\n }\n}\n\n/**\n * @param {Node} node\n * @param {Function=} callback\n */\nexport function getInnerHTML(node, callback) {\n if (node.localName === 'template') {\n node = /** @type {HTMLTemplateElement} */ (node).content;\n }\n let s = '';\n let c$ = callback ? callback(node) : node.childNodes;\n for (let i=0, l=c$.length, child; (i<l) && (child=c$[i]); i++) {\n s += getOuterHTML(child, node, callback);\n }\n return s;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {getInnerHTML} from './innerHTML.js';\n\nlet nodeWalker = document.createTreeWalker(document, NodeFilter.SHOW_ALL,\n null, false);\n\nlet elementWalker = document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT,\n null, false);\n\nexport function parentNode(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.parentNode();\n}\n\nexport function firstChild(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.firstChild();\n}\n\nexport function lastChild(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.lastChild();\n}\n\nexport function previousSibling(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.previousSibling();\n}\n\nexport function nextSibling(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.nextSibling();\n}\n\nexport function childNodes(node) {\n let nodes = [];\n nodeWalker.currentNode = node;\n let n = nodeWalker.firstChild();\n while (n) {\n nodes.push(n);\n n = nodeWalker.nextSibling();\n }\n return nodes;\n}\n\nexport function parentElement(node) {\n elementWalker.currentNode = node;\n return elementWalker.parentNode();\n}\n\nexport function firstElementChild(node) {\n elementWalker.currentNode = node;\n return elementWalker.firstChild();\n}\n\nexport function lastElementChild(node) {\n elementWalker.currentNode = node;\n return elementWalker.lastChild();\n}\n\nexport function previousElementSibling(node) {\n elementWalker.currentNode = node;\n return elementWalker.previousSibling();\n}\n\nexport function nextElementSibling(node) {\n elementWalker.currentNode = node;\n return elementWalker.nextSibling();\n}\n\nexport function children(node) {\n let nodes = [];\n elementWalker.currentNode = node;\n let n = elementWalker.firstChild();\n while (n) {\n nodes.push(n);\n n = elementWalker.nextSibling();\n }\n return nodes;\n}\n\nexport function innerHTML(node) {\n return getInnerHTML(node, (n) => childNodes(n));\n}\n\nexport function textContent(node) {\n /* eslint-disable no-case-declarations */\n switch (node.nodeType) {\n case Node.ELEMENT_NODE:\n case Node.DOCUMENT_FRAGMENT_NODE:\n let textWalker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT,\n null, false);\n let content = '', n;\n while ( (n = textWalker.nextNode()) ) {\n // TODO(sorvell): can't use textContent since we patch it on Node.prototype!\n // However, should probably patch it only on element.\n content += n.nodeValue;\n }\n return content;\n default:\n return node.nodeValue;\n }\n /* eslint-enable */\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nimport * as utils from './utils.js';\n\nconst hasDescriptors = utils.settings.hasDescriptors;\n\n// Find descriptor on the \"lowest\" native prototype. Safe as these are not\n// overridden and we call these on nodes.\nconst nativeProtos = [Node.prototype, Element.prototype, HTMLElement.prototype];\n// note, avoid Array.find for IE11 compat.\nfunction findNativeProtoWithDescriptor(name) {\n for (let i=0; i < nativeProtos.length; i++) {\n const proto = nativeProtos[i];\n if (proto.hasOwnProperty(name)) {\n return proto;\n }\n }\n}\nfunction findNodeDescriptor(name) {\n const proto = findNativeProtoWithDescriptor(name);\n if (!proto) {\n throw Error(`Could not find descriptor for ${name}`);\n }\n return Object.getOwnPropertyDescriptor(proto, name);\n}\n\nexport const nodeAccessors = hasDescriptors ? {\n parentNode: findNodeDescriptor('parentNode'),\n firstChild: findNodeDescriptor('firstChild'),\n lastChild: findNodeDescriptor('lastChild'),\n previousSibling: findNodeDescriptor('previousSibling'),\n nextSibling: findNodeDescriptor('nextSibling'),\n childNodes: findNodeDescriptor('childNodes'),\n parentElement: findNodeDescriptor('parentElement'),\n previousElementSibling: findNodeDescriptor('previousElementSibling'),\n nextElementSibling: findNodeDescriptor('nextElementSibling'),\n innerHTML: findNodeDescriptor('innerHTML'),\n textContent: findNodeDescriptor('textContent'),\n firstElementChild: findNodeDescriptor('firstElementChild'),\n lastElementChild: findNodeDescriptor('lastElementChild'),\n children: findNodeDescriptor('children'),\n} : {};\n\nexport const fragmentAccessors = hasDescriptors ? {\n firstElementChild: Object.getOwnPropertyDescriptor(\n DocumentFragment.prototype, 'firstElementChild'),\n lastElementChild: Object.getOwnPropertyDescriptor(\n DocumentFragment.prototype, 'lastElementChild'),\n children: Object.getOwnPropertyDescriptor(\n DocumentFragment.prototype, 'children')\n} : {};\n\nexport const documentAccessors = hasDescriptors ? {\n firstElementChild: Object.getOwnPropertyDescriptor(\n Document.prototype, 'firstElementChild'),\n lastElementChild: Object.getOwnPropertyDescriptor(\n Document.prototype, 'lastElementChild'),\n children: Object.getOwnPropertyDescriptor(\n Document.prototype, 'children')\n} : {};\n\nexport function parentNode(node) {\n return nodeAccessors.parentNode.get.call(node);\n}\n\nexport function firstChild(node) {\n return nodeAccessors.firstChild.get.call(node);\n}\n\nexport function lastChild(node) {\n return nodeAccessors.lastChild.get.call(node);\n}\n\nexport function previousSibling(node) {\n return nodeAccessors.previousSibling.get.call(node);\n}\n\nexport function nextSibling(node) {\n return nodeAccessors.nextSibling.get.call(node);\n}\n\nexport function childNodes(node) {\n return Array.prototype.slice.call(nodeAccessors.childNodes.get.call(node));\n}\n\nexport function parentElement(node) {\n return nodeAccessors.parentElement.get.call(node);\n}\n\nexport function previousElementSibling(node) {\n return nodeAccessors.previousElementSibling.get.call(node);\n}\n\nexport function nextElementSibling(node) {\n return nodeAccessors.nextElementSibling.get.call(node);\n}\n\nexport function innerHTML(node) {\n return nodeAccessors.innerHTML.get.call(node);\n}\n\nexport function textContent(node) {\n return nodeAccessors.textContent.get.call(node);\n}\n\nexport function children(node) {\n let children;\n switch (node.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n children = fragmentAccessors.children.get.call(node);\n break;\n case Node.DOCUMENT_NODE:\n children = documentAccessors.children.get.call(node);\n break;\n default:\n children = nodeAccessors.children.get.call(node);\n break;\n }\n return Array.prototype.slice.call(children);\n}\n\nexport function firstElementChild(node) {\n switch (node.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n return fragmentAccessors.firstElementChild.get.call(node);\n case Node.DOCUMENT_NODE:\n return documentAccessors.firstElementChild.get.call(node);\n default:\n return nodeAccessors.firstElementChild.get.call(node);\n }\n}\n\nexport function lastElementChild(node) {\n switch (node.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n return fragmentAccessors.lastElementChild.get.call(node);\n case Node.DOCUMENT_NODE:\n return documentAccessors.lastElementChild.get.call(node);\n default:\n return nodeAccessors.lastElementChild.get.call(node);\n }\n}","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as nativeTreeWalker from './native-tree-walker.js';\nimport * as nativeTreeAccessors from './native-tree-accessors.js';\nimport * as utils from './utils.js';\n\nexport const accessors = utils.settings.useNativeAccessors ?\n nativeTreeAccessors : nativeTreeWalker;","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {getInnerHTML} from './innerHTML.js';\nimport {accessors as nativeTree} from './native-tree.js';\nimport {nodeAccessors as nativeAccessors} from './native-tree-accessors.js';\nimport {contains as nativeContains} from './native-methods.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nfunction clearNode(node) {\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n}\n\nconst hasDescriptors = utils.settings.hasDescriptors;\nconst inertDoc = document.implementation.createHTMLDocument('inert');\n\nconst nativeIsConnectedAccessors =\n/** @type {ObjectPropertyDescriptor} */(\n Object.getOwnPropertyDescriptor(Node.prototype, 'isConnected')\n);\n\nconst nativeIsConnected = nativeIsConnectedAccessors && nativeIsConnectedAccessors.get;\n\nconst nativeActiveElementDescriptor =\n /** @type {ObjectPropertyDescriptor} */(\n Object.getOwnPropertyDescriptor(Document.prototype, 'activeElement')\n );\nfunction getDocumentActiveElement() {\n if (nativeActiveElementDescriptor && nativeActiveElementDescriptor.get) {\n return nativeActiveElementDescriptor.get.call(document);\n } else if (!utils.settings.hasDescriptors) {\n return document.activeElement;\n }\n}\n\nfunction activeElementForNode(node) {\n let active = getDocumentActiveElement();\n // In IE11, activeElement might be an empty object if the document is\n // contained in an iframe.\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10998788/\n if (!active || !active.nodeType) {\n return null;\n }\n let isShadyRoot = !!(utils.isShadyRoot(node));\n if (node !== document) {\n // If this node isn't a document or shady root, then it doesn't have\n // an active element.\n if (!isShadyRoot) {\n return null;\n }\n // If this shady root's host is the active element or the active\n // element is not a descendant of the host (in the composed tree),\n // then it doesn't have an active element.\n if (node.host === active ||\n !nativeContains.call(node.host, active)) {\n return null;\n }\n }\n // This node is either the document or a shady root of which the active\n // element is a (composed) descendant of its host; iterate upwards to\n // find the active element's most shallow host within it.\n let activeRoot = utils.ownerShadyRootForNode(active);\n while (activeRoot && activeRoot !== node) {\n active = activeRoot.host;\n activeRoot = utils.ownerShadyRootForNode(active);\n }\n if (node === document) {\n // This node is the document, so activeRoot should be null.\n return activeRoot ? null : active;\n } else {\n // This node is a non-document shady root, and it should be\n // activeRoot.\n return activeRoot === node ? active : null;\n }\n}\n\nlet OutsideAccessors = {\n\n parentElement: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n let l = nodeData && nodeData.parentNode;\n if (l && l.nodeType !== Node.ELEMENT_NODE) {\n l = null;\n }\n return l !== undefined ? l : nativeTree.parentElement(this);\n },\n configurable: true\n },\n\n parentNode: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.parentNode;\n return l !== undefined ? l : nativeTree.parentNode(this);\n },\n configurable: true\n },\n\n nextSibling: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.nextSibling;\n return l !== undefined ? l : nativeTree.nextSibling(this);\n },\n configurable: true\n },\n\n previousSibling: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.previousSibling;\n return l !== undefined ? l : nativeTree.previousSibling(this);\n },\n configurable: true\n },\n\n // fragment, element, document\n nextElementSibling: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.nextSibling !== undefined) {\n let n = this.nextSibling;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.nextSibling;\n }\n return n;\n } else {\n return nativeTree.nextElementSibling(this);\n }\n },\n configurable: true\n },\n\n previousElementSibling: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.previousSibling !== undefined) {\n let n = this.previousSibling;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.previousSibling;\n }\n return n;\n } else {\n return nativeTree.previousElementSibling(this);\n }\n },\n configurable: true\n }\n\n};\n\nexport const ClassNameAccessor = {\n className: {\n /**\n * @this {HTMLElement}\n */\n get() {\n return this.getAttribute('class') || '';\n },\n /**\n * @this {HTMLElement}\n */\n set(value) {\n this.setAttribute('class', value);\n },\n configurable: true\n }\n}\n\nexport const IsConnectedAccessor = {\n\n isConnected: {\n /**\n * @this {Node}\n */\n get() {\n if (nativeIsConnected && nativeIsConnected.call(this)) {\n return true;\n }\n if (this.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {\n return false;\n }\n // Fast path for distributed nodes.\n const ownerDocument = this.ownerDocument;\n if (utils.hasDocumentContains) {\n if (nativeContains.call(ownerDocument, this)) {\n return true;\n }\n } else if (ownerDocument.documentElement &&\n nativeContains.call(ownerDocument.documentElement, this)) {\n return true;\n }\n // Slow path for non-distributed nodes.\n let node = this;\n while (node && !(node instanceof Document)) {\n node = node.parentNode || (utils.isShadyRoot(node) ? /** @type {ShadowRoot} */(node).host : undefined);\n }\n return !!(node && node instanceof Document);\n },\n configurable: true\n }\n};\n\nlet InsideAccessors = {\n\n childNodes: {\n /**\n * @this {HTMLElement}\n */\n get() {\n let childNodes;\n if (utils.isTrackingLogicalChildNodes(this)) {\n const nodeData = shadyDataForNode(this);\n if (!nodeData.childNodes) {\n nodeData.childNodes = [];\n for (let n=this.firstChild; n; n=n.nextSibling) {\n nodeData.childNodes.push(n);\n }\n }\n childNodes = nodeData.childNodes;\n } else {\n childNodes = nativeTree.childNodes(this);\n }\n childNodes.item = function(index) {\n return childNodes[index];\n }\n return childNodes;\n },\n configurable: true\n },\n\n childElementCount: {\n /** @this {HTMLElement} */\n get() {\n return this.children.length;\n },\n configurable: true\n },\n\n firstChild: {\n /** @this {HTMLElement} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.firstChild;\n return l !== undefined ? l : nativeTree.firstChild(this);\n },\n configurable: true\n },\n\n lastChild: {\n /** @this {HTMLElement} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.lastChild;\n return l !== undefined ? l : nativeTree.lastChild(this);\n },\n configurable: true\n },\n\n textContent: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (utils.isTrackingLogicalChildNodes(this)) {\n let tc = [];\n for (let i = 0, cn = this.childNodes, c; (c = cn[i]); i++) {\n if (c.nodeType !== Node.COMMENT_NODE) {\n tc.push(c.textContent);\n }\n }\n return tc.join('');\n } else {\n return nativeTree.textContent(this);\n }\n },\n /**\n * @this {HTMLElement}\n * @param {string} text\n */\n set(text) {\n if (typeof text === 'undefined' || text === null) {\n text = ''\n }\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n case Node.DOCUMENT_FRAGMENT_NODE:\n if (!utils.isTrackingLogicalChildNodes(this) && hasDescriptors) {\n // may be removing a nested slot but fast path if we know we are not.\n const firstChild = this.firstChild;\n if (firstChild != this.lastChild ||\n (firstChild && firstChild.nodeType != Node.TEXT_NODE)) {\n clearNode(this);\n }\n nativeAccessors.textContent.set.call(this, text);\n } else {\n clearNode(this);\n // Document fragments must have no childnodes if setting a blank string\n if (text.length > 0 || this.nodeType === Node.ELEMENT_NODE) {\n this.appendChild(document.createTextNode(text));\n }\n }\n break;\n default:\n // TODO(sorvell): can't do this if patch nodeValue.\n this.nodeValue = text;\n break;\n }\n },\n configurable: true\n },\n\n // fragment, element, document\n firstElementChild: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.firstChild !== undefined) {\n let n = this.firstChild;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.nextSibling;\n }\n return n;\n } else {\n return nativeTree.firstElementChild(this);\n }\n },\n configurable: true\n },\n\n lastElementChild: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.lastChild !== undefined) {\n let n = this.lastChild;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.previousSibling;\n }\n return n;\n } else {\n return nativeTree.lastElementChild(this);\n }\n },\n configurable: true\n },\n\n children: {\n /**\n * @this {HTMLElement}\n */\n get() {\n let children;\n if (utils.isTrackingLogicalChildNodes(this)) {\n children = Array.prototype.filter.call(this.childNodes, function(n) {\n return (n.nodeType === Node.ELEMENT_NODE);\n });\n } else {\n children = nativeTree.children(this);\n }\n children.item = function(index) {\n return children[index];\n }\n return children;\n },\n configurable: true\n },\n\n // element (HTMLElement on IE11)\n innerHTML: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (utils.isTrackingLogicalChildNodes(this)) {\n const content = this.localName === 'template' ?\n /** @type {HTMLTemplateElement} */(this).content : this;\n return getInnerHTML(content);\n } else {\n return nativeTree.innerHTML(this);\n }\n },\n /**\n * @this {HTMLElement}\n */\n set(text) {\n const content = this.localName === 'template' ?\n /** @type {HTMLTemplateElement} */(this).content : this;\n clearNode(content);\n let containerName = this.localName;\n // avoid creating a template so we don't have to pull nodes form `.content`\n if (!containerName || containerName === 'template') {\n containerName = 'div';\n }\n const htmlContainer = inertDoc.createElement(containerName);\n if (hasDescriptors) {\n nativeAccessors.innerHTML.set.call(htmlContainer, text);\n } else {\n htmlContainer.innerHTML = text;\n }\n while (htmlContainer.firstChild) {\n content.appendChild(htmlContainer.firstChild);\n }\n },\n configurable: true\n }\n\n};\n\n// Note: Can be patched on element prototype on all browsers.\n// Must be patched on instance on browsers that support native Shadow DOM\n// but do not have builtin accessors (old Chrome).\nexport let ShadowRootAccessor = {\n\n shadowRoot: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n return nodeData && nodeData.publicRoot || null;\n },\n configurable: true\n }\n};\n\n// Note: Can be patched on document prototype on browsers with builtin accessors.\n// Must be patched separately on simulated ShadowRoot.\n// Must be patched as `_activeElement` on browsers without builtin accessors.\nexport let ActiveElementAccessor = {\n\n activeElement: {\n /**\n * @this {HTMLElement}\n */\n get() {\n return activeElementForNode(this);\n },\n /**\n * @this {HTMLElement}\n */\n set() {},\n configurable: true\n }\n\n};\n\n// patch a group of descriptors on an object only if it exists or if the `force`\n// argument is true.\n/**\n * @param {!Object} obj\n * @param {!Object} descriptors\n * @param {boolean=} force\n */\nfunction patchAccessorGroup(obj, descriptors, force) {\n for (let p in descriptors) {\n let objDesc = Object.getOwnPropertyDescriptor(obj, p);\n if ((objDesc && objDesc.configurable) ||\n (!objDesc && force)) {\n Object.defineProperty(obj, p, descriptors[p]);\n } else if (force) {\n console.warn('Could not define', p, 'on', obj); // eslint-disable-line no-console\n }\n }\n}\n\n// patch dom accessors on proto where they exist\nexport function patchAccessors(proto) {\n patchAccessorGroup(proto, OutsideAccessors);\n patchAccessorGroup(proto, ClassNameAccessor);\n patchAccessorGroup(proto, InsideAccessors);\n patchAccessorGroup(proto, ActiveElementAccessor);\n}\n\nexport function patchShadowRootAccessors(proto) {\n proto.__proto__ = DocumentFragment.prototype;\n // ensure element descriptors (IE/Edge don't have em)\n patchAccessorGroup(proto, OutsideAccessors, true);\n patchAccessorGroup(proto, InsideAccessors, true);\n patchAccessorGroup(proto, ActiveElementAccessor, true);\n // Ensure native properties are all safely wrapped since ShadowRoot is not an\n // actual DocumentFragment instance.\n Object.defineProperties(proto, {\n nodeType: {\n value: Node.DOCUMENT_FRAGMENT_NODE,\n configurable: true\n },\n nodeName: {\n value: '#document-fragment',\n configurable: true\n },\n nodeValue: {\n value: null,\n configurable: true\n }\n });\n // make undefined\n [\n 'localName',\n 'namespaceURI',\n 'prefix'\n ].forEach((prop) => {\n Object.defineProperty(proto, prop, {\n value: undefined,\n configurable: true\n });\n });\n // defer properties to host\n [\n 'ownerDocument',\n 'baseURI',\n 'isConnected'\n ].forEach((prop) => {\n Object.defineProperty(proto, prop, {\n get() {\n return this.host[prop];\n },\n configurable: true\n });\n });\n}\n\n// ensure an element has patched \"outside\" accessors; no-op when not needed\nexport let patchOutsideElementAccessors = utils.settings.hasDescriptors ?\n function() {} : function(element) {\n const sd = ensureShadyDataForNode(element);\n if (!sd.__outsideAccessors) {\n sd.__outsideAccessors = true;\n patchAccessorGroup(element, OutsideAccessors, true);\n patchAccessorGroup(element, ClassNameAccessor, true);\n }\n }\n\n// ensure an element has patched \"inside\" accessors; no-op when not needed\nexport let patchInsideElementAccessors = utils.settings.hasDescriptors ?\n function() {} : function(element) {\n const sd = ensureShadyDataForNode(element);\n if (!sd.__insideAccessors) {\n patchAccessorGroup(element, InsideAccessors, true);\n patchAccessorGroup(element, ShadowRootAccessor, true);\n }\n }\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {calculateSplices} from './array-splice.js';\nimport * as utils from './utils.js';\nimport {enqueue} from './flush.js';\nimport {recordChildNodes} from './logical-tree.js';\nimport {removeChild, insertBefore, dispatchEvent} from './native-methods.js';\nimport {accessors} from './native-tree.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nconst {parentNode, childNodes} = accessors;\n\n// Do not export this object. It must be passed as the first argument to the\n// ShadyRoot constructor in `attachShadow` to prevent the constructor from\n// throwing. This prevents the user from being able to manually construct a\n// ShadyRoot (i.e. `new ShadowRoot()`).\nconst ShadyRootConstructionToken = {};\n\nconst CATCHALL_NAME = '__catchall';\nconst SHADYROOT_NAME = 'ShadyRoot';\n\nconst MODE_CLOSED = 'closed';\n\nfunction ancestorList(node) {\n let ancestors = [];\n do {\n ancestors.unshift(node);\n } while ((node = node.parentNode));\n return ancestors;\n}\n\n/**\n * @constructor\n * @extends {ShadowRoot}\n */\nexport class ShadyRoot {\n\n constructor(token, host, options) {\n if (token !== ShadyRootConstructionToken) {\n throw new TypeError('Illegal constructor');\n }\n // NOTE: set a fake local name so this element can be\n // distinguished from a DocumentFragment when patching.\n // FF doesn't allow this to be `localName`\n this._localName = SHADYROOT_NAME;\n const c$ = childNodes(host);\n // root <=> host\n this.host = host;\n this._mode = options && options.mode;\n // logical dom setup\n recordChildNodes(host, c$);\n const hostData = shadyDataForNode(host);\n hostData.root = this;\n hostData.publicRoot = this._mode !== MODE_CLOSED ? this : null;\n // setup root\n const rootData = ensureShadyDataForNode(this);\n rootData.firstChild = rootData.lastChild =\n rootData.parentNode = rootData.nextSibling =\n rootData.previousSibling = null;\n rootData.childNodes = [];\n // state flags\n this._renderPending = false;\n this._hasRendered = false;\n // marsalled lazily\n this._slotList = null;\n this._slotMap = null;\n this._pendingSlots = null;\n // fast path initial render: remove existing physical dom.\n for (let i=0, l=c$.length; i < l; i++) {\n removeChild.call(host, c$[i])\n }\n }\n\n // async render\n _asyncRender() {\n if (!this._renderPending) {\n this._renderPending = true;\n enqueue(() => this._render());\n }\n }\n\n // returns the oldest renderPending ancestor root.\n _getRenderRoot() {\n let renderRoot;\n let root = this;\n while (root) {\n if (root._renderPending) {\n renderRoot = root;\n }\n root = root._rendererForHost();\n }\n return renderRoot;\n }\n\n // Returns the shadyRoot `this.host` if `this.host`\n // has children that require distribution.\n _rendererForHost() {\n let root = this.host.getRootNode();\n if (utils.isShadyRoot(root)) {\n let c$ = this.host.childNodes;\n for (let i=0, c; i < c$.length; i++) {\n c = c$[i];\n if (this._isInsertionPoint(c)) {\n return root;\n }\n }\n }\n }\n\n _render() {\n const root = this._getRenderRoot();\n if (root) {\n root['_renderRoot']();\n }\n }\n\n // NOTE: avoid renaming to ease testability.\n ['_renderRoot']() {\n this._renderPending = false;\n if (this._slotList) {\n this._distribute();\n this._compose();\n }\n this._hasRendered = true;\n }\n\n _distribute() {\n this._validateSlots();\n // capture # of previously assigned nodes to help determine if dirty.\n for (let i=0, slot; i < this._slotList.length; i++) {\n slot = this._slotList[i];\n this._clearSlotAssignedNodes(slot);\n }\n // distribute host children.\n for (let n=this.host.firstChild; n; n=n.nextSibling) {\n this._distributeNodeToSlot(n);\n }\n // fallback content, slotchange, and dirty roots\n for (let i=0; i < this._slotList.length; i++) {\n const slot = this._slotList[i];\n const slotData = shadyDataForNode(slot);\n // distribute fallback content\n if (!slotData.assignedNodes.length) {\n for (let n=slot.firstChild; n; n=n.nextSibling) {\n this._distributeNodeToSlot(n, slot);\n }\n }\n const slotParentData = shadyDataForNode(slot.parentNode);\n const slotParentRoot = slotParentData && slotParentData.root;\n if (slotParentRoot && slotParentRoot._hasInsertionPoint()) {\n slotParentRoot['_renderRoot']();\n }\n this._addAssignedToFlattenedNodes(slotData.flattenedNodes,\n slotData.assignedNodes);\n let prevAssignedNodes = slotData._previouslyAssignedNodes;\n if (prevAssignedNodes) {\n for (let i=0; i < prevAssignedNodes.length; i++) {\n shadyDataForNode(prevAssignedNodes[i])._prevAssignedSlot = null;\n }\n slotData._previouslyAssignedNodes = null;\n // dirty if previously less assigned nodes than previously assigned.\n if (prevAssignedNodes.length > slotData.assignedNodes.length) {\n slotData.dirty = true;\n }\n }\n /* Note: A slot is marked dirty whenever a node is newly assigned to it\n or a node is assigned to a different slot (done in `_distributeNodeToSlot`)\n or if the number of nodes assigned to the slot has decreased (done above);\n */\n if (slotData.dirty) {\n slotData.dirty = false;\n this._fireSlotChange(slot);\n }\n }\n }\n\n /**\n * Distributes given `node` to the appropriate slot based on its `slot`\n * attribute. If `forcedSlot` is given, then the node is distributed to the\n * `forcedSlot`.\n * Note: slot to which the node is assigned will be marked dirty for firing\n * `slotchange`.\n * @param {Node} node\n * @param {Node=} forcedSlot\n *\n */\n _distributeNodeToSlot(node, forcedSlot) {\n const nodeData = ensureShadyDataForNode(node);\n let oldSlot = nodeData._prevAssignedSlot;\n nodeData._prevAssignedSlot = null;\n let slot = forcedSlot;\n if (!slot) {\n let name = node.slot || CATCHALL_NAME;\n const list = this._slotMap[name];\n slot = list && list[0];\n }\n if (slot) {\n const slotData = ensureShadyDataForNode(slot);\n slotData.assignedNodes.push(node);\n nodeData.assignedSlot = slot;\n } else {\n nodeData.assignedSlot = undefined;\n }\n if (oldSlot !== nodeData.assignedSlot) {\n if (nodeData.assignedSlot) {\n ensureShadyDataForNode(nodeData.assignedSlot).dirty = true;\n }\n }\n }\n\n /**\n * Clears the assignedNodes tracking data for a given `slot`. Note, the current\n * assigned node data is tracked (via _previouslyAssignedNodes and\n * _prevAssignedSlot) to see if `slotchange` should fire. This data may be out\n * of date at this time because the assigned nodes may have already been\n * distributed to another root. This is ok since this data is only used to\n * track changes.\n * @param {HTMLSlotElement} slot\n */\n _clearSlotAssignedNodes(slot) {\n const slotData = shadyDataForNode(slot);\n let n$ = slotData.assignedNodes;\n slotData.assignedNodes = [];\n slotData.flattenedNodes = [];\n slotData._previouslyAssignedNodes = n$;\n if (n$) {\n for (let i=0; i < n$.length; i++) {\n let n = shadyDataForNode(n$[i]);\n n._prevAssignedSlot = n.assignedSlot;\n // only clear if it was previously set to this slot;\n // this helps ensure that if the node has otherwise been distributed\n // ignore it.\n if (n.assignedSlot === slot) {\n n.assignedSlot = null;\n }\n }\n }\n }\n\n _addAssignedToFlattenedNodes(flattened, assigned) {\n for (let i=0, n; (i<assigned.length) && (n=assigned[i]); i++) {\n if (n.localName == 'slot') {\n const nestedAssigned = shadyDataForNode(n).assignedNodes;\n if (nestedAssigned && nestedAssigned.length) {\n this._addAssignedToFlattenedNodes(flattened, nestedAssigned);\n }\n } else {\n flattened.push(assigned[i]);\n }\n }\n }\n\n _fireSlotChange(slot) {\n // NOTE: cannot bubble correctly here so not setting bubbles: true\n // Safari tech preview does not bubble but chrome does\n // Spec says it bubbles (https://dom.spec.whatwg.org/#mutation-observers)\n dispatchEvent.call(slot, new Event('slotchange'));\n const slotData = shadyDataForNode(slot);\n if (slotData.assignedSlot) {\n this._fireSlotChange(slotData.assignedSlot);\n }\n }\n\n // Reify dom such that it is at its correct rendering position\n // based on logical distribution.\n // NOTE: here we only compose parents of <slot> elements and not the\n // shadowRoot into the host. The latter is performend via a fast path\n // in the `logical-mutation`.insertBefore.\n _compose() {\n const slots = this._slotList;\n let composeList = [];\n for (let i=0; i < slots.length; i++) {\n const parent = slots[i].parentNode;\n /* compose node only if:\n (1) parent does not have a shadowRoot since shadowRoot has already\n composed into the host\n (2) we're not already composing it\n [consider (n^2) but rare better than Set]\n */\n const parentData = shadyDataForNode(parent);\n if (!(parentData && parentData.root) &&\n composeList.indexOf(parent) < 0) {\n composeList.push(parent);\n }\n }\n for (let i=0; i < composeList.length; i++) {\n const node = composeList[i];\n const targetNode = node === this ? this.host : node;\n this._updateChildNodes(targetNode, this._composeNode(node));\n }\n }\n\n // Returns the list of nodes which should be rendered inside `node`.\n _composeNode(node) {\n let children = [];\n let c$ = node.childNodes;\n for (let i = 0; i < c$.length; i++) {\n let child = c$[i];\n // Note: if we see a slot here, the nodes are guaranteed to need to be\n // composed here. This is because if there is redistribution, it has\n // already been handled by this point.\n if (this._isInsertionPoint(child)) {\n let flattenedNodes = shadyDataForNode(child).flattenedNodes;\n for (let j = 0; j < flattenedNodes.length; j++) {\n let distributedNode = flattenedNodes[j];\n children.push(distributedNode);\n }\n } else {\n children.push(child);\n }\n }\n return children;\n }\n\n _isInsertionPoint(node) {\n return node.localName == 'slot';\n }\n\n // Ensures that the rendered node list inside `container` is `children`.\n _updateChildNodes(container, children) {\n let composed = childNodes(container);\n let splices = calculateSplices(children, composed);\n // process removals\n for (let i=0, d=0, s; (i<splices.length) && (s=splices[i]); i++) {\n for (let j=0, n; (j < s.removed.length) && (n=s.removed[j]); j++) {\n // check if the node is still where we expect it is before trying\n // to remove it; this can happen if we move a node and\n // then schedule its previous host for distribution resulting in\n // the node being removed here.\n if (parentNode(n) === container) {\n removeChild.call(container, n);\n }\n // TODO(sorvell): avoid the need for splicing here.\n composed.splice(s.index + d, 1);\n }\n d -= s.addedCount;\n }\n // process adds\n for (let i=0, s, next; (i<splices.length) && (s=splices[i]); i++) { //eslint-disable-line no-redeclare\n next = composed[s.index];\n for (let j=s.index, n; j < s.index + s.addedCount; j++) {\n n = children[j];\n insertBefore.call(container, n, next);\n composed.splice(j, 0, n);\n }\n }\n }\n\n _ensureSlotData() {\n this._pendingSlots = this._pendingSlots || [];\n this._slotList = this._slotList || [];\n this._slotMap = this._slotMap || {};\n }\n\n _addSlots(slots) {\n this._ensureSlotData();\n this._pendingSlots.push(...slots);\n }\n\n _validateSlots() {\n if (this._pendingSlots && this._pendingSlots.length) {\n this._mapSlots(this._pendingSlots);\n this._pendingSlots = [];\n }\n }\n\n /**\n * Adds the given slots. Slots are maintained in an dom-ordered list.\n * In addition a map of name to slot is updated.\n */\n _mapSlots(slots) {\n let slotNamesToSort;\n for (let i=0; i < slots.length; i++) {\n let slot = slots[i];\n // ensure insertionPoints's and their parents have logical dom info.\n // save logical tree info\n // a. for shadyRoot\n // b. for insertion points (fallback)\n // c. for parents of insertion points\n recordChildNodes(slot);\n recordChildNodes(slot.parentNode);\n let name = this._nameForSlot(slot);\n if (this._slotMap[name]) {\n slotNamesToSort = slotNamesToSort || {};\n slotNamesToSort[name] = true;\n this._slotMap[name].push(slot);\n } else {\n this._slotMap[name] = [slot];\n }\n this._slotList.push(slot);\n }\n if (slotNamesToSort) {\n for (let n in slotNamesToSort) {\n this._slotMap[n] = this._sortSlots(this._slotMap[n]);\n }\n }\n }\n\n _nameForSlot(slot) {\n const name = slot['name'] || slot.getAttribute('name') || CATCHALL_NAME;\n slot.__slotName = name;\n return name;\n }\n\n /**\n * Slots are kept in an ordered list. Slots with the same name\n * are sorted here by tree order.\n */\n _sortSlots(slots) {\n // NOTE: Cannot use `compareDocumentPosition` because it's not polyfilled,\n // but the code here could be used to polyfill the preceeding/following info\n // in `compareDocumentPosition`.\n return slots.sort((a, b) => {\n let listA = ancestorList(a);\n let listB = ancestorList(b);\n for (var i=0; i < listA.length; i++) {\n let nA = listA[i];\n let nB = listB[i];\n if (nA !== nB) {\n let c$ = Array.from(nA.parentNode.childNodes);\n return c$.indexOf(nA) - c$.indexOf(nB);\n }\n }\n });\n }\n\n /**\n * Removes from tracked slot data any slots contained within `container` and\n * then updates the tracked data (_slotList and _slotMap).\n * Any removed slots also have their `assignedNodes` removed from comopsed dom.\n */\n _removeContainedSlots(container) {\n if (!this._slotList) {\n return;\n }\n this._validateSlots();\n let didRemove;\n const map = this._slotMap;\n for (let n in map) {\n let slots = map[n];\n for (let i=0; i < slots.length; i++) {\n let slot = slots[i];\n if (utils.contains(container, slot)) {\n slots.splice(i, 1);\n const x = this._slotList.indexOf(slot);\n if (x >= 0) {\n this._slotList.splice(x, 1);\n }\n i--;\n this._removeFlattenedNodes(slot);\n didRemove = true;\n }\n }\n }\n return didRemove;\n }\n\n _updateSlotName(slot) {\n if (!this._slotList) {\n return;\n }\n const oldName = slot.__slotName;\n const name = this._nameForSlot(slot);\n if (name === oldName) {\n return;\n }\n // remove from existing tracking\n let slots = this._slotMap[oldName];\n const i = slots.indexOf(slot);\n if (i >= 0) {\n slots.splice(i, 1);\n }\n // add to new location and sort if nedessary\n let list = this._slotMap[name] || (this._slotMap[name] = []);\n list.push(slot);\n if (list.length > 1) {\n this._slotMap[name] = this._sortSlots(list);\n }\n }\n\n _removeFlattenedNodes(slot) {\n const data = shadyDataForNode(slot);\n let n$ = data.flattenedNodes;\n if (n$) {\n for (let i=0; i<n$.length; i++) {\n let node = n$[i];\n let parent = parentNode(node);\n if (parent) {\n removeChild.call(parent, node);\n }\n }\n }\n data.flattenedNodes = [];\n data.assignedNodes = [];\n }\n\n _hasInsertionPoint() {\n this._validateSlots();\n return Boolean(this._slotList && this._slotList.length);\n }\n}\n\n/**\n Implements a pared down version of ShadowDOM's scoping, which is easy to\n polyfill across browsers.\n*/\nexport function attachShadow(host, options) {\n if (!host) {\n throw 'Must provide a host.';\n }\n if (!options) {\n throw 'Not enough arguments.'\n }\n return new ShadyRoot(ShadyRootConstructionToken, host, options);\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {flush} from './flush.js';\nimport {dispatchEvent, querySelectorAll} from './native-methods.js';\nimport * as mutation from './logical-mutation.js';\nimport {ActiveElementAccessor, ShadowRootAccessor, patchAccessors, patchShadowRootAccessors, IsConnectedAccessor} from './patch-accessors.js';\nimport {addEventListener, removeEventListener} from './patch-events.js';\nimport {attachShadow, ShadyRoot} from './attach-shadow.js';\nimport {shadyDataForNode} from './shady-data.js';\n\nfunction getAssignedSlot(node) {\n mutation.renderRootNode(node);\n const nodeData = shadyDataForNode(node);\n return nodeData && nodeData.assignedSlot || null;\n}\n\nlet windowMixin = {\n\n // NOTE: ensure these methods are bound to `window` so that `this` is correct\n // when called directly from global context without a receiver; e.g.\n // `addEventListener(...)`.\n addEventListener: addEventListener.bind(window),\n\n removeEventListener: removeEventListener.bind(window)\n\n};\n\nlet nodeMixin = {\n\n addEventListener: addEventListener,\n\n removeEventListener: removeEventListener,\n\n appendChild(node) {\n return mutation.insertBefore(this, node);\n },\n\n insertBefore(node, ref_node) {\n return mutation.insertBefore(this, node, ref_node);\n },\n\n removeChild(node) {\n return mutation.removeChild(this, node);\n },\n\n /**\n * @this {Node}\n */\n replaceChild(node, ref_node) {\n mutation.insertBefore(this, node, ref_node);\n mutation.removeChild(this, ref_node);\n return node;\n },\n\n /**\n * @this {Node}\n */\n cloneNode(deep) {\n return mutation.cloneNode(this, deep);\n },\n\n /**\n * @this {Node}\n */\n getRootNode(options) {\n return mutation.getRootNode(this, options);\n },\n\n contains(node) {\n return utils.contains(this, node);\n },\n\n /**\n * @this {Node}\n */\n dispatchEvent(event) {\n flush();\n return dispatchEvent.call(this, event);\n }\n\n};\n\n// NOTE: we can do this regardless of the browser supporting native accessors\n// since this is always \"new\" in that case.\nObject.defineProperties(nodeMixin, IsConnectedAccessor);\n\n// NOTE: For some reason 'Text' redefines 'assignedSlot'\nlet textMixin = {\n /**\n * @this {Text}\n */\n get assignedSlot() {\n return getAssignedSlot(this);\n }\n};\n\nlet fragmentMixin = {\n\n // TODO(sorvell): consider doing native QSA and filtering results.\n /**\n * @this {DocumentFragment}\n */\n querySelector(selector) {\n // match selector and halt on first result.\n let result = mutation.query(this, function(n) {\n return utils.matchesSelector(n, selector);\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n },\n\n /**\n * @this {DocumentFragment}\n */\n // TODO(sorvell): `useNative` option relies on native querySelectorAll and\n // misses distributed nodes, see\n // https://github.com/webcomponents/shadydom/pull/210#issuecomment-361435503\n querySelectorAll(selector, useNative) {\n if (useNative) {\n const o = Array.prototype.slice.call(querySelectorAll(this, selector));\n const root = this.getRootNode();\n return o.filter(e => e.getRootNode() == root);\n }\n return mutation.query(this, function(n) {\n return utils.matchesSelector(n, selector);\n });\n }\n\n};\n\nlet slotMixin = {\n\n /**\n * @this {HTMLSlotElement}\n */\n assignedNodes(options) {\n if (this.localName === 'slot') {\n mutation.renderRootNode(this);\n const nodeData = shadyDataForNode(this);\n return nodeData ?\n ((options && options.flatten ? nodeData.flattenedNodes :\n nodeData.assignedNodes) || []) :\n [];\n }\n }\n\n};\n\nlet elementMixin = utils.extendAll({\n\n /**\n * @this {HTMLElement}\n */\n setAttribute(name, value) {\n mutation.setAttribute(this, name, value);\n },\n\n /**\n * @this {HTMLElement}\n */\n removeAttribute(name) {\n mutation.removeAttribute(this, name);\n },\n\n /**\n * @this {HTMLElement}\n */\n attachShadow(options) {\n return attachShadow(this, options);\n },\n\n /**\n * @this {HTMLElement}\n */\n get slot() {\n return this.getAttribute('slot');\n },\n\n /**\n * @this {HTMLElement}\n */\n set slot(value) {\n mutation.setAttribute(this, 'slot', value);\n },\n\n /**\n * @this {HTMLElement}\n */\n get assignedSlot() {\n return getAssignedSlot(this);\n }\n\n}, fragmentMixin, slotMixin);\n\nObject.defineProperties(elementMixin, ShadowRootAccessor);\n\nlet documentMixin = utils.extendAll({\n /**\n * @this {Document}\n */\n importNode(node, deep) {\n return mutation.importNode(node, deep);\n },\n\n /**\n * @this {Document}\n */\n getElementById(id) {\n let result = mutation.query(this, function(n) {\n return n.id == id;\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n }\n\n}, fragmentMixin);\n\nObject.defineProperties(documentMixin, {\n '_activeElement': ActiveElementAccessor.activeElement\n});\n\nlet nativeBlur = HTMLElement.prototype.blur;\n\nlet htmlElementMixin = utils.extendAll({\n /**\n * @this {HTMLElement}\n */\n blur() {\n const nodeData = shadyDataForNode(this);\n let root = nodeData && nodeData.root;\n let shadowActive = root && root.activeElement;\n if (shadowActive) {\n shadowActive.blur();\n } else {\n nativeBlur.call(this);\n }\n }\n});\n\nconst shadowRootMixin = {\n addEventListener(type, fn, optionsOrCapture) {\n if (typeof optionsOrCapture !== 'object') {\n optionsOrCapture = {\n capture: Boolean(optionsOrCapture)\n }\n }\n optionsOrCapture.__shadyTarget = this;\n this.host.addEventListener(type, fn, optionsOrCapture);\n },\n\n removeEventListener(type, fn, optionsOrCapture) {\n if (typeof optionsOrCapture !== 'object') {\n optionsOrCapture = {\n capture: Boolean(optionsOrCapture)\n }\n }\n optionsOrCapture.__shadyTarget = this;\n this.host.removeEventListener(type, fn, optionsOrCapture);\n },\n\n getElementById(id) {\n let result = mutation.query(this, function(n) {\n return n.id == id;\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n }\n}\n\nfunction patchBuiltin(proto, obj) {\n let n$ = Object.getOwnPropertyNames(obj);\n for (let i=0; i < n$.length; i++) {\n let n = n$[i];\n let d = Object.getOwnPropertyDescriptor(obj, n);\n // NOTE: we prefer writing directly here because some browsers\n // have descriptors that are writable but not configurable (e.g.\n // `appendChild` on older browsers)\n if (d.value) {\n proto[n] = d.value;\n } else {\n Object.defineProperty(proto, n, d);\n }\n }\n}\n\n// Apply patches to builtins (e.g. Element.prototype). Some of these patches\n// can be done unconditionally (mostly methods like\n// `Element.prototype.appendChild`) and some can only be done when the browser\n// has proper descriptors on the builtin prototype\n// (e.g. `Element.prototype.firstChild`)`. When descriptors are not available,\n// elements are individually patched when needed (see e.g.\n// `patchInside/OutsideElementAccessors` in `patch-accessors.js`).\nexport function patchBuiltins() {\n let nativeHTMLElement =\n (window['customElements'] && window['customElements']['nativeHTMLElement']) ||\n HTMLElement;\n // These patches can always be done, for all supported browsers.\n patchBuiltin(ShadyRoot.prototype, shadowRootMixin);\n patchBuiltin(window.Node.prototype, nodeMixin);\n patchBuiltin(window.Window.prototype, windowMixin);\n patchBuiltin(window.Text.prototype, textMixin);\n patchBuiltin(window.DocumentFragment.prototype, fragmentMixin);\n patchBuiltin(window.Element.prototype, elementMixin);\n patchBuiltin(window.Document.prototype, documentMixin);\n if (window.HTMLSlotElement) {\n patchBuiltin(window.HTMLSlotElement.prototype, slotMixin);\n }\n patchBuiltin(nativeHTMLElement.prototype, htmlElementMixin);\n // These patches can *only* be done\n // on browsers that have proper property descriptors on builtin prototypes.\n // This includes: IE11, Edge, Chrome >= 4?; Safari >= 10, Firefox\n // On older browsers (Chrome <= 4?, Safari 9), a per element patching\n // strategy is used for patching accessors.\n if (utils.settings.hasDescriptors) {\n patchAccessors(window.Node.prototype);\n patchAccessors(window.Text.prototype);\n patchAccessors(window.DocumentFragment.prototype);\n patchAccessors(window.Element.prototype);\n patchAccessors(nativeHTMLElement.prototype);\n patchAccessors(window.Document.prototype);\n if (window.HTMLSlotElement) {\n patchAccessors(window.HTMLSlotElement.prototype);\n }\n }\n patchShadowRootAccessors(ShadyRoot.prototype);\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {patchInsideElementAccessors, patchOutsideElementAccessors} from './patch-accessors.js';\nimport {accessors} from './native-tree.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nconst {childNodes} = accessors;\n\nexport function recordInsertBefore(node, container, ref_node) {\n patchInsideElementAccessors(container);\n const containerData = ensureShadyDataForNode(container);\n if (containerData.firstChild !== undefined) {\n containerData.childNodes = null;\n }\n // handle document fragments\n if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n let c$ = node.childNodes;\n for (let i=0; i < c$.length; i++) {\n linkNode(c$[i], container, ref_node);\n }\n // cleanup logical dom in doc fragment.\n const nodeData = ensureShadyDataForNode(node);\n let resetTo = (nodeData.firstChild !== undefined) ? null : undefined;\n nodeData.firstChild = nodeData.lastChild = resetTo;\n nodeData.childNodes = resetTo;\n } else {\n linkNode(node, container, ref_node);\n }\n}\n\nfunction linkNode(node, container, ref_node) {\n patchOutsideElementAccessors(node);\n ref_node = ref_node || null;\n const nodeData = ensureShadyDataForNode(node);\n const containerData = ensureShadyDataForNode(container);\n const ref_nodeData = ref_node ? ensureShadyDataForNode(ref_node) : null;\n // update ref_node.previousSibling <-> node\n nodeData.previousSibling = ref_node ? ref_nodeData.previousSibling :\n container.lastChild;\n let psd = shadyDataForNode(nodeData.previousSibling);\n if (psd) {\n psd.nextSibling = node;\n }\n // update node <-> ref_node\n let nsd = shadyDataForNode(nodeData.nextSibling = ref_node);\n if (nsd) {\n nsd.previousSibling = node;\n }\n // update node <-> container\n nodeData.parentNode = container;\n if (ref_node) {\n if (ref_node === containerData.firstChild) {\n containerData.firstChild = node;\n }\n } else {\n containerData.lastChild = node;\n if (!containerData.firstChild) {\n containerData.firstChild = node;\n }\n }\n // remove caching of childNodes\n containerData.childNodes = null;\n}\n\nexport function recordRemoveChild(node, container) {\n const nodeData = ensureShadyDataForNode(node);\n const containerData = ensureShadyDataForNode(container);\n if (node === containerData.firstChild) {\n containerData.firstChild = nodeData.nextSibling;\n }\n if (node === containerData.lastChild) {\n containerData.lastChild = nodeData.previousSibling;\n }\n let p = nodeData.previousSibling;\n let n = nodeData.nextSibling;\n if (p) {\n ensureShadyDataForNode(p).nextSibling = n;\n }\n if (n) {\n ensureShadyDataForNode(n).previousSibling = p;\n }\n // When an element is removed, logical data is no longer tracked.\n // Explicitly set `undefined` here to indicate this. This is disginguished\n // from `null` which is set if info is null.\n nodeData.parentNode = nodeData.previousSibling =\n nodeData.nextSibling = undefined;\n if (containerData.childNodes !== undefined) {\n // remove caching of childNodes\n containerData.childNodes = null;\n }\n}\n\nexport let recordChildNodes = function(node, nodes) {\n const nodeData = ensureShadyDataForNode(node);\n if (nodeData.firstChild === undefined) {\n const c$ = nodes || childNodes(node);\n nodeData.firstChild = c$[0] || null;\n nodeData.lastChild = c$[c$.length-1] || null;\n patchInsideElementAccessors(node);\n for (let i=0; i<c$.length; i++) {\n const n = c$[i];\n const sd = ensureShadyDataForNode(n);\n sd.parentNode = node;\n sd.nextSibling = c$[i+1] || null;\n sd.previousSibling = c$[i-1] || null;\n patchOutsideElementAccessors(n);\n }\n }\n}","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport * as logicalTree from './logical-tree.js';\nimport * as nativeMethods from './native-methods.js';\nimport {accessors} from './native-tree.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nconst {parentNode} = accessors;\n\n// Patched `insertBefore`. Note that all mutations that add nodes are routed\n// here. When a <slot> is added or a node is added to a host with a shadowRoot\n// with a slot, a standard dom `insert` call is aborted and `_asyncRender`\n// is called on the relevant shadowRoot. In all other cases, a standard dom\n// `insert` can be made, but the location and ref_node may need to be changed.\n/**\n * @param {Node} parent\n * @param {Node} node\n * @param {Node=} ref_node\n */\nexport function insertBefore(parent, node, ref_node) {\n if (node === parent) {\n throw Error(`Failed to execute 'appendChild' on 'Node': The new child element contains the parent.`);\n }\n if (ref_node) {\n const refData = shadyDataForNode(ref_node);\n const p = refData && refData.parentNode;\n if ((p !== undefined && p !== parent) ||\n (p === undefined && parentNode(ref_node) !== parent)) {\n throw Error(`Failed to execute 'insertBefore' on 'Node': The node ` +\n `before which the new node is to be inserted is not a child of this node.`);\n }\n }\n if (ref_node === node) {\n return node;\n }\n // remove from existing location\n if (node.parentNode) {\n // NOTE: avoid node.removeChild as this *can* trigger another patched\n // method (e.g. custom elements) and we want only the shady method to run.\n removeChild(node.parentNode, node);\n }\n // add to new parent\n let preventNativeInsert;\n let ownerRoot;\n let slotsAdded;\n if (!node['__noInsertionPoint']) {\n ownerRoot = utils.ownerShadyRootForNode(parent);\n slotsAdded = ownerRoot && findContainedSlots(node);\n if (slotsAdded) {\n ownerRoot._addSlots(slotsAdded);\n }\n }\n // if a slot is added, must render containing root.\n if (parent.localName === 'slot' || slotsAdded) {\n ownerRoot = ownerRoot || utils.ownerShadyRootForNode(parent);\n if (ownerRoot) {\n ownerRoot._asyncRender();\n }\n }\n if (utils.isTrackingLogicalChildNodes(parent)) {\n logicalTree.recordInsertBefore(node, parent, ref_node);\n // when inserting into a host with a shadowRoot with slot, use\n // `shadowRoot._asyncRender()` via `attach-shadow` module\n const parentData = shadyDataForNode(parent);\n if (hasShadowRootWithSlot(parent)) {\n parentData.root._asyncRender();\n preventNativeInsert = true;\n // when inserting into a host with shadowRoot with NO slot, do nothing\n // as the node should not be added to composed dome anywhere.\n } else if (parentData.root) {\n preventNativeInsert = true;\n }\n }\n if (!preventNativeInsert) {\n // if adding to a shadyRoot, add to host instead\n let container = utils.isShadyRoot(parent) ?\n /** @type {ShadowRoot} */(parent).host : parent;\n // if ref_node, get the ref_node that's actually in composed dom.\n if (ref_node) {\n ref_node = firstComposedNode(ref_node);\n nativeMethods.insertBefore.call(container, node, ref_node);\n } else {\n nativeMethods.appendChild.call(container, node);\n }\n }\n scheduleObserver(parent, node);\n return node;\n}\n\nfunction findContainedSlots(node) {\n let slots;\n if (node.localName === 'slot') {\n slots = [node];\n } else if (node.querySelectorAll) {\n slots = node.querySelectorAll('slot');\n }\n if (slots && slots.length) {\n return slots;\n }\n}\n\n/**\n * Patched `removeChild`. Note that all dom \"removals\" are routed here.\n * Removes the given `node` from the element's `children`.\n * This method also performs dom composition.\n * @param {Node} parent\n * @param {Node} node\n*/\nexport function removeChild(parent, node) {\n if (node.parentNode !== parent) {\n throw Error('The node to be removed is not a child of this node: ' +\n node);\n }\n let preventNativeRemove;\n let ownerRoot = utils.ownerShadyRootForNode(node);\n let removingInsertionPoint;\n const parentData = shadyDataForNode(parent);\n if (utils.isTrackingLogicalChildNodes(parent)) {\n logicalTree.recordRemoveChild(node, parent);\n if (hasShadowRootWithSlot(parent)) {\n parentData.root._asyncRender();\n preventNativeRemove = true;\n }\n }\n removeOwnerShadyRoot(node);\n // if removing slot, must render containing root\n if (ownerRoot) {\n let changeSlotContent = parent && parent.localName === 'slot';\n if (changeSlotContent) {\n preventNativeRemove = true;\n }\n removingInsertionPoint = ownerRoot._removeContainedSlots(node);\n if (removingInsertionPoint || changeSlotContent) {\n ownerRoot._asyncRender();\n }\n }\n if (!preventNativeRemove) {\n // if removing from a shadyRoot, remove form host instead\n let container = utils.isShadyRoot(parent) ?\n /** @type {ShadowRoot} */(parent).host :\n parent;\n // not guaranteed to physically be in container; e.g.\n // (1) if parent has a shadyRoot, element may or may not at distributed\n // location (could be undistributed)\n // (2) if parent is a slot, element may not ben in composed dom\n if (!(parentData.root || node.localName === 'slot') ||\n (container === parentNode(node))) {\n nativeMethods.removeChild.call(container, node);\n }\n }\n scheduleObserver(parent, null, node);\n return node;\n}\n\nfunction removeOwnerShadyRoot(node) {\n // optimization: only reset the tree if node is actually in a root\n if (hasCachedOwnerRoot(node)) {\n let c$ = node.childNodes;\n for (let i=0, l=c$.length, n; (i<l) && (n=c$[i]); i++) {\n removeOwnerShadyRoot(n);\n }\n }\n const nodeData = shadyDataForNode(node);\n if (nodeData) {\n nodeData.ownerShadyRoot = undefined;\n }\n}\n\nfunction hasCachedOwnerRoot(node) {\n const nodeData = shadyDataForNode(node);\n return Boolean(nodeData && nodeData.ownerShadyRoot !== undefined);\n}\n\n/**\n * Finds the first flattened node that is composed in the node's parent.\n * If the given node is a slot, then the first flattened node is returned\n * if it exists, otherwise advance to the node's nextSibling.\n * @param {Node} node within which to find first composed node\n * @returns {Node} first composed node\n */\nfunction firstComposedNode(node) {\n let composed = node;\n if (node && node.localName === 'slot') {\n const nodeData = shadyDataForNode(node);\n const flattened = nodeData && nodeData.flattenedNodes;\n composed = flattened && flattened.length ? flattened[0] :\n firstComposedNode(node.nextSibling);\n }\n return composed;\n}\n\nfunction hasShadowRootWithSlot(node) {\n const nodeData = shadyDataForNode(node);\n let root = nodeData && nodeData.root;\n return (root && root._hasInsertionPoint());\n}\n\n/**\n * Should be called whenever an attribute changes. If the `slot` attribute\n * changes, provokes rendering if necessary. If a `<slot>` element's `name`\n * attribute changes, updates the root's slot map and renders.\n * @param {Node} node\n * @param {string} name\n */\nfunction distributeAttributeChange(node, name) {\n if (name === 'slot') {\n const parent = node.parentNode;\n if (hasShadowRootWithSlot(parent)) {\n shadyDataForNode(parent).root._asyncRender();\n }\n } else if (node.localName === 'slot' && name === 'name') {\n let root = utils.ownerShadyRootForNode(node);\n if (root) {\n root._updateSlotName(node);\n root._asyncRender();\n }\n }\n}\n\n/**\n * @param {Node} node\n * @param {Node=} addedNode\n * @param {Node=} removedNode\n */\nfunction scheduleObserver(node, addedNode, removedNode) {\n const nodeData = shadyDataForNode(node);\n const observer = nodeData && nodeData.observer;\n if (observer) {\n if (addedNode) {\n observer.addedNodes.push(addedNode);\n }\n if (removedNode) {\n observer.removedNodes.push(removedNode);\n }\n observer.schedule();\n }\n}\n\n/**\n * @param {Node} node\n * @param {Object=} options\n */\nexport function getRootNode(node, options) { // eslint-disable-line no-unused-vars\n if (!node || !node.nodeType) {\n return;\n }\n const nodeData = ensureShadyDataForNode(node);\n let root = nodeData.ownerShadyRoot;\n if (root === undefined) {\n if (utils.isShadyRoot(node)) {\n root = node;\n nodeData.ownerShadyRoot = root;\n } else {\n let parent = node.parentNode;\n root = parent ? getRootNode(parent) : node;\n // memo-ize result for performance but only memo-ize\n // result if node is in the document. This avoids a problem where a root\n // can be cached while an element is inside a fragment.\n // If this happens and we cache the result, the value can become stale\n // because for perf we avoid processing the subtree of added fragments.\n if (nativeMethods.contains.call(document.documentElement, node)) {\n nodeData.ownerShadyRoot = root;\n }\n }\n\n }\n return root;\n}\n\n// NOTE: `query` is used primarily for ShadyDOM's querySelector impl,\n// but it's also generally useful to recurse through the element tree\n// and is used by Polymer's styling system.\n/**\n * @param {Node} node\n * @param {Function} matcher\n * @param {Function=} halter\n */\nexport function query(node, matcher, halter) {\n let list = [];\n queryElements(node.childNodes, matcher,\n halter, list);\n return list;\n}\n\nfunction queryElements(elements, matcher, halter, list) {\n for (let i=0, l=elements.length, c; (i<l) && (c=elements[i]); i++) {\n if (c.nodeType === Node.ELEMENT_NODE &&\n queryElement(c, matcher, halter, list)) {\n return true;\n }\n }\n}\n\nfunction queryElement(node, matcher, halter, list) {\n let result = matcher(node);\n if (result) {\n list.push(node);\n }\n if (halter && halter(result)) {\n return result;\n }\n queryElements(node.childNodes, matcher,\n halter, list);\n}\n\nexport function renderRootNode(element) {\n var root = element.getRootNode();\n if (utils.isShadyRoot(root)) {\n root._render();\n }\n}\n\nlet scopingShim = null;\n\nexport function setAttribute(node, attr, value) {\n if (!scopingShim) {\n scopingShim = window['ShadyCSS'] && window['ShadyCSS']['ScopingShim'];\n }\n if (scopingShim && attr === 'class') {\n scopingShim['setElementClass'](node, value);\n } else {\n nativeMethods.setAttribute.call(node, attr, value);\n distributeAttributeChange(node, attr);\n }\n}\n\nexport function removeAttribute(node, attr) {\n nativeMethods.removeAttribute.call(node, attr);\n distributeAttributeChange(node, attr);\n}\n\nexport function cloneNode(node, deep) {\n if (node.localName == 'template') {\n return nativeMethods.cloneNode.call(node, deep);\n } else {\n let n = nativeMethods.cloneNode.call(node, false);\n if (deep) {\n let c$ = node.childNodes;\n for (let i=0, nc; i < c$.length; i++) {\n nc = c$[i].cloneNode(true);\n n.appendChild(nc);\n }\n }\n return n;\n }\n}\n\n// note: Though not technically correct, we fast path `importNode`\n// when called on a node not owned by the main document.\n// This allows, for example, elements that cannot\n// contain custom elements and are therefore not likely to contain shadowRoots\n// to cloned natively. This is a fairly significant performance win.\nexport function importNode(node, deep) {\n if (node.ownerDocument !== document) {\n return nativeMethods.importNode.call(document, node, deep);\n }\n let n = nativeMethods.importNode.call(document, node, false);\n if (deep) {\n let c$ = node.childNodes;\n for (let i=0, nc; i < c$.length; i++) {\n nc = importNode(c$[i], true);\n n.appendChild(nc);\n }\n }\n return n;\n}",null,"/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport * as nativeMethods from './native-methods.js';\nimport {shadyDataForNode} from './shady-data.js';\n\n/*\nMake this name unique so it is unlikely to conflict with properties on objects passed to `addEventListener`\nhttps://github.com/webcomponents/shadydom/issues/173\n*/\nconst /** string */ eventWrappersName = `__eventWrappers${Date.now()}`;\n\n// https://github.com/w3c/webcomponents/issues/513#issuecomment-224183937\nlet alwaysComposed = {\n 'blur': true,\n 'focus': true,\n 'focusin': true,\n 'focusout': true,\n 'click': true,\n 'dblclick': true,\n 'mousedown': true,\n 'mouseenter': true,\n 'mouseleave': true,\n 'mousemove': true,\n 'mouseout': true,\n 'mouseover': true,\n 'mouseup': true,\n 'wheel': true,\n 'beforeinput': true,\n 'input': true,\n 'keydown': true,\n 'keyup': true,\n 'compositionstart': true,\n 'compositionupdate': true,\n 'compositionend': true,\n 'touchstart': true,\n 'touchend': true,\n 'touchmove': true,\n 'touchcancel': true,\n 'pointerover': true,\n 'pointerenter': true,\n 'pointerdown': true,\n 'pointermove': true,\n 'pointerup': true,\n 'pointercancel': true,\n 'pointerout': true,\n 'pointerleave': true,\n 'gotpointercapture': true,\n 'lostpointercapture': true,\n 'dragstart': true,\n 'drag': true,\n 'dragenter': true,\n 'dragleave': true,\n 'dragover': true,\n 'drop': true,\n 'dragend': true,\n 'DOMActivate': true,\n 'DOMFocusIn': true,\n 'DOMFocusOut': true,\n 'keypress': true\n};\n\nfunction pathComposer(startNode, composed) {\n let composedPath = [];\n let current = startNode;\n let startRoot = startNode === window ? window : startNode.getRootNode();\n while (current) {\n composedPath.push(current);\n if (current.assignedSlot) {\n current = current.assignedSlot;\n } else if (current.nodeType === Node.DOCUMENT_FRAGMENT_NODE && current.host && (composed || current !== startRoot)) {\n current = current.host;\n } else {\n current = current.parentNode;\n }\n }\n // event composedPath includes window when startNode's ownerRoot is document\n if (composedPath[composedPath.length - 1] === document) {\n composedPath.push(window);\n }\n return composedPath;\n}\n\nfunction retarget(refNode, path) {\n if (!utils.isShadyRoot) {\n return refNode;\n }\n // If ANCESTOR's root is not a shadow root or ANCESTOR's root is BASE's\n // shadow-including inclusive ancestor, return ANCESTOR.\n let refNodePath = pathComposer(refNode, true);\n let p$ = path;\n for (let i=0, ancestor, lastRoot, root, rootIdx; i < p$.length; i++) {\n ancestor = p$[i];\n root = ancestor === window ? window : ancestor.getRootNode();\n if (root !== lastRoot) {\n rootIdx = refNodePath.indexOf(root);\n lastRoot = root;\n }\n if (!utils.isShadyRoot(root) || rootIdx > -1) {\n return ancestor;\n }\n }\n}\n\nlet eventMixin = {\n\n /**\n * @this {Event}\n */\n get composed() {\n // isTrusted may not exist in this browser, so just check if isTrusted is explicitly false\n if (this.isTrusted !== false && this.__composed === undefined) {\n this.__composed = alwaysComposed[this.type];\n }\n return this.__composed || false;\n },\n\n /**\n * @this {Event}\n */\n composedPath() {\n if (!this.__composedPath) {\n this.__composedPath = pathComposer(this['__target'], this.composed);\n }\n return this.__composedPath;\n },\n\n /**\n * @this {Event}\n */\n get target() {\n return retarget(this.currentTarget, this.composedPath());\n },\n\n // http://w3c.github.io/webcomponents/spec/shadow/#event-relatedtarget-retargeting\n /**\n * @this {Event}\n */\n get relatedTarget() {\n if (!this.__relatedTarget) {\n return null;\n }\n if (!this.__relatedTargetComposedPath) {\n this.__relatedTargetComposedPath = pathComposer(this.__relatedTarget, true);\n }\n // find the deepest node in relatedTarget composed path that is in the same root with the currentTarget\n return retarget(this.currentTarget, this.__relatedTargetComposedPath);\n },\n /**\n * @this {Event}\n */\n stopPropagation() {\n Event.prototype.stopPropagation.call(this);\n this.__propagationStopped = true;\n },\n /**\n * @this {Event}\n */\n stopImmediatePropagation() {\n Event.prototype.stopImmediatePropagation.call(this);\n this.__immediatePropagationStopped = true;\n this.__propagationStopped = true;\n }\n\n};\n\nfunction mixinComposedFlag(Base) {\n // NOTE: avoiding use of `class` here so that transpiled output does not\n // try to do `Base.call` with a dom construtor.\n let klazz = function(type, options) {\n let event = new Base(type, options);\n event.__composed = options && Boolean(options['composed']);\n return event;\n }\n // put constructor properties on subclass\n utils.mixin(klazz, Base);\n klazz.prototype = Base.prototype;\n return klazz;\n}\n\nlet nonBubblingEventsToRetarget = {\n 'focus': true,\n 'blur': true\n};\n\n\n/**\n * Check if the event has been retargeted by comparing original `target`, and calculated `target`\n * @param {Event} event\n * @return {boolean} True if the original target and calculated target are the same\n */\nfunction hasRetargeted(event) {\n return event['__target'] !== event.target || event.__relatedTarget !== event.relatedTarget;\n}\n\n/**\n *\n * @param {Event} event\n * @param {Node} node\n * @param {string} phase\n */\nfunction fireHandlers(event, node, phase) {\n let hs = node.__handlers && node.__handlers[event.type] &&\n node.__handlers[event.type][phase];\n if (hs) {\n for (let i = 0, fn; (fn = hs[i]); i++) {\n if (hasRetargeted(event) && event.target === event.relatedTarget) {\n return;\n }\n fn.call(node, event);\n if (event.__immediatePropagationStopped) {\n return;\n }\n }\n }\n}\n\nfunction retargetNonBubblingEvent(e) {\n let path = e.composedPath();\n let node;\n // override `currentTarget` to let patched `target` calculate correctly\n Object.defineProperty(e, 'currentTarget', {\n get: function() {\n return node;\n },\n configurable: true\n });\n for (let i = path.length - 1; i >= 0; i--) {\n node = path[i];\n // capture phase fires all capture handlers\n fireHandlers(e, node, 'capture');\n if (e.__propagationStopped) {\n return;\n }\n }\n\n // set the event phase to `AT_TARGET` as in spec\n Object.defineProperty(e, 'eventPhase', {get() { return Event.AT_TARGET }});\n\n // the event only needs to be fired when owner roots change when iterating the event path\n // keep track of the last seen owner root\n let lastFiredRoot;\n for (let i = 0; i < path.length; i++) {\n node = path[i];\n const nodeData = shadyDataForNode(node);\n const root = nodeData && nodeData.root;\n if (i === 0 || (root && root === lastFiredRoot)) {\n fireHandlers(e, node, 'bubble');\n // don't bother with window, it doesn't have `getRootNode` and will be last in the path anyway\n if (node !== window) {\n lastFiredRoot = node.getRootNode();\n }\n if (e.__propagationStopped) {\n return;\n }\n }\n }\n}\n\nfunction listenerSettingsEqual(savedListener, node, type, capture, once, passive) {\n let {\n node: savedNode,\n type: savedType,\n capture: savedCapture,\n once: savedOnce,\n passive: savedPassive\n } = savedListener;\n return node === savedNode &&\n type === savedType &&\n capture === savedCapture &&\n once === savedOnce &&\n passive === savedPassive;\n}\n\nexport function findListener(wrappers, node, type, capture, once, passive) {\n for (let i = 0; i < wrappers.length; i++) {\n if (listenerSettingsEqual(wrappers[i], node, type, capture, once, passive)) {\n return i;\n }\n }\n return -1;\n}\n\n/**\n * Firefox can throw on accessing eventWrappers inside of `removeEventListener` during a selenium run\n * Try/Catch accessing eventWrappers to work around\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1353074\n */\nfunction getEventWrappers(eventLike) {\n let wrappers = null;\n try {\n wrappers = eventLike[eventWrappersName];\n } catch (e) {} // eslint-disable-line no-empty\n return wrappers;\n}\n\n/**\n * @this {Event}\n */\nexport function addEventListener(type, fnOrObj, optionsOrCapture) {\n if (!fnOrObj) {\n return;\n }\n\n const handlerType = typeof fnOrObj;\n\n // bail if `fnOrObj` is not a function, not an object\n if (handlerType !== 'function' && handlerType !== 'object') {\n return;\n }\n\n // bail if `fnOrObj` is an object without a `handleEvent` method\n if (handlerType === 'object' && (!fnOrObj.handleEvent || typeof fnOrObj.handleEvent !== 'function')) {\n return;\n }\n\n // The callback `fn` might be used for multiple nodes/events. Since we generate\n // a wrapper function, we need to keep track of it when we remove the listener.\n // It's more efficient to store the node/type/options information as Array in\n // `fn` itself rather than the node (we assume that the same callback is used\n // for few nodes at most, whereas a node will likely have many event listeners).\n // NOTE(valdrin) invoking external functions is costly, inline has better perf.\n let capture, once, passive;\n if (optionsOrCapture && typeof optionsOrCapture === 'object') {\n capture = Boolean(optionsOrCapture.capture);\n once = Boolean(optionsOrCapture.once);\n passive = Boolean(optionsOrCapture.passive);\n } else {\n capture = Boolean(optionsOrCapture);\n once = false;\n passive = false;\n }\n // hack to let ShadyRoots have event listeners\n // event listener will be on host, but `currentTarget`\n // will be set to shadyroot for event listener\n let target = (optionsOrCapture && optionsOrCapture.__shadyTarget) || this;\n\n let wrappers = fnOrObj[eventWrappersName];\n if (wrappers) {\n // Stop if the wrapper function has already been created.\n if (findListener(wrappers, target, type, capture, once, passive) > -1) {\n return;\n }\n } else {\n fnOrObj[eventWrappersName] = [];\n }\n\n /**\n * @this {HTMLElement}\n * @param {Event} e\n */\n const wrapperFn = function(e) {\n // Support `once` option.\n if (once) {\n this.removeEventListener(type, fnOrObj, optionsOrCapture);\n }\n if (!e['__target']) {\n patchEvent(e);\n }\n let lastCurrentTargetDesc;\n if (target !== this) {\n // replace `currentTarget` to make `target` and `relatedTarget` correct for inside the shadowroot\n lastCurrentTargetDesc = Object.getOwnPropertyDescriptor(e, 'currentTarget');\n Object.defineProperty(e, 'currentTarget', {get() { return target }, configurable: true});\n }\n // There are two critera that should stop events from firing on this node\n // 1. the event is not composed and the current node is not in the same root as the target\n // 2. when bubbling, if after retargeting, relatedTarget and target point to the same node\n if (e.composed || e.composedPath().indexOf(target) > -1) {\n if (hasRetargeted(e) && e.target === e.relatedTarget) {\n if (e.eventPhase === Event.BUBBLING_PHASE) {\n e.stopImmediatePropagation();\n }\n return;\n }\n // prevent non-bubbling events from triggering bubbling handlers on shadowroot, but only if not in capture phase\n if (e.eventPhase !== Event.CAPTURING_PHASE && !e.bubbles && e.target !== target && !(target instanceof Window)) {\n return;\n }\n let ret = handlerType === 'function' ?\n fnOrObj.call(target, e) :\n (fnOrObj.handleEvent && fnOrObj.handleEvent(e));\n if (target !== this) {\n // replace the \"correct\" `currentTarget`\n if (lastCurrentTargetDesc) {\n Object.defineProperty(e, 'currentTarget', lastCurrentTargetDesc);\n lastCurrentTargetDesc = null;\n } else {\n delete e['currentTarget'];\n }\n }\n return ret;\n }\n };\n // Store the wrapper information.\n fnOrObj[eventWrappersName].push({\n // note: use target here which is either a shadowRoot\n // (when the host element is proxy'ing the event) or this element\n node: target,\n type: type,\n capture: capture,\n once: once,\n passive: passive,\n wrapperFn: wrapperFn\n });\n\n if (nonBubblingEventsToRetarget[type]) {\n this.__handlers = this.__handlers || {};\n this.__handlers[type] = this.__handlers[type] ||\n {'capture': [], 'bubble': []};\n this.__handlers[type][capture ? 'capture' : 'bubble'].push(wrapperFn);\n } else {\n let ael = this instanceof Window ? nativeMethods.windowAddEventListener :\n nativeMethods.addEventListener;\n ael.call(this, type, wrapperFn, optionsOrCapture);\n }\n}\n\n/**\n * @this {Event}\n */\nexport function removeEventListener(type, fnOrObj, optionsOrCapture) {\n if (!fnOrObj) {\n return;\n }\n\n // NOTE(valdrin) invoking external functions is costly, inline has better perf.\n let capture, once, passive;\n if (optionsOrCapture && typeof optionsOrCapture === 'object') {\n capture = Boolean(optionsOrCapture.capture);\n once = Boolean(optionsOrCapture.once);\n passive = Boolean(optionsOrCapture.passive);\n } else {\n capture = Boolean(optionsOrCapture);\n once = false;\n passive = false;\n }\n let target = (optionsOrCapture && optionsOrCapture.__shadyTarget) || this;\n // Search the wrapped function.\n let wrapperFn = undefined;\n let wrappers = getEventWrappers(fnOrObj);\n if (wrappers) {\n let idx = findListener(wrappers, target, type, capture, once, passive);\n if (idx > -1) {\n wrapperFn = wrappers.splice(idx, 1)[0].wrapperFn;\n // Cleanup.\n if (!wrappers.length) {\n fnOrObj[eventWrappersName] = undefined;\n }\n }\n }\n let rel = this instanceof Window ? nativeMethods.windowRemoveEventListener :\n nativeMethods.removeEventListener;\n rel.call(this, type, wrapperFn || fnOrObj, optionsOrCapture);\n if (wrapperFn && nonBubblingEventsToRetarget[type] &&\n this.__handlers && this.__handlers[type]) {\n const arr = this.__handlers[type][capture ? 'capture' : 'bubble'];\n const idx = arr.indexOf(wrapperFn);\n if (idx > -1) {\n arr.splice(idx, 1);\n }\n }\n}\n\nfunction activateFocusEventOverrides() {\n for (let ev in nonBubblingEventsToRetarget) {\n window.addEventListener(ev, function(e) {\n if (!e['__target']) {\n patchEvent(e);\n retargetNonBubblingEvent(e);\n }\n }, true);\n }\n}\n\nfunction patchEvent(event) {\n event['__target'] = event.target;\n event.__relatedTarget = event.relatedTarget;\n // patch event prototype if we can\n if (utils.settings.hasDescriptors) {\n utils.patchPrototype(event, eventMixin);\n // and fallback to patching instance\n } else {\n utils.extend(event, eventMixin);\n }\n}\n\nlet PatchedEvent = mixinComposedFlag(window.Event);\nlet PatchedCustomEvent = mixinComposedFlag(window.CustomEvent);\nlet PatchedMouseEvent = mixinComposedFlag(window.MouseEvent);\n\nexport function patchEvents() {\n window.Event = PatchedEvent;\n window.CustomEvent = PatchedCustomEvent;\n window.MouseEvent = PatchedMouseEvent;\n activateFocusEventOverrides();\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nfunction newSplice(index, removed, addedCount) {\n return {\n index: index,\n removed: removed,\n addedCount: addedCount\n };\n}\n\nconst EDIT_LEAVE = 0;\nconst EDIT_UPDATE = 1;\nconst EDIT_ADD = 2;\nconst EDIT_DELETE = 3;\n\n// Note: This function is *based* on the computation of the Levenshtein\n// \"edit\" distance. The one change is that \"updates\" are treated as two\n// edits - not one. With Array splices, an update is really a delete\n// followed by an add. By retaining this, we optimize for \"keeping\" the\n// maximum array items in the original array. For example:\n//\n// 'xxxx123' -> '123yyyy'\n//\n// With 1-edit updates, the shortest path would be just to update all seven\n// characters. With 2-edit updates, we delete 4, leave 3, and add 4. This\n// leaves the substring '123' intact.\nfunction calcEditDistances(current, currentStart, currentEnd,\n old, oldStart, oldEnd) {\n // \"Deletion\" columns\n let rowCount = oldEnd - oldStart + 1;\n let columnCount = currentEnd - currentStart + 1;\n let distances = new Array(rowCount);\n\n // \"Addition\" rows. Initialize null column.\n for (let i = 0; i < rowCount; i++) {\n distances[i] = new Array(columnCount);\n distances[i][0] = i;\n }\n\n // Initialize null row\n for (let j = 0; j < columnCount; j++)\n distances[0][j] = j;\n\n for (let i = 1; i < rowCount; i++) {\n for (let j = 1; j < columnCount; j++) {\n if (equals(current[currentStart + j - 1], old[oldStart + i - 1]))\n distances[i][j] = distances[i - 1][j - 1];\n else {\n let north = distances[i - 1][j] + 1;\n let west = distances[i][j - 1] + 1;\n distances[i][j] = north < west ? north : west;\n }\n }\n }\n\n return distances;\n}\n\n// This starts at the final weight, and walks \"backward\" by finding\n// the minimum previous weight recursively until the origin of the weight\n// matrix.\nfunction spliceOperationsFromEditDistances(distances) {\n let i = distances.length - 1;\n let j = distances[0].length - 1;\n let current = distances[i][j];\n let edits = [];\n while (i > 0 || j > 0) {\n if (i == 0) {\n edits.push(EDIT_ADD);\n j--;\n continue;\n }\n if (j == 0) {\n edits.push(EDIT_DELETE);\n i--;\n continue;\n }\n let northWest = distances[i - 1][j - 1];\n let west = distances[i - 1][j];\n let north = distances[i][j - 1];\n\n let min;\n if (west < north)\n min = west < northWest ? west : northWest;\n else\n min = north < northWest ? north : northWest;\n\n if (min == northWest) {\n if (northWest == current) {\n edits.push(EDIT_LEAVE);\n } else {\n edits.push(EDIT_UPDATE);\n current = northWest;\n }\n i--;\n j--;\n } else if (min == west) {\n edits.push(EDIT_DELETE);\n i--;\n current = west;\n } else {\n edits.push(EDIT_ADD);\n j--;\n current = north;\n }\n }\n\n edits.reverse();\n return edits;\n}\n\n/**\n * Splice Projection functions:\n *\n * A splice map is a representation of how a previous array of items\n * was transformed into a new array of items. Conceptually it is a list of\n * tuples of\n *\n * <index, removed, addedCount>\n *\n * which are kept in ascending index order of. The tuple represents that at\n * the |index|, |removed| sequence of items were removed, and counting forward\n * from |index|, |addedCount| items were added.\n */\n\n/**\n * Lacking individual splice mutation information, the minimal set of\n * splices can be synthesized given the previous state and final state of an\n * array. The basic approach is to calculate the edit distance matrix and\n * choose the shortest path through it.\n *\n * Complexity: O(l * p)\n * l: The length of the current array\n * p: The length of the old array\n */\nfunction calcSplices(current, currentStart, currentEnd,\n old, oldStart, oldEnd) {\n let prefixCount = 0;\n let suffixCount = 0;\n let splice;\n\n let minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart);\n if (currentStart == 0 && oldStart == 0)\n prefixCount = sharedPrefix(current, old, minLength);\n\n if (currentEnd == current.length && oldEnd == old.length)\n suffixCount = sharedSuffix(current, old, minLength - prefixCount);\n\n currentStart += prefixCount;\n oldStart += prefixCount;\n currentEnd -= suffixCount;\n oldEnd -= suffixCount;\n\n if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0)\n return [];\n\n if (currentStart == currentEnd) {\n splice = newSplice(currentStart, [], 0);\n while (oldStart < oldEnd)\n splice.removed.push(old[oldStart++]);\n\n return [ splice ];\n } else if (oldStart == oldEnd)\n return [ newSplice(currentStart, [], currentEnd - currentStart) ];\n\n let ops = spliceOperationsFromEditDistances(\n calcEditDistances(current, currentStart, currentEnd,\n old, oldStart, oldEnd));\n\n splice = undefined;\n let splices = [];\n let index = currentStart;\n let oldIndex = oldStart;\n for (let i = 0; i < ops.length; i++) {\n switch(ops[i]) {\n case EDIT_LEAVE:\n if (splice) {\n splices.push(splice);\n splice = undefined;\n }\n\n index++;\n oldIndex++;\n break;\n case EDIT_UPDATE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.addedCount++;\n index++;\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n case EDIT_ADD:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.addedCount++;\n index++;\n break;\n case EDIT_DELETE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n }\n }\n\n if (splice) {\n splices.push(splice);\n }\n return splices;\n}\n\nfunction sharedPrefix(current, old, searchLength) {\n for (let i = 0; i < searchLength; i++)\n if (!equals(current[i], old[i]))\n return i;\n return searchLength;\n}\n\nfunction sharedSuffix(current, old, searchLength) {\n let index1 = current.length;\n let index2 = old.length;\n let count = 0;\n while (count < searchLength && equals(current[--index1], old[--index2]))\n count++;\n\n return count;\n}\n\nfunction equals(currentValue, previousValue) {\n return currentValue === previousValue;\n}\n\nexport function calculateSplices(current, previous) {\n return calcSplices(current, 0, current.length, previous, 0,\n previous.length);\n}\n\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n/**\n * Patches elements that interacts with ShadyDOM\n * such that tree traversal and mutation apis act like they would under\n * ShadowDOM.\n *\n * This import enables seemless interaction with ShadyDOM powered\n * custom elements, enabling better interoperation with 3rd party code,\n * libraries, and frameworks that use DOM tree manipulation apis.\n */\n\nimport * as utils from './utils.js';\nimport {flush, enqueue} from './flush.js';\nimport {observeChildren, unobserveChildren, filterMutations} from './observe-changes.js';\nimport * as nativeMethods from './native-methods.js';\nimport {accessors as nativeTree} from './native-tree.js';\nimport {patchBuiltins} from './patch-builtins.js';\nimport {patchInsideElementAccessors, patchOutsideElementAccessors} from './patch-accessors.js';\nimport {patchEvents} from './patch-events.js';\nimport {ShadyRoot} from './attach-shadow.js';\n\nif (utils.settings.inUse) {\n let ShadyDOM = {\n // TODO(sorvell): remove when Polymer does not depend on this.\n 'inUse': utils.settings.inUse,\n // NOTE: old browsers without prototype accessors (very old Chrome\n // and Safari) need manually patched accessors to properly set\n // `innerHTML` and `textContent` when an element is:\n // (1) inside a shadowRoot\n // (2) does not have special (slot) children itself\n // (3) and setting the property needs to provoke distribution (because\n // a nested slot is added/removed)\n 'patch': (node) => {\n patchInsideElementAccessors(node);\n patchOutsideElementAccessors(node);\n return node;\n },\n 'isShadyRoot': utils.isShadyRoot,\n 'enqueue': enqueue,\n 'flush': flush,\n 'settings': utils.settings,\n 'filterMutations': filterMutations,\n 'observeChildren': observeChildren,\n 'unobserveChildren': unobserveChildren,\n 'nativeMethods': nativeMethods,\n 'nativeTree': nativeTree\n };\n\n window['ShadyDOM'] = ShadyDOM;\n\n // Apply patches to events...\n patchEvents();\n // Apply patches to builtins (e.g. Element.prototype) where applicable.\n patchBuiltins();\n\n window.ShadowRoot = ShadyRoot;\n}","const reservedTagList = new Set([\n 'annotation-xml',\n 'color-profile',\n 'font-face',\n 'font-face-src',\n 'font-face-uri',\n 'font-face-format',\n 'font-face-name',\n 'missing-glyph',\n]);\n\n/**\n * @param {string} localName\n * @returns {boolean}\n */\nexport function isValidCustomElementName(localName) {\n const reserved = reservedTagList.has(localName);\n const validForm = /^[a-z][.0-9_a-z]*-[\\-.0-9_a-z]*$/.test(localName);\n return !reserved && validForm;\n}\n\n/**\n * @private\n * @param {!Node} node\n * @return {boolean}\n */\nexport function isConnected(node) {\n // Use `Node#isConnected`, if defined.\n const nativeValue = node.isConnected;\n if (nativeValue !== undefined) {\n return nativeValue;\n }\n\n /** @type {?Node|undefined} */\n let current = node;\n while (current && !(current.__CE_isImportDocument || current instanceof Document)) {\n current = current.parentNode || (window.ShadowRoot && current instanceof ShadowRoot ? current.host : undefined);\n }\n return !!(current && (current.__CE_isImportDocument || current instanceof Document));\n}\n\n/**\n * @param {!Node} root\n * @param {!Node} start\n * @return {?Node}\n */\nfunction nextSiblingOrAncestorSibling(root, start) {\n let node = start;\n while (node && node !== root && !node.nextSibling) {\n node = node.parentNode;\n }\n return (!node || node === root) ? null : node.nextSibling;\n}\n\n/**\n * @param {!Node} root\n * @param {!Node} start\n * @return {?Node}\n */\nfunction nextNode(root, start) {\n return start.firstChild ? start.firstChild : nextSiblingOrAncestorSibling(root, start);\n}\n\n/**\n * @param {!Node} root\n * @param {!function(!Element)} callback\n * @param {!Set<Node>=} visitedImports\n */\nexport function walkDeepDescendantElements(root, callback, visitedImports = new Set()) {\n let node = root;\n while (node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = /** @type {!Element} */(node);\n\n callback(element);\n\n const localName = element.localName;\n if (localName === 'link' && element.getAttribute('rel') === 'import') {\n // If this import (polyfilled or not) has it's root node available,\n // walk it.\n const importNode = /** @type {!Node} */ (element.import);\n if (importNode instanceof Node && !visitedImports.has(importNode)) {\n // Prevent multiple walks of the same import root.\n visitedImports.add(importNode);\n\n for (let child = importNode.firstChild; child; child = child.nextSibling) {\n walkDeepDescendantElements(child, callback, visitedImports);\n }\n }\n\n // Ignore descendants of import links to prevent attempting to walk the\n // elements created by the HTML Imports polyfill that we just walked\n // above.\n node = nextSiblingOrAncestorSibling(root, element);\n continue;\n } else if (localName === 'template') {\n // Ignore descendants of templates. There shouldn't be any descendants\n // because they will be moved into `.content` during construction in\n // browsers that support template but, in case they exist and are still\n // waiting to be moved by a polyfill, they will be ignored.\n node = nextSiblingOrAncestorSibling(root, element);\n continue;\n }\n\n // Walk shadow roots.\n const shadowRoot = element.__CE_shadowRoot;\n if (shadowRoot) {\n for (let child = shadowRoot.firstChild; child; child = child.nextSibling) {\n walkDeepDescendantElements(child, callback, visitedImports);\n }\n }\n }\n\n node = nextNode(root, node);\n }\n}\n\n/**\n * Used to suppress Closure's \"Modifying the prototype is only allowed if the\n * constructor is in the same scope\" warning without using\n * `@suppress {newCheckTypes, duplicate}` because `newCheckTypes` is too broad.\n *\n * @param {!Object} destination\n * @param {string} name\n * @param {*} value\n */\nexport function setPropertyUnchecked(destination, name, value) {\n destination[name] = value;\n}\n","import * as Utilities from './Utilities.js';\nimport CEState from './CustomElementState.js';\n\nexport default class CustomElementInternals {\n constructor() {\n /** @type {!Map<string, !CustomElementDefinition>} */\n this._localNameToDefinition = new Map();\n\n /** @type {!Map<!Function, !CustomElementDefinition>} */\n this._constructorToDefinition = new Map();\n\n /** @type {!Array<!function(!Node)>} */\n this._patches = [];\n\n /** @type {boolean} */\n this._hasPatches = false;\n }\n\n /**\n * @param {string} localName\n * @param {!CustomElementDefinition} definition\n */\n setDefinition(localName, definition) {\n this._localNameToDefinition.set(localName, definition);\n this._constructorToDefinition.set(definition.constructor, definition);\n }\n\n /**\n * @param {string} localName\n * @return {!CustomElementDefinition|undefined}\n */\n localNameToDefinition(localName) {\n return this._localNameToDefinition.get(localName);\n }\n\n /**\n * @param {!Function} constructor\n * @return {!CustomElementDefinition|undefined}\n */\n constructorToDefinition(constructor) {\n return this._constructorToDefinition.get(constructor);\n }\n\n /**\n * @param {!function(!Node)} listener\n */\n addPatch(listener) {\n this._hasPatches = true;\n this._patches.push(listener);\n }\n\n /**\n * @param {!Node} node\n */\n patchTree(node) {\n if (!this._hasPatches) return;\n\n Utilities.walkDeepDescendantElements(node, element => this.patch(element));\n }\n\n /**\n * @param {!Node} node\n */\n patch(node) {\n if (!this._hasPatches) return;\n\n if (node.__CE_patched) return;\n node.__CE_patched = true;\n\n for (let i = 0; i < this._patches.length; i++) {\n this._patches[i](node);\n }\n }\n\n /**\n * @param {!Node} root\n */\n connectTree(root) {\n const elements = [];\n\n Utilities.walkDeepDescendantElements(root, element => elements.push(element));\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (element.__CE_state === CEState.custom) {\n this.connectedCallback(element);\n } else {\n this.upgradeElement(element);\n }\n }\n }\n\n /**\n * @param {!Node} root\n */\n disconnectTree(root) {\n const elements = [];\n\n Utilities.walkDeepDescendantElements(root, element => elements.push(element));\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (element.__CE_state === CEState.custom) {\n this.disconnectedCallback(element);\n }\n }\n }\n\n /**\n * Upgrades all uncustomized custom elements at and below a root node for\n * which there is a definition. When custom element reaction callbacks are\n * assumed to be called synchronously (which, by the current DOM / HTML spec\n * definitions, they are *not*), callbacks for both elements customized\n * synchronously by the parser and elements being upgraded occur in the same\n * relative order.\n *\n * NOTE: This function, when used to simulate the construction of a tree that\n * is already created but not customized (i.e. by the parser), does *not*\n * prevent the element from reading the 'final' (true) state of the tree. For\n * example, the element, during truly synchronous parsing / construction would\n * see that it contains no children as they have not yet been inserted.\n * However, this function does not modify the tree, the element will\n * (incorrectly) have children. Additionally, self-modification restrictions\n * for custom element constructors imposed by the DOM spec are *not* enforced.\n *\n *\n * The following nested list shows the steps extending down from the HTML\n * spec's parsing section that cause elements to be synchronously created and\n * upgraded:\n *\n * The \"in body\" insertion mode:\n * https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n * - Switch on token:\n * .. other cases ..\n * -> Any other start tag\n * - [Insert an HTML element](below) for the token.\n *\n * Insert an HTML element:\n * https://html.spec.whatwg.org/multipage/syntax.html#insert-an-html-element\n * - Insert a foreign element for the token in the HTML namespace:\n * https://html.spec.whatwg.org/multipage/syntax.html#insert-a-foreign-element\n * - Create an element for a token:\n * https://html.spec.whatwg.org/multipage/syntax.html#create-an-element-for-the-token\n * - Will execute script flag is true?\n * - (Element queue pushed to the custom element reactions stack.)\n * - Create an element:\n * https://dom.spec.whatwg.org/#concept-create-element\n * - Sync CE flag is true?\n * - Constructor called.\n * - Self-modification restrictions enforced.\n * - Sync CE flag is false?\n * - (Upgrade reaction enqueued.)\n * - Attributes appended to element.\n * (`attributeChangedCallback` reactions enqueued.)\n * - Will execute script flag is true?\n * - (Element queue popped from the custom element reactions stack.\n * Reactions in the popped stack are invoked.)\n * - (Element queue pushed to the custom element reactions stack.)\n * - Insert the element:\n * https://dom.spec.whatwg.org/#concept-node-insert\n * - Shadow-including descendants are connected. During parsing\n * construction, there are no shadow-*excluding* descendants.\n * However, the constructor may have validly attached a shadow\n * tree to itself and added descendants to that shadow tree.\n * (`connectedCallback` reactions enqueued.)\n * - (Element queue popped from the custom element reactions stack.\n * Reactions in the popped stack are invoked.)\n *\n * @param {!Node} root\n * @param {{\n * visitedImports: (!Set<!Node>|undefined),\n * upgrade: (!function(!Element)|undefined),\n * }=} options\n */\n patchAndUpgradeTree(root, options = {}) {\n const visitedImports = options.visitedImports || new Set();\n const upgrade = options.upgrade || (element => this.upgradeElement(element));\n\n const elements = [];\n\n const gatherElements = element => {\n if (element.localName === 'link' && element.getAttribute('rel') === 'import') {\n // The HTML Imports polyfill sets a descendant element of the link to\n // the `import` property, specifically this is *not* a Document.\n const importNode = /** @type {?Node} */ (element.import);\n\n if (importNode instanceof Node) {\n importNode.__CE_isImportDocument = true;\n // Connected links are associated with the registry.\n importNode.__CE_hasRegistry = true;\n }\n\n if (importNode && importNode.readyState === 'complete') {\n importNode.__CE_documentLoadHandled = true;\n } else {\n // If this link's import root is not available, its contents can't be\n // walked. Wait for 'load' and walk it when it's ready.\n element.addEventListener('load', () => {\n const importNode = /** @type {!Node} */ (element.import);\n\n if (importNode.__CE_documentLoadHandled) return;\n importNode.__CE_documentLoadHandled = true;\n\n // Clone the `visitedImports` set that was populated sync during\n // the `patchAndUpgradeTree` call that caused this 'load' handler to\n // be added. Then, remove *this* link's import node so that we can\n // walk that import again, even if it was partially walked later\n // during the same `patchAndUpgradeTree` call.\n const clonedVisitedImports = new Set(visitedImports);\n clonedVisitedImports.delete(importNode);\n\n this.patchAndUpgradeTree(importNode, {visitedImports: clonedVisitedImports, upgrade});\n });\n }\n } else {\n elements.push(element);\n }\n };\n\n // `walkDeepDescendantElements` populates (and internally checks against)\n // `visitedImports` when traversing a loaded import.\n Utilities.walkDeepDescendantElements(root, gatherElements, visitedImports);\n\n if (this._hasPatches) {\n for (let i = 0; i < elements.length; i++) {\n this.patch(elements[i]);\n }\n }\n\n for (let i = 0; i < elements.length; i++) {\n upgrade(elements[i]);\n }\n }\n\n /**\n * @param {!Element} element\n */\n upgradeElement(element) {\n const currentState = element.__CE_state;\n if (currentState !== undefined) return;\n\n // Prevent elements created in documents without a browsing context from\n // upgrading.\n //\n // https://html.spec.whatwg.org/multipage/custom-elements.html#look-up-a-custom-element-definition\n // \"If document does not have a browsing context, return null.\"\n //\n // https://html.spec.whatwg.org/multipage/window-object.html#dom-document-defaultview\n // \"The defaultView IDL attribute of the Document interface, on getting,\n // must return this Document's browsing context's WindowProxy object, if\n // this Document has an associated browsing context, or null otherwise.\"\n const ownerDocument = element.ownerDocument;\n if (\n !ownerDocument.defaultView &&\n !(ownerDocument.__CE_isImportDocument && ownerDocument.__CE_hasRegistry)\n ) return;\n\n const definition = this.localNameToDefinition(element.localName);\n if (!definition) return;\n\n definition.constructionStack.push(element);\n\n const constructor = definition.constructor;\n try {\n try {\n let result = new (constructor)();\n if (result !== element) {\n throw new Error('The custom element constructor did not produce the element being upgraded.');\n }\n } finally {\n definition.constructionStack.pop();\n }\n } catch (e) {\n element.__CE_state = CEState.failed;\n throw e;\n }\n\n element.__CE_state = CEState.custom;\n element.__CE_definition = definition;\n\n if (definition.attributeChangedCallback) {\n const observedAttributes = definition.observedAttributes;\n for (let i = 0; i < observedAttributes.length; i++) {\n const name = observedAttributes[i];\n const value = element.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(element, name, null, value, null);\n }\n }\n }\n\n if (Utilities.isConnected(element)) {\n this.connectedCallback(element);\n }\n }\n\n /**\n * @param {!Element} element\n */\n connectedCallback(element) {\n const definition = element.__CE_definition;\n if (definition.connectedCallback) {\n definition.connectedCallback.call(element);\n }\n }\n\n /**\n * @param {!Element} element\n */\n disconnectedCallback(element) {\n const definition = element.__CE_definition;\n if (definition.disconnectedCallback) {\n definition.disconnectedCallback.call(element);\n }\n }\n\n /**\n * @param {!Element} element\n * @param {string} name\n * @param {?string} oldValue\n * @param {?string} newValue\n * @param {?string} namespace\n */\n attributeChangedCallback(element, name, oldValue, newValue, namespace) {\n const definition = element.__CE_definition;\n if (\n definition.attributeChangedCallback &&\n definition.observedAttributes.indexOf(name) > -1\n ) {\n definition.attributeChangedCallback.call(element, name, oldValue, newValue, namespace);\n }\n }\n}\n","/**\n * @enum {number}\n */\nconst CustomElementState = {\n custom: 1,\n failed: 2,\n};\n\nexport default CustomElementState;\n","import CustomElementInternals from './CustomElementInternals.js';\n\nexport default class DocumentConstructionObserver {\n constructor(internals, doc) {\n /**\n * @type {!CustomElementInternals}\n */\n this._internals = internals;\n\n /**\n * @type {!Document}\n */\n this._document = doc;\n\n /**\n * @type {MutationObserver|undefined}\n */\n this._observer = undefined;\n\n\n // Simulate tree construction for all currently accessible nodes in the\n // document.\n this._internals.patchAndUpgradeTree(this._document);\n\n if (this._document.readyState === 'loading') {\n this._observer = new MutationObserver(this._handleMutations.bind(this));\n\n // Nodes created by the parser are given to the observer *before* the next\n // task runs. Inline scripts are run in a new task. This means that the\n // observer will be able to handle the newly parsed nodes before the inline\n // script is run.\n this._observer.observe(this._document, {\n childList: true,\n subtree: true,\n });\n }\n }\n\n disconnect() {\n if (this._observer) {\n this._observer.disconnect();\n }\n }\n\n /**\n * @param {!Array<!MutationRecord>} mutations\n */\n _handleMutations(mutations) {\n // Once the document's `readyState` is 'interactive' or 'complete', all new\n // nodes created within that document will be the result of script and\n // should be handled by patching.\n const readyState = this._document.readyState;\n if (readyState === 'interactive' || readyState === 'complete') {\n this.disconnect();\n }\n\n for (let i = 0; i < mutations.length; i++) {\n const addedNodes = mutations[i].addedNodes;\n for (let j = 0; j < addedNodes.length; j++) {\n const node = addedNodes[j];\n this._internals.patchAndUpgradeTree(node);\n }\n }\n }\n}\n","import CustomElementInternals from './CustomElementInternals.js';\nimport DocumentConstructionObserver from './DocumentConstructionObserver.js';\nimport Deferred from './Deferred.js';\nimport * as Utilities from './Utilities.js';\n\n/**\n * @unrestricted\n */\nexport default class CustomElementRegistry {\n\n /**\n * @param {!CustomElementInternals} internals\n */\n constructor(internals) {\n /**\n * @private\n * @type {boolean}\n */\n this._elementDefinitionIsRunning = false;\n\n /**\n * @private\n * @type {!CustomElementInternals}\n */\n this._internals = internals;\n\n /**\n * @private\n * @type {!Map<string, !Deferred<undefined>>}\n */\n this._whenDefinedDeferred = new Map();\n\n /**\n * The default flush callback triggers the document walk synchronously.\n * @private\n * @type {!Function}\n */\n this._flushCallback = fn => fn();\n\n /**\n * @private\n * @type {boolean}\n */\n this._flushPending = false;\n\n /**\n * @private\n * @type {!Array<!CustomElementDefinition>}\n */\n this._pendingDefinitions = [];\n\n /**\n * @private\n * @type {!DocumentConstructionObserver}\n */\n this._documentConstructionObserver = new DocumentConstructionObserver(internals, document);\n }\n\n /**\n * @param {string} localName\n * @param {!Function} constructor\n */\n define(localName, constructor) {\n if (!(constructor instanceof Function)) {\n throw new TypeError('Custom element constructors must be functions.');\n }\n\n if (!Utilities.isValidCustomElementName(localName)) {\n throw new SyntaxError(`The element name '${localName}' is not valid.`);\n }\n\n if (this._internals.localNameToDefinition(localName)) {\n throw new Error(`A custom element with name '${localName}' has already been defined.`);\n }\n\n if (this._elementDefinitionIsRunning) {\n throw new Error('A custom element is already being defined.');\n }\n this._elementDefinitionIsRunning = true;\n\n let connectedCallback;\n let disconnectedCallback;\n let adoptedCallback;\n let attributeChangedCallback;\n let observedAttributes;\n try {\n /** @type {!Object} */\n const prototype = constructor.prototype;\n if (!(prototype instanceof Object)) {\n throw new TypeError('The custom element constructor\\'s prototype is not an object.');\n }\n\n function getCallback(name) {\n const callbackValue = prototype[name];\n if (callbackValue !== undefined && !(callbackValue instanceof Function)) {\n throw new Error(`The '${name}' callback must be a function.`);\n }\n return callbackValue;\n }\n\n connectedCallback = getCallback('connectedCallback');\n disconnectedCallback = getCallback('disconnectedCallback');\n adoptedCallback = getCallback('adoptedCallback');\n attributeChangedCallback = getCallback('attributeChangedCallback');\n observedAttributes = constructor['observedAttributes'] || [];\n } catch (e) {\n return;\n } finally {\n this._elementDefinitionIsRunning = false;\n }\n\n const definition = {\n localName,\n constructor,\n connectedCallback,\n disconnectedCallback,\n adoptedCallback,\n attributeChangedCallback,\n observedAttributes,\n constructionStack: [],\n };\n\n this._internals.setDefinition(localName, definition);\n this._pendingDefinitions.push(definition);\n\n // If we've already called the flush callback and it hasn't called back yet,\n // don't call it again.\n if (!this._flushPending) {\n this._flushPending = true;\n this._flushCallback(() => this._flush());\n }\n }\n\n upgrade(element) {\n this._internals.patchAndUpgradeTree(element);\n }\n\n _flush() {\n // If no new definitions were defined, don't attempt to flush. This could\n // happen if a flush callback keeps the function it is given and calls it\n // multiple times.\n if (this._flushPending === false) return;\n this._flushPending = false;\n\n const pendingDefinitions = this._pendingDefinitions;\n\n /**\n * Unupgraded elements with definitions that were defined *before* the last\n * flush, in document order.\n * @type {!Array<!Element>}\n */\n const elementsWithStableDefinitions = [];\n\n /**\n * A map from `localName`s of definitions that were defined *after* the last\n * flush to unupgraded elements matching that definition, in document order.\n * @type {!Map<string, !Array<!Element>>}\n */\n const elementsWithPendingDefinitions = new Map();\n for (let i = 0; i < pendingDefinitions.length; i++) {\n elementsWithPendingDefinitions.set(pendingDefinitions[i].localName, []);\n }\n\n this._internals.patchAndUpgradeTree(document, {\n upgrade: element => {\n // Ignore the element if it has already upgraded or failed to upgrade.\n if (element.__CE_state !== undefined) return;\n\n const localName = element.localName;\n\n // If there is an applicable pending definition for the element, add the\n // element to the list of elements to be upgraded with that definition.\n const pendingElements = elementsWithPendingDefinitions.get(localName);\n if (pendingElements) {\n pendingElements.push(element);\n // If there is *any other* applicable definition for the element, add it\n // to the list of elements with stable definitions that need to be upgraded.\n } else if (this._internals.localNameToDefinition(localName)) {\n elementsWithStableDefinitions.push(element);\n }\n },\n });\n\n // Upgrade elements with 'stable' definitions first.\n for (let i = 0; i < elementsWithStableDefinitions.length; i++) {\n this._internals.upgradeElement(elementsWithStableDefinitions[i]);\n }\n\n // Upgrade elements with 'pending' definitions in the order they were defined.\n while (pendingDefinitions.length > 0) {\n const definition = pendingDefinitions.shift();\n const localName = definition.localName;\n\n // Attempt to upgrade all applicable elements.\n const pendingUpgradableElements = elementsWithPendingDefinitions.get(definition.localName);\n for (let i = 0; i < pendingUpgradableElements.length; i++) {\n this._internals.upgradeElement(pendingUpgradableElements[i]);\n }\n\n // Resolve any promises created by `whenDefined` for the definition.\n const deferred = this._whenDefinedDeferred.get(localName);\n if (deferred) {\n deferred.resolve(undefined);\n }\n }\n }\n\n /**\n * @param {string} localName\n * @return {Function|undefined}\n */\n get(localName) {\n const definition = this._internals.localNameToDefinition(localName);\n if (definition) {\n return definition.constructor;\n }\n\n return undefined;\n }\n\n /**\n * @param {string} localName\n * @return {!Promise<undefined>}\n */\n whenDefined(localName) {\n if (!Utilities.isValidCustomElementName(localName)) {\n return Promise.reject(new SyntaxError(`'${localName}' is not a valid custom element name.`));\n }\n\n const prior = this._whenDefinedDeferred.get(localName);\n if (prior) {\n return prior.toPromise();\n }\n\n const deferred = new Deferred();\n this._whenDefinedDeferred.set(localName, deferred);\n\n const definition = this._internals.localNameToDefinition(localName);\n // Resolve immediately only if the given local name has a definition *and*\n // the full document walk to upgrade elements with that local name has\n // already happened.\n if (definition && !this._pendingDefinitions.some(d => d.localName === localName)) {\n deferred.resolve(undefined);\n }\n\n return deferred.toPromise();\n }\n\n polyfillWrapFlushCallback(outer) {\n this._documentConstructionObserver.disconnect();\n const inner = this._flushCallback;\n this._flushCallback = flush => outer(() => inner(flush));\n }\n}\n\n// Closure compiler exports.\nwindow['CustomElementRegistry'] = CustomElementRegistry;\nCustomElementRegistry.prototype['define'] = CustomElementRegistry.prototype.define;\nCustomElementRegistry.prototype['upgrade'] = CustomElementRegistry.prototype.upgrade;\nCustomElementRegistry.prototype['get'] = CustomElementRegistry.prototype.get;\nCustomElementRegistry.prototype['whenDefined'] = CustomElementRegistry.prototype.whenDefined;\nCustomElementRegistry.prototype['polyfillWrapFlushCallback'] = CustomElementRegistry.prototype.polyfillWrapFlushCallback;\n","/**\n * @template T\n */\nexport default class Deferred {\n constructor() {\n /**\n * @private\n * @type {T|undefined}\n */\n this._value = undefined;\n\n /**\n * @private\n * @type {Function|undefined}\n */\n this._resolve = undefined;\n\n /**\n * @private\n * @type {!Promise<T>}\n */\n this._promise = new Promise(resolve => {\n this._resolve = resolve;\n\n if (this._value) {\n resolve(this._value);\n }\n });\n }\n\n /**\n * @param {T} value\n */\n resolve(value) {\n if (this._value) {\n throw new Error('Already resolved.');\n }\n\n this._value = value;\n\n if (this._resolve) {\n this._resolve(value);\n }\n }\n\n /**\n * @return {!Promise<T>}\n */\n toPromise() {\n return this._promise;\n }\n}\n","export default {\n Document_createElement: window.Document.prototype.createElement,\n Document_createElementNS: window.Document.prototype.createElementNS,\n Document_importNode: window.Document.prototype.importNode,\n Document_prepend: window.Document.prototype['prepend'],\n Document_append: window.Document.prototype['append'],\n DocumentFragment_prepend: window.DocumentFragment.prototype['prepend'],\n DocumentFragment_append: window.DocumentFragment.prototype['append'],\n Node_cloneNode: window.Node.prototype.cloneNode,\n Node_appendChild: window.Node.prototype.appendChild,\n Node_insertBefore: window.Node.prototype.insertBefore,\n Node_removeChild: window.Node.prototype.removeChild,\n Node_replaceChild: window.Node.prototype.replaceChild,\n Node_textContent: Object.getOwnPropertyDescriptor(window.Node.prototype, 'textContent'),\n Element_attachShadow: window.Element.prototype['attachShadow'],\n Element_innerHTML: Object.getOwnPropertyDescriptor(window.Element.prototype, 'innerHTML'),\n Element_getAttribute: window.Element.prototype.getAttribute,\n Element_setAttribute: window.Element.prototype.setAttribute,\n Element_removeAttribute: window.Element.prototype.removeAttribute,\n Element_getAttributeNS: window.Element.prototype.getAttributeNS,\n Element_setAttributeNS: window.Element.prototype.setAttributeNS,\n Element_removeAttributeNS: window.Element.prototype.removeAttributeNS,\n Element_insertAdjacentElement: window.Element.prototype['insertAdjacentElement'],\n Element_insertAdjacentHTML: window.Element.prototype['insertAdjacentHTML'],\n Element_prepend: window.Element.prototype['prepend'],\n Element_append: window.Element.prototype['append'],\n Element_before: window.Element.prototype['before'],\n Element_after: window.Element.prototype['after'],\n Element_replaceWith: window.Element.prototype['replaceWith'],\n Element_remove: window.Element.prototype['remove'],\n HTMLElement: window.HTMLElement,\n HTMLElement_innerHTML: Object.getOwnPropertyDescriptor(window.HTMLElement.prototype, 'innerHTML'),\n HTMLElement_insertAdjacentElement: window.HTMLElement.prototype['insertAdjacentElement'],\n HTMLElement_insertAdjacentHTML: window.HTMLElement.prototype['insertAdjacentHTML'],\n};\n","/**\n * This class exists only to work around Closure's lack of a way to describe\n * singletons. It represents the 'already constructed marker' used in custom\n * element construction stacks.\n *\n * https://html.spec.whatwg.org/#concept-already-constructed-marker\n */\nclass AlreadyConstructedMarker {}\n\nexport default new AlreadyConstructedMarker();\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport CEState from '../CustomElementState.js';\nimport AlreadyConstructedMarker from '../AlreadyConstructedMarker.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n window['HTMLElement'] = (function() {\n /**\n * @type {function(new: HTMLElement): !HTMLElement}\n */\n function HTMLElement() {\n // This should really be `new.target` but `new.target` can't be emulated\n // in ES5. Assuming the user keeps the default value of the constructor's\n // prototype's `constructor` property, this is equivalent.\n /** @type {!Function} */\n const constructor = this.constructor;\n\n const definition = internals.constructorToDefinition(constructor);\n if (!definition) {\n throw new Error('The custom element being constructed was not registered with `customElements`.');\n }\n\n const constructionStack = definition.constructionStack;\n\n if (constructionStack.length === 0) {\n const element = Native.Document_createElement.call(document, definition.localName);\n Object.setPrototypeOf(element, constructor.prototype);\n element.__CE_state = CEState.custom;\n element.__CE_definition = definition;\n internals.patch(element);\n return element;\n }\n\n const lastIndex = constructionStack.length - 1;\n const element = constructionStack[lastIndex];\n if (element === AlreadyConstructedMarker) {\n throw new Error('The HTMLElement constructor was either called reentrantly for this constructor or called multiple times.');\n }\n constructionStack[lastIndex] = AlreadyConstructedMarker;\n\n Object.setPrototypeOf(element, constructor.prototype);\n internals.patch(/** @type {!HTMLElement} */ (element));\n\n return element;\n }\n\n HTMLElement.prototype = Native.HTMLElement.prototype;\n\n return HTMLElement;\n })();\n};\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport CustomElementInternals from './CustomElementInternals.js';\nimport CustomElementRegistry from './CustomElementRegistry.js';\n\nimport PatchHTMLElement from './Patch/HTMLElement.js';\nimport PatchDocument from './Patch/Document.js';\nimport PatchDocumentFragment from './Patch/DocumentFragment.js';\nimport PatchNode from './Patch/Node.js';\nimport PatchElement from './Patch/Element.js';\n\nconst priorCustomElements = window['customElements'];\n\nif (!priorCustomElements ||\n priorCustomElements['forcePolyfill'] ||\n (typeof priorCustomElements['define'] != 'function') ||\n (typeof priorCustomElements['get'] != 'function')) {\n /** @type {!CustomElementInternals} */\n const internals = new CustomElementInternals();\n\n PatchHTMLElement(internals);\n PatchDocument(internals);\n PatchDocumentFragment(internals);\n PatchNode(internals);\n PatchElement(internals);\n\n // The main document is always associated with the registry.\n document.__CE_hasRegistry = true;\n\n /** @type {!CustomElementRegistry} */\n const customElements = new CustomElementRegistry(internals);\n\n Object.defineProperty(window, 'customElements', {\n configurable: true,\n enumerable: true,\n value: customElements,\n });\n}\n","import CustomElementInternals from '../../CustomElementInternals.js';\nimport * as Utilities from '../../Utilities.js';\n\n/**\n * @typedef {{\n * prepend: !function(...(!Node|string)),\n * append: !function(...(!Node|string)),\n * }}\n */\nlet ParentNodeNativeMethods;\n\n/**\n * @param {!CustomElementInternals} internals\n * @param {!Object} destination\n * @param {!ParentNodeNativeMethods} builtIn\n */\nexport default function(internals, destination, builtIn) {\n /**\n * @param {!function(...(!Node|string))} builtInMethod\n * @return {!function(...(!Node|string))}\n */\n function appendPrependPatch(builtInMethod) {\n return function(...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n * @type {!Array<!Node>}\n */\n const flattenedNodes = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n * @type {!Array<!Node>}\n */\n const connectedElements = [];\n\n for (var i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n builtInMethod.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n };\n }\n\n if (builtIn.prepend !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'prepend', appendPrependPatch(builtIn.prepend));\n }\n\n if (builtIn.append !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'append', appendPrependPatch(builtIn.append));\n }\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport * as Utilities from '../Utilities.js';\n\nimport PatchParentNode from './Interface/ParentNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n Utilities.setPropertyUnchecked(Document.prototype, 'createElement',\n /**\n * @this {Document}\n * @param {string} localName\n * @return {!Element}\n */\n function(localName) {\n // Only create custom elements if this document is associated with the registry.\n if (this.__CE_hasRegistry) {\n const definition = internals.localNameToDefinition(localName);\n if (definition) {\n return new (definition.constructor)();\n }\n }\n\n const result = /** @type {!Element} */\n (Native.Document_createElement.call(this, localName));\n internals.patch(result);\n return result;\n });\n\n Utilities.setPropertyUnchecked(Document.prototype, 'importNode',\n /**\n * @this {Document}\n * @param {!Node} node\n * @param {boolean=} deep\n * @return {!Node}\n */\n function(node, deep) {\n const clone = Native.Document_importNode.call(this, node, deep);\n // Only create custom elements if this document is associated with the registry.\n if (!this.__CE_hasRegistry) {\n internals.patchTree(clone);\n } else {\n internals.patchAndUpgradeTree(clone);\n }\n return clone;\n });\n\n const NS_HTML = \"http://www.w3.org/1999/xhtml\";\n\n Utilities.setPropertyUnchecked(Document.prototype, 'createElementNS',\n /**\n * @this {Document}\n * @param {?string} namespace\n * @param {string} localName\n * @return {!Element}\n */\n function(namespace, localName) {\n // Only create custom elements if this document is associated with the registry.\n if (this.__CE_hasRegistry && (namespace === null || namespace === NS_HTML)) {\n const definition = internals.localNameToDefinition(localName);\n if (definition) {\n return new (definition.constructor)();\n }\n }\n\n const result = /** @type {!Element} */\n (Native.Document_createElementNS.call(this, namespace, localName));\n internals.patch(result);\n return result;\n });\n\n PatchParentNode(internals, Document.prototype, {\n prepend: Native.Document_prepend,\n append: Native.Document_append,\n });\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport * as Utilities from '../Utilities.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n // `Node#nodeValue` is implemented on `Attr`.\n // `Node#textContent` is implemented on `Attr`, `Element`.\n\n Utilities.setPropertyUnchecked(Node.prototype, 'insertBefore',\n /**\n * @this {Node}\n * @param {!Node} node\n * @param {?Node} refNode\n * @return {!Node}\n */\n function(node, refNode) {\n if (node instanceof DocumentFragment) {\n const insertedNodes = Array.prototype.slice.apply(node.childNodes);\n const nativeResult = Native.Node_insertBefore.call(this, node, refNode);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeWasConnected = Utilities.isConnected(node);\n const nativeResult = Native.Node_insertBefore.call(this, node, refNode);\n\n if (nodeWasConnected) {\n internals.disconnectTree(node);\n }\n\n if (Utilities.isConnected(this)) {\n internals.connectTree(node);\n }\n\n return nativeResult;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'appendChild',\n /**\n * @this {Node}\n * @param {!Node} node\n * @return {!Node}\n */\n function(node) {\n if (node instanceof DocumentFragment) {\n const insertedNodes = Array.prototype.slice.apply(node.childNodes);\n const nativeResult = Native.Node_appendChild.call(this, node);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeWasConnected = Utilities.isConnected(node);\n const nativeResult = Native.Node_appendChild.call(this, node);\n\n if (nodeWasConnected) {\n internals.disconnectTree(node);\n }\n\n if (Utilities.isConnected(this)) {\n internals.connectTree(node);\n }\n\n return nativeResult;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'cloneNode',\n /**\n * @this {Node}\n * @param {boolean=} deep\n * @return {!Node}\n */\n function(deep) {\n const clone = Native.Node_cloneNode.call(this, deep);\n // Only create custom elements if this element's owner document is\n // associated with the registry.\n if (!this.ownerDocument.__CE_hasRegistry) {\n internals.patchTree(clone);\n } else {\n internals.patchAndUpgradeTree(clone);\n }\n return clone;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'removeChild',\n /**\n * @this {Node}\n * @param {!Node} node\n * @return {!Node}\n */\n function(node) {\n const nodeWasConnected = Utilities.isConnected(node);\n const nativeResult = Native.Node_removeChild.call(this, node);\n\n if (nodeWasConnected) {\n internals.disconnectTree(node);\n }\n\n return nativeResult;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'replaceChild',\n /**\n * @this {Node}\n * @param {!Node} nodeToInsert\n * @param {!Node} nodeToRemove\n * @return {!Node}\n */\n function(nodeToInsert, nodeToRemove) {\n if (nodeToInsert instanceof DocumentFragment) {\n const insertedNodes = Array.prototype.slice.apply(nodeToInsert.childNodes);\n const nativeResult = Native.Node_replaceChild.call(this, nodeToInsert, nodeToRemove);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n internals.disconnectTree(nodeToRemove);\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeToInsertWasConnected = Utilities.isConnected(nodeToInsert);\n const nativeResult = Native.Node_replaceChild.call(this, nodeToInsert, nodeToRemove);\n const thisIsConnected = Utilities.isConnected(this);\n\n if (thisIsConnected) {\n internals.disconnectTree(nodeToRemove);\n }\n\n if (nodeToInsertWasConnected) {\n internals.disconnectTree(nodeToInsert);\n }\n\n if (thisIsConnected) {\n internals.connectTree(nodeToInsert);\n }\n\n return nativeResult;\n });\n\n\n function patch_textContent(destination, baseDescriptor) {\n Object.defineProperty(destination, 'textContent', {\n enumerable: baseDescriptor.enumerable,\n configurable: true,\n get: baseDescriptor.get,\n set: /** @this {Node} */ function(assignedValue) {\n // If this is a text node then there are no nodes to disconnect.\n if (this.nodeType === Node.TEXT_NODE) {\n baseDescriptor.set.call(this, assignedValue);\n return;\n }\n\n let removedNodes = undefined;\n // Checking for `firstChild` is faster than reading `childNodes.length`\n // to compare with 0.\n if (this.firstChild) {\n // Using `childNodes` is faster than `children`, even though we only\n // care about elements.\n const childNodes = this.childNodes;\n const childNodesLength = childNodes.length;\n if (childNodesLength > 0 && Utilities.isConnected(this)) {\n // Copying an array by iterating is faster than using slice.\n removedNodes = new Array(childNodesLength);\n for (let i = 0; i < childNodesLength; i++) {\n removedNodes[i] = childNodes[i];\n }\n }\n }\n\n baseDescriptor.set.call(this, assignedValue);\n\n if (removedNodes) {\n for (let i = 0; i < removedNodes.length; i++) {\n internals.disconnectTree(removedNodes[i]);\n }\n }\n },\n });\n }\n\n if (Native.Node_textContent && Native.Node_textContent.get) {\n patch_textContent(Node.prototype, Native.Node_textContent);\n } else {\n internals.addPatch(function(element) {\n patch_textContent(element, {\n enumerable: true,\n configurable: true,\n // NOTE: This implementation of the `textContent` getter assumes that\n // text nodes' `textContent` getter will not be patched.\n get: /** @this {Node} */ function() {\n /** @type {!Array<string>} */\n const parts = [];\n\n for (let i = 0; i < this.childNodes.length; i++) {\n parts.push(this.childNodes[i].textContent);\n }\n\n return parts.join('');\n },\n set: /** @this {Node} */ function(assignedValue) {\n while (this.firstChild) {\n Native.Node_removeChild.call(this, this.firstChild);\n }\n Native.Node_appendChild.call(this, document.createTextNode(assignedValue));\n },\n });\n });\n }\n};\n","import CustomElementInternals from '../../CustomElementInternals.js';\nimport * as Utilities from '../../Utilities.js';\n\n/**\n * @typedef {{\n * before: !function(...(!Node|string)),\n * after: !function(...(!Node|string)),\n * replaceWith: !function(...(!Node|string)),\n * remove: !function(),\n * }}\n */\nlet ChildNodeNativeMethods;\n\n/**\n * @param {!CustomElementInternals} internals\n * @param {!Object} destination\n * @param {!ChildNodeNativeMethods} builtIn\n */\nexport default function(internals, destination, builtIn) {\n /**\n * @param {!function(...(!Node|string))} builtInMethod\n * @return {!function(...(!Node|string))}\n */\n function beforeAfterPatch(builtInMethod) {\n return function(...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n * @type {!Array<!Node>}\n */\n const flattenedNodes = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n * @type {!Array<!Node>}\n */\n const connectedElements = [];\n\n for (var i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n builtInMethod.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n };\n }\n\n if (builtIn.before !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'before', beforeAfterPatch(builtIn.before));\n }\n\n if (builtIn.before !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'after', beforeAfterPatch(builtIn.after));\n }\n\n if (builtIn.replaceWith !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'replaceWith',\n /**\n * @param {...(!Node|string)} nodes\n */\n function(...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n * @type {!Array<!Node>}\n */\n const flattenedNodes = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n * @type {!Array<!Node>}\n */\n const connectedElements = [];\n\n for (var i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n const wasConnected = Utilities.isConnected(this);\n\n builtIn.replaceWith.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (wasConnected) {\n internals.disconnectTree(this);\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n });\n }\n\n if (builtIn.remove !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'remove',\n function() {\n const wasConnected = Utilities.isConnected(this);\n\n builtIn.remove.call(this);\n\n if (wasConnected) {\n internals.disconnectTree(this);\n }\n });\n }\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport CEState from '../CustomElementState.js';\nimport * as Utilities from '../Utilities.js';\n\nimport PatchParentNode from './Interface/ParentNode.js';\nimport PatchChildNode from './Interface/ChildNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n if (Native.Element_attachShadow) {\n Utilities.setPropertyUnchecked(Element.prototype, 'attachShadow',\n /**\n * @this {Element}\n * @param {!{mode: string}} init\n * @return {ShadowRoot}\n */\n function(init) {\n const shadowRoot = Native.Element_attachShadow.call(this, init);\n this.__CE_shadowRoot = shadowRoot;\n return shadowRoot;\n });\n }\n\n\n function patch_innerHTML(destination, baseDescriptor) {\n Object.defineProperty(destination, 'innerHTML', {\n enumerable: baseDescriptor.enumerable,\n configurable: true,\n get: baseDescriptor.get,\n set: /** @this {Element} */ function(htmlString) {\n const isConnected = Utilities.isConnected(this);\n\n // NOTE: In IE11, when using the native `innerHTML` setter, all nodes\n // that were previously descendants of the context element have all of\n // their children removed as part of the set - the entire subtree is\n // 'disassembled'. This work around walks the subtree *before* using the\n // native setter.\n /** @type {!Array<!Element>|undefined} */\n let removedElements = undefined;\n if (isConnected) {\n removedElements = [];\n Utilities.walkDeepDescendantElements(this, element => {\n if (element !== this) {\n removedElements.push(element);\n }\n });\n }\n\n baseDescriptor.set.call(this, htmlString);\n\n if (removedElements) {\n for (let i = 0; i < removedElements.length; i++) {\n const element = removedElements[i];\n if (element.__CE_state === CEState.custom) {\n internals.disconnectedCallback(element);\n }\n }\n }\n\n // Only create custom elements if this element's owner document is\n // associated with the registry.\n if (!this.ownerDocument.__CE_hasRegistry) {\n internals.patchTree(this);\n } else {\n internals.patchAndUpgradeTree(this);\n }\n return htmlString;\n },\n });\n }\n\n if (Native.Element_innerHTML && Native.Element_innerHTML.get) {\n patch_innerHTML(Element.prototype, Native.Element_innerHTML);\n } else if (Native.HTMLElement_innerHTML && Native.HTMLElement_innerHTML.get) {\n patch_innerHTML(HTMLElement.prototype, Native.HTMLElement_innerHTML);\n } else {\n\n internals.addPatch(function(element) {\n patch_innerHTML(element, {\n enumerable: true,\n configurable: true,\n // Implements getting `innerHTML` by performing an unpatched `cloneNode`\n // of the element and returning the resulting element's `innerHTML`.\n // TODO: Is this too expensive?\n get: /** @this {Element} */ function() {\n return Native.Node_cloneNode.call(this, true).innerHTML;\n },\n // Implements setting `innerHTML` by creating an unpatched element,\n // setting `innerHTML` of that element and replacing the target\n // element's children with those of the unpatched element.\n set: /** @this {Element} */ function(assignedValue) {\n // NOTE: re-route to `content` for `template` elements.\n // We need to do this because `template.appendChild` does not\n // route into `template.content`.\n const isTemplate = (this.localName === 'template');\n /** @type {!Node} */\n const content = isTemplate ? (/** @type {!HTMLTemplateElement} */\n (this)).content : this;\n /** @type {!Node} */\n const rawElement = Native.Document_createElement.call(document,\n this.localName);\n rawElement.innerHTML = assignedValue;\n\n while (content.childNodes.length > 0) {\n Native.Node_removeChild.call(content, content.childNodes[0]);\n }\n const container = isTemplate ? rawElement.content : rawElement;\n while (container.childNodes.length > 0) {\n Native.Node_appendChild.call(content, container.childNodes[0]);\n }\n },\n });\n });\n }\n\n\n Utilities.setPropertyUnchecked(Element.prototype, 'setAttribute',\n /**\n * @this {Element}\n * @param {string} name\n * @param {string} newValue\n */\n function(name, newValue) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_setAttribute.call(this, name, newValue);\n }\n\n const oldValue = Native.Element_getAttribute.call(this, name);\n Native.Element_setAttribute.call(this, name, newValue);\n newValue = Native.Element_getAttribute.call(this, name);\n internals.attributeChangedCallback(this, name, oldValue, newValue, null);\n });\n\n Utilities.setPropertyUnchecked(Element.prototype, 'setAttributeNS',\n /**\n * @this {Element}\n * @param {?string} namespace\n * @param {string} name\n * @param {string} newValue\n */\n function(namespace, name, newValue) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_setAttributeNS.call(this, namespace, name, newValue);\n }\n\n const oldValue = Native.Element_getAttributeNS.call(this, namespace, name);\n Native.Element_setAttributeNS.call(this, namespace, name, newValue);\n newValue = Native.Element_getAttributeNS.call(this, namespace, name);\n internals.attributeChangedCallback(this, name, oldValue, newValue, namespace);\n });\n\n Utilities.setPropertyUnchecked(Element.prototype, 'removeAttribute',\n /**\n * @this {Element}\n * @param {string} name\n */\n function(name) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_removeAttribute.call(this, name);\n }\n\n const oldValue = Native.Element_getAttribute.call(this, name);\n Native.Element_removeAttribute.call(this, name);\n if (oldValue !== null) {\n internals.attributeChangedCallback(this, name, oldValue, null, null);\n }\n });\n\n Utilities.setPropertyUnchecked(Element.prototype, 'removeAttributeNS',\n /**\n * @this {Element}\n * @param {?string} namespace\n * @param {string} name\n */\n function(namespace, name) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_removeAttributeNS.call(this, namespace, name);\n }\n\n const oldValue = Native.Element_getAttributeNS.call(this, namespace, name);\n Native.Element_removeAttributeNS.call(this, namespace, name);\n // In older browsers, `Element#getAttributeNS` may return the empty string\n // instead of null if the attribute does not exist. For details, see;\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttributeNS#Notes\n const newValue = Native.Element_getAttributeNS.call(this, namespace, name);\n if (oldValue !== newValue) {\n internals.attributeChangedCallback(this, name, oldValue, newValue, namespace);\n }\n });\n\n\n function patch_insertAdjacentElement(destination, baseMethod) {\n Utilities.setPropertyUnchecked(destination, 'insertAdjacentElement',\n /**\n * @this {Element}\n * @param {string} position\n * @param {!Element} element\n * @return {?Element}\n */\n function(position, element) {\n const wasConnected = Utilities.isConnected(element);\n const insertedElement = /** @type {!Element} */\n (baseMethod.call(this, position, element));\n\n if (wasConnected) {\n internals.disconnectTree(element);\n }\n\n if (Utilities.isConnected(insertedElement)) {\n internals.connectTree(element);\n }\n return insertedElement;\n });\n }\n\n if (Native.HTMLElement_insertAdjacentElement) {\n patch_insertAdjacentElement(HTMLElement.prototype, Native.HTMLElement_insertAdjacentElement);\n } else if (Native.Element_insertAdjacentElement) {\n patch_insertAdjacentElement(Element.prototype, Native.Element_insertAdjacentElement);\n } else {\n console.warn('Custom Elements: `Element#insertAdjacentElement` was not patched.');\n }\n\n\n function patch_insertAdjacentHTML(destination, baseMethod) {\n /**\n * Patches and upgrades all nodes which are siblings between `start`\n * (inclusive) and `end` (exclusive). If `end` is `null`, then all siblings\n * following `start` will be patched and upgraded.\n * @param {!Node} start\n * @param {?Node} end\n */\n function upgradeNodesInRange(start, end) {\n const nodes = [];\n for (let node = start; node !== end; node = node.nextSibling) {\n nodes.push(node);\n }\n for (let i = 0; i < nodes.length; i++) {\n internals.patchAndUpgradeTree(nodes[i]);\n }\n }\n\n Utilities.setPropertyUnchecked(destination, 'insertAdjacentHTML',\n /**\n * @this {Element}\n * @param {string} position\n * @param {string} text\n */\n function(position, text) {\n position = position.toLowerCase();\n\n if (position === \"beforebegin\") {\n const marker = this.previousSibling;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(\n /** @type {!Node} */ (marker || this.parentNode.firstChild), this);\n } else if (position === \"afterbegin\") {\n const marker = this.firstChild;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(/** @type {!Node} */ (this.firstChild), marker);\n } else if (position === \"beforeend\") {\n const marker = this.lastChild;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(marker || this.firstChild, null);\n } else if (position === \"afterend\") {\n const marker = this.nextSibling;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(/** @type {!Node} */ (this.nextSibling), marker);\n } else {\n throw new SyntaxError(`The value provided (${String(position)}) is ` +\n \"not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'.\");\n }\n });\n }\n\n if (Native.HTMLElement_insertAdjacentHTML) {\n patch_insertAdjacentHTML(HTMLElement.prototype, Native.HTMLElement_insertAdjacentHTML);\n } else if (Native.Element_insertAdjacentHTML) {\n patch_insertAdjacentHTML(Element.prototype, Native.Element_insertAdjacentHTML);\n } else {\n console.warn('Custom Elements: `Element#insertAdjacentHTML` was not patched.');\n }\n\n\n PatchParentNode(internals, Element.prototype, {\n prepend: Native.Element_prepend,\n append: Native.Element_append,\n });\n\n PatchChildNode(internals, Element.prototype, {\n before: Native.Element_before,\n after: Native.Element_after,\n replaceWith: Native.Element_replaceWith,\n remove: Native.Element_remove,\n });\n};\n","import CustomElementInternals from '../CustomElementInternals.js';\nimport Native from './Native.js';\nimport PatchParentNode from './Interface/ParentNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n PatchParentNode(internals, DocumentFragment.prototype, {\n prepend: Native.DocumentFragment_prepend,\n append: Native.DocumentFragment_append,\n });\n};\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n/*\nExtremely simple css parser. Intended to be not more than what we need\nand definitely not necessarily correct =).\n*/\n\n'use strict';\n\n/** @unrestricted */\nclass StyleNode {\n constructor() {\n /** @type {number} */\n this['start'] = 0;\n /** @type {number} */\n this['end'] = 0;\n /** @type {StyleNode} */\n this['previous'] = null;\n /** @type {StyleNode} */\n this['parent'] = null;\n /** @type {Array<StyleNode>} */\n this['rules'] = null;\n /** @type {string} */\n this['parsedCssText'] = '';\n /** @type {string} */\n this['cssText'] = '';\n /** @type {boolean} */\n this['atRule'] = false;\n /** @type {number} */\n this['type'] = 0;\n /** @type {string} */\n this['keyframesName'] = '';\n /** @type {string} */\n this['selector'] = '';\n /** @type {string} */\n this['parsedSelector'] = '';\n }\n}\n\nexport {StyleNode}\n\n// given a string of css, return a simple rule tree\n/**\n * @param {string} text\n * @return {StyleNode}\n */\nexport function parse(text) {\n text = clean(text);\n return parseCss(lex(text), text);\n}\n\n// remove stuff we don't care about that may hinder parsing\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction clean(cssText) {\n return cssText.replace(RX.comments, '').replace(RX.port, '');\n}\n\n// super simple {...} lexer that returns a node tree\n/**\n * @param {string} text\n * @return {StyleNode}\n */\nfunction lex(text) {\n let root = new StyleNode();\n root['start'] = 0;\n root['end'] = text.length\n let n = root;\n for (let i = 0, l = text.length; i < l; i++) {\n if (text[i] === OPEN_BRACE) {\n if (!n['rules']) {\n n['rules'] = [];\n }\n let p = n;\n let previous = p['rules'][p['rules'].length - 1] || null;\n n = new StyleNode();\n n['start'] = i + 1;\n n['parent'] = p;\n n['previous'] = previous;\n p['rules'].push(n);\n } else if (text[i] === CLOSE_BRACE) {\n n['end'] = i + 1;\n n = n['parent'] || root;\n }\n }\n return root;\n}\n\n// add selectors/cssText to node tree\n/**\n * @param {StyleNode} node\n * @param {string} text\n * @return {StyleNode}\n */\nfunction parseCss(node, text) {\n let t = text.substring(node['start'], node['end'] - 1);\n node['parsedCssText'] = node['cssText'] = t.trim();\n if (node['parent']) {\n let ss = node['previous'] ? node['previous']['end'] : node['parent']['start'];\n t = text.substring(ss, node['start'] - 1);\n t = _expandUnicodeEscapes(t);\n t = t.replace(RX.multipleSpaces, ' ');\n // TODO(sorvell): ad hoc; make selector include only after last ;\n // helps with mixin syntax\n t = t.substring(t.lastIndexOf(';') + 1);\n let s = node['parsedSelector'] = node['selector'] = t.trim();\n node['atRule'] = (s.indexOf(AT_START) === 0);\n // note, support a subset of rule types...\n if (node['atRule']) {\n if (s.indexOf(MEDIA_START) === 0) {\n node['type'] = types.MEDIA_RULE;\n } else if (s.match(RX.keyframesRule)) {\n node['type'] = types.KEYFRAMES_RULE;\n node['keyframesName'] =\n node['selector'].split(RX.multipleSpaces).pop();\n }\n } else {\n if (s.indexOf(VAR_START) === 0) {\n node['type'] = types.MIXIN_RULE;\n } else {\n node['type'] = types.STYLE_RULE;\n }\n }\n }\n let r$ = node['rules'];\n if (r$) {\n for (let i = 0, l = r$.length, r;\n (i < l) && (r = r$[i]); i++) {\n parseCss(r, text);\n }\n }\n return node;\n}\n\n/**\n * conversion of sort unicode escapes with spaces like `\\33 ` (and longer) into\n * expanded form that doesn't require trailing space `\\000033`\n * @param {string} s\n * @return {string}\n */\nfunction _expandUnicodeEscapes(s) {\n return s.replace(/\\\\([0-9a-f]{1,6})\\s/gi, function() {\n let code = arguments[1],\n repeat = 6 - code.length;\n while (repeat--) {\n code = '0' + code;\n }\n return '\\\\' + code;\n });\n}\n\n/**\n * stringify parsed css.\n * @param {StyleNode} node\n * @param {boolean=} preserveProperties\n * @param {string=} text\n * @return {string}\n */\nexport function stringify(node, preserveProperties, text = '') {\n // calc rule cssText\n let cssText = '';\n if (node['cssText'] || node['rules']) {\n let r$ = node['rules'];\n if (r$ && !_hasMixinRules(r$)) {\n for (let i = 0, l = r$.length, r;\n (i < l) && (r = r$[i]); i++) {\n cssText = stringify(r, preserveProperties, cssText);\n }\n } else {\n cssText = preserveProperties ? node['cssText'] :\n removeCustomProps(node['cssText']);\n cssText = cssText.trim();\n if (cssText) {\n cssText = ' ' + cssText + '\\n';\n }\n }\n }\n // emit rule if there is cssText\n if (cssText) {\n if (node['selector']) {\n text += node['selector'] + ' ' + OPEN_BRACE + '\\n';\n }\n text += cssText;\n if (node['selector']) {\n text += CLOSE_BRACE + '\\n\\n';\n }\n }\n return text;\n}\n\n/**\n * @param {Array<StyleNode>} rules\n * @return {boolean}\n */\nfunction _hasMixinRules(rules) {\n let r = rules[0];\n return Boolean(r) && Boolean(r['selector']) && r['selector'].indexOf(VAR_START) === 0;\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomProps(cssText) {\n cssText = removeCustomPropAssignment(cssText);\n return removeCustomPropApply(cssText);\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nexport function removeCustomPropAssignment(cssText) {\n return cssText\n .replace(RX.customProp, '')\n .replace(RX.mixinProp, '');\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomPropApply(cssText) {\n return cssText\n .replace(RX.mixinApply, '')\n .replace(RX.varApply, '');\n}\n\n/** @enum {number} */\nexport const types = {\n STYLE_RULE: 1,\n KEYFRAMES_RULE: 7,\n MEDIA_RULE: 4,\n MIXIN_RULE: 1000\n}\n\nconst OPEN_BRACE = '{';\nconst CLOSE_BRACE = '}';\n\n// helper regexp's\nconst RX = {\n comments: /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//gim,\n port: /@import[^;]*;/gim,\n customProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\\n]|$)/gim,\n mixinProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\\n]|$)?/gim,\n mixinApply: /@apply\\s*\\(?[^);]*\\)?\\s*(?:[;\\n]|$)?/gim,\n varApply: /[^;:]*?:[^;]*?var\\([^;]*\\)(?:[;\\n]|$)?/gim,\n keyframesRule: /^@[^\\s]*keyframes/,\n multipleSpaces: /\\s+/g\n}\n\nconst VAR_START = '--';\nconst MEDIA_START = '@media';\nconst AT_START = '@';\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nexport const nativeShadow = !(window['ShadyDOM'] && window['ShadyDOM']['inUse']);\nlet nativeCssVariables_;\n\n/**\n * @param {(ShadyCSSOptions | ShadyCSSInterface)=} settings\n */\nfunction calcCssVariables(settings) {\n if (settings && settings['shimcssproperties']) {\n nativeCssVariables_ = false;\n } else {\n // chrome 49 has semi-working css vars, check if box-shadow works\n // safari 9.1 has a recalc bug: https://bugs.webkit.org/show_bug.cgi?id=155782\n // However, shim css custom properties are only supported with ShadyDOM enabled,\n // so fall back on native if we do not detect ShadyDOM\n // Edge 15: custom properties used in ::before and ::after will also be used in the parent element\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12414257/\n nativeCssVariables_ = nativeShadow || Boolean(!navigator.userAgent.match(/AppleWebKit\\/601|Edge\\/15/) &&\n window.CSS && CSS.supports && CSS.supports('box-shadow', '0 0 0 var(--foo)'));\n }\n}\n\nif (window.ShadyCSS && window.ShadyCSS.nativeCss !== undefined) {\n nativeCssVariables_ = window.ShadyCSS.nativeCss;\n} else if (window.ShadyCSS) {\n calcCssVariables(window.ShadyCSS);\n // reset window variable to let ShadyCSS API take its place\n window.ShadyCSS = undefined;\n} else {\n calcCssVariables(window['WebComponents'] && window['WebComponents']['flags']);\n}\n\n// Hack for type error under new type inference which doesn't like that\n// nativeCssVariables is updated in a function and assigns the type\n// `function(): ?` instead of `boolean`.\nexport const nativeCssVariables = /** @type {boolean} */(nativeCssVariables_);\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nexport const VAR_ASSIGN = /(?:^|[;\\s{]\\s*)(--[\\w-]*?)\\s*:\\s*(?:((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};{])+)|\\{([^}]*)\\}(?:(?=[;\\s}])|$))/gi;\nexport const MIXIN_MATCH = /(?:^|\\W+)@apply\\s*\\(?([^);\\n]*)\\)?/gi;\nexport const VAR_CONSUMED = /(--[\\w-]+)\\s*([:,;)]|$)/gi;\nexport const ANIMATION_MATCH = /(animation\\s*:)|(animation-name\\s*:)/;\nexport const MEDIA_MATCH = /@media\\s(.*)/;\nexport const IS_VAR = /^--/;\nexport const BRACKETED = /\\{[^}]*\\}/g;\nexport const HOST_PREFIX = '(?:^|[^.#[:])';\nexport const HOST_SUFFIX = '($|[.:[\\\\s>+~])';\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/** @type {!Set<string>} */\nconst styleTextSet = new Set();\n\nexport const scopingAttribute = 'shady-unscoped';\n\n/**\n * Add a specifically-marked style to the document directly, and only one copy of that style.\n *\n * @param {!HTMLStyleElement} style\n * @return {undefined}\n */\nexport function processUnscopedStyle(style) {\n const text = style.textContent;\n if (!styleTextSet.has(text)) {\n styleTextSet.add(text);\n const newStyle = style.cloneNode(true);\n document.head.appendChild(newStyle);\n }\n}\n\n/**\n * Check if a style is supposed to be unscoped\n * @param {!HTMLStyleElement} style\n * @return {boolean} true if the style has the unscoping attribute\n */\nexport function isUnscopedStyle(style) {\n return style.hasAttribute(scopingAttribute);\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {nativeShadow, nativeCssVariables} from './style-settings.js';\nimport {parse, stringify, types, StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport {MEDIA_MATCH} from './common-regex.js';\nimport {processUnscopedStyle, isUnscopedStyle} from './unscoped-style-handler.js';\n\n/**\n * @param {string|StyleNode} rules\n * @param {function(StyleNode)=} callback\n * @return {string}\n */\nexport function toCssText (rules, callback) {\n if (!rules) {\n return '';\n }\n if (typeof rules === 'string') {\n rules = parse(rules);\n }\n if (callback) {\n forEachRule(rules, callback);\n }\n return stringify(rules, nativeCssVariables);\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @return {StyleNode}\n */\nexport function rulesForStyle(style) {\n if (!style['__cssRules'] && style.textContent) {\n style['__cssRules'] = parse(style.textContent);\n }\n return style['__cssRules'] || null;\n}\n\n// Tests if a rule is a keyframes selector, which looks almost exactly\n// like a normal selector but is not (it has nothing to do with scoping\n// for example).\n/**\n * @param {StyleNode} rule\n * @return {boolean}\n */\nexport function isKeyframesSelector(rule) {\n return Boolean(rule['parent']) &&\n rule['parent']['type'] === types.KEYFRAMES_RULE;\n}\n\n/**\n * @param {StyleNode} node\n * @param {Function=} styleRuleCallback\n * @param {Function=} keyframesRuleCallback\n * @param {boolean=} onlyActiveRules\n */\nexport function forEachRule(node, styleRuleCallback, keyframesRuleCallback, onlyActiveRules) {\n if (!node) {\n return;\n }\n let skipRules = false;\n let type = node['type'];\n if (onlyActiveRules) {\n if (type === types.MEDIA_RULE) {\n let matchMedia = node['selector'].match(MEDIA_MATCH);\n if (matchMedia) {\n // if rule is a non matching @media rule, skip subrules\n if (!window.matchMedia(matchMedia[1]).matches) {\n skipRules = true;\n }\n }\n }\n }\n if (type === types.STYLE_RULE) {\n styleRuleCallback(node);\n } else if (keyframesRuleCallback &&\n type === types.KEYFRAMES_RULE) {\n keyframesRuleCallback(node);\n } else if (type === types.MIXIN_RULE) {\n skipRules = true;\n }\n let r$ = node['rules'];\n if (r$ && !skipRules) {\n for (let i=0, l=r$.length, r; (i<l) && (r=r$[i]); i++) {\n forEachRule(r, styleRuleCallback, keyframesRuleCallback, onlyActiveRules);\n }\n }\n}\n\n// add a string of cssText to the document.\n/**\n * @param {string} cssText\n * @param {string} moniker\n * @param {Node} target\n * @param {Node} contextNode\n * @return {HTMLStyleElement}\n */\nexport function applyCss(cssText, moniker, target, contextNode) {\n let style = createScopeStyle(cssText, moniker);\n applyStyle(style, target, contextNode);\n return style;\n}\n\n/**\n * @param {string} cssText\n * @param {string} moniker\n * @return {HTMLStyleElement}\n */\nexport function createScopeStyle(cssText, moniker) {\n let style = /** @type {HTMLStyleElement} */(document.createElement('style'));\n if (moniker) {\n style.setAttribute('scope', moniker);\n }\n style.textContent = cssText;\n return style;\n}\n\n/**\n * Track the position of the last added style for placing placeholders\n * @type {Node}\n */\nlet lastHeadApplyNode = null;\n\n// insert a comment node as a styling position placeholder.\n/**\n * @param {string} moniker\n * @return {!Comment}\n */\nexport function applyStylePlaceHolder(moniker) {\n let placeHolder = document.createComment(' Shady DOM styles for ' +\n moniker + ' ');\n let after = lastHeadApplyNode ?\n lastHeadApplyNode['nextSibling'] : null;\n let scope = document.head;\n scope.insertBefore(placeHolder, after || scope.firstChild);\n lastHeadApplyNode = placeHolder;\n return placeHolder;\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @param {?Node} target\n * @param {?Node} contextNode\n */\nexport function applyStyle(style, target, contextNode) {\n target = target || document.head;\n let after = (contextNode && contextNode.nextSibling) ||\n target.firstChild;\n target.insertBefore(style, after);\n if (!lastHeadApplyNode) {\n lastHeadApplyNode = style;\n } else {\n // only update lastHeadApplyNode if the new style is inserted after the old lastHeadApplyNode\n let position = style.compareDocumentPosition(lastHeadApplyNode);\n if (position === Node.DOCUMENT_POSITION_PRECEDING) {\n lastHeadApplyNode = style;\n }\n }\n}\n\n/**\n * @param {string} buildType\n * @return {boolean}\n */\nexport function isTargetedBuild(buildType) {\n return nativeShadow ? buildType === 'shadow' : buildType === 'shady';\n}\n\n/**\n * @param {Element} element\n * @return {?string}\n */\nexport function getCssBuildType(element) {\n return element.getAttribute('css-build');\n}\n\n/**\n * Walk from text[start] matching parens and\n * returns position of the outer end paren\n * @param {string} text\n * @param {number} start\n * @return {number}\n */\nfunction findMatchingParen(text, start) {\n let level = 0;\n for (let i=start, l=text.length; i < l; i++) {\n if (text[i] === '(') {\n level++;\n } else if (text[i] === ')') {\n if (--level === 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\n/**\n * @param {string} str\n * @param {function(string, string, string, string)} callback\n */\nexport function processVariableAndFallback(str, callback) {\n // find 'var('\n let start = str.indexOf('var(');\n if (start === -1) {\n // no var?, everything is prefix\n return callback(str, '', '', '');\n }\n //${prefix}var(${inner})${suffix}\n let end = findMatchingParen(str, start + 3);\n let inner = str.substring(start + 4, end);\n let prefix = str.substring(0, start);\n // suffix may have other variables\n let suffix = processVariableAndFallback(str.substring(end + 1), callback);\n let comma = inner.indexOf(',');\n // value and fallback args should be trimmed to match in property lookup\n if (comma === -1) {\n // variable, no fallback\n return callback(prefix, inner.trim(), '', suffix);\n }\n // var(${value},${fallback})\n let value = inner.substring(0, comma).trim();\n let fallback = inner.substring(comma + 1).trim();\n return callback(prefix, value, fallback, suffix);\n}\n\n/**\n * @param {Element} element\n * @param {string} value\n */\nexport function setElementClassRaw(element, value) {\n // use native setAttribute provided by ShadyDOM when setAttribute is patched\n if (nativeShadow) {\n element.setAttribute('class', value);\n } else {\n window['ShadyDOM']['nativeMethods']['setAttribute'].call(element, 'class', value);\n }\n}\n\n/**\n * @param {Element | {is: string, extends: string}} element\n * @return {{is: string, typeExtension: string}}\n */\nexport function getIsExtends(element) {\n let localName = element['localName'];\n let is = '', typeExtension = '';\n /*\n NOTE: technically, this can be wrong for certain svg elements\n with `-` in the name like `<font-face>`\n */\n if (localName) {\n if (localName.indexOf('-') > -1) {\n is = localName;\n } else {\n typeExtension = localName;\n is = (element.getAttribute && element.getAttribute('is')) || '';\n }\n } else {\n is = /** @type {?} */(element).is;\n typeExtension = /** @type {?} */(element).extends;\n }\n return {is, typeExtension};\n}\n\n/**\n * @param {Element|DocumentFragment} element\n * @return {string}\n */\nexport function gatherStyleText(element) {\n /** @type {!Array<string>} */\n const styleTextParts = [];\n const styles = /** @type {!NodeList<!HTMLStyleElement>} */(element.querySelectorAll('style'));\n for (let i = 0; i < styles.length; i++) {\n const style = styles[i];\n if (isUnscopedStyle(style)) {\n if (!nativeShadow) {\n processUnscopedStyle(style);\n style.parentNode.removeChild(style);\n }\n } else {\n styleTextParts.push(style.textContent);\n style.parentNode.removeChild(style);\n }\n }\n return styleTextParts.join('').trim();\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport * as StyleUtil from './style-util.js';\nimport {nativeShadow} from './style-settings.js';\n\n/* Transforms ShadowDOM styling into ShadyDOM styling\n\n* scoping:\n\n * elements in scope get scoping selector class=\"x-foo-scope\"\n * selectors re-written as follows:\n\n div button -> div.x-foo-scope button.x-foo-scope\n\n* :host -> scopeName\n\n* :host(...) -> scopeName...\n\n* ::slotted(...) -> scopeName > ...\n\n* ...:dir(ltr|rtl) -> [dir=\"ltr|rtl\"] ..., ...[dir=\"ltr|rtl\"]\n\n* :host(:dir[rtl]) -> scopeName:dir(rtl) -> [dir=\"rtl\"] scopeName, scopeName[dir=\"rtl\"]\n\n*/\nconst SCOPE_NAME = 'style-scope';\n\nclass StyleTransformer {\n get SCOPE_NAME() {\n return SCOPE_NAME;\n }\n /**\n * Given a node and scope name, add a scoping class to each node\n * in the tree. This facilitates transforming css into scoped rules.\n * @param {?} node\n * @param {?} scope\n * @param {?=} shouldRemoveScope\n */\n dom(node, scope, shouldRemoveScope) {\n // one time optimization to skip scoping...\n if (node['__styleScoped']) {\n node['__styleScoped'] = null;\n } else {\n this._transformDom(node, scope || '', shouldRemoveScope);\n }\n }\n\n _transformDom(node, selector, shouldRemoveScope) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n this.element(node, selector, shouldRemoveScope);\n }\n let c$ = (node.localName === 'template') ?\n (node.content || node._content).childNodes :\n node.children || node.childNodes;\n if (c$) {\n for (let i=0; i<c$.length; i++) {\n this._transformDom(c$[i], selector, shouldRemoveScope);\n }\n }\n }\n /**\n * @param {?} element\n * @param {?} scope\n * @param {?=} shouldRemoveScope\n */\n element(element, scope, shouldRemoveScope) {\n // note: if using classes, we add both the general 'style-scope' class\n // as well as the specific scope. This enables easy filtering of all\n // `style-scope` elements\n if (scope) {\n // note: svg on IE does not have classList so fallback to class\n if (element.classList) {\n if (shouldRemoveScope) {\n element.classList.remove(SCOPE_NAME);\n element.classList.remove(scope);\n } else {\n element.classList.add(SCOPE_NAME);\n element.classList.add(scope);\n }\n } else if (element.getAttribute) {\n let c = element.getAttribute(CLASS);\n if (shouldRemoveScope) {\n if (c) {\n let newValue = c.replace(SCOPE_NAME, '').replace(scope, '');\n StyleUtil.setElementClassRaw(element, newValue);\n }\n } else {\n let newValue = (c ? c + ' ' : '') + SCOPE_NAME + ' ' + scope;\n StyleUtil.setElementClassRaw(element, newValue);\n }\n }\n }\n }\n\n /**\n * @param {?} element\n * @param {?} styleRules\n * @param {?=} callback\n */\n elementStyles(element, styleRules, callback) {\n let cssBuildType = element['__cssBuild'];\n // no need to shim selectors if settings.useNativeShadow, also\n // a shady css build will already have transformed selectors\n // NOTE: This method may be called as part of static or property shimming.\n // When there is a targeted build it will not be called for static shimming,\n // but when the property shim is used it is called and should opt out of\n // static shimming work when a proper build exists.\n let cssText = '';\n if (nativeShadow || cssBuildType === 'shady') {\n cssText = StyleUtil.toCssText(styleRules, callback);\n } else {\n let {is, typeExtension} = StyleUtil.getIsExtends(element);\n cssText = this.css(styleRules, is, typeExtension, callback) + '\\n\\n';\n }\n return cssText.trim();\n }\n\n // Given a string of cssText and a scoping string (scope), returns\n // a string of scoped css where each selector is transformed to include\n // a class created from the scope. ShadowDOM selectors are also transformed\n // (e.g. :host) to use the scoping selector.\n css(rules, scope, ext, callback) {\n let hostScope = this._calcHostScope(scope, ext);\n scope = this._calcElementScope(scope);\n let self = this;\n return StyleUtil.toCssText(rules, function(/** StyleNode */rule) {\n if (!rule.isScoped) {\n self.rule(rule, scope, hostScope);\n rule.isScoped = true;\n }\n if (callback) {\n callback(rule, scope, hostScope);\n }\n });\n }\n\n _calcElementScope(scope) {\n if (scope) {\n return CSS_CLASS_PREFIX + scope;\n } else {\n return '';\n }\n }\n\n _calcHostScope(scope, ext) {\n return ext ? `[is=${scope}]` : scope;\n }\n\n rule(rule, scope, hostScope) {\n this._transformRule(rule, this._transformComplexSelector,\n scope, hostScope);\n }\n\n /**\n * transforms a css rule to a scoped rule.\n *\n * @param {StyleNode} rule\n * @param {Function} transformer\n * @param {string=} scope\n * @param {string=} hostScope\n */\n _transformRule(rule, transformer, scope, hostScope) {\n // NOTE: save transformedSelector for subsequent matching of elements\n // against selectors (e.g. when calculating style properties)\n rule['selector'] = rule.transformedSelector =\n this._transformRuleCss(rule, transformer, scope, hostScope);\n }\n\n /**\n * @param {StyleNode} rule\n * @param {Function} transformer\n * @param {string=} scope\n * @param {string=} hostScope\n */\n _transformRuleCss(rule, transformer, scope, hostScope) {\n let p$ = rule['selector'].split(COMPLEX_SELECTOR_SEP);\n // we want to skip transformation of rules that appear in keyframes,\n // because they are keyframe selectors, not element selectors.\n if (!StyleUtil.isKeyframesSelector(rule)) {\n for (let i=0, l=p$.length, p; (i<l) && (p=p$[i]); i++) {\n p$[i] = transformer.call(this, p, scope, hostScope);\n }\n }\n return p$.join(COMPLEX_SELECTOR_SEP);\n }\n\n /**\n * @param {string} selector\n * @return {string}\n */\n _twiddleNthPlus(selector) {\n return selector.replace(NTH, (m, type, inside) => {\n if (inside.indexOf('+') > -1) {\n inside = inside.replace(/\\+/g, '___');\n } else if (inside.indexOf('___') > -1) {\n inside = inside.replace(/___/g, '+');\n }\n return `:${type}(${inside})`;\n });\n }\n\n/**\n * @param {string} selector\n * @param {string} scope\n * @param {string=} hostScope\n */\n _transformComplexSelector(selector, scope, hostScope) {\n let stop = false;\n selector = selector.trim();\n // Remove spaces inside of selectors like `:nth-of-type` because it confuses SIMPLE_SELECTOR_SEP\n let isNth = NTH.test(selector);\n if (isNth) {\n selector = selector.replace(NTH, (m, type, inner) => `:${type}(${inner.replace(/\\s/g, '')})`)\n selector = this._twiddleNthPlus(selector);\n }\n selector = selector.replace(SLOTTED_START, `${HOST} $1`);\n selector = selector.replace(SIMPLE_SELECTOR_SEP, (m, c, s) => {\n if (!stop) {\n let info = this._transformCompoundSelector(s, c, scope, hostScope);\n stop = stop || info.stop;\n c = info.combinator;\n s = info.value;\n }\n return c + s;\n });\n if (isNth) {\n selector = this._twiddleNthPlus(selector);\n }\n return selector;\n }\n\n _transformCompoundSelector(selector, combinator, scope, hostScope) {\n // replace :host with host scoping class\n let slottedIndex = selector.indexOf(SLOTTED);\n if (selector.indexOf(HOST) >= 0) {\n selector = this._transformHostSelector(selector, hostScope);\n // replace other selectors with scoping class\n } else if (slottedIndex !== 0) {\n selector = scope ? this._transformSimpleSelector(selector, scope) :\n selector;\n }\n // mark ::slotted() scope jump to replace with descendant selector + arg\n // also ignore left-side combinator\n let slotted = false;\n if (slottedIndex >= 0) {\n combinator = '';\n slotted = true;\n }\n // process scope jumping selectors up to the scope jump and then stop\n let stop;\n if (slotted) {\n stop = true;\n if (slotted) {\n // .zonk ::slotted(.foo) -> .zonk.scope > .foo\n selector = selector.replace(SLOTTED_PAREN, (m, paren) => ` > ${paren}`);\n }\n }\n selector = selector.replace(DIR_PAREN, (m, before, dir) =>\n `[dir=\"${dir}\"] ${before}, ${before}[dir=\"${dir}\"]`);\n return {value: selector, combinator, stop};\n }\n\n _transformSimpleSelector(selector, scope) {\n let p$ = selector.split(PSEUDO_PREFIX);\n p$[0] += scope;\n return p$.join(PSEUDO_PREFIX);\n }\n\n // :host(...) -> scopeName...\n _transformHostSelector(selector, hostScope) {\n let m = selector.match(HOST_PAREN);\n let paren = m && m[2].trim() || '';\n if (paren) {\n if (!paren[0].match(SIMPLE_SELECTOR_PREFIX)) {\n // paren starts with a type selector\n let typeSelector = paren.split(SIMPLE_SELECTOR_PREFIX)[0];\n // if the type selector is our hostScope then avoid pre-pending it\n if (typeSelector === hostScope) {\n return paren;\n // otherwise, this selector should not match in this scope so\n // output a bogus selector.\n } else {\n return SELECTOR_NO_MATCH;\n }\n } else {\n // make sure to do a replace here to catch selectors like:\n // `:host(.foo)::before`\n return selector.replace(HOST_PAREN, function(m, host, paren) {\n return hostScope + paren;\n });\n }\n // if no paren, do a straight :host replacement.\n // TODO(sorvell): this should not strictly be necessary but\n // it's needed to maintain support for `:host[foo]` type selectors\n // which have been improperly used under Shady DOM. This should be\n // deprecated.\n } else {\n return selector.replace(HOST, hostScope);\n }\n }\n\n /**\n * @param {StyleNode} rule\n */\n documentRule(rule) {\n // reset selector in case this is redone.\n rule['selector'] = rule['parsedSelector'];\n this.normalizeRootSelector(rule);\n this._transformRule(rule, this._transformDocumentSelector);\n }\n\n /**\n * @param {StyleNode} rule\n */\n normalizeRootSelector(rule) {\n if (rule['selector'] === ROOT) {\n rule['selector'] = 'html';\n }\n }\n\n/**\n * @param {string} selector\n */\n _transformDocumentSelector(selector) {\n return selector.match(SLOTTED) ?\n this._transformComplexSelector(selector, SCOPE_DOC_SELECTOR) :\n this._transformSimpleSelector(selector.trim(), SCOPE_DOC_SELECTOR);\n }\n}\n\nlet NTH = /:(nth[-\\w]+)\\(([^)]+)\\)/;\nlet SCOPE_DOC_SELECTOR = `:not(.${SCOPE_NAME})`;\nlet COMPLEX_SELECTOR_SEP = ',';\nlet SIMPLE_SELECTOR_SEP = /(^|[\\s>+~]+)((?:\\[.+?\\]|[^\\s>+~=[])+)/g;\nlet SIMPLE_SELECTOR_PREFIX = /[[.:#*]/;\nlet HOST = ':host';\nlet ROOT = ':root';\nlet SLOTTED = '::slotted';\nlet SLOTTED_START = new RegExp(`^(${SLOTTED})`);\n// NOTE: this supports 1 nested () pair for things like\n// :host(:not([selected]), more general support requires\n// parsing which seems like overkill\nlet HOST_PAREN = /(:host)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;\n// similar to HOST_PAREN\nlet SLOTTED_PAREN = /(?:::slotted)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;\nlet DIR_PAREN = /(.*):dir\\((?:(ltr|rtl))\\)/;\nlet CSS_CLASS_PREFIX = '.';\nlet PSEUDO_PREFIX = ':';\nlet CLASS = 'class';\nlet SELECTOR_NO_MATCH = 'should_not_match';\n\nexport default new StyleTransformer()\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\n\n/** @const {string} */\nconst infoKey = '__styleInfo';\n\nexport default class StyleInfo {\n /**\n * @param {Element} node\n * @return {StyleInfo}\n */\n static get(node) {\n if (node) {\n return node[infoKey];\n } else {\n return null;\n }\n }\n /**\n * @param {!Element} node\n * @param {StyleInfo} styleInfo\n * @return {StyleInfo}\n */\n static set(node, styleInfo) {\n node[infoKey] = styleInfo;\n return styleInfo;\n }\n /**\n * @param {StyleNode} ast\n * @param {Node=} placeholder\n * @param {Array<string>=} ownStylePropertyNames\n * @param {string=} elementName\n * @param {string=} typeExtension\n * @param {string=} cssBuild\n */\n constructor(ast, placeholder, ownStylePropertyNames, elementName, typeExtension, cssBuild) {\n /** @type {StyleNode} */\n this.styleRules = ast || null;\n /** @type {Node} */\n this.placeholder = placeholder || null;\n /** @type {!Array<string>} */\n this.ownStylePropertyNames = ownStylePropertyNames || [];\n /** @type {Array<Object>} */\n this.overrideStyleProperties = null;\n /** @type {string} */\n this.elementName = elementName || '';\n /** @type {string} */\n this.cssBuild = cssBuild || '';\n /** @type {string} */\n this.typeExtension = typeExtension || '';\n /** @type {Object<string, string>} */\n this.styleProperties = null;\n /** @type {?string} */\n this.scopeSelector = null;\n /** @type {HTMLStyleElement} */\n this.customStyle = null;\n }\n _getStyleRules() {\n return this.styleRules;\n }\n}\n\nStyleInfo.prototype['_getStyleRules'] = StyleInfo.prototype._getStyleRules;","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {removeCustomPropAssignment, StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport {nativeShadow} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport * as StyleUtil from './style-util.js';\nimport * as RX from './common-regex.js';\nimport StyleInfo from './style-info.js';\n\n// TODO: dedupe with shady\n/**\n * @param {string} selector\n * @return {boolean}\n * @this {Element}\n */\nconst matchesSelector = function(selector) {\n const method = this.matches || this.matchesSelector ||\n this.mozMatchesSelector || this.msMatchesSelector ||\n this.oMatchesSelector || this.webkitMatchesSelector;\n return method && method.call(this, selector);\n};\n\nconst IS_IE = navigator.userAgent.match('Trident');\n\nconst XSCOPE_NAME = 'x-scope';\n\nclass StyleProperties {\n get XSCOPE_NAME() {\n return XSCOPE_NAME;\n }\n/**\n * decorates styles with rule info and returns an array of used style property names\n *\n * @param {StyleNode} rules\n * @return {Array<string>}\n */\n decorateStyles(rules) {\n let self = this, props = {}, keyframes = [], ruleIndex = 0;\n StyleUtil.forEachRule(rules, function(rule) {\n self.decorateRule(rule);\n // mark in-order position of ast rule in styles block, used for cache key\n rule.index = ruleIndex++;\n self.collectPropertiesInCssText(rule.propertyInfo.cssText, props);\n }, function onKeyframesRule(rule) {\n keyframes.push(rule);\n });\n // Cache all found keyframes rules for later reference:\n rules._keyframes = keyframes;\n // return this list of property names *consumes* in these styles.\n let names = [];\n for (let i in props) {\n names.push(i);\n }\n return names;\n }\n\n // decorate a single rule with property info\n decorateRule(rule) {\n if (rule.propertyInfo) {\n return rule.propertyInfo;\n }\n let info = {}, properties = {};\n let hasProperties = this.collectProperties(rule, properties);\n if (hasProperties) {\n info.properties = properties;\n // TODO(sorvell): workaround parser seeing mixins as additional rules\n rule['rules'] = null;\n }\n info.cssText = this.collectCssText(rule);\n rule.propertyInfo = info;\n return info;\n }\n\n // collects the custom properties from a rule's cssText\n collectProperties(rule, properties) {\n let info = rule.propertyInfo;\n if (info) {\n if (info.properties) {\n Object.assign(properties, info.properties);\n return true;\n }\n } else {\n let m, rx = RX.VAR_ASSIGN;\n let cssText = rule['parsedCssText'];\n let value;\n let any;\n while ((m = rx.exec(cssText))) {\n // note: group 2 is var, 3 is mixin\n value = (m[2] || m[3]).trim();\n // value of 'inherit' or 'unset' is equivalent to not setting the property here\n if (value !== 'inherit' || value !== 'unset') {\n properties[m[1].trim()] = value;\n }\n any = true;\n }\n return any;\n }\n\n }\n\n // returns cssText of properties that consume variables/mixins\n collectCssText(rule) {\n return this.collectConsumingCssText(rule['parsedCssText']);\n }\n\n // NOTE: we support consumption inside mixin assignment\n // but not production, so strip out {...}\n collectConsumingCssText(cssText) {\n return cssText.replace(RX.BRACKETED, '')\n .replace(RX.VAR_ASSIGN, '');\n }\n\n collectPropertiesInCssText(cssText, props) {\n let m;\n while ((m = RX.VAR_CONSUMED.exec(cssText))) {\n let name = m[1];\n // This regex catches all variable names, and following non-whitespace char\n // If next char is not ':', then variable is a consumer\n if (m[2] !== ':') {\n props[name] = true;\n }\n }\n }\n\n // turns custom properties into realized values.\n reify(props) {\n // big perf optimization here: reify only *own* properties\n // since this object has __proto__ of the element's scope properties\n let names = Object.getOwnPropertyNames(props);\n for (let i=0, n; i < names.length; i++) {\n n = names[i];\n props[n] = this.valueForProperty(props[n], props);\n }\n }\n\n // given a property value, returns the reified value\n // a property value may be:\n // (1) a literal value like: red or 5px;\n // (2) a variable value like: var(--a), var(--a, red), or var(--a, --b) or\n // var(--a, var(--b));\n // (3) a literal mixin value like { properties }. Each of these properties\n // can have values that are: (a) literal, (b) variables, (c) @apply mixins.\n valueForProperty(property, props) {\n // case (1) default\n // case (3) defines a mixin and we have to reify the internals\n if (property) {\n if (property.indexOf(';') >=0) {\n property = this.valueForProperties(property, props);\n } else {\n // case (2) variable\n let self = this;\n let fn = function(prefix, value, fallback, suffix) {\n if (!value) {\n return prefix + suffix;\n }\n let propertyValue = self.valueForProperty(props[value], props);\n // if value is \"initial\", then the variable should be treated as unset\n if (!propertyValue || propertyValue === 'initial') {\n // fallback may be --a or var(--a) or literal\n propertyValue = self.valueForProperty(props[fallback] || fallback, props) ||\n fallback;\n } else if (propertyValue === 'apply-shim-inherit') {\n // CSS build will replace `inherit` with `apply-shim-inherit`\n // for use with native css variables.\n // Since we have full control, we can use `inherit` directly.\n propertyValue = 'inherit';\n }\n return prefix + (propertyValue || '') + suffix;\n };\n property = StyleUtil.processVariableAndFallback(property, fn);\n }\n }\n return property && property.trim() || '';\n }\n\n // note: we do not yet support mixin within mixin\n valueForProperties(property, props) {\n let parts = property.split(';');\n for (let i=0, p, m; i<parts.length; i++) {\n if ((p = parts[i])) {\n RX.MIXIN_MATCH.lastIndex = 0;\n m = RX.MIXIN_MATCH.exec(p);\n if (m) {\n p = this.valueForProperty(props[m[1]], props);\n } else {\n let colon = p.indexOf(':');\n if (colon !== -1) {\n let pp = p.substring(colon);\n pp = pp.trim();\n pp = this.valueForProperty(pp, props) || pp;\n p = p.substring(0, colon) + pp;\n }\n }\n parts[i] = (p && p.lastIndexOf(';') === p.length - 1) ?\n // strip trailing ;\n p.slice(0, -1) :\n p || '';\n }\n }\n return parts.join(';');\n }\n\n applyProperties(rule, props) {\n let output = '';\n // dynamically added sheets may not be decorated so ensure they are.\n if (!rule.propertyInfo) {\n this.decorateRule(rule);\n }\n if (rule.propertyInfo.cssText) {\n output = this.valueForProperties(rule.propertyInfo.cssText, props);\n }\n rule['cssText'] = output;\n }\n\n // Apply keyframe transformations to the cssText of a given rule. The\n // keyframeTransforms object is a map of keyframe names to transformer\n // functions which take in cssText and spit out transformed cssText.\n applyKeyframeTransforms(rule, keyframeTransforms) {\n let input = rule['cssText'];\n let output = rule['cssText'];\n if (rule.hasAnimations == null) {\n // Cache whether or not the rule has any animations to begin with:\n rule.hasAnimations = RX.ANIMATION_MATCH.test(input);\n }\n // If there are no animations referenced, we can skip transforms:\n if (rule.hasAnimations) {\n let transform;\n // If we haven't transformed this rule before, we iterate over all\n // transforms:\n if (rule.keyframeNamesToTransform == null) {\n rule.keyframeNamesToTransform = [];\n for (let keyframe in keyframeTransforms) {\n transform = keyframeTransforms[keyframe];\n output = transform(input);\n // If the transform actually changed the CSS text, we cache the\n // transform name for future use:\n if (input !== output) {\n input = output;\n rule.keyframeNamesToTransform.push(keyframe);\n }\n }\n } else {\n // If we already have a list of keyframe names that apply to this\n // rule, we apply only those keyframe name transforms:\n for (let i = 0; i < rule.keyframeNamesToTransform.length; ++i) {\n transform = keyframeTransforms[rule.keyframeNamesToTransform[i]];\n input = transform(input);\n }\n output = input;\n }\n }\n rule['cssText'] = output;\n }\n\n // Test if the rules in these styles matches the given `element` and if so,\n // collect any custom properties into `props`.\n /**\n * @param {StyleNode} rules\n * @param {Element} element\n */\n propertyDataFromStyles(rules, element) {\n let props = {}, self = this;\n // generates a unique key for these matches\n let o = [];\n // note: active rules excludes non-matching @media rules\n StyleUtil.forEachRule(rules, function(rule) {\n // TODO(sorvell): we could trim the set of rules at declaration\n // time to only include ones that have properties\n if (!rule.propertyInfo) {\n self.decorateRule(rule);\n }\n // match element against transformedSelector: selector may contain\n // unwanted uniquification and parsedSelector does not directly match\n // for :host selectors.\n let selectorToMatch = rule.transformedSelector || rule['parsedSelector'];\n if (element && rule.propertyInfo.properties && selectorToMatch) {\n if (matchesSelector.call(element, selectorToMatch)) {\n self.collectProperties(rule, props);\n // produce numeric key for these matches for lookup\n addToBitMask(rule.index, o);\n }\n }\n }, null, true);\n return {properties: props, key: o};\n }\n\n /**\n * @param {Element} scope\n * @param {StyleNode} rule\n * @param {string|undefined} cssBuild\n * @param {function(Object)} callback\n */\n whenHostOrRootRule(scope, rule, cssBuild, callback) {\n if (!rule.propertyInfo) {\n this.decorateRule(rule);\n }\n if (!rule.propertyInfo.properties) {\n return;\n }\n let {is, typeExtension} = StyleUtil.getIsExtends(scope);\n let hostScope = is ?\n StyleTransformer._calcHostScope(is, typeExtension) :\n 'html';\n let parsedSelector = rule['parsedSelector'];\n let isRoot = (parsedSelector === ':host > *' || parsedSelector === 'html');\n let isHost = parsedSelector.indexOf(':host') === 0 && !isRoot;\n // build info is either in scope (when scope is an element) or in the style\n // when scope is the default scope; note: this allows default scope to have\n // mixed mode built and unbuilt styles.\n if (cssBuild === 'shady') {\n // :root -> x-foo > *.x-foo for elements and html for custom-style\n isRoot = parsedSelector === (hostScope + ' > *.' + hostScope) || parsedSelector.indexOf('html') !== -1;\n // :host -> x-foo for elements, but sub-rules have .x-foo in them\n isHost = !isRoot && parsedSelector.indexOf(hostScope) === 0;\n }\n if (cssBuild === 'shadow') {\n isRoot = parsedSelector === ':host > *' || parsedSelector === 'html';\n isHost = isHost && !isRoot;\n }\n if (!isRoot && !isHost) {\n return;\n }\n let selectorToMatch = hostScope;\n if (isHost) {\n // need to transform :host because `:host` does not work with `matches`\n if (!rule.transformedSelector) {\n // transform :host into a matchable selector\n rule.transformedSelector =\n StyleTransformer._transformRuleCss(\n rule,\n StyleTransformer._transformComplexSelector,\n StyleTransformer._calcElementScope(is),\n hostScope\n );\n }\n selectorToMatch = rule.transformedSelector || hostScope;\n }\n callback({\n selector: selectorToMatch,\n isHost: isHost,\n isRoot: isRoot\n });\n }\n/**\n * @param {Element} scope\n * @param {StyleNode} rules\n * @return {Object}\n */\n hostAndRootPropertiesForScope(scope, rules) {\n let hostProps = {}, rootProps = {}, self = this;\n // note: active rules excludes non-matching @media rules\n let cssBuild = rules && rules['__cssBuild'];\n StyleUtil.forEachRule(rules, function(rule) {\n // if scope is StyleDefaults, use _element for matchesSelector\n self.whenHostOrRootRule(scope, rule, cssBuild, function(info) {\n let element = scope._element || scope;\n if (matchesSelector.call(element, info.selector)) {\n if (info.isHost) {\n self.collectProperties(rule, hostProps);\n } else {\n self.collectProperties(rule, rootProps);\n }\n }\n });\n }, null, true);\n return {rootProps: rootProps, hostProps: hostProps};\n }\n\n /**\n * @param {Element} element\n * @param {Object} properties\n * @param {string} scopeSelector\n */\n transformStyles(element, properties, scopeSelector) {\n let self = this;\n let {is, typeExtension} = StyleUtil.getIsExtends(element);\n let hostSelector = StyleTransformer\n ._calcHostScope(is, typeExtension);\n let rxHostSelector = element.extends ?\n '\\\\' + hostSelector.slice(0, -1) + '\\\\]' :\n hostSelector;\n let hostRx = new RegExp(RX.HOST_PREFIX + rxHostSelector +\n RX.HOST_SUFFIX);\n let rules = StyleInfo.get(element).styleRules;\n let keyframeTransforms =\n this._elementKeyframeTransforms(element, rules, scopeSelector);\n return StyleTransformer.elementStyles(element, rules, function(rule) {\n self.applyProperties(rule, properties);\n if (!nativeShadow &&\n !StyleUtil.isKeyframesSelector(rule) &&\n rule['cssText']) {\n // NOTE: keyframe transforms only scope munge animation names, so it\n // is not necessary to apply them in ShadowDOM.\n self.applyKeyframeTransforms(rule, keyframeTransforms);\n self._scopeSelector(rule, hostRx, hostSelector, scopeSelector);\n }\n });\n }\n\n /**\n * @param {Element} element\n * @param {StyleNode} rules\n * @param {string} scopeSelector\n * @return {Object}\n */\n _elementKeyframeTransforms(element, rules, scopeSelector) {\n let keyframesRules = rules._keyframes;\n let keyframeTransforms = {};\n if (!nativeShadow && keyframesRules) {\n // For non-ShadowDOM, we transform all known keyframes rules in\n // advance for the current scope. This allows us to catch keyframes\n // rules that appear anywhere in the stylesheet:\n for (let i = 0, keyframesRule = keyframesRules[i];\n i < keyframesRules.length;\n keyframesRule = keyframesRules[++i]) {\n this._scopeKeyframes(keyframesRule, scopeSelector);\n keyframeTransforms[keyframesRule['keyframesName']] =\n this._keyframesRuleTransformer(keyframesRule);\n }\n }\n return keyframeTransforms;\n }\n\n // Generate a factory for transforming a chunk of CSS text to handle a\n // particular scoped keyframes rule.\n /**\n * @param {StyleNode} keyframesRule\n * @return {function(string):string}\n */\n _keyframesRuleTransformer(keyframesRule) {\n return function(cssText) {\n return cssText.replace(\n keyframesRule.keyframesNameRx,\n keyframesRule.transformedKeyframesName);\n };\n }\n\n/**\n * Transforms `@keyframes` names to be unique for the current host.\n * Example: @keyframes foo-anim -> @keyframes foo-anim-x-foo-0\n *\n * @param {StyleNode} rule\n * @param {string} scopeId\n */\n _scopeKeyframes(rule, scopeId) {\n // Animation names are of the form [\\w-], so ensure that the name regex does not partially apply\n // to similarly named keyframe names by checking for a word boundary at the beginning and\n // a non-word boundary or `-` at the end.\n rule.keyframesNameRx = new RegExp(`\\\\b${rule['keyframesName']}(?!\\\\B|-)`, 'g');\n rule.transformedKeyframesName = rule['keyframesName'] + '-' + scopeId;\n rule.transformedSelector = rule.transformedSelector || rule['selector'];\n rule['selector'] = rule.transformedSelector.replace(\n rule['keyframesName'], rule.transformedKeyframesName);\n }\n\n // Strategy: x scope shim a selector e.g. to scope `.x-foo-42` (via classes):\n // non-host selector: .a.x-foo -> .x-foo-42 .a.x-foo\n // host selector: x-foo.wide -> .x-foo-42.wide\n // note: we use only the scope class (.x-foo-42) and not the hostSelector\n // (x-foo) to scope :host rules; this helps make property host rules\n // have low specificity. They are overrideable by class selectors but,\n // unfortunately, not by type selectors (e.g. overriding via\n // `.special` is ok, but not by `x-foo`).\n /**\n * @param {StyleNode} rule\n * @param {RegExp} hostRx\n * @param {string} hostSelector\n * @param {string} scopeId\n */\n _scopeSelector(rule, hostRx, hostSelector, scopeId) {\n rule.transformedSelector = rule.transformedSelector || rule['selector'];\n let selector = rule.transformedSelector;\n let scope = '.' + scopeId;\n let parts = selector.split(',');\n for (let i=0, l=parts.length, p; (i<l) && (p=parts[i]); i++) {\n parts[i] = p.match(hostRx) ?\n p.replace(hostSelector, scope) :\n scope + ' ' + p;\n }\n rule['selector'] = parts.join(',');\n }\n\n /**\n * @param {Element} element\n * @param {string} selector\n * @param {string} old\n */\n applyElementScopeSelector(element, selector, old) {\n let c = element.getAttribute('class') || '';\n let v = c;\n if (old) {\n v = c.replace(\n new RegExp('\\\\s*' + XSCOPE_NAME + '\\\\s*' + old + '\\\\s*', 'g'), ' ');\n }\n v += (v ? ' ' : '') + XSCOPE_NAME + ' ' + selector;\n if (c !== v) {\n StyleUtil.setElementClassRaw(element, v);\n }\n }\n\n /**\n * @param {HTMLElement} element\n * @param {Object} properties\n * @param {string} selector\n * @param {HTMLStyleElement} style\n * @return {HTMLStyleElement}\n */\n applyElementStyle(element, properties, selector, style) {\n // calculate cssText to apply\n let cssText = style ? style.textContent || '' :\n this.transformStyles(element, properties, selector);\n // if shady and we have a cached style that is not style, decrement\n let styleInfo = StyleInfo.get(element);\n let s = styleInfo.customStyle;\n if (s && !nativeShadow && (s !== style)) {\n s['_useCount']--;\n if (s['_useCount'] <= 0 && s.parentNode) {\n s.parentNode.removeChild(s);\n }\n }\n // apply styling always under native or if we generated style\n // or the cached style is not in document(!)\n if (nativeShadow) {\n // update existing style only under native\n if (styleInfo.customStyle) {\n styleInfo.customStyle.textContent = cssText;\n style = styleInfo.customStyle;\n // otherwise, if we have css to apply, do so\n } else if (cssText) {\n // apply css after the scope style of the element to help with\n // style precedence rules.\n style = StyleUtil.applyCss(cssText, selector, element.shadowRoot,\n styleInfo.placeholder);\n }\n } else {\n // shady and no cache hit\n if (!style) {\n // apply css after the scope style of the element to help with\n // style precedence rules.\n if (cssText) {\n style = StyleUtil.applyCss(cssText, selector, null,\n styleInfo.placeholder);\n }\n // shady and cache hit but not in document\n } else if (!style.parentNode) {\n if (IS_IE && cssText.indexOf('@media') > -1) {\n // @media rules may be stale in IE 10 and 11\n // refresh the text content of the style to revalidate them.\n style.textContent = cssText;\n }\n StyleUtil.applyStyle(style, null, styleInfo.placeholder);\n }\n }\n // ensure this style is our custom style and increment its use count.\n if (style) {\n style['_useCount'] = style['_useCount'] || 0;\n // increment use count if we changed styles\n if (styleInfo.customStyle != style) {\n style['_useCount']++;\n }\n styleInfo.customStyle = style;\n }\n return style;\n }\n\n /**\n * @param {Element} style\n * @param {Object} properties\n */\n applyCustomStyle(style, properties) {\n let rules = StyleUtil.rulesForStyle(/** @type {HTMLStyleElement} */(style));\n let self = this;\n style.textContent = StyleUtil.toCssText(rules, function(/** StyleNode */rule) {\n let css = rule['cssText'] = rule['parsedCssText'];\n if (rule.propertyInfo && rule.propertyInfo.cssText) {\n // remove property assignments\n // so next function isn't confused\n // NOTE: we have 3 categories of css:\n // (1) normal properties,\n // (2) custom property assignments (--foo: red;),\n // (3) custom property usage: border: var(--foo); @apply(--foo);\n // In elements, 1 and 3 are separated for efficiency; here they\n // are not and this makes this case unique.\n css = removeCustomPropAssignment(/** @type {string} */(css));\n // replace with reified properties, scenario is same as mixin\n rule['cssText'] = self.valueForProperties(css, properties);\n }\n });\n }\n}\n\n/**\n * @param {number} n\n * @param {Array<number>} bits\n */\nfunction addToBitMask(n, bits) {\n let o = parseInt(n / 32, 10);\n let v = 1 << (n % 32);\n bits[o] = (bits[o] || 0) | v;\n}\n\nexport default new StyleProperties();","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {applyStylePlaceHolder} from './style-util.js';\nimport {nativeShadow} from './style-settings.js';\n\n/** @type {Object<string, !Node>} */\nlet placeholderMap = {};\n\n/**\n * @const {CustomElementRegistry}\n */\nconst ce = window['customElements'];\nif (ce && !nativeShadow) {\n /**\n * @const {function(this:CustomElementRegistry, string,function(new:HTMLElement),{extends: string}=)}\n */\n const origDefine = ce['define'];\n /**\n * @param {string} name\n * @param {function(new:HTMLElement)} clazz\n * @param {{extends: string}=} options\n */\n const wrappedDefine = (name, clazz, options) => {\n placeholderMap[name] = applyStylePlaceHolder(name);\n origDefine.call(/** @type {!CustomElementRegistry} */(ce), name, clazz, options);\n };\n ce['define'] = wrappedDefine;\n}\n\nexport default placeholderMap;\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n'use strict';\n\nexport default class StyleCache {\n constructor(typeMax = 100) {\n // map element name -> [{properties, styleElement, scopeSelector}]\n this.cache = {};\n this.typeMax = typeMax;\n }\n\n _validate(cacheEntry, properties, ownPropertyNames) {\n for (let idx = 0; idx < ownPropertyNames.length; idx++) {\n let pn = ownPropertyNames[idx];\n if (cacheEntry.properties[pn] !== properties[pn]) {\n return false;\n }\n }\n return true;\n }\n\n store(tagname, properties, styleElement, scopeSelector) {\n let list = this.cache[tagname] || [];\n list.push({properties, styleElement, scopeSelector});\n if (list.length > this.typeMax) {\n list.shift();\n }\n this.cache[tagname] = list;\n }\n\n fetch(tagname, properties, ownPropertyNames) {\n let list = this.cache[tagname];\n if (!list) {\n return;\n }\n // reverse list for most-recent lookups\n for (let idx = list.length - 1; idx >= 0; idx--) {\n let entry = list[idx];\n if (this._validate(entry, properties, ownPropertyNames)) {\n return entry;\n }\n }\n }\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {nativeShadow} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport {getIsExtends} from './style-util.js';\n\nexport let flush = function() {};\n\n/**\n * @param {HTMLElement} element\n * @return {!Array<string>}\n */\nfunction getClasses(element) {\n let classes = [];\n if (element.classList) {\n classes = Array.from(element.classList);\n } else if (element instanceof window['SVGElement'] && element.hasAttribute('class')) {\n classes = element.getAttribute('class').split(/\\s+/);\n }\n return classes;\n}\n\n/**\n * @param {HTMLElement} element\n * @return {string}\n */\nfunction getCurrentScope(element) {\n let classes = getClasses(element);\n let idx = classes.indexOf(StyleTransformer.SCOPE_NAME);\n if (idx > -1) {\n return classes[idx + 1];\n }\n return '';\n}\n\n/**\n * @param {Array<MutationRecord|null>|null} mxns\n */\nfunction handler(mxns) {\n for (let x=0; x < mxns.length; x++) {\n let mxn = mxns[x];\n if (mxn.target === document.documentElement ||\n mxn.target === document.head) {\n continue;\n }\n for (let i=0; i < mxn.addedNodes.length; i++) {\n let n = mxn.addedNodes[i];\n if (n.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n n = /** @type {HTMLElement} */(n); // eslint-disable-line no-self-assign\n let root = n.getRootNode();\n let currentScope = getCurrentScope(n);\n // node was scoped, but now is in document\n if (currentScope && root === n.ownerDocument) {\n StyleTransformer.dom(n, currentScope, true);\n } else if (root.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n let newScope;\n let host = /** @type {ShadowRoot} */(root).host;\n // element may no longer be in a shadowroot\n if (!host) {\n continue;\n }\n newScope = getIsExtends(host).is;\n if (currentScope === newScope) {\n // make sure all the subtree elements are scoped correctly\n let unscoped = window['ShadyDOM']['nativeMethods']['querySelectorAll'].call(\n n, `:not(.${StyleTransformer.SCOPE_NAME})`);\n for (let j = 0; j < unscoped.length; j++) {\n StyleTransformer.element(unscoped[j], currentScope);\n }\n continue;\n }\n if (currentScope) {\n StyleTransformer.dom(n, currentScope, true);\n }\n StyleTransformer.dom(n, newScope);\n }\n }\n }\n}\n\nif (!nativeShadow) {\n let observer = new MutationObserver(handler);\n let start = (node) => {\n observer.observe(node, {childList: true, subtree: true});\n }\n let nativeCustomElements = (window['customElements'] &&\n !window['customElements']['polyfillWrapFlushCallback']);\n // need to start immediately with native custom elements\n // TODO(dfreedm): with polyfilled HTMLImports and native custom elements\n // excessive mutations may be observed; this can be optimized via cooperation\n // with the HTMLImports polyfill.\n if (nativeCustomElements) {\n start(document);\n } else {\n let delayedStart = () => {\n start(document.body);\n }\n // use polyfill timing if it's available\n if (window['HTMLImports']) {\n window['HTMLImports']['whenReady'](delayedStart);\n // otherwise push beyond native imports being ready\n // which requires RAF + readystate interactive.\n } else {\n requestAnimationFrame(function() {\n if (document.readyState === 'loading') {\n let listener = function() {\n delayedStart();\n document.removeEventListener('readystatechange', listener);\n }\n document.addEventListener('readystatechange', listener);\n } else {\n delayedStart();\n }\n });\n }\n }\n\n flush = function() {\n handler(observer.takeRecords());\n }\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/**\n * @const {!Object<string, !HTMLTemplateElement>}\n */\nconst templateMap = {};\nexport default templateMap;\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\nimport templateMap from './template-map.js';\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\n\n/*\n * Utilities for handling invalidating apply-shim mixins for a given template.\n *\n * The invalidation strategy involves keeping track of the \"current\" version of a template's mixins, and updating that count when a mixin is invalidated.\n * The template\n */\n\n/** @const {string} */\nconst CURRENT_VERSION = '_applyShimCurrentVersion';\n\n/** @const {string} */\nconst NEXT_VERSION = '_applyShimNextVersion';\n\n/** @const {string} */\nconst VALIDATING_VERSION = '_applyShimValidatingVersion';\n\n/**\n * @const {Promise<void>}\n */\nconst promise = Promise.resolve();\n\n/**\n * @param {string} elementName\n */\nexport function invalidate(elementName){\n let template = templateMap[elementName];\n if (template) {\n invalidateTemplate(template);\n }\n}\n\n/**\n * This function can be called multiple times to mark a template invalid\n * and signal that the style inside must be regenerated.\n *\n * Use `startValidatingTemplate` to begin an asynchronous validation cycle.\n * During that cycle, call `templateIsValidating` to see if the template must\n * be revalidated\n * @param {HTMLTemplateElement} template\n */\nexport function invalidateTemplate(template) {\n // default the current version to 0\n template[CURRENT_VERSION] = template[CURRENT_VERSION] || 0;\n // ensure the \"validating for\" flag exists\n template[VALIDATING_VERSION] = template[VALIDATING_VERSION] || 0;\n // increment the next version\n template[NEXT_VERSION] = (template[NEXT_VERSION] || 0) + 1;\n}\n\n/**\n * @param {string} elementName\n * @return {boolean}\n */\nexport function isValid(elementName) {\n let template = templateMap[elementName];\n if (template) {\n return templateIsValid(template);\n }\n return true;\n}\n\n/**\n * @param {HTMLTemplateElement} template\n * @return {boolean}\n */\nexport function templateIsValid(template) {\n return template[CURRENT_VERSION] === template[NEXT_VERSION];\n}\n\n/**\n * @param {string} elementName\n * @return {boolean}\n */\nexport function isValidating(elementName) {\n let template = templateMap[elementName];\n if (template) {\n return templateIsValidating(template);\n }\n return false;\n}\n\n/**\n * Returns true if the template is currently invalid and `startValidating` has been called since the last invalidation.\n * If false, the template must be validated.\n * @param {HTMLTemplateElement} template\n * @return {boolean}\n */\nexport function templateIsValidating(template) {\n return !templateIsValid(template) && template[VALIDATING_VERSION] === template[NEXT_VERSION];\n}\n\n/**\n * the template is marked as `validating` for one microtask so that all instances\n * found in the tree crawl of `applyStyle` will update themselves,\n * but the template will only be updated once.\n * @param {string} elementName\n*/\nexport function startValidating(elementName) {\n let template = templateMap[elementName];\n startValidatingTemplate(template);\n}\n\n/**\n * Begin an asynchronous invalidation cycle.\n * This should be called after every validation of a template\n *\n * After one microtask, the template will be marked as valid until the next call to `invalidateTemplate`\n * @param {HTMLTemplateElement} template\n */\nexport function startValidatingTemplate(template) {\n // remember that the current \"next version\" is the reason for this validation cycle\n template[VALIDATING_VERSION] = template[NEXT_VERSION];\n // however, there only needs to be one async task to clear the counters\n if (!template._validating) {\n template._validating = true;\n promise.then(function() {\n // sync the current version to let future invalidations cause a refresh cycle\n template[CURRENT_VERSION] = template[NEXT_VERSION];\n template._validating = false;\n });\n }\n}\n\n/**\n * @return {boolean}\n */\nexport function elementsAreInvalid() {\n for (let elementName in templateMap) {\n let template = templateMap[elementName];\n if (!templateIsValid(template)) {\n return true;\n }\n }\n return false;\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/** @type {Promise<void>} */\nlet readyPromise = null;\n\n/** @type {?function(?function())} */\nlet whenReady = window['HTMLImports'] && window['HTMLImports']['whenReady'] || null;\n\n/** @type {function()} */\nlet resolveFn;\n\n/**\n * @param {?function()} callback\n */\nexport default function documentWait(callback) {\n requestAnimationFrame(function() {\n if (whenReady) {\n whenReady(callback)\n } else {\n if (!readyPromise) {\n readyPromise = new Promise((resolve) => {resolveFn = resolve});\n if (document.readyState === 'complete') {\n resolveFn();\n } else {\n document.addEventListener('readystatechange', () => {\n if (document.readyState === 'complete') {\n resolveFn();\n }\n });\n }\n }\n readyPromise.then(function(){ callback && callback(); });\n }\n });\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {parse, StyleNode} from './css-parse.js';\nimport {nativeShadow, nativeCssVariables} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport * as StyleUtil from './style-util.js';\nimport StyleProperties from './style-properties.js';\nimport placeholderMap from './style-placeholder.js';\nimport StyleInfo from './style-info.js';\nimport StyleCache from './style-cache.js';\nimport {flush as watcherFlush} from './document-watcher.js';\nimport templateMap from './template-map.js';\nimport * as ApplyShimUtils from './apply-shim-utils.js';\nimport documentWait from './document-wait.js';\nimport {updateNativeProperties, detectMixin} from './common-utils.js';\nimport {CustomStyleInterfaceInterface} from './custom-style-interface.js'; // eslint-disable-line no-unused-vars\n\n/**\n * @const {StyleCache}\n */\nconst styleCache = new StyleCache();\n\nexport default class ScopingShim {\n constructor() {\n this._scopeCounter = {};\n this._documentOwner = document.documentElement;\n let ast = new StyleNode();\n ast['rules'] = [];\n this._documentOwnerStyleInfo = StyleInfo.set(this._documentOwner, new StyleInfo(ast));\n this._elementsHaveApplied = false;\n this._applyShim = null;\n /** @type {?CustomStyleInterfaceInterface} */\n this._customStyleInterface = null;\n documentWait(() => {\n this._ensure();\n });\n }\n flush() {\n watcherFlush();\n }\n _generateScopeSelector(name) {\n let id = this._scopeCounter[name] = (this._scopeCounter[name] || 0) + 1;\n return `${name}-${id}`;\n }\n getStyleAst(style) {\n return StyleUtil.rulesForStyle(style);\n }\n styleAstToString(ast) {\n return StyleUtil.toCssText(ast);\n }\n _gatherStyles(template) {\n return StyleUtil.gatherStyleText(template.content);\n }\n _getCssBuild(template) {\n let style = template.content.querySelector('style');\n if (!style) {\n return '';\n }\n return style.getAttribute('css-build') || '';\n }\n /**\n * Prepare the styling and template for the given element type\n *\n * @param {HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} typeExtension\n */\n prepareTemplate(template, elementName, typeExtension) {\n if (template._prepared) {\n return;\n }\n template._prepared = true;\n template.name = elementName;\n template.extends = typeExtension;\n templateMap[elementName] = template;\n let cssBuild = this._getCssBuild(template);\n let cssText = this._gatherStyles(template);\n let info = {\n is: elementName,\n extends: typeExtension,\n __cssBuild: cssBuild,\n };\n if (!nativeShadow) {\n StyleTransformer.dom(template.content, elementName);\n }\n // check if the styling has mixin definitions or uses\n this._ensure();\n let hasMixins = detectMixin(cssText)\n let ast = parse(cssText);\n // only run the applyshim transforms if there is a mixin involved\n if (hasMixins && nativeCssVariables && this._applyShim) {\n this._applyShim['transformRules'](ast, elementName);\n }\n template['_styleAst'] = ast;\n template._cssBuild = cssBuild;\n\n let ownPropertyNames = [];\n if (!nativeCssVariables) {\n ownPropertyNames = StyleProperties.decorateStyles(template['_styleAst']);\n }\n if (!ownPropertyNames.length || nativeCssVariables) {\n let root = nativeShadow ? template.content : null;\n let placeholder = placeholderMap[elementName];\n let style = this._generateStaticStyle(info, template['_styleAst'], root, placeholder);\n template._style = style;\n }\n template._ownPropertyNames = ownPropertyNames;\n }\n _generateStaticStyle(info, rules, shadowroot, placeholder) {\n let cssText = StyleTransformer.elementStyles(info, rules);\n if (cssText.length) {\n return StyleUtil.applyCss(cssText, info.is, shadowroot, placeholder);\n }\n }\n _prepareHost(host) {\n let {is, typeExtension} = StyleUtil.getIsExtends(host);\n let placeholder = placeholderMap[is];\n let template = templateMap[is];\n let ast;\n let ownStylePropertyNames;\n let cssBuild;\n if (template) {\n ast = template['_styleAst'];\n ownStylePropertyNames = template._ownPropertyNames;\n cssBuild = template._cssBuild;\n }\n return StyleInfo.set(host,\n new StyleInfo(\n ast,\n placeholder,\n ownStylePropertyNames,\n is,\n typeExtension,\n cssBuild\n )\n );\n }\n _ensureApplyShim() {\n if (this._applyShim) {\n return;\n } else if (window.ShadyCSS && window.ShadyCSS.ApplyShim) {\n this._applyShim = window.ShadyCSS.ApplyShim;\n this._applyShim['invalidCallback'] = ApplyShimUtils.invalidate;\n }\n }\n _ensureCustomStyleInterface() {\n if (this._customStyleInterface) {\n return;\n } else if (window.ShadyCSS && window.ShadyCSS.CustomStyleInterface) {\n this._customStyleInterface = /** @type {!CustomStyleInterfaceInterface} */(window.ShadyCSS.CustomStyleInterface);\n /** @type {function(!HTMLStyleElement)} */\n this._customStyleInterface['transformCallback'] = (style) => {this.transformCustomStyleForDocument(style)};\n this._customStyleInterface['validateCallback'] = () => {\n requestAnimationFrame(() => {\n if (this._customStyleInterface['enqueued'] || this._elementsHaveApplied) {\n this.flushCustomStyles();\n }\n })\n };\n }\n }\n _ensure() {\n this._ensureApplyShim();\n this._ensureCustomStyleInterface();\n }\n /**\n * Flush and apply custom styles to document\n */\n flushCustomStyles() {\n this._ensure();\n if (!this._customStyleInterface) {\n return;\n }\n let customStyles = this._customStyleInterface['processStyles']();\n // early return if custom-styles don't need validation\n if (!this._customStyleInterface['enqueued']) {\n return;\n }\n if (!nativeCssVariables) {\n this._updateProperties(this._documentOwner, this._documentOwnerStyleInfo);\n this._applyCustomStyles(customStyles);\n } else {\n this._revalidateCustomStyleApplyShim(customStyles);\n }\n this._customStyleInterface['enqueued'] = false;\n // if custom elements have upgraded and there are no native css variables, we must recalculate the whole tree\n if (this._elementsHaveApplied && !nativeCssVariables) {\n this.styleDocument();\n }\n }\n /**\n * Apply styles for the given element\n *\n * @param {!HTMLElement} host\n * @param {Object=} overrideProps\n */\n styleElement(host, overrideProps) {\n let {is} = StyleUtil.getIsExtends(host);\n let styleInfo = StyleInfo.get(host);\n if (!styleInfo) {\n styleInfo = this._prepareHost(host);\n }\n // Only trip the `elementsHaveApplied` flag if a node other that the root document has `applyStyle` called\n if (!this._isRootOwner(host)) {\n this._elementsHaveApplied = true;\n }\n if (overrideProps) {\n styleInfo.overrideStyleProperties =\n styleInfo.overrideStyleProperties || {};\n Object.assign(styleInfo.overrideStyleProperties, overrideProps);\n }\n if (!nativeCssVariables) {\n this._updateProperties(host, styleInfo);\n if (styleInfo.ownStylePropertyNames && styleInfo.ownStylePropertyNames.length) {\n this._applyStyleProperties(host, styleInfo);\n }\n } else {\n if (styleInfo.overrideStyleProperties) {\n updateNativeProperties(host, styleInfo.overrideStyleProperties);\n }\n let template = templateMap[is];\n // bail early if there is no shadowroot for this element\n if (!template && !this._isRootOwner(host)) {\n return;\n }\n if (template && template._style && !ApplyShimUtils.templateIsValid(template)) {\n // update template\n if (!ApplyShimUtils.templateIsValidating(template)) {\n this._ensure();\n this._applyShim && this._applyShim['transformRules'](template['_styleAst'], is);\n template._style.textContent = StyleTransformer.elementStyles(host, styleInfo.styleRules);\n ApplyShimUtils.startValidatingTemplate(template);\n }\n // update instance if native shadowdom\n if (nativeShadow) {\n let root = host.shadowRoot;\n if (root) {\n let style = root.querySelector('style');\n style.textContent = StyleTransformer.elementStyles(host, styleInfo.styleRules);\n }\n }\n styleInfo.styleRules = template['_styleAst'];\n }\n }\n }\n _styleOwnerForNode(node) {\n let root = node.getRootNode();\n let host = root.host;\n if (host) {\n if (StyleInfo.get(host)) {\n return host;\n } else {\n return this._styleOwnerForNode(host);\n }\n }\n return this._documentOwner;\n }\n _isRootOwner(node) {\n return (node === this._documentOwner);\n }\n _applyStyleProperties(host, styleInfo) {\n let is = StyleUtil.getIsExtends(host).is;\n let cacheEntry = styleCache.fetch(is, styleInfo.styleProperties, styleInfo.ownStylePropertyNames);\n let cachedScopeSelector = cacheEntry && cacheEntry.scopeSelector;\n let cachedStyle = cacheEntry ? cacheEntry.styleElement : null;\n let oldScopeSelector = styleInfo.scopeSelector;\n // only generate new scope if cached style is not found\n styleInfo.scopeSelector = cachedScopeSelector || this._generateScopeSelector(is);\n let style = StyleProperties.applyElementStyle(host, styleInfo.styleProperties, styleInfo.scopeSelector, cachedStyle);\n if (!nativeShadow) {\n StyleProperties.applyElementScopeSelector(host, styleInfo.scopeSelector, oldScopeSelector);\n }\n if (!cacheEntry) {\n styleCache.store(is, styleInfo.styleProperties, style, styleInfo.scopeSelector);\n }\n return style;\n }\n _updateProperties(host, styleInfo) {\n let owner = this._styleOwnerForNode(host);\n let ownerStyleInfo = StyleInfo.get(owner);\n let ownerProperties = ownerStyleInfo.styleProperties;\n let props = Object.create(ownerProperties || null);\n let hostAndRootProps = StyleProperties.hostAndRootPropertiesForScope(host, styleInfo.styleRules);\n let propertyData = StyleProperties.propertyDataFromStyles(ownerStyleInfo.styleRules, host);\n let propertiesMatchingHost = propertyData.properties\n Object.assign(\n props,\n hostAndRootProps.hostProps,\n propertiesMatchingHost,\n hostAndRootProps.rootProps\n );\n this._mixinOverrideStyles(props, styleInfo.overrideStyleProperties);\n StyleProperties.reify(props);\n styleInfo.styleProperties = props;\n }\n _mixinOverrideStyles(props, overrides) {\n for (let p in overrides) {\n let v = overrides[p];\n // skip override props if they are not truthy or 0\n // in order to fall back to inherited values\n if (v || v === 0) {\n props[p] = v;\n }\n }\n }\n /**\n * Update styles of the whole document\n *\n * @param {Object=} properties\n */\n styleDocument(properties) {\n this.styleSubtree(this._documentOwner, properties);\n }\n /**\n * Update styles of a subtree\n *\n * @param {!HTMLElement} host\n * @param {Object=} properties\n */\n styleSubtree(host, properties) {\n let root = host.shadowRoot;\n if (root || this._isRootOwner(host)) {\n this.styleElement(host, properties);\n }\n // process the shadowdom children of `host`\n let shadowChildren = root && (root.children || root.childNodes);\n if (shadowChildren) {\n for (let i = 0; i < shadowChildren.length; i++) {\n let c = /** @type {!HTMLElement} */(shadowChildren[i]);\n this.styleSubtree(c);\n }\n } else {\n // process the lightdom children of `host`\n let children = host.children || host.childNodes;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n let c = /** @type {!HTMLElement} */(children[i]);\n this.styleSubtree(c);\n }\n }\n }\n }\n /* Custom Style operations */\n _revalidateCustomStyleApplyShim(customStyles) {\n for (let i = 0; i < customStyles.length; i++) {\n let c = customStyles[i];\n let s = this._customStyleInterface['getStyleForCustomStyle'](c);\n if (s) {\n this._revalidateApplyShim(s);\n }\n }\n }\n _applyCustomStyles(customStyles) {\n for (let i = 0; i < customStyles.length; i++) {\n let c = customStyles[i];\n let s = this._customStyleInterface['getStyleForCustomStyle'](c);\n if (s) {\n StyleProperties.applyCustomStyle(s, this._documentOwnerStyleInfo.styleProperties);\n }\n }\n }\n transformCustomStyleForDocument(style) {\n let ast = StyleUtil.rulesForStyle(style);\n StyleUtil.forEachRule(ast, (rule) => {\n if (nativeShadow) {\n StyleTransformer.normalizeRootSelector(rule);\n } else {\n StyleTransformer.documentRule(rule);\n }\n if (nativeCssVariables) {\n this._ensure();\n this._applyShim && this._applyShim['transformRule'](rule);\n }\n });\n if (nativeCssVariables) {\n style.textContent = StyleUtil.toCssText(ast);\n } else {\n this._documentOwnerStyleInfo.styleRules['rules'].push(ast);\n }\n }\n _revalidateApplyShim(style) {\n if (nativeCssVariables && this._applyShim) {\n let ast = StyleUtil.rulesForStyle(style);\n this._ensure();\n this._applyShim['transformRules'](ast);\n style.textContent = StyleUtil.toCssText(ast);\n }\n }\n getComputedStyleValue(element, property) {\n let value;\n if (!nativeCssVariables) {\n // element is either a style host, or an ancestor of a style host\n let styleInfo = StyleInfo.get(element) || StyleInfo.get(this._styleOwnerForNode(element));\n value = styleInfo.styleProperties[property];\n }\n // fall back to the property value from the computed styling\n value = value || window.getComputedStyle(element).getPropertyValue(property);\n // trim whitespace that can come after the `:` in css\n // example: padding: 2px -> \" 2px\"\n return value ? value.trim() : '';\n }\n // given an element and a classString, replaces\n // the element's class with the provided classString and adds\n // any necessary ShadyCSS static and property based scoping selectors\n setElementClass(element, classString) {\n let root = element.getRootNode();\n let classes = classString ? classString.split(/\\s/) : [];\n let scopeName = root.host && root.host.localName;\n // If no scope, try to discover scope name from existing class.\n // This can occur if, for example, a template stamped element that\n // has been scoped is manipulated when not in a root.\n if (!scopeName) {\n var classAttr = element.getAttribute('class');\n if (classAttr) {\n let k$ = classAttr.split(/\\s/);\n for (let i=0; i < k$.length; i++) {\n if (k$[i] === StyleTransformer.SCOPE_NAME) {\n scopeName = k$[i+1];\n break;\n }\n }\n }\n }\n if (scopeName) {\n classes.push(StyleTransformer.SCOPE_NAME, scopeName);\n }\n if (!nativeCssVariables) {\n let styleInfo = StyleInfo.get(element);\n if (styleInfo && styleInfo.scopeSelector) {\n classes.push(StyleProperties.XSCOPE_NAME, styleInfo.scopeSelector);\n }\n }\n StyleUtil.setElementClassRaw(element, classes.join(' '));\n }\n _styleInfoForNode(node) {\n return StyleInfo.get(node);\n }\n}\n\n/* exports */\nScopingShim.prototype['flush'] = ScopingShim.prototype.flush;\nScopingShim.prototype['prepareTemplate'] = ScopingShim.prototype.prepareTemplate;\nScopingShim.prototype['styleElement'] = ScopingShim.prototype.styleElement;\nScopingShim.prototype['styleDocument'] = ScopingShim.prototype.styleDocument;\nScopingShim.prototype['styleSubtree'] = ScopingShim.prototype.styleSubtree;\nScopingShim.prototype['getComputedStyleValue'] = ScopingShim.prototype.getComputedStyleValue;\nScopingShim.prototype['setElementClass'] = ScopingShim.prototype.setElementClass;\nScopingShim.prototype['_styleInfoForNode'] = ScopingShim.prototype._styleInfoForNode;\nScopingShim.prototype['transformCustomStyleForDocument'] = ScopingShim.prototype.transformCustomStyleForDocument;\nScopingShim.prototype['getStyleAst'] = ScopingShim.prototype.getStyleAst;\nScopingShim.prototype['styleAstToString'] = ScopingShim.prototype.styleAstToString;\nScopingShim.prototype['flushCustomStyles'] = ScopingShim.prototype.flushCustomStyles;\nObject.defineProperties(ScopingShim.prototype, {\n 'nativeShadow': {\n get() {\n return nativeShadow;\n }\n },\n 'nativeCss': {\n get() {\n return nativeCssVariables;\n }\n }\n});\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport { MIXIN_MATCH, VAR_ASSIGN } from './common-regex.js';\n\n/**\n * @param {Element} element\n * @param {Object=} properties\n */\nexport function updateNativeProperties(element, properties) {\n // remove previous properties\n for (let p in properties) {\n // NOTE: for bc with shim, don't apply null values.\n if (p === null) {\n element.style.removeProperty(p);\n } else {\n element.style.setProperty(p, properties[p]);\n }\n }\n}\n\n/**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\nexport function getComputedStyleValue(element, property) {\n /**\n * @const {string}\n */\n const value = window.getComputedStyle(element).getPropertyValue(property);\n if (!value) {\n return '';\n } else {\n return value.trim();\n }\n}\n\n/**\n * return true if `cssText` contains a mixin definition or consumption\n * @param {string} cssText\n * @return {boolean}\n */\nexport function detectMixin(cssText) {\n const has = MIXIN_MATCH.test(cssText) || VAR_ASSIGN.test(cssText);\n // reset state of the regexes\n MIXIN_MATCH.lastIndex = 0;\n VAR_ASSIGN.lastIndex = 0;\n return has;\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport ScopingShim from '../src/scoping-shim.js';\nimport {nativeCssVariables, nativeShadow} from '../src/style-settings.js';\n\n/** @const {ScopingShim} */\nconst scopingShim = new ScopingShim();\n\nlet ApplyShim, CustomStyleInterface;\n\nif (window['ShadyCSS']) {\n ApplyShim = window['ShadyCSS']['ApplyShim'];\n CustomStyleInterface = window['ShadyCSS']['CustomStyleInterface'];\n}\n\nwindow.ShadyCSS = {\n ScopingShim: scopingShim,\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} elementExtends\n */\n prepareTemplate(template, elementName, elementExtends) {\n scopingShim.flushCustomStyles();\n scopingShim.prepareTemplate(template, elementName, elementExtends)\n },\n\n /**\n * @param {!HTMLElement} element\n * @param {Object=} properties\n */\n styleSubtree(element, properties) {\n scopingShim.flushCustomStyles();\n scopingShim.styleSubtree(element, properties);\n },\n\n /**\n * @param {!HTMLElement} element\n */\n styleElement(element) {\n scopingShim.flushCustomStyles();\n scopingShim.styleElement(element);\n },\n\n /**\n * @param {Object=} properties\n */\n styleDocument(properties) {\n scopingShim.flushCustomStyles();\n scopingShim.styleDocument(properties);\n },\n\n /**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\n getComputedStyleValue(element, property) {\n return scopingShim.getComputedStyleValue(element, property);\n },\n\n nativeCss: nativeCssVariables,\n\n nativeShadow: nativeShadow\n};\n\nif (ApplyShim) {\n window.ShadyCSS.ApplyShim = ApplyShim;\n}\n\nif (CustomStyleInterface) {\n window.ShadyCSS.CustomStyleInterface = CustomStyleInterface;\n}","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n'use strict';\n\nlet customElements = window['customElements'];\nlet HTMLImports = window['HTMLImports'];\nlet Template = window['HTMLTemplateElement'];\n\n// global for (1) existence means `WebComponentsReady` will file,\n// (2) WebComponents.ready == true means event has fired.\nwindow.WebComponents = window.WebComponents || {};\n\nif (customElements && customElements['polyfillWrapFlushCallback']) {\n // Here we ensure that the public `HTMLImports.whenReady`\n // always comes *after* custom elements have upgraded.\n let flushCallback;\n let runAndClearCallback = function runAndClearCallback() {\n if (flushCallback) {\n // make sure to run the HTMLTemplateElement polyfill before custom elements upgrade\n if (Template.bootstrap) {\n Template.bootstrap(window.document);\n }\n let cb = flushCallback;\n flushCallback = null;\n cb();\n return true;\n }\n }\n let origWhenReady = HTMLImports['whenReady'];\n customElements['polyfillWrapFlushCallback'](function(cb) {\n flushCallback = cb;\n origWhenReady(runAndClearCallback);\n });\n\n HTMLImports['whenReady'] = function(cb) {\n origWhenReady(function() {\n // custom element code may add dynamic imports\n // to match processing of native custom elements before\n // domContentLoaded, we wait for these imports to resolve first.\n if (runAndClearCallback()) {\n HTMLImports['whenReady'](cb);\n } else {\n cb();\n }\n });\n }\n\n}\n\nHTMLImports['whenReady'](function() {\n requestAnimationFrame(function() {\n window.WebComponents.ready = true;\n document.dispatchEvent(new CustomEvent('WebComponentsReady', {bubbles: true}));\n });\n});","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n'use strict';\n// It's desireable to provide a default stylesheet\n// that's convenient for styling unresolved elements, but\n// it's cumbersome to have to include this manually in every page.\n// It would make sense to put inside some HTMLImport but\n// the HTMLImports polyfill does not allow loading of stylesheets\n// that block rendering. Therefore this injection is tolerated here.\n//\n// NOTE: position: relative fixes IE's failure to inherit opacity\n// when a child is not statically positioned.\nlet style = document.createElement('style');\nstyle.textContent = ''\n + 'body {'\n + 'transition: opacity ease-in 0.2s;'\n + ' } \\n'\n + 'body[unresolved] {'\n + 'opacity: 0; display: block; overflow: hidden; position: relative;'\n + ' } \\n'\n ;\nlet head = document.querySelector('head');\nhead.insertBefore(style, head.firstChild);"]} \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd.js
new file mode 100644
index 00000000000..4c3862150e1
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd.js
@@ -0,0 +1,181 @@
+/**
+@license @nocompile
+Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+(function(){/*
+
+ Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ Code distributed by Google as part of the polymer project is also
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+'use strict';var n,q="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,ba="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};function ca(){ca=function(){};q.Symbol||(q.Symbol=da)}var da=function(){var a=0;return function(b){return"jscomp_symbol_"+(b||"")+a++}}();
+function ea(){ca();var a=q.Symbol.iterator;a||(a=q.Symbol.iterator=q.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&ba(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return fa(this)}});ea=function(){}}function fa(a){var b=0;return ha(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function ha(a){ea();a={next:a};a[q.Symbol.iterator]=function(){return this};return a}function ia(a){ea();var b=a[Symbol.iterator];return b?b.call(a):fa(a)}
+function ja(a){for(var b,c=[];!(b=a.next()).done;)c.push(b.value);return c}
+(function(a){function b(a,b){if("function"===typeof window.CustomEvent)return new CustomEvent(a,b);var c=document.createEvent("CustomEvent");c.initCustomEvent(a,!!b.bubbles,!!b.cancelable,b.detail);return c}function c(a){if(B)return a.ownerDocument!==document?a.ownerDocument:null;var b=a.__importDoc;if(!b&&a.parentNode){b=a.parentNode;if("function"===typeof b.closest)b=b.closest("link[rel=import]");else for(;!g(b)&&(b=b.parentNode););a.__importDoc=b}return b}function d(a){var b=m(document,"link[rel=import]:not([import-dependency])"),
+c=b.length;c?p(b,function(b){return h(b,function(){0===--c&&a()})}):a()}function e(a){function b(){"loading"!==document.readyState&&document.body&&(document.removeEventListener("readystatechange",b),a())}document.addEventListener("readystatechange",b);b()}function f(a){e(function(){return d(function(){return a&&a()})})}function h(a,b){if(a.__loaded)b&&b();else if("script"===a.localName&&!a.src||"style"===a.localName&&!a.firstChild)a.__loaded=!0,b&&b();else{var c=function(d){a.removeEventListener(d.type,
+c);a.__loaded=!0;b&&b()};a.addEventListener("load",c);Ca&&"style"===a.localName||a.addEventListener("error",c)}}function g(a){return a.nodeType===Node.ELEMENT_NODE&&"link"===a.localName&&"import"===a.rel}function k(){var a=this;this.a={};this.b=0;this.c=new MutationObserver(function(b){return a.Aa(b)});this.c.observe(document.head,{childList:!0,subtree:!0});this.loadImports(document)}function l(a){p(m(a,"template"),function(a){p(m(a.content,'script:not([type]),script[type="application/javascript"],script[type="text/javascript"]'),
+function(a){var b=document.createElement("script");p(a.attributes,function(a){return b.setAttribute(a.name,a.value)});b.textContent=a.textContent;a.parentNode.replaceChild(b,a)});l(a.content)})}function m(a,b){return a.childNodes.length?a.querySelectorAll(b):T}function p(a,b,c){var d=a?a.length:0,e=c?-1:1;for(c=c?d-1:0;c<d&&0<=c;c+=e)b(a[c],c)}var x=document.createElement("link"),B="import"in x,T=x.querySelectorAll("*"),Da=null;!1==="currentScript"in document&&Object.defineProperty(document,"currentScript",
+{get:function(){return Da||("complete"!==document.readyState?document.scripts[document.scripts.length-1]:null)},configurable:!0});var vd=/(url\()([^)]*)(\))/g,wd=/(@import[\s]+(?!url\())([^;]*)(;)/g,xd=/(<link[^>]*)(rel=['|"]?stylesheet['|"]?[^>]*>)/g,F={ua:function(a,b){a.href&&a.setAttribute("href",F.P(a.getAttribute("href"),b));a.src&&a.setAttribute("src",F.P(a.getAttribute("src"),b));if("style"===a.localName){var c=F.fa(a.textContent,b,vd);a.textContent=F.fa(c,b,wd)}},fa:function(a,b,c){return a.replace(c,
+function(a,c,d,e){a=d.replace(/["']/g,"");b&&(a=F.P(a,b));return c+"'"+a+"'"+e})},P:function(a,b){if(void 0===F.V){F.V=!1;try{var c=new URL("b","http://a");c.pathname="c%20d";F.V="http://a/c%20d"===c.href}catch(Ye){}}if(F.V)return(new URL(a,b)).href;c=F.la;c||(c=document.implementation.createHTMLDocument("temp"),F.la=c,c.Z=c.createElement("base"),c.head.appendChild(c.Z),c.Y=c.createElement("a"));c.Z.href=b;c.Y.href=a;return c.Y.href||a}},zb={async:!0,load:function(a,b,c){if(a)if(a.match(/^data:/)){a=
+a.split(",");var d=a[1];d=-1<a[0].indexOf(";base64")?atob(d):decodeURIComponent(d);b(d)}else{var e=new XMLHttpRequest;e.open("GET",a,zb.async);e.onload=function(){var a=e.responseURL||e.getResponseHeader("Location");a&&0===a.indexOf("/")&&(a=(location.origin||location.protocol+"//"+location.host)+a);var d=e.response||e.responseText;304===e.status||0===e.status||200<=e.status&&300>e.status?b(d,a):c(d)};e.send()}else c("error: href must be specified")}},Ca=/Trident/.test(navigator.userAgent)||/Edge\/\d./i.test(navigator.userAgent);
+k.prototype.loadImports=function(a){var b=this;a=m(a,"link[rel=import]");p(a,function(a){return b.B(a)})};k.prototype.B=function(a){var b=this,c=a.href;if(void 0!==this.a[c]){var d=this.a[c];d&&d.__loaded&&(a.__import=d,this.i(a))}else this.b++,this.a[c]="pending",zb.load(c,function(a,d){a=b.Ba(a,d||c);b.a[c]=a;b.b--;b.loadImports(a);b.F()},function(){b.a[c]=null;b.b--;b.F()})};k.prototype.Ba=function(a,b){if(!a)return document.createDocumentFragment();Ca&&(a=a.replace(xd,function(a,b,c){return-1===
+a.indexOf("type=")?b+" type=import-disable "+c:a}));var c=document.createElement("template");c.innerHTML=a;if(c.content)a=c.content,l(a);else for(a=document.createDocumentFragment();c.firstChild;)a.appendChild(c.firstChild);if(c=a.querySelector("base"))b=F.P(c.getAttribute("href"),b),c.removeAttribute("href");c=m(a,'link[rel=import],link[rel=stylesheet][href][type=import-disable],style:not([type]),link[rel=stylesheet][href]:not([type]),script:not([type]),script[type="application/javascript"],script[type="text/javascript"]');
+var d=0;p(c,function(a){h(a);F.ua(a,b);a.setAttribute("import-dependency","");"script"===a.localName&&!a.src&&a.textContent&&(a.setAttribute("src","data:text/javascript;charset=utf-8,"+encodeURIComponent(a.textContent+("\n//# sourceURL="+b+(d?"-"+d:"")+".js\n"))),a.textContent="",d++)});return a};k.prototype.F=function(){var a=this;if(!this.b){this.c.disconnect();this.flatten(document);var b=!1,c=!1,d=function(){c&&b&&(a.loadImports(document),a.b||(a.c.observe(document.head,{childList:!0,subtree:!0}),
+a.ya()))};this.Da(function(){c=!0;d()});this.Ca(function(){b=!0;d()})}};k.prototype.flatten=function(a){var b=this;a=m(a,"link[rel=import]");p(a,function(a){var c=b.a[a.href];(a.__import=c)&&c.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(b.a[a.href]=a,a.readyState="loading",a.__import=a,b.flatten(c),a.appendChild(c))})};k.prototype.Ca=function(a){function b(e){if(e<d){var f=c[e],g=document.createElement("script");f.removeAttribute("import-dependency");p(f.attributes,function(a){return g.setAttribute(a.name,
+a.value)});Da=g;f.parentNode.replaceChild(g,f);h(g,function(){Da=null;b(e+1)})}else a()}var c=m(document,"script[import-dependency]"),d=c.length;b(0)};k.prototype.Da=function(a){var b=m(document,"style[import-dependency],link[rel=stylesheet][import-dependency]"),d=b.length;if(d){var e=Ca&&!!document.querySelector("link[rel=stylesheet][href][type=import-disable]");p(b,function(b){h(b,function(){b.removeAttribute("import-dependency");0===--d&&a()});if(e&&b.parentNode!==document.head){var f=document.createElement(b.localName);
+f.__appliedElement=b;f.setAttribute("type","import-placeholder");b.parentNode.insertBefore(f,b.nextSibling);for(f=c(b);f&&c(f);)f=c(f);f.parentNode!==document.head&&(f=null);document.head.insertBefore(b,f);b.removeAttribute("type")}})}else a()};k.prototype.ya=function(){var a=this,b=m(document,"link[rel=import]");p(b,function(b){return a.i(b)},!0)};k.prototype.i=function(a){a.__loaded||(a.__loaded=!0,a.import&&(a.import.readyState="complete"),a.dispatchEvent(b(a.import?"load":"error",{bubbles:!1,
+cancelable:!1,detail:void 0})))};k.prototype.Aa=function(a){var b=this;p(a,function(a){return p(a.addedNodes,function(a){a&&a.nodeType===Node.ELEMENT_NODE&&(g(a)?b.B(a):b.loadImports(a))})})};var Ea=null;if(B)x=m(document,"link[rel=import]"),p(x,function(a){a.import&&"loading"===a.import.readyState||(a.__loaded=!0)}),x=function(a){a=a.target;g(a)&&(a.__loaded=!0)},document.addEventListener("load",x,!0),document.addEventListener("error",x,!0);else{var aa=Object.getOwnPropertyDescriptor(Node.prototype,
+"baseURI");Object.defineProperty((!aa||aa.configurable?Node:Element).prototype,"baseURI",{get:function(){var a=g(this)?this:c(this);return a?a.href:aa&&aa.get?aa.get.call(this):(document.querySelector("base")||window.location).href},configurable:!0,enumerable:!0});Object.defineProperty(HTMLLinkElement.prototype,"import",{get:function(){return this.__import||null},configurable:!0,enumerable:!0});e(function(){Ea=new k})}f(function(){return document.dispatchEvent(b("HTMLImportsLoaded",{cancelable:!0,
+bubbles:!0,detail:void 0}))});a.useNative=B;a.whenReady=f;a.importForElement=c;a.loadImports=function(a){Ea&&Ea.loadImports(a)}})(window.HTMLImports=window.HTMLImports||{});/*
+
+Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+function ka(){this.ea=this.root=null;this.N=!1;this.v=this.J=this.W=this.assignedSlot=this.assignedNodes=this.C=null;this.childNodes=this.nextSibling=this.previousSibling=this.lastChild=this.firstChild=this.parentNode=this.G=void 0;this.ja=this.$=!1}ka.prototype.toJSON=function(){return{}};function r(a){a.T||(a.T=new ka);return a.T}function t(a){return a&&a.T};var u=window.ShadyDOM||{};u.wa=!(!Element.prototype.attachShadow||!Node.prototype.getRootNode);var la=Object.getOwnPropertyDescriptor(Node.prototype,"firstChild");u.o=!!(la&&la.configurable&&la.get);u.ca=u.force||!u.wa;var ma=navigator.userAgent.match("Trident"),na=navigator.userAgent.match("Edge");void 0===u.ha&&(u.ha=u.o&&(ma||na));function v(a){return(a=t(a))&&void 0!==a.firstChild}function w(a){return"ShadyRoot"===a.na}function y(a){a=a.getRootNode();if(w(a))return a}
+var z=Element.prototype,oa=z.matches||z.matchesSelector||z.mozMatchesSelector||z.msMatchesSelector||z.oMatchesSelector||z.webkitMatchesSelector;function pa(a,b){if(a&&b)for(var c=Object.getOwnPropertyNames(b),d=0,e;d<c.length&&(e=c[d]);d++){var f=Object.getOwnPropertyDescriptor(b,e);f&&Object.defineProperty(a,e,f)}}function qa(a,b){for(var c=[],d=1;d<arguments.length;++d)c[d-1]=arguments[d];for(d=0;d<c.length;d++)pa(a,c[d]);return a}function ra(a,b){for(var c in b)a[c]=b[c]}
+var sa=document.createTextNode(""),ta=0,ua=[];(new MutationObserver(function(){for(;ua.length;)try{ua.shift()()}catch(a){throw sa.textContent=ta++,a;}})).observe(sa,{characterData:!0});function va(a){ua.push(a);sa.textContent=ta++}var wa=!!document.contains;function xa(a,b){for(;b;){if(b==a)return!0;b=b.parentNode}return!1};var ya=[],za;function Aa(a){za||(za=!0,va(Ba));ya.push(a)}function Ba(){za=!1;for(var a=!!ya.length;ya.length;)ya.shift()();return a}Ba.list=ya;function Fa(){this.a=!1;this.addedNodes=[];this.removedNodes=[];this.M=new Set}function Ga(a){a.a||(a.a=!0,va(function(){Ha(a)}))}function Ha(a){if(a.a){a.a=!1;var b=a.takeRecords();b.length&&a.M.forEach(function(a){a(b)})}}Fa.prototype.takeRecords=function(){if(this.addedNodes.length||this.removedNodes.length){var a=[{addedNodes:this.addedNodes,removedNodes:this.removedNodes}];this.addedNodes=[];this.removedNodes=[];return a}return[]};
+function Ia(a,b){var c=r(a);c.C||(c.C=new Fa);c.C.M.add(b);var d=c.C;return{ma:b,pa:d,oa:a,takeRecords:function(){return d.takeRecords()}}}function Ja(a){var b=a&&a.pa;b&&(b.M.delete(a.ma),b.M.size||(r(a.oa).C=null))}
+function Ka(a,b){var c=b.getRootNode();return a.map(function(a){var b=c===a.target.getRootNode();if(b&&a.addedNodes){if(b=Array.from(a.addedNodes).filter(function(a){return c===a.getRootNode()}),b.length)return a=Object.create(a),Object.defineProperty(a,"addedNodes",{value:b,configurable:!0}),a}else if(b)return a}).filter(function(a){return a})};var A={},La=Element.prototype.insertBefore,Ma=Element.prototype.replaceChild,Na=Element.prototype.removeChild,Oa=Element.prototype.setAttribute,Pa=Element.prototype.removeAttribute,Qa=Element.prototype.cloneNode,Ra=Document.prototype.importNode,Sa=Element.prototype.addEventListener,Ta=Element.prototype.removeEventListener,Ua=Window.prototype.addEventListener,Va=Window.prototype.removeEventListener,Wa=Element.prototype.dispatchEvent,Xa=Node.prototype.contains||HTMLElement.prototype.contains,Ya=Document.prototype.getElementById,
+Za=Element.prototype.querySelector,$a=DocumentFragment.prototype.querySelector,ab=Document.prototype.querySelector,bb=Element.prototype.querySelectorAll,cb=DocumentFragment.prototype.querySelectorAll,db=Document.prototype.querySelectorAll;A.appendChild=Element.prototype.appendChild;A.insertBefore=La;A.replaceChild=Ma;A.removeChild=Na;A.setAttribute=Oa;A.removeAttribute=Pa;A.cloneNode=Qa;A.importNode=Ra;A.addEventListener=Sa;A.removeEventListener=Ta;A.Ia=Ua;A.Ja=Va;A.dispatchEvent=Wa;A.contains=Xa;
+A.getElementById=Ya;A.Ra=Za;A.Ua=$a;A.Pa=ab;A.querySelector=function(a){switch(this.nodeType){case Node.ELEMENT_NODE:return Za.call(this,a);case Node.DOCUMENT_NODE:return ab.call(this,a);default:return $a.call(this,a)}};A.Sa=bb;A.Va=cb;A.Qa=db;A.querySelectorAll=function(a){switch(this.nodeType){case Node.ELEMENT_NODE:return bb.call(this,a);case Node.DOCUMENT_NODE:return db.call(this,a);default:return cb.call(this,a)}};var eb=/[&\u00A0"]/g,fb=/[&\u00A0<>]/g;function gb(a){switch(a){case "&":return"&amp;";case "<":return"&lt;";case ">":return"&gt;";case '"':return"&quot;";case "\u00a0":return"&nbsp;"}}function hb(a){for(var b={},c=0;c<a.length;c++)b[a[c]]=!0;return b}var ib=hb("area base br col command embed hr img input keygen link meta param source track wbr".split(" ")),jb=hb("style script xmp iframe noembed noframes plaintext noscript".split(" "));
+function kb(a,b){"template"===a.localName&&(a=a.content);for(var c="",d=b?b(a):a.childNodes,e=0,f=d.length,h;e<f&&(h=d[e]);e++){a:{var g=h;var k=a;var l=b;switch(g.nodeType){case Node.ELEMENT_NODE:for(var m=g.localName,p="<"+m,x=g.attributes,B=0;k=x[B];B++)p+=" "+k.name+'="'+k.value.replace(eb,gb)+'"';p+=">";g=ib[m]?p:p+kb(g,l)+"</"+m+">";break a;case Node.TEXT_NODE:g=g.data;g=k&&jb[k.localName]?g:g.replace(fb,gb);break a;case Node.COMMENT_NODE:g="\x3c!--"+g.data+"--\x3e";break a;default:throw window.console.error(g),
+Error("not implemented");}}c+=g}return c};var C={},D=document.createTreeWalker(document,NodeFilter.SHOW_ALL,null,!1),E=document.createTreeWalker(document,NodeFilter.SHOW_ELEMENT,null,!1);function lb(a){var b=[];D.currentNode=a;for(a=D.firstChild();a;)b.push(a),a=D.nextSibling();return b}C.parentNode=function(a){D.currentNode=a;return D.parentNode()};C.firstChild=function(a){D.currentNode=a;return D.firstChild()};C.lastChild=function(a){D.currentNode=a;return D.lastChild()};C.previousSibling=function(a){D.currentNode=a;return D.previousSibling()};
+C.nextSibling=function(a){D.currentNode=a;return D.nextSibling()};C.childNodes=lb;C.parentElement=function(a){E.currentNode=a;return E.parentNode()};C.firstElementChild=function(a){E.currentNode=a;return E.firstChild()};C.lastElementChild=function(a){E.currentNode=a;return E.lastChild()};C.previousElementSibling=function(a){E.currentNode=a;return E.previousSibling()};C.nextElementSibling=function(a){E.currentNode=a;return E.nextSibling()};
+C.children=function(a){var b=[];E.currentNode=a;for(a=E.firstChild();a;)b.push(a),a=E.nextSibling();return b};C.innerHTML=function(a){return kb(a,function(a){return lb(a)})};C.textContent=function(a){switch(a.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:a=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1);for(var b="",c;c=a.nextNode();)b+=c.nodeValue;return b;default:return a.nodeValue}};var G={},mb=u.o,nb=[Node.prototype,Element.prototype,HTMLElement.prototype];function H(a){var b;a:{for(b=0;b<nb.length;b++){var c=nb[b];if(c.hasOwnProperty(a)){b=c;break a}}b=void 0}if(!b)throw Error("Could not find descriptor for "+a);return Object.getOwnPropertyDescriptor(b,a)}
+var I=mb?{parentNode:H("parentNode"),firstChild:H("firstChild"),lastChild:H("lastChild"),previousSibling:H("previousSibling"),nextSibling:H("nextSibling"),childNodes:H("childNodes"),parentElement:H("parentElement"),previousElementSibling:H("previousElementSibling"),nextElementSibling:H("nextElementSibling"),innerHTML:H("innerHTML"),textContent:H("textContent"),firstElementChild:H("firstElementChild"),lastElementChild:H("lastElementChild"),children:H("children")}:{},ob=mb?{firstElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,
+"firstElementChild"),lastElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,"lastElementChild"),children:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,"children")}:{},pb=mb?{firstElementChild:Object.getOwnPropertyDescriptor(Document.prototype,"firstElementChild"),lastElementChild:Object.getOwnPropertyDescriptor(Document.prototype,"lastElementChild"),children:Object.getOwnPropertyDescriptor(Document.prototype,"children")}:{};G.da=I;G.Ta=ob;G.Oa=pb;G.parentNode=function(a){return I.parentNode.get.call(a)};
+G.firstChild=function(a){return I.firstChild.get.call(a)};G.lastChild=function(a){return I.lastChild.get.call(a)};G.previousSibling=function(a){return I.previousSibling.get.call(a)};G.nextSibling=function(a){return I.nextSibling.get.call(a)};G.childNodes=function(a){return Array.prototype.slice.call(I.childNodes.get.call(a))};G.parentElement=function(a){return I.parentElement.get.call(a)};G.previousElementSibling=function(a){return I.previousElementSibling.get.call(a)};G.nextElementSibling=function(a){return I.nextElementSibling.get.call(a)};
+G.innerHTML=function(a){return I.innerHTML.get.call(a)};G.textContent=function(a){return I.textContent.get.call(a)};G.children=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:a=ob.children.get.call(a);break;case Node.DOCUMENT_NODE:a=pb.children.get.call(a);break;default:a=I.children.get.call(a)}return Array.prototype.slice.call(a)};
+G.firstElementChild=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return ob.firstElementChild.get.call(a);case Node.DOCUMENT_NODE:return pb.firstElementChild.get.call(a);default:return I.firstElementChild.get.call(a)}};G.lastElementChild=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return ob.lastElementChild.get.call(a);case Node.DOCUMENT_NODE:return pb.lastElementChild.get.call(a);default:return I.lastElementChild.get.call(a)}};var J=u.ha?G:C;function qb(a){for(;a.firstChild;)a.removeChild(a.firstChild)}
+var rb=u.o,sb=document.implementation.createHTMLDocument("inert"),tb=Object.getOwnPropertyDescriptor(Node.prototype,"isConnected"),ub=tb&&tb.get,vb=Object.getOwnPropertyDescriptor(Document.prototype,"activeElement"),wb={parentElement:{get:function(){var a=t(this);(a=a&&a.parentNode)&&a.nodeType!==Node.ELEMENT_NODE&&(a=null);return void 0!==a?a:J.parentElement(this)},configurable:!0},parentNode:{get:function(){var a=t(this);a=a&&a.parentNode;return void 0!==a?a:J.parentNode(this)},configurable:!0},
+nextSibling:{get:function(){var a=t(this);a=a&&a.nextSibling;return void 0!==a?a:J.nextSibling(this)},configurable:!0},previousSibling:{get:function(){var a=t(this);a=a&&a.previousSibling;return void 0!==a?a:J.previousSibling(this)},configurable:!0},nextElementSibling:{get:function(){var a=t(this);if(a&&void 0!==a.nextSibling){for(a=this.nextSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return J.nextElementSibling(this)},configurable:!0},previousElementSibling:{get:function(){var a=
+t(this);if(a&&void 0!==a.previousSibling){for(a=this.previousSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return J.previousElementSibling(this)},configurable:!0}},xb={className:{get:function(){return this.getAttribute("class")||""},set:function(a){this.setAttribute("class",a)},configurable:!0}},yb={childNodes:{get:function(){if(v(this)){var a=t(this);if(!a.childNodes){a.childNodes=[];for(var b=this.firstChild;b;b=b.nextSibling)a.childNodes.push(b)}var c=a.childNodes}else c=
+J.childNodes(this);c.item=function(a){return c[a]};return c},configurable:!0},childElementCount:{get:function(){return this.children.length},configurable:!0},firstChild:{get:function(){var a=t(this);a=a&&a.firstChild;return void 0!==a?a:J.firstChild(this)},configurable:!0},lastChild:{get:function(){var a=t(this);a=a&&a.lastChild;return void 0!==a?a:J.lastChild(this)},configurable:!0},textContent:{get:function(){if(v(this)){for(var a=[],b=0,c=this.childNodes,d;d=c[b];b++)d.nodeType!==Node.COMMENT_NODE&&
+a.push(d.textContent);return a.join("")}return J.textContent(this)},set:function(a){if("undefined"===typeof a||null===a)a="";switch(this.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:if(!v(this)&&rb){var b=this.firstChild;(b!=this.lastChild||b&&b.nodeType!=Node.TEXT_NODE)&&qb(this);G.da.textContent.set.call(this,a)}else qb(this),(0<a.length||this.nodeType===Node.ELEMENT_NODE)&&this.appendChild(document.createTextNode(a));break;default:this.nodeValue=a}},configurable:!0},firstElementChild:{get:function(){var a=
+t(this);if(a&&void 0!==a.firstChild){for(a=this.firstChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return J.firstElementChild(this)},configurable:!0},lastElementChild:{get:function(){var a=t(this);if(a&&void 0!==a.lastChild){for(a=this.lastChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return J.lastElementChild(this)},configurable:!0},children:{get:function(){var a=v(this)?Array.prototype.filter.call(this.childNodes,function(a){return a.nodeType===Node.ELEMENT_NODE}):
+J.children(this);a.item=function(b){return a[b]};return a},configurable:!0},innerHTML:{get:function(){return v(this)?kb("template"===this.localName?this.content:this):J.innerHTML(this)},set:function(a){var b="template"===this.localName?this.content:this;qb(b);var c=this.localName;c&&"template"!==c||(c="div");c=sb.createElement(c);for(rb?G.da.innerHTML.set.call(c,a):c.innerHTML=a;c.firstChild;)b.appendChild(c.firstChild)},configurable:!0}},Ab={shadowRoot:{get:function(){var a=t(this);return a&&a.ea||
+null},configurable:!0}},Bb={activeElement:{get:function(){var a=vb&&vb.get?vb.get.call(document):u.o?void 0:document.activeElement;if(a&&a.nodeType){var b=!!w(this);if(this===document||b&&this.host!==a&&A.contains.call(this.host,a)){for(b=y(a);b&&b!==this;)a=b.host,b=y(a);a=this===document?b?null:a:b===this?a:null}else a=null}else a=null;return a},set:function(){},configurable:!0}};
+function K(a,b,c){for(var d in b){var e=Object.getOwnPropertyDescriptor(a,d);e&&e.configurable||!e&&c?Object.defineProperty(a,d,b[d]):c&&console.warn("Could not define",d,"on",a)}}function L(a){K(a,wb);K(a,xb);K(a,yb);K(a,Bb)}
+function Cb(){var a=Db.prototype;a.__proto__=DocumentFragment.prototype;K(a,wb,!0);K(a,yb,!0);K(a,Bb,!0);Object.defineProperties(a,{nodeType:{value:Node.DOCUMENT_FRAGMENT_NODE,configurable:!0},nodeName:{value:"#document-fragment",configurable:!0},nodeValue:{value:null,configurable:!0}});["localName","namespaceURI","prefix"].forEach(function(b){Object.defineProperty(a,b,{value:void 0,configurable:!0})});["ownerDocument","baseURI","isConnected"].forEach(function(b){Object.defineProperty(a,b,{get:function(){return this.host[b]},
+configurable:!0})})}var Eb=u.o?function(){}:function(a){var b=r(a);b.$||(b.$=!0,K(a,wb,!0),K(a,xb,!0))},Fb=u.o?function(){}:function(a){r(a).ja||(K(a,yb,!0),K(a,Ab,!0))};var Gb=J.childNodes;function Hb(a,b,c){Eb(a);c=c||null;var d=r(a),e=r(b),f=c?r(c):null;d.previousSibling=c?f.previousSibling:b.lastChild;if(f=t(d.previousSibling))f.nextSibling=a;if(f=t(d.nextSibling=c))f.previousSibling=a;d.parentNode=b;c?c===e.firstChild&&(e.firstChild=a):(e.lastChild=a,e.firstChild||(e.firstChild=a));e.childNodes=null}
+function Ib(a,b){var c=r(a);if(void 0===c.firstChild)for(b=b||Gb(a),c.firstChild=b[0]||null,c.lastChild=b[b.length-1]||null,Fb(a),c=0;c<b.length;c++){var d=b[c],e=r(d);e.parentNode=a;e.nextSibling=b[c+1]||null;e.previousSibling=b[c-1]||null;Eb(d)}};var Jb=J.parentNode;
+function Kb(a,b,c){if(b===a)throw Error("Failed to execute 'appendChild' on 'Node': The new child element contains the parent.");if(c){var d=t(c);d=d&&d.parentNode;if(void 0!==d&&d!==a||void 0===d&&Jb(c)!==a)throw Error("Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.");}if(c===b)return b;b.parentNode&&Lb(b.parentNode,b);var e,f;if(!b.__noInsertionPoint){if(f=e=y(a)){var h;"slot"===b.localName?h=[b]:b.querySelectorAll&&
+(h=b.querySelectorAll("slot"));f=h&&h.length?h:void 0}f&&(h=e,d=f,h.m=h.m||[],h.f=h.f||[],h.g=h.g||{},h.m.push.apply(h.m,[].concat(d instanceof Array?d:ja(ia(d)))))}("slot"===a.localName||f)&&(e=e||y(a))&&M(e);if(v(a)){e=c;Fb(a);f=r(a);void 0!==f.firstChild&&(f.childNodes=null);if(b.nodeType===Node.DOCUMENT_FRAGMENT_NODE){f=b.childNodes;for(h=0;h<f.length;h++)Hb(f[h],a,e);e=r(b);f=void 0!==e.firstChild?null:void 0;e.firstChild=e.lastChild=f;e.childNodes=f}else Hb(b,a,e);e=t(a);if(Mb(a)){M(e.root);
+var g=!0}else e.root&&(g=!0)}g||(g=w(a)?a.host:a,c?(c=Nb(c),A.insertBefore.call(g,b,c)):A.appendChild.call(g,b));Ob(a,b);return b}
+function Lb(a,b){if(b.parentNode!==a)throw Error("The node to be removed is not a child of this node: "+b);var c=y(b),d=t(a);if(v(a)){var e=r(b),f=r(a);b===f.firstChild&&(f.firstChild=e.nextSibling);b===f.lastChild&&(f.lastChild=e.previousSibling);var h=e.previousSibling,g=e.nextSibling;h&&(r(h).nextSibling=g);g&&(r(g).previousSibling=h);e.parentNode=e.previousSibling=e.nextSibling=void 0;void 0!==f.childNodes&&(f.childNodes=null);if(Mb(a)){M(d.root);var k=!0}}Pb(b);if(c){(e=a&&"slot"===a.localName)&&
+(k=!0);if(c.f){Qb(c);f=c.g;for(T in f)for(h=f[T],g=0;g<h.length;g++){var l=h[g];if(xa(b,l)){h.splice(g,1);var m=c.f.indexOf(l);0<=m&&c.f.splice(m,1);g--;m=t(l);if(l=m.v)for(var p=0;p<l.length;p++){var x=l[p],B=Rb(x);B&&A.removeChild.call(B,x)}m.v=[];m.assignedNodes=[];m=!0}}var T=m}else T=void 0;(T||e)&&M(c)}k||(k=w(a)?a.host:a,(!d.root&&"slot"!==b.localName||k===Jb(b))&&A.removeChild.call(k,b));Ob(a,null,b);return b}
+function Pb(a){var b=t(a);if(b&&void 0!==b.G){b=a.childNodes;for(var c=0,d=b.length,e;c<d&&(e=b[c]);c++)Pb(e)}if(a=t(a))a.G=void 0}function Nb(a){var b=a;a&&"slot"===a.localName&&(b=(b=(b=t(a))&&b.v)&&b.length?b[0]:Nb(a.nextSibling));return b}function Mb(a){return(a=(a=t(a))&&a.root)&&Sb(a)}
+function Tb(a,b){if("slot"===b)a=a.parentNode,Mb(a)&&M(t(a).root);else if("slot"===a.localName&&"name"===b&&(b=y(a))){if(b.f){var c=a.ka,d=Ub(a);if(d!==c){c=b.g[c];var e=c.indexOf(a);0<=e&&c.splice(e,1);c=b.g[d]||(b.g[d]=[]);c.push(a);1<c.length&&(b.g[d]=Vb(c))}}M(b)}}function Ob(a,b,c){if(a=(a=t(a))&&a.C)b&&a.addedNodes.push(b),c&&a.removedNodes.push(c),Ga(a)}
+function Wb(a){if(a&&a.nodeType){var b=r(a),c=b.G;void 0===c&&(w(a)?(c=a,b.G=c):(c=(c=a.parentNode)?Wb(c):a,A.contains.call(document.documentElement,a)&&(b.G=c)));return c}}function Xb(a,b,c){var d=[];Yb(a.childNodes,b,c,d);return d}function Yb(a,b,c,d){for(var e=0,f=a.length,h;e<f&&(h=a[e]);e++){var g;if(g=h.nodeType===Node.ELEMENT_NODE){g=h;var k=b,l=c,m=d,p=k(g);p&&m.push(g);l&&l(p)?g=p:(Yb(g.childNodes,k,l,m),g=void 0)}if(g)break}}var Zb=null;
+function $b(a,b,c){Zb||(Zb=window.ShadyCSS&&window.ShadyCSS.ScopingShim);Zb&&"class"===b?Zb.setElementClass(a,c):(A.setAttribute.call(a,b,c),Tb(a,b))}function ac(a,b){if(a.ownerDocument!==document)return A.importNode.call(document,a,b);var c=A.importNode.call(document,a,!1);if(b){a=a.childNodes;b=0;for(var d;b<a.length;b++)d=ac(a[b],!0),c.appendChild(d)}return c};var bc="__eventWrappers"+Date.now(),cc={blur:!0,focus:!0,focusin:!0,focusout:!0,click:!0,dblclick:!0,mousedown:!0,mouseenter:!0,mouseleave:!0,mousemove:!0,mouseout:!0,mouseover:!0,mouseup:!0,wheel:!0,beforeinput:!0,input:!0,keydown:!0,keyup:!0,compositionstart:!0,compositionupdate:!0,compositionend:!0,touchstart:!0,touchend:!0,touchmove:!0,touchcancel:!0,pointerover:!0,pointerenter:!0,pointerdown:!0,pointermove:!0,pointerup:!0,pointercancel:!0,pointerout:!0,pointerleave:!0,gotpointercapture:!0,lostpointercapture:!0,
+dragstart:!0,drag:!0,dragenter:!0,dragleave:!0,dragover:!0,drop:!0,dragend:!0,DOMActivate:!0,DOMFocusIn:!0,DOMFocusOut:!0,keypress:!0};function dc(a,b){var c=[],d=a;for(a=a===window?window:a.getRootNode();d;)c.push(d),d=d.assignedSlot?d.assignedSlot:d.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&d.host&&(b||d!==a)?d.host:d.parentNode;c[c.length-1]===document&&c.push(window);return c}
+function ec(a,b){if(!w)return a;a=dc(a,!0);for(var c=0,d,e,f,h;c<b.length;c++)if(d=b[c],f=d===window?window:d.getRootNode(),f!==e&&(h=a.indexOf(f),e=f),!w(f)||-1<h)return d}
+var fc={get composed(){!1!==this.isTrusted&&void 0===this.R&&(this.R=cc[this.type]);return this.R||!1},composedPath:function(){this.b||(this.b=dc(this.__target,this.composed));return this.b},get target(){return ec(this.currentTarget,this.composedPath())},get relatedTarget(){if(!this.S)return null;this.c||(this.c=dc(this.S,!0));return ec(this.currentTarget,this.c)},stopPropagation:function(){Event.prototype.stopPropagation.call(this);this.a=!0},stopImmediatePropagation:function(){Event.prototype.stopImmediatePropagation.call(this);
+this.a=this.i=!0}};function gc(a){function b(b,d){b=new a(b,d);b.R=d&&!!d.composed;return b}ra(b,a);b.prototype=a.prototype;return b}var hc={focus:!0,blur:!0};function ic(a){return a.__target!==a.target||a.S!==a.relatedTarget}function jc(a,b,c){if(c=b.__handlers&&b.__handlers[a.type]&&b.__handlers[a.type][c])for(var d=0,e;(e=c[d])&&(!ic(a)||a.target!==a.relatedTarget)&&(e.call(b,a),!a.i);d++);}
+function kc(a){var b=a.composedPath();Object.defineProperty(a,"currentTarget",{get:function(){return d},configurable:!0});for(var c=b.length-1;0<=c;c--){var d=b[c];jc(a,d,"capture");if(a.a)return}Object.defineProperty(a,"eventPhase",{get:function(){return Event.AT_TARGET}});var e;for(c=0;c<b.length;c++){d=b[c];var f=t(d);f=f&&f.root;if(0===c||f&&f===e)if(jc(a,d,"bubble"),d!==window&&(e=d.getRootNode()),a.a)break}}
+function lc(a,b,c,d,e,f){for(var h=0;h<a.length;h++){var g=a[h],k=g.type,l=g.capture,m=g.once,p=g.passive;if(b===g.node&&c===k&&d===l&&e===m&&f===p)return h}return-1}
+function mc(a,b,c){if(b){var d=typeof b;if("function"===d||"object"===d)if("object"!==d||b.handleEvent&&"function"===typeof b.handleEvent){if(c&&"object"===typeof c){var e=!!c.capture;var f=!!c.once;var h=!!c.passive}else e=!!c,h=f=!1;var g=c&&c.U||this,k=b[bc];if(k){if(-1<lc(k,g,a,e,f,h))return}else b[bc]=[];k=function(e){f&&this.removeEventListener(a,b,c);e.__target||nc(e);if(g!==this){var h=Object.getOwnPropertyDescriptor(e,"currentTarget");Object.defineProperty(e,"currentTarget",{get:function(){return g},
+configurable:!0})}if(e.composed||-1<e.composedPath().indexOf(g))if(ic(e)&&e.target===e.relatedTarget)e.eventPhase===Event.BUBBLING_PHASE&&e.stopImmediatePropagation();else if(e.eventPhase===Event.CAPTURING_PHASE||e.bubbles||e.target===g||g instanceof Window){var k="function"===d?b.call(g,e):b.handleEvent&&b.handleEvent(e);g!==this&&(h?(Object.defineProperty(e,"currentTarget",h),h=null):delete e.currentTarget);return k}};b[bc].push({node:g,type:a,capture:e,once:f,passive:h,Ka:k});hc[a]?(this.__handlers=
+this.__handlers||{},this.__handlers[a]=this.__handlers[a]||{capture:[],bubble:[]},this.__handlers[a][e?"capture":"bubble"].push(k)):(this instanceof Window?A.Ia:A.addEventListener).call(this,a,k,c)}}}
+function oc(a,b,c){if(b){if(c&&"object"===typeof c){var d=!!c.capture;var e=!!c.once;var f=!!c.passive}else d=!!c,f=e=!1;var h=c&&c.U||this,g=void 0;var k=null;try{k=b[bc]}catch(l){}k&&(e=lc(k,h,a,d,e,f),-1<e&&(g=k.splice(e,1)[0].Ka,k.length||(b[bc]=void 0)));(this instanceof Window?A.Ja:A.removeEventListener).call(this,a,g||b,c);g&&hc[a]&&this.__handlers&&this.__handlers[a]&&(a=this.__handlers[a][d?"capture":"bubble"],g=a.indexOf(g),-1<g&&a.splice(g,1))}}
+function pc(){for(var a in hc)window.addEventListener(a,function(a){a.__target||(nc(a),kc(a))},!0)}function nc(a){a.__target=a.target;a.S=a.relatedTarget;if(u.o){var b=Object.getPrototypeOf(a);if(!b.hasOwnProperty("__patchProto")){var c=Object.create(b);c.Ma=b;pa(c,fc);b.__patchProto=c}a.__proto__=b.__patchProto}else pa(a,fc)}var qc=gc(window.Event),rc=gc(window.CustomEvent),sc=gc(window.MouseEvent);function tc(a,b){return{index:a,H:[],L:b}}
+function uc(a,b,c,d){var e=0,f=0,h=0,g=0,k=Math.min(b-e,d-f);if(0==e&&0==f)a:{for(h=0;h<k;h++)if(a[h]!==c[h])break a;h=k}if(b==a.length&&d==c.length){g=a.length;for(var l=c.length,m=0;m<k-h&&vc(a[--g],c[--l]);)m++;g=m}e+=h;f+=h;b-=g;d-=g;if(0==b-e&&0==d-f)return[];if(e==b){for(b=tc(e,0);f<d;)b.H.push(c[f++]);return[b]}if(f==d)return[tc(e,b-e)];k=e;h=f;d=d-h+1;g=b-k+1;b=Array(d);for(l=0;l<d;l++)b[l]=Array(g),b[l][0]=l;for(l=0;l<g;l++)b[0][l]=l;for(l=1;l<d;l++)for(m=1;m<g;m++)if(a[k+m-1]===c[h+l-1])b[l][m]=
+b[l-1][m-1];else{var p=b[l-1][m]+1,x=b[l][m-1]+1;b[l][m]=p<x?p:x}k=b.length-1;h=b[0].length-1;d=b[k][h];for(a=[];0<k||0<h;)0==k?(a.push(2),h--):0==h?(a.push(3),k--):(g=b[k-1][h-1],l=b[k-1][h],m=b[k][h-1],p=l<m?l<g?l:g:m<g?m:g,p==g?(g==d?a.push(0):(a.push(1),d=g),k--,h--):p==l?(a.push(3),k--,d=l):(a.push(2),h--,d=m));a.reverse();b=void 0;k=[];for(h=0;h<a.length;h++)switch(a[h]){case 0:b&&(k.push(b),b=void 0);e++;f++;break;case 1:b||(b=tc(e,0));b.L++;e++;b.H.push(c[f]);f++;break;case 2:b||(b=tc(e,0));
+b.L++;e++;break;case 3:b||(b=tc(e,0)),b.H.push(c[f]),f++}b&&k.push(b);return k}function vc(a,b){return a===b};var Rb=J.parentNode,wc=J.childNodes,xc={};function yc(a){var b=[];do b.unshift(a);while(a=a.parentNode);return b}function Db(a,b,c){if(a!==xc)throw new TypeError("Illegal constructor");this.na="ShadyRoot";a=wc(b);this.host=b;this.a=c&&c.mode;Ib(b,a);c=t(b);c.root=this;c.ea="closed"!==this.a?this:null;c=r(this);c.firstChild=c.lastChild=c.parentNode=c.nextSibling=c.previousSibling=null;c.childNodes=[];this.K=!1;this.m=this.g=this.f=null;c=0;for(var d=a.length;c<d;c++)A.removeChild.call(b,a[c])}
+function M(a){a.K||(a.K=!0,Aa(function(){return zc(a)}))}function zc(a){for(var b;a;){a.K&&(b=a);a:{var c=a;a=c.host.getRootNode();if(w(a))for(var d=c.host.childNodes,e=0;e<d.length;e++)if(c=d[e],"slot"==c.localName)break a;a=void 0}}b&&b._renderRoot()}
+Db.prototype._renderRoot=function(){this.K=!1;if(this.f){Qb(this);for(var a=0,b;a<this.f.length;a++){b=this.f[a];var c=t(b),d=c.assignedNodes;c.assignedNodes=[];c.v=[];if(c.W=d)for(c=0;c<d.length;c++){var e=t(d[c]);e.J=e.assignedSlot;e.assignedSlot===b&&(e.assignedSlot=null)}}for(b=this.host.firstChild;b;b=b.nextSibling)Ac(this,b);for(a=0;a<this.f.length;a++){b=this.f[a];d=t(b);if(!d.assignedNodes.length)for(c=b.firstChild;c;c=c.nextSibling)Ac(this,c,b);(c=(c=t(b.parentNode))&&c.root)&&Sb(c)&&c._renderRoot();
+Bc(this,d.v,d.assignedNodes);if(c=d.W){for(e=0;e<c.length;e++)t(c[e]).J=null;d.W=null;c.length>d.assignedNodes.length&&(d.N=!0)}d.N&&(d.N=!1,Cc(this,b))}a=this.f;b=[];for(d=0;d<a.length;d++)c=a[d].parentNode,(e=t(c))&&e.root||!(0>b.indexOf(c))||b.push(c);for(a=0;a<b.length;a++){d=b[a];c=d===this?this.host:d;e=[];d=d.childNodes;for(var f=0;f<d.length;f++){var h=d[f];if("slot"==h.localName){h=t(h).v;for(var g=0;g<h.length;g++)e.push(h[g])}else e.push(h)}d=void 0;f=wc(c);h=uc(e,e.length,f,f.length);
+for(var k=g=0;g<h.length&&(d=h[g]);g++){for(var l=0,m;l<d.H.length&&(m=d.H[l]);l++)Rb(m)===c&&A.removeChild.call(c,m),f.splice(d.index+k,1);k-=d.L}for(k=0;k<h.length&&(d=h[k]);k++)for(g=f[d.index],l=d.index;l<d.index+d.L;l++)m=e[l],A.insertBefore.call(c,m,g),f.splice(l,0,m)}}};function Ac(a,b,c){var d=r(b),e=d.J;d.J=null;c||(c=(a=a.g[b.slot||"__catchall"])&&a[0]);c?(r(c).assignedNodes.push(b),d.assignedSlot=c):d.assignedSlot=void 0;e!==d.assignedSlot&&d.assignedSlot&&(r(d.assignedSlot).N=!0)}
+function Bc(a,b,c){for(var d=0,e;d<c.length&&(e=c[d]);d++)if("slot"==e.localName){var f=t(e).assignedNodes;f&&f.length&&Bc(a,b,f)}else b.push(c[d])}function Cc(a,b){A.dispatchEvent.call(b,new Event("slotchange"));b=t(b);b.assignedSlot&&Cc(a,b.assignedSlot)}function Qb(a){if(a.m&&a.m.length){for(var b=a.m,c,d=0;d<b.length;d++){var e=b[d];Ib(e);Ib(e.parentNode);var f=Ub(e);a.g[f]?(c=c||{},c[f]=!0,a.g[f].push(e)):a.g[f]=[e];a.f.push(e)}if(c)for(var h in c)a.g[h]=Vb(a.g[h]);a.m=[]}}
+function Ub(a){var b=a.name||a.getAttribute("name")||"__catchall";return a.ka=b}function Vb(a){return a.sort(function(a,c){a=yc(a);for(var b=yc(c),e=0;e<a.length;e++){c=a[e];var f=b[e];if(c!==f)return a=Array.from(c.parentNode.childNodes),a.indexOf(c)-a.indexOf(f)}})}function Sb(a){Qb(a);return!(!a.f||!a.f.length)};function Dc(a){var b=a.getRootNode();w(b)&&zc(b);return(a=t(a))&&a.assignedSlot||null}
+var Ec={addEventListener:mc.bind(window),removeEventListener:oc.bind(window)},Fc={addEventListener:mc,removeEventListener:oc,appendChild:function(a){return Kb(this,a)},insertBefore:function(a,b){return Kb(this,a,b)},removeChild:function(a){return Lb(this,a)},replaceChild:function(a,b){Kb(this,a,b);Lb(this,b);return a},cloneNode:function(a){if("template"==this.localName)var b=A.cloneNode.call(this,a);else if(b=A.cloneNode.call(this,!1),a){a=this.childNodes;for(var c=0,d;c<a.length;c++)d=a[c].cloneNode(!0),
+b.appendChild(d)}return b},getRootNode:function(){return Wb(this)},contains:function(a){return xa(this,a)},dispatchEvent:function(a){Ba();return A.dispatchEvent.call(this,a)}};
+Object.defineProperties(Fc,{isConnected:{get:function(){if(ub&&ub.call(this))return!0;if(this.nodeType==Node.DOCUMENT_FRAGMENT_NODE)return!1;var a=this.ownerDocument;if(wa){if(A.contains.call(a,this))return!0}else if(a.documentElement&&A.contains.call(a.documentElement,this))return!0;for(a=this;a&&!(a instanceof Document);)a=a.parentNode||(w(a)?a.host:void 0);return!!(a&&a instanceof Document)},configurable:!0}});
+var Gc={get assignedSlot(){return Dc(this)}},Hc={querySelector:function(a){return Xb(this,function(b){return oa.call(b,a)},function(a){return!!a})[0]||null},querySelectorAll:function(a,b){if(b){b=Array.prototype.slice.call(A.querySelectorAll(this,a));var c=this.getRootNode();return b.filter(function(a){return a.getRootNode()==c})}return Xb(this,function(b){return oa.call(b,a)})}},Ic={assignedNodes:function(a){if("slot"===this.localName){var b=this.getRootNode();w(b)&&zc(b);return(b=t(this))?(a&&a.flatten?
+b.v:b.assignedNodes)||[]:[]}}},Jc=qa({setAttribute:function(a,b){$b(this,a,b)},removeAttribute:function(a){A.removeAttribute.call(this,a);Tb(this,a)},attachShadow:function(a){if(!this)throw"Must provide a host.";if(!a)throw"Not enough arguments.";return new Db(xc,this,a)},get slot(){return this.getAttribute("slot")},set slot(a){$b(this,"slot",a)},get assignedSlot(){return Dc(this)}},Hc,Ic);Object.defineProperties(Jc,Ab);
+var Kc=qa({importNode:function(a,b){return ac(a,b)},getElementById:function(a){return Xb(this,function(b){return b.id==a},function(a){return!!a})[0]||null}},Hc);Object.defineProperties(Kc,{_activeElement:Bb.activeElement});
+var Lc=HTMLElement.prototype.blur,Mc=qa({blur:function(){var a=t(this);(a=(a=a&&a.root)&&a.activeElement)?a.blur():Lc.call(this)}}),Nc={addEventListener:function(a,b,c){"object"!==typeof c&&(c={capture:!!c});c.U=this;this.host.addEventListener(a,b,c)},removeEventListener:function(a,b,c){"object"!==typeof c&&(c={capture:!!c});c.U=this;this.host.removeEventListener(a,b,c)},getElementById:function(a){return Xb(this,function(b){return b.id==a},function(a){return!!a})[0]||null}};
+function N(a,b){for(var c=Object.getOwnPropertyNames(b),d=0;d<c.length;d++){var e=c[d],f=Object.getOwnPropertyDescriptor(b,e);f.value?a[e]=f.value:Object.defineProperty(a,e,f)}};if(u.ca){var ShadyDOM={inUse:u.ca,patch:function(a){Fb(a);Eb(a);return a},isShadyRoot:w,enqueue:Aa,flush:Ba,settings:u,filterMutations:Ka,observeChildren:Ia,unobserveChildren:Ja,nativeMethods:A,nativeTree:J};window.ShadyDOM=ShadyDOM;window.Event=qc;window.CustomEvent=rc;window.MouseEvent=sc;pc();var Oc=window.customElements&&window.customElements.nativeHTMLElement||HTMLElement;N(Db.prototype,Nc);N(window.Node.prototype,Fc);N(window.Window.prototype,Ec);N(window.Text.prototype,Gc);N(window.DocumentFragment.prototype,
+Hc);N(window.Element.prototype,Jc);N(window.Document.prototype,Kc);window.HTMLSlotElement&&N(window.HTMLSlotElement.prototype,Ic);N(Oc.prototype,Mc);u.o&&(L(window.Node.prototype),L(window.Text.prototype),L(window.DocumentFragment.prototype),L(window.Element.prototype),L(Oc.prototype),L(window.Document.prototype),window.HTMLSlotElement&&L(window.HTMLSlotElement.prototype));Cb();window.ShadowRoot=Db};/*
+
+Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+function Pc(){this.end=this.start=0;this.rules=this.parent=this.previous=null;this.cssText=this.parsedCssText="";this.atRule=!1;this.type=0;this.parsedSelector=this.selector=this.keyframesName=""}
+function Qc(a){a=a.replace(Rc,"").replace(Sc,"");var b=Tc,c=a,d=new Pc;d.start=0;d.end=c.length;for(var e=d,f=0,h=c.length;f<h;f++)if("{"===c[f]){e.rules||(e.rules=[]);var g=e,k=g.rules[g.rules.length-1]||null;e=new Pc;e.start=f+1;e.parent=g;e.previous=k;g.rules.push(e)}else"}"===c[f]&&(e.end=f+1,e=e.parent||d);return b(d,a)}
+function Tc(a,b){var c=b.substring(a.start,a.end-1);a.parsedCssText=a.cssText=c.trim();a.parent&&(c=b.substring(a.previous?a.previous.end:a.parent.start,a.start-1),c=Uc(c),c=c.replace(Vc," "),c=c.substring(c.lastIndexOf(";")+1),c=a.parsedSelector=a.selector=c.trim(),a.atRule=0===c.indexOf("@"),a.atRule?0===c.indexOf("@media")?a.type=Wc:c.match(Xc)&&(a.type=Yc,a.keyframesName=a.selector.split(Vc).pop()):a.type=0===c.indexOf("--")?Zc:$c);if(c=a.rules)for(var d=0,e=c.length,f;d<e&&(f=c[d]);d++)Tc(f,
+b);return a}function Uc(a){return a.replace(/\\([0-9a-f]{1,6})\s/gi,function(a,c){a=c;for(c=6-a.length;c--;)a="0"+a;return"\\"+a})}
+function ad(a,b,c){c=void 0===c?"":c;var d="";if(a.cssText||a.rules){var e=a.rules,f;if(f=e)f=e[0],f=!(f&&f.selector&&0===f.selector.indexOf("--"));if(f){f=0;for(var h=e.length,g;f<h&&(g=e[f]);f++)d=ad(g,b,d)}else b?b=a.cssText:(b=a.cssText,b=b.replace(bd,"").replace(cd,""),b=b.replace(dd,"").replace(ed,"")),(d=b.trim())&&(d=" "+d+"\n")}d&&(a.selector&&(c+=a.selector+" {\n"),c+=d,a.selector&&(c+="}\n\n"));return c}
+var $c=1,Yc=7,Wc=4,Zc=1E3,Rc=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim,Sc=/@import[^;]*;/gim,bd=/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,cd=/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\n]|$)?/gim,dd=/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/gim,ed=/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,Xc=/^@[^\s]*keyframes/,Vc=/\s+/g;var O=!(window.ShadyDOM&&window.ShadyDOM.inUse),fd;function gd(a){fd=a&&a.shimcssproperties?!1:O||!(navigator.userAgent.match(/AppleWebKit\/601|Edge\/15/)||!window.CSS||!CSS.supports||!CSS.supports("box-shadow","0 0 0 var(--foo)"))}window.ShadyCSS&&void 0!==window.ShadyCSS.nativeCss?fd=window.ShadyCSS.nativeCss:window.ShadyCSS?(gd(window.ShadyCSS),window.ShadyCSS=void 0):gd(window.WebComponents&&window.WebComponents.flags);var P=fd;var hd=/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};{])+)|\{([^}]*)\}(?:(?=[;\s}])|$))/gi,id=/(?:^|\W+)@apply\s*\(?([^);\n]*)\)?/gi,jd=/(--[\w-]+)\s*([:,;)]|$)/gi,kd=/(animation\s*:)|(animation-name\s*:)/,ld=/@media\s(.*)/,md=/\{[^}]*\}/g;var nd=new Set;function Q(a,b){if(!a)return"";"string"===typeof a&&(a=Qc(a));b&&R(a,b);return ad(a,P)}function od(a){!a.__cssRules&&a.textContent&&(a.__cssRules=Qc(a.textContent));return a.__cssRules||null}function pd(a){return!!a.parent&&a.parent.type===Yc}function R(a,b,c,d){if(a){var e=!1,f=a.type;if(d&&f===Wc){var h=a.selector.match(ld);h&&(window.matchMedia(h[1]).matches||(e=!0))}f===$c?b(a):c&&f===Yc?c(a):f===Zc&&(e=!0);if((a=a.rules)&&!e){e=0;f=a.length;for(var g;e<f&&(g=a[e]);e++)R(g,b,c,d)}}}
+function qd(a,b,c,d){var e=document.createElement("style");b&&e.setAttribute("scope",b);e.textContent=a;rd(e,c,d);return e}var S=null;function rd(a,b,c){b=b||document.head;b.insertBefore(a,c&&c.nextSibling||b.firstChild);S?a.compareDocumentPosition(S)===Node.DOCUMENT_POSITION_PRECEDING&&(S=a):S=a}
+function sd(a,b){var c=a.indexOf("var(");if(-1===c)return b(a,"","","");a:{var d=0;var e=c+3;for(var f=a.length;e<f;e++)if("("===a[e])d++;else if(")"===a[e]&&0===--d)break a;e=-1}d=a.substring(c+4,e);c=a.substring(0,c);a=sd(a.substring(e+1),b);e=d.indexOf(",");return-1===e?b(c,d.trim(),"",a):b(c,d.substring(0,e).trim(),d.substring(e+1).trim(),a)}function td(a,b){O?a.setAttribute("class",b):window.ShadyDOM.nativeMethods.setAttribute.call(a,"class",b)}
+function U(a){var b=a.localName,c="";b?-1<b.indexOf("-")||(c=b,b=a.getAttribute&&a.getAttribute("is")||""):(b=a.is,c=a.extends);return{is:b,I:c}};function ud(){}function yd(a,b,c){var d=V;a.__styleScoped?a.__styleScoped=null:zd(d,a,b||"",c)}function zd(a,b,c,d){b.nodeType===Node.ELEMENT_NODE&&Ad(b,c,d);if(b="template"===b.localName?(b.content||b.Na).childNodes:b.children||b.childNodes)for(var e=0;e<b.length;e++)zd(a,b[e],c,d)}
+function Ad(a,b,c){if(b)if(a.classList)c?(a.classList.remove("style-scope"),a.classList.remove(b)):(a.classList.add("style-scope"),a.classList.add(b));else if(a.getAttribute){var d=a.getAttribute(Bd);c?d&&(b=d.replace("style-scope","").replace(b,""),td(a,b)):td(a,(d?d+" ":"")+"style-scope "+b)}}function Cd(a,b,c){var d=V,e=a.__cssBuild;O||"shady"===e?b=Q(b,c):(a=U(a),b=Dd(d,b,a.is,a.I,c)+"\n\n");return b.trim()}
+function Dd(a,b,c,d,e){var f=Ed(c,d);c=c?Fd+c:"";return Q(b,function(b){b.c||(b.selector=b.j=Gd(a,b,a.b,c,f),b.c=!0);e&&e(b,c,f)})}function Ed(a,b){return b?"[is="+a+"]":a}function Gd(a,b,c,d,e){var f=b.selector.split(Hd);if(!pd(b)){b=0;for(var h=f.length,g;b<h&&(g=f[b]);b++)f[b]=c.call(a,g,d,e)}return f.join(Hd)}function Id(a){return a.replace(Jd,function(a,c,d){-1<d.indexOf("+")?d=d.replace(/\+/g,"___"):-1<d.indexOf("___")&&(d=d.replace(/___/g,"+"));return":"+c+"("+d+")"})}
+ud.prototype.b=function(a,b,c){var d=!1;a=a.trim();var e=Jd.test(a);e&&(a=a.replace(Jd,function(a,b,c){return":"+b+"("+c.replace(/\s/g,"")+")"}),a=Id(a));a=a.replace(Kd,Ld+" $1");a=a.replace(Md,function(a,e,g){d||(a=Nd(g,e,b,c),d=d||a.stop,e=a.ta,g=a.value);return e+g});e&&(a=Id(a));return a};
+function Nd(a,b,c,d){var e=a.indexOf(Od);0<=a.indexOf(Ld)?a=Pd(a,d):0!==e&&(a=c?Qd(a,c):a);c=!1;0<=e&&(b="",c=!0);if(c){var f=!0;c&&(a=a.replace(Rd,function(a,b){return" > "+b}))}a=a.replace(Sd,function(a,b,c){return'[dir="'+c+'"] '+b+", "+b+'[dir="'+c+'"]'});return{value:a,ta:b,stop:f}}function Qd(a,b){a=a.split(Td);a[0]+=b;return a.join(Td)}
+function Pd(a,b){var c=a.match(Ud);return(c=c&&c[2].trim()||"")?c[0].match(Vd)?a.replace(Ud,function(a,c,f){return b+f}):c.split(Vd)[0]===b?c:Wd:a.replace(Ld,b)}function Xd(a){a.selector===Yd&&(a.selector="html")}ud.prototype.c=function(a){return a.match(Od)?this.b(a,Zd):Qd(a.trim(),Zd)};q.Object.defineProperties(ud.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return"style-scope"}}});
+var Jd=/:(nth[-\w]+)\(([^)]+)\)/,Zd=":not(.style-scope)",Hd=",",Md=/(^|[\s>+~]+)((?:\[.+?\]|[^\s>+~=[])+)/g,Vd=/[[.:#*]/,Ld=":host",Yd=":root",Od="::slotted",Kd=new RegExp("^("+Od+")"),Ud=/(:host)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,Rd=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,Sd=/(.*):dir\((?:(ltr|rtl))\)/,Fd=".",Td=":",Bd="class",Wd="should_not_match",V=new ud;function $d(a,b,c,d){this.u=a||null;this.b=b||null;this.X=c||[];this.D=null;this.I=d||"";this.a=this.l=this.w=null}function W(a){return a?a.__styleInfo:null}function ae(a,b){return a.__styleInfo=b}$d.prototype.c=function(){return this.u};$d.prototype._getStyleRules=$d.prototype.c;function be(a){var b=this.matches||this.matchesSelector||this.mozMatchesSelector||this.msMatchesSelector||this.oMatchesSelector||this.webkitMatchesSelector;return b&&b.call(this,a)}var ce=navigator.userAgent.match("Trident");function de(){}function ee(a){var b={},c=[],d=0;R(a,function(a){fe(a);a.index=d++;a=a.h.cssText;for(var c;c=jd.exec(a);){var e=c[1];":"!==c[2]&&(b[e]=!0)}},function(a){c.push(a)});a.b=c;a=[];for(var e in b)a.push(e);return a}
+function fe(a){if(!a.h){var b={},c={};ge(a,c)&&(b.s=c,a.rules=null);b.cssText=a.parsedCssText.replace(md,"").replace(hd,"");a.h=b}}function ge(a,b){var c=a.h;if(c){if(c.s)return Object.assign(b,c.s),!0}else{c=a.parsedCssText;for(var d;a=hd.exec(c);){d=(a[2]||a[3]).trim();if("inherit"!==d||"unset"!==d)b[a[1].trim()]=d;d=!0}return d}}
+function he(a,b,c){b&&(b=0<=b.indexOf(";")?ie(a,b,c):sd(b,function(b,e,f,h){if(!e)return b+h;(e=he(a,c[e],c))&&"initial"!==e?"apply-shim-inherit"===e&&(e="inherit"):e=he(a,c[f]||f,c)||f;return b+(e||"")+h}));return b&&b.trim()||""}
+function ie(a,b,c){b=b.split(";");for(var d=0,e,f;d<b.length;d++)if(e=b[d]){id.lastIndex=0;if(f=id.exec(e))e=he(a,c[f[1]],c);else if(f=e.indexOf(":"),-1!==f){var h=e.substring(f);h=h.trim();h=he(a,h,c)||h;e=e.substring(0,f)+h}b[d]=e&&e.lastIndexOf(";")===e.length-1?e.slice(0,-1):e||""}return b.join(";")}
+function je(a,b){var c={},d=[];R(a,function(a){a.h||fe(a);var e=a.j||a.parsedSelector;b&&a.h.s&&e&&be.call(b,e)&&(ge(a,c),a=a.index,e=parseInt(a/32,10),d[e]=(d[e]||0)|1<<a%32)},null,!0);return{s:c,key:d}}
+function ke(a,b,c,d){b.h||fe(b);if(b.h.s){var e=U(a);a=e.is;e=e.I;e=a?Ed(a,e):"html";var f=b.parsedSelector,h=":host > *"===f||"html"===f,g=0===f.indexOf(":host")&&!h;"shady"===c&&(h=f===e+" > *."+e||-1!==f.indexOf("html"),g=!h&&0===f.indexOf(e));"shadow"===c&&(h=":host > *"===f||"html"===f,g=g&&!h);if(h||g)c=e,g&&(b.j||(b.j=Gd(V,b,V.b,a?Fd+a:"",e)),c=b.j||e),d({Fa:c,za:g,Wa:h})}}
+function le(a,b){var c={},d={},e=b&&b.__cssBuild;R(b,function(b){ke(a,b,e,function(e){be.call(a.i||a,e.Fa)&&(e.za?ge(b,c):ge(b,d))})},null,!0);return{Ea:d,xa:c}}
+function me(a,b,c,d){var e=U(b),f=Ed(e.is,e.I),h=new RegExp("(?:^|[^.#[:])"+(b.extends?"\\"+f.slice(0,-1)+"\\]":f)+"($|[.:[\\s>+~])");e=W(b).u;var g=ne(e,d);return Cd(b,e,function(b){var e="";b.h||fe(b);b.h.cssText&&(e=ie(a,b.h.cssText,c));b.cssText=e;if(!O&&!pd(b)&&b.cssText){var k=e=b.cssText;null==b.ba&&(b.ba=kd.test(e));if(b.ba)if(null==b.O){b.O=[];for(var p in g)k=g[p],k=k(e),e!==k&&(e=k,b.O.push(p))}else{for(p=0;p<b.O.length;++p)k=g[b.O[p]],e=k(e);k=e}b.cssText=k;b.j=b.j||b.selector;e="."+d;
+p=b.j.split(",");k=0;for(var x=p.length,B;k<x&&(B=p[k]);k++)p[k]=B.match(h)?B.replace(f,e):e+" "+B;b.selector=p.join(",")}})}function ne(a,b){a=a.b;var c={};if(!O&&a)for(var d=0,e=a[d];d<a.length;e=a[++d]){var f=e,h=b;f.i=new RegExp("\\b"+f.keyframesName+"(?!\\B|-)","g");f.a=f.keyframesName+"-"+h;f.j=f.j||f.selector;f.selector=f.j.replace(f.keyframesName,f.a);c[e.keyframesName]=oe(e)}return c}function oe(a){return function(b){return b.replace(a.i,a.a)}}
+function pe(a,b){var c=qe,d=od(a);a.textContent=Q(d,function(a){var d=a.cssText=a.parsedCssText;a.h&&a.h.cssText&&(d=d.replace(bd,"").replace(cd,""),a.cssText=ie(c,d,b))})}q.Object.defineProperties(de.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return"x-scope"}}});var qe=new de;var re={},se=window.customElements;if(se&&!O){var te=se.define;se.define=function(a,b,c){var d=document.createComment(" Shady DOM styles for "+a+" "),e=document.head;e.insertBefore(d,(S?S.nextSibling:null)||e.firstChild);S=d;re[a]=d;te.call(se,a,b,c)}};function ue(){this.cache={}}ue.prototype.store=function(a,b,c,d){var e=this.cache[a]||[];e.push({s:b,styleElement:c,l:d});100<e.length&&e.shift();this.cache[a]=e};ue.prototype.fetch=function(a,b,c){if(a=this.cache[a])for(var d=a.length-1;0<=d;d--){var e=a[d],f;a:{for(f=0;f<c.length;f++){var h=c[f];if(e.s[h]!==b[h]){f=!1;break a}}f=!0}if(f)return e}};function ve(){}
+function we(a){for(var b=0;b<a.length;b++){var c=a[b];if(c.target!==document.documentElement&&c.target!==document.head)for(var d=0;d<c.addedNodes.length;d++){var e=c.addedNodes[d];if(e.nodeType===Node.ELEMENT_NODE){var f=e.getRootNode();var h=e;var g=[];h.classList?g=Array.from(h.classList):h instanceof window.SVGElement&&h.hasAttribute("class")&&(g=h.getAttribute("class").split(/\s+/));h=g;g=h.indexOf(V.a);if((h=-1<g?h[g+1]:"")&&f===e.ownerDocument)yd(e,h,!0);else if(f.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&
+(f=f.host))if(f=U(f).is,h===f)for(e=window.ShadyDOM.nativeMethods.querySelectorAll.call(e,":not(."+V.a+")"),f=0;f<e.length;f++)Ad(e[f],h);else h&&yd(e,h,!0),yd(e,f)}}}}
+if(!O){var xe=new MutationObserver(we),ye=function(a){xe.observe(a,{childList:!0,subtree:!0})};if(window.customElements&&!window.customElements.polyfillWrapFlushCallback)ye(document);else{var ze=function(){ye(document.body)};window.HTMLImports?window.HTMLImports.whenReady(ze):requestAnimationFrame(function(){if("loading"===document.readyState){var a=function(){ze();document.removeEventListener("readystatechange",a)};document.addEventListener("readystatechange",a)}else ze()})}ve=function(){we(xe.takeRecords())}}
+var Ae=ve;var Be={};var Ce=Promise.resolve();function De(a){if(a=Be[a])a._applyShimCurrentVersion=a._applyShimCurrentVersion||0,a._applyShimValidatingVersion=a._applyShimValidatingVersion||0,a._applyShimNextVersion=(a._applyShimNextVersion||0)+1}function Ee(a){return a._applyShimCurrentVersion===a._applyShimNextVersion}function Fe(a){a._applyShimValidatingVersion=a._applyShimNextVersion;a.a||(a.a=!0,Ce.then(function(){a._applyShimCurrentVersion=a._applyShimNextVersion;a.a=!1}))};var Ge=null,He=window.HTMLImports&&window.HTMLImports.whenReady||null,Ie;function Je(a){requestAnimationFrame(function(){He?He(a):(Ge||(Ge=new Promise(function(a){Ie=a}),"complete"===document.readyState?Ie():document.addEventListener("readystatechange",function(){"complete"===document.readyState&&Ie()})),Ge.then(function(){a&&a()}))})};var Ke=new ue;function X(){var a=this;this.F={};this.c=document.documentElement;var b=new Pc;b.rules=[];this.i=ae(this.c,new $d(b));this.B=!1;this.b=this.a=null;Je(function(){Y(a)})}n=X.prototype;n.ia=function(){Ae()};n.va=function(a){return od(a)};n.Ha=function(a){return Q(a)};
+n.prepareTemplate=function(a,b,c){if(!a.b){a.b=!0;a.name=b;a.extends=c;Be[b]=a;var d=(d=a.content.querySelector("style"))?d.getAttribute("css-build")||"":"";var e=[];for(var f=a.content.querySelectorAll("style"),h=0;h<f.length;h++){var g=f[h];if(g.hasAttribute("shady-unscoped")){if(!O){var k=g.textContent;nd.has(k)||(nd.add(k),k=g.cloneNode(!0),document.head.appendChild(k));g.parentNode.removeChild(g)}}else e.push(g.textContent),g.parentNode.removeChild(g)}e=e.join("").trim();c={is:b,extends:c,La:d};
+O||yd(a.content,b);Y(this);f=id.test(e)||hd.test(e);id.lastIndex=0;hd.lastIndex=0;e=Qc(e);f&&P&&this.a&&this.a.transformRules(e,b);a._styleAst=e;a.c=d;d=[];P||(d=ee(a._styleAst));if(!d.length||P)e=O?a.content:null,b=re[b],f=Cd(c,a._styleAst),b=f.length?qd(f,c.is,e,b):void 0,a.aa=b;a.qa=d}};
+function Le(a){!a.b&&window.ShadyCSS&&window.ShadyCSS.CustomStyleInterface&&(a.b=window.ShadyCSS.CustomStyleInterface,a.b.transformCallback=function(b){a.ga(b)},a.b.validateCallback=function(){requestAnimationFrame(function(){(a.b.enqueued||a.B)&&a.A()})})}function Y(a){!a.a&&window.ShadyCSS&&window.ShadyCSS.ApplyShim&&(a.a=window.ShadyCSS.ApplyShim,a.a.invalidCallback=De);Le(a)}
+n.A=function(){Y(this);if(this.b){var a=this.b.processStyles();if(this.b.enqueued){if(P)for(var b=0;b<a.length;b++){var c=this.b.getStyleForCustomStyle(a[b]);if(c&&P&&this.a){var d=od(c);Y(this);this.a.transformRules(d);c.textContent=Q(d)}}else for(Me(this,this.c,this.i),b=0;b<a.length;b++)(c=this.b.getStyleForCustomStyle(a[b]))&&pe(c,this.i.w);this.b.enqueued=!1;this.B&&!P&&this.styleDocument()}}};
+n.styleElement=function(a,b){var c=U(a).is,d=W(a);if(!d){var e=U(a);d=e.is;e=e.I;var f=re[d];d=Be[d];if(d){var h=d._styleAst;var g=d.qa}d=ae(a,new $d(h,f,g,e))}a!==this.c&&(this.B=!0);b&&(d.D=d.D||{},Object.assign(d.D,b));if(P){if(d.D){b=d.D;for(var k in b)null===k?a.style.removeProperty(k):a.style.setProperty(k,b[k])}if(((k=Be[c])||a===this.c)&&k&&k.aa&&!Ee(k)){if(Ee(k)||k._applyShimValidatingVersion!==k._applyShimNextVersion)Y(this),this.a&&this.a.transformRules(k._styleAst,c),k.aa.textContent=
+Cd(a,d.u),Fe(k);O&&(c=a.shadowRoot)&&(c.querySelector("style").textContent=Cd(a,d.u));d.u=k._styleAst}}else if(Me(this,a,d),d.X&&d.X.length){c=d;k=U(a).is;d=(b=Ke.fetch(k,c.w,c.X))?b.styleElement:null;h=c.l;(g=b&&b.l)||(g=this.F[k]=(this.F[k]||0)+1,g=k+"-"+g);c.l=g;g=c.l;e=qe;e=d?d.textContent||"":me(e,a,c.w,g);f=W(a);var l=f.a;l&&!O&&l!==d&&(l._useCount--,0>=l._useCount&&l.parentNode&&l.parentNode.removeChild(l));O?f.a?(f.a.textContent=e,d=f.a):e&&(d=qd(e,g,a.shadowRoot,f.b)):d?d.parentNode||(ce&&
+-1<e.indexOf("@media")&&(d.textContent=e),rd(d,null,f.b)):e&&(d=qd(e,g,null,f.b));d&&(d._useCount=d._useCount||0,f.a!=d&&d._useCount++,f.a=d);g=d;O||(d=c.l,f=e=a.getAttribute("class")||"",h&&(f=e.replace(new RegExp("\\s*x-scope\\s*"+h+"\\s*","g")," ")),f+=(f?" ":"")+"x-scope "+d,e!==f&&td(a,f));b||Ke.store(k,c.w,g,c.l)}};function Ne(a,b){return(b=b.getRootNode().host)?W(b)?b:Ne(a,b):a.c}
+function Me(a,b,c){a=Ne(a,b);var d=W(a);a=Object.create(d.w||null);var e=le(b,c.u);b=je(d.u,b).s;Object.assign(a,e.xa,b,e.Ea);b=c.D;for(var f in b)if((e=b[f])||0===e)a[f]=e;f=qe;b=Object.getOwnPropertyNames(a);for(e=0;e<b.length;e++)d=b[e],a[d]=he(f,a[d],a);c.w=a}n.styleDocument=function(a){this.styleSubtree(this.c,a)};
+n.styleSubtree=function(a,b){var c=a.shadowRoot;(c||a===this.c)&&this.styleElement(a,b);if(b=c&&(c.children||c.childNodes))for(a=0;a<b.length;a++)this.styleSubtree(b[a]);else if(a=a.children||a.childNodes)for(b=0;b<a.length;b++)this.styleSubtree(a[b])};n.ga=function(a){var b=this,c=od(a);R(c,function(a){if(O)Xd(a);else{var c=V;a.selector=a.parsedSelector;Xd(a);a.selector=a.j=Gd(c,a,c.c,void 0,void 0)}P&&(Y(b),b.a&&b.a.transformRule(a))});P?a.textContent=Q(c):this.i.u.rules.push(c)};
+n.getComputedStyleValue=function(a,b){var c;P||(c=(W(a)||W(Ne(this,a))).w[b]);return(c=c||window.getComputedStyle(a).getPropertyValue(b))?c.trim():""};n.Ga=function(a,b){var c=a.getRootNode();b=b?b.split(/\s/):[];c=c.host&&c.host.localName;if(!c){var d=a.getAttribute("class");if(d){d=d.split(/\s/);for(var e=0;e<d.length;e++)if(d[e]===V.a){c=d[e+1];break}}}c&&b.push(V.a,c);P||(c=W(a))&&c.l&&b.push(qe.a,c.l);td(a,b.join(" "))};n.ra=function(a){return W(a)};X.prototype.flush=X.prototype.ia;
+X.prototype.prepareTemplate=X.prototype.prepareTemplate;X.prototype.styleElement=X.prototype.styleElement;X.prototype.styleDocument=X.prototype.styleDocument;X.prototype.styleSubtree=X.prototype.styleSubtree;X.prototype.getComputedStyleValue=X.prototype.getComputedStyleValue;X.prototype.setElementClass=X.prototype.Ga;X.prototype._styleInfoForNode=X.prototype.ra;X.prototype.transformCustomStyleForDocument=X.prototype.ga;X.prototype.getStyleAst=X.prototype.va;X.prototype.styleAstToString=X.prototype.Ha;
+X.prototype.flushCustomStyles=X.prototype.A;Object.defineProperties(X.prototype,{nativeShadow:{get:function(){return O}},nativeCss:{get:function(){return P}}});var Z=new X,Oe,Pe;window.ShadyCSS&&(Oe=window.ShadyCSS.ApplyShim,Pe=window.ShadyCSS.CustomStyleInterface);window.ShadyCSS={ScopingShim:Z,prepareTemplate:function(a,b,c){Z.A();Z.prepareTemplate(a,b,c)},styleSubtree:function(a,b){Z.A();Z.styleSubtree(a,b)},styleElement:function(a){Z.A();Z.styleElement(a)},styleDocument:function(a){Z.A();Z.styleDocument(a)},getComputedStyleValue:function(a,b){return Z.getComputedStyleValue(a,b)},nativeCss:P,nativeShadow:O};Oe&&(window.ShadyCSS.ApplyShim=Oe);
+Pe&&(window.ShadyCSS.CustomStyleInterface=Pe);/*
+
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ Code distributed by Google as part of the polymer project is also
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+var Qe=window.customElements,Re=window.HTMLImports,Se=window.HTMLTemplateElement;window.WebComponents=window.WebComponents||{};if(Qe&&Qe.polyfillWrapFlushCallback){var Te,Ue=function(){if(Te){Se.sa&&Se.sa(window.document);var a=Te;Te=null;a();return!0}},Ve=Re.whenReady;Qe.polyfillWrapFlushCallback(function(a){Te=a;Ve(Ue)});Re.whenReady=function(a){Ve(function(){Ue()?Re.whenReady(a):a()})}}
+Re.whenReady(function(){requestAnimationFrame(function(){window.WebComponents.ready=!0;document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))})});var We=document.createElement("style");We.textContent="body {transition: opacity ease-in 0.2s; } \nbody[unresolved] {opacity: 0; display: block; overflow: hidden; position: relative; } \n";var Xe=document.querySelector("head");Xe.insertBefore(We,Xe.firstChild);/*
+
+Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+}).call(this);
+
+//# sourceMappingURL=webcomponents-hi-sd.js.map
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd.js.map b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd.js.map
new file mode 100644
index 00000000000..baf6aff42aa
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi-sd.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["node_modules/@webcomponents/html-imports/src/html-imports.js"," [synthetic:util/global] "," [synthetic:util/defineproperty] "," [synthetic:es6/symbol] "," [synthetic:es6/util/makeiterator] "," [synthetic:es6/util/arrayfromiterator] ","node_modules/@webcomponents/shadydom/src/shady-data.js","node_modules/@webcomponents/shadydom/src/utils.js","node_modules/@webcomponents/shadydom/src/flush.js","node_modules/@webcomponents/shadydom/src/observe-changes.js","node_modules/@webcomponents/shadydom/src/native-methods.js","node_modules/@webcomponents/shadydom/src/innerHTML.js","node_modules/@webcomponents/shadydom/src/native-tree-walker.js","node_modules/@webcomponents/shadydom/src/native-tree-accessors.js","node_modules/@webcomponents/shadydom/src/native-tree.js","node_modules/@webcomponents/shadydom/src/patch-accessors.js","node_modules/@webcomponents/shadydom/src/attach-shadow.js","node_modules/@webcomponents/shadydom/src/patch-builtins.js","node_modules/@webcomponents/shadydom/src/logical-tree.js","node_modules/@webcomponents/shadydom/src/logical-mutation.js"," [synthetic:es6/util/arrayfromiterable] ","node_modules/@webcomponents/shadydom/src/patch-events.js","node_modules/@webcomponents/shadydom/src/array-splice.js","node_modules/@webcomponents/shadydom/src/shadydom.js","node_modules/@webcomponents/shadycss/src/css-parse.js","node_modules/@webcomponents/shadycss/src/style-settings.js","node_modules/@webcomponents/shadycss/src/common-regex.js","node_modules/@webcomponents/shadycss/src/unscoped-style-handler.js","node_modules/@webcomponents/shadycss/src/style-util.js","node_modules/@webcomponents/shadycss/src/style-transformer.js","node_modules/@webcomponents/shadycss/src/style-info.js","node_modules/@webcomponents/shadycss/src/style-properties.js","node_modules/@webcomponents/shadycss/src/style-placeholder.js","node_modules/@webcomponents/shadycss/src/style-cache.js","node_modules/@webcomponents/shadycss/src/document-watcher.js","node_modules/@webcomponents/shadycss/src/template-map.js","node_modules/@webcomponents/shadycss/src/apply-shim-utils.js","node_modules/@webcomponents/shadycss/src/document-wait.js","node_modules/@webcomponents/shadycss/src/scoping-shim.js","node_modules/@webcomponents/shadycss/src/common-utils.js","node_modules/@webcomponents/shadycss/entrypoints/scoping-shim.js","src/post-polyfill.js","src/unresolved.js"],"names":["$jscomp.global","$jscomp.defineProperty","$jscomp.initSymbol","$jscomp.Symbol","$jscomp.SYMBOL_PREFIX","$jscomp.arrayIterator","$jscomp.initSymbolIterator","$jscomp.iteratorPrototype","scope","newCustomEvent","type","params","window","CustomEvent","event","document","createEvent","initCustomEvent","bubbles","cancelable","detail","importForElement","element","useNative","ownerDocument","doc","parentNode","closest","importSelector","isImportLink","whenImportsReady","callback","imports","QSA","rootImportSelector","pending","length","forEach","imp","whenElementLoaded","whenDocumentReady","stateChanged","readyState","body","removeEventListener","addEventListener","whenReady","localName","src","firstChild","onLoadingDone","isIE","node","nodeType","Node","ELEMENT_NODE","rel","constructor","Importer","documents","inflight","dynamicImportsMO","MutationObserver","m","handleMutations","observe","head","childList","subtree","loadImports","replaceScripts","fragment","template","content","scriptsSelector","script","clone","createElement","attributes","attr","setAttribute","name","value","textContent","replaceChild","selector","childNodes","querySelectorAll","emptyNodeList","list","inverseOrder","increment","i","link","currentScript","Object","defineProperty","get","scripts","configurable","CSS_URL_REGEXP","CSS_IMPORT_REGEXP","STYLESHEET_REGEXP","Path","fixUrls","base","href","resolveUrl","getAttribute","r","replaceUrls","text","linkUrl","regexp","replace","pre","url","post","urlPath","undefined","__workingURL","u","URL","pathname","e","__tempDoc","implementation","createHTMLDocument","__base","appendChild","__anchor","Xhr","async","load","success","fail","match","pieces","split","resource","header","indexOf","atob","decodeURIComponent","request","XMLHttpRequest","open","onload","request.onload","redirectedUrl","responseURL","getResponseHeader","location","origin","protocol","host","response","responseText","status","send","test","navigator","userAgent","links","loadImport","fireEventIfNeeded","makeDocument","processImportsIfLoadingDone","createDocumentFragment","p1","p2","innerHTML","baseEl","querySelector","removeAttribute","n$","importDependenciesSelector","inlineScriptIndex","n","importDependencyAttr","encodeURIComponent","num","disconnect","flatten","scriptsOk","stylesOk","fireEvents","waitForStyles","runScripts","DOCUMENT_FRAGMENT_NODE","cloneScript","l","s","s$","pendingScriptsSelector","pendingStylesSelector","needsMove","disabledLinkSelector","placeholder","insertBefore","nextSibling","newSibling","import","dispatchEvent","eventType","mutations","addedNodes","elem","importer","imps","target","native_baseURI","getOwnPropertyDescriptor","prototype","klass","Element","ownerDoc","call","enumerable","HTMLLinkElement","HTMLImports","ShadyData","publicRoot","root","dirty","flattenedNodes","_prevAssignedSlot","_previouslyAssignedNodes","assignedSlot","assignedNodes","observer","previousSibling","lastChild","ownerShadyRoot","__insideAccessors","__outsideAccessors","toJSON","ensureShadyDataForNode","__shady","shadyDataForNode","settings","hasNativeShadowDOM","attachShadow","getRootNode","desc","hasDescriptors","inUse","IS_IE","IS_EDGE","useNativeAccessors","isTrackingLogicalChildNodes","nodeData","isShadyRoot","obj","_localName","ownerShadyRootForNode","p","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","extend","source","getOwnPropertyNames","pd","extendAll","sources","mixin","twiddle","createTextNode","queue","shift","characterData","microtask","push","hasDocumentContains","contains","container","flushList","scheduled","enqueue","flush","didFlush","AsyncObserver","_scheduled","removedNodes","callbacks","Set","schedule","takeRecords","cb","observeChildren","sd","add","_callback","_observer","_node","unobserveChildren","handle","delete","size","filterMutations","targetRootNode","map","mutation","mutationInScope","nodes","Array","from","filter","create","removeChild","cloneNode","importNode","Document","windowAddEventListener","Window","windowRemoveEventListener","HTMLElement","getElementById","elementQuerySelector","fragmentQuerySelector","DocumentFragment","documentQuerySelector","elementQuerySelectorAll","fragmentQuerySelectorAll","documentQuerySelectorAll","DOCUMENT_NODE","escapeAttrRegExp","escapeDataRegExp","escapeReplace","c","makeSet","arr","set","voidElements","plaintextParents","getInnerHTML","c$","child","tagName","attrs","TEXT_NODE","data","COMMENT_NODE","console","error","Error","nodeWalker","createTreeWalker","NodeFilter","SHOW_ALL","elementWalker","SHOW_ELEMENT","currentNode","parentElement","firstElementChild","lastElementChild","previousElementSibling","nextElementSibling","children","textWalker","SHOW_TEXT","nextNode","nodeValue","nativeProtos","findNodeDescriptor","proto","hasOwnProperty","nodeAccessors","fragmentAccessors","documentAccessors","slice","accessors","nativeTreeAccessors","nativeTreeWalker","clearNode","inertDoc","nativeIsConnectedAccessors","nativeIsConnected","nativeActiveElementDescriptor","OutsideAccessors","ClassNameAccessor","className","InsideAccessors","item","childNodes.item","index","childElementCount","tc","cn","join","nativeAccessors","children.item","containerName","htmlContainer","ShadowRootAccessor","shadowRoot","ActiveElementAccessor","activeElement","active","nativeContains","activeRoot","patchAccessorGroup","descriptors","force","objDesc","warn","patchAccessors","patchShadowRootAccessors","ShadyRoot","__proto__","defineProperties","nodeName","prop","patchOutsideElementAccessors","patchInsideElementAccessors","linkNode","ref_node","containerData","ref_nodeData","psd","nsd","recordChildNodes","parent","refData","ownerRoot","slotsAdded","slots","_ensureSlotData","_pendingSlots","_slotList","_slotMap","$jscomp.arrayFromIterator","$jscomp.makeIterator","_asyncRender","resetTo","parentData","hasShadowRootWithSlot","preventNativeInsert","firstComposedNode","nativeMethods","scheduleObserver","preventNativeRemove","removeOwnerShadyRoot","changeSlotContent","_validateSlots","slot","splice","x","didRemove","removingInsertionPoint","composed","flattened","_hasInsertionPoint","distributeAttributeChange","oldName","__slotName","_nameForSlot","_sortSlots","addedNode","removedNode","documentElement","query","matcher","halter","queryElements","elements","result","scopingShim","deep","nc","eventWrappersName","Date","now","alwaysComposed","pathComposer","startNode","composedPath","current","startRoot","retarget","refNode","path","refNodePath","ancestor","lastRoot","rootIdx","eventMixin","isTrusted","__composed","__composedPath","currentTarget","relatedTarget","__relatedTarget","__relatedTargetComposedPath","stopPropagation","Event","__propagationStopped","stopImmediatePropagation","__immediatePropagationStopped","mixinComposedFlag","Base","klazz","options","nonBubblingEventsToRetarget","hasRetargeted","fireHandlers","phase","hs","__handlers","fn","retargetNonBubblingEvent","AT_TARGET","lastFiredRoot","findListener","wrappers","capture","once","passive","savedType","savedListener","savedCapture","savedOnce","savedPassive","savedNode","fnOrObj","optionsOrCapture","handlerType","handleEvent","__shadyTarget","wrapperFn","patchEvent","lastCurrentTargetDesc","eventPhase","BUBBLING_PHASE","CAPTURING_PHASE","ret","ael","idx","activateFocusEventOverrides","ev","getPrototypeOf","patchProto","__sourceProto","PatchedEvent","PatchedCustomEvent","PatchedMouseEvent","MouseEvent","newSplice","addedCount","removed","calcSplices","currentEnd","old","oldEnd","currentStart","oldStart","prefixCount","suffixCount","minLength","Math","min","currentValue","previousValue","index1","index2","count","equals","rowCount","columnCount","distances","j","north","west","edits","EDIT_ADD","EDIT_DELETE","northWest","EDIT_LEAVE","EDIT_UPDATE","reverse","splices","oldIndex","ShadyRootConstructionToken","ancestorList","ancestors","unshift","token","TypeError","SHADYROOT_NAME","_mode","mode","hostData","MODE_CLOSED","rootData","_renderPending","_render","renderRoot","_distribute","slotData","_distributeNodeToSlot","slotParentRoot","slotParentData","_addAssignedToFlattenedNodes","prevAssignedNodes","_fireSlotChange","_compose","composeList","targetNode","distributedNode","d","next","forcedSlot","oldSlot","CATCHALL_NAME","assigned","nestedAssigned","slotNamesToSort","_mapSlots","sort","a","b","listA","listB","nA","nB","getAssignedSlot","windowMixin","bind","nodeMixin","IsConnectedAccessor","isConnected","textMixin","fragmentMixin","o","slotMixin","elementMixin","documentMixin","id","nativeBlur","blur","htmlElementMixin","shadowActive","shadowRootMixin","patchBuiltin","ShadyDOM","patch","nativeHTMLElement","Text","HTMLSlotElement","ShadowRoot","StyleNode","parse","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.comments","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.port","parseCss","OPEN_BRACE","previous","CLOSE_BRACE","t","substring","trim","ss","_expandUnicodeEscapes","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.multipleSpaces","lastIndexOf","AT_START","MEDIA_START","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.MEDIA_RULE","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.keyframesRule","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.KEYFRAMES_RULE","pop","VAR_START","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.MIXIN_RULE","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.STYLE_RULE","r$","code","repeat","stringify","preserveProperties","cssText","rules","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.customProp","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.mixinProp","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.mixinApply","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.varApply","STYLE_RULE","KEYFRAMES_RULE","MEDIA_RULE","MIXIN_RULE","comments","port","customProp","mixinProp","mixinApply","varApply","keyframesRule","multipleSpaces","nativeShadow","nativeCssVariables_","calcCssVariables","CSS","supports","ShadyCSS","nativeCss","nativeCssVariables","VAR_ASSIGN","MIXIN_MATCH","VAR_CONSUMED","ANIMATION_MATCH","MEDIA_MATCH","BRACKETED","styleTextSet","toCssText","forEachRule","rulesForStyle","style","isKeyframesSelector","rule","styleRuleCallback","keyframesRuleCallback","onlyActiveRules","skipRules","matchMedia","applyCss","moniker","contextNode","applyStyle","lastHeadApplyNode","compareDocumentPosition","position","DOCUMENT_POSITION_PRECEDING","processVariableAndFallback","str","start","level","inner","end","prefix","suffix","comma","fallback","setElementClassRaw","getIsExtends","typeExtension","is","extends","StyleTransformer","dom","shouldRemoveScope","$jscompDefaultExport","_transformDom","_content","classList","remove","SCOPE_NAME","CLASS","newValue","elementStyles","styleRules","cssBuildType","css","ext","hostScope","_calcHostScope","CSS_CLASS_PREFIX","isScoped","transformedSelector","_transformRuleCss","self","_transformComplexSelector","transformer","p$","COMPLEX_SELECTOR_SEP","_twiddleNthPlus","NTH","inside","stop","isNth","SLOTTED_START","HOST","SIMPLE_SELECTOR_SEP","info","_transformCompoundSelector","combinator","slottedIndex","SLOTTED","_transformHostSelector","_transformSimpleSelector","slotted","SLOTTED_PAREN","paren","DIR_PAREN","before","dir","PSEUDO_PREFIX","HOST_PAREN","SIMPLE_SELECTOR_PREFIX","typeSelector","SELECTOR_NO_MATCH","normalizeRootSelector","ROOT","_transformDocumentSelector","SCOPE_DOC_SELECTOR","$jscomp.global.Object.defineProperties","RegExp","StyleInfo","ast","ownStylePropertyNames","overrideStyleProperties","customStyle","scopeSelector","styleProperties","styleInfo","_getStyleRules","method","StyleProperties","decorateStyles","props","keyframes","ruleIndex","decorateRule","propertyInfo","exec","onKeyframesRule","_keyframes","names","properties","collectProperties","hasProperties","assign","any","valueForProperty","property","valueForProperties","propertyValue","parts","lastIndex","colon","pp","propertyDataFromStyles","selectorToMatch","parseInt","key","whenHostOrRootRule","cssBuild","parsedSelector","isRoot","isHost","hostAndRootPropertiesForScope","hostProps","rootProps","_element","transformStyles","hostSelector","hostRx","HOST_PREFIX","rxHostSelector","HOST_SUFFIX","StyleInfo$$module$node_modules$$webcomponents$shadycss$src$style_info.get","keyframeTransforms","_elementKeyframeTransforms","output","input","hasAnimations","keyframeNamesToTransform","keyframe","transform","keyframesRules","keyframesNameRx","transformedKeyframesName","scopeId","_keyframesRuleTransformer","applyCustomStyle","XSCOPE_NAME","placeholderMap","ce","origDefine","wrappedDefine","clazz","placeHolder","createComment","after","StyleCache","cache","store","tagname","styleElement","typeMax","fetch","ownPropertyNames","entry","pn","handler","mxns","mxn","classes","hasAttribute","currentScope","newScope","unscoped","delayedStart","requestAnimationFrame","listener","module$node_modules$$webcomponents$shadycss$src$document_watcher.flush","templateMap","promise","Promise","resolve","invalidate","elementName","templateIsValid","startValidatingTemplate","_validating","then","readyPromise","resolveFn","documentWait","styleCache","ScopingShim","_scopeCounter","_documentOwner","_documentOwnerStyleInfo","StyleInfo$$module$node_modules$$webcomponents$shadycss$src$style_info.set","_elementsHaveApplied","_customStyleInterface","_applyShim","_ensure","ScopingShim$$module$node_modules$$webcomponents$shadycss$src$scoping_shim.prototype","?.prototype","ScopingShim$$module$node_modules$$webcomponents$shadycss$src$scoping_shim_prototype$flush","getStyleAst","styleAstToString","prepareTemplate","_prepared","styleTextParts","styles","scopingAttribute","has","newStyle","__cssBuild","_cssBuild","shadowroot","_style","_ownPropertyNames","_ensureCustomStyleInterface","CustomStyleInterface","transformCustomStyleForDocument","flushCustomStyles","_ensureApplyShim","ApplyShim","customStyles","_revalidateCustomStyleApplyShim","_updateProperties","_applyCustomStyles","styleDocument","overrideProps","_isRootOwner","removeProperty","setProperty","cachedStyle","cacheEntry","oldScopeSelector","cachedScopeSelector","applyElementStyle","v","_styleOwnerForNode","owner","ownerStyleInfo","hostAndRootProps","propertiesMatchingHost","propertyData","overrides","reify","styleSubtree","shadowChildren","documentRule","_transformRule","getComputedStyleValue","getComputedStyle","getPropertyValue","setElementClass","classString","scopeName","classAttr","k$","_styleInfoForNode","elementExtends","customElements","Template","WebComponents","flushCallback","runAndClearCallback","bootstrap","origWhenReady","ready"],"mappings":"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","file":"webcomponents-hi-sd.js","sourcesContent":["/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n(scope => {\n\n /********************* base setup *********************/\n const link = document.createElement('link');\n const useNative = Boolean('import' in link);\n const emptyNodeList = link.querySelectorAll('*');\n\n // Polyfill `currentScript` for browsers without it.\n let currentScript = null;\n if ('currentScript' in document === false) {\n Object.defineProperty(document, 'currentScript', {\n get() {\n return currentScript ||\n // NOTE: only works when called in synchronously executing code.\n // readyState should check if `loading` but IE10 is\n // interactive when scripts run so we cheat. This is not needed by\n // html-imports polyfill but helps generally polyfill `currentScript`.\n (document.readyState !== 'complete' ?\n document.scripts[document.scripts.length - 1] : null);\n },\n configurable: true\n });\n }\n\n /**\n * @param {Array|NodeList|NamedNodeMap} list\n * @param {!Function} callback\n * @param {boolean=} inverseOrder\n */\n const forEach = (list, callback, inverseOrder) => {\n const length = list ? list.length : 0;\n const increment = inverseOrder ? -1 : 1;\n let i = inverseOrder ? length - 1 : 0;\n for (; i < length && i >= 0; i = i + increment) {\n callback(list[i], i);\n }\n };\n\n /**\n * @param {!Node} node\n * @param {!string} selector\n * @return {!NodeList<!Element>}\n */\n const QSA = (node, selector) => {\n // IE 11 throws a SyntaxError if a node with no children is queried with\n // a selector containing the `:not([type])` syntax.\n if (!node.childNodes.length) {\n return emptyNodeList;\n }\n return node.querySelectorAll(selector);\n };\n\n /**\n * @param {!DocumentFragment} fragment\n */\n const replaceScripts = (fragment) => {\n forEach(QSA(fragment, 'template'), template => {\n forEach(QSA(template.content, scriptsSelector), script => {\n const clone = /** @type {!HTMLScriptElement} */\n (document.createElement('script'));\n forEach(script.attributes, attr => clone.setAttribute(attr.name, attr.value));\n clone.textContent = script.textContent;\n script.parentNode.replaceChild(clone, script);\n });\n replaceScripts(template.content);\n });\n };\n\n /********************* path fixup *********************/\n const CSS_URL_REGEXP = /(url\\()([^)]*)(\\))/g;\n const CSS_IMPORT_REGEXP = /(@import[\\s]+(?!url\\())([^;]*)(;)/g;\n const STYLESHEET_REGEXP = /(<link[^>]*)(rel=['|\"]?stylesheet['|\"]?[^>]*>)/g;\n\n // path fixup: style elements in imports must be made relative to the main\n // document. We fixup url's in url() and @import.\n const Path = {\n\n fixUrls(element, base) {\n if (element.href) {\n element.setAttribute('href',\n Path.resolveUrl(element.getAttribute('href'), base));\n }\n if (element.src) {\n element.setAttribute('src',\n Path.resolveUrl(element.getAttribute('src'), base));\n }\n if (element.localName === 'style') {\n const r = Path.replaceUrls(element.textContent, base, CSS_URL_REGEXP);\n element.textContent = Path.replaceUrls(r, base, CSS_IMPORT_REGEXP);\n }\n },\n\n replaceUrls(text, linkUrl, regexp) {\n return text.replace(regexp, (m, pre, url, post) => {\n let urlPath = url.replace(/[\"']/g, '');\n if (linkUrl) {\n urlPath = Path.resolveUrl(urlPath, linkUrl);\n }\n return pre + '\\'' + urlPath + '\\'' + post;\n });\n },\n\n resolveUrl(url, base) {\n // Lazy feature detection.\n if (Path.__workingURL === undefined) {\n Path.__workingURL = false;\n try {\n const u = new URL('b', 'http://a');\n u.pathname = 'c%20d';\n Path.__workingURL = (u.href === 'http://a/c%20d');\n } catch (e) {}\n }\n\n if (Path.__workingURL) {\n return (new URL(url, base)).href;\n }\n\n // Fallback to creating an anchor into a disconnected document.\n let doc = Path.__tempDoc;\n if (!doc) {\n doc = document.implementation.createHTMLDocument('temp');\n Path.__tempDoc = doc;\n doc.__base = doc.createElement('base');\n doc.head.appendChild(doc.__base);\n doc.__anchor = doc.createElement('a');\n }\n doc.__base.href = base;\n doc.__anchor.href = url;\n return doc.__anchor.href || url;\n }\n };\n\n /********************* Xhr processor *********************/\n const Xhr = {\n\n async: true,\n\n /**\n * @param {!string} url\n * @param {!function(!string, string=)} success\n * @param {!function(!string)} fail\n */\n load(url, success, fail) {\n if (!url) {\n fail('error: href must be specified');\n } else if (url.match(/^data:/)) {\n // Handle Data URI Scheme\n const pieces = url.split(',');\n const header = pieces[0];\n let resource = pieces[1];\n if (header.indexOf(';base64') > -1) {\n resource = atob(resource);\n } else {\n resource = decodeURIComponent(resource);\n }\n success(resource);\n } else {\n const request = new XMLHttpRequest();\n request.open('GET', url, Xhr.async);\n request.onload = () => {\n // Servers redirecting an import can add a Location header to help us\n // polyfill correctly. Handle relative and full paths.\n // Prefer responseURL which already resolves redirects\n // https://xhr.spec.whatwg.org/#the-responseurl-attribute\n let redirectedUrl = request.responseURL || request.getResponseHeader('Location');\n if (redirectedUrl && redirectedUrl.indexOf('/') === 0) {\n // In IE location.origin might not work\n // https://connect.microsoft.com/IE/feedback/details/1763802/location-origin-is-undefined-in-ie-11-on-windows-10-but-works-on-windows-7\n const origin = (location.origin || location.protocol + '//' + location.host);\n redirectedUrl = origin + redirectedUrl;\n }\n const resource = /** @type {string} */ (request.response || request.responseText);\n if (request.status === 304 || request.status === 0 ||\n request.status >= 200 && request.status < 300) {\n success(resource, redirectedUrl);\n } else {\n fail(resource);\n }\n };\n request.send();\n }\n }\n };\n\n /********************* importer *********************/\n\n const isIE = /Trident/.test(navigator.userAgent) ||\n /Edge\\/\\d./i.test(navigator.userAgent);\n\n const importSelector = 'link[rel=import]';\n\n // Used to disable loading of resources.\n const importDisableType = 'import-disable';\n\n const disabledLinkSelector = `link[rel=stylesheet][href][type=${importDisableType}]`;\n\n const scriptsSelector = `script:not([type]),script[type=\"application/javascript\"],` +\n `script[type=\"text/javascript\"]`;\n\n const importDependenciesSelector = `${importSelector},${disabledLinkSelector},` +\n `style:not([type]),link[rel=stylesheet][href]:not([type]),` + scriptsSelector;\n\n const importDependencyAttr = 'import-dependency';\n\n const rootImportSelector = `${importSelector}:not([${importDependencyAttr}])`;\n\n const pendingScriptsSelector = `script[${importDependencyAttr}]`;\n\n const pendingStylesSelector = `style[${importDependencyAttr}],` +\n `link[rel=stylesheet][${importDependencyAttr}]`;\n\n /**\n * Importer will:\n * - load any linked import documents (with deduping)\n * - whenever an import is loaded, prompt the parser to try to parse\n * - observe imported documents for new elements (these are handled via the\n * dynamic importer)\n */\n class Importer {\n constructor() {\n this.documents = {};\n // Used to keep track of pending loads, so that flattening and firing of\n // events can be done when all resources are ready.\n this.inflight = 0;\n this.dynamicImportsMO = new MutationObserver(m => this.handleMutations(m));\n // Observe changes on <head>.\n this.dynamicImportsMO.observe(document.head, {\n childList: true,\n subtree: true\n });\n // 1. Load imports contents\n // 2. Assign them to first import links on the document\n // 3. Wait for import styles & scripts to be done loading/running\n // 4. Fire load/error events\n this.loadImports(document);\n }\n\n /**\n * @param {!(HTMLDocument|DocumentFragment|Element)} doc\n */\n loadImports(doc) {\n const links = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(doc, importSelector));\n forEach(links, link => this.loadImport(link));\n }\n\n /**\n * @param {!HTMLLinkElement} link\n */\n loadImport(link) {\n const url = link.href;\n // This resource is already being handled by another import.\n if (this.documents[url] !== undefined) {\n // If import is already loaded, we can safely associate it to the link\n // and fire the load/error event.\n const imp = this.documents[url];\n if (imp && imp['__loaded']) {\n link['__import'] = imp;\n this.fireEventIfNeeded(link);\n }\n return;\n }\n this.inflight++;\n // Mark it as pending to notify others this url is being loaded.\n this.documents[url] = 'pending';\n Xhr.load(url, (resource, redirectedUrl) => {\n const doc = this.makeDocument(resource, redirectedUrl || url);\n this.documents[url] = doc;\n this.inflight--;\n // Load subtree.\n this.loadImports(doc);\n this.processImportsIfLoadingDone();\n }, () => {\n // If load fails, handle error.\n this.documents[url] = null;\n this.inflight--;\n this.processImportsIfLoadingDone();\n });\n }\n\n /**\n * Creates a new document containing resource and normalizes urls accordingly.\n * @param {string=} resource\n * @param {string=} url\n * @return {!DocumentFragment}\n */\n makeDocument(resource, url) {\n if (!resource) {\n return document.createDocumentFragment();\n }\n\n if (isIE) {\n // <link rel=stylesheet> should be appended to <head>. Not doing so\n // in IE/Edge breaks the cascading order. We disable the loading by\n // setting the type before setting innerHTML to avoid loading\n // resources twice.\n resource = resource.replace(STYLESHEET_REGEXP, (match, p1, p2) => {\n if (match.indexOf('type=') === -1) {\n return `${p1} type=${importDisableType} ${p2}`;\n }\n return match;\n });\n }\n\n let content;\n const template = /** @type {!HTMLTemplateElement} */\n (document.createElement('template'));\n template.innerHTML = resource;\n if (template.content) {\n content = template.content;\n // Clone scripts inside templates since they won't execute when the\n // hosting template is cloned.\n replaceScripts(content);\n } else {\n // <template> not supported, create fragment and move content into it.\n content = document.createDocumentFragment();\n while (template.firstChild) {\n content.appendChild(template.firstChild);\n }\n }\n\n // Support <base> in imported docs. Resolve url and remove its href.\n const baseEl = content.querySelector('base');\n if (baseEl) {\n url = Path.resolveUrl(baseEl.getAttribute('href'), url);\n baseEl.removeAttribute('href');\n }\n\n const n$ = /** @type {!NodeList<!(HTMLLinkElement|HTMLScriptElement|HTMLStyleElement)>} */\n (QSA(content, importDependenciesSelector));\n // For source map hints.\n let inlineScriptIndex = 0;\n forEach(n$, n => {\n // Listen for load/error events, then fix urls.\n whenElementLoaded(n);\n Path.fixUrls(n, url);\n // Mark for easier selectors.\n n.setAttribute(importDependencyAttr, '');\n // Generate source map hints for inline scripts.\n if (n.localName === 'script' && !n.src && n.textContent) {\n const num = inlineScriptIndex ? `-${inlineScriptIndex}` : '';\n const content = n.textContent + `\\n//# sourceURL=${url}${num}.js\\n`;\n // We use the src attribute so it triggers load/error events, and it's\n // easier to capture errors (e.g. parsing) like this.\n n.setAttribute('src', 'data:text/javascript;charset=utf-8,' + encodeURIComponent(content));\n n.textContent = '';\n inlineScriptIndex++;\n }\n });\n return content;\n }\n\n /**\n * Waits for loaded imports to finish loading scripts and styles, then fires\n * the load/error events.\n */\n processImportsIfLoadingDone() {\n // Wait until all resources are ready, then load import resources.\n if (this.inflight) return;\n\n // Stop observing, flatten & load resource, then restart observing <head>.\n this.dynamicImportsMO.disconnect();\n this.flatten(document);\n // We wait for styles to load, and at the same time we execute the scripts,\n // then fire the load/error events for imports to have faster whenReady\n // callback execution.\n // NOTE: This is different for native behavior where scripts would be\n // executed after the styles before them are loaded.\n // To achieve that, we could select pending styles and scripts in the\n // document and execute them sequentially in their dom order.\n let scriptsOk = false,\n stylesOk = false;\n const onLoadingDone = () => {\n if (stylesOk && scriptsOk) {\n // Catch any imports that might have been added while we\n // weren't looking, wait for them as well.\n this.loadImports(document);\n if (this.inflight) return;\n\n // Restart observing.\n this.dynamicImportsMO.observe(document.head, {\n childList: true,\n subtree: true\n });\n this.fireEvents();\n }\n }\n this.waitForStyles(() => {\n stylesOk = true;\n onLoadingDone();\n });\n this.runScripts(() => {\n scriptsOk = true;\n onLoadingDone();\n });\n }\n\n /**\n * @param {!HTMLDocument} doc\n */\n flatten(doc) {\n const n$ = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(doc, importSelector));\n forEach(n$, n => {\n const imp = this.documents[n.href];\n n['__import'] = /** @type {!Document} */ (imp);\n if (imp && imp.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n // We set the .import to be the link itself, and update its readyState.\n // Other links with the same href will point to this link.\n this.documents[n.href] = n;\n n.readyState = 'loading';\n n['__import'] = n;\n this.flatten(imp);\n n.appendChild(imp);\n }\n });\n }\n\n /**\n * Replaces all the imported scripts with a clone in order to execute them.\n * Updates the `currentScript`.\n * @param {!function()} callback\n */\n runScripts(callback) {\n const s$ = QSA(document, pendingScriptsSelector);\n const l = s$.length;\n const cloneScript = i => {\n if (i < l) {\n // The pending scripts have been generated through innerHTML and\n // browsers won't execute them for security reasons. We cannot use\n // s.cloneNode(true) either, the only way to run the script is manually\n // creating a new element and copying its attributes.\n const s = s$[i];\n const clone = /** @type {!HTMLScriptElement} */\n (document.createElement('script'));\n // Remove import-dependency attribute to avoid double cloning.\n s.removeAttribute(importDependencyAttr);\n forEach(s.attributes, attr => clone.setAttribute(attr.name, attr.value));\n // Update currentScript and replace original with clone script.\n currentScript = clone;\n s.parentNode.replaceChild(clone, s);\n whenElementLoaded(clone, () => {\n currentScript = null;\n cloneScript(i + 1);\n });\n } else {\n callback();\n }\n };\n cloneScript(0);\n }\n\n /**\n * Waits for all the imported stylesheets/styles to be loaded.\n * @param {!function()} callback\n */\n waitForStyles(callback) {\n const s$ = /** @type {!NodeList<!(HTMLLinkElement|HTMLStyleElement)>} */\n (QSA(document, pendingStylesSelector));\n let pending = s$.length;\n if (!pending) {\n callback();\n return;\n }\n // <link rel=stylesheet> should be appended to <head>. Not doing so\n // in IE/Edge breaks the cascading order\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10472273/\n // If there is one <link rel=stylesheet> imported, we must move all imported\n // links and styles to <head>.\n const needsMove = isIE && !!document.querySelector(disabledLinkSelector);\n forEach(s$, s => {\n // Listen for load/error events, remove selector once is done loading.\n whenElementLoaded(s, () => {\n s.removeAttribute(importDependencyAttr);\n if (--pending === 0) {\n callback();\n }\n });\n // Check if was already moved to head, to handle the case where the element\n // has already been moved but it is still loading.\n if (needsMove && s.parentNode !== document.head) {\n // Replace the element we're about to move with a placeholder.\n const placeholder = document.createElement(s.localName);\n // Add reference of the moved element.\n placeholder['__appliedElement'] = s;\n // Disable this from appearing in document.styleSheets.\n placeholder.setAttribute('type', 'import-placeholder');\n // Append placeholder next to the sibling, and move original to <head>.\n s.parentNode.insertBefore(placeholder, s.nextSibling);\n let newSibling = importForElement(s);\n while (newSibling && importForElement(newSibling)) {\n newSibling = importForElement(newSibling);\n }\n if (newSibling.parentNode !== document.head) {\n newSibling = null;\n }\n document.head.insertBefore(s, newSibling);\n // Enable the loading of <link rel=stylesheet>.\n s.removeAttribute('type');\n }\n });\n }\n\n /**\n * Fires load/error events for imports in the right order .\n */\n fireEvents() {\n const n$ = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(document, importSelector));\n // Inverse order to have events firing bottom-up.\n forEach(n$, n => this.fireEventIfNeeded(n), true);\n }\n\n /**\n * Fires load/error event for the import if this wasn't done already.\n * @param {!HTMLLinkElement} link\n */\n fireEventIfNeeded(link) {\n // Don't fire twice same event.\n if (!link['__loaded']) {\n link['__loaded'] = true;\n // Update link's import readyState.\n link.import && (link.import.readyState = 'complete');\n const eventType = link.import ? 'load' : 'error';\n link.dispatchEvent(newCustomEvent(eventType, {\n bubbles: false,\n cancelable: false,\n detail: undefined\n }));\n }\n }\n\n /**\n * @param {Array<MutationRecord>} mutations\n */\n handleMutations(mutations) {\n forEach(mutations, m => forEach(m.addedNodes, elem => {\n if (elem && elem.nodeType === Node.ELEMENT_NODE) {\n // NOTE: added scripts are not updating currentScript in IE.\n if (isImportLink(elem)) {\n this.loadImport( /** @type {!HTMLLinkElement} */ (elem));\n } else {\n this.loadImports( /** @type {!Element} */ (elem));\n }\n }\n }));\n }\n }\n\n /**\n * @param {!Node} node\n * @return {boolean}\n */\n const isImportLink = node => {\n return node.nodeType === Node.ELEMENT_NODE && node.localName === 'link' &&\n ( /** @type {!HTMLLinkElement} */ (node).rel === 'import');\n };\n\n /**\n * Waits for an element to finish loading. If already done loading, it will\n * mark the element accordingly.\n * @param {!(HTMLLinkElement|HTMLScriptElement|HTMLStyleElement)} element\n * @param {function()=} callback\n */\n const whenElementLoaded = (element, callback) => {\n if (element['__loaded']) {\n callback && callback();\n } else if ((element.localName === 'script' && !element.src) ||\n (element.localName === 'style' && !element.firstChild)) {\n // Inline scripts and empty styles don't trigger load/error events,\n // consider them already loaded.\n element['__loaded'] = true;\n callback && callback();\n } else {\n const onLoadingDone = event => {\n element.removeEventListener(event.type, onLoadingDone);\n element['__loaded'] = true;\n callback && callback();\n };\n element.addEventListener('load', onLoadingDone);\n // NOTE: We listen only for load events in IE/Edge, because in IE/Edge\n // <style> with @import will fire error events for each failing @import,\n // and finally will trigger the load event when all @import are\n // finished (even if all fail).\n if (!isIE || element.localName !== 'style') {\n element.addEventListener('error', onLoadingDone);\n }\n }\n }\n\n /**\n * Calls the callback when all imports in the document at call time\n * (or at least document ready) have loaded. Callback is called synchronously\n * if imports are already done loading.\n * @param {function()=} callback\n */\n const whenReady = callback => {\n // 1. ensure the document is in a ready state (has dom), then\n // 2. watch for loading of imports and call callback when done\n whenDocumentReady(() => whenImportsReady(() => callback && callback()));\n }\n\n /**\n * Invokes the callback when document is in ready state. Callback is called\n * synchronously if document is already done loading.\n * @param {!function()} callback\n */\n const whenDocumentReady = callback => {\n const stateChanged = () => {\n // NOTE: Firefox can hit readystate interactive without document.body existing.\n // This is anti-spec, but we handle it here anyways by waiting for next change.\n if (document.readyState !== 'loading' && !!document.body) {\n document.removeEventListener('readystatechange', stateChanged);\n callback();\n }\n }\n document.addEventListener('readystatechange', stateChanged);\n stateChanged();\n }\n\n /**\n * Invokes the callback after all imports are loaded. Callback is called\n * synchronously if imports are already done loading.\n * @param {!function()} callback\n */\n const whenImportsReady = callback => {\n let imports = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(document, rootImportSelector));\n let pending = imports.length;\n if (!pending) {\n callback();\n return;\n }\n forEach(imports, imp => whenElementLoaded(imp, () => {\n if (--pending === 0) {\n callback();\n }\n }));\n }\n\n /**\n * Returns the import document containing the element.\n * @param {!Node} element\n * @return {HTMLLinkElement|Document|undefined}\n */\n const importForElement = element => {\n if (useNative) {\n // Return only if not in the main doc!\n return element.ownerDocument !== document ? element.ownerDocument : null;\n }\n let doc = element['__importDoc'];\n if (!doc && element.parentNode) {\n doc = /** @type {!Element} */ (element.parentNode);\n if (typeof doc.closest === 'function') {\n // Element.closest returns the element itself if it matches the selector,\n // so we search the closest import starting from the parent.\n doc = doc.closest(importSelector);\n } else {\n // Walk up the parent tree until we find an import.\n while (!isImportLink(doc) && (doc = doc.parentNode)) {}\n }\n element['__importDoc'] = doc;\n }\n return doc;\n }\n\n let importer = null;\n /**\n * Ensures imports contained in the element are imported.\n * Use this to handle dynamic imports attached to body.\n * @param {!(HTMLDocument|Element)} doc\n */\n const loadImports = (doc) => {\n if (importer) {\n importer.loadImports(doc);\n }\n };\n\n const newCustomEvent = (type, params) => {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(type, params);\n }\n const event = /** @type {!CustomEvent} */ (document.createEvent('CustomEvent'));\n event.initCustomEvent(type, Boolean(params.bubbles), Boolean(params.cancelable), params.detail);\n return event;\n };\n\n if (useNative) {\n // Check for imports that might already be done loading by the time this\n // script is actually executed. Native imports are blocking, so the ones\n // available in the document by this time should already have failed\n // or have .import defined.\n const imps = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(document, importSelector));\n forEach(imps, imp => {\n if (!imp.import || imp.import.readyState !== 'loading') {\n imp['__loaded'] = true;\n }\n });\n // Listen for load/error events to capture dynamically added scripts.\n /**\n * @type {!function(!Event)}\n */\n const onLoadingDone = event => {\n const elem = /** @type {!Element} */ (event.target);\n if (isImportLink(elem)) {\n elem['__loaded'] = true;\n }\n };\n document.addEventListener('load', onLoadingDone, true /* useCapture */ );\n document.addEventListener('error', onLoadingDone, true /* useCapture */ );\n } else {\n // Override baseURI so that imported elements' baseURI can be used seemlessly\n // on native or polyfilled html-imports.\n // NOTE: a <link rel=import> will have `link.baseURI === link.href`, as the link\n // itself is used as the `import` document.\n /** @type {Object|undefined} */\n const native_baseURI = Object.getOwnPropertyDescriptor(Node.prototype, 'baseURI');\n // NOTE: if not configurable (e.g. safari9), set it on the Element prototype. \n const klass = !native_baseURI || native_baseURI.configurable ? Node : Element;\n Object.defineProperty(klass.prototype, 'baseURI', {\n get() {\n const ownerDoc = /** @type {HTMLLinkElement} */ (isImportLink(this) ? this : importForElement(this));\n if (ownerDoc) return ownerDoc.href;\n // Use native baseURI if possible.\n if (native_baseURI && native_baseURI.get) return native_baseURI.get.call(this);\n // Polyfill it if not available.\n const base = /** @type {HTMLBaseElement} */ (document.querySelector('base'));\n return (base || window.location).href;\n },\n configurable: true,\n enumerable: true\n });\n\n // Define 'import' read-only property.\n Object.defineProperty(HTMLLinkElement.prototype, 'import', {\n get() {\n return /** @type {HTMLLinkElement} */ (this)['__import'] || null;\n },\n configurable: true,\n enumerable: true\n });\n\n whenDocumentReady(() => {\n importer = new Importer()\n });\n }\n\n /**\n Add support for the `HTMLImportsLoaded` event and the `HTMLImports.whenReady`\n method. This api is necessary because unlike the native implementation,\n script elements do not force imports to resolve. Instead, users should wrap\n code in either an `HTMLImportsLoaded` handler or after load time in an\n `HTMLImports.whenReady(callback)` call.\n\n NOTE: This module also supports these apis under the native implementation.\n Therefore, if this file is loaded, the same code can be used under both\n the polyfill and native implementation.\n */\n whenReady(() => document.dispatchEvent(newCustomEvent('HTMLImportsLoaded', {\n cancelable: true,\n bubbles: true,\n detail: undefined\n })));\n\n // exports\n scope.useNative = useNative;\n scope.whenReady = whenReady;\n scope.importForElement = importForElement;\n scope.loadImports = loadImports;\n\n})(window.HTMLImports = (window.HTMLImports || {}));",null,null,null,null,null,"/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n\nexport class ShadyData {\n constructor() {\n /** @type {ShadowRoot} */\n this.root = null;\n /** @type {ShadowRoot} */\n this.publicRoot = null;\n this.dirty = false;\n this.observer = null;\n /** @type {Array<Node>} */\n this.assignedNodes = null;\n /** @type {Element} */\n this.assignedSlot = null;\n /** @type {Array<Node>} */\n this._previouslyAssignedNodes = null;\n /** @type {Element} */\n this._prevAssignedSlot = null;\n /** @type {Array<Node>} */\n this.flattenedNodes = null;\n this.ownerShadyRoot = undefined;\n /** @type {Node|undefined} */\n this.parentNode = undefined;\n /** @type {Node|undefined} */\n this.firstChild = undefined;\n /** @type {Node|undefined} */\n this.lastChild = undefined;\n /** @type {Node|undefined} */\n this.previousSibling = undefined;\n /** @type {Node|undefined} */\n this.nextSibling = undefined;\n /** @type {Array<Node>|undefined} */\n this.childNodes = undefined;\n this.__outsideAccessors = false;\n this.__insideAccessors = false;\n }\n\n toJSON() {\n return {};\n }\n}\n\nexport function ensureShadyDataForNode(node) {\n if (!node.__shady) {\n node.__shady = new ShadyData();\n }\n return node.__shady;\n}\n\nexport function shadyDataForNode(node) {\n return node && node.__shady;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nimport {shadyDataForNode} from './shady-data.js';\n\nexport let settings = window['ShadyDOM'] || {};\n\nsettings.hasNativeShadowDOM = Boolean(Element.prototype.attachShadow && Node.prototype.getRootNode);\n\nlet desc = Object.getOwnPropertyDescriptor(Node.prototype, 'firstChild');\n\nsettings.hasDescriptors = Boolean(desc && desc.configurable && desc.get);\nsettings.inUse = settings['force'] || !settings.hasNativeShadowDOM;\n\n// Default to using native accessors (instead of treewalker) only for\n// IE/Edge where they are faster.\nconst IS_IE = navigator.userAgent.match('Trident');\nconst IS_EDGE = navigator.userAgent.match('Edge');\nif (settings.useNativeAccessors === undefined) {\n settings.useNativeAccessors = settings.hasDescriptors && (IS_IE || IS_EDGE);\n}\n\nexport function isTrackingLogicalChildNodes(node) {\n const nodeData = shadyDataForNode(node);\n return (nodeData && nodeData.firstChild !== undefined);\n}\n\nexport function isShadyRoot(obj) {\n return Boolean(obj._localName === 'ShadyRoot');\n}\n\nexport function ownerShadyRootForNode(node) {\n let root = node.getRootNode();\n if (isShadyRoot(root)) {\n return root;\n }\n}\n\nlet p = Element.prototype;\nlet matches = p.matches || p.matchesSelector ||\n p.mozMatchesSelector || p.msMatchesSelector ||\n p.oMatchesSelector || p.webkitMatchesSelector;\n\nexport function matchesSelector(element, selector) {\n return matches.call(element, selector);\n}\n\nfunction copyOwnProperty(name, source, target) {\n let pd = Object.getOwnPropertyDescriptor(source, name);\n if (pd) {\n Object.defineProperty(target, name, pd);\n }\n}\n\nexport function extend(target, source) {\n if (target && source) {\n let n$ = Object.getOwnPropertyNames(source);\n for (let i=0, n; (i<n$.length) && (n=n$[i]); i++) {\n copyOwnProperty(n, source, target);\n }\n }\n return target || source;\n}\n\nexport function extendAll(target, ...sources) {\n for (let i=0; i < sources.length; i++) {\n extend(target, sources[i]);\n }\n return target;\n}\n\nexport function mixin(target, source) {\n for (var i in source) {\n target[i] = source[i];\n }\n return target;\n}\n\nexport function patchPrototype(obj, mixin) {\n let proto = Object.getPrototypeOf(obj);\n if (!proto.hasOwnProperty('__patchProto')) {\n let patchProto = Object.create(proto);\n patchProto.__sourceProto = proto;\n extend(patchProto, mixin);\n proto['__patchProto'] = patchProto;\n }\n // old browsers don't have setPrototypeOf\n obj.__proto__ = proto['__patchProto'];\n}\n\n\nlet twiddle = document.createTextNode('');\nlet content = 0;\nlet queue = [];\nnew MutationObserver(() => {\n while (queue.length) {\n // catch errors in user code...\n try {\n queue.shift()();\n } catch(e) {\n // enqueue another record and throw\n twiddle.textContent = content++;\n throw(e);\n }\n }\n}).observe(twiddle, {characterData: true});\n\n// use MutationObserver to get microtask async timing.\nexport function microtask(callback) {\n queue.push(callback);\n twiddle.textContent = content++;\n}\n\nexport const hasDocumentContains = Boolean(document.contains);\n\nexport function contains(container, node) {\n while (node) {\n if (node == container) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\n\n// render enqueuer/flusher\nlet flushList = [];\nlet scheduled;\nexport function enqueue(callback) {\n if (!scheduled) {\n scheduled = true;\n utils.microtask(flush);\n }\n flushList.push(callback);\n}\n\nexport function flush() {\n scheduled = false;\n let didFlush = Boolean(flushList.length);\n while (flushList.length) {\n flushList.shift()();\n }\n return didFlush;\n}\n\nflush['list'] = flushList;\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {ensureShadyDataForNode} from './shady-data.js';\n\nclass AsyncObserver {\n\n constructor() {\n this._scheduled = false;\n this.addedNodes = [];\n this.removedNodes = [];\n this.callbacks = new Set();\n }\n\n schedule() {\n if (!this._scheduled) {\n this._scheduled = true;\n utils.microtask(() => {\n this.flush();\n });\n }\n }\n\n flush() {\n if (this._scheduled) {\n this._scheduled = false;\n let mutations = this.takeRecords();\n if (mutations.length) {\n this.callbacks.forEach(function(cb) {\n cb(mutations);\n });\n }\n }\n }\n\n takeRecords() {\n if (this.addedNodes.length || this.removedNodes.length) {\n let mutations = [{\n addedNodes: this.addedNodes,\n removedNodes: this.removedNodes\n }];\n this.addedNodes = [];\n this.removedNodes = [];\n return mutations;\n }\n return [];\n }\n\n}\n\n// TODO(sorvell): consider instead polyfilling MutationObserver\n// directly so that users do not have to fork their code.\n// Supporting the entire api may be challenging: e.g. filtering out\n// removed nodes in the wrong scope and seeing non-distributing\n// subtree child mutations.\nexport let observeChildren = function(node, callback) {\n const sd = ensureShadyDataForNode(node);\n if (!sd.observer) {\n sd.observer = new AsyncObserver();\n }\n sd.observer.callbacks.add(callback);\n let observer = sd.observer;\n return {\n _callback: callback,\n _observer: observer,\n _node: node,\n takeRecords() {\n return observer.takeRecords()\n }\n };\n}\n\nexport let unobserveChildren = function(handle) {\n let observer = handle && handle._observer;\n if (observer) {\n observer.callbacks.delete(handle._callback);\n if (!observer.callbacks.size) {\n ensureShadyDataForNode(handle._node).observer = null;\n }\n }\n}\n\nexport function filterMutations(mutations, target) {\n /** @const {Node} */\n const targetRootNode = target.getRootNode();\n return mutations.map(function(mutation) {\n /** @const {boolean} */\n const mutationInScope = (targetRootNode === mutation.target.getRootNode());\n if (mutationInScope && mutation.addedNodes) {\n let nodes = Array.from(mutation.addedNodes).filter(function(n) {\n return (targetRootNode === n.getRootNode());\n });\n if (nodes.length) {\n mutation = Object.create(mutation);\n Object.defineProperty(mutation, 'addedNodes', {\n value: nodes,\n configurable: true\n });\n return mutation;\n }\n } else if (mutationInScope) {\n return mutation;\n }\n }).filter(function(m) { return m});\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nexport let appendChild = Element.prototype.appendChild;\nexport let insertBefore = Element.prototype.insertBefore;\nexport let replaceChild = Element.prototype.replaceChild;\nexport let removeChild = Element.prototype.removeChild;\nexport let setAttribute = Element.prototype.setAttribute;\nexport let removeAttribute = Element.prototype.removeAttribute;\nexport let cloneNode = Element.prototype.cloneNode;\nexport let importNode = Document.prototype.importNode;\nexport let addEventListener = Element.prototype.addEventListener;\nexport let removeEventListener = Element.prototype.removeEventListener;\nexport let windowAddEventListener = Window.prototype.addEventListener;\nexport let windowRemoveEventListener = Window.prototype.removeEventListener;\nexport let dispatchEvent = Element.prototype.dispatchEvent;\nexport let contains = Node.prototype.contains || HTMLElement.prototype.contains;\nexport let getElementById = Document.prototype.getElementById;\nexport let elementQuerySelector = Element.prototype.querySelector;\nexport let fragmentQuerySelector = DocumentFragment.prototype.querySelector;\nexport let documentQuerySelector = Document.prototype.querySelector;\nexport let querySelector = function(selector) {\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n return elementQuerySelector.call(this, selector);\n case Node.DOCUMENT_NODE:\n return documentQuerySelector.call(this, selector);\n default:\n return fragmentQuerySelector.call(this, selector);\n }\n};\nexport let elementQuerySelectorAll = Element.prototype.querySelectorAll;\nexport let fragmentQuerySelectorAll = DocumentFragment.prototype.querySelectorAll;\nexport let documentQuerySelectorAll = Document.prototype.querySelectorAll;\nexport let querySelectorAll = function(selector) {\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n return elementQuerySelectorAll.call(this, selector);\n case Node.DOCUMENT_NODE:\n return documentQuerySelectorAll.call(this, selector);\n default:\n return fragmentQuerySelectorAll.call(this, selector);\n }\n};","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n// Cribbed from ShadowDOM polyfill\n// https://github.com/webcomponents/webcomponentsjs/blob/master/src/ShadowDOM/wrappers/HTMLElement.js#L28\n/////////////////////////////////////////////////////////////////////////////\n// innerHTML and outerHTML\n\n// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#escapingString\nlet escapeAttrRegExp = /[&\\u00A0\"]/g;\nlet escapeDataRegExp = /[&\\u00A0<>]/g;\n\nfunction escapeReplace(c) {\n switch (c) {\n case '&':\n return '&amp;';\n case '<':\n return '&lt;';\n case '>':\n return '&gt;';\n case '\"':\n return '&quot;';\n case '\\u00A0':\n return '&nbsp;';\n }\n}\n\nfunction escapeAttr(s) {\n return s.replace(escapeAttrRegExp, escapeReplace);\n}\n\nfunction escapeData(s) {\n return s.replace(escapeDataRegExp, escapeReplace);\n}\n\nfunction makeSet(arr) {\n let set = {};\n for (let i = 0; i < arr.length; i++) {\n set[arr[i]] = true;\n }\n return set;\n}\n\n// http://www.whatwg.org/specs/web-apps/current-work/#void-elements\nlet voidElements = makeSet([\n 'area',\n 'base',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]);\n\nlet plaintextParents = makeSet([\n 'style',\n 'script',\n 'xmp',\n 'iframe',\n 'noembed',\n 'noframes',\n 'plaintext',\n 'noscript'\n]);\n\n/**\n * @param {Node} node\n * @param {Node} parentNode\n * @param {Function=} callback\n */\nexport function getOuterHTML(node, parentNode, callback) {\n switch (node.nodeType) {\n case Node.ELEMENT_NODE: {\n let tagName = node.localName;\n let s = '<' + tagName;\n let attrs = node.attributes;\n for (let i = 0, attr; (attr = attrs[i]); i++) {\n s += ' ' + attr.name + '=\"' + escapeAttr(attr.value) + '\"';\n }\n s += '>';\n if (voidElements[tagName]) {\n return s;\n }\n return s + getInnerHTML(node, callback) + '</' + tagName + '>';\n }\n case Node.TEXT_NODE: {\n let data = /** @type {Text} */ (node).data;\n if (parentNode && plaintextParents[parentNode.localName]) {\n return data;\n }\n return escapeData(data);\n }\n case Node.COMMENT_NODE: {\n return '<!--' + /** @type {Comment} */ (node).data + '-->';\n }\n default: {\n window.console.error(node);\n throw new Error('not implemented');\n }\n }\n}\n\n/**\n * @param {Node} node\n * @param {Function=} callback\n */\nexport function getInnerHTML(node, callback) {\n if (node.localName === 'template') {\n node = /** @type {HTMLTemplateElement} */ (node).content;\n }\n let s = '';\n let c$ = callback ? callback(node) : node.childNodes;\n for (let i=0, l=c$.length, child; (i<l) && (child=c$[i]); i++) {\n s += getOuterHTML(child, node, callback);\n }\n return s;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {getInnerHTML} from './innerHTML.js';\n\nlet nodeWalker = document.createTreeWalker(document, NodeFilter.SHOW_ALL,\n null, false);\n\nlet elementWalker = document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT,\n null, false);\n\nexport function parentNode(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.parentNode();\n}\n\nexport function firstChild(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.firstChild();\n}\n\nexport function lastChild(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.lastChild();\n}\n\nexport function previousSibling(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.previousSibling();\n}\n\nexport function nextSibling(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.nextSibling();\n}\n\nexport function childNodes(node) {\n let nodes = [];\n nodeWalker.currentNode = node;\n let n = nodeWalker.firstChild();\n while (n) {\n nodes.push(n);\n n = nodeWalker.nextSibling();\n }\n return nodes;\n}\n\nexport function parentElement(node) {\n elementWalker.currentNode = node;\n return elementWalker.parentNode();\n}\n\nexport function firstElementChild(node) {\n elementWalker.currentNode = node;\n return elementWalker.firstChild();\n}\n\nexport function lastElementChild(node) {\n elementWalker.currentNode = node;\n return elementWalker.lastChild();\n}\n\nexport function previousElementSibling(node) {\n elementWalker.currentNode = node;\n return elementWalker.previousSibling();\n}\n\nexport function nextElementSibling(node) {\n elementWalker.currentNode = node;\n return elementWalker.nextSibling();\n}\n\nexport function children(node) {\n let nodes = [];\n elementWalker.currentNode = node;\n let n = elementWalker.firstChild();\n while (n) {\n nodes.push(n);\n n = elementWalker.nextSibling();\n }\n return nodes;\n}\n\nexport function innerHTML(node) {\n return getInnerHTML(node, (n) => childNodes(n));\n}\n\nexport function textContent(node) {\n /* eslint-disable no-case-declarations */\n switch (node.nodeType) {\n case Node.ELEMENT_NODE:\n case Node.DOCUMENT_FRAGMENT_NODE:\n let textWalker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT,\n null, false);\n let content = '', n;\n while ( (n = textWalker.nextNode()) ) {\n // TODO(sorvell): can't use textContent since we patch it on Node.prototype!\n // However, should probably patch it only on element.\n content += n.nodeValue;\n }\n return content;\n default:\n return node.nodeValue;\n }\n /* eslint-enable */\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nimport * as utils from './utils.js';\n\nconst hasDescriptors = utils.settings.hasDescriptors;\n\n// Find descriptor on the \"lowest\" native prototype. Safe as these are not\n// overridden and we call these on nodes.\nconst nativeProtos = [Node.prototype, Element.prototype, HTMLElement.prototype];\n// note, avoid Array.find for IE11 compat.\nfunction findNativeProtoWithDescriptor(name) {\n for (let i=0; i < nativeProtos.length; i++) {\n const proto = nativeProtos[i];\n if (proto.hasOwnProperty(name)) {\n return proto;\n }\n }\n}\nfunction findNodeDescriptor(name) {\n const proto = findNativeProtoWithDescriptor(name);\n if (!proto) {\n throw Error(`Could not find descriptor for ${name}`);\n }\n return Object.getOwnPropertyDescriptor(proto, name);\n}\n\nexport const nodeAccessors = hasDescriptors ? {\n parentNode: findNodeDescriptor('parentNode'),\n firstChild: findNodeDescriptor('firstChild'),\n lastChild: findNodeDescriptor('lastChild'),\n previousSibling: findNodeDescriptor('previousSibling'),\n nextSibling: findNodeDescriptor('nextSibling'),\n childNodes: findNodeDescriptor('childNodes'),\n parentElement: findNodeDescriptor('parentElement'),\n previousElementSibling: findNodeDescriptor('previousElementSibling'),\n nextElementSibling: findNodeDescriptor('nextElementSibling'),\n innerHTML: findNodeDescriptor('innerHTML'),\n textContent: findNodeDescriptor('textContent'),\n firstElementChild: findNodeDescriptor('firstElementChild'),\n lastElementChild: findNodeDescriptor('lastElementChild'),\n children: findNodeDescriptor('children'),\n} : {};\n\nexport const fragmentAccessors = hasDescriptors ? {\n firstElementChild: Object.getOwnPropertyDescriptor(\n DocumentFragment.prototype, 'firstElementChild'),\n lastElementChild: Object.getOwnPropertyDescriptor(\n DocumentFragment.prototype, 'lastElementChild'),\n children: Object.getOwnPropertyDescriptor(\n DocumentFragment.prototype, 'children')\n} : {};\n\nexport const documentAccessors = hasDescriptors ? {\n firstElementChild: Object.getOwnPropertyDescriptor(\n Document.prototype, 'firstElementChild'),\n lastElementChild: Object.getOwnPropertyDescriptor(\n Document.prototype, 'lastElementChild'),\n children: Object.getOwnPropertyDescriptor(\n Document.prototype, 'children')\n} : {};\n\nexport function parentNode(node) {\n return nodeAccessors.parentNode.get.call(node);\n}\n\nexport function firstChild(node) {\n return nodeAccessors.firstChild.get.call(node);\n}\n\nexport function lastChild(node) {\n return nodeAccessors.lastChild.get.call(node);\n}\n\nexport function previousSibling(node) {\n return nodeAccessors.previousSibling.get.call(node);\n}\n\nexport function nextSibling(node) {\n return nodeAccessors.nextSibling.get.call(node);\n}\n\nexport function childNodes(node) {\n return Array.prototype.slice.call(nodeAccessors.childNodes.get.call(node));\n}\n\nexport function parentElement(node) {\n return nodeAccessors.parentElement.get.call(node);\n}\n\nexport function previousElementSibling(node) {\n return nodeAccessors.previousElementSibling.get.call(node);\n}\n\nexport function nextElementSibling(node) {\n return nodeAccessors.nextElementSibling.get.call(node);\n}\n\nexport function innerHTML(node) {\n return nodeAccessors.innerHTML.get.call(node);\n}\n\nexport function textContent(node) {\n return nodeAccessors.textContent.get.call(node);\n}\n\nexport function children(node) {\n let children;\n switch (node.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n children = fragmentAccessors.children.get.call(node);\n break;\n case Node.DOCUMENT_NODE:\n children = documentAccessors.children.get.call(node);\n break;\n default:\n children = nodeAccessors.children.get.call(node);\n break;\n }\n return Array.prototype.slice.call(children);\n}\n\nexport function firstElementChild(node) {\n switch (node.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n return fragmentAccessors.firstElementChild.get.call(node);\n case Node.DOCUMENT_NODE:\n return documentAccessors.firstElementChild.get.call(node);\n default:\n return nodeAccessors.firstElementChild.get.call(node);\n }\n}\n\nexport function lastElementChild(node) {\n switch (node.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n return fragmentAccessors.lastElementChild.get.call(node);\n case Node.DOCUMENT_NODE:\n return documentAccessors.lastElementChild.get.call(node);\n default:\n return nodeAccessors.lastElementChild.get.call(node);\n }\n}","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as nativeTreeWalker from './native-tree-walker.js';\nimport * as nativeTreeAccessors from './native-tree-accessors.js';\nimport * as utils from './utils.js';\n\nexport const accessors = utils.settings.useNativeAccessors ?\n nativeTreeAccessors : nativeTreeWalker;","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {getInnerHTML} from './innerHTML.js';\nimport {accessors as nativeTree} from './native-tree.js';\nimport {nodeAccessors as nativeAccessors} from './native-tree-accessors.js';\nimport {contains as nativeContains} from './native-methods.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nfunction clearNode(node) {\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n}\n\nconst hasDescriptors = utils.settings.hasDescriptors;\nconst inertDoc = document.implementation.createHTMLDocument('inert');\n\nconst nativeIsConnectedAccessors =\n/** @type {ObjectPropertyDescriptor} */(\n Object.getOwnPropertyDescriptor(Node.prototype, 'isConnected')\n);\n\nconst nativeIsConnected = nativeIsConnectedAccessors && nativeIsConnectedAccessors.get;\n\nconst nativeActiveElementDescriptor =\n /** @type {ObjectPropertyDescriptor} */(\n Object.getOwnPropertyDescriptor(Document.prototype, 'activeElement')\n );\nfunction getDocumentActiveElement() {\n if (nativeActiveElementDescriptor && nativeActiveElementDescriptor.get) {\n return nativeActiveElementDescriptor.get.call(document);\n } else if (!utils.settings.hasDescriptors) {\n return document.activeElement;\n }\n}\n\nfunction activeElementForNode(node) {\n let active = getDocumentActiveElement();\n // In IE11, activeElement might be an empty object if the document is\n // contained in an iframe.\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10998788/\n if (!active || !active.nodeType) {\n return null;\n }\n let isShadyRoot = !!(utils.isShadyRoot(node));\n if (node !== document) {\n // If this node isn't a document or shady root, then it doesn't have\n // an active element.\n if (!isShadyRoot) {\n return null;\n }\n // If this shady root's host is the active element or the active\n // element is not a descendant of the host (in the composed tree),\n // then it doesn't have an active element.\n if (node.host === active ||\n !nativeContains.call(node.host, active)) {\n return null;\n }\n }\n // This node is either the document or a shady root of which the active\n // element is a (composed) descendant of its host; iterate upwards to\n // find the active element's most shallow host within it.\n let activeRoot = utils.ownerShadyRootForNode(active);\n while (activeRoot && activeRoot !== node) {\n active = activeRoot.host;\n activeRoot = utils.ownerShadyRootForNode(active);\n }\n if (node === document) {\n // This node is the document, so activeRoot should be null.\n return activeRoot ? null : active;\n } else {\n // This node is a non-document shady root, and it should be\n // activeRoot.\n return activeRoot === node ? active : null;\n }\n}\n\nlet OutsideAccessors = {\n\n parentElement: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n let l = nodeData && nodeData.parentNode;\n if (l && l.nodeType !== Node.ELEMENT_NODE) {\n l = null;\n }\n return l !== undefined ? l : nativeTree.parentElement(this);\n },\n configurable: true\n },\n\n parentNode: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.parentNode;\n return l !== undefined ? l : nativeTree.parentNode(this);\n },\n configurable: true\n },\n\n nextSibling: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.nextSibling;\n return l !== undefined ? l : nativeTree.nextSibling(this);\n },\n configurable: true\n },\n\n previousSibling: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.previousSibling;\n return l !== undefined ? l : nativeTree.previousSibling(this);\n },\n configurable: true\n },\n\n // fragment, element, document\n nextElementSibling: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.nextSibling !== undefined) {\n let n = this.nextSibling;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.nextSibling;\n }\n return n;\n } else {\n return nativeTree.nextElementSibling(this);\n }\n },\n configurable: true\n },\n\n previousElementSibling: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.previousSibling !== undefined) {\n let n = this.previousSibling;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.previousSibling;\n }\n return n;\n } else {\n return nativeTree.previousElementSibling(this);\n }\n },\n configurable: true\n }\n\n};\n\nexport const ClassNameAccessor = {\n className: {\n /**\n * @this {HTMLElement}\n */\n get() {\n return this.getAttribute('class') || '';\n },\n /**\n * @this {HTMLElement}\n */\n set(value) {\n this.setAttribute('class', value);\n },\n configurable: true\n }\n}\n\nexport const IsConnectedAccessor = {\n\n isConnected: {\n /**\n * @this {Node}\n */\n get() {\n if (nativeIsConnected && nativeIsConnected.call(this)) {\n return true;\n }\n if (this.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {\n return false;\n }\n // Fast path for distributed nodes.\n const ownerDocument = this.ownerDocument;\n if (utils.hasDocumentContains) {\n if (nativeContains.call(ownerDocument, this)) {\n return true;\n }\n } else if (ownerDocument.documentElement &&\n nativeContains.call(ownerDocument.documentElement, this)) {\n return true;\n }\n // Slow path for non-distributed nodes.\n let node = this;\n while (node && !(node instanceof Document)) {\n node = node.parentNode || (utils.isShadyRoot(node) ? /** @type {ShadowRoot} */(node).host : undefined);\n }\n return !!(node && node instanceof Document);\n },\n configurable: true\n }\n};\n\nlet InsideAccessors = {\n\n childNodes: {\n /**\n * @this {HTMLElement}\n */\n get() {\n let childNodes;\n if (utils.isTrackingLogicalChildNodes(this)) {\n const nodeData = shadyDataForNode(this);\n if (!nodeData.childNodes) {\n nodeData.childNodes = [];\n for (let n=this.firstChild; n; n=n.nextSibling) {\n nodeData.childNodes.push(n);\n }\n }\n childNodes = nodeData.childNodes;\n } else {\n childNodes = nativeTree.childNodes(this);\n }\n childNodes.item = function(index) {\n return childNodes[index];\n }\n return childNodes;\n },\n configurable: true\n },\n\n childElementCount: {\n /** @this {HTMLElement} */\n get() {\n return this.children.length;\n },\n configurable: true\n },\n\n firstChild: {\n /** @this {HTMLElement} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.firstChild;\n return l !== undefined ? l : nativeTree.firstChild(this);\n },\n configurable: true\n },\n\n lastChild: {\n /** @this {HTMLElement} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.lastChild;\n return l !== undefined ? l : nativeTree.lastChild(this);\n },\n configurable: true\n },\n\n textContent: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (utils.isTrackingLogicalChildNodes(this)) {\n let tc = [];\n for (let i = 0, cn = this.childNodes, c; (c = cn[i]); i++) {\n if (c.nodeType !== Node.COMMENT_NODE) {\n tc.push(c.textContent);\n }\n }\n return tc.join('');\n } else {\n return nativeTree.textContent(this);\n }\n },\n /**\n * @this {HTMLElement}\n * @param {string} text\n */\n set(text) {\n if (typeof text === 'undefined' || text === null) {\n text = ''\n }\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n case Node.DOCUMENT_FRAGMENT_NODE:\n if (!utils.isTrackingLogicalChildNodes(this) && hasDescriptors) {\n // may be removing a nested slot but fast path if we know we are not.\n const firstChild = this.firstChild;\n if (firstChild != this.lastChild ||\n (firstChild && firstChild.nodeType != Node.TEXT_NODE)) {\n clearNode(this);\n }\n nativeAccessors.textContent.set.call(this, text);\n } else {\n clearNode(this);\n // Document fragments must have no childnodes if setting a blank string\n if (text.length > 0 || this.nodeType === Node.ELEMENT_NODE) {\n this.appendChild(document.createTextNode(text));\n }\n }\n break;\n default:\n // TODO(sorvell): can't do this if patch nodeValue.\n this.nodeValue = text;\n break;\n }\n },\n configurable: true\n },\n\n // fragment, element, document\n firstElementChild: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.firstChild !== undefined) {\n let n = this.firstChild;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.nextSibling;\n }\n return n;\n } else {\n return nativeTree.firstElementChild(this);\n }\n },\n configurable: true\n },\n\n lastElementChild: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.lastChild !== undefined) {\n let n = this.lastChild;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.previousSibling;\n }\n return n;\n } else {\n return nativeTree.lastElementChild(this);\n }\n },\n configurable: true\n },\n\n children: {\n /**\n * @this {HTMLElement}\n */\n get() {\n let children;\n if (utils.isTrackingLogicalChildNodes(this)) {\n children = Array.prototype.filter.call(this.childNodes, function(n) {\n return (n.nodeType === Node.ELEMENT_NODE);\n });\n } else {\n children = nativeTree.children(this);\n }\n children.item = function(index) {\n return children[index];\n }\n return children;\n },\n configurable: true\n },\n\n // element (HTMLElement on IE11)\n innerHTML: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (utils.isTrackingLogicalChildNodes(this)) {\n const content = this.localName === 'template' ?\n /** @type {HTMLTemplateElement} */(this).content : this;\n return getInnerHTML(content);\n } else {\n return nativeTree.innerHTML(this);\n }\n },\n /**\n * @this {HTMLElement}\n */\n set(text) {\n const content = this.localName === 'template' ?\n /** @type {HTMLTemplateElement} */(this).content : this;\n clearNode(content);\n let containerName = this.localName;\n // avoid creating a template so we don't have to pull nodes form `.content`\n if (!containerName || containerName === 'template') {\n containerName = 'div';\n }\n const htmlContainer = inertDoc.createElement(containerName);\n if (hasDescriptors) {\n nativeAccessors.innerHTML.set.call(htmlContainer, text);\n } else {\n htmlContainer.innerHTML = text;\n }\n while (htmlContainer.firstChild) {\n content.appendChild(htmlContainer.firstChild);\n }\n },\n configurable: true\n }\n\n};\n\n// Note: Can be patched on element prototype on all browsers.\n// Must be patched on instance on browsers that support native Shadow DOM\n// but do not have builtin accessors (old Chrome).\nexport let ShadowRootAccessor = {\n\n shadowRoot: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n return nodeData && nodeData.publicRoot || null;\n },\n configurable: true\n }\n};\n\n// Note: Can be patched on document prototype on browsers with builtin accessors.\n// Must be patched separately on simulated ShadowRoot.\n// Must be patched as `_activeElement` on browsers without builtin accessors.\nexport let ActiveElementAccessor = {\n\n activeElement: {\n /**\n * @this {HTMLElement}\n */\n get() {\n return activeElementForNode(this);\n },\n /**\n * @this {HTMLElement}\n */\n set() {},\n configurable: true\n }\n\n};\n\n// patch a group of descriptors on an object only if it exists or if the `force`\n// argument is true.\n/**\n * @param {!Object} obj\n * @param {!Object} descriptors\n * @param {boolean=} force\n */\nfunction patchAccessorGroup(obj, descriptors, force) {\n for (let p in descriptors) {\n let objDesc = Object.getOwnPropertyDescriptor(obj, p);\n if ((objDesc && objDesc.configurable) ||\n (!objDesc && force)) {\n Object.defineProperty(obj, p, descriptors[p]);\n } else if (force) {\n console.warn('Could not define', p, 'on', obj); // eslint-disable-line no-console\n }\n }\n}\n\n// patch dom accessors on proto where they exist\nexport function patchAccessors(proto) {\n patchAccessorGroup(proto, OutsideAccessors);\n patchAccessorGroup(proto, ClassNameAccessor);\n patchAccessorGroup(proto, InsideAccessors);\n patchAccessorGroup(proto, ActiveElementAccessor);\n}\n\nexport function patchShadowRootAccessors(proto) {\n proto.__proto__ = DocumentFragment.prototype;\n // ensure element descriptors (IE/Edge don't have em)\n patchAccessorGroup(proto, OutsideAccessors, true);\n patchAccessorGroup(proto, InsideAccessors, true);\n patchAccessorGroup(proto, ActiveElementAccessor, true);\n // Ensure native properties are all safely wrapped since ShadowRoot is not an\n // actual DocumentFragment instance.\n Object.defineProperties(proto, {\n nodeType: {\n value: Node.DOCUMENT_FRAGMENT_NODE,\n configurable: true\n },\n nodeName: {\n value: '#document-fragment',\n configurable: true\n },\n nodeValue: {\n value: null,\n configurable: true\n }\n });\n // make undefined\n [\n 'localName',\n 'namespaceURI',\n 'prefix'\n ].forEach((prop) => {\n Object.defineProperty(proto, prop, {\n value: undefined,\n configurable: true\n });\n });\n // defer properties to host\n [\n 'ownerDocument',\n 'baseURI',\n 'isConnected'\n ].forEach((prop) => {\n Object.defineProperty(proto, prop, {\n get() {\n return this.host[prop];\n },\n configurable: true\n });\n });\n}\n\n// ensure an element has patched \"outside\" accessors; no-op when not needed\nexport let patchOutsideElementAccessors = utils.settings.hasDescriptors ?\n function() {} : function(element) {\n const sd = ensureShadyDataForNode(element);\n if (!sd.__outsideAccessors) {\n sd.__outsideAccessors = true;\n patchAccessorGroup(element, OutsideAccessors, true);\n patchAccessorGroup(element, ClassNameAccessor, true);\n }\n }\n\n// ensure an element has patched \"inside\" accessors; no-op when not needed\nexport let patchInsideElementAccessors = utils.settings.hasDescriptors ?\n function() {} : function(element) {\n const sd = ensureShadyDataForNode(element);\n if (!sd.__insideAccessors) {\n patchAccessorGroup(element, InsideAccessors, true);\n patchAccessorGroup(element, ShadowRootAccessor, true);\n }\n }\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {calculateSplices} from './array-splice.js';\nimport * as utils from './utils.js';\nimport {enqueue} from './flush.js';\nimport {recordChildNodes} from './logical-tree.js';\nimport {removeChild, insertBefore, dispatchEvent} from './native-methods.js';\nimport {accessors} from './native-tree.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nconst {parentNode, childNodes} = accessors;\n\n// Do not export this object. It must be passed as the first argument to the\n// ShadyRoot constructor in `attachShadow` to prevent the constructor from\n// throwing. This prevents the user from being able to manually construct a\n// ShadyRoot (i.e. `new ShadowRoot()`).\nconst ShadyRootConstructionToken = {};\n\nconst CATCHALL_NAME = '__catchall';\nconst SHADYROOT_NAME = 'ShadyRoot';\n\nconst MODE_CLOSED = 'closed';\n\nfunction ancestorList(node) {\n let ancestors = [];\n do {\n ancestors.unshift(node);\n } while ((node = node.parentNode));\n return ancestors;\n}\n\n/**\n * @constructor\n * @extends {ShadowRoot}\n */\nexport class ShadyRoot {\n\n constructor(token, host, options) {\n if (token !== ShadyRootConstructionToken) {\n throw new TypeError('Illegal constructor');\n }\n // NOTE: set a fake local name so this element can be\n // distinguished from a DocumentFragment when patching.\n // FF doesn't allow this to be `localName`\n this._localName = SHADYROOT_NAME;\n const c$ = childNodes(host);\n // root <=> host\n this.host = host;\n this._mode = options && options.mode;\n // logical dom setup\n recordChildNodes(host, c$);\n const hostData = shadyDataForNode(host);\n hostData.root = this;\n hostData.publicRoot = this._mode !== MODE_CLOSED ? this : null;\n // setup root\n const rootData = ensureShadyDataForNode(this);\n rootData.firstChild = rootData.lastChild =\n rootData.parentNode = rootData.nextSibling =\n rootData.previousSibling = null;\n rootData.childNodes = [];\n // state flags\n this._renderPending = false;\n this._hasRendered = false;\n // marsalled lazily\n this._slotList = null;\n this._slotMap = null;\n this._pendingSlots = null;\n // fast path initial render: remove existing physical dom.\n for (let i=0, l=c$.length; i < l; i++) {\n removeChild.call(host, c$[i])\n }\n }\n\n // async render\n _asyncRender() {\n if (!this._renderPending) {\n this._renderPending = true;\n enqueue(() => this._render());\n }\n }\n\n // returns the oldest renderPending ancestor root.\n _getRenderRoot() {\n let renderRoot;\n let root = this;\n while (root) {\n if (root._renderPending) {\n renderRoot = root;\n }\n root = root._rendererForHost();\n }\n return renderRoot;\n }\n\n // Returns the shadyRoot `this.host` if `this.host`\n // has children that require distribution.\n _rendererForHost() {\n let root = this.host.getRootNode();\n if (utils.isShadyRoot(root)) {\n let c$ = this.host.childNodes;\n for (let i=0, c; i < c$.length; i++) {\n c = c$[i];\n if (this._isInsertionPoint(c)) {\n return root;\n }\n }\n }\n }\n\n _render() {\n const root = this._getRenderRoot();\n if (root) {\n root['_renderRoot']();\n }\n }\n\n // NOTE: avoid renaming to ease testability.\n ['_renderRoot']() {\n this._renderPending = false;\n if (this._slotList) {\n this._distribute();\n this._compose();\n }\n this._hasRendered = true;\n }\n\n _distribute() {\n this._validateSlots();\n // capture # of previously assigned nodes to help determine if dirty.\n for (let i=0, slot; i < this._slotList.length; i++) {\n slot = this._slotList[i];\n this._clearSlotAssignedNodes(slot);\n }\n // distribute host children.\n for (let n=this.host.firstChild; n; n=n.nextSibling) {\n this._distributeNodeToSlot(n);\n }\n // fallback content, slotchange, and dirty roots\n for (let i=0; i < this._slotList.length; i++) {\n const slot = this._slotList[i];\n const slotData = shadyDataForNode(slot);\n // distribute fallback content\n if (!slotData.assignedNodes.length) {\n for (let n=slot.firstChild; n; n=n.nextSibling) {\n this._distributeNodeToSlot(n, slot);\n }\n }\n const slotParentData = shadyDataForNode(slot.parentNode);\n const slotParentRoot = slotParentData && slotParentData.root;\n if (slotParentRoot && slotParentRoot._hasInsertionPoint()) {\n slotParentRoot['_renderRoot']();\n }\n this._addAssignedToFlattenedNodes(slotData.flattenedNodes,\n slotData.assignedNodes);\n let prevAssignedNodes = slotData._previouslyAssignedNodes;\n if (prevAssignedNodes) {\n for (let i=0; i < prevAssignedNodes.length; i++) {\n shadyDataForNode(prevAssignedNodes[i])._prevAssignedSlot = null;\n }\n slotData._previouslyAssignedNodes = null;\n // dirty if previously less assigned nodes than previously assigned.\n if (prevAssignedNodes.length > slotData.assignedNodes.length) {\n slotData.dirty = true;\n }\n }\n /* Note: A slot is marked dirty whenever a node is newly assigned to it\n or a node is assigned to a different slot (done in `_distributeNodeToSlot`)\n or if the number of nodes assigned to the slot has decreased (done above);\n */\n if (slotData.dirty) {\n slotData.dirty = false;\n this._fireSlotChange(slot);\n }\n }\n }\n\n /**\n * Distributes given `node` to the appropriate slot based on its `slot`\n * attribute. If `forcedSlot` is given, then the node is distributed to the\n * `forcedSlot`.\n * Note: slot to which the node is assigned will be marked dirty for firing\n * `slotchange`.\n * @param {Node} node\n * @param {Node=} forcedSlot\n *\n */\n _distributeNodeToSlot(node, forcedSlot) {\n const nodeData = ensureShadyDataForNode(node);\n let oldSlot = nodeData._prevAssignedSlot;\n nodeData._prevAssignedSlot = null;\n let slot = forcedSlot;\n if (!slot) {\n let name = node.slot || CATCHALL_NAME;\n const list = this._slotMap[name];\n slot = list && list[0];\n }\n if (slot) {\n const slotData = ensureShadyDataForNode(slot);\n slotData.assignedNodes.push(node);\n nodeData.assignedSlot = slot;\n } else {\n nodeData.assignedSlot = undefined;\n }\n if (oldSlot !== nodeData.assignedSlot) {\n if (nodeData.assignedSlot) {\n ensureShadyDataForNode(nodeData.assignedSlot).dirty = true;\n }\n }\n }\n\n /**\n * Clears the assignedNodes tracking data for a given `slot`. Note, the current\n * assigned node data is tracked (via _previouslyAssignedNodes and\n * _prevAssignedSlot) to see if `slotchange` should fire. This data may be out\n * of date at this time because the assigned nodes may have already been\n * distributed to another root. This is ok since this data is only used to\n * track changes.\n * @param {HTMLSlotElement} slot\n */\n _clearSlotAssignedNodes(slot) {\n const slotData = shadyDataForNode(slot);\n let n$ = slotData.assignedNodes;\n slotData.assignedNodes = [];\n slotData.flattenedNodes = [];\n slotData._previouslyAssignedNodes = n$;\n if (n$) {\n for (let i=0; i < n$.length; i++) {\n let n = shadyDataForNode(n$[i]);\n n._prevAssignedSlot = n.assignedSlot;\n // only clear if it was previously set to this slot;\n // this helps ensure that if the node has otherwise been distributed\n // ignore it.\n if (n.assignedSlot === slot) {\n n.assignedSlot = null;\n }\n }\n }\n }\n\n _addAssignedToFlattenedNodes(flattened, assigned) {\n for (let i=0, n; (i<assigned.length) && (n=assigned[i]); i++) {\n if (n.localName == 'slot') {\n const nestedAssigned = shadyDataForNode(n).assignedNodes;\n if (nestedAssigned && nestedAssigned.length) {\n this._addAssignedToFlattenedNodes(flattened, nestedAssigned);\n }\n } else {\n flattened.push(assigned[i]);\n }\n }\n }\n\n _fireSlotChange(slot) {\n // NOTE: cannot bubble correctly here so not setting bubbles: true\n // Safari tech preview does not bubble but chrome does\n // Spec says it bubbles (https://dom.spec.whatwg.org/#mutation-observers)\n dispatchEvent.call(slot, new Event('slotchange'));\n const slotData = shadyDataForNode(slot);\n if (slotData.assignedSlot) {\n this._fireSlotChange(slotData.assignedSlot);\n }\n }\n\n // Reify dom such that it is at its correct rendering position\n // based on logical distribution.\n // NOTE: here we only compose parents of <slot> elements and not the\n // shadowRoot into the host. The latter is performend via a fast path\n // in the `logical-mutation`.insertBefore.\n _compose() {\n const slots = this._slotList;\n let composeList = [];\n for (let i=0; i < slots.length; i++) {\n const parent = slots[i].parentNode;\n /* compose node only if:\n (1) parent does not have a shadowRoot since shadowRoot has already\n composed into the host\n (2) we're not already composing it\n [consider (n^2) but rare better than Set]\n */\n const parentData = shadyDataForNode(parent);\n if (!(parentData && parentData.root) &&\n composeList.indexOf(parent) < 0) {\n composeList.push(parent);\n }\n }\n for (let i=0; i < composeList.length; i++) {\n const node = composeList[i];\n const targetNode = node === this ? this.host : node;\n this._updateChildNodes(targetNode, this._composeNode(node));\n }\n }\n\n // Returns the list of nodes which should be rendered inside `node`.\n _composeNode(node) {\n let children = [];\n let c$ = node.childNodes;\n for (let i = 0; i < c$.length; i++) {\n let child = c$[i];\n // Note: if we see a slot here, the nodes are guaranteed to need to be\n // composed here. This is because if there is redistribution, it has\n // already been handled by this point.\n if (this._isInsertionPoint(child)) {\n let flattenedNodes = shadyDataForNode(child).flattenedNodes;\n for (let j = 0; j < flattenedNodes.length; j++) {\n let distributedNode = flattenedNodes[j];\n children.push(distributedNode);\n }\n } else {\n children.push(child);\n }\n }\n return children;\n }\n\n _isInsertionPoint(node) {\n return node.localName == 'slot';\n }\n\n // Ensures that the rendered node list inside `container` is `children`.\n _updateChildNodes(container, children) {\n let composed = childNodes(container);\n let splices = calculateSplices(children, composed);\n // process removals\n for (let i=0, d=0, s; (i<splices.length) && (s=splices[i]); i++) {\n for (let j=0, n; (j < s.removed.length) && (n=s.removed[j]); j++) {\n // check if the node is still where we expect it is before trying\n // to remove it; this can happen if we move a node and\n // then schedule its previous host for distribution resulting in\n // the node being removed here.\n if (parentNode(n) === container) {\n removeChild.call(container, n);\n }\n // TODO(sorvell): avoid the need for splicing here.\n composed.splice(s.index + d, 1);\n }\n d -= s.addedCount;\n }\n // process adds\n for (let i=0, s, next; (i<splices.length) && (s=splices[i]); i++) { //eslint-disable-line no-redeclare\n next = composed[s.index];\n for (let j=s.index, n; j < s.index + s.addedCount; j++) {\n n = children[j];\n insertBefore.call(container, n, next);\n composed.splice(j, 0, n);\n }\n }\n }\n\n _ensureSlotData() {\n this._pendingSlots = this._pendingSlots || [];\n this._slotList = this._slotList || [];\n this._slotMap = this._slotMap || {};\n }\n\n _addSlots(slots) {\n this._ensureSlotData();\n this._pendingSlots.push(...slots);\n }\n\n _validateSlots() {\n if (this._pendingSlots && this._pendingSlots.length) {\n this._mapSlots(this._pendingSlots);\n this._pendingSlots = [];\n }\n }\n\n /**\n * Adds the given slots. Slots are maintained in an dom-ordered list.\n * In addition a map of name to slot is updated.\n */\n _mapSlots(slots) {\n let slotNamesToSort;\n for (let i=0; i < slots.length; i++) {\n let slot = slots[i];\n // ensure insertionPoints's and their parents have logical dom info.\n // save logical tree info\n // a. for shadyRoot\n // b. for insertion points (fallback)\n // c. for parents of insertion points\n recordChildNodes(slot);\n recordChildNodes(slot.parentNode);\n let name = this._nameForSlot(slot);\n if (this._slotMap[name]) {\n slotNamesToSort = slotNamesToSort || {};\n slotNamesToSort[name] = true;\n this._slotMap[name].push(slot);\n } else {\n this._slotMap[name] = [slot];\n }\n this._slotList.push(slot);\n }\n if (slotNamesToSort) {\n for (let n in slotNamesToSort) {\n this._slotMap[n] = this._sortSlots(this._slotMap[n]);\n }\n }\n }\n\n _nameForSlot(slot) {\n const name = slot['name'] || slot.getAttribute('name') || CATCHALL_NAME;\n slot.__slotName = name;\n return name;\n }\n\n /**\n * Slots are kept in an ordered list. Slots with the same name\n * are sorted here by tree order.\n */\n _sortSlots(slots) {\n // NOTE: Cannot use `compareDocumentPosition` because it's not polyfilled,\n // but the code here could be used to polyfill the preceeding/following info\n // in `compareDocumentPosition`.\n return slots.sort((a, b) => {\n let listA = ancestorList(a);\n let listB = ancestorList(b);\n for (var i=0; i < listA.length; i++) {\n let nA = listA[i];\n let nB = listB[i];\n if (nA !== nB) {\n let c$ = Array.from(nA.parentNode.childNodes);\n return c$.indexOf(nA) - c$.indexOf(nB);\n }\n }\n });\n }\n\n /**\n * Removes from tracked slot data any slots contained within `container` and\n * then updates the tracked data (_slotList and _slotMap).\n * Any removed slots also have their `assignedNodes` removed from comopsed dom.\n */\n _removeContainedSlots(container) {\n if (!this._slotList) {\n return;\n }\n this._validateSlots();\n let didRemove;\n const map = this._slotMap;\n for (let n in map) {\n let slots = map[n];\n for (let i=0; i < slots.length; i++) {\n let slot = slots[i];\n if (utils.contains(container, slot)) {\n slots.splice(i, 1);\n const x = this._slotList.indexOf(slot);\n if (x >= 0) {\n this._slotList.splice(x, 1);\n }\n i--;\n this._removeFlattenedNodes(slot);\n didRemove = true;\n }\n }\n }\n return didRemove;\n }\n\n _updateSlotName(slot) {\n if (!this._slotList) {\n return;\n }\n const oldName = slot.__slotName;\n const name = this._nameForSlot(slot);\n if (name === oldName) {\n return;\n }\n // remove from existing tracking\n let slots = this._slotMap[oldName];\n const i = slots.indexOf(slot);\n if (i >= 0) {\n slots.splice(i, 1);\n }\n // add to new location and sort if nedessary\n let list = this._slotMap[name] || (this._slotMap[name] = []);\n list.push(slot);\n if (list.length > 1) {\n this._slotMap[name] = this._sortSlots(list);\n }\n }\n\n _removeFlattenedNodes(slot) {\n const data = shadyDataForNode(slot);\n let n$ = data.flattenedNodes;\n if (n$) {\n for (let i=0; i<n$.length; i++) {\n let node = n$[i];\n let parent = parentNode(node);\n if (parent) {\n removeChild.call(parent, node);\n }\n }\n }\n data.flattenedNodes = [];\n data.assignedNodes = [];\n }\n\n _hasInsertionPoint() {\n this._validateSlots();\n return Boolean(this._slotList && this._slotList.length);\n }\n}\n\n/**\n Implements a pared down version of ShadowDOM's scoping, which is easy to\n polyfill across browsers.\n*/\nexport function attachShadow(host, options) {\n if (!host) {\n throw 'Must provide a host.';\n }\n if (!options) {\n throw 'Not enough arguments.'\n }\n return new ShadyRoot(ShadyRootConstructionToken, host, options);\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {flush} from './flush.js';\nimport {dispatchEvent, querySelectorAll} from './native-methods.js';\nimport * as mutation from './logical-mutation.js';\nimport {ActiveElementAccessor, ShadowRootAccessor, patchAccessors, patchShadowRootAccessors, IsConnectedAccessor} from './patch-accessors.js';\nimport {addEventListener, removeEventListener} from './patch-events.js';\nimport {attachShadow, ShadyRoot} from './attach-shadow.js';\nimport {shadyDataForNode} from './shady-data.js';\n\nfunction getAssignedSlot(node) {\n mutation.renderRootNode(node);\n const nodeData = shadyDataForNode(node);\n return nodeData && nodeData.assignedSlot || null;\n}\n\nlet windowMixin = {\n\n // NOTE: ensure these methods are bound to `window` so that `this` is correct\n // when called directly from global context without a receiver; e.g.\n // `addEventListener(...)`.\n addEventListener: addEventListener.bind(window),\n\n removeEventListener: removeEventListener.bind(window)\n\n};\n\nlet nodeMixin = {\n\n addEventListener: addEventListener,\n\n removeEventListener: removeEventListener,\n\n appendChild(node) {\n return mutation.insertBefore(this, node);\n },\n\n insertBefore(node, ref_node) {\n return mutation.insertBefore(this, node, ref_node);\n },\n\n removeChild(node) {\n return mutation.removeChild(this, node);\n },\n\n /**\n * @this {Node}\n */\n replaceChild(node, ref_node) {\n mutation.insertBefore(this, node, ref_node);\n mutation.removeChild(this, ref_node);\n return node;\n },\n\n /**\n * @this {Node}\n */\n cloneNode(deep) {\n return mutation.cloneNode(this, deep);\n },\n\n /**\n * @this {Node}\n */\n getRootNode(options) {\n return mutation.getRootNode(this, options);\n },\n\n contains(node) {\n return utils.contains(this, node);\n },\n\n /**\n * @this {Node}\n */\n dispatchEvent(event) {\n flush();\n return dispatchEvent.call(this, event);\n }\n\n};\n\n// NOTE: we can do this regardless of the browser supporting native accessors\n// since this is always \"new\" in that case.\nObject.defineProperties(nodeMixin, IsConnectedAccessor);\n\n// NOTE: For some reason 'Text' redefines 'assignedSlot'\nlet textMixin = {\n /**\n * @this {Text}\n */\n get assignedSlot() {\n return getAssignedSlot(this);\n }\n};\n\nlet fragmentMixin = {\n\n // TODO(sorvell): consider doing native QSA and filtering results.\n /**\n * @this {DocumentFragment}\n */\n querySelector(selector) {\n // match selector and halt on first result.\n let result = mutation.query(this, function(n) {\n return utils.matchesSelector(n, selector);\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n },\n\n /**\n * @this {DocumentFragment}\n */\n // TODO(sorvell): `useNative` option relies on native querySelectorAll and\n // misses distributed nodes, see\n // https://github.com/webcomponents/shadydom/pull/210#issuecomment-361435503\n querySelectorAll(selector, useNative) {\n if (useNative) {\n const o = Array.prototype.slice.call(querySelectorAll(this, selector));\n const root = this.getRootNode();\n return o.filter(e => e.getRootNode() == root);\n }\n return mutation.query(this, function(n) {\n return utils.matchesSelector(n, selector);\n });\n }\n\n};\n\nlet slotMixin = {\n\n /**\n * @this {HTMLSlotElement}\n */\n assignedNodes(options) {\n if (this.localName === 'slot') {\n mutation.renderRootNode(this);\n const nodeData = shadyDataForNode(this);\n return nodeData ?\n ((options && options.flatten ? nodeData.flattenedNodes :\n nodeData.assignedNodes) || []) :\n [];\n }\n }\n\n};\n\nlet elementMixin = utils.extendAll({\n\n /**\n * @this {HTMLElement}\n */\n setAttribute(name, value) {\n mutation.setAttribute(this, name, value);\n },\n\n /**\n * @this {HTMLElement}\n */\n removeAttribute(name) {\n mutation.removeAttribute(this, name);\n },\n\n /**\n * @this {HTMLElement}\n */\n attachShadow(options) {\n return attachShadow(this, options);\n },\n\n /**\n * @this {HTMLElement}\n */\n get slot() {\n return this.getAttribute('slot');\n },\n\n /**\n * @this {HTMLElement}\n */\n set slot(value) {\n mutation.setAttribute(this, 'slot', value);\n },\n\n /**\n * @this {HTMLElement}\n */\n get assignedSlot() {\n return getAssignedSlot(this);\n }\n\n}, fragmentMixin, slotMixin);\n\nObject.defineProperties(elementMixin, ShadowRootAccessor);\n\nlet documentMixin = utils.extendAll({\n /**\n * @this {Document}\n */\n importNode(node, deep) {\n return mutation.importNode(node, deep);\n },\n\n /**\n * @this {Document}\n */\n getElementById(id) {\n let result = mutation.query(this, function(n) {\n return n.id == id;\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n }\n\n}, fragmentMixin);\n\nObject.defineProperties(documentMixin, {\n '_activeElement': ActiveElementAccessor.activeElement\n});\n\nlet nativeBlur = HTMLElement.prototype.blur;\n\nlet htmlElementMixin = utils.extendAll({\n /**\n * @this {HTMLElement}\n */\n blur() {\n const nodeData = shadyDataForNode(this);\n let root = nodeData && nodeData.root;\n let shadowActive = root && root.activeElement;\n if (shadowActive) {\n shadowActive.blur();\n } else {\n nativeBlur.call(this);\n }\n }\n});\n\nconst shadowRootMixin = {\n addEventListener(type, fn, optionsOrCapture) {\n if (typeof optionsOrCapture !== 'object') {\n optionsOrCapture = {\n capture: Boolean(optionsOrCapture)\n }\n }\n optionsOrCapture.__shadyTarget = this;\n this.host.addEventListener(type, fn, optionsOrCapture);\n },\n\n removeEventListener(type, fn, optionsOrCapture) {\n if (typeof optionsOrCapture !== 'object') {\n optionsOrCapture = {\n capture: Boolean(optionsOrCapture)\n }\n }\n optionsOrCapture.__shadyTarget = this;\n this.host.removeEventListener(type, fn, optionsOrCapture);\n },\n\n getElementById(id) {\n let result = mutation.query(this, function(n) {\n return n.id == id;\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n }\n}\n\nfunction patchBuiltin(proto, obj) {\n let n$ = Object.getOwnPropertyNames(obj);\n for (let i=0; i < n$.length; i++) {\n let n = n$[i];\n let d = Object.getOwnPropertyDescriptor(obj, n);\n // NOTE: we prefer writing directly here because some browsers\n // have descriptors that are writable but not configurable (e.g.\n // `appendChild` on older browsers)\n if (d.value) {\n proto[n] = d.value;\n } else {\n Object.defineProperty(proto, n, d);\n }\n }\n}\n\n// Apply patches to builtins (e.g. Element.prototype). Some of these patches\n// can be done unconditionally (mostly methods like\n// `Element.prototype.appendChild`) and some can only be done when the browser\n// has proper descriptors on the builtin prototype\n// (e.g. `Element.prototype.firstChild`)`. When descriptors are not available,\n// elements are individually patched when needed (see e.g.\n// `patchInside/OutsideElementAccessors` in `patch-accessors.js`).\nexport function patchBuiltins() {\n let nativeHTMLElement =\n (window['customElements'] && window['customElements']['nativeHTMLElement']) ||\n HTMLElement;\n // These patches can always be done, for all supported browsers.\n patchBuiltin(ShadyRoot.prototype, shadowRootMixin);\n patchBuiltin(window.Node.prototype, nodeMixin);\n patchBuiltin(window.Window.prototype, windowMixin);\n patchBuiltin(window.Text.prototype, textMixin);\n patchBuiltin(window.DocumentFragment.prototype, fragmentMixin);\n patchBuiltin(window.Element.prototype, elementMixin);\n patchBuiltin(window.Document.prototype, documentMixin);\n if (window.HTMLSlotElement) {\n patchBuiltin(window.HTMLSlotElement.prototype, slotMixin);\n }\n patchBuiltin(nativeHTMLElement.prototype, htmlElementMixin);\n // These patches can *only* be done\n // on browsers that have proper property descriptors on builtin prototypes.\n // This includes: IE11, Edge, Chrome >= 4?; Safari >= 10, Firefox\n // On older browsers (Chrome <= 4?, Safari 9), a per element patching\n // strategy is used for patching accessors.\n if (utils.settings.hasDescriptors) {\n patchAccessors(window.Node.prototype);\n patchAccessors(window.Text.prototype);\n patchAccessors(window.DocumentFragment.prototype);\n patchAccessors(window.Element.prototype);\n patchAccessors(nativeHTMLElement.prototype);\n patchAccessors(window.Document.prototype);\n if (window.HTMLSlotElement) {\n patchAccessors(window.HTMLSlotElement.prototype);\n }\n }\n patchShadowRootAccessors(ShadyRoot.prototype);\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {patchInsideElementAccessors, patchOutsideElementAccessors} from './patch-accessors.js';\nimport {accessors} from './native-tree.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nconst {childNodes} = accessors;\n\nexport function recordInsertBefore(node, container, ref_node) {\n patchInsideElementAccessors(container);\n const containerData = ensureShadyDataForNode(container);\n if (containerData.firstChild !== undefined) {\n containerData.childNodes = null;\n }\n // handle document fragments\n if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n let c$ = node.childNodes;\n for (let i=0; i < c$.length; i++) {\n linkNode(c$[i], container, ref_node);\n }\n // cleanup logical dom in doc fragment.\n const nodeData = ensureShadyDataForNode(node);\n let resetTo = (nodeData.firstChild !== undefined) ? null : undefined;\n nodeData.firstChild = nodeData.lastChild = resetTo;\n nodeData.childNodes = resetTo;\n } else {\n linkNode(node, container, ref_node);\n }\n}\n\nfunction linkNode(node, container, ref_node) {\n patchOutsideElementAccessors(node);\n ref_node = ref_node || null;\n const nodeData = ensureShadyDataForNode(node);\n const containerData = ensureShadyDataForNode(container);\n const ref_nodeData = ref_node ? ensureShadyDataForNode(ref_node) : null;\n // update ref_node.previousSibling <-> node\n nodeData.previousSibling = ref_node ? ref_nodeData.previousSibling :\n container.lastChild;\n let psd = shadyDataForNode(nodeData.previousSibling);\n if (psd) {\n psd.nextSibling = node;\n }\n // update node <-> ref_node\n let nsd = shadyDataForNode(nodeData.nextSibling = ref_node);\n if (nsd) {\n nsd.previousSibling = node;\n }\n // update node <-> container\n nodeData.parentNode = container;\n if (ref_node) {\n if (ref_node === containerData.firstChild) {\n containerData.firstChild = node;\n }\n } else {\n containerData.lastChild = node;\n if (!containerData.firstChild) {\n containerData.firstChild = node;\n }\n }\n // remove caching of childNodes\n containerData.childNodes = null;\n}\n\nexport function recordRemoveChild(node, container) {\n const nodeData = ensureShadyDataForNode(node);\n const containerData = ensureShadyDataForNode(container);\n if (node === containerData.firstChild) {\n containerData.firstChild = nodeData.nextSibling;\n }\n if (node === containerData.lastChild) {\n containerData.lastChild = nodeData.previousSibling;\n }\n let p = nodeData.previousSibling;\n let n = nodeData.nextSibling;\n if (p) {\n ensureShadyDataForNode(p).nextSibling = n;\n }\n if (n) {\n ensureShadyDataForNode(n).previousSibling = p;\n }\n // When an element is removed, logical data is no longer tracked.\n // Explicitly set `undefined` here to indicate this. This is disginguished\n // from `null` which is set if info is null.\n nodeData.parentNode = nodeData.previousSibling =\n nodeData.nextSibling = undefined;\n if (containerData.childNodes !== undefined) {\n // remove caching of childNodes\n containerData.childNodes = null;\n }\n}\n\nexport let recordChildNodes = function(node, nodes) {\n const nodeData = ensureShadyDataForNode(node);\n if (nodeData.firstChild === undefined) {\n const c$ = nodes || childNodes(node);\n nodeData.firstChild = c$[0] || null;\n nodeData.lastChild = c$[c$.length-1] || null;\n patchInsideElementAccessors(node);\n for (let i=0; i<c$.length; i++) {\n const n = c$[i];\n const sd = ensureShadyDataForNode(n);\n sd.parentNode = node;\n sd.nextSibling = c$[i+1] || null;\n sd.previousSibling = c$[i-1] || null;\n patchOutsideElementAccessors(n);\n }\n }\n}","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport * as logicalTree from './logical-tree.js';\nimport * as nativeMethods from './native-methods.js';\nimport {accessors} from './native-tree.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nconst {parentNode} = accessors;\n\n// Patched `insertBefore`. Note that all mutations that add nodes are routed\n// here. When a <slot> is added or a node is added to a host with a shadowRoot\n// with a slot, a standard dom `insert` call is aborted and `_asyncRender`\n// is called on the relevant shadowRoot. In all other cases, a standard dom\n// `insert` can be made, but the location and ref_node may need to be changed.\n/**\n * @param {Node} parent\n * @param {Node} node\n * @param {Node=} ref_node\n */\nexport function insertBefore(parent, node, ref_node) {\n if (node === parent) {\n throw Error(`Failed to execute 'appendChild' on 'Node': The new child element contains the parent.`);\n }\n if (ref_node) {\n const refData = shadyDataForNode(ref_node);\n const p = refData && refData.parentNode;\n if ((p !== undefined && p !== parent) ||\n (p === undefined && parentNode(ref_node) !== parent)) {\n throw Error(`Failed to execute 'insertBefore' on 'Node': The node ` +\n `before which the new node is to be inserted is not a child of this node.`);\n }\n }\n if (ref_node === node) {\n return node;\n }\n // remove from existing location\n if (node.parentNode) {\n // NOTE: avoid node.removeChild as this *can* trigger another patched\n // method (e.g. custom elements) and we want only the shady method to run.\n removeChild(node.parentNode, node);\n }\n // add to new parent\n let preventNativeInsert;\n let ownerRoot;\n let slotsAdded;\n if (!node['__noInsertionPoint']) {\n ownerRoot = utils.ownerShadyRootForNode(parent);\n slotsAdded = ownerRoot && findContainedSlots(node);\n if (slotsAdded) {\n ownerRoot._addSlots(slotsAdded);\n }\n }\n // if a slot is added, must render containing root.\n if (parent.localName === 'slot' || slotsAdded) {\n ownerRoot = ownerRoot || utils.ownerShadyRootForNode(parent);\n if (ownerRoot) {\n ownerRoot._asyncRender();\n }\n }\n if (utils.isTrackingLogicalChildNodes(parent)) {\n logicalTree.recordInsertBefore(node, parent, ref_node);\n // when inserting into a host with a shadowRoot with slot, use\n // `shadowRoot._asyncRender()` via `attach-shadow` module\n const parentData = shadyDataForNode(parent);\n if (hasShadowRootWithSlot(parent)) {\n parentData.root._asyncRender();\n preventNativeInsert = true;\n // when inserting into a host with shadowRoot with NO slot, do nothing\n // as the node should not be added to composed dome anywhere.\n } else if (parentData.root) {\n preventNativeInsert = true;\n }\n }\n if (!preventNativeInsert) {\n // if adding to a shadyRoot, add to host instead\n let container = utils.isShadyRoot(parent) ?\n /** @type {ShadowRoot} */(parent).host : parent;\n // if ref_node, get the ref_node that's actually in composed dom.\n if (ref_node) {\n ref_node = firstComposedNode(ref_node);\n nativeMethods.insertBefore.call(container, node, ref_node);\n } else {\n nativeMethods.appendChild.call(container, node);\n }\n }\n scheduleObserver(parent, node);\n return node;\n}\n\nfunction findContainedSlots(node) {\n let slots;\n if (node.localName === 'slot') {\n slots = [node];\n } else if (node.querySelectorAll) {\n slots = node.querySelectorAll('slot');\n }\n if (slots && slots.length) {\n return slots;\n }\n}\n\n/**\n * Patched `removeChild`. Note that all dom \"removals\" are routed here.\n * Removes the given `node` from the element's `children`.\n * This method also performs dom composition.\n * @param {Node} parent\n * @param {Node} node\n*/\nexport function removeChild(parent, node) {\n if (node.parentNode !== parent) {\n throw Error('The node to be removed is not a child of this node: ' +\n node);\n }\n let preventNativeRemove;\n let ownerRoot = utils.ownerShadyRootForNode(node);\n let removingInsertionPoint;\n const parentData = shadyDataForNode(parent);\n if (utils.isTrackingLogicalChildNodes(parent)) {\n logicalTree.recordRemoveChild(node, parent);\n if (hasShadowRootWithSlot(parent)) {\n parentData.root._asyncRender();\n preventNativeRemove = true;\n }\n }\n removeOwnerShadyRoot(node);\n // if removing slot, must render containing root\n if (ownerRoot) {\n let changeSlotContent = parent && parent.localName === 'slot';\n if (changeSlotContent) {\n preventNativeRemove = true;\n }\n removingInsertionPoint = ownerRoot._removeContainedSlots(node);\n if (removingInsertionPoint || changeSlotContent) {\n ownerRoot._asyncRender();\n }\n }\n if (!preventNativeRemove) {\n // if removing from a shadyRoot, remove form host instead\n let container = utils.isShadyRoot(parent) ?\n /** @type {ShadowRoot} */(parent).host :\n parent;\n // not guaranteed to physically be in container; e.g.\n // (1) if parent has a shadyRoot, element may or may not at distributed\n // location (could be undistributed)\n // (2) if parent is a slot, element may not ben in composed dom\n if (!(parentData.root || node.localName === 'slot') ||\n (container === parentNode(node))) {\n nativeMethods.removeChild.call(container, node);\n }\n }\n scheduleObserver(parent, null, node);\n return node;\n}\n\nfunction removeOwnerShadyRoot(node) {\n // optimization: only reset the tree if node is actually in a root\n if (hasCachedOwnerRoot(node)) {\n let c$ = node.childNodes;\n for (let i=0, l=c$.length, n; (i<l) && (n=c$[i]); i++) {\n removeOwnerShadyRoot(n);\n }\n }\n const nodeData = shadyDataForNode(node);\n if (nodeData) {\n nodeData.ownerShadyRoot = undefined;\n }\n}\n\nfunction hasCachedOwnerRoot(node) {\n const nodeData = shadyDataForNode(node);\n return Boolean(nodeData && nodeData.ownerShadyRoot !== undefined);\n}\n\n/**\n * Finds the first flattened node that is composed in the node's parent.\n * If the given node is a slot, then the first flattened node is returned\n * if it exists, otherwise advance to the node's nextSibling.\n * @param {Node} node within which to find first composed node\n * @returns {Node} first composed node\n */\nfunction firstComposedNode(node) {\n let composed = node;\n if (node && node.localName === 'slot') {\n const nodeData = shadyDataForNode(node);\n const flattened = nodeData && nodeData.flattenedNodes;\n composed = flattened && flattened.length ? flattened[0] :\n firstComposedNode(node.nextSibling);\n }\n return composed;\n}\n\nfunction hasShadowRootWithSlot(node) {\n const nodeData = shadyDataForNode(node);\n let root = nodeData && nodeData.root;\n return (root && root._hasInsertionPoint());\n}\n\n/**\n * Should be called whenever an attribute changes. If the `slot` attribute\n * changes, provokes rendering if necessary. If a `<slot>` element's `name`\n * attribute changes, updates the root's slot map and renders.\n * @param {Node} node\n * @param {string} name\n */\nfunction distributeAttributeChange(node, name) {\n if (name === 'slot') {\n const parent = node.parentNode;\n if (hasShadowRootWithSlot(parent)) {\n shadyDataForNode(parent).root._asyncRender();\n }\n } else if (node.localName === 'slot' && name === 'name') {\n let root = utils.ownerShadyRootForNode(node);\n if (root) {\n root._updateSlotName(node);\n root._asyncRender();\n }\n }\n}\n\n/**\n * @param {Node} node\n * @param {Node=} addedNode\n * @param {Node=} removedNode\n */\nfunction scheduleObserver(node, addedNode, removedNode) {\n const nodeData = shadyDataForNode(node);\n const observer = nodeData && nodeData.observer;\n if (observer) {\n if (addedNode) {\n observer.addedNodes.push(addedNode);\n }\n if (removedNode) {\n observer.removedNodes.push(removedNode);\n }\n observer.schedule();\n }\n}\n\n/**\n * @param {Node} node\n * @param {Object=} options\n */\nexport function getRootNode(node, options) { // eslint-disable-line no-unused-vars\n if (!node || !node.nodeType) {\n return;\n }\n const nodeData = ensureShadyDataForNode(node);\n let root = nodeData.ownerShadyRoot;\n if (root === undefined) {\n if (utils.isShadyRoot(node)) {\n root = node;\n nodeData.ownerShadyRoot = root;\n } else {\n let parent = node.parentNode;\n root = parent ? getRootNode(parent) : node;\n // memo-ize result for performance but only memo-ize\n // result if node is in the document. This avoids a problem where a root\n // can be cached while an element is inside a fragment.\n // If this happens and we cache the result, the value can become stale\n // because for perf we avoid processing the subtree of added fragments.\n if (nativeMethods.contains.call(document.documentElement, node)) {\n nodeData.ownerShadyRoot = root;\n }\n }\n\n }\n return root;\n}\n\n// NOTE: `query` is used primarily for ShadyDOM's querySelector impl,\n// but it's also generally useful to recurse through the element tree\n// and is used by Polymer's styling system.\n/**\n * @param {Node} node\n * @param {Function} matcher\n * @param {Function=} halter\n */\nexport function query(node, matcher, halter) {\n let list = [];\n queryElements(node.childNodes, matcher,\n halter, list);\n return list;\n}\n\nfunction queryElements(elements, matcher, halter, list) {\n for (let i=0, l=elements.length, c; (i<l) && (c=elements[i]); i++) {\n if (c.nodeType === Node.ELEMENT_NODE &&\n queryElement(c, matcher, halter, list)) {\n return true;\n }\n }\n}\n\nfunction queryElement(node, matcher, halter, list) {\n let result = matcher(node);\n if (result) {\n list.push(node);\n }\n if (halter && halter(result)) {\n return result;\n }\n queryElements(node.childNodes, matcher,\n halter, list);\n}\n\nexport function renderRootNode(element) {\n var root = element.getRootNode();\n if (utils.isShadyRoot(root)) {\n root._render();\n }\n}\n\nlet scopingShim = null;\n\nexport function setAttribute(node, attr, value) {\n if (!scopingShim) {\n scopingShim = window['ShadyCSS'] && window['ShadyCSS']['ScopingShim'];\n }\n if (scopingShim && attr === 'class') {\n scopingShim['setElementClass'](node, value);\n } else {\n nativeMethods.setAttribute.call(node, attr, value);\n distributeAttributeChange(node, attr);\n }\n}\n\nexport function removeAttribute(node, attr) {\n nativeMethods.removeAttribute.call(node, attr);\n distributeAttributeChange(node, attr);\n}\n\nexport function cloneNode(node, deep) {\n if (node.localName == 'template') {\n return nativeMethods.cloneNode.call(node, deep);\n } else {\n let n = nativeMethods.cloneNode.call(node, false);\n if (deep) {\n let c$ = node.childNodes;\n for (let i=0, nc; i < c$.length; i++) {\n nc = c$[i].cloneNode(true);\n n.appendChild(nc);\n }\n }\n return n;\n }\n}\n\n// note: Though not technically correct, we fast path `importNode`\n// when called on a node not owned by the main document.\n// This allows, for example, elements that cannot\n// contain custom elements and are therefore not likely to contain shadowRoots\n// to cloned natively. This is a fairly significant performance win.\nexport function importNode(node, deep) {\n if (node.ownerDocument !== document) {\n return nativeMethods.importNode.call(document, node, deep);\n }\n let n = nativeMethods.importNode.call(document, node, false);\n if (deep) {\n let c$ = node.childNodes;\n for (let i=0, nc; i < c$.length; i++) {\n nc = importNode(c$[i], true);\n n.appendChild(nc);\n }\n }\n return n;\n}",null,"/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport * as nativeMethods from './native-methods.js';\nimport {shadyDataForNode} from './shady-data.js';\n\n/*\nMake this name unique so it is unlikely to conflict with properties on objects passed to `addEventListener`\nhttps://github.com/webcomponents/shadydom/issues/173\n*/\nconst /** string */ eventWrappersName = `__eventWrappers${Date.now()}`;\n\n// https://github.com/w3c/webcomponents/issues/513#issuecomment-224183937\nlet alwaysComposed = {\n 'blur': true,\n 'focus': true,\n 'focusin': true,\n 'focusout': true,\n 'click': true,\n 'dblclick': true,\n 'mousedown': true,\n 'mouseenter': true,\n 'mouseleave': true,\n 'mousemove': true,\n 'mouseout': true,\n 'mouseover': true,\n 'mouseup': true,\n 'wheel': true,\n 'beforeinput': true,\n 'input': true,\n 'keydown': true,\n 'keyup': true,\n 'compositionstart': true,\n 'compositionupdate': true,\n 'compositionend': true,\n 'touchstart': true,\n 'touchend': true,\n 'touchmove': true,\n 'touchcancel': true,\n 'pointerover': true,\n 'pointerenter': true,\n 'pointerdown': true,\n 'pointermove': true,\n 'pointerup': true,\n 'pointercancel': true,\n 'pointerout': true,\n 'pointerleave': true,\n 'gotpointercapture': true,\n 'lostpointercapture': true,\n 'dragstart': true,\n 'drag': true,\n 'dragenter': true,\n 'dragleave': true,\n 'dragover': true,\n 'drop': true,\n 'dragend': true,\n 'DOMActivate': true,\n 'DOMFocusIn': true,\n 'DOMFocusOut': true,\n 'keypress': true\n};\n\nfunction pathComposer(startNode, composed) {\n let composedPath = [];\n let current = startNode;\n let startRoot = startNode === window ? window : startNode.getRootNode();\n while (current) {\n composedPath.push(current);\n if (current.assignedSlot) {\n current = current.assignedSlot;\n } else if (current.nodeType === Node.DOCUMENT_FRAGMENT_NODE && current.host && (composed || current !== startRoot)) {\n current = current.host;\n } else {\n current = current.parentNode;\n }\n }\n // event composedPath includes window when startNode's ownerRoot is document\n if (composedPath[composedPath.length - 1] === document) {\n composedPath.push(window);\n }\n return composedPath;\n}\n\nfunction retarget(refNode, path) {\n if (!utils.isShadyRoot) {\n return refNode;\n }\n // If ANCESTOR's root is not a shadow root or ANCESTOR's root is BASE's\n // shadow-including inclusive ancestor, return ANCESTOR.\n let refNodePath = pathComposer(refNode, true);\n let p$ = path;\n for (let i=0, ancestor, lastRoot, root, rootIdx; i < p$.length; i++) {\n ancestor = p$[i];\n root = ancestor === window ? window : ancestor.getRootNode();\n if (root !== lastRoot) {\n rootIdx = refNodePath.indexOf(root);\n lastRoot = root;\n }\n if (!utils.isShadyRoot(root) || rootIdx > -1) {\n return ancestor;\n }\n }\n}\n\nlet eventMixin = {\n\n /**\n * @this {Event}\n */\n get composed() {\n // isTrusted may not exist in this browser, so just check if isTrusted is explicitly false\n if (this.isTrusted !== false && this.__composed === undefined) {\n this.__composed = alwaysComposed[this.type];\n }\n return this.__composed || false;\n },\n\n /**\n * @this {Event}\n */\n composedPath() {\n if (!this.__composedPath) {\n this.__composedPath = pathComposer(this['__target'], this.composed);\n }\n return this.__composedPath;\n },\n\n /**\n * @this {Event}\n */\n get target() {\n return retarget(this.currentTarget, this.composedPath());\n },\n\n // http://w3c.github.io/webcomponents/spec/shadow/#event-relatedtarget-retargeting\n /**\n * @this {Event}\n */\n get relatedTarget() {\n if (!this.__relatedTarget) {\n return null;\n }\n if (!this.__relatedTargetComposedPath) {\n this.__relatedTargetComposedPath = pathComposer(this.__relatedTarget, true);\n }\n // find the deepest node in relatedTarget composed path that is in the same root with the currentTarget\n return retarget(this.currentTarget, this.__relatedTargetComposedPath);\n },\n /**\n * @this {Event}\n */\n stopPropagation() {\n Event.prototype.stopPropagation.call(this);\n this.__propagationStopped = true;\n },\n /**\n * @this {Event}\n */\n stopImmediatePropagation() {\n Event.prototype.stopImmediatePropagation.call(this);\n this.__immediatePropagationStopped = true;\n this.__propagationStopped = true;\n }\n\n};\n\nfunction mixinComposedFlag(Base) {\n // NOTE: avoiding use of `class` here so that transpiled output does not\n // try to do `Base.call` with a dom construtor.\n let klazz = function(type, options) {\n let event = new Base(type, options);\n event.__composed = options && Boolean(options['composed']);\n return event;\n }\n // put constructor properties on subclass\n utils.mixin(klazz, Base);\n klazz.prototype = Base.prototype;\n return klazz;\n}\n\nlet nonBubblingEventsToRetarget = {\n 'focus': true,\n 'blur': true\n};\n\n\n/**\n * Check if the event has been retargeted by comparing original `target`, and calculated `target`\n * @param {Event} event\n * @return {boolean} True if the original target and calculated target are the same\n */\nfunction hasRetargeted(event) {\n return event['__target'] !== event.target || event.__relatedTarget !== event.relatedTarget;\n}\n\n/**\n *\n * @param {Event} event\n * @param {Node} node\n * @param {string} phase\n */\nfunction fireHandlers(event, node, phase) {\n let hs = node.__handlers && node.__handlers[event.type] &&\n node.__handlers[event.type][phase];\n if (hs) {\n for (let i = 0, fn; (fn = hs[i]); i++) {\n if (hasRetargeted(event) && event.target === event.relatedTarget) {\n return;\n }\n fn.call(node, event);\n if (event.__immediatePropagationStopped) {\n return;\n }\n }\n }\n}\n\nfunction retargetNonBubblingEvent(e) {\n let path = e.composedPath();\n let node;\n // override `currentTarget` to let patched `target` calculate correctly\n Object.defineProperty(e, 'currentTarget', {\n get: function() {\n return node;\n },\n configurable: true\n });\n for (let i = path.length - 1; i >= 0; i--) {\n node = path[i];\n // capture phase fires all capture handlers\n fireHandlers(e, node, 'capture');\n if (e.__propagationStopped) {\n return;\n }\n }\n\n // set the event phase to `AT_TARGET` as in spec\n Object.defineProperty(e, 'eventPhase', {get() { return Event.AT_TARGET }});\n\n // the event only needs to be fired when owner roots change when iterating the event path\n // keep track of the last seen owner root\n let lastFiredRoot;\n for (let i = 0; i < path.length; i++) {\n node = path[i];\n const nodeData = shadyDataForNode(node);\n const root = nodeData && nodeData.root;\n if (i === 0 || (root && root === lastFiredRoot)) {\n fireHandlers(e, node, 'bubble');\n // don't bother with window, it doesn't have `getRootNode` and will be last in the path anyway\n if (node !== window) {\n lastFiredRoot = node.getRootNode();\n }\n if (e.__propagationStopped) {\n return;\n }\n }\n }\n}\n\nfunction listenerSettingsEqual(savedListener, node, type, capture, once, passive) {\n let {\n node: savedNode,\n type: savedType,\n capture: savedCapture,\n once: savedOnce,\n passive: savedPassive\n } = savedListener;\n return node === savedNode &&\n type === savedType &&\n capture === savedCapture &&\n once === savedOnce &&\n passive === savedPassive;\n}\n\nexport function findListener(wrappers, node, type, capture, once, passive) {\n for (let i = 0; i < wrappers.length; i++) {\n if (listenerSettingsEqual(wrappers[i], node, type, capture, once, passive)) {\n return i;\n }\n }\n return -1;\n}\n\n/**\n * Firefox can throw on accessing eventWrappers inside of `removeEventListener` during a selenium run\n * Try/Catch accessing eventWrappers to work around\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1353074\n */\nfunction getEventWrappers(eventLike) {\n let wrappers = null;\n try {\n wrappers = eventLike[eventWrappersName];\n } catch (e) {} // eslint-disable-line no-empty\n return wrappers;\n}\n\n/**\n * @this {Event}\n */\nexport function addEventListener(type, fnOrObj, optionsOrCapture) {\n if (!fnOrObj) {\n return;\n }\n\n const handlerType = typeof fnOrObj;\n\n // bail if `fnOrObj` is not a function, not an object\n if (handlerType !== 'function' && handlerType !== 'object') {\n return;\n }\n\n // bail if `fnOrObj` is an object without a `handleEvent` method\n if (handlerType === 'object' && (!fnOrObj.handleEvent || typeof fnOrObj.handleEvent !== 'function')) {\n return;\n }\n\n // The callback `fn` might be used for multiple nodes/events. Since we generate\n // a wrapper function, we need to keep track of it when we remove the listener.\n // It's more efficient to store the node/type/options information as Array in\n // `fn` itself rather than the node (we assume that the same callback is used\n // for few nodes at most, whereas a node will likely have many event listeners).\n // NOTE(valdrin) invoking external functions is costly, inline has better perf.\n let capture, once, passive;\n if (optionsOrCapture && typeof optionsOrCapture === 'object') {\n capture = Boolean(optionsOrCapture.capture);\n once = Boolean(optionsOrCapture.once);\n passive = Boolean(optionsOrCapture.passive);\n } else {\n capture = Boolean(optionsOrCapture);\n once = false;\n passive = false;\n }\n // hack to let ShadyRoots have event listeners\n // event listener will be on host, but `currentTarget`\n // will be set to shadyroot for event listener\n let target = (optionsOrCapture && optionsOrCapture.__shadyTarget) || this;\n\n let wrappers = fnOrObj[eventWrappersName];\n if (wrappers) {\n // Stop if the wrapper function has already been created.\n if (findListener(wrappers, target, type, capture, once, passive) > -1) {\n return;\n }\n } else {\n fnOrObj[eventWrappersName] = [];\n }\n\n /**\n * @this {HTMLElement}\n * @param {Event} e\n */\n const wrapperFn = function(e) {\n // Support `once` option.\n if (once) {\n this.removeEventListener(type, fnOrObj, optionsOrCapture);\n }\n if (!e['__target']) {\n patchEvent(e);\n }\n let lastCurrentTargetDesc;\n if (target !== this) {\n // replace `currentTarget` to make `target` and `relatedTarget` correct for inside the shadowroot\n lastCurrentTargetDesc = Object.getOwnPropertyDescriptor(e, 'currentTarget');\n Object.defineProperty(e, 'currentTarget', {get() { return target }, configurable: true});\n }\n // There are two critera that should stop events from firing on this node\n // 1. the event is not composed and the current node is not in the same root as the target\n // 2. when bubbling, if after retargeting, relatedTarget and target point to the same node\n if (e.composed || e.composedPath().indexOf(target) > -1) {\n if (hasRetargeted(e) && e.target === e.relatedTarget) {\n if (e.eventPhase === Event.BUBBLING_PHASE) {\n e.stopImmediatePropagation();\n }\n return;\n }\n // prevent non-bubbling events from triggering bubbling handlers on shadowroot, but only if not in capture phase\n if (e.eventPhase !== Event.CAPTURING_PHASE && !e.bubbles && e.target !== target && !(target instanceof Window)) {\n return;\n }\n let ret = handlerType === 'function' ?\n fnOrObj.call(target, e) :\n (fnOrObj.handleEvent && fnOrObj.handleEvent(e));\n if (target !== this) {\n // replace the \"correct\" `currentTarget`\n if (lastCurrentTargetDesc) {\n Object.defineProperty(e, 'currentTarget', lastCurrentTargetDesc);\n lastCurrentTargetDesc = null;\n } else {\n delete e['currentTarget'];\n }\n }\n return ret;\n }\n };\n // Store the wrapper information.\n fnOrObj[eventWrappersName].push({\n // note: use target here which is either a shadowRoot\n // (when the host element is proxy'ing the event) or this element\n node: target,\n type: type,\n capture: capture,\n once: once,\n passive: passive,\n wrapperFn: wrapperFn\n });\n\n if (nonBubblingEventsToRetarget[type]) {\n this.__handlers = this.__handlers || {};\n this.__handlers[type] = this.__handlers[type] ||\n {'capture': [], 'bubble': []};\n this.__handlers[type][capture ? 'capture' : 'bubble'].push(wrapperFn);\n } else {\n let ael = this instanceof Window ? nativeMethods.windowAddEventListener :\n nativeMethods.addEventListener;\n ael.call(this, type, wrapperFn, optionsOrCapture);\n }\n}\n\n/**\n * @this {Event}\n */\nexport function removeEventListener(type, fnOrObj, optionsOrCapture) {\n if (!fnOrObj) {\n return;\n }\n\n // NOTE(valdrin) invoking external functions is costly, inline has better perf.\n let capture, once, passive;\n if (optionsOrCapture && typeof optionsOrCapture === 'object') {\n capture = Boolean(optionsOrCapture.capture);\n once = Boolean(optionsOrCapture.once);\n passive = Boolean(optionsOrCapture.passive);\n } else {\n capture = Boolean(optionsOrCapture);\n once = false;\n passive = false;\n }\n let target = (optionsOrCapture && optionsOrCapture.__shadyTarget) || this;\n // Search the wrapped function.\n let wrapperFn = undefined;\n let wrappers = getEventWrappers(fnOrObj);\n if (wrappers) {\n let idx = findListener(wrappers, target, type, capture, once, passive);\n if (idx > -1) {\n wrapperFn = wrappers.splice(idx, 1)[0].wrapperFn;\n // Cleanup.\n if (!wrappers.length) {\n fnOrObj[eventWrappersName] = undefined;\n }\n }\n }\n let rel = this instanceof Window ? nativeMethods.windowRemoveEventListener :\n nativeMethods.removeEventListener;\n rel.call(this, type, wrapperFn || fnOrObj, optionsOrCapture);\n if (wrapperFn && nonBubblingEventsToRetarget[type] &&\n this.__handlers && this.__handlers[type]) {\n const arr = this.__handlers[type][capture ? 'capture' : 'bubble'];\n const idx = arr.indexOf(wrapperFn);\n if (idx > -1) {\n arr.splice(idx, 1);\n }\n }\n}\n\nfunction activateFocusEventOverrides() {\n for (let ev in nonBubblingEventsToRetarget) {\n window.addEventListener(ev, function(e) {\n if (!e['__target']) {\n patchEvent(e);\n retargetNonBubblingEvent(e);\n }\n }, true);\n }\n}\n\nfunction patchEvent(event) {\n event['__target'] = event.target;\n event.__relatedTarget = event.relatedTarget;\n // patch event prototype if we can\n if (utils.settings.hasDescriptors) {\n utils.patchPrototype(event, eventMixin);\n // and fallback to patching instance\n } else {\n utils.extend(event, eventMixin);\n }\n}\n\nlet PatchedEvent = mixinComposedFlag(window.Event);\nlet PatchedCustomEvent = mixinComposedFlag(window.CustomEvent);\nlet PatchedMouseEvent = mixinComposedFlag(window.MouseEvent);\n\nexport function patchEvents() {\n window.Event = PatchedEvent;\n window.CustomEvent = PatchedCustomEvent;\n window.MouseEvent = PatchedMouseEvent;\n activateFocusEventOverrides();\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nfunction newSplice(index, removed, addedCount) {\n return {\n index: index,\n removed: removed,\n addedCount: addedCount\n };\n}\n\nconst EDIT_LEAVE = 0;\nconst EDIT_UPDATE = 1;\nconst EDIT_ADD = 2;\nconst EDIT_DELETE = 3;\n\n// Note: This function is *based* on the computation of the Levenshtein\n// \"edit\" distance. The one change is that \"updates\" are treated as two\n// edits - not one. With Array splices, an update is really a delete\n// followed by an add. By retaining this, we optimize for \"keeping\" the\n// maximum array items in the original array. For example:\n//\n// 'xxxx123' -> '123yyyy'\n//\n// With 1-edit updates, the shortest path would be just to update all seven\n// characters. With 2-edit updates, we delete 4, leave 3, and add 4. This\n// leaves the substring '123' intact.\nfunction calcEditDistances(current, currentStart, currentEnd,\n old, oldStart, oldEnd) {\n // \"Deletion\" columns\n let rowCount = oldEnd - oldStart + 1;\n let columnCount = currentEnd - currentStart + 1;\n let distances = new Array(rowCount);\n\n // \"Addition\" rows. Initialize null column.\n for (let i = 0; i < rowCount; i++) {\n distances[i] = new Array(columnCount);\n distances[i][0] = i;\n }\n\n // Initialize null row\n for (let j = 0; j < columnCount; j++)\n distances[0][j] = j;\n\n for (let i = 1; i < rowCount; i++) {\n for (let j = 1; j < columnCount; j++) {\n if (equals(current[currentStart + j - 1], old[oldStart + i - 1]))\n distances[i][j] = distances[i - 1][j - 1];\n else {\n let north = distances[i - 1][j] + 1;\n let west = distances[i][j - 1] + 1;\n distances[i][j] = north < west ? north : west;\n }\n }\n }\n\n return distances;\n}\n\n// This starts at the final weight, and walks \"backward\" by finding\n// the minimum previous weight recursively until the origin of the weight\n// matrix.\nfunction spliceOperationsFromEditDistances(distances) {\n let i = distances.length - 1;\n let j = distances[0].length - 1;\n let current = distances[i][j];\n let edits = [];\n while (i > 0 || j > 0) {\n if (i == 0) {\n edits.push(EDIT_ADD);\n j--;\n continue;\n }\n if (j == 0) {\n edits.push(EDIT_DELETE);\n i--;\n continue;\n }\n let northWest = distances[i - 1][j - 1];\n let west = distances[i - 1][j];\n let north = distances[i][j - 1];\n\n let min;\n if (west < north)\n min = west < northWest ? west : northWest;\n else\n min = north < northWest ? north : northWest;\n\n if (min == northWest) {\n if (northWest == current) {\n edits.push(EDIT_LEAVE);\n } else {\n edits.push(EDIT_UPDATE);\n current = northWest;\n }\n i--;\n j--;\n } else if (min == west) {\n edits.push(EDIT_DELETE);\n i--;\n current = west;\n } else {\n edits.push(EDIT_ADD);\n j--;\n current = north;\n }\n }\n\n edits.reverse();\n return edits;\n}\n\n/**\n * Splice Projection functions:\n *\n * A splice map is a representation of how a previous array of items\n * was transformed into a new array of items. Conceptually it is a list of\n * tuples of\n *\n * <index, removed, addedCount>\n *\n * which are kept in ascending index order of. The tuple represents that at\n * the |index|, |removed| sequence of items were removed, and counting forward\n * from |index|, |addedCount| items were added.\n */\n\n/**\n * Lacking individual splice mutation information, the minimal set of\n * splices can be synthesized given the previous state and final state of an\n * array. The basic approach is to calculate the edit distance matrix and\n * choose the shortest path through it.\n *\n * Complexity: O(l * p)\n * l: The length of the current array\n * p: The length of the old array\n */\nfunction calcSplices(current, currentStart, currentEnd,\n old, oldStart, oldEnd) {\n let prefixCount = 0;\n let suffixCount = 0;\n let splice;\n\n let minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart);\n if (currentStart == 0 && oldStart == 0)\n prefixCount = sharedPrefix(current, old, minLength);\n\n if (currentEnd == current.length && oldEnd == old.length)\n suffixCount = sharedSuffix(current, old, minLength - prefixCount);\n\n currentStart += prefixCount;\n oldStart += prefixCount;\n currentEnd -= suffixCount;\n oldEnd -= suffixCount;\n\n if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0)\n return [];\n\n if (currentStart == currentEnd) {\n splice = newSplice(currentStart, [], 0);\n while (oldStart < oldEnd)\n splice.removed.push(old[oldStart++]);\n\n return [ splice ];\n } else if (oldStart == oldEnd)\n return [ newSplice(currentStart, [], currentEnd - currentStart) ];\n\n let ops = spliceOperationsFromEditDistances(\n calcEditDistances(current, currentStart, currentEnd,\n old, oldStart, oldEnd));\n\n splice = undefined;\n let splices = [];\n let index = currentStart;\n let oldIndex = oldStart;\n for (let i = 0; i < ops.length; i++) {\n switch(ops[i]) {\n case EDIT_LEAVE:\n if (splice) {\n splices.push(splice);\n splice = undefined;\n }\n\n index++;\n oldIndex++;\n break;\n case EDIT_UPDATE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.addedCount++;\n index++;\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n case EDIT_ADD:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.addedCount++;\n index++;\n break;\n case EDIT_DELETE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n }\n }\n\n if (splice) {\n splices.push(splice);\n }\n return splices;\n}\n\nfunction sharedPrefix(current, old, searchLength) {\n for (let i = 0; i < searchLength; i++)\n if (!equals(current[i], old[i]))\n return i;\n return searchLength;\n}\n\nfunction sharedSuffix(current, old, searchLength) {\n let index1 = current.length;\n let index2 = old.length;\n let count = 0;\n while (count < searchLength && equals(current[--index1], old[--index2]))\n count++;\n\n return count;\n}\n\nfunction equals(currentValue, previousValue) {\n return currentValue === previousValue;\n}\n\nexport function calculateSplices(current, previous) {\n return calcSplices(current, 0, current.length, previous, 0,\n previous.length);\n}\n\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n/**\n * Patches elements that interacts with ShadyDOM\n * such that tree traversal and mutation apis act like they would under\n * ShadowDOM.\n *\n * This import enables seemless interaction with ShadyDOM powered\n * custom elements, enabling better interoperation with 3rd party code,\n * libraries, and frameworks that use DOM tree manipulation apis.\n */\n\nimport * as utils from './utils.js';\nimport {flush, enqueue} from './flush.js';\nimport {observeChildren, unobserveChildren, filterMutations} from './observe-changes.js';\nimport * as nativeMethods from './native-methods.js';\nimport {accessors as nativeTree} from './native-tree.js';\nimport {patchBuiltins} from './patch-builtins.js';\nimport {patchInsideElementAccessors, patchOutsideElementAccessors} from './patch-accessors.js';\nimport {patchEvents} from './patch-events.js';\nimport {ShadyRoot} from './attach-shadow.js';\n\nif (utils.settings.inUse) {\n let ShadyDOM = {\n // TODO(sorvell): remove when Polymer does not depend on this.\n 'inUse': utils.settings.inUse,\n // NOTE: old browsers without prototype accessors (very old Chrome\n // and Safari) need manually patched accessors to properly set\n // `innerHTML` and `textContent` when an element is:\n // (1) inside a shadowRoot\n // (2) does not have special (slot) children itself\n // (3) and setting the property needs to provoke distribution (because\n // a nested slot is added/removed)\n 'patch': (node) => {\n patchInsideElementAccessors(node);\n patchOutsideElementAccessors(node);\n return node;\n },\n 'isShadyRoot': utils.isShadyRoot,\n 'enqueue': enqueue,\n 'flush': flush,\n 'settings': utils.settings,\n 'filterMutations': filterMutations,\n 'observeChildren': observeChildren,\n 'unobserveChildren': unobserveChildren,\n 'nativeMethods': nativeMethods,\n 'nativeTree': nativeTree\n };\n\n window['ShadyDOM'] = ShadyDOM;\n\n // Apply patches to events...\n patchEvents();\n // Apply patches to builtins (e.g. Element.prototype) where applicable.\n patchBuiltins();\n\n window.ShadowRoot = ShadyRoot;\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n/*\nExtremely simple css parser. Intended to be not more than what we need\nand definitely not necessarily correct =).\n*/\n\n'use strict';\n\n/** @unrestricted */\nclass StyleNode {\n constructor() {\n /** @type {number} */\n this['start'] = 0;\n /** @type {number} */\n this['end'] = 0;\n /** @type {StyleNode} */\n this['previous'] = null;\n /** @type {StyleNode} */\n this['parent'] = null;\n /** @type {Array<StyleNode>} */\n this['rules'] = null;\n /** @type {string} */\n this['parsedCssText'] = '';\n /** @type {string} */\n this['cssText'] = '';\n /** @type {boolean} */\n this['atRule'] = false;\n /** @type {number} */\n this['type'] = 0;\n /** @type {string} */\n this['keyframesName'] = '';\n /** @type {string} */\n this['selector'] = '';\n /** @type {string} */\n this['parsedSelector'] = '';\n }\n}\n\nexport {StyleNode}\n\n// given a string of css, return a simple rule tree\n/**\n * @param {string} text\n * @return {StyleNode}\n */\nexport function parse(text) {\n text = clean(text);\n return parseCss(lex(text), text);\n}\n\n// remove stuff we don't care about that may hinder parsing\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction clean(cssText) {\n return cssText.replace(RX.comments, '').replace(RX.port, '');\n}\n\n// super simple {...} lexer that returns a node tree\n/**\n * @param {string} text\n * @return {StyleNode}\n */\nfunction lex(text) {\n let root = new StyleNode();\n root['start'] = 0;\n root['end'] = text.length\n let n = root;\n for (let i = 0, l = text.length; i < l; i++) {\n if (text[i] === OPEN_BRACE) {\n if (!n['rules']) {\n n['rules'] = [];\n }\n let p = n;\n let previous = p['rules'][p['rules'].length - 1] || null;\n n = new StyleNode();\n n['start'] = i + 1;\n n['parent'] = p;\n n['previous'] = previous;\n p['rules'].push(n);\n } else if (text[i] === CLOSE_BRACE) {\n n['end'] = i + 1;\n n = n['parent'] || root;\n }\n }\n return root;\n}\n\n// add selectors/cssText to node tree\n/**\n * @param {StyleNode} node\n * @param {string} text\n * @return {StyleNode}\n */\nfunction parseCss(node, text) {\n let t = text.substring(node['start'], node['end'] - 1);\n node['parsedCssText'] = node['cssText'] = t.trim();\n if (node['parent']) {\n let ss = node['previous'] ? node['previous']['end'] : node['parent']['start'];\n t = text.substring(ss, node['start'] - 1);\n t = _expandUnicodeEscapes(t);\n t = t.replace(RX.multipleSpaces, ' ');\n // TODO(sorvell): ad hoc; make selector include only after last ;\n // helps with mixin syntax\n t = t.substring(t.lastIndexOf(';') + 1);\n let s = node['parsedSelector'] = node['selector'] = t.trim();\n node['atRule'] = (s.indexOf(AT_START) === 0);\n // note, support a subset of rule types...\n if (node['atRule']) {\n if (s.indexOf(MEDIA_START) === 0) {\n node['type'] = types.MEDIA_RULE;\n } else if (s.match(RX.keyframesRule)) {\n node['type'] = types.KEYFRAMES_RULE;\n node['keyframesName'] =\n node['selector'].split(RX.multipleSpaces).pop();\n }\n } else {\n if (s.indexOf(VAR_START) === 0) {\n node['type'] = types.MIXIN_RULE;\n } else {\n node['type'] = types.STYLE_RULE;\n }\n }\n }\n let r$ = node['rules'];\n if (r$) {\n for (let i = 0, l = r$.length, r;\n (i < l) && (r = r$[i]); i++) {\n parseCss(r, text);\n }\n }\n return node;\n}\n\n/**\n * conversion of sort unicode escapes with spaces like `\\33 ` (and longer) into\n * expanded form that doesn't require trailing space `\\000033`\n * @param {string} s\n * @return {string}\n */\nfunction _expandUnicodeEscapes(s) {\n return s.replace(/\\\\([0-9a-f]{1,6})\\s/gi, function() {\n let code = arguments[1],\n repeat = 6 - code.length;\n while (repeat--) {\n code = '0' + code;\n }\n return '\\\\' + code;\n });\n}\n\n/**\n * stringify parsed css.\n * @param {StyleNode} node\n * @param {boolean=} preserveProperties\n * @param {string=} text\n * @return {string}\n */\nexport function stringify(node, preserveProperties, text = '') {\n // calc rule cssText\n let cssText = '';\n if (node['cssText'] || node['rules']) {\n let r$ = node['rules'];\n if (r$ && !_hasMixinRules(r$)) {\n for (let i = 0, l = r$.length, r;\n (i < l) && (r = r$[i]); i++) {\n cssText = stringify(r, preserveProperties, cssText);\n }\n } else {\n cssText = preserveProperties ? node['cssText'] :\n removeCustomProps(node['cssText']);\n cssText = cssText.trim();\n if (cssText) {\n cssText = ' ' + cssText + '\\n';\n }\n }\n }\n // emit rule if there is cssText\n if (cssText) {\n if (node['selector']) {\n text += node['selector'] + ' ' + OPEN_BRACE + '\\n';\n }\n text += cssText;\n if (node['selector']) {\n text += CLOSE_BRACE + '\\n\\n';\n }\n }\n return text;\n}\n\n/**\n * @param {Array<StyleNode>} rules\n * @return {boolean}\n */\nfunction _hasMixinRules(rules) {\n let r = rules[0];\n return Boolean(r) && Boolean(r['selector']) && r['selector'].indexOf(VAR_START) === 0;\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomProps(cssText) {\n cssText = removeCustomPropAssignment(cssText);\n return removeCustomPropApply(cssText);\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nexport function removeCustomPropAssignment(cssText) {\n return cssText\n .replace(RX.customProp, '')\n .replace(RX.mixinProp, '');\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomPropApply(cssText) {\n return cssText\n .replace(RX.mixinApply, '')\n .replace(RX.varApply, '');\n}\n\n/** @enum {number} */\nexport const types = {\n STYLE_RULE: 1,\n KEYFRAMES_RULE: 7,\n MEDIA_RULE: 4,\n MIXIN_RULE: 1000\n}\n\nconst OPEN_BRACE = '{';\nconst CLOSE_BRACE = '}';\n\n// helper regexp's\nconst RX = {\n comments: /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//gim,\n port: /@import[^;]*;/gim,\n customProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\\n]|$)/gim,\n mixinProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\\n]|$)?/gim,\n mixinApply: /@apply\\s*\\(?[^);]*\\)?\\s*(?:[;\\n]|$)?/gim,\n varApply: /[^;:]*?:[^;]*?var\\([^;]*\\)(?:[;\\n]|$)?/gim,\n keyframesRule: /^@[^\\s]*keyframes/,\n multipleSpaces: /\\s+/g\n}\n\nconst VAR_START = '--';\nconst MEDIA_START = '@media';\nconst AT_START = '@';\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nexport const nativeShadow = !(window['ShadyDOM'] && window['ShadyDOM']['inUse']);\nlet nativeCssVariables_;\n\n/**\n * @param {(ShadyCSSOptions | ShadyCSSInterface)=} settings\n */\nfunction calcCssVariables(settings) {\n if (settings && settings['shimcssproperties']) {\n nativeCssVariables_ = false;\n } else {\n // chrome 49 has semi-working css vars, check if box-shadow works\n // safari 9.1 has a recalc bug: https://bugs.webkit.org/show_bug.cgi?id=155782\n // However, shim css custom properties are only supported with ShadyDOM enabled,\n // so fall back on native if we do not detect ShadyDOM\n // Edge 15: custom properties used in ::before and ::after will also be used in the parent element\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12414257/\n nativeCssVariables_ = nativeShadow || Boolean(!navigator.userAgent.match(/AppleWebKit\\/601|Edge\\/15/) &&\n window.CSS && CSS.supports && CSS.supports('box-shadow', '0 0 0 var(--foo)'));\n }\n}\n\nif (window.ShadyCSS && window.ShadyCSS.nativeCss !== undefined) {\n nativeCssVariables_ = window.ShadyCSS.nativeCss;\n} else if (window.ShadyCSS) {\n calcCssVariables(window.ShadyCSS);\n // reset window variable to let ShadyCSS API take its place\n window.ShadyCSS = undefined;\n} else {\n calcCssVariables(window['WebComponents'] && window['WebComponents']['flags']);\n}\n\n// Hack for type error under new type inference which doesn't like that\n// nativeCssVariables is updated in a function and assigns the type\n// `function(): ?` instead of `boolean`.\nexport const nativeCssVariables = /** @type {boolean} */(nativeCssVariables_);\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nexport const VAR_ASSIGN = /(?:^|[;\\s{]\\s*)(--[\\w-]*?)\\s*:\\s*(?:((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};{])+)|\\{([^}]*)\\}(?:(?=[;\\s}])|$))/gi;\nexport const MIXIN_MATCH = /(?:^|\\W+)@apply\\s*\\(?([^);\\n]*)\\)?/gi;\nexport const VAR_CONSUMED = /(--[\\w-]+)\\s*([:,;)]|$)/gi;\nexport const ANIMATION_MATCH = /(animation\\s*:)|(animation-name\\s*:)/;\nexport const MEDIA_MATCH = /@media\\s(.*)/;\nexport const IS_VAR = /^--/;\nexport const BRACKETED = /\\{[^}]*\\}/g;\nexport const HOST_PREFIX = '(?:^|[^.#[:])';\nexport const HOST_SUFFIX = '($|[.:[\\\\s>+~])';\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/** @type {!Set<string>} */\nconst styleTextSet = new Set();\n\nexport const scopingAttribute = 'shady-unscoped';\n\n/**\n * Add a specifically-marked style to the document directly, and only one copy of that style.\n *\n * @param {!HTMLStyleElement} style\n * @return {undefined}\n */\nexport function processUnscopedStyle(style) {\n const text = style.textContent;\n if (!styleTextSet.has(text)) {\n styleTextSet.add(text);\n const newStyle = style.cloneNode(true);\n document.head.appendChild(newStyle);\n }\n}\n\n/**\n * Check if a style is supposed to be unscoped\n * @param {!HTMLStyleElement} style\n * @return {boolean} true if the style has the unscoping attribute\n */\nexport function isUnscopedStyle(style) {\n return style.hasAttribute(scopingAttribute);\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {nativeShadow, nativeCssVariables} from './style-settings.js';\nimport {parse, stringify, types, StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport {MEDIA_MATCH} from './common-regex.js';\nimport {processUnscopedStyle, isUnscopedStyle} from './unscoped-style-handler.js';\n\n/**\n * @param {string|StyleNode} rules\n * @param {function(StyleNode)=} callback\n * @return {string}\n */\nexport function toCssText (rules, callback) {\n if (!rules) {\n return '';\n }\n if (typeof rules === 'string') {\n rules = parse(rules);\n }\n if (callback) {\n forEachRule(rules, callback);\n }\n return stringify(rules, nativeCssVariables);\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @return {StyleNode}\n */\nexport function rulesForStyle(style) {\n if (!style['__cssRules'] && style.textContent) {\n style['__cssRules'] = parse(style.textContent);\n }\n return style['__cssRules'] || null;\n}\n\n// Tests if a rule is a keyframes selector, which looks almost exactly\n// like a normal selector but is not (it has nothing to do with scoping\n// for example).\n/**\n * @param {StyleNode} rule\n * @return {boolean}\n */\nexport function isKeyframesSelector(rule) {\n return Boolean(rule['parent']) &&\n rule['parent']['type'] === types.KEYFRAMES_RULE;\n}\n\n/**\n * @param {StyleNode} node\n * @param {Function=} styleRuleCallback\n * @param {Function=} keyframesRuleCallback\n * @param {boolean=} onlyActiveRules\n */\nexport function forEachRule(node, styleRuleCallback, keyframesRuleCallback, onlyActiveRules) {\n if (!node) {\n return;\n }\n let skipRules = false;\n let type = node['type'];\n if (onlyActiveRules) {\n if (type === types.MEDIA_RULE) {\n let matchMedia = node['selector'].match(MEDIA_MATCH);\n if (matchMedia) {\n // if rule is a non matching @media rule, skip subrules\n if (!window.matchMedia(matchMedia[1]).matches) {\n skipRules = true;\n }\n }\n }\n }\n if (type === types.STYLE_RULE) {\n styleRuleCallback(node);\n } else if (keyframesRuleCallback &&\n type === types.KEYFRAMES_RULE) {\n keyframesRuleCallback(node);\n } else if (type === types.MIXIN_RULE) {\n skipRules = true;\n }\n let r$ = node['rules'];\n if (r$ && !skipRules) {\n for (let i=0, l=r$.length, r; (i<l) && (r=r$[i]); i++) {\n forEachRule(r, styleRuleCallback, keyframesRuleCallback, onlyActiveRules);\n }\n }\n}\n\n// add a string of cssText to the document.\n/**\n * @param {string} cssText\n * @param {string} moniker\n * @param {Node} target\n * @param {Node} contextNode\n * @return {HTMLStyleElement}\n */\nexport function applyCss(cssText, moniker, target, contextNode) {\n let style = createScopeStyle(cssText, moniker);\n applyStyle(style, target, contextNode);\n return style;\n}\n\n/**\n * @param {string} cssText\n * @param {string} moniker\n * @return {HTMLStyleElement}\n */\nexport function createScopeStyle(cssText, moniker) {\n let style = /** @type {HTMLStyleElement} */(document.createElement('style'));\n if (moniker) {\n style.setAttribute('scope', moniker);\n }\n style.textContent = cssText;\n return style;\n}\n\n/**\n * Track the position of the last added style for placing placeholders\n * @type {Node}\n */\nlet lastHeadApplyNode = null;\n\n// insert a comment node as a styling position placeholder.\n/**\n * @param {string} moniker\n * @return {!Comment}\n */\nexport function applyStylePlaceHolder(moniker) {\n let placeHolder = document.createComment(' Shady DOM styles for ' +\n moniker + ' ');\n let after = lastHeadApplyNode ?\n lastHeadApplyNode['nextSibling'] : null;\n let scope = document.head;\n scope.insertBefore(placeHolder, after || scope.firstChild);\n lastHeadApplyNode = placeHolder;\n return placeHolder;\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @param {?Node} target\n * @param {?Node} contextNode\n */\nexport function applyStyle(style, target, contextNode) {\n target = target || document.head;\n let after = (contextNode && contextNode.nextSibling) ||\n target.firstChild;\n target.insertBefore(style, after);\n if (!lastHeadApplyNode) {\n lastHeadApplyNode = style;\n } else {\n // only update lastHeadApplyNode if the new style is inserted after the old lastHeadApplyNode\n let position = style.compareDocumentPosition(lastHeadApplyNode);\n if (position === Node.DOCUMENT_POSITION_PRECEDING) {\n lastHeadApplyNode = style;\n }\n }\n}\n\n/**\n * @param {string} buildType\n * @return {boolean}\n */\nexport function isTargetedBuild(buildType) {\n return nativeShadow ? buildType === 'shadow' : buildType === 'shady';\n}\n\n/**\n * @param {Element} element\n * @return {?string}\n */\nexport function getCssBuildType(element) {\n return element.getAttribute('css-build');\n}\n\n/**\n * Walk from text[start] matching parens and\n * returns position of the outer end paren\n * @param {string} text\n * @param {number} start\n * @return {number}\n */\nfunction findMatchingParen(text, start) {\n let level = 0;\n for (let i=start, l=text.length; i < l; i++) {\n if (text[i] === '(') {\n level++;\n } else if (text[i] === ')') {\n if (--level === 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\n/**\n * @param {string} str\n * @param {function(string, string, string, string)} callback\n */\nexport function processVariableAndFallback(str, callback) {\n // find 'var('\n let start = str.indexOf('var(');\n if (start === -1) {\n // no var?, everything is prefix\n return callback(str, '', '', '');\n }\n //${prefix}var(${inner})${suffix}\n let end = findMatchingParen(str, start + 3);\n let inner = str.substring(start + 4, end);\n let prefix = str.substring(0, start);\n // suffix may have other variables\n let suffix = processVariableAndFallback(str.substring(end + 1), callback);\n let comma = inner.indexOf(',');\n // value and fallback args should be trimmed to match in property lookup\n if (comma === -1) {\n // variable, no fallback\n return callback(prefix, inner.trim(), '', suffix);\n }\n // var(${value},${fallback})\n let value = inner.substring(0, comma).trim();\n let fallback = inner.substring(comma + 1).trim();\n return callback(prefix, value, fallback, suffix);\n}\n\n/**\n * @param {Element} element\n * @param {string} value\n */\nexport function setElementClassRaw(element, value) {\n // use native setAttribute provided by ShadyDOM when setAttribute is patched\n if (nativeShadow) {\n element.setAttribute('class', value);\n } else {\n window['ShadyDOM']['nativeMethods']['setAttribute'].call(element, 'class', value);\n }\n}\n\n/**\n * @param {Element | {is: string, extends: string}} element\n * @return {{is: string, typeExtension: string}}\n */\nexport function getIsExtends(element) {\n let localName = element['localName'];\n let is = '', typeExtension = '';\n /*\n NOTE: technically, this can be wrong for certain svg elements\n with `-` in the name like `<font-face>`\n */\n if (localName) {\n if (localName.indexOf('-') > -1) {\n is = localName;\n } else {\n typeExtension = localName;\n is = (element.getAttribute && element.getAttribute('is')) || '';\n }\n } else {\n is = /** @type {?} */(element).is;\n typeExtension = /** @type {?} */(element).extends;\n }\n return {is, typeExtension};\n}\n\n/**\n * @param {Element|DocumentFragment} element\n * @return {string}\n */\nexport function gatherStyleText(element) {\n /** @type {!Array<string>} */\n const styleTextParts = [];\n const styles = /** @type {!NodeList<!HTMLStyleElement>} */(element.querySelectorAll('style'));\n for (let i = 0; i < styles.length; i++) {\n const style = styles[i];\n if (isUnscopedStyle(style)) {\n if (!nativeShadow) {\n processUnscopedStyle(style);\n style.parentNode.removeChild(style);\n }\n } else {\n styleTextParts.push(style.textContent);\n style.parentNode.removeChild(style);\n }\n }\n return styleTextParts.join('').trim();\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport * as StyleUtil from './style-util.js';\nimport {nativeShadow} from './style-settings.js';\n\n/* Transforms ShadowDOM styling into ShadyDOM styling\n\n* scoping:\n\n * elements in scope get scoping selector class=\"x-foo-scope\"\n * selectors re-written as follows:\n\n div button -> div.x-foo-scope button.x-foo-scope\n\n* :host -> scopeName\n\n* :host(...) -> scopeName...\n\n* ::slotted(...) -> scopeName > ...\n\n* ...:dir(ltr|rtl) -> [dir=\"ltr|rtl\"] ..., ...[dir=\"ltr|rtl\"]\n\n* :host(:dir[rtl]) -> scopeName:dir(rtl) -> [dir=\"rtl\"] scopeName, scopeName[dir=\"rtl\"]\n\n*/\nconst SCOPE_NAME = 'style-scope';\n\nclass StyleTransformer {\n get SCOPE_NAME() {\n return SCOPE_NAME;\n }\n /**\n * Given a node and scope name, add a scoping class to each node\n * in the tree. This facilitates transforming css into scoped rules.\n * @param {?} node\n * @param {?} scope\n * @param {?=} shouldRemoveScope\n */\n dom(node, scope, shouldRemoveScope) {\n // one time optimization to skip scoping...\n if (node['__styleScoped']) {\n node['__styleScoped'] = null;\n } else {\n this._transformDom(node, scope || '', shouldRemoveScope);\n }\n }\n\n _transformDom(node, selector, shouldRemoveScope) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n this.element(node, selector, shouldRemoveScope);\n }\n let c$ = (node.localName === 'template') ?\n (node.content || node._content).childNodes :\n node.children || node.childNodes;\n if (c$) {\n for (let i=0; i<c$.length; i++) {\n this._transformDom(c$[i], selector, shouldRemoveScope);\n }\n }\n }\n /**\n * @param {?} element\n * @param {?} scope\n * @param {?=} shouldRemoveScope\n */\n element(element, scope, shouldRemoveScope) {\n // note: if using classes, we add both the general 'style-scope' class\n // as well as the specific scope. This enables easy filtering of all\n // `style-scope` elements\n if (scope) {\n // note: svg on IE does not have classList so fallback to class\n if (element.classList) {\n if (shouldRemoveScope) {\n element.classList.remove(SCOPE_NAME);\n element.classList.remove(scope);\n } else {\n element.classList.add(SCOPE_NAME);\n element.classList.add(scope);\n }\n } else if (element.getAttribute) {\n let c = element.getAttribute(CLASS);\n if (shouldRemoveScope) {\n if (c) {\n let newValue = c.replace(SCOPE_NAME, '').replace(scope, '');\n StyleUtil.setElementClassRaw(element, newValue);\n }\n } else {\n let newValue = (c ? c + ' ' : '') + SCOPE_NAME + ' ' + scope;\n StyleUtil.setElementClassRaw(element, newValue);\n }\n }\n }\n }\n\n /**\n * @param {?} element\n * @param {?} styleRules\n * @param {?=} callback\n */\n elementStyles(element, styleRules, callback) {\n let cssBuildType = element['__cssBuild'];\n // no need to shim selectors if settings.useNativeShadow, also\n // a shady css build will already have transformed selectors\n // NOTE: This method may be called as part of static or property shimming.\n // When there is a targeted build it will not be called for static shimming,\n // but when the property shim is used it is called and should opt out of\n // static shimming work when a proper build exists.\n let cssText = '';\n if (nativeShadow || cssBuildType === 'shady') {\n cssText = StyleUtil.toCssText(styleRules, callback);\n } else {\n let {is, typeExtension} = StyleUtil.getIsExtends(element);\n cssText = this.css(styleRules, is, typeExtension, callback) + '\\n\\n';\n }\n return cssText.trim();\n }\n\n // Given a string of cssText and a scoping string (scope), returns\n // a string of scoped css where each selector is transformed to include\n // a class created from the scope. ShadowDOM selectors are also transformed\n // (e.g. :host) to use the scoping selector.\n css(rules, scope, ext, callback) {\n let hostScope = this._calcHostScope(scope, ext);\n scope = this._calcElementScope(scope);\n let self = this;\n return StyleUtil.toCssText(rules, function(/** StyleNode */rule) {\n if (!rule.isScoped) {\n self.rule(rule, scope, hostScope);\n rule.isScoped = true;\n }\n if (callback) {\n callback(rule, scope, hostScope);\n }\n });\n }\n\n _calcElementScope(scope) {\n if (scope) {\n return CSS_CLASS_PREFIX + scope;\n } else {\n return '';\n }\n }\n\n _calcHostScope(scope, ext) {\n return ext ? `[is=${scope}]` : scope;\n }\n\n rule(rule, scope, hostScope) {\n this._transformRule(rule, this._transformComplexSelector,\n scope, hostScope);\n }\n\n /**\n * transforms a css rule to a scoped rule.\n *\n * @param {StyleNode} rule\n * @param {Function} transformer\n * @param {string=} scope\n * @param {string=} hostScope\n */\n _transformRule(rule, transformer, scope, hostScope) {\n // NOTE: save transformedSelector for subsequent matching of elements\n // against selectors (e.g. when calculating style properties)\n rule['selector'] = rule.transformedSelector =\n this._transformRuleCss(rule, transformer, scope, hostScope);\n }\n\n /**\n * @param {StyleNode} rule\n * @param {Function} transformer\n * @param {string=} scope\n * @param {string=} hostScope\n */\n _transformRuleCss(rule, transformer, scope, hostScope) {\n let p$ = rule['selector'].split(COMPLEX_SELECTOR_SEP);\n // we want to skip transformation of rules that appear in keyframes,\n // because they are keyframe selectors, not element selectors.\n if (!StyleUtil.isKeyframesSelector(rule)) {\n for (let i=0, l=p$.length, p; (i<l) && (p=p$[i]); i++) {\n p$[i] = transformer.call(this, p, scope, hostScope);\n }\n }\n return p$.join(COMPLEX_SELECTOR_SEP);\n }\n\n /**\n * @param {string} selector\n * @return {string}\n */\n _twiddleNthPlus(selector) {\n return selector.replace(NTH, (m, type, inside) => {\n if (inside.indexOf('+') > -1) {\n inside = inside.replace(/\\+/g, '___');\n } else if (inside.indexOf('___') > -1) {\n inside = inside.replace(/___/g, '+');\n }\n return `:${type}(${inside})`;\n });\n }\n\n/**\n * @param {string} selector\n * @param {string} scope\n * @param {string=} hostScope\n */\n _transformComplexSelector(selector, scope, hostScope) {\n let stop = false;\n selector = selector.trim();\n // Remove spaces inside of selectors like `:nth-of-type` because it confuses SIMPLE_SELECTOR_SEP\n let isNth = NTH.test(selector);\n if (isNth) {\n selector = selector.replace(NTH, (m, type, inner) => `:${type}(${inner.replace(/\\s/g, '')})`)\n selector = this._twiddleNthPlus(selector);\n }\n selector = selector.replace(SLOTTED_START, `${HOST} $1`);\n selector = selector.replace(SIMPLE_SELECTOR_SEP, (m, c, s) => {\n if (!stop) {\n let info = this._transformCompoundSelector(s, c, scope, hostScope);\n stop = stop || info.stop;\n c = info.combinator;\n s = info.value;\n }\n return c + s;\n });\n if (isNth) {\n selector = this._twiddleNthPlus(selector);\n }\n return selector;\n }\n\n _transformCompoundSelector(selector, combinator, scope, hostScope) {\n // replace :host with host scoping class\n let slottedIndex = selector.indexOf(SLOTTED);\n if (selector.indexOf(HOST) >= 0) {\n selector = this._transformHostSelector(selector, hostScope);\n // replace other selectors with scoping class\n } else if (slottedIndex !== 0) {\n selector = scope ? this._transformSimpleSelector(selector, scope) :\n selector;\n }\n // mark ::slotted() scope jump to replace with descendant selector + arg\n // also ignore left-side combinator\n let slotted = false;\n if (slottedIndex >= 0) {\n combinator = '';\n slotted = true;\n }\n // process scope jumping selectors up to the scope jump and then stop\n let stop;\n if (slotted) {\n stop = true;\n if (slotted) {\n // .zonk ::slotted(.foo) -> .zonk.scope > .foo\n selector = selector.replace(SLOTTED_PAREN, (m, paren) => ` > ${paren}`);\n }\n }\n selector = selector.replace(DIR_PAREN, (m, before, dir) =>\n `[dir=\"${dir}\"] ${before}, ${before}[dir=\"${dir}\"]`);\n return {value: selector, combinator, stop};\n }\n\n _transformSimpleSelector(selector, scope) {\n let p$ = selector.split(PSEUDO_PREFIX);\n p$[0] += scope;\n return p$.join(PSEUDO_PREFIX);\n }\n\n // :host(...) -> scopeName...\n _transformHostSelector(selector, hostScope) {\n let m = selector.match(HOST_PAREN);\n let paren = m && m[2].trim() || '';\n if (paren) {\n if (!paren[0].match(SIMPLE_SELECTOR_PREFIX)) {\n // paren starts with a type selector\n let typeSelector = paren.split(SIMPLE_SELECTOR_PREFIX)[0];\n // if the type selector is our hostScope then avoid pre-pending it\n if (typeSelector === hostScope) {\n return paren;\n // otherwise, this selector should not match in this scope so\n // output a bogus selector.\n } else {\n return SELECTOR_NO_MATCH;\n }\n } else {\n // make sure to do a replace here to catch selectors like:\n // `:host(.foo)::before`\n return selector.replace(HOST_PAREN, function(m, host, paren) {\n return hostScope + paren;\n });\n }\n // if no paren, do a straight :host replacement.\n // TODO(sorvell): this should not strictly be necessary but\n // it's needed to maintain support for `:host[foo]` type selectors\n // which have been improperly used under Shady DOM. This should be\n // deprecated.\n } else {\n return selector.replace(HOST, hostScope);\n }\n }\n\n /**\n * @param {StyleNode} rule\n */\n documentRule(rule) {\n // reset selector in case this is redone.\n rule['selector'] = rule['parsedSelector'];\n this.normalizeRootSelector(rule);\n this._transformRule(rule, this._transformDocumentSelector);\n }\n\n /**\n * @param {StyleNode} rule\n */\n normalizeRootSelector(rule) {\n if (rule['selector'] === ROOT) {\n rule['selector'] = 'html';\n }\n }\n\n/**\n * @param {string} selector\n */\n _transformDocumentSelector(selector) {\n return selector.match(SLOTTED) ?\n this._transformComplexSelector(selector, SCOPE_DOC_SELECTOR) :\n this._transformSimpleSelector(selector.trim(), SCOPE_DOC_SELECTOR);\n }\n}\n\nlet NTH = /:(nth[-\\w]+)\\(([^)]+)\\)/;\nlet SCOPE_DOC_SELECTOR = `:not(.${SCOPE_NAME})`;\nlet COMPLEX_SELECTOR_SEP = ',';\nlet SIMPLE_SELECTOR_SEP = /(^|[\\s>+~]+)((?:\\[.+?\\]|[^\\s>+~=[])+)/g;\nlet SIMPLE_SELECTOR_PREFIX = /[[.:#*]/;\nlet HOST = ':host';\nlet ROOT = ':root';\nlet SLOTTED = '::slotted';\nlet SLOTTED_START = new RegExp(`^(${SLOTTED})`);\n// NOTE: this supports 1 nested () pair for things like\n// :host(:not([selected]), more general support requires\n// parsing which seems like overkill\nlet HOST_PAREN = /(:host)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;\n// similar to HOST_PAREN\nlet SLOTTED_PAREN = /(?:::slotted)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;\nlet DIR_PAREN = /(.*):dir\\((?:(ltr|rtl))\\)/;\nlet CSS_CLASS_PREFIX = '.';\nlet PSEUDO_PREFIX = ':';\nlet CLASS = 'class';\nlet SELECTOR_NO_MATCH = 'should_not_match';\n\nexport default new StyleTransformer()\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\n\n/** @const {string} */\nconst infoKey = '__styleInfo';\n\nexport default class StyleInfo {\n /**\n * @param {Element} node\n * @return {StyleInfo}\n */\n static get(node) {\n if (node) {\n return node[infoKey];\n } else {\n return null;\n }\n }\n /**\n * @param {!Element} node\n * @param {StyleInfo} styleInfo\n * @return {StyleInfo}\n */\n static set(node, styleInfo) {\n node[infoKey] = styleInfo;\n return styleInfo;\n }\n /**\n * @param {StyleNode} ast\n * @param {Node=} placeholder\n * @param {Array<string>=} ownStylePropertyNames\n * @param {string=} elementName\n * @param {string=} typeExtension\n * @param {string=} cssBuild\n */\n constructor(ast, placeholder, ownStylePropertyNames, elementName, typeExtension, cssBuild) {\n /** @type {StyleNode} */\n this.styleRules = ast || null;\n /** @type {Node} */\n this.placeholder = placeholder || null;\n /** @type {!Array<string>} */\n this.ownStylePropertyNames = ownStylePropertyNames || [];\n /** @type {Array<Object>} */\n this.overrideStyleProperties = null;\n /** @type {string} */\n this.elementName = elementName || '';\n /** @type {string} */\n this.cssBuild = cssBuild || '';\n /** @type {string} */\n this.typeExtension = typeExtension || '';\n /** @type {Object<string, string>} */\n this.styleProperties = null;\n /** @type {?string} */\n this.scopeSelector = null;\n /** @type {HTMLStyleElement} */\n this.customStyle = null;\n }\n _getStyleRules() {\n return this.styleRules;\n }\n}\n\nStyleInfo.prototype['_getStyleRules'] = StyleInfo.prototype._getStyleRules;","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {removeCustomPropAssignment, StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport {nativeShadow} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport * as StyleUtil from './style-util.js';\nimport * as RX from './common-regex.js';\nimport StyleInfo from './style-info.js';\n\n// TODO: dedupe with shady\n/**\n * @param {string} selector\n * @return {boolean}\n * @this {Element}\n */\nconst matchesSelector = function(selector) {\n const method = this.matches || this.matchesSelector ||\n this.mozMatchesSelector || this.msMatchesSelector ||\n this.oMatchesSelector || this.webkitMatchesSelector;\n return method && method.call(this, selector);\n};\n\nconst IS_IE = navigator.userAgent.match('Trident');\n\nconst XSCOPE_NAME = 'x-scope';\n\nclass StyleProperties {\n get XSCOPE_NAME() {\n return XSCOPE_NAME;\n }\n/**\n * decorates styles with rule info and returns an array of used style property names\n *\n * @param {StyleNode} rules\n * @return {Array<string>}\n */\n decorateStyles(rules) {\n let self = this, props = {}, keyframes = [], ruleIndex = 0;\n StyleUtil.forEachRule(rules, function(rule) {\n self.decorateRule(rule);\n // mark in-order position of ast rule in styles block, used for cache key\n rule.index = ruleIndex++;\n self.collectPropertiesInCssText(rule.propertyInfo.cssText, props);\n }, function onKeyframesRule(rule) {\n keyframes.push(rule);\n });\n // Cache all found keyframes rules for later reference:\n rules._keyframes = keyframes;\n // return this list of property names *consumes* in these styles.\n let names = [];\n for (let i in props) {\n names.push(i);\n }\n return names;\n }\n\n // decorate a single rule with property info\n decorateRule(rule) {\n if (rule.propertyInfo) {\n return rule.propertyInfo;\n }\n let info = {}, properties = {};\n let hasProperties = this.collectProperties(rule, properties);\n if (hasProperties) {\n info.properties = properties;\n // TODO(sorvell): workaround parser seeing mixins as additional rules\n rule['rules'] = null;\n }\n info.cssText = this.collectCssText(rule);\n rule.propertyInfo = info;\n return info;\n }\n\n // collects the custom properties from a rule's cssText\n collectProperties(rule, properties) {\n let info = rule.propertyInfo;\n if (info) {\n if (info.properties) {\n Object.assign(properties, info.properties);\n return true;\n }\n } else {\n let m, rx = RX.VAR_ASSIGN;\n let cssText = rule['parsedCssText'];\n let value;\n let any;\n while ((m = rx.exec(cssText))) {\n // note: group 2 is var, 3 is mixin\n value = (m[2] || m[3]).trim();\n // value of 'inherit' or 'unset' is equivalent to not setting the property here\n if (value !== 'inherit' || value !== 'unset') {\n properties[m[1].trim()] = value;\n }\n any = true;\n }\n return any;\n }\n\n }\n\n // returns cssText of properties that consume variables/mixins\n collectCssText(rule) {\n return this.collectConsumingCssText(rule['parsedCssText']);\n }\n\n // NOTE: we support consumption inside mixin assignment\n // but not production, so strip out {...}\n collectConsumingCssText(cssText) {\n return cssText.replace(RX.BRACKETED, '')\n .replace(RX.VAR_ASSIGN, '');\n }\n\n collectPropertiesInCssText(cssText, props) {\n let m;\n while ((m = RX.VAR_CONSUMED.exec(cssText))) {\n let name = m[1];\n // This regex catches all variable names, and following non-whitespace char\n // If next char is not ':', then variable is a consumer\n if (m[2] !== ':') {\n props[name] = true;\n }\n }\n }\n\n // turns custom properties into realized values.\n reify(props) {\n // big perf optimization here: reify only *own* properties\n // since this object has __proto__ of the element's scope properties\n let names = Object.getOwnPropertyNames(props);\n for (let i=0, n; i < names.length; i++) {\n n = names[i];\n props[n] = this.valueForProperty(props[n], props);\n }\n }\n\n // given a property value, returns the reified value\n // a property value may be:\n // (1) a literal value like: red or 5px;\n // (2) a variable value like: var(--a), var(--a, red), or var(--a, --b) or\n // var(--a, var(--b));\n // (3) a literal mixin value like { properties }. Each of these properties\n // can have values that are: (a) literal, (b) variables, (c) @apply mixins.\n valueForProperty(property, props) {\n // case (1) default\n // case (3) defines a mixin and we have to reify the internals\n if (property) {\n if (property.indexOf(';') >=0) {\n property = this.valueForProperties(property, props);\n } else {\n // case (2) variable\n let self = this;\n let fn = function(prefix, value, fallback, suffix) {\n if (!value) {\n return prefix + suffix;\n }\n let propertyValue = self.valueForProperty(props[value], props);\n // if value is \"initial\", then the variable should be treated as unset\n if (!propertyValue || propertyValue === 'initial') {\n // fallback may be --a or var(--a) or literal\n propertyValue = self.valueForProperty(props[fallback] || fallback, props) ||\n fallback;\n } else if (propertyValue === 'apply-shim-inherit') {\n // CSS build will replace `inherit` with `apply-shim-inherit`\n // for use with native css variables.\n // Since we have full control, we can use `inherit` directly.\n propertyValue = 'inherit';\n }\n return prefix + (propertyValue || '') + suffix;\n };\n property = StyleUtil.processVariableAndFallback(property, fn);\n }\n }\n return property && property.trim() || '';\n }\n\n // note: we do not yet support mixin within mixin\n valueForProperties(property, props) {\n let parts = property.split(';');\n for (let i=0, p, m; i<parts.length; i++) {\n if ((p = parts[i])) {\n RX.MIXIN_MATCH.lastIndex = 0;\n m = RX.MIXIN_MATCH.exec(p);\n if (m) {\n p = this.valueForProperty(props[m[1]], props);\n } else {\n let colon = p.indexOf(':');\n if (colon !== -1) {\n let pp = p.substring(colon);\n pp = pp.trim();\n pp = this.valueForProperty(pp, props) || pp;\n p = p.substring(0, colon) + pp;\n }\n }\n parts[i] = (p && p.lastIndexOf(';') === p.length - 1) ?\n // strip trailing ;\n p.slice(0, -1) :\n p || '';\n }\n }\n return parts.join(';');\n }\n\n applyProperties(rule, props) {\n let output = '';\n // dynamically added sheets may not be decorated so ensure they are.\n if (!rule.propertyInfo) {\n this.decorateRule(rule);\n }\n if (rule.propertyInfo.cssText) {\n output = this.valueForProperties(rule.propertyInfo.cssText, props);\n }\n rule['cssText'] = output;\n }\n\n // Apply keyframe transformations to the cssText of a given rule. The\n // keyframeTransforms object is a map of keyframe names to transformer\n // functions which take in cssText and spit out transformed cssText.\n applyKeyframeTransforms(rule, keyframeTransforms) {\n let input = rule['cssText'];\n let output = rule['cssText'];\n if (rule.hasAnimations == null) {\n // Cache whether or not the rule has any animations to begin with:\n rule.hasAnimations = RX.ANIMATION_MATCH.test(input);\n }\n // If there are no animations referenced, we can skip transforms:\n if (rule.hasAnimations) {\n let transform;\n // If we haven't transformed this rule before, we iterate over all\n // transforms:\n if (rule.keyframeNamesToTransform == null) {\n rule.keyframeNamesToTransform = [];\n for (let keyframe in keyframeTransforms) {\n transform = keyframeTransforms[keyframe];\n output = transform(input);\n // If the transform actually changed the CSS text, we cache the\n // transform name for future use:\n if (input !== output) {\n input = output;\n rule.keyframeNamesToTransform.push(keyframe);\n }\n }\n } else {\n // If we already have a list of keyframe names that apply to this\n // rule, we apply only those keyframe name transforms:\n for (let i = 0; i < rule.keyframeNamesToTransform.length; ++i) {\n transform = keyframeTransforms[rule.keyframeNamesToTransform[i]];\n input = transform(input);\n }\n output = input;\n }\n }\n rule['cssText'] = output;\n }\n\n // Test if the rules in these styles matches the given `element` and if so,\n // collect any custom properties into `props`.\n /**\n * @param {StyleNode} rules\n * @param {Element} element\n */\n propertyDataFromStyles(rules, element) {\n let props = {}, self = this;\n // generates a unique key for these matches\n let o = [];\n // note: active rules excludes non-matching @media rules\n StyleUtil.forEachRule(rules, function(rule) {\n // TODO(sorvell): we could trim the set of rules at declaration\n // time to only include ones that have properties\n if (!rule.propertyInfo) {\n self.decorateRule(rule);\n }\n // match element against transformedSelector: selector may contain\n // unwanted uniquification and parsedSelector does not directly match\n // for :host selectors.\n let selectorToMatch = rule.transformedSelector || rule['parsedSelector'];\n if (element && rule.propertyInfo.properties && selectorToMatch) {\n if (matchesSelector.call(element, selectorToMatch)) {\n self.collectProperties(rule, props);\n // produce numeric key for these matches for lookup\n addToBitMask(rule.index, o);\n }\n }\n }, null, true);\n return {properties: props, key: o};\n }\n\n /**\n * @param {Element} scope\n * @param {StyleNode} rule\n * @param {string|undefined} cssBuild\n * @param {function(Object)} callback\n */\n whenHostOrRootRule(scope, rule, cssBuild, callback) {\n if (!rule.propertyInfo) {\n this.decorateRule(rule);\n }\n if (!rule.propertyInfo.properties) {\n return;\n }\n let {is, typeExtension} = StyleUtil.getIsExtends(scope);\n let hostScope = is ?\n StyleTransformer._calcHostScope(is, typeExtension) :\n 'html';\n let parsedSelector = rule['parsedSelector'];\n let isRoot = (parsedSelector === ':host > *' || parsedSelector === 'html');\n let isHost = parsedSelector.indexOf(':host') === 0 && !isRoot;\n // build info is either in scope (when scope is an element) or in the style\n // when scope is the default scope; note: this allows default scope to have\n // mixed mode built and unbuilt styles.\n if (cssBuild === 'shady') {\n // :root -> x-foo > *.x-foo for elements and html for custom-style\n isRoot = parsedSelector === (hostScope + ' > *.' + hostScope) || parsedSelector.indexOf('html') !== -1;\n // :host -> x-foo for elements, but sub-rules have .x-foo in them\n isHost = !isRoot && parsedSelector.indexOf(hostScope) === 0;\n }\n if (cssBuild === 'shadow') {\n isRoot = parsedSelector === ':host > *' || parsedSelector === 'html';\n isHost = isHost && !isRoot;\n }\n if (!isRoot && !isHost) {\n return;\n }\n let selectorToMatch = hostScope;\n if (isHost) {\n // need to transform :host because `:host` does not work with `matches`\n if (!rule.transformedSelector) {\n // transform :host into a matchable selector\n rule.transformedSelector =\n StyleTransformer._transformRuleCss(\n rule,\n StyleTransformer._transformComplexSelector,\n StyleTransformer._calcElementScope(is),\n hostScope\n );\n }\n selectorToMatch = rule.transformedSelector || hostScope;\n }\n callback({\n selector: selectorToMatch,\n isHost: isHost,\n isRoot: isRoot\n });\n }\n/**\n * @param {Element} scope\n * @param {StyleNode} rules\n * @return {Object}\n */\n hostAndRootPropertiesForScope(scope, rules) {\n let hostProps = {}, rootProps = {}, self = this;\n // note: active rules excludes non-matching @media rules\n let cssBuild = rules && rules['__cssBuild'];\n StyleUtil.forEachRule(rules, function(rule) {\n // if scope is StyleDefaults, use _element for matchesSelector\n self.whenHostOrRootRule(scope, rule, cssBuild, function(info) {\n let element = scope._element || scope;\n if (matchesSelector.call(element, info.selector)) {\n if (info.isHost) {\n self.collectProperties(rule, hostProps);\n } else {\n self.collectProperties(rule, rootProps);\n }\n }\n });\n }, null, true);\n return {rootProps: rootProps, hostProps: hostProps};\n }\n\n /**\n * @param {Element} element\n * @param {Object} properties\n * @param {string} scopeSelector\n */\n transformStyles(element, properties, scopeSelector) {\n let self = this;\n let {is, typeExtension} = StyleUtil.getIsExtends(element);\n let hostSelector = StyleTransformer\n ._calcHostScope(is, typeExtension);\n let rxHostSelector = element.extends ?\n '\\\\' + hostSelector.slice(0, -1) + '\\\\]' :\n hostSelector;\n let hostRx = new RegExp(RX.HOST_PREFIX + rxHostSelector +\n RX.HOST_SUFFIX);\n let rules = StyleInfo.get(element).styleRules;\n let keyframeTransforms =\n this._elementKeyframeTransforms(element, rules, scopeSelector);\n return StyleTransformer.elementStyles(element, rules, function(rule) {\n self.applyProperties(rule, properties);\n if (!nativeShadow &&\n !StyleUtil.isKeyframesSelector(rule) &&\n rule['cssText']) {\n // NOTE: keyframe transforms only scope munge animation names, so it\n // is not necessary to apply them in ShadowDOM.\n self.applyKeyframeTransforms(rule, keyframeTransforms);\n self._scopeSelector(rule, hostRx, hostSelector, scopeSelector);\n }\n });\n }\n\n /**\n * @param {Element} element\n * @param {StyleNode} rules\n * @param {string} scopeSelector\n * @return {Object}\n */\n _elementKeyframeTransforms(element, rules, scopeSelector) {\n let keyframesRules = rules._keyframes;\n let keyframeTransforms = {};\n if (!nativeShadow && keyframesRules) {\n // For non-ShadowDOM, we transform all known keyframes rules in\n // advance for the current scope. This allows us to catch keyframes\n // rules that appear anywhere in the stylesheet:\n for (let i = 0, keyframesRule = keyframesRules[i];\n i < keyframesRules.length;\n keyframesRule = keyframesRules[++i]) {\n this._scopeKeyframes(keyframesRule, scopeSelector);\n keyframeTransforms[keyframesRule['keyframesName']] =\n this._keyframesRuleTransformer(keyframesRule);\n }\n }\n return keyframeTransforms;\n }\n\n // Generate a factory for transforming a chunk of CSS text to handle a\n // particular scoped keyframes rule.\n /**\n * @param {StyleNode} keyframesRule\n * @return {function(string):string}\n */\n _keyframesRuleTransformer(keyframesRule) {\n return function(cssText) {\n return cssText.replace(\n keyframesRule.keyframesNameRx,\n keyframesRule.transformedKeyframesName);\n };\n }\n\n/**\n * Transforms `@keyframes` names to be unique for the current host.\n * Example: @keyframes foo-anim -> @keyframes foo-anim-x-foo-0\n *\n * @param {StyleNode} rule\n * @param {string} scopeId\n */\n _scopeKeyframes(rule, scopeId) {\n // Animation names are of the form [\\w-], so ensure that the name regex does not partially apply\n // to similarly named keyframe names by checking for a word boundary at the beginning and\n // a non-word boundary or `-` at the end.\n rule.keyframesNameRx = new RegExp(`\\\\b${rule['keyframesName']}(?!\\\\B|-)`, 'g');\n rule.transformedKeyframesName = rule['keyframesName'] + '-' + scopeId;\n rule.transformedSelector = rule.transformedSelector || rule['selector'];\n rule['selector'] = rule.transformedSelector.replace(\n rule['keyframesName'], rule.transformedKeyframesName);\n }\n\n // Strategy: x scope shim a selector e.g. to scope `.x-foo-42` (via classes):\n // non-host selector: .a.x-foo -> .x-foo-42 .a.x-foo\n // host selector: x-foo.wide -> .x-foo-42.wide\n // note: we use only the scope class (.x-foo-42) and not the hostSelector\n // (x-foo) to scope :host rules; this helps make property host rules\n // have low specificity. They are overrideable by class selectors but,\n // unfortunately, not by type selectors (e.g. overriding via\n // `.special` is ok, but not by `x-foo`).\n /**\n * @param {StyleNode} rule\n * @param {RegExp} hostRx\n * @param {string} hostSelector\n * @param {string} scopeId\n */\n _scopeSelector(rule, hostRx, hostSelector, scopeId) {\n rule.transformedSelector = rule.transformedSelector || rule['selector'];\n let selector = rule.transformedSelector;\n let scope = '.' + scopeId;\n let parts = selector.split(',');\n for (let i=0, l=parts.length, p; (i<l) && (p=parts[i]); i++) {\n parts[i] = p.match(hostRx) ?\n p.replace(hostSelector, scope) :\n scope + ' ' + p;\n }\n rule['selector'] = parts.join(',');\n }\n\n /**\n * @param {Element} element\n * @param {string} selector\n * @param {string} old\n */\n applyElementScopeSelector(element, selector, old) {\n let c = element.getAttribute('class') || '';\n let v = c;\n if (old) {\n v = c.replace(\n new RegExp('\\\\s*' + XSCOPE_NAME + '\\\\s*' + old + '\\\\s*', 'g'), ' ');\n }\n v += (v ? ' ' : '') + XSCOPE_NAME + ' ' + selector;\n if (c !== v) {\n StyleUtil.setElementClassRaw(element, v);\n }\n }\n\n /**\n * @param {HTMLElement} element\n * @param {Object} properties\n * @param {string} selector\n * @param {HTMLStyleElement} style\n * @return {HTMLStyleElement}\n */\n applyElementStyle(element, properties, selector, style) {\n // calculate cssText to apply\n let cssText = style ? style.textContent || '' :\n this.transformStyles(element, properties, selector);\n // if shady and we have a cached style that is not style, decrement\n let styleInfo = StyleInfo.get(element);\n let s = styleInfo.customStyle;\n if (s && !nativeShadow && (s !== style)) {\n s['_useCount']--;\n if (s['_useCount'] <= 0 && s.parentNode) {\n s.parentNode.removeChild(s);\n }\n }\n // apply styling always under native or if we generated style\n // or the cached style is not in document(!)\n if (nativeShadow) {\n // update existing style only under native\n if (styleInfo.customStyle) {\n styleInfo.customStyle.textContent = cssText;\n style = styleInfo.customStyle;\n // otherwise, if we have css to apply, do so\n } else if (cssText) {\n // apply css after the scope style of the element to help with\n // style precedence rules.\n style = StyleUtil.applyCss(cssText, selector, element.shadowRoot,\n styleInfo.placeholder);\n }\n } else {\n // shady and no cache hit\n if (!style) {\n // apply css after the scope style of the element to help with\n // style precedence rules.\n if (cssText) {\n style = StyleUtil.applyCss(cssText, selector, null,\n styleInfo.placeholder);\n }\n // shady and cache hit but not in document\n } else if (!style.parentNode) {\n if (IS_IE && cssText.indexOf('@media') > -1) {\n // @media rules may be stale in IE 10 and 11\n // refresh the text content of the style to revalidate them.\n style.textContent = cssText;\n }\n StyleUtil.applyStyle(style, null, styleInfo.placeholder);\n }\n }\n // ensure this style is our custom style and increment its use count.\n if (style) {\n style['_useCount'] = style['_useCount'] || 0;\n // increment use count if we changed styles\n if (styleInfo.customStyle != style) {\n style['_useCount']++;\n }\n styleInfo.customStyle = style;\n }\n return style;\n }\n\n /**\n * @param {Element} style\n * @param {Object} properties\n */\n applyCustomStyle(style, properties) {\n let rules = StyleUtil.rulesForStyle(/** @type {HTMLStyleElement} */(style));\n let self = this;\n style.textContent = StyleUtil.toCssText(rules, function(/** StyleNode */rule) {\n let css = rule['cssText'] = rule['parsedCssText'];\n if (rule.propertyInfo && rule.propertyInfo.cssText) {\n // remove property assignments\n // so next function isn't confused\n // NOTE: we have 3 categories of css:\n // (1) normal properties,\n // (2) custom property assignments (--foo: red;),\n // (3) custom property usage: border: var(--foo); @apply(--foo);\n // In elements, 1 and 3 are separated for efficiency; here they\n // are not and this makes this case unique.\n css = removeCustomPropAssignment(/** @type {string} */(css));\n // replace with reified properties, scenario is same as mixin\n rule['cssText'] = self.valueForProperties(css, properties);\n }\n });\n }\n}\n\n/**\n * @param {number} n\n * @param {Array<number>} bits\n */\nfunction addToBitMask(n, bits) {\n let o = parseInt(n / 32, 10);\n let v = 1 << (n % 32);\n bits[o] = (bits[o] || 0) | v;\n}\n\nexport default new StyleProperties();","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {applyStylePlaceHolder} from './style-util.js';\nimport {nativeShadow} from './style-settings.js';\n\n/** @type {Object<string, !Node>} */\nlet placeholderMap = {};\n\n/**\n * @const {CustomElementRegistry}\n */\nconst ce = window['customElements'];\nif (ce && !nativeShadow) {\n /**\n * @const {function(this:CustomElementRegistry, string,function(new:HTMLElement),{extends: string}=)}\n */\n const origDefine = ce['define'];\n /**\n * @param {string} name\n * @param {function(new:HTMLElement)} clazz\n * @param {{extends: string}=} options\n */\n const wrappedDefine = (name, clazz, options) => {\n placeholderMap[name] = applyStylePlaceHolder(name);\n origDefine.call(/** @type {!CustomElementRegistry} */(ce), name, clazz, options);\n };\n ce['define'] = wrappedDefine;\n}\n\nexport default placeholderMap;\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n'use strict';\n\nexport default class StyleCache {\n constructor(typeMax = 100) {\n // map element name -> [{properties, styleElement, scopeSelector}]\n this.cache = {};\n this.typeMax = typeMax;\n }\n\n _validate(cacheEntry, properties, ownPropertyNames) {\n for (let idx = 0; idx < ownPropertyNames.length; idx++) {\n let pn = ownPropertyNames[idx];\n if (cacheEntry.properties[pn] !== properties[pn]) {\n return false;\n }\n }\n return true;\n }\n\n store(tagname, properties, styleElement, scopeSelector) {\n let list = this.cache[tagname] || [];\n list.push({properties, styleElement, scopeSelector});\n if (list.length > this.typeMax) {\n list.shift();\n }\n this.cache[tagname] = list;\n }\n\n fetch(tagname, properties, ownPropertyNames) {\n let list = this.cache[tagname];\n if (!list) {\n return;\n }\n // reverse list for most-recent lookups\n for (let idx = list.length - 1; idx >= 0; idx--) {\n let entry = list[idx];\n if (this._validate(entry, properties, ownPropertyNames)) {\n return entry;\n }\n }\n }\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {nativeShadow} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport {getIsExtends} from './style-util.js';\n\nexport let flush = function() {};\n\n/**\n * @param {HTMLElement} element\n * @return {!Array<string>}\n */\nfunction getClasses(element) {\n let classes = [];\n if (element.classList) {\n classes = Array.from(element.classList);\n } else if (element instanceof window['SVGElement'] && element.hasAttribute('class')) {\n classes = element.getAttribute('class').split(/\\s+/);\n }\n return classes;\n}\n\n/**\n * @param {HTMLElement} element\n * @return {string}\n */\nfunction getCurrentScope(element) {\n let classes = getClasses(element);\n let idx = classes.indexOf(StyleTransformer.SCOPE_NAME);\n if (idx > -1) {\n return classes[idx + 1];\n }\n return '';\n}\n\n/**\n * @param {Array<MutationRecord|null>|null} mxns\n */\nfunction handler(mxns) {\n for (let x=0; x < mxns.length; x++) {\n let mxn = mxns[x];\n if (mxn.target === document.documentElement ||\n mxn.target === document.head) {\n continue;\n }\n for (let i=0; i < mxn.addedNodes.length; i++) {\n let n = mxn.addedNodes[i];\n if (n.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n n = /** @type {HTMLElement} */(n); // eslint-disable-line no-self-assign\n let root = n.getRootNode();\n let currentScope = getCurrentScope(n);\n // node was scoped, but now is in document\n if (currentScope && root === n.ownerDocument) {\n StyleTransformer.dom(n, currentScope, true);\n } else if (root.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n let newScope;\n let host = /** @type {ShadowRoot} */(root).host;\n // element may no longer be in a shadowroot\n if (!host) {\n continue;\n }\n newScope = getIsExtends(host).is;\n if (currentScope === newScope) {\n // make sure all the subtree elements are scoped correctly\n let unscoped = window['ShadyDOM']['nativeMethods']['querySelectorAll'].call(\n n, `:not(.${StyleTransformer.SCOPE_NAME})`);\n for (let j = 0; j < unscoped.length; j++) {\n StyleTransformer.element(unscoped[j], currentScope);\n }\n continue;\n }\n if (currentScope) {\n StyleTransformer.dom(n, currentScope, true);\n }\n StyleTransformer.dom(n, newScope);\n }\n }\n }\n}\n\nif (!nativeShadow) {\n let observer = new MutationObserver(handler);\n let start = (node) => {\n observer.observe(node, {childList: true, subtree: true});\n }\n let nativeCustomElements = (window['customElements'] &&\n !window['customElements']['polyfillWrapFlushCallback']);\n // need to start immediately with native custom elements\n // TODO(dfreedm): with polyfilled HTMLImports and native custom elements\n // excessive mutations may be observed; this can be optimized via cooperation\n // with the HTMLImports polyfill.\n if (nativeCustomElements) {\n start(document);\n } else {\n let delayedStart = () => {\n start(document.body);\n }\n // use polyfill timing if it's available\n if (window['HTMLImports']) {\n window['HTMLImports']['whenReady'](delayedStart);\n // otherwise push beyond native imports being ready\n // which requires RAF + readystate interactive.\n } else {\n requestAnimationFrame(function() {\n if (document.readyState === 'loading') {\n let listener = function() {\n delayedStart();\n document.removeEventListener('readystatechange', listener);\n }\n document.addEventListener('readystatechange', listener);\n } else {\n delayedStart();\n }\n });\n }\n }\n\n flush = function() {\n handler(observer.takeRecords());\n }\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/**\n * @const {!Object<string, !HTMLTemplateElement>}\n */\nconst templateMap = {};\nexport default templateMap;\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\nimport templateMap from './template-map.js';\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\n\n/*\n * Utilities for handling invalidating apply-shim mixins for a given template.\n *\n * The invalidation strategy involves keeping track of the \"current\" version of a template's mixins, and updating that count when a mixin is invalidated.\n * The template\n */\n\n/** @const {string} */\nconst CURRENT_VERSION = '_applyShimCurrentVersion';\n\n/** @const {string} */\nconst NEXT_VERSION = '_applyShimNextVersion';\n\n/** @const {string} */\nconst VALIDATING_VERSION = '_applyShimValidatingVersion';\n\n/**\n * @const {Promise<void>}\n */\nconst promise = Promise.resolve();\n\n/**\n * @param {string} elementName\n */\nexport function invalidate(elementName){\n let template = templateMap[elementName];\n if (template) {\n invalidateTemplate(template);\n }\n}\n\n/**\n * This function can be called multiple times to mark a template invalid\n * and signal that the style inside must be regenerated.\n *\n * Use `startValidatingTemplate` to begin an asynchronous validation cycle.\n * During that cycle, call `templateIsValidating` to see if the template must\n * be revalidated\n * @param {HTMLTemplateElement} template\n */\nexport function invalidateTemplate(template) {\n // default the current version to 0\n template[CURRENT_VERSION] = template[CURRENT_VERSION] || 0;\n // ensure the \"validating for\" flag exists\n template[VALIDATING_VERSION] = template[VALIDATING_VERSION] || 0;\n // increment the next version\n template[NEXT_VERSION] = (template[NEXT_VERSION] || 0) + 1;\n}\n\n/**\n * @param {string} elementName\n * @return {boolean}\n */\nexport function isValid(elementName) {\n let template = templateMap[elementName];\n if (template) {\n return templateIsValid(template);\n }\n return true;\n}\n\n/**\n * @param {HTMLTemplateElement} template\n * @return {boolean}\n */\nexport function templateIsValid(template) {\n return template[CURRENT_VERSION] === template[NEXT_VERSION];\n}\n\n/**\n * @param {string} elementName\n * @return {boolean}\n */\nexport function isValidating(elementName) {\n let template = templateMap[elementName];\n if (template) {\n return templateIsValidating(template);\n }\n return false;\n}\n\n/**\n * Returns true if the template is currently invalid and `startValidating` has been called since the last invalidation.\n * If false, the template must be validated.\n * @param {HTMLTemplateElement} template\n * @return {boolean}\n */\nexport function templateIsValidating(template) {\n return !templateIsValid(template) && template[VALIDATING_VERSION] === template[NEXT_VERSION];\n}\n\n/**\n * the template is marked as `validating` for one microtask so that all instances\n * found in the tree crawl of `applyStyle` will update themselves,\n * but the template will only be updated once.\n * @param {string} elementName\n*/\nexport function startValidating(elementName) {\n let template = templateMap[elementName];\n startValidatingTemplate(template);\n}\n\n/**\n * Begin an asynchronous invalidation cycle.\n * This should be called after every validation of a template\n *\n * After one microtask, the template will be marked as valid until the next call to `invalidateTemplate`\n * @param {HTMLTemplateElement} template\n */\nexport function startValidatingTemplate(template) {\n // remember that the current \"next version\" is the reason for this validation cycle\n template[VALIDATING_VERSION] = template[NEXT_VERSION];\n // however, there only needs to be one async task to clear the counters\n if (!template._validating) {\n template._validating = true;\n promise.then(function() {\n // sync the current version to let future invalidations cause a refresh cycle\n template[CURRENT_VERSION] = template[NEXT_VERSION];\n template._validating = false;\n });\n }\n}\n\n/**\n * @return {boolean}\n */\nexport function elementsAreInvalid() {\n for (let elementName in templateMap) {\n let template = templateMap[elementName];\n if (!templateIsValid(template)) {\n return true;\n }\n }\n return false;\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/** @type {Promise<void>} */\nlet readyPromise = null;\n\n/** @type {?function(?function())} */\nlet whenReady = window['HTMLImports'] && window['HTMLImports']['whenReady'] || null;\n\n/** @type {function()} */\nlet resolveFn;\n\n/**\n * @param {?function()} callback\n */\nexport default function documentWait(callback) {\n requestAnimationFrame(function() {\n if (whenReady) {\n whenReady(callback)\n } else {\n if (!readyPromise) {\n readyPromise = new Promise((resolve) => {resolveFn = resolve});\n if (document.readyState === 'complete') {\n resolveFn();\n } else {\n document.addEventListener('readystatechange', () => {\n if (document.readyState === 'complete') {\n resolveFn();\n }\n });\n }\n }\n readyPromise.then(function(){ callback && callback(); });\n }\n });\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {parse, StyleNode} from './css-parse.js';\nimport {nativeShadow, nativeCssVariables} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport * as StyleUtil from './style-util.js';\nimport StyleProperties from './style-properties.js';\nimport placeholderMap from './style-placeholder.js';\nimport StyleInfo from './style-info.js';\nimport StyleCache from './style-cache.js';\nimport {flush as watcherFlush} from './document-watcher.js';\nimport templateMap from './template-map.js';\nimport * as ApplyShimUtils from './apply-shim-utils.js';\nimport documentWait from './document-wait.js';\nimport {updateNativeProperties, detectMixin} from './common-utils.js';\nimport {CustomStyleInterfaceInterface} from './custom-style-interface.js'; // eslint-disable-line no-unused-vars\n\n/**\n * @const {StyleCache}\n */\nconst styleCache = new StyleCache();\n\nexport default class ScopingShim {\n constructor() {\n this._scopeCounter = {};\n this._documentOwner = document.documentElement;\n let ast = new StyleNode();\n ast['rules'] = [];\n this._documentOwnerStyleInfo = StyleInfo.set(this._documentOwner, new StyleInfo(ast));\n this._elementsHaveApplied = false;\n this._applyShim = null;\n /** @type {?CustomStyleInterfaceInterface} */\n this._customStyleInterface = null;\n documentWait(() => {\n this._ensure();\n });\n }\n flush() {\n watcherFlush();\n }\n _generateScopeSelector(name) {\n let id = this._scopeCounter[name] = (this._scopeCounter[name] || 0) + 1;\n return `${name}-${id}`;\n }\n getStyleAst(style) {\n return StyleUtil.rulesForStyle(style);\n }\n styleAstToString(ast) {\n return StyleUtil.toCssText(ast);\n }\n _gatherStyles(template) {\n return StyleUtil.gatherStyleText(template.content);\n }\n _getCssBuild(template) {\n let style = template.content.querySelector('style');\n if (!style) {\n return '';\n }\n return style.getAttribute('css-build') || '';\n }\n /**\n * Prepare the styling and template for the given element type\n *\n * @param {HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} typeExtension\n */\n prepareTemplate(template, elementName, typeExtension) {\n if (template._prepared) {\n return;\n }\n template._prepared = true;\n template.name = elementName;\n template.extends = typeExtension;\n templateMap[elementName] = template;\n let cssBuild = this._getCssBuild(template);\n let cssText = this._gatherStyles(template);\n let info = {\n is: elementName,\n extends: typeExtension,\n __cssBuild: cssBuild,\n };\n if (!nativeShadow) {\n StyleTransformer.dom(template.content, elementName);\n }\n // check if the styling has mixin definitions or uses\n this._ensure();\n let hasMixins = detectMixin(cssText)\n let ast = parse(cssText);\n // only run the applyshim transforms if there is a mixin involved\n if (hasMixins && nativeCssVariables && this._applyShim) {\n this._applyShim['transformRules'](ast, elementName);\n }\n template['_styleAst'] = ast;\n template._cssBuild = cssBuild;\n\n let ownPropertyNames = [];\n if (!nativeCssVariables) {\n ownPropertyNames = StyleProperties.decorateStyles(template['_styleAst']);\n }\n if (!ownPropertyNames.length || nativeCssVariables) {\n let root = nativeShadow ? template.content : null;\n let placeholder = placeholderMap[elementName];\n let style = this._generateStaticStyle(info, template['_styleAst'], root, placeholder);\n template._style = style;\n }\n template._ownPropertyNames = ownPropertyNames;\n }\n _generateStaticStyle(info, rules, shadowroot, placeholder) {\n let cssText = StyleTransformer.elementStyles(info, rules);\n if (cssText.length) {\n return StyleUtil.applyCss(cssText, info.is, shadowroot, placeholder);\n }\n }\n _prepareHost(host) {\n let {is, typeExtension} = StyleUtil.getIsExtends(host);\n let placeholder = placeholderMap[is];\n let template = templateMap[is];\n let ast;\n let ownStylePropertyNames;\n let cssBuild;\n if (template) {\n ast = template['_styleAst'];\n ownStylePropertyNames = template._ownPropertyNames;\n cssBuild = template._cssBuild;\n }\n return StyleInfo.set(host,\n new StyleInfo(\n ast,\n placeholder,\n ownStylePropertyNames,\n is,\n typeExtension,\n cssBuild\n )\n );\n }\n _ensureApplyShim() {\n if (this._applyShim) {\n return;\n } else if (window.ShadyCSS && window.ShadyCSS.ApplyShim) {\n this._applyShim = window.ShadyCSS.ApplyShim;\n this._applyShim['invalidCallback'] = ApplyShimUtils.invalidate;\n }\n }\n _ensureCustomStyleInterface() {\n if (this._customStyleInterface) {\n return;\n } else if (window.ShadyCSS && window.ShadyCSS.CustomStyleInterface) {\n this._customStyleInterface = /** @type {!CustomStyleInterfaceInterface} */(window.ShadyCSS.CustomStyleInterface);\n /** @type {function(!HTMLStyleElement)} */\n this._customStyleInterface['transformCallback'] = (style) => {this.transformCustomStyleForDocument(style)};\n this._customStyleInterface['validateCallback'] = () => {\n requestAnimationFrame(() => {\n if (this._customStyleInterface['enqueued'] || this._elementsHaveApplied) {\n this.flushCustomStyles();\n }\n })\n };\n }\n }\n _ensure() {\n this._ensureApplyShim();\n this._ensureCustomStyleInterface();\n }\n /**\n * Flush and apply custom styles to document\n */\n flushCustomStyles() {\n this._ensure();\n if (!this._customStyleInterface) {\n return;\n }\n let customStyles = this._customStyleInterface['processStyles']();\n // early return if custom-styles don't need validation\n if (!this._customStyleInterface['enqueued']) {\n return;\n }\n if (!nativeCssVariables) {\n this._updateProperties(this._documentOwner, this._documentOwnerStyleInfo);\n this._applyCustomStyles(customStyles);\n } else {\n this._revalidateCustomStyleApplyShim(customStyles);\n }\n this._customStyleInterface['enqueued'] = false;\n // if custom elements have upgraded and there are no native css variables, we must recalculate the whole tree\n if (this._elementsHaveApplied && !nativeCssVariables) {\n this.styleDocument();\n }\n }\n /**\n * Apply styles for the given element\n *\n * @param {!HTMLElement} host\n * @param {Object=} overrideProps\n */\n styleElement(host, overrideProps) {\n let {is} = StyleUtil.getIsExtends(host);\n let styleInfo = StyleInfo.get(host);\n if (!styleInfo) {\n styleInfo = this._prepareHost(host);\n }\n // Only trip the `elementsHaveApplied` flag if a node other that the root document has `applyStyle` called\n if (!this._isRootOwner(host)) {\n this._elementsHaveApplied = true;\n }\n if (overrideProps) {\n styleInfo.overrideStyleProperties =\n styleInfo.overrideStyleProperties || {};\n Object.assign(styleInfo.overrideStyleProperties, overrideProps);\n }\n if (!nativeCssVariables) {\n this._updateProperties(host, styleInfo);\n if (styleInfo.ownStylePropertyNames && styleInfo.ownStylePropertyNames.length) {\n this._applyStyleProperties(host, styleInfo);\n }\n } else {\n if (styleInfo.overrideStyleProperties) {\n updateNativeProperties(host, styleInfo.overrideStyleProperties);\n }\n let template = templateMap[is];\n // bail early if there is no shadowroot for this element\n if (!template && !this._isRootOwner(host)) {\n return;\n }\n if (template && template._style && !ApplyShimUtils.templateIsValid(template)) {\n // update template\n if (!ApplyShimUtils.templateIsValidating(template)) {\n this._ensure();\n this._applyShim && this._applyShim['transformRules'](template['_styleAst'], is);\n template._style.textContent = StyleTransformer.elementStyles(host, styleInfo.styleRules);\n ApplyShimUtils.startValidatingTemplate(template);\n }\n // update instance if native shadowdom\n if (nativeShadow) {\n let root = host.shadowRoot;\n if (root) {\n let style = root.querySelector('style');\n style.textContent = StyleTransformer.elementStyles(host, styleInfo.styleRules);\n }\n }\n styleInfo.styleRules = template['_styleAst'];\n }\n }\n }\n _styleOwnerForNode(node) {\n let root = node.getRootNode();\n let host = root.host;\n if (host) {\n if (StyleInfo.get(host)) {\n return host;\n } else {\n return this._styleOwnerForNode(host);\n }\n }\n return this._documentOwner;\n }\n _isRootOwner(node) {\n return (node === this._documentOwner);\n }\n _applyStyleProperties(host, styleInfo) {\n let is = StyleUtil.getIsExtends(host).is;\n let cacheEntry = styleCache.fetch(is, styleInfo.styleProperties, styleInfo.ownStylePropertyNames);\n let cachedScopeSelector = cacheEntry && cacheEntry.scopeSelector;\n let cachedStyle = cacheEntry ? cacheEntry.styleElement : null;\n let oldScopeSelector = styleInfo.scopeSelector;\n // only generate new scope if cached style is not found\n styleInfo.scopeSelector = cachedScopeSelector || this._generateScopeSelector(is);\n let style = StyleProperties.applyElementStyle(host, styleInfo.styleProperties, styleInfo.scopeSelector, cachedStyle);\n if (!nativeShadow) {\n StyleProperties.applyElementScopeSelector(host, styleInfo.scopeSelector, oldScopeSelector);\n }\n if (!cacheEntry) {\n styleCache.store(is, styleInfo.styleProperties, style, styleInfo.scopeSelector);\n }\n return style;\n }\n _updateProperties(host, styleInfo) {\n let owner = this._styleOwnerForNode(host);\n let ownerStyleInfo = StyleInfo.get(owner);\n let ownerProperties = ownerStyleInfo.styleProperties;\n let props = Object.create(ownerProperties || null);\n let hostAndRootProps = StyleProperties.hostAndRootPropertiesForScope(host, styleInfo.styleRules);\n let propertyData = StyleProperties.propertyDataFromStyles(ownerStyleInfo.styleRules, host);\n let propertiesMatchingHost = propertyData.properties\n Object.assign(\n props,\n hostAndRootProps.hostProps,\n propertiesMatchingHost,\n hostAndRootProps.rootProps\n );\n this._mixinOverrideStyles(props, styleInfo.overrideStyleProperties);\n StyleProperties.reify(props);\n styleInfo.styleProperties = props;\n }\n _mixinOverrideStyles(props, overrides) {\n for (let p in overrides) {\n let v = overrides[p];\n // skip override props if they are not truthy or 0\n // in order to fall back to inherited values\n if (v || v === 0) {\n props[p] = v;\n }\n }\n }\n /**\n * Update styles of the whole document\n *\n * @param {Object=} properties\n */\n styleDocument(properties) {\n this.styleSubtree(this._documentOwner, properties);\n }\n /**\n * Update styles of a subtree\n *\n * @param {!HTMLElement} host\n * @param {Object=} properties\n */\n styleSubtree(host, properties) {\n let root = host.shadowRoot;\n if (root || this._isRootOwner(host)) {\n this.styleElement(host, properties);\n }\n // process the shadowdom children of `host`\n let shadowChildren = root && (root.children || root.childNodes);\n if (shadowChildren) {\n for (let i = 0; i < shadowChildren.length; i++) {\n let c = /** @type {!HTMLElement} */(shadowChildren[i]);\n this.styleSubtree(c);\n }\n } else {\n // process the lightdom children of `host`\n let children = host.children || host.childNodes;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n let c = /** @type {!HTMLElement} */(children[i]);\n this.styleSubtree(c);\n }\n }\n }\n }\n /* Custom Style operations */\n _revalidateCustomStyleApplyShim(customStyles) {\n for (let i = 0; i < customStyles.length; i++) {\n let c = customStyles[i];\n let s = this._customStyleInterface['getStyleForCustomStyle'](c);\n if (s) {\n this._revalidateApplyShim(s);\n }\n }\n }\n _applyCustomStyles(customStyles) {\n for (let i = 0; i < customStyles.length; i++) {\n let c = customStyles[i];\n let s = this._customStyleInterface['getStyleForCustomStyle'](c);\n if (s) {\n StyleProperties.applyCustomStyle(s, this._documentOwnerStyleInfo.styleProperties);\n }\n }\n }\n transformCustomStyleForDocument(style) {\n let ast = StyleUtil.rulesForStyle(style);\n StyleUtil.forEachRule(ast, (rule) => {\n if (nativeShadow) {\n StyleTransformer.normalizeRootSelector(rule);\n } else {\n StyleTransformer.documentRule(rule);\n }\n if (nativeCssVariables) {\n this._ensure();\n this._applyShim && this._applyShim['transformRule'](rule);\n }\n });\n if (nativeCssVariables) {\n style.textContent = StyleUtil.toCssText(ast);\n } else {\n this._documentOwnerStyleInfo.styleRules['rules'].push(ast);\n }\n }\n _revalidateApplyShim(style) {\n if (nativeCssVariables && this._applyShim) {\n let ast = StyleUtil.rulesForStyle(style);\n this._ensure();\n this._applyShim['transformRules'](ast);\n style.textContent = StyleUtil.toCssText(ast);\n }\n }\n getComputedStyleValue(element, property) {\n let value;\n if (!nativeCssVariables) {\n // element is either a style host, or an ancestor of a style host\n let styleInfo = StyleInfo.get(element) || StyleInfo.get(this._styleOwnerForNode(element));\n value = styleInfo.styleProperties[property];\n }\n // fall back to the property value from the computed styling\n value = value || window.getComputedStyle(element).getPropertyValue(property);\n // trim whitespace that can come after the `:` in css\n // example: padding: 2px -> \" 2px\"\n return value ? value.trim() : '';\n }\n // given an element and a classString, replaces\n // the element's class with the provided classString and adds\n // any necessary ShadyCSS static and property based scoping selectors\n setElementClass(element, classString) {\n let root = element.getRootNode();\n let classes = classString ? classString.split(/\\s/) : [];\n let scopeName = root.host && root.host.localName;\n // If no scope, try to discover scope name from existing class.\n // This can occur if, for example, a template stamped element that\n // has been scoped is manipulated when not in a root.\n if (!scopeName) {\n var classAttr = element.getAttribute('class');\n if (classAttr) {\n let k$ = classAttr.split(/\\s/);\n for (let i=0; i < k$.length; i++) {\n if (k$[i] === StyleTransformer.SCOPE_NAME) {\n scopeName = k$[i+1];\n break;\n }\n }\n }\n }\n if (scopeName) {\n classes.push(StyleTransformer.SCOPE_NAME, scopeName);\n }\n if (!nativeCssVariables) {\n let styleInfo = StyleInfo.get(element);\n if (styleInfo && styleInfo.scopeSelector) {\n classes.push(StyleProperties.XSCOPE_NAME, styleInfo.scopeSelector);\n }\n }\n StyleUtil.setElementClassRaw(element, classes.join(' '));\n }\n _styleInfoForNode(node) {\n return StyleInfo.get(node);\n }\n}\n\n/* exports */\nScopingShim.prototype['flush'] = ScopingShim.prototype.flush;\nScopingShim.prototype['prepareTemplate'] = ScopingShim.prototype.prepareTemplate;\nScopingShim.prototype['styleElement'] = ScopingShim.prototype.styleElement;\nScopingShim.prototype['styleDocument'] = ScopingShim.prototype.styleDocument;\nScopingShim.prototype['styleSubtree'] = ScopingShim.prototype.styleSubtree;\nScopingShim.prototype['getComputedStyleValue'] = ScopingShim.prototype.getComputedStyleValue;\nScopingShim.prototype['setElementClass'] = ScopingShim.prototype.setElementClass;\nScopingShim.prototype['_styleInfoForNode'] = ScopingShim.prototype._styleInfoForNode;\nScopingShim.prototype['transformCustomStyleForDocument'] = ScopingShim.prototype.transformCustomStyleForDocument;\nScopingShim.prototype['getStyleAst'] = ScopingShim.prototype.getStyleAst;\nScopingShim.prototype['styleAstToString'] = ScopingShim.prototype.styleAstToString;\nScopingShim.prototype['flushCustomStyles'] = ScopingShim.prototype.flushCustomStyles;\nObject.defineProperties(ScopingShim.prototype, {\n 'nativeShadow': {\n get() {\n return nativeShadow;\n }\n },\n 'nativeCss': {\n get() {\n return nativeCssVariables;\n }\n }\n});\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport { MIXIN_MATCH, VAR_ASSIGN } from './common-regex.js';\n\n/**\n * @param {Element} element\n * @param {Object=} properties\n */\nexport function updateNativeProperties(element, properties) {\n // remove previous properties\n for (let p in properties) {\n // NOTE: for bc with shim, don't apply null values.\n if (p === null) {\n element.style.removeProperty(p);\n } else {\n element.style.setProperty(p, properties[p]);\n }\n }\n}\n\n/**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\nexport function getComputedStyleValue(element, property) {\n /**\n * @const {string}\n */\n const value = window.getComputedStyle(element).getPropertyValue(property);\n if (!value) {\n return '';\n } else {\n return value.trim();\n }\n}\n\n/**\n * return true if `cssText` contains a mixin definition or consumption\n * @param {string} cssText\n * @return {boolean}\n */\nexport function detectMixin(cssText) {\n const has = MIXIN_MATCH.test(cssText) || VAR_ASSIGN.test(cssText);\n // reset state of the regexes\n MIXIN_MATCH.lastIndex = 0;\n VAR_ASSIGN.lastIndex = 0;\n return has;\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport ScopingShim from '../src/scoping-shim.js';\nimport {nativeCssVariables, nativeShadow} from '../src/style-settings.js';\n\n/** @const {ScopingShim} */\nconst scopingShim = new ScopingShim();\n\nlet ApplyShim, CustomStyleInterface;\n\nif (window['ShadyCSS']) {\n ApplyShim = window['ShadyCSS']['ApplyShim'];\n CustomStyleInterface = window['ShadyCSS']['CustomStyleInterface'];\n}\n\nwindow.ShadyCSS = {\n ScopingShim: scopingShim,\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} elementExtends\n */\n prepareTemplate(template, elementName, elementExtends) {\n scopingShim.flushCustomStyles();\n scopingShim.prepareTemplate(template, elementName, elementExtends)\n },\n\n /**\n * @param {!HTMLElement} element\n * @param {Object=} properties\n */\n styleSubtree(element, properties) {\n scopingShim.flushCustomStyles();\n scopingShim.styleSubtree(element, properties);\n },\n\n /**\n * @param {!HTMLElement} element\n */\n styleElement(element) {\n scopingShim.flushCustomStyles();\n scopingShim.styleElement(element);\n },\n\n /**\n * @param {Object=} properties\n */\n styleDocument(properties) {\n scopingShim.flushCustomStyles();\n scopingShim.styleDocument(properties);\n },\n\n /**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\n getComputedStyleValue(element, property) {\n return scopingShim.getComputedStyleValue(element, property);\n },\n\n nativeCss: nativeCssVariables,\n\n nativeShadow: nativeShadow\n};\n\nif (ApplyShim) {\n window.ShadyCSS.ApplyShim = ApplyShim;\n}\n\nif (CustomStyleInterface) {\n window.ShadyCSS.CustomStyleInterface = CustomStyleInterface;\n}","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n'use strict';\n\nlet customElements = window['customElements'];\nlet HTMLImports = window['HTMLImports'];\nlet Template = window['HTMLTemplateElement'];\n\n// global for (1) existence means `WebComponentsReady` will file,\n// (2) WebComponents.ready == true means event has fired.\nwindow.WebComponents = window.WebComponents || {};\n\nif (customElements && customElements['polyfillWrapFlushCallback']) {\n // Here we ensure that the public `HTMLImports.whenReady`\n // always comes *after* custom elements have upgraded.\n let flushCallback;\n let runAndClearCallback = function runAndClearCallback() {\n if (flushCallback) {\n // make sure to run the HTMLTemplateElement polyfill before custom elements upgrade\n if (Template.bootstrap) {\n Template.bootstrap(window.document);\n }\n let cb = flushCallback;\n flushCallback = null;\n cb();\n return true;\n }\n }\n let origWhenReady = HTMLImports['whenReady'];\n customElements['polyfillWrapFlushCallback'](function(cb) {\n flushCallback = cb;\n origWhenReady(runAndClearCallback);\n });\n\n HTMLImports['whenReady'] = function(cb) {\n origWhenReady(function() {\n // custom element code may add dynamic imports\n // to match processing of native custom elements before\n // domContentLoaded, we wait for these imports to resolve first.\n if (runAndClearCallback()) {\n HTMLImports['whenReady'](cb);\n } else {\n cb();\n }\n });\n }\n\n}\n\nHTMLImports['whenReady'](function() {\n requestAnimationFrame(function() {\n window.WebComponents.ready = true;\n document.dispatchEvent(new CustomEvent('WebComponentsReady', {bubbles: true}));\n });\n});","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n'use strict';\n// It's desireable to provide a default stylesheet\n// that's convenient for styling unresolved elements, but\n// it's cumbersome to have to include this manually in every page.\n// It would make sense to put inside some HTMLImport but\n// the HTMLImports polyfill does not allow loading of stylesheets\n// that block rendering. Therefore this injection is tolerated here.\n//\n// NOTE: position: relative fixes IE's failure to inherit opacity\n// when a child is not statically positioned.\nlet style = document.createElement('style');\nstyle.textContent = ''\n + 'body {'\n + 'transition: opacity ease-in 0.2s;'\n + ' } \\n'\n + 'body[unresolved] {'\n + 'opacity: 0; display: block; overflow: hidden; position: relative;'\n + ' } \\n'\n ;\nlet head = document.querySelector('head');\nhead.insertBefore(style, head.firstChild);"]} \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi.js
new file mode 100644
index 00000000000..2e9bfc15b7e
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi.js
@@ -0,0 +1,55 @@
+/**
+@license @nocompile
+Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+(function(){/*
+
+ Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ Code distributed by Google as part of the polymer project is also
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+'use strict';(function(h){function B(a,b){if("function"===typeof window.CustomEvent)return new CustomEvent(a,b);var c=document.createEvent("CustomEvent");c.initCustomEvent(a,!!b.bubbles,!!b.cancelable,b.detail);return c}function n(a){if(w)return a.ownerDocument!==document?a.ownerDocument:null;var b=a.__importDoc;if(!b&&a.parentNode){b=a.parentNode;if("function"===typeof b.closest)b=b.closest("link[rel=import]");else for(;!r(b)&&(b=b.parentNode););a.__importDoc=b}return b}function L(a){var b=l(document,
+"link[rel=import]:not([import-dependency])"),c=b.length;c?g(b,function(b){return t(b,function(){0===--c&&a()})}):a()}function C(a){function b(){"loading"!==document.readyState&&document.body&&(document.removeEventListener("readystatechange",b),a())}document.addEventListener("readystatechange",b);b()}function D(a){C(function(){return L(function(){return a&&a()})})}function t(a,b){if(a.__loaded)b&&b();else if("script"===a.localName&&!a.src||"style"===a.localName&&!a.firstChild)a.__loaded=!0,b&&b();
+else{var c=function(d){a.removeEventListener(d.type,c);a.__loaded=!0;b&&b()};a.addEventListener("load",c);x&&"style"===a.localName||a.addEventListener("error",c)}}function r(a){return a.nodeType===Node.ELEMENT_NODE&&"link"===a.localName&&"import"===a.rel}function k(){var a=this;this.a={};this.b=0;this.g=new MutationObserver(function(b){return a.A(b)});this.g.observe(document.head,{childList:!0,subtree:!0});this.loadImports(document)}function E(a){g(l(a,"template"),function(a){g(l(a.content,'script:not([type]),script[type="application/javascript"],script[type="text/javascript"]'),
+function(a){var b=document.createElement("script");g(a.attributes,function(a){return b.setAttribute(a.name,a.value)});b.textContent=a.textContent;a.parentNode.replaceChild(b,a)});E(a.content)})}function l(a,b){return a&&a.childNodes.length?a.querySelectorAll(b):M}function g(a,b,c){var d=a?a.length:0,f=c?-1:1;for(c=c?d-1:0;c<d&&0<=c;c+=f)b(a[c],c)}var p=document.createElement("link"),w="import"in p,M=p.querySelectorAll("*"),y=null;!1==="currentScript"in document&&Object.defineProperty(document,"currentScript",
+{get:function(){return y||("complete"!==document.readyState?document.scripts[document.scripts.length-1]:null)},configurable:!0});var N=/(url\()([^)]*)(\))/g,O=/(@import[\s]+(?!url\())([^;]*)(;)/g,P=/(<link[^>]*)(rel=['|"]?stylesheet['|"]?[^>]*>)/g,e={v:function(a,b){a.href&&a.setAttribute("href",e.c(a.getAttribute("href"),b));a.src&&a.setAttribute("src",e.c(a.getAttribute("src"),b));if("style"===a.localName){var c=e.o(a.textContent,b,N);a.textContent=e.o(c,b,O)}},o:function(a,b,c){return a.replace(c,
+function(a,c,m,g){a=m.replace(/["']/g,"");b&&(a=e.c(a,b));return c+"'"+a+"'"+g})},c:function(a,b){if(void 0===e.f){e.f=!1;try{var c=new URL("b","http://a");c.pathname="c%20d";e.f="http://a/c%20d"===c.href}catch(d){}}if(e.f)return(new URL(a,b)).href;c=e.s;c||(c=document.implementation.createHTMLDocument("temp"),e.s=c,c.i=c.createElement("base"),c.head.appendChild(c.i),c.h=c.createElement("a"));c.i.href=b;c.h.href=a;return c.h.href||a}},F={async:!0,load:function(a,b,c){if(a)if(a.match(/^data:/)){a=
+a.split(",");var d=a[1];d=-1<a[0].indexOf(";base64")?atob(d):decodeURIComponent(d);b(d)}else{var f=new XMLHttpRequest;f.open("GET",a,F.async);f.onload=function(){var a=f.responseURL||f.getResponseHeader("Location");a&&0===a.indexOf("/")&&(a=(location.origin||location.protocol+"//"+location.host)+a);var d=f.response||f.responseText;304===f.status||0===f.status||200<=f.status&&300>f.status?b(d,a):c(d)};f.send()}else c("error: href must be specified")}},x=/Trident/.test(navigator.userAgent)||/Edge\/\d./i.test(navigator.userAgent);
+k.prototype.loadImports=function(a){var b=this;g(l(a,"link[rel=import]"),function(a){return b.l(a)})};k.prototype.l=function(a){var b=this,c=a.href;if(void 0!==this.a[c]){var d=this.a[c];d&&d.__loaded&&(a.__import=d,this.j(a))}else this.b++,this.a[c]="pending",F.load(c,function(a,d){a=b.B(a,d||c);b.a[c]=a;b.b--;b.loadImports(a);b.m()},function(){b.a[c]=null;b.b--;b.m()})};k.prototype.B=function(a,b){if(!a)return document.createDocumentFragment();x&&(a=a.replace(P,function(a,b,c){return-1===a.indexOf("type=")?
+b+" type=import-disable "+c:a}));var c=document.createElement("template");c.innerHTML=a;if(c.content)a=c.content,E(a);else for(a=document.createDocumentFragment();c.firstChild;)a.appendChild(c.firstChild);if(c=a.querySelector("base"))b=e.c(c.getAttribute("href"),b),c.removeAttribute("href");var d=0;g(l(a,'link[rel=import],link[rel=stylesheet][href][type=import-disable],style:not([type]),link[rel=stylesheet][href]:not([type]),script:not([type]),script[type="application/javascript"],script[type="text/javascript"]'),
+function(a){t(a);e.v(a,b);a.setAttribute("import-dependency","");"script"===a.localName&&!a.src&&a.textContent&&(a.setAttribute("src","data:text/javascript;charset=utf-8,"+encodeURIComponent(a.textContent+("\n//# sourceURL="+b+(d?"-"+d:"")+".js\n"))),a.textContent="",d++)});return a};k.prototype.m=function(){var a=this;if(!this.b){this.g.disconnect();this.flatten(document);var b=!1,c=!1,d=function(){c&&b&&(a.loadImports(document),a.b||(a.g.observe(document.head,{childList:!0,subtree:!0}),a.w()))};
+this.D(function(){c=!0;d()});this.C(function(){b=!0;d()})}};k.prototype.flatten=function(a){var b=this;g(l(a,"link[rel=import]"),function(a){var c=b.a[a.href];(a.__import=c)&&c.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(b.a[a.href]=a,a.readyState="loading",a.__import=a,b.flatten(c),a.appendChild(c))})};k.prototype.C=function(a){function b(f){if(f<d){var m=c[f],e=document.createElement("script");m.removeAttribute("import-dependency");g(m.attributes,function(a){return e.setAttribute(a.name,a.value)});
+y=e;m.parentNode.replaceChild(e,m);t(e,function(){y=null;b(f+1)})}else a()}var c=l(document,"script[import-dependency]"),d=c.length;b(0)};k.prototype.D=function(a){var b=l(document,"style[import-dependency],link[rel=stylesheet][import-dependency]"),c=b.length;if(c){var d=x&&!!document.querySelector("link[rel=stylesheet][href][type=import-disable]");g(b,function(b){t(b,function(){b.removeAttribute("import-dependency");0===--c&&a()});if(d&&b.parentNode!==document.head){var e=document.createElement(b.localName);
+e.__appliedElement=b;e.setAttribute("type","import-placeholder");b.parentNode.insertBefore(e,b.nextSibling);for(e=n(b);e&&n(e);)e=n(e);e.parentNode!==document.head&&(e=null);document.head.insertBefore(b,e);b.removeAttribute("type")}})}else a()};k.prototype.w=function(){var a=this;g(l(document,"link[rel=import]"),function(b){return a.j(b)},!0)};k.prototype.j=function(a){a.__loaded||(a.__loaded=!0,a.import&&(a.import.readyState="complete"),a.dispatchEvent(B(a.import?"load":"error",{bubbles:!1,cancelable:!1,
+detail:void 0})))};k.prototype.A=function(a){var b=this;g(a,function(a){return g(a.addedNodes,function(a){a&&a.nodeType===Node.ELEMENT_NODE&&(r(a)?b.l(a):b.loadImports(a))})})};var z=null;if(w)g(l(document,"link[rel=import]"),function(a){a.import&&"loading"===a.import.readyState||(a.__loaded=!0)}),p=function(a){a=a.target;r(a)&&(a.__loaded=!0)},document.addEventListener("load",p,!0),document.addEventListener("error",p,!0);else{var q=Object.getOwnPropertyDescriptor(Node.prototype,"baseURI");Object.defineProperty((!q||
+q.configurable?Node:Element).prototype,"baseURI",{get:function(){var a=r(this)?this:n(this);return a?a.href:q&&q.get?q.get.call(this):(document.querySelector("base")||window.location).href},configurable:!0,enumerable:!0});Object.defineProperty(HTMLLinkElement.prototype,"import",{get:function(){return this.__import||null},configurable:!0,enumerable:!0});C(function(){z=new k})}D(function(){return document.dispatchEvent(B("HTMLImportsLoaded",{cancelable:!0,bubbles:!0,detail:void 0}))});h.useNative=w;
+h.whenReady=D;h.importForElement=n;h.loadImports=function(a){z&&z.loadImports(a)}})(window.HTMLImports=window.HTMLImports||{});/*
+
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ Code distributed by Google as part of the polymer project is also
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+var u=window.customElements,v=window.HTMLImports,A=window.HTMLTemplateElement;window.WebComponents=window.WebComponents||{};if(u&&u.polyfillWrapFlushCallback){var G,H=function(){if(G){A.u&&A.u(window.document);var h=G;G=null;h();return!0}},I=v.whenReady;u.polyfillWrapFlushCallback(function(h){G=h;I(H)});v.whenReady=function(h){I(function(){H()?v.whenReady(h):h()})}}
+v.whenReady(function(){requestAnimationFrame(function(){window.WebComponents.ready=!0;document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))})});var J=document.createElement("style");J.textContent="body {transition: opacity ease-in 0.2s; } \nbody[unresolved] {opacity: 0; display: block; overflow: hidden; position: relative; } \n";var K=document.querySelector("head");K.insertBefore(J,K.firstChild);/*
+
+Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+}).call(this);
+
+//# sourceMappingURL=webcomponents-hi.js.map
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi.js.map b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi.js.map
new file mode 100644
index 00000000000..542d76c1aca
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-hi.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["node_modules/@webcomponents/html-imports/src/html-imports.js","src/post-polyfill.js","src/unresolved.js"],"names":["scope","newCustomEvent","type","params","window","CustomEvent","event","document","createEvent","initCustomEvent","bubbles","cancelable","detail","importForElement","element","useNative","ownerDocument","doc","parentNode","closest","importSelector","isImportLink","whenImportsReady","callback","imports","QSA","rootImportSelector","pending","length","forEach","imp","whenElementLoaded","whenDocumentReady","stateChanged","readyState","body","removeEventListener","addEventListener","whenReady","localName","src","firstChild","onLoadingDone","isIE","node","nodeType","Node","ELEMENT_NODE","rel","constructor","Importer","documents","inflight","dynamicImportsMO","MutationObserver","m","handleMutations","observe","head","childList","subtree","loadImports","replaceScripts","fragment","template","content","scriptsSelector","script","clone","createElement","attributes","attr","setAttribute","name","value","textContent","replaceChild","selector","childNodes","querySelectorAll","emptyNodeList","list","inverseOrder","increment","i","link","currentScript","Object","defineProperty","get","scripts","configurable","CSS_URL_REGEXP","CSS_IMPORT_REGEXP","STYLESHEET_REGEXP","Path","fixUrls","base","href","resolveUrl","getAttribute","r","replaceUrls","text","linkUrl","regexp","replace","pre","url","post","urlPath","undefined","__workingURL","u","URL","pathname","e","__tempDoc","implementation","createHTMLDocument","__base","appendChild","__anchor","Xhr","async","load","success","fail","match","pieces","split","resource","header","indexOf","atob","decodeURIComponent","request","XMLHttpRequest","open","onload","request.onload","redirectedUrl","responseURL","getResponseHeader","location","origin","protocol","host","response","responseText","status","send","test","navigator","userAgent","links","loadImport","fireEventIfNeeded","makeDocument","processImportsIfLoadingDone","createDocumentFragment","p1","p2","innerHTML","baseEl","querySelector","removeAttribute","inlineScriptIndex","n$","importDependenciesSelector","n","importDependencyAttr","encodeURIComponent","num","disconnect","flatten","scriptsOk","stylesOk","fireEvents","waitForStyles","runScripts","DOCUMENT_FRAGMENT_NODE","cloneScript","l","s","s$","pendingScriptsSelector","pendingStylesSelector","needsMove","disabledLinkSelector","placeholder","insertBefore","nextSibling","newSibling","import","dispatchEvent","eventType","mutations","addedNodes","elem","importer","imps","target","native_baseURI","getOwnPropertyDescriptor","prototype","klass","Element","ownerDoc","call","enumerable","HTMLLinkElement","HTMLImports","customElements","Template","WebComponents","flushCallback","runAndClearCallback","bootstrap","cb","origWhenReady","requestAnimationFrame","ready","style"],"mappings":"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","file":"webcomponents-hi.js","sourcesContent":["/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n(scope => {\n\n /********************* base setup *********************/\n const link = document.createElement('link');\n const useNative = Boolean('import' in link);\n const emptyNodeList = link.querySelectorAll('*');\n\n // Polyfill `currentScript` for browsers without it.\n let currentScript = null;\n if ('currentScript' in document === false) {\n Object.defineProperty(document, 'currentScript', {\n get() {\n return currentScript ||\n // NOTE: only works when called in synchronously executing code.\n // readyState should check if `loading` but IE10 is\n // interactive when scripts run so we cheat. This is not needed by\n // html-imports polyfill but helps generally polyfill `currentScript`.\n (document.readyState !== 'complete' ?\n document.scripts[document.scripts.length - 1] : null);\n },\n configurable: true\n });\n }\n\n /**\n * @param {Array|NodeList|NamedNodeMap} list\n * @param {!Function} callback\n * @param {boolean=} inverseOrder\n */\n const forEach = (list, callback, inverseOrder) => {\n const length = list ? list.length : 0;\n const increment = inverseOrder ? -1 : 1;\n let i = inverseOrder ? length - 1 : 0;\n for (; i < length && i >= 0; i = i + increment) {\n callback(list[i], i);\n }\n };\n\n /**\n * @param {!Node} node\n * @param {!string} selector\n * @return {!NodeList<!Element>}\n */\n const QSA = (node, selector) => {\n // IE 11 throws a SyntaxError if a node with no children is queried with\n // a selector containing the `:not([type])` syntax.\n if (!node.childNodes.length) {\n return emptyNodeList;\n }\n return node.querySelectorAll(selector);\n };\n\n /**\n * @param {!DocumentFragment} fragment\n */\n const replaceScripts = (fragment) => {\n forEach(QSA(fragment, 'template'), template => {\n forEach(QSA(template.content, scriptsSelector), script => {\n const clone = /** @type {!HTMLScriptElement} */\n (document.createElement('script'));\n forEach(script.attributes, attr => clone.setAttribute(attr.name, attr.value));\n clone.textContent = script.textContent;\n script.parentNode.replaceChild(clone, script);\n });\n replaceScripts(template.content);\n });\n };\n\n /********************* path fixup *********************/\n const CSS_URL_REGEXP = /(url\\()([^)]*)(\\))/g;\n const CSS_IMPORT_REGEXP = /(@import[\\s]+(?!url\\())([^;]*)(;)/g;\n const STYLESHEET_REGEXP = /(<link[^>]*)(rel=['|\"]?stylesheet['|\"]?[^>]*>)/g;\n\n // path fixup: style elements in imports must be made relative to the main\n // document. We fixup url's in url() and @import.\n const Path = {\n\n fixUrls(element, base) {\n if (element.href) {\n element.setAttribute('href',\n Path.resolveUrl(element.getAttribute('href'), base));\n }\n if (element.src) {\n element.setAttribute('src',\n Path.resolveUrl(element.getAttribute('src'), base));\n }\n if (element.localName === 'style') {\n const r = Path.replaceUrls(element.textContent, base, CSS_URL_REGEXP);\n element.textContent = Path.replaceUrls(r, base, CSS_IMPORT_REGEXP);\n }\n },\n\n replaceUrls(text, linkUrl, regexp) {\n return text.replace(regexp, (m, pre, url, post) => {\n let urlPath = url.replace(/[\"']/g, '');\n if (linkUrl) {\n urlPath = Path.resolveUrl(urlPath, linkUrl);\n }\n return pre + '\\'' + urlPath + '\\'' + post;\n });\n },\n\n resolveUrl(url, base) {\n // Lazy feature detection.\n if (Path.__workingURL === undefined) {\n Path.__workingURL = false;\n try {\n const u = new URL('b', 'http://a');\n u.pathname = 'c%20d';\n Path.__workingURL = (u.href === 'http://a/c%20d');\n } catch (e) {}\n }\n\n if (Path.__workingURL) {\n return (new URL(url, base)).href;\n }\n\n // Fallback to creating an anchor into a disconnected document.\n let doc = Path.__tempDoc;\n if (!doc) {\n doc = document.implementation.createHTMLDocument('temp');\n Path.__tempDoc = doc;\n doc.__base = doc.createElement('base');\n doc.head.appendChild(doc.__base);\n doc.__anchor = doc.createElement('a');\n }\n doc.__base.href = base;\n doc.__anchor.href = url;\n return doc.__anchor.href || url;\n }\n };\n\n /********************* Xhr processor *********************/\n const Xhr = {\n\n async: true,\n\n /**\n * @param {!string} url\n * @param {!function(!string, string=)} success\n * @param {!function(!string)} fail\n */\n load(url, success, fail) {\n if (!url) {\n fail('error: href must be specified');\n } else if (url.match(/^data:/)) {\n // Handle Data URI Scheme\n const pieces = url.split(',');\n const header = pieces[0];\n let resource = pieces[1];\n if (header.indexOf(';base64') > -1) {\n resource = atob(resource);\n } else {\n resource = decodeURIComponent(resource);\n }\n success(resource);\n } else {\n const request = new XMLHttpRequest();\n request.open('GET', url, Xhr.async);\n request.onload = () => {\n // Servers redirecting an import can add a Location header to help us\n // polyfill correctly. Handle relative and full paths.\n // Prefer responseURL which already resolves redirects\n // https://xhr.spec.whatwg.org/#the-responseurl-attribute\n let redirectedUrl = request.responseURL || request.getResponseHeader('Location');\n if (redirectedUrl && redirectedUrl.indexOf('/') === 0) {\n // In IE location.origin might not work\n // https://connect.microsoft.com/IE/feedback/details/1763802/location-origin-is-undefined-in-ie-11-on-windows-10-but-works-on-windows-7\n const origin = (location.origin || location.protocol + '//' + location.host);\n redirectedUrl = origin + redirectedUrl;\n }\n const resource = /** @type {string} */ (request.response || request.responseText);\n if (request.status === 304 || request.status === 0 ||\n request.status >= 200 && request.status < 300) {\n success(resource, redirectedUrl);\n } else {\n fail(resource);\n }\n };\n request.send();\n }\n }\n };\n\n /********************* importer *********************/\n\n const isIE = /Trident/.test(navigator.userAgent) ||\n /Edge\\/\\d./i.test(navigator.userAgent);\n\n const importSelector = 'link[rel=import]';\n\n // Used to disable loading of resources.\n const importDisableType = 'import-disable';\n\n const disabledLinkSelector = `link[rel=stylesheet][href][type=${importDisableType}]`;\n\n const scriptsSelector = `script:not([type]),script[type=\"application/javascript\"],` +\n `script[type=\"text/javascript\"]`;\n\n const importDependenciesSelector = `${importSelector},${disabledLinkSelector},` +\n `style:not([type]),link[rel=stylesheet][href]:not([type]),` + scriptsSelector;\n\n const importDependencyAttr = 'import-dependency';\n\n const rootImportSelector = `${importSelector}:not([${importDependencyAttr}])`;\n\n const pendingScriptsSelector = `script[${importDependencyAttr}]`;\n\n const pendingStylesSelector = `style[${importDependencyAttr}],` +\n `link[rel=stylesheet][${importDependencyAttr}]`;\n\n /**\n * Importer will:\n * - load any linked import documents (with deduping)\n * - whenever an import is loaded, prompt the parser to try to parse\n * - observe imported documents for new elements (these are handled via the\n * dynamic importer)\n */\n class Importer {\n constructor() {\n this.documents = {};\n // Used to keep track of pending loads, so that flattening and firing of\n // events can be done when all resources are ready.\n this.inflight = 0;\n this.dynamicImportsMO = new MutationObserver(m => this.handleMutations(m));\n // Observe changes on <head>.\n this.dynamicImportsMO.observe(document.head, {\n childList: true,\n subtree: true\n });\n // 1. Load imports contents\n // 2. Assign them to first import links on the document\n // 3. Wait for import styles & scripts to be done loading/running\n // 4. Fire load/error events\n this.loadImports(document);\n }\n\n /**\n * @param {!(HTMLDocument|DocumentFragment|Element)} doc\n */\n loadImports(doc) {\n const links = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(doc, importSelector));\n forEach(links, link => this.loadImport(link));\n }\n\n /**\n * @param {!HTMLLinkElement} link\n */\n loadImport(link) {\n const url = link.href;\n // This resource is already being handled by another import.\n if (this.documents[url] !== undefined) {\n // If import is already loaded, we can safely associate it to the link\n // and fire the load/error event.\n const imp = this.documents[url];\n if (imp && imp['__loaded']) {\n link['__import'] = imp;\n this.fireEventIfNeeded(link);\n }\n return;\n }\n this.inflight++;\n // Mark it as pending to notify others this url is being loaded.\n this.documents[url] = 'pending';\n Xhr.load(url, (resource, redirectedUrl) => {\n const doc = this.makeDocument(resource, redirectedUrl || url);\n this.documents[url] = doc;\n this.inflight--;\n // Load subtree.\n this.loadImports(doc);\n this.processImportsIfLoadingDone();\n }, () => {\n // If load fails, handle error.\n this.documents[url] = null;\n this.inflight--;\n this.processImportsIfLoadingDone();\n });\n }\n\n /**\n * Creates a new document containing resource and normalizes urls accordingly.\n * @param {string=} resource\n * @param {string=} url\n * @return {!DocumentFragment}\n */\n makeDocument(resource, url) {\n if (!resource) {\n return document.createDocumentFragment();\n }\n\n if (isIE) {\n // <link rel=stylesheet> should be appended to <head>. Not doing so\n // in IE/Edge breaks the cascading order. We disable the loading by\n // setting the type before setting innerHTML to avoid loading\n // resources twice.\n resource = resource.replace(STYLESHEET_REGEXP, (match, p1, p2) => {\n if (match.indexOf('type=') === -1) {\n return `${p1} type=${importDisableType} ${p2}`;\n }\n return match;\n });\n }\n\n let content;\n const template = /** @type {!HTMLTemplateElement} */\n (document.createElement('template'));\n template.innerHTML = resource;\n if (template.content) {\n content = template.content;\n // Clone scripts inside templates since they won't execute when the\n // hosting template is cloned.\n replaceScripts(content);\n } else {\n // <template> not supported, create fragment and move content into it.\n content = document.createDocumentFragment();\n while (template.firstChild) {\n content.appendChild(template.firstChild);\n }\n }\n\n // Support <base> in imported docs. Resolve url and remove its href.\n const baseEl = content.querySelector('base');\n if (baseEl) {\n url = Path.resolveUrl(baseEl.getAttribute('href'), url);\n baseEl.removeAttribute('href');\n }\n\n const n$ = /** @type {!NodeList<!(HTMLLinkElement|HTMLScriptElement|HTMLStyleElement)>} */\n (QSA(content, importDependenciesSelector));\n // For source map hints.\n let inlineScriptIndex = 0;\n forEach(n$, n => {\n // Listen for load/error events, then fix urls.\n whenElementLoaded(n);\n Path.fixUrls(n, url);\n // Mark for easier selectors.\n n.setAttribute(importDependencyAttr, '');\n // Generate source map hints for inline scripts.\n if (n.localName === 'script' && !n.src && n.textContent) {\n const num = inlineScriptIndex ? `-${inlineScriptIndex}` : '';\n const content = n.textContent + `\\n//# sourceURL=${url}${num}.js\\n`;\n // We use the src attribute so it triggers load/error events, and it's\n // easier to capture errors (e.g. parsing) like this.\n n.setAttribute('src', 'data:text/javascript;charset=utf-8,' + encodeURIComponent(content));\n n.textContent = '';\n inlineScriptIndex++;\n }\n });\n return content;\n }\n\n /**\n * Waits for loaded imports to finish loading scripts and styles, then fires\n * the load/error events.\n */\n processImportsIfLoadingDone() {\n // Wait until all resources are ready, then load import resources.\n if (this.inflight) return;\n\n // Stop observing, flatten & load resource, then restart observing <head>.\n this.dynamicImportsMO.disconnect();\n this.flatten(document);\n // We wait for styles to load, and at the same time we execute the scripts,\n // then fire the load/error events for imports to have faster whenReady\n // callback execution.\n // NOTE: This is different for native behavior where scripts would be\n // executed after the styles before them are loaded.\n // To achieve that, we could select pending styles and scripts in the\n // document and execute them sequentially in their dom order.\n let scriptsOk = false,\n stylesOk = false;\n const onLoadingDone = () => {\n if (stylesOk && scriptsOk) {\n // Catch any imports that might have been added while we\n // weren't looking, wait for them as well.\n this.loadImports(document);\n if (this.inflight) return;\n\n // Restart observing.\n this.dynamicImportsMO.observe(document.head, {\n childList: true,\n subtree: true\n });\n this.fireEvents();\n }\n }\n this.waitForStyles(() => {\n stylesOk = true;\n onLoadingDone();\n });\n this.runScripts(() => {\n scriptsOk = true;\n onLoadingDone();\n });\n }\n\n /**\n * @param {!HTMLDocument} doc\n */\n flatten(doc) {\n const n$ = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(doc, importSelector));\n forEach(n$, n => {\n const imp = this.documents[n.href];\n n['__import'] = /** @type {!Document} */ (imp);\n if (imp && imp.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n // We set the .import to be the link itself, and update its readyState.\n // Other links with the same href will point to this link.\n this.documents[n.href] = n;\n n.readyState = 'loading';\n n['__import'] = n;\n this.flatten(imp);\n n.appendChild(imp);\n }\n });\n }\n\n /**\n * Replaces all the imported scripts with a clone in order to execute them.\n * Updates the `currentScript`.\n * @param {!function()} callback\n */\n runScripts(callback) {\n const s$ = QSA(document, pendingScriptsSelector);\n const l = s$.length;\n const cloneScript = i => {\n if (i < l) {\n // The pending scripts have been generated through innerHTML and\n // browsers won't execute them for security reasons. We cannot use\n // s.cloneNode(true) either, the only way to run the script is manually\n // creating a new element and copying its attributes.\n const s = s$[i];\n const clone = /** @type {!HTMLScriptElement} */\n (document.createElement('script'));\n // Remove import-dependency attribute to avoid double cloning.\n s.removeAttribute(importDependencyAttr);\n forEach(s.attributes, attr => clone.setAttribute(attr.name, attr.value));\n // Update currentScript and replace original with clone script.\n currentScript = clone;\n s.parentNode.replaceChild(clone, s);\n whenElementLoaded(clone, () => {\n currentScript = null;\n cloneScript(i + 1);\n });\n } else {\n callback();\n }\n };\n cloneScript(0);\n }\n\n /**\n * Waits for all the imported stylesheets/styles to be loaded.\n * @param {!function()} callback\n */\n waitForStyles(callback) {\n const s$ = /** @type {!NodeList<!(HTMLLinkElement|HTMLStyleElement)>} */\n (QSA(document, pendingStylesSelector));\n let pending = s$.length;\n if (!pending) {\n callback();\n return;\n }\n // <link rel=stylesheet> should be appended to <head>. Not doing so\n // in IE/Edge breaks the cascading order\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10472273/\n // If there is one <link rel=stylesheet> imported, we must move all imported\n // links and styles to <head>.\n const needsMove = isIE && !!document.querySelector(disabledLinkSelector);\n forEach(s$, s => {\n // Listen for load/error events, remove selector once is done loading.\n whenElementLoaded(s, () => {\n s.removeAttribute(importDependencyAttr);\n if (--pending === 0) {\n callback();\n }\n });\n // Check if was already moved to head, to handle the case where the element\n // has already been moved but it is still loading.\n if (needsMove && s.parentNode !== document.head) {\n // Replace the element we're about to move with a placeholder.\n const placeholder = document.createElement(s.localName);\n // Add reference of the moved element.\n placeholder['__appliedElement'] = s;\n // Disable this from appearing in document.styleSheets.\n placeholder.setAttribute('type', 'import-placeholder');\n // Append placeholder next to the sibling, and move original to <head>.\n s.parentNode.insertBefore(placeholder, s.nextSibling);\n let newSibling = importForElement(s);\n while (newSibling && importForElement(newSibling)) {\n newSibling = importForElement(newSibling);\n }\n if (newSibling.parentNode !== document.head) {\n newSibling = null;\n }\n document.head.insertBefore(s, newSibling);\n // Enable the loading of <link rel=stylesheet>.\n s.removeAttribute('type');\n }\n });\n }\n\n /**\n * Fires load/error events for imports in the right order .\n */\n fireEvents() {\n const n$ = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(document, importSelector));\n // Inverse order to have events firing bottom-up.\n forEach(n$, n => this.fireEventIfNeeded(n), true);\n }\n\n /**\n * Fires load/error event for the import if this wasn't done already.\n * @param {!HTMLLinkElement} link\n */\n fireEventIfNeeded(link) {\n // Don't fire twice same event.\n if (!link['__loaded']) {\n link['__loaded'] = true;\n // Update link's import readyState.\n link.import && (link.import.readyState = 'complete');\n const eventType = link.import ? 'load' : 'error';\n link.dispatchEvent(newCustomEvent(eventType, {\n bubbles: false,\n cancelable: false,\n detail: undefined\n }));\n }\n }\n\n /**\n * @param {Array<MutationRecord>} mutations\n */\n handleMutations(mutations) {\n forEach(mutations, m => forEach(m.addedNodes, elem => {\n if (elem && elem.nodeType === Node.ELEMENT_NODE) {\n // NOTE: added scripts are not updating currentScript in IE.\n if (isImportLink(elem)) {\n this.loadImport( /** @type {!HTMLLinkElement} */ (elem));\n } else {\n this.loadImports( /** @type {!Element} */ (elem));\n }\n }\n }));\n }\n }\n\n /**\n * @param {!Node} node\n * @return {boolean}\n */\n const isImportLink = node => {\n return node.nodeType === Node.ELEMENT_NODE && node.localName === 'link' &&\n ( /** @type {!HTMLLinkElement} */ (node).rel === 'import');\n };\n\n /**\n * Waits for an element to finish loading. If already done loading, it will\n * mark the element accordingly.\n * @param {!(HTMLLinkElement|HTMLScriptElement|HTMLStyleElement)} element\n * @param {function()=} callback\n */\n const whenElementLoaded = (element, callback) => {\n if (element['__loaded']) {\n callback && callback();\n } else if ((element.localName === 'script' && !element.src) ||\n (element.localName === 'style' && !element.firstChild)) {\n // Inline scripts and empty styles don't trigger load/error events,\n // consider them already loaded.\n element['__loaded'] = true;\n callback && callback();\n } else {\n const onLoadingDone = event => {\n element.removeEventListener(event.type, onLoadingDone);\n element['__loaded'] = true;\n callback && callback();\n };\n element.addEventListener('load', onLoadingDone);\n // NOTE: We listen only for load events in IE/Edge, because in IE/Edge\n // <style> with @import will fire error events for each failing @import,\n // and finally will trigger the load event when all @import are\n // finished (even if all fail).\n if (!isIE || element.localName !== 'style') {\n element.addEventListener('error', onLoadingDone);\n }\n }\n }\n\n /**\n * Calls the callback when all imports in the document at call time\n * (or at least document ready) have loaded. Callback is called synchronously\n * if imports are already done loading.\n * @param {function()=} callback\n */\n const whenReady = callback => {\n // 1. ensure the document is in a ready state (has dom), then\n // 2. watch for loading of imports and call callback when done\n whenDocumentReady(() => whenImportsReady(() => callback && callback()));\n }\n\n /**\n * Invokes the callback when document is in ready state. Callback is called\n * synchronously if document is already done loading.\n * @param {!function()} callback\n */\n const whenDocumentReady = callback => {\n const stateChanged = () => {\n // NOTE: Firefox can hit readystate interactive without document.body existing.\n // This is anti-spec, but we handle it here anyways by waiting for next change.\n if (document.readyState !== 'loading' && !!document.body) {\n document.removeEventListener('readystatechange', stateChanged);\n callback();\n }\n }\n document.addEventListener('readystatechange', stateChanged);\n stateChanged();\n }\n\n /**\n * Invokes the callback after all imports are loaded. Callback is called\n * synchronously if imports are already done loading.\n * @param {!function()} callback\n */\n const whenImportsReady = callback => {\n let imports = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(document, rootImportSelector));\n let pending = imports.length;\n if (!pending) {\n callback();\n return;\n }\n forEach(imports, imp => whenElementLoaded(imp, () => {\n if (--pending === 0) {\n callback();\n }\n }));\n }\n\n /**\n * Returns the import document containing the element.\n * @param {!Node} element\n * @return {HTMLLinkElement|Document|undefined}\n */\n const importForElement = element => {\n if (useNative) {\n // Return only if not in the main doc!\n return element.ownerDocument !== document ? element.ownerDocument : null;\n }\n let doc = element['__importDoc'];\n if (!doc && element.parentNode) {\n doc = /** @type {!Element} */ (element.parentNode);\n if (typeof doc.closest === 'function') {\n // Element.closest returns the element itself if it matches the selector,\n // so we search the closest import starting from the parent.\n doc = doc.closest(importSelector);\n } else {\n // Walk up the parent tree until we find an import.\n while (!isImportLink(doc) && (doc = doc.parentNode)) {}\n }\n element['__importDoc'] = doc;\n }\n return doc;\n }\n\n let importer = null;\n /**\n * Ensures imports contained in the element are imported.\n * Use this to handle dynamic imports attached to body.\n * @param {!(HTMLDocument|Element)} doc\n */\n const loadImports = (doc) => {\n if (importer) {\n importer.loadImports(doc);\n }\n };\n\n const newCustomEvent = (type, params) => {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(type, params);\n }\n const event = /** @type {!CustomEvent} */ (document.createEvent('CustomEvent'));\n event.initCustomEvent(type, Boolean(params.bubbles), Boolean(params.cancelable), params.detail);\n return event;\n };\n\n if (useNative) {\n // Check for imports that might already be done loading by the time this\n // script is actually executed. Native imports are blocking, so the ones\n // available in the document by this time should already have failed\n // or have .import defined.\n const imps = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(document, importSelector));\n forEach(imps, imp => {\n if (!imp.import || imp.import.readyState !== 'loading') {\n imp['__loaded'] = true;\n }\n });\n // Listen for load/error events to capture dynamically added scripts.\n /**\n * @type {!function(!Event)}\n */\n const onLoadingDone = event => {\n const elem = /** @type {!Element} */ (event.target);\n if (isImportLink(elem)) {\n elem['__loaded'] = true;\n }\n };\n document.addEventListener('load', onLoadingDone, true /* useCapture */ );\n document.addEventListener('error', onLoadingDone, true /* useCapture */ );\n } else {\n // Override baseURI so that imported elements' baseURI can be used seemlessly\n // on native or polyfilled html-imports.\n // NOTE: a <link rel=import> will have `link.baseURI === link.href`, as the link\n // itself is used as the `import` document.\n /** @type {Object|undefined} */\n const native_baseURI = Object.getOwnPropertyDescriptor(Node.prototype, 'baseURI');\n // NOTE: if not configurable (e.g. safari9), set it on the Element prototype. \n const klass = !native_baseURI || native_baseURI.configurable ? Node : Element;\n Object.defineProperty(klass.prototype, 'baseURI', {\n get() {\n const ownerDoc = /** @type {HTMLLinkElement} */ (isImportLink(this) ? this : importForElement(this));\n if (ownerDoc) return ownerDoc.href;\n // Use native baseURI if possible.\n if (native_baseURI && native_baseURI.get) return native_baseURI.get.call(this);\n // Polyfill it if not available.\n const base = /** @type {HTMLBaseElement} */ (document.querySelector('base'));\n return (base || window.location).href;\n },\n configurable: true,\n enumerable: true\n });\n\n // Define 'import' read-only property.\n Object.defineProperty(HTMLLinkElement.prototype, 'import', {\n get() {\n return /** @type {HTMLLinkElement} */ (this)['__import'] || null;\n },\n configurable: true,\n enumerable: true\n });\n\n whenDocumentReady(() => {\n importer = new Importer()\n });\n }\n\n /**\n Add support for the `HTMLImportsLoaded` event and the `HTMLImports.whenReady`\n method. This api is necessary because unlike the native implementation,\n script elements do not force imports to resolve. Instead, users should wrap\n code in either an `HTMLImportsLoaded` handler or after load time in an\n `HTMLImports.whenReady(callback)` call.\n\n NOTE: This module also supports these apis under the native implementation.\n Therefore, if this file is loaded, the same code can be used under both\n the polyfill and native implementation.\n */\n whenReady(() => document.dispatchEvent(newCustomEvent('HTMLImportsLoaded', {\n cancelable: true,\n bubbles: true,\n detail: undefined\n })));\n\n // exports\n scope.useNative = useNative;\n scope.whenReady = whenReady;\n scope.importForElement = importForElement;\n scope.loadImports = loadImports;\n\n})(window.HTMLImports = (window.HTMLImports || {}));","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n'use strict';\n\nlet customElements = window['customElements'];\nlet HTMLImports = window['HTMLImports'];\nlet Template = window['HTMLTemplateElement'];\n\n// global for (1) existence means `WebComponentsReady` will file,\n// (2) WebComponents.ready == true means event has fired.\nwindow.WebComponents = window.WebComponents || {};\n\nif (customElements && customElements['polyfillWrapFlushCallback']) {\n // Here we ensure that the public `HTMLImports.whenReady`\n // always comes *after* custom elements have upgraded.\n let flushCallback;\n let runAndClearCallback = function runAndClearCallback() {\n if (flushCallback) {\n // make sure to run the HTMLTemplateElement polyfill before custom elements upgrade\n if (Template.bootstrap) {\n Template.bootstrap(window.document);\n }\n let cb = flushCallback;\n flushCallback = null;\n cb();\n return true;\n }\n }\n let origWhenReady = HTMLImports['whenReady'];\n customElements['polyfillWrapFlushCallback'](function(cb) {\n flushCallback = cb;\n origWhenReady(runAndClearCallback);\n });\n\n HTMLImports['whenReady'] = function(cb) {\n origWhenReady(function() {\n // custom element code may add dynamic imports\n // to match processing of native custom elements before\n // domContentLoaded, we wait for these imports to resolve first.\n if (runAndClearCallback()) {\n HTMLImports['whenReady'](cb);\n } else {\n cb();\n }\n });\n }\n\n}\n\nHTMLImports['whenReady'](function() {\n requestAnimationFrame(function() {\n window.WebComponents.ready = true;\n document.dispatchEvent(new CustomEvent('WebComponentsReady', {bubbles: true}));\n });\n});","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n'use strict';\n// It's desireable to provide a default stylesheet\n// that's convenient for styling unresolved elements, but\n// it's cumbersome to have to include this manually in every page.\n// It would make sense to put inside some HTMLImport but\n// the HTMLImports polyfill does not allow loading of stylesheets\n// that block rendering. Therefore this injection is tolerated here.\n//\n// NOTE: position: relative fixes IE's failure to inherit opacity\n// when a child is not statically positioned.\nlet style = document.createElement('style');\nstyle.textContent = ''\n + 'body {'\n + 'transition: opacity ease-in 0.2s;'\n + ' } \\n'\n + 'body[unresolved] {'\n + 'opacity: 0; display: block; overflow: hidden; position: relative;'\n + ' } \\n'\n ;\nlet head = document.querySelector('head');\nhead.insertBefore(style, head.firstChild);"]} \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-lite.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-lite.js
new file mode 100644
index 00000000000..bf73f0734dd
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-lite.js
@@ -0,0 +1,221 @@
+/**
+@license @nocompile
+Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+(function(){/*
+
+ Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ Code distributed by Google as part of the polymer project is also
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+'use strict';var p,q="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,da="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};function ea(){ea=function(){};q.Symbol||(q.Symbol=fa)}var fa=function(){var a=0;return function(b){return"jscomp_symbol_"+(b||"")+a++}}();
+function ha(){ea();var a=q.Symbol.iterator;a||(a=q.Symbol.iterator=q.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&da(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ia(this)}});ha=function(){}}function ia(a){var b=0;return la(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function la(a){ha();a={next:a};a[q.Symbol.iterator]=function(){return this};return a}function ma(a){ha();var b=a[Symbol.iterator];return b?b.call(a):ia(a)}
+function na(a){for(var b,c=[];!(b=a.next()).done;)c.push(b.value);return c}
+(function(){if(!function(){var a=document.createEvent("Event");a.initEvent("foo",!0,!0);a.preventDefault();return a.defaultPrevented}()){var a=Event.prototype.preventDefault;Event.prototype.preventDefault=function(){this.cancelable&&(a.call(this),Object.defineProperty(this,"defaultPrevented",{get:function(){return!0},configurable:!0}))}}var b=/Trident/.test(navigator.userAgent);if(!window.CustomEvent||b&&"function"!==typeof window.CustomEvent)window.CustomEvent=function(a,b){b=b||{};var c=document.createEvent("CustomEvent");
+c.initCustomEvent(a,!!b.bubbles,!!b.cancelable,b.detail);return c},window.CustomEvent.prototype=window.Event.prototype;if(!window.Event||b&&"function"!==typeof window.Event){var c=window.Event;window.Event=function(a,b){b=b||{};var c=document.createEvent("Event");c.initEvent(a,!!b.bubbles,!!b.cancelable);return c};if(c)for(var d in c)window.Event[d]=c[d];window.Event.prototype=c.prototype}if(!window.MouseEvent||b&&"function"!==typeof window.MouseEvent){b=window.MouseEvent;window.MouseEvent=function(a,
+b){b=b||{};var c=document.createEvent("MouseEvent");c.initMouseEvent(a,!!b.bubbles,!!b.cancelable,b.view||window,b.detail,b.screenX,b.screenY,b.clientX,b.clientY,b.ctrlKey,b.altKey,b.shiftKey,b.metaKey,b.button,b.relatedTarget);return c};if(b)for(d in b)window.MouseEvent[d]=b[d];window.MouseEvent.prototype=b.prototype}Array.from||(Array.from=function(a){return[].slice.call(a)});Object.assign||(Object.assign=function(a,b){for(var c=[].slice.call(arguments,1),d=0,e;d<c.length;d++)if(e=c[d])for(var f=
+a,m=e,n=Object.getOwnPropertyNames(m),t=0;t<n.length;t++)e=n[t],f[e]=m[e];return a})})(window.WebComponents);(function(){function a(){}function b(a,b){if(!a.childNodes.length)return[];switch(a.nodeType){case Node.DOCUMENT_NODE:return t.call(a,b);case Node.DOCUMENT_FRAGMENT_NODE:return C.call(a,b);default:return n.call(a,b)}}var c="undefined"===typeof HTMLTemplateElement,d=!(document.createDocumentFragment().cloneNode()instanceof DocumentFragment),e=!1;/Trident/.test(navigator.userAgent)&&function(){function a(a,b){if(a instanceof DocumentFragment)for(var d;d=a.firstChild;)c.call(this,d,b);else c.call(this,
+a,b);return a}e=!0;var b=Node.prototype.cloneNode;Node.prototype.cloneNode=function(a){a=b.call(this,a);this instanceof DocumentFragment&&(a.__proto__=DocumentFragment.prototype);return a};DocumentFragment.prototype.querySelectorAll=HTMLElement.prototype.querySelectorAll;DocumentFragment.prototype.querySelector=HTMLElement.prototype.querySelector;Object.defineProperties(DocumentFragment.prototype,{nodeType:{get:function(){return Node.DOCUMENT_FRAGMENT_NODE},configurable:!0},localName:{get:function(){},
+configurable:!0},nodeName:{get:function(){return"#document-fragment"},configurable:!0}});var c=Node.prototype.insertBefore;Node.prototype.insertBefore=a;var d=Node.prototype.appendChild;Node.prototype.appendChild=function(b){b instanceof DocumentFragment?a.call(this,b,null):d.call(this,b);return b};var f=Node.prototype.removeChild,h=Node.prototype.replaceChild;Node.prototype.replaceChild=function(b,c){b instanceof DocumentFragment?(a.call(this,b,c),f.call(this,c)):h.call(this,b,c);return c};Document.prototype.createDocumentFragment=
+function(){var a=this.createElement("df");a.__proto__=DocumentFragment.prototype;return a};var g=Document.prototype.importNode;Document.prototype.importNode=function(a,b){b=g.call(this,a,b||!1);a instanceof DocumentFragment&&(b.__proto__=DocumentFragment.prototype);return b}}();var f=Node.prototype.cloneNode,h=Document.prototype.createElement,g=Document.prototype.importNode,k=Node.prototype.removeChild,l=Node.prototype.appendChild,m=Node.prototype.replaceChild,n=Element.prototype.querySelectorAll,
+t=Document.prototype.querySelectorAll,C=DocumentFragment.prototype.querySelectorAll,aa=function(){if(!c){var a=document.createElement("template"),b=document.createElement("template");b.content.appendChild(document.createElement("div"));a.content.appendChild(b);a=a.cloneNode(!0);return 0===a.content.childNodes.length||0===a.content.firstChild.content.childNodes.length||d}}();if(c){var P=document.implementation.createHTMLDocument("template"),Ka=!0,ba=document.createElement("style");ba.textContent="template{display:none;}";
+var La=document.head;La.insertBefore(ba,La.firstElementChild);a.prototype=Object.create(HTMLElement.prototype);var D=!document.createElement("div").hasOwnProperty("innerHTML");a.H=function(b){if(!b.content&&b.namespaceURI===document.documentElement.namespaceURI){b.content=P.createDocumentFragment();for(var c;c=b.firstChild;)l.call(b.content,c);if(D)b.__proto__=a.prototype;else if(b.cloneNode=function(b){return a.ha(this,b)},Ka)try{va(b),ja(b)}catch(rh){Ka=!1}a.M(b.content)}};var va=function(b){Object.defineProperty(b,
+"innerHTML",{get:function(){return nb(this)},set:function(b){P.body.innerHTML=b;for(a.M(P);this.content.firstChild;)k.call(this.content,this.content.firstChild);for(;P.body.firstChild;)l.call(this.content,P.body.firstChild)},configurable:!0})},ja=function(a){Object.defineProperty(a,"outerHTML",{get:function(){return"<template>"+this.innerHTML+"</template>"},set:function(a){if(this.parentNode){P.body.innerHTML=a;for(a=this.ownerDocument.createDocumentFragment();P.body.firstChild;)l.call(a,P.body.firstChild);
+m.call(this.parentNode,a,this)}else throw Error("Failed to set the 'outerHTML' property on 'Element': This element has no parent node.");},configurable:!0})};va(a.prototype);ja(a.prototype);a.M=function(c){c=b(c,"template");for(var d=0,e=c.length,f;d<e&&(f=c[d]);d++)a.H(f)};document.addEventListener("DOMContentLoaded",function(){a.M(document)});Document.prototype.createElement=function(){var b=h.apply(this,arguments);"template"===b.localName&&a.H(b);return b};var wa=/[&\u00A0"]/g,ca=/[&\u00A0<>]/g,
+ka=function(a){switch(a){case "&":return"&amp;";case "<":return"&lt;";case ">":return"&gt;";case '"':return"&quot;";case "\u00a0":return"&nbsp;"}};ba=function(a){for(var b={},c=0;c<a.length;c++)b[a[c]]=!0;return b};var hf=ba("area base br col command embed hr img input keygen link meta param source track wbr".split(" ")),xa=ba("style script xmp iframe noembed noframes plaintext noscript".split(" ")),nb=function(a,b){"template"===a.localName&&(a=a.content);for(var c="",d=b?b(a):a.childNodes,e=0,f=
+d.length,h;e<f&&(h=d[e]);e++){a:{var g=h;var k=a;var l=b;switch(g.nodeType){case Node.ELEMENT_NODE:for(var m=g.localName,n="<"+m,ya=g.attributes,Ma=0;k=ya[Ma];Ma++)n+=" "+k.name+'="'+k.value.replace(wa,ka)+'"';n+=">";g=hf[m]?n:n+nb(g,l)+"</"+m+">";break a;case Node.TEXT_NODE:g=g.data;g=k&&xa[k.localName]?g:g.replace(ca,ka);break a;case Node.COMMENT_NODE:g="\x3c!--"+g.data+"--\x3e";break a;default:throw window.console.error(g),Error("not implemented");}}c+=g}return c}}if(c||aa){a.ha=function(a,b){var c=
+f.call(a,!1);this.H&&this.H(c);b&&(l.call(c.content,f.call(a.content,!0)),ya(c.content,a.content));return c};var ya=function(c,d){if(d.querySelectorAll&&(d=b(d,"template"),0!==d.length)){c=b(c,"template");for(var e=0,f=c.length,h,g;e<f;e++)g=d[e],h=c[e],a&&a.H&&a.H(g),m.call(h.parentNode,Ma.call(g,!0),h)}},Ma=Node.prototype.cloneNode=function(b){if(!e&&d&&this instanceof DocumentFragment)if(b)var c=jf.call(this.ownerDocument,this,!0);else return this.ownerDocument.createDocumentFragment();else c=
+this.nodeType===Node.ELEMENT_NODE&&"template"===this.localName&&this.namespaceURI==document.documentElement.namespaceURI?a.ha(this,b):f.call(this,b);b&&ya(c,this);return c},jf=Document.prototype.importNode=function(c,d){d=d||!1;if("template"===c.localName)return a.ha(c,d);var e=g.call(this,c,d);if(d){ya(e,c);c=b(e,'script:not([type]),script[type="application/javascript"],script[type="text/javascript"]');for(var f,k=0;k<c.length;k++){f=c[k];d=h.call(document,"script");d.textContent=f.textContent;for(var l=
+f.attributes,ka=0,xa;ka<l.length;ka++)xa=l[ka],d.setAttribute(xa.name,xa.value);m.call(f.parentNode,d,f)}}return e}}c&&(window.HTMLTemplateElement=a)})();var oa=Array.isArray?Array.isArray:function(a){return"[object Array]"===Object.prototype.toString.call(a)};var pa=0,qa,ra="undefined"!==typeof window?window:void 0,sa=ra||{},ta=sa.MutationObserver||sa.WebKitMutationObserver,ua="undefined"!==typeof Uint8ClampedArray&&"undefined"!==typeof importScripts&&"undefined"!==typeof MessageChannel;function za(){return"undefined"!==typeof qa?function(){qa(Aa)}:Ba()}function Ca(){var a=0,b=new ta(Aa),c=document.createTextNode("");b.observe(c,{characterData:!0});return function(){c.data=a=++a%2}}
+function Da(){var a=new MessageChannel;a.port1.onmessage=Aa;return function(){return a.port2.postMessage(0)}}function Ba(){var a=setTimeout;return function(){return a(Aa,1)}}var Ea=Array(1E3);function Aa(){for(var a=0;a<pa;a+=2)(0,Ea[a])(Ea[a+1]),Ea[a]=void 0,Ea[a+1]=void 0;pa=0}var Fa,Ga;
+if("undefined"===typeof self&&"undefined"!==typeof process&&"[object process]"==={}.toString.call(process))Ga=function(){return process.ub(Aa)};else{var Ha;if(ta)Ha=Ca();else{var Ia;if(ua)Ia=Da();else{var Ja;if(void 0===ra&&"function"===typeof require)try{var Na=require("vertx");qa=Na.wb||Na.vb;Ja=za()}catch(a){Ja=Ba()}else Ja=Ba();Ia=Ja}Ha=Ia}Ga=Ha}Fa=Ga;function Oa(a,b){Ea[pa]=a;Ea[pa+1]=b;pa+=2;2===pa&&Fa()};function Pa(a,b){var c=this,d=new this.constructor(Qa);void 0===d[Ra]&&Sa(d);var e=c.h;if(e){var f=arguments[e-1];Oa(function(){return Ta(e,d,f,c.f)})}else Ua(c,d,a,b);return d};function Va(a){if(a&&"object"===typeof a&&a.constructor===this)return a;var b=new this(Qa);Wa(b,a);return b};var Ra=Math.random().toString(36).substring(16);function Qa(){}var Ya=new Xa;function Za(a){try{return a.then}catch(b){return Ya.error=b,Ya}}function $a(a,b,c,d){try{a.call(b,c,d)}catch(e){return e}}function ab(a,b,c){Oa(function(a){var d=!1,f=$a(c,b,function(c){d||(d=!0,b!==c?Wa(a,c):r(a,c))},function(b){d||(d=!0,u(a,b))});!d&&f&&(d=!0,u(a,f))},a)}function bb(a,b){1===b.h?r(a,b.f):2===b.h?u(a,b.f):Ua(b,void 0,function(b){return Wa(a,b)},function(b){return u(a,b)})}
+function cb(a,b,c){b.constructor===a.constructor&&c===Pa&&b.constructor.resolve===Va?bb(a,b):c===Ya?(u(a,Ya.error),Ya.error=null):void 0===c?r(a,b):"function"===typeof c?ab(a,b,c):r(a,b)}function Wa(a,b){if(a===b)u(a,new TypeError("You cannot resolve a promise with itself"));else{var c=typeof b;null===b||"object"!==c&&"function"!==c?r(a,b):cb(a,b,Za(b))}}function db(a){a.ra&&a.ra(a.f);eb(a)}function r(a,b){void 0===a.h&&(a.f=b,a.h=1,0!==a.L.length&&Oa(eb,a))}
+function u(a,b){void 0===a.h&&(a.h=2,a.f=b,Oa(db,a))}function Ua(a,b,c,d){var e=a.L,f=e.length;a.ra=null;e[f]=b;e[f+1]=c;e[f+2]=d;0===f&&a.h&&Oa(eb,a)}function eb(a){var b=a.L,c=a.h;if(0!==b.length){for(var d,e,f=a.f,h=0;h<b.length;h+=3)d=b[h],e=b[h+c],d?Ta(c,d,e,f):e(f);a.L.length=0}}function Xa(){this.error=null}var fb=new Xa;
+function Ta(a,b,c,d){var e="function"===typeof c;if(e){try{var f=c(d)}catch(l){fb.error=l,f=fb}if(f===fb){var h=!0;var g=f.error;f.error=null}else var k=!0;if(b===f){u(b,new TypeError("A promises callback cannot return that same promise."));return}}else f=d,k=!0;void 0===b.h&&(e&&k?Wa(b,f):h?u(b,g):1===a?r(b,f):2===a&&u(b,f))}function gb(a,b){try{b(function(b){Wa(a,b)},function(b){u(a,b)})}catch(c){u(a,c)}}var hb=0;function Sa(a){a[Ra]=hb++;a.h=void 0;a.f=void 0;a.L=[]};function ib(a,b){this.Ia=a;this.D=new a(Qa);this.D[Ra]||Sa(this.D);if(oa(b))if(this.U=this.length=b.length,this.f=Array(this.length),0===this.length)r(this.D,this.f);else{this.length=this.length||0;for(a=0;void 0===this.h&&a<b.length;a++)jb(this,b[a],a);0===this.U&&r(this.D,this.f)}else u(this.D,Error("Array Methods must be provided an Array"))}
+function jb(a,b,c){var d=a.Ia,e=d.resolve;e===Va?(e=Za(b),e===Pa&&void 0!==b.h?kb(a,b.h,c,b.f):"function"!==typeof e?(a.U--,a.f[c]=b):d===v?(d=new d(Qa),cb(d,b,e),lb(a,d,c)):lb(a,new d(function(a){return a(b)}),c)):lb(a,e(b),c)}function kb(a,b,c,d){var e=a.D;void 0===e.h&&(a.U--,2===b?u(e,d):a.f[c]=d);0===a.U&&r(e,a.f)}function lb(a,b,c){Ua(b,void 0,function(b){return kb(a,1,c,b)},function(b){return kb(a,2,c,b)})};function mb(a){return(new ib(this,a)).D};function ob(a){var b=this;return oa(a)?new b(function(c,d){for(var e=a.length,f=0;f<e;f++)b.resolve(a[f]).then(c,d)}):new b(function(a,b){return b(new TypeError("You must pass an array to race."))})};function pb(a){var b=new this(Qa);u(b,a);return b};function v(a){this[Ra]=hb++;this.f=this.h=void 0;this.L=[];if(Qa!==a){if("function"!==typeof a)throw new TypeError("You must pass a resolver function as the first argument to the promise constructor");if(this instanceof v)gb(this,a);else throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");}}v.prototype={constructor:v,then:Pa,a:function(a){return this.then(null,a)}};/*
+
+Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+window.Promise||(window.Promise=v,v.prototype["catch"]=v.prototype.a,v.prototype.then=v.prototype.then,v.all=mb,v.race=ob,v.resolve=Va,v.reject=pb);(function(a){function b(a,b){if("function"===typeof window.CustomEvent)return new CustomEvent(a,b);var c=document.createEvent("CustomEvent");c.initCustomEvent(a,!!b.bubbles,!!b.cancelable,b.detail);return c}function c(a){if(C)return a.ownerDocument!==document?a.ownerDocument:null;var b=a.__importDoc;if(!b&&a.parentNode){b=a.parentNode;if("function"===typeof b.closest)b=b.closest("link[rel=import]");else for(;!g(b)&&(b=b.parentNode););a.__importDoc=b}return b}function d(a){var b=m(document,"link[rel=import]:not([import-dependency])"),
+c=b.length;c?n(b,function(b){return h(b,function(){0===--c&&a()})}):a()}function e(a){function b(){"loading"!==document.readyState&&document.body&&(document.removeEventListener("readystatechange",b),a())}document.addEventListener("readystatechange",b);b()}function f(a){e(function(){return d(function(){return a&&a()})})}function h(a,b){if(a.__loaded)b&&b();else if("script"===a.localName&&!a.src||"style"===a.localName&&!a.firstChild)a.__loaded=!0,b&&b();else{var c=function(d){a.removeEventListener(d.type,
+c);a.__loaded=!0;b&&b()};a.addEventListener("load",c);ja&&"style"===a.localName||a.addEventListener("error",c)}}function g(a){return a.nodeType===Node.ELEMENT_NODE&&"link"===a.localName&&"import"===a.rel}function k(){var a=this;this.a={};this.b=0;this.c=new MutationObserver(function(b){return a.Va(b)});this.c.observe(document.head,{childList:!0,subtree:!0});this.loadImports(document)}function l(a){n(m(a,"template"),function(a){n(m(a.content,'script:not([type]),script[type="application/javascript"],script[type="text/javascript"]'),
+function(a){var b=document.createElement("script");n(a.attributes,function(a){return b.setAttribute(a.name,a.value)});b.textContent=a.textContent;a.parentNode.replaceChild(b,a)});l(a.content)})}function m(a,b){return a.childNodes.length?a.querySelectorAll(b):aa}function n(a,b,c){var d=a?a.length:0,e=c?-1:1;for(c=c?d-1:0;c<d&&0<=c;c+=e)b(a[c],c)}var t=document.createElement("link"),C="import"in t,aa=t.querySelectorAll("*"),P=null;!1==="currentScript"in document&&Object.defineProperty(document,"currentScript",
+{get:function(){return P||("complete"!==document.readyState?document.scripts[document.scripts.length-1]:null)},configurable:!0});var Ka=/(url\()([^)]*)(\))/g,ba=/(@import[\s]+(?!url\())([^;]*)(;)/g,La=/(<link[^>]*)(rel=['|"]?stylesheet['|"]?[^>]*>)/g,D={Pa:function(a,b){a.href&&a.setAttribute("href",D.aa(a.getAttribute("href"),b));a.src&&a.setAttribute("src",D.aa(a.getAttribute("src"),b));if("style"===a.localName){var c=D.ya(a.textContent,b,Ka);a.textContent=D.ya(c,b,ba)}},ya:function(a,b,c){return a.replace(c,
+function(a,c,d,e){a=d.replace(/["']/g,"");b&&(a=D.aa(a,b));return c+"'"+a+"'"+e})},aa:function(a,b){if(void 0===D.ga){D.ga=!1;try{var c=new URL("b","http://a");c.pathname="c%20d";D.ga="http://a/c%20d"===c.href}catch(nb){}}if(D.ga)return(new URL(a,b)).href;c=D.Fa;c||(c=document.implementation.createHTMLDocument("temp"),D.Fa=c,c.pa=c.createElement("base"),c.head.appendChild(c.pa),c.oa=c.createElement("a"));c.pa.href=b;c.oa.href=a;return c.oa.href||a}},va={async:!0,load:function(a,b,c){if(a)if(a.match(/^data:/)){a=
+a.split(",");var d=a[1];d=-1<a[0].indexOf(";base64")?atob(d):decodeURIComponent(d);b(d)}else{var e=new XMLHttpRequest;e.open("GET",a,va.async);e.onload=function(){var a=e.responseURL||e.getResponseHeader("Location");a&&0===a.indexOf("/")&&(a=(location.origin||location.protocol+"//"+location.host)+a);var d=e.response||e.responseText;304===e.status||0===e.status||200<=e.status&&300>e.status?b(d,a):c(d)};e.send()}else c("error: href must be specified")}},ja=/Trident/.test(navigator.userAgent)||/Edge\/\d./i.test(navigator.userAgent);
+k.prototype.loadImports=function(a){var b=this;a=m(a,"link[rel=import]");n(a,function(a){return b.s(a)})};k.prototype.s=function(a){var b=this,c=a.href;if(void 0!==this.a[c]){var d=this.a[c];d&&d.__loaded&&(a.__import=d,this.i(a))}else this.b++,this.a[c]="pending",va.load(c,function(a,d){a=b.Wa(a,d||c);b.a[c]=a;b.b--;b.loadImports(a);b.N()},function(){b.a[c]=null;b.b--;b.N()})};k.prototype.Wa=function(a,b){if(!a)return document.createDocumentFragment();ja&&(a=a.replace(La,function(a,b,c){return-1===
+a.indexOf("type=")?b+" type=import-disable "+c:a}));var c=document.createElement("template");c.innerHTML=a;if(c.content)a=c.content,l(a);else for(a=document.createDocumentFragment();c.firstChild;)a.appendChild(c.firstChild);if(c=a.querySelector("base"))b=D.aa(c.getAttribute("href"),b),c.removeAttribute("href");c=m(a,'link[rel=import],link[rel=stylesheet][href][type=import-disable],style:not([type]),link[rel=stylesheet][href]:not([type]),script:not([type]),script[type="application/javascript"],script[type="text/javascript"]');
+var d=0;n(c,function(a){h(a);D.Pa(a,b);a.setAttribute("import-dependency","");"script"===a.localName&&!a.src&&a.textContent&&(a.setAttribute("src","data:text/javascript;charset=utf-8,"+encodeURIComponent(a.textContent+("\n//# sourceURL="+b+(d?"-"+d:"")+".js\n"))),a.textContent="",d++)});return a};k.prototype.N=function(){var a=this;if(!this.b){this.c.disconnect();this.flatten(document);var b=!1,c=!1,d=function(){c&&b&&(a.loadImports(document),a.b||(a.c.observe(document.head,{childList:!0,subtree:!0}),
+a.Ta()))};this.Ya(function(){c=!0;d()});this.Xa(function(){b=!0;d()})}};k.prototype.flatten=function(a){var b=this;a=m(a,"link[rel=import]");n(a,function(a){var c=b.a[a.href];(a.__import=c)&&c.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&(b.a[a.href]=a,a.readyState="loading",a.__import=a,b.flatten(c),a.appendChild(c))})};k.prototype.Xa=function(a){function b(e){if(e<d){var f=c[e],g=document.createElement("script");f.removeAttribute("import-dependency");n(f.attributes,function(a){return g.setAttribute(a.name,
+a.value)});P=g;f.parentNode.replaceChild(g,f);h(g,function(){P=null;b(e+1)})}else a()}var c=m(document,"script[import-dependency]"),d=c.length;b(0)};k.prototype.Ya=function(a){var b=m(document,"style[import-dependency],link[rel=stylesheet][import-dependency]"),d=b.length;if(d){var e=ja&&!!document.querySelector("link[rel=stylesheet][href][type=import-disable]");n(b,function(b){h(b,function(){b.removeAttribute("import-dependency");0===--d&&a()});if(e&&b.parentNode!==document.head){var f=document.createElement(b.localName);
+f.__appliedElement=b;f.setAttribute("type","import-placeholder");b.parentNode.insertBefore(f,b.nextSibling);for(f=c(b);f&&c(f);)f=c(f);f.parentNode!==document.head&&(f=null);document.head.insertBefore(b,f);b.removeAttribute("type")}})}else a()};k.prototype.Ta=function(){var a=this,b=m(document,"link[rel=import]");n(b,function(b){return a.i(b)},!0)};k.prototype.i=function(a){a.__loaded||(a.__loaded=!0,a.import&&(a.import.readyState="complete"),a.dispatchEvent(b(a.import?"load":"error",{bubbles:!1,
+cancelable:!1,detail:void 0})))};k.prototype.Va=function(a){var b=this;n(a,function(a){return n(a.addedNodes,function(a){a&&a.nodeType===Node.ELEMENT_NODE&&(g(a)?b.s(a):b.loadImports(a))})})};var wa=null;if(C)t=m(document,"link[rel=import]"),n(t,function(a){a.import&&"loading"===a.import.readyState||(a.__loaded=!0)}),t=function(a){a=a.target;g(a)&&(a.__loaded=!0)},document.addEventListener("load",t,!0),document.addEventListener("error",t,!0);else{var ca=Object.getOwnPropertyDescriptor(Node.prototype,
+"baseURI");Object.defineProperty((!ca||ca.configurable?Node:Element).prototype,"baseURI",{get:function(){var a=g(this)?this:c(this);return a?a.href:ca&&ca.get?ca.get.call(this):(document.querySelector("base")||window.location).href},configurable:!0,enumerable:!0});Object.defineProperty(HTMLLinkElement.prototype,"import",{get:function(){return this.__import||null},configurable:!0,enumerable:!0});e(function(){wa=new k})}f(function(){return document.dispatchEvent(b("HTMLImportsLoaded",{cancelable:!0,
+bubbles:!0,detail:void 0}))});a.useNative=C;a.whenReady=f;a.importForElement=c;a.loadImports=function(a){wa&&wa.loadImports(a)}})(window.HTMLImports=window.HTMLImports||{});/*
+
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ Code distributed by Google as part of the polymer project is also
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+window.WebComponents=window.WebComponents||{flags:{}};var qb=document.querySelector('script[src*="webcomponents-lite.js"]'),rb=/wc-(.+)/,w={};if(!w.noOpts){location.search.slice(1).split("&").forEach(function(a){a=a.split("=");var b;a[0]&&(b=a[0].match(rb))&&(w[b[1]]=a[1]||!0)});if(qb)for(var sb=0,tb;tb=qb.attributes[sb];sb++)"src"!==tb.name&&(w[tb.name]=tb.value||!0);if(w.log&&w.log.split){var ub=w.log.split(",");w.log={};ub.forEach(function(a){w.log[a]=!0})}else w.log={}}
+window.WebComponents.flags=w;var vb=w.shadydom;vb&&(window.ShadyDOM=window.ShadyDOM||{},window.ShadyDOM.force=vb);var wb=w.register||w.ce;wb&&window.customElements&&(window.customElements.forcePolyfill=wb);/*
+
+Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+function xb(){this.xa=this.root=null;this.Y=!1;this.C=this.T=this.la=this.assignedSlot=this.assignedNodes=this.J=null;this.childNodes=this.nextSibling=this.previousSibling=this.lastChild=this.firstChild=this.parentNode=this.O=void 0;this.Da=this.qa=!1}xb.prototype.toJSON=function(){return{}};function x(a){a.ea||(a.ea=new xb);return a.ea}function y(a){return a&&a.ea};var z=window.ShadyDOM||{};z.Ra=!(!Element.prototype.attachShadow||!Node.prototype.getRootNode);var yb=Object.getOwnPropertyDescriptor(Node.prototype,"firstChild");z.w=!!(yb&&yb.configurable&&yb.get);z.va=z.force||!z.Ra;var zb=navigator.userAgent.match("Trident"),Ab=navigator.userAgent.match("Edge");void 0===z.Aa&&(z.Aa=z.w&&(zb||Ab));function Bb(a){return(a=y(a))&&void 0!==a.firstChild}function A(a){return"ShadyRoot"===a.Ja}function Cb(a){a=a.getRootNode();if(A(a))return a}
+var Db=Element.prototype,Eb=Db.matches||Db.matchesSelector||Db.mozMatchesSelector||Db.msMatchesSelector||Db.oMatchesSelector||Db.webkitMatchesSelector;function Fb(a,b){if(a&&b)for(var c=Object.getOwnPropertyNames(b),d=0,e;d<c.length&&(e=c[d]);d++){var f=Object.getOwnPropertyDescriptor(b,e);f&&Object.defineProperty(a,e,f)}}function Gb(a,b){for(var c=[],d=1;d<arguments.length;++d)c[d-1]=arguments[d];for(d=0;d<c.length;d++)Fb(a,c[d]);return a}function Hb(a,b){for(var c in b)a[c]=b[c]}
+var Ib=document.createTextNode(""),Jb=0,Kb=[];(new MutationObserver(function(){for(;Kb.length;)try{Kb.shift()()}catch(a){throw Ib.textContent=Jb++,a;}})).observe(Ib,{characterData:!0});function Lb(a){Kb.push(a);Ib.textContent=Jb++}var Mb=!!document.contains;function Nb(a,b){for(;b;){if(b==a)return!0;b=b.parentNode}return!1};var Ob=[],Pb;function Qb(a){Pb||(Pb=!0,Lb(Rb));Ob.push(a)}function Rb(){Pb=!1;for(var a=!!Ob.length;Ob.length;)Ob.shift()();return a}Rb.list=Ob;function Sb(){this.a=!1;this.addedNodes=[];this.removedNodes=[];this.X=new Set}function Tb(a){a.a||(a.a=!0,Lb(function(){Ub(a)}))}function Ub(a){if(a.a){a.a=!1;var b=a.takeRecords();b.length&&a.X.forEach(function(a){a(b)})}}Sb.prototype.takeRecords=function(){if(this.addedNodes.length||this.removedNodes.length){var a=[{addedNodes:this.addedNodes,removedNodes:this.removedNodes}];this.addedNodes=[];this.removedNodes=[];return a}return[]};
+function Vb(a,b){var c=x(a);c.J||(c.J=new Sb);c.J.X.add(b);var d=c.J;return{Ga:b,G:d,Ka:a,takeRecords:function(){return d.takeRecords()}}}function Wb(a){var b=a&&a.G;b&&(b.X.delete(a.Ga),b.X.size||(x(a.Ka).J=null))}
+function Xb(a,b){var c=b.getRootNode();return a.map(function(a){var b=c===a.target.getRootNode();if(b&&a.addedNodes){if(b=Array.from(a.addedNodes).filter(function(a){return c===a.getRootNode()}),b.length)return a=Object.create(a),Object.defineProperty(a,"addedNodes",{value:b,configurable:!0}),a}else if(b)return a}).filter(function(a){return a})};var B={},Yb=Element.prototype.insertBefore,Zb=Element.prototype.replaceChild,$b=Element.prototype.removeChild,ac=Element.prototype.setAttribute,bc=Element.prototype.removeAttribute,cc=Element.prototype.cloneNode,dc=Document.prototype.importNode,ec=Element.prototype.addEventListener,fc=Element.prototype.removeEventListener,gc=Window.prototype.addEventListener,hc=Window.prototype.removeEventListener,ic=Element.prototype.dispatchEvent,jc=Node.prototype.contains||HTMLElement.prototype.contains,kc=Document.prototype.getElementById,
+lc=Element.prototype.querySelector,mc=DocumentFragment.prototype.querySelector,nc=Document.prototype.querySelector,oc=Element.prototype.querySelectorAll,pc=DocumentFragment.prototype.querySelectorAll,qc=Document.prototype.querySelectorAll;B.appendChild=Element.prototype.appendChild;B.insertBefore=Yb;B.replaceChild=Zb;B.removeChild=$b;B.setAttribute=ac;B.removeAttribute=bc;B.cloneNode=cc;B.importNode=dc;B.addEventListener=ec;B.removeEventListener=fc;B.fb=gc;B.gb=hc;B.dispatchEvent=ic;B.contains=jc;
+B.getElementById=kc;B.ob=lc;B.rb=mc;B.mb=nc;B.querySelector=function(a){switch(this.nodeType){case Node.ELEMENT_NODE:return lc.call(this,a);case Node.DOCUMENT_NODE:return nc.call(this,a);default:return mc.call(this,a)}};B.pb=oc;B.sb=pc;B.nb=qc;B.querySelectorAll=function(a){switch(this.nodeType){case Node.ELEMENT_NODE:return oc.call(this,a);case Node.DOCUMENT_NODE:return qc.call(this,a);default:return pc.call(this,a)}};var rc=/[&\u00A0"]/g,sc=/[&\u00A0<>]/g;function tc(a){switch(a){case "&":return"&amp;";case "<":return"&lt;";case ">":return"&gt;";case '"':return"&quot;";case "\u00a0":return"&nbsp;"}}function uc(a){for(var b={},c=0;c<a.length;c++)b[a[c]]=!0;return b}var vc=uc("area base br col command embed hr img input keygen link meta param source track wbr".split(" ")),wc=uc("style script xmp iframe noembed noframes plaintext noscript".split(" "));
+function xc(a,b){"template"===a.localName&&(a=a.content);for(var c="",d=b?b(a):a.childNodes,e=0,f=d.length,h;e<f&&(h=d[e]);e++){a:{var g=h;var k=a;var l=b;switch(g.nodeType){case Node.ELEMENT_NODE:for(var m=g.localName,n="<"+m,t=g.attributes,C=0;k=t[C];C++)n+=" "+k.name+'="'+k.value.replace(rc,tc)+'"';n+=">";g=vc[m]?n:n+xc(g,l)+"</"+m+">";break a;case Node.TEXT_NODE:g=g.data;g=k&&wc[k.localName]?g:g.replace(sc,tc);break a;case Node.COMMENT_NODE:g="\x3c!--"+g.data+"--\x3e";break a;default:throw window.console.error(g),
+Error("not implemented");}}c+=g}return c};var E={},F=document.createTreeWalker(document,NodeFilter.SHOW_ALL,null,!1),G=document.createTreeWalker(document,NodeFilter.SHOW_ELEMENT,null,!1);function yc(a){var b=[];F.currentNode=a;for(a=F.firstChild();a;)b.push(a),a=F.nextSibling();return b}E.parentNode=function(a){F.currentNode=a;return F.parentNode()};E.firstChild=function(a){F.currentNode=a;return F.firstChild()};E.lastChild=function(a){F.currentNode=a;return F.lastChild()};E.previousSibling=function(a){F.currentNode=a;return F.previousSibling()};
+E.nextSibling=function(a){F.currentNode=a;return F.nextSibling()};E.childNodes=yc;E.parentElement=function(a){G.currentNode=a;return G.parentNode()};E.firstElementChild=function(a){G.currentNode=a;return G.firstChild()};E.lastElementChild=function(a){G.currentNode=a;return G.lastChild()};E.previousElementSibling=function(a){G.currentNode=a;return G.previousSibling()};E.nextElementSibling=function(a){G.currentNode=a;return G.nextSibling()};
+E.children=function(a){var b=[];G.currentNode=a;for(a=G.firstChild();a;)b.push(a),a=G.nextSibling();return b};E.innerHTML=function(a){return xc(a,function(a){return yc(a)})};E.textContent=function(a){switch(a.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:a=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1);for(var b="",c;c=a.nextNode();)b+=c.nodeValue;return b;default:return a.nodeValue}};var H={},zc=z.w,Ac=[Node.prototype,Element.prototype,HTMLElement.prototype];function I(a){var b;a:{for(b=0;b<Ac.length;b++){var c=Ac[b];if(c.hasOwnProperty(a)){b=c;break a}}b=void 0}if(!b)throw Error("Could not find descriptor for "+a);return Object.getOwnPropertyDescriptor(b,a)}
+var J=zc?{parentNode:I("parentNode"),firstChild:I("firstChild"),lastChild:I("lastChild"),previousSibling:I("previousSibling"),nextSibling:I("nextSibling"),childNodes:I("childNodes"),parentElement:I("parentElement"),previousElementSibling:I("previousElementSibling"),nextElementSibling:I("nextElementSibling"),innerHTML:I("innerHTML"),textContent:I("textContent"),firstElementChild:I("firstElementChild"),lastElementChild:I("lastElementChild"),children:I("children")}:{},Bc=zc?{firstElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,
+"firstElementChild"),lastElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,"lastElementChild"),children:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,"children")}:{},Cc=zc?{firstElementChild:Object.getOwnPropertyDescriptor(Document.prototype,"firstElementChild"),lastElementChild:Object.getOwnPropertyDescriptor(Document.prototype,"lastElementChild"),children:Object.getOwnPropertyDescriptor(Document.prototype,"children")}:{};H.wa=J;H.qb=Bc;H.lb=Cc;H.parentNode=function(a){return J.parentNode.get.call(a)};
+H.firstChild=function(a){return J.firstChild.get.call(a)};H.lastChild=function(a){return J.lastChild.get.call(a)};H.previousSibling=function(a){return J.previousSibling.get.call(a)};H.nextSibling=function(a){return J.nextSibling.get.call(a)};H.childNodes=function(a){return Array.prototype.slice.call(J.childNodes.get.call(a))};H.parentElement=function(a){return J.parentElement.get.call(a)};H.previousElementSibling=function(a){return J.previousElementSibling.get.call(a)};H.nextElementSibling=function(a){return J.nextElementSibling.get.call(a)};
+H.innerHTML=function(a){return J.innerHTML.get.call(a)};H.textContent=function(a){return J.textContent.get.call(a)};H.children=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:a=Bc.children.get.call(a);break;case Node.DOCUMENT_NODE:a=Cc.children.get.call(a);break;default:a=J.children.get.call(a)}return Array.prototype.slice.call(a)};
+H.firstElementChild=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return Bc.firstElementChild.get.call(a);case Node.DOCUMENT_NODE:return Cc.firstElementChild.get.call(a);default:return J.firstElementChild.get.call(a)}};H.lastElementChild=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return Bc.lastElementChild.get.call(a);case Node.DOCUMENT_NODE:return Cc.lastElementChild.get.call(a);default:return J.lastElementChild.get.call(a)}};var K=z.Aa?H:E;function Dc(a){for(;a.firstChild;)a.removeChild(a.firstChild)}
+var Ec=z.w,Fc=document.implementation.createHTMLDocument("inert"),Gc=Object.getOwnPropertyDescriptor(Node.prototype,"isConnected"),Hc=Gc&&Gc.get,Ic=Object.getOwnPropertyDescriptor(Document.prototype,"activeElement"),Jc={parentElement:{get:function(){var a=y(this);(a=a&&a.parentNode)&&a.nodeType!==Node.ELEMENT_NODE&&(a=null);return void 0!==a?a:K.parentElement(this)},configurable:!0},parentNode:{get:function(){var a=y(this);a=a&&a.parentNode;return void 0!==a?a:K.parentNode(this)},configurable:!0},
+nextSibling:{get:function(){var a=y(this);a=a&&a.nextSibling;return void 0!==a?a:K.nextSibling(this)},configurable:!0},previousSibling:{get:function(){var a=y(this);a=a&&a.previousSibling;return void 0!==a?a:K.previousSibling(this)},configurable:!0},nextElementSibling:{get:function(){var a=y(this);if(a&&void 0!==a.nextSibling){for(a=this.nextSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return K.nextElementSibling(this)},configurable:!0},previousElementSibling:{get:function(){var a=
+y(this);if(a&&void 0!==a.previousSibling){for(a=this.previousSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return K.previousElementSibling(this)},configurable:!0}},Kc={className:{get:function(){return this.getAttribute("class")||""},set:function(a){this.setAttribute("class",a)},configurable:!0}},Lc={childNodes:{get:function(){if(Bb(this)){var a=y(this);if(!a.childNodes){a.childNodes=[];for(var b=this.firstChild;b;b=b.nextSibling)a.childNodes.push(b)}var c=a.childNodes}else c=
+K.childNodes(this);c.item=function(a){return c[a]};return c},configurable:!0},childElementCount:{get:function(){return this.children.length},configurable:!0},firstChild:{get:function(){var a=y(this);a=a&&a.firstChild;return void 0!==a?a:K.firstChild(this)},configurable:!0},lastChild:{get:function(){var a=y(this);a=a&&a.lastChild;return void 0!==a?a:K.lastChild(this)},configurable:!0},textContent:{get:function(){if(Bb(this)){for(var a=[],b=0,c=this.childNodes,d;d=c[b];b++)d.nodeType!==Node.COMMENT_NODE&&
+a.push(d.textContent);return a.join("")}return K.textContent(this)},set:function(a){if("undefined"===typeof a||null===a)a="";switch(this.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:if(!Bb(this)&&Ec){var b=this.firstChild;(b!=this.lastChild||b&&b.nodeType!=Node.TEXT_NODE)&&Dc(this);H.wa.textContent.set.call(this,a)}else Dc(this),(0<a.length||this.nodeType===Node.ELEMENT_NODE)&&this.appendChild(document.createTextNode(a));break;default:this.nodeValue=a}},configurable:!0},firstElementChild:{get:function(){var a=
+y(this);if(a&&void 0!==a.firstChild){for(a=this.firstChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return K.firstElementChild(this)},configurable:!0},lastElementChild:{get:function(){var a=y(this);if(a&&void 0!==a.lastChild){for(a=this.lastChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return K.lastElementChild(this)},configurable:!0},children:{get:function(){var a=Bb(this)?Array.prototype.filter.call(this.childNodes,function(a){return a.nodeType===Node.ELEMENT_NODE}):
+K.children(this);a.item=function(b){return a[b]};return a},configurable:!0},innerHTML:{get:function(){return Bb(this)?xc("template"===this.localName?this.content:this):K.innerHTML(this)},set:function(a){var b="template"===this.localName?this.content:this;Dc(b);var c=this.localName;c&&"template"!==c||(c="div");c=Fc.createElement(c);for(Ec?H.wa.innerHTML.set.call(c,a):c.innerHTML=a;c.firstChild;)b.appendChild(c.firstChild)},configurable:!0}},Mc={shadowRoot:{get:function(){var a=y(this);return a&&a.xa||
+null},configurable:!0}},Nc={activeElement:{get:function(){var a=Ic&&Ic.get?Ic.get.call(document):z.w?void 0:document.activeElement;if(a&&a.nodeType){var b=!!A(this);if(this===document||b&&this.host!==a&&B.contains.call(this.host,a)){for(b=Cb(a);b&&b!==this;)a=b.host,b=Cb(a);a=this===document?b?null:a:b===this?a:null}else a=null}else a=null;return a},set:function(){},configurable:!0}};
+function L(a,b,c){for(var d in b){var e=Object.getOwnPropertyDescriptor(a,d);e&&e.configurable||!e&&c?Object.defineProperty(a,d,b[d]):c&&console.warn("Could not define",d,"on",a)}}function Oc(a){L(a,Jc);L(a,Kc);L(a,Lc);L(a,Nc)}
+function Pc(){var a=Qc.prototype;a.__proto__=DocumentFragment.prototype;L(a,Jc,!0);L(a,Lc,!0);L(a,Nc,!0);Object.defineProperties(a,{nodeType:{value:Node.DOCUMENT_FRAGMENT_NODE,configurable:!0},nodeName:{value:"#document-fragment",configurable:!0},nodeValue:{value:null,configurable:!0}});["localName","namespaceURI","prefix"].forEach(function(b){Object.defineProperty(a,b,{value:void 0,configurable:!0})});["ownerDocument","baseURI","isConnected"].forEach(function(b){Object.defineProperty(a,b,{get:function(){return this.host[b]},
+configurable:!0})})}var Rc=z.w?function(){}:function(a){var b=x(a);b.qa||(b.qa=!0,L(a,Jc,!0),L(a,Kc,!0))},Sc=z.w?function(){}:function(a){x(a).Da||(L(a,Lc,!0),L(a,Mc,!0))};var Tc=K.childNodes;function Uc(a,b,c){Rc(a);c=c||null;var d=x(a),e=x(b),f=c?x(c):null;d.previousSibling=c?f.previousSibling:b.lastChild;if(f=y(d.previousSibling))f.nextSibling=a;if(f=y(d.nextSibling=c))f.previousSibling=a;d.parentNode=b;c?c===e.firstChild&&(e.firstChild=a):(e.lastChild=a,e.firstChild||(e.firstChild=a));e.childNodes=null}
+function Vc(a,b){var c=x(a);if(void 0===c.firstChild)for(b=b||Tc(a),c.firstChild=b[0]||null,c.lastChild=b[b.length-1]||null,Sc(a),c=0;c<b.length;c++){var d=b[c],e=x(d);e.parentNode=a;e.nextSibling=b[c+1]||null;e.previousSibling=b[c-1]||null;Rc(d)}};var Wc=K.parentNode;
+function Xc(a,b,c){if(b===a)throw Error("Failed to execute 'appendChild' on 'Node': The new child element contains the parent.");if(c){var d=y(c);d=d&&d.parentNode;if(void 0!==d&&d!==a||void 0===d&&Wc(c)!==a)throw Error("Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.");}if(c===b)return b;b.parentNode&&Yc(b.parentNode,b);var e,f;if(!b.__noInsertionPoint){if(f=e=Cb(a)){var h;"slot"===b.localName?h=[b]:b.querySelectorAll&&
+(h=b.querySelectorAll("slot"));f=h&&h.length?h:void 0}f&&(h=e,d=f,h.v=h.v||[],h.g=h.g||[],h.j=h.j||{},h.v.push.apply(h.v,[].concat(d instanceof Array?d:na(ma(d)))))}("slot"===a.localName||f)&&(e=e||Cb(a))&&Zc(e);if(Bb(a)){e=c;Sc(a);f=x(a);void 0!==f.firstChild&&(f.childNodes=null);if(b.nodeType===Node.DOCUMENT_FRAGMENT_NODE){f=b.childNodes;for(h=0;h<f.length;h++)Uc(f[h],a,e);e=x(b);f=void 0!==e.firstChild?null:void 0;e.firstChild=e.lastChild=f;e.childNodes=f}else Uc(b,a,e);e=y(a);if($c(a)){Zc(e.root);
+var g=!0}else e.root&&(g=!0)}g||(g=A(a)?a.host:a,c?(c=ad(c),B.insertBefore.call(g,b,c)):B.appendChild.call(g,b));bd(a,b);return b}
+function Yc(a,b){if(b.parentNode!==a)throw Error("The node to be removed is not a child of this node: "+b);var c=Cb(b),d=y(a);if(Bb(a)){var e=x(b),f=x(a);b===f.firstChild&&(f.firstChild=e.nextSibling);b===f.lastChild&&(f.lastChild=e.previousSibling);var h=e.previousSibling,g=e.nextSibling;h&&(x(h).nextSibling=g);g&&(x(g).previousSibling=h);e.parentNode=e.previousSibling=e.nextSibling=void 0;void 0!==f.childNodes&&(f.childNodes=null);if($c(a)){Zc(d.root);var k=!0}}cd(b);if(c){(e=a&&"slot"===a.localName)&&
+(k=!0);if(c.g){dd(c);f=c.j;for(aa in f)for(h=f[aa],g=0;g<h.length;g++){var l=h[g];if(Nb(b,l)){h.splice(g,1);var m=c.g.indexOf(l);0<=m&&c.g.splice(m,1);g--;m=y(l);if(l=m.C)for(var n=0;n<l.length;n++){var t=l[n],C=ed(t);C&&B.removeChild.call(C,t)}m.C=[];m.assignedNodes=[];m=!0}}var aa=m}else aa=void 0;(aa||e)&&Zc(c)}k||(k=A(a)?a.host:a,(!d.root&&"slot"!==b.localName||k===Wc(b))&&B.removeChild.call(k,b));bd(a,null,b);return b}
+function cd(a){var b=y(a);if(b&&void 0!==b.O){b=a.childNodes;for(var c=0,d=b.length,e;c<d&&(e=b[c]);c++)cd(e)}if(a=y(a))a.O=void 0}function ad(a){var b=a;a&&"slot"===a.localName&&(b=(b=(b=y(a))&&b.C)&&b.length?b[0]:ad(a.nextSibling));return b}function $c(a){return(a=(a=y(a))&&a.root)&&fd(a)}
+function gd(a,b){if("slot"===b)a=a.parentNode,$c(a)&&Zc(y(a).root);else if("slot"===a.localName&&"name"===b&&(b=Cb(a))){if(b.g){var c=a.Ea,d=hd(a);if(d!==c){c=b.j[c];var e=c.indexOf(a);0<=e&&c.splice(e,1);c=b.j[d]||(b.j[d]=[]);c.push(a);1<c.length&&(b.j[d]=id(c))}}Zc(b)}}function bd(a,b,c){if(a=(a=y(a))&&a.J)b&&a.addedNodes.push(b),c&&a.removedNodes.push(c),Tb(a)}
+function jd(a){if(a&&a.nodeType){var b=x(a),c=b.O;void 0===c&&(A(a)?(c=a,b.O=c):(c=(c=a.parentNode)?jd(c):a,B.contains.call(document.documentElement,a)&&(b.O=c)));return c}}function kd(a,b,c){var d=[];ld(a.childNodes,b,c,d);return d}function ld(a,b,c,d){for(var e=0,f=a.length,h;e<f&&(h=a[e]);e++){var g;if(g=h.nodeType===Node.ELEMENT_NODE){g=h;var k=b,l=c,m=d,n=k(g);n&&m.push(g);l&&l(n)?g=n:(ld(g.childNodes,k,l,m),g=void 0)}if(g)break}}var md=null;
+function nd(a,b,c){md||(md=window.ShadyCSS&&window.ShadyCSS.ScopingShim);md&&"class"===b?md.setElementClass(a,c):(B.setAttribute.call(a,b,c),gd(a,b))}function od(a,b){if(a.ownerDocument!==document)return B.importNode.call(document,a,b);var c=B.importNode.call(document,a,!1);if(b){a=a.childNodes;b=0;for(var d;b<a.length;b++)d=od(a[b],!0),c.appendChild(d)}return c};var pd="__eventWrappers"+Date.now(),qd={blur:!0,focus:!0,focusin:!0,focusout:!0,click:!0,dblclick:!0,mousedown:!0,mouseenter:!0,mouseleave:!0,mousemove:!0,mouseout:!0,mouseover:!0,mouseup:!0,wheel:!0,beforeinput:!0,input:!0,keydown:!0,keyup:!0,compositionstart:!0,compositionupdate:!0,compositionend:!0,touchstart:!0,touchend:!0,touchmove:!0,touchcancel:!0,pointerover:!0,pointerenter:!0,pointerdown:!0,pointermove:!0,pointerup:!0,pointercancel:!0,pointerout:!0,pointerleave:!0,gotpointercapture:!0,lostpointercapture:!0,
+dragstart:!0,drag:!0,dragenter:!0,dragleave:!0,dragover:!0,drop:!0,dragend:!0,DOMActivate:!0,DOMFocusIn:!0,DOMFocusOut:!0,keypress:!0};function rd(a,b){var c=[],d=a;for(a=a===window?window:a.getRootNode();d;)c.push(d),d=d.assignedSlot?d.assignedSlot:d.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&d.host&&(b||d!==a)?d.host:d.parentNode;c[c.length-1]===document&&c.push(window);return c}
+function sd(a,b){if(!A)return a;a=rd(a,!0);for(var c=0,d,e,f,h;c<b.length;c++)if(d=b[c],f=d===window?window:d.getRootNode(),f!==e&&(h=a.indexOf(f),e=f),!A(f)||-1<h)return d}
+var td={get composed(){!1!==this.isTrusted&&void 0===this.ca&&(this.ca=qd[this.type]);return this.ca||!1},composedPath:function(){this.b||(this.b=rd(this.__target,this.composed));return this.b},get target(){return sd(this.currentTarget,this.composedPath())},get relatedTarget(){if(!this.da)return null;this.c||(this.c=rd(this.da,!0));return sd(this.currentTarget,this.c)},stopPropagation:function(){Event.prototype.stopPropagation.call(this);this.a=!0},stopImmediatePropagation:function(){Event.prototype.stopImmediatePropagation.call(this);
+this.a=this.i=!0}};function ud(a){function b(b,d){b=new a(b,d);b.ca=d&&!!d.composed;return b}Hb(b,a);b.prototype=a.prototype;return b}var vd={focus:!0,blur:!0};function wd(a){return a.__target!==a.target||a.da!==a.relatedTarget}function xd(a,b,c){if(c=b.__handlers&&b.__handlers[a.type]&&b.__handlers[a.type][c])for(var d=0,e;(e=c[d])&&(!wd(a)||a.target!==a.relatedTarget)&&(e.call(b,a),!a.i);d++);}
+function yd(a){var b=a.composedPath();Object.defineProperty(a,"currentTarget",{get:function(){return d},configurable:!0});for(var c=b.length-1;0<=c;c--){var d=b[c];xd(a,d,"capture");if(a.a)return}Object.defineProperty(a,"eventPhase",{get:function(){return Event.AT_TARGET}});var e;for(c=0;c<b.length;c++){d=b[c];var f=y(d);f=f&&f.root;if(0===c||f&&f===e)if(xd(a,d,"bubble"),d!==window&&(e=d.getRootNode()),a.a)break}}
+function zd(a,b,c,d,e,f){for(var h=0;h<a.length;h++){var g=a[h],k=g.type,l=g.capture,m=g.once,n=g.passive;if(b===g.node&&c===k&&d===l&&e===m&&f===n)return h}return-1}
+function Ad(a,b,c){if(b){var d=typeof b;if("function"===d||"object"===d)if("object"!==d||b.handleEvent&&"function"===typeof b.handleEvent){if(c&&"object"===typeof c){var e=!!c.capture;var f=!!c.once;var h=!!c.passive}else e=!!c,h=f=!1;var g=c&&c.fa||this,k=b[pd];if(k){if(-1<zd(k,g,a,e,f,h))return}else b[pd]=[];k=function(e){f&&this.removeEventListener(a,b,c);e.__target||Bd(e);if(g!==this){var h=Object.getOwnPropertyDescriptor(e,"currentTarget");Object.defineProperty(e,"currentTarget",{get:function(){return g},
+configurable:!0})}if(e.composed||-1<e.composedPath().indexOf(g))if(wd(e)&&e.target===e.relatedTarget)e.eventPhase===Event.BUBBLING_PHASE&&e.stopImmediatePropagation();else if(e.eventPhase===Event.CAPTURING_PHASE||e.bubbles||e.target===g||g instanceof Window){var k="function"===d?b.call(g,e):b.handleEvent&&b.handleEvent(e);g!==this&&(h?(Object.defineProperty(e,"currentTarget",h),h=null):delete e.currentTarget);return k}};b[pd].push({node:g,type:a,capture:e,once:f,passive:h,hb:k});vd[a]?(this.__handlers=
+this.__handlers||{},this.__handlers[a]=this.__handlers[a]||{capture:[],bubble:[]},this.__handlers[a][e?"capture":"bubble"].push(k)):(this instanceof Window?B.fb:B.addEventListener).call(this,a,k,c)}}}
+function Cd(a,b,c){if(b){if(c&&"object"===typeof c){var d=!!c.capture;var e=!!c.once;var f=!!c.passive}else d=!!c,f=e=!1;var h=c&&c.fa||this,g=void 0;var k=null;try{k=b[pd]}catch(l){}k&&(e=zd(k,h,a,d,e,f),-1<e&&(g=k.splice(e,1)[0].hb,k.length||(b[pd]=void 0)));(this instanceof Window?B.gb:B.removeEventListener).call(this,a,g||b,c);g&&vd[a]&&this.__handlers&&this.__handlers[a]&&(a=this.__handlers[a][d?"capture":"bubble"],g=a.indexOf(g),-1<g&&a.splice(g,1))}}
+function Dd(){for(var a in vd)window.addEventListener(a,function(a){a.__target||(Bd(a),yd(a))},!0)}function Bd(a){a.__target=a.target;a.da=a.relatedTarget;if(z.w){var b=Object.getPrototypeOf(a);if(!b.hasOwnProperty("__patchProto")){var c=Object.create(b);c.jb=b;Fb(c,td);b.__patchProto=c}a.__proto__=b.__patchProto}else Fb(a,td)}var Ed=ud(window.Event),Fd=ud(window.CustomEvent),Gd=ud(window.MouseEvent);function Hd(a,b){return{index:a,P:[],W:b}}
+function Id(a,b,c,d){var e=0,f=0,h=0,g=0,k=Math.min(b-e,d-f);if(0==e&&0==f)a:{for(h=0;h<k;h++)if(a[h]!==c[h])break a;h=k}if(b==a.length&&d==c.length){g=a.length;for(var l=c.length,m=0;m<k-h&&Jd(a[--g],c[--l]);)m++;g=m}e+=h;f+=h;b-=g;d-=g;if(0==b-e&&0==d-f)return[];if(e==b){for(b=Hd(e,0);f<d;)b.P.push(c[f++]);return[b]}if(f==d)return[Hd(e,b-e)];k=e;h=f;d=d-h+1;g=b-k+1;b=Array(d);for(l=0;l<d;l++)b[l]=Array(g),b[l][0]=l;for(l=0;l<g;l++)b[0][l]=l;for(l=1;l<d;l++)for(m=1;m<g;m++)if(a[k+m-1]===c[h+l-1])b[l][m]=
+b[l-1][m-1];else{var n=b[l-1][m]+1,t=b[l][m-1]+1;b[l][m]=n<t?n:t}k=b.length-1;h=b[0].length-1;d=b[k][h];for(a=[];0<k||0<h;)0==k?(a.push(2),h--):0==h?(a.push(3),k--):(g=b[k-1][h-1],l=b[k-1][h],m=b[k][h-1],n=l<m?l<g?l:g:m<g?m:g,n==g?(g==d?a.push(0):(a.push(1),d=g),k--,h--):n==l?(a.push(3),k--,d=l):(a.push(2),h--,d=m));a.reverse();b=void 0;k=[];for(h=0;h<a.length;h++)switch(a[h]){case 0:b&&(k.push(b),b=void 0);e++;f++;break;case 1:b||(b=Hd(e,0));b.W++;e++;b.P.push(c[f]);f++;break;case 2:b||(b=Hd(e,0));
+b.W++;e++;break;case 3:b||(b=Hd(e,0)),b.P.push(c[f]),f++}b&&k.push(b);return k}function Jd(a,b){return a===b};var ed=K.parentNode,Kd=K.childNodes,Ld={};function Md(a){var b=[];do b.unshift(a);while(a=a.parentNode);return b}function Qc(a,b,c){if(a!==Ld)throw new TypeError("Illegal constructor");this.Ja="ShadyRoot";a=Kd(b);this.host=b;this.a=c&&c.mode;Vc(b,a);c=y(b);c.root=this;c.xa="closed"!==this.a?this:null;c=x(this);c.firstChild=c.lastChild=c.parentNode=c.nextSibling=c.previousSibling=null;c.childNodes=[];this.V=!1;this.v=this.j=this.g=null;c=0;for(var d=a.length;c<d;c++)B.removeChild.call(b,a[c])}
+function Zc(a){a.V||(a.V=!0,Qb(function(){return Nd(a)}))}function Nd(a){for(var b;a;){a.V&&(b=a);a:{var c=a;a=c.host.getRootNode();if(A(a))for(var d=c.host.childNodes,e=0;e<d.length;e++)if(c=d[e],"slot"==c.localName)break a;a=void 0}}b&&b._renderRoot()}
+Qc.prototype._renderRoot=function(){this.V=!1;if(this.g){dd(this);for(var a=0,b;a<this.g.length;a++){b=this.g[a];var c=y(b),d=c.assignedNodes;c.assignedNodes=[];c.C=[];if(c.la=d)for(c=0;c<d.length;c++){var e=y(d[c]);e.T=e.assignedSlot;e.assignedSlot===b&&(e.assignedSlot=null)}}for(b=this.host.firstChild;b;b=b.nextSibling)Od(this,b);for(a=0;a<this.g.length;a++){b=this.g[a];d=y(b);if(!d.assignedNodes.length)for(c=b.firstChild;c;c=c.nextSibling)Od(this,c,b);(c=(c=y(b.parentNode))&&c.root)&&fd(c)&&c._renderRoot();
+Pd(this,d.C,d.assignedNodes);if(c=d.la){for(e=0;e<c.length;e++)y(c[e]).T=null;d.la=null;c.length>d.assignedNodes.length&&(d.Y=!0)}d.Y&&(d.Y=!1,Qd(this,b))}a=this.g;b=[];for(d=0;d<a.length;d++)c=a[d].parentNode,(e=y(c))&&e.root||!(0>b.indexOf(c))||b.push(c);for(a=0;a<b.length;a++){d=b[a];c=d===this?this.host:d;e=[];d=d.childNodes;for(var f=0;f<d.length;f++){var h=d[f];if("slot"==h.localName){h=y(h).C;for(var g=0;g<h.length;g++)e.push(h[g])}else e.push(h)}d=void 0;f=Kd(c);h=Id(e,e.length,f,f.length);
+for(var k=g=0;g<h.length&&(d=h[g]);g++){for(var l=0,m;l<d.P.length&&(m=d.P[l]);l++)ed(m)===c&&B.removeChild.call(c,m),f.splice(d.index+k,1);k-=d.W}for(k=0;k<h.length&&(d=h[k]);k++)for(g=f[d.index],l=d.index;l<d.index+d.W;l++)m=e[l],B.insertBefore.call(c,m,g),f.splice(l,0,m)}}};function Od(a,b,c){var d=x(b),e=d.T;d.T=null;c||(c=(a=a.j[b.slot||"__catchall"])&&a[0]);c?(x(c).assignedNodes.push(b),d.assignedSlot=c):d.assignedSlot=void 0;e!==d.assignedSlot&&d.assignedSlot&&(x(d.assignedSlot).Y=!0)}
+function Pd(a,b,c){for(var d=0,e;d<c.length&&(e=c[d]);d++)if("slot"==e.localName){var f=y(e).assignedNodes;f&&f.length&&Pd(a,b,f)}else b.push(c[d])}function Qd(a,b){B.dispatchEvent.call(b,new Event("slotchange"));b=y(b);b.assignedSlot&&Qd(a,b.assignedSlot)}function dd(a){if(a.v&&a.v.length){for(var b=a.v,c,d=0;d<b.length;d++){var e=b[d];Vc(e);Vc(e.parentNode);var f=hd(e);a.j[f]?(c=c||{},c[f]=!0,a.j[f].push(e)):a.j[f]=[e];a.g.push(e)}if(c)for(var h in c)a.j[h]=id(a.j[h]);a.v=[]}}
+function hd(a){var b=a.name||a.getAttribute("name")||"__catchall";return a.Ea=b}function id(a){return a.sort(function(a,c){a=Md(a);for(var b=Md(c),e=0;e<a.length;e++){c=a[e];var f=b[e];if(c!==f)return a=Array.from(c.parentNode.childNodes),a.indexOf(c)-a.indexOf(f)}})}function fd(a){dd(a);return!(!a.g||!a.g.length)};function Rd(a){var b=a.getRootNode();A(b)&&Nd(b);return(a=y(a))&&a.assignedSlot||null}
+var Sd={addEventListener:Ad.bind(window),removeEventListener:Cd.bind(window)},Td={addEventListener:Ad,removeEventListener:Cd,appendChild:function(a){return Xc(this,a)},insertBefore:function(a,b){return Xc(this,a,b)},removeChild:function(a){return Yc(this,a)},replaceChild:function(a,b){Xc(this,a,b);Yc(this,b);return a},cloneNode:function(a){if("template"==this.localName)var b=B.cloneNode.call(this,a);else if(b=B.cloneNode.call(this,!1),a){a=this.childNodes;for(var c=0,d;c<a.length;c++)d=a[c].cloneNode(!0),
+b.appendChild(d)}return b},getRootNode:function(){return jd(this)},contains:function(a){return Nb(this,a)},dispatchEvent:function(a){Rb();return B.dispatchEvent.call(this,a)}};
+Object.defineProperties(Td,{isConnected:{get:function(){if(Hc&&Hc.call(this))return!0;if(this.nodeType==Node.DOCUMENT_FRAGMENT_NODE)return!1;var a=this.ownerDocument;if(Mb){if(B.contains.call(a,this))return!0}else if(a.documentElement&&B.contains.call(a.documentElement,this))return!0;for(a=this;a&&!(a instanceof Document);)a=a.parentNode||(A(a)?a.host:void 0);return!!(a&&a instanceof Document)},configurable:!0}});
+var Ud={get assignedSlot(){return Rd(this)}},Vd={querySelector:function(a){return kd(this,function(b){return Eb.call(b,a)},function(a){return!!a})[0]||null},querySelectorAll:function(a,b){if(b){b=Array.prototype.slice.call(B.querySelectorAll(this,a));var c=this.getRootNode();return b.filter(function(a){return a.getRootNode()==c})}return kd(this,function(b){return Eb.call(b,a)})}},Wd={assignedNodes:function(a){if("slot"===this.localName){var b=this.getRootNode();A(b)&&Nd(b);return(b=y(this))?(a&&a.flatten?
+b.C:b.assignedNodes)||[]:[]}}},Xd=Gb({setAttribute:function(a,b){nd(this,a,b)},removeAttribute:function(a){B.removeAttribute.call(this,a);gd(this,a)},attachShadow:function(a){if(!this)throw"Must provide a host.";if(!a)throw"Not enough arguments.";return new Qc(Ld,this,a)},get slot(){return this.getAttribute("slot")},set slot(a){nd(this,"slot",a)},get assignedSlot(){return Rd(this)}},Vd,Wd);Object.defineProperties(Xd,Mc);
+var Yd=Gb({importNode:function(a,b){return od(a,b)},getElementById:function(a){return kd(this,function(b){return b.id==a},function(a){return!!a})[0]||null}},Vd);Object.defineProperties(Yd,{_activeElement:Nc.activeElement});
+var Zd=HTMLElement.prototype.blur,$d=Gb({blur:function(){var a=y(this);(a=(a=a&&a.root)&&a.activeElement)?a.blur():Zd.call(this)}}),ae={addEventListener:function(a,b,c){"object"!==typeof c&&(c={capture:!!c});c.fa=this;this.host.addEventListener(a,b,c)},removeEventListener:function(a,b,c){"object"!==typeof c&&(c={capture:!!c});c.fa=this;this.host.removeEventListener(a,b,c)},getElementById:function(a){return kd(this,function(b){return b.id==a},function(a){return!!a})[0]||null}};
+function M(a,b){for(var c=Object.getOwnPropertyNames(b),d=0;d<c.length;d++){var e=c[d],f=Object.getOwnPropertyDescriptor(b,e);f.value?a[e]=f.value:Object.defineProperty(a,e,f)}};if(z.va){var ShadyDOM={inUse:z.va,patch:function(a){Sc(a);Rc(a);return a},isShadyRoot:A,enqueue:Qb,flush:Rb,settings:z,filterMutations:Xb,observeChildren:Vb,unobserveChildren:Wb,nativeMethods:B,nativeTree:K};window.ShadyDOM=ShadyDOM;window.Event=Ed;window.CustomEvent=Fd;window.MouseEvent=Gd;Dd();var be=window.customElements&&window.customElements.nativeHTMLElement||HTMLElement;M(Qc.prototype,ae);M(window.Node.prototype,Td);M(window.Window.prototype,Sd);M(window.Text.prototype,Ud);M(window.DocumentFragment.prototype,
+Vd);M(window.Element.prototype,Xd);M(window.Document.prototype,Yd);window.HTMLSlotElement&&M(window.HTMLSlotElement.prototype,Wd);M(be.prototype,$d);z.w&&(Oc(window.Node.prototype),Oc(window.Text.prototype),Oc(window.DocumentFragment.prototype),Oc(window.Element.prototype),Oc(be.prototype),Oc(window.Document.prototype),window.HTMLSlotElement&&Oc(window.HTMLSlotElement.prototype));Pc();window.ShadowRoot=Qc};var ce=new Set("annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph".split(" "));function de(a){var b=ce.has(a);a=/^[a-z][.0-9_a-z]*-[\-.0-9_a-z]*$/.test(a);return!b&&a}function N(a){var b=a.isConnected;if(void 0!==b)return b;for(;a&&!(a.__CE_isImportDocument||a instanceof Document);)a=a.parentNode||(window.ShadowRoot&&a instanceof ShadowRoot?a.host:void 0);return!(!a||!(a.__CE_isImportDocument||a instanceof Document))}
+function ee(a,b){for(;b&&b!==a&&!b.nextSibling;)b=b.parentNode;return b&&b!==a?b.nextSibling:null}
+function fe(a,b,c){c=void 0===c?new Set:c;for(var d=a;d;){if(d.nodeType===Node.ELEMENT_NODE){var e=d;b(e);var f=e.localName;if("link"===f&&"import"===e.getAttribute("rel")){d=e.import;if(d instanceof Node&&!c.has(d))for(c.add(d),d=d.firstChild;d;d=d.nextSibling)fe(d,b,c);d=ee(a,e);continue}else if("template"===f){d=ee(a,e);continue}if(e=e.__CE_shadowRoot)for(e=e.firstChild;e;e=e.nextSibling)fe(e,b,c)}d=d.firstChild?d.firstChild:ee(a,d)}}function O(a,b,c){a[b]=c};function ge(){this.a=new Map;this.s=new Map;this.i=[];this.c=!1}function he(a,b,c){a.a.set(b,c);a.s.set(c.constructor,c)}function ie(a,b){a.c=!0;a.i.push(b)}function je(a,b){a.c&&fe(b,function(b){return a.b(b)})}ge.prototype.b=function(a){if(this.c&&!a.__CE_patched){a.__CE_patched=!0;for(var b=0;b<this.i.length;b++)this.i[b](a)}};function Q(a,b){var c=[];fe(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state?a.connectedCallback(d):ke(a,d)}}
+function R(a,b){var c=[];fe(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state&&a.disconnectedCallback(d)}}
+function S(a,b,c){c=void 0===c?{}:c;var d=c.eb||new Set,e=c.ba||function(b){return ke(a,b)},f=[];fe(b,function(b){if("link"===b.localName&&"import"===b.getAttribute("rel")){var c=b.import;c instanceof Node&&(c.__CE_isImportDocument=!0,c.__CE_hasRegistry=!0);c&&"complete"===c.readyState?c.__CE_documentLoadHandled=!0:b.addEventListener("load",function(){var c=b.import;if(!c.__CE_documentLoadHandled){c.__CE_documentLoadHandled=!0;var f=new Set(d);f.delete(c);S(a,c,{eb:f,ba:e})}})}else f.push(b)},d);
+if(a.c)for(b=0;b<f.length;b++)a.b(f[b]);for(b=0;b<f.length;b++)e(f[b])}
+function ke(a,b){if(void 0===b.__CE_state){var c=b.ownerDocument;if(c.defaultView||c.__CE_isImportDocument&&c.__CE_hasRegistry)if(c=a.a.get(b.localName)){c.constructionStack.push(b);var d=c.constructor;try{try{if(new d!==b)throw Error("The custom element constructor did not produce the element being upgraded.");}finally{c.constructionStack.pop()}}catch(h){throw b.__CE_state=2,h;}b.__CE_state=1;b.__CE_definition=c;if(c.attributeChangedCallback)for(c=c.observedAttributes,d=0;d<c.length;d++){var e=c[d],
+f=b.getAttribute(e);null!==f&&a.attributeChangedCallback(b,e,null,f,null)}N(b)&&a.connectedCallback(b)}}}ge.prototype.connectedCallback=function(a){var b=a.__CE_definition;b.connectedCallback&&b.connectedCallback.call(a)};ge.prototype.disconnectedCallback=function(a){var b=a.__CE_definition;b.disconnectedCallback&&b.disconnectedCallback.call(a)};
+ge.prototype.attributeChangedCallback=function(a,b,c,d,e){var f=a.__CE_definition;f.attributeChangedCallback&&-1<f.observedAttributes.indexOf(b)&&f.attributeChangedCallback.call(a,b,c,d,e)};function le(a){var b=document;this.l=a;this.a=b;this.G=void 0;S(this.l,this.a);"loading"===this.a.readyState&&(this.G=new MutationObserver(this.b.bind(this)),this.G.observe(this.a,{childList:!0,subtree:!0}))}le.prototype.disconnect=function(){this.G&&this.G.disconnect()};le.prototype.b=function(a){var b=this.a.readyState;"interactive"!==b&&"complete"!==b||this.disconnect();for(b=0;b<a.length;b++)for(var c=a[b].addedNodes,d=0;d<c.length;d++)S(this.l,c[d])};function me(){var a=this;this.b=this.a=void 0;this.c=new Promise(function(b){a.b=b;a.a&&b(a.a)})}me.prototype.resolve=function(a){if(this.a)throw Error("Already resolved.");this.a=a;this.b&&this.b(a)};function T(a){this.ia=!1;this.l=a;this.ma=new Map;this.ja=function(a){return a()};this.S=!1;this.ka=[];this.Ha=new le(a)}p=T.prototype;
+p.define=function(a,b){var c=this;if(!(b instanceof Function))throw new TypeError("Custom element constructors must be functions.");if(!de(a))throw new SyntaxError("The element name '"+a+"' is not valid.");if(this.l.a.get(a))throw Error("A custom element with name '"+a+"' has already been defined.");if(this.ia)throw Error("A custom element is already being defined.");this.ia=!0;try{var d=function(a){var b=e[a];if(void 0!==b&&!(b instanceof Function))throw Error("The '"+a+"' callback must be a function.");
+return b},e=b.prototype;if(!(e instanceof Object))throw new TypeError("The custom element constructor's prototype is not an object.");var f=d("connectedCallback");var h=d("disconnectedCallback");var g=d("adoptedCallback");var k=d("attributeChangedCallback");var l=b.observedAttributes||[]}catch(m){return}finally{this.ia=!1}b={localName:a,constructor:b,connectedCallback:f,disconnectedCallback:h,adoptedCallback:g,attributeChangedCallback:k,observedAttributes:l,constructionStack:[]};he(this.l,a,b);this.ka.push(b);
+this.S||(this.S=!0,this.ja(function(){return ne(c)}))};p.ba=function(a){S(this.l,a)};
+function ne(a){if(!1!==a.S){a.S=!1;for(var b=a.ka,c=[],d=new Map,e=0;e<b.length;e++)d.set(b[e].localName,[]);S(a.l,document,{ba:function(b){if(void 0===b.__CE_state){var e=b.localName,f=d.get(e);f?f.push(b):a.l.a.get(e)&&c.push(b)}}});for(e=0;e<c.length;e++)ke(a.l,c[e]);for(;0<b.length;){var f=b.shift();e=f.localName;f=d.get(f.localName);for(var h=0;h<f.length;h++)ke(a.l,f[h]);(e=a.ma.get(e))&&e.resolve(void 0)}}}p.get=function(a){if(a=this.l.a.get(a))return a.constructor};
+p.Ba=function(a){if(!de(a))return Promise.reject(new SyntaxError("'"+a+"' is not a valid custom element name."));var b=this.ma.get(a);if(b)return b.c;b=new me;this.ma.set(a,b);this.l.a.get(a)&&!this.ka.some(function(b){return b.localName===a})&&b.resolve(void 0);return b.c};p.Za=function(a){this.Ha.disconnect();var b=this.ja;this.ja=function(c){return a(function(){return b(c)})}};window.CustomElementRegistry=T;T.prototype.define=T.prototype.define;T.prototype.upgrade=T.prototype.ba;
+T.prototype.get=T.prototype.get;T.prototype.whenDefined=T.prototype.Ba;T.prototype.polyfillWrapFlushCallback=T.prototype.Za;var oe=window.Document.prototype.createElement,pe=window.Document.prototype.createElementNS,qe=window.Document.prototype.importNode,re=window.Document.prototype.prepend,se=window.Document.prototype.append,te=window.DocumentFragment.prototype.prepend,ue=window.DocumentFragment.prototype.append,ve=window.Node.prototype.cloneNode,we=window.Node.prototype.appendChild,xe=window.Node.prototype.insertBefore,ye=window.Node.prototype.removeChild,ze=window.Node.prototype.replaceChild,Ae=Object.getOwnPropertyDescriptor(window.Node.prototype,
+"textContent"),Be=window.Element.prototype.attachShadow,Ce=Object.getOwnPropertyDescriptor(window.Element.prototype,"innerHTML"),De=window.Element.prototype.getAttribute,Ee=window.Element.prototype.setAttribute,Fe=window.Element.prototype.removeAttribute,Ge=window.Element.prototype.getAttributeNS,He=window.Element.prototype.setAttributeNS,Ie=window.Element.prototype.removeAttributeNS,Je=window.Element.prototype.insertAdjacentElement,Ke=window.Element.prototype.insertAdjacentHTML,Le=window.Element.prototype.prepend,
+Me=window.Element.prototype.append,Ne=window.Element.prototype.before,Oe=window.Element.prototype.after,Pe=window.Element.prototype.replaceWith,Qe=window.Element.prototype.remove,Re=window.HTMLElement,Se=Object.getOwnPropertyDescriptor(window.HTMLElement.prototype,"innerHTML"),Te=window.HTMLElement.prototype.insertAdjacentElement,Ue=window.HTMLElement.prototype.insertAdjacentHTML;var Ve=new function(){};function We(){var a=Xe;window.HTMLElement=function(){function b(){var b=this.constructor,d=a.s.get(b);if(!d)throw Error("The custom element being constructed was not registered with `customElements`.");var e=d.constructionStack;if(0===e.length)return e=oe.call(document,d.localName),Object.setPrototypeOf(e,b.prototype),e.__CE_state=1,e.__CE_definition=d,a.b(e),e;d=e.length-1;var f=e[d];if(f===Ve)throw Error("The HTMLElement constructor was either called reentrantly for this constructor or called multiple times.");
+e[d]=Ve;Object.setPrototypeOf(f,b.prototype);a.b(f);return f}b.prototype=Re.prototype;return b}()};function Ye(a,b,c){function d(b){return function(c){for(var d=[],e=0;e<arguments.length;++e)d[e-0]=arguments[e];e=[];for(var f=[],l=0;l<d.length;l++){var m=d[l];m instanceof Element&&N(m)&&f.push(m);if(m instanceof DocumentFragment)for(m=m.firstChild;m;m=m.nextSibling)e.push(m);else e.push(m)}b.apply(this,d);for(d=0;d<f.length;d++)R(a,f[d]);if(N(this))for(d=0;d<e.length;d++)f=e[d],f instanceof Element&&Q(a,f)}}void 0!==c.$&&(b.prepend=d(c.$));void 0!==c.append&&(b.append=d(c.append))};function Ze(){var a=Xe;O(Document.prototype,"createElement",function(b){if(this.__CE_hasRegistry){var c=a.a.get(b);if(c)return new c.constructor}b=oe.call(this,b);a.b(b);return b});O(Document.prototype,"importNode",function(b,c){b=qe.call(this,b,c);this.__CE_hasRegistry?S(a,b):je(a,b);return b});O(Document.prototype,"createElementNS",function(b,c){if(this.__CE_hasRegistry&&(null===b||"http://www.w3.org/1999/xhtml"===b)){var d=a.a.get(c);if(d)return new d.constructor}b=pe.call(this,b,c);a.b(b);return b});
+Ye(a,Document.prototype,{$:re,append:se})};function $e(){var a=Xe;function b(b,d){Object.defineProperty(b,"textContent",{enumerable:d.enumerable,configurable:!0,get:d.get,set:function(b){if(this.nodeType===Node.TEXT_NODE)d.set.call(this,b);else{var c=void 0;if(this.firstChild){var e=this.childNodes,g=e.length;if(0<g&&N(this)){c=Array(g);for(var k=0;k<g;k++)c[k]=e[k]}}d.set.call(this,b);if(c)for(b=0;b<c.length;b++)R(a,c[b])}}})}O(Node.prototype,"insertBefore",function(b,d){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);
+b=xe.call(this,b,d);if(N(this))for(d=0;d<c.length;d++)Q(a,c[d]);return b}c=N(b);d=xe.call(this,b,d);c&&R(a,b);N(this)&&Q(a,b);return d});O(Node.prototype,"appendChild",function(b){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);b=we.call(this,b);if(N(this))for(var e=0;e<c.length;e++)Q(a,c[e]);return b}c=N(b);e=we.call(this,b);c&&R(a,b);N(this)&&Q(a,b);return e});O(Node.prototype,"cloneNode",function(b){b=ve.call(this,b);this.ownerDocument.__CE_hasRegistry?S(a,b):
+je(a,b);return b});O(Node.prototype,"removeChild",function(b){var c=N(b),e=ye.call(this,b);c&&R(a,b);return e});O(Node.prototype,"replaceChild",function(b,d){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);b=ze.call(this,b,d);if(N(this))for(R(a,d),d=0;d<c.length;d++)Q(a,c[d]);return b}c=N(b);var f=ze.call(this,b,d),h=N(this);h&&R(a,d);c&&R(a,b);h&&Q(a,b);return f});Ae&&Ae.get?b(Node.prototype,Ae):ie(a,function(a){b(a,{enumerable:!0,configurable:!0,get:function(){for(var a=
+[],b=0;b<this.childNodes.length;b++)a.push(this.childNodes[b].textContent);return a.join("")},set:function(a){for(;this.firstChild;)ye.call(this,this.firstChild);we.call(this,document.createTextNode(a))}})})};function af(a){var b=Element.prototype;function c(b){return function(c){for(var d=[],e=0;e<arguments.length;++e)d[e-0]=arguments[e];e=[];for(var g=[],k=0;k<d.length;k++){var l=d[k];l instanceof Element&&N(l)&&g.push(l);if(l instanceof DocumentFragment)for(l=l.firstChild;l;l=l.nextSibling)e.push(l);else e.push(l)}b.apply(this,d);for(d=0;d<g.length;d++)R(a,g[d]);if(N(this))for(d=0;d<e.length;d++)g=e[d],g instanceof Element&&Q(a,g)}}void 0!==Ne&&(b.before=c(Ne));void 0!==Ne&&(b.after=c(Oe));void 0!==
+Pe&&O(b,"replaceWith",function(b){for(var c=[],d=0;d<arguments.length;++d)c[d-0]=arguments[d];d=[];for(var h=[],g=0;g<c.length;g++){var k=c[g];k instanceof Element&&N(k)&&h.push(k);if(k instanceof DocumentFragment)for(k=k.firstChild;k;k=k.nextSibling)d.push(k);else d.push(k)}g=N(this);Pe.apply(this,c);for(c=0;c<h.length;c++)R(a,h[c]);if(g)for(R(a,this),c=0;c<d.length;c++)h=d[c],h instanceof Element&&Q(a,h)});void 0!==Qe&&O(b,"remove",function(){var b=N(this);Qe.call(this);b&&R(a,this)})};function bf(){var a=Xe;function b(b,c){Object.defineProperty(b,"innerHTML",{enumerable:c.enumerable,configurable:!0,get:c.get,set:function(b){var d=this,e=void 0;N(this)&&(e=[],fe(this,function(a){a!==d&&e.push(a)}));c.set.call(this,b);if(e)for(var f=0;f<e.length;f++){var h=e[f];1===h.__CE_state&&a.disconnectedCallback(h)}this.ownerDocument.__CE_hasRegistry?S(a,this):je(a,this);return b}})}function c(b,c){O(b,"insertAdjacentElement",function(b,d){var e=N(d);b=c.call(this,b,d);e&&R(a,d);N(b)&&Q(a,
+d);return b})}function d(b,c){function d(b,c){for(var d=[];b!==c;b=b.nextSibling)d.push(b);for(c=0;c<d.length;c++)S(a,d[c])}O(b,"insertAdjacentHTML",function(a,b){a=a.toLowerCase();if("beforebegin"===a){var e=this.previousSibling;c.call(this,a,b);d(e||this.parentNode.firstChild,this)}else if("afterbegin"===a)e=this.firstChild,c.call(this,a,b),d(this.firstChild,e);else if("beforeend"===a)e=this.lastChild,c.call(this,a,b),d(e||this.firstChild,null);else if("afterend"===a)e=this.nextSibling,c.call(this,
+a,b),d(this.nextSibling,e);else throw new SyntaxError("The value provided ("+String(a)+") is not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'.");})}Be&&O(Element.prototype,"attachShadow",function(a){return this.__CE_shadowRoot=a=Be.call(this,a)});Ce&&Ce.get?b(Element.prototype,Ce):Se&&Se.get?b(HTMLElement.prototype,Se):ie(a,function(a){b(a,{enumerable:!0,configurable:!0,get:function(){return ve.call(this,!0).innerHTML},set:function(a){var b="template"===this.localName,c=b?this.content:
+this,d=oe.call(document,this.localName);for(d.innerHTML=a;0<c.childNodes.length;)ye.call(c,c.childNodes[0]);for(a=b?d.content:d;0<a.childNodes.length;)we.call(c,a.childNodes[0])}})});O(Element.prototype,"setAttribute",function(b,c){if(1!==this.__CE_state)return Ee.call(this,b,c);var d=De.call(this,b);Ee.call(this,b,c);c=De.call(this,b);a.attributeChangedCallback(this,b,d,c,null)});O(Element.prototype,"setAttributeNS",function(b,c,d){if(1!==this.__CE_state)return He.call(this,b,c,d);var e=Ge.call(this,
+b,c);He.call(this,b,c,d);d=Ge.call(this,b,c);a.attributeChangedCallback(this,c,e,d,b)});O(Element.prototype,"removeAttribute",function(b){if(1!==this.__CE_state)return Fe.call(this,b);var c=De.call(this,b);Fe.call(this,b);null!==c&&a.attributeChangedCallback(this,b,c,null,null)});O(Element.prototype,"removeAttributeNS",function(b,c){if(1!==this.__CE_state)return Ie.call(this,b,c);var d=Ge.call(this,b,c);Ie.call(this,b,c);var e=Ge.call(this,b,c);d!==e&&a.attributeChangedCallback(this,c,d,e,b)});Te?
+c(HTMLElement.prototype,Te):Je?c(Element.prototype,Je):console.warn("Custom Elements: `Element#insertAdjacentElement` was not patched.");Ue?d(HTMLElement.prototype,Ue):Ke?d(Element.prototype,Ke):console.warn("Custom Elements: `Element#insertAdjacentHTML` was not patched.");Ye(a,Element.prototype,{$:Le,append:Me});af(a)};var cf=window.customElements;if(!cf||cf.forcePolyfill||"function"!=typeof cf.define||"function"!=typeof cf.get){var Xe=new ge;We();Ze();Ye(Xe,DocumentFragment.prototype,{$:te,append:ue});$e();bf();document.__CE_hasRegistry=!0;var customElements=new T(Xe);Object.defineProperty(window,"customElements",{configurable:!0,enumerable:!0,value:customElements})};function df(){this.end=this.start=0;this.rules=this.parent=this.previous=null;this.cssText=this.parsedCssText="";this.atRule=!1;this.type=0;this.parsedSelector=this.selector=this.keyframesName=""}
+function ef(a){a=a.replace(ff,"").replace(gf,"");var b=kf,c=a,d=new df;d.start=0;d.end=c.length;for(var e=d,f=0,h=c.length;f<h;f++)if("{"===c[f]){e.rules||(e.rules=[]);var g=e,k=g.rules[g.rules.length-1]||null;e=new df;e.start=f+1;e.parent=g;e.previous=k;g.rules.push(e)}else"}"===c[f]&&(e.end=f+1,e=e.parent||d);return b(d,a)}
+function kf(a,b){var c=b.substring(a.start,a.end-1);a.parsedCssText=a.cssText=c.trim();a.parent&&(c=b.substring(a.previous?a.previous.end:a.parent.start,a.start-1),c=lf(c),c=c.replace(mf," "),c=c.substring(c.lastIndexOf(";")+1),c=a.parsedSelector=a.selector=c.trim(),a.atRule=0===c.indexOf("@"),a.atRule?0===c.indexOf("@media")?a.type=nf:c.match(of)&&(a.type=pf,a.keyframesName=a.selector.split(mf).pop()):a.type=0===c.indexOf("--")?qf:rf);if(c=a.rules)for(var d=0,e=c.length,f;d<e&&(f=c[d]);d++)kf(f,
+b);return a}function lf(a){return a.replace(/\\([0-9a-f]{1,6})\s/gi,function(a,c){a=c;for(c=6-a.length;c--;)a="0"+a;return"\\"+a})}
+function sf(a,b,c){c=void 0===c?"":c;var d="";if(a.cssText||a.rules){var e=a.rules,f;if(f=e)f=e[0],f=!(f&&f.selector&&0===f.selector.indexOf("--"));if(f){f=0;for(var h=e.length,g;f<h&&(g=e[f]);f++)d=sf(g,b,d)}else b?b=a.cssText:(b=a.cssText,b=b.replace(tf,"").replace(uf,""),b=b.replace(vf,"").replace(wf,"")),(d=b.trim())&&(d=" "+d+"\n")}d&&(a.selector&&(c+=a.selector+" {\n"),c+=d,a.selector&&(c+="}\n\n"));return c}
+var rf=1,pf=7,nf=4,qf=1E3,ff=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim,gf=/@import[^;]*;/gim,tf=/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,uf=/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\n]|$)?/gim,vf=/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/gim,wf=/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,of=/^@[^\s]*keyframes/,mf=/\s+/g;var U=!(window.ShadyDOM&&window.ShadyDOM.inUse),xf;function yf(a){xf=a&&a.shimcssproperties?!1:U||!(navigator.userAgent.match(/AppleWebKit\/601|Edge\/15/)||!window.CSS||!CSS.supports||!CSS.supports("box-shadow","0 0 0 var(--foo)"))}window.ShadyCSS&&void 0!==window.ShadyCSS.nativeCss?xf=window.ShadyCSS.nativeCss:window.ShadyCSS?(yf(window.ShadyCSS),window.ShadyCSS=void 0):yf(window.WebComponents&&window.WebComponents.flags);var V=xf;var zf=/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};{])+)|\{([^}]*)\}(?:(?=[;\s}])|$))/gi,Af=/(?:^|\W+)@apply\s*\(?([^);\n]*)\)?/gi,Bf=/(--[\w-]+)\s*([:,;)]|$)/gi,Cf=/(animation\s*:)|(animation-name\s*:)/,Df=/@media\s(.*)/,Ef=/\{[^}]*\}/g;var Ff=new Set;function Gf(a,b){if(!a)return"";"string"===typeof a&&(a=ef(a));b&&Hf(a,b);return sf(a,V)}function If(a){!a.__cssRules&&a.textContent&&(a.__cssRules=ef(a.textContent));return a.__cssRules||null}function Jf(a){return!!a.parent&&a.parent.type===pf}function Hf(a,b,c,d){if(a){var e=!1,f=a.type;if(d&&f===nf){var h=a.selector.match(Df);h&&(window.matchMedia(h[1]).matches||(e=!0))}f===rf?b(a):c&&f===pf?c(a):f===qf&&(e=!0);if((a=a.rules)&&!e){e=0;f=a.length;for(var g;e<f&&(g=a[e]);e++)Hf(g,b,c,d)}}}
+function Kf(a,b,c,d){var e=document.createElement("style");b&&e.setAttribute("scope",b);e.textContent=a;Lf(e,c,d);return e}var Mf=null;function Lf(a,b,c){b=b||document.head;b.insertBefore(a,c&&c.nextSibling||b.firstChild);Mf?a.compareDocumentPosition(Mf)===Node.DOCUMENT_POSITION_PRECEDING&&(Mf=a):Mf=a}
+function Nf(a,b){var c=a.indexOf("var(");if(-1===c)return b(a,"","","");a:{var d=0;var e=c+3;for(var f=a.length;e<f;e++)if("("===a[e])d++;else if(")"===a[e]&&0===--d)break a;e=-1}d=a.substring(c+4,e);c=a.substring(0,c);a=Nf(a.substring(e+1),b);e=d.indexOf(",");return-1===e?b(c,d.trim(),"",a):b(c,d.substring(0,e).trim(),d.substring(e+1).trim(),a)}function Of(a,b){U?a.setAttribute("class",b):window.ShadyDOM.nativeMethods.setAttribute.call(a,"class",b)}
+function Pf(a){var b=a.localName,c="";b?-1<b.indexOf("-")||(c=b,b=a.getAttribute&&a.getAttribute("is")||""):(b=a.is,c=a.extends);return{is:b,R:c}};function Qf(){}function Rf(a,b,c){var d=W;a.__styleScoped?a.__styleScoped=null:Sf(d,a,b||"",c)}function Sf(a,b,c,d){b.nodeType===Node.ELEMENT_NODE&&Tf(b,c,d);if(b="template"===b.localName?(b.content||b.kb).childNodes:b.children||b.childNodes)for(var e=0;e<b.length;e++)Sf(a,b[e],c,d)}
+function Tf(a,b,c){if(b)if(a.classList)c?(a.classList.remove("style-scope"),a.classList.remove(b)):(a.classList.add("style-scope"),a.classList.add(b));else if(a.getAttribute){var d=a.getAttribute(Uf);c?d&&(b=d.replace("style-scope","").replace(b,""),Of(a,b)):Of(a,(d?d+" ":"")+"style-scope "+b)}}function Vf(a,b,c){var d=W,e=a.__cssBuild;U||"shady"===e?b=Gf(b,c):(a=Pf(a),b=Wf(d,b,a.is,a.R,c)+"\n\n");return b.trim()}
+function Wf(a,b,c,d,e){var f=Xf(c,d);c=c?Yf+c:"";return Gf(b,function(b){b.c||(b.selector=b.o=Zf(a,b,a.b,c,f),b.c=!0);e&&e(b,c,f)})}function Xf(a,b){return b?"[is="+a+"]":a}function Zf(a,b,c,d,e){var f=b.selector.split($f);if(!Jf(b)){b=0;for(var h=f.length,g;b<h&&(g=f[b]);b++)f[b]=c.call(a,g,d,e)}return f.join($f)}function ag(a){return a.replace(bg,function(a,c,d){-1<d.indexOf("+")?d=d.replace(/\+/g,"___"):-1<d.indexOf("___")&&(d=d.replace(/___/g,"+"));return":"+c+"("+d+")"})}
+Qf.prototype.b=function(a,b,c){var d=!1;a=a.trim();var e=bg.test(a);e&&(a=a.replace(bg,function(a,b,c){return":"+b+"("+c.replace(/\s/g,"")+")"}),a=ag(a));a=a.replace(cg,dg+" $1");a=a.replace(eg,function(a,e,g){d||(a=fg(g,e,b,c),d=d||a.stop,e=a.Oa,g=a.value);return e+g});e&&(a=ag(a));return a};
+function fg(a,b,c,d){var e=a.indexOf(gg);0<=a.indexOf(dg)?a=hg(a,d):0!==e&&(a=c?ig(a,c):a);c=!1;0<=e&&(b="",c=!0);if(c){var f=!0;c&&(a=a.replace(jg,function(a,b){return" > "+b}))}a=a.replace(kg,function(a,b,c){return'[dir="'+c+'"] '+b+", "+b+'[dir="'+c+'"]'});return{value:a,Oa:b,stop:f}}function ig(a,b){a=a.split(lg);a[0]+=b;return a.join(lg)}
+function hg(a,b){var c=a.match(mg);return(c=c&&c[2].trim()||"")?c[0].match(ng)?a.replace(mg,function(a,c,f){return b+f}):c.split(ng)[0]===b?c:og:a.replace(dg,b)}function pg(a){a.selector===qg&&(a.selector="html")}Qf.prototype.c=function(a){return a.match(gg)?this.b(a,rg):ig(a.trim(),rg)};q.Object.defineProperties(Qf.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return"style-scope"}}});
+var bg=/:(nth[-\w]+)\(([^)]+)\)/,rg=":not(.style-scope)",$f=",",eg=/(^|[\s>+~]+)((?:\[.+?\]|[^\s>+~=[])+)/g,ng=/[[.:#*]/,dg=":host",qg=":root",gg="::slotted",cg=new RegExp("^("+gg+")"),mg=/(:host)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,jg=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,kg=/(.*):dir\((?:(ltr|rtl))\)/,Yf=".",lg=":",Uf="class",og="should_not_match",W=new Qf;function sg(a,b,c,d){this.B=a||null;this.b=b||null;this.na=c||[];this.K=null;this.R=d||"";this.a=this.u=this.F=null}function X(a){return a?a.__styleInfo:null}function tg(a,b){return a.__styleInfo=b}sg.prototype.c=function(){return this.B};sg.prototype._getStyleRules=sg.prototype.c;function ug(a){var b=this.matches||this.matchesSelector||this.mozMatchesSelector||this.msMatchesSelector||this.oMatchesSelector||this.webkitMatchesSelector;return b&&b.call(this,a)}var vg=navigator.userAgent.match("Trident");function wg(){}function xg(a){var b={},c=[],d=0;Hf(a,function(a){yg(a);a.index=d++;a=a.m.cssText;for(var c;c=Bf.exec(a);){var e=c[1];":"!==c[2]&&(b[e]=!0)}},function(a){c.push(a)});a.b=c;a=[];for(var e in b)a.push(e);return a}
+function yg(a){if(!a.m){var b={},c={};zg(a,c)&&(b.A=c,a.rules=null);b.cssText=a.parsedCssText.replace(Ef,"").replace(zf,"");a.m=b}}function zg(a,b){var c=a.m;if(c){if(c.A)return Object.assign(b,c.A),!0}else{c=a.parsedCssText;for(var d;a=zf.exec(c);){d=(a[2]||a[3]).trim();if("inherit"!==d||"unset"!==d)b[a[1].trim()]=d;d=!0}return d}}
+function Ag(a,b,c){b&&(b=0<=b.indexOf(";")?Bg(a,b,c):Nf(b,function(b,e,f,h){if(!e)return b+h;(e=Ag(a,c[e],c))&&"initial"!==e?"apply-shim-inherit"===e&&(e="inherit"):e=Ag(a,c[f]||f,c)||f;return b+(e||"")+h}));return b&&b.trim()||""}
+function Bg(a,b,c){b=b.split(";");for(var d=0,e,f;d<b.length;d++)if(e=b[d]){Af.lastIndex=0;if(f=Af.exec(e))e=Ag(a,c[f[1]],c);else if(f=e.indexOf(":"),-1!==f){var h=e.substring(f);h=h.trim();h=Ag(a,h,c)||h;e=e.substring(0,f)+h}b[d]=e&&e.lastIndexOf(";")===e.length-1?e.slice(0,-1):e||""}return b.join(";")}
+function Cg(a,b){var c={},d=[];Hf(a,function(a){a.m||yg(a);var e=a.o||a.parsedSelector;b&&a.m.A&&e&&ug.call(b,e)&&(zg(a,c),a=a.index,e=parseInt(a/32,10),d[e]=(d[e]||0)|1<<a%32)},null,!0);return{A:c,key:d}}
+function Dg(a,b,c,d){b.m||yg(b);if(b.m.A){var e=Pf(a);a=e.is;e=e.R;e=a?Xf(a,e):"html";var f=b.parsedSelector,h=":host > *"===f||"html"===f,g=0===f.indexOf(":host")&&!h;"shady"===c&&(h=f===e+" > *."+e||-1!==f.indexOf("html"),g=!h&&0===f.indexOf(e));"shadow"===c&&(h=":host > *"===f||"html"===f,g=g&&!h);if(h||g)c=e,g&&(b.o||(b.o=Zf(W,b,W.b,a?Yf+a:"",e)),c=b.o||e),d({ab:c,Ua:g,tb:h})}}
+function Eg(a,b){var c={},d={},e=b&&b.__cssBuild;Hf(b,function(b){Dg(a,b,e,function(e){ug.call(a.b||a,e.ab)&&(e.Ua?zg(b,c):zg(b,d))})},null,!0);return{$a:d,Sa:c}}
+function Fg(a,b,c,d){var e=Pf(b),f=Xf(e.is,e.R),h=new RegExp("(?:^|[^.#[:])"+(b.extends?"\\"+f.slice(0,-1)+"\\]":f)+"($|[.:[\\s>+~])");e=X(b).B;var g=Gg(e,d);return Vf(b,e,function(b){var e="";b.m||yg(b);b.m.cssText&&(e=Bg(a,b.m.cssText,c));b.cssText=e;if(!U&&!Jf(b)&&b.cssText){var k=e=b.cssText;null==b.ua&&(b.ua=Cf.test(e));if(b.ua)if(null==b.Z){b.Z=[];for(var n in g)k=g[n],k=k(e),e!==k&&(e=k,b.Z.push(n))}else{for(n=0;n<b.Z.length;++n)k=g[b.Z[n]],e=k(e);k=e}b.cssText=k;b.o=b.o||b.selector;e="."+
+d;n=b.o.split(",");k=0;for(var t=n.length,C;k<t&&(C=n[k]);k++)n[k]=C.match(h)?C.replace(f,e):e+" "+C;b.selector=n.join(",")}})}function Gg(a,b){a=a.b;var c={};if(!U&&a)for(var d=0,e=a[d];d<a.length;e=a[++d]){var f=e,h=b;f.i=new RegExp("\\b"+f.keyframesName+"(?!\\B|-)","g");f.a=f.keyframesName+"-"+h;f.o=f.o||f.selector;f.selector=f.o.replace(f.keyframesName,f.a);c[e.keyframesName]=Hg(e)}return c}function Hg(a){return function(b){return b.replace(a.i,a.a)}}
+function Ig(a,b){var c=Jg,d=If(a);a.textContent=Gf(d,function(a){var d=a.cssText=a.parsedCssText;a.m&&a.m.cssText&&(d=d.replace(tf,"").replace(uf,""),a.cssText=Bg(c,d,b))})}q.Object.defineProperties(wg.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return"x-scope"}}});var Jg=new wg;var Kg={},Lg=window.customElements;if(Lg&&!U){var Mg=Lg.define;Lg.define=function(a,b,c){var d=document.createComment(" Shady DOM styles for "+a+" "),e=document.head;e.insertBefore(d,(Mf?Mf.nextSibling:null)||e.firstChild);Mf=d;Kg[a]=d;Mg.call(Lg,a,b,c)}};function Ng(){this.cache={}}Ng.prototype.store=function(a,b,c,d){var e=this.cache[a]||[];e.push({A:b,styleElement:c,u:d});100<e.length&&e.shift();this.cache[a]=e};Ng.prototype.fetch=function(a,b,c){if(a=this.cache[a])for(var d=a.length-1;0<=d;d--){var e=a[d],f;a:{for(f=0;f<c.length;f++){var h=c[f];if(e.A[h]!==b[h]){f=!1;break a}}f=!0}if(f)return e}};function Og(){}
+function Pg(a){for(var b=0;b<a.length;b++){var c=a[b];if(c.target!==document.documentElement&&c.target!==document.head)for(var d=0;d<c.addedNodes.length;d++){var e=c.addedNodes[d];if(e.nodeType===Node.ELEMENT_NODE){var f=e.getRootNode();var h=e;var g=[];h.classList?g=Array.from(h.classList):h instanceof window.SVGElement&&h.hasAttribute("class")&&(g=h.getAttribute("class").split(/\s+/));h=g;g=h.indexOf(W.a);if((h=-1<g?h[g+1]:"")&&f===e.ownerDocument)Rf(e,h,!0);else if(f.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&
+(f=f.host))if(f=Pf(f).is,h===f)for(e=window.ShadyDOM.nativeMethods.querySelectorAll.call(e,":not(."+W.a+")"),f=0;f<e.length;f++)Tf(e[f],h);else h&&Rf(e,h,!0),Rf(e,f)}}}}
+if(!U){var Qg=new MutationObserver(Pg),Rg=function(a){Qg.observe(a,{childList:!0,subtree:!0})};if(window.customElements&&!window.customElements.polyfillWrapFlushCallback)Rg(document);else{var Sg=function(){Rg(document.body)};window.HTMLImports?window.HTMLImports.whenReady(Sg):requestAnimationFrame(function(){if("loading"===document.readyState){var a=function(){Sg();document.removeEventListener("readystatechange",a)};document.addEventListener("readystatechange",a)}else Sg()})}Og=function(){Pg(Qg.takeRecords())}}
+var Tg=Og;var Ug={};var Vg=Promise.resolve();function Wg(a){if(a=Ug[a])a._applyShimCurrentVersion=a._applyShimCurrentVersion||0,a._applyShimValidatingVersion=a._applyShimValidatingVersion||0,a._applyShimNextVersion=(a._applyShimNextVersion||0)+1}function Xg(a){return a._applyShimCurrentVersion===a._applyShimNextVersion}function Yg(a){a._applyShimValidatingVersion=a._applyShimNextVersion;a.ta||(a.ta=!0,Vg.then(function(){a._applyShimCurrentVersion=a._applyShimNextVersion;a.ta=!1}))};var Zg=null,$g=window.HTMLImports&&window.HTMLImports.whenReady||null,ah;function bh(a){requestAnimationFrame(function(){$g?$g(a):(Zg||(Zg=new Promise(function(a){ah=a}),"complete"===document.readyState?ah():document.addEventListener("readystatechange",function(){"complete"===document.readyState&&ah()})),Zg.then(function(){a&&a()}))})};var ch=new Ng;function Y(){var a=this;this.N={};this.c=document.documentElement;var b=new df;b.rules=[];this.i=tg(this.c,new sg(b));this.s=!1;this.b=this.a=null;bh(function(){dh(a)})}p=Y.prototype;p.Ca=function(){Tg()};p.Qa=function(a){return If(a)};p.cb=function(a){return Gf(a)};
+p.prepareTemplate=function(a,b,c){if(!a.Ma){a.Ma=!0;a.name=b;a.extends=c;Ug[b]=a;var d=(d=a.content.querySelector("style"))?d.getAttribute("css-build")||"":"";var e=[];for(var f=a.content.querySelectorAll("style"),h=0;h<f.length;h++){var g=f[h];if(g.hasAttribute("shady-unscoped")){if(!U){var k=g.textContent;Ff.has(k)||(Ff.add(k),k=g.cloneNode(!0),document.head.appendChild(k));g.parentNode.removeChild(g)}}else e.push(g.textContent),g.parentNode.removeChild(g)}e=e.join("").trim();c={is:b,extends:c,
+ib:d};U||Rf(a.content,b);dh(this);f=Af.test(e)||zf.test(e);Af.lastIndex=0;zf.lastIndex=0;e=ef(e);f&&V&&this.a&&this.a.transformRules(e,b);a._styleAst=e;a.a=d;d=[];V||(d=xg(a._styleAst));if(!d.length||V)e=U?a.content:null,b=Kg[b],f=Vf(c,a._styleAst),b=f.length?Kf(f,c.is,e,b):void 0,a.sa=b;a.La=d}};
+function eh(a){!a.b&&window.ShadyCSS&&window.ShadyCSS.CustomStyleInterface&&(a.b=window.ShadyCSS.CustomStyleInterface,a.b.transformCallback=function(b){a.za(b)},a.b.validateCallback=function(){requestAnimationFrame(function(){(a.b.enqueued||a.s)&&a.I()})})}function dh(a){!a.a&&window.ShadyCSS&&window.ShadyCSS.ApplyShim&&(a.a=window.ShadyCSS.ApplyShim,a.a.invalidCallback=Wg);eh(a)}
+p.I=function(){dh(this);if(this.b){var a=this.b.processStyles();if(this.b.enqueued){if(V)for(var b=0;b<a.length;b++){var c=this.b.getStyleForCustomStyle(a[b]);if(c&&V&&this.a){var d=If(c);dh(this);this.a.transformRules(d);c.textContent=Gf(d)}}else for(fh(this,this.c,this.i),b=0;b<a.length;b++)(c=this.b.getStyleForCustomStyle(a[b]))&&Ig(c,this.i.F);this.b.enqueued=!1;this.s&&!V&&this.styleDocument()}}};
+p.styleElement=function(a,b){var c=Pf(a).is,d=X(a);if(!d){var e=Pf(a);d=e.is;e=e.R;var f=Kg[d];d=Ug[d];if(d){var h=d._styleAst;var g=d.La}d=tg(a,new sg(h,f,g,e))}a!==this.c&&(this.s=!0);b&&(d.K=d.K||{},Object.assign(d.K,b));if(V){if(d.K){b=d.K;for(var k in b)null===k?a.style.removeProperty(k):a.style.setProperty(k,b[k])}if(((k=Ug[c])||a===this.c)&&k&&k.sa&&!Xg(k)){if(Xg(k)||k._applyShimValidatingVersion!==k._applyShimNextVersion)dh(this),this.a&&this.a.transformRules(k._styleAst,c),k.sa.textContent=
+Vf(a,d.B),Yg(k);U&&(c=a.shadowRoot)&&(c.querySelector("style").textContent=Vf(a,d.B));d.B=k._styleAst}}else if(fh(this,a,d),d.na&&d.na.length){c=d;k=Pf(a).is;d=(b=ch.fetch(k,c.F,c.na))?b.styleElement:null;h=c.u;(g=b&&b.u)||(g=this.N[k]=(this.N[k]||0)+1,g=k+"-"+g);c.u=g;g=c.u;e=Jg;e=d?d.textContent||"":Fg(e,a,c.F,g);f=X(a);var l=f.a;l&&!U&&l!==d&&(l._useCount--,0>=l._useCount&&l.parentNode&&l.parentNode.removeChild(l));U?f.a?(f.a.textContent=e,d=f.a):e&&(d=Kf(e,g,a.shadowRoot,f.b)):d?d.parentNode||
+(vg&&-1<e.indexOf("@media")&&(d.textContent=e),Lf(d,null,f.b)):e&&(d=Kf(e,g,null,f.b));d&&(d._useCount=d._useCount||0,f.a!=d&&d._useCount++,f.a=d);g=d;U||(d=c.u,f=e=a.getAttribute("class")||"",h&&(f=e.replace(new RegExp("\\s*x-scope\\s*"+h+"\\s*","g")," ")),f+=(f?" ":"")+"x-scope "+d,e!==f&&Of(a,f));b||ch.store(k,c.F,g,c.u)}};function gh(a,b){return(b=b.getRootNode().host)?X(b)?b:gh(a,b):a.c}
+function fh(a,b,c){a=gh(a,b);var d=X(a);a=Object.create(d.F||null);var e=Eg(b,c.B);b=Cg(d.B,b).A;Object.assign(a,e.Sa,b,e.$a);b=c.K;for(var f in b)if((e=b[f])||0===e)a[f]=e;f=Jg;b=Object.getOwnPropertyNames(a);for(e=0;e<b.length;e++)d=b[e],a[d]=Ag(f,a[d],a);c.F=a}p.styleDocument=function(a){this.styleSubtree(this.c,a)};
+p.styleSubtree=function(a,b){var c=a.shadowRoot;(c||a===this.c)&&this.styleElement(a,b);if(b=c&&(c.children||c.childNodes))for(a=0;a<b.length;a++)this.styleSubtree(b[a]);else if(a=a.children||a.childNodes)for(b=0;b<a.length;b++)this.styleSubtree(a[b])};p.za=function(a){var b=this,c=If(a);Hf(c,function(a){if(U)pg(a);else{var c=W;a.selector=a.parsedSelector;pg(a);a.selector=a.o=Zf(c,a,c.c,void 0,void 0)}V&&(dh(b),b.a&&b.a.transformRule(a))});V?a.textContent=Gf(c):this.i.B.rules.push(c)};
+p.getComputedStyleValue=function(a,b){var c;V||(c=(X(a)||X(gh(this,a))).F[b]);return(c=c||window.getComputedStyle(a).getPropertyValue(b))?c.trim():""};p.bb=function(a,b){var c=a.getRootNode();b=b?b.split(/\s/):[];c=c.host&&c.host.localName;if(!c){var d=a.getAttribute("class");if(d){d=d.split(/\s/);for(var e=0;e<d.length;e++)if(d[e]===W.a){c=d[e+1];break}}}c&&b.push(W.a,c);V||(c=X(a))&&c.u&&b.push(Jg.a,c.u);Of(a,b.join(" "))};p.Na=function(a){return X(a)};Y.prototype.flush=Y.prototype.Ca;
+Y.prototype.prepareTemplate=Y.prototype.prepareTemplate;Y.prototype.styleElement=Y.prototype.styleElement;Y.prototype.styleDocument=Y.prototype.styleDocument;Y.prototype.styleSubtree=Y.prototype.styleSubtree;Y.prototype.getComputedStyleValue=Y.prototype.getComputedStyleValue;Y.prototype.setElementClass=Y.prototype.bb;Y.prototype._styleInfoForNode=Y.prototype.Na;Y.prototype.transformCustomStyleForDocument=Y.prototype.za;Y.prototype.getStyleAst=Y.prototype.Qa;Y.prototype.styleAstToString=Y.prototype.cb;
+Y.prototype.flushCustomStyles=Y.prototype.I;Object.defineProperties(Y.prototype,{nativeShadow:{get:function(){return U}},nativeCss:{get:function(){return V}}});var Z=new Y,hh,ih;window.ShadyCSS&&(hh=window.ShadyCSS.ApplyShim,ih=window.ShadyCSS.CustomStyleInterface);window.ShadyCSS={ScopingShim:Z,prepareTemplate:function(a,b,c){Z.I();Z.prepareTemplate(a,b,c)},styleSubtree:function(a,b){Z.I();Z.styleSubtree(a,b)},styleElement:function(a){Z.I();Z.styleElement(a)},styleDocument:function(a){Z.I();Z.styleDocument(a)},getComputedStyleValue:function(a,b){return Z.getComputedStyleValue(a,b)},nativeCss:V,nativeShadow:U};hh&&(window.ShadyCSS.ApplyShim=hh);
+ih&&(window.ShadyCSS.CustomStyleInterface=ih);var jh=window.customElements,kh=window.HTMLImports,lh=window.HTMLTemplateElement;window.WebComponents=window.WebComponents||{};if(jh&&jh.polyfillWrapFlushCallback){var mh,nh=function(){if(mh){lh.M&&lh.M(window.document);var a=mh;mh=null;a();return!0}},oh=kh.whenReady;jh.polyfillWrapFlushCallback(function(a){mh=a;oh(nh)});kh.whenReady=function(a){oh(function(){nh()?kh.whenReady(a):a()})}}
+kh.whenReady(function(){requestAnimationFrame(function(){window.WebComponents.ready=!0;document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))})});var ph=document.createElement("style");ph.textContent="body {transition: opacity ease-in 0.2s; } \nbody[unresolved] {opacity: 0; display: block; overflow: hidden; position: relative; } \n";var qh=document.querySelector("head");qh.insertBefore(ph,qh.firstChild);}).call(this);
+
+//# sourceMappingURL=webcomponents-lite.js.map
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-lite.js.map b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-lite.js.map
new file mode 100644
index 00000000000..6bdb99712f6
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-lite.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["node_modules/@webcomponents/webcomponents-platform/webcomponents-platform.js"," [synthetic:util/global] "," [synthetic:util/defineproperty] "," [synthetic:es6/symbol] "," [synthetic:es6/util/makeiterator] "," [synthetic:es6/util/arrayfromiterator] ","node_modules/@webcomponents/template/template.js","node_modules/es6-promise/lib/es6-promise/utils.js","node_modules/es6-promise/lib/es6-promise/asap.js","node_modules/es6-promise/lib/es6-promise/then.js","node_modules/es6-promise/lib/es6-promise/-internal.js","node_modules/es6-promise/lib/es6-promise/promise/resolve.js","node_modules/es6-promise/lib/es6-promise/enumerator.js","node_modules/es6-promise/lib/es6-promise/promise.js","node_modules/es6-promise/lib/es6-promise/promise/all.js","node_modules/es6-promise/lib/es6-promise/promise/race.js","node_modules/es6-promise/lib/es6-promise/promise/reject.js","src/promise.js","node_modules/@webcomponents/html-imports/src/html-imports.js","src/pre-polyfill.js","node_modules/@webcomponents/shadydom/src/shady-data.js","node_modules/@webcomponents/shadydom/src/utils.js","node_modules/@webcomponents/shadydom/src/flush.js","node_modules/@webcomponents/shadydom/src/observe-changes.js","node_modules/@webcomponents/shadydom/src/native-methods.js","node_modules/@webcomponents/shadydom/src/innerHTML.js","node_modules/@webcomponents/shadydom/src/native-tree-walker.js","node_modules/@webcomponents/shadydom/src/native-tree-accessors.js","node_modules/@webcomponents/shadydom/src/native-tree.js","node_modules/@webcomponents/shadydom/src/patch-accessors.js","node_modules/@webcomponents/shadydom/src/attach-shadow.js","node_modules/@webcomponents/shadydom/src/patch-builtins.js","node_modules/@webcomponents/shadydom/src/logical-tree.js","node_modules/@webcomponents/shadydom/src/logical-mutation.js"," [synthetic:es6/util/arrayfromiterable] ","node_modules/@webcomponents/shadydom/src/patch-events.js","node_modules/@webcomponents/shadydom/src/array-splice.js","node_modules/@webcomponents/shadydom/src/shadydom.js","node_modules/@webcomponents/custom-elements/src/Utilities.js","node_modules/@webcomponents/custom-elements/src/CustomElementInternals.js","node_modules/@webcomponents/custom-elements/src/CustomElementState.js","node_modules/@webcomponents/custom-elements/src/DocumentConstructionObserver.js","node_modules/@webcomponents/custom-elements/src/CustomElementRegistry.js","node_modules/@webcomponents/custom-elements/src/Deferred.js","node_modules/@webcomponents/custom-elements/src/Patch/Native.js","node_modules/@webcomponents/custom-elements/src/AlreadyConstructedMarker.js","node_modules/@webcomponents/custom-elements/src/Patch/HTMLElement.js","node_modules/@webcomponents/custom-elements/src/custom-elements.js","node_modules/@webcomponents/custom-elements/src/Patch/Interface/ParentNode.js","node_modules/@webcomponents/custom-elements/src/Patch/Document.js","node_modules/@webcomponents/custom-elements/src/Patch/Node.js","node_modules/@webcomponents/custom-elements/src/Patch/Interface/ChildNode.js","node_modules/@webcomponents/custom-elements/src/Patch/Element.js","node_modules/@webcomponents/custom-elements/src/Patch/DocumentFragment.js","node_modules/@webcomponents/shadycss/src/css-parse.js","node_modules/@webcomponents/shadycss/src/style-settings.js","node_modules/@webcomponents/shadycss/src/common-regex.js","node_modules/@webcomponents/shadycss/src/unscoped-style-handler.js","node_modules/@webcomponents/shadycss/src/style-util.js","node_modules/@webcomponents/shadycss/src/style-transformer.js","node_modules/@webcomponents/shadycss/src/style-info.js","node_modules/@webcomponents/shadycss/src/style-properties.js","node_modules/@webcomponents/shadycss/src/style-placeholder.js","node_modules/@webcomponents/shadycss/src/style-cache.js","node_modules/@webcomponents/shadycss/src/document-watcher.js","node_modules/@webcomponents/shadycss/src/template-map.js","node_modules/@webcomponents/shadycss/src/apply-shim-utils.js","node_modules/@webcomponents/shadycss/src/document-wait.js","node_modules/@webcomponents/shadycss/src/scoping-shim.js","node_modules/@webcomponents/shadycss/src/common-utils.js","node_modules/@webcomponents/shadycss/entrypoints/scoping-shim.js","src/post-polyfill.js","src/unresolved.js"],"names":["$jscomp.global","$jscomp.defineProperty","$jscomp.initSymbol","$jscomp.Symbol","$jscomp.SYMBOL_PREFIX","$jscomp.arrayIterator","$jscomp.initSymbolIterator","$jscomp.iteratorPrototype","e","document","createEvent","initEvent","preventDefault","defaultPrevented","workingDefaultPrevented","origPreventDefault","Event","prototype","Event.prototype.preventDefault","cancelable","call","Object","defineProperty","get","configurable","isIE","test","navigator","userAgent","window","CustomEvent","window.CustomEvent","inType","params","initCustomEvent","bubbles","detail","origEvent","window.Event","i","MouseEvent","origMouseEvent","window.MouseEvent","initMouseEvent","view","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","Array","from","Array.from","object","slice","assign","Object.assign","target","sources","args","arguments","s","length","n$","getOwnPropertyNames","source","p","WebComponents","PolyfilledHTMLTemplateElement","QSA","node","selector","childNodes","nodeType","Node","DOCUMENT_NODE","docQuerySelectorAll","DOCUMENT_FRAGMENT_NODE","fragQuerySelectorAll","elementQuerySelectorAll","needsTemplate","HTMLTemplateElement","brokenDocFragment","createDocumentFragment","cloneNode","DocumentFragment","needsDocFrag","insertBefore","newNode","refNode","child","firstChild","origInsertBefore","origCloneNode","Node.prototype.cloneNode","deep","newDom","__proto__","querySelectorAll","HTMLElement","querySelector","defineProperties","origAppendChild","appendChild","Node.prototype.appendChild","origRemoveChild","removeChild","origReplaceChild","replaceChild","Node.prototype.replaceChild","newChild","oldChild","Document","Document.prototype.createDocumentFragment","frag","createElement","origImportNode","importNode","Document.prototype.importNode","impNode","capturedCloneNode","capturedCreateElement","capturedImportNode","capturedRemoveChild","capturedAppendChild","capturedReplaceChild","Element","needsCloning","t","t2","content","clone","contentDoc","implementation","createHTMLDocument","canDecorate","templateStyle","textContent","head","firstElementChild","create","canProtoPatch","hasOwnProperty","decorate","PolyfilledHTMLTemplateElement.decorate","template","namespaceURI","documentElement","template.cloneNode","_cloneNode","defineInnerHTML","defineOuterHTML","err","bootstrap","obj","getInnerHTML","set","text","body","innerHTML","parentNode","docFrag","ownerDocument","Error","PolyfilledHTMLTemplateElement.bootstrap","doc","templates","TEMPLATE_TAG","l","addEventListener","Document.prototype.createElement","el","apply","localName","escapeAttrRegExp","escapeDataRegExp","escapeReplace","c","makeSet","arr","voidElements","plaintextParents","callback","c$","ELEMENT_NODE","tagName","attrs","attributes","attr","name","value","replace","TEXT_NODE","data","COMMENT_NODE","console","error","PolyfilledHTMLTemplateElement._cloneNode","fixClonedDom","s$","t$","dom","element","scripts","scriptSelector","ns","ai","a","setAttribute","isArray","_isArray","x","toString","len","vertxNext","browserWindow","undefined","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isWorker","Uint8ClampedArray","importScripts","MessageChannel","useVertxTimer","flush","useSetTimeout","useMutationObserver","iterations","observer","createTextNode","observe","characterData","useMessageChannel","channel","port1","onmessage","port2","postMessage","globalSetTimeout","setTimeout","queue","arg","scheduleFlush","self","process","nextTick","vertx","require","runOnLoop","runOnContext","asap","then","onFulfillment","onRejection","parent","constructor","noop","PROMISE_ID","makePromise","_state","module$node_modules$es6_promise$lib$es6_promise$asap.asap","invokeCallback","_result","subscribe","resolve","Constructor","promise","Math","random","substring","GET_THEN_ERROR","ErrorObject","getThen","tryThen","fulfillmentHandler","rejectionHandler","handleForeignThenable","thenable","sealed","fulfill","reason","reject","handleOwnThenable","FULFILLED","REJECTED","handleMaybeThenable","maybeThenable","TypeError","type","publishRejection","_onerror","publish","PENDING","_subscribers","subscribers","settled","TRY_CATCH_ERROR","hasCallback","failed","succeeded","initializePromise","resolver","resolvePromise","rejectPromise","id","Enumerator","input","_instanceConstructor","_remaining","_enumerate","_eachEntry","Enumerator.prototype._eachEntry","entry","_settledAt","Promise","_willSettleAt","Enumerator.prototype._settledAt","state","Enumerator.prototype._willSettleAt","enumerator","all","entries","race","_","catch","scope","newCustomEvent","event","importForElement","useNative","closest","importSelector","isImportLink","whenImportsReady","imports","rootImportSelector","pending","forEach","imp","whenElementLoaded","whenDocumentReady","stateChanged","readyState","removeEventListener","whenReady","src","onLoadingDone","rel","Importer","documents","inflight","dynamicImportsMO","m","handleMutations","childList","subtree","loadImports","replaceScripts","fragment","scriptsSelector","script","emptyNodeList","list","inverseOrder","increment","link","currentScript","CSS_URL_REGEXP","CSS_IMPORT_REGEXP","STYLESHEET_REGEXP","Path","fixUrls","base","href","resolveUrl","getAttribute","r","replaceUrls","linkUrl","regexp","pre","url","post","urlPath","__workingURL","u","URL","pathname","__tempDoc","__base","__anchor","Xhr","async","load","success","fail","match","pieces","split","resource","header","indexOf","atob","decodeURIComponent","request","XMLHttpRequest","open","onload","request.onload","redirectedUrl","responseURL","getResponseHeader","location","origin","protocol","host","response","responseText","status","send","links","loadImport","fireEventIfNeeded","makeDocument","processImportsIfLoadingDone","p1","p2","baseEl","removeAttribute","importDependenciesSelector","inlineScriptIndex","n","importDependencyAttr","encodeURIComponent","num","disconnect","flatten","scriptsOk","stylesOk","fireEvents","waitForStyles","runScripts","cloneScript","pendingScriptsSelector","pendingStylesSelector","needsMove","disabledLinkSelector","placeholder","nextSibling","newSibling","import","dispatchEvent","eventType","mutations","addedNodes","elem","importer","imps","native_baseURI","getOwnPropertyDescriptor","klass","ownerDoc","enumerable","HTMLLinkElement","HTMLImports","flagMatcher","flags","search","option","parts","f","forceShady","forceCE","ShadyData","publicRoot","root","dirty","flattenedNodes","_prevAssignedSlot","_previouslyAssignedNodes","assignedSlot","assignedNodes","previousSibling","lastChild","ownerShadyRoot","__insideAccessors","__outsideAccessors","toJSON","ensureShadyDataForNode","__shady","shadyDataForNode","settings","hasNativeShadowDOM","attachShadow","getRootNode","desc","hasDescriptors","inUse","IS_IE","IS_EDGE","useNativeAccessors","isTrackingLogicalChildNodes","nodeData","isShadyRoot","_localName","ownerShadyRootForNode","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","extend","pd","extendAll","mixin","twiddle","shift","microtask","push","hasDocumentContains","contains","container","flushList","scheduled","enqueue","didFlush","AsyncObserver","_scheduled","removedNodes","callbacks","Set","schedule","takeRecords","cb","observeChildren","sd","add","_callback","_observer","_node","unobserveChildren","handle","delete","size","filterMutations","targetRootNode","map","mutation","mutationInScope","nodes","filter","windowAddEventListener","Window","windowRemoveEventListener","getElementById","elementQuerySelector","fragmentQuerySelector","documentQuerySelector","fragmentQuerySelectorAll","documentQuerySelectorAll","nodeWalker","createTreeWalker","NodeFilter","SHOW_ALL","elementWalker","SHOW_ELEMENT","currentNode","parentElement","lastElementChild","previousElementSibling","nextElementSibling","children","textWalker","SHOW_TEXT","nextNode","nodeValue","nativeProtos","findNodeDescriptor","proto","nodeAccessors","fragmentAccessors","documentAccessors","accessors","nativeTreeAccessors","nativeTreeWalker","clearNode","inertDoc","nativeIsConnectedAccessors","nativeIsConnected","nativeActiveElementDescriptor","OutsideAccessors","ClassNameAccessor","className","InsideAccessors","item","childNodes.item","index","childElementCount","tc","cn","join","nativeAccessors","children.item","containerName","htmlContainer","ShadowRootAccessor","shadowRoot","ActiveElementAccessor","activeElement","active","nativeContains","activeRoot","patchAccessorGroup","descriptors","force","objDesc","warn","patchAccessors","patchShadowRootAccessors","ShadyRoot","nodeName","prop","patchOutsideElementAccessors","patchInsideElementAccessors","linkNode","ref_node","containerData","ref_nodeData","psd","nsd","recordChildNodes","refData","ownerRoot","slotsAdded","slots","_ensureSlotData","_pendingSlots","_slotList","_slotMap","$jscomp.arrayFromIterator","$jscomp.makeIterator","_asyncRender","resetTo","parentData","hasShadowRootWithSlot","preventNativeInsert","firstComposedNode","nativeMethods","scheduleObserver","preventNativeRemove","removeOwnerShadyRoot","changeSlotContent","_validateSlots","slot","splice","didRemove","removingInsertionPoint","composed","flattened","_hasInsertionPoint","distributeAttributeChange","oldName","__slotName","_nameForSlot","_sortSlots","addedNode","removedNode","query","matcher","halter","queryElements","elements","result","scopingShim","nc","eventWrappersName","Date","now","alwaysComposed","pathComposer","startNode","composedPath","current","startRoot","retarget","path","refNodePath","ancestor","lastRoot","rootIdx","eventMixin","isTrusted","__composed","__composedPath","currentTarget","__relatedTarget","__relatedTargetComposedPath","stopPropagation","__propagationStopped","stopImmediatePropagation","__immediatePropagationStopped","mixinComposedFlag","Base","klazz","options","nonBubblingEventsToRetarget","hasRetargeted","fireHandlers","phase","hs","__handlers","fn","retargetNonBubblingEvent","AT_TARGET","lastFiredRoot","findListener","wrappers","capture","once","passive","savedType","savedListener","savedCapture","savedOnce","savedPassive","savedNode","fnOrObj","optionsOrCapture","handlerType","handleEvent","__shadyTarget","wrapperFn","patchEvent","lastCurrentTargetDesc","eventPhase","BUBBLING_PHASE","CAPTURING_PHASE","ret","ael","idx","activateFocusEventOverrides","ev","getPrototypeOf","patchProto","__sourceProto","PatchedEvent","PatchedCustomEvent","PatchedMouseEvent","newSplice","addedCount","removed","calcSplices","currentEnd","old","oldEnd","currentStart","oldStart","prefixCount","suffixCount","minLength","min","currentValue","previousValue","index1","index2","count","equals","rowCount","columnCount","distances","j","north","west","edits","EDIT_ADD","EDIT_DELETE","northWest","EDIT_LEAVE","EDIT_UPDATE","reverse","splices","oldIndex","ShadyRootConstructionToken","ancestorList","ancestors","unshift","token","SHADYROOT_NAME","_mode","mode","hostData","MODE_CLOSED","rootData","_renderPending","_render","renderRoot","_distribute","slotData","_distributeNodeToSlot","slotParentRoot","slotParentData","_addAssignedToFlattenedNodes","prevAssignedNodes","_fireSlotChange","_compose","composeList","targetNode","distributedNode","d","next","forcedSlot","oldSlot","CATCHALL_NAME","assigned","nestedAssigned","slotNamesToSort","_mapSlots","sort","b","listA","listB","nA","nB","getAssignedSlot","windowMixin","bind","nodeMixin","IsConnectedAccessor","isConnected","textMixin","fragmentMixin","o","slotMixin","elementMixin","documentMixin","nativeBlur","blur","htmlElementMixin","shadowActive","shadowRootMixin","patchBuiltin","ShadyDOM","patch","nativeHTMLElement","Text","HTMLSlotElement","ShadowRoot","reservedTagList","isValidCustomElementName","reserved","has","validForm","nativeValue","__CE_isImportDocument","nextSiblingOrAncestorSibling","start","walkDeepDescendantElements","visitedImports","__CE_shadowRoot","setPropertyUnchecked","destination","CustomElementInternals","_localNameToDefinition","Map","_constructorToDefinition","_patches","_hasPatches","setDefinition","definition","addPatch","listener","patchTree","__CE_patched","connectTree","custom","__CE_state","connectedCallback","upgradeElement","disconnectTree","disconnectedCallback","patchAndUpgradeTree","upgrade","gatherElements","__CE_hasRegistry","__CE_documentLoadHandled","clonedVisitedImports","defaultView","localNameToDefinition","constructionStack","pop","__CE_definition","attributeChangedCallback","observedAttributes","oldValue","newValue","namespace","DocumentConstructionObserver","internals","_internals","_document","_handleMutations","Deferred","_resolve","_value","_promise","CustomElementRegistry","_elementDefinitionIsRunning","_whenDefinedDeferred","_flushCallback","this._flushCallback","_flushPending","_pendingDefinitions","_documentConstructionObserver","CustomElementRegistry$$module$node_modules$$webcomponents$custom_elements$src$CustomElementRegistry.prototype","?.prototype","define","Function","SyntaxError","getCallback","callbackValue","adoptedCallback","_flush","pendingDefinitions","elementsWithStableDefinitions","elementsWithPendingDefinitions","pendingElements","pendingUpgradableElements","deferred","CustomElementRegistry$$module$node_modules$$webcomponents$custom_elements$src$CustomElementRegistry_prototype$whenDefined","whenDefined","prior","some","polyfillWrapFlushCallback","outer","inner","Document_createElement","Document_createElementNS","createElementNS","Document_importNode","Document_prepend","Document_append","DocumentFragment_prepend","DocumentFragment_append","Node_cloneNode","Node_appendChild","Node_insertBefore","Node_removeChild","Node_replaceChild","Node_textContent","Element_attachShadow","Element_innerHTML","Element_getAttribute","Element_setAttribute","Element_removeAttribute","Element_getAttributeNS","getAttributeNS","Element_setAttributeNS","setAttributeNS","Element_removeAttributeNS","removeAttributeNS","Element_insertAdjacentElement","Element_insertAdjacentHTML","Element_prepend","Element_append","Element_before","Element_after","Element_replaceWith","Element_remove","HTMLElement_innerHTML","HTMLElement_insertAdjacentElement","HTMLElement_insertAdjacentHTML","$jscompDefaultExport","AlreadyConstructedMarker","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_createElement.call","setPrototypeOf","lastIndex","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement","builtIn","appendPrependPatch","builtInMethod","connectedElements","prepend","append","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_importNode.call","NS_HTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_createElementNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_prepend","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_append","patch_textContent","baseDescriptor","assignedValue","childNodesLength","insertedNodes","nativeResult","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_insertBefore.call","nodeWasConnected","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_appendChild.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_cloneNode.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_removeChild.call","nodeToInsert","nodeToRemove","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_replaceChild.call","nodeToInsertWasConnected","thisIsConnected","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_textContent","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_textContent.get","beforeAfterPatch","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_before","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_after","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_replaceWith","wasConnected","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_remove","patch_innerHTML","htmlString","removedElements","patch_insertAdjacentElement","baseMethod","position","insertedElement","patch_insertAdjacentHTML","upgradeNodesInRange","end","toLowerCase","marker","String","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_attachShadow","init","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_attachShadow.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_innerHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_innerHTML.get","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_innerHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_innerHTML.get","isTemplate","rawElement","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_setAttribute.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_getAttribute.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_setAttributeNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_getAttributeNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_removeAttribute.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_removeAttributeNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_insertAdjacentElement","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_insertAdjacentElement","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_insertAdjacentHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_insertAdjacentHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_prepend","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_append","priorCustomElements","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.DocumentFragment_prepend","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.DocumentFragment_append","customElements","StyleNode","parse","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.comments","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.port","parseCss","OPEN_BRACE","previous","CLOSE_BRACE","trim","ss","_expandUnicodeEscapes","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.multipleSpaces","lastIndexOf","AT_START","MEDIA_START","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.MEDIA_RULE","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.keyframesRule","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.KEYFRAMES_RULE","VAR_START","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.MIXIN_RULE","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.STYLE_RULE","r$","code","repeat","stringify","preserveProperties","cssText","rules","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.customProp","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.mixinProp","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.mixinApply","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.varApply","STYLE_RULE","KEYFRAMES_RULE","MEDIA_RULE","MIXIN_RULE","comments","port","customProp","mixinProp","mixinApply","varApply","keyframesRule","multipleSpaces","nativeShadow","nativeCssVariables_","calcCssVariables","CSS","supports","ShadyCSS","nativeCss","nativeCssVariables","VAR_ASSIGN","MIXIN_MATCH","VAR_CONSUMED","ANIMATION_MATCH","MEDIA_MATCH","BRACKETED","styleTextSet","toCssText","forEachRule","rulesForStyle","style","isKeyframesSelector","rule","styleRuleCallback","keyframesRuleCallback","onlyActiveRules","skipRules","matchMedia","applyCss","moniker","contextNode","applyStyle","lastHeadApplyNode","compareDocumentPosition","DOCUMENT_POSITION_PRECEDING","processVariableAndFallback","str","level","prefix","suffix","comma","fallback","setElementClassRaw","getIsExtends","typeExtension","is","extends","StyleTransformer","shouldRemoveScope","_transformDom","_content","classList","remove","SCOPE_NAME","CLASS","elementStyles","styleRules","cssBuildType","css","ext","hostScope","_calcHostScope","CSS_CLASS_PREFIX","isScoped","transformedSelector","_transformRuleCss","_transformComplexSelector","transformer","p$","COMPLEX_SELECTOR_SEP","_twiddleNthPlus","NTH","inside","stop","isNth","SLOTTED_START","HOST","SIMPLE_SELECTOR_SEP","info","_transformCompoundSelector","combinator","slottedIndex","SLOTTED","_transformHostSelector","_transformSimpleSelector","slotted","SLOTTED_PAREN","paren","DIR_PAREN","before","dir","PSEUDO_PREFIX","HOST_PAREN","SIMPLE_SELECTOR_PREFIX","typeSelector","SELECTOR_NO_MATCH","normalizeRootSelector","ROOT","_transformDocumentSelector","SCOPE_DOC_SELECTOR","$jscomp.global.Object.defineProperties","RegExp","StyleInfo","ast","ownStylePropertyNames","overrideStyleProperties","customStyle","scopeSelector","styleProperties","styleInfo","_getStyleRules","method","StyleProperties","decorateStyles","props","keyframes","ruleIndex","decorateRule","propertyInfo","exec","onKeyframesRule","_keyframes","names","properties","collectProperties","hasProperties","any","valueForProperty","property","valueForProperties","propertyValue","colon","pp","propertyDataFromStyles","selectorToMatch","parseInt","key","whenHostOrRootRule","cssBuild","parsedSelector","isRoot","isHost","hostAndRootPropertiesForScope","hostProps","rootProps","_element","transformStyles","hostSelector","hostRx","HOST_PREFIX","rxHostSelector","HOST_SUFFIX","StyleInfo$$module$node_modules$$webcomponents$shadycss$src$style_info.get","keyframeTransforms","_elementKeyframeTransforms","output","hasAnimations","keyframeNamesToTransform","keyframe","transform","keyframesRules","keyframesNameRx","transformedKeyframesName","scopeId","_keyframesRuleTransformer","applyCustomStyle","XSCOPE_NAME","placeholderMap","ce","origDefine","wrappedDefine","clazz","placeHolder","createComment","after","StyleCache","cache","store","tagname","styleElement","typeMax","fetch","ownPropertyNames","pn","handler","mxns","mxn","classes","hasAttribute","currentScope","newScope","unscoped","delayedStart","requestAnimationFrame","module$node_modules$$webcomponents$shadycss$src$document_watcher.flush","templateMap","invalidate","elementName","templateIsValid","startValidatingTemplate","_validating","readyPromise","resolveFn","documentWait","styleCache","ScopingShim","_scopeCounter","_documentOwner","_documentOwnerStyleInfo","StyleInfo$$module$node_modules$$webcomponents$shadycss$src$style_info.set","_elementsHaveApplied","_customStyleInterface","_applyShim","_ensure","ScopingShim$$module$node_modules$$webcomponents$shadycss$src$scoping_shim.prototype","ScopingShim$$module$node_modules$$webcomponents$shadycss$src$scoping_shim_prototype$flush","getStyleAst","styleAstToString","prepareTemplate","_prepared","styleTextParts","styles","scopingAttribute","newStyle","__cssBuild","_cssBuild","shadowroot","_style","_ownPropertyNames","_ensureCustomStyleInterface","CustomStyleInterface","transformCustomStyleForDocument","flushCustomStyles","_ensureApplyShim","ApplyShim","customStyles","_revalidateCustomStyleApplyShim","_updateProperties","_applyCustomStyles","styleDocument","overrideProps","_isRootOwner","removeProperty","setProperty","cachedStyle","cacheEntry","oldScopeSelector","cachedScopeSelector","applyElementStyle","v","_styleOwnerForNode","owner","ownerStyleInfo","hostAndRootProps","propertiesMatchingHost","propertyData","overrides","reify","styleSubtree","shadowChildren","documentRule","_transformRule","getComputedStyleValue","getComputedStyle","getPropertyValue","setElementClass","classString","scopeName","classAttr","k$","_styleInfoForNode","elementExtends","Template","flushCallback","runAndClearCallback","origWhenReady","ready"],"mappings":"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","file":"webcomponents-lite.js","sourcesContent":["/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n(function(scope) {\n\n 'use strict';\n\n // defaultPrevented is broken in IE.\n // https://connect.microsoft.com/IE/feedback/details/790389/event-defaultprevented-returns-false-after-preventdefault-was-called\n var workingDefaultPrevented = (function() {\n var e = document.createEvent('Event');\n e.initEvent('foo', true, true);\n e.preventDefault();\n return e.defaultPrevented;\n })();\n\n if (!workingDefaultPrevented) {\n var origPreventDefault = Event.prototype.preventDefault;\n Event.prototype.preventDefault = function() {\n if (!this.cancelable) {\n return;\n }\n\n origPreventDefault.call(this);\n\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n },\n configurable: true\n });\n };\n }\n\n var isIE = /Trident/.test(navigator.userAgent);\n\n // CustomEvent constructor shim\n if (!window.CustomEvent || isIE && (typeof window.CustomEvent !== 'function')) {\n window.CustomEvent = function(inType, params) {\n params = params || {};\n var e = document.createEvent('CustomEvent');\n e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable), params.detail);\n return e;\n };\n window.CustomEvent.prototype = window.Event.prototype;\n }\n\n // Event constructor shim\n if (!window.Event || isIE && (typeof window.Event !== 'function')) {\n var origEvent = window.Event;\n window.Event = function(inType, params) {\n params = params || {};\n var e = document.createEvent('Event');\n e.initEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable));\n return e;\n };\n if (origEvent) {\n for (var i in origEvent) {\n window.Event[i] = origEvent[i];\n }\n }\n window.Event.prototype = origEvent.prototype;\n }\n\n if (!window.MouseEvent || isIE && (typeof window.MouseEvent !== 'function')) {\n var origMouseEvent = window.MouseEvent;\n window.MouseEvent = function(inType, params) {\n params = params || {};\n var e = document.createEvent('MouseEvent');\n e.initMouseEvent(inType,\n Boolean(params.bubbles), Boolean(params.cancelable),\n params.view || window, params.detail,\n params.screenX, params.screenY, params.clientX, params.clientY,\n params.ctrlKey, params.altKey, params.shiftKey, params.metaKey,\n params.button, params.relatedTarget);\n return e;\n };\n if (origMouseEvent) {\n for (var i in origMouseEvent) {\n window.MouseEvent[i] = origMouseEvent[i];\n }\n }\n window.MouseEvent.prototype = origMouseEvent.prototype;\n }\n\n // ES6 stuff\n if (!Array.from) {\n Array.from = function (object) {\n return [].slice.call(object);\n };\n }\n\n if (!Object.assign) {\n var assign = function(target, source) {\n var n$ = Object.getOwnPropertyNames(source);\n for (var i=0, p; i < n$.length; i++) {\n p = n$[i];\n target[p] = source[p];\n }\n }\n\n Object.assign = function(target, sources) {\n var args = [].slice.call(arguments, 1);\n for (var i=0, s; i < args.length; i++) {\n s = args[i];\n if (s) {\n assign(target, s);\n }\n }\n return target;\n }\n }\n\n})(window.WebComponents);\n",null,null,null,null,null,"/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n// minimal template polyfill\n(function() {\n 'use strict';\n\n var needsTemplate = (typeof HTMLTemplateElement === 'undefined');\n var brokenDocFragment = !(document.createDocumentFragment().cloneNode() instanceof DocumentFragment);\n var needsDocFrag = false;\n\n // NOTE: Replace DocumentFragment to work around IE11 bug that\n // causes children of a document fragment modified while\n // there is a mutation observer to not have a parentNode, or\n // have a broken parentNode (!?!)\n if (/Trident/.test(navigator.userAgent)) {\n (function() {\n\n needsDocFrag = true;\n\n var origCloneNode = Node.prototype.cloneNode;\n Node.prototype.cloneNode = function cloneNode(deep) {\n var newDom = origCloneNode.call(this, deep);\n if (this instanceof DocumentFragment) {\n newDom.__proto__ = DocumentFragment.prototype;\n }\n return newDom;\n };\n\n // IE's DocumentFragment querySelector code doesn't work when\n // called on an element instance\n DocumentFragment.prototype.querySelectorAll = HTMLElement.prototype.querySelectorAll;\n DocumentFragment.prototype.querySelector = HTMLElement.prototype.querySelector;\n\n Object.defineProperties(DocumentFragment.prototype, {\n 'nodeType': {\n get: function () {\n return Node.DOCUMENT_FRAGMENT_NODE;\n },\n configurable: true\n },\n\n 'localName': {\n get: function () {\n return undefined;\n },\n configurable: true\n },\n\n 'nodeName': {\n get: function () {\n return '#document-fragment';\n },\n configurable: true\n }\n });\n\n var origInsertBefore = Node.prototype.insertBefore;\n function insertBefore(newNode, refNode) {\n if (newNode instanceof DocumentFragment) {\n var child;\n while ((child = newNode.firstChild)) {\n origInsertBefore.call(this, child, refNode);\n }\n } else {\n origInsertBefore.call(this, newNode, refNode);\n }\n return newNode;\n }\n Node.prototype.insertBefore = insertBefore;\n\n var origAppendChild = Node.prototype.appendChild;\n Node.prototype.appendChild = function appendChild(child) {\n if (child instanceof DocumentFragment) {\n insertBefore.call(this, child, null);\n } else {\n origAppendChild.call(this, child);\n }\n return child;\n };\n\n var origRemoveChild = Node.prototype.removeChild;\n var origReplaceChild = Node.prototype.replaceChild;\n Node.prototype.replaceChild = function replaceChild(newChild, oldChild) {\n if (newChild instanceof DocumentFragment) {\n insertBefore.call(this, newChild, oldChild);\n origRemoveChild.call(this, oldChild);\n } else {\n origReplaceChild.call(this, newChild, oldChild);\n }\n return oldChild;\n };\n\n Document.prototype.createDocumentFragment = function createDocumentFragment() {\n var frag = this.createElement('df');\n frag.__proto__ = DocumentFragment.prototype;\n return frag;\n };\n\n var origImportNode = Document.prototype.importNode;\n Document.prototype.importNode = function importNode(impNode, deep) {\n deep = deep || false;\n var newNode = origImportNode.call(this, impNode, deep);\n if (impNode instanceof DocumentFragment) {\n newNode.__proto__ = DocumentFragment.prototype;\n }\n return newNode;\n };\n })();\n }\n\n // NOTE: we rely on this cloneNode not causing element upgrade.\n // This means this polyfill must load before the CE polyfill and\n // this would need to be re-worked if a browser supports native CE\n // but not <template>.\n var capturedCloneNode = Node.prototype.cloneNode;\n var capturedCreateElement = Document.prototype.createElement;\n var capturedImportNode = Document.prototype.importNode;\n var capturedRemoveChild = Node.prototype.removeChild;\n var capturedAppendChild = Node.prototype.appendChild;\n var capturedReplaceChild = Node.prototype.replaceChild;\n\n var elementQuerySelectorAll = Element.prototype.querySelectorAll;\n var docQuerySelectorAll = Document.prototype.querySelectorAll;\n var fragQuerySelectorAll = DocumentFragment.prototype.querySelectorAll;\n\n var scriptSelector = 'script:not([type]),script[type=\"application/javascript\"],script[type=\"text/javascript\"]';\n\n function QSA(node, selector) {\n // IE 11 throws a SyntaxError with `scriptSelector` if the node has no children due to the `:not([type])` syntax\n if (!node.childNodes.length) {\n return [];\n }\n switch (node.nodeType) {\n case Node.DOCUMENT_NODE:\n return docQuerySelectorAll.call(node, selector);\n case Node.DOCUMENT_FRAGMENT_NODE:\n return fragQuerySelectorAll.call(node, selector);\n default:\n return elementQuerySelectorAll.call(node, selector);\n }\n }\n\n // returns true if nested templates cannot be cloned (they cannot be on\n // some impl's like Safari 8 and Edge)\n // OR if cloning a document fragment does not result in a document fragment\n var needsCloning = (function() {\n if (!needsTemplate) {\n var t = document.createElement('template');\n var t2 = document.createElement('template');\n t2.content.appendChild(document.createElement('div'));\n t.content.appendChild(t2);\n var clone = t.cloneNode(true);\n return (clone.content.childNodes.length === 0 || clone.content.firstChild.content.childNodes.length === 0\n || brokenDocFragment);\n }\n })();\n\n var TEMPLATE_TAG = 'template';\n var PolyfilledHTMLTemplateElement = function() {};\n\n if (needsTemplate) {\n\n var contentDoc = document.implementation.createHTMLDocument('template');\n var canDecorate = true;\n\n var templateStyle = document.createElement('style');\n templateStyle.textContent = TEMPLATE_TAG + '{display:none;}';\n\n var head = document.head;\n head.insertBefore(templateStyle, head.firstElementChild);\n\n /**\n Provides a minimal shim for the <template> element.\n */\n PolyfilledHTMLTemplateElement.prototype = Object.create(HTMLElement.prototype);\n\n\n // if elements do not have `innerHTML` on instances, then\n // templates can be patched by swizzling their prototypes.\n var canProtoPatch =\n !(document.createElement('div').hasOwnProperty('innerHTML'));\n\n /**\n The `decorate` method moves element children to the template's `content`.\n NOTE: there is no support for dynamically adding elements to templates.\n */\n PolyfilledHTMLTemplateElement.decorate = function(template) {\n // if the template is decorated or not in HTML namespace, return fast\n if (template.content || \n template.namespaceURI !== document.documentElement.namespaceURI) {\n return;\n }\n template.content = contentDoc.createDocumentFragment();\n var child;\n while ((child = template.firstChild)) {\n capturedAppendChild.call(template.content, child);\n }\n // NOTE: prefer prototype patching for performance and\n // because on some browsers (IE11), re-defining `innerHTML`\n // can result in intermittent errors.\n if (canProtoPatch) {\n template.__proto__ = PolyfilledHTMLTemplateElement.prototype;\n } else {\n template.cloneNode = function(deep) {\n return PolyfilledHTMLTemplateElement._cloneNode(this, deep);\n };\n // add innerHTML to template, if possible\n // Note: this throws on Safari 7\n if (canDecorate) {\n try {\n defineInnerHTML(template);\n defineOuterHTML(template);\n } catch (err) {\n canDecorate = false;\n }\n }\n }\n // bootstrap recursively\n PolyfilledHTMLTemplateElement.bootstrap(template.content);\n };\n\n var defineInnerHTML = function defineInnerHTML(obj) {\n Object.defineProperty(obj, 'innerHTML', {\n get: function() {\n return getInnerHTML(this);\n },\n set: function(text) {\n contentDoc.body.innerHTML = text;\n PolyfilledHTMLTemplateElement.bootstrap(contentDoc);\n while (this.content.firstChild) {\n capturedRemoveChild.call(this.content, this.content.firstChild);\n }\n while (contentDoc.body.firstChild) {\n capturedAppendChild.call(this.content, contentDoc.body.firstChild);\n }\n },\n configurable: true\n });\n };\n\n var defineOuterHTML = function defineOuterHTML(obj) {\n Object.defineProperty(obj, 'outerHTML', {\n get: function() {\n return '<' + TEMPLATE_TAG + '>' + this.innerHTML + '</' + TEMPLATE_TAG + '>';\n },\n set: function(innerHTML) {\n if (this.parentNode) {\n contentDoc.body.innerHTML = innerHTML;\n var docFrag = this.ownerDocument.createDocumentFragment();\n while (contentDoc.body.firstChild) {\n capturedAppendChild.call(docFrag, contentDoc.body.firstChild);\n }\n capturedReplaceChild.call(this.parentNode, docFrag, this);\n } else {\n throw new Error(\"Failed to set the 'outerHTML' property on 'Element': This element has no parent node.\");\n }\n },\n configurable: true\n });\n };\n\n defineInnerHTML(PolyfilledHTMLTemplateElement.prototype);\n defineOuterHTML(PolyfilledHTMLTemplateElement.prototype);\n\n /**\n The `bootstrap` method is called automatically and \"fixes\" all\n <template> elements in the document referenced by the `doc` argument.\n */\n PolyfilledHTMLTemplateElement.bootstrap = function bootstrap(doc) {\n var templates = QSA(doc, TEMPLATE_TAG);\n for (var i=0, l=templates.length, t; (i<l) && (t=templates[i]); i++) {\n PolyfilledHTMLTemplateElement.decorate(t);\n }\n };\n\n // auto-bootstrapping for main document\n document.addEventListener('DOMContentLoaded', function() {\n PolyfilledHTMLTemplateElement.bootstrap(document);\n });\n\n // Patch document.createElement to ensure newly created templates have content\n Document.prototype.createElement = function createElement() {\n var el = capturedCreateElement.apply(this, arguments);\n if (el.localName === 'template') {\n PolyfilledHTMLTemplateElement.decorate(el);\n }\n return el;\n };\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#escapingString\n var escapeAttrRegExp = /[&\\u00A0\"]/g;\n var escapeDataRegExp = /[&\\u00A0<>]/g;\n\n var escapeReplace = function(c) {\n switch (c) {\n case '&':\n return '&amp;';\n case '<':\n return '&lt;';\n case '>':\n return '&gt;';\n case '\"':\n return '&quot;';\n case '\\u00A0':\n return '&nbsp;';\n }\n };\n\n var escapeAttr = function(s) {\n return s.replace(escapeAttrRegExp, escapeReplace);\n };\n\n var escapeData = function(s) {\n return s.replace(escapeDataRegExp, escapeReplace);\n };\n\n var makeSet = function(arr) {\n var set = {};\n for (var i = 0; i < arr.length; i++) {\n set[arr[i]] = true;\n }\n return set;\n };\n\n // http://www.whatwg.org/specs/web-apps/current-work/#void-elements\n var voidElements = makeSet([\n 'area',\n 'base',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n ]);\n\n var plaintextParents = makeSet([\n 'style',\n 'script',\n 'xmp',\n 'iframe',\n 'noembed',\n 'noframes',\n 'plaintext',\n 'noscript'\n ]);\n\n /**\n * @param {Node} node\n * @param {Node} parentNode\n * @param {Function=} callback\n */\n var getOuterHTML = function(node, parentNode, callback) {\n switch (node.nodeType) {\n case Node.ELEMENT_NODE: {\n var tagName = node.localName;\n var s = '<' + tagName;\n var attrs = node.attributes;\n for (var i = 0, attr; (attr = attrs[i]); i++) {\n s += ' ' + attr.name + '=\"' + escapeAttr(attr.value) + '\"';\n }\n s += '>';\n if (voidElements[tagName]) {\n return s;\n }\n return s + getInnerHTML(node, callback) + '</' + tagName + '>';\n }\n case Node.TEXT_NODE: {\n var data = /** @type {Text} */ (node).data;\n if (parentNode && plaintextParents[parentNode.localName]) {\n return data;\n }\n return escapeData(data);\n }\n case Node.COMMENT_NODE: {\n return '<!--' + /** @type {Comment} */ (node).data + '-->';\n }\n default: {\n window.console.error(node);\n throw new Error('not implemented');\n }\n }\n };\n\n /**\n * @param {Node} node\n * @param {Function=} callback\n */\n var getInnerHTML = function(node, callback) {\n if (node.localName === 'template') {\n node = /** @type {HTMLTemplateElement} */ (node).content;\n }\n var s = '';\n var c$ = callback ? callback(node) : node.childNodes;\n for (var i=0, l=c$.length, child; (i<l) && (child=c$[i]); i++) {\n s += getOuterHTML(child, node, callback);\n }\n return s;\n };\n\n }\n\n // make cloning/importing work!\n if (needsTemplate || needsCloning) {\n\n PolyfilledHTMLTemplateElement._cloneNode = function _cloneNode(template, deep) {\n var clone = capturedCloneNode.call(template, false);\n // NOTE: decorate doesn't auto-fix children because they are already\n // decorated so they need special clone fixup.\n if (this.decorate) {\n this.decorate(clone);\n }\n if (deep) {\n // NOTE: use native clone node to make sure CE's wrapped\n // cloneNode does not cause elements to upgrade.\n capturedAppendChild.call(clone.content, capturedCloneNode.call(template.content, true));\n // now ensure nested templates are cloned correctly.\n fixClonedDom(clone.content, template.content);\n }\n return clone;\n };\n\n // Given a source and cloned subtree, find <template>'s in the cloned\n // subtree and replace them with cloned <template>'s from source.\n // We must do this because only the source templates have proper .content.\n var fixClonedDom = function fixClonedDom(clone, source) {\n // do nothing if cloned node is not an element\n if (!source.querySelectorAll) return;\n // these two lists should be coincident\n var s$ = QSA(source, TEMPLATE_TAG);\n if (s$.length === 0) {\n return;\n }\n var t$ = QSA(clone, TEMPLATE_TAG);\n for (var i=0, l=t$.length, t, s; i<l; i++) {\n s = s$[i];\n t = t$[i];\n if (PolyfilledHTMLTemplateElement && PolyfilledHTMLTemplateElement.decorate) {\n PolyfilledHTMLTemplateElement.decorate(s);\n }\n capturedReplaceChild.call(t.parentNode, cloneNode.call(s, true), t);\n }\n };\n\n // make sure scripts inside of a cloned template are executable\n var fixClonedScripts = function fixClonedScripts(fragment) {\n var scripts = QSA(fragment, scriptSelector);\n for (var ns, s, i = 0; i < scripts.length; i++) {\n s = scripts[i];\n ns = capturedCreateElement.call(document, 'script');\n ns.textContent = s.textContent;\n var attrs = s.attributes;\n for (var ai = 0, a; ai < attrs.length; ai++) {\n a = attrs[ai];\n ns.setAttribute(a.name, a.value);\n }\n capturedReplaceChild.call(s.parentNode, ns, s);\n }\n };\n\n // override all cloning to fix the cloned subtree to contain properly\n // cloned templates.\n var cloneNode = Node.prototype.cloneNode = function cloneNode(deep) {\n var dom;\n // workaround for Edge bug cloning documentFragments\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8619646/\n if (!needsDocFrag && brokenDocFragment && this instanceof DocumentFragment) {\n if (!deep) {\n return this.ownerDocument.createDocumentFragment();\n } else {\n dom = importNode.call(this.ownerDocument, this, true);\n }\n } else if (this.nodeType === Node.ELEMENT_NODE && \n this.localName === TEMPLATE_TAG &&\n this.namespaceURI == document.documentElement.namespaceURI) {\n dom = PolyfilledHTMLTemplateElement._cloneNode(this, deep);\n } else {\n dom = capturedCloneNode.call(this, deep);\n }\n // template.content is cloned iff `deep`.\n if (deep) {\n fixClonedDom(dom, this);\n }\n return dom;\n };\n\n // NOTE: we are cloning instead of importing <template>'s.\n // However, the ownerDocument of the cloned template will be correct!\n // This is because the native import node creates the right document owned\n // subtree and `fixClonedDom` inserts cloned templates into this subtree,\n // thus updating the owner doc.\n var importNode = Document.prototype.importNode = function importNode(element, deep) {\n deep = deep || false;\n if (element.localName === TEMPLATE_TAG) {\n return PolyfilledHTMLTemplateElement._cloneNode(element, deep);\n } else {\n var dom = capturedImportNode.call(this, element, deep);\n if (deep) {\n fixClonedDom(dom, element);\n fixClonedScripts(dom);\n }\n return dom;\n }\n };\n }\n\n if (needsTemplate) {\n window.HTMLTemplateElement = PolyfilledHTMLTemplateElement;\n }\n\n})();\n","export function objectOrFunction(x) {\n let type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n return x !== null && typeof x === 'object';\n}\n\nlet _isArray;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = x => Object.prototype.toString.call(x) === '[object Array]';\n}\n\nexport const isArray = _isArray;\n","let len = 0;\nlet vertxNext;\nlet customSchedulerFn;\n\nexport var asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n}\n\nexport function setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n asap = asapFn;\n}\n\nconst browserWindow = (typeof window !== 'undefined') ? window : undefined;\nconst browserGlobal = browserWindow || {};\nconst BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nconst isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nconst isWorker = typeof Uint8ClampedArray !== 'undefined' &&\n typeof importScripts !== 'undefined' &&\n typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return () => process.nextTick(flush);\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function() {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n let iterations = 0;\n const observer = new BrowserMutationObserver(flush);\n const node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return () => {\n node.data = (iterations = ++iterations % 2);\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n const channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return () => channel.port2.postMessage(0);\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n const globalSetTimeout = setTimeout;\n return () => globalSetTimeout(flush, 1);\n}\n\nconst queue = new Array(1000);\nfunction flush() {\n for (let i = 0; i < len; i+=2) {\n let callback = queue[i];\n let arg = queue[i+1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i+1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n const r = require;\n const vertx = r('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch(e) {\n return useSetTimeout();\n }\n}\n\nlet scheduleFlush;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n","import {\n invokeCallback,\n subscribe,\n FULFILLED,\n REJECTED,\n noop,\n makePromise,\n PROMISE_ID\n} from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n const parent = this;\n\n const child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n const { _state } = parent;\n\n if (_state) {\n const callback = arguments[_state - 1];\n asap(() => invokeCallback(_state, child, callback, parent._result));\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n","import {\n objectOrFunction,\n isFunction\n} from './utils';\n\nimport {\n asap\n} from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport const PROMISE_ID = Math.random().toString(36).substring(16);\n\nfunction noop() {}\n\nconst PENDING = void 0;\nconst FULFILLED = 1;\nconst REJECTED = 2;\n\nconst GET_THEN_ERROR = new ErrorObject();\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch(error) {\n GET_THEN_ERROR.error = error;\n return GET_THEN_ERROR;\n }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch(e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n asap(promise => {\n var sealed = false;\n var error = tryThen(then, thenable, value => {\n if (sealed) { return; }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, reason => {\n if (sealed) { return; }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, value => resolve(promise, value),\n reason => reject(promise, reason))\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor &&\n then === originalThen &&\n maybeThenable.constructor.resolve === originalResolve) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === GET_THEN_ERROR) {\n reject(promise, GET_THEN_ERROR.error);\n GET_THEN_ERROR.error = null;\n } else if (then === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then)) {\n handleForeignThenable(promise, maybeThenable, then);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) { return; }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) { return; }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n let { _subscribers } = parent;\n let { length } = _subscribers;\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n let subscribers = promise._subscribers;\n let settled = promise._state;\n\n if (subscribers.length === 0) { return; }\n\n let child, callback, detail = promise._result;\n\n for (let i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction ErrorObject() {\n this.error = null;\n}\n\nconst TRY_CATCH_ERROR = new ErrorObject();\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch(e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n let hasCallback = isFunction(callback),\n value, error, succeeded, failed;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value){\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch(e) {\n reject(promise, e);\n }\n}\n\nlet id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nexport {\n nextId,\n makePromise,\n getThen,\n noop,\n resolve,\n reject,\n fulfill,\n subscribe,\n publish,\n publishRejection,\n initializePromise,\n invokeCallback,\n FULFILLED,\n REJECTED,\n PENDING,\n handleMaybeThenable\n};\n","import {\n noop,\n resolve as _resolve\n} from '../-internal';\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nexport default function resolve(object) {\n /*jshint validthis:true */\n let Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n let promise = new Constructor(noop);\n _resolve(promise, object);\n return promise;\n}\n","import {\n isArray,\n isMaybeThenable\n} from './utils';\n\nimport {\n noop,\n reject,\n fulfill,\n subscribe,\n FULFILLED,\n REJECTED,\n PENDING,\n getThen,\n handleMaybeThenable\n} from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nexport default Enumerator;\nfunction Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n};\n\nEnumerator.prototype._enumerate = function(input) {\n for (let i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n};\n\nEnumerator.prototype._eachEntry = function(entry, i) {\n let c = this._instanceConstructor;\n let { resolve } = c;\n\n if (resolve === originalResolve) {\n let then = getThen(entry);\n\n if (then === originalThen &&\n entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise) {\n let promise = new c(noop);\n handleMaybeThenable(promise, entry, then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(resolve => resolve(entry)), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n};\n\nEnumerator.prototype._settledAt = function(state, i, value) {\n let { promise } = this;\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n};\n\nEnumerator.prototype._willSettleAt = function(promise, i) {\n let enumerator = this;\n\n subscribe(promise, undefined, value => enumerator._settledAt(FULFILLED, i, value),\n reason => enumerator._settledAt(REJECTED, i, reason));\n};\n","import {\n isFunction\n} from './utils';\n\nimport {\n noop,\n nextId,\n PROMISE_ID,\n initializePromise\n} from './-internal';\n\nimport {\n asap,\n setAsap,\n setScheduler\n} from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n*/\nexport default function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n}\n\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;\n\nPromise.prototype = {\n constructor: Promise,\n\n/**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n\n Chaining\n --------\n\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n\n Assimilation\n ------------\n\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n\n If the assimliated promise rejects, then the downstream promise will also reject.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n\n Simple Example\n --------------\n\n Synchronous Example\n\n ```javascript\n let result;\n\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n\n Advanced Example\n --------------\n\n Synchronous Example\n\n ```javascript\n let author, books;\n\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n\n function foundBooks(books) {\n\n }\n\n function failure(reason) {\n\n }\n\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n*/\n then: then,\n\n/**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n*/\n catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n","import Enumerator from '../enumerator';\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nexport default function all(entries) {\n return new Enumerator(this, entries).promise;\n}\n","import {\n isArray\n} from \"../utils\";\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nexport default function race(entries) {\n /*jshint validthis:true */\n let Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor((_, reject) => reject(new TypeError('You must pass an array to race.')));\n } else {\n return new Constructor((resolve, reject) => {\n let length = entries.length;\n for (let i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n","import {\n noop,\n reject as _reject\n} from '../-internal';\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n /*jshint validthis:true */\n let Constructor = this;\n let promise = new Constructor(noop);\n _reject(promise, reason);\n return promise;\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n'use strict';\nimport ES6Promise from '../node_modules/es6-promise/lib/es6-promise/promise.js';\n\n/*\nAssign the ES6 promise polyfill to window ourselves instead of using the \"auto\" polyfill\nto work around https://github.com/webcomponents/webcomponentsjs/issues/837\n*/\nif (!window.Promise) {\n window.Promise = ES6Promise;\n // save Promise API\n ES6Promise.prototype['catch'] = ES6Promise.prototype.catch;\n ES6Promise.prototype['then'] = ES6Promise.prototype.then;\n ES6Promise['all'] = ES6Promise.all;\n ES6Promise['race'] = ES6Promise.race;\n ES6Promise['resolve'] = ES6Promise.resolve;\n ES6Promise['reject'] = ES6Promise.reject;\n}","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n(scope => {\n\n /********************* base setup *********************/\n const link = document.createElement('link');\n const useNative = Boolean('import' in link);\n const emptyNodeList = link.querySelectorAll('*');\n\n // Polyfill `currentScript` for browsers without it.\n let currentScript = null;\n if ('currentScript' in document === false) {\n Object.defineProperty(document, 'currentScript', {\n get() {\n return currentScript ||\n // NOTE: only works when called in synchronously executing code.\n // readyState should check if `loading` but IE10 is\n // interactive when scripts run so we cheat. This is not needed by\n // html-imports polyfill but helps generally polyfill `currentScript`.\n (document.readyState !== 'complete' ?\n document.scripts[document.scripts.length - 1] : null);\n },\n configurable: true\n });\n }\n\n /**\n * @param {Array|NodeList|NamedNodeMap} list\n * @param {!Function} callback\n * @param {boolean=} inverseOrder\n */\n const forEach = (list, callback, inverseOrder) => {\n const length = list ? list.length : 0;\n const increment = inverseOrder ? -1 : 1;\n let i = inverseOrder ? length - 1 : 0;\n for (; i < length && i >= 0; i = i + increment) {\n callback(list[i], i);\n }\n };\n\n /**\n * @param {!Node} node\n * @param {!string} selector\n * @return {!NodeList<!Element>}\n */\n const QSA = (node, selector) => {\n // IE 11 throws a SyntaxError if a node with no children is queried with\n // a selector containing the `:not([type])` syntax.\n if (!node.childNodes.length) {\n return emptyNodeList;\n }\n return node.querySelectorAll(selector);\n };\n\n /**\n * @param {!DocumentFragment} fragment\n */\n const replaceScripts = (fragment) => {\n forEach(QSA(fragment, 'template'), template => {\n forEach(QSA(template.content, scriptsSelector), script => {\n const clone = /** @type {!HTMLScriptElement} */\n (document.createElement('script'));\n forEach(script.attributes, attr => clone.setAttribute(attr.name, attr.value));\n clone.textContent = script.textContent;\n script.parentNode.replaceChild(clone, script);\n });\n replaceScripts(template.content);\n });\n };\n\n /********************* path fixup *********************/\n const CSS_URL_REGEXP = /(url\\()([^)]*)(\\))/g;\n const CSS_IMPORT_REGEXP = /(@import[\\s]+(?!url\\())([^;]*)(;)/g;\n const STYLESHEET_REGEXP = /(<link[^>]*)(rel=['|\"]?stylesheet['|\"]?[^>]*>)/g;\n\n // path fixup: style elements in imports must be made relative to the main\n // document. We fixup url's in url() and @import.\n const Path = {\n\n fixUrls(element, base) {\n if (element.href) {\n element.setAttribute('href',\n Path.resolveUrl(element.getAttribute('href'), base));\n }\n if (element.src) {\n element.setAttribute('src',\n Path.resolveUrl(element.getAttribute('src'), base));\n }\n if (element.localName === 'style') {\n const r = Path.replaceUrls(element.textContent, base, CSS_URL_REGEXP);\n element.textContent = Path.replaceUrls(r, base, CSS_IMPORT_REGEXP);\n }\n },\n\n replaceUrls(text, linkUrl, regexp) {\n return text.replace(regexp, (m, pre, url, post) => {\n let urlPath = url.replace(/[\"']/g, '');\n if (linkUrl) {\n urlPath = Path.resolveUrl(urlPath, linkUrl);\n }\n return pre + '\\'' + urlPath + '\\'' + post;\n });\n },\n\n resolveUrl(url, base) {\n // Lazy feature detection.\n if (Path.__workingURL === undefined) {\n Path.__workingURL = false;\n try {\n const u = new URL('b', 'http://a');\n u.pathname = 'c%20d';\n Path.__workingURL = (u.href === 'http://a/c%20d');\n } catch (e) {}\n }\n\n if (Path.__workingURL) {\n return (new URL(url, base)).href;\n }\n\n // Fallback to creating an anchor into a disconnected document.\n let doc = Path.__tempDoc;\n if (!doc) {\n doc = document.implementation.createHTMLDocument('temp');\n Path.__tempDoc = doc;\n doc.__base = doc.createElement('base');\n doc.head.appendChild(doc.__base);\n doc.__anchor = doc.createElement('a');\n }\n doc.__base.href = base;\n doc.__anchor.href = url;\n return doc.__anchor.href || url;\n }\n };\n\n /********************* Xhr processor *********************/\n const Xhr = {\n\n async: true,\n\n /**\n * @param {!string} url\n * @param {!function(!string, string=)} success\n * @param {!function(!string)} fail\n */\n load(url, success, fail) {\n if (!url) {\n fail('error: href must be specified');\n } else if (url.match(/^data:/)) {\n // Handle Data URI Scheme\n const pieces = url.split(',');\n const header = pieces[0];\n let resource = pieces[1];\n if (header.indexOf(';base64') > -1) {\n resource = atob(resource);\n } else {\n resource = decodeURIComponent(resource);\n }\n success(resource);\n } else {\n const request = new XMLHttpRequest();\n request.open('GET', url, Xhr.async);\n request.onload = () => {\n // Servers redirecting an import can add a Location header to help us\n // polyfill correctly. Handle relative and full paths.\n // Prefer responseURL which already resolves redirects\n // https://xhr.spec.whatwg.org/#the-responseurl-attribute\n let redirectedUrl = request.responseURL || request.getResponseHeader('Location');\n if (redirectedUrl && redirectedUrl.indexOf('/') === 0) {\n // In IE location.origin might not work\n // https://connect.microsoft.com/IE/feedback/details/1763802/location-origin-is-undefined-in-ie-11-on-windows-10-but-works-on-windows-7\n const origin = (location.origin || location.protocol + '//' + location.host);\n redirectedUrl = origin + redirectedUrl;\n }\n const resource = /** @type {string} */ (request.response || request.responseText);\n if (request.status === 304 || request.status === 0 ||\n request.status >= 200 && request.status < 300) {\n success(resource, redirectedUrl);\n } else {\n fail(resource);\n }\n };\n request.send();\n }\n }\n };\n\n /********************* importer *********************/\n\n const isIE = /Trident/.test(navigator.userAgent) ||\n /Edge\\/\\d./i.test(navigator.userAgent);\n\n const importSelector = 'link[rel=import]';\n\n // Used to disable loading of resources.\n const importDisableType = 'import-disable';\n\n const disabledLinkSelector = `link[rel=stylesheet][href][type=${importDisableType}]`;\n\n const scriptsSelector = `script:not([type]),script[type=\"application/javascript\"],` +\n `script[type=\"text/javascript\"]`;\n\n const importDependenciesSelector = `${importSelector},${disabledLinkSelector},` +\n `style:not([type]),link[rel=stylesheet][href]:not([type]),` + scriptsSelector;\n\n const importDependencyAttr = 'import-dependency';\n\n const rootImportSelector = `${importSelector}:not([${importDependencyAttr}])`;\n\n const pendingScriptsSelector = `script[${importDependencyAttr}]`;\n\n const pendingStylesSelector = `style[${importDependencyAttr}],` +\n `link[rel=stylesheet][${importDependencyAttr}]`;\n\n /**\n * Importer will:\n * - load any linked import documents (with deduping)\n * - whenever an import is loaded, prompt the parser to try to parse\n * - observe imported documents for new elements (these are handled via the\n * dynamic importer)\n */\n class Importer {\n constructor() {\n this.documents = {};\n // Used to keep track of pending loads, so that flattening and firing of\n // events can be done when all resources are ready.\n this.inflight = 0;\n this.dynamicImportsMO = new MutationObserver(m => this.handleMutations(m));\n // Observe changes on <head>.\n this.dynamicImportsMO.observe(document.head, {\n childList: true,\n subtree: true\n });\n // 1. Load imports contents\n // 2. Assign them to first import links on the document\n // 3. Wait for import styles & scripts to be done loading/running\n // 4. Fire load/error events\n this.loadImports(document);\n }\n\n /**\n * @param {!(HTMLDocument|DocumentFragment|Element)} doc\n */\n loadImports(doc) {\n const links = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(doc, importSelector));\n forEach(links, link => this.loadImport(link));\n }\n\n /**\n * @param {!HTMLLinkElement} link\n */\n loadImport(link) {\n const url = link.href;\n // This resource is already being handled by another import.\n if (this.documents[url] !== undefined) {\n // If import is already loaded, we can safely associate it to the link\n // and fire the load/error event.\n const imp = this.documents[url];\n if (imp && imp['__loaded']) {\n link['__import'] = imp;\n this.fireEventIfNeeded(link);\n }\n return;\n }\n this.inflight++;\n // Mark it as pending to notify others this url is being loaded.\n this.documents[url] = 'pending';\n Xhr.load(url, (resource, redirectedUrl) => {\n const doc = this.makeDocument(resource, redirectedUrl || url);\n this.documents[url] = doc;\n this.inflight--;\n // Load subtree.\n this.loadImports(doc);\n this.processImportsIfLoadingDone();\n }, () => {\n // If load fails, handle error.\n this.documents[url] = null;\n this.inflight--;\n this.processImportsIfLoadingDone();\n });\n }\n\n /**\n * Creates a new document containing resource and normalizes urls accordingly.\n * @param {string=} resource\n * @param {string=} url\n * @return {!DocumentFragment}\n */\n makeDocument(resource, url) {\n if (!resource) {\n return document.createDocumentFragment();\n }\n\n if (isIE) {\n // <link rel=stylesheet> should be appended to <head>. Not doing so\n // in IE/Edge breaks the cascading order. We disable the loading by\n // setting the type before setting innerHTML to avoid loading\n // resources twice.\n resource = resource.replace(STYLESHEET_REGEXP, (match, p1, p2) => {\n if (match.indexOf('type=') === -1) {\n return `${p1} type=${importDisableType} ${p2}`;\n }\n return match;\n });\n }\n\n let content;\n const template = /** @type {!HTMLTemplateElement} */\n (document.createElement('template'));\n template.innerHTML = resource;\n if (template.content) {\n content = template.content;\n // Clone scripts inside templates since they won't execute when the\n // hosting template is cloned.\n replaceScripts(content);\n } else {\n // <template> not supported, create fragment and move content into it.\n content = document.createDocumentFragment();\n while (template.firstChild) {\n content.appendChild(template.firstChild);\n }\n }\n\n // Support <base> in imported docs. Resolve url and remove its href.\n const baseEl = content.querySelector('base');\n if (baseEl) {\n url = Path.resolveUrl(baseEl.getAttribute('href'), url);\n baseEl.removeAttribute('href');\n }\n\n const n$ = /** @type {!NodeList<!(HTMLLinkElement|HTMLScriptElement|HTMLStyleElement)>} */\n (QSA(content, importDependenciesSelector));\n // For source map hints.\n let inlineScriptIndex = 0;\n forEach(n$, n => {\n // Listen for load/error events, then fix urls.\n whenElementLoaded(n);\n Path.fixUrls(n, url);\n // Mark for easier selectors.\n n.setAttribute(importDependencyAttr, '');\n // Generate source map hints for inline scripts.\n if (n.localName === 'script' && !n.src && n.textContent) {\n const num = inlineScriptIndex ? `-${inlineScriptIndex}` : '';\n const content = n.textContent + `\\n//# sourceURL=${url}${num}.js\\n`;\n // We use the src attribute so it triggers load/error events, and it's\n // easier to capture errors (e.g. parsing) like this.\n n.setAttribute('src', 'data:text/javascript;charset=utf-8,' + encodeURIComponent(content));\n n.textContent = '';\n inlineScriptIndex++;\n }\n });\n return content;\n }\n\n /**\n * Waits for loaded imports to finish loading scripts and styles, then fires\n * the load/error events.\n */\n processImportsIfLoadingDone() {\n // Wait until all resources are ready, then load import resources.\n if (this.inflight) return;\n\n // Stop observing, flatten & load resource, then restart observing <head>.\n this.dynamicImportsMO.disconnect();\n this.flatten(document);\n // We wait for styles to load, and at the same time we execute the scripts,\n // then fire the load/error events for imports to have faster whenReady\n // callback execution.\n // NOTE: This is different for native behavior where scripts would be\n // executed after the styles before them are loaded.\n // To achieve that, we could select pending styles and scripts in the\n // document and execute them sequentially in their dom order.\n let scriptsOk = false,\n stylesOk = false;\n const onLoadingDone = () => {\n if (stylesOk && scriptsOk) {\n // Catch any imports that might have been added while we\n // weren't looking, wait for them as well.\n this.loadImports(document);\n if (this.inflight) return;\n\n // Restart observing.\n this.dynamicImportsMO.observe(document.head, {\n childList: true,\n subtree: true\n });\n this.fireEvents();\n }\n }\n this.waitForStyles(() => {\n stylesOk = true;\n onLoadingDone();\n });\n this.runScripts(() => {\n scriptsOk = true;\n onLoadingDone();\n });\n }\n\n /**\n * @param {!HTMLDocument} doc\n */\n flatten(doc) {\n const n$ = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(doc, importSelector));\n forEach(n$, n => {\n const imp = this.documents[n.href];\n n['__import'] = /** @type {!Document} */ (imp);\n if (imp && imp.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n // We set the .import to be the link itself, and update its readyState.\n // Other links with the same href will point to this link.\n this.documents[n.href] = n;\n n.readyState = 'loading';\n n['__import'] = n;\n this.flatten(imp);\n n.appendChild(imp);\n }\n });\n }\n\n /**\n * Replaces all the imported scripts with a clone in order to execute them.\n * Updates the `currentScript`.\n * @param {!function()} callback\n */\n runScripts(callback) {\n const s$ = QSA(document, pendingScriptsSelector);\n const l = s$.length;\n const cloneScript = i => {\n if (i < l) {\n // The pending scripts have been generated through innerHTML and\n // browsers won't execute them for security reasons. We cannot use\n // s.cloneNode(true) either, the only way to run the script is manually\n // creating a new element and copying its attributes.\n const s = s$[i];\n const clone = /** @type {!HTMLScriptElement} */\n (document.createElement('script'));\n // Remove import-dependency attribute to avoid double cloning.\n s.removeAttribute(importDependencyAttr);\n forEach(s.attributes, attr => clone.setAttribute(attr.name, attr.value));\n // Update currentScript and replace original with clone script.\n currentScript = clone;\n s.parentNode.replaceChild(clone, s);\n whenElementLoaded(clone, () => {\n currentScript = null;\n cloneScript(i + 1);\n });\n } else {\n callback();\n }\n };\n cloneScript(0);\n }\n\n /**\n * Waits for all the imported stylesheets/styles to be loaded.\n * @param {!function()} callback\n */\n waitForStyles(callback) {\n const s$ = /** @type {!NodeList<!(HTMLLinkElement|HTMLStyleElement)>} */\n (QSA(document, pendingStylesSelector));\n let pending = s$.length;\n if (!pending) {\n callback();\n return;\n }\n // <link rel=stylesheet> should be appended to <head>. Not doing so\n // in IE/Edge breaks the cascading order\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10472273/\n // If there is one <link rel=stylesheet> imported, we must move all imported\n // links and styles to <head>.\n const needsMove = isIE && !!document.querySelector(disabledLinkSelector);\n forEach(s$, s => {\n // Listen for load/error events, remove selector once is done loading.\n whenElementLoaded(s, () => {\n s.removeAttribute(importDependencyAttr);\n if (--pending === 0) {\n callback();\n }\n });\n // Check if was already moved to head, to handle the case where the element\n // has already been moved but it is still loading.\n if (needsMove && s.parentNode !== document.head) {\n // Replace the element we're about to move with a placeholder.\n const placeholder = document.createElement(s.localName);\n // Add reference of the moved element.\n placeholder['__appliedElement'] = s;\n // Disable this from appearing in document.styleSheets.\n placeholder.setAttribute('type', 'import-placeholder');\n // Append placeholder next to the sibling, and move original to <head>.\n s.parentNode.insertBefore(placeholder, s.nextSibling);\n let newSibling = importForElement(s);\n while (newSibling && importForElement(newSibling)) {\n newSibling = importForElement(newSibling);\n }\n if (newSibling.parentNode !== document.head) {\n newSibling = null;\n }\n document.head.insertBefore(s, newSibling);\n // Enable the loading of <link rel=stylesheet>.\n s.removeAttribute('type');\n }\n });\n }\n\n /**\n * Fires load/error events for imports in the right order .\n */\n fireEvents() {\n const n$ = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(document, importSelector));\n // Inverse order to have events firing bottom-up.\n forEach(n$, n => this.fireEventIfNeeded(n), true);\n }\n\n /**\n * Fires load/error event for the import if this wasn't done already.\n * @param {!HTMLLinkElement} link\n */\n fireEventIfNeeded(link) {\n // Don't fire twice same event.\n if (!link['__loaded']) {\n link['__loaded'] = true;\n // Update link's import readyState.\n link.import && (link.import.readyState = 'complete');\n const eventType = link.import ? 'load' : 'error';\n link.dispatchEvent(newCustomEvent(eventType, {\n bubbles: false,\n cancelable: false,\n detail: undefined\n }));\n }\n }\n\n /**\n * @param {Array<MutationRecord>} mutations\n */\n handleMutations(mutations) {\n forEach(mutations, m => forEach(m.addedNodes, elem => {\n if (elem && elem.nodeType === Node.ELEMENT_NODE) {\n // NOTE: added scripts are not updating currentScript in IE.\n if (isImportLink(elem)) {\n this.loadImport( /** @type {!HTMLLinkElement} */ (elem));\n } else {\n this.loadImports( /** @type {!Element} */ (elem));\n }\n }\n }));\n }\n }\n\n /**\n * @param {!Node} node\n * @return {boolean}\n */\n const isImportLink = node => {\n return node.nodeType === Node.ELEMENT_NODE && node.localName === 'link' &&\n ( /** @type {!HTMLLinkElement} */ (node).rel === 'import');\n };\n\n /**\n * Waits for an element to finish loading. If already done loading, it will\n * mark the element accordingly.\n * @param {!(HTMLLinkElement|HTMLScriptElement|HTMLStyleElement)} element\n * @param {function()=} callback\n */\n const whenElementLoaded = (element, callback) => {\n if (element['__loaded']) {\n callback && callback();\n } else if ((element.localName === 'script' && !element.src) ||\n (element.localName === 'style' && !element.firstChild)) {\n // Inline scripts and empty styles don't trigger load/error events,\n // consider them already loaded.\n element['__loaded'] = true;\n callback && callback();\n } else {\n const onLoadingDone = event => {\n element.removeEventListener(event.type, onLoadingDone);\n element['__loaded'] = true;\n callback && callback();\n };\n element.addEventListener('load', onLoadingDone);\n // NOTE: We listen only for load events in IE/Edge, because in IE/Edge\n // <style> with @import will fire error events for each failing @import,\n // and finally will trigger the load event when all @import are\n // finished (even if all fail).\n if (!isIE || element.localName !== 'style') {\n element.addEventListener('error', onLoadingDone);\n }\n }\n }\n\n /**\n * Calls the callback when all imports in the document at call time\n * (or at least document ready) have loaded. Callback is called synchronously\n * if imports are already done loading.\n * @param {function()=} callback\n */\n const whenReady = callback => {\n // 1. ensure the document is in a ready state (has dom), then\n // 2. watch for loading of imports and call callback when done\n whenDocumentReady(() => whenImportsReady(() => callback && callback()));\n }\n\n /**\n * Invokes the callback when document is in ready state. Callback is called\n * synchronously if document is already done loading.\n * @param {!function()} callback\n */\n const whenDocumentReady = callback => {\n const stateChanged = () => {\n // NOTE: Firefox can hit readystate interactive without document.body existing.\n // This is anti-spec, but we handle it here anyways by waiting for next change.\n if (document.readyState !== 'loading' && !!document.body) {\n document.removeEventListener('readystatechange', stateChanged);\n callback();\n }\n }\n document.addEventListener('readystatechange', stateChanged);\n stateChanged();\n }\n\n /**\n * Invokes the callback after all imports are loaded. Callback is called\n * synchronously if imports are already done loading.\n * @param {!function()} callback\n */\n const whenImportsReady = callback => {\n let imports = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(document, rootImportSelector));\n let pending = imports.length;\n if (!pending) {\n callback();\n return;\n }\n forEach(imports, imp => whenElementLoaded(imp, () => {\n if (--pending === 0) {\n callback();\n }\n }));\n }\n\n /**\n * Returns the import document containing the element.\n * @param {!Node} element\n * @return {HTMLLinkElement|Document|undefined}\n */\n const importForElement = element => {\n if (useNative) {\n // Return only if not in the main doc!\n return element.ownerDocument !== document ? element.ownerDocument : null;\n }\n let doc = element['__importDoc'];\n if (!doc && element.parentNode) {\n doc = /** @type {!Element} */ (element.parentNode);\n if (typeof doc.closest === 'function') {\n // Element.closest returns the element itself if it matches the selector,\n // so we search the closest import starting from the parent.\n doc = doc.closest(importSelector);\n } else {\n // Walk up the parent tree until we find an import.\n while (!isImportLink(doc) && (doc = doc.parentNode)) {}\n }\n element['__importDoc'] = doc;\n }\n return doc;\n }\n\n let importer = null;\n /**\n * Ensures imports contained in the element are imported.\n * Use this to handle dynamic imports attached to body.\n * @param {!(HTMLDocument|Element)} doc\n */\n const loadImports = (doc) => {\n if (importer) {\n importer.loadImports(doc);\n }\n };\n\n const newCustomEvent = (type, params) => {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(type, params);\n }\n const event = /** @type {!CustomEvent} */ (document.createEvent('CustomEvent'));\n event.initCustomEvent(type, Boolean(params.bubbles), Boolean(params.cancelable), params.detail);\n return event;\n };\n\n if (useNative) {\n // Check for imports that might already be done loading by the time this\n // script is actually executed. Native imports are blocking, so the ones\n // available in the document by this time should already have failed\n // or have .import defined.\n const imps = /** @type {!NodeList<!HTMLLinkElement>} */\n (QSA(document, importSelector));\n forEach(imps, imp => {\n if (!imp.import || imp.import.readyState !== 'loading') {\n imp['__loaded'] = true;\n }\n });\n // Listen for load/error events to capture dynamically added scripts.\n /**\n * @type {!function(!Event)}\n */\n const onLoadingDone = event => {\n const elem = /** @type {!Element} */ (event.target);\n if (isImportLink(elem)) {\n elem['__loaded'] = true;\n }\n };\n document.addEventListener('load', onLoadingDone, true /* useCapture */ );\n document.addEventListener('error', onLoadingDone, true /* useCapture */ );\n } else {\n // Override baseURI so that imported elements' baseURI can be used seemlessly\n // on native or polyfilled html-imports.\n // NOTE: a <link rel=import> will have `link.baseURI === link.href`, as the link\n // itself is used as the `import` document.\n /** @type {Object|undefined} */\n const native_baseURI = Object.getOwnPropertyDescriptor(Node.prototype, 'baseURI');\n // NOTE: if not configurable (e.g. safari9), set it on the Element prototype. \n const klass = !native_baseURI || native_baseURI.configurable ? Node : Element;\n Object.defineProperty(klass.prototype, 'baseURI', {\n get() {\n const ownerDoc = /** @type {HTMLLinkElement} */ (isImportLink(this) ? this : importForElement(this));\n if (ownerDoc) return ownerDoc.href;\n // Use native baseURI if possible.\n if (native_baseURI && native_baseURI.get) return native_baseURI.get.call(this);\n // Polyfill it if not available.\n const base = /** @type {HTMLBaseElement} */ (document.querySelector('base'));\n return (base || window.location).href;\n },\n configurable: true,\n enumerable: true\n });\n\n // Define 'import' read-only property.\n Object.defineProperty(HTMLLinkElement.prototype, 'import', {\n get() {\n return /** @type {HTMLLinkElement} */ (this)['__import'] || null;\n },\n configurable: true,\n enumerable: true\n });\n\n whenDocumentReady(() => {\n importer = new Importer()\n });\n }\n\n /**\n Add support for the `HTMLImportsLoaded` event and the `HTMLImports.whenReady`\n method. This api is necessary because unlike the native implementation,\n script elements do not force imports to resolve. Instead, users should wrap\n code in either an `HTMLImportsLoaded` handler or after load time in an\n `HTMLImports.whenReady(callback)` call.\n\n NOTE: This module also supports these apis under the native implementation.\n Therefore, if this file is loaded, the same code can be used under both\n the polyfill and native implementation.\n */\n whenReady(() => document.dispatchEvent(newCustomEvent('HTMLImportsLoaded', {\n cancelable: true,\n bubbles: true,\n detail: undefined\n })));\n\n // exports\n scope.useNative = useNative;\n scope.whenReady = whenReady;\n scope.importForElement = importForElement;\n scope.loadImports = loadImports;\n\n})(window.HTMLImports = (window.HTMLImports || {}));","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n'use strict';\n\n// Establish scope.\nwindow['WebComponents'] = window['WebComponents'] || {'flags':{}};\n\n// loading script\nlet file = 'webcomponents-lite.js';\nlet script = document.querySelector('script[src*=\"' + file + '\"]');\nlet flagMatcher = /wc-(.+)/;\n\n// Flags. Convert url arguments to flags\nlet flags = {};\nif (!flags['noOpts']) {\n // from url\n location.search.slice(1).split('&').forEach(function(option) {\n let parts = option.split('=');\n let match;\n if (parts[0] && (match = parts[0].match(flagMatcher))) {\n flags[match[1]] = parts[1] || true;\n }\n });\n // from script\n if (script) {\n for (let i=0, a; (a=script.attributes[i]); i++) {\n if (a.name !== 'src') {\n flags[a.name] = a.value || true;\n }\n }\n }\n // log flags\n if (flags['log'] && flags['log']['split']) {\n let parts = flags['log'].split(',');\n flags['log'] = {};\n parts.forEach(function(f) {\n flags['log'][f] = true;\n });\n } else {\n flags['log'] = {};\n }\n}\n\n// exports\nwindow['WebComponents']['flags'] = flags;\nlet forceShady = flags['shadydom'];\nif (forceShady) {\n window['ShadyDOM'] = window['ShadyDOM'] || {};\n window['ShadyDOM']['force'] = forceShady;\n}\n\nlet forceCE = flags['register'] || flags['ce'];\nif (forceCE && window['customElements']) {\n window['customElements']['forcePolyfill'] = forceCE;\n}","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n\nexport class ShadyData {\n constructor() {\n /** @type {ShadowRoot} */\n this.root = null;\n /** @type {ShadowRoot} */\n this.publicRoot = null;\n this.dirty = false;\n this.observer = null;\n /** @type {Array<Node>} */\n this.assignedNodes = null;\n /** @type {Element} */\n this.assignedSlot = null;\n /** @type {Array<Node>} */\n this._previouslyAssignedNodes = null;\n /** @type {Element} */\n this._prevAssignedSlot = null;\n /** @type {Array<Node>} */\n this.flattenedNodes = null;\n this.ownerShadyRoot = undefined;\n /** @type {Node|undefined} */\n this.parentNode = undefined;\n /** @type {Node|undefined} */\n this.firstChild = undefined;\n /** @type {Node|undefined} */\n this.lastChild = undefined;\n /** @type {Node|undefined} */\n this.previousSibling = undefined;\n /** @type {Node|undefined} */\n this.nextSibling = undefined;\n /** @type {Array<Node>|undefined} */\n this.childNodes = undefined;\n this.__outsideAccessors = false;\n this.__insideAccessors = false;\n }\n\n toJSON() {\n return {};\n }\n}\n\nexport function ensureShadyDataForNode(node) {\n if (!node.__shady) {\n node.__shady = new ShadyData();\n }\n return node.__shady;\n}\n\nexport function shadyDataForNode(node) {\n return node && node.__shady;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nimport {shadyDataForNode} from './shady-data.js';\n\nexport let settings = window['ShadyDOM'] || {};\n\nsettings.hasNativeShadowDOM = Boolean(Element.prototype.attachShadow && Node.prototype.getRootNode);\n\nlet desc = Object.getOwnPropertyDescriptor(Node.prototype, 'firstChild');\n\nsettings.hasDescriptors = Boolean(desc && desc.configurable && desc.get);\nsettings.inUse = settings['force'] || !settings.hasNativeShadowDOM;\n\n// Default to using native accessors (instead of treewalker) only for\n// IE/Edge where they are faster.\nconst IS_IE = navigator.userAgent.match('Trident');\nconst IS_EDGE = navigator.userAgent.match('Edge');\nif (settings.useNativeAccessors === undefined) {\n settings.useNativeAccessors = settings.hasDescriptors && (IS_IE || IS_EDGE);\n}\n\nexport function isTrackingLogicalChildNodes(node) {\n const nodeData = shadyDataForNode(node);\n return (nodeData && nodeData.firstChild !== undefined);\n}\n\nexport function isShadyRoot(obj) {\n return Boolean(obj._localName === 'ShadyRoot');\n}\n\nexport function ownerShadyRootForNode(node) {\n let root = node.getRootNode();\n if (isShadyRoot(root)) {\n return root;\n }\n}\n\nlet p = Element.prototype;\nlet matches = p.matches || p.matchesSelector ||\n p.mozMatchesSelector || p.msMatchesSelector ||\n p.oMatchesSelector || p.webkitMatchesSelector;\n\nexport function matchesSelector(element, selector) {\n return matches.call(element, selector);\n}\n\nfunction copyOwnProperty(name, source, target) {\n let pd = Object.getOwnPropertyDescriptor(source, name);\n if (pd) {\n Object.defineProperty(target, name, pd);\n }\n}\n\nexport function extend(target, source) {\n if (target && source) {\n let n$ = Object.getOwnPropertyNames(source);\n for (let i=0, n; (i<n$.length) && (n=n$[i]); i++) {\n copyOwnProperty(n, source, target);\n }\n }\n return target || source;\n}\n\nexport function extendAll(target, ...sources) {\n for (let i=0; i < sources.length; i++) {\n extend(target, sources[i]);\n }\n return target;\n}\n\nexport function mixin(target, source) {\n for (var i in source) {\n target[i] = source[i];\n }\n return target;\n}\n\nexport function patchPrototype(obj, mixin) {\n let proto = Object.getPrototypeOf(obj);\n if (!proto.hasOwnProperty('__patchProto')) {\n let patchProto = Object.create(proto);\n patchProto.__sourceProto = proto;\n extend(patchProto, mixin);\n proto['__patchProto'] = patchProto;\n }\n // old browsers don't have setPrototypeOf\n obj.__proto__ = proto['__patchProto'];\n}\n\n\nlet twiddle = document.createTextNode('');\nlet content = 0;\nlet queue = [];\nnew MutationObserver(() => {\n while (queue.length) {\n // catch errors in user code...\n try {\n queue.shift()();\n } catch(e) {\n // enqueue another record and throw\n twiddle.textContent = content++;\n throw(e);\n }\n }\n}).observe(twiddle, {characterData: true});\n\n// use MutationObserver to get microtask async timing.\nexport function microtask(callback) {\n queue.push(callback);\n twiddle.textContent = content++;\n}\n\nexport const hasDocumentContains = Boolean(document.contains);\n\nexport function contains(container, node) {\n while (node) {\n if (node == container) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\n\n// render enqueuer/flusher\nlet flushList = [];\nlet scheduled;\nexport function enqueue(callback) {\n if (!scheduled) {\n scheduled = true;\n utils.microtask(flush);\n }\n flushList.push(callback);\n}\n\nexport function flush() {\n scheduled = false;\n let didFlush = Boolean(flushList.length);\n while (flushList.length) {\n flushList.shift()();\n }\n return didFlush;\n}\n\nflush['list'] = flushList;\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {ensureShadyDataForNode} from './shady-data.js';\n\nclass AsyncObserver {\n\n constructor() {\n this._scheduled = false;\n this.addedNodes = [];\n this.removedNodes = [];\n this.callbacks = new Set();\n }\n\n schedule() {\n if (!this._scheduled) {\n this._scheduled = true;\n utils.microtask(() => {\n this.flush();\n });\n }\n }\n\n flush() {\n if (this._scheduled) {\n this._scheduled = false;\n let mutations = this.takeRecords();\n if (mutations.length) {\n this.callbacks.forEach(function(cb) {\n cb(mutations);\n });\n }\n }\n }\n\n takeRecords() {\n if (this.addedNodes.length || this.removedNodes.length) {\n let mutations = [{\n addedNodes: this.addedNodes,\n removedNodes: this.removedNodes\n }];\n this.addedNodes = [];\n this.removedNodes = [];\n return mutations;\n }\n return [];\n }\n\n}\n\n// TODO(sorvell): consider instead polyfilling MutationObserver\n// directly so that users do not have to fork their code.\n// Supporting the entire api may be challenging: e.g. filtering out\n// removed nodes in the wrong scope and seeing non-distributing\n// subtree child mutations.\nexport let observeChildren = function(node, callback) {\n const sd = ensureShadyDataForNode(node);\n if (!sd.observer) {\n sd.observer = new AsyncObserver();\n }\n sd.observer.callbacks.add(callback);\n let observer = sd.observer;\n return {\n _callback: callback,\n _observer: observer,\n _node: node,\n takeRecords() {\n return observer.takeRecords()\n }\n };\n}\n\nexport let unobserveChildren = function(handle) {\n let observer = handle && handle._observer;\n if (observer) {\n observer.callbacks.delete(handle._callback);\n if (!observer.callbacks.size) {\n ensureShadyDataForNode(handle._node).observer = null;\n }\n }\n}\n\nexport function filterMutations(mutations, target) {\n /** @const {Node} */\n const targetRootNode = target.getRootNode();\n return mutations.map(function(mutation) {\n /** @const {boolean} */\n const mutationInScope = (targetRootNode === mutation.target.getRootNode());\n if (mutationInScope && mutation.addedNodes) {\n let nodes = Array.from(mutation.addedNodes).filter(function(n) {\n return (targetRootNode === n.getRootNode());\n });\n if (nodes.length) {\n mutation = Object.create(mutation);\n Object.defineProperty(mutation, 'addedNodes', {\n value: nodes,\n configurable: true\n });\n return mutation;\n }\n } else if (mutationInScope) {\n return mutation;\n }\n }).filter(function(m) { return m});\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nexport let appendChild = Element.prototype.appendChild;\nexport let insertBefore = Element.prototype.insertBefore;\nexport let replaceChild = Element.prototype.replaceChild;\nexport let removeChild = Element.prototype.removeChild;\nexport let setAttribute = Element.prototype.setAttribute;\nexport let removeAttribute = Element.prototype.removeAttribute;\nexport let cloneNode = Element.prototype.cloneNode;\nexport let importNode = Document.prototype.importNode;\nexport let addEventListener = Element.prototype.addEventListener;\nexport let removeEventListener = Element.prototype.removeEventListener;\nexport let windowAddEventListener = Window.prototype.addEventListener;\nexport let windowRemoveEventListener = Window.prototype.removeEventListener;\nexport let dispatchEvent = Element.prototype.dispatchEvent;\nexport let contains = Node.prototype.contains || HTMLElement.prototype.contains;\nexport let getElementById = Document.prototype.getElementById;\nexport let elementQuerySelector = Element.prototype.querySelector;\nexport let fragmentQuerySelector = DocumentFragment.prototype.querySelector;\nexport let documentQuerySelector = Document.prototype.querySelector;\nexport let querySelector = function(selector) {\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n return elementQuerySelector.call(this, selector);\n case Node.DOCUMENT_NODE:\n return documentQuerySelector.call(this, selector);\n default:\n return fragmentQuerySelector.call(this, selector);\n }\n};\nexport let elementQuerySelectorAll = Element.prototype.querySelectorAll;\nexport let fragmentQuerySelectorAll = DocumentFragment.prototype.querySelectorAll;\nexport let documentQuerySelectorAll = Document.prototype.querySelectorAll;\nexport let querySelectorAll = function(selector) {\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n return elementQuerySelectorAll.call(this, selector);\n case Node.DOCUMENT_NODE:\n return documentQuerySelectorAll.call(this, selector);\n default:\n return fragmentQuerySelectorAll.call(this, selector);\n }\n};","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n// Cribbed from ShadowDOM polyfill\n// https://github.com/webcomponents/webcomponentsjs/blob/master/src/ShadowDOM/wrappers/HTMLElement.js#L28\n/////////////////////////////////////////////////////////////////////////////\n// innerHTML and outerHTML\n\n// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#escapingString\nlet escapeAttrRegExp = /[&\\u00A0\"]/g;\nlet escapeDataRegExp = /[&\\u00A0<>]/g;\n\nfunction escapeReplace(c) {\n switch (c) {\n case '&':\n return '&amp;';\n case '<':\n return '&lt;';\n case '>':\n return '&gt;';\n case '\"':\n return '&quot;';\n case '\\u00A0':\n return '&nbsp;';\n }\n}\n\nfunction escapeAttr(s) {\n return s.replace(escapeAttrRegExp, escapeReplace);\n}\n\nfunction escapeData(s) {\n return s.replace(escapeDataRegExp, escapeReplace);\n}\n\nfunction makeSet(arr) {\n let set = {};\n for (let i = 0; i < arr.length; i++) {\n set[arr[i]] = true;\n }\n return set;\n}\n\n// http://www.whatwg.org/specs/web-apps/current-work/#void-elements\nlet voidElements = makeSet([\n 'area',\n 'base',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]);\n\nlet plaintextParents = makeSet([\n 'style',\n 'script',\n 'xmp',\n 'iframe',\n 'noembed',\n 'noframes',\n 'plaintext',\n 'noscript'\n]);\n\n/**\n * @param {Node} node\n * @param {Node} parentNode\n * @param {Function=} callback\n */\nexport function getOuterHTML(node, parentNode, callback) {\n switch (node.nodeType) {\n case Node.ELEMENT_NODE: {\n let tagName = node.localName;\n let s = '<' + tagName;\n let attrs = node.attributes;\n for (let i = 0, attr; (attr = attrs[i]); i++) {\n s += ' ' + attr.name + '=\"' + escapeAttr(attr.value) + '\"';\n }\n s += '>';\n if (voidElements[tagName]) {\n return s;\n }\n return s + getInnerHTML(node, callback) + '</' + tagName + '>';\n }\n case Node.TEXT_NODE: {\n let data = /** @type {Text} */ (node).data;\n if (parentNode && plaintextParents[parentNode.localName]) {\n return data;\n }\n return escapeData(data);\n }\n case Node.COMMENT_NODE: {\n return '<!--' + /** @type {Comment} */ (node).data + '-->';\n }\n default: {\n window.console.error(node);\n throw new Error('not implemented');\n }\n }\n}\n\n/**\n * @param {Node} node\n * @param {Function=} callback\n */\nexport function getInnerHTML(node, callback) {\n if (node.localName === 'template') {\n node = /** @type {HTMLTemplateElement} */ (node).content;\n }\n let s = '';\n let c$ = callback ? callback(node) : node.childNodes;\n for (let i=0, l=c$.length, child; (i<l) && (child=c$[i]); i++) {\n s += getOuterHTML(child, node, callback);\n }\n return s;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {getInnerHTML} from './innerHTML.js';\n\nlet nodeWalker = document.createTreeWalker(document, NodeFilter.SHOW_ALL,\n null, false);\n\nlet elementWalker = document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT,\n null, false);\n\nexport function parentNode(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.parentNode();\n}\n\nexport function firstChild(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.firstChild();\n}\n\nexport function lastChild(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.lastChild();\n}\n\nexport function previousSibling(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.previousSibling();\n}\n\nexport function nextSibling(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.nextSibling();\n}\n\nexport function childNodes(node) {\n let nodes = [];\n nodeWalker.currentNode = node;\n let n = nodeWalker.firstChild();\n while (n) {\n nodes.push(n);\n n = nodeWalker.nextSibling();\n }\n return nodes;\n}\n\nexport function parentElement(node) {\n elementWalker.currentNode = node;\n return elementWalker.parentNode();\n}\n\nexport function firstElementChild(node) {\n elementWalker.currentNode = node;\n return elementWalker.firstChild();\n}\n\nexport function lastElementChild(node) {\n elementWalker.currentNode = node;\n return elementWalker.lastChild();\n}\n\nexport function previousElementSibling(node) {\n elementWalker.currentNode = node;\n return elementWalker.previousSibling();\n}\n\nexport function nextElementSibling(node) {\n elementWalker.currentNode = node;\n return elementWalker.nextSibling();\n}\n\nexport function children(node) {\n let nodes = [];\n elementWalker.currentNode = node;\n let n = elementWalker.firstChild();\n while (n) {\n nodes.push(n);\n n = elementWalker.nextSibling();\n }\n return nodes;\n}\n\nexport function innerHTML(node) {\n return getInnerHTML(node, (n) => childNodes(n));\n}\n\nexport function textContent(node) {\n /* eslint-disable no-case-declarations */\n switch (node.nodeType) {\n case Node.ELEMENT_NODE:\n case Node.DOCUMENT_FRAGMENT_NODE:\n let textWalker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT,\n null, false);\n let content = '', n;\n while ( (n = textWalker.nextNode()) ) {\n // TODO(sorvell): can't use textContent since we patch it on Node.prototype!\n // However, should probably patch it only on element.\n content += n.nodeValue;\n }\n return content;\n default:\n return node.nodeValue;\n }\n /* eslint-enable */\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nimport * as utils from './utils.js';\n\nconst hasDescriptors = utils.settings.hasDescriptors;\n\n// Find descriptor on the \"lowest\" native prototype. Safe as these are not\n// overridden and we call these on nodes.\nconst nativeProtos = [Node.prototype, Element.prototype, HTMLElement.prototype];\n// note, avoid Array.find for IE11 compat.\nfunction findNativeProtoWithDescriptor(name) {\n for (let i=0; i < nativeProtos.length; i++) {\n const proto = nativeProtos[i];\n if (proto.hasOwnProperty(name)) {\n return proto;\n }\n }\n}\nfunction findNodeDescriptor(name) {\n const proto = findNativeProtoWithDescriptor(name);\n if (!proto) {\n throw Error(`Could not find descriptor for ${name}`);\n }\n return Object.getOwnPropertyDescriptor(proto, name);\n}\n\nexport const nodeAccessors = hasDescriptors ? {\n parentNode: findNodeDescriptor('parentNode'),\n firstChild: findNodeDescriptor('firstChild'),\n lastChild: findNodeDescriptor('lastChild'),\n previousSibling: findNodeDescriptor('previousSibling'),\n nextSibling: findNodeDescriptor('nextSibling'),\n childNodes: findNodeDescriptor('childNodes'),\n parentElement: findNodeDescriptor('parentElement'),\n previousElementSibling: findNodeDescriptor('previousElementSibling'),\n nextElementSibling: findNodeDescriptor('nextElementSibling'),\n innerHTML: findNodeDescriptor('innerHTML'),\n textContent: findNodeDescriptor('textContent'),\n firstElementChild: findNodeDescriptor('firstElementChild'),\n lastElementChild: findNodeDescriptor('lastElementChild'),\n children: findNodeDescriptor('children'),\n} : {};\n\nexport const fragmentAccessors = hasDescriptors ? {\n firstElementChild: Object.getOwnPropertyDescriptor(\n DocumentFragment.prototype, 'firstElementChild'),\n lastElementChild: Object.getOwnPropertyDescriptor(\n DocumentFragment.prototype, 'lastElementChild'),\n children: Object.getOwnPropertyDescriptor(\n DocumentFragment.prototype, 'children')\n} : {};\n\nexport const documentAccessors = hasDescriptors ? {\n firstElementChild: Object.getOwnPropertyDescriptor(\n Document.prototype, 'firstElementChild'),\n lastElementChild: Object.getOwnPropertyDescriptor(\n Document.prototype, 'lastElementChild'),\n children: Object.getOwnPropertyDescriptor(\n Document.prototype, 'children')\n} : {};\n\nexport function parentNode(node) {\n return nodeAccessors.parentNode.get.call(node);\n}\n\nexport function firstChild(node) {\n return nodeAccessors.firstChild.get.call(node);\n}\n\nexport function lastChild(node) {\n return nodeAccessors.lastChild.get.call(node);\n}\n\nexport function previousSibling(node) {\n return nodeAccessors.previousSibling.get.call(node);\n}\n\nexport function nextSibling(node) {\n return nodeAccessors.nextSibling.get.call(node);\n}\n\nexport function childNodes(node) {\n return Array.prototype.slice.call(nodeAccessors.childNodes.get.call(node));\n}\n\nexport function parentElement(node) {\n return nodeAccessors.parentElement.get.call(node);\n}\n\nexport function previousElementSibling(node) {\n return nodeAccessors.previousElementSibling.get.call(node);\n}\n\nexport function nextElementSibling(node) {\n return nodeAccessors.nextElementSibling.get.call(node);\n}\n\nexport function innerHTML(node) {\n return nodeAccessors.innerHTML.get.call(node);\n}\n\nexport function textContent(node) {\n return nodeAccessors.textContent.get.call(node);\n}\n\nexport function children(node) {\n let children;\n switch (node.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n children = fragmentAccessors.children.get.call(node);\n break;\n case Node.DOCUMENT_NODE:\n children = documentAccessors.children.get.call(node);\n break;\n default:\n children = nodeAccessors.children.get.call(node);\n break;\n }\n return Array.prototype.slice.call(children);\n}\n\nexport function firstElementChild(node) {\n switch (node.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n return fragmentAccessors.firstElementChild.get.call(node);\n case Node.DOCUMENT_NODE:\n return documentAccessors.firstElementChild.get.call(node);\n default:\n return nodeAccessors.firstElementChild.get.call(node);\n }\n}\n\nexport function lastElementChild(node) {\n switch (node.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n return fragmentAccessors.lastElementChild.get.call(node);\n case Node.DOCUMENT_NODE:\n return documentAccessors.lastElementChild.get.call(node);\n default:\n return nodeAccessors.lastElementChild.get.call(node);\n }\n}","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as nativeTreeWalker from './native-tree-walker.js';\nimport * as nativeTreeAccessors from './native-tree-accessors.js';\nimport * as utils from './utils.js';\n\nexport const accessors = utils.settings.useNativeAccessors ?\n nativeTreeAccessors : nativeTreeWalker;","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {getInnerHTML} from './innerHTML.js';\nimport {accessors as nativeTree} from './native-tree.js';\nimport {nodeAccessors as nativeAccessors} from './native-tree-accessors.js';\nimport {contains as nativeContains} from './native-methods.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nfunction clearNode(node) {\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n}\n\nconst hasDescriptors = utils.settings.hasDescriptors;\nconst inertDoc = document.implementation.createHTMLDocument('inert');\n\nconst nativeIsConnectedAccessors =\n/** @type {ObjectPropertyDescriptor} */(\n Object.getOwnPropertyDescriptor(Node.prototype, 'isConnected')\n);\n\nconst nativeIsConnected = nativeIsConnectedAccessors && nativeIsConnectedAccessors.get;\n\nconst nativeActiveElementDescriptor =\n /** @type {ObjectPropertyDescriptor} */(\n Object.getOwnPropertyDescriptor(Document.prototype, 'activeElement')\n );\nfunction getDocumentActiveElement() {\n if (nativeActiveElementDescriptor && nativeActiveElementDescriptor.get) {\n return nativeActiveElementDescriptor.get.call(document);\n } else if (!utils.settings.hasDescriptors) {\n return document.activeElement;\n }\n}\n\nfunction activeElementForNode(node) {\n let active = getDocumentActiveElement();\n // In IE11, activeElement might be an empty object if the document is\n // contained in an iframe.\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10998788/\n if (!active || !active.nodeType) {\n return null;\n }\n let isShadyRoot = !!(utils.isShadyRoot(node));\n if (node !== document) {\n // If this node isn't a document or shady root, then it doesn't have\n // an active element.\n if (!isShadyRoot) {\n return null;\n }\n // If this shady root's host is the active element or the active\n // element is not a descendant of the host (in the composed tree),\n // then it doesn't have an active element.\n if (node.host === active ||\n !nativeContains.call(node.host, active)) {\n return null;\n }\n }\n // This node is either the document or a shady root of which the active\n // element is a (composed) descendant of its host; iterate upwards to\n // find the active element's most shallow host within it.\n let activeRoot = utils.ownerShadyRootForNode(active);\n while (activeRoot && activeRoot !== node) {\n active = activeRoot.host;\n activeRoot = utils.ownerShadyRootForNode(active);\n }\n if (node === document) {\n // This node is the document, so activeRoot should be null.\n return activeRoot ? null : active;\n } else {\n // This node is a non-document shady root, and it should be\n // activeRoot.\n return activeRoot === node ? active : null;\n }\n}\n\nlet OutsideAccessors = {\n\n parentElement: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n let l = nodeData && nodeData.parentNode;\n if (l && l.nodeType !== Node.ELEMENT_NODE) {\n l = null;\n }\n return l !== undefined ? l : nativeTree.parentElement(this);\n },\n configurable: true\n },\n\n parentNode: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.parentNode;\n return l !== undefined ? l : nativeTree.parentNode(this);\n },\n configurable: true\n },\n\n nextSibling: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.nextSibling;\n return l !== undefined ? l : nativeTree.nextSibling(this);\n },\n configurable: true\n },\n\n previousSibling: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.previousSibling;\n return l !== undefined ? l : nativeTree.previousSibling(this);\n },\n configurable: true\n },\n\n // fragment, element, document\n nextElementSibling: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.nextSibling !== undefined) {\n let n = this.nextSibling;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.nextSibling;\n }\n return n;\n } else {\n return nativeTree.nextElementSibling(this);\n }\n },\n configurable: true\n },\n\n previousElementSibling: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.previousSibling !== undefined) {\n let n = this.previousSibling;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.previousSibling;\n }\n return n;\n } else {\n return nativeTree.previousElementSibling(this);\n }\n },\n configurable: true\n }\n\n};\n\nexport const ClassNameAccessor = {\n className: {\n /**\n * @this {HTMLElement}\n */\n get() {\n return this.getAttribute('class') || '';\n },\n /**\n * @this {HTMLElement}\n */\n set(value) {\n this.setAttribute('class', value);\n },\n configurable: true\n }\n}\n\nexport const IsConnectedAccessor = {\n\n isConnected: {\n /**\n * @this {Node}\n */\n get() {\n if (nativeIsConnected && nativeIsConnected.call(this)) {\n return true;\n }\n if (this.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {\n return false;\n }\n // Fast path for distributed nodes.\n const ownerDocument = this.ownerDocument;\n if (utils.hasDocumentContains) {\n if (nativeContains.call(ownerDocument, this)) {\n return true;\n }\n } else if (ownerDocument.documentElement &&\n nativeContains.call(ownerDocument.documentElement, this)) {\n return true;\n }\n // Slow path for non-distributed nodes.\n let node = this;\n while (node && !(node instanceof Document)) {\n node = node.parentNode || (utils.isShadyRoot(node) ? /** @type {ShadowRoot} */(node).host : undefined);\n }\n return !!(node && node instanceof Document);\n },\n configurable: true\n }\n};\n\nlet InsideAccessors = {\n\n childNodes: {\n /**\n * @this {HTMLElement}\n */\n get() {\n let childNodes;\n if (utils.isTrackingLogicalChildNodes(this)) {\n const nodeData = shadyDataForNode(this);\n if (!nodeData.childNodes) {\n nodeData.childNodes = [];\n for (let n=this.firstChild; n; n=n.nextSibling) {\n nodeData.childNodes.push(n);\n }\n }\n childNodes = nodeData.childNodes;\n } else {\n childNodes = nativeTree.childNodes(this);\n }\n childNodes.item = function(index) {\n return childNodes[index];\n }\n return childNodes;\n },\n configurable: true\n },\n\n childElementCount: {\n /** @this {HTMLElement} */\n get() {\n return this.children.length;\n },\n configurable: true\n },\n\n firstChild: {\n /** @this {HTMLElement} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.firstChild;\n return l !== undefined ? l : nativeTree.firstChild(this);\n },\n configurable: true\n },\n\n lastChild: {\n /** @this {HTMLElement} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.lastChild;\n return l !== undefined ? l : nativeTree.lastChild(this);\n },\n configurable: true\n },\n\n textContent: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (utils.isTrackingLogicalChildNodes(this)) {\n let tc = [];\n for (let i = 0, cn = this.childNodes, c; (c = cn[i]); i++) {\n if (c.nodeType !== Node.COMMENT_NODE) {\n tc.push(c.textContent);\n }\n }\n return tc.join('');\n } else {\n return nativeTree.textContent(this);\n }\n },\n /**\n * @this {HTMLElement}\n * @param {string} text\n */\n set(text) {\n if (typeof text === 'undefined' || text === null) {\n text = ''\n }\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n case Node.DOCUMENT_FRAGMENT_NODE:\n if (!utils.isTrackingLogicalChildNodes(this) && hasDescriptors) {\n // may be removing a nested slot but fast path if we know we are not.\n const firstChild = this.firstChild;\n if (firstChild != this.lastChild ||\n (firstChild && firstChild.nodeType != Node.TEXT_NODE)) {\n clearNode(this);\n }\n nativeAccessors.textContent.set.call(this, text);\n } else {\n clearNode(this);\n // Document fragments must have no childnodes if setting a blank string\n if (text.length > 0 || this.nodeType === Node.ELEMENT_NODE) {\n this.appendChild(document.createTextNode(text));\n }\n }\n break;\n default:\n // TODO(sorvell): can't do this if patch nodeValue.\n this.nodeValue = text;\n break;\n }\n },\n configurable: true\n },\n\n // fragment, element, document\n firstElementChild: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.firstChild !== undefined) {\n let n = this.firstChild;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.nextSibling;\n }\n return n;\n } else {\n return nativeTree.firstElementChild(this);\n }\n },\n configurable: true\n },\n\n lastElementChild: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.lastChild !== undefined) {\n let n = this.lastChild;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.previousSibling;\n }\n return n;\n } else {\n return nativeTree.lastElementChild(this);\n }\n },\n configurable: true\n },\n\n children: {\n /**\n * @this {HTMLElement}\n */\n get() {\n let children;\n if (utils.isTrackingLogicalChildNodes(this)) {\n children = Array.prototype.filter.call(this.childNodes, function(n) {\n return (n.nodeType === Node.ELEMENT_NODE);\n });\n } else {\n children = nativeTree.children(this);\n }\n children.item = function(index) {\n return children[index];\n }\n return children;\n },\n configurable: true\n },\n\n // element (HTMLElement on IE11)\n innerHTML: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (utils.isTrackingLogicalChildNodes(this)) {\n const content = this.localName === 'template' ?\n /** @type {HTMLTemplateElement} */(this).content : this;\n return getInnerHTML(content);\n } else {\n return nativeTree.innerHTML(this);\n }\n },\n /**\n * @this {HTMLElement}\n */\n set(text) {\n const content = this.localName === 'template' ?\n /** @type {HTMLTemplateElement} */(this).content : this;\n clearNode(content);\n let containerName = this.localName;\n // avoid creating a template so we don't have to pull nodes form `.content`\n if (!containerName || containerName === 'template') {\n containerName = 'div';\n }\n const htmlContainer = inertDoc.createElement(containerName);\n if (hasDescriptors) {\n nativeAccessors.innerHTML.set.call(htmlContainer, text);\n } else {\n htmlContainer.innerHTML = text;\n }\n while (htmlContainer.firstChild) {\n content.appendChild(htmlContainer.firstChild);\n }\n },\n configurable: true\n }\n\n};\n\n// Note: Can be patched on element prototype on all browsers.\n// Must be patched on instance on browsers that support native Shadow DOM\n// but do not have builtin accessors (old Chrome).\nexport let ShadowRootAccessor = {\n\n shadowRoot: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n return nodeData && nodeData.publicRoot || null;\n },\n configurable: true\n }\n};\n\n// Note: Can be patched on document prototype on browsers with builtin accessors.\n// Must be patched separately on simulated ShadowRoot.\n// Must be patched as `_activeElement` on browsers without builtin accessors.\nexport let ActiveElementAccessor = {\n\n activeElement: {\n /**\n * @this {HTMLElement}\n */\n get() {\n return activeElementForNode(this);\n },\n /**\n * @this {HTMLElement}\n */\n set() {},\n configurable: true\n }\n\n};\n\n// patch a group of descriptors on an object only if it exists or if the `force`\n// argument is true.\n/**\n * @param {!Object} obj\n * @param {!Object} descriptors\n * @param {boolean=} force\n */\nfunction patchAccessorGroup(obj, descriptors, force) {\n for (let p in descriptors) {\n let objDesc = Object.getOwnPropertyDescriptor(obj, p);\n if ((objDesc && objDesc.configurable) ||\n (!objDesc && force)) {\n Object.defineProperty(obj, p, descriptors[p]);\n } else if (force) {\n console.warn('Could not define', p, 'on', obj); // eslint-disable-line no-console\n }\n }\n}\n\n// patch dom accessors on proto where they exist\nexport function patchAccessors(proto) {\n patchAccessorGroup(proto, OutsideAccessors);\n patchAccessorGroup(proto, ClassNameAccessor);\n patchAccessorGroup(proto, InsideAccessors);\n patchAccessorGroup(proto, ActiveElementAccessor);\n}\n\nexport function patchShadowRootAccessors(proto) {\n proto.__proto__ = DocumentFragment.prototype;\n // ensure element descriptors (IE/Edge don't have em)\n patchAccessorGroup(proto, OutsideAccessors, true);\n patchAccessorGroup(proto, InsideAccessors, true);\n patchAccessorGroup(proto, ActiveElementAccessor, true);\n // Ensure native properties are all safely wrapped since ShadowRoot is not an\n // actual DocumentFragment instance.\n Object.defineProperties(proto, {\n nodeType: {\n value: Node.DOCUMENT_FRAGMENT_NODE,\n configurable: true\n },\n nodeName: {\n value: '#document-fragment',\n configurable: true\n },\n nodeValue: {\n value: null,\n configurable: true\n }\n });\n // make undefined\n [\n 'localName',\n 'namespaceURI',\n 'prefix'\n ].forEach((prop) => {\n Object.defineProperty(proto, prop, {\n value: undefined,\n configurable: true\n });\n });\n // defer properties to host\n [\n 'ownerDocument',\n 'baseURI',\n 'isConnected'\n ].forEach((prop) => {\n Object.defineProperty(proto, prop, {\n get() {\n return this.host[prop];\n },\n configurable: true\n });\n });\n}\n\n// ensure an element has patched \"outside\" accessors; no-op when not needed\nexport let patchOutsideElementAccessors = utils.settings.hasDescriptors ?\n function() {} : function(element) {\n const sd = ensureShadyDataForNode(element);\n if (!sd.__outsideAccessors) {\n sd.__outsideAccessors = true;\n patchAccessorGroup(element, OutsideAccessors, true);\n patchAccessorGroup(element, ClassNameAccessor, true);\n }\n }\n\n// ensure an element has patched \"inside\" accessors; no-op when not needed\nexport let patchInsideElementAccessors = utils.settings.hasDescriptors ?\n function() {} : function(element) {\n const sd = ensureShadyDataForNode(element);\n if (!sd.__insideAccessors) {\n patchAccessorGroup(element, InsideAccessors, true);\n patchAccessorGroup(element, ShadowRootAccessor, true);\n }\n }\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {calculateSplices} from './array-splice.js';\nimport * as utils from './utils.js';\nimport {enqueue} from './flush.js';\nimport {recordChildNodes} from './logical-tree.js';\nimport {removeChild, insertBefore, dispatchEvent} from './native-methods.js';\nimport {accessors} from './native-tree.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nconst {parentNode, childNodes} = accessors;\n\n// Do not export this object. It must be passed as the first argument to the\n// ShadyRoot constructor in `attachShadow` to prevent the constructor from\n// throwing. This prevents the user from being able to manually construct a\n// ShadyRoot (i.e. `new ShadowRoot()`).\nconst ShadyRootConstructionToken = {};\n\nconst CATCHALL_NAME = '__catchall';\nconst SHADYROOT_NAME = 'ShadyRoot';\n\nconst MODE_CLOSED = 'closed';\n\nfunction ancestorList(node) {\n let ancestors = [];\n do {\n ancestors.unshift(node);\n } while ((node = node.parentNode));\n return ancestors;\n}\n\n/**\n * @constructor\n * @extends {ShadowRoot}\n */\nexport class ShadyRoot {\n\n constructor(token, host, options) {\n if (token !== ShadyRootConstructionToken) {\n throw new TypeError('Illegal constructor');\n }\n // NOTE: set a fake local name so this element can be\n // distinguished from a DocumentFragment when patching.\n // FF doesn't allow this to be `localName`\n this._localName = SHADYROOT_NAME;\n const c$ = childNodes(host);\n // root <=> host\n this.host = host;\n this._mode = options && options.mode;\n // logical dom setup\n recordChildNodes(host, c$);\n const hostData = shadyDataForNode(host);\n hostData.root = this;\n hostData.publicRoot = this._mode !== MODE_CLOSED ? this : null;\n // setup root\n const rootData = ensureShadyDataForNode(this);\n rootData.firstChild = rootData.lastChild =\n rootData.parentNode = rootData.nextSibling =\n rootData.previousSibling = null;\n rootData.childNodes = [];\n // state flags\n this._renderPending = false;\n this._hasRendered = false;\n // marsalled lazily\n this._slotList = null;\n this._slotMap = null;\n this._pendingSlots = null;\n // fast path initial render: remove existing physical dom.\n for (let i=0, l=c$.length; i < l; i++) {\n removeChild.call(host, c$[i])\n }\n }\n\n // async render\n _asyncRender() {\n if (!this._renderPending) {\n this._renderPending = true;\n enqueue(() => this._render());\n }\n }\n\n // returns the oldest renderPending ancestor root.\n _getRenderRoot() {\n let renderRoot;\n let root = this;\n while (root) {\n if (root._renderPending) {\n renderRoot = root;\n }\n root = root._rendererForHost();\n }\n return renderRoot;\n }\n\n // Returns the shadyRoot `this.host` if `this.host`\n // has children that require distribution.\n _rendererForHost() {\n let root = this.host.getRootNode();\n if (utils.isShadyRoot(root)) {\n let c$ = this.host.childNodes;\n for (let i=0, c; i < c$.length; i++) {\n c = c$[i];\n if (this._isInsertionPoint(c)) {\n return root;\n }\n }\n }\n }\n\n _render() {\n const root = this._getRenderRoot();\n if (root) {\n root['_renderRoot']();\n }\n }\n\n // NOTE: avoid renaming to ease testability.\n ['_renderRoot']() {\n this._renderPending = false;\n if (this._slotList) {\n this._distribute();\n this._compose();\n }\n this._hasRendered = true;\n }\n\n _distribute() {\n this._validateSlots();\n // capture # of previously assigned nodes to help determine if dirty.\n for (let i=0, slot; i < this._slotList.length; i++) {\n slot = this._slotList[i];\n this._clearSlotAssignedNodes(slot);\n }\n // distribute host children.\n for (let n=this.host.firstChild; n; n=n.nextSibling) {\n this._distributeNodeToSlot(n);\n }\n // fallback content, slotchange, and dirty roots\n for (let i=0; i < this._slotList.length; i++) {\n const slot = this._slotList[i];\n const slotData = shadyDataForNode(slot);\n // distribute fallback content\n if (!slotData.assignedNodes.length) {\n for (let n=slot.firstChild; n; n=n.nextSibling) {\n this._distributeNodeToSlot(n, slot);\n }\n }\n const slotParentData = shadyDataForNode(slot.parentNode);\n const slotParentRoot = slotParentData && slotParentData.root;\n if (slotParentRoot && slotParentRoot._hasInsertionPoint()) {\n slotParentRoot['_renderRoot']();\n }\n this._addAssignedToFlattenedNodes(slotData.flattenedNodes,\n slotData.assignedNodes);\n let prevAssignedNodes = slotData._previouslyAssignedNodes;\n if (prevAssignedNodes) {\n for (let i=0; i < prevAssignedNodes.length; i++) {\n shadyDataForNode(prevAssignedNodes[i])._prevAssignedSlot = null;\n }\n slotData._previouslyAssignedNodes = null;\n // dirty if previously less assigned nodes than previously assigned.\n if (prevAssignedNodes.length > slotData.assignedNodes.length) {\n slotData.dirty = true;\n }\n }\n /* Note: A slot is marked dirty whenever a node is newly assigned to it\n or a node is assigned to a different slot (done in `_distributeNodeToSlot`)\n or if the number of nodes assigned to the slot has decreased (done above);\n */\n if (slotData.dirty) {\n slotData.dirty = false;\n this._fireSlotChange(slot);\n }\n }\n }\n\n /**\n * Distributes given `node` to the appropriate slot based on its `slot`\n * attribute. If `forcedSlot` is given, then the node is distributed to the\n * `forcedSlot`.\n * Note: slot to which the node is assigned will be marked dirty for firing\n * `slotchange`.\n * @param {Node} node\n * @param {Node=} forcedSlot\n *\n */\n _distributeNodeToSlot(node, forcedSlot) {\n const nodeData = ensureShadyDataForNode(node);\n let oldSlot = nodeData._prevAssignedSlot;\n nodeData._prevAssignedSlot = null;\n let slot = forcedSlot;\n if (!slot) {\n let name = node.slot || CATCHALL_NAME;\n const list = this._slotMap[name];\n slot = list && list[0];\n }\n if (slot) {\n const slotData = ensureShadyDataForNode(slot);\n slotData.assignedNodes.push(node);\n nodeData.assignedSlot = slot;\n } else {\n nodeData.assignedSlot = undefined;\n }\n if (oldSlot !== nodeData.assignedSlot) {\n if (nodeData.assignedSlot) {\n ensureShadyDataForNode(nodeData.assignedSlot).dirty = true;\n }\n }\n }\n\n /**\n * Clears the assignedNodes tracking data for a given `slot`. Note, the current\n * assigned node data is tracked (via _previouslyAssignedNodes and\n * _prevAssignedSlot) to see if `slotchange` should fire. This data may be out\n * of date at this time because the assigned nodes may have already been\n * distributed to another root. This is ok since this data is only used to\n * track changes.\n * @param {HTMLSlotElement} slot\n */\n _clearSlotAssignedNodes(slot) {\n const slotData = shadyDataForNode(slot);\n let n$ = slotData.assignedNodes;\n slotData.assignedNodes = [];\n slotData.flattenedNodes = [];\n slotData._previouslyAssignedNodes = n$;\n if (n$) {\n for (let i=0; i < n$.length; i++) {\n let n = shadyDataForNode(n$[i]);\n n._prevAssignedSlot = n.assignedSlot;\n // only clear if it was previously set to this slot;\n // this helps ensure that if the node has otherwise been distributed\n // ignore it.\n if (n.assignedSlot === slot) {\n n.assignedSlot = null;\n }\n }\n }\n }\n\n _addAssignedToFlattenedNodes(flattened, assigned) {\n for (let i=0, n; (i<assigned.length) && (n=assigned[i]); i++) {\n if (n.localName == 'slot') {\n const nestedAssigned = shadyDataForNode(n).assignedNodes;\n if (nestedAssigned && nestedAssigned.length) {\n this._addAssignedToFlattenedNodes(flattened, nestedAssigned);\n }\n } else {\n flattened.push(assigned[i]);\n }\n }\n }\n\n _fireSlotChange(slot) {\n // NOTE: cannot bubble correctly here so not setting bubbles: true\n // Safari tech preview does not bubble but chrome does\n // Spec says it bubbles (https://dom.spec.whatwg.org/#mutation-observers)\n dispatchEvent.call(slot, new Event('slotchange'));\n const slotData = shadyDataForNode(slot);\n if (slotData.assignedSlot) {\n this._fireSlotChange(slotData.assignedSlot);\n }\n }\n\n // Reify dom such that it is at its correct rendering position\n // based on logical distribution.\n // NOTE: here we only compose parents of <slot> elements and not the\n // shadowRoot into the host. The latter is performend via a fast path\n // in the `logical-mutation`.insertBefore.\n _compose() {\n const slots = this._slotList;\n let composeList = [];\n for (let i=0; i < slots.length; i++) {\n const parent = slots[i].parentNode;\n /* compose node only if:\n (1) parent does not have a shadowRoot since shadowRoot has already\n composed into the host\n (2) we're not already composing it\n [consider (n^2) but rare better than Set]\n */\n const parentData = shadyDataForNode(parent);\n if (!(parentData && parentData.root) &&\n composeList.indexOf(parent) < 0) {\n composeList.push(parent);\n }\n }\n for (let i=0; i < composeList.length; i++) {\n const node = composeList[i];\n const targetNode = node === this ? this.host : node;\n this._updateChildNodes(targetNode, this._composeNode(node));\n }\n }\n\n // Returns the list of nodes which should be rendered inside `node`.\n _composeNode(node) {\n let children = [];\n let c$ = node.childNodes;\n for (let i = 0; i < c$.length; i++) {\n let child = c$[i];\n // Note: if we see a slot here, the nodes are guaranteed to need to be\n // composed here. This is because if there is redistribution, it has\n // already been handled by this point.\n if (this._isInsertionPoint(child)) {\n let flattenedNodes = shadyDataForNode(child).flattenedNodes;\n for (let j = 0; j < flattenedNodes.length; j++) {\n let distributedNode = flattenedNodes[j];\n children.push(distributedNode);\n }\n } else {\n children.push(child);\n }\n }\n return children;\n }\n\n _isInsertionPoint(node) {\n return node.localName == 'slot';\n }\n\n // Ensures that the rendered node list inside `container` is `children`.\n _updateChildNodes(container, children) {\n let composed = childNodes(container);\n let splices = calculateSplices(children, composed);\n // process removals\n for (let i=0, d=0, s; (i<splices.length) && (s=splices[i]); i++) {\n for (let j=0, n; (j < s.removed.length) && (n=s.removed[j]); j++) {\n // check if the node is still where we expect it is before trying\n // to remove it; this can happen if we move a node and\n // then schedule its previous host for distribution resulting in\n // the node being removed here.\n if (parentNode(n) === container) {\n removeChild.call(container, n);\n }\n // TODO(sorvell): avoid the need for splicing here.\n composed.splice(s.index + d, 1);\n }\n d -= s.addedCount;\n }\n // process adds\n for (let i=0, s, next; (i<splices.length) && (s=splices[i]); i++) { //eslint-disable-line no-redeclare\n next = composed[s.index];\n for (let j=s.index, n; j < s.index + s.addedCount; j++) {\n n = children[j];\n insertBefore.call(container, n, next);\n composed.splice(j, 0, n);\n }\n }\n }\n\n _ensureSlotData() {\n this._pendingSlots = this._pendingSlots || [];\n this._slotList = this._slotList || [];\n this._slotMap = this._slotMap || {};\n }\n\n _addSlots(slots) {\n this._ensureSlotData();\n this._pendingSlots.push(...slots);\n }\n\n _validateSlots() {\n if (this._pendingSlots && this._pendingSlots.length) {\n this._mapSlots(this._pendingSlots);\n this._pendingSlots = [];\n }\n }\n\n /**\n * Adds the given slots. Slots are maintained in an dom-ordered list.\n * In addition a map of name to slot is updated.\n */\n _mapSlots(slots) {\n let slotNamesToSort;\n for (let i=0; i < slots.length; i++) {\n let slot = slots[i];\n // ensure insertionPoints's and their parents have logical dom info.\n // save logical tree info\n // a. for shadyRoot\n // b. for insertion points (fallback)\n // c. for parents of insertion points\n recordChildNodes(slot);\n recordChildNodes(slot.parentNode);\n let name = this._nameForSlot(slot);\n if (this._slotMap[name]) {\n slotNamesToSort = slotNamesToSort || {};\n slotNamesToSort[name] = true;\n this._slotMap[name].push(slot);\n } else {\n this._slotMap[name] = [slot];\n }\n this._slotList.push(slot);\n }\n if (slotNamesToSort) {\n for (let n in slotNamesToSort) {\n this._slotMap[n] = this._sortSlots(this._slotMap[n]);\n }\n }\n }\n\n _nameForSlot(slot) {\n const name = slot['name'] || slot.getAttribute('name') || CATCHALL_NAME;\n slot.__slotName = name;\n return name;\n }\n\n /**\n * Slots are kept in an ordered list. Slots with the same name\n * are sorted here by tree order.\n */\n _sortSlots(slots) {\n // NOTE: Cannot use `compareDocumentPosition` because it's not polyfilled,\n // but the code here could be used to polyfill the preceeding/following info\n // in `compareDocumentPosition`.\n return slots.sort((a, b) => {\n let listA = ancestorList(a);\n let listB = ancestorList(b);\n for (var i=0; i < listA.length; i++) {\n let nA = listA[i];\n let nB = listB[i];\n if (nA !== nB) {\n let c$ = Array.from(nA.parentNode.childNodes);\n return c$.indexOf(nA) - c$.indexOf(nB);\n }\n }\n });\n }\n\n /**\n * Removes from tracked slot data any slots contained within `container` and\n * then updates the tracked data (_slotList and _slotMap).\n * Any removed slots also have their `assignedNodes` removed from comopsed dom.\n */\n _removeContainedSlots(container) {\n if (!this._slotList) {\n return;\n }\n this._validateSlots();\n let didRemove;\n const map = this._slotMap;\n for (let n in map) {\n let slots = map[n];\n for (let i=0; i < slots.length; i++) {\n let slot = slots[i];\n if (utils.contains(container, slot)) {\n slots.splice(i, 1);\n const x = this._slotList.indexOf(slot);\n if (x >= 0) {\n this._slotList.splice(x, 1);\n }\n i--;\n this._removeFlattenedNodes(slot);\n didRemove = true;\n }\n }\n }\n return didRemove;\n }\n\n _updateSlotName(slot) {\n if (!this._slotList) {\n return;\n }\n const oldName = slot.__slotName;\n const name = this._nameForSlot(slot);\n if (name === oldName) {\n return;\n }\n // remove from existing tracking\n let slots = this._slotMap[oldName];\n const i = slots.indexOf(slot);\n if (i >= 0) {\n slots.splice(i, 1);\n }\n // add to new location and sort if nedessary\n let list = this._slotMap[name] || (this._slotMap[name] = []);\n list.push(slot);\n if (list.length > 1) {\n this._slotMap[name] = this._sortSlots(list);\n }\n }\n\n _removeFlattenedNodes(slot) {\n const data = shadyDataForNode(slot);\n let n$ = data.flattenedNodes;\n if (n$) {\n for (let i=0; i<n$.length; i++) {\n let node = n$[i];\n let parent = parentNode(node);\n if (parent) {\n removeChild.call(parent, node);\n }\n }\n }\n data.flattenedNodes = [];\n data.assignedNodes = [];\n }\n\n _hasInsertionPoint() {\n this._validateSlots();\n return Boolean(this._slotList && this._slotList.length);\n }\n}\n\n/**\n Implements a pared down version of ShadowDOM's scoping, which is easy to\n polyfill across browsers.\n*/\nexport function attachShadow(host, options) {\n if (!host) {\n throw 'Must provide a host.';\n }\n if (!options) {\n throw 'Not enough arguments.'\n }\n return new ShadyRoot(ShadyRootConstructionToken, host, options);\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {flush} from './flush.js';\nimport {dispatchEvent, querySelectorAll} from './native-methods.js';\nimport * as mutation from './logical-mutation.js';\nimport {ActiveElementAccessor, ShadowRootAccessor, patchAccessors, patchShadowRootAccessors, IsConnectedAccessor} from './patch-accessors.js';\nimport {addEventListener, removeEventListener} from './patch-events.js';\nimport {attachShadow, ShadyRoot} from './attach-shadow.js';\nimport {shadyDataForNode} from './shady-data.js';\n\nfunction getAssignedSlot(node) {\n mutation.renderRootNode(node);\n const nodeData = shadyDataForNode(node);\n return nodeData && nodeData.assignedSlot || null;\n}\n\nlet windowMixin = {\n\n // NOTE: ensure these methods are bound to `window` so that `this` is correct\n // when called directly from global context without a receiver; e.g.\n // `addEventListener(...)`.\n addEventListener: addEventListener.bind(window),\n\n removeEventListener: removeEventListener.bind(window)\n\n};\n\nlet nodeMixin = {\n\n addEventListener: addEventListener,\n\n removeEventListener: removeEventListener,\n\n appendChild(node) {\n return mutation.insertBefore(this, node);\n },\n\n insertBefore(node, ref_node) {\n return mutation.insertBefore(this, node, ref_node);\n },\n\n removeChild(node) {\n return mutation.removeChild(this, node);\n },\n\n /**\n * @this {Node}\n */\n replaceChild(node, ref_node) {\n mutation.insertBefore(this, node, ref_node);\n mutation.removeChild(this, ref_node);\n return node;\n },\n\n /**\n * @this {Node}\n */\n cloneNode(deep) {\n return mutation.cloneNode(this, deep);\n },\n\n /**\n * @this {Node}\n */\n getRootNode(options) {\n return mutation.getRootNode(this, options);\n },\n\n contains(node) {\n return utils.contains(this, node);\n },\n\n /**\n * @this {Node}\n */\n dispatchEvent(event) {\n flush();\n return dispatchEvent.call(this, event);\n }\n\n};\n\n// NOTE: we can do this regardless of the browser supporting native accessors\n// since this is always \"new\" in that case.\nObject.defineProperties(nodeMixin, IsConnectedAccessor);\n\n// NOTE: For some reason 'Text' redefines 'assignedSlot'\nlet textMixin = {\n /**\n * @this {Text}\n */\n get assignedSlot() {\n return getAssignedSlot(this);\n }\n};\n\nlet fragmentMixin = {\n\n // TODO(sorvell): consider doing native QSA and filtering results.\n /**\n * @this {DocumentFragment}\n */\n querySelector(selector) {\n // match selector and halt on first result.\n let result = mutation.query(this, function(n) {\n return utils.matchesSelector(n, selector);\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n },\n\n /**\n * @this {DocumentFragment}\n */\n // TODO(sorvell): `useNative` option relies on native querySelectorAll and\n // misses distributed nodes, see\n // https://github.com/webcomponents/shadydom/pull/210#issuecomment-361435503\n querySelectorAll(selector, useNative) {\n if (useNative) {\n const o = Array.prototype.slice.call(querySelectorAll(this, selector));\n const root = this.getRootNode();\n return o.filter(e => e.getRootNode() == root);\n }\n return mutation.query(this, function(n) {\n return utils.matchesSelector(n, selector);\n });\n }\n\n};\n\nlet slotMixin = {\n\n /**\n * @this {HTMLSlotElement}\n */\n assignedNodes(options) {\n if (this.localName === 'slot') {\n mutation.renderRootNode(this);\n const nodeData = shadyDataForNode(this);\n return nodeData ?\n ((options && options.flatten ? nodeData.flattenedNodes :\n nodeData.assignedNodes) || []) :\n [];\n }\n }\n\n};\n\nlet elementMixin = utils.extendAll({\n\n /**\n * @this {HTMLElement}\n */\n setAttribute(name, value) {\n mutation.setAttribute(this, name, value);\n },\n\n /**\n * @this {HTMLElement}\n */\n removeAttribute(name) {\n mutation.removeAttribute(this, name);\n },\n\n /**\n * @this {HTMLElement}\n */\n attachShadow(options) {\n return attachShadow(this, options);\n },\n\n /**\n * @this {HTMLElement}\n */\n get slot() {\n return this.getAttribute('slot');\n },\n\n /**\n * @this {HTMLElement}\n */\n set slot(value) {\n mutation.setAttribute(this, 'slot', value);\n },\n\n /**\n * @this {HTMLElement}\n */\n get assignedSlot() {\n return getAssignedSlot(this);\n }\n\n}, fragmentMixin, slotMixin);\n\nObject.defineProperties(elementMixin, ShadowRootAccessor);\n\nlet documentMixin = utils.extendAll({\n /**\n * @this {Document}\n */\n importNode(node, deep) {\n return mutation.importNode(node, deep);\n },\n\n /**\n * @this {Document}\n */\n getElementById(id) {\n let result = mutation.query(this, function(n) {\n return n.id == id;\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n }\n\n}, fragmentMixin);\n\nObject.defineProperties(documentMixin, {\n '_activeElement': ActiveElementAccessor.activeElement\n});\n\nlet nativeBlur = HTMLElement.prototype.blur;\n\nlet htmlElementMixin = utils.extendAll({\n /**\n * @this {HTMLElement}\n */\n blur() {\n const nodeData = shadyDataForNode(this);\n let root = nodeData && nodeData.root;\n let shadowActive = root && root.activeElement;\n if (shadowActive) {\n shadowActive.blur();\n } else {\n nativeBlur.call(this);\n }\n }\n});\n\nconst shadowRootMixin = {\n addEventListener(type, fn, optionsOrCapture) {\n if (typeof optionsOrCapture !== 'object') {\n optionsOrCapture = {\n capture: Boolean(optionsOrCapture)\n }\n }\n optionsOrCapture.__shadyTarget = this;\n this.host.addEventListener(type, fn, optionsOrCapture);\n },\n\n removeEventListener(type, fn, optionsOrCapture) {\n if (typeof optionsOrCapture !== 'object') {\n optionsOrCapture = {\n capture: Boolean(optionsOrCapture)\n }\n }\n optionsOrCapture.__shadyTarget = this;\n this.host.removeEventListener(type, fn, optionsOrCapture);\n },\n\n getElementById(id) {\n let result = mutation.query(this, function(n) {\n return n.id == id;\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n }\n}\n\nfunction patchBuiltin(proto, obj) {\n let n$ = Object.getOwnPropertyNames(obj);\n for (let i=0; i < n$.length; i++) {\n let n = n$[i];\n let d = Object.getOwnPropertyDescriptor(obj, n);\n // NOTE: we prefer writing directly here because some browsers\n // have descriptors that are writable but not configurable (e.g.\n // `appendChild` on older browsers)\n if (d.value) {\n proto[n] = d.value;\n } else {\n Object.defineProperty(proto, n, d);\n }\n }\n}\n\n// Apply patches to builtins (e.g. Element.prototype). Some of these patches\n// can be done unconditionally (mostly methods like\n// `Element.prototype.appendChild`) and some can only be done when the browser\n// has proper descriptors on the builtin prototype\n// (e.g. `Element.prototype.firstChild`)`. When descriptors are not available,\n// elements are individually patched when needed (see e.g.\n// `patchInside/OutsideElementAccessors` in `patch-accessors.js`).\nexport function patchBuiltins() {\n let nativeHTMLElement =\n (window['customElements'] && window['customElements']['nativeHTMLElement']) ||\n HTMLElement;\n // These patches can always be done, for all supported browsers.\n patchBuiltin(ShadyRoot.prototype, shadowRootMixin);\n patchBuiltin(window.Node.prototype, nodeMixin);\n patchBuiltin(window.Window.prototype, windowMixin);\n patchBuiltin(window.Text.prototype, textMixin);\n patchBuiltin(window.DocumentFragment.prototype, fragmentMixin);\n patchBuiltin(window.Element.prototype, elementMixin);\n patchBuiltin(window.Document.prototype, documentMixin);\n if (window.HTMLSlotElement) {\n patchBuiltin(window.HTMLSlotElement.prototype, slotMixin);\n }\n patchBuiltin(nativeHTMLElement.prototype, htmlElementMixin);\n // These patches can *only* be done\n // on browsers that have proper property descriptors on builtin prototypes.\n // This includes: IE11, Edge, Chrome >= 4?; Safari >= 10, Firefox\n // On older browsers (Chrome <= 4?, Safari 9), a per element patching\n // strategy is used for patching accessors.\n if (utils.settings.hasDescriptors) {\n patchAccessors(window.Node.prototype);\n patchAccessors(window.Text.prototype);\n patchAccessors(window.DocumentFragment.prototype);\n patchAccessors(window.Element.prototype);\n patchAccessors(nativeHTMLElement.prototype);\n patchAccessors(window.Document.prototype);\n if (window.HTMLSlotElement) {\n patchAccessors(window.HTMLSlotElement.prototype);\n }\n }\n patchShadowRootAccessors(ShadyRoot.prototype);\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {patchInsideElementAccessors, patchOutsideElementAccessors} from './patch-accessors.js';\nimport {accessors} from './native-tree.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nconst {childNodes} = accessors;\n\nexport function recordInsertBefore(node, container, ref_node) {\n patchInsideElementAccessors(container);\n const containerData = ensureShadyDataForNode(container);\n if (containerData.firstChild !== undefined) {\n containerData.childNodes = null;\n }\n // handle document fragments\n if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n let c$ = node.childNodes;\n for (let i=0; i < c$.length; i++) {\n linkNode(c$[i], container, ref_node);\n }\n // cleanup logical dom in doc fragment.\n const nodeData = ensureShadyDataForNode(node);\n let resetTo = (nodeData.firstChild !== undefined) ? null : undefined;\n nodeData.firstChild = nodeData.lastChild = resetTo;\n nodeData.childNodes = resetTo;\n } else {\n linkNode(node, container, ref_node);\n }\n}\n\nfunction linkNode(node, container, ref_node) {\n patchOutsideElementAccessors(node);\n ref_node = ref_node || null;\n const nodeData = ensureShadyDataForNode(node);\n const containerData = ensureShadyDataForNode(container);\n const ref_nodeData = ref_node ? ensureShadyDataForNode(ref_node) : null;\n // update ref_node.previousSibling <-> node\n nodeData.previousSibling = ref_node ? ref_nodeData.previousSibling :\n container.lastChild;\n let psd = shadyDataForNode(nodeData.previousSibling);\n if (psd) {\n psd.nextSibling = node;\n }\n // update node <-> ref_node\n let nsd = shadyDataForNode(nodeData.nextSibling = ref_node);\n if (nsd) {\n nsd.previousSibling = node;\n }\n // update node <-> container\n nodeData.parentNode = container;\n if (ref_node) {\n if (ref_node === containerData.firstChild) {\n containerData.firstChild = node;\n }\n } else {\n containerData.lastChild = node;\n if (!containerData.firstChild) {\n containerData.firstChild = node;\n }\n }\n // remove caching of childNodes\n containerData.childNodes = null;\n}\n\nexport function recordRemoveChild(node, container) {\n const nodeData = ensureShadyDataForNode(node);\n const containerData = ensureShadyDataForNode(container);\n if (node === containerData.firstChild) {\n containerData.firstChild = nodeData.nextSibling;\n }\n if (node === containerData.lastChild) {\n containerData.lastChild = nodeData.previousSibling;\n }\n let p = nodeData.previousSibling;\n let n = nodeData.nextSibling;\n if (p) {\n ensureShadyDataForNode(p).nextSibling = n;\n }\n if (n) {\n ensureShadyDataForNode(n).previousSibling = p;\n }\n // When an element is removed, logical data is no longer tracked.\n // Explicitly set `undefined` here to indicate this. This is disginguished\n // from `null` which is set if info is null.\n nodeData.parentNode = nodeData.previousSibling =\n nodeData.nextSibling = undefined;\n if (containerData.childNodes !== undefined) {\n // remove caching of childNodes\n containerData.childNodes = null;\n }\n}\n\nexport let recordChildNodes = function(node, nodes) {\n const nodeData = ensureShadyDataForNode(node);\n if (nodeData.firstChild === undefined) {\n const c$ = nodes || childNodes(node);\n nodeData.firstChild = c$[0] || null;\n nodeData.lastChild = c$[c$.length-1] || null;\n patchInsideElementAccessors(node);\n for (let i=0; i<c$.length; i++) {\n const n = c$[i];\n const sd = ensureShadyDataForNode(n);\n sd.parentNode = node;\n sd.nextSibling = c$[i+1] || null;\n sd.previousSibling = c$[i-1] || null;\n patchOutsideElementAccessors(n);\n }\n }\n}","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport * as logicalTree from './logical-tree.js';\nimport * as nativeMethods from './native-methods.js';\nimport {accessors} from './native-tree.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nconst {parentNode} = accessors;\n\n// Patched `insertBefore`. Note that all mutations that add nodes are routed\n// here. When a <slot> is added or a node is added to a host with a shadowRoot\n// with a slot, a standard dom `insert` call is aborted and `_asyncRender`\n// is called on the relevant shadowRoot. In all other cases, a standard dom\n// `insert` can be made, but the location and ref_node may need to be changed.\n/**\n * @param {Node} parent\n * @param {Node} node\n * @param {Node=} ref_node\n */\nexport function insertBefore(parent, node, ref_node) {\n if (node === parent) {\n throw Error(`Failed to execute 'appendChild' on 'Node': The new child element contains the parent.`);\n }\n if (ref_node) {\n const refData = shadyDataForNode(ref_node);\n const p = refData && refData.parentNode;\n if ((p !== undefined && p !== parent) ||\n (p === undefined && parentNode(ref_node) !== parent)) {\n throw Error(`Failed to execute 'insertBefore' on 'Node': The node ` +\n `before which the new node is to be inserted is not a child of this node.`);\n }\n }\n if (ref_node === node) {\n return node;\n }\n // remove from existing location\n if (node.parentNode) {\n // NOTE: avoid node.removeChild as this *can* trigger another patched\n // method (e.g. custom elements) and we want only the shady method to run.\n removeChild(node.parentNode, node);\n }\n // add to new parent\n let preventNativeInsert;\n let ownerRoot;\n let slotsAdded;\n if (!node['__noInsertionPoint']) {\n ownerRoot = utils.ownerShadyRootForNode(parent);\n slotsAdded = ownerRoot && findContainedSlots(node);\n if (slotsAdded) {\n ownerRoot._addSlots(slotsAdded);\n }\n }\n // if a slot is added, must render containing root.\n if (parent.localName === 'slot' || slotsAdded) {\n ownerRoot = ownerRoot || utils.ownerShadyRootForNode(parent);\n if (ownerRoot) {\n ownerRoot._asyncRender();\n }\n }\n if (utils.isTrackingLogicalChildNodes(parent)) {\n logicalTree.recordInsertBefore(node, parent, ref_node);\n // when inserting into a host with a shadowRoot with slot, use\n // `shadowRoot._asyncRender()` via `attach-shadow` module\n const parentData = shadyDataForNode(parent);\n if (hasShadowRootWithSlot(parent)) {\n parentData.root._asyncRender();\n preventNativeInsert = true;\n // when inserting into a host with shadowRoot with NO slot, do nothing\n // as the node should not be added to composed dome anywhere.\n } else if (parentData.root) {\n preventNativeInsert = true;\n }\n }\n if (!preventNativeInsert) {\n // if adding to a shadyRoot, add to host instead\n let container = utils.isShadyRoot(parent) ?\n /** @type {ShadowRoot} */(parent).host : parent;\n // if ref_node, get the ref_node that's actually in composed dom.\n if (ref_node) {\n ref_node = firstComposedNode(ref_node);\n nativeMethods.insertBefore.call(container, node, ref_node);\n } else {\n nativeMethods.appendChild.call(container, node);\n }\n }\n scheduleObserver(parent, node);\n return node;\n}\n\nfunction findContainedSlots(node) {\n let slots;\n if (node.localName === 'slot') {\n slots = [node];\n } else if (node.querySelectorAll) {\n slots = node.querySelectorAll('slot');\n }\n if (slots && slots.length) {\n return slots;\n }\n}\n\n/**\n * Patched `removeChild`. Note that all dom \"removals\" are routed here.\n * Removes the given `node` from the element's `children`.\n * This method also performs dom composition.\n * @param {Node} parent\n * @param {Node} node\n*/\nexport function removeChild(parent, node) {\n if (node.parentNode !== parent) {\n throw Error('The node to be removed is not a child of this node: ' +\n node);\n }\n let preventNativeRemove;\n let ownerRoot = utils.ownerShadyRootForNode(node);\n let removingInsertionPoint;\n const parentData = shadyDataForNode(parent);\n if (utils.isTrackingLogicalChildNodes(parent)) {\n logicalTree.recordRemoveChild(node, parent);\n if (hasShadowRootWithSlot(parent)) {\n parentData.root._asyncRender();\n preventNativeRemove = true;\n }\n }\n removeOwnerShadyRoot(node);\n // if removing slot, must render containing root\n if (ownerRoot) {\n let changeSlotContent = parent && parent.localName === 'slot';\n if (changeSlotContent) {\n preventNativeRemove = true;\n }\n removingInsertionPoint = ownerRoot._removeContainedSlots(node);\n if (removingInsertionPoint || changeSlotContent) {\n ownerRoot._asyncRender();\n }\n }\n if (!preventNativeRemove) {\n // if removing from a shadyRoot, remove form host instead\n let container = utils.isShadyRoot(parent) ?\n /** @type {ShadowRoot} */(parent).host :\n parent;\n // not guaranteed to physically be in container; e.g.\n // (1) if parent has a shadyRoot, element may or may not at distributed\n // location (could be undistributed)\n // (2) if parent is a slot, element may not ben in composed dom\n if (!(parentData.root || node.localName === 'slot') ||\n (container === parentNode(node))) {\n nativeMethods.removeChild.call(container, node);\n }\n }\n scheduleObserver(parent, null, node);\n return node;\n}\n\nfunction removeOwnerShadyRoot(node) {\n // optimization: only reset the tree if node is actually in a root\n if (hasCachedOwnerRoot(node)) {\n let c$ = node.childNodes;\n for (let i=0, l=c$.length, n; (i<l) && (n=c$[i]); i++) {\n removeOwnerShadyRoot(n);\n }\n }\n const nodeData = shadyDataForNode(node);\n if (nodeData) {\n nodeData.ownerShadyRoot = undefined;\n }\n}\n\nfunction hasCachedOwnerRoot(node) {\n const nodeData = shadyDataForNode(node);\n return Boolean(nodeData && nodeData.ownerShadyRoot !== undefined);\n}\n\n/**\n * Finds the first flattened node that is composed in the node's parent.\n * If the given node is a slot, then the first flattened node is returned\n * if it exists, otherwise advance to the node's nextSibling.\n * @param {Node} node within which to find first composed node\n * @returns {Node} first composed node\n */\nfunction firstComposedNode(node) {\n let composed = node;\n if (node && node.localName === 'slot') {\n const nodeData = shadyDataForNode(node);\n const flattened = nodeData && nodeData.flattenedNodes;\n composed = flattened && flattened.length ? flattened[0] :\n firstComposedNode(node.nextSibling);\n }\n return composed;\n}\n\nfunction hasShadowRootWithSlot(node) {\n const nodeData = shadyDataForNode(node);\n let root = nodeData && nodeData.root;\n return (root && root._hasInsertionPoint());\n}\n\n/**\n * Should be called whenever an attribute changes. If the `slot` attribute\n * changes, provokes rendering if necessary. If a `<slot>` element's `name`\n * attribute changes, updates the root's slot map and renders.\n * @param {Node} node\n * @param {string} name\n */\nfunction distributeAttributeChange(node, name) {\n if (name === 'slot') {\n const parent = node.parentNode;\n if (hasShadowRootWithSlot(parent)) {\n shadyDataForNode(parent).root._asyncRender();\n }\n } else if (node.localName === 'slot' && name === 'name') {\n let root = utils.ownerShadyRootForNode(node);\n if (root) {\n root._updateSlotName(node);\n root._asyncRender();\n }\n }\n}\n\n/**\n * @param {Node} node\n * @param {Node=} addedNode\n * @param {Node=} removedNode\n */\nfunction scheduleObserver(node, addedNode, removedNode) {\n const nodeData = shadyDataForNode(node);\n const observer = nodeData && nodeData.observer;\n if (observer) {\n if (addedNode) {\n observer.addedNodes.push(addedNode);\n }\n if (removedNode) {\n observer.removedNodes.push(removedNode);\n }\n observer.schedule();\n }\n}\n\n/**\n * @param {Node} node\n * @param {Object=} options\n */\nexport function getRootNode(node, options) { // eslint-disable-line no-unused-vars\n if (!node || !node.nodeType) {\n return;\n }\n const nodeData = ensureShadyDataForNode(node);\n let root = nodeData.ownerShadyRoot;\n if (root === undefined) {\n if (utils.isShadyRoot(node)) {\n root = node;\n nodeData.ownerShadyRoot = root;\n } else {\n let parent = node.parentNode;\n root = parent ? getRootNode(parent) : node;\n // memo-ize result for performance but only memo-ize\n // result if node is in the document. This avoids a problem where a root\n // can be cached while an element is inside a fragment.\n // If this happens and we cache the result, the value can become stale\n // because for perf we avoid processing the subtree of added fragments.\n if (nativeMethods.contains.call(document.documentElement, node)) {\n nodeData.ownerShadyRoot = root;\n }\n }\n\n }\n return root;\n}\n\n// NOTE: `query` is used primarily for ShadyDOM's querySelector impl,\n// but it's also generally useful to recurse through the element tree\n// and is used by Polymer's styling system.\n/**\n * @param {Node} node\n * @param {Function} matcher\n * @param {Function=} halter\n */\nexport function query(node, matcher, halter) {\n let list = [];\n queryElements(node.childNodes, matcher,\n halter, list);\n return list;\n}\n\nfunction queryElements(elements, matcher, halter, list) {\n for (let i=0, l=elements.length, c; (i<l) && (c=elements[i]); i++) {\n if (c.nodeType === Node.ELEMENT_NODE &&\n queryElement(c, matcher, halter, list)) {\n return true;\n }\n }\n}\n\nfunction queryElement(node, matcher, halter, list) {\n let result = matcher(node);\n if (result) {\n list.push(node);\n }\n if (halter && halter(result)) {\n return result;\n }\n queryElements(node.childNodes, matcher,\n halter, list);\n}\n\nexport function renderRootNode(element) {\n var root = element.getRootNode();\n if (utils.isShadyRoot(root)) {\n root._render();\n }\n}\n\nlet scopingShim = null;\n\nexport function setAttribute(node, attr, value) {\n if (!scopingShim) {\n scopingShim = window['ShadyCSS'] && window['ShadyCSS']['ScopingShim'];\n }\n if (scopingShim && attr === 'class') {\n scopingShim['setElementClass'](node, value);\n } else {\n nativeMethods.setAttribute.call(node, attr, value);\n distributeAttributeChange(node, attr);\n }\n}\n\nexport function removeAttribute(node, attr) {\n nativeMethods.removeAttribute.call(node, attr);\n distributeAttributeChange(node, attr);\n}\n\nexport function cloneNode(node, deep) {\n if (node.localName == 'template') {\n return nativeMethods.cloneNode.call(node, deep);\n } else {\n let n = nativeMethods.cloneNode.call(node, false);\n if (deep) {\n let c$ = node.childNodes;\n for (let i=0, nc; i < c$.length; i++) {\n nc = c$[i].cloneNode(true);\n n.appendChild(nc);\n }\n }\n return n;\n }\n}\n\n// note: Though not technically correct, we fast path `importNode`\n// when called on a node not owned by the main document.\n// This allows, for example, elements that cannot\n// contain custom elements and are therefore not likely to contain shadowRoots\n// to cloned natively. This is a fairly significant performance win.\nexport function importNode(node, deep) {\n if (node.ownerDocument !== document) {\n return nativeMethods.importNode.call(document, node, deep);\n }\n let n = nativeMethods.importNode.call(document, node, false);\n if (deep) {\n let c$ = node.childNodes;\n for (let i=0, nc; i < c$.length; i++) {\n nc = importNode(c$[i], true);\n n.appendChild(nc);\n }\n }\n return n;\n}",null,"/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport * as nativeMethods from './native-methods.js';\nimport {shadyDataForNode} from './shady-data.js';\n\n/*\nMake this name unique so it is unlikely to conflict with properties on objects passed to `addEventListener`\nhttps://github.com/webcomponents/shadydom/issues/173\n*/\nconst /** string */ eventWrappersName = `__eventWrappers${Date.now()}`;\n\n// https://github.com/w3c/webcomponents/issues/513#issuecomment-224183937\nlet alwaysComposed = {\n 'blur': true,\n 'focus': true,\n 'focusin': true,\n 'focusout': true,\n 'click': true,\n 'dblclick': true,\n 'mousedown': true,\n 'mouseenter': true,\n 'mouseleave': true,\n 'mousemove': true,\n 'mouseout': true,\n 'mouseover': true,\n 'mouseup': true,\n 'wheel': true,\n 'beforeinput': true,\n 'input': true,\n 'keydown': true,\n 'keyup': true,\n 'compositionstart': true,\n 'compositionupdate': true,\n 'compositionend': true,\n 'touchstart': true,\n 'touchend': true,\n 'touchmove': true,\n 'touchcancel': true,\n 'pointerover': true,\n 'pointerenter': true,\n 'pointerdown': true,\n 'pointermove': true,\n 'pointerup': true,\n 'pointercancel': true,\n 'pointerout': true,\n 'pointerleave': true,\n 'gotpointercapture': true,\n 'lostpointercapture': true,\n 'dragstart': true,\n 'drag': true,\n 'dragenter': true,\n 'dragleave': true,\n 'dragover': true,\n 'drop': true,\n 'dragend': true,\n 'DOMActivate': true,\n 'DOMFocusIn': true,\n 'DOMFocusOut': true,\n 'keypress': true\n};\n\nfunction pathComposer(startNode, composed) {\n let composedPath = [];\n let current = startNode;\n let startRoot = startNode === window ? window : startNode.getRootNode();\n while (current) {\n composedPath.push(current);\n if (current.assignedSlot) {\n current = current.assignedSlot;\n } else if (current.nodeType === Node.DOCUMENT_FRAGMENT_NODE && current.host && (composed || current !== startRoot)) {\n current = current.host;\n } else {\n current = current.parentNode;\n }\n }\n // event composedPath includes window when startNode's ownerRoot is document\n if (composedPath[composedPath.length - 1] === document) {\n composedPath.push(window);\n }\n return composedPath;\n}\n\nfunction retarget(refNode, path) {\n if (!utils.isShadyRoot) {\n return refNode;\n }\n // If ANCESTOR's root is not a shadow root or ANCESTOR's root is BASE's\n // shadow-including inclusive ancestor, return ANCESTOR.\n let refNodePath = pathComposer(refNode, true);\n let p$ = path;\n for (let i=0, ancestor, lastRoot, root, rootIdx; i < p$.length; i++) {\n ancestor = p$[i];\n root = ancestor === window ? window : ancestor.getRootNode();\n if (root !== lastRoot) {\n rootIdx = refNodePath.indexOf(root);\n lastRoot = root;\n }\n if (!utils.isShadyRoot(root) || rootIdx > -1) {\n return ancestor;\n }\n }\n}\n\nlet eventMixin = {\n\n /**\n * @this {Event}\n */\n get composed() {\n // isTrusted may not exist in this browser, so just check if isTrusted is explicitly false\n if (this.isTrusted !== false && this.__composed === undefined) {\n this.__composed = alwaysComposed[this.type];\n }\n return this.__composed || false;\n },\n\n /**\n * @this {Event}\n */\n composedPath() {\n if (!this.__composedPath) {\n this.__composedPath = pathComposer(this['__target'], this.composed);\n }\n return this.__composedPath;\n },\n\n /**\n * @this {Event}\n */\n get target() {\n return retarget(this.currentTarget, this.composedPath());\n },\n\n // http://w3c.github.io/webcomponents/spec/shadow/#event-relatedtarget-retargeting\n /**\n * @this {Event}\n */\n get relatedTarget() {\n if (!this.__relatedTarget) {\n return null;\n }\n if (!this.__relatedTargetComposedPath) {\n this.__relatedTargetComposedPath = pathComposer(this.__relatedTarget, true);\n }\n // find the deepest node in relatedTarget composed path that is in the same root with the currentTarget\n return retarget(this.currentTarget, this.__relatedTargetComposedPath);\n },\n /**\n * @this {Event}\n */\n stopPropagation() {\n Event.prototype.stopPropagation.call(this);\n this.__propagationStopped = true;\n },\n /**\n * @this {Event}\n */\n stopImmediatePropagation() {\n Event.prototype.stopImmediatePropagation.call(this);\n this.__immediatePropagationStopped = true;\n this.__propagationStopped = true;\n }\n\n};\n\nfunction mixinComposedFlag(Base) {\n // NOTE: avoiding use of `class` here so that transpiled output does not\n // try to do `Base.call` with a dom construtor.\n let klazz = function(type, options) {\n let event = new Base(type, options);\n event.__composed = options && Boolean(options['composed']);\n return event;\n }\n // put constructor properties on subclass\n utils.mixin(klazz, Base);\n klazz.prototype = Base.prototype;\n return klazz;\n}\n\nlet nonBubblingEventsToRetarget = {\n 'focus': true,\n 'blur': true\n};\n\n\n/**\n * Check if the event has been retargeted by comparing original `target`, and calculated `target`\n * @param {Event} event\n * @return {boolean} True if the original target and calculated target are the same\n */\nfunction hasRetargeted(event) {\n return event['__target'] !== event.target || event.__relatedTarget !== event.relatedTarget;\n}\n\n/**\n *\n * @param {Event} event\n * @param {Node} node\n * @param {string} phase\n */\nfunction fireHandlers(event, node, phase) {\n let hs = node.__handlers && node.__handlers[event.type] &&\n node.__handlers[event.type][phase];\n if (hs) {\n for (let i = 0, fn; (fn = hs[i]); i++) {\n if (hasRetargeted(event) && event.target === event.relatedTarget) {\n return;\n }\n fn.call(node, event);\n if (event.__immediatePropagationStopped) {\n return;\n }\n }\n }\n}\n\nfunction retargetNonBubblingEvent(e) {\n let path = e.composedPath();\n let node;\n // override `currentTarget` to let patched `target` calculate correctly\n Object.defineProperty(e, 'currentTarget', {\n get: function() {\n return node;\n },\n configurable: true\n });\n for (let i = path.length - 1; i >= 0; i--) {\n node = path[i];\n // capture phase fires all capture handlers\n fireHandlers(e, node, 'capture');\n if (e.__propagationStopped) {\n return;\n }\n }\n\n // set the event phase to `AT_TARGET` as in spec\n Object.defineProperty(e, 'eventPhase', {get() { return Event.AT_TARGET }});\n\n // the event only needs to be fired when owner roots change when iterating the event path\n // keep track of the last seen owner root\n let lastFiredRoot;\n for (let i = 0; i < path.length; i++) {\n node = path[i];\n const nodeData = shadyDataForNode(node);\n const root = nodeData && nodeData.root;\n if (i === 0 || (root && root === lastFiredRoot)) {\n fireHandlers(e, node, 'bubble');\n // don't bother with window, it doesn't have `getRootNode` and will be last in the path anyway\n if (node !== window) {\n lastFiredRoot = node.getRootNode();\n }\n if (e.__propagationStopped) {\n return;\n }\n }\n }\n}\n\nfunction listenerSettingsEqual(savedListener, node, type, capture, once, passive) {\n let {\n node: savedNode,\n type: savedType,\n capture: savedCapture,\n once: savedOnce,\n passive: savedPassive\n } = savedListener;\n return node === savedNode &&\n type === savedType &&\n capture === savedCapture &&\n once === savedOnce &&\n passive === savedPassive;\n}\n\nexport function findListener(wrappers, node, type, capture, once, passive) {\n for (let i = 0; i < wrappers.length; i++) {\n if (listenerSettingsEqual(wrappers[i], node, type, capture, once, passive)) {\n return i;\n }\n }\n return -1;\n}\n\n/**\n * Firefox can throw on accessing eventWrappers inside of `removeEventListener` during a selenium run\n * Try/Catch accessing eventWrappers to work around\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1353074\n */\nfunction getEventWrappers(eventLike) {\n let wrappers = null;\n try {\n wrappers = eventLike[eventWrappersName];\n } catch (e) {} // eslint-disable-line no-empty\n return wrappers;\n}\n\n/**\n * @this {Event}\n */\nexport function addEventListener(type, fnOrObj, optionsOrCapture) {\n if (!fnOrObj) {\n return;\n }\n\n const handlerType = typeof fnOrObj;\n\n // bail if `fnOrObj` is not a function, not an object\n if (handlerType !== 'function' && handlerType !== 'object') {\n return;\n }\n\n // bail if `fnOrObj` is an object without a `handleEvent` method\n if (handlerType === 'object' && (!fnOrObj.handleEvent || typeof fnOrObj.handleEvent !== 'function')) {\n return;\n }\n\n // The callback `fn` might be used for multiple nodes/events. Since we generate\n // a wrapper function, we need to keep track of it when we remove the listener.\n // It's more efficient to store the node/type/options information as Array in\n // `fn` itself rather than the node (we assume that the same callback is used\n // for few nodes at most, whereas a node will likely have many event listeners).\n // NOTE(valdrin) invoking external functions is costly, inline has better perf.\n let capture, once, passive;\n if (optionsOrCapture && typeof optionsOrCapture === 'object') {\n capture = Boolean(optionsOrCapture.capture);\n once = Boolean(optionsOrCapture.once);\n passive = Boolean(optionsOrCapture.passive);\n } else {\n capture = Boolean(optionsOrCapture);\n once = false;\n passive = false;\n }\n // hack to let ShadyRoots have event listeners\n // event listener will be on host, but `currentTarget`\n // will be set to shadyroot for event listener\n let target = (optionsOrCapture && optionsOrCapture.__shadyTarget) || this;\n\n let wrappers = fnOrObj[eventWrappersName];\n if (wrappers) {\n // Stop if the wrapper function has already been created.\n if (findListener(wrappers, target, type, capture, once, passive) > -1) {\n return;\n }\n } else {\n fnOrObj[eventWrappersName] = [];\n }\n\n /**\n * @this {HTMLElement}\n * @param {Event} e\n */\n const wrapperFn = function(e) {\n // Support `once` option.\n if (once) {\n this.removeEventListener(type, fnOrObj, optionsOrCapture);\n }\n if (!e['__target']) {\n patchEvent(e);\n }\n let lastCurrentTargetDesc;\n if (target !== this) {\n // replace `currentTarget` to make `target` and `relatedTarget` correct for inside the shadowroot\n lastCurrentTargetDesc = Object.getOwnPropertyDescriptor(e, 'currentTarget');\n Object.defineProperty(e, 'currentTarget', {get() { return target }, configurable: true});\n }\n // There are two critera that should stop events from firing on this node\n // 1. the event is not composed and the current node is not in the same root as the target\n // 2. when bubbling, if after retargeting, relatedTarget and target point to the same node\n if (e.composed || e.composedPath().indexOf(target) > -1) {\n if (hasRetargeted(e) && e.target === e.relatedTarget) {\n if (e.eventPhase === Event.BUBBLING_PHASE) {\n e.stopImmediatePropagation();\n }\n return;\n }\n // prevent non-bubbling events from triggering bubbling handlers on shadowroot, but only if not in capture phase\n if (e.eventPhase !== Event.CAPTURING_PHASE && !e.bubbles && e.target !== target && !(target instanceof Window)) {\n return;\n }\n let ret = handlerType === 'function' ?\n fnOrObj.call(target, e) :\n (fnOrObj.handleEvent && fnOrObj.handleEvent(e));\n if (target !== this) {\n // replace the \"correct\" `currentTarget`\n if (lastCurrentTargetDesc) {\n Object.defineProperty(e, 'currentTarget', lastCurrentTargetDesc);\n lastCurrentTargetDesc = null;\n } else {\n delete e['currentTarget'];\n }\n }\n return ret;\n }\n };\n // Store the wrapper information.\n fnOrObj[eventWrappersName].push({\n // note: use target here which is either a shadowRoot\n // (when the host element is proxy'ing the event) or this element\n node: target,\n type: type,\n capture: capture,\n once: once,\n passive: passive,\n wrapperFn: wrapperFn\n });\n\n if (nonBubblingEventsToRetarget[type]) {\n this.__handlers = this.__handlers || {};\n this.__handlers[type] = this.__handlers[type] ||\n {'capture': [], 'bubble': []};\n this.__handlers[type][capture ? 'capture' : 'bubble'].push(wrapperFn);\n } else {\n let ael = this instanceof Window ? nativeMethods.windowAddEventListener :\n nativeMethods.addEventListener;\n ael.call(this, type, wrapperFn, optionsOrCapture);\n }\n}\n\n/**\n * @this {Event}\n */\nexport function removeEventListener(type, fnOrObj, optionsOrCapture) {\n if (!fnOrObj) {\n return;\n }\n\n // NOTE(valdrin) invoking external functions is costly, inline has better perf.\n let capture, once, passive;\n if (optionsOrCapture && typeof optionsOrCapture === 'object') {\n capture = Boolean(optionsOrCapture.capture);\n once = Boolean(optionsOrCapture.once);\n passive = Boolean(optionsOrCapture.passive);\n } else {\n capture = Boolean(optionsOrCapture);\n once = false;\n passive = false;\n }\n let target = (optionsOrCapture && optionsOrCapture.__shadyTarget) || this;\n // Search the wrapped function.\n let wrapperFn = undefined;\n let wrappers = getEventWrappers(fnOrObj);\n if (wrappers) {\n let idx = findListener(wrappers, target, type, capture, once, passive);\n if (idx > -1) {\n wrapperFn = wrappers.splice(idx, 1)[0].wrapperFn;\n // Cleanup.\n if (!wrappers.length) {\n fnOrObj[eventWrappersName] = undefined;\n }\n }\n }\n let rel = this instanceof Window ? nativeMethods.windowRemoveEventListener :\n nativeMethods.removeEventListener;\n rel.call(this, type, wrapperFn || fnOrObj, optionsOrCapture);\n if (wrapperFn && nonBubblingEventsToRetarget[type] &&\n this.__handlers && this.__handlers[type]) {\n const arr = this.__handlers[type][capture ? 'capture' : 'bubble'];\n const idx = arr.indexOf(wrapperFn);\n if (idx > -1) {\n arr.splice(idx, 1);\n }\n }\n}\n\nfunction activateFocusEventOverrides() {\n for (let ev in nonBubblingEventsToRetarget) {\n window.addEventListener(ev, function(e) {\n if (!e['__target']) {\n patchEvent(e);\n retargetNonBubblingEvent(e);\n }\n }, true);\n }\n}\n\nfunction patchEvent(event) {\n event['__target'] = event.target;\n event.__relatedTarget = event.relatedTarget;\n // patch event prototype if we can\n if (utils.settings.hasDescriptors) {\n utils.patchPrototype(event, eventMixin);\n // and fallback to patching instance\n } else {\n utils.extend(event, eventMixin);\n }\n}\n\nlet PatchedEvent = mixinComposedFlag(window.Event);\nlet PatchedCustomEvent = mixinComposedFlag(window.CustomEvent);\nlet PatchedMouseEvent = mixinComposedFlag(window.MouseEvent);\n\nexport function patchEvents() {\n window.Event = PatchedEvent;\n window.CustomEvent = PatchedCustomEvent;\n window.MouseEvent = PatchedMouseEvent;\n activateFocusEventOverrides();\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nfunction newSplice(index, removed, addedCount) {\n return {\n index: index,\n removed: removed,\n addedCount: addedCount\n };\n}\n\nconst EDIT_LEAVE = 0;\nconst EDIT_UPDATE = 1;\nconst EDIT_ADD = 2;\nconst EDIT_DELETE = 3;\n\n// Note: This function is *based* on the computation of the Levenshtein\n// \"edit\" distance. The one change is that \"updates\" are treated as two\n// edits - not one. With Array splices, an update is really a delete\n// followed by an add. By retaining this, we optimize for \"keeping\" the\n// maximum array items in the original array. For example:\n//\n// 'xxxx123' -> '123yyyy'\n//\n// With 1-edit updates, the shortest path would be just to update all seven\n// characters. With 2-edit updates, we delete 4, leave 3, and add 4. This\n// leaves the substring '123' intact.\nfunction calcEditDistances(current, currentStart, currentEnd,\n old, oldStart, oldEnd) {\n // \"Deletion\" columns\n let rowCount = oldEnd - oldStart + 1;\n let columnCount = currentEnd - currentStart + 1;\n let distances = new Array(rowCount);\n\n // \"Addition\" rows. Initialize null column.\n for (let i = 0; i < rowCount; i++) {\n distances[i] = new Array(columnCount);\n distances[i][0] = i;\n }\n\n // Initialize null row\n for (let j = 0; j < columnCount; j++)\n distances[0][j] = j;\n\n for (let i = 1; i < rowCount; i++) {\n for (let j = 1; j < columnCount; j++) {\n if (equals(current[currentStart + j - 1], old[oldStart + i - 1]))\n distances[i][j] = distances[i - 1][j - 1];\n else {\n let north = distances[i - 1][j] + 1;\n let west = distances[i][j - 1] + 1;\n distances[i][j] = north < west ? north : west;\n }\n }\n }\n\n return distances;\n}\n\n// This starts at the final weight, and walks \"backward\" by finding\n// the minimum previous weight recursively until the origin of the weight\n// matrix.\nfunction spliceOperationsFromEditDistances(distances) {\n let i = distances.length - 1;\n let j = distances[0].length - 1;\n let current = distances[i][j];\n let edits = [];\n while (i > 0 || j > 0) {\n if (i == 0) {\n edits.push(EDIT_ADD);\n j--;\n continue;\n }\n if (j == 0) {\n edits.push(EDIT_DELETE);\n i--;\n continue;\n }\n let northWest = distances[i - 1][j - 1];\n let west = distances[i - 1][j];\n let north = distances[i][j - 1];\n\n let min;\n if (west < north)\n min = west < northWest ? west : northWest;\n else\n min = north < northWest ? north : northWest;\n\n if (min == northWest) {\n if (northWest == current) {\n edits.push(EDIT_LEAVE);\n } else {\n edits.push(EDIT_UPDATE);\n current = northWest;\n }\n i--;\n j--;\n } else if (min == west) {\n edits.push(EDIT_DELETE);\n i--;\n current = west;\n } else {\n edits.push(EDIT_ADD);\n j--;\n current = north;\n }\n }\n\n edits.reverse();\n return edits;\n}\n\n/**\n * Splice Projection functions:\n *\n * A splice map is a representation of how a previous array of items\n * was transformed into a new array of items. Conceptually it is a list of\n * tuples of\n *\n * <index, removed, addedCount>\n *\n * which are kept in ascending index order of. The tuple represents that at\n * the |index|, |removed| sequence of items were removed, and counting forward\n * from |index|, |addedCount| items were added.\n */\n\n/**\n * Lacking individual splice mutation information, the minimal set of\n * splices can be synthesized given the previous state and final state of an\n * array. The basic approach is to calculate the edit distance matrix and\n * choose the shortest path through it.\n *\n * Complexity: O(l * p)\n * l: The length of the current array\n * p: The length of the old array\n */\nfunction calcSplices(current, currentStart, currentEnd,\n old, oldStart, oldEnd) {\n let prefixCount = 0;\n let suffixCount = 0;\n let splice;\n\n let minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart);\n if (currentStart == 0 && oldStart == 0)\n prefixCount = sharedPrefix(current, old, minLength);\n\n if (currentEnd == current.length && oldEnd == old.length)\n suffixCount = sharedSuffix(current, old, minLength - prefixCount);\n\n currentStart += prefixCount;\n oldStart += prefixCount;\n currentEnd -= suffixCount;\n oldEnd -= suffixCount;\n\n if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0)\n return [];\n\n if (currentStart == currentEnd) {\n splice = newSplice(currentStart, [], 0);\n while (oldStart < oldEnd)\n splice.removed.push(old[oldStart++]);\n\n return [ splice ];\n } else if (oldStart == oldEnd)\n return [ newSplice(currentStart, [], currentEnd - currentStart) ];\n\n let ops = spliceOperationsFromEditDistances(\n calcEditDistances(current, currentStart, currentEnd,\n old, oldStart, oldEnd));\n\n splice = undefined;\n let splices = [];\n let index = currentStart;\n let oldIndex = oldStart;\n for (let i = 0; i < ops.length; i++) {\n switch(ops[i]) {\n case EDIT_LEAVE:\n if (splice) {\n splices.push(splice);\n splice = undefined;\n }\n\n index++;\n oldIndex++;\n break;\n case EDIT_UPDATE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.addedCount++;\n index++;\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n case EDIT_ADD:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.addedCount++;\n index++;\n break;\n case EDIT_DELETE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n }\n }\n\n if (splice) {\n splices.push(splice);\n }\n return splices;\n}\n\nfunction sharedPrefix(current, old, searchLength) {\n for (let i = 0; i < searchLength; i++)\n if (!equals(current[i], old[i]))\n return i;\n return searchLength;\n}\n\nfunction sharedSuffix(current, old, searchLength) {\n let index1 = current.length;\n let index2 = old.length;\n let count = 0;\n while (count < searchLength && equals(current[--index1], old[--index2]))\n count++;\n\n return count;\n}\n\nfunction equals(currentValue, previousValue) {\n return currentValue === previousValue;\n}\n\nexport function calculateSplices(current, previous) {\n return calcSplices(current, 0, current.length, previous, 0,\n previous.length);\n}\n\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n/**\n * Patches elements that interacts with ShadyDOM\n * such that tree traversal and mutation apis act like they would under\n * ShadowDOM.\n *\n * This import enables seemless interaction with ShadyDOM powered\n * custom elements, enabling better interoperation with 3rd party code,\n * libraries, and frameworks that use DOM tree manipulation apis.\n */\n\nimport * as utils from './utils.js';\nimport {flush, enqueue} from './flush.js';\nimport {observeChildren, unobserveChildren, filterMutations} from './observe-changes.js';\nimport * as nativeMethods from './native-methods.js';\nimport {accessors as nativeTree} from './native-tree.js';\nimport {patchBuiltins} from './patch-builtins.js';\nimport {patchInsideElementAccessors, patchOutsideElementAccessors} from './patch-accessors.js';\nimport {patchEvents} from './patch-events.js';\nimport {ShadyRoot} from './attach-shadow.js';\n\nif (utils.settings.inUse) {\n let ShadyDOM = {\n // TODO(sorvell): remove when Polymer does not depend on this.\n 'inUse': utils.settings.inUse,\n // NOTE: old browsers without prototype accessors (very old Chrome\n // and Safari) need manually patched accessors to properly set\n // `innerHTML` and `textContent` when an element is:\n // (1) inside a shadowRoot\n // (2) does not have special (slot) children itself\n // (3) and setting the property needs to provoke distribution (because\n // a nested slot is added/removed)\n 'patch': (node) => {\n patchInsideElementAccessors(node);\n patchOutsideElementAccessors(node);\n return node;\n },\n 'isShadyRoot': utils.isShadyRoot,\n 'enqueue': enqueue,\n 'flush': flush,\n 'settings': utils.settings,\n 'filterMutations': filterMutations,\n 'observeChildren': observeChildren,\n 'unobserveChildren': unobserveChildren,\n 'nativeMethods': nativeMethods,\n 'nativeTree': nativeTree\n };\n\n window['ShadyDOM'] = ShadyDOM;\n\n // Apply patches to events...\n patchEvents();\n // Apply patches to builtins (e.g. Element.prototype) where applicable.\n patchBuiltins();\n\n window.ShadowRoot = ShadyRoot;\n}","const reservedTagList = new Set([\n 'annotation-xml',\n 'color-profile',\n 'font-face',\n 'font-face-src',\n 'font-face-uri',\n 'font-face-format',\n 'font-face-name',\n 'missing-glyph',\n]);\n\n/**\n * @param {string} localName\n * @returns {boolean}\n */\nexport function isValidCustomElementName(localName) {\n const reserved = reservedTagList.has(localName);\n const validForm = /^[a-z][.0-9_a-z]*-[\\-.0-9_a-z]*$/.test(localName);\n return !reserved && validForm;\n}\n\n/**\n * @private\n * @param {!Node} node\n * @return {boolean}\n */\nexport function isConnected(node) {\n // Use `Node#isConnected`, if defined.\n const nativeValue = node.isConnected;\n if (nativeValue !== undefined) {\n return nativeValue;\n }\n\n /** @type {?Node|undefined} */\n let current = node;\n while (current && !(current.__CE_isImportDocument || current instanceof Document)) {\n current = current.parentNode || (window.ShadowRoot && current instanceof ShadowRoot ? current.host : undefined);\n }\n return !!(current && (current.__CE_isImportDocument || current instanceof Document));\n}\n\n/**\n * @param {!Node} root\n * @param {!Node} start\n * @return {?Node}\n */\nfunction nextSiblingOrAncestorSibling(root, start) {\n let node = start;\n while (node && node !== root && !node.nextSibling) {\n node = node.parentNode;\n }\n return (!node || node === root) ? null : node.nextSibling;\n}\n\n/**\n * @param {!Node} root\n * @param {!Node} start\n * @return {?Node}\n */\nfunction nextNode(root, start) {\n return start.firstChild ? start.firstChild : nextSiblingOrAncestorSibling(root, start);\n}\n\n/**\n * @param {!Node} root\n * @param {!function(!Element)} callback\n * @param {!Set<Node>=} visitedImports\n */\nexport function walkDeepDescendantElements(root, callback, visitedImports = new Set()) {\n let node = root;\n while (node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = /** @type {!Element} */(node);\n\n callback(element);\n\n const localName = element.localName;\n if (localName === 'link' && element.getAttribute('rel') === 'import') {\n // If this import (polyfilled or not) has it's root node available,\n // walk it.\n const importNode = /** @type {!Node} */ (element.import);\n if (importNode instanceof Node && !visitedImports.has(importNode)) {\n // Prevent multiple walks of the same import root.\n visitedImports.add(importNode);\n\n for (let child = importNode.firstChild; child; child = child.nextSibling) {\n walkDeepDescendantElements(child, callback, visitedImports);\n }\n }\n\n // Ignore descendants of import links to prevent attempting to walk the\n // elements created by the HTML Imports polyfill that we just walked\n // above.\n node = nextSiblingOrAncestorSibling(root, element);\n continue;\n } else if (localName === 'template') {\n // Ignore descendants of templates. There shouldn't be any descendants\n // because they will be moved into `.content` during construction in\n // browsers that support template but, in case they exist and are still\n // waiting to be moved by a polyfill, they will be ignored.\n node = nextSiblingOrAncestorSibling(root, element);\n continue;\n }\n\n // Walk shadow roots.\n const shadowRoot = element.__CE_shadowRoot;\n if (shadowRoot) {\n for (let child = shadowRoot.firstChild; child; child = child.nextSibling) {\n walkDeepDescendantElements(child, callback, visitedImports);\n }\n }\n }\n\n node = nextNode(root, node);\n }\n}\n\n/**\n * Used to suppress Closure's \"Modifying the prototype is only allowed if the\n * constructor is in the same scope\" warning without using\n * `@suppress {newCheckTypes, duplicate}` because `newCheckTypes` is too broad.\n *\n * @param {!Object} destination\n * @param {string} name\n * @param {*} value\n */\nexport function setPropertyUnchecked(destination, name, value) {\n destination[name] = value;\n}\n","import * as Utilities from './Utilities.js';\nimport CEState from './CustomElementState.js';\n\nexport default class CustomElementInternals {\n constructor() {\n /** @type {!Map<string, !CustomElementDefinition>} */\n this._localNameToDefinition = new Map();\n\n /** @type {!Map<!Function, !CustomElementDefinition>} */\n this._constructorToDefinition = new Map();\n\n /** @type {!Array<!function(!Node)>} */\n this._patches = [];\n\n /** @type {boolean} */\n this._hasPatches = false;\n }\n\n /**\n * @param {string} localName\n * @param {!CustomElementDefinition} definition\n */\n setDefinition(localName, definition) {\n this._localNameToDefinition.set(localName, definition);\n this._constructorToDefinition.set(definition.constructor, definition);\n }\n\n /**\n * @param {string} localName\n * @return {!CustomElementDefinition|undefined}\n */\n localNameToDefinition(localName) {\n return this._localNameToDefinition.get(localName);\n }\n\n /**\n * @param {!Function} constructor\n * @return {!CustomElementDefinition|undefined}\n */\n constructorToDefinition(constructor) {\n return this._constructorToDefinition.get(constructor);\n }\n\n /**\n * @param {!function(!Node)} listener\n */\n addPatch(listener) {\n this._hasPatches = true;\n this._patches.push(listener);\n }\n\n /**\n * @param {!Node} node\n */\n patchTree(node) {\n if (!this._hasPatches) return;\n\n Utilities.walkDeepDescendantElements(node, element => this.patch(element));\n }\n\n /**\n * @param {!Node} node\n */\n patch(node) {\n if (!this._hasPatches) return;\n\n if (node.__CE_patched) return;\n node.__CE_patched = true;\n\n for (let i = 0; i < this._patches.length; i++) {\n this._patches[i](node);\n }\n }\n\n /**\n * @param {!Node} root\n */\n connectTree(root) {\n const elements = [];\n\n Utilities.walkDeepDescendantElements(root, element => elements.push(element));\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (element.__CE_state === CEState.custom) {\n this.connectedCallback(element);\n } else {\n this.upgradeElement(element);\n }\n }\n }\n\n /**\n * @param {!Node} root\n */\n disconnectTree(root) {\n const elements = [];\n\n Utilities.walkDeepDescendantElements(root, element => elements.push(element));\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (element.__CE_state === CEState.custom) {\n this.disconnectedCallback(element);\n }\n }\n }\n\n /**\n * Upgrades all uncustomized custom elements at and below a root node for\n * which there is a definition. When custom element reaction callbacks are\n * assumed to be called synchronously (which, by the current DOM / HTML spec\n * definitions, they are *not*), callbacks for both elements customized\n * synchronously by the parser and elements being upgraded occur in the same\n * relative order.\n *\n * NOTE: This function, when used to simulate the construction of a tree that\n * is already created but not customized (i.e. by the parser), does *not*\n * prevent the element from reading the 'final' (true) state of the tree. For\n * example, the element, during truly synchronous parsing / construction would\n * see that it contains no children as they have not yet been inserted.\n * However, this function does not modify the tree, the element will\n * (incorrectly) have children. Additionally, self-modification restrictions\n * for custom element constructors imposed by the DOM spec are *not* enforced.\n *\n *\n * The following nested list shows the steps extending down from the HTML\n * spec's parsing section that cause elements to be synchronously created and\n * upgraded:\n *\n * The \"in body\" insertion mode:\n * https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n * - Switch on token:\n * .. other cases ..\n * -> Any other start tag\n * - [Insert an HTML element](below) for the token.\n *\n * Insert an HTML element:\n * https://html.spec.whatwg.org/multipage/syntax.html#insert-an-html-element\n * - Insert a foreign element for the token in the HTML namespace:\n * https://html.spec.whatwg.org/multipage/syntax.html#insert-a-foreign-element\n * - Create an element for a token:\n * https://html.spec.whatwg.org/multipage/syntax.html#create-an-element-for-the-token\n * - Will execute script flag is true?\n * - (Element queue pushed to the custom element reactions stack.)\n * - Create an element:\n * https://dom.spec.whatwg.org/#concept-create-element\n * - Sync CE flag is true?\n * - Constructor called.\n * - Self-modification restrictions enforced.\n * - Sync CE flag is false?\n * - (Upgrade reaction enqueued.)\n * - Attributes appended to element.\n * (`attributeChangedCallback` reactions enqueued.)\n * - Will execute script flag is true?\n * - (Element queue popped from the custom element reactions stack.\n * Reactions in the popped stack are invoked.)\n * - (Element queue pushed to the custom element reactions stack.)\n * - Insert the element:\n * https://dom.spec.whatwg.org/#concept-node-insert\n * - Shadow-including descendants are connected. During parsing\n * construction, there are no shadow-*excluding* descendants.\n * However, the constructor may have validly attached a shadow\n * tree to itself and added descendants to that shadow tree.\n * (`connectedCallback` reactions enqueued.)\n * - (Element queue popped from the custom element reactions stack.\n * Reactions in the popped stack are invoked.)\n *\n * @param {!Node} root\n * @param {{\n * visitedImports: (!Set<!Node>|undefined),\n * upgrade: (!function(!Element)|undefined),\n * }=} options\n */\n patchAndUpgradeTree(root, options = {}) {\n const visitedImports = options.visitedImports || new Set();\n const upgrade = options.upgrade || (element => this.upgradeElement(element));\n\n const elements = [];\n\n const gatherElements = element => {\n if (element.localName === 'link' && element.getAttribute('rel') === 'import') {\n // The HTML Imports polyfill sets a descendant element of the link to\n // the `import` property, specifically this is *not* a Document.\n const importNode = /** @type {?Node} */ (element.import);\n\n if (importNode instanceof Node) {\n importNode.__CE_isImportDocument = true;\n // Connected links are associated with the registry.\n importNode.__CE_hasRegistry = true;\n }\n\n if (importNode && importNode.readyState === 'complete') {\n importNode.__CE_documentLoadHandled = true;\n } else {\n // If this link's import root is not available, its contents can't be\n // walked. Wait for 'load' and walk it when it's ready.\n element.addEventListener('load', () => {\n const importNode = /** @type {!Node} */ (element.import);\n\n if (importNode.__CE_documentLoadHandled) return;\n importNode.__CE_documentLoadHandled = true;\n\n // Clone the `visitedImports` set that was populated sync during\n // the `patchAndUpgradeTree` call that caused this 'load' handler to\n // be added. Then, remove *this* link's import node so that we can\n // walk that import again, even if it was partially walked later\n // during the same `patchAndUpgradeTree` call.\n const clonedVisitedImports = new Set(visitedImports);\n clonedVisitedImports.delete(importNode);\n\n this.patchAndUpgradeTree(importNode, {visitedImports: clonedVisitedImports, upgrade});\n });\n }\n } else {\n elements.push(element);\n }\n };\n\n // `walkDeepDescendantElements` populates (and internally checks against)\n // `visitedImports` when traversing a loaded import.\n Utilities.walkDeepDescendantElements(root, gatherElements, visitedImports);\n\n if (this._hasPatches) {\n for (let i = 0; i < elements.length; i++) {\n this.patch(elements[i]);\n }\n }\n\n for (let i = 0; i < elements.length; i++) {\n upgrade(elements[i]);\n }\n }\n\n /**\n * @param {!Element} element\n */\n upgradeElement(element) {\n const currentState = element.__CE_state;\n if (currentState !== undefined) return;\n\n // Prevent elements created in documents without a browsing context from\n // upgrading.\n //\n // https://html.spec.whatwg.org/multipage/custom-elements.html#look-up-a-custom-element-definition\n // \"If document does not have a browsing context, return null.\"\n //\n // https://html.spec.whatwg.org/multipage/window-object.html#dom-document-defaultview\n // \"The defaultView IDL attribute of the Document interface, on getting,\n // must return this Document's browsing context's WindowProxy object, if\n // this Document has an associated browsing context, or null otherwise.\"\n const ownerDocument = element.ownerDocument;\n if (\n !ownerDocument.defaultView &&\n !(ownerDocument.__CE_isImportDocument && ownerDocument.__CE_hasRegistry)\n ) return;\n\n const definition = this.localNameToDefinition(element.localName);\n if (!definition) return;\n\n definition.constructionStack.push(element);\n\n const constructor = definition.constructor;\n try {\n try {\n let result = new (constructor)();\n if (result !== element) {\n throw new Error('The custom element constructor did not produce the element being upgraded.');\n }\n } finally {\n definition.constructionStack.pop();\n }\n } catch (e) {\n element.__CE_state = CEState.failed;\n throw e;\n }\n\n element.__CE_state = CEState.custom;\n element.__CE_definition = definition;\n\n if (definition.attributeChangedCallback) {\n const observedAttributes = definition.observedAttributes;\n for (let i = 0; i < observedAttributes.length; i++) {\n const name = observedAttributes[i];\n const value = element.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(element, name, null, value, null);\n }\n }\n }\n\n if (Utilities.isConnected(element)) {\n this.connectedCallback(element);\n }\n }\n\n /**\n * @param {!Element} element\n */\n connectedCallback(element) {\n const definition = element.__CE_definition;\n if (definition.connectedCallback) {\n definition.connectedCallback.call(element);\n }\n }\n\n /**\n * @param {!Element} element\n */\n disconnectedCallback(element) {\n const definition = element.__CE_definition;\n if (definition.disconnectedCallback) {\n definition.disconnectedCallback.call(element);\n }\n }\n\n /**\n * @param {!Element} element\n * @param {string} name\n * @param {?string} oldValue\n * @param {?string} newValue\n * @param {?string} namespace\n */\n attributeChangedCallback(element, name, oldValue, newValue, namespace) {\n const definition = element.__CE_definition;\n if (\n definition.attributeChangedCallback &&\n definition.observedAttributes.indexOf(name) > -1\n ) {\n definition.attributeChangedCallback.call(element, name, oldValue, newValue, namespace);\n }\n }\n}\n","/**\n * @enum {number}\n */\nconst CustomElementState = {\n custom: 1,\n failed: 2,\n};\n\nexport default CustomElementState;\n","import CustomElementInternals from './CustomElementInternals.js';\n\nexport default class DocumentConstructionObserver {\n constructor(internals, doc) {\n /**\n * @type {!CustomElementInternals}\n */\n this._internals = internals;\n\n /**\n * @type {!Document}\n */\n this._document = doc;\n\n /**\n * @type {MutationObserver|undefined}\n */\n this._observer = undefined;\n\n\n // Simulate tree construction for all currently accessible nodes in the\n // document.\n this._internals.patchAndUpgradeTree(this._document);\n\n if (this._document.readyState === 'loading') {\n this._observer = new MutationObserver(this._handleMutations.bind(this));\n\n // Nodes created by the parser are given to the observer *before* the next\n // task runs. Inline scripts are run in a new task. This means that the\n // observer will be able to handle the newly parsed nodes before the inline\n // script is run.\n this._observer.observe(this._document, {\n childList: true,\n subtree: true,\n });\n }\n }\n\n disconnect() {\n if (this._observer) {\n this._observer.disconnect();\n }\n }\n\n /**\n * @param {!Array<!MutationRecord>} mutations\n */\n _handleMutations(mutations) {\n // Once the document's `readyState` is 'interactive' or 'complete', all new\n // nodes created within that document will be the result of script and\n // should be handled by patching.\n const readyState = this._document.readyState;\n if (readyState === 'interactive' || readyState === 'complete') {\n this.disconnect();\n }\n\n for (let i = 0; i < mutations.length; i++) {\n const addedNodes = mutations[i].addedNodes;\n for (let j = 0; j < addedNodes.length; j++) {\n const node = addedNodes[j];\n this._internals.patchAndUpgradeTree(node);\n }\n }\n }\n}\n","import CustomElementInternals from './CustomElementInternals.js';\nimport DocumentConstructionObserver from './DocumentConstructionObserver.js';\nimport Deferred from './Deferred.js';\nimport * as Utilities from './Utilities.js';\n\n/**\n * @unrestricted\n */\nexport default class CustomElementRegistry {\n\n /**\n * @param {!CustomElementInternals} internals\n */\n constructor(internals) {\n /**\n * @private\n * @type {boolean}\n */\n this._elementDefinitionIsRunning = false;\n\n /**\n * @private\n * @type {!CustomElementInternals}\n */\n this._internals = internals;\n\n /**\n * @private\n * @type {!Map<string, !Deferred<undefined>>}\n */\n this._whenDefinedDeferred = new Map();\n\n /**\n * The default flush callback triggers the document walk synchronously.\n * @private\n * @type {!Function}\n */\n this._flushCallback = fn => fn();\n\n /**\n * @private\n * @type {boolean}\n */\n this._flushPending = false;\n\n /**\n * @private\n * @type {!Array<!CustomElementDefinition>}\n */\n this._pendingDefinitions = [];\n\n /**\n * @private\n * @type {!DocumentConstructionObserver}\n */\n this._documentConstructionObserver = new DocumentConstructionObserver(internals, document);\n }\n\n /**\n * @param {string} localName\n * @param {!Function} constructor\n */\n define(localName, constructor) {\n if (!(constructor instanceof Function)) {\n throw new TypeError('Custom element constructors must be functions.');\n }\n\n if (!Utilities.isValidCustomElementName(localName)) {\n throw new SyntaxError(`The element name '${localName}' is not valid.`);\n }\n\n if (this._internals.localNameToDefinition(localName)) {\n throw new Error(`A custom element with name '${localName}' has already been defined.`);\n }\n\n if (this._elementDefinitionIsRunning) {\n throw new Error('A custom element is already being defined.');\n }\n this._elementDefinitionIsRunning = true;\n\n let connectedCallback;\n let disconnectedCallback;\n let adoptedCallback;\n let attributeChangedCallback;\n let observedAttributes;\n try {\n /** @type {!Object} */\n const prototype = constructor.prototype;\n if (!(prototype instanceof Object)) {\n throw new TypeError('The custom element constructor\\'s prototype is not an object.');\n }\n\n function getCallback(name) {\n const callbackValue = prototype[name];\n if (callbackValue !== undefined && !(callbackValue instanceof Function)) {\n throw new Error(`The '${name}' callback must be a function.`);\n }\n return callbackValue;\n }\n\n connectedCallback = getCallback('connectedCallback');\n disconnectedCallback = getCallback('disconnectedCallback');\n adoptedCallback = getCallback('adoptedCallback');\n attributeChangedCallback = getCallback('attributeChangedCallback');\n observedAttributes = constructor['observedAttributes'] || [];\n } catch (e) {\n return;\n } finally {\n this._elementDefinitionIsRunning = false;\n }\n\n const definition = {\n localName,\n constructor,\n connectedCallback,\n disconnectedCallback,\n adoptedCallback,\n attributeChangedCallback,\n observedAttributes,\n constructionStack: [],\n };\n\n this._internals.setDefinition(localName, definition);\n this._pendingDefinitions.push(definition);\n\n // If we've already called the flush callback and it hasn't called back yet,\n // don't call it again.\n if (!this._flushPending) {\n this._flushPending = true;\n this._flushCallback(() => this._flush());\n }\n }\n\n upgrade(element) {\n this._internals.patchAndUpgradeTree(element);\n }\n\n _flush() {\n // If no new definitions were defined, don't attempt to flush. This could\n // happen if a flush callback keeps the function it is given and calls it\n // multiple times.\n if (this._flushPending === false) return;\n this._flushPending = false;\n\n const pendingDefinitions = this._pendingDefinitions;\n\n /**\n * Unupgraded elements with definitions that were defined *before* the last\n * flush, in document order.\n * @type {!Array<!Element>}\n */\n const elementsWithStableDefinitions = [];\n\n /**\n * A map from `localName`s of definitions that were defined *after* the last\n * flush to unupgraded elements matching that definition, in document order.\n * @type {!Map<string, !Array<!Element>>}\n */\n const elementsWithPendingDefinitions = new Map();\n for (let i = 0; i < pendingDefinitions.length; i++) {\n elementsWithPendingDefinitions.set(pendingDefinitions[i].localName, []);\n }\n\n this._internals.patchAndUpgradeTree(document, {\n upgrade: element => {\n // Ignore the element if it has already upgraded or failed to upgrade.\n if (element.__CE_state !== undefined) return;\n\n const localName = element.localName;\n\n // If there is an applicable pending definition for the element, add the\n // element to the list of elements to be upgraded with that definition.\n const pendingElements = elementsWithPendingDefinitions.get(localName);\n if (pendingElements) {\n pendingElements.push(element);\n // If there is *any other* applicable definition for the element, add it\n // to the list of elements with stable definitions that need to be upgraded.\n } else if (this._internals.localNameToDefinition(localName)) {\n elementsWithStableDefinitions.push(element);\n }\n },\n });\n\n // Upgrade elements with 'stable' definitions first.\n for (let i = 0; i < elementsWithStableDefinitions.length; i++) {\n this._internals.upgradeElement(elementsWithStableDefinitions[i]);\n }\n\n // Upgrade elements with 'pending' definitions in the order they were defined.\n while (pendingDefinitions.length > 0) {\n const definition = pendingDefinitions.shift();\n const localName = definition.localName;\n\n // Attempt to upgrade all applicable elements.\n const pendingUpgradableElements = elementsWithPendingDefinitions.get(definition.localName);\n for (let i = 0; i < pendingUpgradableElements.length; i++) {\n this._internals.upgradeElement(pendingUpgradableElements[i]);\n }\n\n // Resolve any promises created by `whenDefined` for the definition.\n const deferred = this._whenDefinedDeferred.get(localName);\n if (deferred) {\n deferred.resolve(undefined);\n }\n }\n }\n\n /**\n * @param {string} localName\n * @return {Function|undefined}\n */\n get(localName) {\n const definition = this._internals.localNameToDefinition(localName);\n if (definition) {\n return definition.constructor;\n }\n\n return undefined;\n }\n\n /**\n * @param {string} localName\n * @return {!Promise<undefined>}\n */\n whenDefined(localName) {\n if (!Utilities.isValidCustomElementName(localName)) {\n return Promise.reject(new SyntaxError(`'${localName}' is not a valid custom element name.`));\n }\n\n const prior = this._whenDefinedDeferred.get(localName);\n if (prior) {\n return prior.toPromise();\n }\n\n const deferred = new Deferred();\n this._whenDefinedDeferred.set(localName, deferred);\n\n const definition = this._internals.localNameToDefinition(localName);\n // Resolve immediately only if the given local name has a definition *and*\n // the full document walk to upgrade elements with that local name has\n // already happened.\n if (definition && !this._pendingDefinitions.some(d => d.localName === localName)) {\n deferred.resolve(undefined);\n }\n\n return deferred.toPromise();\n }\n\n polyfillWrapFlushCallback(outer) {\n this._documentConstructionObserver.disconnect();\n const inner = this._flushCallback;\n this._flushCallback = flush => outer(() => inner(flush));\n }\n}\n\n// Closure compiler exports.\nwindow['CustomElementRegistry'] = CustomElementRegistry;\nCustomElementRegistry.prototype['define'] = CustomElementRegistry.prototype.define;\nCustomElementRegistry.prototype['upgrade'] = CustomElementRegistry.prototype.upgrade;\nCustomElementRegistry.prototype['get'] = CustomElementRegistry.prototype.get;\nCustomElementRegistry.prototype['whenDefined'] = CustomElementRegistry.prototype.whenDefined;\nCustomElementRegistry.prototype['polyfillWrapFlushCallback'] = CustomElementRegistry.prototype.polyfillWrapFlushCallback;\n","/**\n * @template T\n */\nexport default class Deferred {\n constructor() {\n /**\n * @private\n * @type {T|undefined}\n */\n this._value = undefined;\n\n /**\n * @private\n * @type {Function|undefined}\n */\n this._resolve = undefined;\n\n /**\n * @private\n * @type {!Promise<T>}\n */\n this._promise = new Promise(resolve => {\n this._resolve = resolve;\n\n if (this._value) {\n resolve(this._value);\n }\n });\n }\n\n /**\n * @param {T} value\n */\n resolve(value) {\n if (this._value) {\n throw new Error('Already resolved.');\n }\n\n this._value = value;\n\n if (this._resolve) {\n this._resolve(value);\n }\n }\n\n /**\n * @return {!Promise<T>}\n */\n toPromise() {\n return this._promise;\n }\n}\n","export default {\n Document_createElement: window.Document.prototype.createElement,\n Document_createElementNS: window.Document.prototype.createElementNS,\n Document_importNode: window.Document.prototype.importNode,\n Document_prepend: window.Document.prototype['prepend'],\n Document_append: window.Document.prototype['append'],\n DocumentFragment_prepend: window.DocumentFragment.prototype['prepend'],\n DocumentFragment_append: window.DocumentFragment.prototype['append'],\n Node_cloneNode: window.Node.prototype.cloneNode,\n Node_appendChild: window.Node.prototype.appendChild,\n Node_insertBefore: window.Node.prototype.insertBefore,\n Node_removeChild: window.Node.prototype.removeChild,\n Node_replaceChild: window.Node.prototype.replaceChild,\n Node_textContent: Object.getOwnPropertyDescriptor(window.Node.prototype, 'textContent'),\n Element_attachShadow: window.Element.prototype['attachShadow'],\n Element_innerHTML: Object.getOwnPropertyDescriptor(window.Element.prototype, 'innerHTML'),\n Element_getAttribute: window.Element.prototype.getAttribute,\n Element_setAttribute: window.Element.prototype.setAttribute,\n Element_removeAttribute: window.Element.prototype.removeAttribute,\n Element_getAttributeNS: window.Element.prototype.getAttributeNS,\n Element_setAttributeNS: window.Element.prototype.setAttributeNS,\n Element_removeAttributeNS: window.Element.prototype.removeAttributeNS,\n Element_insertAdjacentElement: window.Element.prototype['insertAdjacentElement'],\n Element_insertAdjacentHTML: window.Element.prototype['insertAdjacentHTML'],\n Element_prepend: window.Element.prototype['prepend'],\n Element_append: window.Element.prototype['append'],\n Element_before: window.Element.prototype['before'],\n Element_after: window.Element.prototype['after'],\n Element_replaceWith: window.Element.prototype['replaceWith'],\n Element_remove: window.Element.prototype['remove'],\n HTMLElement: window.HTMLElement,\n HTMLElement_innerHTML: Object.getOwnPropertyDescriptor(window.HTMLElement.prototype, 'innerHTML'),\n HTMLElement_insertAdjacentElement: window.HTMLElement.prototype['insertAdjacentElement'],\n HTMLElement_insertAdjacentHTML: window.HTMLElement.prototype['insertAdjacentHTML'],\n};\n","/**\n * This class exists only to work around Closure's lack of a way to describe\n * singletons. It represents the 'already constructed marker' used in custom\n * element construction stacks.\n *\n * https://html.spec.whatwg.org/#concept-already-constructed-marker\n */\nclass AlreadyConstructedMarker {}\n\nexport default new AlreadyConstructedMarker();\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport CEState from '../CustomElementState.js';\nimport AlreadyConstructedMarker from '../AlreadyConstructedMarker.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n window['HTMLElement'] = (function() {\n /**\n * @type {function(new: HTMLElement): !HTMLElement}\n */\n function HTMLElement() {\n // This should really be `new.target` but `new.target` can't be emulated\n // in ES5. Assuming the user keeps the default value of the constructor's\n // prototype's `constructor` property, this is equivalent.\n /** @type {!Function} */\n const constructor = this.constructor;\n\n const definition = internals.constructorToDefinition(constructor);\n if (!definition) {\n throw new Error('The custom element being constructed was not registered with `customElements`.');\n }\n\n const constructionStack = definition.constructionStack;\n\n if (constructionStack.length === 0) {\n const element = Native.Document_createElement.call(document, definition.localName);\n Object.setPrototypeOf(element, constructor.prototype);\n element.__CE_state = CEState.custom;\n element.__CE_definition = definition;\n internals.patch(element);\n return element;\n }\n\n const lastIndex = constructionStack.length - 1;\n const element = constructionStack[lastIndex];\n if (element === AlreadyConstructedMarker) {\n throw new Error('The HTMLElement constructor was either called reentrantly for this constructor or called multiple times.');\n }\n constructionStack[lastIndex] = AlreadyConstructedMarker;\n\n Object.setPrototypeOf(element, constructor.prototype);\n internals.patch(/** @type {!HTMLElement} */ (element));\n\n return element;\n }\n\n HTMLElement.prototype = Native.HTMLElement.prototype;\n\n return HTMLElement;\n })();\n};\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport CustomElementInternals from './CustomElementInternals.js';\nimport CustomElementRegistry from './CustomElementRegistry.js';\n\nimport PatchHTMLElement from './Patch/HTMLElement.js';\nimport PatchDocument from './Patch/Document.js';\nimport PatchDocumentFragment from './Patch/DocumentFragment.js';\nimport PatchNode from './Patch/Node.js';\nimport PatchElement from './Patch/Element.js';\n\nconst priorCustomElements = window['customElements'];\n\nif (!priorCustomElements ||\n priorCustomElements['forcePolyfill'] ||\n (typeof priorCustomElements['define'] != 'function') ||\n (typeof priorCustomElements['get'] != 'function')) {\n /** @type {!CustomElementInternals} */\n const internals = new CustomElementInternals();\n\n PatchHTMLElement(internals);\n PatchDocument(internals);\n PatchDocumentFragment(internals);\n PatchNode(internals);\n PatchElement(internals);\n\n // The main document is always associated with the registry.\n document.__CE_hasRegistry = true;\n\n /** @type {!CustomElementRegistry} */\n const customElements = new CustomElementRegistry(internals);\n\n Object.defineProperty(window, 'customElements', {\n configurable: true,\n enumerable: true,\n value: customElements,\n });\n}\n","import CustomElementInternals from '../../CustomElementInternals.js';\nimport * as Utilities from '../../Utilities.js';\n\n/**\n * @typedef {{\n * prepend: !function(...(!Node|string)),\n * append: !function(...(!Node|string)),\n * }}\n */\nlet ParentNodeNativeMethods;\n\n/**\n * @param {!CustomElementInternals} internals\n * @param {!Object} destination\n * @param {!ParentNodeNativeMethods} builtIn\n */\nexport default function(internals, destination, builtIn) {\n /**\n * @param {!function(...(!Node|string))} builtInMethod\n * @return {!function(...(!Node|string))}\n */\n function appendPrependPatch(builtInMethod) {\n return function(...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n * @type {!Array<!Node>}\n */\n const flattenedNodes = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n * @type {!Array<!Node>}\n */\n const connectedElements = [];\n\n for (var i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n builtInMethod.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n };\n }\n\n if (builtIn.prepend !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'prepend', appendPrependPatch(builtIn.prepend));\n }\n\n if (builtIn.append !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'append', appendPrependPatch(builtIn.append));\n }\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport * as Utilities from '../Utilities.js';\n\nimport PatchParentNode from './Interface/ParentNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n Utilities.setPropertyUnchecked(Document.prototype, 'createElement',\n /**\n * @this {Document}\n * @param {string} localName\n * @return {!Element}\n */\n function(localName) {\n // Only create custom elements if this document is associated with the registry.\n if (this.__CE_hasRegistry) {\n const definition = internals.localNameToDefinition(localName);\n if (definition) {\n return new (definition.constructor)();\n }\n }\n\n const result = /** @type {!Element} */\n (Native.Document_createElement.call(this, localName));\n internals.patch(result);\n return result;\n });\n\n Utilities.setPropertyUnchecked(Document.prototype, 'importNode',\n /**\n * @this {Document}\n * @param {!Node} node\n * @param {boolean=} deep\n * @return {!Node}\n */\n function(node, deep) {\n const clone = Native.Document_importNode.call(this, node, deep);\n // Only create custom elements if this document is associated with the registry.\n if (!this.__CE_hasRegistry) {\n internals.patchTree(clone);\n } else {\n internals.patchAndUpgradeTree(clone);\n }\n return clone;\n });\n\n const NS_HTML = \"http://www.w3.org/1999/xhtml\";\n\n Utilities.setPropertyUnchecked(Document.prototype, 'createElementNS',\n /**\n * @this {Document}\n * @param {?string} namespace\n * @param {string} localName\n * @return {!Element}\n */\n function(namespace, localName) {\n // Only create custom elements if this document is associated with the registry.\n if (this.__CE_hasRegistry && (namespace === null || namespace === NS_HTML)) {\n const definition = internals.localNameToDefinition(localName);\n if (definition) {\n return new (definition.constructor)();\n }\n }\n\n const result = /** @type {!Element} */\n (Native.Document_createElementNS.call(this, namespace, localName));\n internals.patch(result);\n return result;\n });\n\n PatchParentNode(internals, Document.prototype, {\n prepend: Native.Document_prepend,\n append: Native.Document_append,\n });\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport * as Utilities from '../Utilities.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n // `Node#nodeValue` is implemented on `Attr`.\n // `Node#textContent` is implemented on `Attr`, `Element`.\n\n Utilities.setPropertyUnchecked(Node.prototype, 'insertBefore',\n /**\n * @this {Node}\n * @param {!Node} node\n * @param {?Node} refNode\n * @return {!Node}\n */\n function(node, refNode) {\n if (node instanceof DocumentFragment) {\n const insertedNodes = Array.prototype.slice.apply(node.childNodes);\n const nativeResult = Native.Node_insertBefore.call(this, node, refNode);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeWasConnected = Utilities.isConnected(node);\n const nativeResult = Native.Node_insertBefore.call(this, node, refNode);\n\n if (nodeWasConnected) {\n internals.disconnectTree(node);\n }\n\n if (Utilities.isConnected(this)) {\n internals.connectTree(node);\n }\n\n return nativeResult;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'appendChild',\n /**\n * @this {Node}\n * @param {!Node} node\n * @return {!Node}\n */\n function(node) {\n if (node instanceof DocumentFragment) {\n const insertedNodes = Array.prototype.slice.apply(node.childNodes);\n const nativeResult = Native.Node_appendChild.call(this, node);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeWasConnected = Utilities.isConnected(node);\n const nativeResult = Native.Node_appendChild.call(this, node);\n\n if (nodeWasConnected) {\n internals.disconnectTree(node);\n }\n\n if (Utilities.isConnected(this)) {\n internals.connectTree(node);\n }\n\n return nativeResult;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'cloneNode',\n /**\n * @this {Node}\n * @param {boolean=} deep\n * @return {!Node}\n */\n function(deep) {\n const clone = Native.Node_cloneNode.call(this, deep);\n // Only create custom elements if this element's owner document is\n // associated with the registry.\n if (!this.ownerDocument.__CE_hasRegistry) {\n internals.patchTree(clone);\n } else {\n internals.patchAndUpgradeTree(clone);\n }\n return clone;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'removeChild',\n /**\n * @this {Node}\n * @param {!Node} node\n * @return {!Node}\n */\n function(node) {\n const nodeWasConnected = Utilities.isConnected(node);\n const nativeResult = Native.Node_removeChild.call(this, node);\n\n if (nodeWasConnected) {\n internals.disconnectTree(node);\n }\n\n return nativeResult;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'replaceChild',\n /**\n * @this {Node}\n * @param {!Node} nodeToInsert\n * @param {!Node} nodeToRemove\n * @return {!Node}\n */\n function(nodeToInsert, nodeToRemove) {\n if (nodeToInsert instanceof DocumentFragment) {\n const insertedNodes = Array.prototype.slice.apply(nodeToInsert.childNodes);\n const nativeResult = Native.Node_replaceChild.call(this, nodeToInsert, nodeToRemove);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n internals.disconnectTree(nodeToRemove);\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeToInsertWasConnected = Utilities.isConnected(nodeToInsert);\n const nativeResult = Native.Node_replaceChild.call(this, nodeToInsert, nodeToRemove);\n const thisIsConnected = Utilities.isConnected(this);\n\n if (thisIsConnected) {\n internals.disconnectTree(nodeToRemove);\n }\n\n if (nodeToInsertWasConnected) {\n internals.disconnectTree(nodeToInsert);\n }\n\n if (thisIsConnected) {\n internals.connectTree(nodeToInsert);\n }\n\n return nativeResult;\n });\n\n\n function patch_textContent(destination, baseDescriptor) {\n Object.defineProperty(destination, 'textContent', {\n enumerable: baseDescriptor.enumerable,\n configurable: true,\n get: baseDescriptor.get,\n set: /** @this {Node} */ function(assignedValue) {\n // If this is a text node then there are no nodes to disconnect.\n if (this.nodeType === Node.TEXT_NODE) {\n baseDescriptor.set.call(this, assignedValue);\n return;\n }\n\n let removedNodes = undefined;\n // Checking for `firstChild` is faster than reading `childNodes.length`\n // to compare with 0.\n if (this.firstChild) {\n // Using `childNodes` is faster than `children`, even though we only\n // care about elements.\n const childNodes = this.childNodes;\n const childNodesLength = childNodes.length;\n if (childNodesLength > 0 && Utilities.isConnected(this)) {\n // Copying an array by iterating is faster than using slice.\n removedNodes = new Array(childNodesLength);\n for (let i = 0; i < childNodesLength; i++) {\n removedNodes[i] = childNodes[i];\n }\n }\n }\n\n baseDescriptor.set.call(this, assignedValue);\n\n if (removedNodes) {\n for (let i = 0; i < removedNodes.length; i++) {\n internals.disconnectTree(removedNodes[i]);\n }\n }\n },\n });\n }\n\n if (Native.Node_textContent && Native.Node_textContent.get) {\n patch_textContent(Node.prototype, Native.Node_textContent);\n } else {\n internals.addPatch(function(element) {\n patch_textContent(element, {\n enumerable: true,\n configurable: true,\n // NOTE: This implementation of the `textContent` getter assumes that\n // text nodes' `textContent` getter will not be patched.\n get: /** @this {Node} */ function() {\n /** @type {!Array<string>} */\n const parts = [];\n\n for (let i = 0; i < this.childNodes.length; i++) {\n parts.push(this.childNodes[i].textContent);\n }\n\n return parts.join('');\n },\n set: /** @this {Node} */ function(assignedValue) {\n while (this.firstChild) {\n Native.Node_removeChild.call(this, this.firstChild);\n }\n Native.Node_appendChild.call(this, document.createTextNode(assignedValue));\n },\n });\n });\n }\n};\n","import CustomElementInternals from '../../CustomElementInternals.js';\nimport * as Utilities from '../../Utilities.js';\n\n/**\n * @typedef {{\n * before: !function(...(!Node|string)),\n * after: !function(...(!Node|string)),\n * replaceWith: !function(...(!Node|string)),\n * remove: !function(),\n * }}\n */\nlet ChildNodeNativeMethods;\n\n/**\n * @param {!CustomElementInternals} internals\n * @param {!Object} destination\n * @param {!ChildNodeNativeMethods} builtIn\n */\nexport default function(internals, destination, builtIn) {\n /**\n * @param {!function(...(!Node|string))} builtInMethod\n * @return {!function(...(!Node|string))}\n */\n function beforeAfterPatch(builtInMethod) {\n return function(...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n * @type {!Array<!Node>}\n */\n const flattenedNodes = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n * @type {!Array<!Node>}\n */\n const connectedElements = [];\n\n for (var i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n builtInMethod.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n };\n }\n\n if (builtIn.before !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'before', beforeAfterPatch(builtIn.before));\n }\n\n if (builtIn.before !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'after', beforeAfterPatch(builtIn.after));\n }\n\n if (builtIn.replaceWith !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'replaceWith',\n /**\n * @param {...(!Node|string)} nodes\n */\n function(...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n * @type {!Array<!Node>}\n */\n const flattenedNodes = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n * @type {!Array<!Node>}\n */\n const connectedElements = [];\n\n for (var i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n const wasConnected = Utilities.isConnected(this);\n\n builtIn.replaceWith.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (wasConnected) {\n internals.disconnectTree(this);\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n });\n }\n\n if (builtIn.remove !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'remove',\n function() {\n const wasConnected = Utilities.isConnected(this);\n\n builtIn.remove.call(this);\n\n if (wasConnected) {\n internals.disconnectTree(this);\n }\n });\n }\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport CEState from '../CustomElementState.js';\nimport * as Utilities from '../Utilities.js';\n\nimport PatchParentNode from './Interface/ParentNode.js';\nimport PatchChildNode from './Interface/ChildNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n if (Native.Element_attachShadow) {\n Utilities.setPropertyUnchecked(Element.prototype, 'attachShadow',\n /**\n * @this {Element}\n * @param {!{mode: string}} init\n * @return {ShadowRoot}\n */\n function(init) {\n const shadowRoot = Native.Element_attachShadow.call(this, init);\n this.__CE_shadowRoot = shadowRoot;\n return shadowRoot;\n });\n }\n\n\n function patch_innerHTML(destination, baseDescriptor) {\n Object.defineProperty(destination, 'innerHTML', {\n enumerable: baseDescriptor.enumerable,\n configurable: true,\n get: baseDescriptor.get,\n set: /** @this {Element} */ function(htmlString) {\n const isConnected = Utilities.isConnected(this);\n\n // NOTE: In IE11, when using the native `innerHTML` setter, all nodes\n // that were previously descendants of the context element have all of\n // their children removed as part of the set - the entire subtree is\n // 'disassembled'. This work around walks the subtree *before* using the\n // native setter.\n /** @type {!Array<!Element>|undefined} */\n let removedElements = undefined;\n if (isConnected) {\n removedElements = [];\n Utilities.walkDeepDescendantElements(this, element => {\n if (element !== this) {\n removedElements.push(element);\n }\n });\n }\n\n baseDescriptor.set.call(this, htmlString);\n\n if (removedElements) {\n for (let i = 0; i < removedElements.length; i++) {\n const element = removedElements[i];\n if (element.__CE_state === CEState.custom) {\n internals.disconnectedCallback(element);\n }\n }\n }\n\n // Only create custom elements if this element's owner document is\n // associated with the registry.\n if (!this.ownerDocument.__CE_hasRegistry) {\n internals.patchTree(this);\n } else {\n internals.patchAndUpgradeTree(this);\n }\n return htmlString;\n },\n });\n }\n\n if (Native.Element_innerHTML && Native.Element_innerHTML.get) {\n patch_innerHTML(Element.prototype, Native.Element_innerHTML);\n } else if (Native.HTMLElement_innerHTML && Native.HTMLElement_innerHTML.get) {\n patch_innerHTML(HTMLElement.prototype, Native.HTMLElement_innerHTML);\n } else {\n\n internals.addPatch(function(element) {\n patch_innerHTML(element, {\n enumerable: true,\n configurable: true,\n // Implements getting `innerHTML` by performing an unpatched `cloneNode`\n // of the element and returning the resulting element's `innerHTML`.\n // TODO: Is this too expensive?\n get: /** @this {Element} */ function() {\n return Native.Node_cloneNode.call(this, true).innerHTML;\n },\n // Implements setting `innerHTML` by creating an unpatched element,\n // setting `innerHTML` of that element and replacing the target\n // element's children with those of the unpatched element.\n set: /** @this {Element} */ function(assignedValue) {\n // NOTE: re-route to `content` for `template` elements.\n // We need to do this because `template.appendChild` does not\n // route into `template.content`.\n const isTemplate = (this.localName === 'template');\n /** @type {!Node} */\n const content = isTemplate ? (/** @type {!HTMLTemplateElement} */\n (this)).content : this;\n /** @type {!Node} */\n const rawElement = Native.Document_createElement.call(document,\n this.localName);\n rawElement.innerHTML = assignedValue;\n\n while (content.childNodes.length > 0) {\n Native.Node_removeChild.call(content, content.childNodes[0]);\n }\n const container = isTemplate ? rawElement.content : rawElement;\n while (container.childNodes.length > 0) {\n Native.Node_appendChild.call(content, container.childNodes[0]);\n }\n },\n });\n });\n }\n\n\n Utilities.setPropertyUnchecked(Element.prototype, 'setAttribute',\n /**\n * @this {Element}\n * @param {string} name\n * @param {string} newValue\n */\n function(name, newValue) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_setAttribute.call(this, name, newValue);\n }\n\n const oldValue = Native.Element_getAttribute.call(this, name);\n Native.Element_setAttribute.call(this, name, newValue);\n newValue = Native.Element_getAttribute.call(this, name);\n internals.attributeChangedCallback(this, name, oldValue, newValue, null);\n });\n\n Utilities.setPropertyUnchecked(Element.prototype, 'setAttributeNS',\n /**\n * @this {Element}\n * @param {?string} namespace\n * @param {string} name\n * @param {string} newValue\n */\n function(namespace, name, newValue) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_setAttributeNS.call(this, namespace, name, newValue);\n }\n\n const oldValue = Native.Element_getAttributeNS.call(this, namespace, name);\n Native.Element_setAttributeNS.call(this, namespace, name, newValue);\n newValue = Native.Element_getAttributeNS.call(this, namespace, name);\n internals.attributeChangedCallback(this, name, oldValue, newValue, namespace);\n });\n\n Utilities.setPropertyUnchecked(Element.prototype, 'removeAttribute',\n /**\n * @this {Element}\n * @param {string} name\n */\n function(name) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_removeAttribute.call(this, name);\n }\n\n const oldValue = Native.Element_getAttribute.call(this, name);\n Native.Element_removeAttribute.call(this, name);\n if (oldValue !== null) {\n internals.attributeChangedCallback(this, name, oldValue, null, null);\n }\n });\n\n Utilities.setPropertyUnchecked(Element.prototype, 'removeAttributeNS',\n /**\n * @this {Element}\n * @param {?string} namespace\n * @param {string} name\n */\n function(namespace, name) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_removeAttributeNS.call(this, namespace, name);\n }\n\n const oldValue = Native.Element_getAttributeNS.call(this, namespace, name);\n Native.Element_removeAttributeNS.call(this, namespace, name);\n // In older browsers, `Element#getAttributeNS` may return the empty string\n // instead of null if the attribute does not exist. For details, see;\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttributeNS#Notes\n const newValue = Native.Element_getAttributeNS.call(this, namespace, name);\n if (oldValue !== newValue) {\n internals.attributeChangedCallback(this, name, oldValue, newValue, namespace);\n }\n });\n\n\n function patch_insertAdjacentElement(destination, baseMethod) {\n Utilities.setPropertyUnchecked(destination, 'insertAdjacentElement',\n /**\n * @this {Element}\n * @param {string} position\n * @param {!Element} element\n * @return {?Element}\n */\n function(position, element) {\n const wasConnected = Utilities.isConnected(element);\n const insertedElement = /** @type {!Element} */\n (baseMethod.call(this, position, element));\n\n if (wasConnected) {\n internals.disconnectTree(element);\n }\n\n if (Utilities.isConnected(insertedElement)) {\n internals.connectTree(element);\n }\n return insertedElement;\n });\n }\n\n if (Native.HTMLElement_insertAdjacentElement) {\n patch_insertAdjacentElement(HTMLElement.prototype, Native.HTMLElement_insertAdjacentElement);\n } else if (Native.Element_insertAdjacentElement) {\n patch_insertAdjacentElement(Element.prototype, Native.Element_insertAdjacentElement);\n } else {\n console.warn('Custom Elements: `Element#insertAdjacentElement` was not patched.');\n }\n\n\n function patch_insertAdjacentHTML(destination, baseMethod) {\n /**\n * Patches and upgrades all nodes which are siblings between `start`\n * (inclusive) and `end` (exclusive). If `end` is `null`, then all siblings\n * following `start` will be patched and upgraded.\n * @param {!Node} start\n * @param {?Node} end\n */\n function upgradeNodesInRange(start, end) {\n const nodes = [];\n for (let node = start; node !== end; node = node.nextSibling) {\n nodes.push(node);\n }\n for (let i = 0; i < nodes.length; i++) {\n internals.patchAndUpgradeTree(nodes[i]);\n }\n }\n\n Utilities.setPropertyUnchecked(destination, 'insertAdjacentHTML',\n /**\n * @this {Element}\n * @param {string} position\n * @param {string} text\n */\n function(position, text) {\n position = position.toLowerCase();\n\n if (position === \"beforebegin\") {\n const marker = this.previousSibling;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(\n /** @type {!Node} */ (marker || this.parentNode.firstChild), this);\n } else if (position === \"afterbegin\") {\n const marker = this.firstChild;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(/** @type {!Node} */ (this.firstChild), marker);\n } else if (position === \"beforeend\") {\n const marker = this.lastChild;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(marker || this.firstChild, null);\n } else if (position === \"afterend\") {\n const marker = this.nextSibling;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(/** @type {!Node} */ (this.nextSibling), marker);\n } else {\n throw new SyntaxError(`The value provided (${String(position)}) is ` +\n \"not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'.\");\n }\n });\n }\n\n if (Native.HTMLElement_insertAdjacentHTML) {\n patch_insertAdjacentHTML(HTMLElement.prototype, Native.HTMLElement_insertAdjacentHTML);\n } else if (Native.Element_insertAdjacentHTML) {\n patch_insertAdjacentHTML(Element.prototype, Native.Element_insertAdjacentHTML);\n } else {\n console.warn('Custom Elements: `Element#insertAdjacentHTML` was not patched.');\n }\n\n\n PatchParentNode(internals, Element.prototype, {\n prepend: Native.Element_prepend,\n append: Native.Element_append,\n });\n\n PatchChildNode(internals, Element.prototype, {\n before: Native.Element_before,\n after: Native.Element_after,\n replaceWith: Native.Element_replaceWith,\n remove: Native.Element_remove,\n });\n};\n","import CustomElementInternals from '../CustomElementInternals.js';\nimport Native from './Native.js';\nimport PatchParentNode from './Interface/ParentNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n PatchParentNode(internals, DocumentFragment.prototype, {\n prepend: Native.DocumentFragment_prepend,\n append: Native.DocumentFragment_append,\n });\n};\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n/*\nExtremely simple css parser. Intended to be not more than what we need\nand definitely not necessarily correct =).\n*/\n\n'use strict';\n\n/** @unrestricted */\nclass StyleNode {\n constructor() {\n /** @type {number} */\n this['start'] = 0;\n /** @type {number} */\n this['end'] = 0;\n /** @type {StyleNode} */\n this['previous'] = null;\n /** @type {StyleNode} */\n this['parent'] = null;\n /** @type {Array<StyleNode>} */\n this['rules'] = null;\n /** @type {string} */\n this['parsedCssText'] = '';\n /** @type {string} */\n this['cssText'] = '';\n /** @type {boolean} */\n this['atRule'] = false;\n /** @type {number} */\n this['type'] = 0;\n /** @type {string} */\n this['keyframesName'] = '';\n /** @type {string} */\n this['selector'] = '';\n /** @type {string} */\n this['parsedSelector'] = '';\n }\n}\n\nexport {StyleNode}\n\n// given a string of css, return a simple rule tree\n/**\n * @param {string} text\n * @return {StyleNode}\n */\nexport function parse(text) {\n text = clean(text);\n return parseCss(lex(text), text);\n}\n\n// remove stuff we don't care about that may hinder parsing\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction clean(cssText) {\n return cssText.replace(RX.comments, '').replace(RX.port, '');\n}\n\n// super simple {...} lexer that returns a node tree\n/**\n * @param {string} text\n * @return {StyleNode}\n */\nfunction lex(text) {\n let root = new StyleNode();\n root['start'] = 0;\n root['end'] = text.length\n let n = root;\n for (let i = 0, l = text.length; i < l; i++) {\n if (text[i] === OPEN_BRACE) {\n if (!n['rules']) {\n n['rules'] = [];\n }\n let p = n;\n let previous = p['rules'][p['rules'].length - 1] || null;\n n = new StyleNode();\n n['start'] = i + 1;\n n['parent'] = p;\n n['previous'] = previous;\n p['rules'].push(n);\n } else if (text[i] === CLOSE_BRACE) {\n n['end'] = i + 1;\n n = n['parent'] || root;\n }\n }\n return root;\n}\n\n// add selectors/cssText to node tree\n/**\n * @param {StyleNode} node\n * @param {string} text\n * @return {StyleNode}\n */\nfunction parseCss(node, text) {\n let t = text.substring(node['start'], node['end'] - 1);\n node['parsedCssText'] = node['cssText'] = t.trim();\n if (node['parent']) {\n let ss = node['previous'] ? node['previous']['end'] : node['parent']['start'];\n t = text.substring(ss, node['start'] - 1);\n t = _expandUnicodeEscapes(t);\n t = t.replace(RX.multipleSpaces, ' ');\n // TODO(sorvell): ad hoc; make selector include only after last ;\n // helps with mixin syntax\n t = t.substring(t.lastIndexOf(';') + 1);\n let s = node['parsedSelector'] = node['selector'] = t.trim();\n node['atRule'] = (s.indexOf(AT_START) === 0);\n // note, support a subset of rule types...\n if (node['atRule']) {\n if (s.indexOf(MEDIA_START) === 0) {\n node['type'] = types.MEDIA_RULE;\n } else if (s.match(RX.keyframesRule)) {\n node['type'] = types.KEYFRAMES_RULE;\n node['keyframesName'] =\n node['selector'].split(RX.multipleSpaces).pop();\n }\n } else {\n if (s.indexOf(VAR_START) === 0) {\n node['type'] = types.MIXIN_RULE;\n } else {\n node['type'] = types.STYLE_RULE;\n }\n }\n }\n let r$ = node['rules'];\n if (r$) {\n for (let i = 0, l = r$.length, r;\n (i < l) && (r = r$[i]); i++) {\n parseCss(r, text);\n }\n }\n return node;\n}\n\n/**\n * conversion of sort unicode escapes with spaces like `\\33 ` (and longer) into\n * expanded form that doesn't require trailing space `\\000033`\n * @param {string} s\n * @return {string}\n */\nfunction _expandUnicodeEscapes(s) {\n return s.replace(/\\\\([0-9a-f]{1,6})\\s/gi, function() {\n let code = arguments[1],\n repeat = 6 - code.length;\n while (repeat--) {\n code = '0' + code;\n }\n return '\\\\' + code;\n });\n}\n\n/**\n * stringify parsed css.\n * @param {StyleNode} node\n * @param {boolean=} preserveProperties\n * @param {string=} text\n * @return {string}\n */\nexport function stringify(node, preserveProperties, text = '') {\n // calc rule cssText\n let cssText = '';\n if (node['cssText'] || node['rules']) {\n let r$ = node['rules'];\n if (r$ && !_hasMixinRules(r$)) {\n for (let i = 0, l = r$.length, r;\n (i < l) && (r = r$[i]); i++) {\n cssText = stringify(r, preserveProperties, cssText);\n }\n } else {\n cssText = preserveProperties ? node['cssText'] :\n removeCustomProps(node['cssText']);\n cssText = cssText.trim();\n if (cssText) {\n cssText = ' ' + cssText + '\\n';\n }\n }\n }\n // emit rule if there is cssText\n if (cssText) {\n if (node['selector']) {\n text += node['selector'] + ' ' + OPEN_BRACE + '\\n';\n }\n text += cssText;\n if (node['selector']) {\n text += CLOSE_BRACE + '\\n\\n';\n }\n }\n return text;\n}\n\n/**\n * @param {Array<StyleNode>} rules\n * @return {boolean}\n */\nfunction _hasMixinRules(rules) {\n let r = rules[0];\n return Boolean(r) && Boolean(r['selector']) && r['selector'].indexOf(VAR_START) === 0;\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomProps(cssText) {\n cssText = removeCustomPropAssignment(cssText);\n return removeCustomPropApply(cssText);\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nexport function removeCustomPropAssignment(cssText) {\n return cssText\n .replace(RX.customProp, '')\n .replace(RX.mixinProp, '');\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomPropApply(cssText) {\n return cssText\n .replace(RX.mixinApply, '')\n .replace(RX.varApply, '');\n}\n\n/** @enum {number} */\nexport const types = {\n STYLE_RULE: 1,\n KEYFRAMES_RULE: 7,\n MEDIA_RULE: 4,\n MIXIN_RULE: 1000\n}\n\nconst OPEN_BRACE = '{';\nconst CLOSE_BRACE = '}';\n\n// helper regexp's\nconst RX = {\n comments: /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//gim,\n port: /@import[^;]*;/gim,\n customProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\\n]|$)/gim,\n mixinProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\\n]|$)?/gim,\n mixinApply: /@apply\\s*\\(?[^);]*\\)?\\s*(?:[;\\n]|$)?/gim,\n varApply: /[^;:]*?:[^;]*?var\\([^;]*\\)(?:[;\\n]|$)?/gim,\n keyframesRule: /^@[^\\s]*keyframes/,\n multipleSpaces: /\\s+/g\n}\n\nconst VAR_START = '--';\nconst MEDIA_START = '@media';\nconst AT_START = '@';\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nexport const nativeShadow = !(window['ShadyDOM'] && window['ShadyDOM']['inUse']);\nlet nativeCssVariables_;\n\n/**\n * @param {(ShadyCSSOptions | ShadyCSSInterface)=} settings\n */\nfunction calcCssVariables(settings) {\n if (settings && settings['shimcssproperties']) {\n nativeCssVariables_ = false;\n } else {\n // chrome 49 has semi-working css vars, check if box-shadow works\n // safari 9.1 has a recalc bug: https://bugs.webkit.org/show_bug.cgi?id=155782\n // However, shim css custom properties are only supported with ShadyDOM enabled,\n // so fall back on native if we do not detect ShadyDOM\n // Edge 15: custom properties used in ::before and ::after will also be used in the parent element\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12414257/\n nativeCssVariables_ = nativeShadow || Boolean(!navigator.userAgent.match(/AppleWebKit\\/601|Edge\\/15/) &&\n window.CSS && CSS.supports && CSS.supports('box-shadow', '0 0 0 var(--foo)'));\n }\n}\n\nif (window.ShadyCSS && window.ShadyCSS.nativeCss !== undefined) {\n nativeCssVariables_ = window.ShadyCSS.nativeCss;\n} else if (window.ShadyCSS) {\n calcCssVariables(window.ShadyCSS);\n // reset window variable to let ShadyCSS API take its place\n window.ShadyCSS = undefined;\n} else {\n calcCssVariables(window['WebComponents'] && window['WebComponents']['flags']);\n}\n\n// Hack for type error under new type inference which doesn't like that\n// nativeCssVariables is updated in a function and assigns the type\n// `function(): ?` instead of `boolean`.\nexport const nativeCssVariables = /** @type {boolean} */(nativeCssVariables_);\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nexport const VAR_ASSIGN = /(?:^|[;\\s{]\\s*)(--[\\w-]*?)\\s*:\\s*(?:((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};{])+)|\\{([^}]*)\\}(?:(?=[;\\s}])|$))/gi;\nexport const MIXIN_MATCH = /(?:^|\\W+)@apply\\s*\\(?([^);\\n]*)\\)?/gi;\nexport const VAR_CONSUMED = /(--[\\w-]+)\\s*([:,;)]|$)/gi;\nexport const ANIMATION_MATCH = /(animation\\s*:)|(animation-name\\s*:)/;\nexport const MEDIA_MATCH = /@media\\s(.*)/;\nexport const IS_VAR = /^--/;\nexport const BRACKETED = /\\{[^}]*\\}/g;\nexport const HOST_PREFIX = '(?:^|[^.#[:])';\nexport const HOST_SUFFIX = '($|[.:[\\\\s>+~])';\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/** @type {!Set<string>} */\nconst styleTextSet = new Set();\n\nexport const scopingAttribute = 'shady-unscoped';\n\n/**\n * Add a specifically-marked style to the document directly, and only one copy of that style.\n *\n * @param {!HTMLStyleElement} style\n * @return {undefined}\n */\nexport function processUnscopedStyle(style) {\n const text = style.textContent;\n if (!styleTextSet.has(text)) {\n styleTextSet.add(text);\n const newStyle = style.cloneNode(true);\n document.head.appendChild(newStyle);\n }\n}\n\n/**\n * Check if a style is supposed to be unscoped\n * @param {!HTMLStyleElement} style\n * @return {boolean} true if the style has the unscoping attribute\n */\nexport function isUnscopedStyle(style) {\n return style.hasAttribute(scopingAttribute);\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {nativeShadow, nativeCssVariables} from './style-settings.js';\nimport {parse, stringify, types, StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport {MEDIA_MATCH} from './common-regex.js';\nimport {processUnscopedStyle, isUnscopedStyle} from './unscoped-style-handler.js';\n\n/**\n * @param {string|StyleNode} rules\n * @param {function(StyleNode)=} callback\n * @return {string}\n */\nexport function toCssText (rules, callback) {\n if (!rules) {\n return '';\n }\n if (typeof rules === 'string') {\n rules = parse(rules);\n }\n if (callback) {\n forEachRule(rules, callback);\n }\n return stringify(rules, nativeCssVariables);\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @return {StyleNode}\n */\nexport function rulesForStyle(style) {\n if (!style['__cssRules'] && style.textContent) {\n style['__cssRules'] = parse(style.textContent);\n }\n return style['__cssRules'] || null;\n}\n\n// Tests if a rule is a keyframes selector, which looks almost exactly\n// like a normal selector but is not (it has nothing to do with scoping\n// for example).\n/**\n * @param {StyleNode} rule\n * @return {boolean}\n */\nexport function isKeyframesSelector(rule) {\n return Boolean(rule['parent']) &&\n rule['parent']['type'] === types.KEYFRAMES_RULE;\n}\n\n/**\n * @param {StyleNode} node\n * @param {Function=} styleRuleCallback\n * @param {Function=} keyframesRuleCallback\n * @param {boolean=} onlyActiveRules\n */\nexport function forEachRule(node, styleRuleCallback, keyframesRuleCallback, onlyActiveRules) {\n if (!node) {\n return;\n }\n let skipRules = false;\n let type = node['type'];\n if (onlyActiveRules) {\n if (type === types.MEDIA_RULE) {\n let matchMedia = node['selector'].match(MEDIA_MATCH);\n if (matchMedia) {\n // if rule is a non matching @media rule, skip subrules\n if (!window.matchMedia(matchMedia[1]).matches) {\n skipRules = true;\n }\n }\n }\n }\n if (type === types.STYLE_RULE) {\n styleRuleCallback(node);\n } else if (keyframesRuleCallback &&\n type === types.KEYFRAMES_RULE) {\n keyframesRuleCallback(node);\n } else if (type === types.MIXIN_RULE) {\n skipRules = true;\n }\n let r$ = node['rules'];\n if (r$ && !skipRules) {\n for (let i=0, l=r$.length, r; (i<l) && (r=r$[i]); i++) {\n forEachRule(r, styleRuleCallback, keyframesRuleCallback, onlyActiveRules);\n }\n }\n}\n\n// add a string of cssText to the document.\n/**\n * @param {string} cssText\n * @param {string} moniker\n * @param {Node} target\n * @param {Node} contextNode\n * @return {HTMLStyleElement}\n */\nexport function applyCss(cssText, moniker, target, contextNode) {\n let style = createScopeStyle(cssText, moniker);\n applyStyle(style, target, contextNode);\n return style;\n}\n\n/**\n * @param {string} cssText\n * @param {string} moniker\n * @return {HTMLStyleElement}\n */\nexport function createScopeStyle(cssText, moniker) {\n let style = /** @type {HTMLStyleElement} */(document.createElement('style'));\n if (moniker) {\n style.setAttribute('scope', moniker);\n }\n style.textContent = cssText;\n return style;\n}\n\n/**\n * Track the position of the last added style for placing placeholders\n * @type {Node}\n */\nlet lastHeadApplyNode = null;\n\n// insert a comment node as a styling position placeholder.\n/**\n * @param {string} moniker\n * @return {!Comment}\n */\nexport function applyStylePlaceHolder(moniker) {\n let placeHolder = document.createComment(' Shady DOM styles for ' +\n moniker + ' ');\n let after = lastHeadApplyNode ?\n lastHeadApplyNode['nextSibling'] : null;\n let scope = document.head;\n scope.insertBefore(placeHolder, after || scope.firstChild);\n lastHeadApplyNode = placeHolder;\n return placeHolder;\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @param {?Node} target\n * @param {?Node} contextNode\n */\nexport function applyStyle(style, target, contextNode) {\n target = target || document.head;\n let after = (contextNode && contextNode.nextSibling) ||\n target.firstChild;\n target.insertBefore(style, after);\n if (!lastHeadApplyNode) {\n lastHeadApplyNode = style;\n } else {\n // only update lastHeadApplyNode if the new style is inserted after the old lastHeadApplyNode\n let position = style.compareDocumentPosition(lastHeadApplyNode);\n if (position === Node.DOCUMENT_POSITION_PRECEDING) {\n lastHeadApplyNode = style;\n }\n }\n}\n\n/**\n * @param {string} buildType\n * @return {boolean}\n */\nexport function isTargetedBuild(buildType) {\n return nativeShadow ? buildType === 'shadow' : buildType === 'shady';\n}\n\n/**\n * @param {Element} element\n * @return {?string}\n */\nexport function getCssBuildType(element) {\n return element.getAttribute('css-build');\n}\n\n/**\n * Walk from text[start] matching parens and\n * returns position of the outer end paren\n * @param {string} text\n * @param {number} start\n * @return {number}\n */\nfunction findMatchingParen(text, start) {\n let level = 0;\n for (let i=start, l=text.length; i < l; i++) {\n if (text[i] === '(') {\n level++;\n } else if (text[i] === ')') {\n if (--level === 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\n/**\n * @param {string} str\n * @param {function(string, string, string, string)} callback\n */\nexport function processVariableAndFallback(str, callback) {\n // find 'var('\n let start = str.indexOf('var(');\n if (start === -1) {\n // no var?, everything is prefix\n return callback(str, '', '', '');\n }\n //${prefix}var(${inner})${suffix}\n let end = findMatchingParen(str, start + 3);\n let inner = str.substring(start + 4, end);\n let prefix = str.substring(0, start);\n // suffix may have other variables\n let suffix = processVariableAndFallback(str.substring(end + 1), callback);\n let comma = inner.indexOf(',');\n // value and fallback args should be trimmed to match in property lookup\n if (comma === -1) {\n // variable, no fallback\n return callback(prefix, inner.trim(), '', suffix);\n }\n // var(${value},${fallback})\n let value = inner.substring(0, comma).trim();\n let fallback = inner.substring(comma + 1).trim();\n return callback(prefix, value, fallback, suffix);\n}\n\n/**\n * @param {Element} element\n * @param {string} value\n */\nexport function setElementClassRaw(element, value) {\n // use native setAttribute provided by ShadyDOM when setAttribute is patched\n if (nativeShadow) {\n element.setAttribute('class', value);\n } else {\n window['ShadyDOM']['nativeMethods']['setAttribute'].call(element, 'class', value);\n }\n}\n\n/**\n * @param {Element | {is: string, extends: string}} element\n * @return {{is: string, typeExtension: string}}\n */\nexport function getIsExtends(element) {\n let localName = element['localName'];\n let is = '', typeExtension = '';\n /*\n NOTE: technically, this can be wrong for certain svg elements\n with `-` in the name like `<font-face>`\n */\n if (localName) {\n if (localName.indexOf('-') > -1) {\n is = localName;\n } else {\n typeExtension = localName;\n is = (element.getAttribute && element.getAttribute('is')) || '';\n }\n } else {\n is = /** @type {?} */(element).is;\n typeExtension = /** @type {?} */(element).extends;\n }\n return {is, typeExtension};\n}\n\n/**\n * @param {Element|DocumentFragment} element\n * @return {string}\n */\nexport function gatherStyleText(element) {\n /** @type {!Array<string>} */\n const styleTextParts = [];\n const styles = /** @type {!NodeList<!HTMLStyleElement>} */(element.querySelectorAll('style'));\n for (let i = 0; i < styles.length; i++) {\n const style = styles[i];\n if (isUnscopedStyle(style)) {\n if (!nativeShadow) {\n processUnscopedStyle(style);\n style.parentNode.removeChild(style);\n }\n } else {\n styleTextParts.push(style.textContent);\n style.parentNode.removeChild(style);\n }\n }\n return styleTextParts.join('').trim();\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport * as StyleUtil from './style-util.js';\nimport {nativeShadow} from './style-settings.js';\n\n/* Transforms ShadowDOM styling into ShadyDOM styling\n\n* scoping:\n\n * elements in scope get scoping selector class=\"x-foo-scope\"\n * selectors re-written as follows:\n\n div button -> div.x-foo-scope button.x-foo-scope\n\n* :host -> scopeName\n\n* :host(...) -> scopeName...\n\n* ::slotted(...) -> scopeName > ...\n\n* ...:dir(ltr|rtl) -> [dir=\"ltr|rtl\"] ..., ...[dir=\"ltr|rtl\"]\n\n* :host(:dir[rtl]) -> scopeName:dir(rtl) -> [dir=\"rtl\"] scopeName, scopeName[dir=\"rtl\"]\n\n*/\nconst SCOPE_NAME = 'style-scope';\n\nclass StyleTransformer {\n get SCOPE_NAME() {\n return SCOPE_NAME;\n }\n /**\n * Given a node and scope name, add a scoping class to each node\n * in the tree. This facilitates transforming css into scoped rules.\n * @param {?} node\n * @param {?} scope\n * @param {?=} shouldRemoveScope\n */\n dom(node, scope, shouldRemoveScope) {\n // one time optimization to skip scoping...\n if (node['__styleScoped']) {\n node['__styleScoped'] = null;\n } else {\n this._transformDom(node, scope || '', shouldRemoveScope);\n }\n }\n\n _transformDom(node, selector, shouldRemoveScope) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n this.element(node, selector, shouldRemoveScope);\n }\n let c$ = (node.localName === 'template') ?\n (node.content || node._content).childNodes :\n node.children || node.childNodes;\n if (c$) {\n for (let i=0; i<c$.length; i++) {\n this._transformDom(c$[i], selector, shouldRemoveScope);\n }\n }\n }\n /**\n * @param {?} element\n * @param {?} scope\n * @param {?=} shouldRemoveScope\n */\n element(element, scope, shouldRemoveScope) {\n // note: if using classes, we add both the general 'style-scope' class\n // as well as the specific scope. This enables easy filtering of all\n // `style-scope` elements\n if (scope) {\n // note: svg on IE does not have classList so fallback to class\n if (element.classList) {\n if (shouldRemoveScope) {\n element.classList.remove(SCOPE_NAME);\n element.classList.remove(scope);\n } else {\n element.classList.add(SCOPE_NAME);\n element.classList.add(scope);\n }\n } else if (element.getAttribute) {\n let c = element.getAttribute(CLASS);\n if (shouldRemoveScope) {\n if (c) {\n let newValue = c.replace(SCOPE_NAME, '').replace(scope, '');\n StyleUtil.setElementClassRaw(element, newValue);\n }\n } else {\n let newValue = (c ? c + ' ' : '') + SCOPE_NAME + ' ' + scope;\n StyleUtil.setElementClassRaw(element, newValue);\n }\n }\n }\n }\n\n /**\n * @param {?} element\n * @param {?} styleRules\n * @param {?=} callback\n */\n elementStyles(element, styleRules, callback) {\n let cssBuildType = element['__cssBuild'];\n // no need to shim selectors if settings.useNativeShadow, also\n // a shady css build will already have transformed selectors\n // NOTE: This method may be called as part of static or property shimming.\n // When there is a targeted build it will not be called for static shimming,\n // but when the property shim is used it is called and should opt out of\n // static shimming work when a proper build exists.\n let cssText = '';\n if (nativeShadow || cssBuildType === 'shady') {\n cssText = StyleUtil.toCssText(styleRules, callback);\n } else {\n let {is, typeExtension} = StyleUtil.getIsExtends(element);\n cssText = this.css(styleRules, is, typeExtension, callback) + '\\n\\n';\n }\n return cssText.trim();\n }\n\n // Given a string of cssText and a scoping string (scope), returns\n // a string of scoped css where each selector is transformed to include\n // a class created from the scope. ShadowDOM selectors are also transformed\n // (e.g. :host) to use the scoping selector.\n css(rules, scope, ext, callback) {\n let hostScope = this._calcHostScope(scope, ext);\n scope = this._calcElementScope(scope);\n let self = this;\n return StyleUtil.toCssText(rules, function(/** StyleNode */rule) {\n if (!rule.isScoped) {\n self.rule(rule, scope, hostScope);\n rule.isScoped = true;\n }\n if (callback) {\n callback(rule, scope, hostScope);\n }\n });\n }\n\n _calcElementScope(scope) {\n if (scope) {\n return CSS_CLASS_PREFIX + scope;\n } else {\n return '';\n }\n }\n\n _calcHostScope(scope, ext) {\n return ext ? `[is=${scope}]` : scope;\n }\n\n rule(rule, scope, hostScope) {\n this._transformRule(rule, this._transformComplexSelector,\n scope, hostScope);\n }\n\n /**\n * transforms a css rule to a scoped rule.\n *\n * @param {StyleNode} rule\n * @param {Function} transformer\n * @param {string=} scope\n * @param {string=} hostScope\n */\n _transformRule(rule, transformer, scope, hostScope) {\n // NOTE: save transformedSelector for subsequent matching of elements\n // against selectors (e.g. when calculating style properties)\n rule['selector'] = rule.transformedSelector =\n this._transformRuleCss(rule, transformer, scope, hostScope);\n }\n\n /**\n * @param {StyleNode} rule\n * @param {Function} transformer\n * @param {string=} scope\n * @param {string=} hostScope\n */\n _transformRuleCss(rule, transformer, scope, hostScope) {\n let p$ = rule['selector'].split(COMPLEX_SELECTOR_SEP);\n // we want to skip transformation of rules that appear in keyframes,\n // because they are keyframe selectors, not element selectors.\n if (!StyleUtil.isKeyframesSelector(rule)) {\n for (let i=0, l=p$.length, p; (i<l) && (p=p$[i]); i++) {\n p$[i] = transformer.call(this, p, scope, hostScope);\n }\n }\n return p$.join(COMPLEX_SELECTOR_SEP);\n }\n\n /**\n * @param {string} selector\n * @return {string}\n */\n _twiddleNthPlus(selector) {\n return selector.replace(NTH, (m, type, inside) => {\n if (inside.indexOf('+') > -1) {\n inside = inside.replace(/\\+/g, '___');\n } else if (inside.indexOf('___') > -1) {\n inside = inside.replace(/___/g, '+');\n }\n return `:${type}(${inside})`;\n });\n }\n\n/**\n * @param {string} selector\n * @param {string} scope\n * @param {string=} hostScope\n */\n _transformComplexSelector(selector, scope, hostScope) {\n let stop = false;\n selector = selector.trim();\n // Remove spaces inside of selectors like `:nth-of-type` because it confuses SIMPLE_SELECTOR_SEP\n let isNth = NTH.test(selector);\n if (isNth) {\n selector = selector.replace(NTH, (m, type, inner) => `:${type}(${inner.replace(/\\s/g, '')})`)\n selector = this._twiddleNthPlus(selector);\n }\n selector = selector.replace(SLOTTED_START, `${HOST} $1`);\n selector = selector.replace(SIMPLE_SELECTOR_SEP, (m, c, s) => {\n if (!stop) {\n let info = this._transformCompoundSelector(s, c, scope, hostScope);\n stop = stop || info.stop;\n c = info.combinator;\n s = info.value;\n }\n return c + s;\n });\n if (isNth) {\n selector = this._twiddleNthPlus(selector);\n }\n return selector;\n }\n\n _transformCompoundSelector(selector, combinator, scope, hostScope) {\n // replace :host with host scoping class\n let slottedIndex = selector.indexOf(SLOTTED);\n if (selector.indexOf(HOST) >= 0) {\n selector = this._transformHostSelector(selector, hostScope);\n // replace other selectors with scoping class\n } else if (slottedIndex !== 0) {\n selector = scope ? this._transformSimpleSelector(selector, scope) :\n selector;\n }\n // mark ::slotted() scope jump to replace with descendant selector + arg\n // also ignore left-side combinator\n let slotted = false;\n if (slottedIndex >= 0) {\n combinator = '';\n slotted = true;\n }\n // process scope jumping selectors up to the scope jump and then stop\n let stop;\n if (slotted) {\n stop = true;\n if (slotted) {\n // .zonk ::slotted(.foo) -> .zonk.scope > .foo\n selector = selector.replace(SLOTTED_PAREN, (m, paren) => ` > ${paren}`);\n }\n }\n selector = selector.replace(DIR_PAREN, (m, before, dir) =>\n `[dir=\"${dir}\"] ${before}, ${before}[dir=\"${dir}\"]`);\n return {value: selector, combinator, stop};\n }\n\n _transformSimpleSelector(selector, scope) {\n let p$ = selector.split(PSEUDO_PREFIX);\n p$[0] += scope;\n return p$.join(PSEUDO_PREFIX);\n }\n\n // :host(...) -> scopeName...\n _transformHostSelector(selector, hostScope) {\n let m = selector.match(HOST_PAREN);\n let paren = m && m[2].trim() || '';\n if (paren) {\n if (!paren[0].match(SIMPLE_SELECTOR_PREFIX)) {\n // paren starts with a type selector\n let typeSelector = paren.split(SIMPLE_SELECTOR_PREFIX)[0];\n // if the type selector is our hostScope then avoid pre-pending it\n if (typeSelector === hostScope) {\n return paren;\n // otherwise, this selector should not match in this scope so\n // output a bogus selector.\n } else {\n return SELECTOR_NO_MATCH;\n }\n } else {\n // make sure to do a replace here to catch selectors like:\n // `:host(.foo)::before`\n return selector.replace(HOST_PAREN, function(m, host, paren) {\n return hostScope + paren;\n });\n }\n // if no paren, do a straight :host replacement.\n // TODO(sorvell): this should not strictly be necessary but\n // it's needed to maintain support for `:host[foo]` type selectors\n // which have been improperly used under Shady DOM. This should be\n // deprecated.\n } else {\n return selector.replace(HOST, hostScope);\n }\n }\n\n /**\n * @param {StyleNode} rule\n */\n documentRule(rule) {\n // reset selector in case this is redone.\n rule['selector'] = rule['parsedSelector'];\n this.normalizeRootSelector(rule);\n this._transformRule(rule, this._transformDocumentSelector);\n }\n\n /**\n * @param {StyleNode} rule\n */\n normalizeRootSelector(rule) {\n if (rule['selector'] === ROOT) {\n rule['selector'] = 'html';\n }\n }\n\n/**\n * @param {string} selector\n */\n _transformDocumentSelector(selector) {\n return selector.match(SLOTTED) ?\n this._transformComplexSelector(selector, SCOPE_DOC_SELECTOR) :\n this._transformSimpleSelector(selector.trim(), SCOPE_DOC_SELECTOR);\n }\n}\n\nlet NTH = /:(nth[-\\w]+)\\(([^)]+)\\)/;\nlet SCOPE_DOC_SELECTOR = `:not(.${SCOPE_NAME})`;\nlet COMPLEX_SELECTOR_SEP = ',';\nlet SIMPLE_SELECTOR_SEP = /(^|[\\s>+~]+)((?:\\[.+?\\]|[^\\s>+~=[])+)/g;\nlet SIMPLE_SELECTOR_PREFIX = /[[.:#*]/;\nlet HOST = ':host';\nlet ROOT = ':root';\nlet SLOTTED = '::slotted';\nlet SLOTTED_START = new RegExp(`^(${SLOTTED})`);\n// NOTE: this supports 1 nested () pair for things like\n// :host(:not([selected]), more general support requires\n// parsing which seems like overkill\nlet HOST_PAREN = /(:host)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;\n// similar to HOST_PAREN\nlet SLOTTED_PAREN = /(?:::slotted)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;\nlet DIR_PAREN = /(.*):dir\\((?:(ltr|rtl))\\)/;\nlet CSS_CLASS_PREFIX = '.';\nlet PSEUDO_PREFIX = ':';\nlet CLASS = 'class';\nlet SELECTOR_NO_MATCH = 'should_not_match';\n\nexport default new StyleTransformer()\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\n\n/** @const {string} */\nconst infoKey = '__styleInfo';\n\nexport default class StyleInfo {\n /**\n * @param {Element} node\n * @return {StyleInfo}\n */\n static get(node) {\n if (node) {\n return node[infoKey];\n } else {\n return null;\n }\n }\n /**\n * @param {!Element} node\n * @param {StyleInfo} styleInfo\n * @return {StyleInfo}\n */\n static set(node, styleInfo) {\n node[infoKey] = styleInfo;\n return styleInfo;\n }\n /**\n * @param {StyleNode} ast\n * @param {Node=} placeholder\n * @param {Array<string>=} ownStylePropertyNames\n * @param {string=} elementName\n * @param {string=} typeExtension\n * @param {string=} cssBuild\n */\n constructor(ast, placeholder, ownStylePropertyNames, elementName, typeExtension, cssBuild) {\n /** @type {StyleNode} */\n this.styleRules = ast || null;\n /** @type {Node} */\n this.placeholder = placeholder || null;\n /** @type {!Array<string>} */\n this.ownStylePropertyNames = ownStylePropertyNames || [];\n /** @type {Array<Object>} */\n this.overrideStyleProperties = null;\n /** @type {string} */\n this.elementName = elementName || '';\n /** @type {string} */\n this.cssBuild = cssBuild || '';\n /** @type {string} */\n this.typeExtension = typeExtension || '';\n /** @type {Object<string, string>} */\n this.styleProperties = null;\n /** @type {?string} */\n this.scopeSelector = null;\n /** @type {HTMLStyleElement} */\n this.customStyle = null;\n }\n _getStyleRules() {\n return this.styleRules;\n }\n}\n\nStyleInfo.prototype['_getStyleRules'] = StyleInfo.prototype._getStyleRules;","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {removeCustomPropAssignment, StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport {nativeShadow} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport * as StyleUtil from './style-util.js';\nimport * as RX from './common-regex.js';\nimport StyleInfo from './style-info.js';\n\n// TODO: dedupe with shady\n/**\n * @param {string} selector\n * @return {boolean}\n * @this {Element}\n */\nconst matchesSelector = function(selector) {\n const method = this.matches || this.matchesSelector ||\n this.mozMatchesSelector || this.msMatchesSelector ||\n this.oMatchesSelector || this.webkitMatchesSelector;\n return method && method.call(this, selector);\n};\n\nconst IS_IE = navigator.userAgent.match('Trident');\n\nconst XSCOPE_NAME = 'x-scope';\n\nclass StyleProperties {\n get XSCOPE_NAME() {\n return XSCOPE_NAME;\n }\n/**\n * decorates styles with rule info and returns an array of used style property names\n *\n * @param {StyleNode} rules\n * @return {Array<string>}\n */\n decorateStyles(rules) {\n let self = this, props = {}, keyframes = [], ruleIndex = 0;\n StyleUtil.forEachRule(rules, function(rule) {\n self.decorateRule(rule);\n // mark in-order position of ast rule in styles block, used for cache key\n rule.index = ruleIndex++;\n self.collectPropertiesInCssText(rule.propertyInfo.cssText, props);\n }, function onKeyframesRule(rule) {\n keyframes.push(rule);\n });\n // Cache all found keyframes rules for later reference:\n rules._keyframes = keyframes;\n // return this list of property names *consumes* in these styles.\n let names = [];\n for (let i in props) {\n names.push(i);\n }\n return names;\n }\n\n // decorate a single rule with property info\n decorateRule(rule) {\n if (rule.propertyInfo) {\n return rule.propertyInfo;\n }\n let info = {}, properties = {};\n let hasProperties = this.collectProperties(rule, properties);\n if (hasProperties) {\n info.properties = properties;\n // TODO(sorvell): workaround parser seeing mixins as additional rules\n rule['rules'] = null;\n }\n info.cssText = this.collectCssText(rule);\n rule.propertyInfo = info;\n return info;\n }\n\n // collects the custom properties from a rule's cssText\n collectProperties(rule, properties) {\n let info = rule.propertyInfo;\n if (info) {\n if (info.properties) {\n Object.assign(properties, info.properties);\n return true;\n }\n } else {\n let m, rx = RX.VAR_ASSIGN;\n let cssText = rule['parsedCssText'];\n let value;\n let any;\n while ((m = rx.exec(cssText))) {\n // note: group 2 is var, 3 is mixin\n value = (m[2] || m[3]).trim();\n // value of 'inherit' or 'unset' is equivalent to not setting the property here\n if (value !== 'inherit' || value !== 'unset') {\n properties[m[1].trim()] = value;\n }\n any = true;\n }\n return any;\n }\n\n }\n\n // returns cssText of properties that consume variables/mixins\n collectCssText(rule) {\n return this.collectConsumingCssText(rule['parsedCssText']);\n }\n\n // NOTE: we support consumption inside mixin assignment\n // but not production, so strip out {...}\n collectConsumingCssText(cssText) {\n return cssText.replace(RX.BRACKETED, '')\n .replace(RX.VAR_ASSIGN, '');\n }\n\n collectPropertiesInCssText(cssText, props) {\n let m;\n while ((m = RX.VAR_CONSUMED.exec(cssText))) {\n let name = m[1];\n // This regex catches all variable names, and following non-whitespace char\n // If next char is not ':', then variable is a consumer\n if (m[2] !== ':') {\n props[name] = true;\n }\n }\n }\n\n // turns custom properties into realized values.\n reify(props) {\n // big perf optimization here: reify only *own* properties\n // since this object has __proto__ of the element's scope properties\n let names = Object.getOwnPropertyNames(props);\n for (let i=0, n; i < names.length; i++) {\n n = names[i];\n props[n] = this.valueForProperty(props[n], props);\n }\n }\n\n // given a property value, returns the reified value\n // a property value may be:\n // (1) a literal value like: red or 5px;\n // (2) a variable value like: var(--a), var(--a, red), or var(--a, --b) or\n // var(--a, var(--b));\n // (3) a literal mixin value like { properties }. Each of these properties\n // can have values that are: (a) literal, (b) variables, (c) @apply mixins.\n valueForProperty(property, props) {\n // case (1) default\n // case (3) defines a mixin and we have to reify the internals\n if (property) {\n if (property.indexOf(';') >=0) {\n property = this.valueForProperties(property, props);\n } else {\n // case (2) variable\n let self = this;\n let fn = function(prefix, value, fallback, suffix) {\n if (!value) {\n return prefix + suffix;\n }\n let propertyValue = self.valueForProperty(props[value], props);\n // if value is \"initial\", then the variable should be treated as unset\n if (!propertyValue || propertyValue === 'initial') {\n // fallback may be --a or var(--a) or literal\n propertyValue = self.valueForProperty(props[fallback] || fallback, props) ||\n fallback;\n } else if (propertyValue === 'apply-shim-inherit') {\n // CSS build will replace `inherit` with `apply-shim-inherit`\n // for use with native css variables.\n // Since we have full control, we can use `inherit` directly.\n propertyValue = 'inherit';\n }\n return prefix + (propertyValue || '') + suffix;\n };\n property = StyleUtil.processVariableAndFallback(property, fn);\n }\n }\n return property && property.trim() || '';\n }\n\n // note: we do not yet support mixin within mixin\n valueForProperties(property, props) {\n let parts = property.split(';');\n for (let i=0, p, m; i<parts.length; i++) {\n if ((p = parts[i])) {\n RX.MIXIN_MATCH.lastIndex = 0;\n m = RX.MIXIN_MATCH.exec(p);\n if (m) {\n p = this.valueForProperty(props[m[1]], props);\n } else {\n let colon = p.indexOf(':');\n if (colon !== -1) {\n let pp = p.substring(colon);\n pp = pp.trim();\n pp = this.valueForProperty(pp, props) || pp;\n p = p.substring(0, colon) + pp;\n }\n }\n parts[i] = (p && p.lastIndexOf(';') === p.length - 1) ?\n // strip trailing ;\n p.slice(0, -1) :\n p || '';\n }\n }\n return parts.join(';');\n }\n\n applyProperties(rule, props) {\n let output = '';\n // dynamically added sheets may not be decorated so ensure they are.\n if (!rule.propertyInfo) {\n this.decorateRule(rule);\n }\n if (rule.propertyInfo.cssText) {\n output = this.valueForProperties(rule.propertyInfo.cssText, props);\n }\n rule['cssText'] = output;\n }\n\n // Apply keyframe transformations to the cssText of a given rule. The\n // keyframeTransforms object is a map of keyframe names to transformer\n // functions which take in cssText and spit out transformed cssText.\n applyKeyframeTransforms(rule, keyframeTransforms) {\n let input = rule['cssText'];\n let output = rule['cssText'];\n if (rule.hasAnimations == null) {\n // Cache whether or not the rule has any animations to begin with:\n rule.hasAnimations = RX.ANIMATION_MATCH.test(input);\n }\n // If there are no animations referenced, we can skip transforms:\n if (rule.hasAnimations) {\n let transform;\n // If we haven't transformed this rule before, we iterate over all\n // transforms:\n if (rule.keyframeNamesToTransform == null) {\n rule.keyframeNamesToTransform = [];\n for (let keyframe in keyframeTransforms) {\n transform = keyframeTransforms[keyframe];\n output = transform(input);\n // If the transform actually changed the CSS text, we cache the\n // transform name for future use:\n if (input !== output) {\n input = output;\n rule.keyframeNamesToTransform.push(keyframe);\n }\n }\n } else {\n // If we already have a list of keyframe names that apply to this\n // rule, we apply only those keyframe name transforms:\n for (let i = 0; i < rule.keyframeNamesToTransform.length; ++i) {\n transform = keyframeTransforms[rule.keyframeNamesToTransform[i]];\n input = transform(input);\n }\n output = input;\n }\n }\n rule['cssText'] = output;\n }\n\n // Test if the rules in these styles matches the given `element` and if so,\n // collect any custom properties into `props`.\n /**\n * @param {StyleNode} rules\n * @param {Element} element\n */\n propertyDataFromStyles(rules, element) {\n let props = {}, self = this;\n // generates a unique key for these matches\n let o = [];\n // note: active rules excludes non-matching @media rules\n StyleUtil.forEachRule(rules, function(rule) {\n // TODO(sorvell): we could trim the set of rules at declaration\n // time to only include ones that have properties\n if (!rule.propertyInfo) {\n self.decorateRule(rule);\n }\n // match element against transformedSelector: selector may contain\n // unwanted uniquification and parsedSelector does not directly match\n // for :host selectors.\n let selectorToMatch = rule.transformedSelector || rule['parsedSelector'];\n if (element && rule.propertyInfo.properties && selectorToMatch) {\n if (matchesSelector.call(element, selectorToMatch)) {\n self.collectProperties(rule, props);\n // produce numeric key for these matches for lookup\n addToBitMask(rule.index, o);\n }\n }\n }, null, true);\n return {properties: props, key: o};\n }\n\n /**\n * @param {Element} scope\n * @param {StyleNode} rule\n * @param {string|undefined} cssBuild\n * @param {function(Object)} callback\n */\n whenHostOrRootRule(scope, rule, cssBuild, callback) {\n if (!rule.propertyInfo) {\n this.decorateRule(rule);\n }\n if (!rule.propertyInfo.properties) {\n return;\n }\n let {is, typeExtension} = StyleUtil.getIsExtends(scope);\n let hostScope = is ?\n StyleTransformer._calcHostScope(is, typeExtension) :\n 'html';\n let parsedSelector = rule['parsedSelector'];\n let isRoot = (parsedSelector === ':host > *' || parsedSelector === 'html');\n let isHost = parsedSelector.indexOf(':host') === 0 && !isRoot;\n // build info is either in scope (when scope is an element) or in the style\n // when scope is the default scope; note: this allows default scope to have\n // mixed mode built and unbuilt styles.\n if (cssBuild === 'shady') {\n // :root -> x-foo > *.x-foo for elements and html for custom-style\n isRoot = parsedSelector === (hostScope + ' > *.' + hostScope) || parsedSelector.indexOf('html') !== -1;\n // :host -> x-foo for elements, but sub-rules have .x-foo in them\n isHost = !isRoot && parsedSelector.indexOf(hostScope) === 0;\n }\n if (cssBuild === 'shadow') {\n isRoot = parsedSelector === ':host > *' || parsedSelector === 'html';\n isHost = isHost && !isRoot;\n }\n if (!isRoot && !isHost) {\n return;\n }\n let selectorToMatch = hostScope;\n if (isHost) {\n // need to transform :host because `:host` does not work with `matches`\n if (!rule.transformedSelector) {\n // transform :host into a matchable selector\n rule.transformedSelector =\n StyleTransformer._transformRuleCss(\n rule,\n StyleTransformer._transformComplexSelector,\n StyleTransformer._calcElementScope(is),\n hostScope\n );\n }\n selectorToMatch = rule.transformedSelector || hostScope;\n }\n callback({\n selector: selectorToMatch,\n isHost: isHost,\n isRoot: isRoot\n });\n }\n/**\n * @param {Element} scope\n * @param {StyleNode} rules\n * @return {Object}\n */\n hostAndRootPropertiesForScope(scope, rules) {\n let hostProps = {}, rootProps = {}, self = this;\n // note: active rules excludes non-matching @media rules\n let cssBuild = rules && rules['__cssBuild'];\n StyleUtil.forEachRule(rules, function(rule) {\n // if scope is StyleDefaults, use _element for matchesSelector\n self.whenHostOrRootRule(scope, rule, cssBuild, function(info) {\n let element = scope._element || scope;\n if (matchesSelector.call(element, info.selector)) {\n if (info.isHost) {\n self.collectProperties(rule, hostProps);\n } else {\n self.collectProperties(rule, rootProps);\n }\n }\n });\n }, null, true);\n return {rootProps: rootProps, hostProps: hostProps};\n }\n\n /**\n * @param {Element} element\n * @param {Object} properties\n * @param {string} scopeSelector\n */\n transformStyles(element, properties, scopeSelector) {\n let self = this;\n let {is, typeExtension} = StyleUtil.getIsExtends(element);\n let hostSelector = StyleTransformer\n ._calcHostScope(is, typeExtension);\n let rxHostSelector = element.extends ?\n '\\\\' + hostSelector.slice(0, -1) + '\\\\]' :\n hostSelector;\n let hostRx = new RegExp(RX.HOST_PREFIX + rxHostSelector +\n RX.HOST_SUFFIX);\n let rules = StyleInfo.get(element).styleRules;\n let keyframeTransforms =\n this._elementKeyframeTransforms(element, rules, scopeSelector);\n return StyleTransformer.elementStyles(element, rules, function(rule) {\n self.applyProperties(rule, properties);\n if (!nativeShadow &&\n !StyleUtil.isKeyframesSelector(rule) &&\n rule['cssText']) {\n // NOTE: keyframe transforms only scope munge animation names, so it\n // is not necessary to apply them in ShadowDOM.\n self.applyKeyframeTransforms(rule, keyframeTransforms);\n self._scopeSelector(rule, hostRx, hostSelector, scopeSelector);\n }\n });\n }\n\n /**\n * @param {Element} element\n * @param {StyleNode} rules\n * @param {string} scopeSelector\n * @return {Object}\n */\n _elementKeyframeTransforms(element, rules, scopeSelector) {\n let keyframesRules = rules._keyframes;\n let keyframeTransforms = {};\n if (!nativeShadow && keyframesRules) {\n // For non-ShadowDOM, we transform all known keyframes rules in\n // advance for the current scope. This allows us to catch keyframes\n // rules that appear anywhere in the stylesheet:\n for (let i = 0, keyframesRule = keyframesRules[i];\n i < keyframesRules.length;\n keyframesRule = keyframesRules[++i]) {\n this._scopeKeyframes(keyframesRule, scopeSelector);\n keyframeTransforms[keyframesRule['keyframesName']] =\n this._keyframesRuleTransformer(keyframesRule);\n }\n }\n return keyframeTransforms;\n }\n\n // Generate a factory for transforming a chunk of CSS text to handle a\n // particular scoped keyframes rule.\n /**\n * @param {StyleNode} keyframesRule\n * @return {function(string):string}\n */\n _keyframesRuleTransformer(keyframesRule) {\n return function(cssText) {\n return cssText.replace(\n keyframesRule.keyframesNameRx,\n keyframesRule.transformedKeyframesName);\n };\n }\n\n/**\n * Transforms `@keyframes` names to be unique for the current host.\n * Example: @keyframes foo-anim -> @keyframes foo-anim-x-foo-0\n *\n * @param {StyleNode} rule\n * @param {string} scopeId\n */\n _scopeKeyframes(rule, scopeId) {\n // Animation names are of the form [\\w-], so ensure that the name regex does not partially apply\n // to similarly named keyframe names by checking for a word boundary at the beginning and\n // a non-word boundary or `-` at the end.\n rule.keyframesNameRx = new RegExp(`\\\\b${rule['keyframesName']}(?!\\\\B|-)`, 'g');\n rule.transformedKeyframesName = rule['keyframesName'] + '-' + scopeId;\n rule.transformedSelector = rule.transformedSelector || rule['selector'];\n rule['selector'] = rule.transformedSelector.replace(\n rule['keyframesName'], rule.transformedKeyframesName);\n }\n\n // Strategy: x scope shim a selector e.g. to scope `.x-foo-42` (via classes):\n // non-host selector: .a.x-foo -> .x-foo-42 .a.x-foo\n // host selector: x-foo.wide -> .x-foo-42.wide\n // note: we use only the scope class (.x-foo-42) and not the hostSelector\n // (x-foo) to scope :host rules; this helps make property host rules\n // have low specificity. They are overrideable by class selectors but,\n // unfortunately, not by type selectors (e.g. overriding via\n // `.special` is ok, but not by `x-foo`).\n /**\n * @param {StyleNode} rule\n * @param {RegExp} hostRx\n * @param {string} hostSelector\n * @param {string} scopeId\n */\n _scopeSelector(rule, hostRx, hostSelector, scopeId) {\n rule.transformedSelector = rule.transformedSelector || rule['selector'];\n let selector = rule.transformedSelector;\n let scope = '.' + scopeId;\n let parts = selector.split(',');\n for (let i=0, l=parts.length, p; (i<l) && (p=parts[i]); i++) {\n parts[i] = p.match(hostRx) ?\n p.replace(hostSelector, scope) :\n scope + ' ' + p;\n }\n rule['selector'] = parts.join(',');\n }\n\n /**\n * @param {Element} element\n * @param {string} selector\n * @param {string} old\n */\n applyElementScopeSelector(element, selector, old) {\n let c = element.getAttribute('class') || '';\n let v = c;\n if (old) {\n v = c.replace(\n new RegExp('\\\\s*' + XSCOPE_NAME + '\\\\s*' + old + '\\\\s*', 'g'), ' ');\n }\n v += (v ? ' ' : '') + XSCOPE_NAME + ' ' + selector;\n if (c !== v) {\n StyleUtil.setElementClassRaw(element, v);\n }\n }\n\n /**\n * @param {HTMLElement} element\n * @param {Object} properties\n * @param {string} selector\n * @param {HTMLStyleElement} style\n * @return {HTMLStyleElement}\n */\n applyElementStyle(element, properties, selector, style) {\n // calculate cssText to apply\n let cssText = style ? style.textContent || '' :\n this.transformStyles(element, properties, selector);\n // if shady and we have a cached style that is not style, decrement\n let styleInfo = StyleInfo.get(element);\n let s = styleInfo.customStyle;\n if (s && !nativeShadow && (s !== style)) {\n s['_useCount']--;\n if (s['_useCount'] <= 0 && s.parentNode) {\n s.parentNode.removeChild(s);\n }\n }\n // apply styling always under native or if we generated style\n // or the cached style is not in document(!)\n if (nativeShadow) {\n // update existing style only under native\n if (styleInfo.customStyle) {\n styleInfo.customStyle.textContent = cssText;\n style = styleInfo.customStyle;\n // otherwise, if we have css to apply, do so\n } else if (cssText) {\n // apply css after the scope style of the element to help with\n // style precedence rules.\n style = StyleUtil.applyCss(cssText, selector, element.shadowRoot,\n styleInfo.placeholder);\n }\n } else {\n // shady and no cache hit\n if (!style) {\n // apply css after the scope style of the element to help with\n // style precedence rules.\n if (cssText) {\n style = StyleUtil.applyCss(cssText, selector, null,\n styleInfo.placeholder);\n }\n // shady and cache hit but not in document\n } else if (!style.parentNode) {\n if (IS_IE && cssText.indexOf('@media') > -1) {\n // @media rules may be stale in IE 10 and 11\n // refresh the text content of the style to revalidate them.\n style.textContent = cssText;\n }\n StyleUtil.applyStyle(style, null, styleInfo.placeholder);\n }\n }\n // ensure this style is our custom style and increment its use count.\n if (style) {\n style['_useCount'] = style['_useCount'] || 0;\n // increment use count if we changed styles\n if (styleInfo.customStyle != style) {\n style['_useCount']++;\n }\n styleInfo.customStyle = style;\n }\n return style;\n }\n\n /**\n * @param {Element} style\n * @param {Object} properties\n */\n applyCustomStyle(style, properties) {\n let rules = StyleUtil.rulesForStyle(/** @type {HTMLStyleElement} */(style));\n let self = this;\n style.textContent = StyleUtil.toCssText(rules, function(/** StyleNode */rule) {\n let css = rule['cssText'] = rule['parsedCssText'];\n if (rule.propertyInfo && rule.propertyInfo.cssText) {\n // remove property assignments\n // so next function isn't confused\n // NOTE: we have 3 categories of css:\n // (1) normal properties,\n // (2) custom property assignments (--foo: red;),\n // (3) custom property usage: border: var(--foo); @apply(--foo);\n // In elements, 1 and 3 are separated for efficiency; here they\n // are not and this makes this case unique.\n css = removeCustomPropAssignment(/** @type {string} */(css));\n // replace with reified properties, scenario is same as mixin\n rule['cssText'] = self.valueForProperties(css, properties);\n }\n });\n }\n}\n\n/**\n * @param {number} n\n * @param {Array<number>} bits\n */\nfunction addToBitMask(n, bits) {\n let o = parseInt(n / 32, 10);\n let v = 1 << (n % 32);\n bits[o] = (bits[o] || 0) | v;\n}\n\nexport default new StyleProperties();","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {applyStylePlaceHolder} from './style-util.js';\nimport {nativeShadow} from './style-settings.js';\n\n/** @type {Object<string, !Node>} */\nlet placeholderMap = {};\n\n/**\n * @const {CustomElementRegistry}\n */\nconst ce = window['customElements'];\nif (ce && !nativeShadow) {\n /**\n * @const {function(this:CustomElementRegistry, string,function(new:HTMLElement),{extends: string}=)}\n */\n const origDefine = ce['define'];\n /**\n * @param {string} name\n * @param {function(new:HTMLElement)} clazz\n * @param {{extends: string}=} options\n */\n const wrappedDefine = (name, clazz, options) => {\n placeholderMap[name] = applyStylePlaceHolder(name);\n origDefine.call(/** @type {!CustomElementRegistry} */(ce), name, clazz, options);\n };\n ce['define'] = wrappedDefine;\n}\n\nexport default placeholderMap;\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n'use strict';\n\nexport default class StyleCache {\n constructor(typeMax = 100) {\n // map element name -> [{properties, styleElement, scopeSelector}]\n this.cache = {};\n this.typeMax = typeMax;\n }\n\n _validate(cacheEntry, properties, ownPropertyNames) {\n for (let idx = 0; idx < ownPropertyNames.length; idx++) {\n let pn = ownPropertyNames[idx];\n if (cacheEntry.properties[pn] !== properties[pn]) {\n return false;\n }\n }\n return true;\n }\n\n store(tagname, properties, styleElement, scopeSelector) {\n let list = this.cache[tagname] || [];\n list.push({properties, styleElement, scopeSelector});\n if (list.length > this.typeMax) {\n list.shift();\n }\n this.cache[tagname] = list;\n }\n\n fetch(tagname, properties, ownPropertyNames) {\n let list = this.cache[tagname];\n if (!list) {\n return;\n }\n // reverse list for most-recent lookups\n for (let idx = list.length - 1; idx >= 0; idx--) {\n let entry = list[idx];\n if (this._validate(entry, properties, ownPropertyNames)) {\n return entry;\n }\n }\n }\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {nativeShadow} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport {getIsExtends} from './style-util.js';\n\nexport let flush = function() {};\n\n/**\n * @param {HTMLElement} element\n * @return {!Array<string>}\n */\nfunction getClasses(element) {\n let classes = [];\n if (element.classList) {\n classes = Array.from(element.classList);\n } else if (element instanceof window['SVGElement'] && element.hasAttribute('class')) {\n classes = element.getAttribute('class').split(/\\s+/);\n }\n return classes;\n}\n\n/**\n * @param {HTMLElement} element\n * @return {string}\n */\nfunction getCurrentScope(element) {\n let classes = getClasses(element);\n let idx = classes.indexOf(StyleTransformer.SCOPE_NAME);\n if (idx > -1) {\n return classes[idx + 1];\n }\n return '';\n}\n\n/**\n * @param {Array<MutationRecord|null>|null} mxns\n */\nfunction handler(mxns) {\n for (let x=0; x < mxns.length; x++) {\n let mxn = mxns[x];\n if (mxn.target === document.documentElement ||\n mxn.target === document.head) {\n continue;\n }\n for (let i=0; i < mxn.addedNodes.length; i++) {\n let n = mxn.addedNodes[i];\n if (n.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n n = /** @type {HTMLElement} */(n); // eslint-disable-line no-self-assign\n let root = n.getRootNode();\n let currentScope = getCurrentScope(n);\n // node was scoped, but now is in document\n if (currentScope && root === n.ownerDocument) {\n StyleTransformer.dom(n, currentScope, true);\n } else if (root.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n let newScope;\n let host = /** @type {ShadowRoot} */(root).host;\n // element may no longer be in a shadowroot\n if (!host) {\n continue;\n }\n newScope = getIsExtends(host).is;\n if (currentScope === newScope) {\n // make sure all the subtree elements are scoped correctly\n let unscoped = window['ShadyDOM']['nativeMethods']['querySelectorAll'].call(\n n, `:not(.${StyleTransformer.SCOPE_NAME})`);\n for (let j = 0; j < unscoped.length; j++) {\n StyleTransformer.element(unscoped[j], currentScope);\n }\n continue;\n }\n if (currentScope) {\n StyleTransformer.dom(n, currentScope, true);\n }\n StyleTransformer.dom(n, newScope);\n }\n }\n }\n}\n\nif (!nativeShadow) {\n let observer = new MutationObserver(handler);\n let start = (node) => {\n observer.observe(node, {childList: true, subtree: true});\n }\n let nativeCustomElements = (window['customElements'] &&\n !window['customElements']['polyfillWrapFlushCallback']);\n // need to start immediately with native custom elements\n // TODO(dfreedm): with polyfilled HTMLImports and native custom elements\n // excessive mutations may be observed; this can be optimized via cooperation\n // with the HTMLImports polyfill.\n if (nativeCustomElements) {\n start(document);\n } else {\n let delayedStart = () => {\n start(document.body);\n }\n // use polyfill timing if it's available\n if (window['HTMLImports']) {\n window['HTMLImports']['whenReady'](delayedStart);\n // otherwise push beyond native imports being ready\n // which requires RAF + readystate interactive.\n } else {\n requestAnimationFrame(function() {\n if (document.readyState === 'loading') {\n let listener = function() {\n delayedStart();\n document.removeEventListener('readystatechange', listener);\n }\n document.addEventListener('readystatechange', listener);\n } else {\n delayedStart();\n }\n });\n }\n }\n\n flush = function() {\n handler(observer.takeRecords());\n }\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/**\n * @const {!Object<string, !HTMLTemplateElement>}\n */\nconst templateMap = {};\nexport default templateMap;\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\nimport templateMap from './template-map.js';\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\n\n/*\n * Utilities for handling invalidating apply-shim mixins for a given template.\n *\n * The invalidation strategy involves keeping track of the \"current\" version of a template's mixins, and updating that count when a mixin is invalidated.\n * The template\n */\n\n/** @const {string} */\nconst CURRENT_VERSION = '_applyShimCurrentVersion';\n\n/** @const {string} */\nconst NEXT_VERSION = '_applyShimNextVersion';\n\n/** @const {string} */\nconst VALIDATING_VERSION = '_applyShimValidatingVersion';\n\n/**\n * @const {Promise<void>}\n */\nconst promise = Promise.resolve();\n\n/**\n * @param {string} elementName\n */\nexport function invalidate(elementName){\n let template = templateMap[elementName];\n if (template) {\n invalidateTemplate(template);\n }\n}\n\n/**\n * This function can be called multiple times to mark a template invalid\n * and signal that the style inside must be regenerated.\n *\n * Use `startValidatingTemplate` to begin an asynchronous validation cycle.\n * During that cycle, call `templateIsValidating` to see if the template must\n * be revalidated\n * @param {HTMLTemplateElement} template\n */\nexport function invalidateTemplate(template) {\n // default the current version to 0\n template[CURRENT_VERSION] = template[CURRENT_VERSION] || 0;\n // ensure the \"validating for\" flag exists\n template[VALIDATING_VERSION] = template[VALIDATING_VERSION] || 0;\n // increment the next version\n template[NEXT_VERSION] = (template[NEXT_VERSION] || 0) + 1;\n}\n\n/**\n * @param {string} elementName\n * @return {boolean}\n */\nexport function isValid(elementName) {\n let template = templateMap[elementName];\n if (template) {\n return templateIsValid(template);\n }\n return true;\n}\n\n/**\n * @param {HTMLTemplateElement} template\n * @return {boolean}\n */\nexport function templateIsValid(template) {\n return template[CURRENT_VERSION] === template[NEXT_VERSION];\n}\n\n/**\n * @param {string} elementName\n * @return {boolean}\n */\nexport function isValidating(elementName) {\n let template = templateMap[elementName];\n if (template) {\n return templateIsValidating(template);\n }\n return false;\n}\n\n/**\n * Returns true if the template is currently invalid and `startValidating` has been called since the last invalidation.\n * If false, the template must be validated.\n * @param {HTMLTemplateElement} template\n * @return {boolean}\n */\nexport function templateIsValidating(template) {\n return !templateIsValid(template) && template[VALIDATING_VERSION] === template[NEXT_VERSION];\n}\n\n/**\n * the template is marked as `validating` for one microtask so that all instances\n * found in the tree crawl of `applyStyle` will update themselves,\n * but the template will only be updated once.\n * @param {string} elementName\n*/\nexport function startValidating(elementName) {\n let template = templateMap[elementName];\n startValidatingTemplate(template);\n}\n\n/**\n * Begin an asynchronous invalidation cycle.\n * This should be called after every validation of a template\n *\n * After one microtask, the template will be marked as valid until the next call to `invalidateTemplate`\n * @param {HTMLTemplateElement} template\n */\nexport function startValidatingTemplate(template) {\n // remember that the current \"next version\" is the reason for this validation cycle\n template[VALIDATING_VERSION] = template[NEXT_VERSION];\n // however, there only needs to be one async task to clear the counters\n if (!template._validating) {\n template._validating = true;\n promise.then(function() {\n // sync the current version to let future invalidations cause a refresh cycle\n template[CURRENT_VERSION] = template[NEXT_VERSION];\n template._validating = false;\n });\n }\n}\n\n/**\n * @return {boolean}\n */\nexport function elementsAreInvalid() {\n for (let elementName in templateMap) {\n let template = templateMap[elementName];\n if (!templateIsValid(template)) {\n return true;\n }\n }\n return false;\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/** @type {Promise<void>} */\nlet readyPromise = null;\n\n/** @type {?function(?function())} */\nlet whenReady = window['HTMLImports'] && window['HTMLImports']['whenReady'] || null;\n\n/** @type {function()} */\nlet resolveFn;\n\n/**\n * @param {?function()} callback\n */\nexport default function documentWait(callback) {\n requestAnimationFrame(function() {\n if (whenReady) {\n whenReady(callback)\n } else {\n if (!readyPromise) {\n readyPromise = new Promise((resolve) => {resolveFn = resolve});\n if (document.readyState === 'complete') {\n resolveFn();\n } else {\n document.addEventListener('readystatechange', () => {\n if (document.readyState === 'complete') {\n resolveFn();\n }\n });\n }\n }\n readyPromise.then(function(){ callback && callback(); });\n }\n });\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {parse, StyleNode} from './css-parse.js';\nimport {nativeShadow, nativeCssVariables} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport * as StyleUtil from './style-util.js';\nimport StyleProperties from './style-properties.js';\nimport placeholderMap from './style-placeholder.js';\nimport StyleInfo from './style-info.js';\nimport StyleCache from './style-cache.js';\nimport {flush as watcherFlush} from './document-watcher.js';\nimport templateMap from './template-map.js';\nimport * as ApplyShimUtils from './apply-shim-utils.js';\nimport documentWait from './document-wait.js';\nimport {updateNativeProperties, detectMixin} from './common-utils.js';\nimport {CustomStyleInterfaceInterface} from './custom-style-interface.js'; // eslint-disable-line no-unused-vars\n\n/**\n * @const {StyleCache}\n */\nconst styleCache = new StyleCache();\n\nexport default class ScopingShim {\n constructor() {\n this._scopeCounter = {};\n this._documentOwner = document.documentElement;\n let ast = new StyleNode();\n ast['rules'] = [];\n this._documentOwnerStyleInfo = StyleInfo.set(this._documentOwner, new StyleInfo(ast));\n this._elementsHaveApplied = false;\n this._applyShim = null;\n /** @type {?CustomStyleInterfaceInterface} */\n this._customStyleInterface = null;\n documentWait(() => {\n this._ensure();\n });\n }\n flush() {\n watcherFlush();\n }\n _generateScopeSelector(name) {\n let id = this._scopeCounter[name] = (this._scopeCounter[name] || 0) + 1;\n return `${name}-${id}`;\n }\n getStyleAst(style) {\n return StyleUtil.rulesForStyle(style);\n }\n styleAstToString(ast) {\n return StyleUtil.toCssText(ast);\n }\n _gatherStyles(template) {\n return StyleUtil.gatherStyleText(template.content);\n }\n _getCssBuild(template) {\n let style = template.content.querySelector('style');\n if (!style) {\n return '';\n }\n return style.getAttribute('css-build') || '';\n }\n /**\n * Prepare the styling and template for the given element type\n *\n * @param {HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} typeExtension\n */\n prepareTemplate(template, elementName, typeExtension) {\n if (template._prepared) {\n return;\n }\n template._prepared = true;\n template.name = elementName;\n template.extends = typeExtension;\n templateMap[elementName] = template;\n let cssBuild = this._getCssBuild(template);\n let cssText = this._gatherStyles(template);\n let info = {\n is: elementName,\n extends: typeExtension,\n __cssBuild: cssBuild,\n };\n if (!nativeShadow) {\n StyleTransformer.dom(template.content, elementName);\n }\n // check if the styling has mixin definitions or uses\n this._ensure();\n let hasMixins = detectMixin(cssText)\n let ast = parse(cssText);\n // only run the applyshim transforms if there is a mixin involved\n if (hasMixins && nativeCssVariables && this._applyShim) {\n this._applyShim['transformRules'](ast, elementName);\n }\n template['_styleAst'] = ast;\n template._cssBuild = cssBuild;\n\n let ownPropertyNames = [];\n if (!nativeCssVariables) {\n ownPropertyNames = StyleProperties.decorateStyles(template['_styleAst']);\n }\n if (!ownPropertyNames.length || nativeCssVariables) {\n let root = nativeShadow ? template.content : null;\n let placeholder = placeholderMap[elementName];\n let style = this._generateStaticStyle(info, template['_styleAst'], root, placeholder);\n template._style = style;\n }\n template._ownPropertyNames = ownPropertyNames;\n }\n _generateStaticStyle(info, rules, shadowroot, placeholder) {\n let cssText = StyleTransformer.elementStyles(info, rules);\n if (cssText.length) {\n return StyleUtil.applyCss(cssText, info.is, shadowroot, placeholder);\n }\n }\n _prepareHost(host) {\n let {is, typeExtension} = StyleUtil.getIsExtends(host);\n let placeholder = placeholderMap[is];\n let template = templateMap[is];\n let ast;\n let ownStylePropertyNames;\n let cssBuild;\n if (template) {\n ast = template['_styleAst'];\n ownStylePropertyNames = template._ownPropertyNames;\n cssBuild = template._cssBuild;\n }\n return StyleInfo.set(host,\n new StyleInfo(\n ast,\n placeholder,\n ownStylePropertyNames,\n is,\n typeExtension,\n cssBuild\n )\n );\n }\n _ensureApplyShim() {\n if (this._applyShim) {\n return;\n } else if (window.ShadyCSS && window.ShadyCSS.ApplyShim) {\n this._applyShim = window.ShadyCSS.ApplyShim;\n this._applyShim['invalidCallback'] = ApplyShimUtils.invalidate;\n }\n }\n _ensureCustomStyleInterface() {\n if (this._customStyleInterface) {\n return;\n } else if (window.ShadyCSS && window.ShadyCSS.CustomStyleInterface) {\n this._customStyleInterface = /** @type {!CustomStyleInterfaceInterface} */(window.ShadyCSS.CustomStyleInterface);\n /** @type {function(!HTMLStyleElement)} */\n this._customStyleInterface['transformCallback'] = (style) => {this.transformCustomStyleForDocument(style)};\n this._customStyleInterface['validateCallback'] = () => {\n requestAnimationFrame(() => {\n if (this._customStyleInterface['enqueued'] || this._elementsHaveApplied) {\n this.flushCustomStyles();\n }\n })\n };\n }\n }\n _ensure() {\n this._ensureApplyShim();\n this._ensureCustomStyleInterface();\n }\n /**\n * Flush and apply custom styles to document\n */\n flushCustomStyles() {\n this._ensure();\n if (!this._customStyleInterface) {\n return;\n }\n let customStyles = this._customStyleInterface['processStyles']();\n // early return if custom-styles don't need validation\n if (!this._customStyleInterface['enqueued']) {\n return;\n }\n if (!nativeCssVariables) {\n this._updateProperties(this._documentOwner, this._documentOwnerStyleInfo);\n this._applyCustomStyles(customStyles);\n } else {\n this._revalidateCustomStyleApplyShim(customStyles);\n }\n this._customStyleInterface['enqueued'] = false;\n // if custom elements have upgraded and there are no native css variables, we must recalculate the whole tree\n if (this._elementsHaveApplied && !nativeCssVariables) {\n this.styleDocument();\n }\n }\n /**\n * Apply styles for the given element\n *\n * @param {!HTMLElement} host\n * @param {Object=} overrideProps\n */\n styleElement(host, overrideProps) {\n let {is} = StyleUtil.getIsExtends(host);\n let styleInfo = StyleInfo.get(host);\n if (!styleInfo) {\n styleInfo = this._prepareHost(host);\n }\n // Only trip the `elementsHaveApplied` flag if a node other that the root document has `applyStyle` called\n if (!this._isRootOwner(host)) {\n this._elementsHaveApplied = true;\n }\n if (overrideProps) {\n styleInfo.overrideStyleProperties =\n styleInfo.overrideStyleProperties || {};\n Object.assign(styleInfo.overrideStyleProperties, overrideProps);\n }\n if (!nativeCssVariables) {\n this._updateProperties(host, styleInfo);\n if (styleInfo.ownStylePropertyNames && styleInfo.ownStylePropertyNames.length) {\n this._applyStyleProperties(host, styleInfo);\n }\n } else {\n if (styleInfo.overrideStyleProperties) {\n updateNativeProperties(host, styleInfo.overrideStyleProperties);\n }\n let template = templateMap[is];\n // bail early if there is no shadowroot for this element\n if (!template && !this._isRootOwner(host)) {\n return;\n }\n if (template && template._style && !ApplyShimUtils.templateIsValid(template)) {\n // update template\n if (!ApplyShimUtils.templateIsValidating(template)) {\n this._ensure();\n this._applyShim && this._applyShim['transformRules'](template['_styleAst'], is);\n template._style.textContent = StyleTransformer.elementStyles(host, styleInfo.styleRules);\n ApplyShimUtils.startValidatingTemplate(template);\n }\n // update instance if native shadowdom\n if (nativeShadow) {\n let root = host.shadowRoot;\n if (root) {\n let style = root.querySelector('style');\n style.textContent = StyleTransformer.elementStyles(host, styleInfo.styleRules);\n }\n }\n styleInfo.styleRules = template['_styleAst'];\n }\n }\n }\n _styleOwnerForNode(node) {\n let root = node.getRootNode();\n let host = root.host;\n if (host) {\n if (StyleInfo.get(host)) {\n return host;\n } else {\n return this._styleOwnerForNode(host);\n }\n }\n return this._documentOwner;\n }\n _isRootOwner(node) {\n return (node === this._documentOwner);\n }\n _applyStyleProperties(host, styleInfo) {\n let is = StyleUtil.getIsExtends(host).is;\n let cacheEntry = styleCache.fetch(is, styleInfo.styleProperties, styleInfo.ownStylePropertyNames);\n let cachedScopeSelector = cacheEntry && cacheEntry.scopeSelector;\n let cachedStyle = cacheEntry ? cacheEntry.styleElement : null;\n let oldScopeSelector = styleInfo.scopeSelector;\n // only generate new scope if cached style is not found\n styleInfo.scopeSelector = cachedScopeSelector || this._generateScopeSelector(is);\n let style = StyleProperties.applyElementStyle(host, styleInfo.styleProperties, styleInfo.scopeSelector, cachedStyle);\n if (!nativeShadow) {\n StyleProperties.applyElementScopeSelector(host, styleInfo.scopeSelector, oldScopeSelector);\n }\n if (!cacheEntry) {\n styleCache.store(is, styleInfo.styleProperties, style, styleInfo.scopeSelector);\n }\n return style;\n }\n _updateProperties(host, styleInfo) {\n let owner = this._styleOwnerForNode(host);\n let ownerStyleInfo = StyleInfo.get(owner);\n let ownerProperties = ownerStyleInfo.styleProperties;\n let props = Object.create(ownerProperties || null);\n let hostAndRootProps = StyleProperties.hostAndRootPropertiesForScope(host, styleInfo.styleRules);\n let propertyData = StyleProperties.propertyDataFromStyles(ownerStyleInfo.styleRules, host);\n let propertiesMatchingHost = propertyData.properties\n Object.assign(\n props,\n hostAndRootProps.hostProps,\n propertiesMatchingHost,\n hostAndRootProps.rootProps\n );\n this._mixinOverrideStyles(props, styleInfo.overrideStyleProperties);\n StyleProperties.reify(props);\n styleInfo.styleProperties = props;\n }\n _mixinOverrideStyles(props, overrides) {\n for (let p in overrides) {\n let v = overrides[p];\n // skip override props if they are not truthy or 0\n // in order to fall back to inherited values\n if (v || v === 0) {\n props[p] = v;\n }\n }\n }\n /**\n * Update styles of the whole document\n *\n * @param {Object=} properties\n */\n styleDocument(properties) {\n this.styleSubtree(this._documentOwner, properties);\n }\n /**\n * Update styles of a subtree\n *\n * @param {!HTMLElement} host\n * @param {Object=} properties\n */\n styleSubtree(host, properties) {\n let root = host.shadowRoot;\n if (root || this._isRootOwner(host)) {\n this.styleElement(host, properties);\n }\n // process the shadowdom children of `host`\n let shadowChildren = root && (root.children || root.childNodes);\n if (shadowChildren) {\n for (let i = 0; i < shadowChildren.length; i++) {\n let c = /** @type {!HTMLElement} */(shadowChildren[i]);\n this.styleSubtree(c);\n }\n } else {\n // process the lightdom children of `host`\n let children = host.children || host.childNodes;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n let c = /** @type {!HTMLElement} */(children[i]);\n this.styleSubtree(c);\n }\n }\n }\n }\n /* Custom Style operations */\n _revalidateCustomStyleApplyShim(customStyles) {\n for (let i = 0; i < customStyles.length; i++) {\n let c = customStyles[i];\n let s = this._customStyleInterface['getStyleForCustomStyle'](c);\n if (s) {\n this._revalidateApplyShim(s);\n }\n }\n }\n _applyCustomStyles(customStyles) {\n for (let i = 0; i < customStyles.length; i++) {\n let c = customStyles[i];\n let s = this._customStyleInterface['getStyleForCustomStyle'](c);\n if (s) {\n StyleProperties.applyCustomStyle(s, this._documentOwnerStyleInfo.styleProperties);\n }\n }\n }\n transformCustomStyleForDocument(style) {\n let ast = StyleUtil.rulesForStyle(style);\n StyleUtil.forEachRule(ast, (rule) => {\n if (nativeShadow) {\n StyleTransformer.normalizeRootSelector(rule);\n } else {\n StyleTransformer.documentRule(rule);\n }\n if (nativeCssVariables) {\n this._ensure();\n this._applyShim && this._applyShim['transformRule'](rule);\n }\n });\n if (nativeCssVariables) {\n style.textContent = StyleUtil.toCssText(ast);\n } else {\n this._documentOwnerStyleInfo.styleRules['rules'].push(ast);\n }\n }\n _revalidateApplyShim(style) {\n if (nativeCssVariables && this._applyShim) {\n let ast = StyleUtil.rulesForStyle(style);\n this._ensure();\n this._applyShim['transformRules'](ast);\n style.textContent = StyleUtil.toCssText(ast);\n }\n }\n getComputedStyleValue(element, property) {\n let value;\n if (!nativeCssVariables) {\n // element is either a style host, or an ancestor of a style host\n let styleInfo = StyleInfo.get(element) || StyleInfo.get(this._styleOwnerForNode(element));\n value = styleInfo.styleProperties[property];\n }\n // fall back to the property value from the computed styling\n value = value || window.getComputedStyle(element).getPropertyValue(property);\n // trim whitespace that can come after the `:` in css\n // example: padding: 2px -> \" 2px\"\n return value ? value.trim() : '';\n }\n // given an element and a classString, replaces\n // the element's class with the provided classString and adds\n // any necessary ShadyCSS static and property based scoping selectors\n setElementClass(element, classString) {\n let root = element.getRootNode();\n let classes = classString ? classString.split(/\\s/) : [];\n let scopeName = root.host && root.host.localName;\n // If no scope, try to discover scope name from existing class.\n // This can occur if, for example, a template stamped element that\n // has been scoped is manipulated when not in a root.\n if (!scopeName) {\n var classAttr = element.getAttribute('class');\n if (classAttr) {\n let k$ = classAttr.split(/\\s/);\n for (let i=0; i < k$.length; i++) {\n if (k$[i] === StyleTransformer.SCOPE_NAME) {\n scopeName = k$[i+1];\n break;\n }\n }\n }\n }\n if (scopeName) {\n classes.push(StyleTransformer.SCOPE_NAME, scopeName);\n }\n if (!nativeCssVariables) {\n let styleInfo = StyleInfo.get(element);\n if (styleInfo && styleInfo.scopeSelector) {\n classes.push(StyleProperties.XSCOPE_NAME, styleInfo.scopeSelector);\n }\n }\n StyleUtil.setElementClassRaw(element, classes.join(' '));\n }\n _styleInfoForNode(node) {\n return StyleInfo.get(node);\n }\n}\n\n/* exports */\nScopingShim.prototype['flush'] = ScopingShim.prototype.flush;\nScopingShim.prototype['prepareTemplate'] = ScopingShim.prototype.prepareTemplate;\nScopingShim.prototype['styleElement'] = ScopingShim.prototype.styleElement;\nScopingShim.prototype['styleDocument'] = ScopingShim.prototype.styleDocument;\nScopingShim.prototype['styleSubtree'] = ScopingShim.prototype.styleSubtree;\nScopingShim.prototype['getComputedStyleValue'] = ScopingShim.prototype.getComputedStyleValue;\nScopingShim.prototype['setElementClass'] = ScopingShim.prototype.setElementClass;\nScopingShim.prototype['_styleInfoForNode'] = ScopingShim.prototype._styleInfoForNode;\nScopingShim.prototype['transformCustomStyleForDocument'] = ScopingShim.prototype.transformCustomStyleForDocument;\nScopingShim.prototype['getStyleAst'] = ScopingShim.prototype.getStyleAst;\nScopingShim.prototype['styleAstToString'] = ScopingShim.prototype.styleAstToString;\nScopingShim.prototype['flushCustomStyles'] = ScopingShim.prototype.flushCustomStyles;\nObject.defineProperties(ScopingShim.prototype, {\n 'nativeShadow': {\n get() {\n return nativeShadow;\n }\n },\n 'nativeCss': {\n get() {\n return nativeCssVariables;\n }\n }\n});\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport { MIXIN_MATCH, VAR_ASSIGN } from './common-regex.js';\n\n/**\n * @param {Element} element\n * @param {Object=} properties\n */\nexport function updateNativeProperties(element, properties) {\n // remove previous properties\n for (let p in properties) {\n // NOTE: for bc with shim, don't apply null values.\n if (p === null) {\n element.style.removeProperty(p);\n } else {\n element.style.setProperty(p, properties[p]);\n }\n }\n}\n\n/**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\nexport function getComputedStyleValue(element, property) {\n /**\n * @const {string}\n */\n const value = window.getComputedStyle(element).getPropertyValue(property);\n if (!value) {\n return '';\n } else {\n return value.trim();\n }\n}\n\n/**\n * return true if `cssText` contains a mixin definition or consumption\n * @param {string} cssText\n * @return {boolean}\n */\nexport function detectMixin(cssText) {\n const has = MIXIN_MATCH.test(cssText) || VAR_ASSIGN.test(cssText);\n // reset state of the regexes\n MIXIN_MATCH.lastIndex = 0;\n VAR_ASSIGN.lastIndex = 0;\n return has;\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport ScopingShim from '../src/scoping-shim.js';\nimport {nativeCssVariables, nativeShadow} from '../src/style-settings.js';\n\n/** @const {ScopingShim} */\nconst scopingShim = new ScopingShim();\n\nlet ApplyShim, CustomStyleInterface;\n\nif (window['ShadyCSS']) {\n ApplyShim = window['ShadyCSS']['ApplyShim'];\n CustomStyleInterface = window['ShadyCSS']['CustomStyleInterface'];\n}\n\nwindow.ShadyCSS = {\n ScopingShim: scopingShim,\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} elementExtends\n */\n prepareTemplate(template, elementName, elementExtends) {\n scopingShim.flushCustomStyles();\n scopingShim.prepareTemplate(template, elementName, elementExtends)\n },\n\n /**\n * @param {!HTMLElement} element\n * @param {Object=} properties\n */\n styleSubtree(element, properties) {\n scopingShim.flushCustomStyles();\n scopingShim.styleSubtree(element, properties);\n },\n\n /**\n * @param {!HTMLElement} element\n */\n styleElement(element) {\n scopingShim.flushCustomStyles();\n scopingShim.styleElement(element);\n },\n\n /**\n * @param {Object=} properties\n */\n styleDocument(properties) {\n scopingShim.flushCustomStyles();\n scopingShim.styleDocument(properties);\n },\n\n /**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\n getComputedStyleValue(element, property) {\n return scopingShim.getComputedStyleValue(element, property);\n },\n\n nativeCss: nativeCssVariables,\n\n nativeShadow: nativeShadow\n};\n\nif (ApplyShim) {\n window.ShadyCSS.ApplyShim = ApplyShim;\n}\n\nif (CustomStyleInterface) {\n window.ShadyCSS.CustomStyleInterface = CustomStyleInterface;\n}","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n'use strict';\n\nlet customElements = window['customElements'];\nlet HTMLImports = window['HTMLImports'];\nlet Template = window['HTMLTemplateElement'];\n\n// global for (1) existence means `WebComponentsReady` will file,\n// (2) WebComponents.ready == true means event has fired.\nwindow.WebComponents = window.WebComponents || {};\n\nif (customElements && customElements['polyfillWrapFlushCallback']) {\n // Here we ensure that the public `HTMLImports.whenReady`\n // always comes *after* custom elements have upgraded.\n let flushCallback;\n let runAndClearCallback = function runAndClearCallback() {\n if (flushCallback) {\n // make sure to run the HTMLTemplateElement polyfill before custom elements upgrade\n if (Template.bootstrap) {\n Template.bootstrap(window.document);\n }\n let cb = flushCallback;\n flushCallback = null;\n cb();\n return true;\n }\n }\n let origWhenReady = HTMLImports['whenReady'];\n customElements['polyfillWrapFlushCallback'](function(cb) {\n flushCallback = cb;\n origWhenReady(runAndClearCallback);\n });\n\n HTMLImports['whenReady'] = function(cb) {\n origWhenReady(function() {\n // custom element code may add dynamic imports\n // to match processing of native custom elements before\n // domContentLoaded, we wait for these imports to resolve first.\n if (runAndClearCallback()) {\n HTMLImports['whenReady'](cb);\n } else {\n cb();\n }\n });\n }\n\n}\n\nHTMLImports['whenReady'](function() {\n requestAnimationFrame(function() {\n window.WebComponents.ready = true;\n document.dispatchEvent(new CustomEvent('WebComponentsReady', {bubbles: true}));\n });\n});","/**\n * @license\n * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\n'use strict';\n// It's desireable to provide a default stylesheet\n// that's convenient for styling unresolved elements, but\n// it's cumbersome to have to include this manually in every page.\n// It would make sense to put inside some HTMLImport but\n// the HTMLImports polyfill does not allow loading of stylesheets\n// that block rendering. Therefore this injection is tolerated here.\n//\n// NOTE: position: relative fixes IE's failure to inherit opacity\n// when a child is not statically positioned.\nlet style = document.createElement('style');\nstyle.textContent = ''\n + 'body {'\n + 'transition: opacity ease-in 0.2s;'\n + ' } \\n'\n + 'body[unresolved] {'\n + 'opacity: 0; display: block; overflow: hidden; position: relative;'\n + ' } \\n'\n ;\nlet head = document.querySelector('head');\nhead.insertBefore(style, head.firstChild);"]} \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-loader.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-loader.js
new file mode 100644
index 00000000000..661285e861f
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-loader.js
@@ -0,0 +1,74 @@
+/**
+ * @license
+ * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+ * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ * Code distributed by Google as part of the polymer project is also
+ * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+ */
+
+(function() {
+ 'use strict';
+ // global for (1) existence means `WebComponentsReady` will fire,
+ // (2) WebComponents.ready == true means event has fired.
+ window.WebComponents = window.WebComponents || {};
+ var name = 'webcomponents-loader.js';
+ // Feature detect which polyfill needs to be imported.
+ var polyfills = [];
+ if (!('import' in document.createElement('link'))) {
+ polyfills.push('hi');
+ }
+ if (!('attachShadow' in Element.prototype && 'getRootNode' in Element.prototype) ||
+ (window.ShadyDOM && window.ShadyDOM.force)) {
+ polyfills.push('sd');
+ }
+ if (!window.customElements || window.customElements.forcePolyfill) {
+ polyfills.push('ce');
+ }
+ // NOTE: any browser that does not have template or ES6 features
+ // must load the full suite (called `lite` for legacy reasons) of polyfills.
+ if (!('content' in document.createElement('template')) || !window.Promise || !Array.from ||
+ // Edge has broken fragment cloning which means you cannot clone template.content
+ !(document.createDocumentFragment().cloneNode() instanceof DocumentFragment)) {
+ polyfills = ['lite'];
+ }
+
+ if (polyfills.length) {
+ var script = document.querySelector('script[src*="' + name +'"]');
+ var newScript = document.createElement('script');
+ // Load it from the right place.
+ var replacement = 'webcomponents-' + polyfills.join('-') + '.js';
+ var url = script.src.replace(name, replacement);
+ newScript.src = url;
+ // NOTE: this is required to ensure the polyfills are loaded before
+ // *native* html imports load on older Chrome versions. This *is* CSP
+ // compliant since CSP rules must have allowed this script to run.
+ // In all other cases, this can be async.
+ if (document.readyState === 'loading' && ('import' in document.createElement('link'))) {
+ document.write(newScript.outerHTML);
+ } else {
+ document.head.appendChild(newScript);
+ }
+ } else {
+ // Ensure `WebComponentsReady` is fired also when there are no polyfills loaded.
+ // however, we have to wait for the document to be in 'interactive' state,
+ // otherwise a rAF may fire before scripts in <body>
+
+ var fire = function() {
+ requestAnimationFrame(function() {
+ window.WebComponents.ready = true;
+ document.dispatchEvent(new CustomEvent('WebComponentsReady', {bubbles: true}));
+ });
+ };
+
+ if (document.readyState !== 'loading') {
+ fire();
+ } else {
+ document.addEventListener('readystatechange', function wait() {
+ fire();
+ document.removeEventListener('readystatechange', wait);
+ });
+ }
+ }
+})();
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-sd-ce.js b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-sd-ce.js
new file mode 100644
index 00000000000..6227827a0dc
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-sd-ce.js
@@ -0,0 +1,172 @@
+/**
+@license @nocompile
+Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+(function(){/*
+
+Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+'use strict';var n,p="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};function ba(){ba=function(){};p.Symbol||(p.Symbol=ca)}var ca=function(){var a=0;return function(b){return"jscomp_symbol_"+(b||"")+a++}}();
+function da(){ba();var a=p.Symbol.iterator;a||(a=p.Symbol.iterator=p.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ea(this)}});da=function(){}}function ea(a){var b=0;return fa(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function fa(a){da();a={next:a};a[p.Symbol.iterator]=function(){return this};return a}function ha(a){da();var b=a[Symbol.iterator];return b?b.call(a):ea(a)}
+function ia(a){for(var b,c=[];!(b=a.next()).done;)c.push(b.value);return c}function ja(){this.ja=this.root=null;this.P=!1;this.w=this.L=this.aa=this.assignedSlot=this.assignedNodes=this.F=null;this.childNodes=this.nextSibling=this.previousSibling=this.lastChild=this.firstChild=this.parentNode=this.H=void 0;this.oa=this.da=!1}ja.prototype.toJSON=function(){return{}};function r(a){a.W||(a.W=new ja);return a.W}function t(a){return a&&a.W};var u=window.ShadyDOM||{};u.ya=!(!Element.prototype.attachShadow||!Node.prototype.getRootNode);var ka=Object.getOwnPropertyDescriptor(Node.prototype,"firstChild");u.s=!!(ka&&ka.configurable&&ka.get);u.ha=u.force||!u.ya;var la=navigator.userAgent.match("Trident"),ma=navigator.userAgent.match("Edge");void 0===u.la&&(u.la=u.s&&(la||ma));function v(a){return(a=t(a))&&void 0!==a.firstChild}function w(a){return"ShadyRoot"===a.sa}function x(a){a=a.getRootNode();if(w(a))return a}
+var na=Element.prototype,oa=na.matches||na.matchesSelector||na.mozMatchesSelector||na.msMatchesSelector||na.oMatchesSelector||na.webkitMatchesSelector;function pa(a,b){if(a&&b)for(var c=Object.getOwnPropertyNames(b),d=0,e;d<c.length&&(e=c[d]);d++){var f=Object.getOwnPropertyDescriptor(b,e);f&&Object.defineProperty(a,e,f)}}function qa(a,b){for(var c=[],d=1;d<arguments.length;++d)c[d-1]=arguments[d];for(d=0;d<c.length;d++)pa(a,c[d]);return a}function sa(a,b){for(var c in b)a[c]=b[c]}
+var ta=document.createTextNode(""),ua=0,va=[];(new MutationObserver(function(){for(;va.length;)try{va.shift()()}catch(a){throw ta.textContent=ua++,a;}})).observe(ta,{characterData:!0});function wa(a){va.push(a);ta.textContent=ua++}var xa=!!document.contains;function ya(a,b){for(;b;){if(b==a)return!0;b=b.parentNode}return!1};var za=[],Aa;function Ba(a){Aa||(Aa=!0,wa(Ca));za.push(a)}function Ca(){Aa=!1;for(var a=!!za.length;za.length;)za.shift()();return a}Ca.list=za;function Da(){this.a=!1;this.addedNodes=[];this.removedNodes=[];this.O=new Set}function Ea(a){a.a||(a.a=!0,wa(function(){Fa(a)}))}function Fa(a){if(a.a){a.a=!1;var b=a.takeRecords();b.length&&a.O.forEach(function(a){a(b)})}}Da.prototype.takeRecords=function(){if(this.addedNodes.length||this.removedNodes.length){var a=[{addedNodes:this.addedNodes,removedNodes:this.removedNodes}];this.addedNodes=[];this.removedNodes=[];return a}return[]};
+function Ga(a,b){var c=r(a);c.F||(c.F=new Da);c.F.O.add(b);var d=c.F;return{qa:b,B:d,ta:a,takeRecords:function(){return d.takeRecords()}}}function Ha(a){var b=a&&a.B;b&&(b.O.delete(a.qa),b.O.size||(r(a.ta).F=null))}
+function Ia(a,b){var c=b.getRootNode();return a.map(function(a){var b=c===a.target.getRootNode();if(b&&a.addedNodes){if(b=Array.from(a.addedNodes).filter(function(a){return c===a.getRootNode()}),b.length)return a=Object.create(a),Object.defineProperty(a,"addedNodes",{value:b,configurable:!0}),a}else if(b)return a}).filter(function(a){return a})};var y={},Ja=Element.prototype.insertBefore,Ka=Element.prototype.replaceChild,La=Element.prototype.removeChild,Ma=Element.prototype.setAttribute,Na=Element.prototype.removeAttribute,Oa=Element.prototype.cloneNode,Pa=Document.prototype.importNode,Qa=Element.prototype.addEventListener,Ra=Element.prototype.removeEventListener,Sa=Window.prototype.addEventListener,Ta=Window.prototype.removeEventListener,Ua=Element.prototype.dispatchEvent,Va=Node.prototype.contains||HTMLElement.prototype.contains,Wa=Document.prototype.getElementById,
+Xa=Element.prototype.querySelector,Ya=DocumentFragment.prototype.querySelector,Za=Document.prototype.querySelector,$a=Element.prototype.querySelectorAll,ab=DocumentFragment.prototype.querySelectorAll,bb=Document.prototype.querySelectorAll;y.appendChild=Element.prototype.appendChild;y.insertBefore=Ja;y.replaceChild=Ka;y.removeChild=La;y.setAttribute=Ma;y.removeAttribute=Na;y.cloneNode=Oa;y.importNode=Pa;y.addEventListener=Qa;y.removeEventListener=Ra;y.Ha=Sa;y.Ia=Ta;y.dispatchEvent=Ua;y.contains=Va;
+y.getElementById=Wa;y.Qa=Xa;y.Ta=Ya;y.Oa=Za;y.querySelector=function(a){switch(this.nodeType){case Node.ELEMENT_NODE:return Xa.call(this,a);case Node.DOCUMENT_NODE:return Za.call(this,a);default:return Ya.call(this,a)}};y.Ra=$a;y.Ua=ab;y.Pa=bb;y.querySelectorAll=function(a){switch(this.nodeType){case Node.ELEMENT_NODE:return $a.call(this,a);case Node.DOCUMENT_NODE:return bb.call(this,a);default:return ab.call(this,a)}};var cb=/[&\u00A0"]/g,db=/[&\u00A0<>]/g;function eb(a){switch(a){case "&":return"&amp;";case "<":return"&lt;";case ">":return"&gt;";case '"':return"&quot;";case "\u00a0":return"&nbsp;"}}function fb(a){for(var b={},c=0;c<a.length;c++)b[a[c]]=!0;return b}var gb=fb("area base br col command embed hr img input keygen link meta param source track wbr".split(" ")),hb=fb("style script xmp iframe noembed noframes plaintext noscript".split(" "));
+function ib(a,b){"template"===a.localName&&(a=a.content);for(var c="",d=b?b(a):a.childNodes,e=0,f=d.length,g;e<f&&(g=d[e]);e++){a:{var h=g;var k=a;var l=b;switch(h.nodeType){case Node.ELEMENT_NODE:for(var m=h.localName,q="<"+m,O=h.attributes,L=0;k=O[L];L++)q+=" "+k.name+'="'+k.value.replace(cb,eb)+'"';q+=">";h=gb[m]?q:q+ib(h,l)+"</"+m+">";break a;case Node.TEXT_NODE:h=h.data;h=k&&hb[k.localName]?h:h.replace(db,eb);break a;case Node.COMMENT_NODE:h="\x3c!--"+h.data+"--\x3e";break a;default:throw window.console.error(h),
+Error("not implemented");}}c+=h}return c};var z={},A=document.createTreeWalker(document,NodeFilter.SHOW_ALL,null,!1),B=document.createTreeWalker(document,NodeFilter.SHOW_ELEMENT,null,!1);function jb(a){var b=[];A.currentNode=a;for(a=A.firstChild();a;)b.push(a),a=A.nextSibling();return b}z.parentNode=function(a){A.currentNode=a;return A.parentNode()};z.firstChild=function(a){A.currentNode=a;return A.firstChild()};z.lastChild=function(a){A.currentNode=a;return A.lastChild()};z.previousSibling=function(a){A.currentNode=a;return A.previousSibling()};
+z.nextSibling=function(a){A.currentNode=a;return A.nextSibling()};z.childNodes=jb;z.parentElement=function(a){B.currentNode=a;return B.parentNode()};z.firstElementChild=function(a){B.currentNode=a;return B.firstChild()};z.lastElementChild=function(a){B.currentNode=a;return B.lastChild()};z.previousElementSibling=function(a){B.currentNode=a;return B.previousSibling()};z.nextElementSibling=function(a){B.currentNode=a;return B.nextSibling()};
+z.children=function(a){var b=[];B.currentNode=a;for(a=B.firstChild();a;)b.push(a),a=B.nextSibling();return b};z.innerHTML=function(a){return ib(a,function(a){return jb(a)})};z.textContent=function(a){switch(a.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:a=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1);for(var b="",c;c=a.nextNode();)b+=c.nodeValue;return b;default:return a.nodeValue}};var C={},kb=u.s,lb=[Node.prototype,Element.prototype,HTMLElement.prototype];function D(a){var b;a:{for(b=0;b<lb.length;b++){var c=lb[b];if(c.hasOwnProperty(a)){b=c;break a}}b=void 0}if(!b)throw Error("Could not find descriptor for "+a);return Object.getOwnPropertyDescriptor(b,a)}
+var E=kb?{parentNode:D("parentNode"),firstChild:D("firstChild"),lastChild:D("lastChild"),previousSibling:D("previousSibling"),nextSibling:D("nextSibling"),childNodes:D("childNodes"),parentElement:D("parentElement"),previousElementSibling:D("previousElementSibling"),nextElementSibling:D("nextElementSibling"),innerHTML:D("innerHTML"),textContent:D("textContent"),firstElementChild:D("firstElementChild"),lastElementChild:D("lastElementChild"),children:D("children")}:{},mb=kb?{firstElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,
+"firstElementChild"),lastElementChild:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,"lastElementChild"),children:Object.getOwnPropertyDescriptor(DocumentFragment.prototype,"children")}:{},nb=kb?{firstElementChild:Object.getOwnPropertyDescriptor(Document.prototype,"firstElementChild"),lastElementChild:Object.getOwnPropertyDescriptor(Document.prototype,"lastElementChild"),children:Object.getOwnPropertyDescriptor(Document.prototype,"children")}:{};C.ia=E;C.Sa=mb;C.Na=nb;C.parentNode=function(a){return E.parentNode.get.call(a)};
+C.firstChild=function(a){return E.firstChild.get.call(a)};C.lastChild=function(a){return E.lastChild.get.call(a)};C.previousSibling=function(a){return E.previousSibling.get.call(a)};C.nextSibling=function(a){return E.nextSibling.get.call(a)};C.childNodes=function(a){return Array.prototype.slice.call(E.childNodes.get.call(a))};C.parentElement=function(a){return E.parentElement.get.call(a)};C.previousElementSibling=function(a){return E.previousElementSibling.get.call(a)};C.nextElementSibling=function(a){return E.nextElementSibling.get.call(a)};
+C.innerHTML=function(a){return E.innerHTML.get.call(a)};C.textContent=function(a){return E.textContent.get.call(a)};C.children=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:a=mb.children.get.call(a);break;case Node.DOCUMENT_NODE:a=nb.children.get.call(a);break;default:a=E.children.get.call(a)}return Array.prototype.slice.call(a)};
+C.firstElementChild=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return mb.firstElementChild.get.call(a);case Node.DOCUMENT_NODE:return nb.firstElementChild.get.call(a);default:return E.firstElementChild.get.call(a)}};C.lastElementChild=function(a){switch(a.nodeType){case Node.DOCUMENT_FRAGMENT_NODE:return mb.lastElementChild.get.call(a);case Node.DOCUMENT_NODE:return nb.lastElementChild.get.call(a);default:return E.lastElementChild.get.call(a)}};var F=u.la?C:z;function ob(a){for(;a.firstChild;)a.removeChild(a.firstChild)}
+var pb=u.s,qb=document.implementation.createHTMLDocument("inert"),rb=Object.getOwnPropertyDescriptor(Node.prototype,"isConnected"),sb=rb&&rb.get,tb=Object.getOwnPropertyDescriptor(Document.prototype,"activeElement"),ub={parentElement:{get:function(){var a=t(this);(a=a&&a.parentNode)&&a.nodeType!==Node.ELEMENT_NODE&&(a=null);return void 0!==a?a:F.parentElement(this)},configurable:!0},parentNode:{get:function(){var a=t(this);a=a&&a.parentNode;return void 0!==a?a:F.parentNode(this)},configurable:!0},
+nextSibling:{get:function(){var a=t(this);a=a&&a.nextSibling;return void 0!==a?a:F.nextSibling(this)},configurable:!0},previousSibling:{get:function(){var a=t(this);a=a&&a.previousSibling;return void 0!==a?a:F.previousSibling(this)},configurable:!0},nextElementSibling:{get:function(){var a=t(this);if(a&&void 0!==a.nextSibling){for(a=this.nextSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return F.nextElementSibling(this)},configurable:!0},previousElementSibling:{get:function(){var a=
+t(this);if(a&&void 0!==a.previousSibling){for(a=this.previousSibling;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return F.previousElementSibling(this)},configurable:!0}},vb={className:{get:function(){return this.getAttribute("class")||""},set:function(a){this.setAttribute("class",a)},configurable:!0}},wb={childNodes:{get:function(){if(v(this)){var a=t(this);if(!a.childNodes){a.childNodes=[];for(var b=this.firstChild;b;b=b.nextSibling)a.childNodes.push(b)}var c=a.childNodes}else c=
+F.childNodes(this);c.item=function(a){return c[a]};return c},configurable:!0},childElementCount:{get:function(){return this.children.length},configurable:!0},firstChild:{get:function(){var a=t(this);a=a&&a.firstChild;return void 0!==a?a:F.firstChild(this)},configurable:!0},lastChild:{get:function(){var a=t(this);a=a&&a.lastChild;return void 0!==a?a:F.lastChild(this)},configurable:!0},textContent:{get:function(){if(v(this)){for(var a=[],b=0,c=this.childNodes,d;d=c[b];b++)d.nodeType!==Node.COMMENT_NODE&&
+a.push(d.textContent);return a.join("")}return F.textContent(this)},set:function(a){if("undefined"===typeof a||null===a)a="";switch(this.nodeType){case Node.ELEMENT_NODE:case Node.DOCUMENT_FRAGMENT_NODE:if(!v(this)&&pb){var b=this.firstChild;(b!=this.lastChild||b&&b.nodeType!=Node.TEXT_NODE)&&ob(this);C.ia.textContent.set.call(this,a)}else ob(this),(0<a.length||this.nodeType===Node.ELEMENT_NODE)&&this.appendChild(document.createTextNode(a));break;default:this.nodeValue=a}},configurable:!0},firstElementChild:{get:function(){var a=
+t(this);if(a&&void 0!==a.firstChild){for(a=this.firstChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.nextSibling;return a}return F.firstElementChild(this)},configurable:!0},lastElementChild:{get:function(){var a=t(this);if(a&&void 0!==a.lastChild){for(a=this.lastChild;a&&a.nodeType!==Node.ELEMENT_NODE;)a=a.previousSibling;return a}return F.lastElementChild(this)},configurable:!0},children:{get:function(){var a=v(this)?Array.prototype.filter.call(this.childNodes,function(a){return a.nodeType===Node.ELEMENT_NODE}):
+F.children(this);a.item=function(b){return a[b]};return a},configurable:!0},innerHTML:{get:function(){return v(this)?ib("template"===this.localName?this.content:this):F.innerHTML(this)},set:function(a){var b="template"===this.localName?this.content:this;ob(b);var c=this.localName;c&&"template"!==c||(c="div");c=qb.createElement(c);for(pb?C.ia.innerHTML.set.call(c,a):c.innerHTML=a;c.firstChild;)b.appendChild(c.firstChild)},configurable:!0}},xb={shadowRoot:{get:function(){var a=t(this);return a&&a.ja||
+null},configurable:!0}},yb={activeElement:{get:function(){var a=tb&&tb.get?tb.get.call(document):u.s?void 0:document.activeElement;if(a&&a.nodeType){var b=!!w(this);if(this===document||b&&this.host!==a&&y.contains.call(this.host,a)){for(b=x(a);b&&b!==this;)a=b.host,b=x(a);a=this===document?b?null:a:b===this?a:null}else a=null}else a=null;return a},set:function(){},configurable:!0}};
+function G(a,b,c){for(var d in b){var e=Object.getOwnPropertyDescriptor(a,d);e&&e.configurable||!e&&c?Object.defineProperty(a,d,b[d]):c&&console.warn("Could not define",d,"on",a)}}function H(a){G(a,ub);G(a,vb);G(a,wb);G(a,yb)}
+function zb(){var a=Ab.prototype;a.__proto__=DocumentFragment.prototype;G(a,ub,!0);G(a,wb,!0);G(a,yb,!0);Object.defineProperties(a,{nodeType:{value:Node.DOCUMENT_FRAGMENT_NODE,configurable:!0},nodeName:{value:"#document-fragment",configurable:!0},nodeValue:{value:null,configurable:!0}});["localName","namespaceURI","prefix"].forEach(function(b){Object.defineProperty(a,b,{value:void 0,configurable:!0})});["ownerDocument","baseURI","isConnected"].forEach(function(b){Object.defineProperty(a,b,{get:function(){return this.host[b]},
+configurable:!0})})}var Bb=u.s?function(){}:function(a){var b=r(a);b.da||(b.da=!0,G(a,ub,!0),G(a,vb,!0))},Cb=u.s?function(){}:function(a){r(a).oa||(G(a,wb,!0),G(a,xb,!0))};var Db=F.childNodes;function Eb(a,b,c){Bb(a);c=c||null;var d=r(a),e=r(b),f=c?r(c):null;d.previousSibling=c?f.previousSibling:b.lastChild;if(f=t(d.previousSibling))f.nextSibling=a;if(f=t(d.nextSibling=c))f.previousSibling=a;d.parentNode=b;c?c===e.firstChild&&(e.firstChild=a):(e.lastChild=a,e.firstChild||(e.firstChild=a));e.childNodes=null}
+function Fb(a,b){var c=r(a);if(void 0===c.firstChild)for(b=b||Db(a),c.firstChild=b[0]||null,c.lastChild=b[b.length-1]||null,Cb(a),c=0;c<b.length;c++){var d=b[c],e=r(d);e.parentNode=a;e.nextSibling=b[c+1]||null;e.previousSibling=b[c-1]||null;Bb(d)}};var Gb=F.parentNode;
+function Hb(a,b,c){if(b===a)throw Error("Failed to execute 'appendChild' on 'Node': The new child element contains the parent.");if(c){var d=t(c);d=d&&d.parentNode;if(void 0!==d&&d!==a||void 0===d&&Gb(c)!==a)throw Error("Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.");}if(c===b)return b;b.parentNode&&Ib(b.parentNode,b);var e,f;if(!b.__noInsertionPoint){if(f=e=x(a)){var g;"slot"===b.localName?g=[b]:b.querySelectorAll&&
+(g=b.querySelectorAll("slot"));f=g&&g.length?g:void 0}f&&(g=e,d=f,g.o=g.o||[],g.f=g.f||[],g.g=g.g||{},g.o.push.apply(g.o,[].concat(d instanceof Array?d:ia(ha(d)))))}("slot"===a.localName||f)&&(e=e||x(a))&&Jb(e);if(v(a)){e=c;Cb(a);f=r(a);void 0!==f.firstChild&&(f.childNodes=null);if(b.nodeType===Node.DOCUMENT_FRAGMENT_NODE){f=b.childNodes;for(g=0;g<f.length;g++)Eb(f[g],a,e);e=r(b);f=void 0!==e.firstChild?null:void 0;e.firstChild=e.lastChild=f;e.childNodes=f}else Eb(b,a,e);e=t(a);if(Kb(a)){Jb(e.root);
+var h=!0}else e.root&&(h=!0)}h||(h=w(a)?a.host:a,c?(c=Lb(c),y.insertBefore.call(h,b,c)):y.appendChild.call(h,b));Mb(a,b);return b}
+function Ib(a,b){if(b.parentNode!==a)throw Error("The node to be removed is not a child of this node: "+b);var c=x(b),d=t(a);if(v(a)){var e=r(b),f=r(a);b===f.firstChild&&(f.firstChild=e.nextSibling);b===f.lastChild&&(f.lastChild=e.previousSibling);var g=e.previousSibling,h=e.nextSibling;g&&(r(g).nextSibling=h);h&&(r(h).previousSibling=g);e.parentNode=e.previousSibling=e.nextSibling=void 0;void 0!==f.childNodes&&(f.childNodes=null);if(Kb(a)){Jb(d.root);var k=!0}}Nb(b);if(c){(e=a&&"slot"===a.localName)&&
+(k=!0);if(c.f){Ob(c);f=c.g;for(ra in f)for(g=f[ra],h=0;h<g.length;h++){var l=g[h];if(ya(b,l)){g.splice(h,1);var m=c.f.indexOf(l);0<=m&&c.f.splice(m,1);h--;m=t(l);if(l=m.w)for(var q=0;q<l.length;q++){var O=l[q],L=Pb(O);L&&y.removeChild.call(L,O)}m.w=[];m.assignedNodes=[];m=!0}}var ra=m}else ra=void 0;(ra||e)&&Jb(c)}k||(k=w(a)?a.host:a,(!d.root&&"slot"!==b.localName||k===Gb(b))&&y.removeChild.call(k,b));Mb(a,null,b);return b}
+function Nb(a){var b=t(a);if(b&&void 0!==b.H){b=a.childNodes;for(var c=0,d=b.length,e;c<d&&(e=b[c]);c++)Nb(e)}if(a=t(a))a.H=void 0}function Lb(a){var b=a;a&&"slot"===a.localName&&(b=(b=(b=t(a))&&b.w)&&b.length?b[0]:Lb(a.nextSibling));return b}function Kb(a){return(a=(a=t(a))&&a.root)&&Qb(a)}
+function Rb(a,b){if("slot"===b)a=a.parentNode,Kb(a)&&Jb(t(a).root);else if("slot"===a.localName&&"name"===b&&(b=x(a))){if(b.f){var c=a.pa,d=Sb(a);if(d!==c){c=b.g[c];var e=c.indexOf(a);0<=e&&c.splice(e,1);c=b.g[d]||(b.g[d]=[]);c.push(a);1<c.length&&(b.g[d]=Tb(c))}}Jb(b)}}function Mb(a,b,c){if(a=(a=t(a))&&a.F)b&&a.addedNodes.push(b),c&&a.removedNodes.push(c),Ea(a)}
+function Ub(a){if(a&&a.nodeType){var b=r(a),c=b.H;void 0===c&&(w(a)?(c=a,b.H=c):(c=(c=a.parentNode)?Ub(c):a,y.contains.call(document.documentElement,a)&&(b.H=c)));return c}}function Vb(a,b,c){var d=[];Wb(a.childNodes,b,c,d);return d}function Wb(a,b,c,d){for(var e=0,f=a.length,g;e<f&&(g=a[e]);e++){var h;if(h=g.nodeType===Node.ELEMENT_NODE){h=g;var k=b,l=c,m=d,q=k(h);q&&m.push(h);l&&l(q)?h=q:(Wb(h.childNodes,k,l,m),h=void 0)}if(h)break}}var Xb=null;
+function Yb(a,b,c){Xb||(Xb=window.ShadyCSS&&window.ShadyCSS.ScopingShim);Xb&&"class"===b?Xb.setElementClass(a,c):(y.setAttribute.call(a,b,c),Rb(a,b))}function Zb(a,b){if(a.ownerDocument!==document)return y.importNode.call(document,a,b);var c=y.importNode.call(document,a,!1);if(b){a=a.childNodes;b=0;for(var d;b<a.length;b++)d=Zb(a[b],!0),c.appendChild(d)}return c};var $b="__eventWrappers"+Date.now(),ac={blur:!0,focus:!0,focusin:!0,focusout:!0,click:!0,dblclick:!0,mousedown:!0,mouseenter:!0,mouseleave:!0,mousemove:!0,mouseout:!0,mouseover:!0,mouseup:!0,wheel:!0,beforeinput:!0,input:!0,keydown:!0,keyup:!0,compositionstart:!0,compositionupdate:!0,compositionend:!0,touchstart:!0,touchend:!0,touchmove:!0,touchcancel:!0,pointerover:!0,pointerenter:!0,pointerdown:!0,pointermove:!0,pointerup:!0,pointercancel:!0,pointerout:!0,pointerleave:!0,gotpointercapture:!0,lostpointercapture:!0,
+dragstart:!0,drag:!0,dragenter:!0,dragleave:!0,dragover:!0,drop:!0,dragend:!0,DOMActivate:!0,DOMFocusIn:!0,DOMFocusOut:!0,keypress:!0};function bc(a,b){var c=[],d=a;for(a=a===window?window:a.getRootNode();d;)c.push(d),d=d.assignedSlot?d.assignedSlot:d.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&d.host&&(b||d!==a)?d.host:d.parentNode;c[c.length-1]===document&&c.push(window);return c}
+function cc(a,b){if(!w)return a;a=bc(a,!0);for(var c=0,d,e,f,g;c<b.length;c++)if(d=b[c],f=d===window?window:d.getRootNode(),f!==e&&(g=a.indexOf(f),e=f),!w(f)||-1<g)return d}
+var dc={get composed(){!1!==this.isTrusted&&void 0===this.U&&(this.U=ac[this.type]);return this.U||!1},composedPath:function(){this.b||(this.b=bc(this.__target,this.composed));return this.b},get target(){return cc(this.currentTarget,this.composedPath())},get relatedTarget(){if(!this.V)return null;this.c||(this.c=bc(this.V,!0));return cc(this.currentTarget,this.c)},stopPropagation:function(){Event.prototype.stopPropagation.call(this);this.a=!0},stopImmediatePropagation:function(){Event.prototype.stopImmediatePropagation.call(this);
+this.a=this.i=!0}};function ec(a){function b(b,d){b=new a(b,d);b.U=d&&!!d.composed;return b}sa(b,a);b.prototype=a.prototype;return b}var fc={focus:!0,blur:!0};function gc(a){return a.__target!==a.target||a.V!==a.relatedTarget}function hc(a,b,c){if(c=b.__handlers&&b.__handlers[a.type]&&b.__handlers[a.type][c])for(var d=0,e;(e=c[d])&&(!gc(a)||a.target!==a.relatedTarget)&&(e.call(b,a),!a.i);d++);}
+function ic(a){var b=a.composedPath();Object.defineProperty(a,"currentTarget",{get:function(){return d},configurable:!0});for(var c=b.length-1;0<=c;c--){var d=b[c];hc(a,d,"capture");if(a.a)return}Object.defineProperty(a,"eventPhase",{get:function(){return Event.AT_TARGET}});var e;for(c=0;c<b.length;c++){d=b[c];var f=t(d);f=f&&f.root;if(0===c||f&&f===e)if(hc(a,d,"bubble"),d!==window&&(e=d.getRootNode()),a.a)break}}
+function jc(a,b,c,d,e,f){for(var g=0;g<a.length;g++){var h=a[g],k=h.type,l=h.capture,m=h.once,q=h.passive;if(b===h.node&&c===k&&d===l&&e===m&&f===q)return g}return-1}
+function kc(a,b,c){if(b){var d=typeof b;if("function"===d||"object"===d)if("object"!==d||b.handleEvent&&"function"===typeof b.handleEvent){if(c&&"object"===typeof c){var e=!!c.capture;var f=!!c.once;var g=!!c.passive}else e=!!c,g=f=!1;var h=c&&c.X||this,k=b[$b];if(k){if(-1<jc(k,h,a,e,f,g))return}else b[$b]=[];k=function(e){f&&this.removeEventListener(a,b,c);e.__target||lc(e);if(h!==this){var g=Object.getOwnPropertyDescriptor(e,"currentTarget");Object.defineProperty(e,"currentTarget",{get:function(){return h},
+configurable:!0})}if(e.composed||-1<e.composedPath().indexOf(h))if(gc(e)&&e.target===e.relatedTarget)e.eventPhase===Event.BUBBLING_PHASE&&e.stopImmediatePropagation();else if(e.eventPhase===Event.CAPTURING_PHASE||e.bubbles||e.target===h||h instanceof Window){var k="function"===d?b.call(h,e):b.handleEvent&&b.handleEvent(e);h!==this&&(g?(Object.defineProperty(e,"currentTarget",g),g=null):delete e.currentTarget);return k}};b[$b].push({node:h,type:a,capture:e,once:f,passive:g,Ja:k});fc[a]?(this.__handlers=
+this.__handlers||{},this.__handlers[a]=this.__handlers[a]||{capture:[],bubble:[]},this.__handlers[a][e?"capture":"bubble"].push(k)):(this instanceof Window?y.Ha:y.addEventListener).call(this,a,k,c)}}}
+function mc(a,b,c){if(b){if(c&&"object"===typeof c){var d=!!c.capture;var e=!!c.once;var f=!!c.passive}else d=!!c,f=e=!1;var g=c&&c.X||this,h=void 0;var k=null;try{k=b[$b]}catch(l){}k&&(e=jc(k,g,a,d,e,f),-1<e&&(h=k.splice(e,1)[0].Ja,k.length||(b[$b]=void 0)));(this instanceof Window?y.Ia:y.removeEventListener).call(this,a,h||b,c);h&&fc[a]&&this.__handlers&&this.__handlers[a]&&(a=this.__handlers[a][d?"capture":"bubble"],h=a.indexOf(h),-1<h&&a.splice(h,1))}}
+function nc(){for(var a in fc)window.addEventListener(a,function(a){a.__target||(lc(a),ic(a))},!0)}function lc(a){a.__target=a.target;a.V=a.relatedTarget;if(u.s){var b=Object.getPrototypeOf(a);if(!b.hasOwnProperty("__patchProto")){var c=Object.create(b);c.La=b;pa(c,dc);b.__patchProto=c}a.__proto__=b.__patchProto}else pa(a,dc)}var oc=ec(window.Event),pc=ec(window.CustomEvent),qc=ec(window.MouseEvent);function rc(a,b){return{index:a,I:[],N:b}}
+function sc(a,b,c,d){var e=0,f=0,g=0,h=0,k=Math.min(b-e,d-f);if(0==e&&0==f)a:{for(g=0;g<k;g++)if(a[g]!==c[g])break a;g=k}if(b==a.length&&d==c.length){h=a.length;for(var l=c.length,m=0;m<k-g&&tc(a[--h],c[--l]);)m++;h=m}e+=g;f+=g;b-=h;d-=h;if(0==b-e&&0==d-f)return[];if(e==b){for(b=rc(e,0);f<d;)b.I.push(c[f++]);return[b]}if(f==d)return[rc(e,b-e)];k=e;g=f;d=d-g+1;h=b-k+1;b=Array(d);for(l=0;l<d;l++)b[l]=Array(h),b[l][0]=l;for(l=0;l<h;l++)b[0][l]=l;for(l=1;l<d;l++)for(m=1;m<h;m++)if(a[k+m-1]===c[g+l-1])b[l][m]=
+b[l-1][m-1];else{var q=b[l-1][m]+1,O=b[l][m-1]+1;b[l][m]=q<O?q:O}k=b.length-1;g=b[0].length-1;d=b[k][g];for(a=[];0<k||0<g;)0==k?(a.push(2),g--):0==g?(a.push(3),k--):(h=b[k-1][g-1],l=b[k-1][g],m=b[k][g-1],q=l<m?l<h?l:h:m<h?m:h,q==h?(h==d?a.push(0):(a.push(1),d=h),k--,g--):q==l?(a.push(3),k--,d=l):(a.push(2),g--,d=m));a.reverse();b=void 0;k=[];for(g=0;g<a.length;g++)switch(a[g]){case 0:b&&(k.push(b),b=void 0);e++;f++;break;case 1:b||(b=rc(e,0));b.N++;e++;b.I.push(c[f]);f++;break;case 2:b||(b=rc(e,0));
+b.N++;e++;break;case 3:b||(b=rc(e,0)),b.I.push(c[f]),f++}b&&k.push(b);return k}function tc(a,b){return a===b};var Pb=F.parentNode,uc=F.childNodes,vc={};function wc(a){var b=[];do b.unshift(a);while(a=a.parentNode);return b}function Ab(a,b,c){if(a!==vc)throw new TypeError("Illegal constructor");this.sa="ShadyRoot";a=uc(b);this.host=b;this.a=c&&c.mode;Fb(b,a);c=t(b);c.root=this;c.ja="closed"!==this.a?this:null;c=r(this);c.firstChild=c.lastChild=c.parentNode=c.nextSibling=c.previousSibling=null;c.childNodes=[];this.M=!1;this.o=this.g=this.f=null;c=0;for(var d=a.length;c<d;c++)y.removeChild.call(b,a[c])}
+function Jb(a){a.M||(a.M=!0,Ba(function(){return xc(a)}))}function xc(a){for(var b;a;){a.M&&(b=a);a:{var c=a;a=c.host.getRootNode();if(w(a))for(var d=c.host.childNodes,e=0;e<d.length;e++)if(c=d[e],"slot"==c.localName)break a;a=void 0}}b&&b._renderRoot()}
+Ab.prototype._renderRoot=function(){this.M=!1;if(this.f){Ob(this);for(var a=0,b;a<this.f.length;a++){b=this.f[a];var c=t(b),d=c.assignedNodes;c.assignedNodes=[];c.w=[];if(c.aa=d)for(c=0;c<d.length;c++){var e=t(d[c]);e.L=e.assignedSlot;e.assignedSlot===b&&(e.assignedSlot=null)}}for(b=this.host.firstChild;b;b=b.nextSibling)yc(this,b);for(a=0;a<this.f.length;a++){b=this.f[a];d=t(b);if(!d.assignedNodes.length)for(c=b.firstChild;c;c=c.nextSibling)yc(this,c,b);(c=(c=t(b.parentNode))&&c.root)&&Qb(c)&&c._renderRoot();
+zc(this,d.w,d.assignedNodes);if(c=d.aa){for(e=0;e<c.length;e++)t(c[e]).L=null;d.aa=null;c.length>d.assignedNodes.length&&(d.P=!0)}d.P&&(d.P=!1,Ac(this,b))}a=this.f;b=[];for(d=0;d<a.length;d++)c=a[d].parentNode,(e=t(c))&&e.root||!(0>b.indexOf(c))||b.push(c);for(a=0;a<b.length;a++){d=b[a];c=d===this?this.host:d;e=[];d=d.childNodes;for(var f=0;f<d.length;f++){var g=d[f];if("slot"==g.localName){g=t(g).w;for(var h=0;h<g.length;h++)e.push(g[h])}else e.push(g)}d=void 0;f=uc(c);g=sc(e,e.length,f,f.length);
+for(var k=h=0;h<g.length&&(d=g[h]);h++){for(var l=0,m;l<d.I.length&&(m=d.I[l]);l++)Pb(m)===c&&y.removeChild.call(c,m),f.splice(d.index+k,1);k-=d.N}for(k=0;k<g.length&&(d=g[k]);k++)for(h=f[d.index],l=d.index;l<d.index+d.N;l++)m=e[l],y.insertBefore.call(c,m,h),f.splice(l,0,m)}}};function yc(a,b,c){var d=r(b),e=d.L;d.L=null;c||(c=(a=a.g[b.slot||"__catchall"])&&a[0]);c?(r(c).assignedNodes.push(b),d.assignedSlot=c):d.assignedSlot=void 0;e!==d.assignedSlot&&d.assignedSlot&&(r(d.assignedSlot).P=!0)}
+function zc(a,b,c){for(var d=0,e;d<c.length&&(e=c[d]);d++)if("slot"==e.localName){var f=t(e).assignedNodes;f&&f.length&&zc(a,b,f)}else b.push(c[d])}function Ac(a,b){y.dispatchEvent.call(b,new Event("slotchange"));b=t(b);b.assignedSlot&&Ac(a,b.assignedSlot)}function Ob(a){if(a.o&&a.o.length){for(var b=a.o,c,d=0;d<b.length;d++){var e=b[d];Fb(e);Fb(e.parentNode);var f=Sb(e);a.g[f]?(c=c||{},c[f]=!0,a.g[f].push(e)):a.g[f]=[e];a.f.push(e)}if(c)for(var g in c)a.g[g]=Tb(a.g[g]);a.o=[]}}
+function Sb(a){var b=a.name||a.getAttribute("name")||"__catchall";return a.pa=b}function Tb(a){return a.sort(function(a,c){a=wc(a);for(var b=wc(c),e=0;e<a.length;e++){c=a[e];var f=b[e];if(c!==f)return a=Array.from(c.parentNode.childNodes),a.indexOf(c)-a.indexOf(f)}})}function Qb(a){Ob(a);return!(!a.f||!a.f.length)};function Bc(a){var b=a.getRootNode();w(b)&&xc(b);return(a=t(a))&&a.assignedSlot||null}
+var Cc={addEventListener:kc.bind(window),removeEventListener:mc.bind(window)},Dc={addEventListener:kc,removeEventListener:mc,appendChild:function(a){return Hb(this,a)},insertBefore:function(a,b){return Hb(this,a,b)},removeChild:function(a){return Ib(this,a)},replaceChild:function(a,b){Hb(this,a,b);Ib(this,b);return a},cloneNode:function(a){if("template"==this.localName)var b=y.cloneNode.call(this,a);else if(b=y.cloneNode.call(this,!1),a){a=this.childNodes;for(var c=0,d;c<a.length;c++)d=a[c].cloneNode(!0),
+b.appendChild(d)}return b},getRootNode:function(){return Ub(this)},contains:function(a){return ya(this,a)},dispatchEvent:function(a){Ca();return y.dispatchEvent.call(this,a)}};
+Object.defineProperties(Dc,{isConnected:{get:function(){if(sb&&sb.call(this))return!0;if(this.nodeType==Node.DOCUMENT_FRAGMENT_NODE)return!1;var a=this.ownerDocument;if(xa){if(y.contains.call(a,this))return!0}else if(a.documentElement&&y.contains.call(a.documentElement,this))return!0;for(a=this;a&&!(a instanceof Document);)a=a.parentNode||(w(a)?a.host:void 0);return!!(a&&a instanceof Document)},configurable:!0}});
+var Ec={get assignedSlot(){return Bc(this)}},Fc={querySelector:function(a){return Vb(this,function(b){return oa.call(b,a)},function(a){return!!a})[0]||null},querySelectorAll:function(a,b){if(b){b=Array.prototype.slice.call(y.querySelectorAll(this,a));var c=this.getRootNode();return b.filter(function(a){return a.getRootNode()==c})}return Vb(this,function(b){return oa.call(b,a)})}},Gc={assignedNodes:function(a){if("slot"===this.localName){var b=this.getRootNode();w(b)&&xc(b);return(b=t(this))?(a&&a.flatten?
+b.w:b.assignedNodes)||[]:[]}}},Hc=qa({setAttribute:function(a,b){Yb(this,a,b)},removeAttribute:function(a){y.removeAttribute.call(this,a);Rb(this,a)},attachShadow:function(a){if(!this)throw"Must provide a host.";if(!a)throw"Not enough arguments.";return new Ab(vc,this,a)},get slot(){return this.getAttribute("slot")},set slot(a){Yb(this,"slot",a)},get assignedSlot(){return Bc(this)}},Fc,Gc);Object.defineProperties(Hc,xb);
+var Ic=qa({importNode:function(a,b){return Zb(a,b)},getElementById:function(a){return Vb(this,function(b){return b.id==a},function(a){return!!a})[0]||null}},Fc);Object.defineProperties(Ic,{_activeElement:yb.activeElement});
+var Jc=HTMLElement.prototype.blur,Kc=qa({blur:function(){var a=t(this);(a=(a=a&&a.root)&&a.activeElement)?a.blur():Jc.call(this)}}),Lc={addEventListener:function(a,b,c){"object"!==typeof c&&(c={capture:!!c});c.X=this;this.host.addEventListener(a,b,c)},removeEventListener:function(a,b,c){"object"!==typeof c&&(c={capture:!!c});c.X=this;this.host.removeEventListener(a,b,c)},getElementById:function(a){return Vb(this,function(b){return b.id==a},function(a){return!!a})[0]||null}};
+function I(a,b){for(var c=Object.getOwnPropertyNames(b),d=0;d<c.length;d++){var e=c[d],f=Object.getOwnPropertyDescriptor(b,e);f.value?a[e]=f.value:Object.defineProperty(a,e,f)}};if(u.ha){var ShadyDOM={inUse:u.ha,patch:function(a){Cb(a);Bb(a);return a},isShadyRoot:w,enqueue:Ba,flush:Ca,settings:u,filterMutations:Ia,observeChildren:Ga,unobserveChildren:Ha,nativeMethods:y,nativeTree:F};window.ShadyDOM=ShadyDOM;window.Event=oc;window.CustomEvent=pc;window.MouseEvent=qc;nc();var Mc=window.customElements&&window.customElements.nativeHTMLElement||HTMLElement;I(Ab.prototype,Lc);I(window.Node.prototype,Dc);I(window.Window.prototype,Cc);I(window.Text.prototype,Ec);I(window.DocumentFragment.prototype,
+Fc);I(window.Element.prototype,Hc);I(window.Document.prototype,Ic);window.HTMLSlotElement&&I(window.HTMLSlotElement.prototype,Gc);I(Mc.prototype,Kc);u.s&&(H(window.Node.prototype),H(window.Text.prototype),H(window.DocumentFragment.prototype),H(window.Element.prototype),H(Mc.prototype),H(window.Document.prototype),window.HTMLSlotElement&&H(window.HTMLSlotElement.prototype));zb();window.ShadowRoot=Ab};var Nc=new Set("annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph".split(" "));function Oc(a){var b=Nc.has(a);a=/^[a-z][.0-9_a-z]*-[\-.0-9_a-z]*$/.test(a);return!b&&a}function J(a){var b=a.isConnected;if(void 0!==b)return b;for(;a&&!(a.__CE_isImportDocument||a instanceof Document);)a=a.parentNode||(window.ShadowRoot&&a instanceof ShadowRoot?a.host:void 0);return!(!a||!(a.__CE_isImportDocument||a instanceof Document))}
+function Pc(a,b){for(;b&&b!==a&&!b.nextSibling;)b=b.parentNode;return b&&b!==a?b.nextSibling:null}
+function K(a,b,c){c=void 0===c?new Set:c;for(var d=a;d;){if(d.nodeType===Node.ELEMENT_NODE){var e=d;b(e);var f=e.localName;if("link"===f&&"import"===e.getAttribute("rel")){d=e.import;if(d instanceof Node&&!c.has(d))for(c.add(d),d=d.firstChild;d;d=d.nextSibling)K(d,b,c);d=Pc(a,e);continue}else if("template"===f){d=Pc(a,e);continue}if(e=e.__CE_shadowRoot)for(e=e.firstChild;e;e=e.nextSibling)K(e,b,c)}d=d.firstChild?d.firstChild:Pc(a,d)}}function M(a,b,c){a[b]=c};function Qc(){this.a=new Map;this.D=new Map;this.i=[];this.c=!1}function Rc(a,b,c){a.a.set(b,c);a.D.set(c.constructor,c)}function Sc(a,b){a.c=!0;a.i.push(b)}function Tc(a,b){a.c&&K(b,function(b){return a.b(b)})}Qc.prototype.b=function(a){if(this.c&&!a.__CE_patched){a.__CE_patched=!0;for(var b=0;b<this.i.length;b++)this.i[b](a)}};function N(a,b){var c=[];K(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state?a.connectedCallback(d):Uc(a,d)}}
+function P(a,b){var c=[];K(b,function(a){return c.push(a)});for(b=0;b<c.length;b++){var d=c[b];1===d.__CE_state&&a.disconnectedCallback(d)}}
+function Q(a,b,c){c=void 0===c?{}:c;var d=c.Ga||new Set,e=c.T||function(b){return Uc(a,b)},f=[];K(b,function(b){if("link"===b.localName&&"import"===b.getAttribute("rel")){var c=b.import;c instanceof Node&&(c.__CE_isImportDocument=!0,c.__CE_hasRegistry=!0);c&&"complete"===c.readyState?c.__CE_documentLoadHandled=!0:b.addEventListener("load",function(){var c=b.import;if(!c.__CE_documentLoadHandled){c.__CE_documentLoadHandled=!0;var f=new Set(d);f.delete(c);Q(a,c,{Ga:f,T:e})}})}else f.push(b)},d);if(a.c)for(b=
+0;b<f.length;b++)a.b(f[b]);for(b=0;b<f.length;b++)e(f[b])}
+function Uc(a,b){if(void 0===b.__CE_state){var c=b.ownerDocument;if(c.defaultView||c.__CE_isImportDocument&&c.__CE_hasRegistry)if(c=a.a.get(b.localName)){c.constructionStack.push(b);var d=c.constructor;try{try{if(new d!==b)throw Error("The custom element constructor did not produce the element being upgraded.");}finally{c.constructionStack.pop()}}catch(g){throw b.__CE_state=2,g;}b.__CE_state=1;b.__CE_definition=c;if(c.attributeChangedCallback)for(c=c.observedAttributes,d=0;d<c.length;d++){var e=c[d],
+f=b.getAttribute(e);null!==f&&a.attributeChangedCallback(b,e,null,f,null)}J(b)&&a.connectedCallback(b)}}}Qc.prototype.connectedCallback=function(a){var b=a.__CE_definition;b.connectedCallback&&b.connectedCallback.call(a)};Qc.prototype.disconnectedCallback=function(a){var b=a.__CE_definition;b.disconnectedCallback&&b.disconnectedCallback.call(a)};
+Qc.prototype.attributeChangedCallback=function(a,b,c,d,e){var f=a.__CE_definition;f.attributeChangedCallback&&-1<f.observedAttributes.indexOf(b)&&f.attributeChangedCallback.call(a,b,c,d,e)};function Vc(a){var b=document;this.h=a;this.a=b;this.B=void 0;Q(this.h,this.a);"loading"===this.a.readyState&&(this.B=new MutationObserver(this.b.bind(this)),this.B.observe(this.a,{childList:!0,subtree:!0}))}function Wc(a){a.B&&a.B.disconnect()}Vc.prototype.b=function(a){var b=this.a.readyState;"interactive"!==b&&"complete"!==b||Wc(this);for(b=0;b<a.length;b++)for(var c=a[b].addedNodes,d=0;d<c.length;d++)Q(this.h,c[d])};function Xc(){var a=this;this.b=this.a=void 0;this.c=new Promise(function(b){a.b=b;a.a&&b(a.a)})}function Yc(a){if(a.a)throw Error("Already resolved.");a.a=void 0;a.b&&a.b(void 0)};function R(a){this.Y=!1;this.h=a;this.ba=new Map;this.Z=function(a){return a()};this.K=!1;this.$=[];this.ra=new Vc(a)}n=R.prototype;
+n.define=function(a,b){var c=this;if(!(b instanceof Function))throw new TypeError("Custom element constructors must be functions.");if(!Oc(a))throw new SyntaxError("The element name '"+a+"' is not valid.");if(this.h.a.get(a))throw Error("A custom element with name '"+a+"' has already been defined.");if(this.Y)throw Error("A custom element is already being defined.");this.Y=!0;try{var d=function(a){var b=e[a];if(void 0!==b&&!(b instanceof Function))throw Error("The '"+a+"' callback must be a function.");
+return b},e=b.prototype;if(!(e instanceof Object))throw new TypeError("The custom element constructor's prototype is not an object.");var f=d("connectedCallback");var g=d("disconnectedCallback");var h=d("adoptedCallback");var k=d("attributeChangedCallback");var l=b.observedAttributes||[]}catch(m){return}finally{this.Y=!1}b={localName:a,constructor:b,connectedCallback:f,disconnectedCallback:g,adoptedCallback:h,attributeChangedCallback:k,observedAttributes:l,constructionStack:[]};Rc(this.h,a,b);this.$.push(b);
+this.K||(this.K=!0,this.Z(function(){return Zc(c)}))};n.T=function(a){Q(this.h,a)};function Zc(a){if(!1!==a.K){a.K=!1;for(var b=a.$,c=[],d=new Map,e=0;e<b.length;e++)d.set(b[e].localName,[]);Q(a.h,document,{T:function(b){if(void 0===b.__CE_state){var e=b.localName,f=d.get(e);f?f.push(b):a.h.a.get(e)&&c.push(b)}}});for(e=0;e<c.length;e++)Uc(a.h,c[e]);for(;0<b.length;){var f=b.shift();e=f.localName;f=d.get(f.localName);for(var g=0;g<f.length;g++)Uc(a.h,f[g]);(e=a.ba.get(e))&&Yc(e)}}}
+n.get=function(a){if(a=this.h.a.get(a))return a.constructor};n.ma=function(a){if(!Oc(a))return Promise.reject(new SyntaxError("'"+a+"' is not a valid custom element name."));var b=this.ba.get(a);if(b)return b.c;b=new Xc;this.ba.set(a,b);this.h.a.get(a)&&!this.$.some(function(b){return b.localName===a})&&Yc(b);return b.c};n.Ba=function(a){Wc(this.ra);var b=this.Z;this.Z=function(c){return a(function(){return b(c)})}};window.CustomElementRegistry=R;R.prototype.define=R.prototype.define;
+R.prototype.upgrade=R.prototype.T;R.prototype.get=R.prototype.get;R.prototype.whenDefined=R.prototype.ma;R.prototype.polyfillWrapFlushCallback=R.prototype.Ba;var $c=window.Document.prototype.createElement,ad=window.Document.prototype.createElementNS,bd=window.Document.prototype.importNode,cd=window.Document.prototype.prepend,dd=window.Document.prototype.append,ed=window.DocumentFragment.prototype.prepend,fd=window.DocumentFragment.prototype.append,gd=window.Node.prototype.cloneNode,hd=window.Node.prototype.appendChild,id=window.Node.prototype.insertBefore,jd=window.Node.prototype.removeChild,kd=window.Node.prototype.replaceChild,ld=Object.getOwnPropertyDescriptor(window.Node.prototype,
+"textContent"),md=window.Element.prototype.attachShadow,nd=Object.getOwnPropertyDescriptor(window.Element.prototype,"innerHTML"),od=window.Element.prototype.getAttribute,pd=window.Element.prototype.setAttribute,qd=window.Element.prototype.removeAttribute,rd=window.Element.prototype.getAttributeNS,sd=window.Element.prototype.setAttributeNS,td=window.Element.prototype.removeAttributeNS,ud=window.Element.prototype.insertAdjacentElement,vd=window.Element.prototype.insertAdjacentHTML,wd=window.Element.prototype.prepend,
+xd=window.Element.prototype.append,yd=window.Element.prototype.before,zd=window.Element.prototype.after,Ad=window.Element.prototype.replaceWith,Bd=window.Element.prototype.remove,Cd=window.HTMLElement,Dd=Object.getOwnPropertyDescriptor(window.HTMLElement.prototype,"innerHTML"),Ed=window.HTMLElement.prototype.insertAdjacentElement,Fd=window.HTMLElement.prototype.insertAdjacentHTML;var Gd=new function(){};function Hd(){var a=Id;window.HTMLElement=function(){function b(){var b=this.constructor,d=a.D.get(b);if(!d)throw Error("The custom element being constructed was not registered with `customElements`.");var e=d.constructionStack;if(0===e.length)return e=$c.call(document,d.localName),Object.setPrototypeOf(e,b.prototype),e.__CE_state=1,e.__CE_definition=d,a.b(e),e;d=e.length-1;var f=e[d];if(f===Gd)throw Error("The HTMLElement constructor was either called reentrantly for this constructor or called multiple times.");
+e[d]=Gd;Object.setPrototypeOf(f,b.prototype);a.b(f);return f}b.prototype=Cd.prototype;return b}()};function Jd(a,b,c){function d(b){return function(c){for(var e=[],d=0;d<arguments.length;++d)e[d-0]=arguments[d];d=[];for(var f=[],l=0;l<e.length;l++){var m=e[l];m instanceof Element&&J(m)&&f.push(m);if(m instanceof DocumentFragment)for(m=m.firstChild;m;m=m.nextSibling)d.push(m);else d.push(m)}b.apply(this,e);for(e=0;e<f.length;e++)P(a,f[e]);if(J(this))for(e=0;e<d.length;e++)f=d[e],f instanceof Element&&N(a,f)}}void 0!==c.S&&(b.prepend=d(c.S));void 0!==c.append&&(b.append=d(c.append))};function Kd(){var a=Id;M(Document.prototype,"createElement",function(b){if(this.__CE_hasRegistry){var c=a.a.get(b);if(c)return new c.constructor}b=$c.call(this,b);a.b(b);return b});M(Document.prototype,"importNode",function(b,c){b=bd.call(this,b,c);this.__CE_hasRegistry?Q(a,b):Tc(a,b);return b});M(Document.prototype,"createElementNS",function(b,c){if(this.__CE_hasRegistry&&(null===b||"http://www.w3.org/1999/xhtml"===b)){var d=a.a.get(c);if(d)return new d.constructor}b=ad.call(this,b,c);a.b(b);return b});
+Jd(a,Document.prototype,{S:cd,append:dd})};function Ld(){var a=Id;function b(b,d){Object.defineProperty(b,"textContent",{enumerable:d.enumerable,configurable:!0,get:d.get,set:function(b){if(this.nodeType===Node.TEXT_NODE)d.set.call(this,b);else{var c=void 0;if(this.firstChild){var e=this.childNodes,h=e.length;if(0<h&&J(this)){c=Array(h);for(var k=0;k<h;k++)c[k]=e[k]}}d.set.call(this,b);if(c)for(b=0;b<c.length;b++)P(a,c[b])}}})}M(Node.prototype,"insertBefore",function(b,d){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);
+b=id.call(this,b,d);if(J(this))for(d=0;d<c.length;d++)N(a,c[d]);return b}c=J(b);d=id.call(this,b,d);c&&P(a,b);J(this)&&N(a,b);return d});M(Node.prototype,"appendChild",function(b){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);b=hd.call(this,b);if(J(this))for(var e=0;e<c.length;e++)N(a,c[e]);return b}c=J(b);e=hd.call(this,b);c&&P(a,b);J(this)&&N(a,b);return e});M(Node.prototype,"cloneNode",function(b){b=gd.call(this,b);this.ownerDocument.__CE_hasRegistry?Q(a,b):
+Tc(a,b);return b});M(Node.prototype,"removeChild",function(b){var c=J(b),e=jd.call(this,b);c&&P(a,b);return e});M(Node.prototype,"replaceChild",function(b,d){if(b instanceof DocumentFragment){var c=Array.prototype.slice.apply(b.childNodes);b=kd.call(this,b,d);if(J(this))for(P(a,d),d=0;d<c.length;d++)N(a,c[d]);return b}c=J(b);var f=kd.call(this,b,d),g=J(this);g&&P(a,d);c&&P(a,b);g&&N(a,b);return f});ld&&ld.get?b(Node.prototype,ld):Sc(a,function(a){b(a,{enumerable:!0,configurable:!0,get:function(){for(var a=
+[],b=0;b<this.childNodes.length;b++)a.push(this.childNodes[b].textContent);return a.join("")},set:function(a){for(;this.firstChild;)jd.call(this,this.firstChild);hd.call(this,document.createTextNode(a))}})})};function Md(a){var b=Element.prototype;function c(b){return function(c){for(var d=[],e=0;e<arguments.length;++e)d[e-0]=arguments[e];e=[];for(var h=[],k=0;k<d.length;k++){var l=d[k];l instanceof Element&&J(l)&&h.push(l);if(l instanceof DocumentFragment)for(l=l.firstChild;l;l=l.nextSibling)e.push(l);else e.push(l)}b.apply(this,d);for(d=0;d<h.length;d++)P(a,h[d]);if(J(this))for(d=0;d<e.length;d++)h=e[d],h instanceof Element&&N(a,h)}}void 0!==yd&&(b.before=c(yd));void 0!==yd&&(b.after=c(zd));void 0!==
+Ad&&M(b,"replaceWith",function(b){for(var c=[],d=0;d<arguments.length;++d)c[d-0]=arguments[d];d=[];for(var g=[],h=0;h<c.length;h++){var k=c[h];k instanceof Element&&J(k)&&g.push(k);if(k instanceof DocumentFragment)for(k=k.firstChild;k;k=k.nextSibling)d.push(k);else d.push(k)}h=J(this);Ad.apply(this,c);for(c=0;c<g.length;c++)P(a,g[c]);if(h)for(P(a,this),c=0;c<d.length;c++)g=d[c],g instanceof Element&&N(a,g)});void 0!==Bd&&M(b,"remove",function(){var b=J(this);Bd.call(this);b&&P(a,this)})};function Nd(){var a=Id;function b(b,c){Object.defineProperty(b,"innerHTML",{enumerable:c.enumerable,configurable:!0,get:c.get,set:function(b){var d=this,e=void 0;J(this)&&(e=[],K(this,function(a){a!==d&&e.push(a)}));c.set.call(this,b);if(e)for(var f=0;f<e.length;f++){var g=e[f];1===g.__CE_state&&a.disconnectedCallback(g)}this.ownerDocument.__CE_hasRegistry?Q(a,this):Tc(a,this);return b}})}function c(b,c){M(b,"insertAdjacentElement",function(b,d){var e=J(d);b=c.call(this,b,d);e&&P(a,d);J(b)&&N(a,d);
+return b})}function d(b,c){function d(b,c){for(var d=[];b!==c;b=b.nextSibling)d.push(b);for(c=0;c<d.length;c++)Q(a,d[c])}M(b,"insertAdjacentHTML",function(a,b){a=a.toLowerCase();if("beforebegin"===a){var e=this.previousSibling;c.call(this,a,b);d(e||this.parentNode.firstChild,this)}else if("afterbegin"===a)e=this.firstChild,c.call(this,a,b),d(this.firstChild,e);else if("beforeend"===a)e=this.lastChild,c.call(this,a,b),d(e||this.firstChild,null);else if("afterend"===a)e=this.nextSibling,c.call(this,
+a,b),d(this.nextSibling,e);else throw new SyntaxError("The value provided ("+String(a)+") is not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'.");})}md&&M(Element.prototype,"attachShadow",function(a){return this.__CE_shadowRoot=a=md.call(this,a)});nd&&nd.get?b(Element.prototype,nd):Dd&&Dd.get?b(HTMLElement.prototype,Dd):Sc(a,function(a){b(a,{enumerable:!0,configurable:!0,get:function(){return gd.call(this,!0).innerHTML},set:function(a){var b="template"===this.localName,c=b?this.content:
+this,d=$c.call(document,this.localName);for(d.innerHTML=a;0<c.childNodes.length;)jd.call(c,c.childNodes[0]);for(a=b?d.content:d;0<a.childNodes.length;)hd.call(c,a.childNodes[0])}})});M(Element.prototype,"setAttribute",function(b,c){if(1!==this.__CE_state)return pd.call(this,b,c);var d=od.call(this,b);pd.call(this,b,c);c=od.call(this,b);a.attributeChangedCallback(this,b,d,c,null)});M(Element.prototype,"setAttributeNS",function(b,c,d){if(1!==this.__CE_state)return sd.call(this,b,c,d);var e=rd.call(this,
+b,c);sd.call(this,b,c,d);d=rd.call(this,b,c);a.attributeChangedCallback(this,c,e,d,b)});M(Element.prototype,"removeAttribute",function(b){if(1!==this.__CE_state)return qd.call(this,b);var c=od.call(this,b);qd.call(this,b);null!==c&&a.attributeChangedCallback(this,b,c,null,null)});M(Element.prototype,"removeAttributeNS",function(b,c){if(1!==this.__CE_state)return td.call(this,b,c);var d=rd.call(this,b,c);td.call(this,b,c);var e=rd.call(this,b,c);d!==e&&a.attributeChangedCallback(this,c,d,e,b)});Ed?
+c(HTMLElement.prototype,Ed):ud?c(Element.prototype,ud):console.warn("Custom Elements: `Element#insertAdjacentElement` was not patched.");Fd?d(HTMLElement.prototype,Fd):vd?d(Element.prototype,vd):console.warn("Custom Elements: `Element#insertAdjacentHTML` was not patched.");Jd(a,Element.prototype,{S:wd,append:xd});Md(a)};/*
+
+ Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ Code distributed by Google as part of the polymer project is also
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+var Od=window.customElements;if(!Od||Od.forcePolyfill||"function"!=typeof Od.define||"function"!=typeof Od.get){var Id=new Qc;Hd();Kd();Jd(Id,DocumentFragment.prototype,{S:ed,append:fd});Ld();Nd();document.__CE_hasRegistry=!0;var customElements=new R(Id);Object.defineProperty(window,"customElements",{configurable:!0,enumerable:!0,value:customElements})};/*
+
+Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+function Pd(){this.end=this.start=0;this.rules=this.parent=this.previous=null;this.cssText=this.parsedCssText="";this.atRule=!1;this.type=0;this.parsedSelector=this.selector=this.keyframesName=""}
+function Qd(a){a=a.replace(Rd,"").replace(Sd,"");var b=Td,c=a,d=new Pd;d.start=0;d.end=c.length;for(var e=d,f=0,g=c.length;f<g;f++)if("{"===c[f]){e.rules||(e.rules=[]);var h=e,k=h.rules[h.rules.length-1]||null;e=new Pd;e.start=f+1;e.parent=h;e.previous=k;h.rules.push(e)}else"}"===c[f]&&(e.end=f+1,e=e.parent||d);return b(d,a)}
+function Td(a,b){var c=b.substring(a.start,a.end-1);a.parsedCssText=a.cssText=c.trim();a.parent&&(c=b.substring(a.previous?a.previous.end:a.parent.start,a.start-1),c=Ud(c),c=c.replace(Vd," "),c=c.substring(c.lastIndexOf(";")+1),c=a.parsedSelector=a.selector=c.trim(),a.atRule=0===c.indexOf("@"),a.atRule?0===c.indexOf("@media")?a.type=Wd:c.match(Xd)&&(a.type=Yd,a.keyframesName=a.selector.split(Vd).pop()):a.type=0===c.indexOf("--")?Zd:$d);if(c=a.rules)for(var d=0,e=c.length,f;d<e&&(f=c[d]);d++)Td(f,
+b);return a}function Ud(a){return a.replace(/\\([0-9a-f]{1,6})\s/gi,function(a,c){a=c;for(c=6-a.length;c--;)a="0"+a;return"\\"+a})}
+function ae(a,b,c){c=void 0===c?"":c;var d="";if(a.cssText||a.rules){var e=a.rules,f;if(f=e)f=e[0],f=!(f&&f.selector&&0===f.selector.indexOf("--"));if(f){f=0;for(var g=e.length,h;f<g&&(h=e[f]);f++)d=ae(h,b,d)}else b?b=a.cssText:(b=a.cssText,b=b.replace(be,"").replace(ce,""),b=b.replace(de,"").replace(ee,"")),(d=b.trim())&&(d=" "+d+"\n")}d&&(a.selector&&(c+=a.selector+" {\n"),c+=d,a.selector&&(c+="}\n\n"));return c}
+var $d=1,Yd=7,Wd=4,Zd=1E3,Rd=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim,Sd=/@import[^;]*;/gim,be=/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,ce=/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\n]|$)?/gim,de=/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/gim,ee=/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,Xd=/^@[^\s]*keyframes/,Vd=/\s+/g;var S=!(window.ShadyDOM&&window.ShadyDOM.inUse),fe;function ge(a){fe=a&&a.shimcssproperties?!1:S||!(navigator.userAgent.match(/AppleWebKit\/601|Edge\/15/)||!window.CSS||!CSS.supports||!CSS.supports("box-shadow","0 0 0 var(--foo)"))}window.ShadyCSS&&void 0!==window.ShadyCSS.nativeCss?fe=window.ShadyCSS.nativeCss:window.ShadyCSS?(ge(window.ShadyCSS),window.ShadyCSS=void 0):ge(window.WebComponents&&window.WebComponents.flags);var T=fe;var he=/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};{])+)|\{([^}]*)\}(?:(?=[;\s}])|$))/gi,ie=/(?:^|\W+)@apply\s*\(?([^);\n]*)\)?/gi,je=/(--[\w-]+)\s*([:,;)]|$)/gi,ke=/(animation\s*:)|(animation-name\s*:)/,le=/@media\s(.*)/,me=/\{[^}]*\}/g;var ne=new Set;function oe(a,b){if(!a)return"";"string"===typeof a&&(a=Qd(a));b&&pe(a,b);return ae(a,T)}function qe(a){!a.__cssRules&&a.textContent&&(a.__cssRules=Qd(a.textContent));return a.__cssRules||null}function re(a){return!!a.parent&&a.parent.type===Yd}function pe(a,b,c,d){if(a){var e=!1,f=a.type;if(d&&f===Wd){var g=a.selector.match(le);g&&(window.matchMedia(g[1]).matches||(e=!0))}f===$d?b(a):c&&f===Yd?c(a):f===Zd&&(e=!0);if((a=a.rules)&&!e){e=0;f=a.length;for(var h;e<f&&(h=a[e]);e++)pe(h,b,c,d)}}}
+function se(a,b,c,d){var e=document.createElement("style");b&&e.setAttribute("scope",b);e.textContent=a;te(e,c,d);return e}var U=null;function te(a,b,c){b=b||document.head;b.insertBefore(a,c&&c.nextSibling||b.firstChild);U?a.compareDocumentPosition(U)===Node.DOCUMENT_POSITION_PRECEDING&&(U=a):U=a}
+function ue(a,b){var c=a.indexOf("var(");if(-1===c)return b(a,"","","");a:{var d=0;var e=c+3;for(var f=a.length;e<f;e++)if("("===a[e])d++;else if(")"===a[e]&&0===--d)break a;e=-1}d=a.substring(c+4,e);c=a.substring(0,c);a=ue(a.substring(e+1),b);e=d.indexOf(",");return-1===e?b(c,d.trim(),"",a):b(c,d.substring(0,e).trim(),d.substring(e+1).trim(),a)}function ve(a,b){S?a.setAttribute("class",b):window.ShadyDOM.nativeMethods.setAttribute.call(a,"class",b)}
+function V(a){var b=a.localName,c="";b?-1<b.indexOf("-")||(c=b,b=a.getAttribute&&a.getAttribute("is")||""):(b=a.is,c=a.extends);return{is:b,J:c}};function we(){}function xe(a,b,c){var d=W;a.__styleScoped?a.__styleScoped=null:ye(d,a,b||"",c)}function ye(a,b,c,d){b.nodeType===Node.ELEMENT_NODE&&ze(b,c,d);if(b="template"===b.localName?(b.content||b.Ma).childNodes:b.children||b.childNodes)for(var e=0;e<b.length;e++)ye(a,b[e],c,d)}
+function ze(a,b,c){if(b)if(a.classList)c?(a.classList.remove("style-scope"),a.classList.remove(b)):(a.classList.add("style-scope"),a.classList.add(b));else if(a.getAttribute){var d=a.getAttribute(Ae);c?d&&(b=d.replace("style-scope","").replace(b,""),ve(a,b)):ve(a,(d?d+" ":"")+"style-scope "+b)}}function Be(a,b,c){var d=W,e=a.__cssBuild;S||"shady"===e?b=oe(b,c):(a=V(a),b=Ce(d,b,a.is,a.J,c)+"\n\n");return b.trim()}
+function Ce(a,b,c,d,e){var f=De(c,d);c=c?Ee+c:"";return oe(b,function(b){b.c||(b.selector=b.l=Fe(a,b,a.b,c,f),b.c=!0);e&&e(b,c,f)})}function De(a,b){return b?"[is="+a+"]":a}function Fe(a,b,c,d,e){var f=b.selector.split(Ge);if(!re(b)){b=0;for(var g=f.length,h;b<g&&(h=f[b]);b++)f[b]=c.call(a,h,d,e)}return f.join(Ge)}function He(a){return a.replace(Ie,function(a,c,d){-1<d.indexOf("+")?d=d.replace(/\+/g,"___"):-1<d.indexOf("___")&&(d=d.replace(/___/g,"+"));return":"+c+"("+d+")"})}
+we.prototype.b=function(a,b,c){var d=!1;a=a.trim();var e=Ie.test(a);e&&(a=a.replace(Ie,function(a,b,c){return":"+b+"("+c.replace(/\s/g,"")+")"}),a=He(a));a=a.replace(Je,Ke+" $1");a=a.replace(Le,function(a,e,h){d||(a=Me(h,e,b,c),d=d||a.stop,e=a.wa,h=a.value);return e+h});e&&(a=He(a));return a};
+function Me(a,b,c,d){var e=a.indexOf(Ne);0<=a.indexOf(Ke)?a=Oe(a,d):0!==e&&(a=c?Pe(a,c):a);c=!1;0<=e&&(b="",c=!0);if(c){var f=!0;c&&(a=a.replace(Qe,function(a,b){return" > "+b}))}a=a.replace(Re,function(a,b,c){return'[dir="'+c+'"] '+b+", "+b+'[dir="'+c+'"]'});return{value:a,wa:b,stop:f}}function Pe(a,b){a=a.split(Se);a[0]+=b;return a.join(Se)}
+function Oe(a,b){var c=a.match(Te);return(c=c&&c[2].trim()||"")?c[0].match(Ue)?a.replace(Te,function(a,c,f){return b+f}):c.split(Ue)[0]===b?c:Ve:a.replace(Ke,b)}function We(a){a.selector===Xe&&(a.selector="html")}we.prototype.c=function(a){return a.match(Ne)?this.b(a,Ye):Pe(a.trim(),Ye)};p.Object.defineProperties(we.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return"style-scope"}}});
+var Ie=/:(nth[-\w]+)\(([^)]+)\)/,Ye=":not(.style-scope)",Ge=",",Le=/(^|[\s>+~]+)((?:\[.+?\]|[^\s>+~=[])+)/g,Ue=/[[.:#*]/,Ke=":host",Xe=":root",Ne="::slotted",Je=new RegExp("^("+Ne+")"),Te=/(:host)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,Qe=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/,Re=/(.*):dir\((?:(ltr|rtl))\)/,Ee=".",Se=":",Ae="class",Ve="should_not_match",W=new we;function Ze(a,b,c,d){this.v=a||null;this.b=b||null;this.ca=c||[];this.G=null;this.J=d||"";this.a=this.m=this.A=null}function X(a){return a?a.__styleInfo:null}function $e(a,b){return a.__styleInfo=b}Ze.prototype.c=function(){return this.v};Ze.prototype._getStyleRules=Ze.prototype.c;function af(a){var b=this.matches||this.matchesSelector||this.mozMatchesSelector||this.msMatchesSelector||this.oMatchesSelector||this.webkitMatchesSelector;return b&&b.call(this,a)}var bf=navigator.userAgent.match("Trident");function cf(){}function df(a){var b={},c=[],d=0;pe(a,function(a){ef(a);a.index=d++;a=a.j.cssText;for(var c;c=je.exec(a);){var e=c[1];":"!==c[2]&&(b[e]=!0)}},function(a){c.push(a)});a.b=c;a=[];for(var e in b)a.push(e);return a}
+function ef(a){if(!a.j){var b={},c={};ff(a,c)&&(b.u=c,a.rules=null);b.cssText=a.parsedCssText.replace(me,"").replace(he,"");a.j=b}}function ff(a,b){var c=a.j;if(c){if(c.u)return Object.assign(b,c.u),!0}else{c=a.parsedCssText;for(var d;a=he.exec(c);){d=(a[2]||a[3]).trim();if("inherit"!==d||"unset"!==d)b[a[1].trim()]=d;d=!0}return d}}
+function gf(a,b,c){b&&(b=0<=b.indexOf(";")?hf(a,b,c):ue(b,function(b,e,f,g){if(!e)return b+g;(e=gf(a,c[e],c))&&"initial"!==e?"apply-shim-inherit"===e&&(e="inherit"):e=gf(a,c[f]||f,c)||f;return b+(e||"")+g}));return b&&b.trim()||""}
+function hf(a,b,c){b=b.split(";");for(var d=0,e,f;d<b.length;d++)if(e=b[d]){ie.lastIndex=0;if(f=ie.exec(e))e=gf(a,c[f[1]],c);else if(f=e.indexOf(":"),-1!==f){var g=e.substring(f);g=g.trim();g=gf(a,g,c)||g;e=e.substring(0,f)+g}b[d]=e&&e.lastIndexOf(";")===e.length-1?e.slice(0,-1):e||""}return b.join(";")}
+function jf(a,b){var c={},d=[];pe(a,function(a){a.j||ef(a);var e=a.l||a.parsedSelector;b&&a.j.u&&e&&af.call(b,e)&&(ff(a,c),a=a.index,e=parseInt(a/32,10),d[e]=(d[e]||0)|1<<a%32)},null,!0);return{u:c,key:d}}
+function kf(a,b,c,d){b.j||ef(b);if(b.j.u){var e=V(a);a=e.is;e=e.J;e=a?De(a,e):"html";var f=b.parsedSelector,g=":host > *"===f||"html"===f,h=0===f.indexOf(":host")&&!g;"shady"===c&&(g=f===e+" > *."+e||-1!==f.indexOf("html"),h=!g&&0===f.indexOf(e));"shadow"===c&&(g=":host > *"===f||"html"===f,h=h&&!g);if(g||h)c=e,h&&(b.l||(b.l=Fe(W,b,W.b,a?Ee+a:"",e)),c=b.l||e),d({Da:c,Aa:h,Va:g})}}
+function lf(a,b){var c={},d={},e=b&&b.__cssBuild;pe(b,function(b){kf(a,b,e,function(e){af.call(a.i||a,e.Da)&&(e.Aa?ff(b,c):ff(b,d))})},null,!0);return{Ca:d,za:c}}
+function mf(a,b,c,d){var e=V(b),f=De(e.is,e.J),g=new RegExp("(?:^|[^.#[:])"+(b.extends?"\\"+f.slice(0,-1)+"\\]":f)+"($|[.:[\\s>+~])");e=X(b).v;var h=nf(e,d);return Be(b,e,function(b){var e="";b.j||ef(b);b.j.cssText&&(e=hf(a,b.j.cssText,c));b.cssText=e;if(!S&&!re(b)&&b.cssText){var k=e=b.cssText;null==b.ga&&(b.ga=ke.test(e));if(b.ga)if(null==b.R){b.R=[];for(var q in h)k=h[q],k=k(e),e!==k&&(e=k,b.R.push(q))}else{for(q=0;q<b.R.length;++q)k=h[b.R[q]],e=k(e);k=e}b.cssText=k;b.l=b.l||b.selector;e="."+d;
+q=b.l.split(",");k=0;for(var O=q.length,L;k<O&&(L=q[k]);k++)q[k]=L.match(g)?L.replace(f,e):e+" "+L;b.selector=q.join(",")}})}function nf(a,b){a=a.b;var c={};if(!S&&a)for(var d=0,e=a[d];d<a.length;e=a[++d]){var f=e,g=b;f.i=new RegExp("\\b"+f.keyframesName+"(?!\\B|-)","g");f.a=f.keyframesName+"-"+g;f.l=f.l||f.selector;f.selector=f.l.replace(f.keyframesName,f.a);c[e.keyframesName]=of(e)}return c}function of(a){return function(b){return b.replace(a.i,a.a)}}
+function pf(a,b){var c=qf,d=qe(a);a.textContent=oe(d,function(a){var d=a.cssText=a.parsedCssText;a.j&&a.j.cssText&&(d=d.replace(be,"").replace(ce,""),a.cssText=hf(c,d,b))})}p.Object.defineProperties(cf.prototype,{a:{configurable:!0,enumerable:!0,get:function(){return"x-scope"}}});var qf=new cf;var rf={},sf=window.customElements;if(sf&&!S){var tf=sf.define;sf.define=function(a,b,c){var d=document.createComment(" Shady DOM styles for "+a+" "),e=document.head;e.insertBefore(d,(U?U.nextSibling:null)||e.firstChild);U=d;rf[a]=d;tf.call(sf,a,b,c)}};function uf(){this.cache={}}uf.prototype.store=function(a,b,c,d){var e=this.cache[a]||[];e.push({u:b,styleElement:c,m:d});100<e.length&&e.shift();this.cache[a]=e};uf.prototype.fetch=function(a,b,c){if(a=this.cache[a])for(var d=a.length-1;0<=d;d--){var e=a[d],f;a:{for(f=0;f<c.length;f++){var g=c[f];if(e.u[g]!==b[g]){f=!1;break a}}f=!0}if(f)return e}};function vf(){}
+function wf(a){for(var b=0;b<a.length;b++){var c=a[b];if(c.target!==document.documentElement&&c.target!==document.head)for(var d=0;d<c.addedNodes.length;d++){var e=c.addedNodes[d];if(e.nodeType===Node.ELEMENT_NODE){var f=e.getRootNode();var g=e;var h=[];g.classList?h=Array.from(g.classList):g instanceof window.SVGElement&&g.hasAttribute("class")&&(h=g.getAttribute("class").split(/\s+/));g=h;h=g.indexOf(W.a);if((g=-1<h?g[h+1]:"")&&f===e.ownerDocument)xe(e,g,!0);else if(f.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&
+(f=f.host))if(f=V(f).is,g===f)for(e=window.ShadyDOM.nativeMethods.querySelectorAll.call(e,":not(."+W.a+")"),f=0;f<e.length;f++)ze(e[f],g);else g&&xe(e,g,!0),xe(e,f)}}}}
+if(!S){var xf=new MutationObserver(wf),yf=function(a){xf.observe(a,{childList:!0,subtree:!0})};if(window.customElements&&!window.customElements.polyfillWrapFlushCallback)yf(document);else{var zf=function(){yf(document.body)};window.HTMLImports?window.HTMLImports.whenReady(zf):requestAnimationFrame(function(){if("loading"===document.readyState){var a=function(){zf();document.removeEventListener("readystatechange",a)};document.addEventListener("readystatechange",a)}else zf()})}vf=function(){wf(xf.takeRecords())}}
+var Af=vf;var Bf={};var Cf=Promise.resolve();function Df(a){if(a=Bf[a])a._applyShimCurrentVersion=a._applyShimCurrentVersion||0,a._applyShimValidatingVersion=a._applyShimValidatingVersion||0,a._applyShimNextVersion=(a._applyShimNextVersion||0)+1}function Ef(a){return a._applyShimCurrentVersion===a._applyShimNextVersion}function Ff(a){a._applyShimValidatingVersion=a._applyShimNextVersion;a.a||(a.a=!0,Cf.then(function(){a._applyShimCurrentVersion=a._applyShimNextVersion;a.a=!1}))};var Gf=null,Hf=window.HTMLImports&&window.HTMLImports.whenReady||null,If;function Jf(a){requestAnimationFrame(function(){Hf?Hf(a):(Gf||(Gf=new Promise(function(a){If=a}),"complete"===document.readyState?If():document.addEventListener("readystatechange",function(){"complete"===document.readyState&&If()})),Gf.then(function(){a&&a()}))})};var Kf=new uf;function Y(){var a=this;this.fa={};this.c=document.documentElement;var b=new Pd;b.rules=[];this.i=$e(this.c,new Ze(b));this.D=!1;this.b=this.a=null;Jf(function(){Lf(a)})}n=Y.prototype;n.na=function(){Af()};n.xa=function(a){return qe(a)};n.Fa=function(a){return oe(a)};
+n.prepareTemplate=function(a,b,c){if(!a.b){a.b=!0;a.name=b;a.extends=c;Bf[b]=a;var d=(d=a.content.querySelector("style"))?d.getAttribute("css-build")||"":"";var e=[];for(var f=a.content.querySelectorAll("style"),g=0;g<f.length;g++){var h=f[g];if(h.hasAttribute("shady-unscoped")){if(!S){var k=h.textContent;ne.has(k)||(ne.add(k),k=h.cloneNode(!0),document.head.appendChild(k));h.parentNode.removeChild(h)}}else e.push(h.textContent),h.parentNode.removeChild(h)}e=e.join("").trim();c={is:b,extends:c,Ka:d};
+S||xe(a.content,b);Lf(this);f=ie.test(e)||he.test(e);ie.lastIndex=0;he.lastIndex=0;e=Qd(e);f&&T&&this.a&&this.a.transformRules(e,b);a._styleAst=e;a.c=d;d=[];T||(d=df(a._styleAst));if(!d.length||T)e=S?a.content:null,b=rf[b],f=Be(c,a._styleAst),b=f.length?se(f,c.is,e,b):void 0,a.ea=b;a.ua=d}};
+function Mf(a){!a.b&&window.ShadyCSS&&window.ShadyCSS.CustomStyleInterface&&(a.b=window.ShadyCSS.CustomStyleInterface,a.b.transformCallback=function(b){a.ka(b)},a.b.validateCallback=function(){requestAnimationFrame(function(){(a.b.enqueued||a.D)&&a.C()})})}function Lf(a){!a.a&&window.ShadyCSS&&window.ShadyCSS.ApplyShim&&(a.a=window.ShadyCSS.ApplyShim,a.a.invalidCallback=Df);Mf(a)}
+n.C=function(){Lf(this);if(this.b){var a=this.b.processStyles();if(this.b.enqueued){if(T)for(var b=0;b<a.length;b++){var c=this.b.getStyleForCustomStyle(a[b]);if(c&&T&&this.a){var d=qe(c);Lf(this);this.a.transformRules(d);c.textContent=oe(d)}}else for(Nf(this,this.c,this.i),b=0;b<a.length;b++)(c=this.b.getStyleForCustomStyle(a[b]))&&pf(c,this.i.A);this.b.enqueued=!1;this.D&&!T&&this.styleDocument()}}};
+n.styleElement=function(a,b){var c=V(a).is,d=X(a);if(!d){var e=V(a);d=e.is;e=e.J;var f=rf[d];d=Bf[d];if(d){var g=d._styleAst;var h=d.ua}d=$e(a,new Ze(g,f,h,e))}a!==this.c&&(this.D=!0);b&&(d.G=d.G||{},Object.assign(d.G,b));if(T){if(d.G){b=d.G;for(var k in b)null===k?a.style.removeProperty(k):a.style.setProperty(k,b[k])}if(((k=Bf[c])||a===this.c)&&k&&k.ea&&!Ef(k)){if(Ef(k)||k._applyShimValidatingVersion!==k._applyShimNextVersion)Lf(this),this.a&&this.a.transformRules(k._styleAst,c),k.ea.textContent=
+Be(a,d.v),Ff(k);S&&(c=a.shadowRoot)&&(c.querySelector("style").textContent=Be(a,d.v));d.v=k._styleAst}}else if(Nf(this,a,d),d.ca&&d.ca.length){c=d;k=V(a).is;d=(b=Kf.fetch(k,c.A,c.ca))?b.styleElement:null;g=c.m;(h=b&&b.m)||(h=this.fa[k]=(this.fa[k]||0)+1,h=k+"-"+h);c.m=h;h=c.m;e=qf;e=d?d.textContent||"":mf(e,a,c.A,h);f=X(a);var l=f.a;l&&!S&&l!==d&&(l._useCount--,0>=l._useCount&&l.parentNode&&l.parentNode.removeChild(l));S?f.a?(f.a.textContent=e,d=f.a):e&&(d=se(e,h,a.shadowRoot,f.b)):d?d.parentNode||
+(bf&&-1<e.indexOf("@media")&&(d.textContent=e),te(d,null,f.b)):e&&(d=se(e,h,null,f.b));d&&(d._useCount=d._useCount||0,f.a!=d&&d._useCount++,f.a=d);h=d;S||(d=c.m,f=e=a.getAttribute("class")||"",g&&(f=e.replace(new RegExp("\\s*x-scope\\s*"+g+"\\s*","g")," ")),f+=(f?" ":"")+"x-scope "+d,e!==f&&ve(a,f));b||Kf.store(k,c.A,h,c.m)}};function Of(a,b){return(b=b.getRootNode().host)?X(b)?b:Of(a,b):a.c}
+function Nf(a,b,c){a=Of(a,b);var d=X(a);a=Object.create(d.A||null);var e=lf(b,c.v);b=jf(d.v,b).u;Object.assign(a,e.za,b,e.Ca);b=c.G;for(var f in b)if((e=b[f])||0===e)a[f]=e;f=qf;b=Object.getOwnPropertyNames(a);for(e=0;e<b.length;e++)d=b[e],a[d]=gf(f,a[d],a);c.A=a}n.styleDocument=function(a){this.styleSubtree(this.c,a)};
+n.styleSubtree=function(a,b){var c=a.shadowRoot;(c||a===this.c)&&this.styleElement(a,b);if(b=c&&(c.children||c.childNodes))for(a=0;a<b.length;a++)this.styleSubtree(b[a]);else if(a=a.children||a.childNodes)for(b=0;b<a.length;b++)this.styleSubtree(a[b])};n.ka=function(a){var b=this,c=qe(a);pe(c,function(a){if(S)We(a);else{var c=W;a.selector=a.parsedSelector;We(a);a.selector=a.l=Fe(c,a,c.c,void 0,void 0)}T&&(Lf(b),b.a&&b.a.transformRule(a))});T?a.textContent=oe(c):this.i.v.rules.push(c)};
+n.getComputedStyleValue=function(a,b){var c;T||(c=(X(a)||X(Of(this,a))).A[b]);return(c=c||window.getComputedStyle(a).getPropertyValue(b))?c.trim():""};n.Ea=function(a,b){var c=a.getRootNode();b=b?b.split(/\s/):[];c=c.host&&c.host.localName;if(!c){var d=a.getAttribute("class");if(d){d=d.split(/\s/);for(var e=0;e<d.length;e++)if(d[e]===W.a){c=d[e+1];break}}}c&&b.push(W.a,c);T||(c=X(a))&&c.m&&b.push(qf.a,c.m);ve(a,b.join(" "))};n.va=function(a){return X(a)};Y.prototype.flush=Y.prototype.na;
+Y.prototype.prepareTemplate=Y.prototype.prepareTemplate;Y.prototype.styleElement=Y.prototype.styleElement;Y.prototype.styleDocument=Y.prototype.styleDocument;Y.prototype.styleSubtree=Y.prototype.styleSubtree;Y.prototype.getComputedStyleValue=Y.prototype.getComputedStyleValue;Y.prototype.setElementClass=Y.prototype.Ea;Y.prototype._styleInfoForNode=Y.prototype.va;Y.prototype.transformCustomStyleForDocument=Y.prototype.ka;Y.prototype.getStyleAst=Y.prototype.xa;Y.prototype.styleAstToString=Y.prototype.Fa;
+Y.prototype.flushCustomStyles=Y.prototype.C;Object.defineProperties(Y.prototype,{nativeShadow:{get:function(){return S}},nativeCss:{get:function(){return T}}});var Z=new Y,Pf,Qf;window.ShadyCSS&&(Pf=window.ShadyCSS.ApplyShim,Qf=window.ShadyCSS.CustomStyleInterface);window.ShadyCSS={ScopingShim:Z,prepareTemplate:function(a,b,c){Z.C();Z.prepareTemplate(a,b,c)},styleSubtree:function(a,b){Z.C();Z.styleSubtree(a,b)},styleElement:function(a){Z.C();Z.styleElement(a)},styleDocument:function(a){Z.C();Z.styleDocument(a)},getComputedStyleValue:function(a,b){return Z.getComputedStyleValue(a,b)},nativeCss:T,nativeShadow:S};Pf&&(window.ShadyCSS.ApplyShim=Pf);
+Qf&&(window.ShadyCSS.CustomStyleInterface=Qf);var Rf=window.document;window.WebComponents=window.WebComponents||{};function Sf(){requestAnimationFrame(function(){window.WebComponents.ready=!0;window.document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))})}function Tf(){Sf();Rf.removeEventListener("readystatechange",Tf)}"loading"!==Rf.readyState?Sf():Rf.addEventListener("readystatechange",Tf);}).call(this);
+
+//# sourceMappingURL=webcomponents-sd-ce.js.map
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-sd-ce.js.map b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-sd-ce.js.map
new file mode 100644
index 00000000000..f65350827a5
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/webcomponentsjs/webcomponents-sd-ce.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["node_modules/@webcomponents/shadydom/src/shady-data.js"," [synthetic:util/global] "," [synthetic:util/defineproperty] "," [synthetic:es6/symbol] "," [synthetic:es6/util/makeiterator] "," [synthetic:es6/util/arrayfromiterator] ","node_modules/@webcomponents/shadydom/src/utils.js","node_modules/@webcomponents/shadydom/src/flush.js","node_modules/@webcomponents/shadydom/src/observe-changes.js","node_modules/@webcomponents/shadydom/src/native-methods.js","node_modules/@webcomponents/shadydom/src/innerHTML.js","node_modules/@webcomponents/shadydom/src/native-tree-walker.js","node_modules/@webcomponents/shadydom/src/native-tree-accessors.js","node_modules/@webcomponents/shadydom/src/native-tree.js","node_modules/@webcomponents/shadydom/src/patch-accessors.js","node_modules/@webcomponents/shadydom/src/attach-shadow.js","node_modules/@webcomponents/shadydom/src/patch-builtins.js","node_modules/@webcomponents/shadydom/src/logical-tree.js","node_modules/@webcomponents/shadydom/src/logical-mutation.js"," [synthetic:es6/util/arrayfromiterable] ","node_modules/@webcomponents/shadydom/src/patch-events.js","node_modules/@webcomponents/shadydom/src/array-splice.js","node_modules/@webcomponents/shadydom/src/shadydom.js","node_modules/@webcomponents/custom-elements/src/Utilities.js","node_modules/@webcomponents/custom-elements/src/CustomElementInternals.js","node_modules/@webcomponents/custom-elements/src/CustomElementState.js","node_modules/@webcomponents/custom-elements/src/DocumentConstructionObserver.js","node_modules/@webcomponents/custom-elements/src/CustomElementRegistry.js","node_modules/@webcomponents/custom-elements/src/Deferred.js","node_modules/@webcomponents/custom-elements/src/Patch/Native.js","node_modules/@webcomponents/custom-elements/src/AlreadyConstructedMarker.js","node_modules/@webcomponents/custom-elements/src/Patch/HTMLElement.js","node_modules/@webcomponents/custom-elements/src/custom-elements.js","node_modules/@webcomponents/custom-elements/src/Patch/Interface/ParentNode.js","node_modules/@webcomponents/custom-elements/src/Patch/Document.js","node_modules/@webcomponents/custom-elements/src/Patch/Node.js","node_modules/@webcomponents/custom-elements/src/Patch/Interface/ChildNode.js","node_modules/@webcomponents/custom-elements/src/Patch/Element.js","node_modules/@webcomponents/custom-elements/src/Patch/DocumentFragment.js","node_modules/@webcomponents/shadycss/src/css-parse.js","node_modules/@webcomponents/shadycss/src/style-settings.js","node_modules/@webcomponents/shadycss/src/common-regex.js","node_modules/@webcomponents/shadycss/src/unscoped-style-handler.js","node_modules/@webcomponents/shadycss/src/style-util.js","node_modules/@webcomponents/shadycss/src/style-transformer.js","node_modules/@webcomponents/shadycss/src/style-info.js","node_modules/@webcomponents/shadycss/src/style-properties.js","node_modules/@webcomponents/shadycss/src/style-placeholder.js","node_modules/@webcomponents/shadycss/src/style-cache.js","node_modules/@webcomponents/shadycss/src/document-watcher.js","node_modules/@webcomponents/shadycss/src/template-map.js","node_modules/@webcomponents/shadycss/src/apply-shim-utils.js","node_modules/@webcomponents/shadycss/src/document-wait.js","node_modules/@webcomponents/shadycss/src/scoping-shim.js","node_modules/@webcomponents/shadycss/src/common-utils.js","node_modules/@webcomponents/shadycss/entrypoints/scoping-shim.js","entrypoints/webcomponents-sd-ce-index.js"],"names":["$jscomp.global","$jscomp.defineProperty","$jscomp.initSymbol","$jscomp.Symbol","$jscomp.SYMBOL_PREFIX","$jscomp.arrayIterator","$jscomp.initSymbolIterator","$jscomp.iteratorPrototype","constructor","ShadyData","publicRoot","root","dirty","flattenedNodes","_prevAssignedSlot","_previouslyAssignedNodes","assignedSlot","assignedNodes","observer","childNodes","nextSibling","previousSibling","lastChild","firstChild","parentNode","ownerShadyRoot","undefined","__insideAccessors","__outsideAccessors","toJSON","ensureShadyDataForNode","node","__shady","shadyDataForNode","settings","window","hasNativeShadowDOM","attachShadow","Element","prototype","getRootNode","Node","desc","Object","getOwnPropertyDescriptor","hasDescriptors","configurable","get","inUse","IS_IE","navigator","userAgent","match","IS_EDGE","useNativeAccessors","isTrackingLogicalChildNodes","nodeData","isShadyRoot","obj","_localName","ownerShadyRootForNode","p","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","extend","target","source","n$","getOwnPropertyNames","i","n","length","pd","defineProperty","extendAll","sources","mixin","twiddle","document","createTextNode","content","queue","observe","MutationObserver","shift","e","textContent","characterData","microtask","callback","push","hasDocumentContains","contains","container","flushList","scheduled","enqueue","flush","didFlush","AsyncObserver","_scheduled","addedNodes","removedNodes","callbacks","Set","schedule","mutations","takeRecords","forEach","cb","observeChildren","sd","add","_callback","_observer","_node","unobserveChildren","handle","delete","size","filterMutations","targetRootNode","map","mutation","mutationInScope","nodes","Array","from","filter","create","value","m","insertBefore","replaceChild","removeChild","setAttribute","removeAttribute","cloneNode","importNode","Document","addEventListener","removeEventListener","windowAddEventListener","Window","windowRemoveEventListener","dispatchEvent","HTMLElement","getElementById","elementQuerySelector","querySelector","fragmentQuerySelector","DocumentFragment","documentQuerySelector","elementQuerySelectorAll","querySelectorAll","fragmentQuerySelectorAll","documentQuerySelectorAll","appendChild","selector","nodeType","ELEMENT_NODE","call","DOCUMENT_NODE","escapeAttrRegExp","escapeDataRegExp","escapeReplace","c","makeSet","arr","set","voidElements","plaintextParents","getInnerHTML","localName","s","c$","l","child","tagName","attrs","attributes","attr","name","replace","TEXT_NODE","data","COMMENT_NODE","console","error","Error","nodeWalker","createTreeWalker","NodeFilter","SHOW_ALL","elementWalker","SHOW_ELEMENT","currentNode","parentElement","firstElementChild","lastElementChild","previousElementSibling","nextElementSibling","children","innerHTML","DOCUMENT_FRAGMENT_NODE","textWalker","SHOW_TEXT","nextNode","nodeValue","nativeProtos","findNodeDescriptor","proto","hasOwnProperty","nodeAccessors","fragmentAccessors","documentAccessors","slice","accessors","nativeTreeAccessors","nativeTreeWalker","clearNode","inertDoc","implementation","createHTMLDocument","nativeIsConnectedAccessors","nativeIsConnected","nativeActiveElementDescriptor","OutsideAccessors","ClassNameAccessor","className","getAttribute","InsideAccessors","item","childNodes.item","index","childElementCount","tc","cn","join","text","nativeAccessors","children.item","containerName","htmlContainer","createElement","ShadowRootAccessor","shadowRoot","ActiveElementAccessor","activeElement","active","host","nativeContains","activeRoot","patchAccessorGroup","descriptors","force","objDesc","warn","patchAccessors","patchShadowRootAccessors","ShadyRoot","__proto__","defineProperties","nodeName","prop","patchOutsideElementAccessors","element","patchInsideElementAccessors","linkNode","ref_node","containerData","ref_nodeData","psd","nsd","recordChildNodes","parent","refData","ownerRoot","slotsAdded","slots","_ensureSlotData","_pendingSlots","_slotList","_slotMap","$jscomp.arrayFromIterator","$jscomp.makeIterator","_asyncRender","resetTo","parentData","hasShadowRootWithSlot","preventNativeInsert","firstComposedNode","nativeMethods","scheduleObserver","preventNativeRemove","removeOwnerShadyRoot","changeSlotContent","_validateSlots","slot","splice","x","indexOf","didRemove","removingInsertionPoint","composed","flattened","_hasInsertionPoint","distributeAttributeChange","oldName","__slotName","_nameForSlot","list","_sortSlots","addedNode","removedNode","documentElement","query","matcher","halter","queryElements","elements","result","scopingShim","deep","ownerDocument","nc","eventWrappersName","Date","now","alwaysComposed","pathComposer","startNode","composedPath","current","startRoot","retarget","refNode","path","refNodePath","ancestor","lastRoot","rootIdx","eventMixin","isTrusted","__composed","type","__composedPath","currentTarget","relatedTarget","__relatedTarget","__relatedTargetComposedPath","stopPropagation","Event","__propagationStopped","stopImmediatePropagation","__immediatePropagationStopped","mixinComposedFlag","Base","klazz","options","event","nonBubblingEventsToRetarget","hasRetargeted","fireHandlers","phase","hs","__handlers","fn","retargetNonBubblingEvent","AT_TARGET","lastFiredRoot","findListener","wrappers","capture","once","passive","savedType","savedListener","savedCapture","savedOnce","savedPassive","savedNode","fnOrObj","optionsOrCapture","handlerType","handleEvent","__shadyTarget","wrapperFn","patchEvent","lastCurrentTargetDesc","eventPhase","BUBBLING_PHASE","CAPTURING_PHASE","bubbles","ret","ael","idx","rel","activateFocusEventOverrides","ev","getPrototypeOf","patchProto","__sourceProto","PatchedEvent","PatchedCustomEvent","CustomEvent","PatchedMouseEvent","MouseEvent","newSplice","addedCount","removed","calcSplices","currentEnd","old","oldEnd","currentStart","oldStart","prefixCount","suffixCount","minLength","Math","min","currentValue","previousValue","index1","index2","count","equals","rowCount","columnCount","distances","j","north","west","edits","EDIT_ADD","EDIT_DELETE","northWest","EDIT_LEAVE","EDIT_UPDATE","reverse","splices","oldIndex","ShadyRootConstructionToken","ancestorList","ancestors","unshift","token","TypeError","SHADYROOT_NAME","_mode","mode","hostData","MODE_CLOSED","rootData","_renderPending","_render","renderRoot","_distribute","slotData","_distributeNodeToSlot","slotParentRoot","slotParentData","_addAssignedToFlattenedNodes","prevAssignedNodes","_fireSlotChange","_compose","composeList","targetNode","distributedNode","d","next","forcedSlot","oldSlot","CATCHALL_NAME","assigned","nestedAssigned","slotNamesToSort","_mapSlots","sort","a","b","listA","listB","nA","nB","getAssignedSlot","windowMixin","bind","nodeMixin","IsConnectedAccessor","isConnected","textMixin","fragmentMixin","useNative","o","slotMixin","flatten","elementMixin","documentMixin","id","nativeBlur","blur","htmlElementMixin","shadowActive","shadowRootMixin","patchBuiltin","ShadyDOM","patch","nativeHTMLElement","Text","HTMLSlotElement","ShadowRoot","reservedTagList","isValidCustomElementName","reserved","has","validForm","test","nativeValue","__CE_isImportDocument","nextSiblingOrAncestorSibling","start","walkDeepDescendantElements","visitedImports","import","__CE_shadowRoot","setPropertyUnchecked","destination","CustomElementInternals","_localNameToDefinition","Map","_constructorToDefinition","_patches","_hasPatches","setDefinition","definition","addPatch","listener","patchTree","__CE_patched","connectTree","custom","__CE_state","connectedCallback","upgradeElement","disconnectTree","disconnectedCallback","patchAndUpgradeTree","upgrade","gatherElements","__CE_hasRegistry","readyState","__CE_documentLoadHandled","clonedVisitedImports","defaultView","localNameToDefinition","constructionStack","pop","failed","__CE_definition","attributeChangedCallback","observedAttributes","oldValue","newValue","namespace","DocumentConstructionObserver","internals","doc","_internals","_document","_handleMutations","childList","subtree","disconnect","Deferred","_resolve","_value","_promise","Promise","resolve","CustomElementRegistry","_elementDefinitionIsRunning","_whenDefinedDeferred","_flushCallback","this._flushCallback","_flushPending","_pendingDefinitions","_documentConstructionObserver","CustomElementRegistry$$module$node_modules$$webcomponents$custom_elements$src$CustomElementRegistry.prototype","?.prototype","define","Function","SyntaxError","getCallback","callbackValue","adoptedCallback","_flush","pendingDefinitions","elementsWithStableDefinitions","elementsWithPendingDefinitions","pendingElements","pendingUpgradableElements","deferred","CustomElementRegistry$$module$node_modules$$webcomponents$custom_elements$src$CustomElementRegistry_prototype$whenDefined","whenDefined","reject","prior","some","polyfillWrapFlushCallback","outer","inner","Document_createElement","Document_createElementNS","createElementNS","Document_importNode","Document_prepend","Document_append","DocumentFragment_prepend","DocumentFragment_append","Node_cloneNode","Node_appendChild","Node_insertBefore","Node_removeChild","Node_replaceChild","Node_textContent","Element_attachShadow","Element_innerHTML","Element_getAttribute","Element_setAttribute","Element_removeAttribute","Element_getAttributeNS","getAttributeNS","Element_setAttributeNS","setAttributeNS","Element_removeAttributeNS","removeAttributeNS","Element_insertAdjacentElement","Element_insertAdjacentHTML","Element_prepend","Element_append","Element_before","Element_after","Element_replaceWith","Element_remove","HTMLElement_innerHTML","HTMLElement_insertAdjacentElement","HTMLElement_insertAdjacentHTML","$jscompDefaultExport","AlreadyConstructedMarker","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_createElement.call","setPrototypeOf","lastIndex","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement","builtIn","appendPrependPatch","builtInMethod","connectedElements","apply","prepend","append","clone","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_importNode.call","NS_HTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_createElementNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_prepend","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Document_append","patch_textContent","baseDescriptor","enumerable","assignedValue","childNodesLength","insertedNodes","nativeResult","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_insertBefore.call","nodeWasConnected","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_appendChild.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_cloneNode.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_removeChild.call","nodeToInsert","nodeToRemove","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_replaceChild.call","nodeToInsertWasConnected","thisIsConnected","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_textContent","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Node_textContent.get","parts","beforeAfterPatch","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_before","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_after","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_replaceWith","wasConnected","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_remove","patch_innerHTML","htmlString","removedElements","patch_insertAdjacentElement","baseMethod","position","insertedElement","patch_insertAdjacentHTML","upgradeNodesInRange","end","toLowerCase","marker","String","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_attachShadow","init","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_attachShadow.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_innerHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_innerHTML.get","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_innerHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_innerHTML.get","isTemplate","rawElement","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_setAttribute.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_getAttribute.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_setAttributeNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_getAttributeNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_removeAttribute.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_removeAttributeNS.call","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_insertAdjacentElement","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_insertAdjacentElement","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.HTMLElement_insertAdjacentHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_insertAdjacentHTML","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_prepend","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.Element_append","priorCustomElements","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.DocumentFragment_prepend","$jscompDefaultExport$$module$node_modules$$webcomponents$custom_elements$src$Patch$Native.DocumentFragment_append","customElements","StyleNode","parse","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.comments","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.port","parseCss","OPEN_BRACE","previous","CLOSE_BRACE","t","substring","trim","ss","_expandUnicodeEscapes","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.multipleSpaces","lastIndexOf","AT_START","MEDIA_START","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.MEDIA_RULE","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.keyframesRule","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.KEYFRAMES_RULE","split","VAR_START","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.MIXIN_RULE","types$$module$node_modules$$webcomponents$shadycss$src$css_parse.STYLE_RULE","r$","r","code","repeat","stringify","preserveProperties","cssText","rules","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.customProp","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.mixinProp","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.mixinApply","RX$$module$node_modules$$webcomponents$shadycss$src$css_parse.varApply","STYLE_RULE","KEYFRAMES_RULE","MEDIA_RULE","MIXIN_RULE","comments","port","customProp","mixinProp","mixinApply","varApply","keyframesRule","multipleSpaces","nativeShadow","nativeCssVariables_","calcCssVariables","CSS","supports","ShadyCSS","nativeCss","nativeCssVariables","VAR_ASSIGN","MIXIN_MATCH","VAR_CONSUMED","ANIMATION_MATCH","MEDIA_MATCH","BRACKETED","styleTextSet","toCssText","forEachRule","rulesForStyle","style","isKeyframesSelector","rule","styleRuleCallback","keyframesRuleCallback","onlyActiveRules","skipRules","matchMedia","applyCss","moniker","contextNode","applyStyle","lastHeadApplyNode","head","compareDocumentPosition","DOCUMENT_POSITION_PRECEDING","processVariableAndFallback","str","level","prefix","suffix","comma","fallback","setElementClassRaw","getIsExtends","typeExtension","is","extends","StyleTransformer","dom","scope","shouldRemoveScope","_transformDom","_content","classList","remove","SCOPE_NAME","CLASS","elementStyles","styleRules","cssBuildType","css","ext","hostScope","_calcHostScope","CSS_CLASS_PREFIX","isScoped","transformedSelector","_transformRuleCss","self","_transformComplexSelector","transformer","p$","COMPLEX_SELECTOR_SEP","_twiddleNthPlus","NTH","inside","stop","isNth","SLOTTED_START","HOST","SIMPLE_SELECTOR_SEP","info","_transformCompoundSelector","combinator","slottedIndex","SLOTTED","_transformHostSelector","_transformSimpleSelector","slotted","SLOTTED_PAREN","paren","DIR_PAREN","before","dir","PSEUDO_PREFIX","HOST_PAREN","SIMPLE_SELECTOR_PREFIX","typeSelector","SELECTOR_NO_MATCH","normalizeRootSelector","ROOT","_transformDocumentSelector","SCOPE_DOC_SELECTOR","$jscomp.global.Object.defineProperties","RegExp","StyleInfo","ast","placeholder","ownStylePropertyNames","overrideStyleProperties","customStyle","scopeSelector","styleProperties","styleInfo","_getStyleRules","method","StyleProperties","decorateStyles","props","keyframes","ruleIndex","decorateRule","propertyInfo","exec","onKeyframesRule","_keyframes","names","properties","collectProperties","hasProperties","assign","any","valueForProperty","property","valueForProperties","propertyValue","colon","pp","propertyDataFromStyles","selectorToMatch","parseInt","key","whenHostOrRootRule","cssBuild","parsedSelector","isRoot","isHost","hostAndRootPropertiesForScope","hostProps","rootProps","_element","transformStyles","hostSelector","hostRx","HOST_PREFIX","rxHostSelector","HOST_SUFFIX","StyleInfo$$module$node_modules$$webcomponents$shadycss$src$style_info.get","keyframeTransforms","_elementKeyframeTransforms","output","input","hasAnimations","keyframeNamesToTransform","keyframe","transform","keyframesRules","keyframesNameRx","transformedKeyframesName","scopeId","_keyframesRuleTransformer","applyCustomStyle","XSCOPE_NAME","placeholderMap","ce","origDefine","wrappedDefine","clazz","placeHolder","createComment","after","StyleCache","cache","store","tagname","styleElement","typeMax","fetch","ownPropertyNames","entry","pn","handler","mxns","mxn","classes","hasAttribute","currentScope","newScope","unscoped","delayedStart","body","requestAnimationFrame","module$node_modules$$webcomponents$shadycss$src$document_watcher.flush","templateMap","promise","invalidate","elementName","template","templateIsValid","startValidatingTemplate","_validating","then","readyPromise","whenReady","resolveFn","documentWait","styleCache","ScopingShim","_scopeCounter","_documentOwner","_documentOwnerStyleInfo","StyleInfo$$module$node_modules$$webcomponents$shadycss$src$style_info.set","_elementsHaveApplied","_customStyleInterface","_applyShim","_ensure","ScopingShim$$module$node_modules$$webcomponents$shadycss$src$scoping_shim.prototype","ScopingShim$$module$node_modules$$webcomponents$shadycss$src$scoping_shim_prototype$flush","getStyleAst","styleAstToString","prepareTemplate","_prepared","styleTextParts","styles","scopingAttribute","newStyle","__cssBuild","_cssBuild","shadowroot","_style","_ownPropertyNames","_ensureCustomStyleInterface","CustomStyleInterface","transformCustomStyleForDocument","flushCustomStyles","_ensureApplyShim","ApplyShim","customStyles","_revalidateCustomStyleApplyShim","_updateProperties","_applyCustomStyles","styleDocument","overrideProps","_isRootOwner","removeProperty","setProperty","cachedStyle","cacheEntry","oldScopeSelector","cachedScopeSelector","applyElementStyle","v","_styleOwnerForNode","owner","ownerStyleInfo","hostAndRootProps","propertiesMatchingHost","propertyData","overrides","reify","styleSubtree","shadowChildren","documentRule","_transformRule","getComputedStyleValue","getComputedStyle","getPropertyValue","setElementClass","classString","scopeName","classAttr","k$","_styleInfoForNode","elementExtends","WebComponents","fire","ready","wait"],"mappings":"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","file":"webcomponents-sd-ce.js","sourcesContent":["/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n\nexport class ShadyData {\n constructor() {\n /** @type {ShadowRoot} */\n this.root = null;\n /** @type {ShadowRoot} */\n this.publicRoot = null;\n this.dirty = false;\n this.observer = null;\n /** @type {Array<Node>} */\n this.assignedNodes = null;\n /** @type {Element} */\n this.assignedSlot = null;\n /** @type {Array<Node>} */\n this._previouslyAssignedNodes = null;\n /** @type {Element} */\n this._prevAssignedSlot = null;\n /** @type {Array<Node>} */\n this.flattenedNodes = null;\n this.ownerShadyRoot = undefined;\n /** @type {Node|undefined} */\n this.parentNode = undefined;\n /** @type {Node|undefined} */\n this.firstChild = undefined;\n /** @type {Node|undefined} */\n this.lastChild = undefined;\n /** @type {Node|undefined} */\n this.previousSibling = undefined;\n /** @type {Node|undefined} */\n this.nextSibling = undefined;\n /** @type {Array<Node>|undefined} */\n this.childNodes = undefined;\n this.__outsideAccessors = false;\n this.__insideAccessors = false;\n }\n\n toJSON() {\n return {};\n }\n}\n\nexport function ensureShadyDataForNode(node) {\n if (!node.__shady) {\n node.__shady = new ShadyData();\n }\n return node.__shady;\n}\n\nexport function shadyDataForNode(node) {\n return node && node.__shady;\n}\n",null,null,null,null,null,"/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nimport {shadyDataForNode} from './shady-data.js';\n\nexport let settings = window['ShadyDOM'] || {};\n\nsettings.hasNativeShadowDOM = Boolean(Element.prototype.attachShadow && Node.prototype.getRootNode);\n\nlet desc = Object.getOwnPropertyDescriptor(Node.prototype, 'firstChild');\n\nsettings.hasDescriptors = Boolean(desc && desc.configurable && desc.get);\nsettings.inUse = settings['force'] || !settings.hasNativeShadowDOM;\n\n// Default to using native accessors (instead of treewalker) only for\n// IE/Edge where they are faster.\nconst IS_IE = navigator.userAgent.match('Trident');\nconst IS_EDGE = navigator.userAgent.match('Edge');\nif (settings.useNativeAccessors === undefined) {\n settings.useNativeAccessors = settings.hasDescriptors && (IS_IE || IS_EDGE);\n}\n\nexport function isTrackingLogicalChildNodes(node) {\n const nodeData = shadyDataForNode(node);\n return (nodeData && nodeData.firstChild !== undefined);\n}\n\nexport function isShadyRoot(obj) {\n return Boolean(obj._localName === 'ShadyRoot');\n}\n\nexport function ownerShadyRootForNode(node) {\n let root = node.getRootNode();\n if (isShadyRoot(root)) {\n return root;\n }\n}\n\nlet p = Element.prototype;\nlet matches = p.matches || p.matchesSelector ||\n p.mozMatchesSelector || p.msMatchesSelector ||\n p.oMatchesSelector || p.webkitMatchesSelector;\n\nexport function matchesSelector(element, selector) {\n return matches.call(element, selector);\n}\n\nfunction copyOwnProperty(name, source, target) {\n let pd = Object.getOwnPropertyDescriptor(source, name);\n if (pd) {\n Object.defineProperty(target, name, pd);\n }\n}\n\nexport function extend(target, source) {\n if (target && source) {\n let n$ = Object.getOwnPropertyNames(source);\n for (let i=0, n; (i<n$.length) && (n=n$[i]); i++) {\n copyOwnProperty(n, source, target);\n }\n }\n return target || source;\n}\n\nexport function extendAll(target, ...sources) {\n for (let i=0; i < sources.length; i++) {\n extend(target, sources[i]);\n }\n return target;\n}\n\nexport function mixin(target, source) {\n for (var i in source) {\n target[i] = source[i];\n }\n return target;\n}\n\nexport function patchPrototype(obj, mixin) {\n let proto = Object.getPrototypeOf(obj);\n if (!proto.hasOwnProperty('__patchProto')) {\n let patchProto = Object.create(proto);\n patchProto.__sourceProto = proto;\n extend(patchProto, mixin);\n proto['__patchProto'] = patchProto;\n }\n // old browsers don't have setPrototypeOf\n obj.__proto__ = proto['__patchProto'];\n}\n\n\nlet twiddle = document.createTextNode('');\nlet content = 0;\nlet queue = [];\nnew MutationObserver(() => {\n while (queue.length) {\n // catch errors in user code...\n try {\n queue.shift()();\n } catch(e) {\n // enqueue another record and throw\n twiddle.textContent = content++;\n throw(e);\n }\n }\n}).observe(twiddle, {characterData: true});\n\n// use MutationObserver to get microtask async timing.\nexport function microtask(callback) {\n queue.push(callback);\n twiddle.textContent = content++;\n}\n\nexport const hasDocumentContains = Boolean(document.contains);\n\nexport function contains(container, node) {\n while (node) {\n if (node == container) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\n\n// render enqueuer/flusher\nlet flushList = [];\nlet scheduled;\nexport function enqueue(callback) {\n if (!scheduled) {\n scheduled = true;\n utils.microtask(flush);\n }\n flushList.push(callback);\n}\n\nexport function flush() {\n scheduled = false;\n let didFlush = Boolean(flushList.length);\n while (flushList.length) {\n flushList.shift()();\n }\n return didFlush;\n}\n\nflush['list'] = flushList;\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {ensureShadyDataForNode} from './shady-data.js';\n\nclass AsyncObserver {\n\n constructor() {\n this._scheduled = false;\n this.addedNodes = [];\n this.removedNodes = [];\n this.callbacks = new Set();\n }\n\n schedule() {\n if (!this._scheduled) {\n this._scheduled = true;\n utils.microtask(() => {\n this.flush();\n });\n }\n }\n\n flush() {\n if (this._scheduled) {\n this._scheduled = false;\n let mutations = this.takeRecords();\n if (mutations.length) {\n this.callbacks.forEach(function(cb) {\n cb(mutations);\n });\n }\n }\n }\n\n takeRecords() {\n if (this.addedNodes.length || this.removedNodes.length) {\n let mutations = [{\n addedNodes: this.addedNodes,\n removedNodes: this.removedNodes\n }];\n this.addedNodes = [];\n this.removedNodes = [];\n return mutations;\n }\n return [];\n }\n\n}\n\n// TODO(sorvell): consider instead polyfilling MutationObserver\n// directly so that users do not have to fork their code.\n// Supporting the entire api may be challenging: e.g. filtering out\n// removed nodes in the wrong scope and seeing non-distributing\n// subtree child mutations.\nexport let observeChildren = function(node, callback) {\n const sd = ensureShadyDataForNode(node);\n if (!sd.observer) {\n sd.observer = new AsyncObserver();\n }\n sd.observer.callbacks.add(callback);\n let observer = sd.observer;\n return {\n _callback: callback,\n _observer: observer,\n _node: node,\n takeRecords() {\n return observer.takeRecords()\n }\n };\n}\n\nexport let unobserveChildren = function(handle) {\n let observer = handle && handle._observer;\n if (observer) {\n observer.callbacks.delete(handle._callback);\n if (!observer.callbacks.size) {\n ensureShadyDataForNode(handle._node).observer = null;\n }\n }\n}\n\nexport function filterMutations(mutations, target) {\n /** @const {Node} */\n const targetRootNode = target.getRootNode();\n return mutations.map(function(mutation) {\n /** @const {boolean} */\n const mutationInScope = (targetRootNode === mutation.target.getRootNode());\n if (mutationInScope && mutation.addedNodes) {\n let nodes = Array.from(mutation.addedNodes).filter(function(n) {\n return (targetRootNode === n.getRootNode());\n });\n if (nodes.length) {\n mutation = Object.create(mutation);\n Object.defineProperty(mutation, 'addedNodes', {\n value: nodes,\n configurable: true\n });\n return mutation;\n }\n } else if (mutationInScope) {\n return mutation;\n }\n }).filter(function(m) { return m});\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nexport let appendChild = Element.prototype.appendChild;\nexport let insertBefore = Element.prototype.insertBefore;\nexport let replaceChild = Element.prototype.replaceChild;\nexport let removeChild = Element.prototype.removeChild;\nexport let setAttribute = Element.prototype.setAttribute;\nexport let removeAttribute = Element.prototype.removeAttribute;\nexport let cloneNode = Element.prototype.cloneNode;\nexport let importNode = Document.prototype.importNode;\nexport let addEventListener = Element.prototype.addEventListener;\nexport let removeEventListener = Element.prototype.removeEventListener;\nexport let windowAddEventListener = Window.prototype.addEventListener;\nexport let windowRemoveEventListener = Window.prototype.removeEventListener;\nexport let dispatchEvent = Element.prototype.dispatchEvent;\nexport let contains = Node.prototype.contains || HTMLElement.prototype.contains;\nexport let getElementById = Document.prototype.getElementById;\nexport let elementQuerySelector = Element.prototype.querySelector;\nexport let fragmentQuerySelector = DocumentFragment.prototype.querySelector;\nexport let documentQuerySelector = Document.prototype.querySelector;\nexport let querySelector = function(selector) {\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n return elementQuerySelector.call(this, selector);\n case Node.DOCUMENT_NODE:\n return documentQuerySelector.call(this, selector);\n default:\n return fragmentQuerySelector.call(this, selector);\n }\n};\nexport let elementQuerySelectorAll = Element.prototype.querySelectorAll;\nexport let fragmentQuerySelectorAll = DocumentFragment.prototype.querySelectorAll;\nexport let documentQuerySelectorAll = Document.prototype.querySelectorAll;\nexport let querySelectorAll = function(selector) {\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n return elementQuerySelectorAll.call(this, selector);\n case Node.DOCUMENT_NODE:\n return documentQuerySelectorAll.call(this, selector);\n default:\n return fragmentQuerySelectorAll.call(this, selector);\n }\n};","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n// Cribbed from ShadowDOM polyfill\n// https://github.com/webcomponents/webcomponentsjs/blob/master/src/ShadowDOM/wrappers/HTMLElement.js#L28\n/////////////////////////////////////////////////////////////////////////////\n// innerHTML and outerHTML\n\n// http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#escapingString\nlet escapeAttrRegExp = /[&\\u00A0\"]/g;\nlet escapeDataRegExp = /[&\\u00A0<>]/g;\n\nfunction escapeReplace(c) {\n switch (c) {\n case '&':\n return '&amp;';\n case '<':\n return '&lt;';\n case '>':\n return '&gt;';\n case '\"':\n return '&quot;';\n case '\\u00A0':\n return '&nbsp;';\n }\n}\n\nfunction escapeAttr(s) {\n return s.replace(escapeAttrRegExp, escapeReplace);\n}\n\nfunction escapeData(s) {\n return s.replace(escapeDataRegExp, escapeReplace);\n}\n\nfunction makeSet(arr) {\n let set = {};\n for (let i = 0; i < arr.length; i++) {\n set[arr[i]] = true;\n }\n return set;\n}\n\n// http://www.whatwg.org/specs/web-apps/current-work/#void-elements\nlet voidElements = makeSet([\n 'area',\n 'base',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]);\n\nlet plaintextParents = makeSet([\n 'style',\n 'script',\n 'xmp',\n 'iframe',\n 'noembed',\n 'noframes',\n 'plaintext',\n 'noscript'\n]);\n\n/**\n * @param {Node} node\n * @param {Node} parentNode\n * @param {Function=} callback\n */\nexport function getOuterHTML(node, parentNode, callback) {\n switch (node.nodeType) {\n case Node.ELEMENT_NODE: {\n let tagName = node.localName;\n let s = '<' + tagName;\n let attrs = node.attributes;\n for (let i = 0, attr; (attr = attrs[i]); i++) {\n s += ' ' + attr.name + '=\"' + escapeAttr(attr.value) + '\"';\n }\n s += '>';\n if (voidElements[tagName]) {\n return s;\n }\n return s + getInnerHTML(node, callback) + '</' + tagName + '>';\n }\n case Node.TEXT_NODE: {\n let data = /** @type {Text} */ (node).data;\n if (parentNode && plaintextParents[parentNode.localName]) {\n return data;\n }\n return escapeData(data);\n }\n case Node.COMMENT_NODE: {\n return '<!--' + /** @type {Comment} */ (node).data + '-->';\n }\n default: {\n window.console.error(node);\n throw new Error('not implemented');\n }\n }\n}\n\n/**\n * @param {Node} node\n * @param {Function=} callback\n */\nexport function getInnerHTML(node, callback) {\n if (node.localName === 'template') {\n node = /** @type {HTMLTemplateElement} */ (node).content;\n }\n let s = '';\n let c$ = callback ? callback(node) : node.childNodes;\n for (let i=0, l=c$.length, child; (i<l) && (child=c$[i]); i++) {\n s += getOuterHTML(child, node, callback);\n }\n return s;\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {getInnerHTML} from './innerHTML.js';\n\nlet nodeWalker = document.createTreeWalker(document, NodeFilter.SHOW_ALL,\n null, false);\n\nlet elementWalker = document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT,\n null, false);\n\nexport function parentNode(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.parentNode();\n}\n\nexport function firstChild(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.firstChild();\n}\n\nexport function lastChild(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.lastChild();\n}\n\nexport function previousSibling(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.previousSibling();\n}\n\nexport function nextSibling(node) {\n nodeWalker.currentNode = node;\n return nodeWalker.nextSibling();\n}\n\nexport function childNodes(node) {\n let nodes = [];\n nodeWalker.currentNode = node;\n let n = nodeWalker.firstChild();\n while (n) {\n nodes.push(n);\n n = nodeWalker.nextSibling();\n }\n return nodes;\n}\n\nexport function parentElement(node) {\n elementWalker.currentNode = node;\n return elementWalker.parentNode();\n}\n\nexport function firstElementChild(node) {\n elementWalker.currentNode = node;\n return elementWalker.firstChild();\n}\n\nexport function lastElementChild(node) {\n elementWalker.currentNode = node;\n return elementWalker.lastChild();\n}\n\nexport function previousElementSibling(node) {\n elementWalker.currentNode = node;\n return elementWalker.previousSibling();\n}\n\nexport function nextElementSibling(node) {\n elementWalker.currentNode = node;\n return elementWalker.nextSibling();\n}\n\nexport function children(node) {\n let nodes = [];\n elementWalker.currentNode = node;\n let n = elementWalker.firstChild();\n while (n) {\n nodes.push(n);\n n = elementWalker.nextSibling();\n }\n return nodes;\n}\n\nexport function innerHTML(node) {\n return getInnerHTML(node, (n) => childNodes(n));\n}\n\nexport function textContent(node) {\n /* eslint-disable no-case-declarations */\n switch (node.nodeType) {\n case Node.ELEMENT_NODE:\n case Node.DOCUMENT_FRAGMENT_NODE:\n let textWalker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT,\n null, false);\n let content = '', n;\n while ( (n = textWalker.nextNode()) ) {\n // TODO(sorvell): can't use textContent since we patch it on Node.prototype!\n // However, should probably patch it only on element.\n content += n.nodeValue;\n }\n return content;\n default:\n return node.nodeValue;\n }\n /* eslint-enable */\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nimport * as utils from './utils.js';\n\nconst hasDescriptors = utils.settings.hasDescriptors;\n\n// Find descriptor on the \"lowest\" native prototype. Safe as these are not\n// overridden and we call these on nodes.\nconst nativeProtos = [Node.prototype, Element.prototype, HTMLElement.prototype];\n// note, avoid Array.find for IE11 compat.\nfunction findNativeProtoWithDescriptor(name) {\n for (let i=0; i < nativeProtos.length; i++) {\n const proto = nativeProtos[i];\n if (proto.hasOwnProperty(name)) {\n return proto;\n }\n }\n}\nfunction findNodeDescriptor(name) {\n const proto = findNativeProtoWithDescriptor(name);\n if (!proto) {\n throw Error(`Could not find descriptor for ${name}`);\n }\n return Object.getOwnPropertyDescriptor(proto, name);\n}\n\nexport const nodeAccessors = hasDescriptors ? {\n parentNode: findNodeDescriptor('parentNode'),\n firstChild: findNodeDescriptor('firstChild'),\n lastChild: findNodeDescriptor('lastChild'),\n previousSibling: findNodeDescriptor('previousSibling'),\n nextSibling: findNodeDescriptor('nextSibling'),\n childNodes: findNodeDescriptor('childNodes'),\n parentElement: findNodeDescriptor('parentElement'),\n previousElementSibling: findNodeDescriptor('previousElementSibling'),\n nextElementSibling: findNodeDescriptor('nextElementSibling'),\n innerHTML: findNodeDescriptor('innerHTML'),\n textContent: findNodeDescriptor('textContent'),\n firstElementChild: findNodeDescriptor('firstElementChild'),\n lastElementChild: findNodeDescriptor('lastElementChild'),\n children: findNodeDescriptor('children'),\n} : {};\n\nexport const fragmentAccessors = hasDescriptors ? {\n firstElementChild: Object.getOwnPropertyDescriptor(\n DocumentFragment.prototype, 'firstElementChild'),\n lastElementChild: Object.getOwnPropertyDescriptor(\n DocumentFragment.prototype, 'lastElementChild'),\n children: Object.getOwnPropertyDescriptor(\n DocumentFragment.prototype, 'children')\n} : {};\n\nexport const documentAccessors = hasDescriptors ? {\n firstElementChild: Object.getOwnPropertyDescriptor(\n Document.prototype, 'firstElementChild'),\n lastElementChild: Object.getOwnPropertyDescriptor(\n Document.prototype, 'lastElementChild'),\n children: Object.getOwnPropertyDescriptor(\n Document.prototype, 'children')\n} : {};\n\nexport function parentNode(node) {\n return nodeAccessors.parentNode.get.call(node);\n}\n\nexport function firstChild(node) {\n return nodeAccessors.firstChild.get.call(node);\n}\n\nexport function lastChild(node) {\n return nodeAccessors.lastChild.get.call(node);\n}\n\nexport function previousSibling(node) {\n return nodeAccessors.previousSibling.get.call(node);\n}\n\nexport function nextSibling(node) {\n return nodeAccessors.nextSibling.get.call(node);\n}\n\nexport function childNodes(node) {\n return Array.prototype.slice.call(nodeAccessors.childNodes.get.call(node));\n}\n\nexport function parentElement(node) {\n return nodeAccessors.parentElement.get.call(node);\n}\n\nexport function previousElementSibling(node) {\n return nodeAccessors.previousElementSibling.get.call(node);\n}\n\nexport function nextElementSibling(node) {\n return nodeAccessors.nextElementSibling.get.call(node);\n}\n\nexport function innerHTML(node) {\n return nodeAccessors.innerHTML.get.call(node);\n}\n\nexport function textContent(node) {\n return nodeAccessors.textContent.get.call(node);\n}\n\nexport function children(node) {\n let children;\n switch (node.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n children = fragmentAccessors.children.get.call(node);\n break;\n case Node.DOCUMENT_NODE:\n children = documentAccessors.children.get.call(node);\n break;\n default:\n children = nodeAccessors.children.get.call(node);\n break;\n }\n return Array.prototype.slice.call(children);\n}\n\nexport function firstElementChild(node) {\n switch (node.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n return fragmentAccessors.firstElementChild.get.call(node);\n case Node.DOCUMENT_NODE:\n return documentAccessors.firstElementChild.get.call(node);\n default:\n return nodeAccessors.firstElementChild.get.call(node);\n }\n}\n\nexport function lastElementChild(node) {\n switch (node.nodeType) {\n case Node.DOCUMENT_FRAGMENT_NODE:\n return fragmentAccessors.lastElementChild.get.call(node);\n case Node.DOCUMENT_NODE:\n return documentAccessors.lastElementChild.get.call(node);\n default:\n return nodeAccessors.lastElementChild.get.call(node);\n }\n}","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as nativeTreeWalker from './native-tree-walker.js';\nimport * as nativeTreeAccessors from './native-tree-accessors.js';\nimport * as utils from './utils.js';\n\nexport const accessors = utils.settings.useNativeAccessors ?\n nativeTreeAccessors : nativeTreeWalker;","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {getInnerHTML} from './innerHTML.js';\nimport {accessors as nativeTree} from './native-tree.js';\nimport {nodeAccessors as nativeAccessors} from './native-tree-accessors.js';\nimport {contains as nativeContains} from './native-methods.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nfunction clearNode(node) {\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n}\n\nconst hasDescriptors = utils.settings.hasDescriptors;\nconst inertDoc = document.implementation.createHTMLDocument('inert');\n\nconst nativeIsConnectedAccessors =\n/** @type {ObjectPropertyDescriptor} */(\n Object.getOwnPropertyDescriptor(Node.prototype, 'isConnected')\n);\n\nconst nativeIsConnected = nativeIsConnectedAccessors && nativeIsConnectedAccessors.get;\n\nconst nativeActiveElementDescriptor =\n /** @type {ObjectPropertyDescriptor} */(\n Object.getOwnPropertyDescriptor(Document.prototype, 'activeElement')\n );\nfunction getDocumentActiveElement() {\n if (nativeActiveElementDescriptor && nativeActiveElementDescriptor.get) {\n return nativeActiveElementDescriptor.get.call(document);\n } else if (!utils.settings.hasDescriptors) {\n return document.activeElement;\n }\n}\n\nfunction activeElementForNode(node) {\n let active = getDocumentActiveElement();\n // In IE11, activeElement might be an empty object if the document is\n // contained in an iframe.\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10998788/\n if (!active || !active.nodeType) {\n return null;\n }\n let isShadyRoot = !!(utils.isShadyRoot(node));\n if (node !== document) {\n // If this node isn't a document or shady root, then it doesn't have\n // an active element.\n if (!isShadyRoot) {\n return null;\n }\n // If this shady root's host is the active element or the active\n // element is not a descendant of the host (in the composed tree),\n // then it doesn't have an active element.\n if (node.host === active ||\n !nativeContains.call(node.host, active)) {\n return null;\n }\n }\n // This node is either the document or a shady root of which the active\n // element is a (composed) descendant of its host; iterate upwards to\n // find the active element's most shallow host within it.\n let activeRoot = utils.ownerShadyRootForNode(active);\n while (activeRoot && activeRoot !== node) {\n active = activeRoot.host;\n activeRoot = utils.ownerShadyRootForNode(active);\n }\n if (node === document) {\n // This node is the document, so activeRoot should be null.\n return activeRoot ? null : active;\n } else {\n // This node is a non-document shady root, and it should be\n // activeRoot.\n return activeRoot === node ? active : null;\n }\n}\n\nlet OutsideAccessors = {\n\n parentElement: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n let l = nodeData && nodeData.parentNode;\n if (l && l.nodeType !== Node.ELEMENT_NODE) {\n l = null;\n }\n return l !== undefined ? l : nativeTree.parentElement(this);\n },\n configurable: true\n },\n\n parentNode: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.parentNode;\n return l !== undefined ? l : nativeTree.parentNode(this);\n },\n configurable: true\n },\n\n nextSibling: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.nextSibling;\n return l !== undefined ? l : nativeTree.nextSibling(this);\n },\n configurable: true\n },\n\n previousSibling: {\n /** @this {Node} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.previousSibling;\n return l !== undefined ? l : nativeTree.previousSibling(this);\n },\n configurable: true\n },\n\n // fragment, element, document\n nextElementSibling: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.nextSibling !== undefined) {\n let n = this.nextSibling;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.nextSibling;\n }\n return n;\n } else {\n return nativeTree.nextElementSibling(this);\n }\n },\n configurable: true\n },\n\n previousElementSibling: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.previousSibling !== undefined) {\n let n = this.previousSibling;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.previousSibling;\n }\n return n;\n } else {\n return nativeTree.previousElementSibling(this);\n }\n },\n configurable: true\n }\n\n};\n\nexport const ClassNameAccessor = {\n className: {\n /**\n * @this {HTMLElement}\n */\n get() {\n return this.getAttribute('class') || '';\n },\n /**\n * @this {HTMLElement}\n */\n set(value) {\n this.setAttribute('class', value);\n },\n configurable: true\n }\n}\n\nexport const IsConnectedAccessor = {\n\n isConnected: {\n /**\n * @this {Node}\n */\n get() {\n if (nativeIsConnected && nativeIsConnected.call(this)) {\n return true;\n }\n if (this.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {\n return false;\n }\n // Fast path for distributed nodes.\n const ownerDocument = this.ownerDocument;\n if (utils.hasDocumentContains) {\n if (nativeContains.call(ownerDocument, this)) {\n return true;\n }\n } else if (ownerDocument.documentElement &&\n nativeContains.call(ownerDocument.documentElement, this)) {\n return true;\n }\n // Slow path for non-distributed nodes.\n let node = this;\n while (node && !(node instanceof Document)) {\n node = node.parentNode || (utils.isShadyRoot(node) ? /** @type {ShadowRoot} */(node).host : undefined);\n }\n return !!(node && node instanceof Document);\n },\n configurable: true\n }\n};\n\nlet InsideAccessors = {\n\n childNodes: {\n /**\n * @this {HTMLElement}\n */\n get() {\n let childNodes;\n if (utils.isTrackingLogicalChildNodes(this)) {\n const nodeData = shadyDataForNode(this);\n if (!nodeData.childNodes) {\n nodeData.childNodes = [];\n for (let n=this.firstChild; n; n=n.nextSibling) {\n nodeData.childNodes.push(n);\n }\n }\n childNodes = nodeData.childNodes;\n } else {\n childNodes = nativeTree.childNodes(this);\n }\n childNodes.item = function(index) {\n return childNodes[index];\n }\n return childNodes;\n },\n configurable: true\n },\n\n childElementCount: {\n /** @this {HTMLElement} */\n get() {\n return this.children.length;\n },\n configurable: true\n },\n\n firstChild: {\n /** @this {HTMLElement} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.firstChild;\n return l !== undefined ? l : nativeTree.firstChild(this);\n },\n configurable: true\n },\n\n lastChild: {\n /** @this {HTMLElement} */\n get() {\n const nodeData = shadyDataForNode(this);\n const l = nodeData && nodeData.lastChild;\n return l !== undefined ? l : nativeTree.lastChild(this);\n },\n configurable: true\n },\n\n textContent: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (utils.isTrackingLogicalChildNodes(this)) {\n let tc = [];\n for (let i = 0, cn = this.childNodes, c; (c = cn[i]); i++) {\n if (c.nodeType !== Node.COMMENT_NODE) {\n tc.push(c.textContent);\n }\n }\n return tc.join('');\n } else {\n return nativeTree.textContent(this);\n }\n },\n /**\n * @this {HTMLElement}\n * @param {string} text\n */\n set(text) {\n if (typeof text === 'undefined' || text === null) {\n text = ''\n }\n switch (this.nodeType) {\n case Node.ELEMENT_NODE:\n case Node.DOCUMENT_FRAGMENT_NODE:\n if (!utils.isTrackingLogicalChildNodes(this) && hasDescriptors) {\n // may be removing a nested slot but fast path if we know we are not.\n const firstChild = this.firstChild;\n if (firstChild != this.lastChild ||\n (firstChild && firstChild.nodeType != Node.TEXT_NODE)) {\n clearNode(this);\n }\n nativeAccessors.textContent.set.call(this, text);\n } else {\n clearNode(this);\n // Document fragments must have no childnodes if setting a blank string\n if (text.length > 0 || this.nodeType === Node.ELEMENT_NODE) {\n this.appendChild(document.createTextNode(text));\n }\n }\n break;\n default:\n // TODO(sorvell): can't do this if patch nodeValue.\n this.nodeValue = text;\n break;\n }\n },\n configurable: true\n },\n\n // fragment, element, document\n firstElementChild: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.firstChild !== undefined) {\n let n = this.firstChild;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.nextSibling;\n }\n return n;\n } else {\n return nativeTree.firstElementChild(this);\n }\n },\n configurable: true\n },\n\n lastElementChild: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n if (nodeData && nodeData.lastChild !== undefined) {\n let n = this.lastChild;\n while (n && n.nodeType !== Node.ELEMENT_NODE) {\n n = n.previousSibling;\n }\n return n;\n } else {\n return nativeTree.lastElementChild(this);\n }\n },\n configurable: true\n },\n\n children: {\n /**\n * @this {HTMLElement}\n */\n get() {\n let children;\n if (utils.isTrackingLogicalChildNodes(this)) {\n children = Array.prototype.filter.call(this.childNodes, function(n) {\n return (n.nodeType === Node.ELEMENT_NODE);\n });\n } else {\n children = nativeTree.children(this);\n }\n children.item = function(index) {\n return children[index];\n }\n return children;\n },\n configurable: true\n },\n\n // element (HTMLElement on IE11)\n innerHTML: {\n /**\n * @this {HTMLElement}\n */\n get() {\n if (utils.isTrackingLogicalChildNodes(this)) {\n const content = this.localName === 'template' ?\n /** @type {HTMLTemplateElement} */(this).content : this;\n return getInnerHTML(content);\n } else {\n return nativeTree.innerHTML(this);\n }\n },\n /**\n * @this {HTMLElement}\n */\n set(text) {\n const content = this.localName === 'template' ?\n /** @type {HTMLTemplateElement} */(this).content : this;\n clearNode(content);\n let containerName = this.localName;\n // avoid creating a template so we don't have to pull nodes form `.content`\n if (!containerName || containerName === 'template') {\n containerName = 'div';\n }\n const htmlContainer = inertDoc.createElement(containerName);\n if (hasDescriptors) {\n nativeAccessors.innerHTML.set.call(htmlContainer, text);\n } else {\n htmlContainer.innerHTML = text;\n }\n while (htmlContainer.firstChild) {\n content.appendChild(htmlContainer.firstChild);\n }\n },\n configurable: true\n }\n\n};\n\n// Note: Can be patched on element prototype on all browsers.\n// Must be patched on instance on browsers that support native Shadow DOM\n// but do not have builtin accessors (old Chrome).\nexport let ShadowRootAccessor = {\n\n shadowRoot: {\n /**\n * @this {HTMLElement}\n */\n get() {\n const nodeData = shadyDataForNode(this);\n return nodeData && nodeData.publicRoot || null;\n },\n configurable: true\n }\n};\n\n// Note: Can be patched on document prototype on browsers with builtin accessors.\n// Must be patched separately on simulated ShadowRoot.\n// Must be patched as `_activeElement` on browsers without builtin accessors.\nexport let ActiveElementAccessor = {\n\n activeElement: {\n /**\n * @this {HTMLElement}\n */\n get() {\n return activeElementForNode(this);\n },\n /**\n * @this {HTMLElement}\n */\n set() {},\n configurable: true\n }\n\n};\n\n// patch a group of descriptors on an object only if it exists or if the `force`\n// argument is true.\n/**\n * @param {!Object} obj\n * @param {!Object} descriptors\n * @param {boolean=} force\n */\nfunction patchAccessorGroup(obj, descriptors, force) {\n for (let p in descriptors) {\n let objDesc = Object.getOwnPropertyDescriptor(obj, p);\n if ((objDesc && objDesc.configurable) ||\n (!objDesc && force)) {\n Object.defineProperty(obj, p, descriptors[p]);\n } else if (force) {\n console.warn('Could not define', p, 'on', obj); // eslint-disable-line no-console\n }\n }\n}\n\n// patch dom accessors on proto where they exist\nexport function patchAccessors(proto) {\n patchAccessorGroup(proto, OutsideAccessors);\n patchAccessorGroup(proto, ClassNameAccessor);\n patchAccessorGroup(proto, InsideAccessors);\n patchAccessorGroup(proto, ActiveElementAccessor);\n}\n\nexport function patchShadowRootAccessors(proto) {\n proto.__proto__ = DocumentFragment.prototype;\n // ensure element descriptors (IE/Edge don't have em)\n patchAccessorGroup(proto, OutsideAccessors, true);\n patchAccessorGroup(proto, InsideAccessors, true);\n patchAccessorGroup(proto, ActiveElementAccessor, true);\n // Ensure native properties are all safely wrapped since ShadowRoot is not an\n // actual DocumentFragment instance.\n Object.defineProperties(proto, {\n nodeType: {\n value: Node.DOCUMENT_FRAGMENT_NODE,\n configurable: true\n },\n nodeName: {\n value: '#document-fragment',\n configurable: true\n },\n nodeValue: {\n value: null,\n configurable: true\n }\n });\n // make undefined\n [\n 'localName',\n 'namespaceURI',\n 'prefix'\n ].forEach((prop) => {\n Object.defineProperty(proto, prop, {\n value: undefined,\n configurable: true\n });\n });\n // defer properties to host\n [\n 'ownerDocument',\n 'baseURI',\n 'isConnected'\n ].forEach((prop) => {\n Object.defineProperty(proto, prop, {\n get() {\n return this.host[prop];\n },\n configurable: true\n });\n });\n}\n\n// ensure an element has patched \"outside\" accessors; no-op when not needed\nexport let patchOutsideElementAccessors = utils.settings.hasDescriptors ?\n function() {} : function(element) {\n const sd = ensureShadyDataForNode(element);\n if (!sd.__outsideAccessors) {\n sd.__outsideAccessors = true;\n patchAccessorGroup(element, OutsideAccessors, true);\n patchAccessorGroup(element, ClassNameAccessor, true);\n }\n }\n\n// ensure an element has patched \"inside\" accessors; no-op when not needed\nexport let patchInsideElementAccessors = utils.settings.hasDescriptors ?\n function() {} : function(element) {\n const sd = ensureShadyDataForNode(element);\n if (!sd.__insideAccessors) {\n patchAccessorGroup(element, InsideAccessors, true);\n patchAccessorGroup(element, ShadowRootAccessor, true);\n }\n }\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {calculateSplices} from './array-splice.js';\nimport * as utils from './utils.js';\nimport {enqueue} from './flush.js';\nimport {recordChildNodes} from './logical-tree.js';\nimport {removeChild, insertBefore, dispatchEvent} from './native-methods.js';\nimport {accessors} from './native-tree.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nconst {parentNode, childNodes} = accessors;\n\n// Do not export this object. It must be passed as the first argument to the\n// ShadyRoot constructor in `attachShadow` to prevent the constructor from\n// throwing. This prevents the user from being able to manually construct a\n// ShadyRoot (i.e. `new ShadowRoot()`).\nconst ShadyRootConstructionToken = {};\n\nconst CATCHALL_NAME = '__catchall';\nconst SHADYROOT_NAME = 'ShadyRoot';\n\nconst MODE_CLOSED = 'closed';\n\nfunction ancestorList(node) {\n let ancestors = [];\n do {\n ancestors.unshift(node);\n } while ((node = node.parentNode));\n return ancestors;\n}\n\n/**\n * @constructor\n * @extends {ShadowRoot}\n */\nexport class ShadyRoot {\n\n constructor(token, host, options) {\n if (token !== ShadyRootConstructionToken) {\n throw new TypeError('Illegal constructor');\n }\n // NOTE: set a fake local name so this element can be\n // distinguished from a DocumentFragment when patching.\n // FF doesn't allow this to be `localName`\n this._localName = SHADYROOT_NAME;\n const c$ = childNodes(host);\n // root <=> host\n this.host = host;\n this._mode = options && options.mode;\n // logical dom setup\n recordChildNodes(host, c$);\n const hostData = shadyDataForNode(host);\n hostData.root = this;\n hostData.publicRoot = this._mode !== MODE_CLOSED ? this : null;\n // setup root\n const rootData = ensureShadyDataForNode(this);\n rootData.firstChild = rootData.lastChild =\n rootData.parentNode = rootData.nextSibling =\n rootData.previousSibling = null;\n rootData.childNodes = [];\n // state flags\n this._renderPending = false;\n this._hasRendered = false;\n // marsalled lazily\n this._slotList = null;\n this._slotMap = null;\n this._pendingSlots = null;\n // fast path initial render: remove existing physical dom.\n for (let i=0, l=c$.length; i < l; i++) {\n removeChild.call(host, c$[i])\n }\n }\n\n // async render\n _asyncRender() {\n if (!this._renderPending) {\n this._renderPending = true;\n enqueue(() => this._render());\n }\n }\n\n // returns the oldest renderPending ancestor root.\n _getRenderRoot() {\n let renderRoot;\n let root = this;\n while (root) {\n if (root._renderPending) {\n renderRoot = root;\n }\n root = root._rendererForHost();\n }\n return renderRoot;\n }\n\n // Returns the shadyRoot `this.host` if `this.host`\n // has children that require distribution.\n _rendererForHost() {\n let root = this.host.getRootNode();\n if (utils.isShadyRoot(root)) {\n let c$ = this.host.childNodes;\n for (let i=0, c; i < c$.length; i++) {\n c = c$[i];\n if (this._isInsertionPoint(c)) {\n return root;\n }\n }\n }\n }\n\n _render() {\n const root = this._getRenderRoot();\n if (root) {\n root['_renderRoot']();\n }\n }\n\n // NOTE: avoid renaming to ease testability.\n ['_renderRoot']() {\n this._renderPending = false;\n if (this._slotList) {\n this._distribute();\n this._compose();\n }\n this._hasRendered = true;\n }\n\n _distribute() {\n this._validateSlots();\n // capture # of previously assigned nodes to help determine if dirty.\n for (let i=0, slot; i < this._slotList.length; i++) {\n slot = this._slotList[i];\n this._clearSlotAssignedNodes(slot);\n }\n // distribute host children.\n for (let n=this.host.firstChild; n; n=n.nextSibling) {\n this._distributeNodeToSlot(n);\n }\n // fallback content, slotchange, and dirty roots\n for (let i=0; i < this._slotList.length; i++) {\n const slot = this._slotList[i];\n const slotData = shadyDataForNode(slot);\n // distribute fallback content\n if (!slotData.assignedNodes.length) {\n for (let n=slot.firstChild; n; n=n.nextSibling) {\n this._distributeNodeToSlot(n, slot);\n }\n }\n const slotParentData = shadyDataForNode(slot.parentNode);\n const slotParentRoot = slotParentData && slotParentData.root;\n if (slotParentRoot && slotParentRoot._hasInsertionPoint()) {\n slotParentRoot['_renderRoot']();\n }\n this._addAssignedToFlattenedNodes(slotData.flattenedNodes,\n slotData.assignedNodes);\n let prevAssignedNodes = slotData._previouslyAssignedNodes;\n if (prevAssignedNodes) {\n for (let i=0; i < prevAssignedNodes.length; i++) {\n shadyDataForNode(prevAssignedNodes[i])._prevAssignedSlot = null;\n }\n slotData._previouslyAssignedNodes = null;\n // dirty if previously less assigned nodes than previously assigned.\n if (prevAssignedNodes.length > slotData.assignedNodes.length) {\n slotData.dirty = true;\n }\n }\n /* Note: A slot is marked dirty whenever a node is newly assigned to it\n or a node is assigned to a different slot (done in `_distributeNodeToSlot`)\n or if the number of nodes assigned to the slot has decreased (done above);\n */\n if (slotData.dirty) {\n slotData.dirty = false;\n this._fireSlotChange(slot);\n }\n }\n }\n\n /**\n * Distributes given `node` to the appropriate slot based on its `slot`\n * attribute. If `forcedSlot` is given, then the node is distributed to the\n * `forcedSlot`.\n * Note: slot to which the node is assigned will be marked dirty for firing\n * `slotchange`.\n * @param {Node} node\n * @param {Node=} forcedSlot\n *\n */\n _distributeNodeToSlot(node, forcedSlot) {\n const nodeData = ensureShadyDataForNode(node);\n let oldSlot = nodeData._prevAssignedSlot;\n nodeData._prevAssignedSlot = null;\n let slot = forcedSlot;\n if (!slot) {\n let name = node.slot || CATCHALL_NAME;\n const list = this._slotMap[name];\n slot = list && list[0];\n }\n if (slot) {\n const slotData = ensureShadyDataForNode(slot);\n slotData.assignedNodes.push(node);\n nodeData.assignedSlot = slot;\n } else {\n nodeData.assignedSlot = undefined;\n }\n if (oldSlot !== nodeData.assignedSlot) {\n if (nodeData.assignedSlot) {\n ensureShadyDataForNode(nodeData.assignedSlot).dirty = true;\n }\n }\n }\n\n /**\n * Clears the assignedNodes tracking data for a given `slot`. Note, the current\n * assigned node data is tracked (via _previouslyAssignedNodes and\n * _prevAssignedSlot) to see if `slotchange` should fire. This data may be out\n * of date at this time because the assigned nodes may have already been\n * distributed to another root. This is ok since this data is only used to\n * track changes.\n * @param {HTMLSlotElement} slot\n */\n _clearSlotAssignedNodes(slot) {\n const slotData = shadyDataForNode(slot);\n let n$ = slotData.assignedNodes;\n slotData.assignedNodes = [];\n slotData.flattenedNodes = [];\n slotData._previouslyAssignedNodes = n$;\n if (n$) {\n for (let i=0; i < n$.length; i++) {\n let n = shadyDataForNode(n$[i]);\n n._prevAssignedSlot = n.assignedSlot;\n // only clear if it was previously set to this slot;\n // this helps ensure that if the node has otherwise been distributed\n // ignore it.\n if (n.assignedSlot === slot) {\n n.assignedSlot = null;\n }\n }\n }\n }\n\n _addAssignedToFlattenedNodes(flattened, assigned) {\n for (let i=0, n; (i<assigned.length) && (n=assigned[i]); i++) {\n if (n.localName == 'slot') {\n const nestedAssigned = shadyDataForNode(n).assignedNodes;\n if (nestedAssigned && nestedAssigned.length) {\n this._addAssignedToFlattenedNodes(flattened, nestedAssigned);\n }\n } else {\n flattened.push(assigned[i]);\n }\n }\n }\n\n _fireSlotChange(slot) {\n // NOTE: cannot bubble correctly here so not setting bubbles: true\n // Safari tech preview does not bubble but chrome does\n // Spec says it bubbles (https://dom.spec.whatwg.org/#mutation-observers)\n dispatchEvent.call(slot, new Event('slotchange'));\n const slotData = shadyDataForNode(slot);\n if (slotData.assignedSlot) {\n this._fireSlotChange(slotData.assignedSlot);\n }\n }\n\n // Reify dom such that it is at its correct rendering position\n // based on logical distribution.\n // NOTE: here we only compose parents of <slot> elements and not the\n // shadowRoot into the host. The latter is performend via a fast path\n // in the `logical-mutation`.insertBefore.\n _compose() {\n const slots = this._slotList;\n let composeList = [];\n for (let i=0; i < slots.length; i++) {\n const parent = slots[i].parentNode;\n /* compose node only if:\n (1) parent does not have a shadowRoot since shadowRoot has already\n composed into the host\n (2) we're not already composing it\n [consider (n^2) but rare better than Set]\n */\n const parentData = shadyDataForNode(parent);\n if (!(parentData && parentData.root) &&\n composeList.indexOf(parent) < 0) {\n composeList.push(parent);\n }\n }\n for (let i=0; i < composeList.length; i++) {\n const node = composeList[i];\n const targetNode = node === this ? this.host : node;\n this._updateChildNodes(targetNode, this._composeNode(node));\n }\n }\n\n // Returns the list of nodes which should be rendered inside `node`.\n _composeNode(node) {\n let children = [];\n let c$ = node.childNodes;\n for (let i = 0; i < c$.length; i++) {\n let child = c$[i];\n // Note: if we see a slot here, the nodes are guaranteed to need to be\n // composed here. This is because if there is redistribution, it has\n // already been handled by this point.\n if (this._isInsertionPoint(child)) {\n let flattenedNodes = shadyDataForNode(child).flattenedNodes;\n for (let j = 0; j < flattenedNodes.length; j++) {\n let distributedNode = flattenedNodes[j];\n children.push(distributedNode);\n }\n } else {\n children.push(child);\n }\n }\n return children;\n }\n\n _isInsertionPoint(node) {\n return node.localName == 'slot';\n }\n\n // Ensures that the rendered node list inside `container` is `children`.\n _updateChildNodes(container, children) {\n let composed = childNodes(container);\n let splices = calculateSplices(children, composed);\n // process removals\n for (let i=0, d=0, s; (i<splices.length) && (s=splices[i]); i++) {\n for (let j=0, n; (j < s.removed.length) && (n=s.removed[j]); j++) {\n // check if the node is still where we expect it is before trying\n // to remove it; this can happen if we move a node and\n // then schedule its previous host for distribution resulting in\n // the node being removed here.\n if (parentNode(n) === container) {\n removeChild.call(container, n);\n }\n // TODO(sorvell): avoid the need for splicing here.\n composed.splice(s.index + d, 1);\n }\n d -= s.addedCount;\n }\n // process adds\n for (let i=0, s, next; (i<splices.length) && (s=splices[i]); i++) { //eslint-disable-line no-redeclare\n next = composed[s.index];\n for (let j=s.index, n; j < s.index + s.addedCount; j++) {\n n = children[j];\n insertBefore.call(container, n, next);\n composed.splice(j, 0, n);\n }\n }\n }\n\n _ensureSlotData() {\n this._pendingSlots = this._pendingSlots || [];\n this._slotList = this._slotList || [];\n this._slotMap = this._slotMap || {};\n }\n\n _addSlots(slots) {\n this._ensureSlotData();\n this._pendingSlots.push(...slots);\n }\n\n _validateSlots() {\n if (this._pendingSlots && this._pendingSlots.length) {\n this._mapSlots(this._pendingSlots);\n this._pendingSlots = [];\n }\n }\n\n /**\n * Adds the given slots. Slots are maintained in an dom-ordered list.\n * In addition a map of name to slot is updated.\n */\n _mapSlots(slots) {\n let slotNamesToSort;\n for (let i=0; i < slots.length; i++) {\n let slot = slots[i];\n // ensure insertionPoints's and their parents have logical dom info.\n // save logical tree info\n // a. for shadyRoot\n // b. for insertion points (fallback)\n // c. for parents of insertion points\n recordChildNodes(slot);\n recordChildNodes(slot.parentNode);\n let name = this._nameForSlot(slot);\n if (this._slotMap[name]) {\n slotNamesToSort = slotNamesToSort || {};\n slotNamesToSort[name] = true;\n this._slotMap[name].push(slot);\n } else {\n this._slotMap[name] = [slot];\n }\n this._slotList.push(slot);\n }\n if (slotNamesToSort) {\n for (let n in slotNamesToSort) {\n this._slotMap[n] = this._sortSlots(this._slotMap[n]);\n }\n }\n }\n\n _nameForSlot(slot) {\n const name = slot['name'] || slot.getAttribute('name') || CATCHALL_NAME;\n slot.__slotName = name;\n return name;\n }\n\n /**\n * Slots are kept in an ordered list. Slots with the same name\n * are sorted here by tree order.\n */\n _sortSlots(slots) {\n // NOTE: Cannot use `compareDocumentPosition` because it's not polyfilled,\n // but the code here could be used to polyfill the preceeding/following info\n // in `compareDocumentPosition`.\n return slots.sort((a, b) => {\n let listA = ancestorList(a);\n let listB = ancestorList(b);\n for (var i=0; i < listA.length; i++) {\n let nA = listA[i];\n let nB = listB[i];\n if (nA !== nB) {\n let c$ = Array.from(nA.parentNode.childNodes);\n return c$.indexOf(nA) - c$.indexOf(nB);\n }\n }\n });\n }\n\n /**\n * Removes from tracked slot data any slots contained within `container` and\n * then updates the tracked data (_slotList and _slotMap).\n * Any removed slots also have their `assignedNodes` removed from comopsed dom.\n */\n _removeContainedSlots(container) {\n if (!this._slotList) {\n return;\n }\n this._validateSlots();\n let didRemove;\n const map = this._slotMap;\n for (let n in map) {\n let slots = map[n];\n for (let i=0; i < slots.length; i++) {\n let slot = slots[i];\n if (utils.contains(container, slot)) {\n slots.splice(i, 1);\n const x = this._slotList.indexOf(slot);\n if (x >= 0) {\n this._slotList.splice(x, 1);\n }\n i--;\n this._removeFlattenedNodes(slot);\n didRemove = true;\n }\n }\n }\n return didRemove;\n }\n\n _updateSlotName(slot) {\n if (!this._slotList) {\n return;\n }\n const oldName = slot.__slotName;\n const name = this._nameForSlot(slot);\n if (name === oldName) {\n return;\n }\n // remove from existing tracking\n let slots = this._slotMap[oldName];\n const i = slots.indexOf(slot);\n if (i >= 0) {\n slots.splice(i, 1);\n }\n // add to new location and sort if nedessary\n let list = this._slotMap[name] || (this._slotMap[name] = []);\n list.push(slot);\n if (list.length > 1) {\n this._slotMap[name] = this._sortSlots(list);\n }\n }\n\n _removeFlattenedNodes(slot) {\n const data = shadyDataForNode(slot);\n let n$ = data.flattenedNodes;\n if (n$) {\n for (let i=0; i<n$.length; i++) {\n let node = n$[i];\n let parent = parentNode(node);\n if (parent) {\n removeChild.call(parent, node);\n }\n }\n }\n data.flattenedNodes = [];\n data.assignedNodes = [];\n }\n\n _hasInsertionPoint() {\n this._validateSlots();\n return Boolean(this._slotList && this._slotList.length);\n }\n}\n\n/**\n Implements a pared down version of ShadowDOM's scoping, which is easy to\n polyfill across browsers.\n*/\nexport function attachShadow(host, options) {\n if (!host) {\n throw 'Must provide a host.';\n }\n if (!options) {\n throw 'Not enough arguments.'\n }\n return new ShadyRoot(ShadyRootConstructionToken, host, options);\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport {flush} from './flush.js';\nimport {dispatchEvent, querySelectorAll} from './native-methods.js';\nimport * as mutation from './logical-mutation.js';\nimport {ActiveElementAccessor, ShadowRootAccessor, patchAccessors, patchShadowRootAccessors, IsConnectedAccessor} from './patch-accessors.js';\nimport {addEventListener, removeEventListener} from './patch-events.js';\nimport {attachShadow, ShadyRoot} from './attach-shadow.js';\nimport {shadyDataForNode} from './shady-data.js';\n\nfunction getAssignedSlot(node) {\n mutation.renderRootNode(node);\n const nodeData = shadyDataForNode(node);\n return nodeData && nodeData.assignedSlot || null;\n}\n\nlet windowMixin = {\n\n // NOTE: ensure these methods are bound to `window` so that `this` is correct\n // when called directly from global context without a receiver; e.g.\n // `addEventListener(...)`.\n addEventListener: addEventListener.bind(window),\n\n removeEventListener: removeEventListener.bind(window)\n\n};\n\nlet nodeMixin = {\n\n addEventListener: addEventListener,\n\n removeEventListener: removeEventListener,\n\n appendChild(node) {\n return mutation.insertBefore(this, node);\n },\n\n insertBefore(node, ref_node) {\n return mutation.insertBefore(this, node, ref_node);\n },\n\n removeChild(node) {\n return mutation.removeChild(this, node);\n },\n\n /**\n * @this {Node}\n */\n replaceChild(node, ref_node) {\n mutation.insertBefore(this, node, ref_node);\n mutation.removeChild(this, ref_node);\n return node;\n },\n\n /**\n * @this {Node}\n */\n cloneNode(deep) {\n return mutation.cloneNode(this, deep);\n },\n\n /**\n * @this {Node}\n */\n getRootNode(options) {\n return mutation.getRootNode(this, options);\n },\n\n contains(node) {\n return utils.contains(this, node);\n },\n\n /**\n * @this {Node}\n */\n dispatchEvent(event) {\n flush();\n return dispatchEvent.call(this, event);\n }\n\n};\n\n// NOTE: we can do this regardless of the browser supporting native accessors\n// since this is always \"new\" in that case.\nObject.defineProperties(nodeMixin, IsConnectedAccessor);\n\n// NOTE: For some reason 'Text' redefines 'assignedSlot'\nlet textMixin = {\n /**\n * @this {Text}\n */\n get assignedSlot() {\n return getAssignedSlot(this);\n }\n};\n\nlet fragmentMixin = {\n\n // TODO(sorvell): consider doing native QSA and filtering results.\n /**\n * @this {DocumentFragment}\n */\n querySelector(selector) {\n // match selector and halt on first result.\n let result = mutation.query(this, function(n) {\n return utils.matchesSelector(n, selector);\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n },\n\n /**\n * @this {DocumentFragment}\n */\n // TODO(sorvell): `useNative` option relies on native querySelectorAll and\n // misses distributed nodes, see\n // https://github.com/webcomponents/shadydom/pull/210#issuecomment-361435503\n querySelectorAll(selector, useNative) {\n if (useNative) {\n const o = Array.prototype.slice.call(querySelectorAll(this, selector));\n const root = this.getRootNode();\n return o.filter(e => e.getRootNode() == root);\n }\n return mutation.query(this, function(n) {\n return utils.matchesSelector(n, selector);\n });\n }\n\n};\n\nlet slotMixin = {\n\n /**\n * @this {HTMLSlotElement}\n */\n assignedNodes(options) {\n if (this.localName === 'slot') {\n mutation.renderRootNode(this);\n const nodeData = shadyDataForNode(this);\n return nodeData ?\n ((options && options.flatten ? nodeData.flattenedNodes :\n nodeData.assignedNodes) || []) :\n [];\n }\n }\n\n};\n\nlet elementMixin = utils.extendAll({\n\n /**\n * @this {HTMLElement}\n */\n setAttribute(name, value) {\n mutation.setAttribute(this, name, value);\n },\n\n /**\n * @this {HTMLElement}\n */\n removeAttribute(name) {\n mutation.removeAttribute(this, name);\n },\n\n /**\n * @this {HTMLElement}\n */\n attachShadow(options) {\n return attachShadow(this, options);\n },\n\n /**\n * @this {HTMLElement}\n */\n get slot() {\n return this.getAttribute('slot');\n },\n\n /**\n * @this {HTMLElement}\n */\n set slot(value) {\n mutation.setAttribute(this, 'slot', value);\n },\n\n /**\n * @this {HTMLElement}\n */\n get assignedSlot() {\n return getAssignedSlot(this);\n }\n\n}, fragmentMixin, slotMixin);\n\nObject.defineProperties(elementMixin, ShadowRootAccessor);\n\nlet documentMixin = utils.extendAll({\n /**\n * @this {Document}\n */\n importNode(node, deep) {\n return mutation.importNode(node, deep);\n },\n\n /**\n * @this {Document}\n */\n getElementById(id) {\n let result = mutation.query(this, function(n) {\n return n.id == id;\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n }\n\n}, fragmentMixin);\n\nObject.defineProperties(documentMixin, {\n '_activeElement': ActiveElementAccessor.activeElement\n});\n\nlet nativeBlur = HTMLElement.prototype.blur;\n\nlet htmlElementMixin = utils.extendAll({\n /**\n * @this {HTMLElement}\n */\n blur() {\n const nodeData = shadyDataForNode(this);\n let root = nodeData && nodeData.root;\n let shadowActive = root && root.activeElement;\n if (shadowActive) {\n shadowActive.blur();\n } else {\n nativeBlur.call(this);\n }\n }\n});\n\nconst shadowRootMixin = {\n addEventListener(type, fn, optionsOrCapture) {\n if (typeof optionsOrCapture !== 'object') {\n optionsOrCapture = {\n capture: Boolean(optionsOrCapture)\n }\n }\n optionsOrCapture.__shadyTarget = this;\n this.host.addEventListener(type, fn, optionsOrCapture);\n },\n\n removeEventListener(type, fn, optionsOrCapture) {\n if (typeof optionsOrCapture !== 'object') {\n optionsOrCapture = {\n capture: Boolean(optionsOrCapture)\n }\n }\n optionsOrCapture.__shadyTarget = this;\n this.host.removeEventListener(type, fn, optionsOrCapture);\n },\n\n getElementById(id) {\n let result = mutation.query(this, function(n) {\n return n.id == id;\n }, function(n) {\n return Boolean(n);\n })[0];\n return result || null;\n }\n}\n\nfunction patchBuiltin(proto, obj) {\n let n$ = Object.getOwnPropertyNames(obj);\n for (let i=0; i < n$.length; i++) {\n let n = n$[i];\n let d = Object.getOwnPropertyDescriptor(obj, n);\n // NOTE: we prefer writing directly here because some browsers\n // have descriptors that are writable but not configurable (e.g.\n // `appendChild` on older browsers)\n if (d.value) {\n proto[n] = d.value;\n } else {\n Object.defineProperty(proto, n, d);\n }\n }\n}\n\n// Apply patches to builtins (e.g. Element.prototype). Some of these patches\n// can be done unconditionally (mostly methods like\n// `Element.prototype.appendChild`) and some can only be done when the browser\n// has proper descriptors on the builtin prototype\n// (e.g. `Element.prototype.firstChild`)`. When descriptors are not available,\n// elements are individually patched when needed (see e.g.\n// `patchInside/OutsideElementAccessors` in `patch-accessors.js`).\nexport function patchBuiltins() {\n let nativeHTMLElement =\n (window['customElements'] && window['customElements']['nativeHTMLElement']) ||\n HTMLElement;\n // These patches can always be done, for all supported browsers.\n patchBuiltin(ShadyRoot.prototype, shadowRootMixin);\n patchBuiltin(window.Node.prototype, nodeMixin);\n patchBuiltin(window.Window.prototype, windowMixin);\n patchBuiltin(window.Text.prototype, textMixin);\n patchBuiltin(window.DocumentFragment.prototype, fragmentMixin);\n patchBuiltin(window.Element.prototype, elementMixin);\n patchBuiltin(window.Document.prototype, documentMixin);\n if (window.HTMLSlotElement) {\n patchBuiltin(window.HTMLSlotElement.prototype, slotMixin);\n }\n patchBuiltin(nativeHTMLElement.prototype, htmlElementMixin);\n // These patches can *only* be done\n // on browsers that have proper property descriptors on builtin prototypes.\n // This includes: IE11, Edge, Chrome >= 4?; Safari >= 10, Firefox\n // On older browsers (Chrome <= 4?, Safari 9), a per element patching\n // strategy is used for patching accessors.\n if (utils.settings.hasDescriptors) {\n patchAccessors(window.Node.prototype);\n patchAccessors(window.Text.prototype);\n patchAccessors(window.DocumentFragment.prototype);\n patchAccessors(window.Element.prototype);\n patchAccessors(nativeHTMLElement.prototype);\n patchAccessors(window.Document.prototype);\n if (window.HTMLSlotElement) {\n patchAccessors(window.HTMLSlotElement.prototype);\n }\n }\n patchShadowRootAccessors(ShadyRoot.prototype);\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport {patchInsideElementAccessors, patchOutsideElementAccessors} from './patch-accessors.js';\nimport {accessors} from './native-tree.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nconst {childNodes} = accessors;\n\nexport function recordInsertBefore(node, container, ref_node) {\n patchInsideElementAccessors(container);\n const containerData = ensureShadyDataForNode(container);\n if (containerData.firstChild !== undefined) {\n containerData.childNodes = null;\n }\n // handle document fragments\n if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n let c$ = node.childNodes;\n for (let i=0; i < c$.length; i++) {\n linkNode(c$[i], container, ref_node);\n }\n // cleanup logical dom in doc fragment.\n const nodeData = ensureShadyDataForNode(node);\n let resetTo = (nodeData.firstChild !== undefined) ? null : undefined;\n nodeData.firstChild = nodeData.lastChild = resetTo;\n nodeData.childNodes = resetTo;\n } else {\n linkNode(node, container, ref_node);\n }\n}\n\nfunction linkNode(node, container, ref_node) {\n patchOutsideElementAccessors(node);\n ref_node = ref_node || null;\n const nodeData = ensureShadyDataForNode(node);\n const containerData = ensureShadyDataForNode(container);\n const ref_nodeData = ref_node ? ensureShadyDataForNode(ref_node) : null;\n // update ref_node.previousSibling <-> node\n nodeData.previousSibling = ref_node ? ref_nodeData.previousSibling :\n container.lastChild;\n let psd = shadyDataForNode(nodeData.previousSibling);\n if (psd) {\n psd.nextSibling = node;\n }\n // update node <-> ref_node\n let nsd = shadyDataForNode(nodeData.nextSibling = ref_node);\n if (nsd) {\n nsd.previousSibling = node;\n }\n // update node <-> container\n nodeData.parentNode = container;\n if (ref_node) {\n if (ref_node === containerData.firstChild) {\n containerData.firstChild = node;\n }\n } else {\n containerData.lastChild = node;\n if (!containerData.firstChild) {\n containerData.firstChild = node;\n }\n }\n // remove caching of childNodes\n containerData.childNodes = null;\n}\n\nexport function recordRemoveChild(node, container) {\n const nodeData = ensureShadyDataForNode(node);\n const containerData = ensureShadyDataForNode(container);\n if (node === containerData.firstChild) {\n containerData.firstChild = nodeData.nextSibling;\n }\n if (node === containerData.lastChild) {\n containerData.lastChild = nodeData.previousSibling;\n }\n let p = nodeData.previousSibling;\n let n = nodeData.nextSibling;\n if (p) {\n ensureShadyDataForNode(p).nextSibling = n;\n }\n if (n) {\n ensureShadyDataForNode(n).previousSibling = p;\n }\n // When an element is removed, logical data is no longer tracked.\n // Explicitly set `undefined` here to indicate this. This is disginguished\n // from `null` which is set if info is null.\n nodeData.parentNode = nodeData.previousSibling =\n nodeData.nextSibling = undefined;\n if (containerData.childNodes !== undefined) {\n // remove caching of childNodes\n containerData.childNodes = null;\n }\n}\n\nexport let recordChildNodes = function(node, nodes) {\n const nodeData = ensureShadyDataForNode(node);\n if (nodeData.firstChild === undefined) {\n const c$ = nodes || childNodes(node);\n nodeData.firstChild = c$[0] || null;\n nodeData.lastChild = c$[c$.length-1] || null;\n patchInsideElementAccessors(node);\n for (let i=0; i<c$.length; i++) {\n const n = c$[i];\n const sd = ensureShadyDataForNode(n);\n sd.parentNode = node;\n sd.nextSibling = c$[i+1] || null;\n sd.previousSibling = c$[i-1] || null;\n patchOutsideElementAccessors(n);\n }\n }\n}","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport * as logicalTree from './logical-tree.js';\nimport * as nativeMethods from './native-methods.js';\nimport {accessors} from './native-tree.js';\nimport {ensureShadyDataForNode, shadyDataForNode} from './shady-data.js';\n\nconst {parentNode} = accessors;\n\n// Patched `insertBefore`. Note that all mutations that add nodes are routed\n// here. When a <slot> is added or a node is added to a host with a shadowRoot\n// with a slot, a standard dom `insert` call is aborted and `_asyncRender`\n// is called on the relevant shadowRoot. In all other cases, a standard dom\n// `insert` can be made, but the location and ref_node may need to be changed.\n/**\n * @param {Node} parent\n * @param {Node} node\n * @param {Node=} ref_node\n */\nexport function insertBefore(parent, node, ref_node) {\n if (node === parent) {\n throw Error(`Failed to execute 'appendChild' on 'Node': The new child element contains the parent.`);\n }\n if (ref_node) {\n const refData = shadyDataForNode(ref_node);\n const p = refData && refData.parentNode;\n if ((p !== undefined && p !== parent) ||\n (p === undefined && parentNode(ref_node) !== parent)) {\n throw Error(`Failed to execute 'insertBefore' on 'Node': The node ` +\n `before which the new node is to be inserted is not a child of this node.`);\n }\n }\n if (ref_node === node) {\n return node;\n }\n // remove from existing location\n if (node.parentNode) {\n // NOTE: avoid node.removeChild as this *can* trigger another patched\n // method (e.g. custom elements) and we want only the shady method to run.\n removeChild(node.parentNode, node);\n }\n // add to new parent\n let preventNativeInsert;\n let ownerRoot;\n let slotsAdded;\n if (!node['__noInsertionPoint']) {\n ownerRoot = utils.ownerShadyRootForNode(parent);\n slotsAdded = ownerRoot && findContainedSlots(node);\n if (slotsAdded) {\n ownerRoot._addSlots(slotsAdded);\n }\n }\n // if a slot is added, must render containing root.\n if (parent.localName === 'slot' || slotsAdded) {\n ownerRoot = ownerRoot || utils.ownerShadyRootForNode(parent);\n if (ownerRoot) {\n ownerRoot._asyncRender();\n }\n }\n if (utils.isTrackingLogicalChildNodes(parent)) {\n logicalTree.recordInsertBefore(node, parent, ref_node);\n // when inserting into a host with a shadowRoot with slot, use\n // `shadowRoot._asyncRender()` via `attach-shadow` module\n const parentData = shadyDataForNode(parent);\n if (hasShadowRootWithSlot(parent)) {\n parentData.root._asyncRender();\n preventNativeInsert = true;\n // when inserting into a host with shadowRoot with NO slot, do nothing\n // as the node should not be added to composed dome anywhere.\n } else if (parentData.root) {\n preventNativeInsert = true;\n }\n }\n if (!preventNativeInsert) {\n // if adding to a shadyRoot, add to host instead\n let container = utils.isShadyRoot(parent) ?\n /** @type {ShadowRoot} */(parent).host : parent;\n // if ref_node, get the ref_node that's actually in composed dom.\n if (ref_node) {\n ref_node = firstComposedNode(ref_node);\n nativeMethods.insertBefore.call(container, node, ref_node);\n } else {\n nativeMethods.appendChild.call(container, node);\n }\n }\n scheduleObserver(parent, node);\n return node;\n}\n\nfunction findContainedSlots(node) {\n let slots;\n if (node.localName === 'slot') {\n slots = [node];\n } else if (node.querySelectorAll) {\n slots = node.querySelectorAll('slot');\n }\n if (slots && slots.length) {\n return slots;\n }\n}\n\n/**\n * Patched `removeChild`. Note that all dom \"removals\" are routed here.\n * Removes the given `node` from the element's `children`.\n * This method also performs dom composition.\n * @param {Node} parent\n * @param {Node} node\n*/\nexport function removeChild(parent, node) {\n if (node.parentNode !== parent) {\n throw Error('The node to be removed is not a child of this node: ' +\n node);\n }\n let preventNativeRemove;\n let ownerRoot = utils.ownerShadyRootForNode(node);\n let removingInsertionPoint;\n const parentData = shadyDataForNode(parent);\n if (utils.isTrackingLogicalChildNodes(parent)) {\n logicalTree.recordRemoveChild(node, parent);\n if (hasShadowRootWithSlot(parent)) {\n parentData.root._asyncRender();\n preventNativeRemove = true;\n }\n }\n removeOwnerShadyRoot(node);\n // if removing slot, must render containing root\n if (ownerRoot) {\n let changeSlotContent = parent && parent.localName === 'slot';\n if (changeSlotContent) {\n preventNativeRemove = true;\n }\n removingInsertionPoint = ownerRoot._removeContainedSlots(node);\n if (removingInsertionPoint || changeSlotContent) {\n ownerRoot._asyncRender();\n }\n }\n if (!preventNativeRemove) {\n // if removing from a shadyRoot, remove form host instead\n let container = utils.isShadyRoot(parent) ?\n /** @type {ShadowRoot} */(parent).host :\n parent;\n // not guaranteed to physically be in container; e.g.\n // (1) if parent has a shadyRoot, element may or may not at distributed\n // location (could be undistributed)\n // (2) if parent is a slot, element may not ben in composed dom\n if (!(parentData.root || node.localName === 'slot') ||\n (container === parentNode(node))) {\n nativeMethods.removeChild.call(container, node);\n }\n }\n scheduleObserver(parent, null, node);\n return node;\n}\n\nfunction removeOwnerShadyRoot(node) {\n // optimization: only reset the tree if node is actually in a root\n if (hasCachedOwnerRoot(node)) {\n let c$ = node.childNodes;\n for (let i=0, l=c$.length, n; (i<l) && (n=c$[i]); i++) {\n removeOwnerShadyRoot(n);\n }\n }\n const nodeData = shadyDataForNode(node);\n if (nodeData) {\n nodeData.ownerShadyRoot = undefined;\n }\n}\n\nfunction hasCachedOwnerRoot(node) {\n const nodeData = shadyDataForNode(node);\n return Boolean(nodeData && nodeData.ownerShadyRoot !== undefined);\n}\n\n/**\n * Finds the first flattened node that is composed in the node's parent.\n * If the given node is a slot, then the first flattened node is returned\n * if it exists, otherwise advance to the node's nextSibling.\n * @param {Node} node within which to find first composed node\n * @returns {Node} first composed node\n */\nfunction firstComposedNode(node) {\n let composed = node;\n if (node && node.localName === 'slot') {\n const nodeData = shadyDataForNode(node);\n const flattened = nodeData && nodeData.flattenedNodes;\n composed = flattened && flattened.length ? flattened[0] :\n firstComposedNode(node.nextSibling);\n }\n return composed;\n}\n\nfunction hasShadowRootWithSlot(node) {\n const nodeData = shadyDataForNode(node);\n let root = nodeData && nodeData.root;\n return (root && root._hasInsertionPoint());\n}\n\n/**\n * Should be called whenever an attribute changes. If the `slot` attribute\n * changes, provokes rendering if necessary. If a `<slot>` element's `name`\n * attribute changes, updates the root's slot map and renders.\n * @param {Node} node\n * @param {string} name\n */\nfunction distributeAttributeChange(node, name) {\n if (name === 'slot') {\n const parent = node.parentNode;\n if (hasShadowRootWithSlot(parent)) {\n shadyDataForNode(parent).root._asyncRender();\n }\n } else if (node.localName === 'slot' && name === 'name') {\n let root = utils.ownerShadyRootForNode(node);\n if (root) {\n root._updateSlotName(node);\n root._asyncRender();\n }\n }\n}\n\n/**\n * @param {Node} node\n * @param {Node=} addedNode\n * @param {Node=} removedNode\n */\nfunction scheduleObserver(node, addedNode, removedNode) {\n const nodeData = shadyDataForNode(node);\n const observer = nodeData && nodeData.observer;\n if (observer) {\n if (addedNode) {\n observer.addedNodes.push(addedNode);\n }\n if (removedNode) {\n observer.removedNodes.push(removedNode);\n }\n observer.schedule();\n }\n}\n\n/**\n * @param {Node} node\n * @param {Object=} options\n */\nexport function getRootNode(node, options) { // eslint-disable-line no-unused-vars\n if (!node || !node.nodeType) {\n return;\n }\n const nodeData = ensureShadyDataForNode(node);\n let root = nodeData.ownerShadyRoot;\n if (root === undefined) {\n if (utils.isShadyRoot(node)) {\n root = node;\n nodeData.ownerShadyRoot = root;\n } else {\n let parent = node.parentNode;\n root = parent ? getRootNode(parent) : node;\n // memo-ize result for performance but only memo-ize\n // result if node is in the document. This avoids a problem where a root\n // can be cached while an element is inside a fragment.\n // If this happens and we cache the result, the value can become stale\n // because for perf we avoid processing the subtree of added fragments.\n if (nativeMethods.contains.call(document.documentElement, node)) {\n nodeData.ownerShadyRoot = root;\n }\n }\n\n }\n return root;\n}\n\n// NOTE: `query` is used primarily for ShadyDOM's querySelector impl,\n// but it's also generally useful to recurse through the element tree\n// and is used by Polymer's styling system.\n/**\n * @param {Node} node\n * @param {Function} matcher\n * @param {Function=} halter\n */\nexport function query(node, matcher, halter) {\n let list = [];\n queryElements(node.childNodes, matcher,\n halter, list);\n return list;\n}\n\nfunction queryElements(elements, matcher, halter, list) {\n for (let i=0, l=elements.length, c; (i<l) && (c=elements[i]); i++) {\n if (c.nodeType === Node.ELEMENT_NODE &&\n queryElement(c, matcher, halter, list)) {\n return true;\n }\n }\n}\n\nfunction queryElement(node, matcher, halter, list) {\n let result = matcher(node);\n if (result) {\n list.push(node);\n }\n if (halter && halter(result)) {\n return result;\n }\n queryElements(node.childNodes, matcher,\n halter, list);\n}\n\nexport function renderRootNode(element) {\n var root = element.getRootNode();\n if (utils.isShadyRoot(root)) {\n root._render();\n }\n}\n\nlet scopingShim = null;\n\nexport function setAttribute(node, attr, value) {\n if (!scopingShim) {\n scopingShim = window['ShadyCSS'] && window['ShadyCSS']['ScopingShim'];\n }\n if (scopingShim && attr === 'class') {\n scopingShim['setElementClass'](node, value);\n } else {\n nativeMethods.setAttribute.call(node, attr, value);\n distributeAttributeChange(node, attr);\n }\n}\n\nexport function removeAttribute(node, attr) {\n nativeMethods.removeAttribute.call(node, attr);\n distributeAttributeChange(node, attr);\n}\n\nexport function cloneNode(node, deep) {\n if (node.localName == 'template') {\n return nativeMethods.cloneNode.call(node, deep);\n } else {\n let n = nativeMethods.cloneNode.call(node, false);\n if (deep) {\n let c$ = node.childNodes;\n for (let i=0, nc; i < c$.length; i++) {\n nc = c$[i].cloneNode(true);\n n.appendChild(nc);\n }\n }\n return n;\n }\n}\n\n// note: Though not technically correct, we fast path `importNode`\n// when called on a node not owned by the main document.\n// This allows, for example, elements that cannot\n// contain custom elements and are therefore not likely to contain shadowRoots\n// to cloned natively. This is a fairly significant performance win.\nexport function importNode(node, deep) {\n if (node.ownerDocument !== document) {\n return nativeMethods.importNode.call(document, node, deep);\n }\n let n = nativeMethods.importNode.call(document, node, false);\n if (deep) {\n let c$ = node.childNodes;\n for (let i=0, nc; i < c$.length; i++) {\n nc = importNode(c$[i], true);\n n.appendChild(nc);\n }\n }\n return n;\n}",null,"/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nimport * as utils from './utils.js';\nimport * as nativeMethods from './native-methods.js';\nimport {shadyDataForNode} from './shady-data.js';\n\n/*\nMake this name unique so it is unlikely to conflict with properties on objects passed to `addEventListener`\nhttps://github.com/webcomponents/shadydom/issues/173\n*/\nconst /** string */ eventWrappersName = `__eventWrappers${Date.now()}`;\n\n// https://github.com/w3c/webcomponents/issues/513#issuecomment-224183937\nlet alwaysComposed = {\n 'blur': true,\n 'focus': true,\n 'focusin': true,\n 'focusout': true,\n 'click': true,\n 'dblclick': true,\n 'mousedown': true,\n 'mouseenter': true,\n 'mouseleave': true,\n 'mousemove': true,\n 'mouseout': true,\n 'mouseover': true,\n 'mouseup': true,\n 'wheel': true,\n 'beforeinput': true,\n 'input': true,\n 'keydown': true,\n 'keyup': true,\n 'compositionstart': true,\n 'compositionupdate': true,\n 'compositionend': true,\n 'touchstart': true,\n 'touchend': true,\n 'touchmove': true,\n 'touchcancel': true,\n 'pointerover': true,\n 'pointerenter': true,\n 'pointerdown': true,\n 'pointermove': true,\n 'pointerup': true,\n 'pointercancel': true,\n 'pointerout': true,\n 'pointerleave': true,\n 'gotpointercapture': true,\n 'lostpointercapture': true,\n 'dragstart': true,\n 'drag': true,\n 'dragenter': true,\n 'dragleave': true,\n 'dragover': true,\n 'drop': true,\n 'dragend': true,\n 'DOMActivate': true,\n 'DOMFocusIn': true,\n 'DOMFocusOut': true,\n 'keypress': true\n};\n\nfunction pathComposer(startNode, composed) {\n let composedPath = [];\n let current = startNode;\n let startRoot = startNode === window ? window : startNode.getRootNode();\n while (current) {\n composedPath.push(current);\n if (current.assignedSlot) {\n current = current.assignedSlot;\n } else if (current.nodeType === Node.DOCUMENT_FRAGMENT_NODE && current.host && (composed || current !== startRoot)) {\n current = current.host;\n } else {\n current = current.parentNode;\n }\n }\n // event composedPath includes window when startNode's ownerRoot is document\n if (composedPath[composedPath.length - 1] === document) {\n composedPath.push(window);\n }\n return composedPath;\n}\n\nfunction retarget(refNode, path) {\n if (!utils.isShadyRoot) {\n return refNode;\n }\n // If ANCESTOR's root is not a shadow root or ANCESTOR's root is BASE's\n // shadow-including inclusive ancestor, return ANCESTOR.\n let refNodePath = pathComposer(refNode, true);\n let p$ = path;\n for (let i=0, ancestor, lastRoot, root, rootIdx; i < p$.length; i++) {\n ancestor = p$[i];\n root = ancestor === window ? window : ancestor.getRootNode();\n if (root !== lastRoot) {\n rootIdx = refNodePath.indexOf(root);\n lastRoot = root;\n }\n if (!utils.isShadyRoot(root) || rootIdx > -1) {\n return ancestor;\n }\n }\n}\n\nlet eventMixin = {\n\n /**\n * @this {Event}\n */\n get composed() {\n // isTrusted may not exist in this browser, so just check if isTrusted is explicitly false\n if (this.isTrusted !== false && this.__composed === undefined) {\n this.__composed = alwaysComposed[this.type];\n }\n return this.__composed || false;\n },\n\n /**\n * @this {Event}\n */\n composedPath() {\n if (!this.__composedPath) {\n this.__composedPath = pathComposer(this['__target'], this.composed);\n }\n return this.__composedPath;\n },\n\n /**\n * @this {Event}\n */\n get target() {\n return retarget(this.currentTarget, this.composedPath());\n },\n\n // http://w3c.github.io/webcomponents/spec/shadow/#event-relatedtarget-retargeting\n /**\n * @this {Event}\n */\n get relatedTarget() {\n if (!this.__relatedTarget) {\n return null;\n }\n if (!this.__relatedTargetComposedPath) {\n this.__relatedTargetComposedPath = pathComposer(this.__relatedTarget, true);\n }\n // find the deepest node in relatedTarget composed path that is in the same root with the currentTarget\n return retarget(this.currentTarget, this.__relatedTargetComposedPath);\n },\n /**\n * @this {Event}\n */\n stopPropagation() {\n Event.prototype.stopPropagation.call(this);\n this.__propagationStopped = true;\n },\n /**\n * @this {Event}\n */\n stopImmediatePropagation() {\n Event.prototype.stopImmediatePropagation.call(this);\n this.__immediatePropagationStopped = true;\n this.__propagationStopped = true;\n }\n\n};\n\nfunction mixinComposedFlag(Base) {\n // NOTE: avoiding use of `class` here so that transpiled output does not\n // try to do `Base.call` with a dom construtor.\n let klazz = function(type, options) {\n let event = new Base(type, options);\n event.__composed = options && Boolean(options['composed']);\n return event;\n }\n // put constructor properties on subclass\n utils.mixin(klazz, Base);\n klazz.prototype = Base.prototype;\n return klazz;\n}\n\nlet nonBubblingEventsToRetarget = {\n 'focus': true,\n 'blur': true\n};\n\n\n/**\n * Check if the event has been retargeted by comparing original `target`, and calculated `target`\n * @param {Event} event\n * @return {boolean} True if the original target and calculated target are the same\n */\nfunction hasRetargeted(event) {\n return event['__target'] !== event.target || event.__relatedTarget !== event.relatedTarget;\n}\n\n/**\n *\n * @param {Event} event\n * @param {Node} node\n * @param {string} phase\n */\nfunction fireHandlers(event, node, phase) {\n let hs = node.__handlers && node.__handlers[event.type] &&\n node.__handlers[event.type][phase];\n if (hs) {\n for (let i = 0, fn; (fn = hs[i]); i++) {\n if (hasRetargeted(event) && event.target === event.relatedTarget) {\n return;\n }\n fn.call(node, event);\n if (event.__immediatePropagationStopped) {\n return;\n }\n }\n }\n}\n\nfunction retargetNonBubblingEvent(e) {\n let path = e.composedPath();\n let node;\n // override `currentTarget` to let patched `target` calculate correctly\n Object.defineProperty(e, 'currentTarget', {\n get: function() {\n return node;\n },\n configurable: true\n });\n for (let i = path.length - 1; i >= 0; i--) {\n node = path[i];\n // capture phase fires all capture handlers\n fireHandlers(e, node, 'capture');\n if (e.__propagationStopped) {\n return;\n }\n }\n\n // set the event phase to `AT_TARGET` as in spec\n Object.defineProperty(e, 'eventPhase', {get() { return Event.AT_TARGET }});\n\n // the event only needs to be fired when owner roots change when iterating the event path\n // keep track of the last seen owner root\n let lastFiredRoot;\n for (let i = 0; i < path.length; i++) {\n node = path[i];\n const nodeData = shadyDataForNode(node);\n const root = nodeData && nodeData.root;\n if (i === 0 || (root && root === lastFiredRoot)) {\n fireHandlers(e, node, 'bubble');\n // don't bother with window, it doesn't have `getRootNode` and will be last in the path anyway\n if (node !== window) {\n lastFiredRoot = node.getRootNode();\n }\n if (e.__propagationStopped) {\n return;\n }\n }\n }\n}\n\nfunction listenerSettingsEqual(savedListener, node, type, capture, once, passive) {\n let {\n node: savedNode,\n type: savedType,\n capture: savedCapture,\n once: savedOnce,\n passive: savedPassive\n } = savedListener;\n return node === savedNode &&\n type === savedType &&\n capture === savedCapture &&\n once === savedOnce &&\n passive === savedPassive;\n}\n\nexport function findListener(wrappers, node, type, capture, once, passive) {\n for (let i = 0; i < wrappers.length; i++) {\n if (listenerSettingsEqual(wrappers[i], node, type, capture, once, passive)) {\n return i;\n }\n }\n return -1;\n}\n\n/**\n * Firefox can throw on accessing eventWrappers inside of `removeEventListener` during a selenium run\n * Try/Catch accessing eventWrappers to work around\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1353074\n */\nfunction getEventWrappers(eventLike) {\n let wrappers = null;\n try {\n wrappers = eventLike[eventWrappersName];\n } catch (e) {} // eslint-disable-line no-empty\n return wrappers;\n}\n\n/**\n * @this {Event}\n */\nexport function addEventListener(type, fnOrObj, optionsOrCapture) {\n if (!fnOrObj) {\n return;\n }\n\n const handlerType = typeof fnOrObj;\n\n // bail if `fnOrObj` is not a function, not an object\n if (handlerType !== 'function' && handlerType !== 'object') {\n return;\n }\n\n // bail if `fnOrObj` is an object without a `handleEvent` method\n if (handlerType === 'object' && (!fnOrObj.handleEvent || typeof fnOrObj.handleEvent !== 'function')) {\n return;\n }\n\n // The callback `fn` might be used for multiple nodes/events. Since we generate\n // a wrapper function, we need to keep track of it when we remove the listener.\n // It's more efficient to store the node/type/options information as Array in\n // `fn` itself rather than the node (we assume that the same callback is used\n // for few nodes at most, whereas a node will likely have many event listeners).\n // NOTE(valdrin) invoking external functions is costly, inline has better perf.\n let capture, once, passive;\n if (optionsOrCapture && typeof optionsOrCapture === 'object') {\n capture = Boolean(optionsOrCapture.capture);\n once = Boolean(optionsOrCapture.once);\n passive = Boolean(optionsOrCapture.passive);\n } else {\n capture = Boolean(optionsOrCapture);\n once = false;\n passive = false;\n }\n // hack to let ShadyRoots have event listeners\n // event listener will be on host, but `currentTarget`\n // will be set to shadyroot for event listener\n let target = (optionsOrCapture && optionsOrCapture.__shadyTarget) || this;\n\n let wrappers = fnOrObj[eventWrappersName];\n if (wrappers) {\n // Stop if the wrapper function has already been created.\n if (findListener(wrappers, target, type, capture, once, passive) > -1) {\n return;\n }\n } else {\n fnOrObj[eventWrappersName] = [];\n }\n\n /**\n * @this {HTMLElement}\n * @param {Event} e\n */\n const wrapperFn = function(e) {\n // Support `once` option.\n if (once) {\n this.removeEventListener(type, fnOrObj, optionsOrCapture);\n }\n if (!e['__target']) {\n patchEvent(e);\n }\n let lastCurrentTargetDesc;\n if (target !== this) {\n // replace `currentTarget` to make `target` and `relatedTarget` correct for inside the shadowroot\n lastCurrentTargetDesc = Object.getOwnPropertyDescriptor(e, 'currentTarget');\n Object.defineProperty(e, 'currentTarget', {get() { return target }, configurable: true});\n }\n // There are two critera that should stop events from firing on this node\n // 1. the event is not composed and the current node is not in the same root as the target\n // 2. when bubbling, if after retargeting, relatedTarget and target point to the same node\n if (e.composed || e.composedPath().indexOf(target) > -1) {\n if (hasRetargeted(e) && e.target === e.relatedTarget) {\n if (e.eventPhase === Event.BUBBLING_PHASE) {\n e.stopImmediatePropagation();\n }\n return;\n }\n // prevent non-bubbling events from triggering bubbling handlers on shadowroot, but only if not in capture phase\n if (e.eventPhase !== Event.CAPTURING_PHASE && !e.bubbles && e.target !== target && !(target instanceof Window)) {\n return;\n }\n let ret = handlerType === 'function' ?\n fnOrObj.call(target, e) :\n (fnOrObj.handleEvent && fnOrObj.handleEvent(e));\n if (target !== this) {\n // replace the \"correct\" `currentTarget`\n if (lastCurrentTargetDesc) {\n Object.defineProperty(e, 'currentTarget', lastCurrentTargetDesc);\n lastCurrentTargetDesc = null;\n } else {\n delete e['currentTarget'];\n }\n }\n return ret;\n }\n };\n // Store the wrapper information.\n fnOrObj[eventWrappersName].push({\n // note: use target here which is either a shadowRoot\n // (when the host element is proxy'ing the event) or this element\n node: target,\n type: type,\n capture: capture,\n once: once,\n passive: passive,\n wrapperFn: wrapperFn\n });\n\n if (nonBubblingEventsToRetarget[type]) {\n this.__handlers = this.__handlers || {};\n this.__handlers[type] = this.__handlers[type] ||\n {'capture': [], 'bubble': []};\n this.__handlers[type][capture ? 'capture' : 'bubble'].push(wrapperFn);\n } else {\n let ael = this instanceof Window ? nativeMethods.windowAddEventListener :\n nativeMethods.addEventListener;\n ael.call(this, type, wrapperFn, optionsOrCapture);\n }\n}\n\n/**\n * @this {Event}\n */\nexport function removeEventListener(type, fnOrObj, optionsOrCapture) {\n if (!fnOrObj) {\n return;\n }\n\n // NOTE(valdrin) invoking external functions is costly, inline has better perf.\n let capture, once, passive;\n if (optionsOrCapture && typeof optionsOrCapture === 'object') {\n capture = Boolean(optionsOrCapture.capture);\n once = Boolean(optionsOrCapture.once);\n passive = Boolean(optionsOrCapture.passive);\n } else {\n capture = Boolean(optionsOrCapture);\n once = false;\n passive = false;\n }\n let target = (optionsOrCapture && optionsOrCapture.__shadyTarget) || this;\n // Search the wrapped function.\n let wrapperFn = undefined;\n let wrappers = getEventWrappers(fnOrObj);\n if (wrappers) {\n let idx = findListener(wrappers, target, type, capture, once, passive);\n if (idx > -1) {\n wrapperFn = wrappers.splice(idx, 1)[0].wrapperFn;\n // Cleanup.\n if (!wrappers.length) {\n fnOrObj[eventWrappersName] = undefined;\n }\n }\n }\n let rel = this instanceof Window ? nativeMethods.windowRemoveEventListener :\n nativeMethods.removeEventListener;\n rel.call(this, type, wrapperFn || fnOrObj, optionsOrCapture);\n if (wrapperFn && nonBubblingEventsToRetarget[type] &&\n this.__handlers && this.__handlers[type]) {\n const arr = this.__handlers[type][capture ? 'capture' : 'bubble'];\n const idx = arr.indexOf(wrapperFn);\n if (idx > -1) {\n arr.splice(idx, 1);\n }\n }\n}\n\nfunction activateFocusEventOverrides() {\n for (let ev in nonBubblingEventsToRetarget) {\n window.addEventListener(ev, function(e) {\n if (!e['__target']) {\n patchEvent(e);\n retargetNonBubblingEvent(e);\n }\n }, true);\n }\n}\n\nfunction patchEvent(event) {\n event['__target'] = event.target;\n event.__relatedTarget = event.relatedTarget;\n // patch event prototype if we can\n if (utils.settings.hasDescriptors) {\n utils.patchPrototype(event, eventMixin);\n // and fallback to patching instance\n } else {\n utils.extend(event, eventMixin);\n }\n}\n\nlet PatchedEvent = mixinComposedFlag(window.Event);\nlet PatchedCustomEvent = mixinComposedFlag(window.CustomEvent);\nlet PatchedMouseEvent = mixinComposedFlag(window.MouseEvent);\n\nexport function patchEvents() {\n window.Event = PatchedEvent;\n window.CustomEvent = PatchedCustomEvent;\n window.MouseEvent = PatchedMouseEvent;\n activateFocusEventOverrides();\n}\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nfunction newSplice(index, removed, addedCount) {\n return {\n index: index,\n removed: removed,\n addedCount: addedCount\n };\n}\n\nconst EDIT_LEAVE = 0;\nconst EDIT_UPDATE = 1;\nconst EDIT_ADD = 2;\nconst EDIT_DELETE = 3;\n\n// Note: This function is *based* on the computation of the Levenshtein\n// \"edit\" distance. The one change is that \"updates\" are treated as two\n// edits - not one. With Array splices, an update is really a delete\n// followed by an add. By retaining this, we optimize for \"keeping\" the\n// maximum array items in the original array. For example:\n//\n// 'xxxx123' -> '123yyyy'\n//\n// With 1-edit updates, the shortest path would be just to update all seven\n// characters. With 2-edit updates, we delete 4, leave 3, and add 4. This\n// leaves the substring '123' intact.\nfunction calcEditDistances(current, currentStart, currentEnd,\n old, oldStart, oldEnd) {\n // \"Deletion\" columns\n let rowCount = oldEnd - oldStart + 1;\n let columnCount = currentEnd - currentStart + 1;\n let distances = new Array(rowCount);\n\n // \"Addition\" rows. Initialize null column.\n for (let i = 0; i < rowCount; i++) {\n distances[i] = new Array(columnCount);\n distances[i][0] = i;\n }\n\n // Initialize null row\n for (let j = 0; j < columnCount; j++)\n distances[0][j] = j;\n\n for (let i = 1; i < rowCount; i++) {\n for (let j = 1; j < columnCount; j++) {\n if (equals(current[currentStart + j - 1], old[oldStart + i - 1]))\n distances[i][j] = distances[i - 1][j - 1];\n else {\n let north = distances[i - 1][j] + 1;\n let west = distances[i][j - 1] + 1;\n distances[i][j] = north < west ? north : west;\n }\n }\n }\n\n return distances;\n}\n\n// This starts at the final weight, and walks \"backward\" by finding\n// the minimum previous weight recursively until the origin of the weight\n// matrix.\nfunction spliceOperationsFromEditDistances(distances) {\n let i = distances.length - 1;\n let j = distances[0].length - 1;\n let current = distances[i][j];\n let edits = [];\n while (i > 0 || j > 0) {\n if (i == 0) {\n edits.push(EDIT_ADD);\n j--;\n continue;\n }\n if (j == 0) {\n edits.push(EDIT_DELETE);\n i--;\n continue;\n }\n let northWest = distances[i - 1][j - 1];\n let west = distances[i - 1][j];\n let north = distances[i][j - 1];\n\n let min;\n if (west < north)\n min = west < northWest ? west : northWest;\n else\n min = north < northWest ? north : northWest;\n\n if (min == northWest) {\n if (northWest == current) {\n edits.push(EDIT_LEAVE);\n } else {\n edits.push(EDIT_UPDATE);\n current = northWest;\n }\n i--;\n j--;\n } else if (min == west) {\n edits.push(EDIT_DELETE);\n i--;\n current = west;\n } else {\n edits.push(EDIT_ADD);\n j--;\n current = north;\n }\n }\n\n edits.reverse();\n return edits;\n}\n\n/**\n * Splice Projection functions:\n *\n * A splice map is a representation of how a previous array of items\n * was transformed into a new array of items. Conceptually it is a list of\n * tuples of\n *\n * <index, removed, addedCount>\n *\n * which are kept in ascending index order of. The tuple represents that at\n * the |index|, |removed| sequence of items were removed, and counting forward\n * from |index|, |addedCount| items were added.\n */\n\n/**\n * Lacking individual splice mutation information, the minimal set of\n * splices can be synthesized given the previous state and final state of an\n * array. The basic approach is to calculate the edit distance matrix and\n * choose the shortest path through it.\n *\n * Complexity: O(l * p)\n * l: The length of the current array\n * p: The length of the old array\n */\nfunction calcSplices(current, currentStart, currentEnd,\n old, oldStart, oldEnd) {\n let prefixCount = 0;\n let suffixCount = 0;\n let splice;\n\n let minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart);\n if (currentStart == 0 && oldStart == 0)\n prefixCount = sharedPrefix(current, old, minLength);\n\n if (currentEnd == current.length && oldEnd == old.length)\n suffixCount = sharedSuffix(current, old, minLength - prefixCount);\n\n currentStart += prefixCount;\n oldStart += prefixCount;\n currentEnd -= suffixCount;\n oldEnd -= suffixCount;\n\n if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0)\n return [];\n\n if (currentStart == currentEnd) {\n splice = newSplice(currentStart, [], 0);\n while (oldStart < oldEnd)\n splice.removed.push(old[oldStart++]);\n\n return [ splice ];\n } else if (oldStart == oldEnd)\n return [ newSplice(currentStart, [], currentEnd - currentStart) ];\n\n let ops = spliceOperationsFromEditDistances(\n calcEditDistances(current, currentStart, currentEnd,\n old, oldStart, oldEnd));\n\n splice = undefined;\n let splices = [];\n let index = currentStart;\n let oldIndex = oldStart;\n for (let i = 0; i < ops.length; i++) {\n switch(ops[i]) {\n case EDIT_LEAVE:\n if (splice) {\n splices.push(splice);\n splice = undefined;\n }\n\n index++;\n oldIndex++;\n break;\n case EDIT_UPDATE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.addedCount++;\n index++;\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n case EDIT_ADD:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.addedCount++;\n index++;\n break;\n case EDIT_DELETE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n }\n }\n\n if (splice) {\n splices.push(splice);\n }\n return splices;\n}\n\nfunction sharedPrefix(current, old, searchLength) {\n for (let i = 0; i < searchLength; i++)\n if (!equals(current[i], old[i]))\n return i;\n return searchLength;\n}\n\nfunction sharedSuffix(current, old, searchLength) {\n let index1 = current.length;\n let index2 = old.length;\n let count = 0;\n while (count < searchLength && equals(current[--index1], old[--index2]))\n count++;\n\n return count;\n}\n\nfunction equals(currentValue, previousValue) {\n return currentValue === previousValue;\n}\n\nexport function calculateSplices(current, previous) {\n return calcSplices(current, 0, current.length, previous, 0,\n previous.length);\n}\n\n","/**\n@license\nCopyright (c) 2016 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n/**\n * Patches elements that interacts with ShadyDOM\n * such that tree traversal and mutation apis act like they would under\n * ShadowDOM.\n *\n * This import enables seemless interaction with ShadyDOM powered\n * custom elements, enabling better interoperation with 3rd party code,\n * libraries, and frameworks that use DOM tree manipulation apis.\n */\n\nimport * as utils from './utils.js';\nimport {flush, enqueue} from './flush.js';\nimport {observeChildren, unobserveChildren, filterMutations} from './observe-changes.js';\nimport * as nativeMethods from './native-methods.js';\nimport {accessors as nativeTree} from './native-tree.js';\nimport {patchBuiltins} from './patch-builtins.js';\nimport {patchInsideElementAccessors, patchOutsideElementAccessors} from './patch-accessors.js';\nimport {patchEvents} from './patch-events.js';\nimport {ShadyRoot} from './attach-shadow.js';\n\nif (utils.settings.inUse) {\n let ShadyDOM = {\n // TODO(sorvell): remove when Polymer does not depend on this.\n 'inUse': utils.settings.inUse,\n // NOTE: old browsers without prototype accessors (very old Chrome\n // and Safari) need manually patched accessors to properly set\n // `innerHTML` and `textContent` when an element is:\n // (1) inside a shadowRoot\n // (2) does not have special (slot) children itself\n // (3) and setting the property needs to provoke distribution (because\n // a nested slot is added/removed)\n 'patch': (node) => {\n patchInsideElementAccessors(node);\n patchOutsideElementAccessors(node);\n return node;\n },\n 'isShadyRoot': utils.isShadyRoot,\n 'enqueue': enqueue,\n 'flush': flush,\n 'settings': utils.settings,\n 'filterMutations': filterMutations,\n 'observeChildren': observeChildren,\n 'unobserveChildren': unobserveChildren,\n 'nativeMethods': nativeMethods,\n 'nativeTree': nativeTree\n };\n\n window['ShadyDOM'] = ShadyDOM;\n\n // Apply patches to events...\n patchEvents();\n // Apply patches to builtins (e.g. Element.prototype) where applicable.\n patchBuiltins();\n\n window.ShadowRoot = ShadyRoot;\n}","const reservedTagList = new Set([\n 'annotation-xml',\n 'color-profile',\n 'font-face',\n 'font-face-src',\n 'font-face-uri',\n 'font-face-format',\n 'font-face-name',\n 'missing-glyph',\n]);\n\n/**\n * @param {string} localName\n * @returns {boolean}\n */\nexport function isValidCustomElementName(localName) {\n const reserved = reservedTagList.has(localName);\n const validForm = /^[a-z][.0-9_a-z]*-[\\-.0-9_a-z]*$/.test(localName);\n return !reserved && validForm;\n}\n\n/**\n * @private\n * @param {!Node} node\n * @return {boolean}\n */\nexport function isConnected(node) {\n // Use `Node#isConnected`, if defined.\n const nativeValue = node.isConnected;\n if (nativeValue !== undefined) {\n return nativeValue;\n }\n\n /** @type {?Node|undefined} */\n let current = node;\n while (current && !(current.__CE_isImportDocument || current instanceof Document)) {\n current = current.parentNode || (window.ShadowRoot && current instanceof ShadowRoot ? current.host : undefined);\n }\n return !!(current && (current.__CE_isImportDocument || current instanceof Document));\n}\n\n/**\n * @param {!Node} root\n * @param {!Node} start\n * @return {?Node}\n */\nfunction nextSiblingOrAncestorSibling(root, start) {\n let node = start;\n while (node && node !== root && !node.nextSibling) {\n node = node.parentNode;\n }\n return (!node || node === root) ? null : node.nextSibling;\n}\n\n/**\n * @param {!Node} root\n * @param {!Node} start\n * @return {?Node}\n */\nfunction nextNode(root, start) {\n return start.firstChild ? start.firstChild : nextSiblingOrAncestorSibling(root, start);\n}\n\n/**\n * @param {!Node} root\n * @param {!function(!Element)} callback\n * @param {!Set<Node>=} visitedImports\n */\nexport function walkDeepDescendantElements(root, callback, visitedImports = new Set()) {\n let node = root;\n while (node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = /** @type {!Element} */(node);\n\n callback(element);\n\n const localName = element.localName;\n if (localName === 'link' && element.getAttribute('rel') === 'import') {\n // If this import (polyfilled or not) has it's root node available,\n // walk it.\n const importNode = /** @type {!Node} */ (element.import);\n if (importNode instanceof Node && !visitedImports.has(importNode)) {\n // Prevent multiple walks of the same import root.\n visitedImports.add(importNode);\n\n for (let child = importNode.firstChild; child; child = child.nextSibling) {\n walkDeepDescendantElements(child, callback, visitedImports);\n }\n }\n\n // Ignore descendants of import links to prevent attempting to walk the\n // elements created by the HTML Imports polyfill that we just walked\n // above.\n node = nextSiblingOrAncestorSibling(root, element);\n continue;\n } else if (localName === 'template') {\n // Ignore descendants of templates. There shouldn't be any descendants\n // because they will be moved into `.content` during construction in\n // browsers that support template but, in case they exist and are still\n // waiting to be moved by a polyfill, they will be ignored.\n node = nextSiblingOrAncestorSibling(root, element);\n continue;\n }\n\n // Walk shadow roots.\n const shadowRoot = element.__CE_shadowRoot;\n if (shadowRoot) {\n for (let child = shadowRoot.firstChild; child; child = child.nextSibling) {\n walkDeepDescendantElements(child, callback, visitedImports);\n }\n }\n }\n\n node = nextNode(root, node);\n }\n}\n\n/**\n * Used to suppress Closure's \"Modifying the prototype is only allowed if the\n * constructor is in the same scope\" warning without using\n * `@suppress {newCheckTypes, duplicate}` because `newCheckTypes` is too broad.\n *\n * @param {!Object} destination\n * @param {string} name\n * @param {*} value\n */\nexport function setPropertyUnchecked(destination, name, value) {\n destination[name] = value;\n}\n","import * as Utilities from './Utilities.js';\nimport CEState from './CustomElementState.js';\n\nexport default class CustomElementInternals {\n constructor() {\n /** @type {!Map<string, !CustomElementDefinition>} */\n this._localNameToDefinition = new Map();\n\n /** @type {!Map<!Function, !CustomElementDefinition>} */\n this._constructorToDefinition = new Map();\n\n /** @type {!Array<!function(!Node)>} */\n this._patches = [];\n\n /** @type {boolean} */\n this._hasPatches = false;\n }\n\n /**\n * @param {string} localName\n * @param {!CustomElementDefinition} definition\n */\n setDefinition(localName, definition) {\n this._localNameToDefinition.set(localName, definition);\n this._constructorToDefinition.set(definition.constructor, definition);\n }\n\n /**\n * @param {string} localName\n * @return {!CustomElementDefinition|undefined}\n */\n localNameToDefinition(localName) {\n return this._localNameToDefinition.get(localName);\n }\n\n /**\n * @param {!Function} constructor\n * @return {!CustomElementDefinition|undefined}\n */\n constructorToDefinition(constructor) {\n return this._constructorToDefinition.get(constructor);\n }\n\n /**\n * @param {!function(!Node)} listener\n */\n addPatch(listener) {\n this._hasPatches = true;\n this._patches.push(listener);\n }\n\n /**\n * @param {!Node} node\n */\n patchTree(node) {\n if (!this._hasPatches) return;\n\n Utilities.walkDeepDescendantElements(node, element => this.patch(element));\n }\n\n /**\n * @param {!Node} node\n */\n patch(node) {\n if (!this._hasPatches) return;\n\n if (node.__CE_patched) return;\n node.__CE_patched = true;\n\n for (let i = 0; i < this._patches.length; i++) {\n this._patches[i](node);\n }\n }\n\n /**\n * @param {!Node} root\n */\n connectTree(root) {\n const elements = [];\n\n Utilities.walkDeepDescendantElements(root, element => elements.push(element));\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (element.__CE_state === CEState.custom) {\n this.connectedCallback(element);\n } else {\n this.upgradeElement(element);\n }\n }\n }\n\n /**\n * @param {!Node} root\n */\n disconnectTree(root) {\n const elements = [];\n\n Utilities.walkDeepDescendantElements(root, element => elements.push(element));\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (element.__CE_state === CEState.custom) {\n this.disconnectedCallback(element);\n }\n }\n }\n\n /**\n * Upgrades all uncustomized custom elements at and below a root node for\n * which there is a definition. When custom element reaction callbacks are\n * assumed to be called synchronously (which, by the current DOM / HTML spec\n * definitions, they are *not*), callbacks for both elements customized\n * synchronously by the parser and elements being upgraded occur in the same\n * relative order.\n *\n * NOTE: This function, when used to simulate the construction of a tree that\n * is already created but not customized (i.e. by the parser), does *not*\n * prevent the element from reading the 'final' (true) state of the tree. For\n * example, the element, during truly synchronous parsing / construction would\n * see that it contains no children as they have not yet been inserted.\n * However, this function does not modify the tree, the element will\n * (incorrectly) have children. Additionally, self-modification restrictions\n * for custom element constructors imposed by the DOM spec are *not* enforced.\n *\n *\n * The following nested list shows the steps extending down from the HTML\n * spec's parsing section that cause elements to be synchronously created and\n * upgraded:\n *\n * The \"in body\" insertion mode:\n * https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n * - Switch on token:\n * .. other cases ..\n * -> Any other start tag\n * - [Insert an HTML element](below) for the token.\n *\n * Insert an HTML element:\n * https://html.spec.whatwg.org/multipage/syntax.html#insert-an-html-element\n * - Insert a foreign element for the token in the HTML namespace:\n * https://html.spec.whatwg.org/multipage/syntax.html#insert-a-foreign-element\n * - Create an element for a token:\n * https://html.spec.whatwg.org/multipage/syntax.html#create-an-element-for-the-token\n * - Will execute script flag is true?\n * - (Element queue pushed to the custom element reactions stack.)\n * - Create an element:\n * https://dom.spec.whatwg.org/#concept-create-element\n * - Sync CE flag is true?\n * - Constructor called.\n * - Self-modification restrictions enforced.\n * - Sync CE flag is false?\n * - (Upgrade reaction enqueued.)\n * - Attributes appended to element.\n * (`attributeChangedCallback` reactions enqueued.)\n * - Will execute script flag is true?\n * - (Element queue popped from the custom element reactions stack.\n * Reactions in the popped stack are invoked.)\n * - (Element queue pushed to the custom element reactions stack.)\n * - Insert the element:\n * https://dom.spec.whatwg.org/#concept-node-insert\n * - Shadow-including descendants are connected. During parsing\n * construction, there are no shadow-*excluding* descendants.\n * However, the constructor may have validly attached a shadow\n * tree to itself and added descendants to that shadow tree.\n * (`connectedCallback` reactions enqueued.)\n * - (Element queue popped from the custom element reactions stack.\n * Reactions in the popped stack are invoked.)\n *\n * @param {!Node} root\n * @param {{\n * visitedImports: (!Set<!Node>|undefined),\n * upgrade: (!function(!Element)|undefined),\n * }=} options\n */\n patchAndUpgradeTree(root, options = {}) {\n const visitedImports = options.visitedImports || new Set();\n const upgrade = options.upgrade || (element => this.upgradeElement(element));\n\n const elements = [];\n\n const gatherElements = element => {\n if (element.localName === 'link' && element.getAttribute('rel') === 'import') {\n // The HTML Imports polyfill sets a descendant element of the link to\n // the `import` property, specifically this is *not* a Document.\n const importNode = /** @type {?Node} */ (element.import);\n\n if (importNode instanceof Node) {\n importNode.__CE_isImportDocument = true;\n // Connected links are associated with the registry.\n importNode.__CE_hasRegistry = true;\n }\n\n if (importNode && importNode.readyState === 'complete') {\n importNode.__CE_documentLoadHandled = true;\n } else {\n // If this link's import root is not available, its contents can't be\n // walked. Wait for 'load' and walk it when it's ready.\n element.addEventListener('load', () => {\n const importNode = /** @type {!Node} */ (element.import);\n\n if (importNode.__CE_documentLoadHandled) return;\n importNode.__CE_documentLoadHandled = true;\n\n // Clone the `visitedImports` set that was populated sync during\n // the `patchAndUpgradeTree` call that caused this 'load' handler to\n // be added. Then, remove *this* link's import node so that we can\n // walk that import again, even if it was partially walked later\n // during the same `patchAndUpgradeTree` call.\n const clonedVisitedImports = new Set(visitedImports);\n clonedVisitedImports.delete(importNode);\n\n this.patchAndUpgradeTree(importNode, {visitedImports: clonedVisitedImports, upgrade});\n });\n }\n } else {\n elements.push(element);\n }\n };\n\n // `walkDeepDescendantElements` populates (and internally checks against)\n // `visitedImports` when traversing a loaded import.\n Utilities.walkDeepDescendantElements(root, gatherElements, visitedImports);\n\n if (this._hasPatches) {\n for (let i = 0; i < elements.length; i++) {\n this.patch(elements[i]);\n }\n }\n\n for (let i = 0; i < elements.length; i++) {\n upgrade(elements[i]);\n }\n }\n\n /**\n * @param {!Element} element\n */\n upgradeElement(element) {\n const currentState = element.__CE_state;\n if (currentState !== undefined) return;\n\n // Prevent elements created in documents without a browsing context from\n // upgrading.\n //\n // https://html.spec.whatwg.org/multipage/custom-elements.html#look-up-a-custom-element-definition\n // \"If document does not have a browsing context, return null.\"\n //\n // https://html.spec.whatwg.org/multipage/window-object.html#dom-document-defaultview\n // \"The defaultView IDL attribute of the Document interface, on getting,\n // must return this Document's browsing context's WindowProxy object, if\n // this Document has an associated browsing context, or null otherwise.\"\n const ownerDocument = element.ownerDocument;\n if (\n !ownerDocument.defaultView &&\n !(ownerDocument.__CE_isImportDocument && ownerDocument.__CE_hasRegistry)\n ) return;\n\n const definition = this.localNameToDefinition(element.localName);\n if (!definition) return;\n\n definition.constructionStack.push(element);\n\n const constructor = definition.constructor;\n try {\n try {\n let result = new (constructor)();\n if (result !== element) {\n throw new Error('The custom element constructor did not produce the element being upgraded.');\n }\n } finally {\n definition.constructionStack.pop();\n }\n } catch (e) {\n element.__CE_state = CEState.failed;\n throw e;\n }\n\n element.__CE_state = CEState.custom;\n element.__CE_definition = definition;\n\n if (definition.attributeChangedCallback) {\n const observedAttributes = definition.observedAttributes;\n for (let i = 0; i < observedAttributes.length; i++) {\n const name = observedAttributes[i];\n const value = element.getAttribute(name);\n if (value !== null) {\n this.attributeChangedCallback(element, name, null, value, null);\n }\n }\n }\n\n if (Utilities.isConnected(element)) {\n this.connectedCallback(element);\n }\n }\n\n /**\n * @param {!Element} element\n */\n connectedCallback(element) {\n const definition = element.__CE_definition;\n if (definition.connectedCallback) {\n definition.connectedCallback.call(element);\n }\n }\n\n /**\n * @param {!Element} element\n */\n disconnectedCallback(element) {\n const definition = element.__CE_definition;\n if (definition.disconnectedCallback) {\n definition.disconnectedCallback.call(element);\n }\n }\n\n /**\n * @param {!Element} element\n * @param {string} name\n * @param {?string} oldValue\n * @param {?string} newValue\n * @param {?string} namespace\n */\n attributeChangedCallback(element, name, oldValue, newValue, namespace) {\n const definition = element.__CE_definition;\n if (\n definition.attributeChangedCallback &&\n definition.observedAttributes.indexOf(name) > -1\n ) {\n definition.attributeChangedCallback.call(element, name, oldValue, newValue, namespace);\n }\n }\n}\n","/**\n * @enum {number}\n */\nconst CustomElementState = {\n custom: 1,\n failed: 2,\n};\n\nexport default CustomElementState;\n","import CustomElementInternals from './CustomElementInternals.js';\n\nexport default class DocumentConstructionObserver {\n constructor(internals, doc) {\n /**\n * @type {!CustomElementInternals}\n */\n this._internals = internals;\n\n /**\n * @type {!Document}\n */\n this._document = doc;\n\n /**\n * @type {MutationObserver|undefined}\n */\n this._observer = undefined;\n\n\n // Simulate tree construction for all currently accessible nodes in the\n // document.\n this._internals.patchAndUpgradeTree(this._document);\n\n if (this._document.readyState === 'loading') {\n this._observer = new MutationObserver(this._handleMutations.bind(this));\n\n // Nodes created by the parser are given to the observer *before* the next\n // task runs. Inline scripts are run in a new task. This means that the\n // observer will be able to handle the newly parsed nodes before the inline\n // script is run.\n this._observer.observe(this._document, {\n childList: true,\n subtree: true,\n });\n }\n }\n\n disconnect() {\n if (this._observer) {\n this._observer.disconnect();\n }\n }\n\n /**\n * @param {!Array<!MutationRecord>} mutations\n */\n _handleMutations(mutations) {\n // Once the document's `readyState` is 'interactive' or 'complete', all new\n // nodes created within that document will be the result of script and\n // should be handled by patching.\n const readyState = this._document.readyState;\n if (readyState === 'interactive' || readyState === 'complete') {\n this.disconnect();\n }\n\n for (let i = 0; i < mutations.length; i++) {\n const addedNodes = mutations[i].addedNodes;\n for (let j = 0; j < addedNodes.length; j++) {\n const node = addedNodes[j];\n this._internals.patchAndUpgradeTree(node);\n }\n }\n }\n}\n","import CustomElementInternals from './CustomElementInternals.js';\nimport DocumentConstructionObserver from './DocumentConstructionObserver.js';\nimport Deferred from './Deferred.js';\nimport * as Utilities from './Utilities.js';\n\n/**\n * @unrestricted\n */\nexport default class CustomElementRegistry {\n\n /**\n * @param {!CustomElementInternals} internals\n */\n constructor(internals) {\n /**\n * @private\n * @type {boolean}\n */\n this._elementDefinitionIsRunning = false;\n\n /**\n * @private\n * @type {!CustomElementInternals}\n */\n this._internals = internals;\n\n /**\n * @private\n * @type {!Map<string, !Deferred<undefined>>}\n */\n this._whenDefinedDeferred = new Map();\n\n /**\n * The default flush callback triggers the document walk synchronously.\n * @private\n * @type {!Function}\n */\n this._flushCallback = fn => fn();\n\n /**\n * @private\n * @type {boolean}\n */\n this._flushPending = false;\n\n /**\n * @private\n * @type {!Array<!CustomElementDefinition>}\n */\n this._pendingDefinitions = [];\n\n /**\n * @private\n * @type {!DocumentConstructionObserver}\n */\n this._documentConstructionObserver = new DocumentConstructionObserver(internals, document);\n }\n\n /**\n * @param {string} localName\n * @param {!Function} constructor\n */\n define(localName, constructor) {\n if (!(constructor instanceof Function)) {\n throw new TypeError('Custom element constructors must be functions.');\n }\n\n if (!Utilities.isValidCustomElementName(localName)) {\n throw new SyntaxError(`The element name '${localName}' is not valid.`);\n }\n\n if (this._internals.localNameToDefinition(localName)) {\n throw new Error(`A custom element with name '${localName}' has already been defined.`);\n }\n\n if (this._elementDefinitionIsRunning) {\n throw new Error('A custom element is already being defined.');\n }\n this._elementDefinitionIsRunning = true;\n\n let connectedCallback;\n let disconnectedCallback;\n let adoptedCallback;\n let attributeChangedCallback;\n let observedAttributes;\n try {\n /** @type {!Object} */\n const prototype = constructor.prototype;\n if (!(prototype instanceof Object)) {\n throw new TypeError('The custom element constructor\\'s prototype is not an object.');\n }\n\n function getCallback(name) {\n const callbackValue = prototype[name];\n if (callbackValue !== undefined && !(callbackValue instanceof Function)) {\n throw new Error(`The '${name}' callback must be a function.`);\n }\n return callbackValue;\n }\n\n connectedCallback = getCallback('connectedCallback');\n disconnectedCallback = getCallback('disconnectedCallback');\n adoptedCallback = getCallback('adoptedCallback');\n attributeChangedCallback = getCallback('attributeChangedCallback');\n observedAttributes = constructor['observedAttributes'] || [];\n } catch (e) {\n return;\n } finally {\n this._elementDefinitionIsRunning = false;\n }\n\n const definition = {\n localName,\n constructor,\n connectedCallback,\n disconnectedCallback,\n adoptedCallback,\n attributeChangedCallback,\n observedAttributes,\n constructionStack: [],\n };\n\n this._internals.setDefinition(localName, definition);\n this._pendingDefinitions.push(definition);\n\n // If we've already called the flush callback and it hasn't called back yet,\n // don't call it again.\n if (!this._flushPending) {\n this._flushPending = true;\n this._flushCallback(() => this._flush());\n }\n }\n\n upgrade(element) {\n this._internals.patchAndUpgradeTree(element);\n }\n\n _flush() {\n // If no new definitions were defined, don't attempt to flush. This could\n // happen if a flush callback keeps the function it is given and calls it\n // multiple times.\n if (this._flushPending === false) return;\n this._flushPending = false;\n\n const pendingDefinitions = this._pendingDefinitions;\n\n /**\n * Unupgraded elements with definitions that were defined *before* the last\n * flush, in document order.\n * @type {!Array<!Element>}\n */\n const elementsWithStableDefinitions = [];\n\n /**\n * A map from `localName`s of definitions that were defined *after* the last\n * flush to unupgraded elements matching that definition, in document order.\n * @type {!Map<string, !Array<!Element>>}\n */\n const elementsWithPendingDefinitions = new Map();\n for (let i = 0; i < pendingDefinitions.length; i++) {\n elementsWithPendingDefinitions.set(pendingDefinitions[i].localName, []);\n }\n\n this._internals.patchAndUpgradeTree(document, {\n upgrade: element => {\n // Ignore the element if it has already upgraded or failed to upgrade.\n if (element.__CE_state !== undefined) return;\n\n const localName = element.localName;\n\n // If there is an applicable pending definition for the element, add the\n // element to the list of elements to be upgraded with that definition.\n const pendingElements = elementsWithPendingDefinitions.get(localName);\n if (pendingElements) {\n pendingElements.push(element);\n // If there is *any other* applicable definition for the element, add it\n // to the list of elements with stable definitions that need to be upgraded.\n } else if (this._internals.localNameToDefinition(localName)) {\n elementsWithStableDefinitions.push(element);\n }\n },\n });\n\n // Upgrade elements with 'stable' definitions first.\n for (let i = 0; i < elementsWithStableDefinitions.length; i++) {\n this._internals.upgradeElement(elementsWithStableDefinitions[i]);\n }\n\n // Upgrade elements with 'pending' definitions in the order they were defined.\n while (pendingDefinitions.length > 0) {\n const definition = pendingDefinitions.shift();\n const localName = definition.localName;\n\n // Attempt to upgrade all applicable elements.\n const pendingUpgradableElements = elementsWithPendingDefinitions.get(definition.localName);\n for (let i = 0; i < pendingUpgradableElements.length; i++) {\n this._internals.upgradeElement(pendingUpgradableElements[i]);\n }\n\n // Resolve any promises created by `whenDefined` for the definition.\n const deferred = this._whenDefinedDeferred.get(localName);\n if (deferred) {\n deferred.resolve(undefined);\n }\n }\n }\n\n /**\n * @param {string} localName\n * @return {Function|undefined}\n */\n get(localName) {\n const definition = this._internals.localNameToDefinition(localName);\n if (definition) {\n return definition.constructor;\n }\n\n return undefined;\n }\n\n /**\n * @param {string} localName\n * @return {!Promise<undefined>}\n */\n whenDefined(localName) {\n if (!Utilities.isValidCustomElementName(localName)) {\n return Promise.reject(new SyntaxError(`'${localName}' is not a valid custom element name.`));\n }\n\n const prior = this._whenDefinedDeferred.get(localName);\n if (prior) {\n return prior.toPromise();\n }\n\n const deferred = new Deferred();\n this._whenDefinedDeferred.set(localName, deferred);\n\n const definition = this._internals.localNameToDefinition(localName);\n // Resolve immediately only if the given local name has a definition *and*\n // the full document walk to upgrade elements with that local name has\n // already happened.\n if (definition && !this._pendingDefinitions.some(d => d.localName === localName)) {\n deferred.resolve(undefined);\n }\n\n return deferred.toPromise();\n }\n\n polyfillWrapFlushCallback(outer) {\n this._documentConstructionObserver.disconnect();\n const inner = this._flushCallback;\n this._flushCallback = flush => outer(() => inner(flush));\n }\n}\n\n// Closure compiler exports.\nwindow['CustomElementRegistry'] = CustomElementRegistry;\nCustomElementRegistry.prototype['define'] = CustomElementRegistry.prototype.define;\nCustomElementRegistry.prototype['upgrade'] = CustomElementRegistry.prototype.upgrade;\nCustomElementRegistry.prototype['get'] = CustomElementRegistry.prototype.get;\nCustomElementRegistry.prototype['whenDefined'] = CustomElementRegistry.prototype.whenDefined;\nCustomElementRegistry.prototype['polyfillWrapFlushCallback'] = CustomElementRegistry.prototype.polyfillWrapFlushCallback;\n","/**\n * @template T\n */\nexport default class Deferred {\n constructor() {\n /**\n * @private\n * @type {T|undefined}\n */\n this._value = undefined;\n\n /**\n * @private\n * @type {Function|undefined}\n */\n this._resolve = undefined;\n\n /**\n * @private\n * @type {!Promise<T>}\n */\n this._promise = new Promise(resolve => {\n this._resolve = resolve;\n\n if (this._value) {\n resolve(this._value);\n }\n });\n }\n\n /**\n * @param {T} value\n */\n resolve(value) {\n if (this._value) {\n throw new Error('Already resolved.');\n }\n\n this._value = value;\n\n if (this._resolve) {\n this._resolve(value);\n }\n }\n\n /**\n * @return {!Promise<T>}\n */\n toPromise() {\n return this._promise;\n }\n}\n","export default {\n Document_createElement: window.Document.prototype.createElement,\n Document_createElementNS: window.Document.prototype.createElementNS,\n Document_importNode: window.Document.prototype.importNode,\n Document_prepend: window.Document.prototype['prepend'],\n Document_append: window.Document.prototype['append'],\n DocumentFragment_prepend: window.DocumentFragment.prototype['prepend'],\n DocumentFragment_append: window.DocumentFragment.prototype['append'],\n Node_cloneNode: window.Node.prototype.cloneNode,\n Node_appendChild: window.Node.prototype.appendChild,\n Node_insertBefore: window.Node.prototype.insertBefore,\n Node_removeChild: window.Node.prototype.removeChild,\n Node_replaceChild: window.Node.prototype.replaceChild,\n Node_textContent: Object.getOwnPropertyDescriptor(window.Node.prototype, 'textContent'),\n Element_attachShadow: window.Element.prototype['attachShadow'],\n Element_innerHTML: Object.getOwnPropertyDescriptor(window.Element.prototype, 'innerHTML'),\n Element_getAttribute: window.Element.prototype.getAttribute,\n Element_setAttribute: window.Element.prototype.setAttribute,\n Element_removeAttribute: window.Element.prototype.removeAttribute,\n Element_getAttributeNS: window.Element.prototype.getAttributeNS,\n Element_setAttributeNS: window.Element.prototype.setAttributeNS,\n Element_removeAttributeNS: window.Element.prototype.removeAttributeNS,\n Element_insertAdjacentElement: window.Element.prototype['insertAdjacentElement'],\n Element_insertAdjacentHTML: window.Element.prototype['insertAdjacentHTML'],\n Element_prepend: window.Element.prototype['prepend'],\n Element_append: window.Element.prototype['append'],\n Element_before: window.Element.prototype['before'],\n Element_after: window.Element.prototype['after'],\n Element_replaceWith: window.Element.prototype['replaceWith'],\n Element_remove: window.Element.prototype['remove'],\n HTMLElement: window.HTMLElement,\n HTMLElement_innerHTML: Object.getOwnPropertyDescriptor(window.HTMLElement.prototype, 'innerHTML'),\n HTMLElement_insertAdjacentElement: window.HTMLElement.prototype['insertAdjacentElement'],\n HTMLElement_insertAdjacentHTML: window.HTMLElement.prototype['insertAdjacentHTML'],\n};\n","/**\n * This class exists only to work around Closure's lack of a way to describe\n * singletons. It represents the 'already constructed marker' used in custom\n * element construction stacks.\n *\n * https://html.spec.whatwg.org/#concept-already-constructed-marker\n */\nclass AlreadyConstructedMarker {}\n\nexport default new AlreadyConstructedMarker();\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport CEState from '../CustomElementState.js';\nimport AlreadyConstructedMarker from '../AlreadyConstructedMarker.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n window['HTMLElement'] = (function() {\n /**\n * @type {function(new: HTMLElement): !HTMLElement}\n */\n function HTMLElement() {\n // This should really be `new.target` but `new.target` can't be emulated\n // in ES5. Assuming the user keeps the default value of the constructor's\n // prototype's `constructor` property, this is equivalent.\n /** @type {!Function} */\n const constructor = this.constructor;\n\n const definition = internals.constructorToDefinition(constructor);\n if (!definition) {\n throw new Error('The custom element being constructed was not registered with `customElements`.');\n }\n\n const constructionStack = definition.constructionStack;\n\n if (constructionStack.length === 0) {\n const element = Native.Document_createElement.call(document, definition.localName);\n Object.setPrototypeOf(element, constructor.prototype);\n element.__CE_state = CEState.custom;\n element.__CE_definition = definition;\n internals.patch(element);\n return element;\n }\n\n const lastIndex = constructionStack.length - 1;\n const element = constructionStack[lastIndex];\n if (element === AlreadyConstructedMarker) {\n throw new Error('The HTMLElement constructor was either called reentrantly for this constructor or called multiple times.');\n }\n constructionStack[lastIndex] = AlreadyConstructedMarker;\n\n Object.setPrototypeOf(element, constructor.prototype);\n internals.patch(/** @type {!HTMLElement} */ (element));\n\n return element;\n }\n\n HTMLElement.prototype = Native.HTMLElement.prototype;\n\n return HTMLElement;\n })();\n};\n","/**\n * @license\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n */\n\nimport CustomElementInternals from './CustomElementInternals.js';\nimport CustomElementRegistry from './CustomElementRegistry.js';\n\nimport PatchHTMLElement from './Patch/HTMLElement.js';\nimport PatchDocument from './Patch/Document.js';\nimport PatchDocumentFragment from './Patch/DocumentFragment.js';\nimport PatchNode from './Patch/Node.js';\nimport PatchElement from './Patch/Element.js';\n\nconst priorCustomElements = window['customElements'];\n\nif (!priorCustomElements ||\n priorCustomElements['forcePolyfill'] ||\n (typeof priorCustomElements['define'] != 'function') ||\n (typeof priorCustomElements['get'] != 'function')) {\n /** @type {!CustomElementInternals} */\n const internals = new CustomElementInternals();\n\n PatchHTMLElement(internals);\n PatchDocument(internals);\n PatchDocumentFragment(internals);\n PatchNode(internals);\n PatchElement(internals);\n\n // The main document is always associated with the registry.\n document.__CE_hasRegistry = true;\n\n /** @type {!CustomElementRegistry} */\n const customElements = new CustomElementRegistry(internals);\n\n Object.defineProperty(window, 'customElements', {\n configurable: true,\n enumerable: true,\n value: customElements,\n });\n}\n","import CustomElementInternals from '../../CustomElementInternals.js';\nimport * as Utilities from '../../Utilities.js';\n\n/**\n * @typedef {{\n * prepend: !function(...(!Node|string)),\n * append: !function(...(!Node|string)),\n * }}\n */\nlet ParentNodeNativeMethods;\n\n/**\n * @param {!CustomElementInternals} internals\n * @param {!Object} destination\n * @param {!ParentNodeNativeMethods} builtIn\n */\nexport default function(internals, destination, builtIn) {\n /**\n * @param {!function(...(!Node|string))} builtInMethod\n * @return {!function(...(!Node|string))}\n */\n function appendPrependPatch(builtInMethod) {\n return function(...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n * @type {!Array<!Node>}\n */\n const flattenedNodes = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n * @type {!Array<!Node>}\n */\n const connectedElements = [];\n\n for (var i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n builtInMethod.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n };\n }\n\n if (builtIn.prepend !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'prepend', appendPrependPatch(builtIn.prepend));\n }\n\n if (builtIn.append !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'append', appendPrependPatch(builtIn.append));\n }\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport * as Utilities from '../Utilities.js';\n\nimport PatchParentNode from './Interface/ParentNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n Utilities.setPropertyUnchecked(Document.prototype, 'createElement',\n /**\n * @this {Document}\n * @param {string} localName\n * @return {!Element}\n */\n function(localName) {\n // Only create custom elements if this document is associated with the registry.\n if (this.__CE_hasRegistry) {\n const definition = internals.localNameToDefinition(localName);\n if (definition) {\n return new (definition.constructor)();\n }\n }\n\n const result = /** @type {!Element} */\n (Native.Document_createElement.call(this, localName));\n internals.patch(result);\n return result;\n });\n\n Utilities.setPropertyUnchecked(Document.prototype, 'importNode',\n /**\n * @this {Document}\n * @param {!Node} node\n * @param {boolean=} deep\n * @return {!Node}\n */\n function(node, deep) {\n const clone = Native.Document_importNode.call(this, node, deep);\n // Only create custom elements if this document is associated with the registry.\n if (!this.__CE_hasRegistry) {\n internals.patchTree(clone);\n } else {\n internals.patchAndUpgradeTree(clone);\n }\n return clone;\n });\n\n const NS_HTML = \"http://www.w3.org/1999/xhtml\";\n\n Utilities.setPropertyUnchecked(Document.prototype, 'createElementNS',\n /**\n * @this {Document}\n * @param {?string} namespace\n * @param {string} localName\n * @return {!Element}\n */\n function(namespace, localName) {\n // Only create custom elements if this document is associated with the registry.\n if (this.__CE_hasRegistry && (namespace === null || namespace === NS_HTML)) {\n const definition = internals.localNameToDefinition(localName);\n if (definition) {\n return new (definition.constructor)();\n }\n }\n\n const result = /** @type {!Element} */\n (Native.Document_createElementNS.call(this, namespace, localName));\n internals.patch(result);\n return result;\n });\n\n PatchParentNode(internals, Document.prototype, {\n prepend: Native.Document_prepend,\n append: Native.Document_append,\n });\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport * as Utilities from '../Utilities.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n // `Node#nodeValue` is implemented on `Attr`.\n // `Node#textContent` is implemented on `Attr`, `Element`.\n\n Utilities.setPropertyUnchecked(Node.prototype, 'insertBefore',\n /**\n * @this {Node}\n * @param {!Node} node\n * @param {?Node} refNode\n * @return {!Node}\n */\n function(node, refNode) {\n if (node instanceof DocumentFragment) {\n const insertedNodes = Array.prototype.slice.apply(node.childNodes);\n const nativeResult = Native.Node_insertBefore.call(this, node, refNode);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeWasConnected = Utilities.isConnected(node);\n const nativeResult = Native.Node_insertBefore.call(this, node, refNode);\n\n if (nodeWasConnected) {\n internals.disconnectTree(node);\n }\n\n if (Utilities.isConnected(this)) {\n internals.connectTree(node);\n }\n\n return nativeResult;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'appendChild',\n /**\n * @this {Node}\n * @param {!Node} node\n * @return {!Node}\n */\n function(node) {\n if (node instanceof DocumentFragment) {\n const insertedNodes = Array.prototype.slice.apply(node.childNodes);\n const nativeResult = Native.Node_appendChild.call(this, node);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeWasConnected = Utilities.isConnected(node);\n const nativeResult = Native.Node_appendChild.call(this, node);\n\n if (nodeWasConnected) {\n internals.disconnectTree(node);\n }\n\n if (Utilities.isConnected(this)) {\n internals.connectTree(node);\n }\n\n return nativeResult;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'cloneNode',\n /**\n * @this {Node}\n * @param {boolean=} deep\n * @return {!Node}\n */\n function(deep) {\n const clone = Native.Node_cloneNode.call(this, deep);\n // Only create custom elements if this element's owner document is\n // associated with the registry.\n if (!this.ownerDocument.__CE_hasRegistry) {\n internals.patchTree(clone);\n } else {\n internals.patchAndUpgradeTree(clone);\n }\n return clone;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'removeChild',\n /**\n * @this {Node}\n * @param {!Node} node\n * @return {!Node}\n */\n function(node) {\n const nodeWasConnected = Utilities.isConnected(node);\n const nativeResult = Native.Node_removeChild.call(this, node);\n\n if (nodeWasConnected) {\n internals.disconnectTree(node);\n }\n\n return nativeResult;\n });\n\n Utilities.setPropertyUnchecked(Node.prototype, 'replaceChild',\n /**\n * @this {Node}\n * @param {!Node} nodeToInsert\n * @param {!Node} nodeToRemove\n * @return {!Node}\n */\n function(nodeToInsert, nodeToRemove) {\n if (nodeToInsert instanceof DocumentFragment) {\n const insertedNodes = Array.prototype.slice.apply(nodeToInsert.childNodes);\n const nativeResult = Native.Node_replaceChild.call(this, nodeToInsert, nodeToRemove);\n\n // DocumentFragments can't be connected, so `disconnectTree` will never\n // need to be called on a DocumentFragment's children after inserting it.\n\n if (Utilities.isConnected(this)) {\n internals.disconnectTree(nodeToRemove);\n for (let i = 0; i < insertedNodes.length; i++) {\n internals.connectTree(insertedNodes[i]);\n }\n }\n\n return nativeResult;\n }\n\n const nodeToInsertWasConnected = Utilities.isConnected(nodeToInsert);\n const nativeResult = Native.Node_replaceChild.call(this, nodeToInsert, nodeToRemove);\n const thisIsConnected = Utilities.isConnected(this);\n\n if (thisIsConnected) {\n internals.disconnectTree(nodeToRemove);\n }\n\n if (nodeToInsertWasConnected) {\n internals.disconnectTree(nodeToInsert);\n }\n\n if (thisIsConnected) {\n internals.connectTree(nodeToInsert);\n }\n\n return nativeResult;\n });\n\n\n function patch_textContent(destination, baseDescriptor) {\n Object.defineProperty(destination, 'textContent', {\n enumerable: baseDescriptor.enumerable,\n configurable: true,\n get: baseDescriptor.get,\n set: /** @this {Node} */ function(assignedValue) {\n // If this is a text node then there are no nodes to disconnect.\n if (this.nodeType === Node.TEXT_NODE) {\n baseDescriptor.set.call(this, assignedValue);\n return;\n }\n\n let removedNodes = undefined;\n // Checking for `firstChild` is faster than reading `childNodes.length`\n // to compare with 0.\n if (this.firstChild) {\n // Using `childNodes` is faster than `children`, even though we only\n // care about elements.\n const childNodes = this.childNodes;\n const childNodesLength = childNodes.length;\n if (childNodesLength > 0 && Utilities.isConnected(this)) {\n // Copying an array by iterating is faster than using slice.\n removedNodes = new Array(childNodesLength);\n for (let i = 0; i < childNodesLength; i++) {\n removedNodes[i] = childNodes[i];\n }\n }\n }\n\n baseDescriptor.set.call(this, assignedValue);\n\n if (removedNodes) {\n for (let i = 0; i < removedNodes.length; i++) {\n internals.disconnectTree(removedNodes[i]);\n }\n }\n },\n });\n }\n\n if (Native.Node_textContent && Native.Node_textContent.get) {\n patch_textContent(Node.prototype, Native.Node_textContent);\n } else {\n internals.addPatch(function(element) {\n patch_textContent(element, {\n enumerable: true,\n configurable: true,\n // NOTE: This implementation of the `textContent` getter assumes that\n // text nodes' `textContent` getter will not be patched.\n get: /** @this {Node} */ function() {\n /** @type {!Array<string>} */\n const parts = [];\n\n for (let i = 0; i < this.childNodes.length; i++) {\n parts.push(this.childNodes[i].textContent);\n }\n\n return parts.join('');\n },\n set: /** @this {Node} */ function(assignedValue) {\n while (this.firstChild) {\n Native.Node_removeChild.call(this, this.firstChild);\n }\n Native.Node_appendChild.call(this, document.createTextNode(assignedValue));\n },\n });\n });\n }\n};\n","import CustomElementInternals from '../../CustomElementInternals.js';\nimport * as Utilities from '../../Utilities.js';\n\n/**\n * @typedef {{\n * before: !function(...(!Node|string)),\n * after: !function(...(!Node|string)),\n * replaceWith: !function(...(!Node|string)),\n * remove: !function(),\n * }}\n */\nlet ChildNodeNativeMethods;\n\n/**\n * @param {!CustomElementInternals} internals\n * @param {!Object} destination\n * @param {!ChildNodeNativeMethods} builtIn\n */\nexport default function(internals, destination, builtIn) {\n /**\n * @param {!function(...(!Node|string))} builtInMethod\n * @return {!function(...(!Node|string))}\n */\n function beforeAfterPatch(builtInMethod) {\n return function(...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n * @type {!Array<!Node>}\n */\n const flattenedNodes = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n * @type {!Array<!Node>}\n */\n const connectedElements = [];\n\n for (var i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n builtInMethod.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (Utilities.isConnected(this)) {\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n };\n }\n\n if (builtIn.before !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'before', beforeAfterPatch(builtIn.before));\n }\n\n if (builtIn.before !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'after', beforeAfterPatch(builtIn.after));\n }\n\n if (builtIn.replaceWith !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'replaceWith',\n /**\n * @param {...(!Node|string)} nodes\n */\n function(...nodes) {\n /**\n * A copy of `nodes`, with any DocumentFragment replaced by its children.\n * @type {!Array<!Node>}\n */\n const flattenedNodes = [];\n\n /**\n * Elements in `nodes` that were connected before this call.\n * @type {!Array<!Node>}\n */\n const connectedElements = [];\n\n for (var i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if (node instanceof Element && Utilities.isConnected(node)) {\n connectedElements.push(node);\n }\n\n if (node instanceof DocumentFragment) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n flattenedNodes.push(child);\n }\n } else {\n flattenedNodes.push(node);\n }\n }\n\n const wasConnected = Utilities.isConnected(this);\n\n builtIn.replaceWith.apply(this, nodes);\n\n for (let i = 0; i < connectedElements.length; i++) {\n internals.disconnectTree(connectedElements[i]);\n }\n\n if (wasConnected) {\n internals.disconnectTree(this);\n for (let i = 0; i < flattenedNodes.length; i++) {\n const node = flattenedNodes[i];\n if (node instanceof Element) {\n internals.connectTree(node);\n }\n }\n }\n });\n }\n\n if (builtIn.remove !== undefined) {\n Utilities.setPropertyUnchecked(destination, 'remove',\n function() {\n const wasConnected = Utilities.isConnected(this);\n\n builtIn.remove.call(this);\n\n if (wasConnected) {\n internals.disconnectTree(this);\n }\n });\n }\n};\n","import Native from './Native.js';\nimport CustomElementInternals from '../CustomElementInternals.js';\nimport CEState from '../CustomElementState.js';\nimport * as Utilities from '../Utilities.js';\n\nimport PatchParentNode from './Interface/ParentNode.js';\nimport PatchChildNode from './Interface/ChildNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n if (Native.Element_attachShadow) {\n Utilities.setPropertyUnchecked(Element.prototype, 'attachShadow',\n /**\n * @this {Element}\n * @param {!{mode: string}} init\n * @return {ShadowRoot}\n */\n function(init) {\n const shadowRoot = Native.Element_attachShadow.call(this, init);\n this.__CE_shadowRoot = shadowRoot;\n return shadowRoot;\n });\n }\n\n\n function patch_innerHTML(destination, baseDescriptor) {\n Object.defineProperty(destination, 'innerHTML', {\n enumerable: baseDescriptor.enumerable,\n configurable: true,\n get: baseDescriptor.get,\n set: /** @this {Element} */ function(htmlString) {\n const isConnected = Utilities.isConnected(this);\n\n // NOTE: In IE11, when using the native `innerHTML` setter, all nodes\n // that were previously descendants of the context element have all of\n // their children removed as part of the set - the entire subtree is\n // 'disassembled'. This work around walks the subtree *before* using the\n // native setter.\n /** @type {!Array<!Element>|undefined} */\n let removedElements = undefined;\n if (isConnected) {\n removedElements = [];\n Utilities.walkDeepDescendantElements(this, element => {\n if (element !== this) {\n removedElements.push(element);\n }\n });\n }\n\n baseDescriptor.set.call(this, htmlString);\n\n if (removedElements) {\n for (let i = 0; i < removedElements.length; i++) {\n const element = removedElements[i];\n if (element.__CE_state === CEState.custom) {\n internals.disconnectedCallback(element);\n }\n }\n }\n\n // Only create custom elements if this element's owner document is\n // associated with the registry.\n if (!this.ownerDocument.__CE_hasRegistry) {\n internals.patchTree(this);\n } else {\n internals.patchAndUpgradeTree(this);\n }\n return htmlString;\n },\n });\n }\n\n if (Native.Element_innerHTML && Native.Element_innerHTML.get) {\n patch_innerHTML(Element.prototype, Native.Element_innerHTML);\n } else if (Native.HTMLElement_innerHTML && Native.HTMLElement_innerHTML.get) {\n patch_innerHTML(HTMLElement.prototype, Native.HTMLElement_innerHTML);\n } else {\n\n internals.addPatch(function(element) {\n patch_innerHTML(element, {\n enumerable: true,\n configurable: true,\n // Implements getting `innerHTML` by performing an unpatched `cloneNode`\n // of the element and returning the resulting element's `innerHTML`.\n // TODO: Is this too expensive?\n get: /** @this {Element} */ function() {\n return Native.Node_cloneNode.call(this, true).innerHTML;\n },\n // Implements setting `innerHTML` by creating an unpatched element,\n // setting `innerHTML` of that element and replacing the target\n // element's children with those of the unpatched element.\n set: /** @this {Element} */ function(assignedValue) {\n // NOTE: re-route to `content` for `template` elements.\n // We need to do this because `template.appendChild` does not\n // route into `template.content`.\n const isTemplate = (this.localName === 'template');\n /** @type {!Node} */\n const content = isTemplate ? (/** @type {!HTMLTemplateElement} */\n (this)).content : this;\n /** @type {!Node} */\n const rawElement = Native.Document_createElement.call(document,\n this.localName);\n rawElement.innerHTML = assignedValue;\n\n while (content.childNodes.length > 0) {\n Native.Node_removeChild.call(content, content.childNodes[0]);\n }\n const container = isTemplate ? rawElement.content : rawElement;\n while (container.childNodes.length > 0) {\n Native.Node_appendChild.call(content, container.childNodes[0]);\n }\n },\n });\n });\n }\n\n\n Utilities.setPropertyUnchecked(Element.prototype, 'setAttribute',\n /**\n * @this {Element}\n * @param {string} name\n * @param {string} newValue\n */\n function(name, newValue) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_setAttribute.call(this, name, newValue);\n }\n\n const oldValue = Native.Element_getAttribute.call(this, name);\n Native.Element_setAttribute.call(this, name, newValue);\n newValue = Native.Element_getAttribute.call(this, name);\n internals.attributeChangedCallback(this, name, oldValue, newValue, null);\n });\n\n Utilities.setPropertyUnchecked(Element.prototype, 'setAttributeNS',\n /**\n * @this {Element}\n * @param {?string} namespace\n * @param {string} name\n * @param {string} newValue\n */\n function(namespace, name, newValue) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_setAttributeNS.call(this, namespace, name, newValue);\n }\n\n const oldValue = Native.Element_getAttributeNS.call(this, namespace, name);\n Native.Element_setAttributeNS.call(this, namespace, name, newValue);\n newValue = Native.Element_getAttributeNS.call(this, namespace, name);\n internals.attributeChangedCallback(this, name, oldValue, newValue, namespace);\n });\n\n Utilities.setPropertyUnchecked(Element.prototype, 'removeAttribute',\n /**\n * @this {Element}\n * @param {string} name\n */\n function(name) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_removeAttribute.call(this, name);\n }\n\n const oldValue = Native.Element_getAttribute.call(this, name);\n Native.Element_removeAttribute.call(this, name);\n if (oldValue !== null) {\n internals.attributeChangedCallback(this, name, oldValue, null, null);\n }\n });\n\n Utilities.setPropertyUnchecked(Element.prototype, 'removeAttributeNS',\n /**\n * @this {Element}\n * @param {?string} namespace\n * @param {string} name\n */\n function(namespace, name) {\n // Fast path for non-custom elements.\n if (this.__CE_state !== CEState.custom) {\n return Native.Element_removeAttributeNS.call(this, namespace, name);\n }\n\n const oldValue = Native.Element_getAttributeNS.call(this, namespace, name);\n Native.Element_removeAttributeNS.call(this, namespace, name);\n // In older browsers, `Element#getAttributeNS` may return the empty string\n // instead of null if the attribute does not exist. For details, see;\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttributeNS#Notes\n const newValue = Native.Element_getAttributeNS.call(this, namespace, name);\n if (oldValue !== newValue) {\n internals.attributeChangedCallback(this, name, oldValue, newValue, namespace);\n }\n });\n\n\n function patch_insertAdjacentElement(destination, baseMethod) {\n Utilities.setPropertyUnchecked(destination, 'insertAdjacentElement',\n /**\n * @this {Element}\n * @param {string} position\n * @param {!Element} element\n * @return {?Element}\n */\n function(position, element) {\n const wasConnected = Utilities.isConnected(element);\n const insertedElement = /** @type {!Element} */\n (baseMethod.call(this, position, element));\n\n if (wasConnected) {\n internals.disconnectTree(element);\n }\n\n if (Utilities.isConnected(insertedElement)) {\n internals.connectTree(element);\n }\n return insertedElement;\n });\n }\n\n if (Native.HTMLElement_insertAdjacentElement) {\n patch_insertAdjacentElement(HTMLElement.prototype, Native.HTMLElement_insertAdjacentElement);\n } else if (Native.Element_insertAdjacentElement) {\n patch_insertAdjacentElement(Element.prototype, Native.Element_insertAdjacentElement);\n } else {\n console.warn('Custom Elements: `Element#insertAdjacentElement` was not patched.');\n }\n\n\n function patch_insertAdjacentHTML(destination, baseMethod) {\n /**\n * Patches and upgrades all nodes which are siblings between `start`\n * (inclusive) and `end` (exclusive). If `end` is `null`, then all siblings\n * following `start` will be patched and upgraded.\n * @param {!Node} start\n * @param {?Node} end\n */\n function upgradeNodesInRange(start, end) {\n const nodes = [];\n for (let node = start; node !== end; node = node.nextSibling) {\n nodes.push(node);\n }\n for (let i = 0; i < nodes.length; i++) {\n internals.patchAndUpgradeTree(nodes[i]);\n }\n }\n\n Utilities.setPropertyUnchecked(destination, 'insertAdjacentHTML',\n /**\n * @this {Element}\n * @param {string} position\n * @param {string} text\n */\n function(position, text) {\n position = position.toLowerCase();\n\n if (position === \"beforebegin\") {\n const marker = this.previousSibling;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(\n /** @type {!Node} */ (marker || this.parentNode.firstChild), this);\n } else if (position === \"afterbegin\") {\n const marker = this.firstChild;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(/** @type {!Node} */ (this.firstChild), marker);\n } else if (position === \"beforeend\") {\n const marker = this.lastChild;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(marker || this.firstChild, null);\n } else if (position === \"afterend\") {\n const marker = this.nextSibling;\n baseMethod.call(this, position, text);\n upgradeNodesInRange(/** @type {!Node} */ (this.nextSibling), marker);\n } else {\n throw new SyntaxError(`The value provided (${String(position)}) is ` +\n \"not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'.\");\n }\n });\n }\n\n if (Native.HTMLElement_insertAdjacentHTML) {\n patch_insertAdjacentHTML(HTMLElement.prototype, Native.HTMLElement_insertAdjacentHTML);\n } else if (Native.Element_insertAdjacentHTML) {\n patch_insertAdjacentHTML(Element.prototype, Native.Element_insertAdjacentHTML);\n } else {\n console.warn('Custom Elements: `Element#insertAdjacentHTML` was not patched.');\n }\n\n\n PatchParentNode(internals, Element.prototype, {\n prepend: Native.Element_prepend,\n append: Native.Element_append,\n });\n\n PatchChildNode(internals, Element.prototype, {\n before: Native.Element_before,\n after: Native.Element_after,\n replaceWith: Native.Element_replaceWith,\n remove: Native.Element_remove,\n });\n};\n","import CustomElementInternals from '../CustomElementInternals.js';\nimport Native from './Native.js';\nimport PatchParentNode from './Interface/ParentNode.js';\n\n/**\n * @param {!CustomElementInternals} internals\n */\nexport default function(internals) {\n PatchParentNode(internals, DocumentFragment.prototype, {\n prepend: Native.DocumentFragment_prepend,\n append: Native.DocumentFragment_append,\n });\n};\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n/*\nExtremely simple css parser. Intended to be not more than what we need\nand definitely not necessarily correct =).\n*/\n\n'use strict';\n\n/** @unrestricted */\nclass StyleNode {\n constructor() {\n /** @type {number} */\n this['start'] = 0;\n /** @type {number} */\n this['end'] = 0;\n /** @type {StyleNode} */\n this['previous'] = null;\n /** @type {StyleNode} */\n this['parent'] = null;\n /** @type {Array<StyleNode>} */\n this['rules'] = null;\n /** @type {string} */\n this['parsedCssText'] = '';\n /** @type {string} */\n this['cssText'] = '';\n /** @type {boolean} */\n this['atRule'] = false;\n /** @type {number} */\n this['type'] = 0;\n /** @type {string} */\n this['keyframesName'] = '';\n /** @type {string} */\n this['selector'] = '';\n /** @type {string} */\n this['parsedSelector'] = '';\n }\n}\n\nexport {StyleNode}\n\n// given a string of css, return a simple rule tree\n/**\n * @param {string} text\n * @return {StyleNode}\n */\nexport function parse(text) {\n text = clean(text);\n return parseCss(lex(text), text);\n}\n\n// remove stuff we don't care about that may hinder parsing\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction clean(cssText) {\n return cssText.replace(RX.comments, '').replace(RX.port, '');\n}\n\n// super simple {...} lexer that returns a node tree\n/**\n * @param {string} text\n * @return {StyleNode}\n */\nfunction lex(text) {\n let root = new StyleNode();\n root['start'] = 0;\n root['end'] = text.length\n let n = root;\n for (let i = 0, l = text.length; i < l; i++) {\n if (text[i] === OPEN_BRACE) {\n if (!n['rules']) {\n n['rules'] = [];\n }\n let p = n;\n let previous = p['rules'][p['rules'].length - 1] || null;\n n = new StyleNode();\n n['start'] = i + 1;\n n['parent'] = p;\n n['previous'] = previous;\n p['rules'].push(n);\n } else if (text[i] === CLOSE_BRACE) {\n n['end'] = i + 1;\n n = n['parent'] || root;\n }\n }\n return root;\n}\n\n// add selectors/cssText to node tree\n/**\n * @param {StyleNode} node\n * @param {string} text\n * @return {StyleNode}\n */\nfunction parseCss(node, text) {\n let t = text.substring(node['start'], node['end'] - 1);\n node['parsedCssText'] = node['cssText'] = t.trim();\n if (node['parent']) {\n let ss = node['previous'] ? node['previous']['end'] : node['parent']['start'];\n t = text.substring(ss, node['start'] - 1);\n t = _expandUnicodeEscapes(t);\n t = t.replace(RX.multipleSpaces, ' ');\n // TODO(sorvell): ad hoc; make selector include only after last ;\n // helps with mixin syntax\n t = t.substring(t.lastIndexOf(';') + 1);\n let s = node['parsedSelector'] = node['selector'] = t.trim();\n node['atRule'] = (s.indexOf(AT_START) === 0);\n // note, support a subset of rule types...\n if (node['atRule']) {\n if (s.indexOf(MEDIA_START) === 0) {\n node['type'] = types.MEDIA_RULE;\n } else if (s.match(RX.keyframesRule)) {\n node['type'] = types.KEYFRAMES_RULE;\n node['keyframesName'] =\n node['selector'].split(RX.multipleSpaces).pop();\n }\n } else {\n if (s.indexOf(VAR_START) === 0) {\n node['type'] = types.MIXIN_RULE;\n } else {\n node['type'] = types.STYLE_RULE;\n }\n }\n }\n let r$ = node['rules'];\n if (r$) {\n for (let i = 0, l = r$.length, r;\n (i < l) && (r = r$[i]); i++) {\n parseCss(r, text);\n }\n }\n return node;\n}\n\n/**\n * conversion of sort unicode escapes with spaces like `\\33 ` (and longer) into\n * expanded form that doesn't require trailing space `\\000033`\n * @param {string} s\n * @return {string}\n */\nfunction _expandUnicodeEscapes(s) {\n return s.replace(/\\\\([0-9a-f]{1,6})\\s/gi, function() {\n let code = arguments[1],\n repeat = 6 - code.length;\n while (repeat--) {\n code = '0' + code;\n }\n return '\\\\' + code;\n });\n}\n\n/**\n * stringify parsed css.\n * @param {StyleNode} node\n * @param {boolean=} preserveProperties\n * @param {string=} text\n * @return {string}\n */\nexport function stringify(node, preserveProperties, text = '') {\n // calc rule cssText\n let cssText = '';\n if (node['cssText'] || node['rules']) {\n let r$ = node['rules'];\n if (r$ && !_hasMixinRules(r$)) {\n for (let i = 0, l = r$.length, r;\n (i < l) && (r = r$[i]); i++) {\n cssText = stringify(r, preserveProperties, cssText);\n }\n } else {\n cssText = preserveProperties ? node['cssText'] :\n removeCustomProps(node['cssText']);\n cssText = cssText.trim();\n if (cssText) {\n cssText = ' ' + cssText + '\\n';\n }\n }\n }\n // emit rule if there is cssText\n if (cssText) {\n if (node['selector']) {\n text += node['selector'] + ' ' + OPEN_BRACE + '\\n';\n }\n text += cssText;\n if (node['selector']) {\n text += CLOSE_BRACE + '\\n\\n';\n }\n }\n return text;\n}\n\n/**\n * @param {Array<StyleNode>} rules\n * @return {boolean}\n */\nfunction _hasMixinRules(rules) {\n let r = rules[0];\n return Boolean(r) && Boolean(r['selector']) && r['selector'].indexOf(VAR_START) === 0;\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomProps(cssText) {\n cssText = removeCustomPropAssignment(cssText);\n return removeCustomPropApply(cssText);\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nexport function removeCustomPropAssignment(cssText) {\n return cssText\n .replace(RX.customProp, '')\n .replace(RX.mixinProp, '');\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomPropApply(cssText) {\n return cssText\n .replace(RX.mixinApply, '')\n .replace(RX.varApply, '');\n}\n\n/** @enum {number} */\nexport const types = {\n STYLE_RULE: 1,\n KEYFRAMES_RULE: 7,\n MEDIA_RULE: 4,\n MIXIN_RULE: 1000\n}\n\nconst OPEN_BRACE = '{';\nconst CLOSE_BRACE = '}';\n\n// helper regexp's\nconst RX = {\n comments: /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//gim,\n port: /@import[^;]*;/gim,\n customProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\\n]|$)/gim,\n mixinProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\\n]|$)?/gim,\n mixinApply: /@apply\\s*\\(?[^);]*\\)?\\s*(?:[;\\n]|$)?/gim,\n varApply: /[^;:]*?:[^;]*?var\\([^;]*\\)(?:[;\\n]|$)?/gim,\n keyframesRule: /^@[^\\s]*keyframes/,\n multipleSpaces: /\\s+/g\n}\n\nconst VAR_START = '--';\nconst MEDIA_START = '@media';\nconst AT_START = '@';\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nexport const nativeShadow = !(window['ShadyDOM'] && window['ShadyDOM']['inUse']);\nlet nativeCssVariables_;\n\n/**\n * @param {(ShadyCSSOptions | ShadyCSSInterface)=} settings\n */\nfunction calcCssVariables(settings) {\n if (settings && settings['shimcssproperties']) {\n nativeCssVariables_ = false;\n } else {\n // chrome 49 has semi-working css vars, check if box-shadow works\n // safari 9.1 has a recalc bug: https://bugs.webkit.org/show_bug.cgi?id=155782\n // However, shim css custom properties are only supported with ShadyDOM enabled,\n // so fall back on native if we do not detect ShadyDOM\n // Edge 15: custom properties used in ::before and ::after will also be used in the parent element\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12414257/\n nativeCssVariables_ = nativeShadow || Boolean(!navigator.userAgent.match(/AppleWebKit\\/601|Edge\\/15/) &&\n window.CSS && CSS.supports && CSS.supports('box-shadow', '0 0 0 var(--foo)'));\n }\n}\n\nif (window.ShadyCSS && window.ShadyCSS.nativeCss !== undefined) {\n nativeCssVariables_ = window.ShadyCSS.nativeCss;\n} else if (window.ShadyCSS) {\n calcCssVariables(window.ShadyCSS);\n // reset window variable to let ShadyCSS API take its place\n window.ShadyCSS = undefined;\n} else {\n calcCssVariables(window['WebComponents'] && window['WebComponents']['flags']);\n}\n\n// Hack for type error under new type inference which doesn't like that\n// nativeCssVariables is updated in a function and assigns the type\n// `function(): ?` instead of `boolean`.\nexport const nativeCssVariables = /** @type {boolean} */(nativeCssVariables_);\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nexport const VAR_ASSIGN = /(?:^|[;\\s{]\\s*)(--[\\w-]*?)\\s*:\\s*(?:((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};{])+)|\\{([^}]*)\\}(?:(?=[;\\s}])|$))/gi;\nexport const MIXIN_MATCH = /(?:^|\\W+)@apply\\s*\\(?([^);\\n]*)\\)?/gi;\nexport const VAR_CONSUMED = /(--[\\w-]+)\\s*([:,;)]|$)/gi;\nexport const ANIMATION_MATCH = /(animation\\s*:)|(animation-name\\s*:)/;\nexport const MEDIA_MATCH = /@media\\s(.*)/;\nexport const IS_VAR = /^--/;\nexport const BRACKETED = /\\{[^}]*\\}/g;\nexport const HOST_PREFIX = '(?:^|[^.#[:])';\nexport const HOST_SUFFIX = '($|[.:[\\\\s>+~])';\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/** @type {!Set<string>} */\nconst styleTextSet = new Set();\n\nexport const scopingAttribute = 'shady-unscoped';\n\n/**\n * Add a specifically-marked style to the document directly, and only one copy of that style.\n *\n * @param {!HTMLStyleElement} style\n * @return {undefined}\n */\nexport function processUnscopedStyle(style) {\n const text = style.textContent;\n if (!styleTextSet.has(text)) {\n styleTextSet.add(text);\n const newStyle = style.cloneNode(true);\n document.head.appendChild(newStyle);\n }\n}\n\n/**\n * Check if a style is supposed to be unscoped\n * @param {!HTMLStyleElement} style\n * @return {boolean} true if the style has the unscoping attribute\n */\nexport function isUnscopedStyle(style) {\n return style.hasAttribute(scopingAttribute);\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {nativeShadow, nativeCssVariables} from './style-settings.js';\nimport {parse, stringify, types, StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport {MEDIA_MATCH} from './common-regex.js';\nimport {processUnscopedStyle, isUnscopedStyle} from './unscoped-style-handler.js';\n\n/**\n * @param {string|StyleNode} rules\n * @param {function(StyleNode)=} callback\n * @return {string}\n */\nexport function toCssText (rules, callback) {\n if (!rules) {\n return '';\n }\n if (typeof rules === 'string') {\n rules = parse(rules);\n }\n if (callback) {\n forEachRule(rules, callback);\n }\n return stringify(rules, nativeCssVariables);\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @return {StyleNode}\n */\nexport function rulesForStyle(style) {\n if (!style['__cssRules'] && style.textContent) {\n style['__cssRules'] = parse(style.textContent);\n }\n return style['__cssRules'] || null;\n}\n\n// Tests if a rule is a keyframes selector, which looks almost exactly\n// like a normal selector but is not (it has nothing to do with scoping\n// for example).\n/**\n * @param {StyleNode} rule\n * @return {boolean}\n */\nexport function isKeyframesSelector(rule) {\n return Boolean(rule['parent']) &&\n rule['parent']['type'] === types.KEYFRAMES_RULE;\n}\n\n/**\n * @param {StyleNode} node\n * @param {Function=} styleRuleCallback\n * @param {Function=} keyframesRuleCallback\n * @param {boolean=} onlyActiveRules\n */\nexport function forEachRule(node, styleRuleCallback, keyframesRuleCallback, onlyActiveRules) {\n if (!node) {\n return;\n }\n let skipRules = false;\n let type = node['type'];\n if (onlyActiveRules) {\n if (type === types.MEDIA_RULE) {\n let matchMedia = node['selector'].match(MEDIA_MATCH);\n if (matchMedia) {\n // if rule is a non matching @media rule, skip subrules\n if (!window.matchMedia(matchMedia[1]).matches) {\n skipRules = true;\n }\n }\n }\n }\n if (type === types.STYLE_RULE) {\n styleRuleCallback(node);\n } else if (keyframesRuleCallback &&\n type === types.KEYFRAMES_RULE) {\n keyframesRuleCallback(node);\n } else if (type === types.MIXIN_RULE) {\n skipRules = true;\n }\n let r$ = node['rules'];\n if (r$ && !skipRules) {\n for (let i=0, l=r$.length, r; (i<l) && (r=r$[i]); i++) {\n forEachRule(r, styleRuleCallback, keyframesRuleCallback, onlyActiveRules);\n }\n }\n}\n\n// add a string of cssText to the document.\n/**\n * @param {string} cssText\n * @param {string} moniker\n * @param {Node} target\n * @param {Node} contextNode\n * @return {HTMLStyleElement}\n */\nexport function applyCss(cssText, moniker, target, contextNode) {\n let style = createScopeStyle(cssText, moniker);\n applyStyle(style, target, contextNode);\n return style;\n}\n\n/**\n * @param {string} cssText\n * @param {string} moniker\n * @return {HTMLStyleElement}\n */\nexport function createScopeStyle(cssText, moniker) {\n let style = /** @type {HTMLStyleElement} */(document.createElement('style'));\n if (moniker) {\n style.setAttribute('scope', moniker);\n }\n style.textContent = cssText;\n return style;\n}\n\n/**\n * Track the position of the last added style for placing placeholders\n * @type {Node}\n */\nlet lastHeadApplyNode = null;\n\n// insert a comment node as a styling position placeholder.\n/**\n * @param {string} moniker\n * @return {!Comment}\n */\nexport function applyStylePlaceHolder(moniker) {\n let placeHolder = document.createComment(' Shady DOM styles for ' +\n moniker + ' ');\n let after = lastHeadApplyNode ?\n lastHeadApplyNode['nextSibling'] : null;\n let scope = document.head;\n scope.insertBefore(placeHolder, after || scope.firstChild);\n lastHeadApplyNode = placeHolder;\n return placeHolder;\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @param {?Node} target\n * @param {?Node} contextNode\n */\nexport function applyStyle(style, target, contextNode) {\n target = target || document.head;\n let after = (contextNode && contextNode.nextSibling) ||\n target.firstChild;\n target.insertBefore(style, after);\n if (!lastHeadApplyNode) {\n lastHeadApplyNode = style;\n } else {\n // only update lastHeadApplyNode if the new style is inserted after the old lastHeadApplyNode\n let position = style.compareDocumentPosition(lastHeadApplyNode);\n if (position === Node.DOCUMENT_POSITION_PRECEDING) {\n lastHeadApplyNode = style;\n }\n }\n}\n\n/**\n * @param {string} buildType\n * @return {boolean}\n */\nexport function isTargetedBuild(buildType) {\n return nativeShadow ? buildType === 'shadow' : buildType === 'shady';\n}\n\n/**\n * @param {Element} element\n * @return {?string}\n */\nexport function getCssBuildType(element) {\n return element.getAttribute('css-build');\n}\n\n/**\n * Walk from text[start] matching parens and\n * returns position of the outer end paren\n * @param {string} text\n * @param {number} start\n * @return {number}\n */\nfunction findMatchingParen(text, start) {\n let level = 0;\n for (let i=start, l=text.length; i < l; i++) {\n if (text[i] === '(') {\n level++;\n } else if (text[i] === ')') {\n if (--level === 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\n/**\n * @param {string} str\n * @param {function(string, string, string, string)} callback\n */\nexport function processVariableAndFallback(str, callback) {\n // find 'var('\n let start = str.indexOf('var(');\n if (start === -1) {\n // no var?, everything is prefix\n return callback(str, '', '', '');\n }\n //${prefix}var(${inner})${suffix}\n let end = findMatchingParen(str, start + 3);\n let inner = str.substring(start + 4, end);\n let prefix = str.substring(0, start);\n // suffix may have other variables\n let suffix = processVariableAndFallback(str.substring(end + 1), callback);\n let comma = inner.indexOf(',');\n // value and fallback args should be trimmed to match in property lookup\n if (comma === -1) {\n // variable, no fallback\n return callback(prefix, inner.trim(), '', suffix);\n }\n // var(${value},${fallback})\n let value = inner.substring(0, comma).trim();\n let fallback = inner.substring(comma + 1).trim();\n return callback(prefix, value, fallback, suffix);\n}\n\n/**\n * @param {Element} element\n * @param {string} value\n */\nexport function setElementClassRaw(element, value) {\n // use native setAttribute provided by ShadyDOM when setAttribute is patched\n if (nativeShadow) {\n element.setAttribute('class', value);\n } else {\n window['ShadyDOM']['nativeMethods']['setAttribute'].call(element, 'class', value);\n }\n}\n\n/**\n * @param {Element | {is: string, extends: string}} element\n * @return {{is: string, typeExtension: string}}\n */\nexport function getIsExtends(element) {\n let localName = element['localName'];\n let is = '', typeExtension = '';\n /*\n NOTE: technically, this can be wrong for certain svg elements\n with `-` in the name like `<font-face>`\n */\n if (localName) {\n if (localName.indexOf('-') > -1) {\n is = localName;\n } else {\n typeExtension = localName;\n is = (element.getAttribute && element.getAttribute('is')) || '';\n }\n } else {\n is = /** @type {?} */(element).is;\n typeExtension = /** @type {?} */(element).extends;\n }\n return {is, typeExtension};\n}\n\n/**\n * @param {Element|DocumentFragment} element\n * @return {string}\n */\nexport function gatherStyleText(element) {\n /** @type {!Array<string>} */\n const styleTextParts = [];\n const styles = /** @type {!NodeList<!HTMLStyleElement>} */(element.querySelectorAll('style'));\n for (let i = 0; i < styles.length; i++) {\n const style = styles[i];\n if (isUnscopedStyle(style)) {\n if (!nativeShadow) {\n processUnscopedStyle(style);\n style.parentNode.removeChild(style);\n }\n } else {\n styleTextParts.push(style.textContent);\n style.parentNode.removeChild(style);\n }\n }\n return styleTextParts.join('').trim();\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport * as StyleUtil from './style-util.js';\nimport {nativeShadow} from './style-settings.js';\n\n/* Transforms ShadowDOM styling into ShadyDOM styling\n\n* scoping:\n\n * elements in scope get scoping selector class=\"x-foo-scope\"\n * selectors re-written as follows:\n\n div button -> div.x-foo-scope button.x-foo-scope\n\n* :host -> scopeName\n\n* :host(...) -> scopeName...\n\n* ::slotted(...) -> scopeName > ...\n\n* ...:dir(ltr|rtl) -> [dir=\"ltr|rtl\"] ..., ...[dir=\"ltr|rtl\"]\n\n* :host(:dir[rtl]) -> scopeName:dir(rtl) -> [dir=\"rtl\"] scopeName, scopeName[dir=\"rtl\"]\n\n*/\nconst SCOPE_NAME = 'style-scope';\n\nclass StyleTransformer {\n get SCOPE_NAME() {\n return SCOPE_NAME;\n }\n /**\n * Given a node and scope name, add a scoping class to each node\n * in the tree. This facilitates transforming css into scoped rules.\n * @param {?} node\n * @param {?} scope\n * @param {?=} shouldRemoveScope\n */\n dom(node, scope, shouldRemoveScope) {\n // one time optimization to skip scoping...\n if (node['__styleScoped']) {\n node['__styleScoped'] = null;\n } else {\n this._transformDom(node, scope || '', shouldRemoveScope);\n }\n }\n\n _transformDom(node, selector, shouldRemoveScope) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n this.element(node, selector, shouldRemoveScope);\n }\n let c$ = (node.localName === 'template') ?\n (node.content || node._content).childNodes :\n node.children || node.childNodes;\n if (c$) {\n for (let i=0; i<c$.length; i++) {\n this._transformDom(c$[i], selector, shouldRemoveScope);\n }\n }\n }\n /**\n * @param {?} element\n * @param {?} scope\n * @param {?=} shouldRemoveScope\n */\n element(element, scope, shouldRemoveScope) {\n // note: if using classes, we add both the general 'style-scope' class\n // as well as the specific scope. This enables easy filtering of all\n // `style-scope` elements\n if (scope) {\n // note: svg on IE does not have classList so fallback to class\n if (element.classList) {\n if (shouldRemoveScope) {\n element.classList.remove(SCOPE_NAME);\n element.classList.remove(scope);\n } else {\n element.classList.add(SCOPE_NAME);\n element.classList.add(scope);\n }\n } else if (element.getAttribute) {\n let c = element.getAttribute(CLASS);\n if (shouldRemoveScope) {\n if (c) {\n let newValue = c.replace(SCOPE_NAME, '').replace(scope, '');\n StyleUtil.setElementClassRaw(element, newValue);\n }\n } else {\n let newValue = (c ? c + ' ' : '') + SCOPE_NAME + ' ' + scope;\n StyleUtil.setElementClassRaw(element, newValue);\n }\n }\n }\n }\n\n /**\n * @param {?} element\n * @param {?} styleRules\n * @param {?=} callback\n */\n elementStyles(element, styleRules, callback) {\n let cssBuildType = element['__cssBuild'];\n // no need to shim selectors if settings.useNativeShadow, also\n // a shady css build will already have transformed selectors\n // NOTE: This method may be called as part of static or property shimming.\n // When there is a targeted build it will not be called for static shimming,\n // but when the property shim is used it is called and should opt out of\n // static shimming work when a proper build exists.\n let cssText = '';\n if (nativeShadow || cssBuildType === 'shady') {\n cssText = StyleUtil.toCssText(styleRules, callback);\n } else {\n let {is, typeExtension} = StyleUtil.getIsExtends(element);\n cssText = this.css(styleRules, is, typeExtension, callback) + '\\n\\n';\n }\n return cssText.trim();\n }\n\n // Given a string of cssText and a scoping string (scope), returns\n // a string of scoped css where each selector is transformed to include\n // a class created from the scope. ShadowDOM selectors are also transformed\n // (e.g. :host) to use the scoping selector.\n css(rules, scope, ext, callback) {\n let hostScope = this._calcHostScope(scope, ext);\n scope = this._calcElementScope(scope);\n let self = this;\n return StyleUtil.toCssText(rules, function(/** StyleNode */rule) {\n if (!rule.isScoped) {\n self.rule(rule, scope, hostScope);\n rule.isScoped = true;\n }\n if (callback) {\n callback(rule, scope, hostScope);\n }\n });\n }\n\n _calcElementScope(scope) {\n if (scope) {\n return CSS_CLASS_PREFIX + scope;\n } else {\n return '';\n }\n }\n\n _calcHostScope(scope, ext) {\n return ext ? `[is=${scope}]` : scope;\n }\n\n rule(rule, scope, hostScope) {\n this._transformRule(rule, this._transformComplexSelector,\n scope, hostScope);\n }\n\n /**\n * transforms a css rule to a scoped rule.\n *\n * @param {StyleNode} rule\n * @param {Function} transformer\n * @param {string=} scope\n * @param {string=} hostScope\n */\n _transformRule(rule, transformer, scope, hostScope) {\n // NOTE: save transformedSelector for subsequent matching of elements\n // against selectors (e.g. when calculating style properties)\n rule['selector'] = rule.transformedSelector =\n this._transformRuleCss(rule, transformer, scope, hostScope);\n }\n\n /**\n * @param {StyleNode} rule\n * @param {Function} transformer\n * @param {string=} scope\n * @param {string=} hostScope\n */\n _transformRuleCss(rule, transformer, scope, hostScope) {\n let p$ = rule['selector'].split(COMPLEX_SELECTOR_SEP);\n // we want to skip transformation of rules that appear in keyframes,\n // because they are keyframe selectors, not element selectors.\n if (!StyleUtil.isKeyframesSelector(rule)) {\n for (let i=0, l=p$.length, p; (i<l) && (p=p$[i]); i++) {\n p$[i] = transformer.call(this, p, scope, hostScope);\n }\n }\n return p$.join(COMPLEX_SELECTOR_SEP);\n }\n\n /**\n * @param {string} selector\n * @return {string}\n */\n _twiddleNthPlus(selector) {\n return selector.replace(NTH, (m, type, inside) => {\n if (inside.indexOf('+') > -1) {\n inside = inside.replace(/\\+/g, '___');\n } else if (inside.indexOf('___') > -1) {\n inside = inside.replace(/___/g, '+');\n }\n return `:${type}(${inside})`;\n });\n }\n\n/**\n * @param {string} selector\n * @param {string} scope\n * @param {string=} hostScope\n */\n _transformComplexSelector(selector, scope, hostScope) {\n let stop = false;\n selector = selector.trim();\n // Remove spaces inside of selectors like `:nth-of-type` because it confuses SIMPLE_SELECTOR_SEP\n let isNth = NTH.test(selector);\n if (isNth) {\n selector = selector.replace(NTH, (m, type, inner) => `:${type}(${inner.replace(/\\s/g, '')})`)\n selector = this._twiddleNthPlus(selector);\n }\n selector = selector.replace(SLOTTED_START, `${HOST} $1`);\n selector = selector.replace(SIMPLE_SELECTOR_SEP, (m, c, s) => {\n if (!stop) {\n let info = this._transformCompoundSelector(s, c, scope, hostScope);\n stop = stop || info.stop;\n c = info.combinator;\n s = info.value;\n }\n return c + s;\n });\n if (isNth) {\n selector = this._twiddleNthPlus(selector);\n }\n return selector;\n }\n\n _transformCompoundSelector(selector, combinator, scope, hostScope) {\n // replace :host with host scoping class\n let slottedIndex = selector.indexOf(SLOTTED);\n if (selector.indexOf(HOST) >= 0) {\n selector = this._transformHostSelector(selector, hostScope);\n // replace other selectors with scoping class\n } else if (slottedIndex !== 0) {\n selector = scope ? this._transformSimpleSelector(selector, scope) :\n selector;\n }\n // mark ::slotted() scope jump to replace with descendant selector + arg\n // also ignore left-side combinator\n let slotted = false;\n if (slottedIndex >= 0) {\n combinator = '';\n slotted = true;\n }\n // process scope jumping selectors up to the scope jump and then stop\n let stop;\n if (slotted) {\n stop = true;\n if (slotted) {\n // .zonk ::slotted(.foo) -> .zonk.scope > .foo\n selector = selector.replace(SLOTTED_PAREN, (m, paren) => ` > ${paren}`);\n }\n }\n selector = selector.replace(DIR_PAREN, (m, before, dir) =>\n `[dir=\"${dir}\"] ${before}, ${before}[dir=\"${dir}\"]`);\n return {value: selector, combinator, stop};\n }\n\n _transformSimpleSelector(selector, scope) {\n let p$ = selector.split(PSEUDO_PREFIX);\n p$[0] += scope;\n return p$.join(PSEUDO_PREFIX);\n }\n\n // :host(...) -> scopeName...\n _transformHostSelector(selector, hostScope) {\n let m = selector.match(HOST_PAREN);\n let paren = m && m[2].trim() || '';\n if (paren) {\n if (!paren[0].match(SIMPLE_SELECTOR_PREFIX)) {\n // paren starts with a type selector\n let typeSelector = paren.split(SIMPLE_SELECTOR_PREFIX)[0];\n // if the type selector is our hostScope then avoid pre-pending it\n if (typeSelector === hostScope) {\n return paren;\n // otherwise, this selector should not match in this scope so\n // output a bogus selector.\n } else {\n return SELECTOR_NO_MATCH;\n }\n } else {\n // make sure to do a replace here to catch selectors like:\n // `:host(.foo)::before`\n return selector.replace(HOST_PAREN, function(m, host, paren) {\n return hostScope + paren;\n });\n }\n // if no paren, do a straight :host replacement.\n // TODO(sorvell): this should not strictly be necessary but\n // it's needed to maintain support for `:host[foo]` type selectors\n // which have been improperly used under Shady DOM. This should be\n // deprecated.\n } else {\n return selector.replace(HOST, hostScope);\n }\n }\n\n /**\n * @param {StyleNode} rule\n */\n documentRule(rule) {\n // reset selector in case this is redone.\n rule['selector'] = rule['parsedSelector'];\n this.normalizeRootSelector(rule);\n this._transformRule(rule, this._transformDocumentSelector);\n }\n\n /**\n * @param {StyleNode} rule\n */\n normalizeRootSelector(rule) {\n if (rule['selector'] === ROOT) {\n rule['selector'] = 'html';\n }\n }\n\n/**\n * @param {string} selector\n */\n _transformDocumentSelector(selector) {\n return selector.match(SLOTTED) ?\n this._transformComplexSelector(selector, SCOPE_DOC_SELECTOR) :\n this._transformSimpleSelector(selector.trim(), SCOPE_DOC_SELECTOR);\n }\n}\n\nlet NTH = /:(nth[-\\w]+)\\(([^)]+)\\)/;\nlet SCOPE_DOC_SELECTOR = `:not(.${SCOPE_NAME})`;\nlet COMPLEX_SELECTOR_SEP = ',';\nlet SIMPLE_SELECTOR_SEP = /(^|[\\s>+~]+)((?:\\[.+?\\]|[^\\s>+~=[])+)/g;\nlet SIMPLE_SELECTOR_PREFIX = /[[.:#*]/;\nlet HOST = ':host';\nlet ROOT = ':root';\nlet SLOTTED = '::slotted';\nlet SLOTTED_START = new RegExp(`^(${SLOTTED})`);\n// NOTE: this supports 1 nested () pair for things like\n// :host(:not([selected]), more general support requires\n// parsing which seems like overkill\nlet HOST_PAREN = /(:host)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;\n// similar to HOST_PAREN\nlet SLOTTED_PAREN = /(?:::slotted)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;\nlet DIR_PAREN = /(.*):dir\\((?:(ltr|rtl))\\)/;\nlet CSS_CLASS_PREFIX = '.';\nlet PSEUDO_PREFIX = ':';\nlet CLASS = 'class';\nlet SELECTOR_NO_MATCH = 'should_not_match';\n\nexport default new StyleTransformer()\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\n\n/** @const {string} */\nconst infoKey = '__styleInfo';\n\nexport default class StyleInfo {\n /**\n * @param {Element} node\n * @return {StyleInfo}\n */\n static get(node) {\n if (node) {\n return node[infoKey];\n } else {\n return null;\n }\n }\n /**\n * @param {!Element} node\n * @param {StyleInfo} styleInfo\n * @return {StyleInfo}\n */\n static set(node, styleInfo) {\n node[infoKey] = styleInfo;\n return styleInfo;\n }\n /**\n * @param {StyleNode} ast\n * @param {Node=} placeholder\n * @param {Array<string>=} ownStylePropertyNames\n * @param {string=} elementName\n * @param {string=} typeExtension\n * @param {string=} cssBuild\n */\n constructor(ast, placeholder, ownStylePropertyNames, elementName, typeExtension, cssBuild) {\n /** @type {StyleNode} */\n this.styleRules = ast || null;\n /** @type {Node} */\n this.placeholder = placeholder || null;\n /** @type {!Array<string>} */\n this.ownStylePropertyNames = ownStylePropertyNames || [];\n /** @type {Array<Object>} */\n this.overrideStyleProperties = null;\n /** @type {string} */\n this.elementName = elementName || '';\n /** @type {string} */\n this.cssBuild = cssBuild || '';\n /** @type {string} */\n this.typeExtension = typeExtension || '';\n /** @type {Object<string, string>} */\n this.styleProperties = null;\n /** @type {?string} */\n this.scopeSelector = null;\n /** @type {HTMLStyleElement} */\n this.customStyle = null;\n }\n _getStyleRules() {\n return this.styleRules;\n }\n}\n\nStyleInfo.prototype['_getStyleRules'] = StyleInfo.prototype._getStyleRules;","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {removeCustomPropAssignment, StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport {nativeShadow} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport * as StyleUtil from './style-util.js';\nimport * as RX from './common-regex.js';\nimport StyleInfo from './style-info.js';\n\n// TODO: dedupe with shady\n/**\n * @param {string} selector\n * @return {boolean}\n * @this {Element}\n */\nconst matchesSelector = function(selector) {\n const method = this.matches || this.matchesSelector ||\n this.mozMatchesSelector || this.msMatchesSelector ||\n this.oMatchesSelector || this.webkitMatchesSelector;\n return method && method.call(this, selector);\n};\n\nconst IS_IE = navigator.userAgent.match('Trident');\n\nconst XSCOPE_NAME = 'x-scope';\n\nclass StyleProperties {\n get XSCOPE_NAME() {\n return XSCOPE_NAME;\n }\n/**\n * decorates styles with rule info and returns an array of used style property names\n *\n * @param {StyleNode} rules\n * @return {Array<string>}\n */\n decorateStyles(rules) {\n let self = this, props = {}, keyframes = [], ruleIndex = 0;\n StyleUtil.forEachRule(rules, function(rule) {\n self.decorateRule(rule);\n // mark in-order position of ast rule in styles block, used for cache key\n rule.index = ruleIndex++;\n self.collectPropertiesInCssText(rule.propertyInfo.cssText, props);\n }, function onKeyframesRule(rule) {\n keyframes.push(rule);\n });\n // Cache all found keyframes rules for later reference:\n rules._keyframes = keyframes;\n // return this list of property names *consumes* in these styles.\n let names = [];\n for (let i in props) {\n names.push(i);\n }\n return names;\n }\n\n // decorate a single rule with property info\n decorateRule(rule) {\n if (rule.propertyInfo) {\n return rule.propertyInfo;\n }\n let info = {}, properties = {};\n let hasProperties = this.collectProperties(rule, properties);\n if (hasProperties) {\n info.properties = properties;\n // TODO(sorvell): workaround parser seeing mixins as additional rules\n rule['rules'] = null;\n }\n info.cssText = this.collectCssText(rule);\n rule.propertyInfo = info;\n return info;\n }\n\n // collects the custom properties from a rule's cssText\n collectProperties(rule, properties) {\n let info = rule.propertyInfo;\n if (info) {\n if (info.properties) {\n Object.assign(properties, info.properties);\n return true;\n }\n } else {\n let m, rx = RX.VAR_ASSIGN;\n let cssText = rule['parsedCssText'];\n let value;\n let any;\n while ((m = rx.exec(cssText))) {\n // note: group 2 is var, 3 is mixin\n value = (m[2] || m[3]).trim();\n // value of 'inherit' or 'unset' is equivalent to not setting the property here\n if (value !== 'inherit' || value !== 'unset') {\n properties[m[1].trim()] = value;\n }\n any = true;\n }\n return any;\n }\n\n }\n\n // returns cssText of properties that consume variables/mixins\n collectCssText(rule) {\n return this.collectConsumingCssText(rule['parsedCssText']);\n }\n\n // NOTE: we support consumption inside mixin assignment\n // but not production, so strip out {...}\n collectConsumingCssText(cssText) {\n return cssText.replace(RX.BRACKETED, '')\n .replace(RX.VAR_ASSIGN, '');\n }\n\n collectPropertiesInCssText(cssText, props) {\n let m;\n while ((m = RX.VAR_CONSUMED.exec(cssText))) {\n let name = m[1];\n // This regex catches all variable names, and following non-whitespace char\n // If next char is not ':', then variable is a consumer\n if (m[2] !== ':') {\n props[name] = true;\n }\n }\n }\n\n // turns custom properties into realized values.\n reify(props) {\n // big perf optimization here: reify only *own* properties\n // since this object has __proto__ of the element's scope properties\n let names = Object.getOwnPropertyNames(props);\n for (let i=0, n; i < names.length; i++) {\n n = names[i];\n props[n] = this.valueForProperty(props[n], props);\n }\n }\n\n // given a property value, returns the reified value\n // a property value may be:\n // (1) a literal value like: red or 5px;\n // (2) a variable value like: var(--a), var(--a, red), or var(--a, --b) or\n // var(--a, var(--b));\n // (3) a literal mixin value like { properties }. Each of these properties\n // can have values that are: (a) literal, (b) variables, (c) @apply mixins.\n valueForProperty(property, props) {\n // case (1) default\n // case (3) defines a mixin and we have to reify the internals\n if (property) {\n if (property.indexOf(';') >=0) {\n property = this.valueForProperties(property, props);\n } else {\n // case (2) variable\n let self = this;\n let fn = function(prefix, value, fallback, suffix) {\n if (!value) {\n return prefix + suffix;\n }\n let propertyValue = self.valueForProperty(props[value], props);\n // if value is \"initial\", then the variable should be treated as unset\n if (!propertyValue || propertyValue === 'initial') {\n // fallback may be --a or var(--a) or literal\n propertyValue = self.valueForProperty(props[fallback] || fallback, props) ||\n fallback;\n } else if (propertyValue === 'apply-shim-inherit') {\n // CSS build will replace `inherit` with `apply-shim-inherit`\n // for use with native css variables.\n // Since we have full control, we can use `inherit` directly.\n propertyValue = 'inherit';\n }\n return prefix + (propertyValue || '') + suffix;\n };\n property = StyleUtil.processVariableAndFallback(property, fn);\n }\n }\n return property && property.trim() || '';\n }\n\n // note: we do not yet support mixin within mixin\n valueForProperties(property, props) {\n let parts = property.split(';');\n for (let i=0, p, m; i<parts.length; i++) {\n if ((p = parts[i])) {\n RX.MIXIN_MATCH.lastIndex = 0;\n m = RX.MIXIN_MATCH.exec(p);\n if (m) {\n p = this.valueForProperty(props[m[1]], props);\n } else {\n let colon = p.indexOf(':');\n if (colon !== -1) {\n let pp = p.substring(colon);\n pp = pp.trim();\n pp = this.valueForProperty(pp, props) || pp;\n p = p.substring(0, colon) + pp;\n }\n }\n parts[i] = (p && p.lastIndexOf(';') === p.length - 1) ?\n // strip trailing ;\n p.slice(0, -1) :\n p || '';\n }\n }\n return parts.join(';');\n }\n\n applyProperties(rule, props) {\n let output = '';\n // dynamically added sheets may not be decorated so ensure they are.\n if (!rule.propertyInfo) {\n this.decorateRule(rule);\n }\n if (rule.propertyInfo.cssText) {\n output = this.valueForProperties(rule.propertyInfo.cssText, props);\n }\n rule['cssText'] = output;\n }\n\n // Apply keyframe transformations to the cssText of a given rule. The\n // keyframeTransforms object is a map of keyframe names to transformer\n // functions which take in cssText and spit out transformed cssText.\n applyKeyframeTransforms(rule, keyframeTransforms) {\n let input = rule['cssText'];\n let output = rule['cssText'];\n if (rule.hasAnimations == null) {\n // Cache whether or not the rule has any animations to begin with:\n rule.hasAnimations = RX.ANIMATION_MATCH.test(input);\n }\n // If there are no animations referenced, we can skip transforms:\n if (rule.hasAnimations) {\n let transform;\n // If we haven't transformed this rule before, we iterate over all\n // transforms:\n if (rule.keyframeNamesToTransform == null) {\n rule.keyframeNamesToTransform = [];\n for (let keyframe in keyframeTransforms) {\n transform = keyframeTransforms[keyframe];\n output = transform(input);\n // If the transform actually changed the CSS text, we cache the\n // transform name for future use:\n if (input !== output) {\n input = output;\n rule.keyframeNamesToTransform.push(keyframe);\n }\n }\n } else {\n // If we already have a list of keyframe names that apply to this\n // rule, we apply only those keyframe name transforms:\n for (let i = 0; i < rule.keyframeNamesToTransform.length; ++i) {\n transform = keyframeTransforms[rule.keyframeNamesToTransform[i]];\n input = transform(input);\n }\n output = input;\n }\n }\n rule['cssText'] = output;\n }\n\n // Test if the rules in these styles matches the given `element` and if so,\n // collect any custom properties into `props`.\n /**\n * @param {StyleNode} rules\n * @param {Element} element\n */\n propertyDataFromStyles(rules, element) {\n let props = {}, self = this;\n // generates a unique key for these matches\n let o = [];\n // note: active rules excludes non-matching @media rules\n StyleUtil.forEachRule(rules, function(rule) {\n // TODO(sorvell): we could trim the set of rules at declaration\n // time to only include ones that have properties\n if (!rule.propertyInfo) {\n self.decorateRule(rule);\n }\n // match element against transformedSelector: selector may contain\n // unwanted uniquification and parsedSelector does not directly match\n // for :host selectors.\n let selectorToMatch = rule.transformedSelector || rule['parsedSelector'];\n if (element && rule.propertyInfo.properties && selectorToMatch) {\n if (matchesSelector.call(element, selectorToMatch)) {\n self.collectProperties(rule, props);\n // produce numeric key for these matches for lookup\n addToBitMask(rule.index, o);\n }\n }\n }, null, true);\n return {properties: props, key: o};\n }\n\n /**\n * @param {Element} scope\n * @param {StyleNode} rule\n * @param {string|undefined} cssBuild\n * @param {function(Object)} callback\n */\n whenHostOrRootRule(scope, rule, cssBuild, callback) {\n if (!rule.propertyInfo) {\n this.decorateRule(rule);\n }\n if (!rule.propertyInfo.properties) {\n return;\n }\n let {is, typeExtension} = StyleUtil.getIsExtends(scope);\n let hostScope = is ?\n StyleTransformer._calcHostScope(is, typeExtension) :\n 'html';\n let parsedSelector = rule['parsedSelector'];\n let isRoot = (parsedSelector === ':host > *' || parsedSelector === 'html');\n let isHost = parsedSelector.indexOf(':host') === 0 && !isRoot;\n // build info is either in scope (when scope is an element) or in the style\n // when scope is the default scope; note: this allows default scope to have\n // mixed mode built and unbuilt styles.\n if (cssBuild === 'shady') {\n // :root -> x-foo > *.x-foo for elements and html for custom-style\n isRoot = parsedSelector === (hostScope + ' > *.' + hostScope) || parsedSelector.indexOf('html') !== -1;\n // :host -> x-foo for elements, but sub-rules have .x-foo in them\n isHost = !isRoot && parsedSelector.indexOf(hostScope) === 0;\n }\n if (cssBuild === 'shadow') {\n isRoot = parsedSelector === ':host > *' || parsedSelector === 'html';\n isHost = isHost && !isRoot;\n }\n if (!isRoot && !isHost) {\n return;\n }\n let selectorToMatch = hostScope;\n if (isHost) {\n // need to transform :host because `:host` does not work with `matches`\n if (!rule.transformedSelector) {\n // transform :host into a matchable selector\n rule.transformedSelector =\n StyleTransformer._transformRuleCss(\n rule,\n StyleTransformer._transformComplexSelector,\n StyleTransformer._calcElementScope(is),\n hostScope\n );\n }\n selectorToMatch = rule.transformedSelector || hostScope;\n }\n callback({\n selector: selectorToMatch,\n isHost: isHost,\n isRoot: isRoot\n });\n }\n/**\n * @param {Element} scope\n * @param {StyleNode} rules\n * @return {Object}\n */\n hostAndRootPropertiesForScope(scope, rules) {\n let hostProps = {}, rootProps = {}, self = this;\n // note: active rules excludes non-matching @media rules\n let cssBuild = rules && rules['__cssBuild'];\n StyleUtil.forEachRule(rules, function(rule) {\n // if scope is StyleDefaults, use _element for matchesSelector\n self.whenHostOrRootRule(scope, rule, cssBuild, function(info) {\n let element = scope._element || scope;\n if (matchesSelector.call(element, info.selector)) {\n if (info.isHost) {\n self.collectProperties(rule, hostProps);\n } else {\n self.collectProperties(rule, rootProps);\n }\n }\n });\n }, null, true);\n return {rootProps: rootProps, hostProps: hostProps};\n }\n\n /**\n * @param {Element} element\n * @param {Object} properties\n * @param {string} scopeSelector\n */\n transformStyles(element, properties, scopeSelector) {\n let self = this;\n let {is, typeExtension} = StyleUtil.getIsExtends(element);\n let hostSelector = StyleTransformer\n ._calcHostScope(is, typeExtension);\n let rxHostSelector = element.extends ?\n '\\\\' + hostSelector.slice(0, -1) + '\\\\]' :\n hostSelector;\n let hostRx = new RegExp(RX.HOST_PREFIX + rxHostSelector +\n RX.HOST_SUFFIX);\n let rules = StyleInfo.get(element).styleRules;\n let keyframeTransforms =\n this._elementKeyframeTransforms(element, rules, scopeSelector);\n return StyleTransformer.elementStyles(element, rules, function(rule) {\n self.applyProperties(rule, properties);\n if (!nativeShadow &&\n !StyleUtil.isKeyframesSelector(rule) &&\n rule['cssText']) {\n // NOTE: keyframe transforms only scope munge animation names, so it\n // is not necessary to apply them in ShadowDOM.\n self.applyKeyframeTransforms(rule, keyframeTransforms);\n self._scopeSelector(rule, hostRx, hostSelector, scopeSelector);\n }\n });\n }\n\n /**\n * @param {Element} element\n * @param {StyleNode} rules\n * @param {string} scopeSelector\n * @return {Object}\n */\n _elementKeyframeTransforms(element, rules, scopeSelector) {\n let keyframesRules = rules._keyframes;\n let keyframeTransforms = {};\n if (!nativeShadow && keyframesRules) {\n // For non-ShadowDOM, we transform all known keyframes rules in\n // advance for the current scope. This allows us to catch keyframes\n // rules that appear anywhere in the stylesheet:\n for (let i = 0, keyframesRule = keyframesRules[i];\n i < keyframesRules.length;\n keyframesRule = keyframesRules[++i]) {\n this._scopeKeyframes(keyframesRule, scopeSelector);\n keyframeTransforms[keyframesRule['keyframesName']] =\n this._keyframesRuleTransformer(keyframesRule);\n }\n }\n return keyframeTransforms;\n }\n\n // Generate a factory for transforming a chunk of CSS text to handle a\n // particular scoped keyframes rule.\n /**\n * @param {StyleNode} keyframesRule\n * @return {function(string):string}\n */\n _keyframesRuleTransformer(keyframesRule) {\n return function(cssText) {\n return cssText.replace(\n keyframesRule.keyframesNameRx,\n keyframesRule.transformedKeyframesName);\n };\n }\n\n/**\n * Transforms `@keyframes` names to be unique for the current host.\n * Example: @keyframes foo-anim -> @keyframes foo-anim-x-foo-0\n *\n * @param {StyleNode} rule\n * @param {string} scopeId\n */\n _scopeKeyframes(rule, scopeId) {\n // Animation names are of the form [\\w-], so ensure that the name regex does not partially apply\n // to similarly named keyframe names by checking for a word boundary at the beginning and\n // a non-word boundary or `-` at the end.\n rule.keyframesNameRx = new RegExp(`\\\\b${rule['keyframesName']}(?!\\\\B|-)`, 'g');\n rule.transformedKeyframesName = rule['keyframesName'] + '-' + scopeId;\n rule.transformedSelector = rule.transformedSelector || rule['selector'];\n rule['selector'] = rule.transformedSelector.replace(\n rule['keyframesName'], rule.transformedKeyframesName);\n }\n\n // Strategy: x scope shim a selector e.g. to scope `.x-foo-42` (via classes):\n // non-host selector: .a.x-foo -> .x-foo-42 .a.x-foo\n // host selector: x-foo.wide -> .x-foo-42.wide\n // note: we use only the scope class (.x-foo-42) and not the hostSelector\n // (x-foo) to scope :host rules; this helps make property host rules\n // have low specificity. They are overrideable by class selectors but,\n // unfortunately, not by type selectors (e.g. overriding via\n // `.special` is ok, but not by `x-foo`).\n /**\n * @param {StyleNode} rule\n * @param {RegExp} hostRx\n * @param {string} hostSelector\n * @param {string} scopeId\n */\n _scopeSelector(rule, hostRx, hostSelector, scopeId) {\n rule.transformedSelector = rule.transformedSelector || rule['selector'];\n let selector = rule.transformedSelector;\n let scope = '.' + scopeId;\n let parts = selector.split(',');\n for (let i=0, l=parts.length, p; (i<l) && (p=parts[i]); i++) {\n parts[i] = p.match(hostRx) ?\n p.replace(hostSelector, scope) :\n scope + ' ' + p;\n }\n rule['selector'] = parts.join(',');\n }\n\n /**\n * @param {Element} element\n * @param {string} selector\n * @param {string} old\n */\n applyElementScopeSelector(element, selector, old) {\n let c = element.getAttribute('class') || '';\n let v = c;\n if (old) {\n v = c.replace(\n new RegExp('\\\\s*' + XSCOPE_NAME + '\\\\s*' + old + '\\\\s*', 'g'), ' ');\n }\n v += (v ? ' ' : '') + XSCOPE_NAME + ' ' + selector;\n if (c !== v) {\n StyleUtil.setElementClassRaw(element, v);\n }\n }\n\n /**\n * @param {HTMLElement} element\n * @param {Object} properties\n * @param {string} selector\n * @param {HTMLStyleElement} style\n * @return {HTMLStyleElement}\n */\n applyElementStyle(element, properties, selector, style) {\n // calculate cssText to apply\n let cssText = style ? style.textContent || '' :\n this.transformStyles(element, properties, selector);\n // if shady and we have a cached style that is not style, decrement\n let styleInfo = StyleInfo.get(element);\n let s = styleInfo.customStyle;\n if (s && !nativeShadow && (s !== style)) {\n s['_useCount']--;\n if (s['_useCount'] <= 0 && s.parentNode) {\n s.parentNode.removeChild(s);\n }\n }\n // apply styling always under native or if we generated style\n // or the cached style is not in document(!)\n if (nativeShadow) {\n // update existing style only under native\n if (styleInfo.customStyle) {\n styleInfo.customStyle.textContent = cssText;\n style = styleInfo.customStyle;\n // otherwise, if we have css to apply, do so\n } else if (cssText) {\n // apply css after the scope style of the element to help with\n // style precedence rules.\n style = StyleUtil.applyCss(cssText, selector, element.shadowRoot,\n styleInfo.placeholder);\n }\n } else {\n // shady and no cache hit\n if (!style) {\n // apply css after the scope style of the element to help with\n // style precedence rules.\n if (cssText) {\n style = StyleUtil.applyCss(cssText, selector, null,\n styleInfo.placeholder);\n }\n // shady and cache hit but not in document\n } else if (!style.parentNode) {\n if (IS_IE && cssText.indexOf('@media') > -1) {\n // @media rules may be stale in IE 10 and 11\n // refresh the text content of the style to revalidate them.\n style.textContent = cssText;\n }\n StyleUtil.applyStyle(style, null, styleInfo.placeholder);\n }\n }\n // ensure this style is our custom style and increment its use count.\n if (style) {\n style['_useCount'] = style['_useCount'] || 0;\n // increment use count if we changed styles\n if (styleInfo.customStyle != style) {\n style['_useCount']++;\n }\n styleInfo.customStyle = style;\n }\n return style;\n }\n\n /**\n * @param {Element} style\n * @param {Object} properties\n */\n applyCustomStyle(style, properties) {\n let rules = StyleUtil.rulesForStyle(/** @type {HTMLStyleElement} */(style));\n let self = this;\n style.textContent = StyleUtil.toCssText(rules, function(/** StyleNode */rule) {\n let css = rule['cssText'] = rule['parsedCssText'];\n if (rule.propertyInfo && rule.propertyInfo.cssText) {\n // remove property assignments\n // so next function isn't confused\n // NOTE: we have 3 categories of css:\n // (1) normal properties,\n // (2) custom property assignments (--foo: red;),\n // (3) custom property usage: border: var(--foo); @apply(--foo);\n // In elements, 1 and 3 are separated for efficiency; here they\n // are not and this makes this case unique.\n css = removeCustomPropAssignment(/** @type {string} */(css));\n // replace with reified properties, scenario is same as mixin\n rule['cssText'] = self.valueForProperties(css, properties);\n }\n });\n }\n}\n\n/**\n * @param {number} n\n * @param {Array<number>} bits\n */\nfunction addToBitMask(n, bits) {\n let o = parseInt(n / 32, 10);\n let v = 1 << (n % 32);\n bits[o] = (bits[o] || 0) | v;\n}\n\nexport default new StyleProperties();","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {applyStylePlaceHolder} from './style-util.js';\nimport {nativeShadow} from './style-settings.js';\n\n/** @type {Object<string, !Node>} */\nlet placeholderMap = {};\n\n/**\n * @const {CustomElementRegistry}\n */\nconst ce = window['customElements'];\nif (ce && !nativeShadow) {\n /**\n * @const {function(this:CustomElementRegistry, string,function(new:HTMLElement),{extends: string}=)}\n */\n const origDefine = ce['define'];\n /**\n * @param {string} name\n * @param {function(new:HTMLElement)} clazz\n * @param {{extends: string}=} options\n */\n const wrappedDefine = (name, clazz, options) => {\n placeholderMap[name] = applyStylePlaceHolder(name);\n origDefine.call(/** @type {!CustomElementRegistry} */(ce), name, clazz, options);\n };\n ce['define'] = wrappedDefine;\n}\n\nexport default placeholderMap;\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n'use strict';\n\nexport default class StyleCache {\n constructor(typeMax = 100) {\n // map element name -> [{properties, styleElement, scopeSelector}]\n this.cache = {};\n this.typeMax = typeMax;\n }\n\n _validate(cacheEntry, properties, ownPropertyNames) {\n for (let idx = 0; idx < ownPropertyNames.length; idx++) {\n let pn = ownPropertyNames[idx];\n if (cacheEntry.properties[pn] !== properties[pn]) {\n return false;\n }\n }\n return true;\n }\n\n store(tagname, properties, styleElement, scopeSelector) {\n let list = this.cache[tagname] || [];\n list.push({properties, styleElement, scopeSelector});\n if (list.length > this.typeMax) {\n list.shift();\n }\n this.cache[tagname] = list;\n }\n\n fetch(tagname, properties, ownPropertyNames) {\n let list = this.cache[tagname];\n if (!list) {\n return;\n }\n // reverse list for most-recent lookups\n for (let idx = list.length - 1; idx >= 0; idx--) {\n let entry = list[idx];\n if (this._validate(entry, properties, ownPropertyNames)) {\n return entry;\n }\n }\n }\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {nativeShadow} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport {getIsExtends} from './style-util.js';\n\nexport let flush = function() {};\n\n/**\n * @param {HTMLElement} element\n * @return {!Array<string>}\n */\nfunction getClasses(element) {\n let classes = [];\n if (element.classList) {\n classes = Array.from(element.classList);\n } else if (element instanceof window['SVGElement'] && element.hasAttribute('class')) {\n classes = element.getAttribute('class').split(/\\s+/);\n }\n return classes;\n}\n\n/**\n * @param {HTMLElement} element\n * @return {string}\n */\nfunction getCurrentScope(element) {\n let classes = getClasses(element);\n let idx = classes.indexOf(StyleTransformer.SCOPE_NAME);\n if (idx > -1) {\n return classes[idx + 1];\n }\n return '';\n}\n\n/**\n * @param {Array<MutationRecord|null>|null} mxns\n */\nfunction handler(mxns) {\n for (let x=0; x < mxns.length; x++) {\n let mxn = mxns[x];\n if (mxn.target === document.documentElement ||\n mxn.target === document.head) {\n continue;\n }\n for (let i=0; i < mxn.addedNodes.length; i++) {\n let n = mxn.addedNodes[i];\n if (n.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n n = /** @type {HTMLElement} */(n); // eslint-disable-line no-self-assign\n let root = n.getRootNode();\n let currentScope = getCurrentScope(n);\n // node was scoped, but now is in document\n if (currentScope && root === n.ownerDocument) {\n StyleTransformer.dom(n, currentScope, true);\n } else if (root.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n let newScope;\n let host = /** @type {ShadowRoot} */(root).host;\n // element may no longer be in a shadowroot\n if (!host) {\n continue;\n }\n newScope = getIsExtends(host).is;\n if (currentScope === newScope) {\n // make sure all the subtree elements are scoped correctly\n let unscoped = window['ShadyDOM']['nativeMethods']['querySelectorAll'].call(\n n, `:not(.${StyleTransformer.SCOPE_NAME})`);\n for (let j = 0; j < unscoped.length; j++) {\n StyleTransformer.element(unscoped[j], currentScope);\n }\n continue;\n }\n if (currentScope) {\n StyleTransformer.dom(n, currentScope, true);\n }\n StyleTransformer.dom(n, newScope);\n }\n }\n }\n}\n\nif (!nativeShadow) {\n let observer = new MutationObserver(handler);\n let start = (node) => {\n observer.observe(node, {childList: true, subtree: true});\n }\n let nativeCustomElements = (window['customElements'] &&\n !window['customElements']['polyfillWrapFlushCallback']);\n // need to start immediately with native custom elements\n // TODO(dfreedm): with polyfilled HTMLImports and native custom elements\n // excessive mutations may be observed; this can be optimized via cooperation\n // with the HTMLImports polyfill.\n if (nativeCustomElements) {\n start(document);\n } else {\n let delayedStart = () => {\n start(document.body);\n }\n // use polyfill timing if it's available\n if (window['HTMLImports']) {\n window['HTMLImports']['whenReady'](delayedStart);\n // otherwise push beyond native imports being ready\n // which requires RAF + readystate interactive.\n } else {\n requestAnimationFrame(function() {\n if (document.readyState === 'loading') {\n let listener = function() {\n delayedStart();\n document.removeEventListener('readystatechange', listener);\n }\n document.addEventListener('readystatechange', listener);\n } else {\n delayedStart();\n }\n });\n }\n }\n\n flush = function() {\n handler(observer.takeRecords());\n }\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/**\n * @const {!Object<string, !HTMLTemplateElement>}\n */\nconst templateMap = {};\nexport default templateMap;\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\nimport templateMap from './template-map.js';\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\n\n/*\n * Utilities for handling invalidating apply-shim mixins for a given template.\n *\n * The invalidation strategy involves keeping track of the \"current\" version of a template's mixins, and updating that count when a mixin is invalidated.\n * The template\n */\n\n/** @const {string} */\nconst CURRENT_VERSION = '_applyShimCurrentVersion';\n\n/** @const {string} */\nconst NEXT_VERSION = '_applyShimNextVersion';\n\n/** @const {string} */\nconst VALIDATING_VERSION = '_applyShimValidatingVersion';\n\n/**\n * @const {Promise<void>}\n */\nconst promise = Promise.resolve();\n\n/**\n * @param {string} elementName\n */\nexport function invalidate(elementName){\n let template = templateMap[elementName];\n if (template) {\n invalidateTemplate(template);\n }\n}\n\n/**\n * This function can be called multiple times to mark a template invalid\n * and signal that the style inside must be regenerated.\n *\n * Use `startValidatingTemplate` to begin an asynchronous validation cycle.\n * During that cycle, call `templateIsValidating` to see if the template must\n * be revalidated\n * @param {HTMLTemplateElement} template\n */\nexport function invalidateTemplate(template) {\n // default the current version to 0\n template[CURRENT_VERSION] = template[CURRENT_VERSION] || 0;\n // ensure the \"validating for\" flag exists\n template[VALIDATING_VERSION] = template[VALIDATING_VERSION] || 0;\n // increment the next version\n template[NEXT_VERSION] = (template[NEXT_VERSION] || 0) + 1;\n}\n\n/**\n * @param {string} elementName\n * @return {boolean}\n */\nexport function isValid(elementName) {\n let template = templateMap[elementName];\n if (template) {\n return templateIsValid(template);\n }\n return true;\n}\n\n/**\n * @param {HTMLTemplateElement} template\n * @return {boolean}\n */\nexport function templateIsValid(template) {\n return template[CURRENT_VERSION] === template[NEXT_VERSION];\n}\n\n/**\n * @param {string} elementName\n * @return {boolean}\n */\nexport function isValidating(elementName) {\n let template = templateMap[elementName];\n if (template) {\n return templateIsValidating(template);\n }\n return false;\n}\n\n/**\n * Returns true if the template is currently invalid and `startValidating` has been called since the last invalidation.\n * If false, the template must be validated.\n * @param {HTMLTemplateElement} template\n * @return {boolean}\n */\nexport function templateIsValidating(template) {\n return !templateIsValid(template) && template[VALIDATING_VERSION] === template[NEXT_VERSION];\n}\n\n/**\n * the template is marked as `validating` for one microtask so that all instances\n * found in the tree crawl of `applyStyle` will update themselves,\n * but the template will only be updated once.\n * @param {string} elementName\n*/\nexport function startValidating(elementName) {\n let template = templateMap[elementName];\n startValidatingTemplate(template);\n}\n\n/**\n * Begin an asynchronous invalidation cycle.\n * This should be called after every validation of a template\n *\n * After one microtask, the template will be marked as valid until the next call to `invalidateTemplate`\n * @param {HTMLTemplateElement} template\n */\nexport function startValidatingTemplate(template) {\n // remember that the current \"next version\" is the reason for this validation cycle\n template[VALIDATING_VERSION] = template[NEXT_VERSION];\n // however, there only needs to be one async task to clear the counters\n if (!template._validating) {\n template._validating = true;\n promise.then(function() {\n // sync the current version to let future invalidations cause a refresh cycle\n template[CURRENT_VERSION] = template[NEXT_VERSION];\n template._validating = false;\n });\n }\n}\n\n/**\n * @return {boolean}\n */\nexport function elementsAreInvalid() {\n for (let elementName in templateMap) {\n let template = templateMap[elementName];\n if (!templateIsValid(template)) {\n return true;\n }\n }\n return false;\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/** @type {Promise<void>} */\nlet readyPromise = null;\n\n/** @type {?function(?function())} */\nlet whenReady = window['HTMLImports'] && window['HTMLImports']['whenReady'] || null;\n\n/** @type {function()} */\nlet resolveFn;\n\n/**\n * @param {?function()} callback\n */\nexport default function documentWait(callback) {\n requestAnimationFrame(function() {\n if (whenReady) {\n whenReady(callback)\n } else {\n if (!readyPromise) {\n readyPromise = new Promise((resolve) => {resolveFn = resolve});\n if (document.readyState === 'complete') {\n resolveFn();\n } else {\n document.addEventListener('readystatechange', () => {\n if (document.readyState === 'complete') {\n resolveFn();\n }\n });\n }\n }\n readyPromise.then(function(){ callback && callback(); });\n }\n });\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {parse, StyleNode} from './css-parse.js';\nimport {nativeShadow, nativeCssVariables} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport * as StyleUtil from './style-util.js';\nimport StyleProperties from './style-properties.js';\nimport placeholderMap from './style-placeholder.js';\nimport StyleInfo from './style-info.js';\nimport StyleCache from './style-cache.js';\nimport {flush as watcherFlush} from './document-watcher.js';\nimport templateMap from './template-map.js';\nimport * as ApplyShimUtils from './apply-shim-utils.js';\nimport documentWait from './document-wait.js';\nimport {updateNativeProperties, detectMixin} from './common-utils.js';\nimport {CustomStyleInterfaceInterface} from './custom-style-interface.js'; // eslint-disable-line no-unused-vars\n\n/**\n * @const {StyleCache}\n */\nconst styleCache = new StyleCache();\n\nexport default class ScopingShim {\n constructor() {\n this._scopeCounter = {};\n this._documentOwner = document.documentElement;\n let ast = new StyleNode();\n ast['rules'] = [];\n this._documentOwnerStyleInfo = StyleInfo.set(this._documentOwner, new StyleInfo(ast));\n this._elementsHaveApplied = false;\n this._applyShim = null;\n /** @type {?CustomStyleInterfaceInterface} */\n this._customStyleInterface = null;\n documentWait(() => {\n this._ensure();\n });\n }\n flush() {\n watcherFlush();\n }\n _generateScopeSelector(name) {\n let id = this._scopeCounter[name] = (this._scopeCounter[name] || 0) + 1;\n return `${name}-${id}`;\n }\n getStyleAst(style) {\n return StyleUtil.rulesForStyle(style);\n }\n styleAstToString(ast) {\n return StyleUtil.toCssText(ast);\n }\n _gatherStyles(template) {\n return StyleUtil.gatherStyleText(template.content);\n }\n _getCssBuild(template) {\n let style = template.content.querySelector('style');\n if (!style) {\n return '';\n }\n return style.getAttribute('css-build') || '';\n }\n /**\n * Prepare the styling and template for the given element type\n *\n * @param {HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} typeExtension\n */\n prepareTemplate(template, elementName, typeExtension) {\n if (template._prepared) {\n return;\n }\n template._prepared = true;\n template.name = elementName;\n template.extends = typeExtension;\n templateMap[elementName] = template;\n let cssBuild = this._getCssBuild(template);\n let cssText = this._gatherStyles(template);\n let info = {\n is: elementName,\n extends: typeExtension,\n __cssBuild: cssBuild,\n };\n if (!nativeShadow) {\n StyleTransformer.dom(template.content, elementName);\n }\n // check if the styling has mixin definitions or uses\n this._ensure();\n let hasMixins = detectMixin(cssText)\n let ast = parse(cssText);\n // only run the applyshim transforms if there is a mixin involved\n if (hasMixins && nativeCssVariables && this._applyShim) {\n this._applyShim['transformRules'](ast, elementName);\n }\n template['_styleAst'] = ast;\n template._cssBuild = cssBuild;\n\n let ownPropertyNames = [];\n if (!nativeCssVariables) {\n ownPropertyNames = StyleProperties.decorateStyles(template['_styleAst']);\n }\n if (!ownPropertyNames.length || nativeCssVariables) {\n let root = nativeShadow ? template.content : null;\n let placeholder = placeholderMap[elementName];\n let style = this._generateStaticStyle(info, template['_styleAst'], root, placeholder);\n template._style = style;\n }\n template._ownPropertyNames = ownPropertyNames;\n }\n _generateStaticStyle(info, rules, shadowroot, placeholder) {\n let cssText = StyleTransformer.elementStyles(info, rules);\n if (cssText.length) {\n return StyleUtil.applyCss(cssText, info.is, shadowroot, placeholder);\n }\n }\n _prepareHost(host) {\n let {is, typeExtension} = StyleUtil.getIsExtends(host);\n let placeholder = placeholderMap[is];\n let template = templateMap[is];\n let ast;\n let ownStylePropertyNames;\n let cssBuild;\n if (template) {\n ast = template['_styleAst'];\n ownStylePropertyNames = template._ownPropertyNames;\n cssBuild = template._cssBuild;\n }\n return StyleInfo.set(host,\n new StyleInfo(\n ast,\n placeholder,\n ownStylePropertyNames,\n is,\n typeExtension,\n cssBuild\n )\n );\n }\n _ensureApplyShim() {\n if (this._applyShim) {\n return;\n } else if (window.ShadyCSS && window.ShadyCSS.ApplyShim) {\n this._applyShim = window.ShadyCSS.ApplyShim;\n this._applyShim['invalidCallback'] = ApplyShimUtils.invalidate;\n }\n }\n _ensureCustomStyleInterface() {\n if (this._customStyleInterface) {\n return;\n } else if (window.ShadyCSS && window.ShadyCSS.CustomStyleInterface) {\n this._customStyleInterface = /** @type {!CustomStyleInterfaceInterface} */(window.ShadyCSS.CustomStyleInterface);\n /** @type {function(!HTMLStyleElement)} */\n this._customStyleInterface['transformCallback'] = (style) => {this.transformCustomStyleForDocument(style)};\n this._customStyleInterface['validateCallback'] = () => {\n requestAnimationFrame(() => {\n if (this._customStyleInterface['enqueued'] || this._elementsHaveApplied) {\n this.flushCustomStyles();\n }\n })\n };\n }\n }\n _ensure() {\n this._ensureApplyShim();\n this._ensureCustomStyleInterface();\n }\n /**\n * Flush and apply custom styles to document\n */\n flushCustomStyles() {\n this._ensure();\n if (!this._customStyleInterface) {\n return;\n }\n let customStyles = this._customStyleInterface['processStyles']();\n // early return if custom-styles don't need validation\n if (!this._customStyleInterface['enqueued']) {\n return;\n }\n if (!nativeCssVariables) {\n this._updateProperties(this._documentOwner, this._documentOwnerStyleInfo);\n this._applyCustomStyles(customStyles);\n } else {\n this._revalidateCustomStyleApplyShim(customStyles);\n }\n this._customStyleInterface['enqueued'] = false;\n // if custom elements have upgraded and there are no native css variables, we must recalculate the whole tree\n if (this._elementsHaveApplied && !nativeCssVariables) {\n this.styleDocument();\n }\n }\n /**\n * Apply styles for the given element\n *\n * @param {!HTMLElement} host\n * @param {Object=} overrideProps\n */\n styleElement(host, overrideProps) {\n let {is} = StyleUtil.getIsExtends(host);\n let styleInfo = StyleInfo.get(host);\n if (!styleInfo) {\n styleInfo = this._prepareHost(host);\n }\n // Only trip the `elementsHaveApplied` flag if a node other that the root document has `applyStyle` called\n if (!this._isRootOwner(host)) {\n this._elementsHaveApplied = true;\n }\n if (overrideProps) {\n styleInfo.overrideStyleProperties =\n styleInfo.overrideStyleProperties || {};\n Object.assign(styleInfo.overrideStyleProperties, overrideProps);\n }\n if (!nativeCssVariables) {\n this._updateProperties(host, styleInfo);\n if (styleInfo.ownStylePropertyNames && styleInfo.ownStylePropertyNames.length) {\n this._applyStyleProperties(host, styleInfo);\n }\n } else {\n if (styleInfo.overrideStyleProperties) {\n updateNativeProperties(host, styleInfo.overrideStyleProperties);\n }\n let template = templateMap[is];\n // bail early if there is no shadowroot for this element\n if (!template && !this._isRootOwner(host)) {\n return;\n }\n if (template && template._style && !ApplyShimUtils.templateIsValid(template)) {\n // update template\n if (!ApplyShimUtils.templateIsValidating(template)) {\n this._ensure();\n this._applyShim && this._applyShim['transformRules'](template['_styleAst'], is);\n template._style.textContent = StyleTransformer.elementStyles(host, styleInfo.styleRules);\n ApplyShimUtils.startValidatingTemplate(template);\n }\n // update instance if native shadowdom\n if (nativeShadow) {\n let root = host.shadowRoot;\n if (root) {\n let style = root.querySelector('style');\n style.textContent = StyleTransformer.elementStyles(host, styleInfo.styleRules);\n }\n }\n styleInfo.styleRules = template['_styleAst'];\n }\n }\n }\n _styleOwnerForNode(node) {\n let root = node.getRootNode();\n let host = root.host;\n if (host) {\n if (StyleInfo.get(host)) {\n return host;\n } else {\n return this._styleOwnerForNode(host);\n }\n }\n return this._documentOwner;\n }\n _isRootOwner(node) {\n return (node === this._documentOwner);\n }\n _applyStyleProperties(host, styleInfo) {\n let is = StyleUtil.getIsExtends(host).is;\n let cacheEntry = styleCache.fetch(is, styleInfo.styleProperties, styleInfo.ownStylePropertyNames);\n let cachedScopeSelector = cacheEntry && cacheEntry.scopeSelector;\n let cachedStyle = cacheEntry ? cacheEntry.styleElement : null;\n let oldScopeSelector = styleInfo.scopeSelector;\n // only generate new scope if cached style is not found\n styleInfo.scopeSelector = cachedScopeSelector || this._generateScopeSelector(is);\n let style = StyleProperties.applyElementStyle(host, styleInfo.styleProperties, styleInfo.scopeSelector, cachedStyle);\n if (!nativeShadow) {\n StyleProperties.applyElementScopeSelector(host, styleInfo.scopeSelector, oldScopeSelector);\n }\n if (!cacheEntry) {\n styleCache.store(is, styleInfo.styleProperties, style, styleInfo.scopeSelector);\n }\n return style;\n }\n _updateProperties(host, styleInfo) {\n let owner = this._styleOwnerForNode(host);\n let ownerStyleInfo = StyleInfo.get(owner);\n let ownerProperties = ownerStyleInfo.styleProperties;\n let props = Object.create(ownerProperties || null);\n let hostAndRootProps = StyleProperties.hostAndRootPropertiesForScope(host, styleInfo.styleRules);\n let propertyData = StyleProperties.propertyDataFromStyles(ownerStyleInfo.styleRules, host);\n let propertiesMatchingHost = propertyData.properties\n Object.assign(\n props,\n hostAndRootProps.hostProps,\n propertiesMatchingHost,\n hostAndRootProps.rootProps\n );\n this._mixinOverrideStyles(props, styleInfo.overrideStyleProperties);\n StyleProperties.reify(props);\n styleInfo.styleProperties = props;\n }\n _mixinOverrideStyles(props, overrides) {\n for (let p in overrides) {\n let v = overrides[p];\n // skip override props if they are not truthy or 0\n // in order to fall back to inherited values\n if (v || v === 0) {\n props[p] = v;\n }\n }\n }\n /**\n * Update styles of the whole document\n *\n * @param {Object=} properties\n */\n styleDocument(properties) {\n this.styleSubtree(this._documentOwner, properties);\n }\n /**\n * Update styles of a subtree\n *\n * @param {!HTMLElement} host\n * @param {Object=} properties\n */\n styleSubtree(host, properties) {\n let root = host.shadowRoot;\n if (root || this._isRootOwner(host)) {\n this.styleElement(host, properties);\n }\n // process the shadowdom children of `host`\n let shadowChildren = root && (root.children || root.childNodes);\n if (shadowChildren) {\n for (let i = 0; i < shadowChildren.length; i++) {\n let c = /** @type {!HTMLElement} */(shadowChildren[i]);\n this.styleSubtree(c);\n }\n } else {\n // process the lightdom children of `host`\n let children = host.children || host.childNodes;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n let c = /** @type {!HTMLElement} */(children[i]);\n this.styleSubtree(c);\n }\n }\n }\n }\n /* Custom Style operations */\n _revalidateCustomStyleApplyShim(customStyles) {\n for (let i = 0; i < customStyles.length; i++) {\n let c = customStyles[i];\n let s = this._customStyleInterface['getStyleForCustomStyle'](c);\n if (s) {\n this._revalidateApplyShim(s);\n }\n }\n }\n _applyCustomStyles(customStyles) {\n for (let i = 0; i < customStyles.length; i++) {\n let c = customStyles[i];\n let s = this._customStyleInterface['getStyleForCustomStyle'](c);\n if (s) {\n StyleProperties.applyCustomStyle(s, this._documentOwnerStyleInfo.styleProperties);\n }\n }\n }\n transformCustomStyleForDocument(style) {\n let ast = StyleUtil.rulesForStyle(style);\n StyleUtil.forEachRule(ast, (rule) => {\n if (nativeShadow) {\n StyleTransformer.normalizeRootSelector(rule);\n } else {\n StyleTransformer.documentRule(rule);\n }\n if (nativeCssVariables) {\n this._ensure();\n this._applyShim && this._applyShim['transformRule'](rule);\n }\n });\n if (nativeCssVariables) {\n style.textContent = StyleUtil.toCssText(ast);\n } else {\n this._documentOwnerStyleInfo.styleRules['rules'].push(ast);\n }\n }\n _revalidateApplyShim(style) {\n if (nativeCssVariables && this._applyShim) {\n let ast = StyleUtil.rulesForStyle(style);\n this._ensure();\n this._applyShim['transformRules'](ast);\n style.textContent = StyleUtil.toCssText(ast);\n }\n }\n getComputedStyleValue(element, property) {\n let value;\n if (!nativeCssVariables) {\n // element is either a style host, or an ancestor of a style host\n let styleInfo = StyleInfo.get(element) || StyleInfo.get(this._styleOwnerForNode(element));\n value = styleInfo.styleProperties[property];\n }\n // fall back to the property value from the computed styling\n value = value || window.getComputedStyle(element).getPropertyValue(property);\n // trim whitespace that can come after the `:` in css\n // example: padding: 2px -> \" 2px\"\n return value ? value.trim() : '';\n }\n // given an element and a classString, replaces\n // the element's class with the provided classString and adds\n // any necessary ShadyCSS static and property based scoping selectors\n setElementClass(element, classString) {\n let root = element.getRootNode();\n let classes = classString ? classString.split(/\\s/) : [];\n let scopeName = root.host && root.host.localName;\n // If no scope, try to discover scope name from existing class.\n // This can occur if, for example, a template stamped element that\n // has been scoped is manipulated when not in a root.\n if (!scopeName) {\n var classAttr = element.getAttribute('class');\n if (classAttr) {\n let k$ = classAttr.split(/\\s/);\n for (let i=0; i < k$.length; i++) {\n if (k$[i] === StyleTransformer.SCOPE_NAME) {\n scopeName = k$[i+1];\n break;\n }\n }\n }\n }\n if (scopeName) {\n classes.push(StyleTransformer.SCOPE_NAME, scopeName);\n }\n if (!nativeCssVariables) {\n let styleInfo = StyleInfo.get(element);\n if (styleInfo && styleInfo.scopeSelector) {\n classes.push(StyleProperties.XSCOPE_NAME, styleInfo.scopeSelector);\n }\n }\n StyleUtil.setElementClassRaw(element, classes.join(' '));\n }\n _styleInfoForNode(node) {\n return StyleInfo.get(node);\n }\n}\n\n/* exports */\nScopingShim.prototype['flush'] = ScopingShim.prototype.flush;\nScopingShim.prototype['prepareTemplate'] = ScopingShim.prototype.prepareTemplate;\nScopingShim.prototype['styleElement'] = ScopingShim.prototype.styleElement;\nScopingShim.prototype['styleDocument'] = ScopingShim.prototype.styleDocument;\nScopingShim.prototype['styleSubtree'] = ScopingShim.prototype.styleSubtree;\nScopingShim.prototype['getComputedStyleValue'] = ScopingShim.prototype.getComputedStyleValue;\nScopingShim.prototype['setElementClass'] = ScopingShim.prototype.setElementClass;\nScopingShim.prototype['_styleInfoForNode'] = ScopingShim.prototype._styleInfoForNode;\nScopingShim.prototype['transformCustomStyleForDocument'] = ScopingShim.prototype.transformCustomStyleForDocument;\nScopingShim.prototype['getStyleAst'] = ScopingShim.prototype.getStyleAst;\nScopingShim.prototype['styleAstToString'] = ScopingShim.prototype.styleAstToString;\nScopingShim.prototype['flushCustomStyles'] = ScopingShim.prototype.flushCustomStyles;\nObject.defineProperties(ScopingShim.prototype, {\n 'nativeShadow': {\n get() {\n return nativeShadow;\n }\n },\n 'nativeCss': {\n get() {\n return nativeCssVariables;\n }\n }\n});\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport { MIXIN_MATCH, VAR_ASSIGN } from './common-regex.js';\n\n/**\n * @param {Element} element\n * @param {Object=} properties\n */\nexport function updateNativeProperties(element, properties) {\n // remove previous properties\n for (let p in properties) {\n // NOTE: for bc with shim, don't apply null values.\n if (p === null) {\n element.style.removeProperty(p);\n } else {\n element.style.setProperty(p, properties[p]);\n }\n }\n}\n\n/**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\nexport function getComputedStyleValue(element, property) {\n /**\n * @const {string}\n */\n const value = window.getComputedStyle(element).getPropertyValue(property);\n if (!value) {\n return '';\n } else {\n return value.trim();\n }\n}\n\n/**\n * return true if `cssText` contains a mixin definition or consumption\n * @param {string} cssText\n * @return {boolean}\n */\nexport function detectMixin(cssText) {\n const has = MIXIN_MATCH.test(cssText) || VAR_ASSIGN.test(cssText);\n // reset state of the regexes\n MIXIN_MATCH.lastIndex = 0;\n VAR_ASSIGN.lastIndex = 0;\n return has;\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport ScopingShim from '../src/scoping-shim.js';\nimport {nativeCssVariables, nativeShadow} from '../src/style-settings.js';\n\n/** @const {ScopingShim} */\nconst scopingShim = new ScopingShim();\n\nlet ApplyShim, CustomStyleInterface;\n\nif (window['ShadyCSS']) {\n ApplyShim = window['ShadyCSS']['ApplyShim'];\n CustomStyleInterface = window['ShadyCSS']['CustomStyleInterface'];\n}\n\nwindow.ShadyCSS = {\n ScopingShim: scopingShim,\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} elementExtends\n */\n prepareTemplate(template, elementName, elementExtends) {\n scopingShim.flushCustomStyles();\n scopingShim.prepareTemplate(template, elementName, elementExtends)\n },\n\n /**\n * @param {!HTMLElement} element\n * @param {Object=} properties\n */\n styleSubtree(element, properties) {\n scopingShim.flushCustomStyles();\n scopingShim.styleSubtree(element, properties);\n },\n\n /**\n * @param {!HTMLElement} element\n */\n styleElement(element) {\n scopingShim.flushCustomStyles();\n scopingShim.styleElement(element);\n },\n\n /**\n * @param {Object=} properties\n */\n styleDocument(properties) {\n scopingShim.flushCustomStyles();\n scopingShim.styleDocument(properties);\n },\n\n /**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\n getComputedStyleValue(element, property) {\n return scopingShim.getComputedStyleValue(element, property);\n },\n\n nativeCss: nativeCssVariables,\n\n nativeShadow: nativeShadow\n};\n\nif (ApplyShim) {\n window.ShadyCSS.ApplyShim = ApplyShim;\n}\n\nif (CustomStyleInterface) {\n window.ShadyCSS.CustomStyleInterface = CustomStyleInterface;\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n'use strict';\n\n/*\n * Polyfills loaded: Custom Elements, Shady DOM/Shady CSS\n * Used in: Safari 9, Firefox, Edge\n */\n\nimport '../node_modules/@webcomponents/shadydom/src/shadydom.js';\nimport '../node_modules/@webcomponents/custom-elements/src/custom-elements.js';\nimport '../node_modules/@webcomponents/shadycss/entrypoints/scoping-shim.js';\n\nlet document = window.document;\n// global for (1) existence means `WebComponentsReady` will file,\n// (2) WebComponents.ready == true means event has fired.\nwindow.WebComponents = window.WebComponents || {};\n\nfunction fire() {\n requestAnimationFrame(() => {\n window.WebComponents.ready = true;\n window.document.dispatchEvent(new CustomEvent('WebComponentsReady', { bubbles: true }));\n })\n}\n\nfunction wait() {\n fire();\n document.removeEventListener('readystatechange', wait);\n}\n\nif (document.readyState !== 'loading') {\n fire();\n} else {\n document.addEventListener('readystatechange', wait);\n}"]} \ No newline at end of file