diff --git a/cmd/memlat/main.go b/cmd/memlat/main.go
index f7ae491..4c4e803 100644
--- a/cmd/memlat/main.go
+++ b/cmd/memlat/main.go
@@ -74,9 +74,11 @@ package main
import (
"bufio"
+ "embed"
"encoding/json"
"flag"
"fmt"
+ "io/fs"
"log"
"net/http"
"net/url"
@@ -89,11 +91,8 @@ import (
"github.com/aclements/go-perf/perffile"
)
-//go:generate go run makestatic.go
-
-// staticFiles is the static file tree baked in to the binary. This is
-// assigned by an init function if the static files are available.
-var staticFiles mapFS
+//go:embed static
+var staticFiles embed.FS
// TODO: Open a browser automatically. Maybe bind to any address in
// this mode.
@@ -112,15 +111,6 @@ func main() {
flag.Usage()
os.Exit(1)
}
- if *flagDocRoot == "" && staticFiles == nil {
- // No baked-in static file system.
- *flagDocRoot = "static"
- fi, err := os.Stat(*flagDocRoot)
- if err != nil || !fi.IsDir() {
- fmt.Fprintln(os.Stderr, "static assets not found; please specify -docroot")
- os.Exit(1)
- }
- }
fmt.Fprintln(os.Stderr, "loading profile...")
db := parsePerf(*flagInput)
@@ -128,8 +118,11 @@ func main() {
mux := http.NewServeMux()
if *flagDocRoot == "" {
- mux.Handle("/", http.FileServer(staticFiles))
+ // Use the embedded static assets.
+ sub, _ := fs.Sub(staticFiles, "static")
+ mux.Handle("/", http.FileServer(http.FS(sub)))
} else {
+ // Use assets from the file system.
mux.Handle("/", http.FileServer(http.Dir(*flagDocRoot)))
}
mux.Handle("/h", &heatMapHandler{db})
diff --git a/cmd/memlat/makestatic.go b/cmd/memlat/makestatic.go
deleted file mode 100644
index 6975112..0000000
--- a/cmd/memlat/makestatic.go
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-// Command makestatic reads all files from "static/" and generates
-// "static.go", which declares a map from file name strings to strings
-// containing the contents of the input files.
-package main
-
-import (
- "bufio"
- "bytes"
- "fmt"
- "io/ioutil"
- "log"
- "os"
- "path/filepath"
- "strings"
- "unicode/utf8"
-)
-
-func main() {
- f, err := os.Create("static.go")
- if err != nil {
- log.Fatal(err)
- }
- defer f.Close()
-
- w := bufio.NewWriter(f)
- fmt.Fprintf(w, `// DO NOT EDIT. Generated by makestatic.go
-
-package main
-
-import "time"
-
-func init() {
- staticFiles = mapFS{
-`)
- filepath.Walk("static", func(path string, info os.FileInfo, err error) error {
- if err != nil {
- log.Fatal(err)
- }
- if strings.Contains(path, "/demo") || strings.Contains(path, "/test") || strings.Contains(path, "README") {
- return nil
- }
- if info.IsDir() {
- path += "/"
- }
- fmt.Fprintf(w, "\t%q: {%q, time.Unix(0, %d), %v, ", path[6:], path[6:], info.ModTime().UnixNano(), info.IsDir())
- if info.IsDir() {
- fmt.Fprintf(w, "``")
- } else {
- b, err := ioutil.ReadFile(path)
- if err != nil {
- log.Fatal(err)
- }
- if utf8.Valid(b) {
- fmt.Fprintf(w, "`%s`", sanitize(b))
- } else {
- fmt.Fprintf(w, "%q", b)
- }
- }
- fmt.Fprintf(w, "},\n")
- return nil
- })
- fmt.Fprintln(w, "\t}")
- fmt.Fprintln(w, "}")
- if err := w.Flush(); err != nil {
- log.Fatal(err)
- }
- if err := f.Close(); err != nil {
- log.Fatal(err)
- }
-}
-
-// sanitize prepares a valid UTF-8 string as a raw string constant.
-func sanitize(b []byte) []byte {
- // Replace ` with `+"`"+`
- return bytes.Replace(b, []byte("`"), []byte("`+\"`\"+`"), -1)
-}
diff --git a/cmd/memlat/mapfs.go b/cmd/memlat/mapfs.go
deleted file mode 100644
index 2f572ca..0000000
--- a/cmd/memlat/mapfs.go
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
- "net/http"
- "os"
- "path"
- "strings"
- "time"
-)
-
-type mapFS map[string]*mapFSFile
-
-func (m mapFS) Open(name string) (http.File, error) {
- f, ok := m[name]
- if !ok {
- return nil, os.ErrNotExist
- }
- return mapFSReader{strings.NewReader(f.content), f, m}, nil
-}
-
-type mapFSReader struct {
- *strings.Reader
- info *mapFSFile
- fs mapFS
-}
-
-func (mapFSReader) Close() error {
- return nil
-}
-
-func (m mapFSReader) Readdir(count int) ([]os.FileInfo, error) {
- if !m.info.IsDir() {
- return nil, os.ErrInvalid
- }
- out := []os.FileInfo{}
- for _, file := range m.fs {
- if !strings.HasPrefix(file.name, m.info.name) {
- continue
- }
- rel := file.name[len(m.info.name)+1:]
- nsep := strings.Count(rel, "/")
- if nsep == 0 || nsep == 1 && strings.HasSuffix(rel, "/") {
- out = append(out, file)
- }
- }
- return out, nil
-}
-
-func (m mapFSReader) Stat() (os.FileInfo, error) {
- return m.info, nil
-}
-
-type mapFSFile struct {
- name string
- modTime time.Time
- isDir bool
- content string
-}
-
-func (f *mapFSFile) Name() string {
- return path.Base(f.name)
-}
-
-func (f *mapFSFile) Size() int64 {
- return int64(len(f.content))
-}
-
-func (f *mapFSFile) Mode() os.FileMode {
- return 0777
-}
-
-func (f *mapFSFile) ModTime() time.Time {
- return f.modTime
-}
-
-func (f *mapFSFile) IsDir() bool {
- return f.isDir
-}
-
-func (f *mapFSFile) Sys() interface{} {
- return nil
-}
diff --git a/cmd/memlat/static.go b/cmd/memlat/static.go
deleted file mode 100644
index f9f0b0a..0000000
--- a/cmd/memlat/static.go
+++ /dev/null
@@ -1,36484 +0,0 @@
-// DO NOT EDIT. Generated by makestatic.go
-
-package main
-
-import "time"
-
-func init() {
- staticFiles = mapFS{
- "/": {"/", time.Unix(0, 1553308639164562490), true, ``},
- "/bower.json": {"/bower.json", time.Unix(0, 1440514094428199912), false, `{
- "name": "memlat",
- "version": "0.0.0",
- "homepage": "https://github.com/aclements/go-perf",
- "authors": [
- "Austin Clements <(none)>"
- ],
- "license": "MIT",
- "ignore": [
- "**/.*",
- "node_modules",
- "bower_components",
- "test",
- "tests"
- ],
- "dependencies": {
- "polymer": "Polymer/polymer#^1.0.0",
- "paper-button": "PolymerElements/paper-button#~1.0.3",
- "paper-tabs": "PolymerElements/paper-tabs#~1.0.2",
- "paper-styles": "PolymerElements/paper-styles#~1.0.11",
- "iron-pages": "PolymerElements/iron-pages#~1.0.3",
- "iron-ajax": "PolymerElements/iron-ajax#~1.0.4",
- "paper-card": "PolymerElements/paper-card#~1.0.3",
- "paper-header-panel": "PolymerElements/paper-header-panel#~1.0.4",
- "paper-toolbar": "PolymerElements/paper-toolbar#~1.0.4",
- "iron-icon": "PolymerElements/iron-icon#~1.0.3",
- "iron-icons": "PolymerElements/iron-icons#~1.0.3"
- }
-}
-`},
- "/bower_components/": {"/bower_components/", time.Unix(0, 1440513533109507578), true, ``},
- "/bower_components/font-roboto/": {"/bower_components/font-roboto/", time.Unix(0, 1440513533049507424), true, ``},
- "/bower_components/font-roboto/.bower.json": {"/bower_components/font-roboto/.bower.json", time.Unix(0, 1440513533049507424), false, `{
- "name": "font-roboto",
- "version": "1.0.1",
- "description": "An HTML import for Roboto",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "font",
- "roboto"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/font-roboto.git"
- },
- "main": "roboto.html",
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/font-roboto/",
- "ignore": [
- "/.*"
- ],
- "_release": "1.0.1",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.1",
- "commit": "21ce9b51a417fa9995cf6606e886aba0728f70a1"
- },
- "_source": "git://github.com/PolymerElements/font-roboto.git",
- "_target": "^1.0.1",
- "_originalSource": "PolymerElements/font-roboto"
-}`},
- "/bower_components/font-roboto/bower.json": {"/bower_components/font-roboto/bower.json", time.Unix(0, 1440513533049507424), false, `{
- "name": "font-roboto",
- "version": "1.0.1",
- "description": "An HTML import for Roboto",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "font",
- "roboto"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/font-roboto.git"
- },
- "main": "roboto.html",
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/font-roboto/",
- "ignore": [
- "/.*"
- ]
-}
-`},
- "/bower_components/font-roboto/roboto.html": {"/bower_components/font-roboto/roboto.html", time.Unix(0, 1440513533049507424), false, `
-
-
-`},
- "/bower_components/iron-a11y-keys-behavior/": {"/bower_components/iron-a11y-keys-behavior/", time.Unix(0, 1440513533053507434), true, ``},
- "/bower_components/iron-a11y-keys-behavior/.bower.json": {"/bower_components/iron-a11y-keys-behavior/.bower.json", time.Unix(0, 1440513533049507424), false, `{
- "name": "iron-a11y-keys-behavior",
- "version": "1.0.5",
- "description": "A behavior that enables keybindings for greater a11y.",
- "keywords": [
- "web-components",
- "web-component",
- "polymer",
- "a11y",
- "input"
- ],
- "authors": [
- "The Polymer Authors"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-a11y-keys-behavior.git"
- },
- "main": "iron-a11y-keys-behavior.html",
- "license": "http://polymer.github.io/LICENSE.txt",
- "dependencies": {
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "paper-styles": "PolymerElements/paper-styles#^1.0.2",
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "homepage": "https://github.com/polymerelements/iron-a11y-keys-behavior",
- "_release": "1.0.5",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.5",
- "commit": "cf833eab5c55a26c5aa92e56d3fcb079120ce66a"
- },
- "_source": "git://github.com/polymerelements/iron-a11y-keys-behavior.git",
- "_target": "^1.0.0",
- "_originalSource": "polymerelements/iron-a11y-keys-behavior"
-}`},
- "/bower_components/iron-a11y-keys-behavior/.gitignore": {"/bower_components/iron-a11y-keys-behavior/.gitignore", time.Unix(0, 1440513533049507424), false, `bower_components
-`},
- "/bower_components/iron-a11y-keys-behavior/bower.json": {"/bower_components/iron-a11y-keys-behavior/bower.json", time.Unix(0, 1440513533049507424), false, `{
- "name": "iron-a11y-keys-behavior",
- "version": "1.0.5",
- "description": "A behavior that enables keybindings for greater a11y.",
- "keywords": [
- "web-components",
- "web-component",
- "polymer",
- "a11y",
- "input"
- ],
- "authors": [
- "The Polymer Authors"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-a11y-keys-behavior.git"
- },
- "main": "iron-a11y-keys-behavior.html",
- "license": "http://polymer.github.io/LICENSE.txt",
- "dependencies": {
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "paper-styles": "PolymerElements/paper-styles#^1.0.2",
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/iron-a11y-keys-behavior/index.html": {"/bower_components/iron-a11y-keys-behavior/index.html", time.Unix(0, 1440513533053507434), false, `
-
-
-
-
- iron-a11y-keys-behavior
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-a11y-keys-behavior/iron-a11y-keys-behavior.html": {"/bower_components/iron-a11y-keys-behavior/iron-a11y-keys-behavior.html", time.Unix(0, 1440513533053507434), false, `
-
-
-
-
-`},
- "/bower_components/iron-ajax/": {"/bower_components/iron-ajax/", time.Unix(0, 1440513533057507445), true, ``},
- "/bower_components/iron-ajax/.bower.json": {"/bower_components/iron-ajax/.bower.json", time.Unix(0, 1440513533053507434), false, `{
- "name": "iron-ajax",
- "version": "1.0.4",
- "description": "Makes it easy to make ajax calls and parse the response",
- "private": true,
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "ajax"
- ],
- "main": [
- "iron-ajax.html",
- "iron-request.html"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-ajax.git"
- },
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/iron-ajax",
- "ignore": [],
- "dependencies": {
- "promise-polyfill": "polymerlabs/promise-polyfill#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0",
- "iron-image": "polymerelements/iron-image#^1.0.0",
- "paper-styles": "polymerelements/paper-styles#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "_release": "1.0.4",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.4",
- "commit": "0aaba00fc2891040d2fbf35dcc9816b7655f2bed"
- },
- "_source": "git://github.com/PolymerElements/iron-ajax.git",
- "_target": "~1.0.4",
- "_originalSource": "PolymerElements/iron-ajax",
- "_direct": true
-}`},
- "/bower_components/iron-ajax/.gitignore": {"/bower_components/iron-ajax/.gitignore", time.Unix(0, 1440513533053507434), false, `bower_components
-`},
- "/bower_components/iron-ajax/bower.json": {"/bower_components/iron-ajax/bower.json", time.Unix(0, 1440513533053507434), false, `{
- "name": "iron-ajax",
- "version": "1.0.4",
- "description": "Makes it easy to make ajax calls and parse the response",
- "private": true,
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "ajax"
- ],
- "main": [
- "iron-ajax.html",
- "iron-request.html"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-ajax.git"
- },
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/iron-ajax",
- "ignore": [],
- "dependencies": {
- "promise-polyfill": "polymerlabs/promise-polyfill#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0",
- "iron-image": "polymerelements/iron-image#^1.0.0",
- "paper-styles": "polymerelements/paper-styles#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/iron-ajax/hero.svg": {"/bower_components/iron-ajax/hero.svg", time.Unix(0, 1440513533057507445), false, `
-
-
-
-`},
- "/bower_components/iron-ajax/index.html": {"/bower_components/iron-ajax/index.html", time.Unix(0, 1440513533057507445), false, `
-
-
-
-
- iron-ajax
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-ajax/iron-ajax.html": {"/bower_components/iron-ajax/iron-ajax.html", time.Unix(0, 1440513533057507445), false, `
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-ajax/iron-request.html": {"/bower_components/iron-ajax/iron-request.html", time.Unix(0, 1440513533057507445), false, `
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-behaviors/": {"/bower_components/iron-behaviors/", time.Unix(0, 1440513533061507455), true, ``},
- "/bower_components/iron-behaviors/.bower.json": {"/bower_components/iron-behaviors/.bower.json", time.Unix(0, 1440513533057507445), false, `{
- "name": "iron-behaviors",
- "version": "1.0.7",
- "description": "Provides a set of behaviors for the iron elements",
- "private": true,
- "authors": [
- "The Polymer Authors"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-behaviors.git"
- },
- "main": [
- "iron-button-state.html",
- "iron-control-state.html"
- ],
- "license": "http://polymer.github.io/LICENSE.txt",
- "dependencies": {
- "polymer": "Polymer/polymer#^1.0.0",
- "iron-a11y-keys-behavior": "PolymerElements/iron-a11y-keys-behavior#^1.0.0"
- },
- "devDependencies": {
- "paper-styles": "polymerelements/paper-styles#^1.0.2",
- "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0",
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "homepage": "https://github.com/PolymerElements/iron-behaviors",
- "_release": "1.0.7",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.7",
- "commit": "033889b20c6b9ebb45a1ff153fbd667e153fe3f7"
- },
- "_source": "git://github.com/PolymerElements/iron-behaviors.git",
- "_target": "^1.0.0",
- "_originalSource": "PolymerElements/iron-behaviors"
-}`},
- "/bower_components/iron-behaviors/.gitignore": {"/bower_components/iron-behaviors/.gitignore", time.Unix(0, 1440513533057507445), false, `bower_components
-`},
- "/bower_components/iron-behaviors/bower.json": {"/bower_components/iron-behaviors/bower.json", time.Unix(0, 1440513533061507455), false, `{
- "name": "iron-behaviors",
- "version": "1.0.7",
- "description": "Provides a set of behaviors for the iron elements",
- "private": true,
- "authors": [
- "The Polymer Authors"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-behaviors.git"
- },
- "main": [
- "iron-button-state.html",
- "iron-control-state.html"
- ],
- "license": "http://polymer.github.io/LICENSE.txt",
- "dependencies": {
- "polymer": "Polymer/polymer#^1.0.0",
- "iron-a11y-keys-behavior": "PolymerElements/iron-a11y-keys-behavior#^1.0.0"
- },
- "devDependencies": {
- "paper-styles": "polymerelements/paper-styles#^1.0.2",
- "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0",
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/iron-behaviors/index.html": {"/bower_components/iron-behaviors/index.html", time.Unix(0, 1440513533061507455), false, `
-
-
-
-
- Iron Behaviors
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-behaviors/iron-button-state.html": {"/bower_components/iron-behaviors/iron-button-state.html", time.Unix(0, 1440513533061507455), false, `
-
-
-
-
-
-
-`},
- "/bower_components/iron-behaviors/iron-control-state.html": {"/bower_components/iron-behaviors/iron-control-state.html", time.Unix(0, 1440513533061507455), false, `
-
-
-
-
-`},
- "/bower_components/iron-flex-layout/": {"/bower_components/iron-flex-layout/", time.Unix(0, 1440513533065507466), true, ``},
- "/bower_components/iron-flex-layout/.bower.json": {"/bower_components/iron-flex-layout/.bower.json", time.Unix(0, 1440513533061507455), false, `{
- "name": "iron-flex-layout",
- "version": "1.0.3",
- "description": "Provide flexbox-based layouts",
- "keywords": [
- "web-components",
- "polymer",
- "layout"
- ],
- "private": true,
- "license": "http://polymer.github.io/LICENSE.txt",
- "authors": [
- "The Polymer Authors"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-flex-layout.git"
- },
- "dependencies": {
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "paper-styles": "polymerelements/paper-styles#^1.0.0",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "homepage": "https://github.com/PolymerElements/iron-flex-layout",
- "_release": "1.0.3",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.3",
- "commit": "e6c2cfec18354973ac03e70dcd8afcc3c72d09b9"
- },
- "_source": "git://github.com/PolymerElements/iron-flex-layout.git",
- "_target": "^1.0.0",
- "_originalSource": "PolymerElements/iron-flex-layout"
-}`},
- "/bower_components/iron-flex-layout/.gitignore": {"/bower_components/iron-flex-layout/.gitignore", time.Unix(0, 1440513533065507466), false, `bower_components
-
-`},
- "/bower_components/iron-flex-layout/bower.json": {"/bower_components/iron-flex-layout/bower.json", time.Unix(0, 1440513533065507466), false, `{
- "name": "iron-flex-layout",
- "version": "1.0.3",
- "description": "Provide flexbox-based layouts",
- "keywords": [
- "web-components",
- "polymer",
- "layout"
- ],
- "private": true,
- "license": "http://polymer.github.io/LICENSE.txt",
- "authors": [
- "The Polymer Authors"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-flex-layout.git"
- },
- "dependencies": {
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "paper-styles": "polymerelements/paper-styles#^1.0.0",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/iron-flex-layout/classes/": {"/bower_components/iron-flex-layout/classes/", time.Unix(0, 1440513533065507466), true, ``},
- "/bower_components/iron-flex-layout/classes/iron-flex-layout.html": {"/bower_components/iron-flex-layout/classes/iron-flex-layout.html", time.Unix(0, 1440513533065507466), false, `
-
-
-
-
-`},
- "/bower_components/iron-flex-layout/classes/iron-shadow-flex-layout.html": {"/bower_components/iron-flex-layout/classes/iron-shadow-flex-layout.html", time.Unix(0, 1440513533065507466), false, `
-
-`},
- "/bower_components/iron-flex-layout/iron-flex-layout.html": {"/bower_components/iron-flex-layout/iron-flex-layout.html", time.Unix(0, 1440513533065507466), false, `
-
-
-
-
-
-
-`},
- "/bower_components/iron-icon/": {"/bower_components/iron-icon/", time.Unix(0, 1440513533065507466), true, ``},
- "/bower_components/iron-icon/.bower.json": {"/bower_components/iron-icon/.bower.json", time.Unix(0, 1440513533065507466), false, `{
- "name": "iron-icon",
- "private": true,
- "version": "1.0.3",
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "An element that supports displaying an icon",
- "main": "iron-icon.html",
- "author": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "icon"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-icon.git"
- },
- "dependencies": {
- "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0",
- "iron-meta": "polymerelements/iron-meta#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "iron-iconset": "polymerelements/iron-iconset#^1.0.0",
- "iron-icons": "polymerelements/iron-icons#^1.0.0",
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "homepage": "https://github.com/polymerelements/iron-icon",
- "_release": "1.0.3",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.3",
- "commit": "818c2d2af2d3287a444e4cf0a19c2b5717d480e8"
- },
- "_source": "git://github.com/polymerelements/iron-icon.git",
- "_target": "^1.0.0",
- "_originalSource": "polymerelements/iron-icon"
-}`},
- "/bower_components/iron-icon/.gitignore": {"/bower_components/iron-icon/.gitignore", time.Unix(0, 1440513533065507466), false, `bower_components
-`},
- "/bower_components/iron-icon/bower.json": {"/bower_components/iron-icon/bower.json", time.Unix(0, 1440513533065507466), false, `{
- "name": "iron-icon",
- "private": true,
- "version": "1.0.3",
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "An element that supports displaying an icon",
- "main": "iron-icon.html",
- "author": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "icon"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-icon.git"
- },
- "dependencies": {
- "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0",
- "iron-meta": "polymerelements/iron-meta#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "iron-iconset": "polymerelements/iron-iconset#^1.0.0",
- "iron-icons": "polymerelements/iron-icons#^1.0.0",
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/iron-icon/hero.svg": {"/bower_components/iron-icon/hero.svg", time.Unix(0, 1440513533065507466), false, `
-
-
-
-`},
- "/bower_components/iron-icon/index.html": {"/bower_components/iron-icon/index.html", time.Unix(0, 1440513533065507466), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-icon/iron-icon.html": {"/bower_components/iron-icon/iron-icon.html", time.Unix(0, 1440513533065507466), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-icons/": {"/bower_components/iron-icons/", time.Unix(0, 1440513533073507486), true, ``},
- "/bower_components/iron-icons/.bower.json": {"/bower_components/iron-icons/.bower.json", time.Unix(0, 1440513533069507475), false, `{
- "name": "iron-icons",
- "version": "1.0.3",
- "description": "A set of icons for use with iron-icon",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "icon"
- ],
- "main": "iron-icons.html",
- "private": true,
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-icons"
- },
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/paper-icons",
- "dependencies": {
- "iron-icon": "polymerelements/iron-icon#^1.0.0",
- "iron-iconset-svg": "polymerelements/iron-iconset-svg#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "paper-styles": "polymerelements/paper-styles#^1.0.2",
- "iron-component-page": "polymerelements/iron-component-page#1.0.0",
- "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0",
- "iron-meta": "polymerelements/iron-meta#^1.0.0",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "ignore": [
- "util",
- "update-icons.sh"
- ],
- "_release": "1.0.3",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.3",
- "commit": "036325be99c33c052ac807a705aacad70be1127f"
- },
- "_source": "git://github.com/polymerelements/iron-icons.git",
- "_target": "^1.0.0",
- "_originalSource": "polymerelements/iron-icons"
-}`},
- "/bower_components/iron-icons/.gitignore": {"/bower_components/iron-icons/.gitignore", time.Unix(0, 1440513533069507475), false, `util/node_modules
-material-design-icons
-bower_components
-`},
- "/bower_components/iron-icons/av-icons.html": {"/bower_components/iron-icons/av-icons.html", time.Unix(0, 1440513533069507475), false, `
-
-
-
-
-
-
-`},
- "/bower_components/iron-icons/bower.json": {"/bower_components/iron-icons/bower.json", time.Unix(0, 1440513533069507475), false, `{
- "name": "iron-icons",
- "version": "1.0.3",
- "description": "A set of icons for use with iron-icon",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "icon"
- ],
- "main": "iron-icons.html",
- "private": true,
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-icons"
- },
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/paper-icons",
- "dependencies": {
- "iron-icon": "polymerelements/iron-icon#^1.0.0",
- "iron-iconset-svg": "polymerelements/iron-iconset-svg#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "paper-styles": "polymerelements/paper-styles#^1.0.2",
- "iron-component-page": "polymerelements/iron-component-page#1.0.0",
- "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0",
- "iron-meta": "polymerelements/iron-meta#^1.0.0",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "ignore": [
- "util",
- "update-icons.sh"
- ]
-}
-`},
- "/bower_components/iron-icons/communication-icons.html": {"/bower_components/iron-icons/communication-icons.html", time.Unix(0, 1440513533069507475), false, `
-
-
-
-
-
-
-`},
- "/bower_components/iron-icons/device-icons.html": {"/bower_components/iron-icons/device-icons.html", time.Unix(0, 1440513533069507475), false, `
-
-
-
-
-
-
-`},
- "/bower_components/iron-icons/editor-icons.html": {"/bower_components/iron-icons/editor-icons.html", time.Unix(0, 1440513533069507475), false, `
-
-
-
-
-
-
-`},
- "/bower_components/iron-icons/hardware-icons.html": {"/bower_components/iron-icons/hardware-icons.html", time.Unix(0, 1440513533069507475), false, `
-
-
-
-
-
-
-`},
- "/bower_components/iron-icons/hero.svg": {"/bower_components/iron-icons/hero.svg", time.Unix(0, 1440513533069507475), false, `
-
-
-
-`},
- "/bower_components/iron-icons/image-icons.html": {"/bower_components/iron-icons/image-icons.html", time.Unix(0, 1440513533069507475), false, `
-
-
-
-
-
-
-`},
- "/bower_components/iron-icons/index.html": {"/bower_components/iron-icons/index.html", time.Unix(0, 1440513533073507486), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-icons/iron-icons.html": {"/bower_components/iron-icons/iron-icons.html", time.Unix(0, 1440513533073507486), false, `
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-icons/maps-icons.html": {"/bower_components/iron-icons/maps-icons.html", time.Unix(0, 1440513533073507486), false, `
-
-
-
-
-
-
-`},
- "/bower_components/iron-icons/notification-icons.html": {"/bower_components/iron-icons/notification-icons.html", time.Unix(0, 1440513533073507486), false, `
-
-
-
-
-
-
-`},
- "/bower_components/iron-icons/social-icons.html": {"/bower_components/iron-icons/social-icons.html", time.Unix(0, 1440513533073507486), false, `
-
-
-
-
-
-
-`},
- "/bower_components/iron-iconset-svg/": {"/bower_components/iron-iconset-svg/", time.Unix(0, 1440513533073507486), true, ``},
- "/bower_components/iron-iconset-svg/.bower.json": {"/bower_components/iron-iconset-svg/.bower.json", time.Unix(0, 1440513533073507486), false, `{
- "name": "iron-iconset-svg",
- "description": "Manages a set of svg icons",
- "version": "1.0.4",
- "keywords": [
- "web-components",
- "polymer",
- "icon"
- ],
- "license": "http://polymer.github.io/LICENSE.txt",
- "private": true,
- "authors": [
- "The Polymer Authors"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-iconset-svg.git"
- },
- "dependencies": {
- "polymer": "polymer/polymer#^1.0.0",
- "iron-meta": "polymerelements/iron-meta#^1.0.0"
- },
- "devDependencies": {
- "paper-styles": "polymerelements/paper-styles#^1.0.2",
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "iron-icon": "polymerelements/iron-icon#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0",
- "web-component-tester": "*"
- },
- "homepage": "https://github.com/polymerelements/iron-iconset-svg",
- "_release": "1.0.4",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.4",
- "commit": "795aa82ac22971421bc4375efbd2419ebba9099f"
- },
- "_source": "git://github.com/polymerelements/iron-iconset-svg.git",
- "_target": "^1.0.0",
- "_originalSource": "polymerelements/iron-iconset-svg"
-}`},
- "/bower_components/iron-iconset-svg/.gitignore": {"/bower_components/iron-iconset-svg/.gitignore", time.Unix(0, 1440513533073507486), false, `bower_components
-`},
- "/bower_components/iron-iconset-svg/bower.json": {"/bower_components/iron-iconset-svg/bower.json", time.Unix(0, 1440513533073507486), false, `{
- "name": "iron-iconset-svg",
- "description": "Manages a set of svg icons",
- "version": "1.0.4",
- "keywords": [
- "web-components",
- "polymer",
- "icon"
- ],
- "license": "http://polymer.github.io/LICENSE.txt",
- "private": true,
- "authors": [
- "The Polymer Authors"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-iconset-svg.git"
- },
- "dependencies": {
- "polymer": "polymer/polymer#^1.0.0",
- "iron-meta": "polymerelements/iron-meta#^1.0.0"
- },
- "devDependencies": {
- "paper-styles": "polymerelements/paper-styles#^1.0.2",
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "iron-icon": "polymerelements/iron-icon#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0",
- "web-component-tester": "*"
- }
-}
-`},
- "/bower_components/iron-iconset-svg/index.html": {"/bower_components/iron-iconset-svg/index.html", time.Unix(0, 1440513533073507486), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-iconset-svg/iron-iconset-svg.html": {"/bower_components/iron-iconset-svg/iron-iconset-svg.html", time.Unix(0, 1440513533073507486), false, `
-
-
-
-
-
-`},
- "/bower_components/iron-menu-behavior/": {"/bower_components/iron-menu-behavior/", time.Unix(0, 1440513533077507497), true, ``},
- "/bower_components/iron-menu-behavior/.bower.json": {"/bower_components/iron-menu-behavior/.bower.json", time.Unix(0, 1440513533073507486), false, `{
- "name": "iron-menu-behavior",
- "version": "1.0.1",
- "description": "Provides accessible menu behavior",
- "authors": "The Polymer Authors",
- "keywords": [
- "web-components",
- "polymer",
- "behavior",
- "menu"
- ],
- "main": "iron-menu-behavior.html",
- "private": true,
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-menu-behavior"
- },
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/iron-menu-behavior",
- "ignore": [],
- "dependencies": {
- "iron-selector": "PolymerElements/iron-selector#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0",
- "iron-a11y-keys-behavior": "polymerelements/iron-a11y-keys-behavior#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
- "test-fixture": "PolymerElements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "_release": "1.0.1",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.1",
- "commit": "3809f0eb7461c8ca63640aaa238775b3a25aa578"
- },
- "_source": "git://github.com/polymerelements/iron-menu-behavior.git",
- "_target": "^1.0.0",
- "_originalSource": "polymerelements/iron-menu-behavior"
-}`},
- "/bower_components/iron-menu-behavior/.gitignore": {"/bower_components/iron-menu-behavior/.gitignore", time.Unix(0, 1440513533073507486), false, `bower_components
-`},
- "/bower_components/iron-menu-behavior/bower.json": {"/bower_components/iron-menu-behavior/bower.json", time.Unix(0, 1440513533077507497), false, `{
- "name": "iron-menu-behavior",
- "version": "1.0.1",
- "description": "Provides accessible menu behavior",
- "authors": "The Polymer Authors",
- "keywords": [
- "web-components",
- "polymer",
- "behavior",
- "menu"
- ],
- "main": "iron-menu-behavior.html",
- "private": true,
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-menu-behavior"
- },
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/iron-menu-behavior",
- "ignore": [],
- "dependencies": {
- "iron-selector": "PolymerElements/iron-selector#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0",
- "iron-a11y-keys-behavior": "polymerelements/iron-a11y-keys-behavior#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
- "test-fixture": "PolymerElements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/iron-menu-behavior/index.html": {"/bower_components/iron-menu-behavior/index.html", time.Unix(0, 1440513533077507497), false, `
-
-
-
-
-
-
-
- iron-menu-behavior
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-menu-behavior/iron-menu-behavior.html": {"/bower_components/iron-menu-behavior/iron-menu-behavior.html", time.Unix(0, 1440513533077507497), false, `
-
-
-
-
-
-
-`},
- "/bower_components/iron-menu-behavior/iron-menubar-behavior.html": {"/bower_components/iron-menu-behavior/iron-menubar-behavior.html", time.Unix(0, 1440513533077507497), false, `
-
-
-
-
-
-`},
- "/bower_components/iron-meta/": {"/bower_components/iron-meta/", time.Unix(0, 1440513533077507497), true, ``},
- "/bower_components/iron-meta/.bower.json": {"/bower_components/iron-meta/.bower.json", time.Unix(0, 1440513533077507497), false, `{
- "name": "iron-meta",
- "version": "1.0.3",
- "keywords": [
- "web-components",
- "polymer"
- ],
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "Useful for sharing information across a DOM tree",
- "private": true,
- "authors": [
- "The Polymer Authors"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-meta.git"
- },
- "dependencies": {
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "paper-styles": "polymerelements/paper-styles#^1.0.4",
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "homepage": "https://github.com/polymerelements/iron-meta",
- "_release": "1.0.3",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.3",
- "commit": "91529259262b0d8f33fed44bc3fd47aedf35cb04"
- },
- "_source": "git://github.com/polymerelements/iron-meta.git",
- "_target": "^1.0.0",
- "_originalSource": "polymerelements/iron-meta"
-}`},
- "/bower_components/iron-meta/.gitignore": {"/bower_components/iron-meta/.gitignore", time.Unix(0, 1440513533077507497), false, `bower_components
-`},
- "/bower_components/iron-meta/bower.json": {"/bower_components/iron-meta/bower.json", time.Unix(0, 1440513533077507497), false, `{
- "name": "iron-meta",
- "version": "1.0.3",
- "keywords": [
- "web-components",
- "polymer"
- ],
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "Useful for sharing information across a DOM tree",
- "private": true,
- "authors": [
- "The Polymer Authors"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-meta.git"
- },
- "dependencies": {
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "paper-styles": "polymerelements/paper-styles#^1.0.4",
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/iron-meta/hero.svg": {"/bower_components/iron-meta/hero.svg", time.Unix(0, 1440513533077507497), false, `
-
-
-
-`},
- "/bower_components/iron-meta/index.html": {"/bower_components/iron-meta/index.html", time.Unix(0, 1440513533077507497), false, `
-
-
-
-
-
-
- iron-meta
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-meta/iron-meta.html": {"/bower_components/iron-meta/iron-meta.html", time.Unix(0, 1440513533077507497), false, `
-
-
-
-
-
-
-`},
- "/bower_components/iron-pages/": {"/bower_components/iron-pages/", time.Unix(0, 1440513533081507506), true, ``},
- "/bower_components/iron-pages/.bower.json": {"/bower_components/iron-pages/.bower.json", time.Unix(0, 1440513533081507506), false, `{
- "name": "iron-pages",
- "version": "1.0.3",
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "Organizes a set of pages and shows one at a time",
- "main": "iron-pages.html",
- "private": true,
- "authors": [
- "The Polymer Authors"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-pages.git"
- },
- "keywords": [
- "web-components",
- "polymer",
- "container"
- ],
- "dependencies": {
- "iron-resizable-behavior": "polymerelements/iron-resizable-behavior#^1.0.0",
- "iron-selector": "polymerelements/iron-selector#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "paper-styles": "polymerelements/paper-styles#^1.0.2",
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "homepage": "https://github.com/PolymerElements/iron-pages",
- "_release": "1.0.3",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.3",
- "commit": "ca6e7892786d60d8cb6935d8376b27c3851fdbf5"
- },
- "_source": "git://github.com/PolymerElements/iron-pages.git",
- "_target": "~1.0.3",
- "_originalSource": "PolymerElements/iron-pages",
- "_direct": true
-}`},
- "/bower_components/iron-pages/.gitignore": {"/bower_components/iron-pages/.gitignore", time.Unix(0, 1440513533081507506), false, `bower_components
-`},
- "/bower_components/iron-pages/bower.json": {"/bower_components/iron-pages/bower.json", time.Unix(0, 1440513533081507506), false, `{
- "name": "iron-pages",
- "version": "1.0.3",
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "Organizes a set of pages and shows one at a time",
- "main": "iron-pages.html",
- "private": true,
- "authors": [
- "The Polymer Authors"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-pages.git"
- },
- "keywords": [
- "web-components",
- "polymer",
- "container"
- ],
- "dependencies": {
- "iron-resizable-behavior": "polymerelements/iron-resizable-behavior#^1.0.0",
- "iron-selector": "polymerelements/iron-selector#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "paper-styles": "polymerelements/paper-styles#^1.0.2",
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/iron-pages/hero.svg": {"/bower_components/iron-pages/hero.svg", time.Unix(0, 1440513533081507506), false, `
-
-
-
-`},
- "/bower_components/iron-pages/index.html": {"/bower_components/iron-pages/index.html", time.Unix(0, 1440513533081507506), false, `
-
-
-
-
- iron-pages
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-pages/iron-pages.html": {"/bower_components/iron-pages/iron-pages.html", time.Unix(0, 1440513533081507506), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-resizable-behavior/": {"/bower_components/iron-resizable-behavior/", time.Unix(0, 1440513533081507506), true, ``},
- "/bower_components/iron-resizable-behavior/.bower.json": {"/bower_components/iron-resizable-behavior/.bower.json", time.Unix(0, 1440513533081507506), false, `{
- "name": "iron-resizable-behavior",
- "version": "1.0.2",
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "Coordinates the flow of resizeable elements",
- "private": true,
- "main": "iron-resizable-behavior.html",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "iron",
- "behavior"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-resizable-behavior.git"
- },
- "dependencies": {
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "homepage": "https://github.com/polymerelements/iron-resizable-behavior",
- "_release": "1.0.2",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.2",
- "commit": "85de8ba28be2bf17c81d6436ef1119022b003674"
- },
- "_source": "git://github.com/polymerelements/iron-resizable-behavior.git",
- "_target": "^1.0.0",
- "_originalSource": "polymerelements/iron-resizable-behavior"
-}`},
- "/bower_components/iron-resizable-behavior/.gitignore": {"/bower_components/iron-resizable-behavior/.gitignore", time.Unix(0, 1440513533081507506), false, `bower_components
-`},
- "/bower_components/iron-resizable-behavior/bower.json": {"/bower_components/iron-resizable-behavior/bower.json", time.Unix(0, 1440513533081507506), false, `{
- "name": "iron-resizable-behavior",
- "version": "1.0.2",
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "Coordinates the flow of resizeable elements",
- "private": true,
- "main": "iron-resizable-behavior.html",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "iron",
- "behavior"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-resizable-behavior.git"
- },
- "dependencies": {
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/iron-resizable-behavior/index.html": {"/bower_components/iron-resizable-behavior/index.html", time.Unix(0, 1440513533081507506), false, `
-
-
-
-
-
- iron-resizable-behavior
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-resizable-behavior/iron-resizable-behavior.html": {"/bower_components/iron-resizable-behavior/iron-resizable-behavior.html", time.Unix(0, 1440513533081507506), false, `
-
-
-
-
-
-`},
- "/bower_components/iron-selector/": {"/bower_components/iron-selector/", time.Unix(0, 1440513533085507516), true, ``},
- "/bower_components/iron-selector/.bower.json": {"/bower_components/iron-selector/.bower.json", time.Unix(0, 1440513533085507516), false, `{
- "name": "iron-selector",
- "version": "1.0.2",
- "description": "Manages a set of elements that can be selected",
- "private": true,
- "license": "http://polymer.github.io/LICENSE.txt",
- "main": [
- "iron-selector.html"
- ],
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "selector"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-selector.git"
- },
- "dependencies": {
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
- "test-fixture": "PolymerElements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "homepage": "https://github.com/PolymerElements/iron-selector",
- "_release": "1.0.2",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.2",
- "commit": "ea22d91d11ba6f72c01faa952d5e600f9d1773cf"
- },
- "_source": "git://github.com/PolymerElements/iron-selector.git",
- "_target": "^1.0.0",
- "_originalSource": "PolymerElements/iron-selector"
-}`},
- "/bower_components/iron-selector/.gitignore": {"/bower_components/iron-selector/.gitignore", time.Unix(0, 1440513533085507516), false, `bower_components
-.DS_Store
-`},
- "/bower_components/iron-selector/bower.json": {"/bower_components/iron-selector/bower.json", time.Unix(0, 1440513533085507516), false, `{
- "name": "iron-selector",
- "version": "1.0.2",
- "description": "Manages a set of elements that can be selected",
- "private": true,
- "license": "http://polymer.github.io/LICENSE.txt",
- "main": [
- "iron-selector.html"
- ],
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "selector"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/iron-selector.git"
- },
- "dependencies": {
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
- "test-fixture": "PolymerElements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/iron-selector/index.html": {"/bower_components/iron-selector/index.html", time.Unix(0, 1440513533085507516), false, `
-
-
-
-
-
- iron-selector
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/iron-selector/iron-multi-selectable.html": {"/bower_components/iron-selector/iron-multi-selectable.html", time.Unix(0, 1440513533085507516), false, `
-
-
-
-
-
-`},
- "/bower_components/iron-selector/iron-selectable.html": {"/bower_components/iron-selector/iron-selectable.html", time.Unix(0, 1440513533085507516), false, `
-
-
-
-
-
-`},
- "/bower_components/iron-selector/iron-selection.html": {"/bower_components/iron-selector/iron-selection.html", time.Unix(0, 1440513533085507516), false, `
-
-
-
-
-
-`},
- "/bower_components/iron-selector/iron-selector.html": {"/bower_components/iron-selector/iron-selector.html", time.Unix(0, 1440513533085507516), false, `
-
-
-
-
-
-
-`},
- "/bower_components/paper-behaviors/": {"/bower_components/paper-behaviors/", time.Unix(0, 1440513533089507527), true, ``},
- "/bower_components/paper-behaviors/.bower.json": {"/bower_components/paper-behaviors/.bower.json", time.Unix(0, 1440513533089507527), false, `{
- "name": "paper-behaviors",
- "version": "1.0.3",
- "description": "Common behaviors across the paper elements",
- "authors": [
- "The Polymer Authors"
- ],
- "main": [
- "paper-button-behavior.html",
- "paper-radio-button-behavior.html"
- ],
- "keywords": [
- "web-components",
- "web-component",
- "polymer",
- "paper",
- "behavior"
- ],
- "private": true,
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-behaviors"
- },
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/paper-behaviors",
- "dependencies": {
- "iron-behaviors": "PolymerElements/iron-behaviors#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0",
- "paper-material": "PolymerElements/paper-material#^1.0.0",
- "paper-ripple": "PolymerElements/paper-ripple#^1.0.0",
- "test-fixture": "PolymerElements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "_release": "1.0.3",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.3",
- "commit": "90b54de14264c19693601b9fc16af6b68a9d48e4"
- },
- "_source": "git://github.com/polymerelements/paper-behaviors.git",
- "_target": "^1.0.0",
- "_originalSource": "polymerelements/paper-behaviors"
-}`},
- "/bower_components/paper-behaviors/.gitignore": {"/bower_components/paper-behaviors/.gitignore", time.Unix(0, 1440513533089507527), false, `bower_components
-`},
- "/bower_components/paper-behaviors/bower.json": {"/bower_components/paper-behaviors/bower.json", time.Unix(0, 1440513533089507527), false, `{
- "name": "paper-behaviors",
- "version": "1.0.3",
- "description": "Common behaviors across the paper elements",
- "authors": [
- "The Polymer Authors"
- ],
- "main": [
- "paper-button-behavior.html",
- "paper-radio-button-behavior.html"
- ],
- "keywords": [
- "web-components",
- "web-component",
- "polymer",
- "paper",
- "behavior"
- ],
- "private": true,
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-behaviors"
- },
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/paper-behaviors",
- "dependencies": {
- "iron-behaviors": "PolymerElements/iron-behaviors#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0",
- "paper-material": "PolymerElements/paper-material#^1.0.0",
- "paper-ripple": "PolymerElements/paper-ripple#^1.0.0",
- "test-fixture": "PolymerElements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/paper-behaviors/index.html": {"/bower_components/paper-behaviors/index.html", time.Unix(0, 1440513533089507527), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-behaviors/paper-button-behavior.html": {"/bower_components/paper-behaviors/paper-button-behavior.html", time.Unix(0, 1440513533089507527), false, `
-
-
-
-
-
-`},
- "/bower_components/paper-behaviors/paper-inky-focus-behavior.html": {"/bower_components/paper-behaviors/paper-inky-focus-behavior.html", time.Unix(0, 1440513533089507527), false, `
-
-
-
-
-
-`},
- "/bower_components/paper-button/": {"/bower_components/paper-button/", time.Unix(0, 1440513533089507527), true, ``},
- "/bower_components/paper-button/.bower.json": {"/bower_components/paper-button/.bower.json", time.Unix(0, 1440513533089507527), false, `{
- "name": "paper-button",
- "version": "1.0.3",
- "description": "Material design button",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "web-component",
- "polymer",
- "paper",
- "button"
- ],
- "main": "paper-button.html",
- "private": true,
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-button"
- },
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/paper-button",
- "dependencies": {
- "paper-ripple": "polymerelements/paper-ripple#^1.0.0",
- "paper-material": "polymerelements/paper-material#^1.0.0",
- "paper-behaviors": "polymerelements/paper-behaviors#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "iron-icon": "polymerelements/iron-icon#^1.0.0",
- "iron-icons": "polymerelements/iron-icons#^1.0.0",
- "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0",
- "paper-styles": "polymerelements/paper-styles#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "_release": "1.0.3",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.3",
- "commit": "f50a40fa1bf3ab20aaad413769452ed69b14ef66"
- },
- "_source": "git://github.com/PolymerElements/paper-button.git",
- "_target": "~1.0.3",
- "_originalSource": "PolymerElements/paper-button",
- "_direct": true
-}`},
- "/bower_components/paper-button/.gitignore": {"/bower_components/paper-button/.gitignore", time.Unix(0, 1440513533089507527), false, `bower_components
-`},
- "/bower_components/paper-button/bower.json": {"/bower_components/paper-button/bower.json", time.Unix(0, 1440513533089507527), false, `{
- "name": "paper-button",
- "version": "1.0.3",
- "description": "Material design button",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "web-component",
- "polymer",
- "paper",
- "button"
- ],
- "main": "paper-button.html",
- "private": true,
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-button"
- },
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/paper-button",
- "dependencies": {
- "paper-ripple": "polymerelements/paper-ripple#^1.0.0",
- "paper-material": "polymerelements/paper-material#^1.0.0",
- "paper-behaviors": "polymerelements/paper-behaviors#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "iron-icon": "polymerelements/iron-icon#^1.0.0",
- "iron-icons": "polymerelements/iron-icons#^1.0.0",
- "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0",
- "paper-styles": "polymerelements/paper-styles#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/paper-button/index.html": {"/bower_components/paper-button/index.html", time.Unix(0, 1440513533089507527), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-button/paper-button.html": {"/bower_components/paper-button/paper-button.html", time.Unix(0, 1440513533089507527), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-card/": {"/bower_components/paper-card/", time.Unix(0, 1440513533093507538), true, ``},
- "/bower_components/paper-card/.bower.json": {"/bower_components/paper-card/.bower.json", time.Unix(0, 1440513533089507527), false, `{
- "name": "paper-card",
- "version": "1.0.3",
- "description": "Material design piece of paper with unique related data",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "card"
- ],
- "main": [
- "paper-card.html"
- ],
- "private": true,
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-card.git"
- },
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/paper-card",
- "ignore": [],
- "dependencies": {
- "polymer": "Polymer/polymer#^1.1.0",
- "paper-material": "PolymerElements/paper-material#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
- "test-fixture": "PolymerElements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0",
- "paper-icon-button": "PolymerElements/paper-icon-button#^1.0.0",
- "paper-button": "PolymerElements/paper-button#^1.0.0",
- "iron-flex-layout": "PolymerElements/iron-flex-layout#^1.0.0",
- "paper-styles": "PolymerElements/paper-styles#^1.0.0"
- },
- "_release": "1.0.3",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.3",
- "commit": "3e9793573b366f28a42342add24847e2dbe447d5"
- },
- "_source": "git://github.com/PolymerElements/paper-card.git",
- "_target": "~1.0.3",
- "_originalSource": "PolymerElements/paper-card",
- "_direct": true
-}`},
- "/bower_components/paper-card/.gitignore": {"/bower_components/paper-card/.gitignore", time.Unix(0, 1440513533089507527), false, `bower_components/
-`},
- "/bower_components/paper-card/bower.json": {"/bower_components/paper-card/bower.json", time.Unix(0, 1440513533093507538), false, `{
- "name": "paper-card",
- "version": "1.0.3",
- "description": "Material design piece of paper with unique related data",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "card"
- ],
- "main": [
- "paper-card.html"
- ],
- "private": true,
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-card.git"
- },
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/paper-card",
- "ignore": [],
- "dependencies": {
- "polymer": "Polymer/polymer#^1.1.0",
- "paper-material": "PolymerElements/paper-material#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
- "test-fixture": "PolymerElements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0",
- "paper-icon-button": "PolymerElements/paper-icon-button#^1.0.0",
- "paper-button": "PolymerElements/paper-button#^1.0.0",
- "iron-flex-layout": "PolymerElements/iron-flex-layout#^1.0.0",
- "paper-styles": "PolymerElements/paper-styles#^1.0.0"
- }
-}
-`},
- "/bower_components/paper-card/index.html": {"/bower_components/paper-card/index.html", time.Unix(0, 1440513533093507538), false, `
-
-
-
-
-
-
-
- paper-card
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-card/paper-card.html": {"/bower_components/paper-card/paper-card.html", time.Unix(0, 1440513533093507538), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-header-panel/": {"/bower_components/paper-header-panel/", time.Unix(0, 1440513533093507538), true, ``},
- "/bower_components/paper-header-panel/.bower.json": {"/bower_components/paper-header-panel/.bower.json", time.Unix(0, 1440513533093507538), false, `{
- "name": "paper-header-panel",
- "version": "1.0.4",
- "description": "A header and content wrapper for layout with headers",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "layout"
- ],
- "main": [
- "paper-header-panel.html"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-header-panel.git"
- },
- "private": true,
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/paper-header-panel",
- "ignore": [],
- "dependencies": {
- "iron-flex-layout": "PolymerElements/iron-flex-layout#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "web-component-tester": "*",
- "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
- "test-fixture": "PolymerElements/test-fixture#^1.0.0",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0",
- "paper-styles": "PolymerElements/paper-styles#^1.0.0"
- },
- "_release": "1.0.4",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.4",
- "commit": "e115448483684c30fb059afefbb944aa5fed7f24"
- },
- "_source": "git://github.com/PolymerElements/paper-header-panel.git",
- "_target": "~1.0.4",
- "_originalSource": "PolymerElements/paper-header-panel",
- "_direct": true
-}`},
- "/bower_components/paper-header-panel/.gitignore": {"/bower_components/paper-header-panel/.gitignore", time.Unix(0, 1440513533093507538), false, `bower_components/
-`},
- "/bower_components/paper-header-panel/bower.json": {"/bower_components/paper-header-panel/bower.json", time.Unix(0, 1440513533093507538), false, `{
- "name": "paper-header-panel",
- "version": "1.0.4",
- "description": "A header and content wrapper for layout with headers",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "layout"
- ],
- "main": [
- "paper-header-panel.html"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-header-panel.git"
- },
- "private": true,
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/paper-header-panel",
- "ignore": [],
- "dependencies": {
- "iron-flex-layout": "PolymerElements/iron-flex-layout#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "web-component-tester": "*",
- "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
- "test-fixture": "PolymerElements/test-fixture#^1.0.0",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0",
- "paper-styles": "PolymerElements/paper-styles#^1.0.0"
- }
-}
-`},
- "/bower_components/paper-header-panel/hero.svg": {"/bower_components/paper-header-panel/hero.svg", time.Unix(0, 1440513533093507538), false, `
-
-
-
-`},
- "/bower_components/paper-header-panel/index.html": {"/bower_components/paper-header-panel/index.html", time.Unix(0, 1440513533093507538), false, `
-
-
-
-
-
-
-
- paper-header-panel
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-header-panel/paper-header-panel.css": {"/bower_components/paper-header-panel/paper-header-panel.css", time.Unix(0, 1440513533093507538), false, `/**
-@license
-Copyright (c) 2015 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
-The complete set of authors may be found at http://polymer.github.io/AUTHORS
-The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS
-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
-*/
-
-:host {
- --paper-header-panel-shadow: {
- height: 6px;
- bottom: -6px;
- box-shadow: inset 0px 5px 6px -3px rgba(0, 0, 0, 0.4);
- };
-
- @apply(--layout-vertical);
-
- position: relative;
- height: 100%;
-}
-
-#mainContainer {
- @apply(--layout-flex);
-
- position: relative;
- overflow-y: auto;
- overflow-x: hidden;
- -webkit-overflow-scrolling: touch;
-}
-
-#mainPanel {
- @apply(--layout-vertical);
- @apply(--layout-flex);
-
- position: relative;
-}
-
-/*
- * mode: scroll
- */
-:host([mode=scroll]) #mainContainer {
- @apply(--paper-header-panel-scroll-container);
-
- overflow: visible;
-}
-
-:host([mode=scroll]) {
- overflow-y: auto;
- overflow-x: hidden;
- -webkit-overflow-scrolling: touch;
-}
-
-/*
- * mode: cover
- */
-:host([mode=cover]) #mainContainer {
- @apply(--paper-header-panel-cover-container);
-
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
-}
-
-:host([mode=cover]) #mainPanel {
- position: static;
-}
-
-/*
- * mode: standard
- */
-:host([mode=standard]) #mainContainer {
- @apply(--paper-header-panel-standard-container);
-}
-
-/*
- * mode: seamed
- */
-:host([mode=seamed]) #mainContainer {
- @apply(--paper-header-panel-seamed-container);
-}
-
-
-/*
- * mode: waterfall
- */
-:host([mode=waterfall]) #mainContainer {
- @apply(--paper-header-panel-waterfall-container);
-}
-
-/*
- * mode: waterfall-tall
- */
-:host([mode=waterfall-tall]) #mainContainer {
- @apply(--paper-header-panel-waterfall-tall-container);
-}
-
-#dropShadow {
- @apply(--paper-header-panel-shadow);
-
- -webkit-transition: opacity 0.5s, -webkit-transform 0.5s;
- transition: opacity 0.5s, transform 0.5s;
-
- -webkit-transform: scale3d(1, 0, 1);
- transform: scale3d(1, 0, 1);
-
- -webkit-transform-origin: left top;
- transform-origin: left top;
-
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- height: 6px;
- opacity: 0;
-}
-
-#dropShadow.has-shadow {
- opacity: 1;
-
- -webkit-transform: scale3d(1, 1, 1);
- transform: scale3d(1, 1, 1);
-}
-`},
- "/bower_components/paper-header-panel/paper-header-panel.html": {"/bower_components/paper-header-panel/paper-header-panel.html", time.Unix(0, 1440513533093507538), false, `
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-icon-button/": {"/bower_components/paper-icon-button/", time.Unix(0, 1440513533097507547), true, ``},
- "/bower_components/paper-icon-button/.bower.json": {"/bower_components/paper-icon-button/.bower.json", time.Unix(0, 1440513533093507538), false, `{
- "name": "paper-icon-button",
- "private": true,
- "version": "1.0.3",
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "A material design icon button",
- "main": "paper-icon-button.html",
- "author": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "button",
- "icon",
- "control"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-icon-button.git"
- },
- "dependencies": {
- "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0",
- "iron-icon": "polymerelements/iron-icon#^1.0.0",
- "iron-icons": "polymerelements/iron-icons#^1.0.0",
- "paper-behaviors": "polymerelements/paper-behaviors#^1.0.0",
- "paper-ripple": "polymerelements/paper-ripple#^1.0.0",
- "paper-styles": "polymerelements/paper-styles#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "homepage": "https://github.com/polymerelements/paper-icon-button",
- "_release": "1.0.3",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.3",
- "commit": "9f183bdae3ff419aeae78a51a05fcc4d0100e5a3"
- },
- "_source": "git://github.com/polymerelements/paper-icon-button.git",
- "_target": "^1.0.0",
- "_originalSource": "polymerelements/paper-icon-button"
-}`},
- "/bower_components/paper-icon-button/.gitignore": {"/bower_components/paper-icon-button/.gitignore", time.Unix(0, 1440513533093507538), false, `bower_components
-`},
- "/bower_components/paper-icon-button/bower.json": {"/bower_components/paper-icon-button/bower.json", time.Unix(0, 1440513533093507538), false, `{
- "name": "paper-icon-button",
- "private": true,
- "version": "1.0.3",
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "A material design icon button",
- "main": "paper-icon-button.html",
- "author": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "button",
- "icon",
- "control"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-icon-button.git"
- },
- "dependencies": {
- "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0",
- "iron-icon": "polymerelements/iron-icon#^1.0.0",
- "iron-icons": "polymerelements/iron-icons#^1.0.0",
- "paper-behaviors": "polymerelements/paper-behaviors#^1.0.0",
- "paper-ripple": "polymerelements/paper-ripple#^1.0.0",
- "paper-styles": "polymerelements/paper-styles#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/paper-icon-button/index.html": {"/bower_components/paper-icon-button/index.html", time.Unix(0, 1440513533097507547), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-icon-button/paper-icon-button.html": {"/bower_components/paper-icon-button/paper-icon-button.html", time.Unix(0, 1440513533097507547), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-material/": {"/bower_components/paper-material/", time.Unix(0, 1440513533097507547), true, ``},
- "/bower_components/paper-material/.bower.json": {"/bower_components/paper-material/.bower.json", time.Unix(0, 1440513533097507547), false, `{
- "name": "paper-material",
- "version": "1.0.1",
- "description": "A material design container that looks like a lifted sheet of paper",
- "private": true,
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "web-component",
- "polymer",
- "paper",
- "container"
- ],
- "main": [
- "paper-material.html"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-material"
- },
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/paper-material",
- "ignore": [],
- "dependencies": {
- "paper-styles": "polymerelements/paper-styles#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "_release": "1.0.1",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.1",
- "commit": "1663016f2b9f1deb197cfa93ef16d45d3de815c8"
- },
- "_source": "git://github.com/polymerelements/paper-material.git",
- "_target": "^1.0.0",
- "_originalSource": "polymerelements/paper-material"
-}`},
- "/bower_components/paper-material/.gitignore": {"/bower_components/paper-material/.gitignore", time.Unix(0, 1440513533097507547), false, `bower_components
-`},
- "/bower_components/paper-material/bower.json": {"/bower_components/paper-material/bower.json", time.Unix(0, 1440513533097507547), false, `{
- "name": "paper-material",
- "version": "1.0.1",
- "description": "A material design container that looks like a lifted sheet of paper",
- "private": true,
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "web-component",
- "polymer",
- "paper",
- "container"
- ],
- "main": [
- "paper-material.html"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-material"
- },
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/PolymerElements/paper-material",
- "ignore": [],
- "dependencies": {
- "paper-styles": "polymerelements/paper-styles#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/paper-material/index.html": {"/bower_components/paper-material/index.html", time.Unix(0, 1440513533097507547), false, `
-
-
-
-
-
-
-
- paper-material
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-material/paper-material.html": {"/bower_components/paper-material/paper-material.html", time.Unix(0, 1440513533097507547), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-ripple/": {"/bower_components/paper-ripple/", time.Unix(0, 1440513533097507547), true, ``},
- "/bower_components/paper-ripple/.bower.json": {"/bower_components/paper-ripple/.bower.json", time.Unix(0, 1440513533097507547), false, `{
- "name": "paper-ripple",
- "version": "1.0.1",
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "Adds a material design ripple to any container",
- "private": true,
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "ripple"
- ],
- "main": "paper-ripple.html",
- "dependencies": {
- "polymer": "Polymer/polymer#^1.0.0",
- "iron-a11y-keys-behavior": "polymerelements/iron-a11y-keys-behavior#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "iron-icon": "polymerelements/iron-icon#^1.0.0",
- "iron-icons": "polymerelements/iron-icons#^1.0.0",
- "paper-styles": "polymerelements/paper-styles#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "homepage": "https://github.com/polymerelements/paper-ripple",
- "_release": "1.0.1",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.1",
- "commit": "af19d904802437c305390bb03415c11661de3d0a"
- },
- "_source": "git://github.com/polymerelements/paper-ripple.git",
- "_target": "^1.0.0",
- "_originalSource": "polymerelements/paper-ripple"
-}`},
- "/bower_components/paper-ripple/.gitignore": {"/bower_components/paper-ripple/.gitignore", time.Unix(0, 1440513533097507547), false, `bower_components
-`},
- "/bower_components/paper-ripple/bower.json": {"/bower_components/paper-ripple/bower.json", time.Unix(0, 1440513533097507547), false, `{
- "name": "paper-ripple",
- "version": "1.0.1",
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "Adds a material design ripple to any container",
- "private": true,
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "ripple"
- ],
- "main": "paper-ripple.html",
- "dependencies": {
- "polymer": "Polymer/polymer#^1.0.0",
- "iron-a11y-keys-behavior": "polymerelements/iron-a11y-keys-behavior#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
- "iron-icon": "polymerelements/iron-icon#^1.0.0",
- "iron-icons": "polymerelements/iron-icons#^1.0.0",
- "paper-styles": "polymerelements/paper-styles#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/paper-ripple/hero.svg": {"/bower_components/paper-ripple/hero.svg", time.Unix(0, 1440513533097507547), false, `
-
-
-
-`},
- "/bower_components/paper-ripple/index.html": {"/bower_components/paper-ripple/index.html", time.Unix(0, 1440513533097507547), false, `
-
-
-
-
- paper-ripple
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-ripple/paper-ripple.html": {"/bower_components/paper-ripple/paper-ripple.html", time.Unix(0, 1440513533097507547), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-styles/": {"/bower_components/paper-styles/", time.Unix(0, 1440513533101507557), true, ``},
- "/bower_components/paper-styles/.bower.json": {"/bower_components/paper-styles/.bower.json", time.Unix(0, 1440513533101507557), false, `{
- "name": "paper-styles",
- "version": "1.0.11",
- "description": "Common (global) styles for Material Design elements.",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-component",
- "polymer",
- "style"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-styles.git"
- },
- "main": "paper-styles.html",
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/polymerelements/paper-styles/",
- "ignore": [
- "/.*"
- ],
- "dependencies": {
- "iron-flex-layout": "PolymerElements/iron-flex-layout#^1.0.0",
- "font-roboto": "PolymerElements/font-roboto#^1.0.1",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "_release": "1.0.11",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.11",
- "commit": "347542e9ebe3e6e5f0830ee10e1c20c12956ff2c"
- },
- "_source": "git://github.com/polymerelements/paper-styles.git",
- "_target": "^1.0.0",
- "_originalSource": "polymerelements/paper-styles"
-}`},
- "/bower_components/paper-styles/bower.json": {"/bower_components/paper-styles/bower.json", time.Unix(0, 1440513533101507557), false, `{
- "name": "paper-styles",
- "version": "1.0.11",
- "description": "Common (global) styles for Material Design elements.",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-component",
- "polymer",
- "style"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-styles.git"
- },
- "main": "paper-styles.html",
- "license": "http://polymer.github.io/LICENSE.txt",
- "homepage": "https://github.com/polymerelements/paper-styles/",
- "ignore": [
- "/.*"
- ],
- "dependencies": {
- "iron-flex-layout": "PolymerElements/iron-flex-layout#^1.0.0",
- "font-roboto": "PolymerElements/font-roboto#^1.0.1",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/paper-styles/classes/": {"/bower_components/paper-styles/classes/", time.Unix(0, 1440513533101507557), true, ``},
- "/bower_components/paper-styles/classes/global.html": {"/bower_components/paper-styles/classes/global.html", time.Unix(0, 1440513533101507557), false, `
-
-
-
-
-`},
- "/bower_components/paper-styles/classes/shadow-layout.html": {"/bower_components/paper-styles/classes/shadow-layout.html", time.Unix(0, 1440513533101507557), false, `
-
-`},
- "/bower_components/paper-styles/classes/shadow.html": {"/bower_components/paper-styles/classes/shadow.html", time.Unix(0, 1440513533101507557), false, `
-
-
-`},
- "/bower_components/paper-styles/classes/typography.html": {"/bower_components/paper-styles/classes/typography.html", time.Unix(0, 1440513533101507557), false, `
-
-
-
-
-`},
- "/bower_components/paper-styles/color.html": {"/bower_components/paper-styles/color.html", time.Unix(0, 1440513533101507557), false, `
-
-
-
-
-`},
- "/bower_components/paper-styles/default-theme.html": {"/bower_components/paper-styles/default-theme.html", time.Unix(0, 1440513533101507557), false, `
-
-
-
-
-`},
- "/bower_components/paper-styles/paper-styles-classes.html": {"/bower_components/paper-styles/paper-styles-classes.html", time.Unix(0, 1440513533101507557), false, `
-
-
-
-
-
-`},
- "/bower_components/paper-styles/paper-styles.html": {"/bower_components/paper-styles/paper-styles.html", time.Unix(0, 1440513533101507557), false, `
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-styles/shadow.html": {"/bower_components/paper-styles/shadow.html", time.Unix(0, 1440513533101507557), false, `
-
-
-
-
-`},
- "/bower_components/paper-styles/typography.html": {"/bower_components/paper-styles/typography.html", time.Unix(0, 1440513533101507557), false, `
-
-
-
-
-
-`},
- "/bower_components/paper-tabs/": {"/bower_components/paper-tabs/", time.Unix(0, 1440513533105507567), true, ``},
- "/bower_components/paper-tabs/.bower.json": {"/bower_components/paper-tabs/.bower.json", time.Unix(0, 1440513533101507557), false, `{
- "name": "paper-tabs",
- "version": "1.0.2",
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "Material design tabs",
- "private": true,
- "main": "paper-tabs.html",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "tabs",
- "control"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-tabs.git"
- },
- "dependencies": {
- "iron-behaviors": "polymerelements/iron-behaviors#^1.0.0",
- "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0",
- "iron-icon": "polymerelements/iron-icon#^1.0.0",
- "iron-iconset-svg": "polymerelements/iron-iconset-svg#^1.0.0",
- "iron-menu-behavior": "polymerelements/iron-menu-behavior#^1.0.0",
- "iron-resizable-behavior": "polymerelements/iron-resizable-behavior#^1.0.0",
- "paper-ripple": "polymerelements/paper-ripple#^1.0.0",
- "paper-styles": "polymerelements/paper-styles#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0",
- "paper-icon-button": "polymerelements/paper-icon-button#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
- "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0",
- "paper-toolbar": "polymerelements/paper-toolbar#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0",
- "web-component-tester": "*"
- },
- "homepage": "https://github.com/PolymerElements/paper-tabs",
- "_release": "1.0.2",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.2",
- "commit": "61abed79e3c4e7c87dd826f7f81ef9c7ecb5df78"
- },
- "_source": "git://github.com/PolymerElements/paper-tabs.git",
- "_target": "~1.0.2",
- "_originalSource": "PolymerElements/paper-tabs",
- "_direct": true
-}`},
- "/bower_components/paper-tabs/.gitignore": {"/bower_components/paper-tabs/.gitignore", time.Unix(0, 1440513533101507557), false, `bower_components/
-`},
- "/bower_components/paper-tabs/bower.json": {"/bower_components/paper-tabs/bower.json", time.Unix(0, 1440513533101507557), false, `{
- "name": "paper-tabs",
- "version": "1.0.2",
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "Material design tabs",
- "private": true,
- "main": "paper-tabs.html",
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "tabs",
- "control"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-tabs.git"
- },
- "dependencies": {
- "iron-behaviors": "polymerelements/iron-behaviors#^1.0.0",
- "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0",
- "iron-icon": "polymerelements/iron-icon#^1.0.0",
- "iron-iconset-svg": "polymerelements/iron-iconset-svg#^1.0.0",
- "iron-menu-behavior": "polymerelements/iron-menu-behavior#^1.0.0",
- "iron-resizable-behavior": "polymerelements/iron-resizable-behavior#^1.0.0",
- "paper-ripple": "polymerelements/paper-ripple#^1.0.0",
- "paper-styles": "polymerelements/paper-styles#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0",
- "paper-icon-button": "polymerelements/paper-icon-button#^1.0.0"
- },
- "devDependencies": {
- "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
- "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0",
- "paper-toolbar": "polymerelements/paper-toolbar#^1.0.0",
- "test-fixture": "polymerelements/test-fixture#^1.0.0",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0",
- "web-component-tester": "*"
- }
-}
-`},
- "/bower_components/paper-tabs/hero.svg": {"/bower_components/paper-tabs/hero.svg", time.Unix(0, 1440513533101507557), false, `
-
-
-
-`},
- "/bower_components/paper-tabs/index.html": {"/bower_components/paper-tabs/index.html", time.Unix(0, 1440513533101507557), false, `
-
-
-
-
- paper-tabs
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-tabs/paper-tab.html": {"/bower_components/paper-tabs/paper-tab.html", time.Unix(0, 1440513533101507557), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-tabs/paper-tabs-icons.html": {"/bower_components/paper-tabs/paper-tabs-icons.html", time.Unix(0, 1440513533105507567), false, `
-
-
-
-
-
-
-`},
- "/bower_components/paper-tabs/paper-tabs.html": {"/bower_components/paper-tabs/paper-tabs.html", time.Unix(0, 1440513533105507567), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-toolbar/": {"/bower_components/paper-toolbar/", time.Unix(0, 1440513533105507567), true, ``},
- "/bower_components/paper-toolbar/.bower.json": {"/bower_components/paper-toolbar/.bower.json", time.Unix(0, 1440513533105507567), false, `{
- "name": "paper-toolbar",
- "version": "1.0.4",
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "A material design toolbar that is easily customizable",
- "private": true,
- "main": [
- "paper-toolbar.html"
- ],
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "toolbar",
- "layout"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-toolbar.git"
- },
- "dependencies": {
- "paper-styles": "PolymerElements/paper-styles#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-icons": "PolymerElements/iron-icons#^1.0.0",
- "paper-icon-button": "PolymerElements/paper-icon-button#^1.0.0",
- "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
- "test-fixture": "PolymerElements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- },
- "homepage": "https://github.com/PolymerElements/paper-toolbar",
- "_release": "1.0.4",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.4",
- "commit": "15096d1c9ee6cc547eaf078b431f3e07d0968367"
- },
- "_source": "git://github.com/PolymerElements/paper-toolbar.git",
- "_target": "~1.0.4",
- "_originalSource": "PolymerElements/paper-toolbar",
- "_direct": true
-}`},
- "/bower_components/paper-toolbar/.gitignore": {"/bower_components/paper-toolbar/.gitignore", time.Unix(0, 1440513533105507567), false, `bower_components/
-`},
- "/bower_components/paper-toolbar/bower.json": {"/bower_components/paper-toolbar/bower.json", time.Unix(0, 1440513533105507567), false, `{
- "name": "paper-toolbar",
- "version": "1.0.4",
- "license": "http://polymer.github.io/LICENSE.txt",
- "description": "A material design toolbar that is easily customizable",
- "private": true,
- "main": [
- "paper-toolbar.html"
- ],
- "authors": [
- "The Polymer Authors"
- ],
- "keywords": [
- "web-components",
- "polymer",
- "toolbar",
- "layout"
- ],
- "repository": {
- "type": "git",
- "url": "git://github.com/PolymerElements/paper-toolbar.git"
- },
- "dependencies": {
- "paper-styles": "PolymerElements/paper-styles#^1.0.0",
- "polymer": "Polymer/polymer#^1.0.0"
- },
- "devDependencies": {
- "iron-icons": "PolymerElements/iron-icons#^1.0.0",
- "paper-icon-button": "PolymerElements/paper-icon-button#^1.0.0",
- "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
- "test-fixture": "PolymerElements/test-fixture#^1.0.0",
- "web-component-tester": "*",
- "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
- }
-}
-`},
- "/bower_components/paper-toolbar/index.html": {"/bower_components/paper-toolbar/index.html", time.Unix(0, 1440513533105507567), false, `
-
-
-
-
-
-
-
- paper-toolbar
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/paper-toolbar/paper-toolbar.html": {"/bower_components/paper-toolbar/paper-toolbar.html", time.Unix(0, 1440513533105507567), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- "/bower_components/polymer/": {"/bower_components/polymer/", time.Unix(0, 1440513533105507567), true, ``},
- "/bower_components/polymer/.bower.json": {"/bower_components/polymer/.bower.json", time.Unix(0, 1440513533105507567), false, `{
- "name": "polymer",
- "version": "1.1.0",
- "main": [
- "polymer.html"
- ],
- "license": "http://polymer.github.io/LICENSE.txt",
- "ignore": [
- "/.*",
- "/test/"
- ],
- "authors": [
- "The Polymer Authors (http://polymer.github.io/AUTHORS.txt)"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/Polymer/polymer.git"
- },
- "dependencies": {
- "webcomponentsjs": "^0.7.2"
- },
- "devDependencies": {
- "web-component-tester": "*"
- },
- "private": true,
- "homepage": "https://github.com/Polymer/polymer",
- "_release": "1.1.0",
- "_resolution": {
- "type": "version",
- "tag": "v1.1.0",
- "commit": "67fb2f85fd66d8556fc07cf1dec41ff5273fa68a"
- },
- "_source": "git://github.com/Polymer/polymer.git",
- "_target": "^1.0.0",
- "_originalSource": "Polymer/polymer",
- "_direct": true
-}`},
- "/bower_components/polymer/LICENSE.txt": {"/bower_components/polymer/LICENSE.txt", time.Unix(0, 1440513533105507567), false, `// Copyright (c) 2014 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.
-`},
- "/bower_components/polymer/bower.json": {"/bower_components/polymer/bower.json", time.Unix(0, 1440513533105507567), false, `{
- "name": "polymer",
- "version": "1.1.0",
- "main": [
- "polymer.html"
- ],
- "license": "http://polymer.github.io/LICENSE.txt",
- "ignore": [
- "/.*",
- "/test/"
- ],
- "authors": [
- "The Polymer Authors (http://polymer.github.io/AUTHORS.txt)"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/Polymer/polymer.git"
- },
- "dependencies": {
- "webcomponentsjs": "^0.7.2"
- },
- "devDependencies": {
- "web-component-tester": "*"
- },
- "private": true
-}
-`},
- "/bower_components/polymer/build.log": {"/bower_components/polymer/build.log", time.Unix(0, 1440513533105507567), false, `BUILD LOG
----------
-Build Time: 2015-08-13T16:56:33-0700
-
-NODEJS INFORMATION
-==================
-nodejs: v0.12.7
-del: 1.2.0
-gulp: 3.9.0
-gulp-audit: 1.0.0
-gulp-rename: 1.2.2
-gulp-replace: 0.5.3
-gulp-vulcanize: 6.0.1
-lazypipe: 0.2.4
-polyclean: 1.2.0
-run-sequence: 1.1.1
-
-REPO REVISIONS
-==============
-polymer: a42ca09c3b99749b1407d5fa68cd957c2eaf5ca6
-
-BUILD HASHES
-============
-polymer-mini.html: b40016f458e85bb815c898378b7bcd5c8abe5661
-polymer-micro.html: ef8ebb2dc40697c845c2b8ec64ee69838d0d7bfc
-polymer.html: 2f874995a3a3ada9e87da48a01d10c6d3ee297bb`},
- "/bower_components/polymer/polymer-micro.html": {"/bower_components/polymer/polymer-micro.html", time.Unix(0, 1440513533105507567), false, `
-
-`},
- "/bower_components/polymer/polymer-mini.html": {"/bower_components/polymer/polymer-mini.html", time.Unix(0, 1440513533105507567), false, `
-
-
-
-`},
- "/bower_components/polymer/polymer.html": {"/bower_components/polymer/polymer.html", time.Unix(0, 1440513533109507578), false, `
-
-
-`},
- "/bower_components/promise-polyfill/": {"/bower_components/promise-polyfill/", time.Unix(0, 1440513533109507578), true, ``},
- "/bower_components/promise-polyfill/.bower.json": {"/bower_components/promise-polyfill/.bower.json", time.Unix(0, 1440513533109507578), false, `{
- "name": "promise-polyfill",
- "version": "1.0.0",
- "homepage": "https://github.com/taylorhakes/promise-polyfill",
- "authors": [
- "Taylor Hakes"
- ],
- "description": "Lightweight promise polyfill for the browser and node. A+ Compliant.",
- "main": "Promise.js",
- "moduleType": [
- "globals",
- "node"
- ],
- "keywords": [
- "promise",
- "es6",
- "polyfill",
- "html5"
- ],
- "license": "MIT",
- "ignore": [
- "**/.*",
- "node_modules",
- "bower_components",
- "test",
- "tests"
- ],
- "dependencies": {
- "polymer": "polymer/polymer#^1.0.0"
- },
- "_release": "1.0.0",
- "_resolution": {
- "type": "version",
- "tag": "v1.0.0",
- "commit": "2ef7dada161cae30e69ffff918485c57121d4b88"
- },
- "_source": "git://github.com/polymerlabs/promise-polyfill.git",
- "_target": "^1.0.0",
- "_originalSource": "polymerlabs/promise-polyfill"
-}`},
- "/bower_components/promise-polyfill/Gruntfile.js": {"/bower_components/promise-polyfill/Gruntfile.js", time.Unix(0, 1440513533109507578), false, `module.exports = function(grunt) {
-
- grunt.initConfig({
- pkg: grunt.file.readJSON('package.json'),
-
- uglify: {
- options: {
- banner: '/*! <%= pkg.name %> <%= pkg.version %> */\n'
- },
- dist: {
- files: {
- 'Promise.min.uglify.js': ['Promise.js']
- }
- }
- },
-
- closurecompiler: {
- options: {
- compilation_level: 'ADVANCED_OPTIMIZATIONS',
- },
- dist: {
- files: {
- 'Promise.min.js': ['Promise.js']
- }
- }
- },
-
- bytesize: {
- dist: {
- src: ['Promise*.js']
- }
- }
- });
-
- grunt.loadNpmTasks('grunt-contrib-uglify');
- grunt.loadNpmTasks('grunt-closurecompiler');
- grunt.loadNpmTasks('grunt-bytesize');
-
- grunt.registerTask('build', ['closurecompiler', 'bytesize']);
-};
-`},
- "/bower_components/promise-polyfill/LICENSE": {"/bower_components/promise-polyfill/LICENSE", time.Unix(0, 1440513533109507578), false, `Copyright (c) 2014 Taylor Hakes
-Copyright (c) 2014 Forbes Lindesay
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.`},
- "/bower_components/promise-polyfill/Promise-Statics.js": {"/bower_components/promise-polyfill/Promise-Statics.js", time.Unix(0, 1440513533109507578), false, `Promise.all = Promise.all || function () {
- var args = Array.prototype.slice.call(arguments.length === 1 && Array.isArray(arguments[0]) ? arguments[0] : arguments);
-
- return new Promise(function (resolve, reject) {
- if (args.length === 0) return resolve([]);
- var remaining = args.length;
- function res(i, val) {
- try {
- if (val && (typeof val === 'object' || typeof val === 'function')) {
- var then = val.then;
- if (typeof then === 'function') {
- then.call(val, function (val) { res(i, val) }, reject);
- return;
- }
- }
- args[i] = val;
- if (--remaining === 0) {
- resolve(args);
- }
- } catch (ex) {
- reject(ex);
- }
- }
- for (var i = 0; i < args.length; i++) {
- res(i, args[i]);
- }
- });
-};
-
-Promise.race = Promise.race || function (values) {
- return new Promise(function (resolve, reject) {
- for(var i = 0, len = values.length; i < len; i++) {
- values[i].then(resolve, reject);
- }
- });
-};
-
-`},
- "/bower_components/promise-polyfill/Promise.js": {"/bower_components/promise-polyfill/Promise.js", time.Unix(0, 1440513533109507578), false, `function MakePromise (asap) {
- function Promise(fn) {
- if (typeof this !== 'object' || typeof fn !== 'function') throw new TypeError();
- this._state = null;
- this._value = null;
- this._deferreds = []
-
- doResolve(fn, resolve.bind(this), reject.bind(this));
- }
-
- function handle(deferred) {
- var me = this;
- if (this._state === null) {
- this._deferreds.push(deferred);
- return
- }
- asap(function() {
- var cb = me._state ? deferred.onFulfilled : deferred.onRejected
- if (typeof cb !== 'function') {
- (me._state ? deferred.resolve : deferred.reject)(me._value);
- return;
- }
- var ret;
- try {
- ret = cb(me._value);
- }
- catch (e) {
- deferred.reject(e);
- return;
- }
- deferred.resolve(ret);
- })
- }
-
- function resolve(newValue) {
- try { //Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
- if (newValue === this) throw new TypeError();
- if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
- var then = newValue.then;
- if (typeof then === 'function') {
- doResolve(then.bind(newValue), resolve.bind(this), reject.bind(this));
- return;
- }
- }
- this._state = true;
- this._value = newValue;
- finale.call(this);
- } catch (e) { reject.call(this, e); }
- }
-
- function reject(newValue) {
- this._state = false;
- this._value = newValue;
- finale.call(this);
- }
-
- function finale() {
- for (var i = 0, len = this._deferreds.length; i < len; i++) {
- handle.call(this, this._deferreds[i]);
- }
- this._deferreds = null;
- }
-
- /**
- * Take a potentially misbehaving resolver function and make sure
- * onFulfilled and onRejected are only called once.
- *
- * Makes no guarantees about asynchrony.
- */
- function doResolve(fn, onFulfilled, onRejected) {
- var done = false;
- try {
- fn(function (value) {
- if (done) return;
- done = true;
- onFulfilled(value);
- }, function (reason) {
- if (done) return;
- done = true;
- onRejected(reason);
- })
- } catch (ex) {
- if (done) return;
- done = true;
- onRejected(ex);
- }
- }
-
- Promise.prototype['catch'] = function (onRejected) {
- return this.then(null, onRejected);
- };
-
- Promise.prototype.then = function(onFulfilled, onRejected) {
- var me = this;
- return new Promise(function(resolve, reject) {
- handle.call(me, {
- onFulfilled: onFulfilled,
- onRejected: onRejected,
- resolve: resolve,
- reject: reject
- });
- })
- };
-
- Promise.resolve = function (value) {
- if (value && typeof value === 'object' && value.constructor === Promise) {
- return value;
- }
-
- return new Promise(function (resolve) {
- resolve(value);
- });
- };
-
- Promise.reject = function (value) {
- return new Promise(function (resolve, reject) {
- reject(value);
- });
- };
-
-
- return Promise;
-}
-
-if (typeof module !== 'undefined') {
- module.exports = MakePromise;
-}
-
-`},
- "/bower_components/promise-polyfill/Promise.min.js": {"/bower_components/promise-polyfill/Promise.min.js", time.Unix(0, 1440513533109507578), false, `function m(n){function b(a){if("object"!==typeof this||"function"!==typeof a)throw new TypeError;this.c=this.a=null;this.b=[];g(a,h.bind(this),d.bind(this))}function k(a){var c=this;null===this.a?this.b.push(a):n(function(){var f=c.a?a.d:a.e;if("function"!==typeof f)(c.a?a.resolve:a.reject)(c.c);else{var e;try{e=f(c.c)}catch(b){a.reject(b);return}a.resolve(e)}})}function h(a){try{if(a===this)throw new TypeError;if(a&&("object"===typeof a||"function"===typeof a)){var c=a.then;if("function"===typeof c){g(c.bind(a),
-h.bind(this),d.bind(this));return}}this.a=!0;this.c=a;l.call(this)}catch(b){d.call(this,b)}}function d(a){this.a=!1;this.c=a;l.call(this)}function l(){for(var a=0,c=this.b.length;a
-
-
-`},
- "/bower_components/promise-polyfill/promise-polyfill.html": {"/bower_components/promise-polyfill/promise-polyfill.html", time.Unix(0, 1440513533109507578), false, `
-
-`},
- "/bower_components/webcomponentsjs/": {"/bower_components/webcomponentsjs/", time.Unix(0, 1440513533117507599), true, ``},
- "/bower_components/webcomponentsjs/.bower.json": {"/bower_components/webcomponentsjs/.bower.json", time.Unix(0, 1440513533109507578), false, `{
- "name": "webcomponentsjs",
- "main": "webcomponents.js",
- "version": "0.7.11",
- "homepage": "http://webcomponents.org",
- "authors": [
- "The Polymer Authors"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/webcomponents/webcomponentsjs.git"
- },
- "keywords": [
- "webcomponents"
- ],
- "license": "BSD",
- "ignore": [],
- "_release": "0.7.11",
- "_resolution": {
- "type": "version",
- "tag": "v0.7.11",
- "commit": "ce6321507de6161ec52b43f82a6c36eda614d750"
- },
- "_source": "git://github.com/Polymer/webcomponentsjs.git",
- "_target": "^0.7.2",
- "_originalSource": "webcomponentsjs"
-}`},
- "/bower_components/webcomponentsjs/CustomElements.js": {"/bower_components/webcomponentsjs/CustomElements.js", time.Unix(0, 1440513533109507578), false, `/**
- * @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
- */
-// @version 0.7.11
-if (typeof WeakMap === "undefined") {
- (function() {
- var defineProperty = Object.defineProperty;
- var counter = Date.now() % 1e9;
- var WeakMap = function() {
- this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__");
- };
- WeakMap.prototype = {
- set: function(key, value) {
- var entry = key[this.name];
- if (entry && entry[0] === key) entry[1] = value; else defineProperty(key, this.name, {
- value: [ key, value ],
- writable: true
- });
- return this;
- },
- get: function(key) {
- var entry;
- return (entry = key[this.name]) && entry[0] === key ? entry[1] : undefined;
- },
- "delete": function(key) {
- var entry = key[this.name];
- if (!entry || entry[0] !== key) return false;
- entry[0] = entry[1] = undefined;
- return true;
- },
- has: function(key) {
- var entry = key[this.name];
- if (!entry) return false;
- return entry[0] === key;
- }
- };
- window.WeakMap = WeakMap;
- })();
-}
-
-(function(global) {
- var registrationsTable = new WeakMap();
- var setImmediate;
- if (/Trident|Edge/.test(navigator.userAgent)) {
- setImmediate = setTimeout;
- } else if (window.setImmediate) {
- setImmediate = window.setImmediate;
- } else {
- var setImmediateQueue = [];
- var sentinel = String(Math.random());
- window.addEventListener("message", function(e) {
- if (e.data === sentinel) {
- var queue = setImmediateQueue;
- setImmediateQueue = [];
- queue.forEach(function(func) {
- func();
- });
- }
- });
- setImmediate = function(func) {
- setImmediateQueue.push(func);
- window.postMessage(sentinel, "*");
- };
- }
- var isScheduled = false;
- var scheduledObservers = [];
- function scheduleCallback(observer) {
- scheduledObservers.push(observer);
- if (!isScheduled) {
- isScheduled = true;
- setImmediate(dispatchCallbacks);
- }
- }
- function wrapIfNeeded(node) {
- return window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(node) || node;
- }
- function dispatchCallbacks() {
- isScheduled = false;
- var observers = scheduledObservers;
- scheduledObservers = [];
- observers.sort(function(o1, o2) {
- return o1.uid_ - o2.uid_;
- });
- var anyNonEmpty = false;
- observers.forEach(function(observer) {
- var queue = observer.takeRecords();
- removeTransientObserversFor(observer);
- if (queue.length) {
- observer.callback_(queue, observer);
- anyNonEmpty = true;
- }
- });
- if (anyNonEmpty) dispatchCallbacks();
- }
- function removeTransientObserversFor(observer) {
- observer.nodes_.forEach(function(node) {
- var registrations = registrationsTable.get(node);
- if (!registrations) return;
- registrations.forEach(function(registration) {
- if (registration.observer === observer) registration.removeTransientObservers();
- });
- });
- }
- function forEachAncestorAndObserverEnqueueRecord(target, callback) {
- for (var node = target; node; node = node.parentNode) {
- var registrations = registrationsTable.get(node);
- if (registrations) {
- for (var j = 0; j < registrations.length; j++) {
- var registration = registrations[j];
- var options = registration.options;
- if (node !== target && !options.subtree) continue;
- var record = callback(options);
- if (record) registration.enqueue(record);
- }
- }
- }
- }
- var uidCounter = 0;
- function JsMutationObserver(callback) {
- this.callback_ = callback;
- this.nodes_ = [];
- this.records_ = [];
- this.uid_ = ++uidCounter;
- }
- JsMutationObserver.prototype = {
- observe: function(target, options) {
- target = wrapIfNeeded(target);
- if (!options.childList && !options.attributes && !options.characterData || options.attributeOldValue && !options.attributes || options.attributeFilter && options.attributeFilter.length && !options.attributes || options.characterDataOldValue && !options.characterData) {
- throw new SyntaxError();
- }
- var registrations = registrationsTable.get(target);
- if (!registrations) registrationsTable.set(target, registrations = []);
- var registration;
- for (var i = 0; i < registrations.length; i++) {
- if (registrations[i].observer === this) {
- registration = registrations[i];
- registration.removeListeners();
- registration.options = options;
- break;
- }
- }
- if (!registration) {
- registration = new Registration(this, target, options);
- registrations.push(registration);
- this.nodes_.push(target);
- }
- registration.addListeners();
- },
- disconnect: function() {
- this.nodes_.forEach(function(node) {
- var registrations = registrationsTable.get(node);
- for (var i = 0; i < registrations.length; i++) {
- var registration = registrations[i];
- if (registration.observer === this) {
- registration.removeListeners();
- registrations.splice(i, 1);
- break;
- }
- }
- }, this);
- this.records_ = [];
- },
- takeRecords: function() {
- var copyOfRecords = this.records_;
- this.records_ = [];
- return copyOfRecords;
- }
- };
- function MutationRecord(type, target) {
- this.type = type;
- this.target = target;
- this.addedNodes = [];
- this.removedNodes = [];
- this.previousSibling = null;
- this.nextSibling = null;
- this.attributeName = null;
- this.attributeNamespace = null;
- this.oldValue = null;
- }
- function copyMutationRecord(original) {
- var record = new MutationRecord(original.type, original.target);
- record.addedNodes = original.addedNodes.slice();
- record.removedNodes = original.removedNodes.slice();
- record.previousSibling = original.previousSibling;
- record.nextSibling = original.nextSibling;
- record.attributeName = original.attributeName;
- record.attributeNamespace = original.attributeNamespace;
- record.oldValue = original.oldValue;
- return record;
- }
- var currentRecord, recordWithOldValue;
- function getRecord(type, target) {
- return currentRecord = new MutationRecord(type, target);
- }
- function getRecordWithOldValue(oldValue) {
- if (recordWithOldValue) return recordWithOldValue;
- recordWithOldValue = copyMutationRecord(currentRecord);
- recordWithOldValue.oldValue = oldValue;
- return recordWithOldValue;
- }
- function clearRecords() {
- currentRecord = recordWithOldValue = undefined;
- }
- function recordRepresentsCurrentMutation(record) {
- return record === recordWithOldValue || record === currentRecord;
- }
- function selectRecord(lastRecord, newRecord) {
- if (lastRecord === newRecord) return lastRecord;
- if (recordWithOldValue && recordRepresentsCurrentMutation(lastRecord)) return recordWithOldValue;
- return null;
- }
- function Registration(observer, target, options) {
- this.observer = observer;
- this.target = target;
- this.options = options;
- this.transientObservedNodes = [];
- }
- Registration.prototype = {
- enqueue: function(record) {
- var records = this.observer.records_;
- var length = records.length;
- if (records.length > 0) {
- var lastRecord = records[length - 1];
- var recordToReplaceLast = selectRecord(lastRecord, record);
- if (recordToReplaceLast) {
- records[length - 1] = recordToReplaceLast;
- return;
- }
- } else {
- scheduleCallback(this.observer);
- }
- records[length] = record;
- },
- addListeners: function() {
- this.addListeners_(this.target);
- },
- addListeners_: function(node) {
- var options = this.options;
- if (options.attributes) node.addEventListener("DOMAttrModified", this, true);
- if (options.characterData) node.addEventListener("DOMCharacterDataModified", this, true);
- if (options.childList) node.addEventListener("DOMNodeInserted", this, true);
- if (options.childList || options.subtree) node.addEventListener("DOMNodeRemoved", this, true);
- },
- removeListeners: function() {
- this.removeListeners_(this.target);
- },
- removeListeners_: function(node) {
- var options = this.options;
- if (options.attributes) node.removeEventListener("DOMAttrModified", this, true);
- if (options.characterData) node.removeEventListener("DOMCharacterDataModified", this, true);
- if (options.childList) node.removeEventListener("DOMNodeInserted", this, true);
- if (options.childList || options.subtree) node.removeEventListener("DOMNodeRemoved", this, true);
- },
- addTransientObserver: function(node) {
- if (node === this.target) return;
- this.addListeners_(node);
- this.transientObservedNodes.push(node);
- var registrations = registrationsTable.get(node);
- if (!registrations) registrationsTable.set(node, registrations = []);
- registrations.push(this);
- },
- removeTransientObservers: function() {
- var transientObservedNodes = this.transientObservedNodes;
- this.transientObservedNodes = [];
- transientObservedNodes.forEach(function(node) {
- this.removeListeners_(node);
- var registrations = registrationsTable.get(node);
- for (var i = 0; i < registrations.length; i++) {
- if (registrations[i] === this) {
- registrations.splice(i, 1);
- break;
- }
- }
- }, this);
- },
- handleEvent: function(e) {
- e.stopImmediatePropagation();
- switch (e.type) {
- case "DOMAttrModified":
- var name = e.attrName;
- var namespace = e.relatedNode.namespaceURI;
- var target = e.target;
- var record = new getRecord("attributes", target);
- record.attributeName = name;
- record.attributeNamespace = namespace;
- var oldValue = e.attrChange === MutationEvent.ADDITION ? null : e.prevValue;
- forEachAncestorAndObserverEnqueueRecord(target, function(options) {
- if (!options.attributes) return;
- if (options.attributeFilter && options.attributeFilter.length && options.attributeFilter.indexOf(name) === -1 && options.attributeFilter.indexOf(namespace) === -1) {
- return;
- }
- if (options.attributeOldValue) return getRecordWithOldValue(oldValue);
- return record;
- });
- break;
-
- case "DOMCharacterDataModified":
- var target = e.target;
- var record = getRecord("characterData", target);
- var oldValue = e.prevValue;
- forEachAncestorAndObserverEnqueueRecord(target, function(options) {
- if (!options.characterData) return;
- if (options.characterDataOldValue) return getRecordWithOldValue(oldValue);
- return record;
- });
- break;
-
- case "DOMNodeRemoved":
- this.addTransientObserver(e.target);
-
- case "DOMNodeInserted":
- var changedNode = e.target;
- var addedNodes, removedNodes;
- if (e.type === "DOMNodeInserted") {
- addedNodes = [ changedNode ];
- removedNodes = [];
- } else {
- addedNodes = [];
- removedNodes = [ changedNode ];
- }
- var previousSibling = changedNode.previousSibling;
- var nextSibling = changedNode.nextSibling;
- var record = getRecord("childList", e.target.parentNode);
- record.addedNodes = addedNodes;
- record.removedNodes = removedNodes;
- record.previousSibling = previousSibling;
- record.nextSibling = nextSibling;
- forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options) {
- if (!options.childList) return;
- return record;
- });
- }
- clearRecords();
- }
- };
- global.JsMutationObserver = JsMutationObserver;
- if (!global.MutationObserver) global.MutationObserver = JsMutationObserver;
-})(this);
-
-window.CustomElements = window.CustomElements || {
- flags: {}
-};
-
-(function(scope) {
- var flags = scope.flags;
- var modules = [];
- var addModule = function(module) {
- modules.push(module);
- };
- var initializeModules = function() {
- modules.forEach(function(module) {
- module(scope);
- });
- };
- scope.addModule = addModule;
- scope.initializeModules = initializeModules;
- scope.hasNative = Boolean(document.registerElement);
- scope.useNative = !flags.register && scope.hasNative && !window.ShadowDOMPolyfill && (!window.HTMLImports || window.HTMLImports.useNative);
-})(window.CustomElements);
-
-window.CustomElements.addModule(function(scope) {
- var IMPORT_LINK_TYPE = window.HTMLImports ? window.HTMLImports.IMPORT_LINK_TYPE : "none";
- function forSubtree(node, cb) {
- findAllElements(node, function(e) {
- if (cb(e)) {
- return true;
- }
- forRoots(e, cb);
- });
- forRoots(node, cb);
- }
- function findAllElements(node, find, data) {
- var e = node.firstElementChild;
- if (!e) {
- e = node.firstChild;
- while (e && e.nodeType !== Node.ELEMENT_NODE) {
- e = e.nextSibling;
- }
- }
- while (e) {
- if (find(e, data) !== true) {
- findAllElements(e, find, data);
- }
- e = e.nextElementSibling;
- }
- return null;
- }
- function forRoots(node, cb) {
- var root = node.shadowRoot;
- while (root) {
- forSubtree(root, cb);
- root = root.olderShadowRoot;
- }
- }
- function forDocumentTree(doc, cb) {
- _forDocumentTree(doc, cb, []);
- }
- function _forDocumentTree(doc, cb, processingDocuments) {
- doc = window.wrap(doc);
- if (processingDocuments.indexOf(doc) >= 0) {
- return;
- }
- processingDocuments.push(doc);
- var imports = doc.querySelectorAll("link[rel=" + IMPORT_LINK_TYPE + "]");
- for (var i = 0, l = imports.length, n; i < l && (n = imports[i]); i++) {
- if (n.import) {
- _forDocumentTree(n.import, cb, processingDocuments);
- }
- }
- cb(doc);
- }
- scope.forDocumentTree = forDocumentTree;
- scope.forSubtree = forSubtree;
-});
-
-window.CustomElements.addModule(function(scope) {
- var flags = scope.flags;
- var forSubtree = scope.forSubtree;
- var forDocumentTree = scope.forDocumentTree;
- function addedNode(node, isAttached) {
- return added(node, isAttached) || addedSubtree(node, isAttached);
- }
- function added(node, isAttached) {
- if (scope.upgrade(node, isAttached)) {
- return true;
- }
- if (isAttached) {
- attached(node);
- }
- }
- function addedSubtree(node, isAttached) {
- forSubtree(node, function(e) {
- if (added(e, isAttached)) {
- return true;
- }
- });
- }
- var hasPolyfillMutations = !window.MutationObserver || window.MutationObserver === window.JsMutationObserver;
- scope.hasPolyfillMutations = hasPolyfillMutations;
- var isPendingMutations = false;
- var pendingMutations = [];
- function deferMutation(fn) {
- pendingMutations.push(fn);
- if (!isPendingMutations) {
- isPendingMutations = true;
- setTimeout(takeMutations);
- }
- }
- function takeMutations() {
- isPendingMutations = false;
- var $p = pendingMutations;
- for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) {
- p();
- }
- pendingMutations = [];
- }
- function attached(element) {
- if (hasPolyfillMutations) {
- deferMutation(function() {
- _attached(element);
- });
- } else {
- _attached(element);
- }
- }
- function _attached(element) {
- if (element.__upgraded__ && !element.__attached) {
- element.__attached = true;
- if (element.attachedCallback) {
- element.attachedCallback();
- }
- }
- }
- function detachedNode(node) {
- detached(node);
- forSubtree(node, function(e) {
- detached(e);
- });
- }
- function detached(element) {
- if (hasPolyfillMutations) {
- deferMutation(function() {
- _detached(element);
- });
- } else {
- _detached(element);
- }
- }
- function _detached(element) {
- if (element.__upgraded__ && element.__attached) {
- element.__attached = false;
- if (element.detachedCallback) {
- element.detachedCallback();
- }
- }
- }
- function inDocument(element) {
- var p = element;
- var doc = window.wrap(document);
- while (p) {
- if (p == doc) {
- return true;
- }
- p = p.parentNode || p.nodeType === Node.DOCUMENT_FRAGMENT_NODE && p.host;
- }
- }
- function watchShadow(node) {
- if (node.shadowRoot && !node.shadowRoot.__watched) {
- flags.dom && console.log("watching shadow-root for: ", node.localName);
- var root = node.shadowRoot;
- while (root) {
- observe(root);
- root = root.olderShadowRoot;
- }
- }
- }
- function handler(root, mutations) {
- if (flags.dom) {
- var mx = mutations[0];
- if (mx && mx.type === "childList" && mx.addedNodes) {
- if (mx.addedNodes) {
- var d = mx.addedNodes[0];
- while (d && d !== document && !d.host) {
- d = d.parentNode;
- }
- var u = d && (d.URL || d._URL || d.host && d.host.localName) || "";
- u = u.split("/?").shift().split("/").pop();
- }
- }
- console.group("mutations (%d) [%s]", mutations.length, u || "");
- }
- var isAttached = inDocument(root);
- mutations.forEach(function(mx) {
- if (mx.type === "childList") {
- forEach(mx.addedNodes, function(n) {
- if (!n.localName) {
- return;
- }
- addedNode(n, isAttached);
- });
- forEach(mx.removedNodes, function(n) {
- if (!n.localName) {
- return;
- }
- detachedNode(n);
- });
- }
- });
- flags.dom && console.groupEnd();
- }
- function takeRecords(node) {
- node = window.wrap(node);
- if (!node) {
- node = window.wrap(document);
- }
- while (node.parentNode) {
- node = node.parentNode;
- }
- var observer = node.__observer;
- if (observer) {
- handler(node, observer.takeRecords());
- takeMutations();
- }
- }
- var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);
- function observe(inRoot) {
- if (inRoot.__observer) {
- return;
- }
- var observer = new MutationObserver(handler.bind(this, inRoot));
- observer.observe(inRoot, {
- childList: true,
- subtree: true
- });
- inRoot.__observer = observer;
- }
- function upgradeDocument(doc) {
- doc = window.wrap(doc);
- flags.dom && console.group("upgradeDocument: ", doc.baseURI.split("/").pop());
- var isMainDocument = doc === window.wrap(document);
- addedNode(doc, isMainDocument);
- observe(doc);
- flags.dom && console.groupEnd();
- }
- function upgradeDocumentTree(doc) {
- forDocumentTree(doc, upgradeDocument);
- }
- var originalCreateShadowRoot = Element.prototype.createShadowRoot;
- if (originalCreateShadowRoot) {
- Element.prototype.createShadowRoot = function() {
- var root = originalCreateShadowRoot.call(this);
- window.CustomElements.watchShadow(this);
- return root;
- };
- }
- scope.watchShadow = watchShadow;
- scope.upgradeDocumentTree = upgradeDocumentTree;
- scope.upgradeDocument = upgradeDocument;
- scope.upgradeSubtree = addedSubtree;
- scope.upgradeAll = addedNode;
- scope.attached = attached;
- scope.takeRecords = takeRecords;
-});
-
-window.CustomElements.addModule(function(scope) {
- var flags = scope.flags;
- function upgrade(node, isAttached) {
- if (!node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) {
- var is = node.getAttribute("is");
- var definition = scope.getRegisteredDefinition(node.localName) || scope.getRegisteredDefinition(is);
- if (definition) {
- if (is && definition.tag == node.localName || !is && !definition.extends) {
- return upgradeWithDefinition(node, definition, isAttached);
- }
- }
- }
- }
- function upgradeWithDefinition(element, definition, isAttached) {
- flags.upgrade && console.group("upgrade:", element.localName);
- if (definition.is) {
- element.setAttribute("is", definition.is);
- }
- implementPrototype(element, definition);
- element.__upgraded__ = true;
- created(element);
- if (isAttached) {
- scope.attached(element);
- }
- scope.upgradeSubtree(element, isAttached);
- flags.upgrade && console.groupEnd();
- return element;
- }
- function implementPrototype(element, definition) {
- if (Object.__proto__) {
- element.__proto__ = definition.prototype;
- } else {
- customMixin(element, definition.prototype, definition.native);
- element.__proto__ = definition.prototype;
- }
- }
- function customMixin(inTarget, inSrc, inNative) {
- var used = {};
- var p = inSrc;
- while (p !== inNative && p !== HTMLElement.prototype) {
- var keys = Object.getOwnPropertyNames(p);
- for (var i = 0, k; k = keys[i]; i++) {
- if (!used[k]) {
- Object.defineProperty(inTarget, k, Object.getOwnPropertyDescriptor(p, k));
- used[k] = 1;
- }
- }
- p = Object.getPrototypeOf(p);
- }
- }
- function created(element) {
- if (element.createdCallback) {
- element.createdCallback();
- }
- }
- scope.upgrade = upgrade;
- scope.upgradeWithDefinition = upgradeWithDefinition;
- scope.implementPrototype = implementPrototype;
-});
-
-window.CustomElements.addModule(function(scope) {
- var isIE11OrOlder = scope.isIE11OrOlder;
- var upgradeDocumentTree = scope.upgradeDocumentTree;
- var upgradeAll = scope.upgradeAll;
- var upgradeWithDefinition = scope.upgradeWithDefinition;
- var implementPrototype = scope.implementPrototype;
- var useNative = scope.useNative;
- function register(name, options) {
- var definition = options || {};
- if (!name) {
- throw new Error("document.registerElement: first argument `+"`"+`name`+"`"+` must not be empty");
- }
- if (name.indexOf("-") < 0) {
- throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '" + String(name) + "'.");
- }
- if (isReservedTag(name)) {
- throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '" + String(name) + "'. The type name is invalid.");
- }
- if (getRegisteredDefinition(name)) {
- throw new Error("DuplicateDefinitionError: a type with name '" + String(name) + "' is already registered");
- }
- if (!definition.prototype) {
- definition.prototype = Object.create(HTMLElement.prototype);
- }
- definition.__name = name.toLowerCase();
- definition.lifecycle = definition.lifecycle || {};
- definition.ancestry = ancestry(definition.extends);
- resolveTagName(definition);
- resolvePrototypeChain(definition);
- overrideAttributeApi(definition.prototype);
- registerDefinition(definition.__name, definition);
- definition.ctor = generateConstructor(definition);
- definition.ctor.prototype = definition.prototype;
- definition.prototype.constructor = definition.ctor;
- if (scope.ready) {
- upgradeDocumentTree(document);
- }
- return definition.ctor;
- }
- function overrideAttributeApi(prototype) {
- if (prototype.setAttribute._polyfilled) {
- return;
- }
- var setAttribute = prototype.setAttribute;
- prototype.setAttribute = function(name, value) {
- changeAttribute.call(this, name, value, setAttribute);
- };
- var removeAttribute = prototype.removeAttribute;
- prototype.removeAttribute = function(name) {
- changeAttribute.call(this, name, null, removeAttribute);
- };
- prototype.setAttribute._polyfilled = true;
- }
- function changeAttribute(name, value, operation) {
- name = name.toLowerCase();
- var oldValue = this.getAttribute(name);
- operation.apply(this, arguments);
- var newValue = this.getAttribute(name);
- if (this.attributeChangedCallback && newValue !== oldValue) {
- this.attributeChangedCallback(name, oldValue, newValue);
- }
- }
- function isReservedTag(name) {
- for (var i = 0; i < reservedTagList.length; i++) {
- if (name === reservedTagList[i]) {
- return true;
- }
- }
- }
- var reservedTagList = [ "annotation-xml", "color-profile", "font-face", "font-face-src", "font-face-uri", "font-face-format", "font-face-name", "missing-glyph" ];
- function ancestry(extnds) {
- var extendee = getRegisteredDefinition(extnds);
- if (extendee) {
- return ancestry(extendee.extends).concat([ extendee ]);
- }
- return [];
- }
- function resolveTagName(definition) {
- var baseTag = definition.extends;
- for (var i = 0, a; a = definition.ancestry[i]; i++) {
- baseTag = a.is && a.tag;
- }
- definition.tag = baseTag || definition.__name;
- if (baseTag) {
- definition.is = definition.__name;
- }
- }
- function resolvePrototypeChain(definition) {
- if (!Object.__proto__) {
- var nativePrototype = HTMLElement.prototype;
- if (definition.is) {
- var inst = document.createElement(definition.tag);
- nativePrototype = Object.getPrototypeOf(inst);
- }
- var proto = definition.prototype, ancestor;
- var foundPrototype = false;
- while (proto) {
- if (proto == nativePrototype) {
- foundPrototype = true;
- }
- ancestor = Object.getPrototypeOf(proto);
- if (ancestor) {
- proto.__proto__ = ancestor;
- }
- proto = ancestor;
- }
- if (!foundPrototype) {
- console.warn(definition.tag + " prototype not found in prototype chain for " + definition.is);
- }
- definition.native = nativePrototype;
- }
- }
- function instantiate(definition) {
- return upgradeWithDefinition(domCreateElement(definition.tag), definition);
- }
- var registry = {};
- function getRegisteredDefinition(name) {
- if (name) {
- return registry[name.toLowerCase()];
- }
- }
- function registerDefinition(name, definition) {
- registry[name] = definition;
- }
- function generateConstructor(definition) {
- return function() {
- return instantiate(definition);
- };
- }
- var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
- function createElementNS(namespace, tag, typeExtension) {
- if (namespace === HTML_NAMESPACE) {
- return createElement(tag, typeExtension);
- } else {
- return domCreateElementNS(namespace, tag);
- }
- }
- function createElement(tag, typeExtension) {
- if (tag) {
- tag = tag.toLowerCase();
- }
- if (typeExtension) {
- typeExtension = typeExtension.toLowerCase();
- }
- var definition = getRegisteredDefinition(typeExtension || tag);
- if (definition) {
- if (tag == definition.tag && typeExtension == definition.is) {
- return new definition.ctor();
- }
- if (!typeExtension && !definition.is) {
- return new definition.ctor();
- }
- }
- var element;
- if (typeExtension) {
- element = createElement(tag);
- element.setAttribute("is", typeExtension);
- return element;
- }
- element = domCreateElement(tag);
- if (tag.indexOf("-") >= 0) {
- implementPrototype(element, HTMLElement);
- }
- return element;
- }
- var domCreateElement = document.createElement.bind(document);
- var domCreateElementNS = document.createElementNS.bind(document);
- var isInstance;
- if (!Object.__proto__ && !useNative) {
- isInstance = function(obj, ctor) {
- if (obj instanceof ctor) {
- return true;
- }
- var p = obj;
- while (p) {
- if (p === ctor.prototype) {
- return true;
- }
- p = p.__proto__;
- }
- return false;
- };
- } else {
- isInstance = function(obj, base) {
- return obj instanceof base;
- };
- }
- function wrapDomMethodToForceUpgrade(obj, methodName) {
- var orig = obj[methodName];
- obj[methodName] = function() {
- var n = orig.apply(this, arguments);
- upgradeAll(n);
- return n;
- };
- }
- wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode");
- wrapDomMethodToForceUpgrade(document, "importNode");
- if (isIE11OrOlder) {
- (function() {
- var importNode = document.importNode;
- document.importNode = function() {
- var n = importNode.apply(document, arguments);
- if (n.nodeType == n.DOCUMENT_FRAGMENT_NODE) {
- var f = document.createDocumentFragment();
- f.appendChild(n);
- return f;
- } else {
- return n;
- }
- };
- })();
- }
- document.registerElement = register;
- document.createElement = createElement;
- document.createElementNS = createElementNS;
- scope.registry = registry;
- scope.instanceof = isInstance;
- scope.reservedTagList = reservedTagList;
- scope.getRegisteredDefinition = getRegisteredDefinition;
- document.register = document.registerElement;
-});
-
-(function(scope) {
- var useNative = scope.useNative;
- var initializeModules = scope.initializeModules;
- var isIE11OrOlder = /Trident/.test(navigator.userAgent);
- if (useNative) {
- var nop = function() {};
- scope.watchShadow = nop;
- scope.upgrade = nop;
- scope.upgradeAll = nop;
- scope.upgradeDocumentTree = nop;
- scope.upgradeSubtree = nop;
- scope.takeRecords = nop;
- scope.instanceof = function(obj, base) {
- return obj instanceof base;
- };
- } else {
- initializeModules();
- }
- var upgradeDocumentTree = scope.upgradeDocumentTree;
- var upgradeDocument = scope.upgradeDocument;
- if (!window.wrap) {
- if (window.ShadowDOMPolyfill) {
- window.wrap = window.ShadowDOMPolyfill.wrapIfNeeded;
- window.unwrap = window.ShadowDOMPolyfill.unwrapIfNeeded;
- } else {
- window.wrap = window.unwrap = function(node) {
- return node;
- };
- }
- }
- if (window.HTMLImports) {
- window.HTMLImports.__importsParsingHook = function(elt) {
- if (elt.import) {
- upgradeDocument(wrap(elt.import));
- }
- };
- }
- function bootstrap() {
- upgradeDocumentTree(window.wrap(document));
- window.CustomElements.ready = true;
- requestAnimationFrame(function() {
- setTimeout(function() {
- window.CustomElements.readyTime = Date.now();
- if (window.HTMLImports) {
- window.CustomElements.elapsed = window.CustomElements.readyTime - window.HTMLImports.readyTime;
- }
- document.dispatchEvent(new CustomEvent("WebComponentsReady", {
- bubbles: true
- }));
- });
- });
- }
- if (isIE11OrOlder && typeof window.CustomEvent !== "function") {
- window.CustomEvent = function(inType, params) {
- params = params || {};
- var e = document.createEvent("CustomEvent");
- e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable), params.detail);
- e.preventDefault = function() {
- Object.defineProperty(this, "defaultPrevented", {
- get: function() {
- return true;
- }
- });
- };
- return e;
- };
- window.CustomEvent.prototype = window.Event.prototype;
- }
- if (document.readyState === "complete" || scope.flags.eager) {
- bootstrap();
- } else if (document.readyState === "interactive" && !window.attachEvent && (!window.HTMLImports || window.HTMLImports.ready)) {
- bootstrap();
- } else {
- var loadEvent = window.HTMLImports && !window.HTMLImports.ready ? "HTMLImportsLoaded" : "DOMContentLoaded";
- window.addEventListener(loadEvent, bootstrap);
- }
- scope.isIE11OrOlder = isIE11OrOlder;
-})(window.CustomElements);`},
- "/bower_components/webcomponentsjs/CustomElements.min.js": {"/bower_components/webcomponentsjs/CustomElements.min.js", time.Unix(0, 1440513533109507578), false, `/**
- * @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
- */
-// @version 0.7.11
-"undefined"==typeof WeakMap&&!function(){var e=Object.defineProperty,t=Date.now()%1e9,n=function(){this.name="__st"+(1e9*Math.random()>>>0)+(t++ +"__")};n.prototype={set:function(t,n){var o=t[this.name];return o&&o[0]===t?o[1]=n:e(t,this.name,{value:[t,n],writable:!0}),this},get:function(e){var t;return(t=e[this.name])&&t[0]===e?t[1]:void 0},"delete":function(e){var t=e[this.name];return t&&t[0]===e?(t[0]=t[1]=void 0,!0):!1},has:function(e){var t=e[this.name];return t?t[0]===e:!1}},window.WeakMap=n}(),function(e){function t(e){_.push(e),b||(b=!0,h(o))}function n(e){return window.ShadowDOMPolyfill&&window.ShadowDOMPolyfill.wrapIfNeeded(e)||e}function o(){b=!1;var e=_;_=[],e.sort(function(e,t){return e.uid_-t.uid_});var t=!1;e.forEach(function(e){var n=e.takeRecords();r(e),n.length&&(e.callback_(n,e),t=!0)}),t&&o()}function r(e){e.nodes_.forEach(function(t){var n=w.get(t);n&&n.forEach(function(t){t.observer===e&&t.removeTransientObservers()})})}function i(e,t){for(var n=e;n;n=n.parentNode){var o=w.get(n);if(o)for(var r=0;r0){var r=n[o-1],i=p(r,e);if(i)return void(n[o-1]=i)}else t(this.observer);n[o]=e},addListeners:function(){this.addListeners_(this.target)},addListeners_:function(e){var t=this.options;t.attributes&&e.addEventListener("DOMAttrModified",this,!0),t.characterData&&e.addEventListener("DOMCharacterDataModified",this,!0),t.childList&&e.addEventListener("DOMNodeInserted",this,!0),(t.childList||t.subtree)&&e.addEventListener("DOMNodeRemoved",this,!0)},removeListeners:function(){this.removeListeners_(this.target)},removeListeners_:function(e){var t=this.options;t.attributes&&e.removeEventListener("DOMAttrModified",this,!0),t.characterData&&e.removeEventListener("DOMCharacterDataModified",this,!0),t.childList&&e.removeEventListener("DOMNodeInserted",this,!0),(t.childList||t.subtree)&&e.removeEventListener("DOMNodeRemoved",this,!0)},addTransientObserver:function(e){if(e!==this.target){this.addListeners_(e),this.transientObservedNodes.push(e);var t=w.get(e);t||w.set(e,t=[]),t.push(this)}},removeTransientObservers:function(){var e=this.transientObservedNodes;this.transientObservedNodes=[],e.forEach(function(e){this.removeListeners_(e);for(var t=w.get(e),n=0;n=0)){n.push(e);for(var o,r=e.querySelectorAll("link[rel="+a+"]"),d=0,s=r.length;s>d&&(o=r[d]);d++)o["import"]&&i(o["import"],t,n);t(e)}}var a=window.HTMLImports?window.HTMLImports.IMPORT_LINK_TYPE:"none";e.forDocumentTree=r,e.forSubtree=t}),window.CustomElements.addModule(function(e){function t(e,t){return n(e,t)||o(e,t)}function n(t,n){return e.upgrade(t,n)?!0:void(n&&a(t))}function o(e,t){b(e,function(e){return n(e,t)?!0:void 0})}function r(e){N.push(e),y||(y=!0,setTimeout(i))}function i(){y=!1;for(var e,t=N,n=0,o=t.length;o>n&&(e=t[n]);n++)e();N=[]}function a(e){E?r(function(){d(e)}):d(e)}function d(e){e.__upgraded__&&!e.__attached&&(e.__attached=!0,e.attachedCallback&&e.attachedCallback())}function s(e){u(e),b(e,function(e){u(e)})}function u(e){E?r(function(){c(e)}):c(e)}function c(e){e.__upgraded__&&e.__attached&&(e.__attached=!1,e.detachedCallback&&e.detachedCallback())}function l(e){for(var t=e,n=window.wrap(document);t;){if(t==n)return!0;t=t.parentNode||t.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&t.host}}function f(e){if(e.shadowRoot&&!e.shadowRoot.__watched){g.dom&&console.log("watching shadow-root for: ",e.localName);for(var t=e.shadowRoot;t;)h(t),t=t.olderShadowRoot}}function p(e,n){if(g.dom){var o=n[0];if(o&&"childList"===o.type&&o.addedNodes&&o.addedNodes){for(var r=o.addedNodes[0];r&&r!==document&&!r.host;)r=r.parentNode;var i=r&&(r.URL||r._URL||r.host&&r.host.localName)||"";i=i.split("/?").shift().split("/").pop()}console.group("mutations (%d) [%s]",n.length,i||"")}var a=l(e);n.forEach(function(e){"childList"===e.type&&(O(e.addedNodes,function(e){e.localName&&t(e,a)}),O(e.removedNodes,function(e){e.localName&&s(e)}))}),g.dom&&console.groupEnd()}function m(e){for(e=window.wrap(e),e||(e=window.wrap(document));e.parentNode;)e=e.parentNode;var t=e.__observer;t&&(p(e,t.takeRecords()),i())}function h(e){if(!e.__observer){var t=new MutationObserver(p.bind(this,e));t.observe(e,{childList:!0,subtree:!0}),e.__observer=t}}function w(e){e=window.wrap(e),g.dom&&console.group("upgradeDocument: ",e.baseURI.split("/").pop());var n=e===window.wrap(document);t(e,n),h(e),g.dom&&console.groupEnd()}function v(e){_(e,w)}var g=e.flags,b=e.forSubtree,_=e.forDocumentTree,E=!window.MutationObserver||window.MutationObserver===window.JsMutationObserver;e.hasPolyfillMutations=E;var y=!1,N=[],O=Array.prototype.forEach.call.bind(Array.prototype.forEach),M=Element.prototype.createShadowRoot;M&&(Element.prototype.createShadowRoot=function(){var e=M.call(this);return window.CustomElements.watchShadow(this),e}),e.watchShadow=f,e.upgradeDocumentTree=v,e.upgradeDocument=w,e.upgradeSubtree=o,e.upgradeAll=t,e.attached=a,e.takeRecords=m}),window.CustomElements.addModule(function(e){function t(t,o){if(!t.__upgraded__&&t.nodeType===Node.ELEMENT_NODE){var r=t.getAttribute("is"),i=e.getRegisteredDefinition(t.localName)||e.getRegisteredDefinition(r);if(i&&(r&&i.tag==t.localName||!r&&!i["extends"]))return n(t,i,o)}}function n(t,n,r){return a.upgrade&&console.group("upgrade:",t.localName),n.is&&t.setAttribute("is",n.is),o(t,n),t.__upgraded__=!0,i(t),r&&e.attached(t),e.upgradeSubtree(t,r),a.upgrade&&console.groupEnd(),t}function o(e,t){Object.__proto__?e.__proto__=t.prototype:(r(e,t.prototype,t["native"]),e.__proto__=t.prototype)}function r(e,t,n){for(var o={},r=t;r!==n&&r!==HTMLElement.prototype;){for(var i,a=Object.getOwnPropertyNames(r),d=0;i=a[d];d++)o[i]||(Object.defineProperty(e,i,Object.getOwnPropertyDescriptor(r,i)),o[i]=1);r=Object.getPrototypeOf(r)}}function i(e){e.createdCallback&&e.createdCallback()}var a=e.flags;e.upgrade=t,e.upgradeWithDefinition=n,e.implementPrototype=o}),window.CustomElements.addModule(function(e){function t(t,o){var s=o||{};if(!t)throw new Error("document.registerElement: first argument `+"`"+`name`+"`"+` must not be empty");if(t.indexOf("-")<0)throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '"+String(t)+"'.");if(r(t))throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '"+String(t)+"'. The type name is invalid.");if(u(t))throw new Error("DuplicateDefinitionError: a type with name '"+String(t)+"' is already registered");return s.prototype||(s.prototype=Object.create(HTMLElement.prototype)),s.__name=t.toLowerCase(),s.lifecycle=s.lifecycle||{},s.ancestry=i(s["extends"]),a(s),d(s),n(s.prototype),c(s.__name,s),s.ctor=l(s),s.ctor.prototype=s.prototype,s.prototype.constructor=s.ctor,e.ready&&v(document),s.ctor}function n(e){if(!e.setAttribute._polyfilled){var t=e.setAttribute;e.setAttribute=function(e,n){o.call(this,e,n,t)};var n=e.removeAttribute;e.removeAttribute=function(e){o.call(this,e,null,n)},e.setAttribute._polyfilled=!0}}function o(e,t,n){e=e.toLowerCase();var o=this.getAttribute(e);n.apply(this,arguments);var r=this.getAttribute(e);this.attributeChangedCallback&&r!==o&&this.attributeChangedCallback(e,o,r)}function r(e){for(var t=0;t=0&&_(o,HTMLElement),o)}function m(e,t){var n=e[t];e[t]=function(){var e=n.apply(this,arguments);return g(e),e}}var h,w=e.isIE11OrOlder,v=e.upgradeDocumentTree,g=e.upgradeAll,b=e.upgradeWithDefinition,_=e.implementPrototype,E=e.useNative,y=["annotation-xml","color-profile","font-face","font-face-src","font-face-uri","font-face-format","font-face-name","missing-glyph"],N={},O="http://www.w3.org/1999/xhtml",M=document.createElement.bind(document),D=document.createElementNS.bind(document);h=Object.__proto__||E?function(e,t){return e instanceof t}:function(e,t){if(e instanceof t)return!0;for(var n=e;n;){if(n===t.prototype)return!0;n=n.__proto__}return!1},m(Node.prototype,"cloneNode"),m(document,"importNode"),w&&!function(){var e=document.importNode;document.importNode=function(){var t=e.apply(document,arguments);if(t.nodeType==t.DOCUMENT_FRAGMENT_NODE){var n=document.createDocumentFragment();return n.appendChild(t),n}return t}}(),document.registerElement=t,document.createElement=p,document.createElementNS=f,e.registry=N,e["instanceof"]=h,e.reservedTagList=y,e.getRegisteredDefinition=u,document.register=document.registerElement}),function(e){function t(){a(window.wrap(document)),window.CustomElements.ready=!0,requestAnimationFrame(function(){setTimeout(function(){window.CustomElements.readyTime=Date.now(),window.HTMLImports&&(window.CustomElements.elapsed=window.CustomElements.readyTime-window.HTMLImports.readyTime),document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))})})}var n=e.useNative,o=e.initializeModules,r=/Trident/.test(navigator.userAgent);if(n){var i=function(){};e.watchShadow=i,e.upgrade=i,e.upgradeAll=i,e.upgradeDocumentTree=i,e.upgradeSubtree=i,e.takeRecords=i,e["instanceof"]=function(e,t){return e instanceof t}}else o();var a=e.upgradeDocumentTree,d=e.upgradeDocument;if(window.wrap||(window.ShadowDOMPolyfill?(window.wrap=window.ShadowDOMPolyfill.wrapIfNeeded,window.unwrap=window.ShadowDOMPolyfill.unwrapIfNeeded):window.wrap=window.unwrap=function(e){return e}),window.HTMLImports&&(window.HTMLImports.__importsParsingHook=function(e){e["import"]&&d(wrap(e["import"]))}),r&&"function"!=typeof window.CustomEvent&&(window.CustomEvent=function(e,t){t=t||{};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,Boolean(t.bubbles),Boolean(t.cancelable),t.detail),n.preventDefault=function(){Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})},n},window.CustomEvent.prototype=window.Event.prototype),"complete"===document.readyState||e.flags.eager)t();else if("interactive"!==document.readyState||window.attachEvent||window.HTMLImports&&!window.HTMLImports.ready){var s=window.HTMLImports&&!window.HTMLImports.ready?"HTMLImportsLoaded":"DOMContentLoaded";window.addEventListener(s,t)}else t();e.isIE11OrOlder=r}(window.CustomElements);`},
- "/bower_components/webcomponentsjs/HTMLImports.js": {"/bower_components/webcomponentsjs/HTMLImports.js", time.Unix(0, 1440513533109507578), false, `/**
- * @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
- */
-// @version 0.7.11
-if (typeof WeakMap === "undefined") {
- (function() {
- var defineProperty = Object.defineProperty;
- var counter = Date.now() % 1e9;
- var WeakMap = function() {
- this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__");
- };
- WeakMap.prototype = {
- set: function(key, value) {
- var entry = key[this.name];
- if (entry && entry[0] === key) entry[1] = value; else defineProperty(key, this.name, {
- value: [ key, value ],
- writable: true
- });
- return this;
- },
- get: function(key) {
- var entry;
- return (entry = key[this.name]) && entry[0] === key ? entry[1] : undefined;
- },
- "delete": function(key) {
- var entry = key[this.name];
- if (!entry || entry[0] !== key) return false;
- entry[0] = entry[1] = undefined;
- return true;
- },
- has: function(key) {
- var entry = key[this.name];
- if (!entry) return false;
- return entry[0] === key;
- }
- };
- window.WeakMap = WeakMap;
- })();
-}
-
-(function(global) {
- var registrationsTable = new WeakMap();
- var setImmediate;
- if (/Trident|Edge/.test(navigator.userAgent)) {
- setImmediate = setTimeout;
- } else if (window.setImmediate) {
- setImmediate = window.setImmediate;
- } else {
- var setImmediateQueue = [];
- var sentinel = String(Math.random());
- window.addEventListener("message", function(e) {
- if (e.data === sentinel) {
- var queue = setImmediateQueue;
- setImmediateQueue = [];
- queue.forEach(function(func) {
- func();
- });
- }
- });
- setImmediate = function(func) {
- setImmediateQueue.push(func);
- window.postMessage(sentinel, "*");
- };
- }
- var isScheduled = false;
- var scheduledObservers = [];
- function scheduleCallback(observer) {
- scheduledObservers.push(observer);
- if (!isScheduled) {
- isScheduled = true;
- setImmediate(dispatchCallbacks);
- }
- }
- function wrapIfNeeded(node) {
- return window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(node) || node;
- }
- function dispatchCallbacks() {
- isScheduled = false;
- var observers = scheduledObservers;
- scheduledObservers = [];
- observers.sort(function(o1, o2) {
- return o1.uid_ - o2.uid_;
- });
- var anyNonEmpty = false;
- observers.forEach(function(observer) {
- var queue = observer.takeRecords();
- removeTransientObserversFor(observer);
- if (queue.length) {
- observer.callback_(queue, observer);
- anyNonEmpty = true;
- }
- });
- if (anyNonEmpty) dispatchCallbacks();
- }
- function removeTransientObserversFor(observer) {
- observer.nodes_.forEach(function(node) {
- var registrations = registrationsTable.get(node);
- if (!registrations) return;
- registrations.forEach(function(registration) {
- if (registration.observer === observer) registration.removeTransientObservers();
- });
- });
- }
- function forEachAncestorAndObserverEnqueueRecord(target, callback) {
- for (var node = target; node; node = node.parentNode) {
- var registrations = registrationsTable.get(node);
- if (registrations) {
- for (var j = 0; j < registrations.length; j++) {
- var registration = registrations[j];
- var options = registration.options;
- if (node !== target && !options.subtree) continue;
- var record = callback(options);
- if (record) registration.enqueue(record);
- }
- }
- }
- }
- var uidCounter = 0;
- function JsMutationObserver(callback) {
- this.callback_ = callback;
- this.nodes_ = [];
- this.records_ = [];
- this.uid_ = ++uidCounter;
- }
- JsMutationObserver.prototype = {
- observe: function(target, options) {
- target = wrapIfNeeded(target);
- if (!options.childList && !options.attributes && !options.characterData || options.attributeOldValue && !options.attributes || options.attributeFilter && options.attributeFilter.length && !options.attributes || options.characterDataOldValue && !options.characterData) {
- throw new SyntaxError();
- }
- var registrations = registrationsTable.get(target);
- if (!registrations) registrationsTable.set(target, registrations = []);
- var registration;
- for (var i = 0; i < registrations.length; i++) {
- if (registrations[i].observer === this) {
- registration = registrations[i];
- registration.removeListeners();
- registration.options = options;
- break;
- }
- }
- if (!registration) {
- registration = new Registration(this, target, options);
- registrations.push(registration);
- this.nodes_.push(target);
- }
- registration.addListeners();
- },
- disconnect: function() {
- this.nodes_.forEach(function(node) {
- var registrations = registrationsTable.get(node);
- for (var i = 0; i < registrations.length; i++) {
- var registration = registrations[i];
- if (registration.observer === this) {
- registration.removeListeners();
- registrations.splice(i, 1);
- break;
- }
- }
- }, this);
- this.records_ = [];
- },
- takeRecords: function() {
- var copyOfRecords = this.records_;
- this.records_ = [];
- return copyOfRecords;
- }
- };
- function MutationRecord(type, target) {
- this.type = type;
- this.target = target;
- this.addedNodes = [];
- this.removedNodes = [];
- this.previousSibling = null;
- this.nextSibling = null;
- this.attributeName = null;
- this.attributeNamespace = null;
- this.oldValue = null;
- }
- function copyMutationRecord(original) {
- var record = new MutationRecord(original.type, original.target);
- record.addedNodes = original.addedNodes.slice();
- record.removedNodes = original.removedNodes.slice();
- record.previousSibling = original.previousSibling;
- record.nextSibling = original.nextSibling;
- record.attributeName = original.attributeName;
- record.attributeNamespace = original.attributeNamespace;
- record.oldValue = original.oldValue;
- return record;
- }
- var currentRecord, recordWithOldValue;
- function getRecord(type, target) {
- return currentRecord = new MutationRecord(type, target);
- }
- function getRecordWithOldValue(oldValue) {
- if (recordWithOldValue) return recordWithOldValue;
- recordWithOldValue = copyMutationRecord(currentRecord);
- recordWithOldValue.oldValue = oldValue;
- return recordWithOldValue;
- }
- function clearRecords() {
- currentRecord = recordWithOldValue = undefined;
- }
- function recordRepresentsCurrentMutation(record) {
- return record === recordWithOldValue || record === currentRecord;
- }
- function selectRecord(lastRecord, newRecord) {
- if (lastRecord === newRecord) return lastRecord;
- if (recordWithOldValue && recordRepresentsCurrentMutation(lastRecord)) return recordWithOldValue;
- return null;
- }
- function Registration(observer, target, options) {
- this.observer = observer;
- this.target = target;
- this.options = options;
- this.transientObservedNodes = [];
- }
- Registration.prototype = {
- enqueue: function(record) {
- var records = this.observer.records_;
- var length = records.length;
- if (records.length > 0) {
- var lastRecord = records[length - 1];
- var recordToReplaceLast = selectRecord(lastRecord, record);
- if (recordToReplaceLast) {
- records[length - 1] = recordToReplaceLast;
- return;
- }
- } else {
- scheduleCallback(this.observer);
- }
- records[length] = record;
- },
- addListeners: function() {
- this.addListeners_(this.target);
- },
- addListeners_: function(node) {
- var options = this.options;
- if (options.attributes) node.addEventListener("DOMAttrModified", this, true);
- if (options.characterData) node.addEventListener("DOMCharacterDataModified", this, true);
- if (options.childList) node.addEventListener("DOMNodeInserted", this, true);
- if (options.childList || options.subtree) node.addEventListener("DOMNodeRemoved", this, true);
- },
- removeListeners: function() {
- this.removeListeners_(this.target);
- },
- removeListeners_: function(node) {
- var options = this.options;
- if (options.attributes) node.removeEventListener("DOMAttrModified", this, true);
- if (options.characterData) node.removeEventListener("DOMCharacterDataModified", this, true);
- if (options.childList) node.removeEventListener("DOMNodeInserted", this, true);
- if (options.childList || options.subtree) node.removeEventListener("DOMNodeRemoved", this, true);
- },
- addTransientObserver: function(node) {
- if (node === this.target) return;
- this.addListeners_(node);
- this.transientObservedNodes.push(node);
- var registrations = registrationsTable.get(node);
- if (!registrations) registrationsTable.set(node, registrations = []);
- registrations.push(this);
- },
- removeTransientObservers: function() {
- var transientObservedNodes = this.transientObservedNodes;
- this.transientObservedNodes = [];
- transientObservedNodes.forEach(function(node) {
- this.removeListeners_(node);
- var registrations = registrationsTable.get(node);
- for (var i = 0; i < registrations.length; i++) {
- if (registrations[i] === this) {
- registrations.splice(i, 1);
- break;
- }
- }
- }, this);
- },
- handleEvent: function(e) {
- e.stopImmediatePropagation();
- switch (e.type) {
- case "DOMAttrModified":
- var name = e.attrName;
- var namespace = e.relatedNode.namespaceURI;
- var target = e.target;
- var record = new getRecord("attributes", target);
- record.attributeName = name;
- record.attributeNamespace = namespace;
- var oldValue = e.attrChange === MutationEvent.ADDITION ? null : e.prevValue;
- forEachAncestorAndObserverEnqueueRecord(target, function(options) {
- if (!options.attributes) return;
- if (options.attributeFilter && options.attributeFilter.length && options.attributeFilter.indexOf(name) === -1 && options.attributeFilter.indexOf(namespace) === -1) {
- return;
- }
- if (options.attributeOldValue) return getRecordWithOldValue(oldValue);
- return record;
- });
- break;
-
- case "DOMCharacterDataModified":
- var target = e.target;
- var record = getRecord("characterData", target);
- var oldValue = e.prevValue;
- forEachAncestorAndObserverEnqueueRecord(target, function(options) {
- if (!options.characterData) return;
- if (options.characterDataOldValue) return getRecordWithOldValue(oldValue);
- return record;
- });
- break;
-
- case "DOMNodeRemoved":
- this.addTransientObserver(e.target);
-
- case "DOMNodeInserted":
- var changedNode = e.target;
- var addedNodes, removedNodes;
- if (e.type === "DOMNodeInserted") {
- addedNodes = [ changedNode ];
- removedNodes = [];
- } else {
- addedNodes = [];
- removedNodes = [ changedNode ];
- }
- var previousSibling = changedNode.previousSibling;
- var nextSibling = changedNode.nextSibling;
- var record = getRecord("childList", e.target.parentNode);
- record.addedNodes = addedNodes;
- record.removedNodes = removedNodes;
- record.previousSibling = previousSibling;
- record.nextSibling = nextSibling;
- forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options) {
- if (!options.childList) return;
- return record;
- });
- }
- clearRecords();
- }
- };
- global.JsMutationObserver = JsMutationObserver;
- if (!global.MutationObserver) global.MutationObserver = JsMutationObserver;
-})(this);
-
-window.HTMLImports = window.HTMLImports || {
- flags: {}
-};
-
-(function(scope) {
- var IMPORT_LINK_TYPE = "import";
- var useNative = Boolean(IMPORT_LINK_TYPE in document.createElement("link"));
- var hasShadowDOMPolyfill = Boolean(window.ShadowDOMPolyfill);
- var wrap = function(node) {
- return hasShadowDOMPolyfill ? window.ShadowDOMPolyfill.wrapIfNeeded(node) : node;
- };
- var rootDocument = wrap(document);
- var currentScriptDescriptor = {
- get: function() {
- var script = window.HTMLImports.currentScript || document.currentScript || (document.readyState !== "complete" ? document.scripts[document.scripts.length - 1] : null);
- return wrap(script);
- },
- configurable: true
- };
- Object.defineProperty(document, "_currentScript", currentScriptDescriptor);
- Object.defineProperty(rootDocument, "_currentScript", currentScriptDescriptor);
- var isIE = /Trident/.test(navigator.userAgent);
- function whenReady(callback, doc) {
- doc = doc || rootDocument;
- whenDocumentReady(function() {
- watchImportsLoad(callback, doc);
- }, doc);
- }
- var requiredReadyState = isIE ? "complete" : "interactive";
- var READY_EVENT = "readystatechange";
- function isDocumentReady(doc) {
- return doc.readyState === "complete" || doc.readyState === requiredReadyState;
- }
- function whenDocumentReady(callback, doc) {
- if (!isDocumentReady(doc)) {
- var checkReady = function() {
- if (doc.readyState === "complete" || doc.readyState === requiredReadyState) {
- doc.removeEventListener(READY_EVENT, checkReady);
- whenDocumentReady(callback, doc);
- }
- };
- doc.addEventListener(READY_EVENT, checkReady);
- } else if (callback) {
- callback();
- }
- }
- function markTargetLoaded(event) {
- event.target.__loaded = true;
- }
- function watchImportsLoad(callback, doc) {
- var imports = doc.querySelectorAll("link[rel=import]");
- var parsedCount = 0, importCount = imports.length, newImports = [], errorImports = [];
- function checkDone() {
- if (parsedCount == importCount && callback) {
- callback({
- allImports: imports,
- loadedImports: newImports,
- errorImports: errorImports
- });
- }
- }
- function loadedImport(e) {
- markTargetLoaded(e);
- newImports.push(this);
- parsedCount++;
- checkDone();
- }
- function errorLoadingImport(e) {
- errorImports.push(this);
- parsedCount++;
- checkDone();
- }
- if (importCount) {
- for (var i = 0, imp; i < importCount && (imp = imports[i]); i++) {
- if (isImportLoaded(imp)) {
- parsedCount++;
- checkDone();
- } else {
- imp.addEventListener("load", loadedImport);
- imp.addEventListener("error", errorLoadingImport);
- }
- }
- } else {
- checkDone();
- }
- }
- function isImportLoaded(link) {
- return useNative ? link.__loaded || link.import && link.import.readyState !== "loading" : link.__importParsed;
- }
- if (useNative) {
- new MutationObserver(function(mxns) {
- for (var i = 0, l = mxns.length, m; i < l && (m = mxns[i]); i++) {
- if (m.addedNodes) {
- handleImports(m.addedNodes);
- }
- }
- }).observe(document.head, {
- childList: true
- });
- function handleImports(nodes) {
- for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) {
- if (isImport(n)) {
- handleImport(n);
- }
- }
- }
- function isImport(element) {
- return element.localName === "link" && element.rel === "import";
- }
- function handleImport(element) {
- var loaded = element.import;
- if (loaded) {
- markTargetLoaded({
- target: element
- });
- } else {
- element.addEventListener("load", markTargetLoaded);
- element.addEventListener("error", markTargetLoaded);
- }
- }
- (function() {
- if (document.readyState === "loading") {
- var imports = document.querySelectorAll("link[rel=import]");
- for (var i = 0, l = imports.length, imp; i < l && (imp = imports[i]); i++) {
- handleImport(imp);
- }
- }
- })();
- }
- whenReady(function(detail) {
- window.HTMLImports.ready = true;
- window.HTMLImports.readyTime = new Date().getTime();
- var evt = rootDocument.createEvent("CustomEvent");
- evt.initCustomEvent("HTMLImportsLoaded", true, true, detail);
- rootDocument.dispatchEvent(evt);
- });
- scope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;
- scope.useNative = useNative;
- scope.rootDocument = rootDocument;
- scope.whenReady = whenReady;
- scope.isIE = isIE;
-})(window.HTMLImports);
-
-(function(scope) {
- var modules = [];
- var addModule = function(module) {
- modules.push(module);
- };
- var initializeModules = function() {
- modules.forEach(function(module) {
- module(scope);
- });
- };
- scope.addModule = addModule;
- scope.initializeModules = initializeModules;
-})(window.HTMLImports);
-
-window.HTMLImports.addModule(function(scope) {
- var CSS_URL_REGEXP = /(url\()([^)]*)(\))/g;
- var CSS_IMPORT_REGEXP = /(@import[\s]+(?!url\())([^;]*)(;)/g;
- var path = {
- resolveUrlsInStyle: function(style, linkUrl) {
- var doc = style.ownerDocument;
- var resolver = doc.createElement("a");
- style.textContent = this.resolveUrlsInCssText(style.textContent, linkUrl, resolver);
- return style;
- },
- resolveUrlsInCssText: function(cssText, linkUrl, urlObj) {
- var r = this.replaceUrls(cssText, urlObj, linkUrl, CSS_URL_REGEXP);
- r = this.replaceUrls(r, urlObj, linkUrl, CSS_IMPORT_REGEXP);
- return r;
- },
- replaceUrls: function(text, urlObj, linkUrl, regexp) {
- return text.replace(regexp, function(m, pre, url, post) {
- var urlPath = url.replace(/["']/g, "");
- if (linkUrl) {
- urlPath = new URL(urlPath, linkUrl).href;
- }
- urlObj.href = urlPath;
- urlPath = urlObj.href;
- return pre + "'" + urlPath + "'" + post;
- });
- }
- };
- scope.path = path;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var xhr = {
- async: true,
- ok: function(request) {
- return request.status >= 200 && request.status < 300 || request.status === 304 || request.status === 0;
- },
- load: function(url, next, nextContext) {
- var request = new XMLHttpRequest();
- if (scope.flags.debug || scope.flags.bust) {
- url += "?" + Math.random();
- }
- request.open("GET", url, xhr.async);
- request.addEventListener("readystatechange", function(e) {
- if (request.readyState === 4) {
- var locationHeader = request.getResponseHeader("Location");
- var redirectedUrl = null;
- if (locationHeader) {
- var redirectedUrl = locationHeader.substr(0, 1) === "/" ? location.origin + locationHeader : locationHeader;
- }
- next.call(nextContext, !xhr.ok(request) && request, request.response || request.responseText, redirectedUrl);
- }
- });
- request.send();
- return request;
- },
- loadDocument: function(url, next, nextContext) {
- this.load(url, next, nextContext).responseType = "document";
- }
- };
- scope.xhr = xhr;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var xhr = scope.xhr;
- var flags = scope.flags;
- var Loader = function(onLoad, onComplete) {
- this.cache = {};
- this.onload = onLoad;
- this.oncomplete = onComplete;
- this.inflight = 0;
- this.pending = {};
- };
- Loader.prototype = {
- addNodes: function(nodes) {
- this.inflight += nodes.length;
- for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) {
- this.require(n);
- }
- this.checkDone();
- },
- addNode: function(node) {
- this.inflight++;
- this.require(node);
- this.checkDone();
- },
- require: function(elt) {
- var url = elt.src || elt.href;
- elt.__nodeUrl = url;
- if (!this.dedupe(url, elt)) {
- this.fetch(url, elt);
- }
- },
- dedupe: function(url, elt) {
- if (this.pending[url]) {
- this.pending[url].push(elt);
- return true;
- }
- var resource;
- if (this.cache[url]) {
- this.onload(url, elt, this.cache[url]);
- this.tail();
- return true;
- }
- this.pending[url] = [ elt ];
- return false;
- },
- fetch: function(url, elt) {
- flags.load && console.log("fetch", url, elt);
- if (!url) {
- setTimeout(function() {
- this.receive(url, elt, {
- error: "href must be specified"
- }, null);
- }.bind(this), 0);
- } else if (url.match(/^data:/)) {
- var pieces = url.split(",");
- var header = pieces[0];
- var body = pieces[1];
- if (header.indexOf(";base64") > -1) {
- body = atob(body);
- } else {
- body = decodeURIComponent(body);
- }
- setTimeout(function() {
- this.receive(url, elt, null, body);
- }.bind(this), 0);
- } else {
- var receiveXhr = function(err, resource, redirectedUrl) {
- this.receive(url, elt, err, resource, redirectedUrl);
- }.bind(this);
- xhr.load(url, receiveXhr);
- }
- },
- receive: function(url, elt, err, resource, redirectedUrl) {
- this.cache[url] = resource;
- var $p = this.pending[url];
- for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) {
- this.onload(url, p, resource, err, redirectedUrl);
- this.tail();
- }
- this.pending[url] = null;
- },
- tail: function() {
- --this.inflight;
- this.checkDone();
- },
- checkDone: function() {
- if (!this.inflight) {
- this.oncomplete();
- }
- }
- };
- scope.Loader = Loader;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var Observer = function(addCallback) {
- this.addCallback = addCallback;
- this.mo = new MutationObserver(this.handler.bind(this));
- };
- Observer.prototype = {
- handler: function(mutations) {
- for (var i = 0, l = mutations.length, m; i < l && (m = mutations[i]); i++) {
- if (m.type === "childList" && m.addedNodes.length) {
- this.addedNodes(m.addedNodes);
- }
- }
- },
- addedNodes: function(nodes) {
- if (this.addCallback) {
- this.addCallback(nodes);
- }
- for (var i = 0, l = nodes.length, n, loading; i < l && (n = nodes[i]); i++) {
- if (n.children && n.children.length) {
- this.addedNodes(n.children);
- }
- }
- },
- observe: function(root) {
- this.mo.observe(root, {
- childList: true,
- subtree: true
- });
- }
- };
- scope.Observer = Observer;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var path = scope.path;
- var rootDocument = scope.rootDocument;
- var flags = scope.flags;
- var isIE = scope.isIE;
- var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;
- var IMPORT_SELECTOR = "link[rel=" + IMPORT_LINK_TYPE + "]";
- var importParser = {
- documentSelectors: IMPORT_SELECTOR,
- importsSelectors: [ IMPORT_SELECTOR, "link[rel=stylesheet]:not([type])", "style:not([type])", "script:not([type])", 'script[type="application/javascript"]', 'script[type="text/javascript"]' ].join(","),
- map: {
- link: "parseLink",
- script: "parseScript",
- style: "parseStyle"
- },
- dynamicElements: [],
- parseNext: function() {
- var next = this.nextToParse();
- if (next) {
- this.parse(next);
- }
- },
- parse: function(elt) {
- if (this.isParsed(elt)) {
- flags.parse && console.log("[%s] is already parsed", elt.localName);
- return;
- }
- var fn = this[this.map[elt.localName]];
- if (fn) {
- this.markParsing(elt);
- fn.call(this, elt);
- }
- },
- parseDynamic: function(elt, quiet) {
- this.dynamicElements.push(elt);
- if (!quiet) {
- this.parseNext();
- }
- },
- markParsing: function(elt) {
- flags.parse && console.log("parsing", elt);
- this.parsingElement = elt;
- },
- markParsingComplete: function(elt) {
- elt.__importParsed = true;
- this.markDynamicParsingComplete(elt);
- if (elt.__importElement) {
- elt.__importElement.__importParsed = true;
- this.markDynamicParsingComplete(elt.__importElement);
- }
- this.parsingElement = null;
- flags.parse && console.log("completed", elt);
- },
- markDynamicParsingComplete: function(elt) {
- var i = this.dynamicElements.indexOf(elt);
- if (i >= 0) {
- this.dynamicElements.splice(i, 1);
- }
- },
- parseImport: function(elt) {
- elt.import = elt.__doc;
- if (window.HTMLImports.__importsParsingHook) {
- window.HTMLImports.__importsParsingHook(elt);
- }
- if (elt.import) {
- elt.import.__importParsed = true;
- }
- this.markParsingComplete(elt);
- if (elt.__resource && !elt.__error) {
- elt.dispatchEvent(new CustomEvent("load", {
- bubbles: false
- }));
- } else {
- elt.dispatchEvent(new CustomEvent("error", {
- bubbles: false
- }));
- }
- if (elt.__pending) {
- var fn;
- while (elt.__pending.length) {
- fn = elt.__pending.shift();
- if (fn) {
- fn({
- target: elt
- });
- }
- }
- }
- this.parseNext();
- },
- parseLink: function(linkElt) {
- if (nodeIsImport(linkElt)) {
- this.parseImport(linkElt);
- } else {
- linkElt.href = linkElt.href;
- this.parseGeneric(linkElt);
- }
- },
- parseStyle: function(elt) {
- var src = elt;
- elt = cloneStyle(elt);
- src.__appliedElement = elt;
- elt.__importElement = src;
- this.parseGeneric(elt);
- },
- parseGeneric: function(elt) {
- this.trackElement(elt);
- this.addElementToDocument(elt);
- },
- rootImportForElement: function(elt) {
- var n = elt;
- while (n.ownerDocument.__importLink) {
- n = n.ownerDocument.__importLink;
- }
- return n;
- },
- addElementToDocument: function(elt) {
- var port = this.rootImportForElement(elt.__importElement || elt);
- port.parentNode.insertBefore(elt, port);
- },
- trackElement: function(elt, callback) {
- var self = this;
- var done = function(e) {
- elt.removeEventListener("load", done);
- elt.removeEventListener("error", done);
- if (callback) {
- callback(e);
- }
- self.markParsingComplete(elt);
- self.parseNext();
- };
- elt.addEventListener("load", done);
- elt.addEventListener("error", done);
- if (isIE && elt.localName === "style") {
- var fakeLoad = false;
- if (elt.textContent.indexOf("@import") == -1) {
- fakeLoad = true;
- } else if (elt.sheet) {
- fakeLoad = true;
- var csr = elt.sheet.cssRules;
- var len = csr ? csr.length : 0;
- for (var i = 0, r; i < len && (r = csr[i]); i++) {
- if (r.type === CSSRule.IMPORT_RULE) {
- fakeLoad = fakeLoad && Boolean(r.styleSheet);
- }
- }
- }
- if (fakeLoad) {
- setTimeout(function() {
- elt.dispatchEvent(new CustomEvent("load", {
- bubbles: false
- }));
- });
- }
- }
- },
- parseScript: function(scriptElt) {
- var script = document.createElement("script");
- script.__importElement = scriptElt;
- script.src = scriptElt.src ? scriptElt.src : generateScriptDataUrl(scriptElt);
- scope.currentScript = scriptElt;
- this.trackElement(script, function(e) {
- if (script.parentNode) {
- script.parentNode.removeChild(script);
- }
- scope.currentScript = null;
- });
- this.addElementToDocument(script);
- },
- nextToParse: function() {
- this._mayParse = [];
- return !this.parsingElement && (this.nextToParseInDoc(rootDocument) || this.nextToParseDynamic());
- },
- nextToParseInDoc: function(doc, link) {
- if (doc && this._mayParse.indexOf(doc) < 0) {
- this._mayParse.push(doc);
- var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc));
- for (var i = 0, l = nodes.length, p = 0, n; i < l && (n = nodes[i]); i++) {
- if (!this.isParsed(n)) {
- if (this.hasResource(n)) {
- return nodeIsImport(n) ? this.nextToParseInDoc(n.__doc, n) : n;
- } else {
- return;
- }
- }
- }
- }
- return link;
- },
- nextToParseDynamic: function() {
- return this.dynamicElements[0];
- },
- parseSelectorsForNode: function(node) {
- var doc = node.ownerDocument || node;
- return doc === rootDocument ? this.documentSelectors : this.importsSelectors;
- },
- isParsed: function(node) {
- return node.__importParsed;
- },
- needsDynamicParsing: function(elt) {
- return this.dynamicElements.indexOf(elt) >= 0;
- },
- hasResource: function(node) {
- if (nodeIsImport(node) && node.__doc === undefined) {
- return false;
- }
- return true;
- }
- };
- function nodeIsImport(elt) {
- return elt.localName === "link" && elt.rel === IMPORT_LINK_TYPE;
- }
- function generateScriptDataUrl(script) {
- var scriptContent = generateScriptContent(script);
- return "data:text/javascript;charset=utf-8," + encodeURIComponent(scriptContent);
- }
- function generateScriptContent(script) {
- return script.textContent + generateSourceMapHint(script);
- }
- function generateSourceMapHint(script) {
- var owner = script.ownerDocument;
- owner.__importedScripts = owner.__importedScripts || 0;
- var moniker = script.ownerDocument.baseURI;
- var num = owner.__importedScripts ? "-" + owner.__importedScripts : "";
- owner.__importedScripts++;
- return "\n//# sourceURL=" + moniker + num + ".js\n";
- }
- function cloneStyle(style) {
- var clone = style.ownerDocument.createElement("style");
- clone.textContent = style.textContent;
- path.resolveUrlsInStyle(clone);
- return clone;
- }
- scope.parser = importParser;
- scope.IMPORT_SELECTOR = IMPORT_SELECTOR;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var flags = scope.flags;
- var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;
- var IMPORT_SELECTOR = scope.IMPORT_SELECTOR;
- var rootDocument = scope.rootDocument;
- var Loader = scope.Loader;
- var Observer = scope.Observer;
- var parser = scope.parser;
- var importer = {
- documents: {},
- documentPreloadSelectors: IMPORT_SELECTOR,
- importsPreloadSelectors: [ IMPORT_SELECTOR ].join(","),
- loadNode: function(node) {
- importLoader.addNode(node);
- },
- loadSubtree: function(parent) {
- var nodes = this.marshalNodes(parent);
- importLoader.addNodes(nodes);
- },
- marshalNodes: function(parent) {
- return parent.querySelectorAll(this.loadSelectorsForNode(parent));
- },
- loadSelectorsForNode: function(node) {
- var doc = node.ownerDocument || node;
- return doc === rootDocument ? this.documentPreloadSelectors : this.importsPreloadSelectors;
- },
- loaded: function(url, elt, resource, err, redirectedUrl) {
- flags.load && console.log("loaded", url, elt);
- elt.__resource = resource;
- elt.__error = err;
- if (isImportLink(elt)) {
- var doc = this.documents[url];
- if (doc === undefined) {
- doc = err ? null : makeDocument(resource, redirectedUrl || url);
- if (doc) {
- doc.__importLink = elt;
- this.bootDocument(doc);
- }
- this.documents[url] = doc;
- }
- elt.__doc = doc;
- }
- parser.parseNext();
- },
- bootDocument: function(doc) {
- this.loadSubtree(doc);
- this.observer.observe(doc);
- parser.parseNext();
- },
- loadedAll: function() {
- parser.parseNext();
- }
- };
- var importLoader = new Loader(importer.loaded.bind(importer), importer.loadedAll.bind(importer));
- importer.observer = new Observer();
- function isImportLink(elt) {
- return isLinkRel(elt, IMPORT_LINK_TYPE);
- }
- function isLinkRel(elt, rel) {
- return elt.localName === "link" && elt.getAttribute("rel") === rel;
- }
- function hasBaseURIAccessor(doc) {
- return !!Object.getOwnPropertyDescriptor(doc, "baseURI");
- }
- function makeDocument(resource, url) {
- var doc = document.implementation.createHTMLDocument(IMPORT_LINK_TYPE);
- doc._URL = url;
- var base = doc.createElement("base");
- base.setAttribute("href", url);
- if (!doc.baseURI && !hasBaseURIAccessor(doc)) {
- Object.defineProperty(doc, "baseURI", {
- value: url
- });
- }
- var meta = doc.createElement("meta");
- meta.setAttribute("charset", "utf-8");
- doc.head.appendChild(meta);
- doc.head.appendChild(base);
- doc.body.innerHTML = resource;
- if (window.HTMLTemplateElement && HTMLTemplateElement.bootstrap) {
- HTMLTemplateElement.bootstrap(doc);
- }
- return doc;
- }
- if (!document.baseURI) {
- var baseURIDescriptor = {
- get: function() {
- var base = document.querySelector("base");
- return base ? base.href : window.location.href;
- },
- configurable: true
- };
- Object.defineProperty(document, "baseURI", baseURIDescriptor);
- Object.defineProperty(rootDocument, "baseURI", baseURIDescriptor);
- }
- scope.importer = importer;
- scope.importLoader = importLoader;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var parser = scope.parser;
- var importer = scope.importer;
- var dynamic = {
- added: function(nodes) {
- var owner, parsed, loading;
- for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) {
- if (!owner) {
- owner = n.ownerDocument;
- parsed = parser.isParsed(owner);
- }
- loading = this.shouldLoadNode(n);
- if (loading) {
- importer.loadNode(n);
- }
- if (this.shouldParseNode(n) && parsed) {
- parser.parseDynamic(n, loading);
- }
- }
- },
- shouldLoadNode: function(node) {
- return node.nodeType === 1 && matches.call(node, importer.loadSelectorsForNode(node));
- },
- shouldParseNode: function(node) {
- return node.nodeType === 1 && matches.call(node, parser.parseSelectorsForNode(node));
- }
- };
- importer.observer.addCallback = dynamic.added.bind(dynamic);
- var matches = HTMLElement.prototype.matches || HTMLElement.prototype.matchesSelector || HTMLElement.prototype.webkitMatchesSelector || HTMLElement.prototype.mozMatchesSelector || HTMLElement.prototype.msMatchesSelector;
-});
-
-(function(scope) {
- var initializeModules = scope.initializeModules;
- var isIE = scope.isIE;
- if (scope.useNative) {
- return;
- }
- if (isIE && typeof window.CustomEvent !== "function") {
- window.CustomEvent = function(inType, params) {
- params = params || {};
- var e = document.createEvent("CustomEvent");
- e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable), params.detail);
- e.preventDefault = function() {
- Object.defineProperty(this, "defaultPrevented", {
- get: function() {
- return true;
- }
- });
- };
- return e;
- };
- window.CustomEvent.prototype = window.Event.prototype;
- }
- initializeModules();
- var rootDocument = scope.rootDocument;
- function bootstrap() {
- window.HTMLImports.importer.bootDocument(rootDocument);
- }
- if (document.readyState === "complete" || document.readyState === "interactive" && !window.attachEvent) {
- bootstrap();
- } else {
- document.addEventListener("DOMContentLoaded", bootstrap);
- }
-})(window.HTMLImports);`},
- "/bower_components/webcomponentsjs/HTMLImports.min.js": {"/bower_components/webcomponentsjs/HTMLImports.min.js", time.Unix(0, 1440513533113507588), false, `/**
- * @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
- */
-// @version 0.7.11
-"undefined"==typeof WeakMap&&!function(){var e=Object.defineProperty,t=Date.now()%1e9,n=function(){this.name="__st"+(1e9*Math.random()>>>0)+(t++ +"__")};n.prototype={set:function(t,n){var r=t[this.name];return r&&r[0]===t?r[1]=n:e(t,this.name,{value:[t,n],writable:!0}),this},get:function(e){var t;return(t=e[this.name])&&t[0]===e?t[1]:void 0},"delete":function(e){var t=e[this.name];return t&&t[0]===e?(t[0]=t[1]=void 0,!0):!1},has:function(e){var t=e[this.name];return t?t[0]===e:!1}},window.WeakMap=n}(),function(e){function t(e){w.push(e),_||(_=!0,f(r))}function n(e){return window.ShadowDOMPolyfill&&window.ShadowDOMPolyfill.wrapIfNeeded(e)||e}function r(){_=!1;var e=w;w=[],e.sort(function(e,t){return e.uid_-t.uid_});var t=!1;e.forEach(function(e){var n=e.takeRecords();o(e),n.length&&(e.callback_(n,e),t=!0)}),t&&r()}function o(e){e.nodes_.forEach(function(t){var n=v.get(t);n&&n.forEach(function(t){t.observer===e&&t.removeTransientObservers()})})}function i(e,t){for(var n=e;n;n=n.parentNode){var r=v.get(n);if(r)for(var o=0;o0){var o=n[r-1],i=m(o,e);if(i)return void(n[r-1]=i)}else t(this.observer);n[r]=e},addListeners:function(){this.addListeners_(this.target)},addListeners_:function(e){var t=this.options;t.attributes&&e.addEventListener("DOMAttrModified",this,!0),t.characterData&&e.addEventListener("DOMCharacterDataModified",this,!0),t.childList&&e.addEventListener("DOMNodeInserted",this,!0),(t.childList||t.subtree)&&e.addEventListener("DOMNodeRemoved",this,!0)},removeListeners:function(){this.removeListeners_(this.target)},removeListeners_:function(e){var t=this.options;t.attributes&&e.removeEventListener("DOMAttrModified",this,!0),t.characterData&&e.removeEventListener("DOMCharacterDataModified",this,!0),t.childList&&e.removeEventListener("DOMNodeInserted",this,!0),(t.childList||t.subtree)&&e.removeEventListener("DOMNodeRemoved",this,!0)},addTransientObserver:function(e){if(e!==this.target){this.addListeners_(e),this.transientObservedNodes.push(e);var t=v.get(e);t||v.set(e,t=[]),t.push(this)}},removeTransientObservers:function(){var e=this.transientObservedNodes;this.transientObservedNodes=[],e.forEach(function(e){this.removeListeners_(e);for(var t=v.get(e),n=0;nm&&(h=s[m]);m++)a(h)?(d++,n()):(h.addEventListener("load",r),h.addEventListener("error",i));else n()}function a(e){return l?e.__loaded||e["import"]&&"loading"!==e["import"].readyState:e.__importParsed}function s(e){for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)d(t)&&c(t)}function d(e){return"link"===e.localName&&"import"===e.rel}function c(e){var t=e["import"];t?o({target:e}):(e.addEventListener("load",o),e.addEventListener("error",o))}var u="import",l=Boolean(u in document.createElement("link")),h=Boolean(window.ShadowDOMPolyfill),m=function(e){return h?window.ShadowDOMPolyfill.wrapIfNeeded(e):e},p=m(document),f={get:function(){var e=window.HTMLImports.currentScript||document.currentScript||("complete"!==document.readyState?document.scripts[document.scripts.length-1]:null);return m(e)},configurable:!0};Object.defineProperty(document,"_currentScript",f),Object.defineProperty(p,"_currentScript",f);var v=/Trident/.test(navigator.userAgent),b=v?"complete":"interactive",g="readystatechange";l&&(new MutationObserver(function(e){for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)t.addedNodes&&s(t.addedNodes)}).observe(document.head,{childList:!0}),function(){if("loading"===document.readyState)for(var e,t=document.querySelectorAll("link[rel=import]"),n=0,r=t.length;r>n&&(e=t[n]);n++)c(e)}()),t(function(e){window.HTMLImports.ready=!0,window.HTMLImports.readyTime=(new Date).getTime();var t=p.createEvent("CustomEvent");t.initCustomEvent("HTMLImportsLoaded",!0,!0,e),p.dispatchEvent(t)}),e.IMPORT_LINK_TYPE=u,e.useNative=l,e.rootDocument=p,e.whenReady=t,e.isIE=v}(window.HTMLImports),function(e){var t=[],n=function(e){t.push(e)},r=function(){t.forEach(function(t){t(e)})};e.addModule=n,e.initializeModules=r}(window.HTMLImports),window.HTMLImports.addModule(function(e){var t=/(url\()([^)]*)(\))/g,n=/(@import[\s]+(?!url\())([^;]*)(;)/g,r={resolveUrlsInStyle:function(e,t){var n=e.ownerDocument,r=n.createElement("a");return e.textContent=this.resolveUrlsInCssText(e.textContent,t,r),e},resolveUrlsInCssText:function(e,r,o){var i=this.replaceUrls(e,o,r,t);return i=this.replaceUrls(i,o,r,n)},replaceUrls:function(e,t,n,r){return e.replace(r,function(e,r,o,i){var a=o.replace(/["']/g,"");return n&&(a=new URL(a,n).href),t.href=a,a=t.href,r+"'"+a+"'"+i})}};e.path=r}),window.HTMLImports.addModule(function(e){var t={async:!0,ok:function(e){return e.status>=200&&e.status<300||304===e.status||0===e.status},load:function(n,r,o){var i=new XMLHttpRequest;return(e.flags.debug||e.flags.bust)&&(n+="?"+Math.random()),i.open("GET",n,t.async),i.addEventListener("readystatechange",function(e){if(4===i.readyState){var n=i.getResponseHeader("Location"),a=null;if(n)var a="/"===n.substr(0,1)?location.origin+n:n;r.call(o,!t.ok(i)&&i,i.response||i.responseText,a)}}),i.send(),i},loadDocument:function(e,t,n){this.load(e,t,n).responseType="document"}};e.xhr=t}),window.HTMLImports.addModule(function(e){var t=e.xhr,n=e.flags,r=function(e,t){this.cache={},this.onload=e,this.oncomplete=t,this.inflight=0,this.pending={}};r.prototype={addNodes:function(e){this.inflight+=e.length;for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)this.require(t);this.checkDone()},addNode:function(e){this.inflight++,this.require(e),this.checkDone()},require:function(e){var t=e.src||e.href;e.__nodeUrl=t,this.dedupe(t,e)||this.fetch(t,e)},dedupe:function(e,t){if(this.pending[e])return this.pending[e].push(t),!0;return this.cache[e]?(this.onload(e,t,this.cache[e]),this.tail(),!0):(this.pending[e]=[t],!1)},fetch:function(e,r){if(n.load&&console.log("fetch",e,r),e)if(e.match(/^data:/)){var o=e.split(","),i=o[0],a=o[1];a=i.indexOf(";base64")>-1?atob(a):decodeURIComponent(a),setTimeout(function(){this.receive(e,r,null,a)}.bind(this),0)}else{var s=function(t,n,o){this.receive(e,r,t,n,o)}.bind(this);t.load(e,s)}else setTimeout(function(){this.receive(e,r,{error:"href must be specified"},null)}.bind(this),0)},receive:function(e,t,n,r,o){this.cache[e]=r;for(var i,a=this.pending[e],s=0,d=a.length;d>s&&(i=a[s]);s++)this.onload(e,i,r,n,o),this.tail();this.pending[e]=null},tail:function(){--this.inflight,this.checkDone()},checkDone:function(){this.inflight||this.oncomplete()}},e.Loader=r}),window.HTMLImports.addModule(function(e){var t=function(e){this.addCallback=e,this.mo=new MutationObserver(this.handler.bind(this))};t.prototype={handler:function(e){for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)"childList"===t.type&&t.addedNodes.length&&this.addedNodes(t.addedNodes)},addedNodes:function(e){this.addCallback&&this.addCallback(e);for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)t.children&&t.children.length&&this.addedNodes(t.children)},observe:function(e){this.mo.observe(e,{childList:!0,subtree:!0})}},e.Observer=t}),window.HTMLImports.addModule(function(e){function t(e){return"link"===e.localName&&e.rel===u}function n(e){var t=r(e);return"data:text/javascript;charset=utf-8,"+encodeURIComponent(t)}function r(e){return e.textContent+o(e)}function o(e){var t=e.ownerDocument;t.__importedScripts=t.__importedScripts||0;var n=e.ownerDocument.baseURI,r=t.__importedScripts?"-"+t.__importedScripts:"";return t.__importedScripts++,"\n//# sourceURL="+n+r+".js\n"}function i(e){var t=e.ownerDocument.createElement("style");return t.textContent=e.textContent,a.resolveUrlsInStyle(t),t}var a=e.path,s=e.rootDocument,d=e.flags,c=e.isIE,u=e.IMPORT_LINK_TYPE,l="link[rel="+u+"]",h={documentSelectors:l,importsSelectors:[l,"link[rel=stylesheet]:not([type])","style:not([type])","script:not([type])",'script[type="application/javascript"]','script[type="text/javascript"]'].join(","),map:{link:"parseLink",script:"parseScript",style:"parseStyle"},dynamicElements:[],parseNext:function(){var e=this.nextToParse();e&&this.parse(e)},parse:function(e){if(this.isParsed(e))return void(d.parse&&console.log("[%s] is already parsed",e.localName));var t=this[this.map[e.localName]];t&&(this.markParsing(e),t.call(this,e))},parseDynamic:function(e,t){this.dynamicElements.push(e),t||this.parseNext()},markParsing:function(e){d.parse&&console.log("parsing",e),this.parsingElement=e},markParsingComplete:function(e){e.__importParsed=!0,this.markDynamicParsingComplete(e),e.__importElement&&(e.__importElement.__importParsed=!0,this.markDynamicParsingComplete(e.__importElement)),this.parsingElement=null,d.parse&&console.log("completed",e)},markDynamicParsingComplete:function(e){var t=this.dynamicElements.indexOf(e);t>=0&&this.dynamicElements.splice(t,1)},parseImport:function(e){if(e["import"]=e.__doc,window.HTMLImports.__importsParsingHook&&window.HTMLImports.__importsParsingHook(e),e["import"]&&(e["import"].__importParsed=!0),this.markParsingComplete(e),e.dispatchEvent(e.__resource&&!e.__error?new CustomEvent("load",{bubbles:!1}):new CustomEvent("error",{bubbles:!1})),e.__pending)for(var t;e.__pending.length;)t=e.__pending.shift(),t&&t({target:e});this.parseNext()},parseLink:function(e){t(e)?this.parseImport(e):(e.href=e.href,this.parseGeneric(e))},parseStyle:function(e){var t=e;e=i(e),t.__appliedElement=e,e.__importElement=t,this.parseGeneric(e)},parseGeneric:function(e){this.trackElement(e),this.addElementToDocument(e)},rootImportForElement:function(e){for(var t=e;t.ownerDocument.__importLink;)t=t.ownerDocument.__importLink;return t},addElementToDocument:function(e){var t=this.rootImportForElement(e.__importElement||e);t.parentNode.insertBefore(e,t)},trackElement:function(e,t){var n=this,r=function(o){e.removeEventListener("load",r),e.removeEventListener("error",r),t&&t(o),n.markParsingComplete(e),n.parseNext()};if(e.addEventListener("load",r),e.addEventListener("error",r),c&&"style"===e.localName){var o=!1;if(-1==e.textContent.indexOf("@import"))o=!0;else if(e.sheet){o=!0;for(var i,a=e.sheet.cssRules,s=a?a.length:0,d=0;s>d&&(i=a[d]);d++)i.type===CSSRule.IMPORT_RULE&&(o=o&&Boolean(i.styleSheet))}o&&setTimeout(function(){e.dispatchEvent(new CustomEvent("load",{bubbles:!1}))})}},parseScript:function(t){var r=document.createElement("script");r.__importElement=t,r.src=t.src?t.src:n(t),e.currentScript=t,this.trackElement(r,function(t){r.parentNode&&r.parentNode.removeChild(r),e.currentScript=null}),this.addElementToDocument(r)},nextToParse:function(){return this._mayParse=[],!this.parsingElement&&(this.nextToParseInDoc(s)||this.nextToParseDynamic())},nextToParseInDoc:function(e,n){if(e&&this._mayParse.indexOf(e)<0){this._mayParse.push(e);for(var r,o=e.querySelectorAll(this.parseSelectorsForNode(e)),i=0,a=o.length;a>i&&(r=o[i]);i++)if(!this.isParsed(r))return this.hasResource(r)?t(r)?this.nextToParseInDoc(r.__doc,r):r:void 0}return n},nextToParseDynamic:function(){return this.dynamicElements[0]},parseSelectorsForNode:function(e){var t=e.ownerDocument||e;return t===s?this.documentSelectors:this.importsSelectors},isParsed:function(e){return e.__importParsed},needsDynamicParsing:function(e){return this.dynamicElements.indexOf(e)>=0},hasResource:function(e){return t(e)&&void 0===e.__doc?!1:!0}};e.parser=h,e.IMPORT_SELECTOR=l}),window.HTMLImports.addModule(function(e){function t(e){return n(e,a)}function n(e,t){return"link"===e.localName&&e.getAttribute("rel")===t}function r(e){return!!Object.getOwnPropertyDescriptor(e,"baseURI")}function o(e,t){var n=document.implementation.createHTMLDocument(a);n._URL=t;var o=n.createElement("base");o.setAttribute("href",t),n.baseURI||r(n)||Object.defineProperty(n,"baseURI",{value:t});var i=n.createElement("meta");return i.setAttribute("charset","utf-8"),n.head.appendChild(i),n.head.appendChild(o),n.body.innerHTML=e,window.HTMLTemplateElement&&HTMLTemplateElement.bootstrap&&HTMLTemplateElement.bootstrap(n),n}var i=e.flags,a=e.IMPORT_LINK_TYPE,s=e.IMPORT_SELECTOR,d=e.rootDocument,c=e.Loader,u=e.Observer,l=e.parser,h={documents:{},documentPreloadSelectors:s,importsPreloadSelectors:[s].join(","),loadNode:function(e){m.addNode(e)},loadSubtree:function(e){var t=this.marshalNodes(e);m.addNodes(t)},marshalNodes:function(e){return e.querySelectorAll(this.loadSelectorsForNode(e))},loadSelectorsForNode:function(e){var t=e.ownerDocument||e;return t===d?this.documentPreloadSelectors:this.importsPreloadSelectors},loaded:function(e,n,r,a,s){if(i.load&&console.log("loaded",e,n),n.__resource=r,n.__error=a,t(n)){var d=this.documents[e];void 0===d&&(d=a?null:o(r,s||e),d&&(d.__importLink=n,this.bootDocument(d)),this.documents[e]=d),n.__doc=d}l.parseNext()},bootDocument:function(e){this.loadSubtree(e),this.observer.observe(e),l.parseNext()},loadedAll:function(){l.parseNext()}},m=new c(h.loaded.bind(h),h.loadedAll.bind(h));if(h.observer=new u,!document.baseURI){var p={get:function(){var e=document.querySelector("base");return e?e.href:window.location.href},configurable:!0};Object.defineProperty(document,"baseURI",p),Object.defineProperty(d,"baseURI",p)}e.importer=h,e.importLoader=m}),window.HTMLImports.addModule(function(e){var t=e.parser,n=e.importer,r={added:function(e){for(var r,o,i,a,s=0,d=e.length;d>s&&(a=e[s]);s++)r||(r=a.ownerDocument,o=t.isParsed(r)),i=this.shouldLoadNode(a),i&&n.loadNode(a),this.shouldParseNode(a)&&o&&t.parseDynamic(a,i)},shouldLoadNode:function(e){return 1===e.nodeType&&o.call(e,n.loadSelectorsForNode(e))},shouldParseNode:function(e){return 1===e.nodeType&&o.call(e,t.parseSelectorsForNode(e))}};n.observer.addCallback=r.added.bind(r);var o=HTMLElement.prototype.matches||HTMLElement.prototype.matchesSelector||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector}),function(e){function t(){window.HTMLImports.importer.bootDocument(o)}var n=e.initializeModules,r=e.isIE;if(!e.useNative){r&&"function"!=typeof window.CustomEvent&&(window.CustomEvent=function(e,t){t=t||{};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,Boolean(t.bubbles),Boolean(t.cancelable),t.detail),n.preventDefault=function(){Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})},n},window.CustomEvent.prototype=window.Event.prototype),n();var o=e.rootDocument;"complete"===document.readyState||"interactive"===document.readyState&&!window.attachEvent?t():document.addEventListener("DOMContentLoaded",t)}}(window.HTMLImports);`},
- "/bower_components/webcomponentsjs/MutationObserver.js": {"/bower_components/webcomponentsjs/MutationObserver.js", time.Unix(0, 1440513533113507588), false, `/**
- * @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
- */
-// @version 0.7.11
-if (typeof WeakMap === "undefined") {
- (function() {
- var defineProperty = Object.defineProperty;
- var counter = Date.now() % 1e9;
- var WeakMap = function() {
- this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__");
- };
- WeakMap.prototype = {
- set: function(key, value) {
- var entry = key[this.name];
- if (entry && entry[0] === key) entry[1] = value; else defineProperty(key, this.name, {
- value: [ key, value ],
- writable: true
- });
- return this;
- },
- get: function(key) {
- var entry;
- return (entry = key[this.name]) && entry[0] === key ? entry[1] : undefined;
- },
- "delete": function(key) {
- var entry = key[this.name];
- if (!entry || entry[0] !== key) return false;
- entry[0] = entry[1] = undefined;
- return true;
- },
- has: function(key) {
- var entry = key[this.name];
- if (!entry) return false;
- return entry[0] === key;
- }
- };
- window.WeakMap = WeakMap;
- })();
-}
-
-(function(global) {
- var registrationsTable = new WeakMap();
- var setImmediate;
- if (/Trident|Edge/.test(navigator.userAgent)) {
- setImmediate = setTimeout;
- } else if (window.setImmediate) {
- setImmediate = window.setImmediate;
- } else {
- var setImmediateQueue = [];
- var sentinel = String(Math.random());
- window.addEventListener("message", function(e) {
- if (e.data === sentinel) {
- var queue = setImmediateQueue;
- setImmediateQueue = [];
- queue.forEach(function(func) {
- func();
- });
- }
- });
- setImmediate = function(func) {
- setImmediateQueue.push(func);
- window.postMessage(sentinel, "*");
- };
- }
- var isScheduled = false;
- var scheduledObservers = [];
- function scheduleCallback(observer) {
- scheduledObservers.push(observer);
- if (!isScheduled) {
- isScheduled = true;
- setImmediate(dispatchCallbacks);
- }
- }
- function wrapIfNeeded(node) {
- return window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(node) || node;
- }
- function dispatchCallbacks() {
- isScheduled = false;
- var observers = scheduledObservers;
- scheduledObservers = [];
- observers.sort(function(o1, o2) {
- return o1.uid_ - o2.uid_;
- });
- var anyNonEmpty = false;
- observers.forEach(function(observer) {
- var queue = observer.takeRecords();
- removeTransientObserversFor(observer);
- if (queue.length) {
- observer.callback_(queue, observer);
- anyNonEmpty = true;
- }
- });
- if (anyNonEmpty) dispatchCallbacks();
- }
- function removeTransientObserversFor(observer) {
- observer.nodes_.forEach(function(node) {
- var registrations = registrationsTable.get(node);
- if (!registrations) return;
- registrations.forEach(function(registration) {
- if (registration.observer === observer) registration.removeTransientObservers();
- });
- });
- }
- function forEachAncestorAndObserverEnqueueRecord(target, callback) {
- for (var node = target; node; node = node.parentNode) {
- var registrations = registrationsTable.get(node);
- if (registrations) {
- for (var j = 0; j < registrations.length; j++) {
- var registration = registrations[j];
- var options = registration.options;
- if (node !== target && !options.subtree) continue;
- var record = callback(options);
- if (record) registration.enqueue(record);
- }
- }
- }
- }
- var uidCounter = 0;
- function JsMutationObserver(callback) {
- this.callback_ = callback;
- this.nodes_ = [];
- this.records_ = [];
- this.uid_ = ++uidCounter;
- }
- JsMutationObserver.prototype = {
- observe: function(target, options) {
- target = wrapIfNeeded(target);
- if (!options.childList && !options.attributes && !options.characterData || options.attributeOldValue && !options.attributes || options.attributeFilter && options.attributeFilter.length && !options.attributes || options.characterDataOldValue && !options.characterData) {
- throw new SyntaxError();
- }
- var registrations = registrationsTable.get(target);
- if (!registrations) registrationsTable.set(target, registrations = []);
- var registration;
- for (var i = 0; i < registrations.length; i++) {
- if (registrations[i].observer === this) {
- registration = registrations[i];
- registration.removeListeners();
- registration.options = options;
- break;
- }
- }
- if (!registration) {
- registration = new Registration(this, target, options);
- registrations.push(registration);
- this.nodes_.push(target);
- }
- registration.addListeners();
- },
- disconnect: function() {
- this.nodes_.forEach(function(node) {
- var registrations = registrationsTable.get(node);
- for (var i = 0; i < registrations.length; i++) {
- var registration = registrations[i];
- if (registration.observer === this) {
- registration.removeListeners();
- registrations.splice(i, 1);
- break;
- }
- }
- }, this);
- this.records_ = [];
- },
- takeRecords: function() {
- var copyOfRecords = this.records_;
- this.records_ = [];
- return copyOfRecords;
- }
- };
- function MutationRecord(type, target) {
- this.type = type;
- this.target = target;
- this.addedNodes = [];
- this.removedNodes = [];
- this.previousSibling = null;
- this.nextSibling = null;
- this.attributeName = null;
- this.attributeNamespace = null;
- this.oldValue = null;
- }
- function copyMutationRecord(original) {
- var record = new MutationRecord(original.type, original.target);
- record.addedNodes = original.addedNodes.slice();
- record.removedNodes = original.removedNodes.slice();
- record.previousSibling = original.previousSibling;
- record.nextSibling = original.nextSibling;
- record.attributeName = original.attributeName;
- record.attributeNamespace = original.attributeNamespace;
- record.oldValue = original.oldValue;
- return record;
- }
- var currentRecord, recordWithOldValue;
- function getRecord(type, target) {
- return currentRecord = new MutationRecord(type, target);
- }
- function getRecordWithOldValue(oldValue) {
- if (recordWithOldValue) return recordWithOldValue;
- recordWithOldValue = copyMutationRecord(currentRecord);
- recordWithOldValue.oldValue = oldValue;
- return recordWithOldValue;
- }
- function clearRecords() {
- currentRecord = recordWithOldValue = undefined;
- }
- function recordRepresentsCurrentMutation(record) {
- return record === recordWithOldValue || record === currentRecord;
- }
- function selectRecord(lastRecord, newRecord) {
- if (lastRecord === newRecord) return lastRecord;
- if (recordWithOldValue && recordRepresentsCurrentMutation(lastRecord)) return recordWithOldValue;
- return null;
- }
- function Registration(observer, target, options) {
- this.observer = observer;
- this.target = target;
- this.options = options;
- this.transientObservedNodes = [];
- }
- Registration.prototype = {
- enqueue: function(record) {
- var records = this.observer.records_;
- var length = records.length;
- if (records.length > 0) {
- var lastRecord = records[length - 1];
- var recordToReplaceLast = selectRecord(lastRecord, record);
- if (recordToReplaceLast) {
- records[length - 1] = recordToReplaceLast;
- return;
- }
- } else {
- scheduleCallback(this.observer);
- }
- records[length] = record;
- },
- addListeners: function() {
- this.addListeners_(this.target);
- },
- addListeners_: function(node) {
- var options = this.options;
- if (options.attributes) node.addEventListener("DOMAttrModified", this, true);
- if (options.characterData) node.addEventListener("DOMCharacterDataModified", this, true);
- if (options.childList) node.addEventListener("DOMNodeInserted", this, true);
- if (options.childList || options.subtree) node.addEventListener("DOMNodeRemoved", this, true);
- },
- removeListeners: function() {
- this.removeListeners_(this.target);
- },
- removeListeners_: function(node) {
- var options = this.options;
- if (options.attributes) node.removeEventListener("DOMAttrModified", this, true);
- if (options.characterData) node.removeEventListener("DOMCharacterDataModified", this, true);
- if (options.childList) node.removeEventListener("DOMNodeInserted", this, true);
- if (options.childList || options.subtree) node.removeEventListener("DOMNodeRemoved", this, true);
- },
- addTransientObserver: function(node) {
- if (node === this.target) return;
- this.addListeners_(node);
- this.transientObservedNodes.push(node);
- var registrations = registrationsTable.get(node);
- if (!registrations) registrationsTable.set(node, registrations = []);
- registrations.push(this);
- },
- removeTransientObservers: function() {
- var transientObservedNodes = this.transientObservedNodes;
- this.transientObservedNodes = [];
- transientObservedNodes.forEach(function(node) {
- this.removeListeners_(node);
- var registrations = registrationsTable.get(node);
- for (var i = 0; i < registrations.length; i++) {
- if (registrations[i] === this) {
- registrations.splice(i, 1);
- break;
- }
- }
- }, this);
- },
- handleEvent: function(e) {
- e.stopImmediatePropagation();
- switch (e.type) {
- case "DOMAttrModified":
- var name = e.attrName;
- var namespace = e.relatedNode.namespaceURI;
- var target = e.target;
- var record = new getRecord("attributes", target);
- record.attributeName = name;
- record.attributeNamespace = namespace;
- var oldValue = e.attrChange === MutationEvent.ADDITION ? null : e.prevValue;
- forEachAncestorAndObserverEnqueueRecord(target, function(options) {
- if (!options.attributes) return;
- if (options.attributeFilter && options.attributeFilter.length && options.attributeFilter.indexOf(name) === -1 && options.attributeFilter.indexOf(namespace) === -1) {
- return;
- }
- if (options.attributeOldValue) return getRecordWithOldValue(oldValue);
- return record;
- });
- break;
-
- case "DOMCharacterDataModified":
- var target = e.target;
- var record = getRecord("characterData", target);
- var oldValue = e.prevValue;
- forEachAncestorAndObserverEnqueueRecord(target, function(options) {
- if (!options.characterData) return;
- if (options.characterDataOldValue) return getRecordWithOldValue(oldValue);
- return record;
- });
- break;
-
- case "DOMNodeRemoved":
- this.addTransientObserver(e.target);
-
- case "DOMNodeInserted":
- var changedNode = e.target;
- var addedNodes, removedNodes;
- if (e.type === "DOMNodeInserted") {
- addedNodes = [ changedNode ];
- removedNodes = [];
- } else {
- addedNodes = [];
- removedNodes = [ changedNode ];
- }
- var previousSibling = changedNode.previousSibling;
- var nextSibling = changedNode.nextSibling;
- var record = getRecord("childList", e.target.parentNode);
- record.addedNodes = addedNodes;
- record.removedNodes = removedNodes;
- record.previousSibling = previousSibling;
- record.nextSibling = nextSibling;
- forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options) {
- if (!options.childList) return;
- return record;
- });
- }
- clearRecords();
- }
- };
- global.JsMutationObserver = JsMutationObserver;
- if (!global.MutationObserver) global.MutationObserver = JsMutationObserver;
-})(this);`},
- "/bower_components/webcomponentsjs/MutationObserver.min.js": {"/bower_components/webcomponentsjs/MutationObserver.min.js", time.Unix(0, 1440513533113507588), false, `/**
- * @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
- */
-// @version 0.7.11
-"undefined"==typeof WeakMap&&!function(){var e=Object.defineProperty,t=Date.now()%1e9,r=function(){this.name="__st"+(1e9*Math.random()>>>0)+(t++ +"__")};r.prototype={set:function(t,r){var i=t[this.name];return i&&i[0]===t?i[1]=r:e(t,this.name,{value:[t,r],writable:!0}),this},get:function(e){var t;return(t=e[this.name])&&t[0]===e?t[1]:void 0},"delete":function(e){var t=e[this.name];return t&&t[0]===e?(t[0]=t[1]=void 0,!0):!1},has:function(e){var t=e[this.name];return t?t[0]===e:!1}},window.WeakMap=r}(),function(e){function t(e){O.push(e),N||(N=!0,b(i))}function r(e){return window.ShadowDOMPolyfill&&window.ShadowDOMPolyfill.wrapIfNeeded(e)||e}function i(){N=!1;var e=O;O=[],e.sort(function(e,t){return e.uid_-t.uid_});var t=!1;e.forEach(function(e){var r=e.takeRecords();n(e),r.length&&(e.callback_(r,e),t=!0)}),t&&i()}function n(e){e.nodes_.forEach(function(t){var r=p.get(t);r&&r.forEach(function(t){t.observer===e&&t.removeTransientObservers()})})}function a(e,t){for(var r=e;r;r=r.parentNode){var i=p.get(r);if(i)for(var n=0;n0){var n=r[i-1],a=l(n,e);if(a)return void(r[i-1]=a)}else t(this.observer);r[i]=e},addListeners:function(){this.addListeners_(this.target)},addListeners_:function(e){var t=this.options;t.attributes&&e.addEventListener("DOMAttrModified",this,!0),t.characterData&&e.addEventListener("DOMCharacterDataModified",this,!0),t.childList&&e.addEventListener("DOMNodeInserted",this,!0),(t.childList||t.subtree)&&e.addEventListener("DOMNodeRemoved",this,!0)},removeListeners:function(){this.removeListeners_(this.target)},removeListeners_:function(e){var t=this.options;t.attributes&&e.removeEventListener("DOMAttrModified",this,!0),t.characterData&&e.removeEventListener("DOMCharacterDataModified",this,!0),t.childList&&e.removeEventListener("DOMNodeInserted",this,!0),(t.childList||t.subtree)&&e.removeEventListener("DOMNodeRemoved",this,!0)},addTransientObserver:function(e){if(e!==this.target){this.addListeners_(e),this.transientObservedNodes.push(e);var t=p.get(e);t||p.set(e,t=[]),t.push(this)}},removeTransientObservers:function(){var e=this.transientObservedNodes;this.transientObservedNodes=[],e.forEach(function(e){this.removeListeners_(e);for(var t=p.get(e),r=0;r>> 0) + (counter++ + "__");
- };
- WeakMap.prototype = {
- set: function(key, value) {
- var entry = key[this.name];
- if (entry && entry[0] === key) entry[1] = value; else defineProperty(key, this.name, {
- value: [ key, value ],
- writable: true
- });
- return this;
- },
- get: function(key) {
- var entry;
- return (entry = key[this.name]) && entry[0] === key ? entry[1] : undefined;
- },
- "delete": function(key) {
- var entry = key[this.name];
- if (!entry || entry[0] !== key) return false;
- entry[0] = entry[1] = undefined;
- return true;
- },
- has: function(key) {
- var entry = key[this.name];
- if (!entry) return false;
- return entry[0] === key;
- }
- };
- window.WeakMap = WeakMap;
- })();
-}
-
-window.ShadowDOMPolyfill = {};
-
-(function(scope) {
- "use strict";
- var constructorTable = new WeakMap();
- var nativePrototypeTable = new WeakMap();
- var wrappers = Object.create(null);
- function detectEval() {
- if (typeof chrome !== "undefined" && chrome.app && chrome.app.runtime) {
- return false;
- }
- if (navigator.getDeviceStorage) {
- return false;
- }
- try {
- var f = new Function("return true;");
- return f();
- } catch (ex) {
- return false;
- }
- }
- var hasEval = detectEval();
- function assert(b) {
- if (!b) throw new Error("Assertion failed");
- }
- var defineProperty = Object.defineProperty;
- var getOwnPropertyNames = Object.getOwnPropertyNames;
- var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
- function mixin(to, from) {
- var names = getOwnPropertyNames(from);
- for (var i = 0; i < names.length; i++) {
- var name = names[i];
- defineProperty(to, name, getOwnPropertyDescriptor(from, name));
- }
- return to;
- }
- function mixinStatics(to, from) {
- var names = getOwnPropertyNames(from);
- for (var i = 0; i < names.length; i++) {
- var name = names[i];
- switch (name) {
- case "arguments":
- case "caller":
- case "length":
- case "name":
- case "prototype":
- case "toString":
- continue;
- }
- defineProperty(to, name, getOwnPropertyDescriptor(from, name));
- }
- return to;
- }
- function oneOf(object, propertyNames) {
- for (var i = 0; i < propertyNames.length; i++) {
- if (propertyNames[i] in object) return propertyNames[i];
- }
- }
- var nonEnumerableDataDescriptor = {
- value: undefined,
- configurable: true,
- enumerable: false,
- writable: true
- };
- function defineNonEnumerableDataProperty(object, name, value) {
- nonEnumerableDataDescriptor.value = value;
- defineProperty(object, name, nonEnumerableDataDescriptor);
- }
- getOwnPropertyNames(window);
- function getWrapperConstructor(node, opt_instance) {
- var nativePrototype = node.__proto__ || Object.getPrototypeOf(node);
- if (isFirefox) {
- try {
- getOwnPropertyNames(nativePrototype);
- } catch (error) {
- nativePrototype = nativePrototype.__proto__;
- }
- }
- var wrapperConstructor = constructorTable.get(nativePrototype);
- if (wrapperConstructor) return wrapperConstructor;
- var parentWrapperConstructor = getWrapperConstructor(nativePrototype);
- var GeneratedWrapper = createWrapperConstructor(parentWrapperConstructor);
- registerInternal(nativePrototype, GeneratedWrapper, opt_instance);
- return GeneratedWrapper;
- }
- function addForwardingProperties(nativePrototype, wrapperPrototype) {
- installProperty(nativePrototype, wrapperPrototype, true);
- }
- function registerInstanceProperties(wrapperPrototype, instanceObject) {
- installProperty(instanceObject, wrapperPrototype, false);
- }
- var isFirefox = /Firefox/.test(navigator.userAgent);
- var dummyDescriptor = {
- get: function() {},
- set: function(v) {},
- configurable: true,
- enumerable: true
- };
- function isEventHandlerName(name) {
- return /^on[a-z]+$/.test(name);
- }
- function isIdentifierName(name) {
- return /^[a-zA-Z_$][a-zA-Z_$0-9]*$/.test(name);
- }
- function getGetter(name) {
- return hasEval && isIdentifierName(name) ? new Function("return this.__impl4cf1e782hg__." + name) : function() {
- return this.__impl4cf1e782hg__[name];
- };
- }
- function getSetter(name) {
- return hasEval && isIdentifierName(name) ? new Function("v", "this.__impl4cf1e782hg__." + name + " = v") : function(v) {
- this.__impl4cf1e782hg__[name] = v;
- };
- }
- function getMethod(name) {
- return hasEval && isIdentifierName(name) ? new Function("return this.__impl4cf1e782hg__." + name + ".apply(this.__impl4cf1e782hg__, arguments)") : function() {
- return this.__impl4cf1e782hg__[name].apply(this.__impl4cf1e782hg__, arguments);
- };
- }
- function getDescriptor(source, name) {
- try {
- return Object.getOwnPropertyDescriptor(source, name);
- } catch (ex) {
- return dummyDescriptor;
- }
- }
- var isBrokenSafari = function() {
- var descr = Object.getOwnPropertyDescriptor(Node.prototype, "nodeType");
- return descr && !descr.get && !descr.set;
- }();
- function installProperty(source, target, allowMethod, opt_blacklist) {
- var names = getOwnPropertyNames(source);
- for (var i = 0; i < names.length; i++) {
- var name = names[i];
- if (name === "polymerBlackList_") continue;
- if (name in target) continue;
- if (source.polymerBlackList_ && source.polymerBlackList_[name]) continue;
- if (isFirefox) {
- source.__lookupGetter__(name);
- }
- var descriptor = getDescriptor(source, name);
- var getter, setter;
- if (typeof descriptor.value === "function") {
- if (allowMethod) {
- target[name] = getMethod(name);
- }
- continue;
- }
- var isEvent = isEventHandlerName(name);
- if (isEvent) getter = scope.getEventHandlerGetter(name); else getter = getGetter(name);
- if (descriptor.writable || descriptor.set || isBrokenSafari) {
- if (isEvent) setter = scope.getEventHandlerSetter(name); else setter = getSetter(name);
- }
- var configurable = isBrokenSafari || descriptor.configurable;
- defineProperty(target, name, {
- get: getter,
- set: setter,
- configurable: configurable,
- enumerable: descriptor.enumerable
- });
- }
- }
- function register(nativeConstructor, wrapperConstructor, opt_instance) {
- if (nativeConstructor == null) {
- return;
- }
- var nativePrototype = nativeConstructor.prototype;
- registerInternal(nativePrototype, wrapperConstructor, opt_instance);
- mixinStatics(wrapperConstructor, nativeConstructor);
- }
- function registerInternal(nativePrototype, wrapperConstructor, opt_instance) {
- var wrapperPrototype = wrapperConstructor.prototype;
- assert(constructorTable.get(nativePrototype) === undefined);
- constructorTable.set(nativePrototype, wrapperConstructor);
- nativePrototypeTable.set(wrapperPrototype, nativePrototype);
- addForwardingProperties(nativePrototype, wrapperPrototype);
- if (opt_instance) registerInstanceProperties(wrapperPrototype, opt_instance);
- defineNonEnumerableDataProperty(wrapperPrototype, "constructor", wrapperConstructor);
- wrapperConstructor.prototype = wrapperPrototype;
- }
- function isWrapperFor(wrapperConstructor, nativeConstructor) {
- return constructorTable.get(nativeConstructor.prototype) === wrapperConstructor;
- }
- function registerObject(object) {
- var nativePrototype = Object.getPrototypeOf(object);
- var superWrapperConstructor = getWrapperConstructor(nativePrototype);
- var GeneratedWrapper = createWrapperConstructor(superWrapperConstructor);
- registerInternal(nativePrototype, GeneratedWrapper, object);
- return GeneratedWrapper;
- }
- function createWrapperConstructor(superWrapperConstructor) {
- function GeneratedWrapper(node) {
- superWrapperConstructor.call(this, node);
- }
- var p = Object.create(superWrapperConstructor.prototype);
- p.constructor = GeneratedWrapper;
- GeneratedWrapper.prototype = p;
- return GeneratedWrapper;
- }
- function isWrapper(object) {
- return object && object.__impl4cf1e782hg__;
- }
- function isNative(object) {
- return !isWrapper(object);
- }
- function wrap(impl) {
- if (impl === null) return null;
- assert(isNative(impl));
- var wrapper = impl.__wrapper8e3dd93a60__;
- if (wrapper != null) {
- return wrapper;
- }
- return impl.__wrapper8e3dd93a60__ = new (getWrapperConstructor(impl, impl))(impl);
- }
- function unwrap(wrapper) {
- if (wrapper === null) return null;
- assert(isWrapper(wrapper));
- return wrapper.__impl4cf1e782hg__;
- }
- function unsafeUnwrap(wrapper) {
- return wrapper.__impl4cf1e782hg__;
- }
- function setWrapper(impl, wrapper) {
- wrapper.__impl4cf1e782hg__ = impl;
- impl.__wrapper8e3dd93a60__ = wrapper;
- }
- function unwrapIfNeeded(object) {
- return object && isWrapper(object) ? unwrap(object) : object;
- }
- function wrapIfNeeded(object) {
- return object && !isWrapper(object) ? wrap(object) : object;
- }
- function rewrap(node, wrapper) {
- if (wrapper === null) return;
- assert(isNative(node));
- assert(wrapper === undefined || isWrapper(wrapper));
- node.__wrapper8e3dd93a60__ = wrapper;
- }
- var getterDescriptor = {
- get: undefined,
- configurable: true,
- enumerable: true
- };
- function defineGetter(constructor, name, getter) {
- getterDescriptor.get = getter;
- defineProperty(constructor.prototype, name, getterDescriptor);
- }
- function defineWrapGetter(constructor, name) {
- defineGetter(constructor, name, function() {
- return wrap(this.__impl4cf1e782hg__[name]);
- });
- }
- function forwardMethodsToWrapper(constructors, names) {
- constructors.forEach(function(constructor) {
- names.forEach(function(name) {
- constructor.prototype[name] = function() {
- var w = wrapIfNeeded(this);
- return w[name].apply(w, arguments);
- };
- });
- });
- }
- scope.assert = assert;
- scope.constructorTable = constructorTable;
- scope.defineGetter = defineGetter;
- scope.defineWrapGetter = defineWrapGetter;
- scope.forwardMethodsToWrapper = forwardMethodsToWrapper;
- scope.isIdentifierName = isIdentifierName;
- scope.isWrapper = isWrapper;
- scope.isWrapperFor = isWrapperFor;
- scope.mixin = mixin;
- scope.nativePrototypeTable = nativePrototypeTable;
- scope.oneOf = oneOf;
- scope.registerObject = registerObject;
- scope.registerWrapper = register;
- scope.rewrap = rewrap;
- scope.setWrapper = setWrapper;
- scope.unsafeUnwrap = unsafeUnwrap;
- scope.unwrap = unwrap;
- scope.unwrapIfNeeded = unwrapIfNeeded;
- scope.wrap = wrap;
- scope.wrapIfNeeded = wrapIfNeeded;
- scope.wrappers = wrappers;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- function newSplice(index, removed, addedCount) {
- return {
- index: index,
- removed: removed,
- addedCount: addedCount
- };
- }
- var EDIT_LEAVE = 0;
- var EDIT_UPDATE = 1;
- var EDIT_ADD = 2;
- var EDIT_DELETE = 3;
- function ArraySplice() {}
- ArraySplice.prototype = {
- calcEditDistances: function(current, currentStart, currentEnd, old, oldStart, oldEnd) {
- var rowCount = oldEnd - oldStart + 1;
- var columnCount = currentEnd - currentStart + 1;
- var distances = new Array(rowCount);
- for (var i = 0; i < rowCount; i++) {
- distances[i] = new Array(columnCount);
- distances[i][0] = i;
- }
- for (var j = 0; j < columnCount; j++) distances[0][j] = j;
- for (var i = 1; i < rowCount; i++) {
- for (var j = 1; j < columnCount; j++) {
- if (this.equals(current[currentStart + j - 1], old[oldStart + i - 1])) distances[i][j] = distances[i - 1][j - 1]; else {
- var north = distances[i - 1][j] + 1;
- var west = distances[i][j - 1] + 1;
- distances[i][j] = north < west ? north : west;
- }
- }
- }
- return distances;
- },
- spliceOperationsFromEditDistances: function(distances) {
- var i = distances.length - 1;
- var j = distances[0].length - 1;
- var current = distances[i][j];
- var edits = [];
- while (i > 0 || j > 0) {
- if (i == 0) {
- edits.push(EDIT_ADD);
- j--;
- continue;
- }
- if (j == 0) {
- edits.push(EDIT_DELETE);
- i--;
- continue;
- }
- var northWest = distances[i - 1][j - 1];
- var west = distances[i - 1][j];
- var north = distances[i][j - 1];
- var min;
- if (west < north) min = west < northWest ? west : northWest; else min = north < northWest ? north : northWest;
- if (min == northWest) {
- if (northWest == current) {
- edits.push(EDIT_LEAVE);
- } else {
- edits.push(EDIT_UPDATE);
- current = northWest;
- }
- i--;
- j--;
- } else if (min == west) {
- edits.push(EDIT_DELETE);
- i--;
- current = west;
- } else {
- edits.push(EDIT_ADD);
- j--;
- current = north;
- }
- }
- edits.reverse();
- return edits;
- },
- calcSplices: function(current, currentStart, currentEnd, old, oldStart, oldEnd) {
- var prefixCount = 0;
- var suffixCount = 0;
- var minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart);
- if (currentStart == 0 && oldStart == 0) prefixCount = this.sharedPrefix(current, old, minLength);
- if (currentEnd == current.length && oldEnd == old.length) suffixCount = this.sharedSuffix(current, old, minLength - prefixCount);
- currentStart += prefixCount;
- oldStart += prefixCount;
- currentEnd -= suffixCount;
- oldEnd -= suffixCount;
- if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0) return [];
- if (currentStart == currentEnd) {
- var splice = newSplice(currentStart, [], 0);
- while (oldStart < oldEnd) splice.removed.push(old[oldStart++]);
- return [ splice ];
- } else if (oldStart == oldEnd) return [ newSplice(currentStart, [], currentEnd - currentStart) ];
- var ops = this.spliceOperationsFromEditDistances(this.calcEditDistances(current, currentStart, currentEnd, old, oldStart, oldEnd));
- var splice = undefined;
- var splices = [];
- var index = currentStart;
- var oldIndex = oldStart;
- for (var i = 0; i < ops.length; i++) {
- switch (ops[i]) {
- case EDIT_LEAVE:
- if (splice) {
- splices.push(splice);
- splice = undefined;
- }
- index++;
- oldIndex++;
- break;
-
- case EDIT_UPDATE:
- if (!splice) splice = newSplice(index, [], 0);
- splice.addedCount++;
- index++;
- splice.removed.push(old[oldIndex]);
- oldIndex++;
- break;
-
- case EDIT_ADD:
- if (!splice) splice = newSplice(index, [], 0);
- splice.addedCount++;
- index++;
- break;
-
- case EDIT_DELETE:
- if (!splice) splice = newSplice(index, [], 0);
- splice.removed.push(old[oldIndex]);
- oldIndex++;
- break;
- }
- }
- if (splice) {
- splices.push(splice);
- }
- return splices;
- },
- sharedPrefix: function(current, old, searchLength) {
- for (var i = 0; i < searchLength; i++) if (!this.equals(current[i], old[i])) return i;
- return searchLength;
- },
- sharedSuffix: function(current, old, searchLength) {
- var index1 = current.length;
- var index2 = old.length;
- var count = 0;
- while (count < searchLength && this.equals(current[--index1], old[--index2])) count++;
- return count;
- },
- calculateSplices: function(current, previous) {
- return this.calcSplices(current, 0, current.length, previous, 0, previous.length);
- },
- equals: function(currentValue, previousValue) {
- return currentValue === previousValue;
- }
- };
- scope.ArraySplice = ArraySplice;
-})(window.ShadowDOMPolyfill);
-
-(function(context) {
- "use strict";
- var OriginalMutationObserver = window.MutationObserver;
- var callbacks = [];
- var pending = false;
- var timerFunc;
- function handle() {
- pending = false;
- var copies = callbacks.slice(0);
- callbacks = [];
- for (var i = 0; i < copies.length; i++) {
- (0, copies[i])();
- }
- }
- if (OriginalMutationObserver) {
- var counter = 1;
- var observer = new OriginalMutationObserver(handle);
- var textNode = document.createTextNode(counter);
- observer.observe(textNode, {
- characterData: true
- });
- timerFunc = function() {
- counter = (counter + 1) % 2;
- textNode.data = counter;
- };
- } else {
- timerFunc = window.setTimeout;
- }
- function setEndOfMicrotask(func) {
- callbacks.push(func);
- if (pending) return;
- pending = true;
- timerFunc(handle, 0);
- }
- context.setEndOfMicrotask = setEndOfMicrotask;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var setEndOfMicrotask = scope.setEndOfMicrotask;
- var wrapIfNeeded = scope.wrapIfNeeded;
- var wrappers = scope.wrappers;
- var registrationsTable = new WeakMap();
- var globalMutationObservers = [];
- var isScheduled = false;
- function scheduleCallback(observer) {
- if (observer.scheduled_) return;
- observer.scheduled_ = true;
- globalMutationObservers.push(observer);
- if (isScheduled) return;
- setEndOfMicrotask(notifyObservers);
- isScheduled = true;
- }
- function notifyObservers() {
- isScheduled = false;
- while (globalMutationObservers.length) {
- var notifyList = globalMutationObservers;
- globalMutationObservers = [];
- notifyList.sort(function(x, y) {
- return x.uid_ - y.uid_;
- });
- for (var i = 0; i < notifyList.length; i++) {
- var mo = notifyList[i];
- mo.scheduled_ = false;
- var queue = mo.takeRecords();
- removeTransientObserversFor(mo);
- if (queue.length) {
- mo.callback_(queue, mo);
- }
- }
- }
- }
- function MutationRecord(type, target) {
- this.type = type;
- this.target = target;
- this.addedNodes = new wrappers.NodeList();
- this.removedNodes = new wrappers.NodeList();
- this.previousSibling = null;
- this.nextSibling = null;
- this.attributeName = null;
- this.attributeNamespace = null;
- this.oldValue = null;
- }
- function registerTransientObservers(ancestor, node) {
- for (;ancestor; ancestor = ancestor.parentNode) {
- var registrations = registrationsTable.get(ancestor);
- if (!registrations) continue;
- for (var i = 0; i < registrations.length; i++) {
- var registration = registrations[i];
- if (registration.options.subtree) registration.addTransientObserver(node);
- }
- }
- }
- function removeTransientObserversFor(observer) {
- for (var i = 0; i < observer.nodes_.length; i++) {
- var node = observer.nodes_[i];
- var registrations = registrationsTable.get(node);
- if (!registrations) return;
- for (var j = 0; j < registrations.length; j++) {
- var registration = registrations[j];
- if (registration.observer === observer) registration.removeTransientObservers();
- }
- }
- }
- function enqueueMutation(target, type, data) {
- var interestedObservers = Object.create(null);
- var associatedStrings = Object.create(null);
- for (var node = target; node; node = node.parentNode) {
- var registrations = registrationsTable.get(node);
- if (!registrations) continue;
- for (var j = 0; j < registrations.length; j++) {
- var registration = registrations[j];
- var options = registration.options;
- if (node !== target && !options.subtree) continue;
- if (type === "attributes" && !options.attributes) continue;
- if (type === "attributes" && options.attributeFilter && (data.namespace !== null || options.attributeFilter.indexOf(data.name) === -1)) {
- continue;
- }
- if (type === "characterData" && !options.characterData) continue;
- if (type === "childList" && !options.childList) continue;
- var observer = registration.observer;
- interestedObservers[observer.uid_] = observer;
- if (type === "attributes" && options.attributeOldValue || type === "characterData" && options.characterDataOldValue) {
- associatedStrings[observer.uid_] = data.oldValue;
- }
- }
- }
- for (var uid in interestedObservers) {
- var observer = interestedObservers[uid];
- var record = new MutationRecord(type, target);
- if ("name" in data && "namespace" in data) {
- record.attributeName = data.name;
- record.attributeNamespace = data.namespace;
- }
- if (data.addedNodes) record.addedNodes = data.addedNodes;
- if (data.removedNodes) record.removedNodes = data.removedNodes;
- if (data.previousSibling) record.previousSibling = data.previousSibling;
- if (data.nextSibling) record.nextSibling = data.nextSibling;
- if (associatedStrings[uid] !== undefined) record.oldValue = associatedStrings[uid];
- scheduleCallback(observer);
- observer.records_.push(record);
- }
- }
- var slice = Array.prototype.slice;
- function MutationObserverOptions(options) {
- this.childList = !!options.childList;
- this.subtree = !!options.subtree;
- if (!("attributes" in options) && ("attributeOldValue" in options || "attributeFilter" in options)) {
- this.attributes = true;
- } else {
- this.attributes = !!options.attributes;
- }
- if ("characterDataOldValue" in options && !("characterData" in options)) this.characterData = true; else this.characterData = !!options.characterData;
- if (!this.attributes && (options.attributeOldValue || "attributeFilter" in options) || !this.characterData && options.characterDataOldValue) {
- throw new TypeError();
- }
- this.characterData = !!options.characterData;
- this.attributeOldValue = !!options.attributeOldValue;
- this.characterDataOldValue = !!options.characterDataOldValue;
- if ("attributeFilter" in options) {
- if (options.attributeFilter == null || typeof options.attributeFilter !== "object") {
- throw new TypeError();
- }
- this.attributeFilter = slice.call(options.attributeFilter);
- } else {
- this.attributeFilter = null;
- }
- }
- var uidCounter = 0;
- function MutationObserver(callback) {
- this.callback_ = callback;
- this.nodes_ = [];
- this.records_ = [];
- this.uid_ = ++uidCounter;
- this.scheduled_ = false;
- }
- MutationObserver.prototype = {
- constructor: MutationObserver,
- observe: function(target, options) {
- target = wrapIfNeeded(target);
- var newOptions = new MutationObserverOptions(options);
- var registration;
- var registrations = registrationsTable.get(target);
- if (!registrations) registrationsTable.set(target, registrations = []);
- for (var i = 0; i < registrations.length; i++) {
- if (registrations[i].observer === this) {
- registration = registrations[i];
- registration.removeTransientObservers();
- registration.options = newOptions;
- }
- }
- if (!registration) {
- registration = new Registration(this, target, newOptions);
- registrations.push(registration);
- this.nodes_.push(target);
- }
- },
- disconnect: function() {
- this.nodes_.forEach(function(node) {
- var registrations = registrationsTable.get(node);
- for (var i = 0; i < registrations.length; i++) {
- var registration = registrations[i];
- if (registration.observer === this) {
- registrations.splice(i, 1);
- break;
- }
- }
- }, this);
- this.records_ = [];
- },
- takeRecords: function() {
- var copyOfRecords = this.records_;
- this.records_ = [];
- return copyOfRecords;
- }
- };
- function Registration(observer, target, options) {
- this.observer = observer;
- this.target = target;
- this.options = options;
- this.transientObservedNodes = [];
- }
- Registration.prototype = {
- addTransientObserver: function(node) {
- if (node === this.target) return;
- scheduleCallback(this.observer);
- this.transientObservedNodes.push(node);
- var registrations = registrationsTable.get(node);
- if (!registrations) registrationsTable.set(node, registrations = []);
- registrations.push(this);
- },
- removeTransientObservers: function() {
- var transientObservedNodes = this.transientObservedNodes;
- this.transientObservedNodes = [];
- for (var i = 0; i < transientObservedNodes.length; i++) {
- var node = transientObservedNodes[i];
- var registrations = registrationsTable.get(node);
- for (var j = 0; j < registrations.length; j++) {
- if (registrations[j] === this) {
- registrations.splice(j, 1);
- break;
- }
- }
- }
- }
- };
- scope.enqueueMutation = enqueueMutation;
- scope.registerTransientObservers = registerTransientObservers;
- scope.wrappers.MutationObserver = MutationObserver;
- scope.wrappers.MutationRecord = MutationRecord;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- function TreeScope(root, parent) {
- this.root = root;
- this.parent = parent;
- }
- TreeScope.prototype = {
- get renderer() {
- if (this.root instanceof scope.wrappers.ShadowRoot) {
- return scope.getRendererForHost(this.root.host);
- }
- return null;
- },
- contains: function(treeScope) {
- for (;treeScope; treeScope = treeScope.parent) {
- if (treeScope === this) return true;
- }
- return false;
- }
- };
- function setTreeScope(node, treeScope) {
- if (node.treeScope_ !== treeScope) {
- node.treeScope_ = treeScope;
- for (var sr = node.shadowRoot; sr; sr = sr.olderShadowRoot) {
- sr.treeScope_.parent = treeScope;
- }
- for (var child = node.firstChild; child; child = child.nextSibling) {
- setTreeScope(child, treeScope);
- }
- }
- }
- function getTreeScope(node) {
- if (node instanceof scope.wrappers.Window) {
- debugger;
- }
- if (node.treeScope_) return node.treeScope_;
- var parent = node.parentNode;
- var treeScope;
- if (parent) treeScope = getTreeScope(parent); else treeScope = new TreeScope(node, null);
- return node.treeScope_ = treeScope;
- }
- scope.TreeScope = TreeScope;
- scope.getTreeScope = getTreeScope;
- scope.setTreeScope = setTreeScope;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var forwardMethodsToWrapper = scope.forwardMethodsToWrapper;
- var getTreeScope = scope.getTreeScope;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var wrappers = scope.wrappers;
- var wrappedFuns = new WeakMap();
- var listenersTable = new WeakMap();
- var handledEventsTable = new WeakMap();
- var currentlyDispatchingEvents = new WeakMap();
- var targetTable = new WeakMap();
- var currentTargetTable = new WeakMap();
- var relatedTargetTable = new WeakMap();
- var eventPhaseTable = new WeakMap();
- var stopPropagationTable = new WeakMap();
- var stopImmediatePropagationTable = new WeakMap();
- var eventHandlersTable = new WeakMap();
- var eventPathTable = new WeakMap();
- function isShadowRoot(node) {
- return node instanceof wrappers.ShadowRoot;
- }
- function rootOfNode(node) {
- return getTreeScope(node).root;
- }
- function getEventPath(node, event) {
- var path = [];
- var current = node;
- path.push(current);
- while (current) {
- var destinationInsertionPoints = getDestinationInsertionPoints(current);
- if (destinationInsertionPoints && destinationInsertionPoints.length > 0) {
- for (var i = 0; i < destinationInsertionPoints.length; i++) {
- var insertionPoint = destinationInsertionPoints[i];
- if (isShadowInsertionPoint(insertionPoint)) {
- var shadowRoot = rootOfNode(insertionPoint);
- var olderShadowRoot = shadowRoot.olderShadowRoot;
- if (olderShadowRoot) path.push(olderShadowRoot);
- }
- path.push(insertionPoint);
- }
- current = destinationInsertionPoints[destinationInsertionPoints.length - 1];
- } else {
- if (isShadowRoot(current)) {
- if (inSameTree(node, current) && eventMustBeStopped(event)) {
- break;
- }
- current = current.host;
- path.push(current);
- } else {
- current = current.parentNode;
- if (current) path.push(current);
- }
- }
- }
- return path;
- }
- function eventMustBeStopped(event) {
- if (!event) return false;
- switch (event.type) {
- case "abort":
- case "error":
- case "select":
- case "change":
- case "load":
- case "reset":
- case "resize":
- case "scroll":
- case "selectstart":
- return true;
- }
- return false;
- }
- function isShadowInsertionPoint(node) {
- return node instanceof HTMLShadowElement;
- }
- function getDestinationInsertionPoints(node) {
- return scope.getDestinationInsertionPoints(node);
- }
- function eventRetargetting(path, currentTarget) {
- if (path.length === 0) return currentTarget;
- if (currentTarget instanceof wrappers.Window) currentTarget = currentTarget.document;
- var currentTargetTree = getTreeScope(currentTarget);
- var originalTarget = path[0];
- var originalTargetTree = getTreeScope(originalTarget);
- var relativeTargetTree = lowestCommonInclusiveAncestor(currentTargetTree, originalTargetTree);
- for (var i = 0; i < path.length; i++) {
- var node = path[i];
- if (getTreeScope(node) === relativeTargetTree) return node;
- }
- return path[path.length - 1];
- }
- function getTreeScopeAncestors(treeScope) {
- var ancestors = [];
- for (;treeScope; treeScope = treeScope.parent) {
- ancestors.push(treeScope);
- }
- return ancestors;
- }
- function lowestCommonInclusiveAncestor(tsA, tsB) {
- var ancestorsA = getTreeScopeAncestors(tsA);
- var ancestorsB = getTreeScopeAncestors(tsB);
- var result = null;
- while (ancestorsA.length > 0 && ancestorsB.length > 0) {
- var a = ancestorsA.pop();
- var b = ancestorsB.pop();
- if (a === b) result = a; else break;
- }
- return result;
- }
- function getTreeScopeRoot(ts) {
- if (!ts.parent) return ts;
- return getTreeScopeRoot(ts.parent);
- }
- function relatedTargetResolution(event, currentTarget, relatedTarget) {
- if (currentTarget instanceof wrappers.Window) currentTarget = currentTarget.document;
- var currentTargetTree = getTreeScope(currentTarget);
- var relatedTargetTree = getTreeScope(relatedTarget);
- var relatedTargetEventPath = getEventPath(relatedTarget, event);
- var lowestCommonAncestorTree;
- var lowestCommonAncestorTree = lowestCommonInclusiveAncestor(currentTargetTree, relatedTargetTree);
- if (!lowestCommonAncestorTree) lowestCommonAncestorTree = relatedTargetTree.root;
- for (var commonAncestorTree = lowestCommonAncestorTree; commonAncestorTree; commonAncestorTree = commonAncestorTree.parent) {
- var adjustedRelatedTarget;
- for (var i = 0; i < relatedTargetEventPath.length; i++) {
- var node = relatedTargetEventPath[i];
- if (getTreeScope(node) === commonAncestorTree) return node;
- }
- }
- return null;
- }
- function inSameTree(a, b) {
- return getTreeScope(a) === getTreeScope(b);
- }
- var NONE = 0;
- var CAPTURING_PHASE = 1;
- var AT_TARGET = 2;
- var BUBBLING_PHASE = 3;
- var pendingError;
- function dispatchOriginalEvent(originalEvent) {
- if (handledEventsTable.get(originalEvent)) return;
- handledEventsTable.set(originalEvent, true);
- dispatchEvent(wrap(originalEvent), wrap(originalEvent.target));
- if (pendingError) {
- var err = pendingError;
- pendingError = null;
- throw err;
- }
- }
- function isLoadLikeEvent(event) {
- switch (event.type) {
- case "load":
- case "beforeunload":
- case "unload":
- return true;
- }
- return false;
- }
- function dispatchEvent(event, originalWrapperTarget) {
- if (currentlyDispatchingEvents.get(event)) throw new Error("InvalidStateError");
- currentlyDispatchingEvents.set(event, true);
- scope.renderAllPending();
- var eventPath;
- var overrideTarget;
- var win;
- if (isLoadLikeEvent(event) && !event.bubbles) {
- var doc = originalWrapperTarget;
- if (doc instanceof wrappers.Document && (win = doc.defaultView)) {
- overrideTarget = doc;
- eventPath = [];
- }
- }
- if (!eventPath) {
- if (originalWrapperTarget instanceof wrappers.Window) {
- win = originalWrapperTarget;
- eventPath = [];
- } else {
- eventPath = getEventPath(originalWrapperTarget, event);
- if (!isLoadLikeEvent(event)) {
- var doc = eventPath[eventPath.length - 1];
- if (doc instanceof wrappers.Document) win = doc.defaultView;
- }
- }
- }
- eventPathTable.set(event, eventPath);
- if (dispatchCapturing(event, eventPath, win, overrideTarget)) {
- if (dispatchAtTarget(event, eventPath, win, overrideTarget)) {
- dispatchBubbling(event, eventPath, win, overrideTarget);
- }
- }
- eventPhaseTable.set(event, NONE);
- currentTargetTable.delete(event, null);
- currentlyDispatchingEvents.delete(event);
- return event.defaultPrevented;
- }
- function dispatchCapturing(event, eventPath, win, overrideTarget) {
- var phase = CAPTURING_PHASE;
- if (win) {
- if (!invoke(win, event, phase, eventPath, overrideTarget)) return false;
- }
- for (var i = eventPath.length - 1; i > 0; i--) {
- if (!invoke(eventPath[i], event, phase, eventPath, overrideTarget)) return false;
- }
- return true;
- }
- function dispatchAtTarget(event, eventPath, win, overrideTarget) {
- var phase = AT_TARGET;
- var currentTarget = eventPath[0] || win;
- return invoke(currentTarget, event, phase, eventPath, overrideTarget);
- }
- function dispatchBubbling(event, eventPath, win, overrideTarget) {
- var phase = BUBBLING_PHASE;
- for (var i = 1; i < eventPath.length; i++) {
- if (!invoke(eventPath[i], event, phase, eventPath, overrideTarget)) return;
- }
- if (win && eventPath.length > 0) {
- invoke(win, event, phase, eventPath, overrideTarget);
- }
- }
- function invoke(currentTarget, event, phase, eventPath, overrideTarget) {
- var listeners = listenersTable.get(currentTarget);
- if (!listeners) return true;
- var target = overrideTarget || eventRetargetting(eventPath, currentTarget);
- if (target === currentTarget) {
- if (phase === CAPTURING_PHASE) return true;
- if (phase === BUBBLING_PHASE) phase = AT_TARGET;
- } else if (phase === BUBBLING_PHASE && !event.bubbles) {
- return true;
- }
- if ("relatedTarget" in event) {
- var originalEvent = unwrap(event);
- var unwrappedRelatedTarget = originalEvent.relatedTarget;
- if (unwrappedRelatedTarget) {
- if (unwrappedRelatedTarget instanceof Object && unwrappedRelatedTarget.addEventListener) {
- var relatedTarget = wrap(unwrappedRelatedTarget);
- var adjusted = relatedTargetResolution(event, currentTarget, relatedTarget);
- if (adjusted === target) return true;
- } else {
- adjusted = null;
- }
- relatedTargetTable.set(event, adjusted);
- }
- }
- eventPhaseTable.set(event, phase);
- var type = event.type;
- var anyRemoved = false;
- targetTable.set(event, target);
- currentTargetTable.set(event, currentTarget);
- listeners.depth++;
- for (var i = 0, len = listeners.length; i < len; i++) {
- var listener = listeners[i];
- if (listener.removed) {
- anyRemoved = true;
- continue;
- }
- if (listener.type !== type || !listener.capture && phase === CAPTURING_PHASE || listener.capture && phase === BUBBLING_PHASE) {
- continue;
- }
- try {
- if (typeof listener.handler === "function") listener.handler.call(currentTarget, event); else listener.handler.handleEvent(event);
- if (stopImmediatePropagationTable.get(event)) return false;
- } catch (ex) {
- if (!pendingError) pendingError = ex;
- }
- }
- listeners.depth--;
- if (anyRemoved && listeners.depth === 0) {
- var copy = listeners.slice();
- listeners.length = 0;
- for (var i = 0; i < copy.length; i++) {
- if (!copy[i].removed) listeners.push(copy[i]);
- }
- }
- return !stopPropagationTable.get(event);
- }
- function Listener(type, handler, capture) {
- this.type = type;
- this.handler = handler;
- this.capture = Boolean(capture);
- }
- Listener.prototype = {
- equals: function(that) {
- return this.handler === that.handler && this.type === that.type && this.capture === that.capture;
- },
- get removed() {
- return this.handler === null;
- },
- remove: function() {
- this.handler = null;
- }
- };
- var OriginalEvent = window.Event;
- OriginalEvent.prototype.polymerBlackList_ = {
- returnValue: true,
- keyLocation: true
- };
- function Event(type, options) {
- if (type instanceof OriginalEvent) {
- var impl = type;
- if (!OriginalBeforeUnloadEvent && impl.type === "beforeunload" && !(this instanceof BeforeUnloadEvent)) {
- return new BeforeUnloadEvent(impl);
- }
- setWrapper(impl, this);
- } else {
- return wrap(constructEvent(OriginalEvent, "Event", type, options));
- }
- }
- Event.prototype = {
- get target() {
- return targetTable.get(this);
- },
- get currentTarget() {
- return currentTargetTable.get(this);
- },
- get eventPhase() {
- return eventPhaseTable.get(this);
- },
- get path() {
- var eventPath = eventPathTable.get(this);
- if (!eventPath) return [];
- return eventPath.slice();
- },
- stopPropagation: function() {
- stopPropagationTable.set(this, true);
- },
- stopImmediatePropagation: function() {
- stopPropagationTable.set(this, true);
- stopImmediatePropagationTable.set(this, true);
- }
- };
- registerWrapper(OriginalEvent, Event, document.createEvent("Event"));
- function unwrapOptions(options) {
- if (!options || !options.relatedTarget) return options;
- return Object.create(options, {
- relatedTarget: {
- value: unwrap(options.relatedTarget)
- }
- });
- }
- function registerGenericEvent(name, SuperEvent, prototype) {
- var OriginalEvent = window[name];
- var GenericEvent = function(type, options) {
- if (type instanceof OriginalEvent) setWrapper(type, this); else return wrap(constructEvent(OriginalEvent, name, type, options));
- };
- GenericEvent.prototype = Object.create(SuperEvent.prototype);
- if (prototype) mixin(GenericEvent.prototype, prototype);
- if (OriginalEvent) {
- try {
- registerWrapper(OriginalEvent, GenericEvent, new OriginalEvent("temp"));
- } catch (ex) {
- registerWrapper(OriginalEvent, GenericEvent, document.createEvent(name));
- }
- }
- return GenericEvent;
- }
- var UIEvent = registerGenericEvent("UIEvent", Event);
- var CustomEvent = registerGenericEvent("CustomEvent", Event);
- var relatedTargetProto = {
- get relatedTarget() {
- var relatedTarget = relatedTargetTable.get(this);
- if (relatedTarget !== undefined) return relatedTarget;
- return wrap(unwrap(this).relatedTarget);
- }
- };
- function getInitFunction(name, relatedTargetIndex) {
- return function() {
- arguments[relatedTargetIndex] = unwrap(arguments[relatedTargetIndex]);
- var impl = unwrap(this);
- impl[name].apply(impl, arguments);
- };
- }
- var mouseEventProto = mixin({
- initMouseEvent: getInitFunction("initMouseEvent", 14)
- }, relatedTargetProto);
- var focusEventProto = mixin({
- initFocusEvent: getInitFunction("initFocusEvent", 5)
- }, relatedTargetProto);
- var MouseEvent = registerGenericEvent("MouseEvent", UIEvent, mouseEventProto);
- var FocusEvent = registerGenericEvent("FocusEvent", UIEvent, focusEventProto);
- var defaultInitDicts = Object.create(null);
- var supportsEventConstructors = function() {
- try {
- new window.FocusEvent("focus");
- } catch (ex) {
- return false;
- }
- return true;
- }();
- function constructEvent(OriginalEvent, name, type, options) {
- if (supportsEventConstructors) return new OriginalEvent(type, unwrapOptions(options));
- var event = unwrap(document.createEvent(name));
- var defaultDict = defaultInitDicts[name];
- var args = [ type ];
- Object.keys(defaultDict).forEach(function(key) {
- var v = options != null && key in options ? options[key] : defaultDict[key];
- if (key === "relatedTarget") v = unwrap(v);
- args.push(v);
- });
- event["init" + name].apply(event, args);
- return event;
- }
- if (!supportsEventConstructors) {
- var configureEventConstructor = function(name, initDict, superName) {
- if (superName) {
- var superDict = defaultInitDicts[superName];
- initDict = mixin(mixin({}, superDict), initDict);
- }
- defaultInitDicts[name] = initDict;
- };
- configureEventConstructor("Event", {
- bubbles: false,
- cancelable: false
- });
- configureEventConstructor("CustomEvent", {
- detail: null
- }, "Event");
- configureEventConstructor("UIEvent", {
- view: null,
- detail: 0
- }, "Event");
- configureEventConstructor("MouseEvent", {
- screenX: 0,
- screenY: 0,
- clientX: 0,
- clientY: 0,
- ctrlKey: false,
- altKey: false,
- shiftKey: false,
- metaKey: false,
- button: 0,
- relatedTarget: null
- }, "UIEvent");
- configureEventConstructor("FocusEvent", {
- relatedTarget: null
- }, "UIEvent");
- }
- var OriginalBeforeUnloadEvent = window.BeforeUnloadEvent;
- function BeforeUnloadEvent(impl) {
- Event.call(this, impl);
- }
- BeforeUnloadEvent.prototype = Object.create(Event.prototype);
- mixin(BeforeUnloadEvent.prototype, {
- get returnValue() {
- return unsafeUnwrap(this).returnValue;
- },
- set returnValue(v) {
- unsafeUnwrap(this).returnValue = v;
- }
- });
- if (OriginalBeforeUnloadEvent) registerWrapper(OriginalBeforeUnloadEvent, BeforeUnloadEvent);
- function isValidListener(fun) {
- if (typeof fun === "function") return true;
- return fun && fun.handleEvent;
- }
- function isMutationEvent(type) {
- switch (type) {
- case "DOMAttrModified":
- case "DOMAttributeNameChanged":
- case "DOMCharacterDataModified":
- case "DOMElementNameChanged":
- case "DOMNodeInserted":
- case "DOMNodeInsertedIntoDocument":
- case "DOMNodeRemoved":
- case "DOMNodeRemovedFromDocument":
- case "DOMSubtreeModified":
- return true;
- }
- return false;
- }
- var OriginalEventTarget = window.EventTarget;
- function EventTarget(impl) {
- setWrapper(impl, this);
- }
- var methodNames = [ "addEventListener", "removeEventListener", "dispatchEvent" ];
- [ Node, Window ].forEach(function(constructor) {
- var p = constructor.prototype;
- methodNames.forEach(function(name) {
- Object.defineProperty(p, name + "_", {
- value: p[name]
- });
- });
- });
- function getTargetToListenAt(wrapper) {
- if (wrapper instanceof wrappers.ShadowRoot) wrapper = wrapper.host;
- return unwrap(wrapper);
- }
- EventTarget.prototype = {
- addEventListener: function(type, fun, capture) {
- if (!isValidListener(fun) || isMutationEvent(type)) return;
- var listener = new Listener(type, fun, capture);
- var listeners = listenersTable.get(this);
- if (!listeners) {
- listeners = [];
- listeners.depth = 0;
- listenersTable.set(this, listeners);
- } else {
- for (var i = 0; i < listeners.length; i++) {
- if (listener.equals(listeners[i])) return;
- }
- }
- listeners.push(listener);
- var target = getTargetToListenAt(this);
- target.addEventListener_(type, dispatchOriginalEvent, true);
- },
- removeEventListener: function(type, fun, capture) {
- capture = Boolean(capture);
- var listeners = listenersTable.get(this);
- if (!listeners) return;
- var count = 0, found = false;
- for (var i = 0; i < listeners.length; i++) {
- if (listeners[i].type === type && listeners[i].capture === capture) {
- count++;
- if (listeners[i].handler === fun) {
- found = true;
- listeners[i].remove();
- }
- }
- }
- if (found && count === 1) {
- var target = getTargetToListenAt(this);
- target.removeEventListener_(type, dispatchOriginalEvent, true);
- }
- },
- dispatchEvent: function(event) {
- var nativeEvent = unwrap(event);
- var eventType = nativeEvent.type;
- handledEventsTable.set(nativeEvent, false);
- scope.renderAllPending();
- var tempListener;
- if (!hasListenerInAncestors(this, eventType)) {
- tempListener = function() {};
- this.addEventListener(eventType, tempListener, true);
- }
- try {
- return unwrap(this).dispatchEvent_(nativeEvent);
- } finally {
- if (tempListener) this.removeEventListener(eventType, tempListener, true);
- }
- }
- };
- function hasListener(node, type) {
- var listeners = listenersTable.get(node);
- if (listeners) {
- for (var i = 0; i < listeners.length; i++) {
- if (!listeners[i].removed && listeners[i].type === type) return true;
- }
- }
- return false;
- }
- function hasListenerInAncestors(target, type) {
- for (var node = unwrap(target); node; node = node.parentNode) {
- if (hasListener(wrap(node), type)) return true;
- }
- return false;
- }
- if (OriginalEventTarget) registerWrapper(OriginalEventTarget, EventTarget);
- function wrapEventTargetMethods(constructors) {
- forwardMethodsToWrapper(constructors, methodNames);
- }
- var originalElementFromPoint = document.elementFromPoint;
- function elementFromPoint(self, document, x, y) {
- scope.renderAllPending();
- var element = wrap(originalElementFromPoint.call(unsafeUnwrap(document), x, y));
- if (!element) return null;
- var path = getEventPath(element, null);
- var idx = path.lastIndexOf(self);
- if (idx == -1) return null; else path = path.slice(0, idx);
- return eventRetargetting(path, self);
- }
- function getEventHandlerGetter(name) {
- return function() {
- var inlineEventHandlers = eventHandlersTable.get(this);
- return inlineEventHandlers && inlineEventHandlers[name] && inlineEventHandlers[name].value || null;
- };
- }
- function getEventHandlerSetter(name) {
- var eventType = name.slice(2);
- return function(value) {
- var inlineEventHandlers = eventHandlersTable.get(this);
- if (!inlineEventHandlers) {
- inlineEventHandlers = Object.create(null);
- eventHandlersTable.set(this, inlineEventHandlers);
- }
- var old = inlineEventHandlers[name];
- if (old) this.removeEventListener(eventType, old.wrapped, false);
- if (typeof value === "function") {
- var wrapped = function(e) {
- var rv = value.call(this, e);
- if (rv === false) e.preventDefault(); else if (name === "onbeforeunload" && typeof rv === "string") e.returnValue = rv;
- };
- this.addEventListener(eventType, wrapped, false);
- inlineEventHandlers[name] = {
- value: value,
- wrapped: wrapped
- };
- }
- };
- }
- scope.elementFromPoint = elementFromPoint;
- scope.getEventHandlerGetter = getEventHandlerGetter;
- scope.getEventHandlerSetter = getEventHandlerSetter;
- scope.wrapEventTargetMethods = wrapEventTargetMethods;
- scope.wrappers.BeforeUnloadEvent = BeforeUnloadEvent;
- scope.wrappers.CustomEvent = CustomEvent;
- scope.wrappers.Event = Event;
- scope.wrappers.EventTarget = EventTarget;
- scope.wrappers.FocusEvent = FocusEvent;
- scope.wrappers.MouseEvent = MouseEvent;
- scope.wrappers.UIEvent = UIEvent;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var UIEvent = scope.wrappers.UIEvent;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var wrap = scope.wrap;
- var OriginalTouchEvent = window.TouchEvent;
- if (!OriginalTouchEvent) return;
- var nativeEvent;
- try {
- nativeEvent = document.createEvent("TouchEvent");
- } catch (ex) {
- return;
- }
- var nonEnumDescriptor = {
- enumerable: false
- };
- function nonEnum(obj, prop) {
- Object.defineProperty(obj, prop, nonEnumDescriptor);
- }
- function Touch(impl) {
- setWrapper(impl, this);
- }
- Touch.prototype = {
- get target() {
- return wrap(unsafeUnwrap(this).target);
- }
- };
- var descr = {
- configurable: true,
- enumerable: true,
- get: null
- };
- [ "clientX", "clientY", "screenX", "screenY", "pageX", "pageY", "identifier", "webkitRadiusX", "webkitRadiusY", "webkitRotationAngle", "webkitForce" ].forEach(function(name) {
- descr.get = function() {
- return unsafeUnwrap(this)[name];
- };
- Object.defineProperty(Touch.prototype, name, descr);
- });
- function TouchList() {
- this.length = 0;
- nonEnum(this, "length");
- }
- TouchList.prototype = {
- item: function(index) {
- return this[index];
- }
- };
- function wrapTouchList(nativeTouchList) {
- var list = new TouchList();
- for (var i = 0; i < nativeTouchList.length; i++) {
- list[i] = new Touch(nativeTouchList[i]);
- }
- list.length = i;
- return list;
- }
- function TouchEvent(impl) {
- UIEvent.call(this, impl);
- }
- TouchEvent.prototype = Object.create(UIEvent.prototype);
- mixin(TouchEvent.prototype, {
- get touches() {
- return wrapTouchList(unsafeUnwrap(this).touches);
- },
- get targetTouches() {
- return wrapTouchList(unsafeUnwrap(this).targetTouches);
- },
- get changedTouches() {
- return wrapTouchList(unsafeUnwrap(this).changedTouches);
- },
- initTouchEvent: function() {
- throw new Error("Not implemented");
- }
- });
- registerWrapper(OriginalTouchEvent, TouchEvent, nativeEvent);
- scope.wrappers.Touch = Touch;
- scope.wrappers.TouchEvent = TouchEvent;
- scope.wrappers.TouchList = TouchList;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var unsafeUnwrap = scope.unsafeUnwrap;
- var wrap = scope.wrap;
- var nonEnumDescriptor = {
- enumerable: false
- };
- function nonEnum(obj, prop) {
- Object.defineProperty(obj, prop, nonEnumDescriptor);
- }
- function NodeList() {
- this.length = 0;
- nonEnum(this, "length");
- }
- NodeList.prototype = {
- item: function(index) {
- return this[index];
- }
- };
- nonEnum(NodeList.prototype, "item");
- function wrapNodeList(list) {
- if (list == null) return list;
- var wrapperList = new NodeList();
- for (var i = 0, length = list.length; i < length; i++) {
- wrapperList[i] = wrap(list[i]);
- }
- wrapperList.length = length;
- return wrapperList;
- }
- function addWrapNodeListMethod(wrapperConstructor, name) {
- wrapperConstructor.prototype[name] = function() {
- return wrapNodeList(unsafeUnwrap(this)[name].apply(unsafeUnwrap(this), arguments));
- };
- }
- scope.wrappers.NodeList = NodeList;
- scope.addWrapNodeListMethod = addWrapNodeListMethod;
- scope.wrapNodeList = wrapNodeList;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- scope.wrapHTMLCollection = scope.wrapNodeList;
- scope.wrappers.HTMLCollection = scope.wrappers.NodeList;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var EventTarget = scope.wrappers.EventTarget;
- var NodeList = scope.wrappers.NodeList;
- var TreeScope = scope.TreeScope;
- var assert = scope.assert;
- var defineWrapGetter = scope.defineWrapGetter;
- var enqueueMutation = scope.enqueueMutation;
- var getTreeScope = scope.getTreeScope;
- var isWrapper = scope.isWrapper;
- var mixin = scope.mixin;
- var registerTransientObservers = scope.registerTransientObservers;
- var registerWrapper = scope.registerWrapper;
- var setTreeScope = scope.setTreeScope;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var wrap = scope.wrap;
- var wrapIfNeeded = scope.wrapIfNeeded;
- var wrappers = scope.wrappers;
- function assertIsNodeWrapper(node) {
- assert(node instanceof Node);
- }
- function createOneElementNodeList(node) {
- var nodes = new NodeList();
- nodes[0] = node;
- nodes.length = 1;
- return nodes;
- }
- var surpressMutations = false;
- function enqueueRemovalForInsertedNodes(node, parent, nodes) {
- enqueueMutation(parent, "childList", {
- removedNodes: nodes,
- previousSibling: node.previousSibling,
- nextSibling: node.nextSibling
- });
- }
- function enqueueRemovalForInsertedDocumentFragment(df, nodes) {
- enqueueMutation(df, "childList", {
- removedNodes: nodes
- });
- }
- function collectNodes(node, parentNode, previousNode, nextNode) {
- if (node instanceof DocumentFragment) {
- var nodes = collectNodesForDocumentFragment(node);
- surpressMutations = true;
- for (var i = nodes.length - 1; i >= 0; i--) {
- node.removeChild(nodes[i]);
- nodes[i].parentNode_ = parentNode;
- }
- surpressMutations = false;
- for (var i = 0; i < nodes.length; i++) {
- nodes[i].previousSibling_ = nodes[i - 1] || previousNode;
- nodes[i].nextSibling_ = nodes[i + 1] || nextNode;
- }
- if (previousNode) previousNode.nextSibling_ = nodes[0];
- if (nextNode) nextNode.previousSibling_ = nodes[nodes.length - 1];
- return nodes;
- }
- var nodes = createOneElementNodeList(node);
- var oldParent = node.parentNode;
- if (oldParent) {
- oldParent.removeChild(node);
- }
- node.parentNode_ = parentNode;
- node.previousSibling_ = previousNode;
- node.nextSibling_ = nextNode;
- if (previousNode) previousNode.nextSibling_ = node;
- if (nextNode) nextNode.previousSibling_ = node;
- return nodes;
- }
- function collectNodesNative(node) {
- if (node instanceof DocumentFragment) return collectNodesForDocumentFragment(node);
- var nodes = createOneElementNodeList(node);
- var oldParent = node.parentNode;
- if (oldParent) enqueueRemovalForInsertedNodes(node, oldParent, nodes);
- return nodes;
- }
- function collectNodesForDocumentFragment(node) {
- var nodes = new NodeList();
- var i = 0;
- for (var child = node.firstChild; child; child = child.nextSibling) {
- nodes[i++] = child;
- }
- nodes.length = i;
- enqueueRemovalForInsertedDocumentFragment(node, nodes);
- return nodes;
- }
- function snapshotNodeList(nodeList) {
- return nodeList;
- }
- function nodeWasAdded(node, treeScope) {
- setTreeScope(node, treeScope);
- node.nodeIsInserted_();
- }
- function nodesWereAdded(nodes, parent) {
- var treeScope = getTreeScope(parent);
- for (var i = 0; i < nodes.length; i++) {
- nodeWasAdded(nodes[i], treeScope);
- }
- }
- function nodeWasRemoved(node) {
- setTreeScope(node, new TreeScope(node, null));
- }
- function nodesWereRemoved(nodes) {
- for (var i = 0; i < nodes.length; i++) {
- nodeWasRemoved(nodes[i]);
- }
- }
- function ensureSameOwnerDocument(parent, child) {
- var ownerDoc = parent.nodeType === Node.DOCUMENT_NODE ? parent : parent.ownerDocument;
- if (ownerDoc !== child.ownerDocument) ownerDoc.adoptNode(child);
- }
- function adoptNodesIfNeeded(owner, nodes) {
- if (!nodes.length) return;
- var ownerDoc = owner.ownerDocument;
- if (ownerDoc === nodes[0].ownerDocument) return;
- for (var i = 0; i < nodes.length; i++) {
- scope.adoptNodeNoRemove(nodes[i], ownerDoc);
- }
- }
- function unwrapNodesForInsertion(owner, nodes) {
- adoptNodesIfNeeded(owner, nodes);
- var length = nodes.length;
- if (length === 1) return unwrap(nodes[0]);
- var df = unwrap(owner.ownerDocument.createDocumentFragment());
- for (var i = 0; i < length; i++) {
- df.appendChild(unwrap(nodes[i]));
- }
- return df;
- }
- function clearChildNodes(wrapper) {
- if (wrapper.firstChild_ !== undefined) {
- var child = wrapper.firstChild_;
- while (child) {
- var tmp = child;
- child = child.nextSibling_;
- tmp.parentNode_ = tmp.previousSibling_ = tmp.nextSibling_ = undefined;
- }
- }
- wrapper.firstChild_ = wrapper.lastChild_ = undefined;
- }
- function removeAllChildNodes(wrapper) {
- if (wrapper.invalidateShadowRenderer()) {
- var childWrapper = wrapper.firstChild;
- while (childWrapper) {
- assert(childWrapper.parentNode === wrapper);
- var nextSibling = childWrapper.nextSibling;
- var childNode = unwrap(childWrapper);
- var parentNode = childNode.parentNode;
- if (parentNode) originalRemoveChild.call(parentNode, childNode);
- childWrapper.previousSibling_ = childWrapper.nextSibling_ = childWrapper.parentNode_ = null;
- childWrapper = nextSibling;
- }
- wrapper.firstChild_ = wrapper.lastChild_ = null;
- } else {
- var node = unwrap(wrapper);
- var child = node.firstChild;
- var nextSibling;
- while (child) {
- nextSibling = child.nextSibling;
- originalRemoveChild.call(node, child);
- child = nextSibling;
- }
- }
- }
- function invalidateParent(node) {
- var p = node.parentNode;
- return p && p.invalidateShadowRenderer();
- }
- function cleanupNodes(nodes) {
- for (var i = 0, n; i < nodes.length; i++) {
- n = nodes[i];
- n.parentNode.removeChild(n);
- }
- }
- var originalImportNode = document.importNode;
- var originalCloneNode = window.Node.prototype.cloneNode;
- function cloneNode(node, deep, opt_doc) {
- var clone;
- if (opt_doc) clone = wrap(originalImportNode.call(opt_doc, unsafeUnwrap(node), false)); else clone = wrap(originalCloneNode.call(unsafeUnwrap(node), false));
- if (deep) {
- for (var child = node.firstChild; child; child = child.nextSibling) {
- clone.appendChild(cloneNode(child, true, opt_doc));
- }
- if (node instanceof wrappers.HTMLTemplateElement) {
- var cloneContent = clone.content;
- for (var child = node.content.firstChild; child; child = child.nextSibling) {
- cloneContent.appendChild(cloneNode(child, true, opt_doc));
- }
- }
- }
- return clone;
- }
- function contains(self, child) {
- if (!child || getTreeScope(self) !== getTreeScope(child)) return false;
- for (var node = child; node; node = node.parentNode) {
- if (node === self) return true;
- }
- return false;
- }
- var OriginalNode = window.Node;
- function Node(original) {
- assert(original instanceof OriginalNode);
- EventTarget.call(this, original);
- this.parentNode_ = undefined;
- this.firstChild_ = undefined;
- this.lastChild_ = undefined;
- this.nextSibling_ = undefined;
- this.previousSibling_ = undefined;
- this.treeScope_ = undefined;
- }
- var OriginalDocumentFragment = window.DocumentFragment;
- var originalAppendChild = OriginalNode.prototype.appendChild;
- var originalCompareDocumentPosition = OriginalNode.prototype.compareDocumentPosition;
- var originalIsEqualNode = OriginalNode.prototype.isEqualNode;
- var originalInsertBefore = OriginalNode.prototype.insertBefore;
- var originalRemoveChild = OriginalNode.prototype.removeChild;
- var originalReplaceChild = OriginalNode.prototype.replaceChild;
- var isIe = /Trident|Edge/.test(navigator.userAgent);
- var removeChildOriginalHelper = isIe ? function(parent, child) {
- try {
- originalRemoveChild.call(parent, child);
- } catch (ex) {
- if (!(parent instanceof OriginalDocumentFragment)) throw ex;
- }
- } : function(parent, child) {
- originalRemoveChild.call(parent, child);
- };
- Node.prototype = Object.create(EventTarget.prototype);
- mixin(Node.prototype, {
- appendChild: function(childWrapper) {
- return this.insertBefore(childWrapper, null);
- },
- insertBefore: function(childWrapper, refWrapper) {
- assertIsNodeWrapper(childWrapper);
- var refNode;
- if (refWrapper) {
- if (isWrapper(refWrapper)) {
- refNode = unwrap(refWrapper);
- } else {
- refNode = refWrapper;
- refWrapper = wrap(refNode);
- }
- } else {
- refWrapper = null;
- refNode = null;
- }
- refWrapper && assert(refWrapper.parentNode === this);
- var nodes;
- var previousNode = refWrapper ? refWrapper.previousSibling : this.lastChild;
- var useNative = !this.invalidateShadowRenderer() && !invalidateParent(childWrapper);
- if (useNative) nodes = collectNodesNative(childWrapper); else nodes = collectNodes(childWrapper, this, previousNode, refWrapper);
- if (useNative) {
- ensureSameOwnerDocument(this, childWrapper);
- clearChildNodes(this);
- originalInsertBefore.call(unsafeUnwrap(this), unwrap(childWrapper), refNode);
- } else {
- if (!previousNode) this.firstChild_ = nodes[0];
- if (!refWrapper) {
- this.lastChild_ = nodes[nodes.length - 1];
- if (this.firstChild_ === undefined) this.firstChild_ = this.firstChild;
- }
- var parentNode = refNode ? refNode.parentNode : unsafeUnwrap(this);
- if (parentNode) {
- originalInsertBefore.call(parentNode, unwrapNodesForInsertion(this, nodes), refNode);
- } else {
- adoptNodesIfNeeded(this, nodes);
- }
- }
- enqueueMutation(this, "childList", {
- addedNodes: nodes,
- nextSibling: refWrapper,
- previousSibling: previousNode
- });
- nodesWereAdded(nodes, this);
- return childWrapper;
- },
- removeChild: function(childWrapper) {
- assertIsNodeWrapper(childWrapper);
- if (childWrapper.parentNode !== this) {
- var found = false;
- var childNodes = this.childNodes;
- for (var ieChild = this.firstChild; ieChild; ieChild = ieChild.nextSibling) {
- if (ieChild === childWrapper) {
- found = true;
- break;
- }
- }
- if (!found) {
- throw new Error("NotFoundError");
- }
- }
- var childNode = unwrap(childWrapper);
- var childWrapperNextSibling = childWrapper.nextSibling;
- var childWrapperPreviousSibling = childWrapper.previousSibling;
- if (this.invalidateShadowRenderer()) {
- var thisFirstChild = this.firstChild;
- var thisLastChild = this.lastChild;
- var parentNode = childNode.parentNode;
- if (parentNode) removeChildOriginalHelper(parentNode, childNode);
- if (thisFirstChild === childWrapper) this.firstChild_ = childWrapperNextSibling;
- if (thisLastChild === childWrapper) this.lastChild_ = childWrapperPreviousSibling;
- if (childWrapperPreviousSibling) childWrapperPreviousSibling.nextSibling_ = childWrapperNextSibling;
- if (childWrapperNextSibling) {
- childWrapperNextSibling.previousSibling_ = childWrapperPreviousSibling;
- }
- childWrapper.previousSibling_ = childWrapper.nextSibling_ = childWrapper.parentNode_ = undefined;
- } else {
- clearChildNodes(this);
- removeChildOriginalHelper(unsafeUnwrap(this), childNode);
- }
- if (!surpressMutations) {
- enqueueMutation(this, "childList", {
- removedNodes: createOneElementNodeList(childWrapper),
- nextSibling: childWrapperNextSibling,
- previousSibling: childWrapperPreviousSibling
- });
- }
- registerTransientObservers(this, childWrapper);
- return childWrapper;
- },
- replaceChild: function(newChildWrapper, oldChildWrapper) {
- assertIsNodeWrapper(newChildWrapper);
- var oldChildNode;
- if (isWrapper(oldChildWrapper)) {
- oldChildNode = unwrap(oldChildWrapper);
- } else {
- oldChildNode = oldChildWrapper;
- oldChildWrapper = wrap(oldChildNode);
- }
- if (oldChildWrapper.parentNode !== this) {
- throw new Error("NotFoundError");
- }
- var nextNode = oldChildWrapper.nextSibling;
- var previousNode = oldChildWrapper.previousSibling;
- var nodes;
- var useNative = !this.invalidateShadowRenderer() && !invalidateParent(newChildWrapper);
- if (useNative) {
- nodes = collectNodesNative(newChildWrapper);
- } else {
- if (nextNode === newChildWrapper) nextNode = newChildWrapper.nextSibling;
- nodes = collectNodes(newChildWrapper, this, previousNode, nextNode);
- }
- if (!useNative) {
- if (this.firstChild === oldChildWrapper) this.firstChild_ = nodes[0];
- if (this.lastChild === oldChildWrapper) this.lastChild_ = nodes[nodes.length - 1];
- oldChildWrapper.previousSibling_ = oldChildWrapper.nextSibling_ = oldChildWrapper.parentNode_ = undefined;
- if (oldChildNode.parentNode) {
- originalReplaceChild.call(oldChildNode.parentNode, unwrapNodesForInsertion(this, nodes), oldChildNode);
- }
- } else {
- ensureSameOwnerDocument(this, newChildWrapper);
- clearChildNodes(this);
- originalReplaceChild.call(unsafeUnwrap(this), unwrap(newChildWrapper), oldChildNode);
- }
- enqueueMutation(this, "childList", {
- addedNodes: nodes,
- removedNodes: createOneElementNodeList(oldChildWrapper),
- nextSibling: nextNode,
- previousSibling: previousNode
- });
- nodeWasRemoved(oldChildWrapper);
- nodesWereAdded(nodes, this);
- return oldChildWrapper;
- },
- nodeIsInserted_: function() {
- for (var child = this.firstChild; child; child = child.nextSibling) {
- child.nodeIsInserted_();
- }
- },
- hasChildNodes: function() {
- return this.firstChild !== null;
- },
- get parentNode() {
- return this.parentNode_ !== undefined ? this.parentNode_ : wrap(unsafeUnwrap(this).parentNode);
- },
- get firstChild() {
- return this.firstChild_ !== undefined ? this.firstChild_ : wrap(unsafeUnwrap(this).firstChild);
- },
- get lastChild() {
- return this.lastChild_ !== undefined ? this.lastChild_ : wrap(unsafeUnwrap(this).lastChild);
- },
- get nextSibling() {
- return this.nextSibling_ !== undefined ? this.nextSibling_ : wrap(unsafeUnwrap(this).nextSibling);
- },
- get previousSibling() {
- return this.previousSibling_ !== undefined ? this.previousSibling_ : wrap(unsafeUnwrap(this).previousSibling);
- },
- get parentElement() {
- var p = this.parentNode;
- while (p && p.nodeType !== Node.ELEMENT_NODE) {
- p = p.parentNode;
- }
- return p;
- },
- get textContent() {
- var s = "";
- for (var child = this.firstChild; child; child = child.nextSibling) {
- if (child.nodeType != Node.COMMENT_NODE) {
- s += child.textContent;
- }
- }
- return s;
- },
- set textContent(textContent) {
- if (textContent == null) textContent = "";
- var removedNodes = snapshotNodeList(this.childNodes);
- if (this.invalidateShadowRenderer()) {
- removeAllChildNodes(this);
- if (textContent !== "") {
- var textNode = unsafeUnwrap(this).ownerDocument.createTextNode(textContent);
- this.appendChild(textNode);
- }
- } else {
- clearChildNodes(this);
- unsafeUnwrap(this).textContent = textContent;
- }
- var addedNodes = snapshotNodeList(this.childNodes);
- enqueueMutation(this, "childList", {
- addedNodes: addedNodes,
- removedNodes: removedNodes
- });
- nodesWereRemoved(removedNodes);
- nodesWereAdded(addedNodes, this);
- },
- get childNodes() {
- var wrapperList = new NodeList();
- var i = 0;
- for (var child = this.firstChild; child; child = child.nextSibling) {
- wrapperList[i++] = child;
- }
- wrapperList.length = i;
- return wrapperList;
- },
- cloneNode: function(deep) {
- return cloneNode(this, deep);
- },
- contains: function(child) {
- return contains(this, wrapIfNeeded(child));
- },
- compareDocumentPosition: function(otherNode) {
- return originalCompareDocumentPosition.call(unsafeUnwrap(this), unwrapIfNeeded(otherNode));
- },
- isEqualNode: function(otherNode) {
- return originalIsEqualNode.call(unsafeUnwrap(this), unwrapIfNeeded(otherNode));
- },
- normalize: function() {
- var nodes = snapshotNodeList(this.childNodes);
- var remNodes = [];
- var s = "";
- var modNode;
- for (var i = 0, n; i < nodes.length; i++) {
- n = nodes[i];
- if (n.nodeType === Node.TEXT_NODE) {
- if (!modNode && !n.data.length) this.removeChild(n); else if (!modNode) modNode = n; else {
- s += n.data;
- remNodes.push(n);
- }
- } else {
- if (modNode && remNodes.length) {
- modNode.data += s;
- cleanupNodes(remNodes);
- }
- remNodes = [];
- s = "";
- modNode = null;
- if (n.childNodes.length) n.normalize();
- }
- }
- if (modNode && remNodes.length) {
- modNode.data += s;
- cleanupNodes(remNodes);
- }
- }
- });
- defineWrapGetter(Node, "ownerDocument");
- registerWrapper(OriginalNode, Node, document.createDocumentFragment());
- delete Node.prototype.querySelector;
- delete Node.prototype.querySelectorAll;
- Node.prototype = mixin(Object.create(EventTarget.prototype), Node.prototype);
- scope.cloneNode = cloneNode;
- scope.nodeWasAdded = nodeWasAdded;
- scope.nodeWasRemoved = nodeWasRemoved;
- scope.nodesWereAdded = nodesWereAdded;
- scope.nodesWereRemoved = nodesWereRemoved;
- scope.originalInsertBefore = originalInsertBefore;
- scope.originalRemoveChild = originalRemoveChild;
- scope.snapshotNodeList = snapshotNodeList;
- scope.wrappers.Node = Node;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLCollection = scope.wrappers.HTMLCollection;
- var NodeList = scope.wrappers.NodeList;
- var getTreeScope = scope.getTreeScope;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var wrap = scope.wrap;
- var originalDocumentQuerySelector = document.querySelector;
- var originalElementQuerySelector = document.documentElement.querySelector;
- var originalDocumentQuerySelectorAll = document.querySelectorAll;
- var originalElementQuerySelectorAll = document.documentElement.querySelectorAll;
- var originalDocumentGetElementsByTagName = document.getElementsByTagName;
- var originalElementGetElementsByTagName = document.documentElement.getElementsByTagName;
- var originalDocumentGetElementsByTagNameNS = document.getElementsByTagNameNS;
- var originalElementGetElementsByTagNameNS = document.documentElement.getElementsByTagNameNS;
- var OriginalElement = window.Element;
- var OriginalDocument = window.HTMLDocument || window.Document;
- function filterNodeList(list, index, result, deep) {
- var wrappedItem = null;
- var root = null;
- for (var i = 0, length = list.length; i < length; i++) {
- wrappedItem = wrap(list[i]);
- if (!deep && (root = getTreeScope(wrappedItem).root)) {
- if (root instanceof scope.wrappers.ShadowRoot) {
- continue;
- }
- }
- result[index++] = wrappedItem;
- }
- return index;
- }
- function shimSelector(selector) {
- return String(selector).replace(/\/deep\/|::shadow|>>>/g, " ");
- }
- function shimMatchesSelector(selector) {
- return String(selector).replace(/:host\(([^\s]+)\)/g, "$1").replace(/([^\s]):host/g, "$1").replace(":host", "*").replace(/\^|\/shadow\/|\/shadow-deep\/|::shadow|\/deep\/|::content|>>>/g, " ");
- }
- function findOne(node, selector) {
- var m, el = node.firstElementChild;
- while (el) {
- if (el.matches(selector)) return el;
- m = findOne(el, selector);
- if (m) return m;
- el = el.nextElementSibling;
- }
- return null;
- }
- function matchesSelector(el, selector) {
- return el.matches(selector);
- }
- var XHTML_NS = "http://www.w3.org/1999/xhtml";
- function matchesTagName(el, localName, localNameLowerCase) {
- var ln = el.localName;
- return ln === localName || ln === localNameLowerCase && el.namespaceURI === XHTML_NS;
- }
- function matchesEveryThing() {
- return true;
- }
- function matchesLocalNameOnly(el, ns, localName) {
- return el.localName === localName;
- }
- function matchesNameSpace(el, ns) {
- return el.namespaceURI === ns;
- }
- function matchesLocalNameNS(el, ns, localName) {
- return el.namespaceURI === ns && el.localName === localName;
- }
- function findElements(node, index, result, p, arg0, arg1) {
- var el = node.firstElementChild;
- while (el) {
- if (p(el, arg0, arg1)) result[index++] = el;
- index = findElements(el, index, result, p, arg0, arg1);
- el = el.nextElementSibling;
- }
- return index;
- }
- function querySelectorAllFiltered(p, index, result, selector, deep) {
- var target = unsafeUnwrap(this);
- var list;
- var root = getTreeScope(this).root;
- if (root instanceof scope.wrappers.ShadowRoot) {
- return findElements(this, index, result, p, selector, null);
- } else if (target instanceof OriginalElement) {
- list = originalElementQuerySelectorAll.call(target, selector);
- } else if (target instanceof OriginalDocument) {
- list = originalDocumentQuerySelectorAll.call(target, selector);
- } else {
- return findElements(this, index, result, p, selector, null);
- }
- return filterNodeList(list, index, result, deep);
- }
- var SelectorsInterface = {
- querySelector: function(selector) {
- var shimmed = shimSelector(selector);
- var deep = shimmed !== selector;
- selector = shimmed;
- var target = unsafeUnwrap(this);
- var wrappedItem;
- var root = getTreeScope(this).root;
- if (root instanceof scope.wrappers.ShadowRoot) {
- return findOne(this, selector);
- } else if (target instanceof OriginalElement) {
- wrappedItem = wrap(originalElementQuerySelector.call(target, selector));
- } else if (target instanceof OriginalDocument) {
- wrappedItem = wrap(originalDocumentQuerySelector.call(target, selector));
- } else {
- return findOne(this, selector);
- }
- if (!wrappedItem) {
- return wrappedItem;
- } else if (!deep && (root = getTreeScope(wrappedItem).root)) {
- if (root instanceof scope.wrappers.ShadowRoot) {
- return findOne(this, selector);
- }
- }
- return wrappedItem;
- },
- querySelectorAll: function(selector) {
- var shimmed = shimSelector(selector);
- var deep = shimmed !== selector;
- selector = shimmed;
- var result = new NodeList();
- result.length = querySelectorAllFiltered.call(this, matchesSelector, 0, result, selector, deep);
- return result;
- }
- };
- var MatchesInterface = {
- matches: function(selector) {
- selector = shimMatchesSelector(selector);
- return scope.originalMatches.call(unsafeUnwrap(this), selector);
- }
- };
- function getElementsByTagNameFiltered(p, index, result, localName, lowercase) {
- var target = unsafeUnwrap(this);
- var list;
- var root = getTreeScope(this).root;
- if (root instanceof scope.wrappers.ShadowRoot) {
- return findElements(this, index, result, p, localName, lowercase);
- } else if (target instanceof OriginalElement) {
- list = originalElementGetElementsByTagName.call(target, localName, lowercase);
- } else if (target instanceof OriginalDocument) {
- list = originalDocumentGetElementsByTagName.call(target, localName, lowercase);
- } else {
- return findElements(this, index, result, p, localName, lowercase);
- }
- return filterNodeList(list, index, result, false);
- }
- function getElementsByTagNameNSFiltered(p, index, result, ns, localName) {
- var target = unsafeUnwrap(this);
- var list;
- var root = getTreeScope(this).root;
- if (root instanceof scope.wrappers.ShadowRoot) {
- return findElements(this, index, result, p, ns, localName);
- } else if (target instanceof OriginalElement) {
- list = originalElementGetElementsByTagNameNS.call(target, ns, localName);
- } else if (target instanceof OriginalDocument) {
- list = originalDocumentGetElementsByTagNameNS.call(target, ns, localName);
- } else {
- return findElements(this, index, result, p, ns, localName);
- }
- return filterNodeList(list, index, result, false);
- }
- var GetElementsByInterface = {
- getElementsByTagName: function(localName) {
- var result = new HTMLCollection();
- var match = localName === "*" ? matchesEveryThing : matchesTagName;
- result.length = getElementsByTagNameFiltered.call(this, match, 0, result, localName, localName.toLowerCase());
- return result;
- },
- getElementsByClassName: function(className) {
- return this.querySelectorAll("." + className);
- },
- getElementsByTagNameNS: function(ns, localName) {
- var result = new HTMLCollection();
- var match = null;
- if (ns === "*") {
- match = localName === "*" ? matchesEveryThing : matchesLocalNameOnly;
- } else {
- match = localName === "*" ? matchesNameSpace : matchesLocalNameNS;
- }
- result.length = getElementsByTagNameNSFiltered.call(this, match, 0, result, ns || null, localName);
- return result;
- }
- };
- scope.GetElementsByInterface = GetElementsByInterface;
- scope.SelectorsInterface = SelectorsInterface;
- scope.MatchesInterface = MatchesInterface;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var NodeList = scope.wrappers.NodeList;
- function forwardElement(node) {
- while (node && node.nodeType !== Node.ELEMENT_NODE) {
- node = node.nextSibling;
- }
- return node;
- }
- function backwardsElement(node) {
- while (node && node.nodeType !== Node.ELEMENT_NODE) {
- node = node.previousSibling;
- }
- return node;
- }
- var ParentNodeInterface = {
- get firstElementChild() {
- return forwardElement(this.firstChild);
- },
- get lastElementChild() {
- return backwardsElement(this.lastChild);
- },
- get childElementCount() {
- var count = 0;
- for (var child = this.firstElementChild; child; child = child.nextElementSibling) {
- count++;
- }
- return count;
- },
- get children() {
- var wrapperList = new NodeList();
- var i = 0;
- for (var child = this.firstElementChild; child; child = child.nextElementSibling) {
- wrapperList[i++] = child;
- }
- wrapperList.length = i;
- return wrapperList;
- },
- remove: function() {
- var p = this.parentNode;
- if (p) p.removeChild(this);
- }
- };
- var ChildNodeInterface = {
- get nextElementSibling() {
- return forwardElement(this.nextSibling);
- },
- get previousElementSibling() {
- return backwardsElement(this.previousSibling);
- }
- };
- var NonElementParentNodeInterface = {
- getElementById: function(id) {
- if (/[ \t\n\r\f]/.test(id)) return null;
- return this.querySelector('[id="' + id + '"]');
- }
- };
- scope.ChildNodeInterface = ChildNodeInterface;
- scope.NonElementParentNodeInterface = NonElementParentNodeInterface;
- scope.ParentNodeInterface = ParentNodeInterface;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var ChildNodeInterface = scope.ChildNodeInterface;
- var Node = scope.wrappers.Node;
- var enqueueMutation = scope.enqueueMutation;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var OriginalCharacterData = window.CharacterData;
- function CharacterData(node) {
- Node.call(this, node);
- }
- CharacterData.prototype = Object.create(Node.prototype);
- mixin(CharacterData.prototype, {
- get nodeValue() {
- return this.data;
- },
- set nodeValue(data) {
- this.data = data;
- },
- get textContent() {
- return this.data;
- },
- set textContent(value) {
- this.data = value;
- },
- get data() {
- return unsafeUnwrap(this).data;
- },
- set data(value) {
- var oldValue = unsafeUnwrap(this).data;
- enqueueMutation(this, "characterData", {
- oldValue: oldValue
- });
- unsafeUnwrap(this).data = value;
- }
- });
- mixin(CharacterData.prototype, ChildNodeInterface);
- registerWrapper(OriginalCharacterData, CharacterData, document.createTextNode(""));
- scope.wrappers.CharacterData = CharacterData;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var CharacterData = scope.wrappers.CharacterData;
- var enqueueMutation = scope.enqueueMutation;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- function toUInt32(x) {
- return x >>> 0;
- }
- var OriginalText = window.Text;
- function Text(node) {
- CharacterData.call(this, node);
- }
- Text.prototype = Object.create(CharacterData.prototype);
- mixin(Text.prototype, {
- splitText: function(offset) {
- offset = toUInt32(offset);
- var s = this.data;
- if (offset > s.length) throw new Error("IndexSizeError");
- var head = s.slice(0, offset);
- var tail = s.slice(offset);
- this.data = head;
- var newTextNode = this.ownerDocument.createTextNode(tail);
- if (this.parentNode) this.parentNode.insertBefore(newTextNode, this.nextSibling);
- return newTextNode;
- }
- });
- registerWrapper(OriginalText, Text, document.createTextNode(""));
- scope.wrappers.Text = Text;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- if (!window.DOMTokenList) {
- console.warn("Missing DOMTokenList prototype, please include a " + "compatible classList polyfill such as http://goo.gl/uTcepH.");
- return;
- }
- var unsafeUnwrap = scope.unsafeUnwrap;
- var enqueueMutation = scope.enqueueMutation;
- function getClass(el) {
- return unsafeUnwrap(el).getAttribute("class");
- }
- function enqueueClassAttributeChange(el, oldValue) {
- enqueueMutation(el, "attributes", {
- name: "class",
- namespace: null,
- oldValue: oldValue
- });
- }
- function invalidateClass(el) {
- scope.invalidateRendererBasedOnAttribute(el, "class");
- }
- function changeClass(tokenList, method, args) {
- var ownerElement = tokenList.ownerElement_;
- if (ownerElement == null) {
- return method.apply(tokenList, args);
- }
- var oldValue = getClass(ownerElement);
- var retv = method.apply(tokenList, args);
- if (getClass(ownerElement) !== oldValue) {
- enqueueClassAttributeChange(ownerElement, oldValue);
- invalidateClass(ownerElement);
- }
- return retv;
- }
- var oldAdd = DOMTokenList.prototype.add;
- DOMTokenList.prototype.add = function() {
- changeClass(this, oldAdd, arguments);
- };
- var oldRemove = DOMTokenList.prototype.remove;
- DOMTokenList.prototype.remove = function() {
- changeClass(this, oldRemove, arguments);
- };
- var oldToggle = DOMTokenList.prototype.toggle;
- DOMTokenList.prototype.toggle = function() {
- return changeClass(this, oldToggle, arguments);
- };
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var ChildNodeInterface = scope.ChildNodeInterface;
- var GetElementsByInterface = scope.GetElementsByInterface;
- var Node = scope.wrappers.Node;
- var ParentNodeInterface = scope.ParentNodeInterface;
- var SelectorsInterface = scope.SelectorsInterface;
- var MatchesInterface = scope.MatchesInterface;
- var addWrapNodeListMethod = scope.addWrapNodeListMethod;
- var enqueueMutation = scope.enqueueMutation;
- var mixin = scope.mixin;
- var oneOf = scope.oneOf;
- var registerWrapper = scope.registerWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var wrappers = scope.wrappers;
- var OriginalElement = window.Element;
- var matchesNames = [ "matches", "mozMatchesSelector", "msMatchesSelector", "webkitMatchesSelector" ].filter(function(name) {
- return OriginalElement.prototype[name];
- });
- var matchesName = matchesNames[0];
- var originalMatches = OriginalElement.prototype[matchesName];
- function invalidateRendererBasedOnAttribute(element, name) {
- var p = element.parentNode;
- if (!p || !p.shadowRoot) return;
- var renderer = scope.getRendererForHost(p);
- if (renderer.dependsOnAttribute(name)) renderer.invalidate();
- }
- function enqueAttributeChange(element, name, oldValue) {
- enqueueMutation(element, "attributes", {
- name: name,
- namespace: null,
- oldValue: oldValue
- });
- }
- var classListTable = new WeakMap();
- function Element(node) {
- Node.call(this, node);
- }
- Element.prototype = Object.create(Node.prototype);
- mixin(Element.prototype, {
- createShadowRoot: function() {
- var newShadowRoot = new wrappers.ShadowRoot(this);
- unsafeUnwrap(this).polymerShadowRoot_ = newShadowRoot;
- var renderer = scope.getRendererForHost(this);
- renderer.invalidate();
- return newShadowRoot;
- },
- get shadowRoot() {
- return unsafeUnwrap(this).polymerShadowRoot_ || null;
- },
- setAttribute: function(name, value) {
- var oldValue = unsafeUnwrap(this).getAttribute(name);
- unsafeUnwrap(this).setAttribute(name, value);
- enqueAttributeChange(this, name, oldValue);
- invalidateRendererBasedOnAttribute(this, name);
- },
- removeAttribute: function(name) {
- var oldValue = unsafeUnwrap(this).getAttribute(name);
- unsafeUnwrap(this).removeAttribute(name);
- enqueAttributeChange(this, name, oldValue);
- invalidateRendererBasedOnAttribute(this, name);
- },
- get classList() {
- var list = classListTable.get(this);
- if (!list) {
- list = unsafeUnwrap(this).classList;
- if (!list) return;
- list.ownerElement_ = this;
- classListTable.set(this, list);
- }
- return list;
- },
- get className() {
- return unsafeUnwrap(this).className;
- },
- set className(v) {
- this.setAttribute("class", v);
- },
- get id() {
- return unsafeUnwrap(this).id;
- },
- set id(v) {
- this.setAttribute("id", v);
- }
- });
- matchesNames.forEach(function(name) {
- if (name !== "matches") {
- Element.prototype[name] = function(selector) {
- return this.matches(selector);
- };
- }
- });
- if (OriginalElement.prototype.webkitCreateShadowRoot) {
- Element.prototype.webkitCreateShadowRoot = Element.prototype.createShadowRoot;
- }
- mixin(Element.prototype, ChildNodeInterface);
- mixin(Element.prototype, GetElementsByInterface);
- mixin(Element.prototype, ParentNodeInterface);
- mixin(Element.prototype, SelectorsInterface);
- mixin(Element.prototype, MatchesInterface);
- registerWrapper(OriginalElement, Element, document.createElementNS(null, "x"));
- scope.invalidateRendererBasedOnAttribute = invalidateRendererBasedOnAttribute;
- scope.matchesNames = matchesNames;
- scope.originalMatches = originalMatches;
- scope.wrappers.Element = Element;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var Element = scope.wrappers.Element;
- var defineGetter = scope.defineGetter;
- var enqueueMutation = scope.enqueueMutation;
- var mixin = scope.mixin;
- var nodesWereAdded = scope.nodesWereAdded;
- var nodesWereRemoved = scope.nodesWereRemoved;
- var registerWrapper = scope.registerWrapper;
- var snapshotNodeList = scope.snapshotNodeList;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var wrappers = scope.wrappers;
- var escapeAttrRegExp = /[&\u00A0"]/g;
- var escapeDataRegExp = /[&\u00A0<>]/g;
- function escapeReplace(c) {
- switch (c) {
- case "&":
- return "&";
-
- case "<":
- return "<";
-
- case ">":
- return ">";
-
- case '"':
- return """;
-
- case "Â ":
- return " ";
- }
- }
- function escapeAttr(s) {
- return s.replace(escapeAttrRegExp, escapeReplace);
- }
- function escapeData(s) {
- return s.replace(escapeDataRegExp, escapeReplace);
- }
- function makeSet(arr) {
- var set = {};
- for (var i = 0; i < arr.length; i++) {
- set[arr[i]] = true;
- }
- return set;
- }
- var voidElements = makeSet([ "area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr" ]);
- var plaintextParents = makeSet([ "style", "script", "xmp", "iframe", "noembed", "noframes", "plaintext", "noscript" ]);
- var XHTML_NS = "http://www.w3.org/1999/xhtml";
- function needsSelfClosingSlash(node) {
- if (node.namespaceURI !== XHTML_NS) return true;
- var doctype = node.ownerDocument.doctype;
- return doctype && doctype.publicId && doctype.systemId;
- }
- function getOuterHTML(node, parentNode) {
- switch (node.nodeType) {
- case Node.ELEMENT_NODE:
- var tagName = node.tagName.toLowerCase();
- var s = "<" + tagName;
- var attrs = node.attributes;
- for (var i = 0, attr; attr = attrs[i]; i++) {
- s += " " + attr.name + '="' + escapeAttr(attr.value) + '"';
- }
- if (voidElements[tagName]) {
- if (needsSelfClosingSlash(node)) s += "/";
- return s + ">";
- }
- return s + ">" + getInnerHTML(node) + "" + tagName + ">";
-
- case Node.TEXT_NODE:
- var data = node.data;
- if (parentNode && plaintextParents[parentNode.localName]) return data;
- return escapeData(data);
-
- case Node.COMMENT_NODE:
- return "";
-
- default:
- console.error(node);
- throw new Error("not implemented");
- }
- }
- function getInnerHTML(node) {
- if (node instanceof wrappers.HTMLTemplateElement) node = node.content;
- var s = "";
- for (var child = node.firstChild; child; child = child.nextSibling) {
- s += getOuterHTML(child, node);
- }
- return s;
- }
- function setInnerHTML(node, value, opt_tagName) {
- var tagName = opt_tagName || "div";
- node.textContent = "";
- var tempElement = unwrap(node.ownerDocument.createElement(tagName));
- tempElement.innerHTML = value;
- var firstChild;
- while (firstChild = tempElement.firstChild) {
- node.appendChild(wrap(firstChild));
- }
- }
- var oldIe = /MSIE/.test(navigator.userAgent);
- var OriginalHTMLElement = window.HTMLElement;
- var OriginalHTMLTemplateElement = window.HTMLTemplateElement;
- function HTMLElement(node) {
- Element.call(this, node);
- }
- HTMLElement.prototype = Object.create(Element.prototype);
- mixin(HTMLElement.prototype, {
- get innerHTML() {
- return getInnerHTML(this);
- },
- set innerHTML(value) {
- if (oldIe && plaintextParents[this.localName]) {
- this.textContent = value;
- return;
- }
- var removedNodes = snapshotNodeList(this.childNodes);
- if (this.invalidateShadowRenderer()) {
- if (this instanceof wrappers.HTMLTemplateElement) setInnerHTML(this.content, value); else setInnerHTML(this, value, this.tagName);
- } else if (!OriginalHTMLTemplateElement && this instanceof wrappers.HTMLTemplateElement) {
- setInnerHTML(this.content, value);
- } else {
- unsafeUnwrap(this).innerHTML = value;
- }
- var addedNodes = snapshotNodeList(this.childNodes);
- enqueueMutation(this, "childList", {
- addedNodes: addedNodes,
- removedNodes: removedNodes
- });
- nodesWereRemoved(removedNodes);
- nodesWereAdded(addedNodes, this);
- },
- get outerHTML() {
- return getOuterHTML(this, this.parentNode);
- },
- set outerHTML(value) {
- var p = this.parentNode;
- if (p) {
- p.invalidateShadowRenderer();
- var df = frag(p, value);
- p.replaceChild(df, this);
- }
- },
- insertAdjacentHTML: function(position, text) {
- var contextElement, refNode;
- switch (String(position).toLowerCase()) {
- case "beforebegin":
- contextElement = this.parentNode;
- refNode = this;
- break;
-
- case "afterend":
- contextElement = this.parentNode;
- refNode = this.nextSibling;
- break;
-
- case "afterbegin":
- contextElement = this;
- refNode = this.firstChild;
- break;
-
- case "beforeend":
- contextElement = this;
- refNode = null;
- break;
-
- default:
- return;
- }
- var df = frag(contextElement, text);
- contextElement.insertBefore(df, refNode);
- },
- get hidden() {
- return this.hasAttribute("hidden");
- },
- set hidden(v) {
- if (v) {
- this.setAttribute("hidden", "");
- } else {
- this.removeAttribute("hidden");
- }
- }
- });
- function frag(contextElement, html) {
- var p = unwrap(contextElement.cloneNode(false));
- p.innerHTML = html;
- var df = unwrap(document.createDocumentFragment());
- var c;
- while (c = p.firstChild) {
- df.appendChild(c);
- }
- return wrap(df);
- }
- function getter(name) {
- return function() {
- scope.renderAllPending();
- return unsafeUnwrap(this)[name];
- };
- }
- function getterRequiresRendering(name) {
- defineGetter(HTMLElement, name, getter(name));
- }
- [ "clientHeight", "clientLeft", "clientTop", "clientWidth", "offsetHeight", "offsetLeft", "offsetTop", "offsetWidth", "scrollHeight", "scrollWidth" ].forEach(getterRequiresRendering);
- function getterAndSetterRequiresRendering(name) {
- Object.defineProperty(HTMLElement.prototype, name, {
- get: getter(name),
- set: function(v) {
- scope.renderAllPending();
- unsafeUnwrap(this)[name] = v;
- },
- configurable: true,
- enumerable: true
- });
- }
- [ "scrollLeft", "scrollTop" ].forEach(getterAndSetterRequiresRendering);
- function methodRequiresRendering(name) {
- Object.defineProperty(HTMLElement.prototype, name, {
- value: function() {
- scope.renderAllPending();
- return unsafeUnwrap(this)[name].apply(unsafeUnwrap(this), arguments);
- },
- configurable: true,
- enumerable: true
- });
- }
- [ "getBoundingClientRect", "getClientRects", "scrollIntoView" ].forEach(methodRequiresRendering);
- registerWrapper(OriginalHTMLElement, HTMLElement, document.createElement("b"));
- scope.wrappers.HTMLElement = HTMLElement;
- scope.getInnerHTML = getInnerHTML;
- scope.setInnerHTML = setInnerHTML;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var wrap = scope.wrap;
- var OriginalHTMLCanvasElement = window.HTMLCanvasElement;
- function HTMLCanvasElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLCanvasElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLCanvasElement.prototype, {
- getContext: function() {
- var context = unsafeUnwrap(this).getContext.apply(unsafeUnwrap(this), arguments);
- return context && wrap(context);
- }
- });
- registerWrapper(OriginalHTMLCanvasElement, HTMLCanvasElement, document.createElement("canvas"));
- scope.wrappers.HTMLCanvasElement = HTMLCanvasElement;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var OriginalHTMLContentElement = window.HTMLContentElement;
- function HTMLContentElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLContentElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLContentElement.prototype, {
- constructor: HTMLContentElement,
- get select() {
- return this.getAttribute("select");
- },
- set select(value) {
- this.setAttribute("select", value);
- },
- setAttribute: function(n, v) {
- HTMLElement.prototype.setAttribute.call(this, n, v);
- if (String(n).toLowerCase() === "select") this.invalidateShadowRenderer(true);
- }
- });
- if (OriginalHTMLContentElement) registerWrapper(OriginalHTMLContentElement, HTMLContentElement);
- scope.wrappers.HTMLContentElement = HTMLContentElement;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var wrapHTMLCollection = scope.wrapHTMLCollection;
- var unwrap = scope.unwrap;
- var OriginalHTMLFormElement = window.HTMLFormElement;
- function HTMLFormElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLFormElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLFormElement.prototype, {
- get elements() {
- return wrapHTMLCollection(unwrap(this).elements);
- }
- });
- registerWrapper(OriginalHTMLFormElement, HTMLFormElement, document.createElement("form"));
- scope.wrappers.HTMLFormElement = HTMLFormElement;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var registerWrapper = scope.registerWrapper;
- var unwrap = scope.unwrap;
- var rewrap = scope.rewrap;
- var OriginalHTMLImageElement = window.HTMLImageElement;
- function HTMLImageElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLImageElement.prototype = Object.create(HTMLElement.prototype);
- registerWrapper(OriginalHTMLImageElement, HTMLImageElement, document.createElement("img"));
- function Image(width, height) {
- if (!(this instanceof Image)) {
- throw new TypeError("DOM object constructor cannot be called as a function.");
- }
- var node = unwrap(document.createElement("img"));
- HTMLElement.call(this, node);
- rewrap(node, this);
- if (width !== undefined) node.width = width;
- if (height !== undefined) node.height = height;
- }
- Image.prototype = HTMLImageElement.prototype;
- scope.wrappers.HTMLImageElement = HTMLImageElement;
- scope.wrappers.Image = Image;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var NodeList = scope.wrappers.NodeList;
- var registerWrapper = scope.registerWrapper;
- var OriginalHTMLShadowElement = window.HTMLShadowElement;
- function HTMLShadowElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLShadowElement.prototype = Object.create(HTMLElement.prototype);
- HTMLShadowElement.prototype.constructor = HTMLShadowElement;
- if (OriginalHTMLShadowElement) registerWrapper(OriginalHTMLShadowElement, HTMLShadowElement);
- scope.wrappers.HTMLShadowElement = HTMLShadowElement;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var contentTable = new WeakMap();
- var templateContentsOwnerTable = new WeakMap();
- function getTemplateContentsOwner(doc) {
- if (!doc.defaultView) return doc;
- var d = templateContentsOwnerTable.get(doc);
- if (!d) {
- d = doc.implementation.createHTMLDocument("");
- while (d.lastChild) {
- d.removeChild(d.lastChild);
- }
- templateContentsOwnerTable.set(doc, d);
- }
- return d;
- }
- function extractContent(templateElement) {
- var doc = getTemplateContentsOwner(templateElement.ownerDocument);
- var df = unwrap(doc.createDocumentFragment());
- var child;
- while (child = templateElement.firstChild) {
- df.appendChild(child);
- }
- return df;
- }
- var OriginalHTMLTemplateElement = window.HTMLTemplateElement;
- function HTMLTemplateElement(node) {
- HTMLElement.call(this, node);
- if (!OriginalHTMLTemplateElement) {
- var content = extractContent(node);
- contentTable.set(this, wrap(content));
- }
- }
- HTMLTemplateElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLTemplateElement.prototype, {
- constructor: HTMLTemplateElement,
- get content() {
- if (OriginalHTMLTemplateElement) return wrap(unsafeUnwrap(this).content);
- return contentTable.get(this);
- }
- });
- if (OriginalHTMLTemplateElement) registerWrapper(OriginalHTMLTemplateElement, HTMLTemplateElement);
- scope.wrappers.HTMLTemplateElement = HTMLTemplateElement;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var registerWrapper = scope.registerWrapper;
- var OriginalHTMLMediaElement = window.HTMLMediaElement;
- if (!OriginalHTMLMediaElement) return;
- function HTMLMediaElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLMediaElement.prototype = Object.create(HTMLElement.prototype);
- registerWrapper(OriginalHTMLMediaElement, HTMLMediaElement, document.createElement("audio"));
- scope.wrappers.HTMLMediaElement = HTMLMediaElement;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLMediaElement = scope.wrappers.HTMLMediaElement;
- var registerWrapper = scope.registerWrapper;
- var unwrap = scope.unwrap;
- var rewrap = scope.rewrap;
- var OriginalHTMLAudioElement = window.HTMLAudioElement;
- if (!OriginalHTMLAudioElement) return;
- function HTMLAudioElement(node) {
- HTMLMediaElement.call(this, node);
- }
- HTMLAudioElement.prototype = Object.create(HTMLMediaElement.prototype);
- registerWrapper(OriginalHTMLAudioElement, HTMLAudioElement, document.createElement("audio"));
- function Audio(src) {
- if (!(this instanceof Audio)) {
- throw new TypeError("DOM object constructor cannot be called as a function.");
- }
- var node = unwrap(document.createElement("audio"));
- HTMLMediaElement.call(this, node);
- rewrap(node, this);
- node.setAttribute("preload", "auto");
- if (src !== undefined) node.setAttribute("src", src);
- }
- Audio.prototype = HTMLAudioElement.prototype;
- scope.wrappers.HTMLAudioElement = HTMLAudioElement;
- scope.wrappers.Audio = Audio;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var rewrap = scope.rewrap;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var OriginalHTMLOptionElement = window.HTMLOptionElement;
- function trimText(s) {
- return s.replace(/\s+/g, " ").trim();
- }
- function HTMLOptionElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLOptionElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLOptionElement.prototype, {
- get text() {
- return trimText(this.textContent);
- },
- set text(value) {
- this.textContent = trimText(String(value));
- },
- get form() {
- return wrap(unwrap(this).form);
- }
- });
- registerWrapper(OriginalHTMLOptionElement, HTMLOptionElement, document.createElement("option"));
- function Option(text, value, defaultSelected, selected) {
- if (!(this instanceof Option)) {
- throw new TypeError("DOM object constructor cannot be called as a function.");
- }
- var node = unwrap(document.createElement("option"));
- HTMLElement.call(this, node);
- rewrap(node, this);
- if (text !== undefined) node.text = text;
- if (value !== undefined) node.setAttribute("value", value);
- if (defaultSelected === true) node.setAttribute("selected", "");
- node.selected = selected === true;
- }
- Option.prototype = HTMLOptionElement.prototype;
- scope.wrappers.HTMLOptionElement = HTMLOptionElement;
- scope.wrappers.Option = Option;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var OriginalHTMLSelectElement = window.HTMLSelectElement;
- function HTMLSelectElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLSelectElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLSelectElement.prototype, {
- add: function(element, before) {
- if (typeof before === "object") before = unwrap(before);
- unwrap(this).add(unwrap(element), before);
- },
- remove: function(indexOrNode) {
- if (indexOrNode === undefined) {
- HTMLElement.prototype.remove.call(this);
- return;
- }
- if (typeof indexOrNode === "object") indexOrNode = unwrap(indexOrNode);
- unwrap(this).remove(indexOrNode);
- },
- get form() {
- return wrap(unwrap(this).form);
- }
- });
- registerWrapper(OriginalHTMLSelectElement, HTMLSelectElement, document.createElement("select"));
- scope.wrappers.HTMLSelectElement = HTMLSelectElement;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var wrapHTMLCollection = scope.wrapHTMLCollection;
- var OriginalHTMLTableElement = window.HTMLTableElement;
- function HTMLTableElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLTableElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLTableElement.prototype, {
- get caption() {
- return wrap(unwrap(this).caption);
- },
- createCaption: function() {
- return wrap(unwrap(this).createCaption());
- },
- get tHead() {
- return wrap(unwrap(this).tHead);
- },
- createTHead: function() {
- return wrap(unwrap(this).createTHead());
- },
- createTFoot: function() {
- return wrap(unwrap(this).createTFoot());
- },
- get tFoot() {
- return wrap(unwrap(this).tFoot);
- },
- get tBodies() {
- return wrapHTMLCollection(unwrap(this).tBodies);
- },
- createTBody: function() {
- return wrap(unwrap(this).createTBody());
- },
- get rows() {
- return wrapHTMLCollection(unwrap(this).rows);
- },
- insertRow: function(index) {
- return wrap(unwrap(this).insertRow(index));
- }
- });
- registerWrapper(OriginalHTMLTableElement, HTMLTableElement, document.createElement("table"));
- scope.wrappers.HTMLTableElement = HTMLTableElement;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var wrapHTMLCollection = scope.wrapHTMLCollection;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var OriginalHTMLTableSectionElement = window.HTMLTableSectionElement;
- function HTMLTableSectionElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLTableSectionElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLTableSectionElement.prototype, {
- constructor: HTMLTableSectionElement,
- get rows() {
- return wrapHTMLCollection(unwrap(this).rows);
- },
- insertRow: function(index) {
- return wrap(unwrap(this).insertRow(index));
- }
- });
- registerWrapper(OriginalHTMLTableSectionElement, HTMLTableSectionElement, document.createElement("thead"));
- scope.wrappers.HTMLTableSectionElement = HTMLTableSectionElement;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var wrapHTMLCollection = scope.wrapHTMLCollection;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var OriginalHTMLTableRowElement = window.HTMLTableRowElement;
- function HTMLTableRowElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLTableRowElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLTableRowElement.prototype, {
- get cells() {
- return wrapHTMLCollection(unwrap(this).cells);
- },
- insertCell: function(index) {
- return wrap(unwrap(this).insertCell(index));
- }
- });
- registerWrapper(OriginalHTMLTableRowElement, HTMLTableRowElement, document.createElement("tr"));
- scope.wrappers.HTMLTableRowElement = HTMLTableRowElement;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLContentElement = scope.wrappers.HTMLContentElement;
- var HTMLElement = scope.wrappers.HTMLElement;
- var HTMLShadowElement = scope.wrappers.HTMLShadowElement;
- var HTMLTemplateElement = scope.wrappers.HTMLTemplateElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var OriginalHTMLUnknownElement = window.HTMLUnknownElement;
- function HTMLUnknownElement(node) {
- switch (node.localName) {
- case "content":
- return new HTMLContentElement(node);
-
- case "shadow":
- return new HTMLShadowElement(node);
-
- case "template":
- return new HTMLTemplateElement(node);
- }
- HTMLElement.call(this, node);
- }
- HTMLUnknownElement.prototype = Object.create(HTMLElement.prototype);
- registerWrapper(OriginalHTMLUnknownElement, HTMLUnknownElement);
- scope.wrappers.HTMLUnknownElement = HTMLUnknownElement;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var Element = scope.wrappers.Element;
- var HTMLElement = scope.wrappers.HTMLElement;
- var registerObject = scope.registerObject;
- var defineWrapGetter = scope.defineWrapGetter;
- var SVG_NS = "http://www.w3.org/2000/svg";
- var svgTitleElement = document.createElementNS(SVG_NS, "title");
- var SVGTitleElement = registerObject(svgTitleElement);
- var SVGElement = Object.getPrototypeOf(SVGTitleElement.prototype).constructor;
- if (!("classList" in svgTitleElement)) {
- var descr = Object.getOwnPropertyDescriptor(Element.prototype, "classList");
- Object.defineProperty(HTMLElement.prototype, "classList", descr);
- delete Element.prototype.classList;
- }
- defineWrapGetter(SVGElement, "ownerSVGElement");
- scope.wrappers.SVGElement = SVGElement;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var OriginalSVGUseElement = window.SVGUseElement;
- var SVG_NS = "http://www.w3.org/2000/svg";
- var gWrapper = wrap(document.createElementNS(SVG_NS, "g"));
- var useElement = document.createElementNS(SVG_NS, "use");
- var SVGGElement = gWrapper.constructor;
- var parentInterfacePrototype = Object.getPrototypeOf(SVGGElement.prototype);
- var parentInterface = parentInterfacePrototype.constructor;
- function SVGUseElement(impl) {
- parentInterface.call(this, impl);
- }
- SVGUseElement.prototype = Object.create(parentInterfacePrototype);
- if ("instanceRoot" in useElement) {
- mixin(SVGUseElement.prototype, {
- get instanceRoot() {
- return wrap(unwrap(this).instanceRoot);
- },
- get animatedInstanceRoot() {
- return wrap(unwrap(this).animatedInstanceRoot);
- }
- });
- }
- registerWrapper(OriginalSVGUseElement, SVGUseElement, useElement);
- scope.wrappers.SVGUseElement = SVGUseElement;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var EventTarget = scope.wrappers.EventTarget;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var wrap = scope.wrap;
- var OriginalSVGElementInstance = window.SVGElementInstance;
- if (!OriginalSVGElementInstance) return;
- function SVGElementInstance(impl) {
- EventTarget.call(this, impl);
- }
- SVGElementInstance.prototype = Object.create(EventTarget.prototype);
- mixin(SVGElementInstance.prototype, {
- get correspondingElement() {
- return wrap(unsafeUnwrap(this).correspondingElement);
- },
- get correspondingUseElement() {
- return wrap(unsafeUnwrap(this).correspondingUseElement);
- },
- get parentNode() {
- return wrap(unsafeUnwrap(this).parentNode);
- },
- get childNodes() {
- throw new Error("Not implemented");
- },
- get firstChild() {
- return wrap(unsafeUnwrap(this).firstChild);
- },
- get lastChild() {
- return wrap(unsafeUnwrap(this).lastChild);
- },
- get previousSibling() {
- return wrap(unsafeUnwrap(this).previousSibling);
- },
- get nextSibling() {
- return wrap(unsafeUnwrap(this).nextSibling);
- }
- });
- registerWrapper(OriginalSVGElementInstance, SVGElementInstance);
- scope.wrappers.SVGElementInstance = SVGElementInstance;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var wrap = scope.wrap;
- var OriginalCanvasRenderingContext2D = window.CanvasRenderingContext2D;
- function CanvasRenderingContext2D(impl) {
- setWrapper(impl, this);
- }
- mixin(CanvasRenderingContext2D.prototype, {
- get canvas() {
- return wrap(unsafeUnwrap(this).canvas);
- },
- drawImage: function() {
- arguments[0] = unwrapIfNeeded(arguments[0]);
- unsafeUnwrap(this).drawImage.apply(unsafeUnwrap(this), arguments);
- },
- createPattern: function() {
- arguments[0] = unwrap(arguments[0]);
- return unsafeUnwrap(this).createPattern.apply(unsafeUnwrap(this), arguments);
- }
- });
- registerWrapper(OriginalCanvasRenderingContext2D, CanvasRenderingContext2D, document.createElement("canvas").getContext("2d"));
- scope.wrappers.CanvasRenderingContext2D = CanvasRenderingContext2D;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var wrap = scope.wrap;
- var OriginalWebGLRenderingContext = window.WebGLRenderingContext;
- if (!OriginalWebGLRenderingContext) return;
- function WebGLRenderingContext(impl) {
- setWrapper(impl, this);
- }
- mixin(WebGLRenderingContext.prototype, {
- get canvas() {
- return wrap(unsafeUnwrap(this).canvas);
- },
- texImage2D: function() {
- arguments[5] = unwrapIfNeeded(arguments[5]);
- unsafeUnwrap(this).texImage2D.apply(unsafeUnwrap(this), arguments);
- },
- texSubImage2D: function() {
- arguments[6] = unwrapIfNeeded(arguments[6]);
- unsafeUnwrap(this).texSubImage2D.apply(unsafeUnwrap(this), arguments);
- }
- });
- var instanceProperties = /WebKit/.test(navigator.userAgent) ? {
- drawingBufferHeight: null,
- drawingBufferWidth: null
- } : {};
- registerWrapper(OriginalWebGLRenderingContext, WebGLRenderingContext, instanceProperties);
- scope.wrappers.WebGLRenderingContext = WebGLRenderingContext;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var GetElementsByInterface = scope.GetElementsByInterface;
- var NonElementParentNodeInterface = scope.NonElementParentNodeInterface;
- var ParentNodeInterface = scope.ParentNodeInterface;
- var SelectorsInterface = scope.SelectorsInterface;
- var mixin = scope.mixin;
- var registerObject = scope.registerObject;
- var DocumentFragment = registerObject(document.createDocumentFragment());
- mixin(DocumentFragment.prototype, ParentNodeInterface);
- mixin(DocumentFragment.prototype, SelectorsInterface);
- mixin(DocumentFragment.prototype, GetElementsByInterface);
- mixin(DocumentFragment.prototype, NonElementParentNodeInterface);
- var Comment = registerObject(document.createComment(""));
- scope.wrappers.Comment = Comment;
- scope.wrappers.DocumentFragment = DocumentFragment;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var DocumentFragment = scope.wrappers.DocumentFragment;
- var TreeScope = scope.TreeScope;
- var elementFromPoint = scope.elementFromPoint;
- var getInnerHTML = scope.getInnerHTML;
- var getTreeScope = scope.getTreeScope;
- var mixin = scope.mixin;
- var rewrap = scope.rewrap;
- var setInnerHTML = scope.setInnerHTML;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var shadowHostTable = new WeakMap();
- var nextOlderShadowTreeTable = new WeakMap();
- function ShadowRoot(hostWrapper) {
- var node = unwrap(unsafeUnwrap(hostWrapper).ownerDocument.createDocumentFragment());
- DocumentFragment.call(this, node);
- rewrap(node, this);
- var oldShadowRoot = hostWrapper.shadowRoot;
- nextOlderShadowTreeTable.set(this, oldShadowRoot);
- this.treeScope_ = new TreeScope(this, getTreeScope(oldShadowRoot || hostWrapper));
- shadowHostTable.set(this, hostWrapper);
- }
- ShadowRoot.prototype = Object.create(DocumentFragment.prototype);
- mixin(ShadowRoot.prototype, {
- constructor: ShadowRoot,
- get innerHTML() {
- return getInnerHTML(this);
- },
- set innerHTML(value) {
- setInnerHTML(this, value);
- this.invalidateShadowRenderer();
- },
- get olderShadowRoot() {
- return nextOlderShadowTreeTable.get(this) || null;
- },
- get host() {
- return shadowHostTable.get(this) || null;
- },
- invalidateShadowRenderer: function() {
- return shadowHostTable.get(this).invalidateShadowRenderer();
- },
- elementFromPoint: function(x, y) {
- return elementFromPoint(this, this.ownerDocument, x, y);
- }
- });
- scope.wrappers.ShadowRoot = ShadowRoot;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var wrap = scope.wrap;
- var getTreeScope = scope.getTreeScope;
- var OriginalRange = window.Range;
- var ShadowRoot = scope.wrappers.ShadowRoot;
- function getHost(node) {
- var root = getTreeScope(node).root;
- if (root instanceof ShadowRoot) {
- return root.host;
- }
- return null;
- }
- function hostNodeToShadowNode(refNode, offset) {
- if (refNode.shadowRoot) {
- offset = Math.min(refNode.childNodes.length - 1, offset);
- var child = refNode.childNodes[offset];
- if (child) {
- var insertionPoint = scope.getDestinationInsertionPoints(child);
- if (insertionPoint.length > 0) {
- var parentNode = insertionPoint[0].parentNode;
- if (parentNode.nodeType == Node.ELEMENT_NODE) {
- refNode = parentNode;
- }
- }
- }
- }
- return refNode;
- }
- function shadowNodeToHostNode(node) {
- node = wrap(node);
- return getHost(node) || node;
- }
- function Range(impl) {
- setWrapper(impl, this);
- }
- Range.prototype = {
- get startContainer() {
- return shadowNodeToHostNode(unsafeUnwrap(this).startContainer);
- },
- get endContainer() {
- return shadowNodeToHostNode(unsafeUnwrap(this).endContainer);
- },
- get commonAncestorContainer() {
- return shadowNodeToHostNode(unsafeUnwrap(this).commonAncestorContainer);
- },
- setStart: function(refNode, offset) {
- refNode = hostNodeToShadowNode(refNode, offset);
- unsafeUnwrap(this).setStart(unwrapIfNeeded(refNode), offset);
- },
- setEnd: function(refNode, offset) {
- refNode = hostNodeToShadowNode(refNode, offset);
- unsafeUnwrap(this).setEnd(unwrapIfNeeded(refNode), offset);
- },
- setStartBefore: function(refNode) {
- unsafeUnwrap(this).setStartBefore(unwrapIfNeeded(refNode));
- },
- setStartAfter: function(refNode) {
- unsafeUnwrap(this).setStartAfter(unwrapIfNeeded(refNode));
- },
- setEndBefore: function(refNode) {
- unsafeUnwrap(this).setEndBefore(unwrapIfNeeded(refNode));
- },
- setEndAfter: function(refNode) {
- unsafeUnwrap(this).setEndAfter(unwrapIfNeeded(refNode));
- },
- selectNode: function(refNode) {
- unsafeUnwrap(this).selectNode(unwrapIfNeeded(refNode));
- },
- selectNodeContents: function(refNode) {
- unsafeUnwrap(this).selectNodeContents(unwrapIfNeeded(refNode));
- },
- compareBoundaryPoints: function(how, sourceRange) {
- return unsafeUnwrap(this).compareBoundaryPoints(how, unwrap(sourceRange));
- },
- extractContents: function() {
- return wrap(unsafeUnwrap(this).extractContents());
- },
- cloneContents: function() {
- return wrap(unsafeUnwrap(this).cloneContents());
- },
- insertNode: function(node) {
- unsafeUnwrap(this).insertNode(unwrapIfNeeded(node));
- },
- surroundContents: function(newParent) {
- unsafeUnwrap(this).surroundContents(unwrapIfNeeded(newParent));
- },
- cloneRange: function() {
- return wrap(unsafeUnwrap(this).cloneRange());
- },
- isPointInRange: function(node, offset) {
- return unsafeUnwrap(this).isPointInRange(unwrapIfNeeded(node), offset);
- },
- comparePoint: function(node, offset) {
- return unsafeUnwrap(this).comparePoint(unwrapIfNeeded(node), offset);
- },
- intersectsNode: function(node) {
- return unsafeUnwrap(this).intersectsNode(unwrapIfNeeded(node));
- },
- toString: function() {
- return unsafeUnwrap(this).toString();
- }
- };
- if (OriginalRange.prototype.createContextualFragment) {
- Range.prototype.createContextualFragment = function(html) {
- return wrap(unsafeUnwrap(this).createContextualFragment(html));
- };
- }
- registerWrapper(window.Range, Range, document.createRange());
- scope.wrappers.Range = Range;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var Element = scope.wrappers.Element;
- var HTMLContentElement = scope.wrappers.HTMLContentElement;
- var HTMLShadowElement = scope.wrappers.HTMLShadowElement;
- var Node = scope.wrappers.Node;
- var ShadowRoot = scope.wrappers.ShadowRoot;
- var assert = scope.assert;
- var getTreeScope = scope.getTreeScope;
- var mixin = scope.mixin;
- var oneOf = scope.oneOf;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var ArraySplice = scope.ArraySplice;
- function updateWrapperUpAndSideways(wrapper) {
- wrapper.previousSibling_ = wrapper.previousSibling;
- wrapper.nextSibling_ = wrapper.nextSibling;
- wrapper.parentNode_ = wrapper.parentNode;
- }
- function updateWrapperDown(wrapper) {
- wrapper.firstChild_ = wrapper.firstChild;
- wrapper.lastChild_ = wrapper.lastChild;
- }
- function updateAllChildNodes(parentNodeWrapper) {
- assert(parentNodeWrapper instanceof Node);
- for (var childWrapper = parentNodeWrapper.firstChild; childWrapper; childWrapper = childWrapper.nextSibling) {
- updateWrapperUpAndSideways(childWrapper);
- }
- updateWrapperDown(parentNodeWrapper);
- }
- function insertBefore(parentNodeWrapper, newChildWrapper, refChildWrapper) {
- var parentNode = unwrap(parentNodeWrapper);
- var newChild = unwrap(newChildWrapper);
- var refChild = refChildWrapper ? unwrap(refChildWrapper) : null;
- remove(newChildWrapper);
- updateWrapperUpAndSideways(newChildWrapper);
- if (!refChildWrapper) {
- parentNodeWrapper.lastChild_ = parentNodeWrapper.lastChild;
- if (parentNodeWrapper.lastChild === parentNodeWrapper.firstChild) parentNodeWrapper.firstChild_ = parentNodeWrapper.firstChild;
- var lastChildWrapper = wrap(parentNode.lastChild);
- if (lastChildWrapper) lastChildWrapper.nextSibling_ = lastChildWrapper.nextSibling;
- } else {
- if (parentNodeWrapper.firstChild === refChildWrapper) parentNodeWrapper.firstChild_ = refChildWrapper;
- refChildWrapper.previousSibling_ = refChildWrapper.previousSibling;
- }
- scope.originalInsertBefore.call(parentNode, newChild, refChild);
- }
- function remove(nodeWrapper) {
- var node = unwrap(nodeWrapper);
- var parentNode = node.parentNode;
- if (!parentNode) return;
- var parentNodeWrapper = wrap(parentNode);
- updateWrapperUpAndSideways(nodeWrapper);
- if (nodeWrapper.previousSibling) nodeWrapper.previousSibling.nextSibling_ = nodeWrapper;
- if (nodeWrapper.nextSibling) nodeWrapper.nextSibling.previousSibling_ = nodeWrapper;
- if (parentNodeWrapper.lastChild === nodeWrapper) parentNodeWrapper.lastChild_ = nodeWrapper;
- if (parentNodeWrapper.firstChild === nodeWrapper) parentNodeWrapper.firstChild_ = nodeWrapper;
- scope.originalRemoveChild.call(parentNode, node);
- }
- var distributedNodesTable = new WeakMap();
- var destinationInsertionPointsTable = new WeakMap();
- var rendererForHostTable = new WeakMap();
- function resetDistributedNodes(insertionPoint) {
- distributedNodesTable.set(insertionPoint, []);
- }
- function getDistributedNodes(insertionPoint) {
- var rv = distributedNodesTable.get(insertionPoint);
- if (!rv) distributedNodesTable.set(insertionPoint, rv = []);
- return rv;
- }
- function getChildNodesSnapshot(node) {
- var result = [], i = 0;
- for (var child = node.firstChild; child; child = child.nextSibling) {
- result[i++] = child;
- }
- return result;
- }
- var request = oneOf(window, [ "requestAnimationFrame", "mozRequestAnimationFrame", "webkitRequestAnimationFrame", "setTimeout" ]);
- var pendingDirtyRenderers = [];
- var renderTimer;
- function renderAllPending() {
- for (var i = 0; i < pendingDirtyRenderers.length; i++) {
- var renderer = pendingDirtyRenderers[i];
- var parentRenderer = renderer.parentRenderer;
- if (parentRenderer && parentRenderer.dirty) continue;
- renderer.render();
- }
- pendingDirtyRenderers = [];
- }
- function handleRequestAnimationFrame() {
- renderTimer = null;
- renderAllPending();
- }
- function getRendererForHost(host) {
- var renderer = rendererForHostTable.get(host);
- if (!renderer) {
- renderer = new ShadowRenderer(host);
- rendererForHostTable.set(host, renderer);
- }
- return renderer;
- }
- function getShadowRootAncestor(node) {
- var root = getTreeScope(node).root;
- if (root instanceof ShadowRoot) return root;
- return null;
- }
- function getRendererForShadowRoot(shadowRoot) {
- return getRendererForHost(shadowRoot.host);
- }
- var spliceDiff = new ArraySplice();
- spliceDiff.equals = function(renderNode, rawNode) {
- return unwrap(renderNode.node) === rawNode;
- };
- function RenderNode(node) {
- this.skip = false;
- this.node = node;
- this.childNodes = [];
- }
- RenderNode.prototype = {
- append: function(node) {
- var rv = new RenderNode(node);
- this.childNodes.push(rv);
- return rv;
- },
- sync: function(opt_added) {
- if (this.skip) return;
- var nodeWrapper = this.node;
- var newChildren = this.childNodes;
- var oldChildren = getChildNodesSnapshot(unwrap(nodeWrapper));
- var added = opt_added || new WeakMap();
- var splices = spliceDiff.calculateSplices(newChildren, oldChildren);
- var newIndex = 0, oldIndex = 0;
- var lastIndex = 0;
- for (var i = 0; i < splices.length; i++) {
- var splice = splices[i];
- for (;lastIndex < splice.index; lastIndex++) {
- oldIndex++;
- newChildren[newIndex++].sync(added);
- }
- var removedCount = splice.removed.length;
- for (var j = 0; j < removedCount; j++) {
- var wrapper = wrap(oldChildren[oldIndex++]);
- if (!added.get(wrapper)) remove(wrapper);
- }
- var addedCount = splice.addedCount;
- var refNode = oldChildren[oldIndex] && wrap(oldChildren[oldIndex]);
- for (var j = 0; j < addedCount; j++) {
- var newChildRenderNode = newChildren[newIndex++];
- var newChildWrapper = newChildRenderNode.node;
- insertBefore(nodeWrapper, newChildWrapper, refNode);
- added.set(newChildWrapper, true);
- newChildRenderNode.sync(added);
- }
- lastIndex += addedCount;
- }
- for (var i = lastIndex; i < newChildren.length; i++) {
- newChildren[i].sync(added);
- }
- }
- };
- function ShadowRenderer(host) {
- this.host = host;
- this.dirty = false;
- this.invalidateAttributes();
- this.associateNode(host);
- }
- ShadowRenderer.prototype = {
- render: function(opt_renderNode) {
- if (!this.dirty) return;
- this.invalidateAttributes();
- var host = this.host;
- this.distribution(host);
- var renderNode = opt_renderNode || new RenderNode(host);
- this.buildRenderTree(renderNode, host);
- var topMostRenderer = !opt_renderNode;
- if (topMostRenderer) renderNode.sync();
- this.dirty = false;
- },
- get parentRenderer() {
- return getTreeScope(this.host).renderer;
- },
- invalidate: function() {
- if (!this.dirty) {
- this.dirty = true;
- var parentRenderer = this.parentRenderer;
- if (parentRenderer) parentRenderer.invalidate();
- pendingDirtyRenderers.push(this);
- if (renderTimer) return;
- renderTimer = window[request](handleRequestAnimationFrame, 0);
- }
- },
- distribution: function(root) {
- this.resetAllSubtrees(root);
- this.distributionResolution(root);
- },
- resetAll: function(node) {
- if (isInsertionPoint(node)) resetDistributedNodes(node); else resetDestinationInsertionPoints(node);
- this.resetAllSubtrees(node);
- },
- resetAllSubtrees: function(node) {
- for (var child = node.firstChild; child; child = child.nextSibling) {
- this.resetAll(child);
- }
- if (node.shadowRoot) this.resetAll(node.shadowRoot);
- if (node.olderShadowRoot) this.resetAll(node.olderShadowRoot);
- },
- distributionResolution: function(node) {
- if (isShadowHost(node)) {
- var shadowHost = node;
- var pool = poolPopulation(shadowHost);
- var shadowTrees = getShadowTrees(shadowHost);
- for (var i = 0; i < shadowTrees.length; i++) {
- this.poolDistribution(shadowTrees[i], pool);
- }
- for (var i = shadowTrees.length - 1; i >= 0; i--) {
- var shadowTree = shadowTrees[i];
- var shadow = getShadowInsertionPoint(shadowTree);
- if (shadow) {
- var olderShadowRoot = shadowTree.olderShadowRoot;
- if (olderShadowRoot) {
- pool = poolPopulation(olderShadowRoot);
- }
- for (var j = 0; j < pool.length; j++) {
- destributeNodeInto(pool[j], shadow);
- }
- }
- this.distributionResolution(shadowTree);
- }
- }
- for (var child = node.firstChild; child; child = child.nextSibling) {
- this.distributionResolution(child);
- }
- },
- poolDistribution: function(node, pool) {
- if (node instanceof HTMLShadowElement) return;
- if (node instanceof HTMLContentElement) {
- var content = node;
- this.updateDependentAttributes(content.getAttribute("select"));
- var anyDistributed = false;
- for (var i = 0; i < pool.length; i++) {
- var node = pool[i];
- if (!node) continue;
- if (matches(node, content)) {
- destributeNodeInto(node, content);
- pool[i] = undefined;
- anyDistributed = true;
- }
- }
- if (!anyDistributed) {
- for (var child = content.firstChild; child; child = child.nextSibling) {
- destributeNodeInto(child, content);
- }
- }
- return;
- }
- for (var child = node.firstChild; child; child = child.nextSibling) {
- this.poolDistribution(child, pool);
- }
- },
- buildRenderTree: function(renderNode, node) {
- var children = this.compose(node);
- for (var i = 0; i < children.length; i++) {
- var child = children[i];
- var childRenderNode = renderNode.append(child);
- this.buildRenderTree(childRenderNode, child);
- }
- if (isShadowHost(node)) {
- var renderer = getRendererForHost(node);
- renderer.dirty = false;
- }
- },
- compose: function(node) {
- var children = [];
- var p = node.shadowRoot || node;
- for (var child = p.firstChild; child; child = child.nextSibling) {
- if (isInsertionPoint(child)) {
- this.associateNode(p);
- var distributedNodes = getDistributedNodes(child);
- for (var j = 0; j < distributedNodes.length; j++) {
- var distributedNode = distributedNodes[j];
- if (isFinalDestination(child, distributedNode)) children.push(distributedNode);
- }
- } else {
- children.push(child);
- }
- }
- return children;
- },
- invalidateAttributes: function() {
- this.attributes = Object.create(null);
- },
- updateDependentAttributes: function(selector) {
- if (!selector) return;
- var attributes = this.attributes;
- if (/\.\w+/.test(selector)) attributes["class"] = true;
- if (/#\w+/.test(selector)) attributes["id"] = true;
- selector.replace(/\[\s*([^\s=\|~\]]+)/g, function(_, name) {
- attributes[name] = true;
- });
- },
- dependsOnAttribute: function(name) {
- return this.attributes[name];
- },
- associateNode: function(node) {
- unsafeUnwrap(node).polymerShadowRenderer_ = this;
- }
- };
- function poolPopulation(node) {
- var pool = [];
- for (var child = node.firstChild; child; child = child.nextSibling) {
- if (isInsertionPoint(child)) {
- pool.push.apply(pool, getDistributedNodes(child));
- } else {
- pool.push(child);
- }
- }
- return pool;
- }
- function getShadowInsertionPoint(node) {
- if (node instanceof HTMLShadowElement) return node;
- if (node instanceof HTMLContentElement) return null;
- for (var child = node.firstChild; child; child = child.nextSibling) {
- var res = getShadowInsertionPoint(child);
- if (res) return res;
- }
- return null;
- }
- function destributeNodeInto(child, insertionPoint) {
- getDistributedNodes(insertionPoint).push(child);
- var points = destinationInsertionPointsTable.get(child);
- if (!points) destinationInsertionPointsTable.set(child, [ insertionPoint ]); else points.push(insertionPoint);
- }
- function getDestinationInsertionPoints(node) {
- return destinationInsertionPointsTable.get(node);
- }
- function resetDestinationInsertionPoints(node) {
- destinationInsertionPointsTable.set(node, undefined);
- }
- var selectorStartCharRe = /^(:not\()?[*.#[a-zA-Z_|]/;
- function matches(node, contentElement) {
- var select = contentElement.getAttribute("select");
- if (!select) return true;
- select = select.trim();
- if (!select) return true;
- if (!(node instanceof Element)) return false;
- if (!selectorStartCharRe.test(select)) return false;
- try {
- return node.matches(select);
- } catch (ex) {
- return false;
- }
- }
- function isFinalDestination(insertionPoint, node) {
- var points = getDestinationInsertionPoints(node);
- return points && points[points.length - 1] === insertionPoint;
- }
- function isInsertionPoint(node) {
- return node instanceof HTMLContentElement || node instanceof HTMLShadowElement;
- }
- function isShadowHost(shadowHost) {
- return shadowHost.shadowRoot;
- }
- function getShadowTrees(host) {
- var trees = [];
- for (var tree = host.shadowRoot; tree; tree = tree.olderShadowRoot) {
- trees.push(tree);
- }
- return trees;
- }
- function render(host) {
- new ShadowRenderer(host).render();
- }
- Node.prototype.invalidateShadowRenderer = function(force) {
- var renderer = unsafeUnwrap(this).polymerShadowRenderer_;
- if (renderer) {
- renderer.invalidate();
- return true;
- }
- return false;
- };
- HTMLContentElement.prototype.getDistributedNodes = HTMLShadowElement.prototype.getDistributedNodes = function() {
- renderAllPending();
- return getDistributedNodes(this);
- };
- Element.prototype.getDestinationInsertionPoints = function() {
- renderAllPending();
- return getDestinationInsertionPoints(this) || [];
- };
- HTMLContentElement.prototype.nodeIsInserted_ = HTMLShadowElement.prototype.nodeIsInserted_ = function() {
- this.invalidateShadowRenderer();
- var shadowRoot = getShadowRootAncestor(this);
- var renderer;
- if (shadowRoot) renderer = getRendererForShadowRoot(shadowRoot);
- unsafeUnwrap(this).polymerShadowRenderer_ = renderer;
- if (renderer) renderer.invalidate();
- };
- scope.getRendererForHost = getRendererForHost;
- scope.getShadowTrees = getShadowTrees;
- scope.renderAllPending = renderAllPending;
- scope.getDestinationInsertionPoints = getDestinationInsertionPoints;
- scope.visual = {
- insertBefore: insertBefore,
- remove: remove
- };
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var assert = scope.assert;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var elementsWithFormProperty = [ "HTMLButtonElement", "HTMLFieldSetElement", "HTMLInputElement", "HTMLKeygenElement", "HTMLLabelElement", "HTMLLegendElement", "HTMLObjectElement", "HTMLOutputElement", "HTMLTextAreaElement" ];
- function createWrapperConstructor(name) {
- if (!window[name]) return;
- assert(!scope.wrappers[name]);
- var GeneratedWrapper = function(node) {
- HTMLElement.call(this, node);
- };
- GeneratedWrapper.prototype = Object.create(HTMLElement.prototype);
- mixin(GeneratedWrapper.prototype, {
- get form() {
- return wrap(unwrap(this).form);
- }
- });
- registerWrapper(window[name], GeneratedWrapper, document.createElement(name.slice(4, -7)));
- scope.wrappers[name] = GeneratedWrapper;
- }
- elementsWithFormProperty.forEach(createWrapperConstructor);
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var wrap = scope.wrap;
- var OriginalSelection = window.Selection;
- function Selection(impl) {
- setWrapper(impl, this);
- }
- Selection.prototype = {
- get anchorNode() {
- return wrap(unsafeUnwrap(this).anchorNode);
- },
- get focusNode() {
- return wrap(unsafeUnwrap(this).focusNode);
- },
- addRange: function(range) {
- unsafeUnwrap(this).addRange(unwrapIfNeeded(range));
- },
- collapse: function(node, index) {
- unsafeUnwrap(this).collapse(unwrapIfNeeded(node), index);
- },
- containsNode: function(node, allowPartial) {
- return unsafeUnwrap(this).containsNode(unwrapIfNeeded(node), allowPartial);
- },
- getRangeAt: function(index) {
- return wrap(unsafeUnwrap(this).getRangeAt(index));
- },
- removeRange: function(range) {
- unsafeUnwrap(this).removeRange(unwrap(range));
- },
- selectAllChildren: function(node) {
- unsafeUnwrap(this).selectAllChildren(unwrapIfNeeded(node));
- },
- toString: function() {
- return unsafeUnwrap(this).toString();
- }
- };
- if (OriginalSelection.prototype.extend) {
- Selection.prototype.extend = function(node, offset) {
- unsafeUnwrap(this).extend(unwrapIfNeeded(node), offset);
- };
- }
- registerWrapper(window.Selection, Selection, window.getSelection());
- scope.wrappers.Selection = Selection;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var wrap = scope.wrap;
- var OriginalTreeWalker = window.TreeWalker;
- function TreeWalker(impl) {
- setWrapper(impl, this);
- }
- TreeWalker.prototype = {
- get root() {
- return wrap(unsafeUnwrap(this).root);
- },
- get currentNode() {
- return wrap(unsafeUnwrap(this).currentNode);
- },
- set currentNode(node) {
- unsafeUnwrap(this).currentNode = unwrapIfNeeded(node);
- },
- get filter() {
- return unsafeUnwrap(this).filter;
- },
- parentNode: function() {
- return wrap(unsafeUnwrap(this).parentNode());
- },
- firstChild: function() {
- return wrap(unsafeUnwrap(this).firstChild());
- },
- lastChild: function() {
- return wrap(unsafeUnwrap(this).lastChild());
- },
- previousSibling: function() {
- return wrap(unsafeUnwrap(this).previousSibling());
- },
- previousNode: function() {
- return wrap(unsafeUnwrap(this).previousNode());
- },
- nextNode: function() {
- return wrap(unsafeUnwrap(this).nextNode());
- }
- };
- registerWrapper(OriginalTreeWalker, TreeWalker);
- scope.wrappers.TreeWalker = TreeWalker;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var GetElementsByInterface = scope.GetElementsByInterface;
- var Node = scope.wrappers.Node;
- var ParentNodeInterface = scope.ParentNodeInterface;
- var NonElementParentNodeInterface = scope.NonElementParentNodeInterface;
- var Selection = scope.wrappers.Selection;
- var SelectorsInterface = scope.SelectorsInterface;
- var ShadowRoot = scope.wrappers.ShadowRoot;
- var TreeScope = scope.TreeScope;
- var cloneNode = scope.cloneNode;
- var defineWrapGetter = scope.defineWrapGetter;
- var elementFromPoint = scope.elementFromPoint;
- var forwardMethodsToWrapper = scope.forwardMethodsToWrapper;
- var matchesNames = scope.matchesNames;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var renderAllPending = scope.renderAllPending;
- var rewrap = scope.rewrap;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var wrapEventTargetMethods = scope.wrapEventTargetMethods;
- var wrapNodeList = scope.wrapNodeList;
- var implementationTable = new WeakMap();
- function Document(node) {
- Node.call(this, node);
- this.treeScope_ = new TreeScope(this, null);
- }
- Document.prototype = Object.create(Node.prototype);
- defineWrapGetter(Document, "documentElement");
- defineWrapGetter(Document, "body");
- defineWrapGetter(Document, "head");
- function wrapMethod(name) {
- var original = document[name];
- Document.prototype[name] = function() {
- return wrap(original.apply(unsafeUnwrap(this), arguments));
- };
- }
- [ "createComment", "createDocumentFragment", "createElement", "createElementNS", "createEvent", "createEventNS", "createRange", "createTextNode" ].forEach(wrapMethod);
- var originalAdoptNode = document.adoptNode;
- function adoptNodeNoRemove(node, doc) {
- originalAdoptNode.call(unsafeUnwrap(doc), unwrap(node));
- adoptSubtree(node, doc);
- }
- function adoptSubtree(node, doc) {
- if (node.shadowRoot) doc.adoptNode(node.shadowRoot);
- if (node instanceof ShadowRoot) adoptOlderShadowRoots(node, doc);
- for (var child = node.firstChild; child; child = child.nextSibling) {
- adoptSubtree(child, doc);
- }
- }
- function adoptOlderShadowRoots(shadowRoot, doc) {
- var oldShadowRoot = shadowRoot.olderShadowRoot;
- if (oldShadowRoot) doc.adoptNode(oldShadowRoot);
- }
- var originalGetSelection = document.getSelection;
- mixin(Document.prototype, {
- adoptNode: function(node) {
- if (node.parentNode) node.parentNode.removeChild(node);
- adoptNodeNoRemove(node, this);
- return node;
- },
- elementFromPoint: function(x, y) {
- return elementFromPoint(this, this, x, y);
- },
- importNode: function(node, deep) {
- return cloneNode(node, deep, unsafeUnwrap(this));
- },
- getSelection: function() {
- renderAllPending();
- return new Selection(originalGetSelection.call(unwrap(this)));
- },
- getElementsByName: function(name) {
- return SelectorsInterface.querySelectorAll.call(this, "[name=" + JSON.stringify(String(name)) + "]");
- }
- });
- var originalCreateTreeWalker = document.createTreeWalker;
- var TreeWalkerWrapper = scope.wrappers.TreeWalker;
- Document.prototype.createTreeWalker = function(root, whatToShow, filter, expandEntityReferences) {
- var newFilter = null;
- if (filter) {
- if (filter.acceptNode && typeof filter.acceptNode === "function") {
- newFilter = {
- acceptNode: function(node) {
- return filter.acceptNode(wrap(node));
- }
- };
- } else if (typeof filter === "function") {
- newFilter = function(node) {
- return filter(wrap(node));
- };
- }
- }
- return new TreeWalkerWrapper(originalCreateTreeWalker.call(unwrap(this), unwrap(root), whatToShow, newFilter, expandEntityReferences));
- };
- if (document.registerElement) {
- var originalRegisterElement = document.registerElement;
- Document.prototype.registerElement = function(tagName, object) {
- var prototype, extendsOption;
- if (object !== undefined) {
- prototype = object.prototype;
- extendsOption = object.extends;
- }
- if (!prototype) prototype = Object.create(HTMLElement.prototype);
- if (scope.nativePrototypeTable.get(prototype)) {
- throw new Error("NotSupportedError");
- }
- var proto = Object.getPrototypeOf(prototype);
- var nativePrototype;
- var prototypes = [];
- while (proto) {
- nativePrototype = scope.nativePrototypeTable.get(proto);
- if (nativePrototype) break;
- prototypes.push(proto);
- proto = Object.getPrototypeOf(proto);
- }
- if (!nativePrototype) {
- throw new Error("NotSupportedError");
- }
- var newPrototype = Object.create(nativePrototype);
- for (var i = prototypes.length - 1; i >= 0; i--) {
- newPrototype = Object.create(newPrototype);
- }
- [ "createdCallback", "attachedCallback", "detachedCallback", "attributeChangedCallback" ].forEach(function(name) {
- var f = prototype[name];
- if (!f) return;
- newPrototype[name] = function() {
- if (!(wrap(this) instanceof CustomElementConstructor)) {
- rewrap(this);
- }
- f.apply(wrap(this), arguments);
- };
- });
- var p = {
- prototype: newPrototype
- };
- if (extendsOption) p.extends = extendsOption;
- function CustomElementConstructor(node) {
- if (!node) {
- if (extendsOption) {
- return document.createElement(extendsOption, tagName);
- } else {
- return document.createElement(tagName);
- }
- }
- setWrapper(node, this);
- }
- CustomElementConstructor.prototype = prototype;
- CustomElementConstructor.prototype.constructor = CustomElementConstructor;
- scope.constructorTable.set(newPrototype, CustomElementConstructor);
- scope.nativePrototypeTable.set(prototype, newPrototype);
- var nativeConstructor = originalRegisterElement.call(unwrap(this), tagName, p);
- return CustomElementConstructor;
- };
- forwardMethodsToWrapper([ window.HTMLDocument || window.Document ], [ "registerElement" ]);
- }
- forwardMethodsToWrapper([ window.HTMLBodyElement, window.HTMLDocument || window.Document, window.HTMLHeadElement, window.HTMLHtmlElement ], [ "appendChild", "compareDocumentPosition", "contains", "getElementsByClassName", "getElementsByTagName", "getElementsByTagNameNS", "insertBefore", "querySelector", "querySelectorAll", "removeChild", "replaceChild" ]);
- forwardMethodsToWrapper([ window.HTMLBodyElement, window.HTMLHeadElement, window.HTMLHtmlElement ], matchesNames);
- forwardMethodsToWrapper([ window.HTMLDocument || window.Document ], [ "adoptNode", "importNode", "contains", "createComment", "createDocumentFragment", "createElement", "createElementNS", "createEvent", "createEventNS", "createRange", "createTextNode", "createTreeWalker", "elementFromPoint", "getElementById", "getElementsByName", "getSelection" ]);
- mixin(Document.prototype, GetElementsByInterface);
- mixin(Document.prototype, ParentNodeInterface);
- mixin(Document.prototype, SelectorsInterface);
- mixin(Document.prototype, NonElementParentNodeInterface);
- mixin(Document.prototype, {
- get implementation() {
- var implementation = implementationTable.get(this);
- if (implementation) return implementation;
- implementation = new DOMImplementation(unwrap(this).implementation);
- implementationTable.set(this, implementation);
- return implementation;
- },
- get defaultView() {
- return wrap(unwrap(this).defaultView);
- }
- });
- registerWrapper(window.Document, Document, document.implementation.createHTMLDocument(""));
- if (window.HTMLDocument) registerWrapper(window.HTMLDocument, Document);
- wrapEventTargetMethods([ window.HTMLBodyElement, window.HTMLDocument || window.Document, window.HTMLHeadElement ]);
- function DOMImplementation(impl) {
- setWrapper(impl, this);
- }
- var originalCreateDocument = document.implementation.createDocument;
- DOMImplementation.prototype.createDocument = function() {
- arguments[2] = unwrap(arguments[2]);
- return wrap(originalCreateDocument.apply(unsafeUnwrap(this), arguments));
- };
- function wrapImplMethod(constructor, name) {
- var original = document.implementation[name];
- constructor.prototype[name] = function() {
- return wrap(original.apply(unsafeUnwrap(this), arguments));
- };
- }
- function forwardImplMethod(constructor, name) {
- var original = document.implementation[name];
- constructor.prototype[name] = function() {
- return original.apply(unsafeUnwrap(this), arguments);
- };
- }
- wrapImplMethod(DOMImplementation, "createDocumentType");
- wrapImplMethod(DOMImplementation, "createHTMLDocument");
- forwardImplMethod(DOMImplementation, "hasFeature");
- registerWrapper(window.DOMImplementation, DOMImplementation);
- forwardMethodsToWrapper([ window.DOMImplementation ], [ "createDocument", "createDocumentType", "createHTMLDocument", "hasFeature" ]);
- scope.adoptNodeNoRemove = adoptNodeNoRemove;
- scope.wrappers.DOMImplementation = DOMImplementation;
- scope.wrappers.Document = Document;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var EventTarget = scope.wrappers.EventTarget;
- var Selection = scope.wrappers.Selection;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var renderAllPending = scope.renderAllPending;
- var unwrap = scope.unwrap;
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var wrap = scope.wrap;
- var OriginalWindow = window.Window;
- var originalGetComputedStyle = window.getComputedStyle;
- var originalGetDefaultComputedStyle = window.getDefaultComputedStyle;
- var originalGetSelection = window.getSelection;
- function Window(impl) {
- EventTarget.call(this, impl);
- }
- Window.prototype = Object.create(EventTarget.prototype);
- OriginalWindow.prototype.getComputedStyle = function(el, pseudo) {
- return wrap(this || window).getComputedStyle(unwrapIfNeeded(el), pseudo);
- };
- if (originalGetDefaultComputedStyle) {
- OriginalWindow.prototype.getDefaultComputedStyle = function(el, pseudo) {
- return wrap(this || window).getDefaultComputedStyle(unwrapIfNeeded(el), pseudo);
- };
- }
- OriginalWindow.prototype.getSelection = function() {
- return wrap(this || window).getSelection();
- };
- delete window.getComputedStyle;
- delete window.getDefaultComputedStyle;
- delete window.getSelection;
- [ "addEventListener", "removeEventListener", "dispatchEvent" ].forEach(function(name) {
- OriginalWindow.prototype[name] = function() {
- var w = wrap(this || window);
- return w[name].apply(w, arguments);
- };
- delete window[name];
- });
- mixin(Window.prototype, {
- getComputedStyle: function(el, pseudo) {
- renderAllPending();
- return originalGetComputedStyle.call(unwrap(this), unwrapIfNeeded(el), pseudo);
- },
- getSelection: function() {
- renderAllPending();
- return new Selection(originalGetSelection.call(unwrap(this)));
- },
- get document() {
- return wrap(unwrap(this).document);
- }
- });
- if (originalGetDefaultComputedStyle) {
- Window.prototype.getDefaultComputedStyle = function(el, pseudo) {
- renderAllPending();
- return originalGetDefaultComputedStyle.call(unwrap(this), unwrapIfNeeded(el), pseudo);
- };
- }
- registerWrapper(OriginalWindow, Window, window);
- scope.wrappers.Window = Window;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var unwrap = scope.unwrap;
- var OriginalDataTransfer = window.DataTransfer || window.Clipboard;
- var OriginalDataTransferSetDragImage = OriginalDataTransfer.prototype.setDragImage;
- if (OriginalDataTransferSetDragImage) {
- OriginalDataTransfer.prototype.setDragImage = function(image, x, y) {
- OriginalDataTransferSetDragImage.call(this, unwrap(image), x, y);
- };
- }
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unwrap = scope.unwrap;
- var OriginalFormData = window.FormData;
- if (!OriginalFormData) return;
- function FormData(formElement) {
- var impl;
- if (formElement instanceof OriginalFormData) {
- impl = formElement;
- } else {
- impl = new OriginalFormData(formElement && unwrap(formElement));
- }
- setWrapper(impl, this);
- }
- registerWrapper(OriginalFormData, FormData, new OriginalFormData());
- scope.wrappers.FormData = FormData;
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var originalSend = XMLHttpRequest.prototype.send;
- XMLHttpRequest.prototype.send = function(obj) {
- return originalSend.call(this, unwrapIfNeeded(obj));
- };
-})(window.ShadowDOMPolyfill);
-
-(function(scope) {
- "use strict";
- var isWrapperFor = scope.isWrapperFor;
- var elements = {
- a: "HTMLAnchorElement",
- area: "HTMLAreaElement",
- audio: "HTMLAudioElement",
- base: "HTMLBaseElement",
- body: "HTMLBodyElement",
- br: "HTMLBRElement",
- button: "HTMLButtonElement",
- canvas: "HTMLCanvasElement",
- caption: "HTMLTableCaptionElement",
- col: "HTMLTableColElement",
- content: "HTMLContentElement",
- data: "HTMLDataElement",
- datalist: "HTMLDataListElement",
- del: "HTMLModElement",
- dir: "HTMLDirectoryElement",
- div: "HTMLDivElement",
- dl: "HTMLDListElement",
- embed: "HTMLEmbedElement",
- fieldset: "HTMLFieldSetElement",
- font: "HTMLFontElement",
- form: "HTMLFormElement",
- frame: "HTMLFrameElement",
- frameset: "HTMLFrameSetElement",
- h1: "HTMLHeadingElement",
- head: "HTMLHeadElement",
- hr: "HTMLHRElement",
- html: "HTMLHtmlElement",
- iframe: "HTMLIFrameElement",
- img: "HTMLImageElement",
- input: "HTMLInputElement",
- keygen: "HTMLKeygenElement",
- label: "HTMLLabelElement",
- legend: "HTMLLegendElement",
- li: "HTMLLIElement",
- link: "HTMLLinkElement",
- map: "HTMLMapElement",
- marquee: "HTMLMarqueeElement",
- menu: "HTMLMenuElement",
- menuitem: "HTMLMenuItemElement",
- meta: "HTMLMetaElement",
- meter: "HTMLMeterElement",
- object: "HTMLObjectElement",
- ol: "HTMLOListElement",
- optgroup: "HTMLOptGroupElement",
- option: "HTMLOptionElement",
- output: "HTMLOutputElement",
- p: "HTMLParagraphElement",
- param: "HTMLParamElement",
- pre: "HTMLPreElement",
- progress: "HTMLProgressElement",
- q: "HTMLQuoteElement",
- script: "HTMLScriptElement",
- select: "HTMLSelectElement",
- shadow: "HTMLShadowElement",
- source: "HTMLSourceElement",
- span: "HTMLSpanElement",
- style: "HTMLStyleElement",
- table: "HTMLTableElement",
- tbody: "HTMLTableSectionElement",
- template: "HTMLTemplateElement",
- textarea: "HTMLTextAreaElement",
- thead: "HTMLTableSectionElement",
- time: "HTMLTimeElement",
- title: "HTMLTitleElement",
- tr: "HTMLTableRowElement",
- track: "HTMLTrackElement",
- ul: "HTMLUListElement",
- video: "HTMLVideoElement"
- };
- function overrideConstructor(tagName) {
- var nativeConstructorName = elements[tagName];
- var nativeConstructor = window[nativeConstructorName];
- if (!nativeConstructor) return;
- var element = document.createElement(tagName);
- var wrapperConstructor = element.constructor;
- window[nativeConstructorName] = wrapperConstructor;
- }
- Object.keys(elements).forEach(overrideConstructor);
- Object.getOwnPropertyNames(scope.wrappers).forEach(function(name) {
- window[name] = scope.wrappers[name];
- });
-})(window.ShadowDOMPolyfill);`},
- "/bower_components/webcomponentsjs/ShadowDOM.min.js": {"/bower_components/webcomponentsjs/ShadowDOM.min.js", time.Unix(0, 1440513533113507588), false, `/**
- * @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
- */
-// @version 0.7.11
-"undefined"==typeof WeakMap&&!function(){var e=Object.defineProperty,t=Date.now()%1e9,n=function(){this.name="__st"+(1e9*Math.random()>>>0)+(t++ +"__")};n.prototype={set:function(t,n){var r=t[this.name];return r&&r[0]===t?r[1]=n:e(t,this.name,{value:[t,n],writable:!0}),this},get:function(e){var t;return(t=e[this.name])&&t[0]===e?t[1]:void 0},"delete":function(e){var t=e[this.name];return t&&t[0]===e?(t[0]=t[1]=void 0,!0):!1},has:function(e){var t=e[this.name];return t?t[0]===e:!1}},window.WeakMap=n}(),window.ShadowDOMPolyfill={},function(e){"use strict";function t(){if("undefined"!=typeof chrome&&chrome.app&&chrome.app.runtime)return!1;if(navigator.getDeviceStorage)return!1;try{var e=new Function("return true;");return e()}catch(t){return!1}}function n(e){if(!e)throw new Error("Assertion failed")}function r(e,t){for(var n=k(t),r=0;ru;u++)c[u]=new Array(s),c[u][0]=u;for(var l=0;s>l;l++)c[0][l]=l;for(var u=1;a>u;u++)for(var l=1;s>l;l++)if(this.equals(e[t+l-1],r[o+u-1]))c[u][l]=c[u-1][l-1];else{var p=c[u-1][l]+1,d=c[u][l-1]+1;c[u][l]=d>p?p:d}return c},spliceOperationsFromEditDistances:function(e){for(var t=e.length-1,n=e[0].length-1,s=e[t][n],c=[];t>0||n>0;)if(0!=t)if(0!=n){var u,l=e[t-1][n-1],p=e[t-1][n],d=e[t][n-1];u=d>p?l>p?p:l:l>d?d:l,u==l?(l==s?c.push(r):(c.push(o),s=l),t--,n--):u==p?(c.push(a),t--,s=p):(c.push(i),n--,s=d)}else c.push(a),t--;else c.push(i),n--;return c.reverse(),c},calcSplices:function(e,n,s,c,u,l){var p=0,d=0,f=Math.min(s-n,l-u);if(0==n&&0==u&&(p=this.sharedPrefix(e,c,f)),s==e.length&&l==c.length&&(d=this.sharedSuffix(e,c,f-p)),n+=p,u+=p,s-=d,l-=d,s-n==0&&l-u==0)return[];if(n==s){for(var h=t(n,[],0);l>u;)h.removed.push(c[u++]);return[h]}if(u==l)return[t(n,[],s-n)];for(var w=this.spliceOperationsFromEditDistances(this.calcEditDistances(e,n,s,c,u,l)),h=void 0,m=[],g=n,v=u,b=0;br;r++)if(!this.equals(e[r],t[r]))return r;return n},sharedSuffix:function(e,t,n){for(var r=e.length,o=t.length,i=0;n>i&&this.equals(e[--r],t[--o]);)i++;return i},calculateSplices:function(e,t){return this.calcSplices(e,0,e.length,t,0,t.length)},equals:function(e,t){return e===t}},e.ArraySplice=n}(window.ShadowDOMPolyfill),function(e){"use strict";function t(){a=!1;var e=i.slice(0);i=[];for(var t=0;t0){for(var l=0;l0&&r.length>0;){var i=n.pop(),a=r.pop();if(i!==a)break;o=i}return o}function l(e,t,n){t instanceof G.Window&&(t=t.document);var o,i=A(t),a=A(n),s=r(n,e),o=u(i,a);o||(o=a.root);for(var c=o;c;c=c.parent)for(var l=0;l0;i--)if(!v(t[i],e,o,t,r))return!1;return!0}function m(e,t,n,r){var o=ie,i=t[0]||n;return v(i,e,o,t,r)}function g(e,t,n,r){for(var o=ae,i=1;i0&&v(n,e,o,t,r)}function v(e,t,n,r,o){var i=z.get(e);if(!i)return!0;var a=o||s(r,e);if(a===e){if(n===oe)return!0;n===ae&&(n=ie)}else if(n===ae&&!t.bubbles)return!0;if("relatedTarget"in t){var c=q(t),u=c.relatedTarget;if(u){if(u instanceof Object&&u.addEventListener){var p=V(u),d=l(t,e,p);if(d===a)return!0}else d=null;Z.set(t,d)}}J.set(t,n);var f=t.type,h=!1;Y.set(t,a),$.set(t,e),i.depth++;for(var w=0,m=i.length;m>w;w++){var g=i[w];if(g.removed)h=!0;else if(!(g.type!==f||!g.capture&&n===oe||g.capture&&n===ae))try{if("function"==typeof g.handler?g.handler.call(e,t):g.handler.handleEvent(t),ee.get(t))return!1}catch(v){W||(W=v)}}if(i.depth--,h&&0===i.depth){var b=i.slice();i.length=0;for(var w=0;wr;r++)t[r]=a(e[r]);return t.length=o,t}function o(e,t){e.prototype[t]=function(){return r(i(this)[t].apply(i(this),arguments))}}var i=e.unsafeUnwrap,a=e.wrap,s={enumerable:!1};n.prototype={item:function(e){return this[e]}},t(n.prototype,"item"),e.wrappers.NodeList=n,e.addWrapNodeListMethod=o,e.wrapNodeList=r}(window.ShadowDOMPolyfill),function(e){"use strict";e.wrapHTMLCollection=e.wrapNodeList,e.wrappers.HTMLCollection=e.wrappers.NodeList}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){N(e instanceof S)}function n(e){var t=new T;return t[0]=e,t.length=1,t}function r(e,t,n){L(t,"childList",{removedNodes:n,previousSibling:e.previousSibling,nextSibling:e.nextSibling})}function o(e,t){L(e,"childList",{removedNodes:t})}function i(e,t,r,o){if(e instanceof DocumentFragment){var i=s(e);B=!0;for(var a=i.length-1;a>=0;a--)e.removeChild(i[a]),i[a].parentNode_=t;B=!1;for(var a=0;ao;o++)r.appendChild(W(t[o]));return r}function m(e){if(void 0!==e.firstChild_)for(var t=e.firstChild_;t;){var n=t;t=t.nextSibling_,n.parentNode_=n.previousSibling_=n.nextSibling_=void 0}e.firstChild_=e.lastChild_=void 0}function g(e){if(e.invalidateShadowRenderer()){for(var t=e.firstChild;t;){N(t.parentNode===e);var n=t.nextSibling,r=W(t),o=r.parentNode;o&&Y.call(o,r),t.previousSibling_=t.nextSibling_=t.parentNode_=null,t=n}e.firstChild_=e.lastChild_=null}else for(var n,i=W(e),a=i.firstChild;a;)n=a.nextSibling,Y.call(i,a),a=n}function v(e){var t=e.parentNode;return t&&t.invalidateShadowRenderer()}function b(e){for(var t,n=0;ns;s++)i=b(t[s]),!o&&(a=g(i).root)&&a instanceof e.wrappers.ShadowRoot||(r[n++]=i);return n}function n(e){return String(e).replace(/\/deep\/|::shadow|>>>/g," ")}function r(e){return String(e).replace(/:host\(([^\s]+)\)/g,"$1").replace(/([^\s]):host/g,"$1").replace(":host","*").replace(/\^|\/shadow\/|\/shadow-deep\/|::shadow|\/deep\/|::content|>>>/g," ")}function o(e,t){for(var n,r=e.firstElementChild;r;){if(r.matches(t))return r;if(n=o(r,t))return n;r=r.nextElementSibling}return null}function i(e,t){return e.matches(t)}function a(e,t,n){var r=e.localName;return r===t||r===n&&e.namespaceURI===C}function s(){return!0}function c(e,t,n){return e.localName===n}function u(e,t){return e.namespaceURI===t}function l(e,t,n){return e.namespaceURI===t&&e.localName===n}function p(e,t,n,r,o,i){for(var a=e.firstElementChild;a;)r(a,o,i)&&(n[t++]=a),t=p(a,t,n,r,o,i),a=a.nextElementSibling;return t}function d(n,r,o,i,a){var s,c=v(this),u=g(this).root;if(u instanceof e.wrappers.ShadowRoot)return p(this,r,o,n,i,null);if(c instanceof L)s=M.call(c,i);else{if(!(c instanceof _))return p(this,r,o,n,i,null);s=S.call(c,i)}return t(s,r,o,a)}function f(n,r,o,i,a){var s,c=v(this),u=g(this).root;if(u instanceof e.wrappers.ShadowRoot)return p(this,r,o,n,i,a);if(c instanceof L)s=O.call(c,i,a);else{if(!(c instanceof _))return p(this,r,o,n,i,a);s=T.call(c,i,a)}return t(s,r,o,!1)}function h(n,r,o,i,a){var s,c=v(this),u=g(this).root;if(u instanceof e.wrappers.ShadowRoot)return p(this,r,o,n,i,a);if(c instanceof L)s=j.call(c,i,a);else{if(!(c instanceof _))return p(this,r,o,n,i,a);s=N.call(c,i,a)}return t(s,r,o,!1)}var w=e.wrappers.HTMLCollection,m=e.wrappers.NodeList,g=e.getTreeScope,v=e.unsafeUnwrap,b=e.wrap,y=document.querySelector,E=document.documentElement.querySelector,S=document.querySelectorAll,M=document.documentElement.querySelectorAll,T=document.getElementsByTagName,O=document.documentElement.getElementsByTagName,N=document.getElementsByTagNameNS,j=document.documentElement.getElementsByTagNameNS,L=window.Element,_=window.HTMLDocument||window.Document,C="http://www.w3.org/1999/xhtml",D={querySelector:function(t){var r=n(t),i=r!==t;t=r;var a,s=v(this),c=g(this).root;if(c instanceof e.wrappers.ShadowRoot)return o(this,t);if(s instanceof L)a=b(E.call(s,t));else{if(!(s instanceof _))return o(this,t);a=b(y.call(s,t))}return a&&!i&&(c=g(a).root)&&c instanceof e.wrappers.ShadowRoot?o(this,t):a},querySelectorAll:function(e){var t=n(e),r=t!==e;e=t;var o=new m;return o.length=d.call(this,i,0,o,e,r),o}},H={matches:function(t){return t=r(t),e.originalMatches.call(v(this),t)}},x={getElementsByTagName:function(e){var t=new w,n="*"===e?s:a;return t.length=f.call(this,n,0,t,e,e.toLowerCase()),t},getElementsByClassName:function(e){return this.querySelectorAll("."+e)},getElementsByTagNameNS:function(e,t){var n=new w,r=null;return r="*"===e?"*"===t?s:c:"*"===t?u:l,n.length=h.call(this,r,0,n,e||null,t),n}};e.GetElementsByInterface=x,e.SelectorsInterface=D,e.MatchesInterface=H}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){for(;e&&e.nodeType!==Node.ELEMENT_NODE;)e=e.nextSibling;
-
-return e}function n(e){for(;e&&e.nodeType!==Node.ELEMENT_NODE;)e=e.previousSibling;return e}var r=e.wrappers.NodeList,o={get firstElementChild(){return t(this.firstChild)},get lastElementChild(){return n(this.lastChild)},get childElementCount(){for(var e=0,t=this.firstElementChild;t;t=t.nextElementSibling)e++;return e},get children(){for(var e=new r,t=0,n=this.firstElementChild;n;n=n.nextElementSibling)e[t++]=n;return e.length=t,e},remove:function(){var e=this.parentNode;e&&e.removeChild(this)}},i={get nextElementSibling(){return t(this.nextSibling)},get previousElementSibling(){return n(this.previousSibling)}},a={getElementById:function(e){return/[ \t\n\r\f]/.test(e)?null:this.querySelector('[id="'+e+'"]')}};e.ChildNodeInterface=i,e.NonElementParentNodeInterface=a,e.ParentNodeInterface=o}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){r.call(this,e)}var n=e.ChildNodeInterface,r=e.wrappers.Node,o=e.enqueueMutation,i=e.mixin,a=e.registerWrapper,s=e.unsafeUnwrap,c=window.CharacterData;t.prototype=Object.create(r.prototype),i(t.prototype,{get nodeValue(){return this.data},set nodeValue(e){this.data=e},get textContent(){return this.data},set textContent(e){this.data=e},get data(){return s(this).data},set data(e){var t=s(this).data;o(this,"characterData",{oldValue:t}),s(this).data=e}}),i(t.prototype,n),a(c,t,document.createTextNode("")),e.wrappers.CharacterData=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){return e>>>0}function n(e){r.call(this,e)}var r=e.wrappers.CharacterData,o=(e.enqueueMutation,e.mixin),i=e.registerWrapper,a=window.Text;n.prototype=Object.create(r.prototype),o(n.prototype,{splitText:function(e){e=t(e);var n=this.data;if(e>n.length)throw new Error("IndexSizeError");var r=n.slice(0,e),o=n.slice(e);this.data=r;var i=this.ownerDocument.createTextNode(o);return this.parentNode&&this.parentNode.insertBefore(i,this.nextSibling),i}}),i(a,n,document.createTextNode("")),e.wrappers.Text=n}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){return i(e).getAttribute("class")}function n(e,t){a(e,"attributes",{name:"class",namespace:null,oldValue:t})}function r(t){e.invalidateRendererBasedOnAttribute(t,"class")}function o(e,o,i){var a=e.ownerElement_;if(null==a)return o.apply(e,i);var s=t(a),c=o.apply(e,i);return t(a)!==s&&(n(a,s),r(a)),c}if(!window.DOMTokenList)return void console.warn("Missing DOMTokenList prototype, please include a compatible classList polyfill such as http://goo.gl/uTcepH.");var i=e.unsafeUnwrap,a=e.enqueueMutation,s=DOMTokenList.prototype.add;DOMTokenList.prototype.add=function(){o(this,s,arguments)};var c=DOMTokenList.prototype.remove;DOMTokenList.prototype.remove=function(){o(this,c,arguments)};var u=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(){return o(this,u,arguments)}}(window.ShadowDOMPolyfill),function(e){"use strict";function t(t,n){var r=t.parentNode;if(r&&r.shadowRoot){var o=e.getRendererForHost(r);o.dependsOnAttribute(n)&&o.invalidate()}}function n(e,t,n){l(e,"attributes",{name:t,namespace:null,oldValue:n})}function r(e){a.call(this,e)}var o=e.ChildNodeInterface,i=e.GetElementsByInterface,a=e.wrappers.Node,s=e.ParentNodeInterface,c=e.SelectorsInterface,u=e.MatchesInterface,l=(e.addWrapNodeListMethod,e.enqueueMutation),p=e.mixin,d=(e.oneOf,e.registerWrapper),f=e.unsafeUnwrap,h=e.wrappers,w=window.Element,m=["matches","mozMatchesSelector","msMatchesSelector","webkitMatchesSelector"].filter(function(e){return w.prototype[e]}),g=m[0],v=w.prototype[g],b=new WeakMap;r.prototype=Object.create(a.prototype),p(r.prototype,{createShadowRoot:function(){var t=new h.ShadowRoot(this);f(this).polymerShadowRoot_=t;var n=e.getRendererForHost(this);return n.invalidate(),t},get shadowRoot(){return f(this).polymerShadowRoot_||null},setAttribute:function(e,r){var o=f(this).getAttribute(e);f(this).setAttribute(e,r),n(this,e,o),t(this,e)},removeAttribute:function(e){var r=f(this).getAttribute(e);f(this).removeAttribute(e),n(this,e,r),t(this,e)},get classList(){var e=b.get(this);if(!e){if(e=f(this).classList,!e)return;e.ownerElement_=this,b.set(this,e)}return e},get className(){return f(this).className},set className(e){this.setAttribute("class",e)},get id(){return f(this).id},set id(e){this.setAttribute("id",e)}}),m.forEach(function(e){"matches"!==e&&(r.prototype[e]=function(e){return this.matches(e)})}),w.prototype.webkitCreateShadowRoot&&(r.prototype.webkitCreateShadowRoot=r.prototype.createShadowRoot),p(r.prototype,o),p(r.prototype,i),p(r.prototype,s),p(r.prototype,c),p(r.prototype,u),d(w,r,document.createElementNS(null,"x")),e.invalidateRendererBasedOnAttribute=t,e.matchesNames=m,e.originalMatches=v,e.wrappers.Element=r}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){switch(e){case"&":return"&";case"<":return"<";case">":return">";case'"':return""";case"Â ":return" "}}function n(e){return e.replace(j,t)}function r(e){return e.replace(L,t)}function o(e){for(var t={},n=0;n"):c+">"+s(e)+""+a+">";case Node.TEXT_NODE:var p=e.data;return t&&C[t.localName]?p:r(p);case Node.COMMENT_NODE:return"";default:throw console.error(e),new Error("not implemented")}}function s(e){e instanceof N.HTMLTemplateElement&&(e=e.content);for(var t="",n=e.firstChild;n;n=n.nextSibling)t+=a(n,e);return t}function c(e,t,n){var r=n||"div";e.textContent="";var o=T(e.ownerDocument.createElement(r));o.innerHTML=t;for(var i;i=o.firstChild;)e.appendChild(O(i))}function u(e){w.call(this,e)}function l(e,t){var n=T(e.cloneNode(!1));n.innerHTML=t;for(var r,o=T(document.createDocumentFragment());r=n.firstChild;)o.appendChild(r);return O(o)}function p(t){return function(){return e.renderAllPending(),M(this)[t]}}function d(e){m(u,e,p(e))}function f(t){Object.defineProperty(u.prototype,t,{get:p(t),set:function(n){e.renderAllPending(),M(this)[t]=n},configurable:!0,enumerable:!0})}function h(t){Object.defineProperty(u.prototype,t,{value:function(){return e.renderAllPending(),M(this)[t].apply(M(this),arguments)},configurable:!0,enumerable:!0})}var w=e.wrappers.Element,m=e.defineGetter,g=e.enqueueMutation,v=e.mixin,b=e.nodesWereAdded,y=e.nodesWereRemoved,E=e.registerWrapper,S=e.snapshotNodeList,M=e.unsafeUnwrap,T=e.unwrap,O=e.wrap,N=e.wrappers,j=/[&\u00A0"]/g,L=/[&\u00A0<>]/g,_=o(["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),C=o(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]),D="http://www.w3.org/1999/xhtml",H=/MSIE/.test(navigator.userAgent),x=window.HTMLElement,R=window.HTMLTemplateElement;u.prototype=Object.create(w.prototype),v(u.prototype,{get innerHTML(){return s(this)},set innerHTML(e){if(H&&C[this.localName])return void(this.textContent=e);var t=S(this.childNodes);this.invalidateShadowRenderer()?this instanceof N.HTMLTemplateElement?c(this.content,e):c(this,e,this.tagName):!R&&this instanceof N.HTMLTemplateElement?c(this.content,e):M(this).innerHTML=e;var n=S(this.childNodes);g(this,"childList",{addedNodes:n,removedNodes:t}),y(t),b(n,this)},get outerHTML(){return a(this,this.parentNode)},set outerHTML(e){var t=this.parentNode;if(t){t.invalidateShadowRenderer();var n=l(t,e);t.replaceChild(n,this)}},insertAdjacentHTML:function(e,t){var n,r;switch(String(e).toLowerCase()){case"beforebegin":n=this.parentNode,r=this;break;case"afterend":n=this.parentNode,r=this.nextSibling;break;case"afterbegin":n=this,r=this.firstChild;break;case"beforeend":n=this,r=null;break;default:return}var o=l(n,t);n.insertBefore(o,r)},get hidden(){return this.hasAttribute("hidden")},set hidden(e){e?this.setAttribute("hidden",""):this.removeAttribute("hidden")}}),["clientHeight","clientLeft","clientTop","clientWidth","offsetHeight","offsetLeft","offsetTop","offsetWidth","scrollHeight","scrollWidth"].forEach(d),["scrollLeft","scrollTop"].forEach(f),["getBoundingClientRect","getClientRects","scrollIntoView"].forEach(h),E(x,u,document.createElement("b")),e.wrappers.HTMLElement=u,e.getInnerHTML=s,e.setInnerHTML=c}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.unsafeUnwrap,a=e.wrap,s=window.HTMLCanvasElement;t.prototype=Object.create(n.prototype),r(t.prototype,{getContext:function(){var e=i(this).getContext.apply(i(this),arguments);return e&&a(e)}}),o(s,t,document.createElement("canvas")),e.wrappers.HTMLCanvasElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=window.HTMLContentElement;t.prototype=Object.create(n.prototype),r(t.prototype,{constructor:t,get select(){return this.getAttribute("select")},set select(e){this.setAttribute("select",e)},setAttribute:function(e,t){n.prototype.setAttribute.call(this,e,t),"select"===String(e).toLowerCase()&&this.invalidateShadowRenderer(!0)}}),i&&o(i,t),e.wrappers.HTMLContentElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.wrapHTMLCollection,a=e.unwrap,s=window.HTMLFormElement;t.prototype=Object.create(n.prototype),r(t.prototype,{get elements(){return i(a(this).elements)}}),o(s,t,document.createElement("form")),e.wrappers.HTMLFormElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){r.call(this,e)}function n(e,t){if(!(this instanceof n))throw new TypeError("DOM object constructor cannot be called as a function.");var o=i(document.createElement("img"));r.call(this,o),a(o,this),void 0!==e&&(o.width=e),void 0!==t&&(o.height=t)}var r=e.wrappers.HTMLElement,o=e.registerWrapper,i=e.unwrap,a=e.rewrap,s=window.HTMLImageElement;t.prototype=Object.create(r.prototype),o(s,t,document.createElement("img")),n.prototype=t.prototype,e.wrappers.HTMLImageElement=t,e.wrappers.Image=n}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=(e.mixin,e.wrappers.NodeList,e.registerWrapper),o=window.HTMLShadowElement;t.prototype=Object.create(n.prototype),t.prototype.constructor=t,o&&r(o,t),e.wrappers.HTMLShadowElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){if(!e.defaultView)return e;var t=p.get(e);if(!t){for(t=e.implementation.createHTMLDocument("");t.lastChild;)t.removeChild(t.lastChild);p.set(e,t)}return t}function n(e){for(var n,r=t(e.ownerDocument),o=c(r.createDocumentFragment());n=e.firstChild;)o.appendChild(n);return o}function r(e){if(o.call(this,e),!d){var t=n(e);l.set(this,u(t))}}var o=e.wrappers.HTMLElement,i=e.mixin,a=e.registerWrapper,s=e.unsafeUnwrap,c=e.unwrap,u=e.wrap,l=new WeakMap,p=new WeakMap,d=window.HTMLTemplateElement;r.prototype=Object.create(o.prototype),i(r.prototype,{constructor:r,get content(){return d?u(s(this).content):l.get(this)}}),d&&a(d,r),e.wrappers.HTMLTemplateElement=r}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.registerWrapper,o=window.HTMLMediaElement;o&&(t.prototype=Object.create(n.prototype),r(o,t,document.createElement("audio")),e.wrappers.HTMLMediaElement=t)}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){r.call(this,e)}function n(e){if(!(this instanceof n))throw new TypeError("DOM object constructor cannot be called as a function.");var t=i(document.createElement("audio"));r.call(this,t),a(t,this),t.setAttribute("preload","auto"),void 0!==e&&t.setAttribute("src",e)}var r=e.wrappers.HTMLMediaElement,o=e.registerWrapper,i=e.unwrap,a=e.rewrap,s=window.HTMLAudioElement;s&&(t.prototype=Object.create(r.prototype),o(s,t,document.createElement("audio")),n.prototype=t.prototype,e.wrappers.HTMLAudioElement=t,e.wrappers.Audio=n)}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){return e.replace(/\s+/g," ").trim()}function n(e){o.call(this,e)}function r(e,t,n,i){if(!(this instanceof r))throw new TypeError("DOM object constructor cannot be called as a function.");var a=c(document.createElement("option"));o.call(this,a),s(a,this),void 0!==e&&(a.text=e),void 0!==t&&a.setAttribute("value",t),n===!0&&a.setAttribute("selected",""),a.selected=i===!0}var o=e.wrappers.HTMLElement,i=e.mixin,a=e.registerWrapper,s=e.rewrap,c=e.unwrap,u=e.wrap,l=window.HTMLOptionElement;n.prototype=Object.create(o.prototype),i(n.prototype,{get text(){return t(this.textContent)},set text(e){this.textContent=t(String(e))},get form(){return u(c(this).form)}}),a(l,n,document.createElement("option")),r.prototype=n.prototype,e.wrappers.HTMLOptionElement=n,e.wrappers.Option=r}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.unwrap,a=e.wrap,s=window.HTMLSelectElement;t.prototype=Object.create(n.prototype),r(t.prototype,{add:function(e,t){"object"==typeof t&&(t=i(t)),i(this).add(i(e),t)},remove:function(e){return void 0===e?void n.prototype.remove.call(this):("object"==typeof e&&(e=i(e)),void i(this).remove(e))},get form(){return a(i(this).form)}}),o(s,t,document.createElement("select")),e.wrappers.HTMLSelectElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.unwrap,a=e.wrap,s=e.wrapHTMLCollection,c=window.HTMLTableElement;t.prototype=Object.create(n.prototype),r(t.prototype,{get caption(){return a(i(this).caption)},createCaption:function(){return a(i(this).createCaption())},get tHead(){return a(i(this).tHead)},createTHead:function(){return a(i(this).createTHead())},createTFoot:function(){return a(i(this).createTFoot())},get tFoot(){return a(i(this).tFoot)},get tBodies(){return s(i(this).tBodies)},createTBody:function(){return a(i(this).createTBody())},get rows(){return s(i(this).rows)},insertRow:function(e){return a(i(this).insertRow(e))}}),o(c,t,document.createElement("table")),e.wrappers.HTMLTableElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.wrapHTMLCollection,a=e.unwrap,s=e.wrap,c=window.HTMLTableSectionElement;t.prototype=Object.create(n.prototype),r(t.prototype,{constructor:t,get rows(){return i(a(this).rows)},insertRow:function(e){return s(a(this).insertRow(e))}}),o(c,t,document.createElement("thead")),e.wrappers.HTMLTableSectionElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.wrapHTMLCollection,a=e.unwrap,s=e.wrap,c=window.HTMLTableRowElement;t.prototype=Object.create(n.prototype),r(t.prototype,{get cells(){return i(a(this).cells)},insertCell:function(e){return s(a(this).insertCell(e))}}),o(c,t,document.createElement("tr")),e.wrappers.HTMLTableRowElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){switch(e.localName){case"content":return new n(e);case"shadow":return new o(e);case"template":return new i(e)}r.call(this,e)}var n=e.wrappers.HTMLContentElement,r=e.wrappers.HTMLElement,o=e.wrappers.HTMLShadowElement,i=e.wrappers.HTMLTemplateElement,a=(e.mixin,e.registerWrapper),s=window.HTMLUnknownElement;t.prototype=Object.create(r.prototype),a(s,t),e.wrappers.HTMLUnknownElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";var t=e.wrappers.Element,n=e.wrappers.HTMLElement,r=e.registerObject,o=e.defineWrapGetter,i="http://www.w3.org/2000/svg",a=document.createElementNS(i,"title"),s=r(a),c=Object.getPrototypeOf(s.prototype).constructor;if(!("classList"in a)){var u=Object.getOwnPropertyDescriptor(t.prototype,"classList");Object.defineProperty(n.prototype,"classList",u),delete t.prototype.classList}o(c,"ownerSVGElement"),e.wrappers.SVGElement=c}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){d.call(this,e)}var n=e.mixin,r=e.registerWrapper,o=e.unwrap,i=e.wrap,a=window.SVGUseElement,s="http://www.w3.org/2000/svg",c=i(document.createElementNS(s,"g")),u=document.createElementNS(s,"use"),l=c.constructor,p=Object.getPrototypeOf(l.prototype),d=p.constructor;t.prototype=Object.create(p),"instanceRoot"in u&&n(t.prototype,{get instanceRoot(){return i(o(this).instanceRoot)},get animatedInstanceRoot(){return i(o(this).animatedInstanceRoot)}}),r(a,t,u),e.wrappers.SVGUseElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.EventTarget,r=e.mixin,o=e.registerWrapper,i=e.unsafeUnwrap,a=e.wrap,s=window.SVGElementInstance;s&&(t.prototype=Object.create(n.prototype),r(t.prototype,{get correspondingElement(){return a(i(this).correspondingElement)},get correspondingUseElement(){return a(i(this).correspondingUseElement)},get parentNode(){return a(i(this).parentNode)},get childNodes(){throw new Error("Not implemented")},get firstChild(){return a(i(this).firstChild)},get lastChild(){return a(i(this).lastChild)},get previousSibling(){return a(i(this).previousSibling)},get nextSibling(){return a(i(this).nextSibling)}}),o(s,t),e.wrappers.SVGElementInstance=t)}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){o(e,this)}var n=e.mixin,r=e.registerWrapper,o=e.setWrapper,i=e.unsafeUnwrap,a=e.unwrap,s=e.unwrapIfNeeded,c=e.wrap,u=window.CanvasRenderingContext2D;n(t.prototype,{get canvas(){return c(i(this).canvas)},drawImage:function(){arguments[0]=s(arguments[0]),i(this).drawImage.apply(i(this),arguments)},createPattern:function(){return arguments[0]=a(arguments[0]),i(this).createPattern.apply(i(this),arguments)}}),r(u,t,document.createElement("canvas").getContext("2d")),e.wrappers.CanvasRenderingContext2D=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){o(e,this)}var n=e.mixin,r=e.registerWrapper,o=e.setWrapper,i=e.unsafeUnwrap,a=e.unwrapIfNeeded,s=e.wrap,c=window.WebGLRenderingContext;if(c){n(t.prototype,{get canvas(){return s(i(this).canvas)},texImage2D:function(){arguments[5]=a(arguments[5]),i(this).texImage2D.apply(i(this),arguments)},texSubImage2D:function(){arguments[6]=a(arguments[6]),i(this).texSubImage2D.apply(i(this),arguments)}});var u=/WebKit/.test(navigator.userAgent)?{drawingBufferHeight:null,drawingBufferWidth:null}:{};r(c,t,u),e.wrappers.WebGLRenderingContext=t}}(window.ShadowDOMPolyfill),function(e){"use strict";var t=e.GetElementsByInterface,n=e.NonElementParentNodeInterface,r=e.ParentNodeInterface,o=e.SelectorsInterface,i=e.mixin,a=e.registerObject,s=a(document.createDocumentFragment());i(s.prototype,r),i(s.prototype,o),i(s.prototype,t),i(s.prototype,n);var c=a(document.createComment(""));e.wrappers.Comment=c,e.wrappers.DocumentFragment=s}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){var t=p(l(e).ownerDocument.createDocumentFragment());n.call(this,t),c(t,this);var o=e.shadowRoot;f.set(this,o),this.treeScope_=new r(this,a(o||e)),d.set(this,e)}var n=e.wrappers.DocumentFragment,r=e.TreeScope,o=e.elementFromPoint,i=e.getInnerHTML,a=e.getTreeScope,s=e.mixin,c=e.rewrap,u=e.setInnerHTML,l=e.unsafeUnwrap,p=e.unwrap,d=new WeakMap,f=new WeakMap;t.prototype=Object.create(n.prototype),s(t.prototype,{constructor:t,get innerHTML(){return i(this)},set innerHTML(e){u(this,e),this.invalidateShadowRenderer()},get olderShadowRoot(){return f.get(this)||null},get host(){return d.get(this)||null},invalidateShadowRenderer:function(){return d.get(this).invalidateShadowRenderer()},elementFromPoint:function(e,t){return o(this,this.ownerDocument,e,t)}}),e.wrappers.ShadowRoot=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){var t=p(e).root;return t instanceof f?t.host:null}function n(t,n){if(t.shadowRoot){n=Math.min(t.childNodes.length-1,n);var r=t.childNodes[n];if(r){var o=e.getDestinationInsertionPoints(r);if(o.length>0){var i=o[0].parentNode;i.nodeType==Node.ELEMENT_NODE&&(t=i)}}}return t}function r(e){return e=l(e),t(e)||e}function o(e){a(e,this)}var i=e.registerWrapper,a=e.setWrapper,s=e.unsafeUnwrap,c=e.unwrap,u=e.unwrapIfNeeded,l=e.wrap,p=e.getTreeScope,d=window.Range,f=e.wrappers.ShadowRoot;o.prototype={get startContainer(){return r(s(this).startContainer)},get endContainer(){return r(s(this).endContainer)},get commonAncestorContainer(){return r(s(this).commonAncestorContainer)},setStart:function(e,t){e=n(e,t),s(this).setStart(u(e),t)},setEnd:function(e,t){e=n(e,t),s(this).setEnd(u(e),t)},setStartBefore:function(e){s(this).setStartBefore(u(e))},setStartAfter:function(e){s(this).setStartAfter(u(e))},setEndBefore:function(e){s(this).setEndBefore(u(e))},setEndAfter:function(e){s(this).setEndAfter(u(e))},selectNode:function(e){s(this).selectNode(u(e))},selectNodeContents:function(e){s(this).selectNodeContents(u(e))},compareBoundaryPoints:function(e,t){return s(this).compareBoundaryPoints(e,c(t))},extractContents:function(){return l(s(this).extractContents())},cloneContents:function(){return l(s(this).cloneContents())},insertNode:function(e){s(this).insertNode(u(e))},surroundContents:function(e){s(this).surroundContents(u(e))},cloneRange:function(){return l(s(this).cloneRange())},isPointInRange:function(e,t){return s(this).isPointInRange(u(e),t)},comparePoint:function(e,t){return s(this).comparePoint(u(e),t)},intersectsNode:function(e){return s(this).intersectsNode(u(e))},toString:function(){return s(this).toString()}},d.prototype.createContextualFragment&&(o.prototype.createContextualFragment=function(e){return l(s(this).createContextualFragment(e))}),i(window.Range,o,document.createRange()),e.wrappers.Range=o}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){e.previousSibling_=e.previousSibling,e.nextSibling_=e.nextSibling,e.parentNode_=e.parentNode}function n(n,o,i){var a=x(n),s=x(o),c=i?x(i):null;if(r(o),t(o),i)n.firstChild===i&&(n.firstChild_=i),i.previousSibling_=i.previousSibling;else{n.lastChild_=n.lastChild,n.lastChild===n.firstChild&&(n.firstChild_=n.firstChild);var u=R(a.lastChild);u&&(u.nextSibling_=u.nextSibling)}e.originalInsertBefore.call(a,s,c)}function r(n){var r=x(n),o=r.parentNode;if(o){var i=R(o);t(n),n.previousSibling&&(n.previousSibling.nextSibling_=n),n.nextSibling&&(n.nextSibling.previousSibling_=n),i.lastChild===n&&(i.lastChild_=n),i.firstChild===n&&(i.firstChild_=n),e.originalRemoveChild.call(o,r)}}function o(e){W.set(e,[])}function i(e){var t=W.get(e);return t||W.set(e,t=[]),t}function a(e){for(var t=[],n=0,r=e.firstChild;r;r=r.nextSibling)t[n++]=r;return t}function s(){for(var e=0;ew;w++){var m=R(i[l++]);s.get(m)||r(m)}for(var g=f.addedCount,v=i[l]&&R(i[l]),w=0;g>w;w++){var b=o[u++],y=b.node;n(t,y,v),s.set(y,!0),b.sync(s)}p+=g}for(var d=p;d=0;o--){var i=r[o],a=w(i);if(a){var s=i.olderShadowRoot;s&&(n=h(s));for(var c=0;c=0;l--)u=Object.create(u);["createdCallback","attachedCallback","detachedCallback","attributeChangedCallback"].forEach(function(e){var t=o[e];t&&(u[e]=function(){_(this)instanceof r||O(this),t.apply(_(this),arguments)})});var p={prototype:u};i&&(p["extends"]=i),r.prototype=o,r.prototype.constructor=r,e.constructorTable.set(u,r),e.nativePrototypeTable.set(o,u);W.call(L(this),t,p);return r},y([window.HTMLDocument||window.Document],["registerElement"])}y([window.HTMLBodyElement,window.HTMLDocument||window.Document,window.HTMLHeadElement,window.HTMLHtmlElement],["appendChild","compareDocumentPosition","contains","getElementsByClassName","getElementsByTagName","getElementsByTagNameNS","insertBefore","querySelector","querySelectorAll","removeChild","replaceChild"]),y([window.HTMLBodyElement,window.HTMLHeadElement,window.HTMLHtmlElement],E),y([window.HTMLDocument||window.Document],["adoptNode","importNode","contains","createComment","createDocumentFragment","createElement","createElementNS","createEvent","createEventNS","createRange","createTextNode","createTreeWalker","elementFromPoint","getElementById","getElementsByName","getSelection"]),S(t.prototype,u),S(t.prototype,p),S(t.prototype,h),S(t.prototype,d),S(t.prototype,{get implementation(){var e=D.get(this);return e?e:(e=new a(L(this).implementation),D.set(this,e),e)},get defaultView(){return _(L(this).defaultView)}}),M(window.Document,t,document.implementation.createHTMLDocument("")),window.HTMLDocument&&M(window.HTMLDocument,t),C([window.HTMLBodyElement,window.HTMLDocument||window.Document,window.HTMLHeadElement]);var I=document.implementation.createDocument;a.prototype.createDocument=function(){return arguments[2]=L(arguments[2]),_(I.apply(j(this),arguments))},s(a,"createDocumentType"),s(a,"createHTMLDocument"),c(a,"hasFeature"),M(window.DOMImplementation,a),y([window.DOMImplementation],["createDocument","createDocumentType","createHTMLDocument","hasFeature"]),e.adoptNodeNoRemove=r,e.wrappers.DOMImplementation=a,e.wrappers.Document=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.EventTarget,r=e.wrappers.Selection,o=e.mixin,i=e.registerWrapper,a=e.renderAllPending,s=e.unwrap,c=e.unwrapIfNeeded,u=e.wrap,l=window.Window,p=window.getComputedStyle,d=window.getDefaultComputedStyle,f=window.getSelection;t.prototype=Object.create(n.prototype),l.prototype.getComputedStyle=function(e,t){return u(this||window).getComputedStyle(c(e),t)},d&&(l.prototype.getDefaultComputedStyle=function(e,t){return u(this||window).getDefaultComputedStyle(c(e),t)}),l.prototype.getSelection=function(){return u(this||window).getSelection()},delete window.getComputedStyle,delete window.getDefaultComputedStyle,delete window.getSelection,["addEventListener","removeEventListener","dispatchEvent"].forEach(function(e){l.prototype[e]=function(){var t=u(this||window);return t[e].apply(t,arguments)},delete window[e]}),o(t.prototype,{getComputedStyle:function(e,t){return a(),p.call(s(this),c(e),t)},getSelection:function(){return a(),new r(f.call(s(this)))},get document(){return u(s(this).document)}}),d&&(t.prototype.getDefaultComputedStyle=function(e,t){return a(),d.call(s(this),c(e),t)}),i(l,t,window),e.wrappers.Window=t}(window.ShadowDOMPolyfill),function(e){"use strict";var t=e.unwrap,n=window.DataTransfer||window.Clipboard,r=n.prototype.setDragImage;r&&(n.prototype.setDragImage=function(e,n,o){r.call(this,t(e),n,o)})}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){var t;t=e instanceof i?e:new i(e&&o(e)),r(t,this)}var n=e.registerWrapper,r=e.setWrapper,o=e.unwrap,i=window.FormData;i&&(n(i,t,new i),e.wrappers.FormData=t)}(window.ShadowDOMPolyfill),function(e){"use strict";var t=e.unwrapIfNeeded,n=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.send=function(e){return n.call(this,t(e))}}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){var t=n[e],r=window[t];if(r){var o=document.createElement(e),i=o.constructor;window[t]=i}}var n=(e.isWrapperFor,{a:"HTMLAnchorElement",area:"HTMLAreaElement",audio:"HTMLAudioElement",base:"HTMLBaseElement",body:"HTMLBodyElement",br:"HTMLBRElement",button:"HTMLButtonElement",canvas:"HTMLCanvasElement",caption:"HTMLTableCaptionElement",col:"HTMLTableColElement",content:"HTMLContentElement",data:"HTMLDataElement",datalist:"HTMLDataListElement",del:"HTMLModElement",dir:"HTMLDirectoryElement",div:"HTMLDivElement",dl:"HTMLDListElement",embed:"HTMLEmbedElement",fieldset:"HTMLFieldSetElement",font:"HTMLFontElement",form:"HTMLFormElement",frame:"HTMLFrameElement",frameset:"HTMLFrameSetElement",h1:"HTMLHeadingElement",head:"HTMLHeadElement",hr:"HTMLHRElement",html:"HTMLHtmlElement",iframe:"HTMLIFrameElement",img:"HTMLImageElement",input:"HTMLInputElement",keygen:"HTMLKeygenElement",label:"HTMLLabelElement",legend:"HTMLLegendElement",li:"HTMLLIElement",link:"HTMLLinkElement",map:"HTMLMapElement",marquee:"HTMLMarqueeElement",menu:"HTMLMenuElement",menuitem:"HTMLMenuItemElement",meta:"HTMLMetaElement",meter:"HTMLMeterElement",object:"HTMLObjectElement",ol:"HTMLOListElement",optgroup:"HTMLOptGroupElement",option:"HTMLOptionElement",output:"HTMLOutputElement",p:"HTMLParagraphElement",param:"HTMLParamElement",pre:"HTMLPreElement",progress:"HTMLProgressElement",q:"HTMLQuoteElement",script:"HTMLScriptElement",select:"HTMLSelectElement",shadow:"HTMLShadowElement",source:"HTMLSourceElement",span:"HTMLSpanElement",style:"HTMLStyleElement",table:"HTMLTableElement",tbody:"HTMLTableSectionElement",template:"HTMLTemplateElement",textarea:"HTMLTextAreaElement",thead:"HTMLTableSectionElement",time:"HTMLTimeElement",title:"HTMLTitleElement",tr:"HTMLTableRowElement",track:"HTMLTrackElement",ul:"HTMLUListElement",video:"HTMLVideoElement"});Object.keys(n).forEach(t),Object.getOwnPropertyNames(e.wrappers).forEach(function(t){window[t]=e.wrappers[t]})}(window.ShadowDOMPolyfill);`},
- "/bower_components/webcomponentsjs/bower.json": {"/bower_components/webcomponentsjs/bower.json", time.Unix(0, 1440513533113507588), false, `{
- "name": "webcomponentsjs",
- "main": "webcomponents.js",
- "version": "0.7.11",
- "homepage": "http://webcomponents.org",
- "authors": [
- "The Polymer Authors"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/webcomponents/webcomponentsjs.git"
- },
- "keywords": [
- "webcomponents"
- ],
- "license": "BSD",
- "ignore": []
-}
-`},
- "/bower_components/webcomponentsjs/build.log": {"/bower_components/webcomponentsjs/build.log", time.Unix(0, 1440513533113507588), false, `BUILD LOG
----------
-Build Time: 2015-08-13T12:57:18-0700
-
-NODEJS INFORMATION
-==================
-nodejs: v0.12.7
-gulp: 3.9.0
-gulp-audit: 1.0.0
-gulp-concat: 2.6.0
-gulp-header: 1.2.2
-gulp-uglify: 1.2.0
-run-sequence: 1.1.2
-web-component-tester: 3.3.10
-
-REPO REVISIONS
-==============
-webcomponentsjs: 0fc12104ac6f39421c5105a3694aa740ed3835df
-
-BUILD HASHES
-============
-CustomElements.js: 174a3a08af4a551dbd436f5dc527e29c4b989919
-CustomElements.min.js: 5d7f8991d0ce8a10307114de07d7ce0d1481f3a5
-HTMLImports.js: 6bb55981141fcf206496c34dad811e176f0d13f8
-HTMLImports.min.js: f956c8f8751b4e87fd93f5d4a3d053e6e8654d52
-MutationObserver.js: e0fce524fed93243c80971b72be846775bb74d53
-MutationObserver.min.js: 25c795fa01bd9d9feb3a52cf60ab2b6749b78c75
-ShadowDOM.js: 1874e157c0462484bbb34b812d6ec7a97cf63995
-ShadowDOM.min.js: 9a7fca60240b59961eba22b941ab0f890124e96b
-webcomponents-lite.js: 406c7a34b1ab536e7bdf943c22d4293fbbe464e9
-webcomponents-lite.min.js: 97f3d2215d0390bc2e246bd1c1f363b257050f70
-webcomponents.js: 8aa2b2a294e917ec792f6b52f27cfbf9b00f519f
-webcomponents.min.js: 4df2e85a7b0cd173494a9e8ab71660943734fcf9`},
- "/bower_components/webcomponentsjs/package.json": {"/bower_components/webcomponentsjs/package.json", time.Unix(0, 1440513533113507588), false, `{
- "name": "webcomponents.js",
- "version": "0.7.11",
- "description": "webcomponents.js",
- "main": "webcomponents.js",
- "directories": {
- "test": "tests"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/webcomponents/webcomponentsjs.git"
- },
- "author": "The Polymer Authors",
- "license": {
- "type": "BSD-3-Clause",
- "url": "http://polymer.github.io/LICENSE.txt"
- },
- "bugs": {
- "url": "https://github.com/webcomponents/webcomponentsjs/issues"
- },
- "homepage": "http://webcomponents.org",
- "devDependencies": {
- "gulp": "^3.8.8",
- "gulp-audit": "^1.0.0",
- "gulp-concat": "^2.4.1",
- "gulp-header": "^1.1.1",
- "gulp-uglify": "^1.0.1",
- "run-sequence": "^1.0.1",
- "web-component-tester": "*"
- }
-}
-`},
- "/bower_components/webcomponentsjs/webcomponents-lite.js": {"/bower_components/webcomponentsjs/webcomponents-lite.js", time.Unix(0, 1440513533113507588), false, `/**
- * @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
- */
-// @version 0.7.11
-window.WebComponents = window.WebComponents || {};
-
-(function(scope) {
- var flags = scope.flags || {};
- var file = "webcomponents-lite.js";
- var script = document.querySelector('script[src*="' + file + '"]');
- if (!flags.noOpts) {
- location.search.slice(1).split("&").forEach(function(option) {
- var parts = option.split("=");
- var match;
- if (parts[0] && (match = parts[0].match(/wc-(.+)/))) {
- flags[match[1]] = parts[1] || true;
- }
- });
- if (script) {
- for (var i = 0, a; a = script.attributes[i]; i++) {
- if (a.name !== "src") {
- flags[a.name] = a.value || true;
- }
- }
- }
- if (flags.log) {
- var parts = flags.log.split(",");
- flags.log = {};
- parts.forEach(function(f) {
- flags.log[f] = true;
- });
- } else {
- flags.log = {};
- }
- }
- flags.shadow = flags.shadow || flags.shadowdom || flags.polyfill;
- if (flags.shadow === "native") {
- flags.shadow = false;
- } else {
- flags.shadow = flags.shadow || !HTMLElement.prototype.createShadowRoot;
- }
- if (flags.register) {
- window.CustomElements = window.CustomElements || {
- flags: {}
- };
- window.CustomElements.flags.register = flags.register;
- }
- scope.flags = flags;
-})(window.WebComponents);
-
-(function(scope) {
- "use strict";
- var hasWorkingUrl = false;
- if (!scope.forceJURL) {
- try {
- var u = new URL("b", "http://a");
- u.pathname = "c%20d";
- hasWorkingUrl = u.href === "http://a/c%20d";
- } catch (e) {}
- }
- if (hasWorkingUrl) return;
- var relative = Object.create(null);
- relative["ftp"] = 21;
- relative["file"] = 0;
- relative["gopher"] = 70;
- relative["http"] = 80;
- relative["https"] = 443;
- relative["ws"] = 80;
- relative["wss"] = 443;
- var relativePathDotMapping = Object.create(null);
- relativePathDotMapping["%2e"] = ".";
- relativePathDotMapping[".%2e"] = "..";
- relativePathDotMapping["%2e."] = "..";
- relativePathDotMapping["%2e%2e"] = "..";
- function isRelativeScheme(scheme) {
- return relative[scheme] !== undefined;
- }
- function invalid() {
- clear.call(this);
- this._isInvalid = true;
- }
- function IDNAToASCII(h) {
- if ("" == h) {
- invalid.call(this);
- }
- return h.toLowerCase();
- }
- function percentEscape(c) {
- var unicode = c.charCodeAt(0);
- if (unicode > 32 && unicode < 127 && [ 34, 35, 60, 62, 63, 96 ].indexOf(unicode) == -1) {
- return c;
- }
- return encodeURIComponent(c);
- }
- function percentEscapeQuery(c) {
- var unicode = c.charCodeAt(0);
- if (unicode > 32 && unicode < 127 && [ 34, 35, 60, 62, 96 ].indexOf(unicode) == -1) {
- return c;
- }
- return encodeURIComponent(c);
- }
- var EOF = undefined, ALPHA = /[a-zA-Z]/, ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/;
- function parse(input, stateOverride, base) {
- function err(message) {
- errors.push(message);
- }
- var state = stateOverride || "scheme start", cursor = 0, buffer = "", seenAt = false, seenBracket = false, errors = [];
- loop: while ((input[cursor - 1] != EOF || cursor == 0) && !this._isInvalid) {
- var c = input[cursor];
- switch (state) {
- case "scheme start":
- if (c && ALPHA.test(c)) {
- buffer += c.toLowerCase();
- state = "scheme";
- } else if (!stateOverride) {
- buffer = "";
- state = "no scheme";
- continue;
- } else {
- err("Invalid scheme.");
- break loop;
- }
- break;
-
- case "scheme":
- if (c && ALPHANUMERIC.test(c)) {
- buffer += c.toLowerCase();
- } else if (":" == c) {
- this._scheme = buffer;
- buffer = "";
- if (stateOverride) {
- break loop;
- }
- if (isRelativeScheme(this._scheme)) {
- this._isRelative = true;
- }
- if ("file" == this._scheme) {
- state = "relative";
- } else if (this._isRelative && base && base._scheme == this._scheme) {
- state = "relative or authority";
- } else if (this._isRelative) {
- state = "authority first slash";
- } else {
- state = "scheme data";
- }
- } else if (!stateOverride) {
- buffer = "";
- cursor = 0;
- state = "no scheme";
- continue;
- } else if (EOF == c) {
- break loop;
- } else {
- err("Code point not allowed in scheme: " + c);
- break loop;
- }
- break;
-
- case "scheme data":
- if ("?" == c) {
- this._query = "?";
- state = "query";
- } else if ("#" == c) {
- this._fragment = "#";
- state = "fragment";
- } else {
- if (EOF != c && " " != c && "\n" != c && "\r" != c) {
- this._schemeData += percentEscape(c);
- }
- }
- break;
-
- case "no scheme":
- if (!base || !isRelativeScheme(base._scheme)) {
- err("Missing scheme.");
- invalid.call(this);
- } else {
- state = "relative";
- continue;
- }
- break;
-
- case "relative or authority":
- if ("/" == c && "/" == input[cursor + 1]) {
- state = "authority ignore slashes";
- } else {
- err("Expected /, got: " + c);
- state = "relative";
- continue;
- }
- break;
-
- case "relative":
- this._isRelative = true;
- if ("file" != this._scheme) this._scheme = base._scheme;
- if (EOF == c) {
- this._host = base._host;
- this._port = base._port;
- this._path = base._path.slice();
- this._query = base._query;
- this._username = base._username;
- this._password = base._password;
- break loop;
- } else if ("/" == c || "\\" == c) {
- if ("\\" == c) err("\\ is an invalid code point.");
- state = "relative slash";
- } else if ("?" == c) {
- this._host = base._host;
- this._port = base._port;
- this._path = base._path.slice();
- this._query = "?";
- this._username = base._username;
- this._password = base._password;
- state = "query";
- } else if ("#" == c) {
- this._host = base._host;
- this._port = base._port;
- this._path = base._path.slice();
- this._query = base._query;
- this._fragment = "#";
- this._username = base._username;
- this._password = base._password;
- state = "fragment";
- } else {
- var nextC = input[cursor + 1];
- var nextNextC = input[cursor + 2];
- if ("file" != this._scheme || !ALPHA.test(c) || nextC != ":" && nextC != "|" || EOF != nextNextC && "/" != nextNextC && "\\" != nextNextC && "?" != nextNextC && "#" != nextNextC) {
- this._host = base._host;
- this._port = base._port;
- this._username = base._username;
- this._password = base._password;
- this._path = base._path.slice();
- this._path.pop();
- }
- state = "relative path";
- continue;
- }
- break;
-
- case "relative slash":
- if ("/" == c || "\\" == c) {
- if ("\\" == c) {
- err("\\ is an invalid code point.");
- }
- if ("file" == this._scheme) {
- state = "file host";
- } else {
- state = "authority ignore slashes";
- }
- } else {
- if ("file" != this._scheme) {
- this._host = base._host;
- this._port = base._port;
- this._username = base._username;
- this._password = base._password;
- }
- state = "relative path";
- continue;
- }
- break;
-
- case "authority first slash":
- if ("/" == c) {
- state = "authority second slash";
- } else {
- err("Expected '/', got: " + c);
- state = "authority ignore slashes";
- continue;
- }
- break;
-
- case "authority second slash":
- state = "authority ignore slashes";
- if ("/" != c) {
- err("Expected '/', got: " + c);
- continue;
- }
- break;
-
- case "authority ignore slashes":
- if ("/" != c && "\\" != c) {
- state = "authority";
- continue;
- } else {
- err("Expected authority, got: " + c);
- }
- break;
-
- case "authority":
- if ("@" == c) {
- if (seenAt) {
- err("@ already seen.");
- buffer += "%40";
- }
- seenAt = true;
- for (var i = 0; i < buffer.length; i++) {
- var cp = buffer[i];
- if (" " == cp || "\n" == cp || "\r" == cp) {
- err("Invalid whitespace in authority.");
- continue;
- }
- if (":" == cp && null === this._password) {
- this._password = "";
- continue;
- }
- var tempC = percentEscape(cp);
- null !== this._password ? this._password += tempC : this._username += tempC;
- }
- buffer = "";
- } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c) {
- cursor -= buffer.length;
- buffer = "";
- state = "host";
- continue;
- } else {
- buffer += c;
- }
- break;
-
- case "file host":
- if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c) {
- if (buffer.length == 2 && ALPHA.test(buffer[0]) && (buffer[1] == ":" || buffer[1] == "|")) {
- state = "relative path";
- } else if (buffer.length == 0) {
- state = "relative path start";
- } else {
- this._host = IDNAToASCII.call(this, buffer);
- buffer = "";
- state = "relative path start";
- }
- continue;
- } else if (" " == c || "\n" == c || "\r" == c) {
- err("Invalid whitespace in file host.");
- } else {
- buffer += c;
- }
- break;
-
- case "host":
- case "hostname":
- if (":" == c && !seenBracket) {
- this._host = IDNAToASCII.call(this, buffer);
- buffer = "";
- state = "port";
- if ("hostname" == stateOverride) {
- break loop;
- }
- } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c) {
- this._host = IDNAToASCII.call(this, buffer);
- buffer = "";
- state = "relative path start";
- if (stateOverride) {
- break loop;
- }
- continue;
- } else if (" " != c && "\n" != c && "\r" != c) {
- if ("[" == c) {
- seenBracket = true;
- } else if ("]" == c) {
- seenBracket = false;
- }
- buffer += c;
- } else {
- err("Invalid code point in host/hostname: " + c);
- }
- break;
-
- case "port":
- if (/[0-9]/.test(c)) {
- buffer += c;
- } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c || stateOverride) {
- if ("" != buffer) {
- var temp = parseInt(buffer, 10);
- if (temp != relative[this._scheme]) {
- this._port = temp + "";
- }
- buffer = "";
- }
- if (stateOverride) {
- break loop;
- }
- state = "relative path start";
- continue;
- } else if (" " == c || "\n" == c || "\r" == c) {
- err("Invalid code point in port: " + c);
- } else {
- invalid.call(this);
- }
- break;
-
- case "relative path start":
- if ("\\" == c) err("'\\' not allowed in path.");
- state = "relative path";
- if ("/" != c && "\\" != c) {
- continue;
- }
- break;
-
- case "relative path":
- if (EOF == c || "/" == c || "\\" == c || !stateOverride && ("?" == c || "#" == c)) {
- if ("\\" == c) {
- err("\\ not allowed in relative path.");
- }
- var tmp;
- if (tmp = relativePathDotMapping[buffer.toLowerCase()]) {
- buffer = tmp;
- }
- if (".." == buffer) {
- this._path.pop();
- if ("/" != c && "\\" != c) {
- this._path.push("");
- }
- } else if ("." == buffer && "/" != c && "\\" != c) {
- this._path.push("");
- } else if ("." != buffer) {
- if ("file" == this._scheme && this._path.length == 0 && buffer.length == 2 && ALPHA.test(buffer[0]) && buffer[1] == "|") {
- buffer = buffer[0] + ":";
- }
- this._path.push(buffer);
- }
- buffer = "";
- if ("?" == c) {
- this._query = "?";
- state = "query";
- } else if ("#" == c) {
- this._fragment = "#";
- state = "fragment";
- }
- } else if (" " != c && "\n" != c && "\r" != c) {
- buffer += percentEscape(c);
- }
- break;
-
- case "query":
- if (!stateOverride && "#" == c) {
- this._fragment = "#";
- state = "fragment";
- } else if (EOF != c && " " != c && "\n" != c && "\r" != c) {
- this._query += percentEscapeQuery(c);
- }
- break;
-
- case "fragment":
- if (EOF != c && " " != c && "\n" != c && "\r" != c) {
- this._fragment += c;
- }
- break;
- }
- cursor++;
- }
- }
- function clear() {
- this._scheme = "";
- this._schemeData = "";
- this._username = "";
- this._password = null;
- this._host = "";
- this._port = "";
- this._path = [];
- this._query = "";
- this._fragment = "";
- this._isInvalid = false;
- this._isRelative = false;
- }
- function jURL(url, base) {
- if (base !== undefined && !(base instanceof jURL)) base = new jURL(String(base));
- this._url = url;
- clear.call(this);
- var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, "");
- parse.call(this, input, null, base);
- }
- jURL.prototype = {
- toString: function() {
- return this.href;
- },
- get href() {
- if (this._isInvalid) return this._url;
- var authority = "";
- if ("" != this._username || null != this._password) {
- authority = this._username + (null != this._password ? ":" + this._password : "") + "@";
- }
- return this.protocol + (this._isRelative ? "//" + authority + this.host : "") + this.pathname + this._query + this._fragment;
- },
- set href(href) {
- clear.call(this);
- parse.call(this, href);
- },
- get protocol() {
- return this._scheme + ":";
- },
- set protocol(protocol) {
- if (this._isInvalid) return;
- parse.call(this, protocol + ":", "scheme start");
- },
- get host() {
- return this._isInvalid ? "" : this._port ? this._host + ":" + this._port : this._host;
- },
- set host(host) {
- if (this._isInvalid || !this._isRelative) return;
- parse.call(this, host, "host");
- },
- get hostname() {
- return this._host;
- },
- set hostname(hostname) {
- if (this._isInvalid || !this._isRelative) return;
- parse.call(this, hostname, "hostname");
- },
- get port() {
- return this._port;
- },
- set port(port) {
- if (this._isInvalid || !this._isRelative) return;
- parse.call(this, port, "port");
- },
- get pathname() {
- return this._isInvalid ? "" : this._isRelative ? "/" + this._path.join("/") : this._schemeData;
- },
- set pathname(pathname) {
- if (this._isInvalid || !this._isRelative) return;
- this._path = [];
- parse.call(this, pathname, "relative path start");
- },
- get search() {
- return this._isInvalid || !this._query || "?" == this._query ? "" : this._query;
- },
- set search(search) {
- if (this._isInvalid || !this._isRelative) return;
- this._query = "?";
- if ("?" == search[0]) search = search.slice(1);
- parse.call(this, search, "query");
- },
- get hash() {
- return this._isInvalid || !this._fragment || "#" == this._fragment ? "" : this._fragment;
- },
- set hash(hash) {
- if (this._isInvalid) return;
- this._fragment = "#";
- if ("#" == hash[0]) hash = hash.slice(1);
- parse.call(this, hash, "fragment");
- },
- get origin() {
- var host;
- if (this._isInvalid || !this._scheme) {
- return "";
- }
- switch (this._scheme) {
- case "data":
- case "file":
- case "javascript":
- case "mailto":
- return "null";
- }
- host = this.host;
- if (!host) {
- return "";
- }
- return this._scheme + "://" + host;
- }
- };
- var OriginalURL = scope.URL;
- if (OriginalURL) {
- jURL.createObjectURL = function(blob) {
- return OriginalURL.createObjectURL.apply(OriginalURL, arguments);
- };
- jURL.revokeObjectURL = function(url) {
- OriginalURL.revokeObjectURL(url);
- };
- }
- scope.URL = jURL;
-})(this);
-
-if (typeof WeakMap === "undefined") {
- (function() {
- var defineProperty = Object.defineProperty;
- var counter = Date.now() % 1e9;
- var WeakMap = function() {
- this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__");
- };
- WeakMap.prototype = {
- set: function(key, value) {
- var entry = key[this.name];
- if (entry && entry[0] === key) entry[1] = value; else defineProperty(key, this.name, {
- value: [ key, value ],
- writable: true
- });
- return this;
- },
- get: function(key) {
- var entry;
- return (entry = key[this.name]) && entry[0] === key ? entry[1] : undefined;
- },
- "delete": function(key) {
- var entry = key[this.name];
- if (!entry || entry[0] !== key) return false;
- entry[0] = entry[1] = undefined;
- return true;
- },
- has: function(key) {
- var entry = key[this.name];
- if (!entry) return false;
- return entry[0] === key;
- }
- };
- window.WeakMap = WeakMap;
- })();
-}
-
-(function(global) {
- var registrationsTable = new WeakMap();
- var setImmediate;
- if (/Trident|Edge/.test(navigator.userAgent)) {
- setImmediate = setTimeout;
- } else if (window.setImmediate) {
- setImmediate = window.setImmediate;
- } else {
- var setImmediateQueue = [];
- var sentinel = String(Math.random());
- window.addEventListener("message", function(e) {
- if (e.data === sentinel) {
- var queue = setImmediateQueue;
- setImmediateQueue = [];
- queue.forEach(function(func) {
- func();
- });
- }
- });
- setImmediate = function(func) {
- setImmediateQueue.push(func);
- window.postMessage(sentinel, "*");
- };
- }
- var isScheduled = false;
- var scheduledObservers = [];
- function scheduleCallback(observer) {
- scheduledObservers.push(observer);
- if (!isScheduled) {
- isScheduled = true;
- setImmediate(dispatchCallbacks);
- }
- }
- function wrapIfNeeded(node) {
- return window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(node) || node;
- }
- function dispatchCallbacks() {
- isScheduled = false;
- var observers = scheduledObservers;
- scheduledObservers = [];
- observers.sort(function(o1, o2) {
- return o1.uid_ - o2.uid_;
- });
- var anyNonEmpty = false;
- observers.forEach(function(observer) {
- var queue = observer.takeRecords();
- removeTransientObserversFor(observer);
- if (queue.length) {
- observer.callback_(queue, observer);
- anyNonEmpty = true;
- }
- });
- if (anyNonEmpty) dispatchCallbacks();
- }
- function removeTransientObserversFor(observer) {
- observer.nodes_.forEach(function(node) {
- var registrations = registrationsTable.get(node);
- if (!registrations) return;
- registrations.forEach(function(registration) {
- if (registration.observer === observer) registration.removeTransientObservers();
- });
- });
- }
- function forEachAncestorAndObserverEnqueueRecord(target, callback) {
- for (var node = target; node; node = node.parentNode) {
- var registrations = registrationsTable.get(node);
- if (registrations) {
- for (var j = 0; j < registrations.length; j++) {
- var registration = registrations[j];
- var options = registration.options;
- if (node !== target && !options.subtree) continue;
- var record = callback(options);
- if (record) registration.enqueue(record);
- }
- }
- }
- }
- var uidCounter = 0;
- function JsMutationObserver(callback) {
- this.callback_ = callback;
- this.nodes_ = [];
- this.records_ = [];
- this.uid_ = ++uidCounter;
- }
- JsMutationObserver.prototype = {
- observe: function(target, options) {
- target = wrapIfNeeded(target);
- if (!options.childList && !options.attributes && !options.characterData || options.attributeOldValue && !options.attributes || options.attributeFilter && options.attributeFilter.length && !options.attributes || options.characterDataOldValue && !options.characterData) {
- throw new SyntaxError();
- }
- var registrations = registrationsTable.get(target);
- if (!registrations) registrationsTable.set(target, registrations = []);
- var registration;
- for (var i = 0; i < registrations.length; i++) {
- if (registrations[i].observer === this) {
- registration = registrations[i];
- registration.removeListeners();
- registration.options = options;
- break;
- }
- }
- if (!registration) {
- registration = new Registration(this, target, options);
- registrations.push(registration);
- this.nodes_.push(target);
- }
- registration.addListeners();
- },
- disconnect: function() {
- this.nodes_.forEach(function(node) {
- var registrations = registrationsTable.get(node);
- for (var i = 0; i < registrations.length; i++) {
- var registration = registrations[i];
- if (registration.observer === this) {
- registration.removeListeners();
- registrations.splice(i, 1);
- break;
- }
- }
- }, this);
- this.records_ = [];
- },
- takeRecords: function() {
- var copyOfRecords = this.records_;
- this.records_ = [];
- return copyOfRecords;
- }
- };
- function MutationRecord(type, target) {
- this.type = type;
- this.target = target;
- this.addedNodes = [];
- this.removedNodes = [];
- this.previousSibling = null;
- this.nextSibling = null;
- this.attributeName = null;
- this.attributeNamespace = null;
- this.oldValue = null;
- }
- function copyMutationRecord(original) {
- var record = new MutationRecord(original.type, original.target);
- record.addedNodes = original.addedNodes.slice();
- record.removedNodes = original.removedNodes.slice();
- record.previousSibling = original.previousSibling;
- record.nextSibling = original.nextSibling;
- record.attributeName = original.attributeName;
- record.attributeNamespace = original.attributeNamespace;
- record.oldValue = original.oldValue;
- return record;
- }
- var currentRecord, recordWithOldValue;
- function getRecord(type, target) {
- return currentRecord = new MutationRecord(type, target);
- }
- function getRecordWithOldValue(oldValue) {
- if (recordWithOldValue) return recordWithOldValue;
- recordWithOldValue = copyMutationRecord(currentRecord);
- recordWithOldValue.oldValue = oldValue;
- return recordWithOldValue;
- }
- function clearRecords() {
- currentRecord = recordWithOldValue = undefined;
- }
- function recordRepresentsCurrentMutation(record) {
- return record === recordWithOldValue || record === currentRecord;
- }
- function selectRecord(lastRecord, newRecord) {
- if (lastRecord === newRecord) return lastRecord;
- if (recordWithOldValue && recordRepresentsCurrentMutation(lastRecord)) return recordWithOldValue;
- return null;
- }
- function Registration(observer, target, options) {
- this.observer = observer;
- this.target = target;
- this.options = options;
- this.transientObservedNodes = [];
- }
- Registration.prototype = {
- enqueue: function(record) {
- var records = this.observer.records_;
- var length = records.length;
- if (records.length > 0) {
- var lastRecord = records[length - 1];
- var recordToReplaceLast = selectRecord(lastRecord, record);
- if (recordToReplaceLast) {
- records[length - 1] = recordToReplaceLast;
- return;
- }
- } else {
- scheduleCallback(this.observer);
- }
- records[length] = record;
- },
- addListeners: function() {
- this.addListeners_(this.target);
- },
- addListeners_: function(node) {
- var options = this.options;
- if (options.attributes) node.addEventListener("DOMAttrModified", this, true);
- if (options.characterData) node.addEventListener("DOMCharacterDataModified", this, true);
- if (options.childList) node.addEventListener("DOMNodeInserted", this, true);
- if (options.childList || options.subtree) node.addEventListener("DOMNodeRemoved", this, true);
- },
- removeListeners: function() {
- this.removeListeners_(this.target);
- },
- removeListeners_: function(node) {
- var options = this.options;
- if (options.attributes) node.removeEventListener("DOMAttrModified", this, true);
- if (options.characterData) node.removeEventListener("DOMCharacterDataModified", this, true);
- if (options.childList) node.removeEventListener("DOMNodeInserted", this, true);
- if (options.childList || options.subtree) node.removeEventListener("DOMNodeRemoved", this, true);
- },
- addTransientObserver: function(node) {
- if (node === this.target) return;
- this.addListeners_(node);
- this.transientObservedNodes.push(node);
- var registrations = registrationsTable.get(node);
- if (!registrations) registrationsTable.set(node, registrations = []);
- registrations.push(this);
- },
- removeTransientObservers: function() {
- var transientObservedNodes = this.transientObservedNodes;
- this.transientObservedNodes = [];
- transientObservedNodes.forEach(function(node) {
- this.removeListeners_(node);
- var registrations = registrationsTable.get(node);
- for (var i = 0; i < registrations.length; i++) {
- if (registrations[i] === this) {
- registrations.splice(i, 1);
- break;
- }
- }
- }, this);
- },
- handleEvent: function(e) {
- e.stopImmediatePropagation();
- switch (e.type) {
- case "DOMAttrModified":
- var name = e.attrName;
- var namespace = e.relatedNode.namespaceURI;
- var target = e.target;
- var record = new getRecord("attributes", target);
- record.attributeName = name;
- record.attributeNamespace = namespace;
- var oldValue = e.attrChange === MutationEvent.ADDITION ? null : e.prevValue;
- forEachAncestorAndObserverEnqueueRecord(target, function(options) {
- if (!options.attributes) return;
- if (options.attributeFilter && options.attributeFilter.length && options.attributeFilter.indexOf(name) === -1 && options.attributeFilter.indexOf(namespace) === -1) {
- return;
- }
- if (options.attributeOldValue) return getRecordWithOldValue(oldValue);
- return record;
- });
- break;
-
- case "DOMCharacterDataModified":
- var target = e.target;
- var record = getRecord("characterData", target);
- var oldValue = e.prevValue;
- forEachAncestorAndObserverEnqueueRecord(target, function(options) {
- if (!options.characterData) return;
- if (options.characterDataOldValue) return getRecordWithOldValue(oldValue);
- return record;
- });
- break;
-
- case "DOMNodeRemoved":
- this.addTransientObserver(e.target);
-
- case "DOMNodeInserted":
- var changedNode = e.target;
- var addedNodes, removedNodes;
- if (e.type === "DOMNodeInserted") {
- addedNodes = [ changedNode ];
- removedNodes = [];
- } else {
- addedNodes = [];
- removedNodes = [ changedNode ];
- }
- var previousSibling = changedNode.previousSibling;
- var nextSibling = changedNode.nextSibling;
- var record = getRecord("childList", e.target.parentNode);
- record.addedNodes = addedNodes;
- record.removedNodes = removedNodes;
- record.previousSibling = previousSibling;
- record.nextSibling = nextSibling;
- forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options) {
- if (!options.childList) return;
- return record;
- });
- }
- clearRecords();
- }
- };
- global.JsMutationObserver = JsMutationObserver;
- if (!global.MutationObserver) global.MutationObserver = JsMutationObserver;
-})(this);
-
-window.HTMLImports = window.HTMLImports || {
- flags: {}
-};
-
-(function(scope) {
- var IMPORT_LINK_TYPE = "import";
- var useNative = Boolean(IMPORT_LINK_TYPE in document.createElement("link"));
- var hasShadowDOMPolyfill = Boolean(window.ShadowDOMPolyfill);
- var wrap = function(node) {
- return hasShadowDOMPolyfill ? window.ShadowDOMPolyfill.wrapIfNeeded(node) : node;
- };
- var rootDocument = wrap(document);
- var currentScriptDescriptor = {
- get: function() {
- var script = window.HTMLImports.currentScript || document.currentScript || (document.readyState !== "complete" ? document.scripts[document.scripts.length - 1] : null);
- return wrap(script);
- },
- configurable: true
- };
- Object.defineProperty(document, "_currentScript", currentScriptDescriptor);
- Object.defineProperty(rootDocument, "_currentScript", currentScriptDescriptor);
- var isIE = /Trident/.test(navigator.userAgent);
- function whenReady(callback, doc) {
- doc = doc || rootDocument;
- whenDocumentReady(function() {
- watchImportsLoad(callback, doc);
- }, doc);
- }
- var requiredReadyState = isIE ? "complete" : "interactive";
- var READY_EVENT = "readystatechange";
- function isDocumentReady(doc) {
- return doc.readyState === "complete" || doc.readyState === requiredReadyState;
- }
- function whenDocumentReady(callback, doc) {
- if (!isDocumentReady(doc)) {
- var checkReady = function() {
- if (doc.readyState === "complete" || doc.readyState === requiredReadyState) {
- doc.removeEventListener(READY_EVENT, checkReady);
- whenDocumentReady(callback, doc);
- }
- };
- doc.addEventListener(READY_EVENT, checkReady);
- } else if (callback) {
- callback();
- }
- }
- function markTargetLoaded(event) {
- event.target.__loaded = true;
- }
- function watchImportsLoad(callback, doc) {
- var imports = doc.querySelectorAll("link[rel=import]");
- var parsedCount = 0, importCount = imports.length, newImports = [], errorImports = [];
- function checkDone() {
- if (parsedCount == importCount && callback) {
- callback({
- allImports: imports,
- loadedImports: newImports,
- errorImports: errorImports
- });
- }
- }
- function loadedImport(e) {
- markTargetLoaded(e);
- newImports.push(this);
- parsedCount++;
- checkDone();
- }
- function errorLoadingImport(e) {
- errorImports.push(this);
- parsedCount++;
- checkDone();
- }
- if (importCount) {
- for (var i = 0, imp; i < importCount && (imp = imports[i]); i++) {
- if (isImportLoaded(imp)) {
- parsedCount++;
- checkDone();
- } else {
- imp.addEventListener("load", loadedImport);
- imp.addEventListener("error", errorLoadingImport);
- }
- }
- } else {
- checkDone();
- }
- }
- function isImportLoaded(link) {
- return useNative ? link.__loaded || link.import && link.import.readyState !== "loading" : link.__importParsed;
- }
- if (useNative) {
- new MutationObserver(function(mxns) {
- for (var i = 0, l = mxns.length, m; i < l && (m = mxns[i]); i++) {
- if (m.addedNodes) {
- handleImports(m.addedNodes);
- }
- }
- }).observe(document.head, {
- childList: true
- });
- function handleImports(nodes) {
- for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) {
- if (isImport(n)) {
- handleImport(n);
- }
- }
- }
- function isImport(element) {
- return element.localName === "link" && element.rel === "import";
- }
- function handleImport(element) {
- var loaded = element.import;
- if (loaded) {
- markTargetLoaded({
- target: element
- });
- } else {
- element.addEventListener("load", markTargetLoaded);
- element.addEventListener("error", markTargetLoaded);
- }
- }
- (function() {
- if (document.readyState === "loading") {
- var imports = document.querySelectorAll("link[rel=import]");
- for (var i = 0, l = imports.length, imp; i < l && (imp = imports[i]); i++) {
- handleImport(imp);
- }
- }
- })();
- }
- whenReady(function(detail) {
- window.HTMLImports.ready = true;
- window.HTMLImports.readyTime = new Date().getTime();
- var evt = rootDocument.createEvent("CustomEvent");
- evt.initCustomEvent("HTMLImportsLoaded", true, true, detail);
- rootDocument.dispatchEvent(evt);
- });
- scope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;
- scope.useNative = useNative;
- scope.rootDocument = rootDocument;
- scope.whenReady = whenReady;
- scope.isIE = isIE;
-})(window.HTMLImports);
-
-(function(scope) {
- var modules = [];
- var addModule = function(module) {
- modules.push(module);
- };
- var initializeModules = function() {
- modules.forEach(function(module) {
- module(scope);
- });
- };
- scope.addModule = addModule;
- scope.initializeModules = initializeModules;
-})(window.HTMLImports);
-
-window.HTMLImports.addModule(function(scope) {
- var CSS_URL_REGEXP = /(url\()([^)]*)(\))/g;
- var CSS_IMPORT_REGEXP = /(@import[\s]+(?!url\())([^;]*)(;)/g;
- var path = {
- resolveUrlsInStyle: function(style, linkUrl) {
- var doc = style.ownerDocument;
- var resolver = doc.createElement("a");
- style.textContent = this.resolveUrlsInCssText(style.textContent, linkUrl, resolver);
- return style;
- },
- resolveUrlsInCssText: function(cssText, linkUrl, urlObj) {
- var r = this.replaceUrls(cssText, urlObj, linkUrl, CSS_URL_REGEXP);
- r = this.replaceUrls(r, urlObj, linkUrl, CSS_IMPORT_REGEXP);
- return r;
- },
- replaceUrls: function(text, urlObj, linkUrl, regexp) {
- return text.replace(regexp, function(m, pre, url, post) {
- var urlPath = url.replace(/["']/g, "");
- if (linkUrl) {
- urlPath = new URL(urlPath, linkUrl).href;
- }
- urlObj.href = urlPath;
- urlPath = urlObj.href;
- return pre + "'" + urlPath + "'" + post;
- });
- }
- };
- scope.path = path;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var xhr = {
- async: true,
- ok: function(request) {
- return request.status >= 200 && request.status < 300 || request.status === 304 || request.status === 0;
- },
- load: function(url, next, nextContext) {
- var request = new XMLHttpRequest();
- if (scope.flags.debug || scope.flags.bust) {
- url += "?" + Math.random();
- }
- request.open("GET", url, xhr.async);
- request.addEventListener("readystatechange", function(e) {
- if (request.readyState === 4) {
- var locationHeader = request.getResponseHeader("Location");
- var redirectedUrl = null;
- if (locationHeader) {
- var redirectedUrl = locationHeader.substr(0, 1) === "/" ? location.origin + locationHeader : locationHeader;
- }
- next.call(nextContext, !xhr.ok(request) && request, request.response || request.responseText, redirectedUrl);
- }
- });
- request.send();
- return request;
- },
- loadDocument: function(url, next, nextContext) {
- this.load(url, next, nextContext).responseType = "document";
- }
- };
- scope.xhr = xhr;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var xhr = scope.xhr;
- var flags = scope.flags;
- var Loader = function(onLoad, onComplete) {
- this.cache = {};
- this.onload = onLoad;
- this.oncomplete = onComplete;
- this.inflight = 0;
- this.pending = {};
- };
- Loader.prototype = {
- addNodes: function(nodes) {
- this.inflight += nodes.length;
- for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) {
- this.require(n);
- }
- this.checkDone();
- },
- addNode: function(node) {
- this.inflight++;
- this.require(node);
- this.checkDone();
- },
- require: function(elt) {
- var url = elt.src || elt.href;
- elt.__nodeUrl = url;
- if (!this.dedupe(url, elt)) {
- this.fetch(url, elt);
- }
- },
- dedupe: function(url, elt) {
- if (this.pending[url]) {
- this.pending[url].push(elt);
- return true;
- }
- var resource;
- if (this.cache[url]) {
- this.onload(url, elt, this.cache[url]);
- this.tail();
- return true;
- }
- this.pending[url] = [ elt ];
- return false;
- },
- fetch: function(url, elt) {
- flags.load && console.log("fetch", url, elt);
- if (!url) {
- setTimeout(function() {
- this.receive(url, elt, {
- error: "href must be specified"
- }, null);
- }.bind(this), 0);
- } else if (url.match(/^data:/)) {
- var pieces = url.split(",");
- var header = pieces[0];
- var body = pieces[1];
- if (header.indexOf(";base64") > -1) {
- body = atob(body);
- } else {
- body = decodeURIComponent(body);
- }
- setTimeout(function() {
- this.receive(url, elt, null, body);
- }.bind(this), 0);
- } else {
- var receiveXhr = function(err, resource, redirectedUrl) {
- this.receive(url, elt, err, resource, redirectedUrl);
- }.bind(this);
- xhr.load(url, receiveXhr);
- }
- },
- receive: function(url, elt, err, resource, redirectedUrl) {
- this.cache[url] = resource;
- var $p = this.pending[url];
- for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) {
- this.onload(url, p, resource, err, redirectedUrl);
- this.tail();
- }
- this.pending[url] = null;
- },
- tail: function() {
- --this.inflight;
- this.checkDone();
- },
- checkDone: function() {
- if (!this.inflight) {
- this.oncomplete();
- }
- }
- };
- scope.Loader = Loader;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var Observer = function(addCallback) {
- this.addCallback = addCallback;
- this.mo = new MutationObserver(this.handler.bind(this));
- };
- Observer.prototype = {
- handler: function(mutations) {
- for (var i = 0, l = mutations.length, m; i < l && (m = mutations[i]); i++) {
- if (m.type === "childList" && m.addedNodes.length) {
- this.addedNodes(m.addedNodes);
- }
- }
- },
- addedNodes: function(nodes) {
- if (this.addCallback) {
- this.addCallback(nodes);
- }
- for (var i = 0, l = nodes.length, n, loading; i < l && (n = nodes[i]); i++) {
- if (n.children && n.children.length) {
- this.addedNodes(n.children);
- }
- }
- },
- observe: function(root) {
- this.mo.observe(root, {
- childList: true,
- subtree: true
- });
- }
- };
- scope.Observer = Observer;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var path = scope.path;
- var rootDocument = scope.rootDocument;
- var flags = scope.flags;
- var isIE = scope.isIE;
- var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;
- var IMPORT_SELECTOR = "link[rel=" + IMPORT_LINK_TYPE + "]";
- var importParser = {
- documentSelectors: IMPORT_SELECTOR,
- importsSelectors: [ IMPORT_SELECTOR, "link[rel=stylesheet]:not([type])", "style:not([type])", "script:not([type])", 'script[type="application/javascript"]', 'script[type="text/javascript"]' ].join(","),
- map: {
- link: "parseLink",
- script: "parseScript",
- style: "parseStyle"
- },
- dynamicElements: [],
- parseNext: function() {
- var next = this.nextToParse();
- if (next) {
- this.parse(next);
- }
- },
- parse: function(elt) {
- if (this.isParsed(elt)) {
- flags.parse && console.log("[%s] is already parsed", elt.localName);
- return;
- }
- var fn = this[this.map[elt.localName]];
- if (fn) {
- this.markParsing(elt);
- fn.call(this, elt);
- }
- },
- parseDynamic: function(elt, quiet) {
- this.dynamicElements.push(elt);
- if (!quiet) {
- this.parseNext();
- }
- },
- markParsing: function(elt) {
- flags.parse && console.log("parsing", elt);
- this.parsingElement = elt;
- },
- markParsingComplete: function(elt) {
- elt.__importParsed = true;
- this.markDynamicParsingComplete(elt);
- if (elt.__importElement) {
- elt.__importElement.__importParsed = true;
- this.markDynamicParsingComplete(elt.__importElement);
- }
- this.parsingElement = null;
- flags.parse && console.log("completed", elt);
- },
- markDynamicParsingComplete: function(elt) {
- var i = this.dynamicElements.indexOf(elt);
- if (i >= 0) {
- this.dynamicElements.splice(i, 1);
- }
- },
- parseImport: function(elt) {
- elt.import = elt.__doc;
- if (window.HTMLImports.__importsParsingHook) {
- window.HTMLImports.__importsParsingHook(elt);
- }
- if (elt.import) {
- elt.import.__importParsed = true;
- }
- this.markParsingComplete(elt);
- if (elt.__resource && !elt.__error) {
- elt.dispatchEvent(new CustomEvent("load", {
- bubbles: false
- }));
- } else {
- elt.dispatchEvent(new CustomEvent("error", {
- bubbles: false
- }));
- }
- if (elt.__pending) {
- var fn;
- while (elt.__pending.length) {
- fn = elt.__pending.shift();
- if (fn) {
- fn({
- target: elt
- });
- }
- }
- }
- this.parseNext();
- },
- parseLink: function(linkElt) {
- if (nodeIsImport(linkElt)) {
- this.parseImport(linkElt);
- } else {
- linkElt.href = linkElt.href;
- this.parseGeneric(linkElt);
- }
- },
- parseStyle: function(elt) {
- var src = elt;
- elt = cloneStyle(elt);
- src.__appliedElement = elt;
- elt.__importElement = src;
- this.parseGeneric(elt);
- },
- parseGeneric: function(elt) {
- this.trackElement(elt);
- this.addElementToDocument(elt);
- },
- rootImportForElement: function(elt) {
- var n = elt;
- while (n.ownerDocument.__importLink) {
- n = n.ownerDocument.__importLink;
- }
- return n;
- },
- addElementToDocument: function(elt) {
- var port = this.rootImportForElement(elt.__importElement || elt);
- port.parentNode.insertBefore(elt, port);
- },
- trackElement: function(elt, callback) {
- var self = this;
- var done = function(e) {
- elt.removeEventListener("load", done);
- elt.removeEventListener("error", done);
- if (callback) {
- callback(e);
- }
- self.markParsingComplete(elt);
- self.parseNext();
- };
- elt.addEventListener("load", done);
- elt.addEventListener("error", done);
- if (isIE && elt.localName === "style") {
- var fakeLoad = false;
- if (elt.textContent.indexOf("@import") == -1) {
- fakeLoad = true;
- } else if (elt.sheet) {
- fakeLoad = true;
- var csr = elt.sheet.cssRules;
- var len = csr ? csr.length : 0;
- for (var i = 0, r; i < len && (r = csr[i]); i++) {
- if (r.type === CSSRule.IMPORT_RULE) {
- fakeLoad = fakeLoad && Boolean(r.styleSheet);
- }
- }
- }
- if (fakeLoad) {
- setTimeout(function() {
- elt.dispatchEvent(new CustomEvent("load", {
- bubbles: false
- }));
- });
- }
- }
- },
- parseScript: function(scriptElt) {
- var script = document.createElement("script");
- script.__importElement = scriptElt;
- script.src = scriptElt.src ? scriptElt.src : generateScriptDataUrl(scriptElt);
- scope.currentScript = scriptElt;
- this.trackElement(script, function(e) {
- if (script.parentNode) {
- script.parentNode.removeChild(script);
- }
- scope.currentScript = null;
- });
- this.addElementToDocument(script);
- },
- nextToParse: function() {
- this._mayParse = [];
- return !this.parsingElement && (this.nextToParseInDoc(rootDocument) || this.nextToParseDynamic());
- },
- nextToParseInDoc: function(doc, link) {
- if (doc && this._mayParse.indexOf(doc) < 0) {
- this._mayParse.push(doc);
- var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc));
- for (var i = 0, l = nodes.length, p = 0, n; i < l && (n = nodes[i]); i++) {
- if (!this.isParsed(n)) {
- if (this.hasResource(n)) {
- return nodeIsImport(n) ? this.nextToParseInDoc(n.__doc, n) : n;
- } else {
- return;
- }
- }
- }
- }
- return link;
- },
- nextToParseDynamic: function() {
- return this.dynamicElements[0];
- },
- parseSelectorsForNode: function(node) {
- var doc = node.ownerDocument || node;
- return doc === rootDocument ? this.documentSelectors : this.importsSelectors;
- },
- isParsed: function(node) {
- return node.__importParsed;
- },
- needsDynamicParsing: function(elt) {
- return this.dynamicElements.indexOf(elt) >= 0;
- },
- hasResource: function(node) {
- if (nodeIsImport(node) && node.__doc === undefined) {
- return false;
- }
- return true;
- }
- };
- function nodeIsImport(elt) {
- return elt.localName === "link" && elt.rel === IMPORT_LINK_TYPE;
- }
- function generateScriptDataUrl(script) {
- var scriptContent = generateScriptContent(script);
- return "data:text/javascript;charset=utf-8," + encodeURIComponent(scriptContent);
- }
- function generateScriptContent(script) {
- return script.textContent + generateSourceMapHint(script);
- }
- function generateSourceMapHint(script) {
- var owner = script.ownerDocument;
- owner.__importedScripts = owner.__importedScripts || 0;
- var moniker = script.ownerDocument.baseURI;
- var num = owner.__importedScripts ? "-" + owner.__importedScripts : "";
- owner.__importedScripts++;
- return "\n//# sourceURL=" + moniker + num + ".js\n";
- }
- function cloneStyle(style) {
- var clone = style.ownerDocument.createElement("style");
- clone.textContent = style.textContent;
- path.resolveUrlsInStyle(clone);
- return clone;
- }
- scope.parser = importParser;
- scope.IMPORT_SELECTOR = IMPORT_SELECTOR;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var flags = scope.flags;
- var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;
- var IMPORT_SELECTOR = scope.IMPORT_SELECTOR;
- var rootDocument = scope.rootDocument;
- var Loader = scope.Loader;
- var Observer = scope.Observer;
- var parser = scope.parser;
- var importer = {
- documents: {},
- documentPreloadSelectors: IMPORT_SELECTOR,
- importsPreloadSelectors: [ IMPORT_SELECTOR ].join(","),
- loadNode: function(node) {
- importLoader.addNode(node);
- },
- loadSubtree: function(parent) {
- var nodes = this.marshalNodes(parent);
- importLoader.addNodes(nodes);
- },
- marshalNodes: function(parent) {
- return parent.querySelectorAll(this.loadSelectorsForNode(parent));
- },
- loadSelectorsForNode: function(node) {
- var doc = node.ownerDocument || node;
- return doc === rootDocument ? this.documentPreloadSelectors : this.importsPreloadSelectors;
- },
- loaded: function(url, elt, resource, err, redirectedUrl) {
- flags.load && console.log("loaded", url, elt);
- elt.__resource = resource;
- elt.__error = err;
- if (isImportLink(elt)) {
- var doc = this.documents[url];
- if (doc === undefined) {
- doc = err ? null : makeDocument(resource, redirectedUrl || url);
- if (doc) {
- doc.__importLink = elt;
- this.bootDocument(doc);
- }
- this.documents[url] = doc;
- }
- elt.__doc = doc;
- }
- parser.parseNext();
- },
- bootDocument: function(doc) {
- this.loadSubtree(doc);
- this.observer.observe(doc);
- parser.parseNext();
- },
- loadedAll: function() {
- parser.parseNext();
- }
- };
- var importLoader = new Loader(importer.loaded.bind(importer), importer.loadedAll.bind(importer));
- importer.observer = new Observer();
- function isImportLink(elt) {
- return isLinkRel(elt, IMPORT_LINK_TYPE);
- }
- function isLinkRel(elt, rel) {
- return elt.localName === "link" && elt.getAttribute("rel") === rel;
- }
- function hasBaseURIAccessor(doc) {
- return !!Object.getOwnPropertyDescriptor(doc, "baseURI");
- }
- function makeDocument(resource, url) {
- var doc = document.implementation.createHTMLDocument(IMPORT_LINK_TYPE);
- doc._URL = url;
- var base = doc.createElement("base");
- base.setAttribute("href", url);
- if (!doc.baseURI && !hasBaseURIAccessor(doc)) {
- Object.defineProperty(doc, "baseURI", {
- value: url
- });
- }
- var meta = doc.createElement("meta");
- meta.setAttribute("charset", "utf-8");
- doc.head.appendChild(meta);
- doc.head.appendChild(base);
- doc.body.innerHTML = resource;
- if (window.HTMLTemplateElement && HTMLTemplateElement.bootstrap) {
- HTMLTemplateElement.bootstrap(doc);
- }
- return doc;
- }
- if (!document.baseURI) {
- var baseURIDescriptor = {
- get: function() {
- var base = document.querySelector("base");
- return base ? base.href : window.location.href;
- },
- configurable: true
- };
- Object.defineProperty(document, "baseURI", baseURIDescriptor);
- Object.defineProperty(rootDocument, "baseURI", baseURIDescriptor);
- }
- scope.importer = importer;
- scope.importLoader = importLoader;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var parser = scope.parser;
- var importer = scope.importer;
- var dynamic = {
- added: function(nodes) {
- var owner, parsed, loading;
- for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) {
- if (!owner) {
- owner = n.ownerDocument;
- parsed = parser.isParsed(owner);
- }
- loading = this.shouldLoadNode(n);
- if (loading) {
- importer.loadNode(n);
- }
- if (this.shouldParseNode(n) && parsed) {
- parser.parseDynamic(n, loading);
- }
- }
- },
- shouldLoadNode: function(node) {
- return node.nodeType === 1 && matches.call(node, importer.loadSelectorsForNode(node));
- },
- shouldParseNode: function(node) {
- return node.nodeType === 1 && matches.call(node, parser.parseSelectorsForNode(node));
- }
- };
- importer.observer.addCallback = dynamic.added.bind(dynamic);
- var matches = HTMLElement.prototype.matches || HTMLElement.prototype.matchesSelector || HTMLElement.prototype.webkitMatchesSelector || HTMLElement.prototype.mozMatchesSelector || HTMLElement.prototype.msMatchesSelector;
-});
-
-(function(scope) {
- var initializeModules = scope.initializeModules;
- var isIE = scope.isIE;
- if (scope.useNative) {
- return;
- }
- if (isIE && typeof window.CustomEvent !== "function") {
- window.CustomEvent = function(inType, params) {
- params = params || {};
- var e = document.createEvent("CustomEvent");
- e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable), params.detail);
- e.preventDefault = function() {
- Object.defineProperty(this, "defaultPrevented", {
- get: function() {
- return true;
- }
- });
- };
- return e;
- };
- window.CustomEvent.prototype = window.Event.prototype;
- }
- initializeModules();
- var rootDocument = scope.rootDocument;
- function bootstrap() {
- window.HTMLImports.importer.bootDocument(rootDocument);
- }
- if (document.readyState === "complete" || document.readyState === "interactive" && !window.attachEvent) {
- bootstrap();
- } else {
- document.addEventListener("DOMContentLoaded", bootstrap);
- }
-})(window.HTMLImports);
-
-window.CustomElements = window.CustomElements || {
- flags: {}
-};
-
-(function(scope) {
- var flags = scope.flags;
- var modules = [];
- var addModule = function(module) {
- modules.push(module);
- };
- var initializeModules = function() {
- modules.forEach(function(module) {
- module(scope);
- });
- };
- scope.addModule = addModule;
- scope.initializeModules = initializeModules;
- scope.hasNative = Boolean(document.registerElement);
- scope.useNative = !flags.register && scope.hasNative && !window.ShadowDOMPolyfill && (!window.HTMLImports || window.HTMLImports.useNative);
-})(window.CustomElements);
-
-window.CustomElements.addModule(function(scope) {
- var IMPORT_LINK_TYPE = window.HTMLImports ? window.HTMLImports.IMPORT_LINK_TYPE : "none";
- function forSubtree(node, cb) {
- findAllElements(node, function(e) {
- if (cb(e)) {
- return true;
- }
- forRoots(e, cb);
- });
- forRoots(node, cb);
- }
- function findAllElements(node, find, data) {
- var e = node.firstElementChild;
- if (!e) {
- e = node.firstChild;
- while (e && e.nodeType !== Node.ELEMENT_NODE) {
- e = e.nextSibling;
- }
- }
- while (e) {
- if (find(e, data) !== true) {
- findAllElements(e, find, data);
- }
- e = e.nextElementSibling;
- }
- return null;
- }
- function forRoots(node, cb) {
- var root = node.shadowRoot;
- while (root) {
- forSubtree(root, cb);
- root = root.olderShadowRoot;
- }
- }
- function forDocumentTree(doc, cb) {
- _forDocumentTree(doc, cb, []);
- }
- function _forDocumentTree(doc, cb, processingDocuments) {
- doc = window.wrap(doc);
- if (processingDocuments.indexOf(doc) >= 0) {
- return;
- }
- processingDocuments.push(doc);
- var imports = doc.querySelectorAll("link[rel=" + IMPORT_LINK_TYPE + "]");
- for (var i = 0, l = imports.length, n; i < l && (n = imports[i]); i++) {
- if (n.import) {
- _forDocumentTree(n.import, cb, processingDocuments);
- }
- }
- cb(doc);
- }
- scope.forDocumentTree = forDocumentTree;
- scope.forSubtree = forSubtree;
-});
-
-window.CustomElements.addModule(function(scope) {
- var flags = scope.flags;
- var forSubtree = scope.forSubtree;
- var forDocumentTree = scope.forDocumentTree;
- function addedNode(node, isAttached) {
- return added(node, isAttached) || addedSubtree(node, isAttached);
- }
- function added(node, isAttached) {
- if (scope.upgrade(node, isAttached)) {
- return true;
- }
- if (isAttached) {
- attached(node);
- }
- }
- function addedSubtree(node, isAttached) {
- forSubtree(node, function(e) {
- if (added(e, isAttached)) {
- return true;
- }
- });
- }
- var hasPolyfillMutations = !window.MutationObserver || window.MutationObserver === window.JsMutationObserver;
- scope.hasPolyfillMutations = hasPolyfillMutations;
- var isPendingMutations = false;
- var pendingMutations = [];
- function deferMutation(fn) {
- pendingMutations.push(fn);
- if (!isPendingMutations) {
- isPendingMutations = true;
- setTimeout(takeMutations);
- }
- }
- function takeMutations() {
- isPendingMutations = false;
- var $p = pendingMutations;
- for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) {
- p();
- }
- pendingMutations = [];
- }
- function attached(element) {
- if (hasPolyfillMutations) {
- deferMutation(function() {
- _attached(element);
- });
- } else {
- _attached(element);
- }
- }
- function _attached(element) {
- if (element.__upgraded__ && !element.__attached) {
- element.__attached = true;
- if (element.attachedCallback) {
- element.attachedCallback();
- }
- }
- }
- function detachedNode(node) {
- detached(node);
- forSubtree(node, function(e) {
- detached(e);
- });
- }
- function detached(element) {
- if (hasPolyfillMutations) {
- deferMutation(function() {
- _detached(element);
- });
- } else {
- _detached(element);
- }
- }
- function _detached(element) {
- if (element.__upgraded__ && element.__attached) {
- element.__attached = false;
- if (element.detachedCallback) {
- element.detachedCallback();
- }
- }
- }
- function inDocument(element) {
- var p = element;
- var doc = window.wrap(document);
- while (p) {
- if (p == doc) {
- return true;
- }
- p = p.parentNode || p.nodeType === Node.DOCUMENT_FRAGMENT_NODE && p.host;
- }
- }
- function watchShadow(node) {
- if (node.shadowRoot && !node.shadowRoot.__watched) {
- flags.dom && console.log("watching shadow-root for: ", node.localName);
- var root = node.shadowRoot;
- while (root) {
- observe(root);
- root = root.olderShadowRoot;
- }
- }
- }
- function handler(root, mutations) {
- if (flags.dom) {
- var mx = mutations[0];
- if (mx && mx.type === "childList" && mx.addedNodes) {
- if (mx.addedNodes) {
- var d = mx.addedNodes[0];
- while (d && d !== document && !d.host) {
- d = d.parentNode;
- }
- var u = d && (d.URL || d._URL || d.host && d.host.localName) || "";
- u = u.split("/?").shift().split("/").pop();
- }
- }
- console.group("mutations (%d) [%s]", mutations.length, u || "");
- }
- var isAttached = inDocument(root);
- mutations.forEach(function(mx) {
- if (mx.type === "childList") {
- forEach(mx.addedNodes, function(n) {
- if (!n.localName) {
- return;
- }
- addedNode(n, isAttached);
- });
- forEach(mx.removedNodes, function(n) {
- if (!n.localName) {
- return;
- }
- detachedNode(n);
- });
- }
- });
- flags.dom && console.groupEnd();
- }
- function takeRecords(node) {
- node = window.wrap(node);
- if (!node) {
- node = window.wrap(document);
- }
- while (node.parentNode) {
- node = node.parentNode;
- }
- var observer = node.__observer;
- if (observer) {
- handler(node, observer.takeRecords());
- takeMutations();
- }
- }
- var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);
- function observe(inRoot) {
- if (inRoot.__observer) {
- return;
- }
- var observer = new MutationObserver(handler.bind(this, inRoot));
- observer.observe(inRoot, {
- childList: true,
- subtree: true
- });
- inRoot.__observer = observer;
- }
- function upgradeDocument(doc) {
- doc = window.wrap(doc);
- flags.dom && console.group("upgradeDocument: ", doc.baseURI.split("/").pop());
- var isMainDocument = doc === window.wrap(document);
- addedNode(doc, isMainDocument);
- observe(doc);
- flags.dom && console.groupEnd();
- }
- function upgradeDocumentTree(doc) {
- forDocumentTree(doc, upgradeDocument);
- }
- var originalCreateShadowRoot = Element.prototype.createShadowRoot;
- if (originalCreateShadowRoot) {
- Element.prototype.createShadowRoot = function() {
- var root = originalCreateShadowRoot.call(this);
- window.CustomElements.watchShadow(this);
- return root;
- };
- }
- scope.watchShadow = watchShadow;
- scope.upgradeDocumentTree = upgradeDocumentTree;
- scope.upgradeDocument = upgradeDocument;
- scope.upgradeSubtree = addedSubtree;
- scope.upgradeAll = addedNode;
- scope.attached = attached;
- scope.takeRecords = takeRecords;
-});
-
-window.CustomElements.addModule(function(scope) {
- var flags = scope.flags;
- function upgrade(node, isAttached) {
- if (!node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) {
- var is = node.getAttribute("is");
- var definition = scope.getRegisteredDefinition(node.localName) || scope.getRegisteredDefinition(is);
- if (definition) {
- if (is && definition.tag == node.localName || !is && !definition.extends) {
- return upgradeWithDefinition(node, definition, isAttached);
- }
- }
- }
- }
- function upgradeWithDefinition(element, definition, isAttached) {
- flags.upgrade && console.group("upgrade:", element.localName);
- if (definition.is) {
- element.setAttribute("is", definition.is);
- }
- implementPrototype(element, definition);
- element.__upgraded__ = true;
- created(element);
- if (isAttached) {
- scope.attached(element);
- }
- scope.upgradeSubtree(element, isAttached);
- flags.upgrade && console.groupEnd();
- return element;
- }
- function implementPrototype(element, definition) {
- if (Object.__proto__) {
- element.__proto__ = definition.prototype;
- } else {
- customMixin(element, definition.prototype, definition.native);
- element.__proto__ = definition.prototype;
- }
- }
- function customMixin(inTarget, inSrc, inNative) {
- var used = {};
- var p = inSrc;
- while (p !== inNative && p !== HTMLElement.prototype) {
- var keys = Object.getOwnPropertyNames(p);
- for (var i = 0, k; k = keys[i]; i++) {
- if (!used[k]) {
- Object.defineProperty(inTarget, k, Object.getOwnPropertyDescriptor(p, k));
- used[k] = 1;
- }
- }
- p = Object.getPrototypeOf(p);
- }
- }
- function created(element) {
- if (element.createdCallback) {
- element.createdCallback();
- }
- }
- scope.upgrade = upgrade;
- scope.upgradeWithDefinition = upgradeWithDefinition;
- scope.implementPrototype = implementPrototype;
-});
-
-window.CustomElements.addModule(function(scope) {
- var isIE11OrOlder = scope.isIE11OrOlder;
- var upgradeDocumentTree = scope.upgradeDocumentTree;
- var upgradeAll = scope.upgradeAll;
- var upgradeWithDefinition = scope.upgradeWithDefinition;
- var implementPrototype = scope.implementPrototype;
- var useNative = scope.useNative;
- function register(name, options) {
- var definition = options || {};
- if (!name) {
- throw new Error("document.registerElement: first argument `+"`"+`name`+"`"+` must not be empty");
- }
- if (name.indexOf("-") < 0) {
- throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '" + String(name) + "'.");
- }
- if (isReservedTag(name)) {
- throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '" + String(name) + "'. The type name is invalid.");
- }
- if (getRegisteredDefinition(name)) {
- throw new Error("DuplicateDefinitionError: a type with name '" + String(name) + "' is already registered");
- }
- if (!definition.prototype) {
- definition.prototype = Object.create(HTMLElement.prototype);
- }
- definition.__name = name.toLowerCase();
- definition.lifecycle = definition.lifecycle || {};
- definition.ancestry = ancestry(definition.extends);
- resolveTagName(definition);
- resolvePrototypeChain(definition);
- overrideAttributeApi(definition.prototype);
- registerDefinition(definition.__name, definition);
- definition.ctor = generateConstructor(definition);
- definition.ctor.prototype = definition.prototype;
- definition.prototype.constructor = definition.ctor;
- if (scope.ready) {
- upgradeDocumentTree(document);
- }
- return definition.ctor;
- }
- function overrideAttributeApi(prototype) {
- if (prototype.setAttribute._polyfilled) {
- return;
- }
- var setAttribute = prototype.setAttribute;
- prototype.setAttribute = function(name, value) {
- changeAttribute.call(this, name, value, setAttribute);
- };
- var removeAttribute = prototype.removeAttribute;
- prototype.removeAttribute = function(name) {
- changeAttribute.call(this, name, null, removeAttribute);
- };
- prototype.setAttribute._polyfilled = true;
- }
- function changeAttribute(name, value, operation) {
- name = name.toLowerCase();
- var oldValue = this.getAttribute(name);
- operation.apply(this, arguments);
- var newValue = this.getAttribute(name);
- if (this.attributeChangedCallback && newValue !== oldValue) {
- this.attributeChangedCallback(name, oldValue, newValue);
- }
- }
- function isReservedTag(name) {
- for (var i = 0; i < reservedTagList.length; i++) {
- if (name === reservedTagList[i]) {
- return true;
- }
- }
- }
- var reservedTagList = [ "annotation-xml", "color-profile", "font-face", "font-face-src", "font-face-uri", "font-face-format", "font-face-name", "missing-glyph" ];
- function ancestry(extnds) {
- var extendee = getRegisteredDefinition(extnds);
- if (extendee) {
- return ancestry(extendee.extends).concat([ extendee ]);
- }
- return [];
- }
- function resolveTagName(definition) {
- var baseTag = definition.extends;
- for (var i = 0, a; a = definition.ancestry[i]; i++) {
- baseTag = a.is && a.tag;
- }
- definition.tag = baseTag || definition.__name;
- if (baseTag) {
- definition.is = definition.__name;
- }
- }
- function resolvePrototypeChain(definition) {
- if (!Object.__proto__) {
- var nativePrototype = HTMLElement.prototype;
- if (definition.is) {
- var inst = document.createElement(definition.tag);
- nativePrototype = Object.getPrototypeOf(inst);
- }
- var proto = definition.prototype, ancestor;
- var foundPrototype = false;
- while (proto) {
- if (proto == nativePrototype) {
- foundPrototype = true;
- }
- ancestor = Object.getPrototypeOf(proto);
- if (ancestor) {
- proto.__proto__ = ancestor;
- }
- proto = ancestor;
- }
- if (!foundPrototype) {
- console.warn(definition.tag + " prototype not found in prototype chain for " + definition.is);
- }
- definition.native = nativePrototype;
- }
- }
- function instantiate(definition) {
- return upgradeWithDefinition(domCreateElement(definition.tag), definition);
- }
- var registry = {};
- function getRegisteredDefinition(name) {
- if (name) {
- return registry[name.toLowerCase()];
- }
- }
- function registerDefinition(name, definition) {
- registry[name] = definition;
- }
- function generateConstructor(definition) {
- return function() {
- return instantiate(definition);
- };
- }
- var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
- function createElementNS(namespace, tag, typeExtension) {
- if (namespace === HTML_NAMESPACE) {
- return createElement(tag, typeExtension);
- } else {
- return domCreateElementNS(namespace, tag);
- }
- }
- function createElement(tag, typeExtension) {
- if (tag) {
- tag = tag.toLowerCase();
- }
- if (typeExtension) {
- typeExtension = typeExtension.toLowerCase();
- }
- var definition = getRegisteredDefinition(typeExtension || tag);
- if (definition) {
- if (tag == definition.tag && typeExtension == definition.is) {
- return new definition.ctor();
- }
- if (!typeExtension && !definition.is) {
- return new definition.ctor();
- }
- }
- var element;
- if (typeExtension) {
- element = createElement(tag);
- element.setAttribute("is", typeExtension);
- return element;
- }
- element = domCreateElement(tag);
- if (tag.indexOf("-") >= 0) {
- implementPrototype(element, HTMLElement);
- }
- return element;
- }
- var domCreateElement = document.createElement.bind(document);
- var domCreateElementNS = document.createElementNS.bind(document);
- var isInstance;
- if (!Object.__proto__ && !useNative) {
- isInstance = function(obj, ctor) {
- if (obj instanceof ctor) {
- return true;
- }
- var p = obj;
- while (p) {
- if (p === ctor.prototype) {
- return true;
- }
- p = p.__proto__;
- }
- return false;
- };
- } else {
- isInstance = function(obj, base) {
- return obj instanceof base;
- };
- }
- function wrapDomMethodToForceUpgrade(obj, methodName) {
- var orig = obj[methodName];
- obj[methodName] = function() {
- var n = orig.apply(this, arguments);
- upgradeAll(n);
- return n;
- };
- }
- wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode");
- wrapDomMethodToForceUpgrade(document, "importNode");
- if (isIE11OrOlder) {
- (function() {
- var importNode = document.importNode;
- document.importNode = function() {
- var n = importNode.apply(document, arguments);
- if (n.nodeType == n.DOCUMENT_FRAGMENT_NODE) {
- var f = document.createDocumentFragment();
- f.appendChild(n);
- return f;
- } else {
- return n;
- }
- };
- })();
- }
- document.registerElement = register;
- document.createElement = createElement;
- document.createElementNS = createElementNS;
- scope.registry = registry;
- scope.instanceof = isInstance;
- scope.reservedTagList = reservedTagList;
- scope.getRegisteredDefinition = getRegisteredDefinition;
- document.register = document.registerElement;
-});
-
-(function(scope) {
- var useNative = scope.useNative;
- var initializeModules = scope.initializeModules;
- var isIE11OrOlder = /Trident/.test(navigator.userAgent);
- if (useNative) {
- var nop = function() {};
- scope.watchShadow = nop;
- scope.upgrade = nop;
- scope.upgradeAll = nop;
- scope.upgradeDocumentTree = nop;
- scope.upgradeSubtree = nop;
- scope.takeRecords = nop;
- scope.instanceof = function(obj, base) {
- return obj instanceof base;
- };
- } else {
- initializeModules();
- }
- var upgradeDocumentTree = scope.upgradeDocumentTree;
- var upgradeDocument = scope.upgradeDocument;
- if (!window.wrap) {
- if (window.ShadowDOMPolyfill) {
- window.wrap = window.ShadowDOMPolyfill.wrapIfNeeded;
- window.unwrap = window.ShadowDOMPolyfill.unwrapIfNeeded;
- } else {
- window.wrap = window.unwrap = function(node) {
- return node;
- };
- }
- }
- if (window.HTMLImports) {
- window.HTMLImports.__importsParsingHook = function(elt) {
- if (elt.import) {
- upgradeDocument(wrap(elt.import));
- }
- };
- }
- function bootstrap() {
- upgradeDocumentTree(window.wrap(document));
- window.CustomElements.ready = true;
- requestAnimationFrame(function() {
- setTimeout(function() {
- window.CustomElements.readyTime = Date.now();
- if (window.HTMLImports) {
- window.CustomElements.elapsed = window.CustomElements.readyTime - window.HTMLImports.readyTime;
- }
- document.dispatchEvent(new CustomEvent("WebComponentsReady", {
- bubbles: true
- }));
- });
- });
- }
- if (isIE11OrOlder && typeof window.CustomEvent !== "function") {
- window.CustomEvent = function(inType, params) {
- params = params || {};
- var e = document.createEvent("CustomEvent");
- e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable), params.detail);
- e.preventDefault = function() {
- Object.defineProperty(this, "defaultPrevented", {
- get: function() {
- return true;
- }
- });
- };
- return e;
- };
- window.CustomEvent.prototype = window.Event.prototype;
- }
- if (document.readyState === "complete" || scope.flags.eager) {
- bootstrap();
- } else if (document.readyState === "interactive" && !window.attachEvent && (!window.HTMLImports || window.HTMLImports.ready)) {
- bootstrap();
- } else {
- var loadEvent = window.HTMLImports && !window.HTMLImports.ready ? "HTMLImportsLoaded" : "DOMContentLoaded";
- window.addEventListener(loadEvent, bootstrap);
- }
- scope.isIE11OrOlder = isIE11OrOlder;
-})(window.CustomElements);
-
-if (typeof HTMLTemplateElement === "undefined") {
- (function() {
- var TEMPLATE_TAG = "template";
- var contentDoc = document.implementation.createHTMLDocument("template");
- var canDecorate = true;
- HTMLTemplateElement = function() {};
- HTMLTemplateElement.prototype = Object.create(HTMLElement.prototype);
- HTMLTemplateElement.decorate = function(template) {
- if (!template.content) {
- template.content = contentDoc.createDocumentFragment();
- }
- var child;
- while (child = template.firstChild) {
- template.content.appendChild(child);
- }
- if (canDecorate) {
- try {
- Object.defineProperty(template, "innerHTML", {
- get: function() {
- var o = "";
- for (var e = this.content.firstChild; e; e = e.nextSibling) {
- o += e.outerHTML || escapeData(e.data);
- }
- return o;
- },
- set: function(text) {
- contentDoc.body.innerHTML = text;
- HTMLTemplateElement.bootstrap(contentDoc);
- while (this.content.firstChild) {
- this.content.removeChild(this.content.firstChild);
- }
- while (contentDoc.body.firstChild) {
- this.content.appendChild(contentDoc.body.firstChild);
- }
- },
- configurable: true
- });
- } catch (err) {
- canDecorate = false;
- }
- }
- };
- HTMLTemplateElement.bootstrap = function(doc) {
- var templates = doc.querySelectorAll(TEMPLATE_TAG);
- for (var i = 0, l = templates.length, t; i < l && (t = templates[i]); i++) {
- HTMLTemplateElement.decorate(t);
- }
- };
- window.addEventListener("DOMContentLoaded", function() {
- HTMLTemplateElement.bootstrap(document);
- });
- var createElement = document.createElement;
- document.createElement = function() {
- "use strict";
- var el = createElement.apply(document, arguments);
- if (el.localName == "template") {
- HTMLTemplateElement.decorate(el);
- }
- return el;
- };
- var escapeDataRegExp = /[&\u00A0<>]/g;
- function escapeReplace(c) {
- switch (c) {
- case "&":
- return "&";
-
- case "<":
- return "<";
-
- case ">":
- return ">";
-
- case "Â ":
- return " ";
- }
- }
- function escapeData(s) {
- return s.replace(escapeDataRegExp, escapeReplace);
- }
- })();
-}
-
-(function(scope) {
- var 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";
- var head = document.querySelector("head");
- head.insertBefore(style, head.firstChild);
-})(window.WebComponents);`},
- "/bower_components/webcomponentsjs/webcomponents-lite.min.js": {"/bower_components/webcomponentsjs/webcomponents-lite.min.js", time.Unix(0, 1440513533117507599), false, `/**
- * @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
- */
-// @version 0.7.11
-window.WebComponents=window.WebComponents||{},function(e){var t=e.flags||{},n="webcomponents-lite.js",r=document.querySelector('script[src*="'+n+'"]');if(!t.noOpts){if(location.search.slice(1).split("&").forEach(function(e){var n,r=e.split("=");r[0]&&(n=r[0].match(/wc-(.+)/))&&(t[n[1]]=r[1]||!0)}),r)for(var o,i=0;o=r.attributes[i];i++)"src"!==o.name&&(t[o.name]=o.value||!0);if(t.log){var a=t.log.split(",");t.log={},a.forEach(function(e){t.log[e]=!0})}else t.log={}}t.shadow=t.shadow||t.shadowdom||t.polyfill,t.shadow="native"===t.shadow?!1:t.shadow||!HTMLElement.prototype.createShadowRoot,t.register&&(window.CustomElements=window.CustomElements||{flags:{}},window.CustomElements.flags.register=t.register),e.flags=t}(window.WebComponents),function(e){"use strict";function t(e){return void 0!==h[e]}function n(){s.call(this),this._isInvalid=!0}function r(e){return""==e&&n.call(this),e.toLowerCase()}function o(e){var t=e.charCodeAt(0);return t>32&&127>t&&-1==[34,35,60,62,63,96].indexOf(t)?e:encodeURIComponent(e)}function i(e){var t=e.charCodeAt(0);return t>32&&127>t&&-1==[34,35,60,62,96].indexOf(t)?e:encodeURIComponent(e)}function a(e,a,s){function c(e){g.push(e)}var d=a||"scheme start",u=0,l="",_=!1,w=!1,g=[];e:for(;(e[u-1]!=f||0==u)&&!this._isInvalid;){var b=e[u];switch(d){case"scheme start":if(!b||!m.test(b)){if(a){c("Invalid scheme.");break e}l="",d="no scheme";continue}l+=b.toLowerCase(),d="scheme";break;case"scheme":if(b&&v.test(b))l+=b.toLowerCase();else{if(":"!=b){if(a){if(f==b)break e;c("Code point not allowed in scheme: "+b);break e}l="",u=0,d="no scheme";continue}if(this._scheme=l,l="",a)break e;t(this._scheme)&&(this._isRelative=!0),d="file"==this._scheme?"relative":this._isRelative&&s&&s._scheme==this._scheme?"relative or authority":this._isRelative?"authority first slash":"scheme data"}break;case"scheme data":"?"==b?(this._query="?",d="query"):"#"==b?(this._fragment="#",d="fragment"):f!=b&&" "!=b&&"\n"!=b&&"\r"!=b&&(this._schemeData+=o(b));break;case"no scheme":if(s&&t(s._scheme)){d="relative";continue}c("Missing scheme."),n.call(this);break;case"relative or authority":if("/"!=b||"/"!=e[u+1]){c("Expected /, got: "+b),d="relative";continue}d="authority ignore slashes";break;case"relative":if(this._isRelative=!0,"file"!=this._scheme&&(this._scheme=s._scheme),f==b){this._host=s._host,this._port=s._port,this._path=s._path.slice(),this._query=s._query,this._username=s._username,this._password=s._password;break e}if("/"==b||"\\"==b)"\\"==b&&c("\\ is an invalid code point."),d="relative slash";else if("?"==b)this._host=s._host,this._port=s._port,this._path=s._path.slice(),this._query="?",this._username=s._username,this._password=s._password,d="query";else{if("#"!=b){var y=e[u+1],E=e[u+2];("file"!=this._scheme||!m.test(b)||":"!=y&&"|"!=y||f!=E&&"/"!=E&&"\\"!=E&&"?"!=E&&"#"!=E)&&(this._host=s._host,this._port=s._port,this._username=s._username,this._password=s._password,this._path=s._path.slice(),this._path.pop()),d="relative path";continue}this._host=s._host,this._port=s._port,this._path=s._path.slice(),this._query=s._query,this._fragment="#",this._username=s._username,this._password=s._password,d="fragment"}break;case"relative slash":if("/"!=b&&"\\"!=b){"file"!=this._scheme&&(this._host=s._host,this._port=s._port,this._username=s._username,this._password=s._password),d="relative path";continue}"\\"==b&&c("\\ is an invalid code point."),d="file"==this._scheme?"file host":"authority ignore slashes";break;case"authority first slash":if("/"!=b){c("Expected '/', got: "+b),d="authority ignore slashes";continue}d="authority second slash";break;case"authority second slash":if(d="authority ignore slashes","/"!=b){c("Expected '/', got: "+b);continue}break;case"authority ignore slashes":if("/"!=b&&"\\"!=b){d="authority";continue}c("Expected authority, got: "+b);break;case"authority":if("@"==b){_&&(c("@ already seen."),l+="%40"),_=!0;for(var L=0;L>>0)+(t++ +"__")};n.prototype={set:function(t,n){var r=t[this.name];return r&&r[0]===t?r[1]=n:e(t,this.name,{value:[t,n],writable:!0}),this},get:function(e){var t;return(t=e[this.name])&&t[0]===e?t[1]:void 0},"delete":function(e){var t=e[this.name];return t&&t[0]===e?(t[0]=t[1]=void 0,!0):!1},has:function(e){var t=e[this.name];return t?t[0]===e:!1}},window.WeakMap=n}(),function(e){function t(e){b.push(e),g||(g=!0,m(r))}function n(e){return window.ShadowDOMPolyfill&&window.ShadowDOMPolyfill.wrapIfNeeded(e)||e}function r(){g=!1;var e=b;b=[],e.sort(function(e,t){return e.uid_-t.uid_});var t=!1;e.forEach(function(e){var n=e.takeRecords();o(e),n.length&&(e.callback_(n,e),t=!0)}),t&&r()}function o(e){e.nodes_.forEach(function(t){var n=v.get(t);n&&n.forEach(function(t){t.observer===e&&t.removeTransientObservers()})})}function i(e,t){for(var n=e;n;n=n.parentNode){var r=v.get(n);if(r)for(var o=0;o0){var o=n[r-1],i=p(o,e);if(i)return void(n[r-1]=i)}else t(this.observer);n[r]=e},addListeners:function(){this.addListeners_(this.target)},addListeners_:function(e){var t=this.options;t.attributes&&e.addEventListener("DOMAttrModified",this,!0),t.characterData&&e.addEventListener("DOMCharacterDataModified",this,!0),t.childList&&e.addEventListener("DOMNodeInserted",this,!0),(t.childList||t.subtree)&&e.addEventListener("DOMNodeRemoved",this,!0)},removeListeners:function(){this.removeListeners_(this.target)},removeListeners_:function(e){var t=this.options;t.attributes&&e.removeEventListener("DOMAttrModified",this,!0),t.characterData&&e.removeEventListener("DOMCharacterDataModified",this,!0),t.childList&&e.removeEventListener("DOMNodeInserted",this,!0),(t.childList||t.subtree)&&e.removeEventListener("DOMNodeRemoved",this,!0)},addTransientObserver:function(e){if(e!==this.target){this.addListeners_(e),this.transientObservedNodes.push(e);var t=v.get(e);t||v.set(e,t=[]),t.push(this)}},removeTransientObservers:function(){var e=this.transientObservedNodes;this.transientObservedNodes=[],e.forEach(function(e){this.removeListeners_(e);for(var t=v.get(e),n=0;np&&(h=s[p]);p++)a(h)?(c++,n()):(h.addEventListener("load",r),h.addEventListener("error",i));else n()}function a(e){return l?e.__loaded||e["import"]&&"loading"!==e["import"].readyState:e.__importParsed}function s(e){for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)c(t)&&d(t)}function c(e){return"link"===e.localName&&"import"===e.rel}function d(e){var t=e["import"];t?o({target:e}):(e.addEventListener("load",o),e.addEventListener("error",o))}var u="import",l=Boolean(u in document.createElement("link")),h=Boolean(window.ShadowDOMPolyfill),p=function(e){return h?window.ShadowDOMPolyfill.wrapIfNeeded(e):e},f=p(document),m={get:function(){var e=window.HTMLImports.currentScript||document.currentScript||("complete"!==document.readyState?document.scripts[document.scripts.length-1]:null);return p(e)},configurable:!0};Object.defineProperty(document,"_currentScript",m),Object.defineProperty(f,"_currentScript",m);var v=/Trident/.test(navigator.userAgent),_=v?"complete":"interactive",w="readystatechange";l&&(new MutationObserver(function(e){for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)t.addedNodes&&s(t.addedNodes)}).observe(document.head,{childList:!0}),function(){if("loading"===document.readyState)for(var e,t=document.querySelectorAll("link[rel=import]"),n=0,r=t.length;r>n&&(e=t[n]);n++)d(e)}()),t(function(e){window.HTMLImports.ready=!0,window.HTMLImports.readyTime=(new Date).getTime();var t=f.createEvent("CustomEvent");t.initCustomEvent("HTMLImportsLoaded",!0,!0,e),f.dispatchEvent(t)}),e.IMPORT_LINK_TYPE=u,e.useNative=l,e.rootDocument=f,e.whenReady=t,e.isIE=v}(window.HTMLImports),function(e){var t=[],n=function(e){t.push(e)},r=function(){t.forEach(function(t){t(e)})};e.addModule=n,e.initializeModules=r}(window.HTMLImports),window.HTMLImports.addModule(function(e){var t=/(url\()([^)]*)(\))/g,n=/(@import[\s]+(?!url\())([^;]*)(;)/g,r={resolveUrlsInStyle:function(e,t){var n=e.ownerDocument,r=n.createElement("a");return e.textContent=this.resolveUrlsInCssText(e.textContent,t,r),e},resolveUrlsInCssText:function(e,r,o){var i=this.replaceUrls(e,o,r,t);return i=this.replaceUrls(i,o,r,n)},replaceUrls:function(e,t,n,r){return e.replace(r,function(e,r,o,i){var a=o.replace(/["']/g,"");return n&&(a=new URL(a,n).href),t.href=a,a=t.href,r+"'"+a+"'"+i})}};e.path=r}),window.HTMLImports.addModule(function(e){var t={async:!0,ok:function(e){return e.status>=200&&e.status<300||304===e.status||0===e.status},load:function(n,r,o){var i=new XMLHttpRequest;return(e.flags.debug||e.flags.bust)&&(n+="?"+Math.random()),i.open("GET",n,t.async),i.addEventListener("readystatechange",function(e){if(4===i.readyState){var n=i.getResponseHeader("Location"),a=null;if(n)var a="/"===n.substr(0,1)?location.origin+n:n;r.call(o,!t.ok(i)&&i,i.response||i.responseText,a)}}),i.send(),i},loadDocument:function(e,t,n){this.load(e,t,n).responseType="document"}};e.xhr=t}),window.HTMLImports.addModule(function(e){var t=e.xhr,n=e.flags,r=function(e,t){this.cache={},this.onload=e,this.oncomplete=t,this.inflight=0,this.pending={}};r.prototype={addNodes:function(e){this.inflight+=e.length;for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)this.require(t);this.checkDone()},addNode:function(e){this.inflight++,this.require(e),this.checkDone()},require:function(e){var t=e.src||e.href;e.__nodeUrl=t,this.dedupe(t,e)||this.fetch(t,e)},dedupe:function(e,t){if(this.pending[e])return this.pending[e].push(t),!0;return this.cache[e]?(this.onload(e,t,this.cache[e]),this.tail(),!0):(this.pending[e]=[t],!1)},fetch:function(e,r){if(n.load&&console.log("fetch",e,r),e)if(e.match(/^data:/)){var o=e.split(","),i=o[0],a=o[1];a=i.indexOf(";base64")>-1?atob(a):decodeURIComponent(a),setTimeout(function(){this.receive(e,r,null,a)}.bind(this),0)}else{var s=function(t,n,o){this.receive(e,r,t,n,o)}.bind(this);t.load(e,s)}else setTimeout(function(){this.receive(e,r,{error:"href must be specified"},null)}.bind(this),0)},receive:function(e,t,n,r,o){this.cache[e]=r;for(var i,a=this.pending[e],s=0,c=a.length;c>s&&(i=a[s]);s++)this.onload(e,i,r,n,o),this.tail();this.pending[e]=null},tail:function(){--this.inflight,this.checkDone()},checkDone:function(){this.inflight||this.oncomplete()}},e.Loader=r}),window.HTMLImports.addModule(function(e){var t=function(e){this.addCallback=e,this.mo=new MutationObserver(this.handler.bind(this))};t.prototype={handler:function(e){for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)"childList"===t.type&&t.addedNodes.length&&this.addedNodes(t.addedNodes)},addedNodes:function(e){this.addCallback&&this.addCallback(e);for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)t.children&&t.children.length&&this.addedNodes(t.children)},observe:function(e){this.mo.observe(e,{childList:!0,subtree:!0})}},e.Observer=t}),window.HTMLImports.addModule(function(e){function t(e){return"link"===e.localName&&e.rel===u}function n(e){var t=r(e);return"data:text/javascript;charset=utf-8,"+encodeURIComponent(t)}function r(e){return e.textContent+o(e)}function o(e){var t=e.ownerDocument;t.__importedScripts=t.__importedScripts||0;var n=e.ownerDocument.baseURI,r=t.__importedScripts?"-"+t.__importedScripts:"";return t.__importedScripts++,"\n//# sourceURL="+n+r+".js\n"}function i(e){var t=e.ownerDocument.createElement("style");return t.textContent=e.textContent,a.resolveUrlsInStyle(t),t}var a=e.path,s=e.rootDocument,c=e.flags,d=e.isIE,u=e.IMPORT_LINK_TYPE,l="link[rel="+u+"]",h={documentSelectors:l,importsSelectors:[l,"link[rel=stylesheet]:not([type])","style:not([type])","script:not([type])",'script[type="application/javascript"]','script[type="text/javascript"]'].join(","),map:{link:"parseLink",script:"parseScript",style:"parseStyle"},dynamicElements:[],parseNext:function(){var e=this.nextToParse();e&&this.parse(e)},parse:function(e){if(this.isParsed(e))return void(c.parse&&console.log("[%s] is already parsed",e.localName));var t=this[this.map[e.localName]];t&&(this.markParsing(e),t.call(this,e))},parseDynamic:function(e,t){this.dynamicElements.push(e),t||this.parseNext()},markParsing:function(e){c.parse&&console.log("parsing",e),this.parsingElement=e},markParsingComplete:function(e){e.__importParsed=!0,this.markDynamicParsingComplete(e),e.__importElement&&(e.__importElement.__importParsed=!0,this.markDynamicParsingComplete(e.__importElement)),this.parsingElement=null,c.parse&&console.log("completed",e)},markDynamicParsingComplete:function(e){var t=this.dynamicElements.indexOf(e);t>=0&&this.dynamicElements.splice(t,1)},parseImport:function(e){if(e["import"]=e.__doc,window.HTMLImports.__importsParsingHook&&window.HTMLImports.__importsParsingHook(e),e["import"]&&(e["import"].__importParsed=!0),this.markParsingComplete(e),e.dispatchEvent(e.__resource&&!e.__error?new CustomEvent("load",{bubbles:!1}):new CustomEvent("error",{bubbles:!1})),e.__pending)for(var t;e.__pending.length;)t=e.__pending.shift(),t&&t({target:e});this.parseNext()},parseLink:function(e){t(e)?this.parseImport(e):(e.href=e.href,this.parseGeneric(e))},parseStyle:function(e){var t=e;e=i(e),t.__appliedElement=e,e.__importElement=t,this.parseGeneric(e)},parseGeneric:function(e){this.trackElement(e),this.addElementToDocument(e)},rootImportForElement:function(e){for(var t=e;t.ownerDocument.__importLink;)t=t.ownerDocument.__importLink;return t},addElementToDocument:function(e){var t=this.rootImportForElement(e.__importElement||e);t.parentNode.insertBefore(e,t)},trackElement:function(e,t){var n=this,r=function(o){e.removeEventListener("load",r),e.removeEventListener("error",r),t&&t(o),n.markParsingComplete(e),n.parseNext()};if(e.addEventListener("load",r),e.addEventListener("error",r),d&&"style"===e.localName){var o=!1;if(-1==e.textContent.indexOf("@import"))o=!0;else if(e.sheet){o=!0;for(var i,a=e.sheet.cssRules,s=a?a.length:0,c=0;s>c&&(i=a[c]);c++)i.type===CSSRule.IMPORT_RULE&&(o=o&&Boolean(i.styleSheet))}o&&setTimeout(function(){e.dispatchEvent(new CustomEvent("load",{bubbles:!1}))})}},parseScript:function(t){var r=document.createElement("script");r.__importElement=t,r.src=t.src?t.src:n(t),e.currentScript=t,this.trackElement(r,function(t){r.parentNode&&r.parentNode.removeChild(r),e.currentScript=null}),this.addElementToDocument(r)},nextToParse:function(){return this._mayParse=[],!this.parsingElement&&(this.nextToParseInDoc(s)||this.nextToParseDynamic())},nextToParseInDoc:function(e,n){if(e&&this._mayParse.indexOf(e)<0){this._mayParse.push(e);for(var r,o=e.querySelectorAll(this.parseSelectorsForNode(e)),i=0,a=o.length;a>i&&(r=o[i]);i++)if(!this.isParsed(r))return this.hasResource(r)?t(r)?this.nextToParseInDoc(r.__doc,r):r:void 0}return n},nextToParseDynamic:function(){return this.dynamicElements[0]},parseSelectorsForNode:function(e){var t=e.ownerDocument||e;return t===s?this.documentSelectors:this.importsSelectors},isParsed:function(e){return e.__importParsed},needsDynamicParsing:function(e){return this.dynamicElements.indexOf(e)>=0},hasResource:function(e){return t(e)&&void 0===e.__doc?!1:!0}};e.parser=h,e.IMPORT_SELECTOR=l}),window.HTMLImports.addModule(function(e){function t(e){return n(e,a)}function n(e,t){return"link"===e.localName&&e.getAttribute("rel")===t}function r(e){return!!Object.getOwnPropertyDescriptor(e,"baseURI")}function o(e,t){var n=document.implementation.createHTMLDocument(a);n._URL=t;var o=n.createElement("base");o.setAttribute("href",t),n.baseURI||r(n)||Object.defineProperty(n,"baseURI",{value:t});var i=n.createElement("meta");return i.setAttribute("charset","utf-8"),n.head.appendChild(i),n.head.appendChild(o),n.body.innerHTML=e,window.HTMLTemplateElement&&HTMLTemplateElement.bootstrap&&HTMLTemplateElement.bootstrap(n),n}var i=e.flags,a=e.IMPORT_LINK_TYPE,s=e.IMPORT_SELECTOR,c=e.rootDocument,d=e.Loader,u=e.Observer,l=e.parser,h={documents:{},documentPreloadSelectors:s,importsPreloadSelectors:[s].join(","),loadNode:function(e){p.addNode(e)},loadSubtree:function(e){var t=this.marshalNodes(e);p.addNodes(t)},marshalNodes:function(e){return e.querySelectorAll(this.loadSelectorsForNode(e))},loadSelectorsForNode:function(e){var t=e.ownerDocument||e;return t===c?this.documentPreloadSelectors:this.importsPreloadSelectors},loaded:function(e,n,r,a,s){if(i.load&&console.log("loaded",e,n),n.__resource=r,n.__error=a,t(n)){var c=this.documents[e];void 0===c&&(c=a?null:o(r,s||e),c&&(c.__importLink=n,this.bootDocument(c)),this.documents[e]=c),n.__doc=c}l.parseNext()},bootDocument:function(e){this.loadSubtree(e),this.observer.observe(e),l.parseNext()},loadedAll:function(){l.parseNext()}},p=new d(h.loaded.bind(h),h.loadedAll.bind(h));if(h.observer=new u,!document.baseURI){var f={get:function(){var e=document.querySelector("base");return e?e.href:window.location.href},configurable:!0};Object.defineProperty(document,"baseURI",f),Object.defineProperty(c,"baseURI",f)}e.importer=h,e.importLoader=p}),window.HTMLImports.addModule(function(e){var t=e.parser,n=e.importer,r={added:function(e){for(var r,o,i,a,s=0,c=e.length;c>s&&(a=e[s]);s++)r||(r=a.ownerDocument,o=t.isParsed(r)),i=this.shouldLoadNode(a),i&&n.loadNode(a),this.shouldParseNode(a)&&o&&t.parseDynamic(a,i)},shouldLoadNode:function(e){return 1===e.nodeType&&o.call(e,n.loadSelectorsForNode(e))},shouldParseNode:function(e){return 1===e.nodeType&&o.call(e,t.parseSelectorsForNode(e))}};n.observer.addCallback=r.added.bind(r);var o=HTMLElement.prototype.matches||HTMLElement.prototype.matchesSelector||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector}),function(e){function t(){window.HTMLImports.importer.bootDocument(o)}var n=e.initializeModules,r=e.isIE;if(!e.useNative){r&&"function"!=typeof window.CustomEvent&&(window.CustomEvent=function(e,t){t=t||{};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,Boolean(t.bubbles),Boolean(t.cancelable),t.detail),n.preventDefault=function(){Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})},n},window.CustomEvent.prototype=window.Event.prototype),n();var o=e.rootDocument;"complete"===document.readyState||"interactive"===document.readyState&&!window.attachEvent?t():document.addEventListener("DOMContentLoaded",t)}}(window.HTMLImports),window.CustomElements=window.CustomElements||{flags:{}},function(e){var t=e.flags,n=[],r=function(e){n.push(e)},o=function(){n.forEach(function(t){t(e)})};e.addModule=r,e.initializeModules=o,e.hasNative=Boolean(document.registerElement),e.useNative=!t.register&&e.hasNative&&!window.ShadowDOMPolyfill&&(!window.HTMLImports||window.HTMLImports.useNative)}(window.CustomElements),window.CustomElements.addModule(function(e){function t(e,t){n(e,function(e){return t(e)?!0:void r(e,t)}),r(e,t)}function n(e,t,r){var o=e.firstElementChild;if(!o)for(o=e.firstChild;o&&o.nodeType!==Node.ELEMENT_NODE;)o=o.nextSibling;for(;o;)t(o,r)!==!0&&n(o,t,r),o=o.nextElementSibling;return null}function r(e,n){for(var r=e.shadowRoot;r;)t(r,n),r=r.olderShadowRoot}function o(e,t){i(e,t,[])}function i(e,t,n){if(e=window.wrap(e),!(n.indexOf(e)>=0)){n.push(e);for(var r,o=e.querySelectorAll("link[rel="+a+"]"),s=0,c=o.length;c>s&&(r=o[s]);s++)r["import"]&&i(r["import"],t,n);t(e)}}var a=window.HTMLImports?window.HTMLImports.IMPORT_LINK_TYPE:"none";e.forDocumentTree=o,e.forSubtree=t}),window.CustomElements.addModule(function(e){function t(e,t){return n(e,t)||r(e,t)}function n(t,n){return e.upgrade(t,n)?!0:void(n&&a(t))}function r(e,t){g(e,function(e){return n(e,t)?!0:void 0})}function o(e){L.push(e),E||(E=!0,setTimeout(i))}function i(){E=!1;for(var e,t=L,n=0,r=t.length;r>n&&(e=t[n]);n++)e();L=[]}function a(e){y?o(function(){s(e)}):s(e)}function s(e){e.__upgraded__&&!e.__attached&&(e.__attached=!0,e.attachedCallback&&e.attachedCallback())}function c(e){d(e),g(e,function(e){d(e)})}function d(e){y?o(function(){u(e)}):u(e)}function u(e){e.__upgraded__&&e.__attached&&(e.__attached=!1,e.detachedCallback&&e.detachedCallback())}function l(e){for(var t=e,n=window.wrap(document);t;){if(t==n)return!0;t=t.parentNode||t.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&t.host}}function h(e){if(e.shadowRoot&&!e.shadowRoot.__watched){w.dom&&console.log("watching shadow-root for: ",e.localName);for(var t=e.shadowRoot;t;)m(t),t=t.olderShadowRoot}}function p(e,n){if(w.dom){var r=n[0];if(r&&"childList"===r.type&&r.addedNodes&&r.addedNodes){for(var o=r.addedNodes[0];o&&o!==document&&!o.host;)o=o.parentNode;var i=o&&(o.URL||o._URL||o.host&&o.host.localName)||"";i=i.split("/?").shift().split("/").pop()}console.group("mutations (%d) [%s]",n.length,i||"")}var a=l(e);n.forEach(function(e){"childList"===e.type&&(M(e.addedNodes,function(e){e.localName&&t(e,a)}),M(e.removedNodes,function(e){e.localName&&c(e)}))}),w.dom&&console.groupEnd()}function f(e){for(e=window.wrap(e),e||(e=window.wrap(document));e.parentNode;)e=e.parentNode;var t=e.__observer;t&&(p(e,t.takeRecords()),i())}function m(e){if(!e.__observer){var t=new MutationObserver(p.bind(this,e));t.observe(e,{childList:!0,subtree:!0}),e.__observer=t}}function v(e){e=window.wrap(e),w.dom&&console.group("upgradeDocument: ",e.baseURI.split("/").pop());var n=e===window.wrap(document);t(e,n),m(e),w.dom&&console.groupEnd()}function _(e){b(e,v)}var w=e.flags,g=e.forSubtree,b=e.forDocumentTree,y=!window.MutationObserver||window.MutationObserver===window.JsMutationObserver;e.hasPolyfillMutations=y;var E=!1,L=[],M=Array.prototype.forEach.call.bind(Array.prototype.forEach),T=Element.prototype.createShadowRoot;T&&(Element.prototype.createShadowRoot=function(){var e=T.call(this);return window.CustomElements.watchShadow(this),e}),e.watchShadow=h,e.upgradeDocumentTree=_,e.upgradeDocument=v,e.upgradeSubtree=r,e.upgradeAll=t,e.attached=a,e.takeRecords=f}),window.CustomElements.addModule(function(e){function t(t,r){if(!t.__upgraded__&&t.nodeType===Node.ELEMENT_NODE){var o=t.getAttribute("is"),i=e.getRegisteredDefinition(t.localName)||e.getRegisteredDefinition(o);if(i&&(o&&i.tag==t.localName||!o&&!i["extends"]))return n(t,i,r)}}function n(t,n,o){return a.upgrade&&console.group("upgrade:",t.localName),n.is&&t.setAttribute("is",n.is),r(t,n),t.__upgraded__=!0,i(t),o&&e.attached(t),e.upgradeSubtree(t,o),a.upgrade&&console.groupEnd(),t}function r(e,t){Object.__proto__?e.__proto__=t.prototype:(o(e,t.prototype,t["native"]),e.__proto__=t.prototype)}function o(e,t,n){for(var r={},o=t;o!==n&&o!==HTMLElement.prototype;){for(var i,a=Object.getOwnPropertyNames(o),s=0;i=a[s];s++)r[i]||(Object.defineProperty(e,i,Object.getOwnPropertyDescriptor(o,i)),r[i]=1);o=Object.getPrototypeOf(o)}}function i(e){e.createdCallback&&e.createdCallback()}var a=e.flags;e.upgrade=t,e.upgradeWithDefinition=n,e.implementPrototype=r}),window.CustomElements.addModule(function(e){function t(t,r){var c=r||{};if(!t)throw new Error("document.registerElement: first argument `+"`"+`name`+"`"+` must not be empty");if(t.indexOf("-")<0)throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '"+String(t)+"'.");if(o(t))throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '"+String(t)+"'. The type name is invalid.");if(d(t))throw new Error("DuplicateDefinitionError: a type with name '"+String(t)+"' is already registered");return c.prototype||(c.prototype=Object.create(HTMLElement.prototype)),c.__name=t.toLowerCase(),c.lifecycle=c.lifecycle||{},c.ancestry=i(c["extends"]),a(c),s(c),n(c.prototype),u(c.__name,c),c.ctor=l(c),c.ctor.prototype=c.prototype,c.prototype.constructor=c.ctor,e.ready&&_(document),c.ctor}function n(e){if(!e.setAttribute._polyfilled){var t=e.setAttribute;e.setAttribute=function(e,n){
-r.call(this,e,n,t)};var n=e.removeAttribute;e.removeAttribute=function(e){r.call(this,e,null,n)},e.setAttribute._polyfilled=!0}}function r(e,t,n){e=e.toLowerCase();var r=this.getAttribute(e);n.apply(this,arguments);var o=this.getAttribute(e);this.attributeChangedCallback&&o!==r&&this.attributeChangedCallback(e,r,o)}function o(e){for(var t=0;t=0&&b(r,HTMLElement),r)}function f(e,t){var n=e[t];e[t]=function(){var e=n.apply(this,arguments);return w(e),e}}var m,v=e.isIE11OrOlder,_=e.upgradeDocumentTree,w=e.upgradeAll,g=e.upgradeWithDefinition,b=e.implementPrototype,y=e.useNative,E=["annotation-xml","color-profile","font-face","font-face-src","font-face-uri","font-face-format","font-face-name","missing-glyph"],L={},M="http://www.w3.org/1999/xhtml",T=document.createElement.bind(document),O=document.createElementNS.bind(document);m=Object.__proto__||y?function(e,t){return e instanceof t}:function(e,t){if(e instanceof t)return!0;for(var n=e;n;){if(n===t.prototype)return!0;n=n.__proto__}return!1},f(Node.prototype,"cloneNode"),f(document,"importNode"),v&&!function(){var e=document.importNode;document.importNode=function(){var t=e.apply(document,arguments);if(t.nodeType==t.DOCUMENT_FRAGMENT_NODE){var n=document.createDocumentFragment();return n.appendChild(t),n}return t}}(),document.registerElement=t,document.createElement=p,document.createElementNS=h,e.registry=L,e["instanceof"]=m,e.reservedTagList=E,e.getRegisteredDefinition=d,document.register=document.registerElement}),function(e){function t(){a(window.wrap(document)),window.CustomElements.ready=!0,requestAnimationFrame(function(){setTimeout(function(){window.CustomElements.readyTime=Date.now(),window.HTMLImports&&(window.CustomElements.elapsed=window.CustomElements.readyTime-window.HTMLImports.readyTime),document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))})})}var n=e.useNative,r=e.initializeModules,o=/Trident/.test(navigator.userAgent);if(n){var i=function(){};e.watchShadow=i,e.upgrade=i,e.upgradeAll=i,e.upgradeDocumentTree=i,e.upgradeSubtree=i,e.takeRecords=i,e["instanceof"]=function(e,t){return e instanceof t}}else r();var a=e.upgradeDocumentTree,s=e.upgradeDocument;if(window.wrap||(window.ShadowDOMPolyfill?(window.wrap=window.ShadowDOMPolyfill.wrapIfNeeded,window.unwrap=window.ShadowDOMPolyfill.unwrapIfNeeded):window.wrap=window.unwrap=function(e){return e}),window.HTMLImports&&(window.HTMLImports.__importsParsingHook=function(e){e["import"]&&s(wrap(e["import"]))}),o&&"function"!=typeof window.CustomEvent&&(window.CustomEvent=function(e,t){t=t||{};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,Boolean(t.bubbles),Boolean(t.cancelable),t.detail),n.preventDefault=function(){Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})},n},window.CustomEvent.prototype=window.Event.prototype),"complete"===document.readyState||e.flags.eager)t();else if("interactive"!==document.readyState||window.attachEvent||window.HTMLImports&&!window.HTMLImports.ready){var c=window.HTMLImports&&!window.HTMLImports.ready?"HTMLImportsLoaded":"DOMContentLoaded";window.addEventListener(c,t)}else t();e.isIE11OrOlder=o}(window.CustomElements),"undefined"==typeof HTMLTemplateElement&&!function(){function e(e){switch(e){case"&":return"&";case"<":return"<";case">":return">";case"Â ":return" "}}function t(t){return t.replace(a,e)}var n="template",r=document.implementation.createHTMLDocument("template"),o=!0;HTMLTemplateElement=function(){},HTMLTemplateElement.prototype=Object.create(HTMLElement.prototype),HTMLTemplateElement.decorate=function(e){e.content||(e.content=r.createDocumentFragment());for(var n;n=e.firstChild;)e.content.appendChild(n);if(o)try{Object.defineProperty(e,"innerHTML",{get:function(){for(var e="",n=this.content.firstChild;n;n=n.nextSibling)e+=n.outerHTML||t(n.data);return e},set:function(e){for(r.body.innerHTML=e,HTMLTemplateElement.bootstrap(r);this.content.firstChild;)this.content.removeChild(this.content.firstChild);for(;r.body.firstChild;)this.content.appendChild(r.body.firstChild)},configurable:!0})}catch(i){o=!1}},HTMLTemplateElement.bootstrap=function(e){for(var t,r=e.querySelectorAll(n),o=0,i=r.length;i>o&&(t=r[o]);o++)HTMLTemplateElement.decorate(t)},window.addEventListener("DOMContentLoaded",function(){HTMLTemplateElement.bootstrap(document)});var i=document.createElement;document.createElement=function(){"use strict";var e=i.apply(document,arguments);return"template"==e.localName&&HTMLTemplateElement.decorate(e),e};var a=/[&\u00A0<>]/g}(),function(e){var t=document.createElement("style");t.textContent="body {transition: opacity ease-in 0.2s; } \nbody[unresolved] {opacity: 0; display: block; overflow: hidden; position: relative; } \n";var n=document.querySelector("head");n.insertBefore(t,n.firstChild)}(window.WebComponents);`},
- "/bower_components/webcomponentsjs/webcomponents.js": {"/bower_components/webcomponentsjs/webcomponents.js", time.Unix(0, 1440513533117507599), false, `/**
- * @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
- */
-// @version 0.7.11
-window.WebComponents = window.WebComponents || {};
-
-(function(scope) {
- var flags = scope.flags || {};
- var file = "webcomponents.js";
- var script = document.querySelector('script[src*="' + file + '"]');
- if (!flags.noOpts) {
- location.search.slice(1).split("&").forEach(function(option) {
- var parts = option.split("=");
- var match;
- if (parts[0] && (match = parts[0].match(/wc-(.+)/))) {
- flags[match[1]] = parts[1] || true;
- }
- });
- if (script) {
- for (var i = 0, a; a = script.attributes[i]; i++) {
- if (a.name !== "src") {
- flags[a.name] = a.value || true;
- }
- }
- }
- if (flags.log && flags.log.split) {
- var parts = flags.log.split(",");
- flags.log = {};
- parts.forEach(function(f) {
- flags.log[f] = true;
- });
- } else {
- flags.log = {};
- }
- }
- flags.shadow = flags.shadow || flags.shadowdom || flags.polyfill;
- if (flags.shadow === "native") {
- flags.shadow = false;
- } else {
- flags.shadow = flags.shadow || !HTMLElement.prototype.createShadowRoot;
- }
- if (flags.register) {
- window.CustomElements = window.CustomElements || {
- flags: {}
- };
- window.CustomElements.flags.register = flags.register;
- }
- scope.flags = flags;
-})(WebComponents);
-
-if (WebComponents.flags.shadow) {
- if (typeof WeakMap === "undefined") {
- (function() {
- var defineProperty = Object.defineProperty;
- var counter = Date.now() % 1e9;
- var WeakMap = function() {
- this.name = "__st" + (Math.random() * 1e9 >>> 0) + (counter++ + "__");
- };
- WeakMap.prototype = {
- set: function(key, value) {
- var entry = key[this.name];
- if (entry && entry[0] === key) entry[1] = value; else defineProperty(key, this.name, {
- value: [ key, value ],
- writable: true
- });
- return this;
- },
- get: function(key) {
- var entry;
- return (entry = key[this.name]) && entry[0] === key ? entry[1] : undefined;
- },
- "delete": function(key) {
- var entry = key[this.name];
- if (!entry || entry[0] !== key) return false;
- entry[0] = entry[1] = undefined;
- return true;
- },
- has: function(key) {
- var entry = key[this.name];
- if (!entry) return false;
- return entry[0] === key;
- }
- };
- window.WeakMap = WeakMap;
- })();
- }
- window.ShadowDOMPolyfill = {};
- (function(scope) {
- "use strict";
- var constructorTable = new WeakMap();
- var nativePrototypeTable = new WeakMap();
- var wrappers = Object.create(null);
- function detectEval() {
- if (typeof chrome !== "undefined" && chrome.app && chrome.app.runtime) {
- return false;
- }
- if (navigator.getDeviceStorage) {
- return false;
- }
- try {
- var f = new Function("return true;");
- return f();
- } catch (ex) {
- return false;
- }
- }
- var hasEval = detectEval();
- function assert(b) {
- if (!b) throw new Error("Assertion failed");
- }
- var defineProperty = Object.defineProperty;
- var getOwnPropertyNames = Object.getOwnPropertyNames;
- var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
- function mixin(to, from) {
- var names = getOwnPropertyNames(from);
- for (var i = 0; i < names.length; i++) {
- var name = names[i];
- defineProperty(to, name, getOwnPropertyDescriptor(from, name));
- }
- return to;
- }
- function mixinStatics(to, from) {
- var names = getOwnPropertyNames(from);
- for (var i = 0; i < names.length; i++) {
- var name = names[i];
- switch (name) {
- case "arguments":
- case "caller":
- case "length":
- case "name":
- case "prototype":
- case "toString":
- continue;
- }
- defineProperty(to, name, getOwnPropertyDescriptor(from, name));
- }
- return to;
- }
- function oneOf(object, propertyNames) {
- for (var i = 0; i < propertyNames.length; i++) {
- if (propertyNames[i] in object) return propertyNames[i];
- }
- }
- var nonEnumerableDataDescriptor = {
- value: undefined,
- configurable: true,
- enumerable: false,
- writable: true
- };
- function defineNonEnumerableDataProperty(object, name, value) {
- nonEnumerableDataDescriptor.value = value;
- defineProperty(object, name, nonEnumerableDataDescriptor);
- }
- getOwnPropertyNames(window);
- function getWrapperConstructor(node, opt_instance) {
- var nativePrototype = node.__proto__ || Object.getPrototypeOf(node);
- if (isFirefox) {
- try {
- getOwnPropertyNames(nativePrototype);
- } catch (error) {
- nativePrototype = nativePrototype.__proto__;
- }
- }
- var wrapperConstructor = constructorTable.get(nativePrototype);
- if (wrapperConstructor) return wrapperConstructor;
- var parentWrapperConstructor = getWrapperConstructor(nativePrototype);
- var GeneratedWrapper = createWrapperConstructor(parentWrapperConstructor);
- registerInternal(nativePrototype, GeneratedWrapper, opt_instance);
- return GeneratedWrapper;
- }
- function addForwardingProperties(nativePrototype, wrapperPrototype) {
- installProperty(nativePrototype, wrapperPrototype, true);
- }
- function registerInstanceProperties(wrapperPrototype, instanceObject) {
- installProperty(instanceObject, wrapperPrototype, false);
- }
- var isFirefox = /Firefox/.test(navigator.userAgent);
- var dummyDescriptor = {
- get: function() {},
- set: function(v) {},
- configurable: true,
- enumerable: true
- };
- function isEventHandlerName(name) {
- return /^on[a-z]+$/.test(name);
- }
- function isIdentifierName(name) {
- return /^[a-zA-Z_$][a-zA-Z_$0-9]*$/.test(name);
- }
- function getGetter(name) {
- return hasEval && isIdentifierName(name) ? new Function("return this.__impl4cf1e782hg__." + name) : function() {
- return this.__impl4cf1e782hg__[name];
- };
- }
- function getSetter(name) {
- return hasEval && isIdentifierName(name) ? new Function("v", "this.__impl4cf1e782hg__." + name + " = v") : function(v) {
- this.__impl4cf1e782hg__[name] = v;
- };
- }
- function getMethod(name) {
- return hasEval && isIdentifierName(name) ? new Function("return this.__impl4cf1e782hg__." + name + ".apply(this.__impl4cf1e782hg__, arguments)") : function() {
- return this.__impl4cf1e782hg__[name].apply(this.__impl4cf1e782hg__, arguments);
- };
- }
- function getDescriptor(source, name) {
- try {
- return Object.getOwnPropertyDescriptor(source, name);
- } catch (ex) {
- return dummyDescriptor;
- }
- }
- var isBrokenSafari = function() {
- var descr = Object.getOwnPropertyDescriptor(Node.prototype, "nodeType");
- return descr && !descr.get && !descr.set;
- }();
- function installProperty(source, target, allowMethod, opt_blacklist) {
- var names = getOwnPropertyNames(source);
- for (var i = 0; i < names.length; i++) {
- var name = names[i];
- if (name === "polymerBlackList_") continue;
- if (name in target) continue;
- if (source.polymerBlackList_ && source.polymerBlackList_[name]) continue;
- if (isFirefox) {
- source.__lookupGetter__(name);
- }
- var descriptor = getDescriptor(source, name);
- var getter, setter;
- if (typeof descriptor.value === "function") {
- if (allowMethod) {
- target[name] = getMethod(name);
- }
- continue;
- }
- var isEvent = isEventHandlerName(name);
- if (isEvent) getter = scope.getEventHandlerGetter(name); else getter = getGetter(name);
- if (descriptor.writable || descriptor.set || isBrokenSafari) {
- if (isEvent) setter = scope.getEventHandlerSetter(name); else setter = getSetter(name);
- }
- var configurable = isBrokenSafari || descriptor.configurable;
- defineProperty(target, name, {
- get: getter,
- set: setter,
- configurable: configurable,
- enumerable: descriptor.enumerable
- });
- }
- }
- function register(nativeConstructor, wrapperConstructor, opt_instance) {
- if (nativeConstructor == null) {
- return;
- }
- var nativePrototype = nativeConstructor.prototype;
- registerInternal(nativePrototype, wrapperConstructor, opt_instance);
- mixinStatics(wrapperConstructor, nativeConstructor);
- }
- function registerInternal(nativePrototype, wrapperConstructor, opt_instance) {
- var wrapperPrototype = wrapperConstructor.prototype;
- assert(constructorTable.get(nativePrototype) === undefined);
- constructorTable.set(nativePrototype, wrapperConstructor);
- nativePrototypeTable.set(wrapperPrototype, nativePrototype);
- addForwardingProperties(nativePrototype, wrapperPrototype);
- if (opt_instance) registerInstanceProperties(wrapperPrototype, opt_instance);
- defineNonEnumerableDataProperty(wrapperPrototype, "constructor", wrapperConstructor);
- wrapperConstructor.prototype = wrapperPrototype;
- }
- function isWrapperFor(wrapperConstructor, nativeConstructor) {
- return constructorTable.get(nativeConstructor.prototype) === wrapperConstructor;
- }
- function registerObject(object) {
- var nativePrototype = Object.getPrototypeOf(object);
- var superWrapperConstructor = getWrapperConstructor(nativePrototype);
- var GeneratedWrapper = createWrapperConstructor(superWrapperConstructor);
- registerInternal(nativePrototype, GeneratedWrapper, object);
- return GeneratedWrapper;
- }
- function createWrapperConstructor(superWrapperConstructor) {
- function GeneratedWrapper(node) {
- superWrapperConstructor.call(this, node);
- }
- var p = Object.create(superWrapperConstructor.prototype);
- p.constructor = GeneratedWrapper;
- GeneratedWrapper.prototype = p;
- return GeneratedWrapper;
- }
- function isWrapper(object) {
- return object && object.__impl4cf1e782hg__;
- }
- function isNative(object) {
- return !isWrapper(object);
- }
- function wrap(impl) {
- if (impl === null) return null;
- assert(isNative(impl));
- var wrapper = impl.__wrapper8e3dd93a60__;
- if (wrapper != null) {
- return wrapper;
- }
- return impl.__wrapper8e3dd93a60__ = new (getWrapperConstructor(impl, impl))(impl);
- }
- function unwrap(wrapper) {
- if (wrapper === null) return null;
- assert(isWrapper(wrapper));
- return wrapper.__impl4cf1e782hg__;
- }
- function unsafeUnwrap(wrapper) {
- return wrapper.__impl4cf1e782hg__;
- }
- function setWrapper(impl, wrapper) {
- wrapper.__impl4cf1e782hg__ = impl;
- impl.__wrapper8e3dd93a60__ = wrapper;
- }
- function unwrapIfNeeded(object) {
- return object && isWrapper(object) ? unwrap(object) : object;
- }
- function wrapIfNeeded(object) {
- return object && !isWrapper(object) ? wrap(object) : object;
- }
- function rewrap(node, wrapper) {
- if (wrapper === null) return;
- assert(isNative(node));
- assert(wrapper === undefined || isWrapper(wrapper));
- node.__wrapper8e3dd93a60__ = wrapper;
- }
- var getterDescriptor = {
- get: undefined,
- configurable: true,
- enumerable: true
- };
- function defineGetter(constructor, name, getter) {
- getterDescriptor.get = getter;
- defineProperty(constructor.prototype, name, getterDescriptor);
- }
- function defineWrapGetter(constructor, name) {
- defineGetter(constructor, name, function() {
- return wrap(this.__impl4cf1e782hg__[name]);
- });
- }
- function forwardMethodsToWrapper(constructors, names) {
- constructors.forEach(function(constructor) {
- names.forEach(function(name) {
- constructor.prototype[name] = function() {
- var w = wrapIfNeeded(this);
- return w[name].apply(w, arguments);
- };
- });
- });
- }
- scope.assert = assert;
- scope.constructorTable = constructorTable;
- scope.defineGetter = defineGetter;
- scope.defineWrapGetter = defineWrapGetter;
- scope.forwardMethodsToWrapper = forwardMethodsToWrapper;
- scope.isIdentifierName = isIdentifierName;
- scope.isWrapper = isWrapper;
- scope.isWrapperFor = isWrapperFor;
- scope.mixin = mixin;
- scope.nativePrototypeTable = nativePrototypeTable;
- scope.oneOf = oneOf;
- scope.registerObject = registerObject;
- scope.registerWrapper = register;
- scope.rewrap = rewrap;
- scope.setWrapper = setWrapper;
- scope.unsafeUnwrap = unsafeUnwrap;
- scope.unwrap = unwrap;
- scope.unwrapIfNeeded = unwrapIfNeeded;
- scope.wrap = wrap;
- scope.wrapIfNeeded = wrapIfNeeded;
- scope.wrappers = wrappers;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- function newSplice(index, removed, addedCount) {
- return {
- index: index,
- removed: removed,
- addedCount: addedCount
- };
- }
- var EDIT_LEAVE = 0;
- var EDIT_UPDATE = 1;
- var EDIT_ADD = 2;
- var EDIT_DELETE = 3;
- function ArraySplice() {}
- ArraySplice.prototype = {
- calcEditDistances: function(current, currentStart, currentEnd, old, oldStart, oldEnd) {
- var rowCount = oldEnd - oldStart + 1;
- var columnCount = currentEnd - currentStart + 1;
- var distances = new Array(rowCount);
- for (var i = 0; i < rowCount; i++) {
- distances[i] = new Array(columnCount);
- distances[i][0] = i;
- }
- for (var j = 0; j < columnCount; j++) distances[0][j] = j;
- for (var i = 1; i < rowCount; i++) {
- for (var j = 1; j < columnCount; j++) {
- if (this.equals(current[currentStart + j - 1], old[oldStart + i - 1])) distances[i][j] = distances[i - 1][j - 1]; else {
- var north = distances[i - 1][j] + 1;
- var west = distances[i][j - 1] + 1;
- distances[i][j] = north < west ? north : west;
- }
- }
- }
- return distances;
- },
- spliceOperationsFromEditDistances: function(distances) {
- var i = distances.length - 1;
- var j = distances[0].length - 1;
- var current = distances[i][j];
- var edits = [];
- while (i > 0 || j > 0) {
- if (i == 0) {
- edits.push(EDIT_ADD);
- j--;
- continue;
- }
- if (j == 0) {
- edits.push(EDIT_DELETE);
- i--;
- continue;
- }
- var northWest = distances[i - 1][j - 1];
- var west = distances[i - 1][j];
- var north = distances[i][j - 1];
- var min;
- if (west < north) min = west < northWest ? west : northWest; else min = north < northWest ? north : northWest;
- if (min == northWest) {
- if (northWest == current) {
- edits.push(EDIT_LEAVE);
- } else {
- edits.push(EDIT_UPDATE);
- current = northWest;
- }
- i--;
- j--;
- } else if (min == west) {
- edits.push(EDIT_DELETE);
- i--;
- current = west;
- } else {
- edits.push(EDIT_ADD);
- j--;
- current = north;
- }
- }
- edits.reverse();
- return edits;
- },
- calcSplices: function(current, currentStart, currentEnd, old, oldStart, oldEnd) {
- var prefixCount = 0;
- var suffixCount = 0;
- var minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart);
- if (currentStart == 0 && oldStart == 0) prefixCount = this.sharedPrefix(current, old, minLength);
- if (currentEnd == current.length && oldEnd == old.length) suffixCount = this.sharedSuffix(current, old, minLength - prefixCount);
- currentStart += prefixCount;
- oldStart += prefixCount;
- currentEnd -= suffixCount;
- oldEnd -= suffixCount;
- if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0) return [];
- if (currentStart == currentEnd) {
- var splice = newSplice(currentStart, [], 0);
- while (oldStart < oldEnd) splice.removed.push(old[oldStart++]);
- return [ splice ];
- } else if (oldStart == oldEnd) return [ newSplice(currentStart, [], currentEnd - currentStart) ];
- var ops = this.spliceOperationsFromEditDistances(this.calcEditDistances(current, currentStart, currentEnd, old, oldStart, oldEnd));
- var splice = undefined;
- var splices = [];
- var index = currentStart;
- var oldIndex = oldStart;
- for (var i = 0; i < ops.length; i++) {
- switch (ops[i]) {
- case EDIT_LEAVE:
- if (splice) {
- splices.push(splice);
- splice = undefined;
- }
- index++;
- oldIndex++;
- break;
-
- case EDIT_UPDATE:
- if (!splice) splice = newSplice(index, [], 0);
- splice.addedCount++;
- index++;
- splice.removed.push(old[oldIndex]);
- oldIndex++;
- break;
-
- case EDIT_ADD:
- if (!splice) splice = newSplice(index, [], 0);
- splice.addedCount++;
- index++;
- break;
-
- case EDIT_DELETE:
- if (!splice) splice = newSplice(index, [], 0);
- splice.removed.push(old[oldIndex]);
- oldIndex++;
- break;
- }
- }
- if (splice) {
- splices.push(splice);
- }
- return splices;
- },
- sharedPrefix: function(current, old, searchLength) {
- for (var i = 0; i < searchLength; i++) if (!this.equals(current[i], old[i])) return i;
- return searchLength;
- },
- sharedSuffix: function(current, old, searchLength) {
- var index1 = current.length;
- var index2 = old.length;
- var count = 0;
- while (count < searchLength && this.equals(current[--index1], old[--index2])) count++;
- return count;
- },
- calculateSplices: function(current, previous) {
- return this.calcSplices(current, 0, current.length, previous, 0, previous.length);
- },
- equals: function(currentValue, previousValue) {
- return currentValue === previousValue;
- }
- };
- scope.ArraySplice = ArraySplice;
- })(window.ShadowDOMPolyfill);
- (function(context) {
- "use strict";
- var OriginalMutationObserver = window.MutationObserver;
- var callbacks = [];
- var pending = false;
- var timerFunc;
- function handle() {
- pending = false;
- var copies = callbacks.slice(0);
- callbacks = [];
- for (var i = 0; i < copies.length; i++) {
- (0, copies[i])();
- }
- }
- if (OriginalMutationObserver) {
- var counter = 1;
- var observer = new OriginalMutationObserver(handle);
- var textNode = document.createTextNode(counter);
- observer.observe(textNode, {
- characterData: true
- });
- timerFunc = function() {
- counter = (counter + 1) % 2;
- textNode.data = counter;
- };
- } else {
- timerFunc = window.setTimeout;
- }
- function setEndOfMicrotask(func) {
- callbacks.push(func);
- if (pending) return;
- pending = true;
- timerFunc(handle, 0);
- }
- context.setEndOfMicrotask = setEndOfMicrotask;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var setEndOfMicrotask = scope.setEndOfMicrotask;
- var wrapIfNeeded = scope.wrapIfNeeded;
- var wrappers = scope.wrappers;
- var registrationsTable = new WeakMap();
- var globalMutationObservers = [];
- var isScheduled = false;
- function scheduleCallback(observer) {
- if (observer.scheduled_) return;
- observer.scheduled_ = true;
- globalMutationObservers.push(observer);
- if (isScheduled) return;
- setEndOfMicrotask(notifyObservers);
- isScheduled = true;
- }
- function notifyObservers() {
- isScheduled = false;
- while (globalMutationObservers.length) {
- var notifyList = globalMutationObservers;
- globalMutationObservers = [];
- notifyList.sort(function(x, y) {
- return x.uid_ - y.uid_;
- });
- for (var i = 0; i < notifyList.length; i++) {
- var mo = notifyList[i];
- mo.scheduled_ = false;
- var queue = mo.takeRecords();
- removeTransientObserversFor(mo);
- if (queue.length) {
- mo.callback_(queue, mo);
- }
- }
- }
- }
- function MutationRecord(type, target) {
- this.type = type;
- this.target = target;
- this.addedNodes = new wrappers.NodeList();
- this.removedNodes = new wrappers.NodeList();
- this.previousSibling = null;
- this.nextSibling = null;
- this.attributeName = null;
- this.attributeNamespace = null;
- this.oldValue = null;
- }
- function registerTransientObservers(ancestor, node) {
- for (;ancestor; ancestor = ancestor.parentNode) {
- var registrations = registrationsTable.get(ancestor);
- if (!registrations) continue;
- for (var i = 0; i < registrations.length; i++) {
- var registration = registrations[i];
- if (registration.options.subtree) registration.addTransientObserver(node);
- }
- }
- }
- function removeTransientObserversFor(observer) {
- for (var i = 0; i < observer.nodes_.length; i++) {
- var node = observer.nodes_[i];
- var registrations = registrationsTable.get(node);
- if (!registrations) return;
- for (var j = 0; j < registrations.length; j++) {
- var registration = registrations[j];
- if (registration.observer === observer) registration.removeTransientObservers();
- }
- }
- }
- function enqueueMutation(target, type, data) {
- var interestedObservers = Object.create(null);
- var associatedStrings = Object.create(null);
- for (var node = target; node; node = node.parentNode) {
- var registrations = registrationsTable.get(node);
- if (!registrations) continue;
- for (var j = 0; j < registrations.length; j++) {
- var registration = registrations[j];
- var options = registration.options;
- if (node !== target && !options.subtree) continue;
- if (type === "attributes" && !options.attributes) continue;
- if (type === "attributes" && options.attributeFilter && (data.namespace !== null || options.attributeFilter.indexOf(data.name) === -1)) {
- continue;
- }
- if (type === "characterData" && !options.characterData) continue;
- if (type === "childList" && !options.childList) continue;
- var observer = registration.observer;
- interestedObservers[observer.uid_] = observer;
- if (type === "attributes" && options.attributeOldValue || type === "characterData" && options.characterDataOldValue) {
- associatedStrings[observer.uid_] = data.oldValue;
- }
- }
- }
- for (var uid in interestedObservers) {
- var observer = interestedObservers[uid];
- var record = new MutationRecord(type, target);
- if ("name" in data && "namespace" in data) {
- record.attributeName = data.name;
- record.attributeNamespace = data.namespace;
- }
- if (data.addedNodes) record.addedNodes = data.addedNodes;
- if (data.removedNodes) record.removedNodes = data.removedNodes;
- if (data.previousSibling) record.previousSibling = data.previousSibling;
- if (data.nextSibling) record.nextSibling = data.nextSibling;
- if (associatedStrings[uid] !== undefined) record.oldValue = associatedStrings[uid];
- scheduleCallback(observer);
- observer.records_.push(record);
- }
- }
- var slice = Array.prototype.slice;
- function MutationObserverOptions(options) {
- this.childList = !!options.childList;
- this.subtree = !!options.subtree;
- if (!("attributes" in options) && ("attributeOldValue" in options || "attributeFilter" in options)) {
- this.attributes = true;
- } else {
- this.attributes = !!options.attributes;
- }
- if ("characterDataOldValue" in options && !("characterData" in options)) this.characterData = true; else this.characterData = !!options.characterData;
- if (!this.attributes && (options.attributeOldValue || "attributeFilter" in options) || !this.characterData && options.characterDataOldValue) {
- throw new TypeError();
- }
- this.characterData = !!options.characterData;
- this.attributeOldValue = !!options.attributeOldValue;
- this.characterDataOldValue = !!options.characterDataOldValue;
- if ("attributeFilter" in options) {
- if (options.attributeFilter == null || typeof options.attributeFilter !== "object") {
- throw new TypeError();
- }
- this.attributeFilter = slice.call(options.attributeFilter);
- } else {
- this.attributeFilter = null;
- }
- }
- var uidCounter = 0;
- function MutationObserver(callback) {
- this.callback_ = callback;
- this.nodes_ = [];
- this.records_ = [];
- this.uid_ = ++uidCounter;
- this.scheduled_ = false;
- }
- MutationObserver.prototype = {
- constructor: MutationObserver,
- observe: function(target, options) {
- target = wrapIfNeeded(target);
- var newOptions = new MutationObserverOptions(options);
- var registration;
- var registrations = registrationsTable.get(target);
- if (!registrations) registrationsTable.set(target, registrations = []);
- for (var i = 0; i < registrations.length; i++) {
- if (registrations[i].observer === this) {
- registration = registrations[i];
- registration.removeTransientObservers();
- registration.options = newOptions;
- }
- }
- if (!registration) {
- registration = new Registration(this, target, newOptions);
- registrations.push(registration);
- this.nodes_.push(target);
- }
- },
- disconnect: function() {
- this.nodes_.forEach(function(node) {
- var registrations = registrationsTable.get(node);
- for (var i = 0; i < registrations.length; i++) {
- var registration = registrations[i];
- if (registration.observer === this) {
- registrations.splice(i, 1);
- break;
- }
- }
- }, this);
- this.records_ = [];
- },
- takeRecords: function() {
- var copyOfRecords = this.records_;
- this.records_ = [];
- return copyOfRecords;
- }
- };
- function Registration(observer, target, options) {
- this.observer = observer;
- this.target = target;
- this.options = options;
- this.transientObservedNodes = [];
- }
- Registration.prototype = {
- addTransientObserver: function(node) {
- if (node === this.target) return;
- scheduleCallback(this.observer);
- this.transientObservedNodes.push(node);
- var registrations = registrationsTable.get(node);
- if (!registrations) registrationsTable.set(node, registrations = []);
- registrations.push(this);
- },
- removeTransientObservers: function() {
- var transientObservedNodes = this.transientObservedNodes;
- this.transientObservedNodes = [];
- for (var i = 0; i < transientObservedNodes.length; i++) {
- var node = transientObservedNodes[i];
- var registrations = registrationsTable.get(node);
- for (var j = 0; j < registrations.length; j++) {
- if (registrations[j] === this) {
- registrations.splice(j, 1);
- break;
- }
- }
- }
- }
- };
- scope.enqueueMutation = enqueueMutation;
- scope.registerTransientObservers = registerTransientObservers;
- scope.wrappers.MutationObserver = MutationObserver;
- scope.wrappers.MutationRecord = MutationRecord;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- function TreeScope(root, parent) {
- this.root = root;
- this.parent = parent;
- }
- TreeScope.prototype = {
- get renderer() {
- if (this.root instanceof scope.wrappers.ShadowRoot) {
- return scope.getRendererForHost(this.root.host);
- }
- return null;
- },
- contains: function(treeScope) {
- for (;treeScope; treeScope = treeScope.parent) {
- if (treeScope === this) return true;
- }
- return false;
- }
- };
- function setTreeScope(node, treeScope) {
- if (node.treeScope_ !== treeScope) {
- node.treeScope_ = treeScope;
- for (var sr = node.shadowRoot; sr; sr = sr.olderShadowRoot) {
- sr.treeScope_.parent = treeScope;
- }
- for (var child = node.firstChild; child; child = child.nextSibling) {
- setTreeScope(child, treeScope);
- }
- }
- }
- function getTreeScope(node) {
- if (node instanceof scope.wrappers.Window) {
- debugger;
- }
- if (node.treeScope_) return node.treeScope_;
- var parent = node.parentNode;
- var treeScope;
- if (parent) treeScope = getTreeScope(parent); else treeScope = new TreeScope(node, null);
- return node.treeScope_ = treeScope;
- }
- scope.TreeScope = TreeScope;
- scope.getTreeScope = getTreeScope;
- scope.setTreeScope = setTreeScope;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var forwardMethodsToWrapper = scope.forwardMethodsToWrapper;
- var getTreeScope = scope.getTreeScope;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var wrappers = scope.wrappers;
- var wrappedFuns = new WeakMap();
- var listenersTable = new WeakMap();
- var handledEventsTable = new WeakMap();
- var currentlyDispatchingEvents = new WeakMap();
- var targetTable = new WeakMap();
- var currentTargetTable = new WeakMap();
- var relatedTargetTable = new WeakMap();
- var eventPhaseTable = new WeakMap();
- var stopPropagationTable = new WeakMap();
- var stopImmediatePropagationTable = new WeakMap();
- var eventHandlersTable = new WeakMap();
- var eventPathTable = new WeakMap();
- function isShadowRoot(node) {
- return node instanceof wrappers.ShadowRoot;
- }
- function rootOfNode(node) {
- return getTreeScope(node).root;
- }
- function getEventPath(node, event) {
- var path = [];
- var current = node;
- path.push(current);
- while (current) {
- var destinationInsertionPoints = getDestinationInsertionPoints(current);
- if (destinationInsertionPoints && destinationInsertionPoints.length > 0) {
- for (var i = 0; i < destinationInsertionPoints.length; i++) {
- var insertionPoint = destinationInsertionPoints[i];
- if (isShadowInsertionPoint(insertionPoint)) {
- var shadowRoot = rootOfNode(insertionPoint);
- var olderShadowRoot = shadowRoot.olderShadowRoot;
- if (olderShadowRoot) path.push(olderShadowRoot);
- }
- path.push(insertionPoint);
- }
- current = destinationInsertionPoints[destinationInsertionPoints.length - 1];
- } else {
- if (isShadowRoot(current)) {
- if (inSameTree(node, current) && eventMustBeStopped(event)) {
- break;
- }
- current = current.host;
- path.push(current);
- } else {
- current = current.parentNode;
- if (current) path.push(current);
- }
- }
- }
- return path;
- }
- function eventMustBeStopped(event) {
- if (!event) return false;
- switch (event.type) {
- case "abort":
- case "error":
- case "select":
- case "change":
- case "load":
- case "reset":
- case "resize":
- case "scroll":
- case "selectstart":
- return true;
- }
- return false;
- }
- function isShadowInsertionPoint(node) {
- return node instanceof HTMLShadowElement;
- }
- function getDestinationInsertionPoints(node) {
- return scope.getDestinationInsertionPoints(node);
- }
- function eventRetargetting(path, currentTarget) {
- if (path.length === 0) return currentTarget;
- if (currentTarget instanceof wrappers.Window) currentTarget = currentTarget.document;
- var currentTargetTree = getTreeScope(currentTarget);
- var originalTarget = path[0];
- var originalTargetTree = getTreeScope(originalTarget);
- var relativeTargetTree = lowestCommonInclusiveAncestor(currentTargetTree, originalTargetTree);
- for (var i = 0; i < path.length; i++) {
- var node = path[i];
- if (getTreeScope(node) === relativeTargetTree) return node;
- }
- return path[path.length - 1];
- }
- function getTreeScopeAncestors(treeScope) {
- var ancestors = [];
- for (;treeScope; treeScope = treeScope.parent) {
- ancestors.push(treeScope);
- }
- return ancestors;
- }
- function lowestCommonInclusiveAncestor(tsA, tsB) {
- var ancestorsA = getTreeScopeAncestors(tsA);
- var ancestorsB = getTreeScopeAncestors(tsB);
- var result = null;
- while (ancestorsA.length > 0 && ancestorsB.length > 0) {
- var a = ancestorsA.pop();
- var b = ancestorsB.pop();
- if (a === b) result = a; else break;
- }
- return result;
- }
- function getTreeScopeRoot(ts) {
- if (!ts.parent) return ts;
- return getTreeScopeRoot(ts.parent);
- }
- function relatedTargetResolution(event, currentTarget, relatedTarget) {
- if (currentTarget instanceof wrappers.Window) currentTarget = currentTarget.document;
- var currentTargetTree = getTreeScope(currentTarget);
- var relatedTargetTree = getTreeScope(relatedTarget);
- var relatedTargetEventPath = getEventPath(relatedTarget, event);
- var lowestCommonAncestorTree;
- var lowestCommonAncestorTree = lowestCommonInclusiveAncestor(currentTargetTree, relatedTargetTree);
- if (!lowestCommonAncestorTree) lowestCommonAncestorTree = relatedTargetTree.root;
- for (var commonAncestorTree = lowestCommonAncestorTree; commonAncestorTree; commonAncestorTree = commonAncestorTree.parent) {
- var adjustedRelatedTarget;
- for (var i = 0; i < relatedTargetEventPath.length; i++) {
- var node = relatedTargetEventPath[i];
- if (getTreeScope(node) === commonAncestorTree) return node;
- }
- }
- return null;
- }
- function inSameTree(a, b) {
- return getTreeScope(a) === getTreeScope(b);
- }
- var NONE = 0;
- var CAPTURING_PHASE = 1;
- var AT_TARGET = 2;
- var BUBBLING_PHASE = 3;
- var pendingError;
- function dispatchOriginalEvent(originalEvent) {
- if (handledEventsTable.get(originalEvent)) return;
- handledEventsTable.set(originalEvent, true);
- dispatchEvent(wrap(originalEvent), wrap(originalEvent.target));
- if (pendingError) {
- var err = pendingError;
- pendingError = null;
- throw err;
- }
- }
- function isLoadLikeEvent(event) {
- switch (event.type) {
- case "load":
- case "beforeunload":
- case "unload":
- return true;
- }
- return false;
- }
- function dispatchEvent(event, originalWrapperTarget) {
- if (currentlyDispatchingEvents.get(event)) throw new Error("InvalidStateError");
- currentlyDispatchingEvents.set(event, true);
- scope.renderAllPending();
- var eventPath;
- var overrideTarget;
- var win;
- if (isLoadLikeEvent(event) && !event.bubbles) {
- var doc = originalWrapperTarget;
- if (doc instanceof wrappers.Document && (win = doc.defaultView)) {
- overrideTarget = doc;
- eventPath = [];
- }
- }
- if (!eventPath) {
- if (originalWrapperTarget instanceof wrappers.Window) {
- win = originalWrapperTarget;
- eventPath = [];
- } else {
- eventPath = getEventPath(originalWrapperTarget, event);
- if (!isLoadLikeEvent(event)) {
- var doc = eventPath[eventPath.length - 1];
- if (doc instanceof wrappers.Document) win = doc.defaultView;
- }
- }
- }
- eventPathTable.set(event, eventPath);
- if (dispatchCapturing(event, eventPath, win, overrideTarget)) {
- if (dispatchAtTarget(event, eventPath, win, overrideTarget)) {
- dispatchBubbling(event, eventPath, win, overrideTarget);
- }
- }
- eventPhaseTable.set(event, NONE);
- currentTargetTable.delete(event, null);
- currentlyDispatchingEvents.delete(event);
- return event.defaultPrevented;
- }
- function dispatchCapturing(event, eventPath, win, overrideTarget) {
- var phase = CAPTURING_PHASE;
- if (win) {
- if (!invoke(win, event, phase, eventPath, overrideTarget)) return false;
- }
- for (var i = eventPath.length - 1; i > 0; i--) {
- if (!invoke(eventPath[i], event, phase, eventPath, overrideTarget)) return false;
- }
- return true;
- }
- function dispatchAtTarget(event, eventPath, win, overrideTarget) {
- var phase = AT_TARGET;
- var currentTarget = eventPath[0] || win;
- return invoke(currentTarget, event, phase, eventPath, overrideTarget);
- }
- function dispatchBubbling(event, eventPath, win, overrideTarget) {
- var phase = BUBBLING_PHASE;
- for (var i = 1; i < eventPath.length; i++) {
- if (!invoke(eventPath[i], event, phase, eventPath, overrideTarget)) return;
- }
- if (win && eventPath.length > 0) {
- invoke(win, event, phase, eventPath, overrideTarget);
- }
- }
- function invoke(currentTarget, event, phase, eventPath, overrideTarget) {
- var listeners = listenersTable.get(currentTarget);
- if (!listeners) return true;
- var target = overrideTarget || eventRetargetting(eventPath, currentTarget);
- if (target === currentTarget) {
- if (phase === CAPTURING_PHASE) return true;
- if (phase === BUBBLING_PHASE) phase = AT_TARGET;
- } else if (phase === BUBBLING_PHASE && !event.bubbles) {
- return true;
- }
- if ("relatedTarget" in event) {
- var originalEvent = unwrap(event);
- var unwrappedRelatedTarget = originalEvent.relatedTarget;
- if (unwrappedRelatedTarget) {
- if (unwrappedRelatedTarget instanceof Object && unwrappedRelatedTarget.addEventListener) {
- var relatedTarget = wrap(unwrappedRelatedTarget);
- var adjusted = relatedTargetResolution(event, currentTarget, relatedTarget);
- if (adjusted === target) return true;
- } else {
- adjusted = null;
- }
- relatedTargetTable.set(event, adjusted);
- }
- }
- eventPhaseTable.set(event, phase);
- var type = event.type;
- var anyRemoved = false;
- targetTable.set(event, target);
- currentTargetTable.set(event, currentTarget);
- listeners.depth++;
- for (var i = 0, len = listeners.length; i < len; i++) {
- var listener = listeners[i];
- if (listener.removed) {
- anyRemoved = true;
- continue;
- }
- if (listener.type !== type || !listener.capture && phase === CAPTURING_PHASE || listener.capture && phase === BUBBLING_PHASE) {
- continue;
- }
- try {
- if (typeof listener.handler === "function") listener.handler.call(currentTarget, event); else listener.handler.handleEvent(event);
- if (stopImmediatePropagationTable.get(event)) return false;
- } catch (ex) {
- if (!pendingError) pendingError = ex;
- }
- }
- listeners.depth--;
- if (anyRemoved && listeners.depth === 0) {
- var copy = listeners.slice();
- listeners.length = 0;
- for (var i = 0; i < copy.length; i++) {
- if (!copy[i].removed) listeners.push(copy[i]);
- }
- }
- return !stopPropagationTable.get(event);
- }
- function Listener(type, handler, capture) {
- this.type = type;
- this.handler = handler;
- this.capture = Boolean(capture);
- }
- Listener.prototype = {
- equals: function(that) {
- return this.handler === that.handler && this.type === that.type && this.capture === that.capture;
- },
- get removed() {
- return this.handler === null;
- },
- remove: function() {
- this.handler = null;
- }
- };
- var OriginalEvent = window.Event;
- OriginalEvent.prototype.polymerBlackList_ = {
- returnValue: true,
- keyLocation: true
- };
- function Event(type, options) {
- if (type instanceof OriginalEvent) {
- var impl = type;
- if (!OriginalBeforeUnloadEvent && impl.type === "beforeunload" && !(this instanceof BeforeUnloadEvent)) {
- return new BeforeUnloadEvent(impl);
- }
- setWrapper(impl, this);
- } else {
- return wrap(constructEvent(OriginalEvent, "Event", type, options));
- }
- }
- Event.prototype = {
- get target() {
- return targetTable.get(this);
- },
- get currentTarget() {
- return currentTargetTable.get(this);
- },
- get eventPhase() {
- return eventPhaseTable.get(this);
- },
- get path() {
- var eventPath = eventPathTable.get(this);
- if (!eventPath) return [];
- return eventPath.slice();
- },
- stopPropagation: function() {
- stopPropagationTable.set(this, true);
- },
- stopImmediatePropagation: function() {
- stopPropagationTable.set(this, true);
- stopImmediatePropagationTable.set(this, true);
- }
- };
- registerWrapper(OriginalEvent, Event, document.createEvent("Event"));
- function unwrapOptions(options) {
- if (!options || !options.relatedTarget) return options;
- return Object.create(options, {
- relatedTarget: {
- value: unwrap(options.relatedTarget)
- }
- });
- }
- function registerGenericEvent(name, SuperEvent, prototype) {
- var OriginalEvent = window[name];
- var GenericEvent = function(type, options) {
- if (type instanceof OriginalEvent) setWrapper(type, this); else return wrap(constructEvent(OriginalEvent, name, type, options));
- };
- GenericEvent.prototype = Object.create(SuperEvent.prototype);
- if (prototype) mixin(GenericEvent.prototype, prototype);
- if (OriginalEvent) {
- try {
- registerWrapper(OriginalEvent, GenericEvent, new OriginalEvent("temp"));
- } catch (ex) {
- registerWrapper(OriginalEvent, GenericEvent, document.createEvent(name));
- }
- }
- return GenericEvent;
- }
- var UIEvent = registerGenericEvent("UIEvent", Event);
- var CustomEvent = registerGenericEvent("CustomEvent", Event);
- var relatedTargetProto = {
- get relatedTarget() {
- var relatedTarget = relatedTargetTable.get(this);
- if (relatedTarget !== undefined) return relatedTarget;
- return wrap(unwrap(this).relatedTarget);
- }
- };
- function getInitFunction(name, relatedTargetIndex) {
- return function() {
- arguments[relatedTargetIndex] = unwrap(arguments[relatedTargetIndex]);
- var impl = unwrap(this);
- impl[name].apply(impl, arguments);
- };
- }
- var mouseEventProto = mixin({
- initMouseEvent: getInitFunction("initMouseEvent", 14)
- }, relatedTargetProto);
- var focusEventProto = mixin({
- initFocusEvent: getInitFunction("initFocusEvent", 5)
- }, relatedTargetProto);
- var MouseEvent = registerGenericEvent("MouseEvent", UIEvent, mouseEventProto);
- var FocusEvent = registerGenericEvent("FocusEvent", UIEvent, focusEventProto);
- var defaultInitDicts = Object.create(null);
- var supportsEventConstructors = function() {
- try {
- new window.FocusEvent("focus");
- } catch (ex) {
- return false;
- }
- return true;
- }();
- function constructEvent(OriginalEvent, name, type, options) {
- if (supportsEventConstructors) return new OriginalEvent(type, unwrapOptions(options));
- var event = unwrap(document.createEvent(name));
- var defaultDict = defaultInitDicts[name];
- var args = [ type ];
- Object.keys(defaultDict).forEach(function(key) {
- var v = options != null && key in options ? options[key] : defaultDict[key];
- if (key === "relatedTarget") v = unwrap(v);
- args.push(v);
- });
- event["init" + name].apply(event, args);
- return event;
- }
- if (!supportsEventConstructors) {
- var configureEventConstructor = function(name, initDict, superName) {
- if (superName) {
- var superDict = defaultInitDicts[superName];
- initDict = mixin(mixin({}, superDict), initDict);
- }
- defaultInitDicts[name] = initDict;
- };
- configureEventConstructor("Event", {
- bubbles: false,
- cancelable: false
- });
- configureEventConstructor("CustomEvent", {
- detail: null
- }, "Event");
- configureEventConstructor("UIEvent", {
- view: null,
- detail: 0
- }, "Event");
- configureEventConstructor("MouseEvent", {
- screenX: 0,
- screenY: 0,
- clientX: 0,
- clientY: 0,
- ctrlKey: false,
- altKey: false,
- shiftKey: false,
- metaKey: false,
- button: 0,
- relatedTarget: null
- }, "UIEvent");
- configureEventConstructor("FocusEvent", {
- relatedTarget: null
- }, "UIEvent");
- }
- var OriginalBeforeUnloadEvent = window.BeforeUnloadEvent;
- function BeforeUnloadEvent(impl) {
- Event.call(this, impl);
- }
- BeforeUnloadEvent.prototype = Object.create(Event.prototype);
- mixin(BeforeUnloadEvent.prototype, {
- get returnValue() {
- return unsafeUnwrap(this).returnValue;
- },
- set returnValue(v) {
- unsafeUnwrap(this).returnValue = v;
- }
- });
- if (OriginalBeforeUnloadEvent) registerWrapper(OriginalBeforeUnloadEvent, BeforeUnloadEvent);
- function isValidListener(fun) {
- if (typeof fun === "function") return true;
- return fun && fun.handleEvent;
- }
- function isMutationEvent(type) {
- switch (type) {
- case "DOMAttrModified":
- case "DOMAttributeNameChanged":
- case "DOMCharacterDataModified":
- case "DOMElementNameChanged":
- case "DOMNodeInserted":
- case "DOMNodeInsertedIntoDocument":
- case "DOMNodeRemoved":
- case "DOMNodeRemovedFromDocument":
- case "DOMSubtreeModified":
- return true;
- }
- return false;
- }
- var OriginalEventTarget = window.EventTarget;
- function EventTarget(impl) {
- setWrapper(impl, this);
- }
- var methodNames = [ "addEventListener", "removeEventListener", "dispatchEvent" ];
- [ Node, Window ].forEach(function(constructor) {
- var p = constructor.prototype;
- methodNames.forEach(function(name) {
- Object.defineProperty(p, name + "_", {
- value: p[name]
- });
- });
- });
- function getTargetToListenAt(wrapper) {
- if (wrapper instanceof wrappers.ShadowRoot) wrapper = wrapper.host;
- return unwrap(wrapper);
- }
- EventTarget.prototype = {
- addEventListener: function(type, fun, capture) {
- if (!isValidListener(fun) || isMutationEvent(type)) return;
- var listener = new Listener(type, fun, capture);
- var listeners = listenersTable.get(this);
- if (!listeners) {
- listeners = [];
- listeners.depth = 0;
- listenersTable.set(this, listeners);
- } else {
- for (var i = 0; i < listeners.length; i++) {
- if (listener.equals(listeners[i])) return;
- }
- }
- listeners.push(listener);
- var target = getTargetToListenAt(this);
- target.addEventListener_(type, dispatchOriginalEvent, true);
- },
- removeEventListener: function(type, fun, capture) {
- capture = Boolean(capture);
- var listeners = listenersTable.get(this);
- if (!listeners) return;
- var count = 0, found = false;
- for (var i = 0; i < listeners.length; i++) {
- if (listeners[i].type === type && listeners[i].capture === capture) {
- count++;
- if (listeners[i].handler === fun) {
- found = true;
- listeners[i].remove();
- }
- }
- }
- if (found && count === 1) {
- var target = getTargetToListenAt(this);
- target.removeEventListener_(type, dispatchOriginalEvent, true);
- }
- },
- dispatchEvent: function(event) {
- var nativeEvent = unwrap(event);
- var eventType = nativeEvent.type;
- handledEventsTable.set(nativeEvent, false);
- scope.renderAllPending();
- var tempListener;
- if (!hasListenerInAncestors(this, eventType)) {
- tempListener = function() {};
- this.addEventListener(eventType, tempListener, true);
- }
- try {
- return unwrap(this).dispatchEvent_(nativeEvent);
- } finally {
- if (tempListener) this.removeEventListener(eventType, tempListener, true);
- }
- }
- };
- function hasListener(node, type) {
- var listeners = listenersTable.get(node);
- if (listeners) {
- for (var i = 0; i < listeners.length; i++) {
- if (!listeners[i].removed && listeners[i].type === type) return true;
- }
- }
- return false;
- }
- function hasListenerInAncestors(target, type) {
- for (var node = unwrap(target); node; node = node.parentNode) {
- if (hasListener(wrap(node), type)) return true;
- }
- return false;
- }
- if (OriginalEventTarget) registerWrapper(OriginalEventTarget, EventTarget);
- function wrapEventTargetMethods(constructors) {
- forwardMethodsToWrapper(constructors, methodNames);
- }
- var originalElementFromPoint = document.elementFromPoint;
- function elementFromPoint(self, document, x, y) {
- scope.renderAllPending();
- var element = wrap(originalElementFromPoint.call(unsafeUnwrap(document), x, y));
- if (!element) return null;
- var path = getEventPath(element, null);
- var idx = path.lastIndexOf(self);
- if (idx == -1) return null; else path = path.slice(0, idx);
- return eventRetargetting(path, self);
- }
- function getEventHandlerGetter(name) {
- return function() {
- var inlineEventHandlers = eventHandlersTable.get(this);
- return inlineEventHandlers && inlineEventHandlers[name] && inlineEventHandlers[name].value || null;
- };
- }
- function getEventHandlerSetter(name) {
- var eventType = name.slice(2);
- return function(value) {
- var inlineEventHandlers = eventHandlersTable.get(this);
- if (!inlineEventHandlers) {
- inlineEventHandlers = Object.create(null);
- eventHandlersTable.set(this, inlineEventHandlers);
- }
- var old = inlineEventHandlers[name];
- if (old) this.removeEventListener(eventType, old.wrapped, false);
- if (typeof value === "function") {
- var wrapped = function(e) {
- var rv = value.call(this, e);
- if (rv === false) e.preventDefault(); else if (name === "onbeforeunload" && typeof rv === "string") e.returnValue = rv;
- };
- this.addEventListener(eventType, wrapped, false);
- inlineEventHandlers[name] = {
- value: value,
- wrapped: wrapped
- };
- }
- };
- }
- scope.elementFromPoint = elementFromPoint;
- scope.getEventHandlerGetter = getEventHandlerGetter;
- scope.getEventHandlerSetter = getEventHandlerSetter;
- scope.wrapEventTargetMethods = wrapEventTargetMethods;
- scope.wrappers.BeforeUnloadEvent = BeforeUnloadEvent;
- scope.wrappers.CustomEvent = CustomEvent;
- scope.wrappers.Event = Event;
- scope.wrappers.EventTarget = EventTarget;
- scope.wrappers.FocusEvent = FocusEvent;
- scope.wrappers.MouseEvent = MouseEvent;
- scope.wrappers.UIEvent = UIEvent;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var UIEvent = scope.wrappers.UIEvent;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var wrap = scope.wrap;
- var OriginalTouchEvent = window.TouchEvent;
- if (!OriginalTouchEvent) return;
- var nativeEvent;
- try {
- nativeEvent = document.createEvent("TouchEvent");
- } catch (ex) {
- return;
- }
- var nonEnumDescriptor = {
- enumerable: false
- };
- function nonEnum(obj, prop) {
- Object.defineProperty(obj, prop, nonEnumDescriptor);
- }
- function Touch(impl) {
- setWrapper(impl, this);
- }
- Touch.prototype = {
- get target() {
- return wrap(unsafeUnwrap(this).target);
- }
- };
- var descr = {
- configurable: true,
- enumerable: true,
- get: null
- };
- [ "clientX", "clientY", "screenX", "screenY", "pageX", "pageY", "identifier", "webkitRadiusX", "webkitRadiusY", "webkitRotationAngle", "webkitForce" ].forEach(function(name) {
- descr.get = function() {
- return unsafeUnwrap(this)[name];
- };
- Object.defineProperty(Touch.prototype, name, descr);
- });
- function TouchList() {
- this.length = 0;
- nonEnum(this, "length");
- }
- TouchList.prototype = {
- item: function(index) {
- return this[index];
- }
- };
- function wrapTouchList(nativeTouchList) {
- var list = new TouchList();
- for (var i = 0; i < nativeTouchList.length; i++) {
- list[i] = new Touch(nativeTouchList[i]);
- }
- list.length = i;
- return list;
- }
- function TouchEvent(impl) {
- UIEvent.call(this, impl);
- }
- TouchEvent.prototype = Object.create(UIEvent.prototype);
- mixin(TouchEvent.prototype, {
- get touches() {
- return wrapTouchList(unsafeUnwrap(this).touches);
- },
- get targetTouches() {
- return wrapTouchList(unsafeUnwrap(this).targetTouches);
- },
- get changedTouches() {
- return wrapTouchList(unsafeUnwrap(this).changedTouches);
- },
- initTouchEvent: function() {
- throw new Error("Not implemented");
- }
- });
- registerWrapper(OriginalTouchEvent, TouchEvent, nativeEvent);
- scope.wrappers.Touch = Touch;
- scope.wrappers.TouchEvent = TouchEvent;
- scope.wrappers.TouchList = TouchList;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var unsafeUnwrap = scope.unsafeUnwrap;
- var wrap = scope.wrap;
- var nonEnumDescriptor = {
- enumerable: false
- };
- function nonEnum(obj, prop) {
- Object.defineProperty(obj, prop, nonEnumDescriptor);
- }
- function NodeList() {
- this.length = 0;
- nonEnum(this, "length");
- }
- NodeList.prototype = {
- item: function(index) {
- return this[index];
- }
- };
- nonEnum(NodeList.prototype, "item");
- function wrapNodeList(list) {
- if (list == null) return list;
- var wrapperList = new NodeList();
- for (var i = 0, length = list.length; i < length; i++) {
- wrapperList[i] = wrap(list[i]);
- }
- wrapperList.length = length;
- return wrapperList;
- }
- function addWrapNodeListMethod(wrapperConstructor, name) {
- wrapperConstructor.prototype[name] = function() {
- return wrapNodeList(unsafeUnwrap(this)[name].apply(unsafeUnwrap(this), arguments));
- };
- }
- scope.wrappers.NodeList = NodeList;
- scope.addWrapNodeListMethod = addWrapNodeListMethod;
- scope.wrapNodeList = wrapNodeList;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- scope.wrapHTMLCollection = scope.wrapNodeList;
- scope.wrappers.HTMLCollection = scope.wrappers.NodeList;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var EventTarget = scope.wrappers.EventTarget;
- var NodeList = scope.wrappers.NodeList;
- var TreeScope = scope.TreeScope;
- var assert = scope.assert;
- var defineWrapGetter = scope.defineWrapGetter;
- var enqueueMutation = scope.enqueueMutation;
- var getTreeScope = scope.getTreeScope;
- var isWrapper = scope.isWrapper;
- var mixin = scope.mixin;
- var registerTransientObservers = scope.registerTransientObservers;
- var registerWrapper = scope.registerWrapper;
- var setTreeScope = scope.setTreeScope;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var wrap = scope.wrap;
- var wrapIfNeeded = scope.wrapIfNeeded;
- var wrappers = scope.wrappers;
- function assertIsNodeWrapper(node) {
- assert(node instanceof Node);
- }
- function createOneElementNodeList(node) {
- var nodes = new NodeList();
- nodes[0] = node;
- nodes.length = 1;
- return nodes;
- }
- var surpressMutations = false;
- function enqueueRemovalForInsertedNodes(node, parent, nodes) {
- enqueueMutation(parent, "childList", {
- removedNodes: nodes,
- previousSibling: node.previousSibling,
- nextSibling: node.nextSibling
- });
- }
- function enqueueRemovalForInsertedDocumentFragment(df, nodes) {
- enqueueMutation(df, "childList", {
- removedNodes: nodes
- });
- }
- function collectNodes(node, parentNode, previousNode, nextNode) {
- if (node instanceof DocumentFragment) {
- var nodes = collectNodesForDocumentFragment(node);
- surpressMutations = true;
- for (var i = nodes.length - 1; i >= 0; i--) {
- node.removeChild(nodes[i]);
- nodes[i].parentNode_ = parentNode;
- }
- surpressMutations = false;
- for (var i = 0; i < nodes.length; i++) {
- nodes[i].previousSibling_ = nodes[i - 1] || previousNode;
- nodes[i].nextSibling_ = nodes[i + 1] || nextNode;
- }
- if (previousNode) previousNode.nextSibling_ = nodes[0];
- if (nextNode) nextNode.previousSibling_ = nodes[nodes.length - 1];
- return nodes;
- }
- var nodes = createOneElementNodeList(node);
- var oldParent = node.parentNode;
- if (oldParent) {
- oldParent.removeChild(node);
- }
- node.parentNode_ = parentNode;
- node.previousSibling_ = previousNode;
- node.nextSibling_ = nextNode;
- if (previousNode) previousNode.nextSibling_ = node;
- if (nextNode) nextNode.previousSibling_ = node;
- return nodes;
- }
- function collectNodesNative(node) {
- if (node instanceof DocumentFragment) return collectNodesForDocumentFragment(node);
- var nodes = createOneElementNodeList(node);
- var oldParent = node.parentNode;
- if (oldParent) enqueueRemovalForInsertedNodes(node, oldParent, nodes);
- return nodes;
- }
- function collectNodesForDocumentFragment(node) {
- var nodes = new NodeList();
- var i = 0;
- for (var child = node.firstChild; child; child = child.nextSibling) {
- nodes[i++] = child;
- }
- nodes.length = i;
- enqueueRemovalForInsertedDocumentFragment(node, nodes);
- return nodes;
- }
- function snapshotNodeList(nodeList) {
- return nodeList;
- }
- function nodeWasAdded(node, treeScope) {
- setTreeScope(node, treeScope);
- node.nodeIsInserted_();
- }
- function nodesWereAdded(nodes, parent) {
- var treeScope = getTreeScope(parent);
- for (var i = 0; i < nodes.length; i++) {
- nodeWasAdded(nodes[i], treeScope);
- }
- }
- function nodeWasRemoved(node) {
- setTreeScope(node, new TreeScope(node, null));
- }
- function nodesWereRemoved(nodes) {
- for (var i = 0; i < nodes.length; i++) {
- nodeWasRemoved(nodes[i]);
- }
- }
- function ensureSameOwnerDocument(parent, child) {
- var ownerDoc = parent.nodeType === Node.DOCUMENT_NODE ? parent : parent.ownerDocument;
- if (ownerDoc !== child.ownerDocument) ownerDoc.adoptNode(child);
- }
- function adoptNodesIfNeeded(owner, nodes) {
- if (!nodes.length) return;
- var ownerDoc = owner.ownerDocument;
- if (ownerDoc === nodes[0].ownerDocument) return;
- for (var i = 0; i < nodes.length; i++) {
- scope.adoptNodeNoRemove(nodes[i], ownerDoc);
- }
- }
- function unwrapNodesForInsertion(owner, nodes) {
- adoptNodesIfNeeded(owner, nodes);
- var length = nodes.length;
- if (length === 1) return unwrap(nodes[0]);
- var df = unwrap(owner.ownerDocument.createDocumentFragment());
- for (var i = 0; i < length; i++) {
- df.appendChild(unwrap(nodes[i]));
- }
- return df;
- }
- function clearChildNodes(wrapper) {
- if (wrapper.firstChild_ !== undefined) {
- var child = wrapper.firstChild_;
- while (child) {
- var tmp = child;
- child = child.nextSibling_;
- tmp.parentNode_ = tmp.previousSibling_ = tmp.nextSibling_ = undefined;
- }
- }
- wrapper.firstChild_ = wrapper.lastChild_ = undefined;
- }
- function removeAllChildNodes(wrapper) {
- if (wrapper.invalidateShadowRenderer()) {
- var childWrapper = wrapper.firstChild;
- while (childWrapper) {
- assert(childWrapper.parentNode === wrapper);
- var nextSibling = childWrapper.nextSibling;
- var childNode = unwrap(childWrapper);
- var parentNode = childNode.parentNode;
- if (parentNode) originalRemoveChild.call(parentNode, childNode);
- childWrapper.previousSibling_ = childWrapper.nextSibling_ = childWrapper.parentNode_ = null;
- childWrapper = nextSibling;
- }
- wrapper.firstChild_ = wrapper.lastChild_ = null;
- } else {
- var node = unwrap(wrapper);
- var child = node.firstChild;
- var nextSibling;
- while (child) {
- nextSibling = child.nextSibling;
- originalRemoveChild.call(node, child);
- child = nextSibling;
- }
- }
- }
- function invalidateParent(node) {
- var p = node.parentNode;
- return p && p.invalidateShadowRenderer();
- }
- function cleanupNodes(nodes) {
- for (var i = 0, n; i < nodes.length; i++) {
- n = nodes[i];
- n.parentNode.removeChild(n);
- }
- }
- var originalImportNode = document.importNode;
- var originalCloneNode = window.Node.prototype.cloneNode;
- function cloneNode(node, deep, opt_doc) {
- var clone;
- if (opt_doc) clone = wrap(originalImportNode.call(opt_doc, unsafeUnwrap(node), false)); else clone = wrap(originalCloneNode.call(unsafeUnwrap(node), false));
- if (deep) {
- for (var child = node.firstChild; child; child = child.nextSibling) {
- clone.appendChild(cloneNode(child, true, opt_doc));
- }
- if (node instanceof wrappers.HTMLTemplateElement) {
- var cloneContent = clone.content;
- for (var child = node.content.firstChild; child; child = child.nextSibling) {
- cloneContent.appendChild(cloneNode(child, true, opt_doc));
- }
- }
- }
- return clone;
- }
- function contains(self, child) {
- if (!child || getTreeScope(self) !== getTreeScope(child)) return false;
- for (var node = child; node; node = node.parentNode) {
- if (node === self) return true;
- }
- return false;
- }
- var OriginalNode = window.Node;
- function Node(original) {
- assert(original instanceof OriginalNode);
- EventTarget.call(this, original);
- this.parentNode_ = undefined;
- this.firstChild_ = undefined;
- this.lastChild_ = undefined;
- this.nextSibling_ = undefined;
- this.previousSibling_ = undefined;
- this.treeScope_ = undefined;
- }
- var OriginalDocumentFragment = window.DocumentFragment;
- var originalAppendChild = OriginalNode.prototype.appendChild;
- var originalCompareDocumentPosition = OriginalNode.prototype.compareDocumentPosition;
- var originalIsEqualNode = OriginalNode.prototype.isEqualNode;
- var originalInsertBefore = OriginalNode.prototype.insertBefore;
- var originalRemoveChild = OriginalNode.prototype.removeChild;
- var originalReplaceChild = OriginalNode.prototype.replaceChild;
- var isIe = /Trident|Edge/.test(navigator.userAgent);
- var removeChildOriginalHelper = isIe ? function(parent, child) {
- try {
- originalRemoveChild.call(parent, child);
- } catch (ex) {
- if (!(parent instanceof OriginalDocumentFragment)) throw ex;
- }
- } : function(parent, child) {
- originalRemoveChild.call(parent, child);
- };
- Node.prototype = Object.create(EventTarget.prototype);
- mixin(Node.prototype, {
- appendChild: function(childWrapper) {
- return this.insertBefore(childWrapper, null);
- },
- insertBefore: function(childWrapper, refWrapper) {
- assertIsNodeWrapper(childWrapper);
- var refNode;
- if (refWrapper) {
- if (isWrapper(refWrapper)) {
- refNode = unwrap(refWrapper);
- } else {
- refNode = refWrapper;
- refWrapper = wrap(refNode);
- }
- } else {
- refWrapper = null;
- refNode = null;
- }
- refWrapper && assert(refWrapper.parentNode === this);
- var nodes;
- var previousNode = refWrapper ? refWrapper.previousSibling : this.lastChild;
- var useNative = !this.invalidateShadowRenderer() && !invalidateParent(childWrapper);
- if (useNative) nodes = collectNodesNative(childWrapper); else nodes = collectNodes(childWrapper, this, previousNode, refWrapper);
- if (useNative) {
- ensureSameOwnerDocument(this, childWrapper);
- clearChildNodes(this);
- originalInsertBefore.call(unsafeUnwrap(this), unwrap(childWrapper), refNode);
- } else {
- if (!previousNode) this.firstChild_ = nodes[0];
- if (!refWrapper) {
- this.lastChild_ = nodes[nodes.length - 1];
- if (this.firstChild_ === undefined) this.firstChild_ = this.firstChild;
- }
- var parentNode = refNode ? refNode.parentNode : unsafeUnwrap(this);
- if (parentNode) {
- originalInsertBefore.call(parentNode, unwrapNodesForInsertion(this, nodes), refNode);
- } else {
- adoptNodesIfNeeded(this, nodes);
- }
- }
- enqueueMutation(this, "childList", {
- addedNodes: nodes,
- nextSibling: refWrapper,
- previousSibling: previousNode
- });
- nodesWereAdded(nodes, this);
- return childWrapper;
- },
- removeChild: function(childWrapper) {
- assertIsNodeWrapper(childWrapper);
- if (childWrapper.parentNode !== this) {
- var found = false;
- var childNodes = this.childNodes;
- for (var ieChild = this.firstChild; ieChild; ieChild = ieChild.nextSibling) {
- if (ieChild === childWrapper) {
- found = true;
- break;
- }
- }
- if (!found) {
- throw new Error("NotFoundError");
- }
- }
- var childNode = unwrap(childWrapper);
- var childWrapperNextSibling = childWrapper.nextSibling;
- var childWrapperPreviousSibling = childWrapper.previousSibling;
- if (this.invalidateShadowRenderer()) {
- var thisFirstChild = this.firstChild;
- var thisLastChild = this.lastChild;
- var parentNode = childNode.parentNode;
- if (parentNode) removeChildOriginalHelper(parentNode, childNode);
- if (thisFirstChild === childWrapper) this.firstChild_ = childWrapperNextSibling;
- if (thisLastChild === childWrapper) this.lastChild_ = childWrapperPreviousSibling;
- if (childWrapperPreviousSibling) childWrapperPreviousSibling.nextSibling_ = childWrapperNextSibling;
- if (childWrapperNextSibling) {
- childWrapperNextSibling.previousSibling_ = childWrapperPreviousSibling;
- }
- childWrapper.previousSibling_ = childWrapper.nextSibling_ = childWrapper.parentNode_ = undefined;
- } else {
- clearChildNodes(this);
- removeChildOriginalHelper(unsafeUnwrap(this), childNode);
- }
- if (!surpressMutations) {
- enqueueMutation(this, "childList", {
- removedNodes: createOneElementNodeList(childWrapper),
- nextSibling: childWrapperNextSibling,
- previousSibling: childWrapperPreviousSibling
- });
- }
- registerTransientObservers(this, childWrapper);
- return childWrapper;
- },
- replaceChild: function(newChildWrapper, oldChildWrapper) {
- assertIsNodeWrapper(newChildWrapper);
- var oldChildNode;
- if (isWrapper(oldChildWrapper)) {
- oldChildNode = unwrap(oldChildWrapper);
- } else {
- oldChildNode = oldChildWrapper;
- oldChildWrapper = wrap(oldChildNode);
- }
- if (oldChildWrapper.parentNode !== this) {
- throw new Error("NotFoundError");
- }
- var nextNode = oldChildWrapper.nextSibling;
- var previousNode = oldChildWrapper.previousSibling;
- var nodes;
- var useNative = !this.invalidateShadowRenderer() && !invalidateParent(newChildWrapper);
- if (useNative) {
- nodes = collectNodesNative(newChildWrapper);
- } else {
- if (nextNode === newChildWrapper) nextNode = newChildWrapper.nextSibling;
- nodes = collectNodes(newChildWrapper, this, previousNode, nextNode);
- }
- if (!useNative) {
- if (this.firstChild === oldChildWrapper) this.firstChild_ = nodes[0];
- if (this.lastChild === oldChildWrapper) this.lastChild_ = nodes[nodes.length - 1];
- oldChildWrapper.previousSibling_ = oldChildWrapper.nextSibling_ = oldChildWrapper.parentNode_ = undefined;
- if (oldChildNode.parentNode) {
- originalReplaceChild.call(oldChildNode.parentNode, unwrapNodesForInsertion(this, nodes), oldChildNode);
- }
- } else {
- ensureSameOwnerDocument(this, newChildWrapper);
- clearChildNodes(this);
- originalReplaceChild.call(unsafeUnwrap(this), unwrap(newChildWrapper), oldChildNode);
- }
- enqueueMutation(this, "childList", {
- addedNodes: nodes,
- removedNodes: createOneElementNodeList(oldChildWrapper),
- nextSibling: nextNode,
- previousSibling: previousNode
- });
- nodeWasRemoved(oldChildWrapper);
- nodesWereAdded(nodes, this);
- return oldChildWrapper;
- },
- nodeIsInserted_: function() {
- for (var child = this.firstChild; child; child = child.nextSibling) {
- child.nodeIsInserted_();
- }
- },
- hasChildNodes: function() {
- return this.firstChild !== null;
- },
- get parentNode() {
- return this.parentNode_ !== undefined ? this.parentNode_ : wrap(unsafeUnwrap(this).parentNode);
- },
- get firstChild() {
- return this.firstChild_ !== undefined ? this.firstChild_ : wrap(unsafeUnwrap(this).firstChild);
- },
- get lastChild() {
- return this.lastChild_ !== undefined ? this.lastChild_ : wrap(unsafeUnwrap(this).lastChild);
- },
- get nextSibling() {
- return this.nextSibling_ !== undefined ? this.nextSibling_ : wrap(unsafeUnwrap(this).nextSibling);
- },
- get previousSibling() {
- return this.previousSibling_ !== undefined ? this.previousSibling_ : wrap(unsafeUnwrap(this).previousSibling);
- },
- get parentElement() {
- var p = this.parentNode;
- while (p && p.nodeType !== Node.ELEMENT_NODE) {
- p = p.parentNode;
- }
- return p;
- },
- get textContent() {
- var s = "";
- for (var child = this.firstChild; child; child = child.nextSibling) {
- if (child.nodeType != Node.COMMENT_NODE) {
- s += child.textContent;
- }
- }
- return s;
- },
- set textContent(textContent) {
- if (textContent == null) textContent = "";
- var removedNodes = snapshotNodeList(this.childNodes);
- if (this.invalidateShadowRenderer()) {
- removeAllChildNodes(this);
- if (textContent !== "") {
- var textNode = unsafeUnwrap(this).ownerDocument.createTextNode(textContent);
- this.appendChild(textNode);
- }
- } else {
- clearChildNodes(this);
- unsafeUnwrap(this).textContent = textContent;
- }
- var addedNodes = snapshotNodeList(this.childNodes);
- enqueueMutation(this, "childList", {
- addedNodes: addedNodes,
- removedNodes: removedNodes
- });
- nodesWereRemoved(removedNodes);
- nodesWereAdded(addedNodes, this);
- },
- get childNodes() {
- var wrapperList = new NodeList();
- var i = 0;
- for (var child = this.firstChild; child; child = child.nextSibling) {
- wrapperList[i++] = child;
- }
- wrapperList.length = i;
- return wrapperList;
- },
- cloneNode: function(deep) {
- return cloneNode(this, deep);
- },
- contains: function(child) {
- return contains(this, wrapIfNeeded(child));
- },
- compareDocumentPosition: function(otherNode) {
- return originalCompareDocumentPosition.call(unsafeUnwrap(this), unwrapIfNeeded(otherNode));
- },
- isEqualNode: function(otherNode) {
- return originalIsEqualNode.call(unsafeUnwrap(this), unwrapIfNeeded(otherNode));
- },
- normalize: function() {
- var nodes = snapshotNodeList(this.childNodes);
- var remNodes = [];
- var s = "";
- var modNode;
- for (var i = 0, n; i < nodes.length; i++) {
- n = nodes[i];
- if (n.nodeType === Node.TEXT_NODE) {
- if (!modNode && !n.data.length) this.removeChild(n); else if (!modNode) modNode = n; else {
- s += n.data;
- remNodes.push(n);
- }
- } else {
- if (modNode && remNodes.length) {
- modNode.data += s;
- cleanupNodes(remNodes);
- }
- remNodes = [];
- s = "";
- modNode = null;
- if (n.childNodes.length) n.normalize();
- }
- }
- if (modNode && remNodes.length) {
- modNode.data += s;
- cleanupNodes(remNodes);
- }
- }
- });
- defineWrapGetter(Node, "ownerDocument");
- registerWrapper(OriginalNode, Node, document.createDocumentFragment());
- delete Node.prototype.querySelector;
- delete Node.prototype.querySelectorAll;
- Node.prototype = mixin(Object.create(EventTarget.prototype), Node.prototype);
- scope.cloneNode = cloneNode;
- scope.nodeWasAdded = nodeWasAdded;
- scope.nodeWasRemoved = nodeWasRemoved;
- scope.nodesWereAdded = nodesWereAdded;
- scope.nodesWereRemoved = nodesWereRemoved;
- scope.originalInsertBefore = originalInsertBefore;
- scope.originalRemoveChild = originalRemoveChild;
- scope.snapshotNodeList = snapshotNodeList;
- scope.wrappers.Node = Node;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLCollection = scope.wrappers.HTMLCollection;
- var NodeList = scope.wrappers.NodeList;
- var getTreeScope = scope.getTreeScope;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var wrap = scope.wrap;
- var originalDocumentQuerySelector = document.querySelector;
- var originalElementQuerySelector = document.documentElement.querySelector;
- var originalDocumentQuerySelectorAll = document.querySelectorAll;
- var originalElementQuerySelectorAll = document.documentElement.querySelectorAll;
- var originalDocumentGetElementsByTagName = document.getElementsByTagName;
- var originalElementGetElementsByTagName = document.documentElement.getElementsByTagName;
- var originalDocumentGetElementsByTagNameNS = document.getElementsByTagNameNS;
- var originalElementGetElementsByTagNameNS = document.documentElement.getElementsByTagNameNS;
- var OriginalElement = window.Element;
- var OriginalDocument = window.HTMLDocument || window.Document;
- function filterNodeList(list, index, result, deep) {
- var wrappedItem = null;
- var root = null;
- for (var i = 0, length = list.length; i < length; i++) {
- wrappedItem = wrap(list[i]);
- if (!deep && (root = getTreeScope(wrappedItem).root)) {
- if (root instanceof scope.wrappers.ShadowRoot) {
- continue;
- }
- }
- result[index++] = wrappedItem;
- }
- return index;
- }
- function shimSelector(selector) {
- return String(selector).replace(/\/deep\/|::shadow|>>>/g, " ");
- }
- function shimMatchesSelector(selector) {
- return String(selector).replace(/:host\(([^\s]+)\)/g, "$1").replace(/([^\s]):host/g, "$1").replace(":host", "*").replace(/\^|\/shadow\/|\/shadow-deep\/|::shadow|\/deep\/|::content|>>>/g, " ");
- }
- function findOne(node, selector) {
- var m, el = node.firstElementChild;
- while (el) {
- if (el.matches(selector)) return el;
- m = findOne(el, selector);
- if (m) return m;
- el = el.nextElementSibling;
- }
- return null;
- }
- function matchesSelector(el, selector) {
- return el.matches(selector);
- }
- var XHTML_NS = "http://www.w3.org/1999/xhtml";
- function matchesTagName(el, localName, localNameLowerCase) {
- var ln = el.localName;
- return ln === localName || ln === localNameLowerCase && el.namespaceURI === XHTML_NS;
- }
- function matchesEveryThing() {
- return true;
- }
- function matchesLocalNameOnly(el, ns, localName) {
- return el.localName === localName;
- }
- function matchesNameSpace(el, ns) {
- return el.namespaceURI === ns;
- }
- function matchesLocalNameNS(el, ns, localName) {
- return el.namespaceURI === ns && el.localName === localName;
- }
- function findElements(node, index, result, p, arg0, arg1) {
- var el = node.firstElementChild;
- while (el) {
- if (p(el, arg0, arg1)) result[index++] = el;
- index = findElements(el, index, result, p, arg0, arg1);
- el = el.nextElementSibling;
- }
- return index;
- }
- function querySelectorAllFiltered(p, index, result, selector, deep) {
- var target = unsafeUnwrap(this);
- var list;
- var root = getTreeScope(this).root;
- if (root instanceof scope.wrappers.ShadowRoot) {
- return findElements(this, index, result, p, selector, null);
- } else if (target instanceof OriginalElement) {
- list = originalElementQuerySelectorAll.call(target, selector);
- } else if (target instanceof OriginalDocument) {
- list = originalDocumentQuerySelectorAll.call(target, selector);
- } else {
- return findElements(this, index, result, p, selector, null);
- }
- return filterNodeList(list, index, result, deep);
- }
- var SelectorsInterface = {
- querySelector: function(selector) {
- var shimmed = shimSelector(selector);
- var deep = shimmed !== selector;
- selector = shimmed;
- var target = unsafeUnwrap(this);
- var wrappedItem;
- var root = getTreeScope(this).root;
- if (root instanceof scope.wrappers.ShadowRoot) {
- return findOne(this, selector);
- } else if (target instanceof OriginalElement) {
- wrappedItem = wrap(originalElementQuerySelector.call(target, selector));
- } else if (target instanceof OriginalDocument) {
- wrappedItem = wrap(originalDocumentQuerySelector.call(target, selector));
- } else {
- return findOne(this, selector);
- }
- if (!wrappedItem) {
- return wrappedItem;
- } else if (!deep && (root = getTreeScope(wrappedItem).root)) {
- if (root instanceof scope.wrappers.ShadowRoot) {
- return findOne(this, selector);
- }
- }
- return wrappedItem;
- },
- querySelectorAll: function(selector) {
- var shimmed = shimSelector(selector);
- var deep = shimmed !== selector;
- selector = shimmed;
- var result = new NodeList();
- result.length = querySelectorAllFiltered.call(this, matchesSelector, 0, result, selector, deep);
- return result;
- }
- };
- var MatchesInterface = {
- matches: function(selector) {
- selector = shimMatchesSelector(selector);
- return scope.originalMatches.call(unsafeUnwrap(this), selector);
- }
- };
- function getElementsByTagNameFiltered(p, index, result, localName, lowercase) {
- var target = unsafeUnwrap(this);
- var list;
- var root = getTreeScope(this).root;
- if (root instanceof scope.wrappers.ShadowRoot) {
- return findElements(this, index, result, p, localName, lowercase);
- } else if (target instanceof OriginalElement) {
- list = originalElementGetElementsByTagName.call(target, localName, lowercase);
- } else if (target instanceof OriginalDocument) {
- list = originalDocumentGetElementsByTagName.call(target, localName, lowercase);
- } else {
- return findElements(this, index, result, p, localName, lowercase);
- }
- return filterNodeList(list, index, result, false);
- }
- function getElementsByTagNameNSFiltered(p, index, result, ns, localName) {
- var target = unsafeUnwrap(this);
- var list;
- var root = getTreeScope(this).root;
- if (root instanceof scope.wrappers.ShadowRoot) {
- return findElements(this, index, result, p, ns, localName);
- } else if (target instanceof OriginalElement) {
- list = originalElementGetElementsByTagNameNS.call(target, ns, localName);
- } else if (target instanceof OriginalDocument) {
- list = originalDocumentGetElementsByTagNameNS.call(target, ns, localName);
- } else {
- return findElements(this, index, result, p, ns, localName);
- }
- return filterNodeList(list, index, result, false);
- }
- var GetElementsByInterface = {
- getElementsByTagName: function(localName) {
- var result = new HTMLCollection();
- var match = localName === "*" ? matchesEveryThing : matchesTagName;
- result.length = getElementsByTagNameFiltered.call(this, match, 0, result, localName, localName.toLowerCase());
- return result;
- },
- getElementsByClassName: function(className) {
- return this.querySelectorAll("." + className);
- },
- getElementsByTagNameNS: function(ns, localName) {
- var result = new HTMLCollection();
- var match = null;
- if (ns === "*") {
- match = localName === "*" ? matchesEveryThing : matchesLocalNameOnly;
- } else {
- match = localName === "*" ? matchesNameSpace : matchesLocalNameNS;
- }
- result.length = getElementsByTagNameNSFiltered.call(this, match, 0, result, ns || null, localName);
- return result;
- }
- };
- scope.GetElementsByInterface = GetElementsByInterface;
- scope.SelectorsInterface = SelectorsInterface;
- scope.MatchesInterface = MatchesInterface;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var NodeList = scope.wrappers.NodeList;
- function forwardElement(node) {
- while (node && node.nodeType !== Node.ELEMENT_NODE) {
- node = node.nextSibling;
- }
- return node;
- }
- function backwardsElement(node) {
- while (node && node.nodeType !== Node.ELEMENT_NODE) {
- node = node.previousSibling;
- }
- return node;
- }
- var ParentNodeInterface = {
- get firstElementChild() {
- return forwardElement(this.firstChild);
- },
- get lastElementChild() {
- return backwardsElement(this.lastChild);
- },
- get childElementCount() {
- var count = 0;
- for (var child = this.firstElementChild; child; child = child.nextElementSibling) {
- count++;
- }
- return count;
- },
- get children() {
- var wrapperList = new NodeList();
- var i = 0;
- for (var child = this.firstElementChild; child; child = child.nextElementSibling) {
- wrapperList[i++] = child;
- }
- wrapperList.length = i;
- return wrapperList;
- },
- remove: function() {
- var p = this.parentNode;
- if (p) p.removeChild(this);
- }
- };
- var ChildNodeInterface = {
- get nextElementSibling() {
- return forwardElement(this.nextSibling);
- },
- get previousElementSibling() {
- return backwardsElement(this.previousSibling);
- }
- };
- var NonElementParentNodeInterface = {
- getElementById: function(id) {
- if (/[ \t\n\r\f]/.test(id)) return null;
- return this.querySelector('[id="' + id + '"]');
- }
- };
- scope.ChildNodeInterface = ChildNodeInterface;
- scope.NonElementParentNodeInterface = NonElementParentNodeInterface;
- scope.ParentNodeInterface = ParentNodeInterface;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var ChildNodeInterface = scope.ChildNodeInterface;
- var Node = scope.wrappers.Node;
- var enqueueMutation = scope.enqueueMutation;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var OriginalCharacterData = window.CharacterData;
- function CharacterData(node) {
- Node.call(this, node);
- }
- CharacterData.prototype = Object.create(Node.prototype);
- mixin(CharacterData.prototype, {
- get nodeValue() {
- return this.data;
- },
- set nodeValue(data) {
- this.data = data;
- },
- get textContent() {
- return this.data;
- },
- set textContent(value) {
- this.data = value;
- },
- get data() {
- return unsafeUnwrap(this).data;
- },
- set data(value) {
- var oldValue = unsafeUnwrap(this).data;
- enqueueMutation(this, "characterData", {
- oldValue: oldValue
- });
- unsafeUnwrap(this).data = value;
- }
- });
- mixin(CharacterData.prototype, ChildNodeInterface);
- registerWrapper(OriginalCharacterData, CharacterData, document.createTextNode(""));
- scope.wrappers.CharacterData = CharacterData;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var CharacterData = scope.wrappers.CharacterData;
- var enqueueMutation = scope.enqueueMutation;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- function toUInt32(x) {
- return x >>> 0;
- }
- var OriginalText = window.Text;
- function Text(node) {
- CharacterData.call(this, node);
- }
- Text.prototype = Object.create(CharacterData.prototype);
- mixin(Text.prototype, {
- splitText: function(offset) {
- offset = toUInt32(offset);
- var s = this.data;
- if (offset > s.length) throw new Error("IndexSizeError");
- var head = s.slice(0, offset);
- var tail = s.slice(offset);
- this.data = head;
- var newTextNode = this.ownerDocument.createTextNode(tail);
- if (this.parentNode) this.parentNode.insertBefore(newTextNode, this.nextSibling);
- return newTextNode;
- }
- });
- registerWrapper(OriginalText, Text, document.createTextNode(""));
- scope.wrappers.Text = Text;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- if (!window.DOMTokenList) {
- console.warn("Missing DOMTokenList prototype, please include a " + "compatible classList polyfill such as http://goo.gl/uTcepH.");
- return;
- }
- var unsafeUnwrap = scope.unsafeUnwrap;
- var enqueueMutation = scope.enqueueMutation;
- function getClass(el) {
- return unsafeUnwrap(el).getAttribute("class");
- }
- function enqueueClassAttributeChange(el, oldValue) {
- enqueueMutation(el, "attributes", {
- name: "class",
- namespace: null,
- oldValue: oldValue
- });
- }
- function invalidateClass(el) {
- scope.invalidateRendererBasedOnAttribute(el, "class");
- }
- function changeClass(tokenList, method, args) {
- var ownerElement = tokenList.ownerElement_;
- if (ownerElement == null) {
- return method.apply(tokenList, args);
- }
- var oldValue = getClass(ownerElement);
- var retv = method.apply(tokenList, args);
- if (getClass(ownerElement) !== oldValue) {
- enqueueClassAttributeChange(ownerElement, oldValue);
- invalidateClass(ownerElement);
- }
- return retv;
- }
- var oldAdd = DOMTokenList.prototype.add;
- DOMTokenList.prototype.add = function() {
- changeClass(this, oldAdd, arguments);
- };
- var oldRemove = DOMTokenList.prototype.remove;
- DOMTokenList.prototype.remove = function() {
- changeClass(this, oldRemove, arguments);
- };
- var oldToggle = DOMTokenList.prototype.toggle;
- DOMTokenList.prototype.toggle = function() {
- return changeClass(this, oldToggle, arguments);
- };
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var ChildNodeInterface = scope.ChildNodeInterface;
- var GetElementsByInterface = scope.GetElementsByInterface;
- var Node = scope.wrappers.Node;
- var ParentNodeInterface = scope.ParentNodeInterface;
- var SelectorsInterface = scope.SelectorsInterface;
- var MatchesInterface = scope.MatchesInterface;
- var addWrapNodeListMethod = scope.addWrapNodeListMethod;
- var enqueueMutation = scope.enqueueMutation;
- var mixin = scope.mixin;
- var oneOf = scope.oneOf;
- var registerWrapper = scope.registerWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var wrappers = scope.wrappers;
- var OriginalElement = window.Element;
- var matchesNames = [ "matches", "mozMatchesSelector", "msMatchesSelector", "webkitMatchesSelector" ].filter(function(name) {
- return OriginalElement.prototype[name];
- });
- var matchesName = matchesNames[0];
- var originalMatches = OriginalElement.prototype[matchesName];
- function invalidateRendererBasedOnAttribute(element, name) {
- var p = element.parentNode;
- if (!p || !p.shadowRoot) return;
- var renderer = scope.getRendererForHost(p);
- if (renderer.dependsOnAttribute(name)) renderer.invalidate();
- }
- function enqueAttributeChange(element, name, oldValue) {
- enqueueMutation(element, "attributes", {
- name: name,
- namespace: null,
- oldValue: oldValue
- });
- }
- var classListTable = new WeakMap();
- function Element(node) {
- Node.call(this, node);
- }
- Element.prototype = Object.create(Node.prototype);
- mixin(Element.prototype, {
- createShadowRoot: function() {
- var newShadowRoot = new wrappers.ShadowRoot(this);
- unsafeUnwrap(this).polymerShadowRoot_ = newShadowRoot;
- var renderer = scope.getRendererForHost(this);
- renderer.invalidate();
- return newShadowRoot;
- },
- get shadowRoot() {
- return unsafeUnwrap(this).polymerShadowRoot_ || null;
- },
- setAttribute: function(name, value) {
- var oldValue = unsafeUnwrap(this).getAttribute(name);
- unsafeUnwrap(this).setAttribute(name, value);
- enqueAttributeChange(this, name, oldValue);
- invalidateRendererBasedOnAttribute(this, name);
- },
- removeAttribute: function(name) {
- var oldValue = unsafeUnwrap(this).getAttribute(name);
- unsafeUnwrap(this).removeAttribute(name);
- enqueAttributeChange(this, name, oldValue);
- invalidateRendererBasedOnAttribute(this, name);
- },
- get classList() {
- var list = classListTable.get(this);
- if (!list) {
- list = unsafeUnwrap(this).classList;
- if (!list) return;
- list.ownerElement_ = this;
- classListTable.set(this, list);
- }
- return list;
- },
- get className() {
- return unsafeUnwrap(this).className;
- },
- set className(v) {
- this.setAttribute("class", v);
- },
- get id() {
- return unsafeUnwrap(this).id;
- },
- set id(v) {
- this.setAttribute("id", v);
- }
- });
- matchesNames.forEach(function(name) {
- if (name !== "matches") {
- Element.prototype[name] = function(selector) {
- return this.matches(selector);
- };
- }
- });
- if (OriginalElement.prototype.webkitCreateShadowRoot) {
- Element.prototype.webkitCreateShadowRoot = Element.prototype.createShadowRoot;
- }
- mixin(Element.prototype, ChildNodeInterface);
- mixin(Element.prototype, GetElementsByInterface);
- mixin(Element.prototype, ParentNodeInterface);
- mixin(Element.prototype, SelectorsInterface);
- mixin(Element.prototype, MatchesInterface);
- registerWrapper(OriginalElement, Element, document.createElementNS(null, "x"));
- scope.invalidateRendererBasedOnAttribute = invalidateRendererBasedOnAttribute;
- scope.matchesNames = matchesNames;
- scope.originalMatches = originalMatches;
- scope.wrappers.Element = Element;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var Element = scope.wrappers.Element;
- var defineGetter = scope.defineGetter;
- var enqueueMutation = scope.enqueueMutation;
- var mixin = scope.mixin;
- var nodesWereAdded = scope.nodesWereAdded;
- var nodesWereRemoved = scope.nodesWereRemoved;
- var registerWrapper = scope.registerWrapper;
- var snapshotNodeList = scope.snapshotNodeList;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var wrappers = scope.wrappers;
- var escapeAttrRegExp = /[&\u00A0"]/g;
- var escapeDataRegExp = /[&\u00A0<>]/g;
- function escapeReplace(c) {
- switch (c) {
- case "&":
- return "&";
-
- case "<":
- return "<";
-
- case ">":
- return ">";
-
- case '"':
- return """;
-
- case "Â ":
- return " ";
- }
- }
- function escapeAttr(s) {
- return s.replace(escapeAttrRegExp, escapeReplace);
- }
- function escapeData(s) {
- return s.replace(escapeDataRegExp, escapeReplace);
- }
- function makeSet(arr) {
- var set = {};
- for (var i = 0; i < arr.length; i++) {
- set[arr[i]] = true;
- }
- return set;
- }
- var voidElements = makeSet([ "area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr" ]);
- var plaintextParents = makeSet([ "style", "script", "xmp", "iframe", "noembed", "noframes", "plaintext", "noscript" ]);
- var XHTML_NS = "http://www.w3.org/1999/xhtml";
- function needsSelfClosingSlash(node) {
- if (node.namespaceURI !== XHTML_NS) return true;
- var doctype = node.ownerDocument.doctype;
- return doctype && doctype.publicId && doctype.systemId;
- }
- function getOuterHTML(node, parentNode) {
- switch (node.nodeType) {
- case Node.ELEMENT_NODE:
- var tagName = node.tagName.toLowerCase();
- var s = "<" + tagName;
- var attrs = node.attributes;
- for (var i = 0, attr; attr = attrs[i]; i++) {
- s += " " + attr.name + '="' + escapeAttr(attr.value) + '"';
- }
- if (voidElements[tagName]) {
- if (needsSelfClosingSlash(node)) s += "/";
- return s + ">";
- }
- return s + ">" + getInnerHTML(node) + "" + tagName + ">";
-
- case Node.TEXT_NODE:
- var data = node.data;
- if (parentNode && plaintextParents[parentNode.localName]) return data;
- return escapeData(data);
-
- case Node.COMMENT_NODE:
- return "";
-
- default:
- console.error(node);
- throw new Error("not implemented");
- }
- }
- function getInnerHTML(node) {
- if (node instanceof wrappers.HTMLTemplateElement) node = node.content;
- var s = "";
- for (var child = node.firstChild; child; child = child.nextSibling) {
- s += getOuterHTML(child, node);
- }
- return s;
- }
- function setInnerHTML(node, value, opt_tagName) {
- var tagName = opt_tagName || "div";
- node.textContent = "";
- var tempElement = unwrap(node.ownerDocument.createElement(tagName));
- tempElement.innerHTML = value;
- var firstChild;
- while (firstChild = tempElement.firstChild) {
- node.appendChild(wrap(firstChild));
- }
- }
- var oldIe = /MSIE/.test(navigator.userAgent);
- var OriginalHTMLElement = window.HTMLElement;
- var OriginalHTMLTemplateElement = window.HTMLTemplateElement;
- function HTMLElement(node) {
- Element.call(this, node);
- }
- HTMLElement.prototype = Object.create(Element.prototype);
- mixin(HTMLElement.prototype, {
- get innerHTML() {
- return getInnerHTML(this);
- },
- set innerHTML(value) {
- if (oldIe && plaintextParents[this.localName]) {
- this.textContent = value;
- return;
- }
- var removedNodes = snapshotNodeList(this.childNodes);
- if (this.invalidateShadowRenderer()) {
- if (this instanceof wrappers.HTMLTemplateElement) setInnerHTML(this.content, value); else setInnerHTML(this, value, this.tagName);
- } else if (!OriginalHTMLTemplateElement && this instanceof wrappers.HTMLTemplateElement) {
- setInnerHTML(this.content, value);
- } else {
- unsafeUnwrap(this).innerHTML = value;
- }
- var addedNodes = snapshotNodeList(this.childNodes);
- enqueueMutation(this, "childList", {
- addedNodes: addedNodes,
- removedNodes: removedNodes
- });
- nodesWereRemoved(removedNodes);
- nodesWereAdded(addedNodes, this);
- },
- get outerHTML() {
- return getOuterHTML(this, this.parentNode);
- },
- set outerHTML(value) {
- var p = this.parentNode;
- if (p) {
- p.invalidateShadowRenderer();
- var df = frag(p, value);
- p.replaceChild(df, this);
- }
- },
- insertAdjacentHTML: function(position, text) {
- var contextElement, refNode;
- switch (String(position).toLowerCase()) {
- case "beforebegin":
- contextElement = this.parentNode;
- refNode = this;
- break;
-
- case "afterend":
- contextElement = this.parentNode;
- refNode = this.nextSibling;
- break;
-
- case "afterbegin":
- contextElement = this;
- refNode = this.firstChild;
- break;
-
- case "beforeend":
- contextElement = this;
- refNode = null;
- break;
-
- default:
- return;
- }
- var df = frag(contextElement, text);
- contextElement.insertBefore(df, refNode);
- },
- get hidden() {
- return this.hasAttribute("hidden");
- },
- set hidden(v) {
- if (v) {
- this.setAttribute("hidden", "");
- } else {
- this.removeAttribute("hidden");
- }
- }
- });
- function frag(contextElement, html) {
- var p = unwrap(contextElement.cloneNode(false));
- p.innerHTML = html;
- var df = unwrap(document.createDocumentFragment());
- var c;
- while (c = p.firstChild) {
- df.appendChild(c);
- }
- return wrap(df);
- }
- function getter(name) {
- return function() {
- scope.renderAllPending();
- return unsafeUnwrap(this)[name];
- };
- }
- function getterRequiresRendering(name) {
- defineGetter(HTMLElement, name, getter(name));
- }
- [ "clientHeight", "clientLeft", "clientTop", "clientWidth", "offsetHeight", "offsetLeft", "offsetTop", "offsetWidth", "scrollHeight", "scrollWidth" ].forEach(getterRequiresRendering);
- function getterAndSetterRequiresRendering(name) {
- Object.defineProperty(HTMLElement.prototype, name, {
- get: getter(name),
- set: function(v) {
- scope.renderAllPending();
- unsafeUnwrap(this)[name] = v;
- },
- configurable: true,
- enumerable: true
- });
- }
- [ "scrollLeft", "scrollTop" ].forEach(getterAndSetterRequiresRendering);
- function methodRequiresRendering(name) {
- Object.defineProperty(HTMLElement.prototype, name, {
- value: function() {
- scope.renderAllPending();
- return unsafeUnwrap(this)[name].apply(unsafeUnwrap(this), arguments);
- },
- configurable: true,
- enumerable: true
- });
- }
- [ "getBoundingClientRect", "getClientRects", "scrollIntoView" ].forEach(methodRequiresRendering);
- registerWrapper(OriginalHTMLElement, HTMLElement, document.createElement("b"));
- scope.wrappers.HTMLElement = HTMLElement;
- scope.getInnerHTML = getInnerHTML;
- scope.setInnerHTML = setInnerHTML;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var wrap = scope.wrap;
- var OriginalHTMLCanvasElement = window.HTMLCanvasElement;
- function HTMLCanvasElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLCanvasElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLCanvasElement.prototype, {
- getContext: function() {
- var context = unsafeUnwrap(this).getContext.apply(unsafeUnwrap(this), arguments);
- return context && wrap(context);
- }
- });
- registerWrapper(OriginalHTMLCanvasElement, HTMLCanvasElement, document.createElement("canvas"));
- scope.wrappers.HTMLCanvasElement = HTMLCanvasElement;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var OriginalHTMLContentElement = window.HTMLContentElement;
- function HTMLContentElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLContentElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLContentElement.prototype, {
- constructor: HTMLContentElement,
- get select() {
- return this.getAttribute("select");
- },
- set select(value) {
- this.setAttribute("select", value);
- },
- setAttribute: function(n, v) {
- HTMLElement.prototype.setAttribute.call(this, n, v);
- if (String(n).toLowerCase() === "select") this.invalidateShadowRenderer(true);
- }
- });
- if (OriginalHTMLContentElement) registerWrapper(OriginalHTMLContentElement, HTMLContentElement);
- scope.wrappers.HTMLContentElement = HTMLContentElement;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var wrapHTMLCollection = scope.wrapHTMLCollection;
- var unwrap = scope.unwrap;
- var OriginalHTMLFormElement = window.HTMLFormElement;
- function HTMLFormElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLFormElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLFormElement.prototype, {
- get elements() {
- return wrapHTMLCollection(unwrap(this).elements);
- }
- });
- registerWrapper(OriginalHTMLFormElement, HTMLFormElement, document.createElement("form"));
- scope.wrappers.HTMLFormElement = HTMLFormElement;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var registerWrapper = scope.registerWrapper;
- var unwrap = scope.unwrap;
- var rewrap = scope.rewrap;
- var OriginalHTMLImageElement = window.HTMLImageElement;
- function HTMLImageElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLImageElement.prototype = Object.create(HTMLElement.prototype);
- registerWrapper(OriginalHTMLImageElement, HTMLImageElement, document.createElement("img"));
- function Image(width, height) {
- if (!(this instanceof Image)) {
- throw new TypeError("DOM object constructor cannot be called as a function.");
- }
- var node = unwrap(document.createElement("img"));
- HTMLElement.call(this, node);
- rewrap(node, this);
- if (width !== undefined) node.width = width;
- if (height !== undefined) node.height = height;
- }
- Image.prototype = HTMLImageElement.prototype;
- scope.wrappers.HTMLImageElement = HTMLImageElement;
- scope.wrappers.Image = Image;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var NodeList = scope.wrappers.NodeList;
- var registerWrapper = scope.registerWrapper;
- var OriginalHTMLShadowElement = window.HTMLShadowElement;
- function HTMLShadowElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLShadowElement.prototype = Object.create(HTMLElement.prototype);
- HTMLShadowElement.prototype.constructor = HTMLShadowElement;
- if (OriginalHTMLShadowElement) registerWrapper(OriginalHTMLShadowElement, HTMLShadowElement);
- scope.wrappers.HTMLShadowElement = HTMLShadowElement;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var contentTable = new WeakMap();
- var templateContentsOwnerTable = new WeakMap();
- function getTemplateContentsOwner(doc) {
- if (!doc.defaultView) return doc;
- var d = templateContentsOwnerTable.get(doc);
- if (!d) {
- d = doc.implementation.createHTMLDocument("");
- while (d.lastChild) {
- d.removeChild(d.lastChild);
- }
- templateContentsOwnerTable.set(doc, d);
- }
- return d;
- }
- function extractContent(templateElement) {
- var doc = getTemplateContentsOwner(templateElement.ownerDocument);
- var df = unwrap(doc.createDocumentFragment());
- var child;
- while (child = templateElement.firstChild) {
- df.appendChild(child);
- }
- return df;
- }
- var OriginalHTMLTemplateElement = window.HTMLTemplateElement;
- function HTMLTemplateElement(node) {
- HTMLElement.call(this, node);
- if (!OriginalHTMLTemplateElement) {
- var content = extractContent(node);
- contentTable.set(this, wrap(content));
- }
- }
- HTMLTemplateElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLTemplateElement.prototype, {
- constructor: HTMLTemplateElement,
- get content() {
- if (OriginalHTMLTemplateElement) return wrap(unsafeUnwrap(this).content);
- return contentTable.get(this);
- }
- });
- if (OriginalHTMLTemplateElement) registerWrapper(OriginalHTMLTemplateElement, HTMLTemplateElement);
- scope.wrappers.HTMLTemplateElement = HTMLTemplateElement;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var registerWrapper = scope.registerWrapper;
- var OriginalHTMLMediaElement = window.HTMLMediaElement;
- if (!OriginalHTMLMediaElement) return;
- function HTMLMediaElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLMediaElement.prototype = Object.create(HTMLElement.prototype);
- registerWrapper(OriginalHTMLMediaElement, HTMLMediaElement, document.createElement("audio"));
- scope.wrappers.HTMLMediaElement = HTMLMediaElement;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLMediaElement = scope.wrappers.HTMLMediaElement;
- var registerWrapper = scope.registerWrapper;
- var unwrap = scope.unwrap;
- var rewrap = scope.rewrap;
- var OriginalHTMLAudioElement = window.HTMLAudioElement;
- if (!OriginalHTMLAudioElement) return;
- function HTMLAudioElement(node) {
- HTMLMediaElement.call(this, node);
- }
- HTMLAudioElement.prototype = Object.create(HTMLMediaElement.prototype);
- registerWrapper(OriginalHTMLAudioElement, HTMLAudioElement, document.createElement("audio"));
- function Audio(src) {
- if (!(this instanceof Audio)) {
- throw new TypeError("DOM object constructor cannot be called as a function.");
- }
- var node = unwrap(document.createElement("audio"));
- HTMLMediaElement.call(this, node);
- rewrap(node, this);
- node.setAttribute("preload", "auto");
- if (src !== undefined) node.setAttribute("src", src);
- }
- Audio.prototype = HTMLAudioElement.prototype;
- scope.wrappers.HTMLAudioElement = HTMLAudioElement;
- scope.wrappers.Audio = Audio;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var rewrap = scope.rewrap;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var OriginalHTMLOptionElement = window.HTMLOptionElement;
- function trimText(s) {
- return s.replace(/\s+/g, " ").trim();
- }
- function HTMLOptionElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLOptionElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLOptionElement.prototype, {
- get text() {
- return trimText(this.textContent);
- },
- set text(value) {
- this.textContent = trimText(String(value));
- },
- get form() {
- return wrap(unwrap(this).form);
- }
- });
- registerWrapper(OriginalHTMLOptionElement, HTMLOptionElement, document.createElement("option"));
- function Option(text, value, defaultSelected, selected) {
- if (!(this instanceof Option)) {
- throw new TypeError("DOM object constructor cannot be called as a function.");
- }
- var node = unwrap(document.createElement("option"));
- HTMLElement.call(this, node);
- rewrap(node, this);
- if (text !== undefined) node.text = text;
- if (value !== undefined) node.setAttribute("value", value);
- if (defaultSelected === true) node.setAttribute("selected", "");
- node.selected = selected === true;
- }
- Option.prototype = HTMLOptionElement.prototype;
- scope.wrappers.HTMLOptionElement = HTMLOptionElement;
- scope.wrappers.Option = Option;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var OriginalHTMLSelectElement = window.HTMLSelectElement;
- function HTMLSelectElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLSelectElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLSelectElement.prototype, {
- add: function(element, before) {
- if (typeof before === "object") before = unwrap(before);
- unwrap(this).add(unwrap(element), before);
- },
- remove: function(indexOrNode) {
- if (indexOrNode === undefined) {
- HTMLElement.prototype.remove.call(this);
- return;
- }
- if (typeof indexOrNode === "object") indexOrNode = unwrap(indexOrNode);
- unwrap(this).remove(indexOrNode);
- },
- get form() {
- return wrap(unwrap(this).form);
- }
- });
- registerWrapper(OriginalHTMLSelectElement, HTMLSelectElement, document.createElement("select"));
- scope.wrappers.HTMLSelectElement = HTMLSelectElement;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var wrapHTMLCollection = scope.wrapHTMLCollection;
- var OriginalHTMLTableElement = window.HTMLTableElement;
- function HTMLTableElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLTableElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLTableElement.prototype, {
- get caption() {
- return wrap(unwrap(this).caption);
- },
- createCaption: function() {
- return wrap(unwrap(this).createCaption());
- },
- get tHead() {
- return wrap(unwrap(this).tHead);
- },
- createTHead: function() {
- return wrap(unwrap(this).createTHead());
- },
- createTFoot: function() {
- return wrap(unwrap(this).createTFoot());
- },
- get tFoot() {
- return wrap(unwrap(this).tFoot);
- },
- get tBodies() {
- return wrapHTMLCollection(unwrap(this).tBodies);
- },
- createTBody: function() {
- return wrap(unwrap(this).createTBody());
- },
- get rows() {
- return wrapHTMLCollection(unwrap(this).rows);
- },
- insertRow: function(index) {
- return wrap(unwrap(this).insertRow(index));
- }
- });
- registerWrapper(OriginalHTMLTableElement, HTMLTableElement, document.createElement("table"));
- scope.wrappers.HTMLTableElement = HTMLTableElement;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var wrapHTMLCollection = scope.wrapHTMLCollection;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var OriginalHTMLTableSectionElement = window.HTMLTableSectionElement;
- function HTMLTableSectionElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLTableSectionElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLTableSectionElement.prototype, {
- constructor: HTMLTableSectionElement,
- get rows() {
- return wrapHTMLCollection(unwrap(this).rows);
- },
- insertRow: function(index) {
- return wrap(unwrap(this).insertRow(index));
- }
- });
- registerWrapper(OriginalHTMLTableSectionElement, HTMLTableSectionElement, document.createElement("thead"));
- scope.wrappers.HTMLTableSectionElement = HTMLTableSectionElement;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var wrapHTMLCollection = scope.wrapHTMLCollection;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var OriginalHTMLTableRowElement = window.HTMLTableRowElement;
- function HTMLTableRowElement(node) {
- HTMLElement.call(this, node);
- }
- HTMLTableRowElement.prototype = Object.create(HTMLElement.prototype);
- mixin(HTMLTableRowElement.prototype, {
- get cells() {
- return wrapHTMLCollection(unwrap(this).cells);
- },
- insertCell: function(index) {
- return wrap(unwrap(this).insertCell(index));
- }
- });
- registerWrapper(OriginalHTMLTableRowElement, HTMLTableRowElement, document.createElement("tr"));
- scope.wrappers.HTMLTableRowElement = HTMLTableRowElement;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLContentElement = scope.wrappers.HTMLContentElement;
- var HTMLElement = scope.wrappers.HTMLElement;
- var HTMLShadowElement = scope.wrappers.HTMLShadowElement;
- var HTMLTemplateElement = scope.wrappers.HTMLTemplateElement;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var OriginalHTMLUnknownElement = window.HTMLUnknownElement;
- function HTMLUnknownElement(node) {
- switch (node.localName) {
- case "content":
- return new HTMLContentElement(node);
-
- case "shadow":
- return new HTMLShadowElement(node);
-
- case "template":
- return new HTMLTemplateElement(node);
- }
- HTMLElement.call(this, node);
- }
- HTMLUnknownElement.prototype = Object.create(HTMLElement.prototype);
- registerWrapper(OriginalHTMLUnknownElement, HTMLUnknownElement);
- scope.wrappers.HTMLUnknownElement = HTMLUnknownElement;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var Element = scope.wrappers.Element;
- var HTMLElement = scope.wrappers.HTMLElement;
- var registerObject = scope.registerObject;
- var defineWrapGetter = scope.defineWrapGetter;
- var SVG_NS = "http://www.w3.org/2000/svg";
- var svgTitleElement = document.createElementNS(SVG_NS, "title");
- var SVGTitleElement = registerObject(svgTitleElement);
- var SVGElement = Object.getPrototypeOf(SVGTitleElement.prototype).constructor;
- if (!("classList" in svgTitleElement)) {
- var descr = Object.getOwnPropertyDescriptor(Element.prototype, "classList");
- Object.defineProperty(HTMLElement.prototype, "classList", descr);
- delete Element.prototype.classList;
- }
- defineWrapGetter(SVGElement, "ownerSVGElement");
- scope.wrappers.SVGElement = SVGElement;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var OriginalSVGUseElement = window.SVGUseElement;
- var SVG_NS = "http://www.w3.org/2000/svg";
- var gWrapper = wrap(document.createElementNS(SVG_NS, "g"));
- var useElement = document.createElementNS(SVG_NS, "use");
- var SVGGElement = gWrapper.constructor;
- var parentInterfacePrototype = Object.getPrototypeOf(SVGGElement.prototype);
- var parentInterface = parentInterfacePrototype.constructor;
- function SVGUseElement(impl) {
- parentInterface.call(this, impl);
- }
- SVGUseElement.prototype = Object.create(parentInterfacePrototype);
- if ("instanceRoot" in useElement) {
- mixin(SVGUseElement.prototype, {
- get instanceRoot() {
- return wrap(unwrap(this).instanceRoot);
- },
- get animatedInstanceRoot() {
- return wrap(unwrap(this).animatedInstanceRoot);
- }
- });
- }
- registerWrapper(OriginalSVGUseElement, SVGUseElement, useElement);
- scope.wrappers.SVGUseElement = SVGUseElement;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var EventTarget = scope.wrappers.EventTarget;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var wrap = scope.wrap;
- var OriginalSVGElementInstance = window.SVGElementInstance;
- if (!OriginalSVGElementInstance) return;
- function SVGElementInstance(impl) {
- EventTarget.call(this, impl);
- }
- SVGElementInstance.prototype = Object.create(EventTarget.prototype);
- mixin(SVGElementInstance.prototype, {
- get correspondingElement() {
- return wrap(unsafeUnwrap(this).correspondingElement);
- },
- get correspondingUseElement() {
- return wrap(unsafeUnwrap(this).correspondingUseElement);
- },
- get parentNode() {
- return wrap(unsafeUnwrap(this).parentNode);
- },
- get childNodes() {
- throw new Error("Not implemented");
- },
- get firstChild() {
- return wrap(unsafeUnwrap(this).firstChild);
- },
- get lastChild() {
- return wrap(unsafeUnwrap(this).lastChild);
- },
- get previousSibling() {
- return wrap(unsafeUnwrap(this).previousSibling);
- },
- get nextSibling() {
- return wrap(unsafeUnwrap(this).nextSibling);
- }
- });
- registerWrapper(OriginalSVGElementInstance, SVGElementInstance);
- scope.wrappers.SVGElementInstance = SVGElementInstance;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var wrap = scope.wrap;
- var OriginalCanvasRenderingContext2D = window.CanvasRenderingContext2D;
- function CanvasRenderingContext2D(impl) {
- setWrapper(impl, this);
- }
- mixin(CanvasRenderingContext2D.prototype, {
- get canvas() {
- return wrap(unsafeUnwrap(this).canvas);
- },
- drawImage: function() {
- arguments[0] = unwrapIfNeeded(arguments[0]);
- unsafeUnwrap(this).drawImage.apply(unsafeUnwrap(this), arguments);
- },
- createPattern: function() {
- arguments[0] = unwrap(arguments[0]);
- return unsafeUnwrap(this).createPattern.apply(unsafeUnwrap(this), arguments);
- }
- });
- registerWrapper(OriginalCanvasRenderingContext2D, CanvasRenderingContext2D, document.createElement("canvas").getContext("2d"));
- scope.wrappers.CanvasRenderingContext2D = CanvasRenderingContext2D;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var wrap = scope.wrap;
- var OriginalWebGLRenderingContext = window.WebGLRenderingContext;
- if (!OriginalWebGLRenderingContext) return;
- function WebGLRenderingContext(impl) {
- setWrapper(impl, this);
- }
- mixin(WebGLRenderingContext.prototype, {
- get canvas() {
- return wrap(unsafeUnwrap(this).canvas);
- },
- texImage2D: function() {
- arguments[5] = unwrapIfNeeded(arguments[5]);
- unsafeUnwrap(this).texImage2D.apply(unsafeUnwrap(this), arguments);
- },
- texSubImage2D: function() {
- arguments[6] = unwrapIfNeeded(arguments[6]);
- unsafeUnwrap(this).texSubImage2D.apply(unsafeUnwrap(this), arguments);
- }
- });
- var instanceProperties = /WebKit/.test(navigator.userAgent) ? {
- drawingBufferHeight: null,
- drawingBufferWidth: null
- } : {};
- registerWrapper(OriginalWebGLRenderingContext, WebGLRenderingContext, instanceProperties);
- scope.wrappers.WebGLRenderingContext = WebGLRenderingContext;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var GetElementsByInterface = scope.GetElementsByInterface;
- var NonElementParentNodeInterface = scope.NonElementParentNodeInterface;
- var ParentNodeInterface = scope.ParentNodeInterface;
- var SelectorsInterface = scope.SelectorsInterface;
- var mixin = scope.mixin;
- var registerObject = scope.registerObject;
- var DocumentFragment = registerObject(document.createDocumentFragment());
- mixin(DocumentFragment.prototype, ParentNodeInterface);
- mixin(DocumentFragment.prototype, SelectorsInterface);
- mixin(DocumentFragment.prototype, GetElementsByInterface);
- mixin(DocumentFragment.prototype, NonElementParentNodeInterface);
- var Comment = registerObject(document.createComment(""));
- scope.wrappers.Comment = Comment;
- scope.wrappers.DocumentFragment = DocumentFragment;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var DocumentFragment = scope.wrappers.DocumentFragment;
- var TreeScope = scope.TreeScope;
- var elementFromPoint = scope.elementFromPoint;
- var getInnerHTML = scope.getInnerHTML;
- var getTreeScope = scope.getTreeScope;
- var mixin = scope.mixin;
- var rewrap = scope.rewrap;
- var setInnerHTML = scope.setInnerHTML;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var shadowHostTable = new WeakMap();
- var nextOlderShadowTreeTable = new WeakMap();
- function ShadowRoot(hostWrapper) {
- var node = unwrap(unsafeUnwrap(hostWrapper).ownerDocument.createDocumentFragment());
- DocumentFragment.call(this, node);
- rewrap(node, this);
- var oldShadowRoot = hostWrapper.shadowRoot;
- nextOlderShadowTreeTable.set(this, oldShadowRoot);
- this.treeScope_ = new TreeScope(this, getTreeScope(oldShadowRoot || hostWrapper));
- shadowHostTable.set(this, hostWrapper);
- }
- ShadowRoot.prototype = Object.create(DocumentFragment.prototype);
- mixin(ShadowRoot.prototype, {
- constructor: ShadowRoot,
- get innerHTML() {
- return getInnerHTML(this);
- },
- set innerHTML(value) {
- setInnerHTML(this, value);
- this.invalidateShadowRenderer();
- },
- get olderShadowRoot() {
- return nextOlderShadowTreeTable.get(this) || null;
- },
- get host() {
- return shadowHostTable.get(this) || null;
- },
- invalidateShadowRenderer: function() {
- return shadowHostTable.get(this).invalidateShadowRenderer();
- },
- elementFromPoint: function(x, y) {
- return elementFromPoint(this, this.ownerDocument, x, y);
- }
- });
- scope.wrappers.ShadowRoot = ShadowRoot;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var wrap = scope.wrap;
- var getTreeScope = scope.getTreeScope;
- var OriginalRange = window.Range;
- var ShadowRoot = scope.wrappers.ShadowRoot;
- function getHost(node) {
- var root = getTreeScope(node).root;
- if (root instanceof ShadowRoot) {
- return root.host;
- }
- return null;
- }
- function hostNodeToShadowNode(refNode, offset) {
- if (refNode.shadowRoot) {
- offset = Math.min(refNode.childNodes.length - 1, offset);
- var child = refNode.childNodes[offset];
- if (child) {
- var insertionPoint = scope.getDestinationInsertionPoints(child);
- if (insertionPoint.length > 0) {
- var parentNode = insertionPoint[0].parentNode;
- if (parentNode.nodeType == Node.ELEMENT_NODE) {
- refNode = parentNode;
- }
- }
- }
- }
- return refNode;
- }
- function shadowNodeToHostNode(node) {
- node = wrap(node);
- return getHost(node) || node;
- }
- function Range(impl) {
- setWrapper(impl, this);
- }
- Range.prototype = {
- get startContainer() {
- return shadowNodeToHostNode(unsafeUnwrap(this).startContainer);
- },
- get endContainer() {
- return shadowNodeToHostNode(unsafeUnwrap(this).endContainer);
- },
- get commonAncestorContainer() {
- return shadowNodeToHostNode(unsafeUnwrap(this).commonAncestorContainer);
- },
- setStart: function(refNode, offset) {
- refNode = hostNodeToShadowNode(refNode, offset);
- unsafeUnwrap(this).setStart(unwrapIfNeeded(refNode), offset);
- },
- setEnd: function(refNode, offset) {
- refNode = hostNodeToShadowNode(refNode, offset);
- unsafeUnwrap(this).setEnd(unwrapIfNeeded(refNode), offset);
- },
- setStartBefore: function(refNode) {
- unsafeUnwrap(this).setStartBefore(unwrapIfNeeded(refNode));
- },
- setStartAfter: function(refNode) {
- unsafeUnwrap(this).setStartAfter(unwrapIfNeeded(refNode));
- },
- setEndBefore: function(refNode) {
- unsafeUnwrap(this).setEndBefore(unwrapIfNeeded(refNode));
- },
- setEndAfter: function(refNode) {
- unsafeUnwrap(this).setEndAfter(unwrapIfNeeded(refNode));
- },
- selectNode: function(refNode) {
- unsafeUnwrap(this).selectNode(unwrapIfNeeded(refNode));
- },
- selectNodeContents: function(refNode) {
- unsafeUnwrap(this).selectNodeContents(unwrapIfNeeded(refNode));
- },
- compareBoundaryPoints: function(how, sourceRange) {
- return unsafeUnwrap(this).compareBoundaryPoints(how, unwrap(sourceRange));
- },
- extractContents: function() {
- return wrap(unsafeUnwrap(this).extractContents());
- },
- cloneContents: function() {
- return wrap(unsafeUnwrap(this).cloneContents());
- },
- insertNode: function(node) {
- unsafeUnwrap(this).insertNode(unwrapIfNeeded(node));
- },
- surroundContents: function(newParent) {
- unsafeUnwrap(this).surroundContents(unwrapIfNeeded(newParent));
- },
- cloneRange: function() {
- return wrap(unsafeUnwrap(this).cloneRange());
- },
- isPointInRange: function(node, offset) {
- return unsafeUnwrap(this).isPointInRange(unwrapIfNeeded(node), offset);
- },
- comparePoint: function(node, offset) {
- return unsafeUnwrap(this).comparePoint(unwrapIfNeeded(node), offset);
- },
- intersectsNode: function(node) {
- return unsafeUnwrap(this).intersectsNode(unwrapIfNeeded(node));
- },
- toString: function() {
- return unsafeUnwrap(this).toString();
- }
- };
- if (OriginalRange.prototype.createContextualFragment) {
- Range.prototype.createContextualFragment = function(html) {
- return wrap(unsafeUnwrap(this).createContextualFragment(html));
- };
- }
- registerWrapper(window.Range, Range, document.createRange());
- scope.wrappers.Range = Range;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var Element = scope.wrappers.Element;
- var HTMLContentElement = scope.wrappers.HTMLContentElement;
- var HTMLShadowElement = scope.wrappers.HTMLShadowElement;
- var Node = scope.wrappers.Node;
- var ShadowRoot = scope.wrappers.ShadowRoot;
- var assert = scope.assert;
- var getTreeScope = scope.getTreeScope;
- var mixin = scope.mixin;
- var oneOf = scope.oneOf;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var ArraySplice = scope.ArraySplice;
- function updateWrapperUpAndSideways(wrapper) {
- wrapper.previousSibling_ = wrapper.previousSibling;
- wrapper.nextSibling_ = wrapper.nextSibling;
- wrapper.parentNode_ = wrapper.parentNode;
- }
- function updateWrapperDown(wrapper) {
- wrapper.firstChild_ = wrapper.firstChild;
- wrapper.lastChild_ = wrapper.lastChild;
- }
- function updateAllChildNodes(parentNodeWrapper) {
- assert(parentNodeWrapper instanceof Node);
- for (var childWrapper = parentNodeWrapper.firstChild; childWrapper; childWrapper = childWrapper.nextSibling) {
- updateWrapperUpAndSideways(childWrapper);
- }
- updateWrapperDown(parentNodeWrapper);
- }
- function insertBefore(parentNodeWrapper, newChildWrapper, refChildWrapper) {
- var parentNode = unwrap(parentNodeWrapper);
- var newChild = unwrap(newChildWrapper);
- var refChild = refChildWrapper ? unwrap(refChildWrapper) : null;
- remove(newChildWrapper);
- updateWrapperUpAndSideways(newChildWrapper);
- if (!refChildWrapper) {
- parentNodeWrapper.lastChild_ = parentNodeWrapper.lastChild;
- if (parentNodeWrapper.lastChild === parentNodeWrapper.firstChild) parentNodeWrapper.firstChild_ = parentNodeWrapper.firstChild;
- var lastChildWrapper = wrap(parentNode.lastChild);
- if (lastChildWrapper) lastChildWrapper.nextSibling_ = lastChildWrapper.nextSibling;
- } else {
- if (parentNodeWrapper.firstChild === refChildWrapper) parentNodeWrapper.firstChild_ = refChildWrapper;
- refChildWrapper.previousSibling_ = refChildWrapper.previousSibling;
- }
- scope.originalInsertBefore.call(parentNode, newChild, refChild);
- }
- function remove(nodeWrapper) {
- var node = unwrap(nodeWrapper);
- var parentNode = node.parentNode;
- if (!parentNode) return;
- var parentNodeWrapper = wrap(parentNode);
- updateWrapperUpAndSideways(nodeWrapper);
- if (nodeWrapper.previousSibling) nodeWrapper.previousSibling.nextSibling_ = nodeWrapper;
- if (nodeWrapper.nextSibling) nodeWrapper.nextSibling.previousSibling_ = nodeWrapper;
- if (parentNodeWrapper.lastChild === nodeWrapper) parentNodeWrapper.lastChild_ = nodeWrapper;
- if (parentNodeWrapper.firstChild === nodeWrapper) parentNodeWrapper.firstChild_ = nodeWrapper;
- scope.originalRemoveChild.call(parentNode, node);
- }
- var distributedNodesTable = new WeakMap();
- var destinationInsertionPointsTable = new WeakMap();
- var rendererForHostTable = new WeakMap();
- function resetDistributedNodes(insertionPoint) {
- distributedNodesTable.set(insertionPoint, []);
- }
- function getDistributedNodes(insertionPoint) {
- var rv = distributedNodesTable.get(insertionPoint);
- if (!rv) distributedNodesTable.set(insertionPoint, rv = []);
- return rv;
- }
- function getChildNodesSnapshot(node) {
- var result = [], i = 0;
- for (var child = node.firstChild; child; child = child.nextSibling) {
- result[i++] = child;
- }
- return result;
- }
- var request = oneOf(window, [ "requestAnimationFrame", "mozRequestAnimationFrame", "webkitRequestAnimationFrame", "setTimeout" ]);
- var pendingDirtyRenderers = [];
- var renderTimer;
- function renderAllPending() {
- for (var i = 0; i < pendingDirtyRenderers.length; i++) {
- var renderer = pendingDirtyRenderers[i];
- var parentRenderer = renderer.parentRenderer;
- if (parentRenderer && parentRenderer.dirty) continue;
- renderer.render();
- }
- pendingDirtyRenderers = [];
- }
- function handleRequestAnimationFrame() {
- renderTimer = null;
- renderAllPending();
- }
- function getRendererForHost(host) {
- var renderer = rendererForHostTable.get(host);
- if (!renderer) {
- renderer = new ShadowRenderer(host);
- rendererForHostTable.set(host, renderer);
- }
- return renderer;
- }
- function getShadowRootAncestor(node) {
- var root = getTreeScope(node).root;
- if (root instanceof ShadowRoot) return root;
- return null;
- }
- function getRendererForShadowRoot(shadowRoot) {
- return getRendererForHost(shadowRoot.host);
- }
- var spliceDiff = new ArraySplice();
- spliceDiff.equals = function(renderNode, rawNode) {
- return unwrap(renderNode.node) === rawNode;
- };
- function RenderNode(node) {
- this.skip = false;
- this.node = node;
- this.childNodes = [];
- }
- RenderNode.prototype = {
- append: function(node) {
- var rv = new RenderNode(node);
- this.childNodes.push(rv);
- return rv;
- },
- sync: function(opt_added) {
- if (this.skip) return;
- var nodeWrapper = this.node;
- var newChildren = this.childNodes;
- var oldChildren = getChildNodesSnapshot(unwrap(nodeWrapper));
- var added = opt_added || new WeakMap();
- var splices = spliceDiff.calculateSplices(newChildren, oldChildren);
- var newIndex = 0, oldIndex = 0;
- var lastIndex = 0;
- for (var i = 0; i < splices.length; i++) {
- var splice = splices[i];
- for (;lastIndex < splice.index; lastIndex++) {
- oldIndex++;
- newChildren[newIndex++].sync(added);
- }
- var removedCount = splice.removed.length;
- for (var j = 0; j < removedCount; j++) {
- var wrapper = wrap(oldChildren[oldIndex++]);
- if (!added.get(wrapper)) remove(wrapper);
- }
- var addedCount = splice.addedCount;
- var refNode = oldChildren[oldIndex] && wrap(oldChildren[oldIndex]);
- for (var j = 0; j < addedCount; j++) {
- var newChildRenderNode = newChildren[newIndex++];
- var newChildWrapper = newChildRenderNode.node;
- insertBefore(nodeWrapper, newChildWrapper, refNode);
- added.set(newChildWrapper, true);
- newChildRenderNode.sync(added);
- }
- lastIndex += addedCount;
- }
- for (var i = lastIndex; i < newChildren.length; i++) {
- newChildren[i].sync(added);
- }
- }
- };
- function ShadowRenderer(host) {
- this.host = host;
- this.dirty = false;
- this.invalidateAttributes();
- this.associateNode(host);
- }
- ShadowRenderer.prototype = {
- render: function(opt_renderNode) {
- if (!this.dirty) return;
- this.invalidateAttributes();
- var host = this.host;
- this.distribution(host);
- var renderNode = opt_renderNode || new RenderNode(host);
- this.buildRenderTree(renderNode, host);
- var topMostRenderer = !opt_renderNode;
- if (topMostRenderer) renderNode.sync();
- this.dirty = false;
- },
- get parentRenderer() {
- return getTreeScope(this.host).renderer;
- },
- invalidate: function() {
- if (!this.dirty) {
- this.dirty = true;
- var parentRenderer = this.parentRenderer;
- if (parentRenderer) parentRenderer.invalidate();
- pendingDirtyRenderers.push(this);
- if (renderTimer) return;
- renderTimer = window[request](handleRequestAnimationFrame, 0);
- }
- },
- distribution: function(root) {
- this.resetAllSubtrees(root);
- this.distributionResolution(root);
- },
- resetAll: function(node) {
- if (isInsertionPoint(node)) resetDistributedNodes(node); else resetDestinationInsertionPoints(node);
- this.resetAllSubtrees(node);
- },
- resetAllSubtrees: function(node) {
- for (var child = node.firstChild; child; child = child.nextSibling) {
- this.resetAll(child);
- }
- if (node.shadowRoot) this.resetAll(node.shadowRoot);
- if (node.olderShadowRoot) this.resetAll(node.olderShadowRoot);
- },
- distributionResolution: function(node) {
- if (isShadowHost(node)) {
- var shadowHost = node;
- var pool = poolPopulation(shadowHost);
- var shadowTrees = getShadowTrees(shadowHost);
- for (var i = 0; i < shadowTrees.length; i++) {
- this.poolDistribution(shadowTrees[i], pool);
- }
- for (var i = shadowTrees.length - 1; i >= 0; i--) {
- var shadowTree = shadowTrees[i];
- var shadow = getShadowInsertionPoint(shadowTree);
- if (shadow) {
- var olderShadowRoot = shadowTree.olderShadowRoot;
- if (olderShadowRoot) {
- pool = poolPopulation(olderShadowRoot);
- }
- for (var j = 0; j < pool.length; j++) {
- destributeNodeInto(pool[j], shadow);
- }
- }
- this.distributionResolution(shadowTree);
- }
- }
- for (var child = node.firstChild; child; child = child.nextSibling) {
- this.distributionResolution(child);
- }
- },
- poolDistribution: function(node, pool) {
- if (node instanceof HTMLShadowElement) return;
- if (node instanceof HTMLContentElement) {
- var content = node;
- this.updateDependentAttributes(content.getAttribute("select"));
- var anyDistributed = false;
- for (var i = 0; i < pool.length; i++) {
- var node = pool[i];
- if (!node) continue;
- if (matches(node, content)) {
- destributeNodeInto(node, content);
- pool[i] = undefined;
- anyDistributed = true;
- }
- }
- if (!anyDistributed) {
- for (var child = content.firstChild; child; child = child.nextSibling) {
- destributeNodeInto(child, content);
- }
- }
- return;
- }
- for (var child = node.firstChild; child; child = child.nextSibling) {
- this.poolDistribution(child, pool);
- }
- },
- buildRenderTree: function(renderNode, node) {
- var children = this.compose(node);
- for (var i = 0; i < children.length; i++) {
- var child = children[i];
- var childRenderNode = renderNode.append(child);
- this.buildRenderTree(childRenderNode, child);
- }
- if (isShadowHost(node)) {
- var renderer = getRendererForHost(node);
- renderer.dirty = false;
- }
- },
- compose: function(node) {
- var children = [];
- var p = node.shadowRoot || node;
- for (var child = p.firstChild; child; child = child.nextSibling) {
- if (isInsertionPoint(child)) {
- this.associateNode(p);
- var distributedNodes = getDistributedNodes(child);
- for (var j = 0; j < distributedNodes.length; j++) {
- var distributedNode = distributedNodes[j];
- if (isFinalDestination(child, distributedNode)) children.push(distributedNode);
- }
- } else {
- children.push(child);
- }
- }
- return children;
- },
- invalidateAttributes: function() {
- this.attributes = Object.create(null);
- },
- updateDependentAttributes: function(selector) {
- if (!selector) return;
- var attributes = this.attributes;
- if (/\.\w+/.test(selector)) attributes["class"] = true;
- if (/#\w+/.test(selector)) attributes["id"] = true;
- selector.replace(/\[\s*([^\s=\|~\]]+)/g, function(_, name) {
- attributes[name] = true;
- });
- },
- dependsOnAttribute: function(name) {
- return this.attributes[name];
- },
- associateNode: function(node) {
- unsafeUnwrap(node).polymerShadowRenderer_ = this;
- }
- };
- function poolPopulation(node) {
- var pool = [];
- for (var child = node.firstChild; child; child = child.nextSibling) {
- if (isInsertionPoint(child)) {
- pool.push.apply(pool, getDistributedNodes(child));
- } else {
- pool.push(child);
- }
- }
- return pool;
- }
- function getShadowInsertionPoint(node) {
- if (node instanceof HTMLShadowElement) return node;
- if (node instanceof HTMLContentElement) return null;
- for (var child = node.firstChild; child; child = child.nextSibling) {
- var res = getShadowInsertionPoint(child);
- if (res) return res;
- }
- return null;
- }
- function destributeNodeInto(child, insertionPoint) {
- getDistributedNodes(insertionPoint).push(child);
- var points = destinationInsertionPointsTable.get(child);
- if (!points) destinationInsertionPointsTable.set(child, [ insertionPoint ]); else points.push(insertionPoint);
- }
- function getDestinationInsertionPoints(node) {
- return destinationInsertionPointsTable.get(node);
- }
- function resetDestinationInsertionPoints(node) {
- destinationInsertionPointsTable.set(node, undefined);
- }
- var selectorStartCharRe = /^(:not\()?[*.#[a-zA-Z_|]/;
- function matches(node, contentElement) {
- var select = contentElement.getAttribute("select");
- if (!select) return true;
- select = select.trim();
- if (!select) return true;
- if (!(node instanceof Element)) return false;
- if (!selectorStartCharRe.test(select)) return false;
- try {
- return node.matches(select);
- } catch (ex) {
- return false;
- }
- }
- function isFinalDestination(insertionPoint, node) {
- var points = getDestinationInsertionPoints(node);
- return points && points[points.length - 1] === insertionPoint;
- }
- function isInsertionPoint(node) {
- return node instanceof HTMLContentElement || node instanceof HTMLShadowElement;
- }
- function isShadowHost(shadowHost) {
- return shadowHost.shadowRoot;
- }
- function getShadowTrees(host) {
- var trees = [];
- for (var tree = host.shadowRoot; tree; tree = tree.olderShadowRoot) {
- trees.push(tree);
- }
- return trees;
- }
- function render(host) {
- new ShadowRenderer(host).render();
- }
- Node.prototype.invalidateShadowRenderer = function(force) {
- var renderer = unsafeUnwrap(this).polymerShadowRenderer_;
- if (renderer) {
- renderer.invalidate();
- return true;
- }
- return false;
- };
- HTMLContentElement.prototype.getDistributedNodes = HTMLShadowElement.prototype.getDistributedNodes = function() {
- renderAllPending();
- return getDistributedNodes(this);
- };
- Element.prototype.getDestinationInsertionPoints = function() {
- renderAllPending();
- return getDestinationInsertionPoints(this) || [];
- };
- HTMLContentElement.prototype.nodeIsInserted_ = HTMLShadowElement.prototype.nodeIsInserted_ = function() {
- this.invalidateShadowRenderer();
- var shadowRoot = getShadowRootAncestor(this);
- var renderer;
- if (shadowRoot) renderer = getRendererForShadowRoot(shadowRoot);
- unsafeUnwrap(this).polymerShadowRenderer_ = renderer;
- if (renderer) renderer.invalidate();
- };
- scope.getRendererForHost = getRendererForHost;
- scope.getShadowTrees = getShadowTrees;
- scope.renderAllPending = renderAllPending;
- scope.getDestinationInsertionPoints = getDestinationInsertionPoints;
- scope.visual = {
- insertBefore: insertBefore,
- remove: remove
- };
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var HTMLElement = scope.wrappers.HTMLElement;
- var assert = scope.assert;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var elementsWithFormProperty = [ "HTMLButtonElement", "HTMLFieldSetElement", "HTMLInputElement", "HTMLKeygenElement", "HTMLLabelElement", "HTMLLegendElement", "HTMLObjectElement", "HTMLOutputElement", "HTMLTextAreaElement" ];
- function createWrapperConstructor(name) {
- if (!window[name]) return;
- assert(!scope.wrappers[name]);
- var GeneratedWrapper = function(node) {
- HTMLElement.call(this, node);
- };
- GeneratedWrapper.prototype = Object.create(HTMLElement.prototype);
- mixin(GeneratedWrapper.prototype, {
- get form() {
- return wrap(unwrap(this).form);
- }
- });
- registerWrapper(window[name], GeneratedWrapper, document.createElement(name.slice(4, -7)));
- scope.wrappers[name] = GeneratedWrapper;
- }
- elementsWithFormProperty.forEach(createWrapperConstructor);
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var wrap = scope.wrap;
- var OriginalSelection = window.Selection;
- function Selection(impl) {
- setWrapper(impl, this);
- }
- Selection.prototype = {
- get anchorNode() {
- return wrap(unsafeUnwrap(this).anchorNode);
- },
- get focusNode() {
- return wrap(unsafeUnwrap(this).focusNode);
- },
- addRange: function(range) {
- unsafeUnwrap(this).addRange(unwrapIfNeeded(range));
- },
- collapse: function(node, index) {
- unsafeUnwrap(this).collapse(unwrapIfNeeded(node), index);
- },
- containsNode: function(node, allowPartial) {
- return unsafeUnwrap(this).containsNode(unwrapIfNeeded(node), allowPartial);
- },
- getRangeAt: function(index) {
- return wrap(unsafeUnwrap(this).getRangeAt(index));
- },
- removeRange: function(range) {
- unsafeUnwrap(this).removeRange(unwrap(range));
- },
- selectAllChildren: function(node) {
- unsafeUnwrap(this).selectAllChildren(unwrapIfNeeded(node));
- },
- toString: function() {
- return unsafeUnwrap(this).toString();
- }
- };
- if (OriginalSelection.prototype.extend) {
- Selection.prototype.extend = function(node, offset) {
- unsafeUnwrap(this).extend(unwrapIfNeeded(node), offset);
- };
- }
- registerWrapper(window.Selection, Selection, window.getSelection());
- scope.wrappers.Selection = Selection;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var wrap = scope.wrap;
- var OriginalTreeWalker = window.TreeWalker;
- function TreeWalker(impl) {
- setWrapper(impl, this);
- }
- TreeWalker.prototype = {
- get root() {
- return wrap(unsafeUnwrap(this).root);
- },
- get currentNode() {
- return wrap(unsafeUnwrap(this).currentNode);
- },
- set currentNode(node) {
- unsafeUnwrap(this).currentNode = unwrapIfNeeded(node);
- },
- get filter() {
- return unsafeUnwrap(this).filter;
- },
- parentNode: function() {
- return wrap(unsafeUnwrap(this).parentNode());
- },
- firstChild: function() {
- return wrap(unsafeUnwrap(this).firstChild());
- },
- lastChild: function() {
- return wrap(unsafeUnwrap(this).lastChild());
- },
- previousSibling: function() {
- return wrap(unsafeUnwrap(this).previousSibling());
- },
- previousNode: function() {
- return wrap(unsafeUnwrap(this).previousNode());
- },
- nextNode: function() {
- return wrap(unsafeUnwrap(this).nextNode());
- }
- };
- registerWrapper(OriginalTreeWalker, TreeWalker);
- scope.wrappers.TreeWalker = TreeWalker;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var GetElementsByInterface = scope.GetElementsByInterface;
- var Node = scope.wrappers.Node;
- var ParentNodeInterface = scope.ParentNodeInterface;
- var NonElementParentNodeInterface = scope.NonElementParentNodeInterface;
- var Selection = scope.wrappers.Selection;
- var SelectorsInterface = scope.SelectorsInterface;
- var ShadowRoot = scope.wrappers.ShadowRoot;
- var TreeScope = scope.TreeScope;
- var cloneNode = scope.cloneNode;
- var defineWrapGetter = scope.defineWrapGetter;
- var elementFromPoint = scope.elementFromPoint;
- var forwardMethodsToWrapper = scope.forwardMethodsToWrapper;
- var matchesNames = scope.matchesNames;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var renderAllPending = scope.renderAllPending;
- var rewrap = scope.rewrap;
- var setWrapper = scope.setWrapper;
- var unsafeUnwrap = scope.unsafeUnwrap;
- var unwrap = scope.unwrap;
- var wrap = scope.wrap;
- var wrapEventTargetMethods = scope.wrapEventTargetMethods;
- var wrapNodeList = scope.wrapNodeList;
- var implementationTable = new WeakMap();
- function Document(node) {
- Node.call(this, node);
- this.treeScope_ = new TreeScope(this, null);
- }
- Document.prototype = Object.create(Node.prototype);
- defineWrapGetter(Document, "documentElement");
- defineWrapGetter(Document, "body");
- defineWrapGetter(Document, "head");
- function wrapMethod(name) {
- var original = document[name];
- Document.prototype[name] = function() {
- return wrap(original.apply(unsafeUnwrap(this), arguments));
- };
- }
- [ "createComment", "createDocumentFragment", "createElement", "createElementNS", "createEvent", "createEventNS", "createRange", "createTextNode" ].forEach(wrapMethod);
- var originalAdoptNode = document.adoptNode;
- function adoptNodeNoRemove(node, doc) {
- originalAdoptNode.call(unsafeUnwrap(doc), unwrap(node));
- adoptSubtree(node, doc);
- }
- function adoptSubtree(node, doc) {
- if (node.shadowRoot) doc.adoptNode(node.shadowRoot);
- if (node instanceof ShadowRoot) adoptOlderShadowRoots(node, doc);
- for (var child = node.firstChild; child; child = child.nextSibling) {
- adoptSubtree(child, doc);
- }
- }
- function adoptOlderShadowRoots(shadowRoot, doc) {
- var oldShadowRoot = shadowRoot.olderShadowRoot;
- if (oldShadowRoot) doc.adoptNode(oldShadowRoot);
- }
- var originalGetSelection = document.getSelection;
- mixin(Document.prototype, {
- adoptNode: function(node) {
- if (node.parentNode) node.parentNode.removeChild(node);
- adoptNodeNoRemove(node, this);
- return node;
- },
- elementFromPoint: function(x, y) {
- return elementFromPoint(this, this, x, y);
- },
- importNode: function(node, deep) {
- return cloneNode(node, deep, unsafeUnwrap(this));
- },
- getSelection: function() {
- renderAllPending();
- return new Selection(originalGetSelection.call(unwrap(this)));
- },
- getElementsByName: function(name) {
- return SelectorsInterface.querySelectorAll.call(this, "[name=" + JSON.stringify(String(name)) + "]");
- }
- });
- var originalCreateTreeWalker = document.createTreeWalker;
- var TreeWalkerWrapper = scope.wrappers.TreeWalker;
- Document.prototype.createTreeWalker = function(root, whatToShow, filter, expandEntityReferences) {
- var newFilter = null;
- if (filter) {
- if (filter.acceptNode && typeof filter.acceptNode === "function") {
- newFilter = {
- acceptNode: function(node) {
- return filter.acceptNode(wrap(node));
- }
- };
- } else if (typeof filter === "function") {
- newFilter = function(node) {
- return filter(wrap(node));
- };
- }
- }
- return new TreeWalkerWrapper(originalCreateTreeWalker.call(unwrap(this), unwrap(root), whatToShow, newFilter, expandEntityReferences));
- };
- if (document.registerElement) {
- var originalRegisterElement = document.registerElement;
- Document.prototype.registerElement = function(tagName, object) {
- var prototype, extendsOption;
- if (object !== undefined) {
- prototype = object.prototype;
- extendsOption = object.extends;
- }
- if (!prototype) prototype = Object.create(HTMLElement.prototype);
- if (scope.nativePrototypeTable.get(prototype)) {
- throw new Error("NotSupportedError");
- }
- var proto = Object.getPrototypeOf(prototype);
- var nativePrototype;
- var prototypes = [];
- while (proto) {
- nativePrototype = scope.nativePrototypeTable.get(proto);
- if (nativePrototype) break;
- prototypes.push(proto);
- proto = Object.getPrototypeOf(proto);
- }
- if (!nativePrototype) {
- throw new Error("NotSupportedError");
- }
- var newPrototype = Object.create(nativePrototype);
- for (var i = prototypes.length - 1; i >= 0; i--) {
- newPrototype = Object.create(newPrototype);
- }
- [ "createdCallback", "attachedCallback", "detachedCallback", "attributeChangedCallback" ].forEach(function(name) {
- var f = prototype[name];
- if (!f) return;
- newPrototype[name] = function() {
- if (!(wrap(this) instanceof CustomElementConstructor)) {
- rewrap(this);
- }
- f.apply(wrap(this), arguments);
- };
- });
- var p = {
- prototype: newPrototype
- };
- if (extendsOption) p.extends = extendsOption;
- function CustomElementConstructor(node) {
- if (!node) {
- if (extendsOption) {
- return document.createElement(extendsOption, tagName);
- } else {
- return document.createElement(tagName);
- }
- }
- setWrapper(node, this);
- }
- CustomElementConstructor.prototype = prototype;
- CustomElementConstructor.prototype.constructor = CustomElementConstructor;
- scope.constructorTable.set(newPrototype, CustomElementConstructor);
- scope.nativePrototypeTable.set(prototype, newPrototype);
- var nativeConstructor = originalRegisterElement.call(unwrap(this), tagName, p);
- return CustomElementConstructor;
- };
- forwardMethodsToWrapper([ window.HTMLDocument || window.Document ], [ "registerElement" ]);
- }
- forwardMethodsToWrapper([ window.HTMLBodyElement, window.HTMLDocument || window.Document, window.HTMLHeadElement, window.HTMLHtmlElement ], [ "appendChild", "compareDocumentPosition", "contains", "getElementsByClassName", "getElementsByTagName", "getElementsByTagNameNS", "insertBefore", "querySelector", "querySelectorAll", "removeChild", "replaceChild" ]);
- forwardMethodsToWrapper([ window.HTMLBodyElement, window.HTMLHeadElement, window.HTMLHtmlElement ], matchesNames);
- forwardMethodsToWrapper([ window.HTMLDocument || window.Document ], [ "adoptNode", "importNode", "contains", "createComment", "createDocumentFragment", "createElement", "createElementNS", "createEvent", "createEventNS", "createRange", "createTextNode", "createTreeWalker", "elementFromPoint", "getElementById", "getElementsByName", "getSelection" ]);
- mixin(Document.prototype, GetElementsByInterface);
- mixin(Document.prototype, ParentNodeInterface);
- mixin(Document.prototype, SelectorsInterface);
- mixin(Document.prototype, NonElementParentNodeInterface);
- mixin(Document.prototype, {
- get implementation() {
- var implementation = implementationTable.get(this);
- if (implementation) return implementation;
- implementation = new DOMImplementation(unwrap(this).implementation);
- implementationTable.set(this, implementation);
- return implementation;
- },
- get defaultView() {
- return wrap(unwrap(this).defaultView);
- }
- });
- registerWrapper(window.Document, Document, document.implementation.createHTMLDocument(""));
- if (window.HTMLDocument) registerWrapper(window.HTMLDocument, Document);
- wrapEventTargetMethods([ window.HTMLBodyElement, window.HTMLDocument || window.Document, window.HTMLHeadElement ]);
- function DOMImplementation(impl) {
- setWrapper(impl, this);
- }
- var originalCreateDocument = document.implementation.createDocument;
- DOMImplementation.prototype.createDocument = function() {
- arguments[2] = unwrap(arguments[2]);
- return wrap(originalCreateDocument.apply(unsafeUnwrap(this), arguments));
- };
- function wrapImplMethod(constructor, name) {
- var original = document.implementation[name];
- constructor.prototype[name] = function() {
- return wrap(original.apply(unsafeUnwrap(this), arguments));
- };
- }
- function forwardImplMethod(constructor, name) {
- var original = document.implementation[name];
- constructor.prototype[name] = function() {
- return original.apply(unsafeUnwrap(this), arguments);
- };
- }
- wrapImplMethod(DOMImplementation, "createDocumentType");
- wrapImplMethod(DOMImplementation, "createHTMLDocument");
- forwardImplMethod(DOMImplementation, "hasFeature");
- registerWrapper(window.DOMImplementation, DOMImplementation);
- forwardMethodsToWrapper([ window.DOMImplementation ], [ "createDocument", "createDocumentType", "createHTMLDocument", "hasFeature" ]);
- scope.adoptNodeNoRemove = adoptNodeNoRemove;
- scope.wrappers.DOMImplementation = DOMImplementation;
- scope.wrappers.Document = Document;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var EventTarget = scope.wrappers.EventTarget;
- var Selection = scope.wrappers.Selection;
- var mixin = scope.mixin;
- var registerWrapper = scope.registerWrapper;
- var renderAllPending = scope.renderAllPending;
- var unwrap = scope.unwrap;
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var wrap = scope.wrap;
- var OriginalWindow = window.Window;
- var originalGetComputedStyle = window.getComputedStyle;
- var originalGetDefaultComputedStyle = window.getDefaultComputedStyle;
- var originalGetSelection = window.getSelection;
- function Window(impl) {
- EventTarget.call(this, impl);
- }
- Window.prototype = Object.create(EventTarget.prototype);
- OriginalWindow.prototype.getComputedStyle = function(el, pseudo) {
- return wrap(this || window).getComputedStyle(unwrapIfNeeded(el), pseudo);
- };
- if (originalGetDefaultComputedStyle) {
- OriginalWindow.prototype.getDefaultComputedStyle = function(el, pseudo) {
- return wrap(this || window).getDefaultComputedStyle(unwrapIfNeeded(el), pseudo);
- };
- }
- OriginalWindow.prototype.getSelection = function() {
- return wrap(this || window).getSelection();
- };
- delete window.getComputedStyle;
- delete window.getDefaultComputedStyle;
- delete window.getSelection;
- [ "addEventListener", "removeEventListener", "dispatchEvent" ].forEach(function(name) {
- OriginalWindow.prototype[name] = function() {
- var w = wrap(this || window);
- return w[name].apply(w, arguments);
- };
- delete window[name];
- });
- mixin(Window.prototype, {
- getComputedStyle: function(el, pseudo) {
- renderAllPending();
- return originalGetComputedStyle.call(unwrap(this), unwrapIfNeeded(el), pseudo);
- },
- getSelection: function() {
- renderAllPending();
- return new Selection(originalGetSelection.call(unwrap(this)));
- },
- get document() {
- return wrap(unwrap(this).document);
- }
- });
- if (originalGetDefaultComputedStyle) {
- Window.prototype.getDefaultComputedStyle = function(el, pseudo) {
- renderAllPending();
- return originalGetDefaultComputedStyle.call(unwrap(this), unwrapIfNeeded(el), pseudo);
- };
- }
- registerWrapper(OriginalWindow, Window, window);
- scope.wrappers.Window = Window;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var unwrap = scope.unwrap;
- var OriginalDataTransfer = window.DataTransfer || window.Clipboard;
- var OriginalDataTransferSetDragImage = OriginalDataTransfer.prototype.setDragImage;
- if (OriginalDataTransferSetDragImage) {
- OriginalDataTransfer.prototype.setDragImage = function(image, x, y) {
- OriginalDataTransferSetDragImage.call(this, unwrap(image), x, y);
- };
- }
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var registerWrapper = scope.registerWrapper;
- var setWrapper = scope.setWrapper;
- var unwrap = scope.unwrap;
- var OriginalFormData = window.FormData;
- if (!OriginalFormData) return;
- function FormData(formElement) {
- var impl;
- if (formElement instanceof OriginalFormData) {
- impl = formElement;
- } else {
- impl = new OriginalFormData(formElement && unwrap(formElement));
- }
- setWrapper(impl, this);
- }
- registerWrapper(OriginalFormData, FormData, new OriginalFormData());
- scope.wrappers.FormData = FormData;
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var unwrapIfNeeded = scope.unwrapIfNeeded;
- var originalSend = XMLHttpRequest.prototype.send;
- XMLHttpRequest.prototype.send = function(obj) {
- return originalSend.call(this, unwrapIfNeeded(obj));
- };
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- "use strict";
- var isWrapperFor = scope.isWrapperFor;
- var elements = {
- a: "HTMLAnchorElement",
- area: "HTMLAreaElement",
- audio: "HTMLAudioElement",
- base: "HTMLBaseElement",
- body: "HTMLBodyElement",
- br: "HTMLBRElement",
- button: "HTMLButtonElement",
- canvas: "HTMLCanvasElement",
- caption: "HTMLTableCaptionElement",
- col: "HTMLTableColElement",
- content: "HTMLContentElement",
- data: "HTMLDataElement",
- datalist: "HTMLDataListElement",
- del: "HTMLModElement",
- dir: "HTMLDirectoryElement",
- div: "HTMLDivElement",
- dl: "HTMLDListElement",
- embed: "HTMLEmbedElement",
- fieldset: "HTMLFieldSetElement",
- font: "HTMLFontElement",
- form: "HTMLFormElement",
- frame: "HTMLFrameElement",
- frameset: "HTMLFrameSetElement",
- h1: "HTMLHeadingElement",
- head: "HTMLHeadElement",
- hr: "HTMLHRElement",
- html: "HTMLHtmlElement",
- iframe: "HTMLIFrameElement",
- img: "HTMLImageElement",
- input: "HTMLInputElement",
- keygen: "HTMLKeygenElement",
- label: "HTMLLabelElement",
- legend: "HTMLLegendElement",
- li: "HTMLLIElement",
- link: "HTMLLinkElement",
- map: "HTMLMapElement",
- marquee: "HTMLMarqueeElement",
- menu: "HTMLMenuElement",
- menuitem: "HTMLMenuItemElement",
- meta: "HTMLMetaElement",
- meter: "HTMLMeterElement",
- object: "HTMLObjectElement",
- ol: "HTMLOListElement",
- optgroup: "HTMLOptGroupElement",
- option: "HTMLOptionElement",
- output: "HTMLOutputElement",
- p: "HTMLParagraphElement",
- param: "HTMLParamElement",
- pre: "HTMLPreElement",
- progress: "HTMLProgressElement",
- q: "HTMLQuoteElement",
- script: "HTMLScriptElement",
- select: "HTMLSelectElement",
- shadow: "HTMLShadowElement",
- source: "HTMLSourceElement",
- span: "HTMLSpanElement",
- style: "HTMLStyleElement",
- table: "HTMLTableElement",
- tbody: "HTMLTableSectionElement",
- template: "HTMLTemplateElement",
- textarea: "HTMLTextAreaElement",
- thead: "HTMLTableSectionElement",
- time: "HTMLTimeElement",
- title: "HTMLTitleElement",
- tr: "HTMLTableRowElement",
- track: "HTMLTrackElement",
- ul: "HTMLUListElement",
- video: "HTMLVideoElement"
- };
- function overrideConstructor(tagName) {
- var nativeConstructorName = elements[tagName];
- var nativeConstructor = window[nativeConstructorName];
- if (!nativeConstructor) return;
- var element = document.createElement(tagName);
- var wrapperConstructor = element.constructor;
- window[nativeConstructorName] = wrapperConstructor;
- }
- Object.keys(elements).forEach(overrideConstructor);
- Object.getOwnPropertyNames(scope.wrappers).forEach(function(name) {
- window[name] = scope.wrappers[name];
- });
- })(window.ShadowDOMPolyfill);
- (function(scope) {
- var ShadowCSS = {
- strictStyling: false,
- registry: {},
- shimStyling: function(root, name, extendsName) {
- var scopeStyles = this.prepareRoot(root, name, extendsName);
- var typeExtension = this.isTypeExtension(extendsName);
- var scopeSelector = this.makeScopeSelector(name, typeExtension);
- var cssText = stylesToCssText(scopeStyles, true);
- cssText = this.scopeCssText(cssText, scopeSelector);
- if (root) {
- root.shimmedStyle = cssText;
- }
- this.addCssToDocument(cssText, name);
- },
- shimStyle: function(style, selector) {
- return this.shimCssText(style.textContent, selector);
- },
- shimCssText: function(cssText, selector) {
- cssText = this.insertDirectives(cssText);
- return this.scopeCssText(cssText, selector);
- },
- makeScopeSelector: function(name, typeExtension) {
- if (name) {
- return typeExtension ? "[is=" + name + "]" : name;
- }
- return "";
- },
- isTypeExtension: function(extendsName) {
- return extendsName && extendsName.indexOf("-") < 0;
- },
- prepareRoot: function(root, name, extendsName) {
- var def = this.registerRoot(root, name, extendsName);
- this.replaceTextInStyles(def.rootStyles, this.insertDirectives);
- this.removeStyles(root, def.rootStyles);
- if (this.strictStyling) {
- this.applyScopeToContent(root, name);
- }
- return def.scopeStyles;
- },
- removeStyles: function(root, styles) {
- for (var i = 0, l = styles.length, s; i < l && (s = styles[i]); i++) {
- s.parentNode.removeChild(s);
- }
- },
- registerRoot: function(root, name, extendsName) {
- var def = this.registry[name] = {
- root: root,
- name: name,
- extendsName: extendsName
- };
- var styles = this.findStyles(root);
- def.rootStyles = styles;
- def.scopeStyles = def.rootStyles;
- var extendee = this.registry[def.extendsName];
- if (extendee) {
- def.scopeStyles = extendee.scopeStyles.concat(def.scopeStyles);
- }
- return def;
- },
- findStyles: function(root) {
- if (!root) {
- return [];
- }
- var styles = root.querySelectorAll("style");
- return Array.prototype.filter.call(styles, function(s) {
- return !s.hasAttribute(NO_SHIM_ATTRIBUTE);
- });
- },
- applyScopeToContent: function(root, name) {
- if (root) {
- Array.prototype.forEach.call(root.querySelectorAll("*"), function(node) {
- node.setAttribute(name, "");
- });
- Array.prototype.forEach.call(root.querySelectorAll("template"), function(template) {
- this.applyScopeToContent(template.content, name);
- }, this);
- }
- },
- insertDirectives: function(cssText) {
- cssText = this.insertPolyfillDirectivesInCssText(cssText);
- return this.insertPolyfillRulesInCssText(cssText);
- },
- insertPolyfillDirectivesInCssText: function(cssText) {
- cssText = cssText.replace(cssCommentNextSelectorRe, function(match, p1) {
- return p1.slice(0, -2) + "{";
- });
- return cssText.replace(cssContentNextSelectorRe, function(match, p1) {
- return p1 + " {";
- });
- },
- insertPolyfillRulesInCssText: function(cssText) {
- cssText = cssText.replace(cssCommentRuleRe, function(match, p1) {
- return p1.slice(0, -1);
- });
- return cssText.replace(cssContentRuleRe, function(match, p1, p2, p3) {
- var rule = match.replace(p1, "").replace(p2, "");
- return p3 + rule;
- });
- },
- scopeCssText: function(cssText, scopeSelector) {
- var unscoped = this.extractUnscopedRulesFromCssText(cssText);
- cssText = this.insertPolyfillHostInCssText(cssText);
- cssText = this.convertColonHost(cssText);
- cssText = this.convertColonHostContext(cssText);
- cssText = this.convertShadowDOMSelectors(cssText);
- if (scopeSelector) {
- var self = this, cssText;
- withCssRules(cssText, function(rules) {
- cssText = self.scopeRules(rules, scopeSelector);
- });
- }
- cssText = cssText + "\n" + unscoped;
- return cssText.trim();
- },
- extractUnscopedRulesFromCssText: function(cssText) {
- var r = "", m;
- while (m = cssCommentUnscopedRuleRe.exec(cssText)) {
- r += m[1].slice(0, -1) + "\n\n";
- }
- while (m = cssContentUnscopedRuleRe.exec(cssText)) {
- r += m[0].replace(m[2], "").replace(m[1], m[3]) + "\n\n";
- }
- return r;
- },
- convertColonHost: function(cssText) {
- return this.convertColonRule(cssText, cssColonHostRe, this.colonHostPartReplacer);
- },
- convertColonHostContext: function(cssText) {
- return this.convertColonRule(cssText, cssColonHostContextRe, this.colonHostContextPartReplacer);
- },
- convertColonRule: function(cssText, regExp, partReplacer) {
- return cssText.replace(regExp, function(m, p1, p2, p3) {
- p1 = polyfillHostNoCombinator;
- if (p2) {
- var parts = p2.split(","), r = [];
- for (var i = 0, l = parts.length, p; i < l && (p = parts[i]); i++) {
- p = p.trim();
- r.push(partReplacer(p1, p, p3));
- }
- return r.join(",");
- } else {
- return p1 + p3;
- }
- });
- },
- colonHostContextPartReplacer: function(host, part, suffix) {
- if (part.match(polyfillHost)) {
- return this.colonHostPartReplacer(host, part, suffix);
- } else {
- return host + part + suffix + ", " + part + " " + host + suffix;
- }
- },
- colonHostPartReplacer: function(host, part, suffix) {
- return host + part.replace(polyfillHost, "") + suffix;
- },
- convertShadowDOMSelectors: function(cssText) {
- for (var i = 0; i < shadowDOMSelectorsRe.length; i++) {
- cssText = cssText.replace(shadowDOMSelectorsRe[i], " ");
- }
- return cssText;
- },
- scopeRules: function(cssRules, scopeSelector) {
- var cssText = "";
- if (cssRules) {
- Array.prototype.forEach.call(cssRules, function(rule) {
- if (rule.selectorText && (rule.style && rule.style.cssText !== undefined)) {
- cssText += this.scopeSelector(rule.selectorText, scopeSelector, this.strictStyling) + " {\n ";
- cssText += this.propertiesFromRule(rule) + "\n}\n\n";
- } else if (rule.type === CSSRule.MEDIA_RULE) {
- cssText += "@media " + rule.media.mediaText + " {\n";
- cssText += this.scopeRules(rule.cssRules, scopeSelector);
- cssText += "\n}\n\n";
- } else {
- try {
- if (rule.cssText) {
- cssText += rule.cssText + "\n\n";
- }
- } catch (x) {
- if (rule.type === CSSRule.KEYFRAMES_RULE && rule.cssRules) {
- cssText += this.ieSafeCssTextFromKeyFrameRule(rule);
- }
- }
- }
- }, this);
- }
- return cssText;
- },
- ieSafeCssTextFromKeyFrameRule: function(rule) {
- var cssText = "@keyframes " + rule.name + " {";
- Array.prototype.forEach.call(rule.cssRules, function(rule) {
- cssText += " " + rule.keyText + " {" + rule.style.cssText + "}";
- });
- cssText += " }";
- return cssText;
- },
- scopeSelector: function(selector, scopeSelector, strict) {
- var r = [], parts = selector.split(",");
- parts.forEach(function(p) {
- p = p.trim();
- if (this.selectorNeedsScoping(p, scopeSelector)) {
- p = strict && !p.match(polyfillHostNoCombinator) ? this.applyStrictSelectorScope(p, scopeSelector) : this.applySelectorScope(p, scopeSelector);
- }
- r.push(p);
- }, this);
- return r.join(", ");
- },
- selectorNeedsScoping: function(selector, scopeSelector) {
- if (Array.isArray(scopeSelector)) {
- return true;
- }
- var re = this.makeScopeMatcher(scopeSelector);
- return !selector.match(re);
- },
- makeScopeMatcher: function(scopeSelector) {
- scopeSelector = scopeSelector.replace(/\[/g, "\\[").replace(/\]/g, "\\]");
- return new RegExp("^(" + scopeSelector + ")" + selectorReSuffix, "m");
- },
- applySelectorScope: function(selector, selectorScope) {
- return Array.isArray(selectorScope) ? this.applySelectorScopeList(selector, selectorScope) : this.applySimpleSelectorScope(selector, selectorScope);
- },
- applySelectorScopeList: function(selector, scopeSelectorList) {
- var r = [];
- for (var i = 0, s; s = scopeSelectorList[i]; i++) {
- r.push(this.applySimpleSelectorScope(selector, s));
- }
- return r.join(", ");
- },
- applySimpleSelectorScope: function(selector, scopeSelector) {
- if (selector.match(polyfillHostRe)) {
- selector = selector.replace(polyfillHostNoCombinator, scopeSelector);
- return selector.replace(polyfillHostRe, scopeSelector + " ");
- } else {
- return scopeSelector + " " + selector;
- }
- },
- applyStrictSelectorScope: function(selector, scopeSelector) {
- scopeSelector = scopeSelector.replace(/\[is=([^\]]*)\]/g, "$1");
- var splits = [ " ", ">", "+", "~" ], scoped = selector, attrName = "[" + scopeSelector + "]";
- splits.forEach(function(sep) {
- var parts = scoped.split(sep);
- scoped = parts.map(function(p) {
- var t = p.trim().replace(polyfillHostRe, "");
- if (t && splits.indexOf(t) < 0 && t.indexOf(attrName) < 0) {
- p = t.replace(/([^:]*)(:*)(.*)/, "$1" + attrName + "$2$3");
- }
- return p;
- }).join(sep);
- });
- return scoped;
- },
- insertPolyfillHostInCssText: function(selector) {
- return selector.replace(colonHostContextRe, polyfillHostContext).replace(colonHostRe, polyfillHost);
- },
- propertiesFromRule: function(rule) {
- var cssText = rule.style.cssText;
- if (rule.style.content && !rule.style.content.match(/['"]+|attr/)) {
- cssText = cssText.replace(/content:[^;]*;/g, "content: '" + rule.style.content + "';");
- }
- var style = rule.style;
- for (var i in style) {
- if (style[i] === "initial") {
- cssText += i + ": initial; ";
- }
- }
- return cssText;
- },
- replaceTextInStyles: function(styles, action) {
- if (styles && action) {
- if (!(styles instanceof Array)) {
- styles = [ styles ];
- }
- Array.prototype.forEach.call(styles, function(s) {
- s.textContent = action.call(this, s.textContent);
- }, this);
- }
- },
- addCssToDocument: function(cssText, name) {
- if (cssText.match("@import")) {
- addOwnSheet(cssText, name);
- } else {
- addCssToDocument(cssText);
- }
- }
- };
- var selectorRe = /([^{]*)({[\s\S]*?})/gim, cssCommentRe = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim, cssCommentNextSelectorRe = /\/\*\s*@polyfill ([^*]*\*+([^/*][^*]*\*+)*\/)([^{]*?){/gim, cssContentNextSelectorRe = /polyfill-next-selector[^}]*content\:[\s]*?['"](.*?)['"][;\s]*}([^{]*?){/gim, cssCommentRuleRe = /\/\*\s@polyfill-rule([^*]*\*+([^/*][^*]*\*+)*)\//gim, cssContentRuleRe = /(polyfill-rule)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim, cssCommentUnscopedRuleRe = /\/\*\s@polyfill-unscoped-rule([^*]*\*+([^/*][^*]*\*+)*)\//gim, cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim, cssPseudoRe = /::(x-[^\s{,(]*)/gim, cssPartRe = /::part\(([^)]*)\)/gim, polyfillHost = "-shadowcsshost", polyfillHostContext = "-shadowcsscontext", parenSuffix = ")(?:\\((" + "(?:\\([^)(]*\\)|[^)(]*)+?" + ")\\))?([^,{]*)";
- var cssColonHostRe = new RegExp("(" + polyfillHost + parenSuffix, "gim"), cssColonHostContextRe = new RegExp("(" + polyfillHostContext + parenSuffix, "gim"), selectorReSuffix = "([>\\s~+[.,{:][\\s\\S]*)?$", colonHostRe = /\:host/gim, colonHostContextRe = /\:host-context/gim, polyfillHostNoCombinator = polyfillHost + "-no-combinator", polyfillHostRe = new RegExp(polyfillHost, "gim"), polyfillHostContextRe = new RegExp(polyfillHostContext, "gim"), shadowDOMSelectorsRe = [ />>>/g, /::shadow/g, /::content/g, /\/deep\//g, /\/shadow\//g, /\/shadow-deep\//g, /\^\^/g, /\^/g ];
- function stylesToCssText(styles, preserveComments) {
- var cssText = "";
- Array.prototype.forEach.call(styles, function(s) {
- cssText += s.textContent + "\n\n";
- });
- if (!preserveComments) {
- cssText = cssText.replace(cssCommentRe, "");
- }
- return cssText;
- }
- function cssTextToStyle(cssText) {
- var style = document.createElement("style");
- style.textContent = cssText;
- return style;
- }
- function cssToRules(cssText) {
- var style = cssTextToStyle(cssText);
- document.head.appendChild(style);
- var rules = [];
- if (style.sheet) {
- try {
- rules = style.sheet.cssRules;
- } catch (e) {}
- } else {
- console.warn("sheet not found", style);
- }
- style.parentNode.removeChild(style);
- return rules;
- }
- var frame = document.createElement("iframe");
- frame.style.display = "none";
- function initFrame() {
- frame.initialized = true;
- document.body.appendChild(frame);
- var doc = frame.contentDocument;
- var base = doc.createElement("base");
- base.href = document.baseURI;
- doc.head.appendChild(base);
- }
- function inFrame(fn) {
- if (!frame.initialized) {
- initFrame();
- }
- document.body.appendChild(frame);
- fn(frame.contentDocument);
- document.body.removeChild(frame);
- }
- var isChrome = navigator.userAgent.match("Chrome");
- function withCssRules(cssText, callback) {
- if (!callback) {
- return;
- }
- var rules;
- if (cssText.match("@import") && isChrome) {
- var style = cssTextToStyle(cssText);
- inFrame(function(doc) {
- doc.head.appendChild(style.impl);
- rules = Array.prototype.slice.call(style.sheet.cssRules, 0);
- callback(rules);
- });
- } else {
- rules = cssToRules(cssText);
- callback(rules);
- }
- }
- function rulesToCss(cssRules) {
- for (var i = 0, css = []; i < cssRules.length; i++) {
- css.push(cssRules[i].cssText);
- }
- return css.join("\n\n");
- }
- function addCssToDocument(cssText) {
- if (cssText) {
- getSheet().appendChild(document.createTextNode(cssText));
- }
- }
- function addOwnSheet(cssText, name) {
- var style = cssTextToStyle(cssText);
- style.setAttribute(name, "");
- style.setAttribute(SHIMMED_ATTRIBUTE, "");
- document.head.appendChild(style);
- }
- var SHIM_ATTRIBUTE = "shim-shadowdom";
- var SHIMMED_ATTRIBUTE = "shim-shadowdom-css";
- var NO_SHIM_ATTRIBUTE = "no-shim";
- var sheet;
- function getSheet() {
- if (!sheet) {
- sheet = document.createElement("style");
- sheet.setAttribute(SHIMMED_ATTRIBUTE, "");
- sheet[SHIMMED_ATTRIBUTE] = true;
- }
- return sheet;
- }
- if (window.ShadowDOMPolyfill) {
- addCssToDocument("style { display: none !important; }\n");
- var doc = ShadowDOMPolyfill.wrap(document);
- var head = doc.querySelector("head");
- head.insertBefore(getSheet(), head.childNodes[0]);
- document.addEventListener("DOMContentLoaded", function() {
- var urlResolver = scope.urlResolver;
- if (window.HTMLImports && !HTMLImports.useNative) {
- var SHIM_SHEET_SELECTOR = "link[rel=stylesheet]" + "[" + SHIM_ATTRIBUTE + "]";
- var SHIM_STYLE_SELECTOR = "style[" + SHIM_ATTRIBUTE + "]";
- HTMLImports.importer.documentPreloadSelectors += "," + SHIM_SHEET_SELECTOR;
- HTMLImports.importer.importsPreloadSelectors += "," + SHIM_SHEET_SELECTOR;
- HTMLImports.parser.documentSelectors = [ HTMLImports.parser.documentSelectors, SHIM_SHEET_SELECTOR, SHIM_STYLE_SELECTOR ].join(",");
- var originalParseGeneric = HTMLImports.parser.parseGeneric;
- HTMLImports.parser.parseGeneric = function(elt) {
- if (elt[SHIMMED_ATTRIBUTE]) {
- return;
- }
- var style = elt.__importElement || elt;
- if (!style.hasAttribute(SHIM_ATTRIBUTE)) {
- originalParseGeneric.call(this, elt);
- return;
- }
- if (elt.__resource) {
- style = elt.ownerDocument.createElement("style");
- style.textContent = elt.__resource;
- }
- HTMLImports.path.resolveUrlsInStyle(style, elt.href);
- style.textContent = ShadowCSS.shimStyle(style);
- style.removeAttribute(SHIM_ATTRIBUTE, "");
- style.setAttribute(SHIMMED_ATTRIBUTE, "");
- style[SHIMMED_ATTRIBUTE] = true;
- if (style.parentNode !== head) {
- if (elt.parentNode === head) {
- head.replaceChild(style, elt);
- } else {
- this.addElementToDocument(style);
- }
- }
- style.__importParsed = true;
- this.markParsingComplete(elt);
- this.parseNext();
- };
- var hasResource = HTMLImports.parser.hasResource;
- HTMLImports.parser.hasResource = function(node) {
- if (node.localName === "link" && node.rel === "stylesheet" && node.hasAttribute(SHIM_ATTRIBUTE)) {
- return node.__resource;
- } else {
- return hasResource.call(this, node);
- }
- };
- }
- });
- }
- scope.ShadowCSS = ShadowCSS;
- })(window.WebComponents);
-}
-
-(function(scope) {
- if (window.ShadowDOMPolyfill) {
- window.wrap = ShadowDOMPolyfill.wrapIfNeeded;
- window.unwrap = ShadowDOMPolyfill.unwrapIfNeeded;
- } else {
- window.wrap = window.unwrap = function(n) {
- return n;
- };
- }
-})(window.WebComponents);
-
-(function(scope) {
- "use strict";
- var hasWorkingUrl = false;
- if (!scope.forceJURL) {
- try {
- var u = new URL("b", "http://a");
- u.pathname = "c%20d";
- hasWorkingUrl = u.href === "http://a/c%20d";
- } catch (e) {}
- }
- if (hasWorkingUrl) return;
- var relative = Object.create(null);
- relative["ftp"] = 21;
- relative["file"] = 0;
- relative["gopher"] = 70;
- relative["http"] = 80;
- relative["https"] = 443;
- relative["ws"] = 80;
- relative["wss"] = 443;
- var relativePathDotMapping = Object.create(null);
- relativePathDotMapping["%2e"] = ".";
- relativePathDotMapping[".%2e"] = "..";
- relativePathDotMapping["%2e."] = "..";
- relativePathDotMapping["%2e%2e"] = "..";
- function isRelativeScheme(scheme) {
- return relative[scheme] !== undefined;
- }
- function invalid() {
- clear.call(this);
- this._isInvalid = true;
- }
- function IDNAToASCII(h) {
- if ("" == h) {
- invalid.call(this);
- }
- return h.toLowerCase();
- }
- function percentEscape(c) {
- var unicode = c.charCodeAt(0);
- if (unicode > 32 && unicode < 127 && [ 34, 35, 60, 62, 63, 96 ].indexOf(unicode) == -1) {
- return c;
- }
- return encodeURIComponent(c);
- }
- function percentEscapeQuery(c) {
- var unicode = c.charCodeAt(0);
- if (unicode > 32 && unicode < 127 && [ 34, 35, 60, 62, 96 ].indexOf(unicode) == -1) {
- return c;
- }
- return encodeURIComponent(c);
- }
- var EOF = undefined, ALPHA = /[a-zA-Z]/, ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/;
- function parse(input, stateOverride, base) {
- function err(message) {
- errors.push(message);
- }
- var state = stateOverride || "scheme start", cursor = 0, buffer = "", seenAt = false, seenBracket = false, errors = [];
- loop: while ((input[cursor - 1] != EOF || cursor == 0) && !this._isInvalid) {
- var c = input[cursor];
- switch (state) {
- case "scheme start":
- if (c && ALPHA.test(c)) {
- buffer += c.toLowerCase();
- state = "scheme";
- } else if (!stateOverride) {
- buffer = "";
- state = "no scheme";
- continue;
- } else {
- err("Invalid scheme.");
- break loop;
- }
- break;
-
- case "scheme":
- if (c && ALPHANUMERIC.test(c)) {
- buffer += c.toLowerCase();
- } else if (":" == c) {
- this._scheme = buffer;
- buffer = "";
- if (stateOverride) {
- break loop;
- }
- if (isRelativeScheme(this._scheme)) {
- this._isRelative = true;
- }
- if ("file" == this._scheme) {
- state = "relative";
- } else if (this._isRelative && base && base._scheme == this._scheme) {
- state = "relative or authority";
- } else if (this._isRelative) {
- state = "authority first slash";
- } else {
- state = "scheme data";
- }
- } else if (!stateOverride) {
- buffer = "";
- cursor = 0;
- state = "no scheme";
- continue;
- } else if (EOF == c) {
- break loop;
- } else {
- err("Code point not allowed in scheme: " + c);
- break loop;
- }
- break;
-
- case "scheme data":
- if ("?" == c) {
- this._query = "?";
- state = "query";
- } else if ("#" == c) {
- this._fragment = "#";
- state = "fragment";
- } else {
- if (EOF != c && " " != c && "\n" != c && "\r" != c) {
- this._schemeData += percentEscape(c);
- }
- }
- break;
-
- case "no scheme":
- if (!base || !isRelativeScheme(base._scheme)) {
- err("Missing scheme.");
- invalid.call(this);
- } else {
- state = "relative";
- continue;
- }
- break;
-
- case "relative or authority":
- if ("/" == c && "/" == input[cursor + 1]) {
- state = "authority ignore slashes";
- } else {
- err("Expected /, got: " + c);
- state = "relative";
- continue;
- }
- break;
-
- case "relative":
- this._isRelative = true;
- if ("file" != this._scheme) this._scheme = base._scheme;
- if (EOF == c) {
- this._host = base._host;
- this._port = base._port;
- this._path = base._path.slice();
- this._query = base._query;
- this._username = base._username;
- this._password = base._password;
- break loop;
- } else if ("/" == c || "\\" == c) {
- if ("\\" == c) err("\\ is an invalid code point.");
- state = "relative slash";
- } else if ("?" == c) {
- this._host = base._host;
- this._port = base._port;
- this._path = base._path.slice();
- this._query = "?";
- this._username = base._username;
- this._password = base._password;
- state = "query";
- } else if ("#" == c) {
- this._host = base._host;
- this._port = base._port;
- this._path = base._path.slice();
- this._query = base._query;
- this._fragment = "#";
- this._username = base._username;
- this._password = base._password;
- state = "fragment";
- } else {
- var nextC = input[cursor + 1];
- var nextNextC = input[cursor + 2];
- if ("file" != this._scheme || !ALPHA.test(c) || nextC != ":" && nextC != "|" || EOF != nextNextC && "/" != nextNextC && "\\" != nextNextC && "?" != nextNextC && "#" != nextNextC) {
- this._host = base._host;
- this._port = base._port;
- this._username = base._username;
- this._password = base._password;
- this._path = base._path.slice();
- this._path.pop();
- }
- state = "relative path";
- continue;
- }
- break;
-
- case "relative slash":
- if ("/" == c || "\\" == c) {
- if ("\\" == c) {
- err("\\ is an invalid code point.");
- }
- if ("file" == this._scheme) {
- state = "file host";
- } else {
- state = "authority ignore slashes";
- }
- } else {
- if ("file" != this._scheme) {
- this._host = base._host;
- this._port = base._port;
- this._username = base._username;
- this._password = base._password;
- }
- state = "relative path";
- continue;
- }
- break;
-
- case "authority first slash":
- if ("/" == c) {
- state = "authority second slash";
- } else {
- err("Expected '/', got: " + c);
- state = "authority ignore slashes";
- continue;
- }
- break;
-
- case "authority second slash":
- state = "authority ignore slashes";
- if ("/" != c) {
- err("Expected '/', got: " + c);
- continue;
- }
- break;
-
- case "authority ignore slashes":
- if ("/" != c && "\\" != c) {
- state = "authority";
- continue;
- } else {
- err("Expected authority, got: " + c);
- }
- break;
-
- case "authority":
- if ("@" == c) {
- if (seenAt) {
- err("@ already seen.");
- buffer += "%40";
- }
- seenAt = true;
- for (var i = 0; i < buffer.length; i++) {
- var cp = buffer[i];
- if (" " == cp || "\n" == cp || "\r" == cp) {
- err("Invalid whitespace in authority.");
- continue;
- }
- if (":" == cp && null === this._password) {
- this._password = "";
- continue;
- }
- var tempC = percentEscape(cp);
- null !== this._password ? this._password += tempC : this._username += tempC;
- }
- buffer = "";
- } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c) {
- cursor -= buffer.length;
- buffer = "";
- state = "host";
- continue;
- } else {
- buffer += c;
- }
- break;
-
- case "file host":
- if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c) {
- if (buffer.length == 2 && ALPHA.test(buffer[0]) && (buffer[1] == ":" || buffer[1] == "|")) {
- state = "relative path";
- } else if (buffer.length == 0) {
- state = "relative path start";
- } else {
- this._host = IDNAToASCII.call(this, buffer);
- buffer = "";
- state = "relative path start";
- }
- continue;
- } else if (" " == c || "\n" == c || "\r" == c) {
- err("Invalid whitespace in file host.");
- } else {
- buffer += c;
- }
- break;
-
- case "host":
- case "hostname":
- if (":" == c && !seenBracket) {
- this._host = IDNAToASCII.call(this, buffer);
- buffer = "";
- state = "port";
- if ("hostname" == stateOverride) {
- break loop;
- }
- } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c) {
- this._host = IDNAToASCII.call(this, buffer);
- buffer = "";
- state = "relative path start";
- if (stateOverride) {
- break loop;
- }
- continue;
- } else if (" " != c && "\n" != c && "\r" != c) {
- if ("[" == c) {
- seenBracket = true;
- } else if ("]" == c) {
- seenBracket = false;
- }
- buffer += c;
- } else {
- err("Invalid code point in host/hostname: " + c);
- }
- break;
-
- case "port":
- if (/[0-9]/.test(c)) {
- buffer += c;
- } else if (EOF == c || "/" == c || "\\" == c || "?" == c || "#" == c || stateOverride) {
- if ("" != buffer) {
- var temp = parseInt(buffer, 10);
- if (temp != relative[this._scheme]) {
- this._port = temp + "";
- }
- buffer = "";
- }
- if (stateOverride) {
- break loop;
- }
- state = "relative path start";
- continue;
- } else if (" " == c || "\n" == c || "\r" == c) {
- err("Invalid code point in port: " + c);
- } else {
- invalid.call(this);
- }
- break;
-
- case "relative path start":
- if ("\\" == c) err("'\\' not allowed in path.");
- state = "relative path";
- if ("/" != c && "\\" != c) {
- continue;
- }
- break;
-
- case "relative path":
- if (EOF == c || "/" == c || "\\" == c || !stateOverride && ("?" == c || "#" == c)) {
- if ("\\" == c) {
- err("\\ not allowed in relative path.");
- }
- var tmp;
- if (tmp = relativePathDotMapping[buffer.toLowerCase()]) {
- buffer = tmp;
- }
- if (".." == buffer) {
- this._path.pop();
- if ("/" != c && "\\" != c) {
- this._path.push("");
- }
- } else if ("." == buffer && "/" != c && "\\" != c) {
- this._path.push("");
- } else if ("." != buffer) {
- if ("file" == this._scheme && this._path.length == 0 && buffer.length == 2 && ALPHA.test(buffer[0]) && buffer[1] == "|") {
- buffer = buffer[0] + ":";
- }
- this._path.push(buffer);
- }
- buffer = "";
- if ("?" == c) {
- this._query = "?";
- state = "query";
- } else if ("#" == c) {
- this._fragment = "#";
- state = "fragment";
- }
- } else if (" " != c && "\n" != c && "\r" != c) {
- buffer += percentEscape(c);
- }
- break;
-
- case "query":
- if (!stateOverride && "#" == c) {
- this._fragment = "#";
- state = "fragment";
- } else if (EOF != c && " " != c && "\n" != c && "\r" != c) {
- this._query += percentEscapeQuery(c);
- }
- break;
-
- case "fragment":
- if (EOF != c && " " != c && "\n" != c && "\r" != c) {
- this._fragment += c;
- }
- break;
- }
- cursor++;
- }
- }
- function clear() {
- this._scheme = "";
- this._schemeData = "";
- this._username = "";
- this._password = null;
- this._host = "";
- this._port = "";
- this._path = [];
- this._query = "";
- this._fragment = "";
- this._isInvalid = false;
- this._isRelative = false;
- }
- function jURL(url, base) {
- if (base !== undefined && !(base instanceof jURL)) base = new jURL(String(base));
- this._url = url;
- clear.call(this);
- var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, "");
- parse.call(this, input, null, base);
- }
- jURL.prototype = {
- toString: function() {
- return this.href;
- },
- get href() {
- if (this._isInvalid) return this._url;
- var authority = "";
- if ("" != this._username || null != this._password) {
- authority = this._username + (null != this._password ? ":" + this._password : "") + "@";
- }
- return this.protocol + (this._isRelative ? "//" + authority + this.host : "") + this.pathname + this._query + this._fragment;
- },
- set href(href) {
- clear.call(this);
- parse.call(this, href);
- },
- get protocol() {
- return this._scheme + ":";
- },
- set protocol(protocol) {
- if (this._isInvalid) return;
- parse.call(this, protocol + ":", "scheme start");
- },
- get host() {
- return this._isInvalid ? "" : this._port ? this._host + ":" + this._port : this._host;
- },
- set host(host) {
- if (this._isInvalid || !this._isRelative) return;
- parse.call(this, host, "host");
- },
- get hostname() {
- return this._host;
- },
- set hostname(hostname) {
- if (this._isInvalid || !this._isRelative) return;
- parse.call(this, hostname, "hostname");
- },
- get port() {
- return this._port;
- },
- set port(port) {
- if (this._isInvalid || !this._isRelative) return;
- parse.call(this, port, "port");
- },
- get pathname() {
- return this._isInvalid ? "" : this._isRelative ? "/" + this._path.join("/") : this._schemeData;
- },
- set pathname(pathname) {
- if (this._isInvalid || !this._isRelative) return;
- this._path = [];
- parse.call(this, pathname, "relative path start");
- },
- get search() {
- return this._isInvalid || !this._query || "?" == this._query ? "" : this._query;
- },
- set search(search) {
- if (this._isInvalid || !this._isRelative) return;
- this._query = "?";
- if ("?" == search[0]) search = search.slice(1);
- parse.call(this, search, "query");
- },
- get hash() {
- return this._isInvalid || !this._fragment || "#" == this._fragment ? "" : this._fragment;
- },
- set hash(hash) {
- if (this._isInvalid) return;
- this._fragment = "#";
- if ("#" == hash[0]) hash = hash.slice(1);
- parse.call(this, hash, "fragment");
- },
- get origin() {
- var host;
- if (this._isInvalid || !this._scheme) {
- return "";
- }
- switch (this._scheme) {
- case "data":
- case "file":
- case "javascript":
- case "mailto":
- return "null";
- }
- host = this.host;
- if (!host) {
- return "";
- }
- return this._scheme + "://" + host;
- }
- };
- var OriginalURL = scope.URL;
- if (OriginalURL) {
- jURL.createObjectURL = function(blob) {
- return OriginalURL.createObjectURL.apply(OriginalURL, arguments);
- };
- jURL.revokeObjectURL = function(url) {
- OriginalURL.revokeObjectURL(url);
- };
- }
- scope.URL = jURL;
-})(this);
-
-(function(global) {
- var registrationsTable = new WeakMap();
- var setImmediate;
- if (/Trident|Edge/.test(navigator.userAgent)) {
- setImmediate = setTimeout;
- } else if (window.setImmediate) {
- setImmediate = window.setImmediate;
- } else {
- var setImmediateQueue = [];
- var sentinel = String(Math.random());
- window.addEventListener("message", function(e) {
- if (e.data === sentinel) {
- var queue = setImmediateQueue;
- setImmediateQueue = [];
- queue.forEach(function(func) {
- func();
- });
- }
- });
- setImmediate = function(func) {
- setImmediateQueue.push(func);
- window.postMessage(sentinel, "*");
- };
- }
- var isScheduled = false;
- var scheduledObservers = [];
- function scheduleCallback(observer) {
- scheduledObservers.push(observer);
- if (!isScheduled) {
- isScheduled = true;
- setImmediate(dispatchCallbacks);
- }
- }
- function wrapIfNeeded(node) {
- return window.ShadowDOMPolyfill && window.ShadowDOMPolyfill.wrapIfNeeded(node) || node;
- }
- function dispatchCallbacks() {
- isScheduled = false;
- var observers = scheduledObservers;
- scheduledObservers = [];
- observers.sort(function(o1, o2) {
- return o1.uid_ - o2.uid_;
- });
- var anyNonEmpty = false;
- observers.forEach(function(observer) {
- var queue = observer.takeRecords();
- removeTransientObserversFor(observer);
- if (queue.length) {
- observer.callback_(queue, observer);
- anyNonEmpty = true;
- }
- });
- if (anyNonEmpty) dispatchCallbacks();
- }
- function removeTransientObserversFor(observer) {
- observer.nodes_.forEach(function(node) {
- var registrations = registrationsTable.get(node);
- if (!registrations) return;
- registrations.forEach(function(registration) {
- if (registration.observer === observer) registration.removeTransientObservers();
- });
- });
- }
- function forEachAncestorAndObserverEnqueueRecord(target, callback) {
- for (var node = target; node; node = node.parentNode) {
- var registrations = registrationsTable.get(node);
- if (registrations) {
- for (var j = 0; j < registrations.length; j++) {
- var registration = registrations[j];
- var options = registration.options;
- if (node !== target && !options.subtree) continue;
- var record = callback(options);
- if (record) registration.enqueue(record);
- }
- }
- }
- }
- var uidCounter = 0;
- function JsMutationObserver(callback) {
- this.callback_ = callback;
- this.nodes_ = [];
- this.records_ = [];
- this.uid_ = ++uidCounter;
- }
- JsMutationObserver.prototype = {
- observe: function(target, options) {
- target = wrapIfNeeded(target);
- if (!options.childList && !options.attributes && !options.characterData || options.attributeOldValue && !options.attributes || options.attributeFilter && options.attributeFilter.length && !options.attributes || options.characterDataOldValue && !options.characterData) {
- throw new SyntaxError();
- }
- var registrations = registrationsTable.get(target);
- if (!registrations) registrationsTable.set(target, registrations = []);
- var registration;
- for (var i = 0; i < registrations.length; i++) {
- if (registrations[i].observer === this) {
- registration = registrations[i];
- registration.removeListeners();
- registration.options = options;
- break;
- }
- }
- if (!registration) {
- registration = new Registration(this, target, options);
- registrations.push(registration);
- this.nodes_.push(target);
- }
- registration.addListeners();
- },
- disconnect: function() {
- this.nodes_.forEach(function(node) {
- var registrations = registrationsTable.get(node);
- for (var i = 0; i < registrations.length; i++) {
- var registration = registrations[i];
- if (registration.observer === this) {
- registration.removeListeners();
- registrations.splice(i, 1);
- break;
- }
- }
- }, this);
- this.records_ = [];
- },
- takeRecords: function() {
- var copyOfRecords = this.records_;
- this.records_ = [];
- return copyOfRecords;
- }
- };
- function MutationRecord(type, target) {
- this.type = type;
- this.target = target;
- this.addedNodes = [];
- this.removedNodes = [];
- this.previousSibling = null;
- this.nextSibling = null;
- this.attributeName = null;
- this.attributeNamespace = null;
- this.oldValue = null;
- }
- function copyMutationRecord(original) {
- var record = new MutationRecord(original.type, original.target);
- record.addedNodes = original.addedNodes.slice();
- record.removedNodes = original.removedNodes.slice();
- record.previousSibling = original.previousSibling;
- record.nextSibling = original.nextSibling;
- record.attributeName = original.attributeName;
- record.attributeNamespace = original.attributeNamespace;
- record.oldValue = original.oldValue;
- return record;
- }
- var currentRecord, recordWithOldValue;
- function getRecord(type, target) {
- return currentRecord = new MutationRecord(type, target);
- }
- function getRecordWithOldValue(oldValue) {
- if (recordWithOldValue) return recordWithOldValue;
- recordWithOldValue = copyMutationRecord(currentRecord);
- recordWithOldValue.oldValue = oldValue;
- return recordWithOldValue;
- }
- function clearRecords() {
- currentRecord = recordWithOldValue = undefined;
- }
- function recordRepresentsCurrentMutation(record) {
- return record === recordWithOldValue || record === currentRecord;
- }
- function selectRecord(lastRecord, newRecord) {
- if (lastRecord === newRecord) return lastRecord;
- if (recordWithOldValue && recordRepresentsCurrentMutation(lastRecord)) return recordWithOldValue;
- return null;
- }
- function Registration(observer, target, options) {
- this.observer = observer;
- this.target = target;
- this.options = options;
- this.transientObservedNodes = [];
- }
- Registration.prototype = {
- enqueue: function(record) {
- var records = this.observer.records_;
- var length = records.length;
- if (records.length > 0) {
- var lastRecord = records[length - 1];
- var recordToReplaceLast = selectRecord(lastRecord, record);
- if (recordToReplaceLast) {
- records[length - 1] = recordToReplaceLast;
- return;
- }
- } else {
- scheduleCallback(this.observer);
- }
- records[length] = record;
- },
- addListeners: function() {
- this.addListeners_(this.target);
- },
- addListeners_: function(node) {
- var options = this.options;
- if (options.attributes) node.addEventListener("DOMAttrModified", this, true);
- if (options.characterData) node.addEventListener("DOMCharacterDataModified", this, true);
- if (options.childList) node.addEventListener("DOMNodeInserted", this, true);
- if (options.childList || options.subtree) node.addEventListener("DOMNodeRemoved", this, true);
- },
- removeListeners: function() {
- this.removeListeners_(this.target);
- },
- removeListeners_: function(node) {
- var options = this.options;
- if (options.attributes) node.removeEventListener("DOMAttrModified", this, true);
- if (options.characterData) node.removeEventListener("DOMCharacterDataModified", this, true);
- if (options.childList) node.removeEventListener("DOMNodeInserted", this, true);
- if (options.childList || options.subtree) node.removeEventListener("DOMNodeRemoved", this, true);
- },
- addTransientObserver: function(node) {
- if (node === this.target) return;
- this.addListeners_(node);
- this.transientObservedNodes.push(node);
- var registrations = registrationsTable.get(node);
- if (!registrations) registrationsTable.set(node, registrations = []);
- registrations.push(this);
- },
- removeTransientObservers: function() {
- var transientObservedNodes = this.transientObservedNodes;
- this.transientObservedNodes = [];
- transientObservedNodes.forEach(function(node) {
- this.removeListeners_(node);
- var registrations = registrationsTable.get(node);
- for (var i = 0; i < registrations.length; i++) {
- if (registrations[i] === this) {
- registrations.splice(i, 1);
- break;
- }
- }
- }, this);
- },
- handleEvent: function(e) {
- e.stopImmediatePropagation();
- switch (e.type) {
- case "DOMAttrModified":
- var name = e.attrName;
- var namespace = e.relatedNode.namespaceURI;
- var target = e.target;
- var record = new getRecord("attributes", target);
- record.attributeName = name;
- record.attributeNamespace = namespace;
- var oldValue = e.attrChange === MutationEvent.ADDITION ? null : e.prevValue;
- forEachAncestorAndObserverEnqueueRecord(target, function(options) {
- if (!options.attributes) return;
- if (options.attributeFilter && options.attributeFilter.length && options.attributeFilter.indexOf(name) === -1 && options.attributeFilter.indexOf(namespace) === -1) {
- return;
- }
- if (options.attributeOldValue) return getRecordWithOldValue(oldValue);
- return record;
- });
- break;
-
- case "DOMCharacterDataModified":
- var target = e.target;
- var record = getRecord("characterData", target);
- var oldValue = e.prevValue;
- forEachAncestorAndObserverEnqueueRecord(target, function(options) {
- if (!options.characterData) return;
- if (options.characterDataOldValue) return getRecordWithOldValue(oldValue);
- return record;
- });
- break;
-
- case "DOMNodeRemoved":
- this.addTransientObserver(e.target);
-
- case "DOMNodeInserted":
- var changedNode = e.target;
- var addedNodes, removedNodes;
- if (e.type === "DOMNodeInserted") {
- addedNodes = [ changedNode ];
- removedNodes = [];
- } else {
- addedNodes = [];
- removedNodes = [ changedNode ];
- }
- var previousSibling = changedNode.previousSibling;
- var nextSibling = changedNode.nextSibling;
- var record = getRecord("childList", e.target.parentNode);
- record.addedNodes = addedNodes;
- record.removedNodes = removedNodes;
- record.previousSibling = previousSibling;
- record.nextSibling = nextSibling;
- forEachAncestorAndObserverEnqueueRecord(e.relatedNode, function(options) {
- if (!options.childList) return;
- return record;
- });
- }
- clearRecords();
- }
- };
- global.JsMutationObserver = JsMutationObserver;
- if (!global.MutationObserver) global.MutationObserver = JsMutationObserver;
-})(this);
-
-window.HTMLImports = window.HTMLImports || {
- flags: {}
-};
-
-(function(scope) {
- var IMPORT_LINK_TYPE = "import";
- var useNative = Boolean(IMPORT_LINK_TYPE in document.createElement("link"));
- var hasShadowDOMPolyfill = Boolean(window.ShadowDOMPolyfill);
- var wrap = function(node) {
- return hasShadowDOMPolyfill ? window.ShadowDOMPolyfill.wrapIfNeeded(node) : node;
- };
- var rootDocument = wrap(document);
- var currentScriptDescriptor = {
- get: function() {
- var script = window.HTMLImports.currentScript || document.currentScript || (document.readyState !== "complete" ? document.scripts[document.scripts.length - 1] : null);
- return wrap(script);
- },
- configurable: true
- };
- Object.defineProperty(document, "_currentScript", currentScriptDescriptor);
- Object.defineProperty(rootDocument, "_currentScript", currentScriptDescriptor);
- var isIE = /Trident/.test(navigator.userAgent);
- function whenReady(callback, doc) {
- doc = doc || rootDocument;
- whenDocumentReady(function() {
- watchImportsLoad(callback, doc);
- }, doc);
- }
- var requiredReadyState = isIE ? "complete" : "interactive";
- var READY_EVENT = "readystatechange";
- function isDocumentReady(doc) {
- return doc.readyState === "complete" || doc.readyState === requiredReadyState;
- }
- function whenDocumentReady(callback, doc) {
- if (!isDocumentReady(doc)) {
- var checkReady = function() {
- if (doc.readyState === "complete" || doc.readyState === requiredReadyState) {
- doc.removeEventListener(READY_EVENT, checkReady);
- whenDocumentReady(callback, doc);
- }
- };
- doc.addEventListener(READY_EVENT, checkReady);
- } else if (callback) {
- callback();
- }
- }
- function markTargetLoaded(event) {
- event.target.__loaded = true;
- }
- function watchImportsLoad(callback, doc) {
- var imports = doc.querySelectorAll("link[rel=import]");
- var parsedCount = 0, importCount = imports.length, newImports = [], errorImports = [];
- function checkDone() {
- if (parsedCount == importCount && callback) {
- callback({
- allImports: imports,
- loadedImports: newImports,
- errorImports: errorImports
- });
- }
- }
- function loadedImport(e) {
- markTargetLoaded(e);
- newImports.push(this);
- parsedCount++;
- checkDone();
- }
- function errorLoadingImport(e) {
- errorImports.push(this);
- parsedCount++;
- checkDone();
- }
- if (importCount) {
- for (var i = 0, imp; i < importCount && (imp = imports[i]); i++) {
- if (isImportLoaded(imp)) {
- parsedCount++;
- checkDone();
- } else {
- imp.addEventListener("load", loadedImport);
- imp.addEventListener("error", errorLoadingImport);
- }
- }
- } else {
- checkDone();
- }
- }
- function isImportLoaded(link) {
- return useNative ? link.__loaded || link.import && link.import.readyState !== "loading" : link.__importParsed;
- }
- if (useNative) {
- new MutationObserver(function(mxns) {
- for (var i = 0, l = mxns.length, m; i < l && (m = mxns[i]); i++) {
- if (m.addedNodes) {
- handleImports(m.addedNodes);
- }
- }
- }).observe(document.head, {
- childList: true
- });
- function handleImports(nodes) {
- for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) {
- if (isImport(n)) {
- handleImport(n);
- }
- }
- }
- function isImport(element) {
- return element.localName === "link" && element.rel === "import";
- }
- function handleImport(element) {
- var loaded = element.import;
- if (loaded) {
- markTargetLoaded({
- target: element
- });
- } else {
- element.addEventListener("load", markTargetLoaded);
- element.addEventListener("error", markTargetLoaded);
- }
- }
- (function() {
- if (document.readyState === "loading") {
- var imports = document.querySelectorAll("link[rel=import]");
- for (var i = 0, l = imports.length, imp; i < l && (imp = imports[i]); i++) {
- handleImport(imp);
- }
- }
- })();
- }
- whenReady(function(detail) {
- window.HTMLImports.ready = true;
- window.HTMLImports.readyTime = new Date().getTime();
- var evt = rootDocument.createEvent("CustomEvent");
- evt.initCustomEvent("HTMLImportsLoaded", true, true, detail);
- rootDocument.dispatchEvent(evt);
- });
- scope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;
- scope.useNative = useNative;
- scope.rootDocument = rootDocument;
- scope.whenReady = whenReady;
- scope.isIE = isIE;
-})(window.HTMLImports);
-
-(function(scope) {
- var modules = [];
- var addModule = function(module) {
- modules.push(module);
- };
- var initializeModules = function() {
- modules.forEach(function(module) {
- module(scope);
- });
- };
- scope.addModule = addModule;
- scope.initializeModules = initializeModules;
-})(window.HTMLImports);
-
-window.HTMLImports.addModule(function(scope) {
- var CSS_URL_REGEXP = /(url\()([^)]*)(\))/g;
- var CSS_IMPORT_REGEXP = /(@import[\s]+(?!url\())([^;]*)(;)/g;
- var path = {
- resolveUrlsInStyle: function(style, linkUrl) {
- var doc = style.ownerDocument;
- var resolver = doc.createElement("a");
- style.textContent = this.resolveUrlsInCssText(style.textContent, linkUrl, resolver);
- return style;
- },
- resolveUrlsInCssText: function(cssText, linkUrl, urlObj) {
- var r = this.replaceUrls(cssText, urlObj, linkUrl, CSS_URL_REGEXP);
- r = this.replaceUrls(r, urlObj, linkUrl, CSS_IMPORT_REGEXP);
- return r;
- },
- replaceUrls: function(text, urlObj, linkUrl, regexp) {
- return text.replace(regexp, function(m, pre, url, post) {
- var urlPath = url.replace(/["']/g, "");
- if (linkUrl) {
- urlPath = new URL(urlPath, linkUrl).href;
- }
- urlObj.href = urlPath;
- urlPath = urlObj.href;
- return pre + "'" + urlPath + "'" + post;
- });
- }
- };
- scope.path = path;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var xhr = {
- async: true,
- ok: function(request) {
- return request.status >= 200 && request.status < 300 || request.status === 304 || request.status === 0;
- },
- load: function(url, next, nextContext) {
- var request = new XMLHttpRequest();
- if (scope.flags.debug || scope.flags.bust) {
- url += "?" + Math.random();
- }
- request.open("GET", url, xhr.async);
- request.addEventListener("readystatechange", function(e) {
- if (request.readyState === 4) {
- var locationHeader = request.getResponseHeader("Location");
- var redirectedUrl = null;
- if (locationHeader) {
- var redirectedUrl = locationHeader.substr(0, 1) === "/" ? location.origin + locationHeader : locationHeader;
- }
- next.call(nextContext, !xhr.ok(request) && request, request.response || request.responseText, redirectedUrl);
- }
- });
- request.send();
- return request;
- },
- loadDocument: function(url, next, nextContext) {
- this.load(url, next, nextContext).responseType = "document";
- }
- };
- scope.xhr = xhr;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var xhr = scope.xhr;
- var flags = scope.flags;
- var Loader = function(onLoad, onComplete) {
- this.cache = {};
- this.onload = onLoad;
- this.oncomplete = onComplete;
- this.inflight = 0;
- this.pending = {};
- };
- Loader.prototype = {
- addNodes: function(nodes) {
- this.inflight += nodes.length;
- for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) {
- this.require(n);
- }
- this.checkDone();
- },
- addNode: function(node) {
- this.inflight++;
- this.require(node);
- this.checkDone();
- },
- require: function(elt) {
- var url = elt.src || elt.href;
- elt.__nodeUrl = url;
- if (!this.dedupe(url, elt)) {
- this.fetch(url, elt);
- }
- },
- dedupe: function(url, elt) {
- if (this.pending[url]) {
- this.pending[url].push(elt);
- return true;
- }
- var resource;
- if (this.cache[url]) {
- this.onload(url, elt, this.cache[url]);
- this.tail();
- return true;
- }
- this.pending[url] = [ elt ];
- return false;
- },
- fetch: function(url, elt) {
- flags.load && console.log("fetch", url, elt);
- if (!url) {
- setTimeout(function() {
- this.receive(url, elt, {
- error: "href must be specified"
- }, null);
- }.bind(this), 0);
- } else if (url.match(/^data:/)) {
- var pieces = url.split(",");
- var header = pieces[0];
- var body = pieces[1];
- if (header.indexOf(";base64") > -1) {
- body = atob(body);
- } else {
- body = decodeURIComponent(body);
- }
- setTimeout(function() {
- this.receive(url, elt, null, body);
- }.bind(this), 0);
- } else {
- var receiveXhr = function(err, resource, redirectedUrl) {
- this.receive(url, elt, err, resource, redirectedUrl);
- }.bind(this);
- xhr.load(url, receiveXhr);
- }
- },
- receive: function(url, elt, err, resource, redirectedUrl) {
- this.cache[url] = resource;
- var $p = this.pending[url];
- for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) {
- this.onload(url, p, resource, err, redirectedUrl);
- this.tail();
- }
- this.pending[url] = null;
- },
- tail: function() {
- --this.inflight;
- this.checkDone();
- },
- checkDone: function() {
- if (!this.inflight) {
- this.oncomplete();
- }
- }
- };
- scope.Loader = Loader;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var Observer = function(addCallback) {
- this.addCallback = addCallback;
- this.mo = new MutationObserver(this.handler.bind(this));
- };
- Observer.prototype = {
- handler: function(mutations) {
- for (var i = 0, l = mutations.length, m; i < l && (m = mutations[i]); i++) {
- if (m.type === "childList" && m.addedNodes.length) {
- this.addedNodes(m.addedNodes);
- }
- }
- },
- addedNodes: function(nodes) {
- if (this.addCallback) {
- this.addCallback(nodes);
- }
- for (var i = 0, l = nodes.length, n, loading; i < l && (n = nodes[i]); i++) {
- if (n.children && n.children.length) {
- this.addedNodes(n.children);
- }
- }
- },
- observe: function(root) {
- this.mo.observe(root, {
- childList: true,
- subtree: true
- });
- }
- };
- scope.Observer = Observer;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var path = scope.path;
- var rootDocument = scope.rootDocument;
- var flags = scope.flags;
- var isIE = scope.isIE;
- var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;
- var IMPORT_SELECTOR = "link[rel=" + IMPORT_LINK_TYPE + "]";
- var importParser = {
- documentSelectors: IMPORT_SELECTOR,
- importsSelectors: [ IMPORT_SELECTOR, "link[rel=stylesheet]:not([type])", "style:not([type])", "script:not([type])", 'script[type="application/javascript"]', 'script[type="text/javascript"]' ].join(","),
- map: {
- link: "parseLink",
- script: "parseScript",
- style: "parseStyle"
- },
- dynamicElements: [],
- parseNext: function() {
- var next = this.nextToParse();
- if (next) {
- this.parse(next);
- }
- },
- parse: function(elt) {
- if (this.isParsed(elt)) {
- flags.parse && console.log("[%s] is already parsed", elt.localName);
- return;
- }
- var fn = this[this.map[elt.localName]];
- if (fn) {
- this.markParsing(elt);
- fn.call(this, elt);
- }
- },
- parseDynamic: function(elt, quiet) {
- this.dynamicElements.push(elt);
- if (!quiet) {
- this.parseNext();
- }
- },
- markParsing: function(elt) {
- flags.parse && console.log("parsing", elt);
- this.parsingElement = elt;
- },
- markParsingComplete: function(elt) {
- elt.__importParsed = true;
- this.markDynamicParsingComplete(elt);
- if (elt.__importElement) {
- elt.__importElement.__importParsed = true;
- this.markDynamicParsingComplete(elt.__importElement);
- }
- this.parsingElement = null;
- flags.parse && console.log("completed", elt);
- },
- markDynamicParsingComplete: function(elt) {
- var i = this.dynamicElements.indexOf(elt);
- if (i >= 0) {
- this.dynamicElements.splice(i, 1);
- }
- },
- parseImport: function(elt) {
- elt.import = elt.__doc;
- if (window.HTMLImports.__importsParsingHook) {
- window.HTMLImports.__importsParsingHook(elt);
- }
- if (elt.import) {
- elt.import.__importParsed = true;
- }
- this.markParsingComplete(elt);
- if (elt.__resource && !elt.__error) {
- elt.dispatchEvent(new CustomEvent("load", {
- bubbles: false
- }));
- } else {
- elt.dispatchEvent(new CustomEvent("error", {
- bubbles: false
- }));
- }
- if (elt.__pending) {
- var fn;
- while (elt.__pending.length) {
- fn = elt.__pending.shift();
- if (fn) {
- fn({
- target: elt
- });
- }
- }
- }
- this.parseNext();
- },
- parseLink: function(linkElt) {
- if (nodeIsImport(linkElt)) {
- this.parseImport(linkElt);
- } else {
- linkElt.href = linkElt.href;
- this.parseGeneric(linkElt);
- }
- },
- parseStyle: function(elt) {
- var src = elt;
- elt = cloneStyle(elt);
- src.__appliedElement = elt;
- elt.__importElement = src;
- this.parseGeneric(elt);
- },
- parseGeneric: function(elt) {
- this.trackElement(elt);
- this.addElementToDocument(elt);
- },
- rootImportForElement: function(elt) {
- var n = elt;
- while (n.ownerDocument.__importLink) {
- n = n.ownerDocument.__importLink;
- }
- return n;
- },
- addElementToDocument: function(elt) {
- var port = this.rootImportForElement(elt.__importElement || elt);
- port.parentNode.insertBefore(elt, port);
- },
- trackElement: function(elt, callback) {
- var self = this;
- var done = function(e) {
- elt.removeEventListener("load", done);
- elt.removeEventListener("error", done);
- if (callback) {
- callback(e);
- }
- self.markParsingComplete(elt);
- self.parseNext();
- };
- elt.addEventListener("load", done);
- elt.addEventListener("error", done);
- if (isIE && elt.localName === "style") {
- var fakeLoad = false;
- if (elt.textContent.indexOf("@import") == -1) {
- fakeLoad = true;
- } else if (elt.sheet) {
- fakeLoad = true;
- var csr = elt.sheet.cssRules;
- var len = csr ? csr.length : 0;
- for (var i = 0, r; i < len && (r = csr[i]); i++) {
- if (r.type === CSSRule.IMPORT_RULE) {
- fakeLoad = fakeLoad && Boolean(r.styleSheet);
- }
- }
- }
- if (fakeLoad) {
- setTimeout(function() {
- elt.dispatchEvent(new CustomEvent("load", {
- bubbles: false
- }));
- });
- }
- }
- },
- parseScript: function(scriptElt) {
- var script = document.createElement("script");
- script.__importElement = scriptElt;
- script.src = scriptElt.src ? scriptElt.src : generateScriptDataUrl(scriptElt);
- scope.currentScript = scriptElt;
- this.trackElement(script, function(e) {
- if (script.parentNode) {
- script.parentNode.removeChild(script);
- }
- scope.currentScript = null;
- });
- this.addElementToDocument(script);
- },
- nextToParse: function() {
- this._mayParse = [];
- return !this.parsingElement && (this.nextToParseInDoc(rootDocument) || this.nextToParseDynamic());
- },
- nextToParseInDoc: function(doc, link) {
- if (doc && this._mayParse.indexOf(doc) < 0) {
- this._mayParse.push(doc);
- var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc));
- for (var i = 0, l = nodes.length, p = 0, n; i < l && (n = nodes[i]); i++) {
- if (!this.isParsed(n)) {
- if (this.hasResource(n)) {
- return nodeIsImport(n) ? this.nextToParseInDoc(n.__doc, n) : n;
- } else {
- return;
- }
- }
- }
- }
- return link;
- },
- nextToParseDynamic: function() {
- return this.dynamicElements[0];
- },
- parseSelectorsForNode: function(node) {
- var doc = node.ownerDocument || node;
- return doc === rootDocument ? this.documentSelectors : this.importsSelectors;
- },
- isParsed: function(node) {
- return node.__importParsed;
- },
- needsDynamicParsing: function(elt) {
- return this.dynamicElements.indexOf(elt) >= 0;
- },
- hasResource: function(node) {
- if (nodeIsImport(node) && node.__doc === undefined) {
- return false;
- }
- return true;
- }
- };
- function nodeIsImport(elt) {
- return elt.localName === "link" && elt.rel === IMPORT_LINK_TYPE;
- }
- function generateScriptDataUrl(script) {
- var scriptContent = generateScriptContent(script);
- return "data:text/javascript;charset=utf-8," + encodeURIComponent(scriptContent);
- }
- function generateScriptContent(script) {
- return script.textContent + generateSourceMapHint(script);
- }
- function generateSourceMapHint(script) {
- var owner = script.ownerDocument;
- owner.__importedScripts = owner.__importedScripts || 0;
- var moniker = script.ownerDocument.baseURI;
- var num = owner.__importedScripts ? "-" + owner.__importedScripts : "";
- owner.__importedScripts++;
- return "\n//# sourceURL=" + moniker + num + ".js\n";
- }
- function cloneStyle(style) {
- var clone = style.ownerDocument.createElement("style");
- clone.textContent = style.textContent;
- path.resolveUrlsInStyle(clone);
- return clone;
- }
- scope.parser = importParser;
- scope.IMPORT_SELECTOR = IMPORT_SELECTOR;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var flags = scope.flags;
- var IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;
- var IMPORT_SELECTOR = scope.IMPORT_SELECTOR;
- var rootDocument = scope.rootDocument;
- var Loader = scope.Loader;
- var Observer = scope.Observer;
- var parser = scope.parser;
- var importer = {
- documents: {},
- documentPreloadSelectors: IMPORT_SELECTOR,
- importsPreloadSelectors: [ IMPORT_SELECTOR ].join(","),
- loadNode: function(node) {
- importLoader.addNode(node);
- },
- loadSubtree: function(parent) {
- var nodes = this.marshalNodes(parent);
- importLoader.addNodes(nodes);
- },
- marshalNodes: function(parent) {
- return parent.querySelectorAll(this.loadSelectorsForNode(parent));
- },
- loadSelectorsForNode: function(node) {
- var doc = node.ownerDocument || node;
- return doc === rootDocument ? this.documentPreloadSelectors : this.importsPreloadSelectors;
- },
- loaded: function(url, elt, resource, err, redirectedUrl) {
- flags.load && console.log("loaded", url, elt);
- elt.__resource = resource;
- elt.__error = err;
- if (isImportLink(elt)) {
- var doc = this.documents[url];
- if (doc === undefined) {
- doc = err ? null : makeDocument(resource, redirectedUrl || url);
- if (doc) {
- doc.__importLink = elt;
- this.bootDocument(doc);
- }
- this.documents[url] = doc;
- }
- elt.__doc = doc;
- }
- parser.parseNext();
- },
- bootDocument: function(doc) {
- this.loadSubtree(doc);
- this.observer.observe(doc);
- parser.parseNext();
- },
- loadedAll: function() {
- parser.parseNext();
- }
- };
- var importLoader = new Loader(importer.loaded.bind(importer), importer.loadedAll.bind(importer));
- importer.observer = new Observer();
- function isImportLink(elt) {
- return isLinkRel(elt, IMPORT_LINK_TYPE);
- }
- function isLinkRel(elt, rel) {
- return elt.localName === "link" && elt.getAttribute("rel") === rel;
- }
- function hasBaseURIAccessor(doc) {
- return !!Object.getOwnPropertyDescriptor(doc, "baseURI");
- }
- function makeDocument(resource, url) {
- var doc = document.implementation.createHTMLDocument(IMPORT_LINK_TYPE);
- doc._URL = url;
- var base = doc.createElement("base");
- base.setAttribute("href", url);
- if (!doc.baseURI && !hasBaseURIAccessor(doc)) {
- Object.defineProperty(doc, "baseURI", {
- value: url
- });
- }
- var meta = doc.createElement("meta");
- meta.setAttribute("charset", "utf-8");
- doc.head.appendChild(meta);
- doc.head.appendChild(base);
- doc.body.innerHTML = resource;
- if (window.HTMLTemplateElement && HTMLTemplateElement.bootstrap) {
- HTMLTemplateElement.bootstrap(doc);
- }
- return doc;
- }
- if (!document.baseURI) {
- var baseURIDescriptor = {
- get: function() {
- var base = document.querySelector("base");
- return base ? base.href : window.location.href;
- },
- configurable: true
- };
- Object.defineProperty(document, "baseURI", baseURIDescriptor);
- Object.defineProperty(rootDocument, "baseURI", baseURIDescriptor);
- }
- scope.importer = importer;
- scope.importLoader = importLoader;
-});
-
-window.HTMLImports.addModule(function(scope) {
- var parser = scope.parser;
- var importer = scope.importer;
- var dynamic = {
- added: function(nodes) {
- var owner, parsed, loading;
- for (var i = 0, l = nodes.length, n; i < l && (n = nodes[i]); i++) {
- if (!owner) {
- owner = n.ownerDocument;
- parsed = parser.isParsed(owner);
- }
- loading = this.shouldLoadNode(n);
- if (loading) {
- importer.loadNode(n);
- }
- if (this.shouldParseNode(n) && parsed) {
- parser.parseDynamic(n, loading);
- }
- }
- },
- shouldLoadNode: function(node) {
- return node.nodeType === 1 && matches.call(node, importer.loadSelectorsForNode(node));
- },
- shouldParseNode: function(node) {
- return node.nodeType === 1 && matches.call(node, parser.parseSelectorsForNode(node));
- }
- };
- importer.observer.addCallback = dynamic.added.bind(dynamic);
- var matches = HTMLElement.prototype.matches || HTMLElement.prototype.matchesSelector || HTMLElement.prototype.webkitMatchesSelector || HTMLElement.prototype.mozMatchesSelector || HTMLElement.prototype.msMatchesSelector;
-});
-
-(function(scope) {
- var initializeModules = scope.initializeModules;
- var isIE = scope.isIE;
- if (scope.useNative) {
- return;
- }
- if (isIE && typeof window.CustomEvent !== "function") {
- window.CustomEvent = function(inType, params) {
- params = params || {};
- var e = document.createEvent("CustomEvent");
- e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable), params.detail);
- e.preventDefault = function() {
- Object.defineProperty(this, "defaultPrevented", {
- get: function() {
- return true;
- }
- });
- };
- return e;
- };
- window.CustomEvent.prototype = window.Event.prototype;
- }
- initializeModules();
- var rootDocument = scope.rootDocument;
- function bootstrap() {
- window.HTMLImports.importer.bootDocument(rootDocument);
- }
- if (document.readyState === "complete" || document.readyState === "interactive" && !window.attachEvent) {
- bootstrap();
- } else {
- document.addEventListener("DOMContentLoaded", bootstrap);
- }
-})(window.HTMLImports);
-
-window.CustomElements = window.CustomElements || {
- flags: {}
-};
-
-(function(scope) {
- var flags = scope.flags;
- var modules = [];
- var addModule = function(module) {
- modules.push(module);
- };
- var initializeModules = function() {
- modules.forEach(function(module) {
- module(scope);
- });
- };
- scope.addModule = addModule;
- scope.initializeModules = initializeModules;
- scope.hasNative = Boolean(document.registerElement);
- scope.useNative = !flags.register && scope.hasNative && !window.ShadowDOMPolyfill && (!window.HTMLImports || window.HTMLImports.useNative);
-})(window.CustomElements);
-
-window.CustomElements.addModule(function(scope) {
- var IMPORT_LINK_TYPE = window.HTMLImports ? window.HTMLImports.IMPORT_LINK_TYPE : "none";
- function forSubtree(node, cb) {
- findAllElements(node, function(e) {
- if (cb(e)) {
- return true;
- }
- forRoots(e, cb);
- });
- forRoots(node, cb);
- }
- function findAllElements(node, find, data) {
- var e = node.firstElementChild;
- if (!e) {
- e = node.firstChild;
- while (e && e.nodeType !== Node.ELEMENT_NODE) {
- e = e.nextSibling;
- }
- }
- while (e) {
- if (find(e, data) !== true) {
- findAllElements(e, find, data);
- }
- e = e.nextElementSibling;
- }
- return null;
- }
- function forRoots(node, cb) {
- var root = node.shadowRoot;
- while (root) {
- forSubtree(root, cb);
- root = root.olderShadowRoot;
- }
- }
- function forDocumentTree(doc, cb) {
- _forDocumentTree(doc, cb, []);
- }
- function _forDocumentTree(doc, cb, processingDocuments) {
- doc = window.wrap(doc);
- if (processingDocuments.indexOf(doc) >= 0) {
- return;
- }
- processingDocuments.push(doc);
- var imports = doc.querySelectorAll("link[rel=" + IMPORT_LINK_TYPE + "]");
- for (var i = 0, l = imports.length, n; i < l && (n = imports[i]); i++) {
- if (n.import) {
- _forDocumentTree(n.import, cb, processingDocuments);
- }
- }
- cb(doc);
- }
- scope.forDocumentTree = forDocumentTree;
- scope.forSubtree = forSubtree;
-});
-
-window.CustomElements.addModule(function(scope) {
- var flags = scope.flags;
- var forSubtree = scope.forSubtree;
- var forDocumentTree = scope.forDocumentTree;
- function addedNode(node, isAttached) {
- return added(node, isAttached) || addedSubtree(node, isAttached);
- }
- function added(node, isAttached) {
- if (scope.upgrade(node, isAttached)) {
- return true;
- }
- if (isAttached) {
- attached(node);
- }
- }
- function addedSubtree(node, isAttached) {
- forSubtree(node, function(e) {
- if (added(e, isAttached)) {
- return true;
- }
- });
- }
- var hasPolyfillMutations = !window.MutationObserver || window.MutationObserver === window.JsMutationObserver;
- scope.hasPolyfillMutations = hasPolyfillMutations;
- var isPendingMutations = false;
- var pendingMutations = [];
- function deferMutation(fn) {
- pendingMutations.push(fn);
- if (!isPendingMutations) {
- isPendingMutations = true;
- setTimeout(takeMutations);
- }
- }
- function takeMutations() {
- isPendingMutations = false;
- var $p = pendingMutations;
- for (var i = 0, l = $p.length, p; i < l && (p = $p[i]); i++) {
- p();
- }
- pendingMutations = [];
- }
- function attached(element) {
- if (hasPolyfillMutations) {
- deferMutation(function() {
- _attached(element);
- });
- } else {
- _attached(element);
- }
- }
- function _attached(element) {
- if (element.__upgraded__ && !element.__attached) {
- element.__attached = true;
- if (element.attachedCallback) {
- element.attachedCallback();
- }
- }
- }
- function detachedNode(node) {
- detached(node);
- forSubtree(node, function(e) {
- detached(e);
- });
- }
- function detached(element) {
- if (hasPolyfillMutations) {
- deferMutation(function() {
- _detached(element);
- });
- } else {
- _detached(element);
- }
- }
- function _detached(element) {
- if (element.__upgraded__ && element.__attached) {
- element.__attached = false;
- if (element.detachedCallback) {
- element.detachedCallback();
- }
- }
- }
- function inDocument(element) {
- var p = element;
- var doc = window.wrap(document);
- while (p) {
- if (p == doc) {
- return true;
- }
- p = p.parentNode || p.nodeType === Node.DOCUMENT_FRAGMENT_NODE && p.host;
- }
- }
- function watchShadow(node) {
- if (node.shadowRoot && !node.shadowRoot.__watched) {
- flags.dom && console.log("watching shadow-root for: ", node.localName);
- var root = node.shadowRoot;
- while (root) {
- observe(root);
- root = root.olderShadowRoot;
- }
- }
- }
- function handler(root, mutations) {
- if (flags.dom) {
- var mx = mutations[0];
- if (mx && mx.type === "childList" && mx.addedNodes) {
- if (mx.addedNodes) {
- var d = mx.addedNodes[0];
- while (d && d !== document && !d.host) {
- d = d.parentNode;
- }
- var u = d && (d.URL || d._URL || d.host && d.host.localName) || "";
- u = u.split("/?").shift().split("/").pop();
- }
- }
- console.group("mutations (%d) [%s]", mutations.length, u || "");
- }
- var isAttached = inDocument(root);
- mutations.forEach(function(mx) {
- if (mx.type === "childList") {
- forEach(mx.addedNodes, function(n) {
- if (!n.localName) {
- return;
- }
- addedNode(n, isAttached);
- });
- forEach(mx.removedNodes, function(n) {
- if (!n.localName) {
- return;
- }
- detachedNode(n);
- });
- }
- });
- flags.dom && console.groupEnd();
- }
- function takeRecords(node) {
- node = window.wrap(node);
- if (!node) {
- node = window.wrap(document);
- }
- while (node.parentNode) {
- node = node.parentNode;
- }
- var observer = node.__observer;
- if (observer) {
- handler(node, observer.takeRecords());
- takeMutations();
- }
- }
- var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);
- function observe(inRoot) {
- if (inRoot.__observer) {
- return;
- }
- var observer = new MutationObserver(handler.bind(this, inRoot));
- observer.observe(inRoot, {
- childList: true,
- subtree: true
- });
- inRoot.__observer = observer;
- }
- function upgradeDocument(doc) {
- doc = window.wrap(doc);
- flags.dom && console.group("upgradeDocument: ", doc.baseURI.split("/").pop());
- var isMainDocument = doc === window.wrap(document);
- addedNode(doc, isMainDocument);
- observe(doc);
- flags.dom && console.groupEnd();
- }
- function upgradeDocumentTree(doc) {
- forDocumentTree(doc, upgradeDocument);
- }
- var originalCreateShadowRoot = Element.prototype.createShadowRoot;
- if (originalCreateShadowRoot) {
- Element.prototype.createShadowRoot = function() {
- var root = originalCreateShadowRoot.call(this);
- window.CustomElements.watchShadow(this);
- return root;
- };
- }
- scope.watchShadow = watchShadow;
- scope.upgradeDocumentTree = upgradeDocumentTree;
- scope.upgradeDocument = upgradeDocument;
- scope.upgradeSubtree = addedSubtree;
- scope.upgradeAll = addedNode;
- scope.attached = attached;
- scope.takeRecords = takeRecords;
-});
-
-window.CustomElements.addModule(function(scope) {
- var flags = scope.flags;
- function upgrade(node, isAttached) {
- if (!node.__upgraded__ && node.nodeType === Node.ELEMENT_NODE) {
- var is = node.getAttribute("is");
- var definition = scope.getRegisteredDefinition(node.localName) || scope.getRegisteredDefinition(is);
- if (definition) {
- if (is && definition.tag == node.localName || !is && !definition.extends) {
- return upgradeWithDefinition(node, definition, isAttached);
- }
- }
- }
- }
- function upgradeWithDefinition(element, definition, isAttached) {
- flags.upgrade && console.group("upgrade:", element.localName);
- if (definition.is) {
- element.setAttribute("is", definition.is);
- }
- implementPrototype(element, definition);
- element.__upgraded__ = true;
- created(element);
- if (isAttached) {
- scope.attached(element);
- }
- scope.upgradeSubtree(element, isAttached);
- flags.upgrade && console.groupEnd();
- return element;
- }
- function implementPrototype(element, definition) {
- if (Object.__proto__) {
- element.__proto__ = definition.prototype;
- } else {
- customMixin(element, definition.prototype, definition.native);
- element.__proto__ = definition.prototype;
- }
- }
- function customMixin(inTarget, inSrc, inNative) {
- var used = {};
- var p = inSrc;
- while (p !== inNative && p !== HTMLElement.prototype) {
- var keys = Object.getOwnPropertyNames(p);
- for (var i = 0, k; k = keys[i]; i++) {
- if (!used[k]) {
- Object.defineProperty(inTarget, k, Object.getOwnPropertyDescriptor(p, k));
- used[k] = 1;
- }
- }
- p = Object.getPrototypeOf(p);
- }
- }
- function created(element) {
- if (element.createdCallback) {
- element.createdCallback();
- }
- }
- scope.upgrade = upgrade;
- scope.upgradeWithDefinition = upgradeWithDefinition;
- scope.implementPrototype = implementPrototype;
-});
-
-window.CustomElements.addModule(function(scope) {
- var isIE11OrOlder = scope.isIE11OrOlder;
- var upgradeDocumentTree = scope.upgradeDocumentTree;
- var upgradeAll = scope.upgradeAll;
- var upgradeWithDefinition = scope.upgradeWithDefinition;
- var implementPrototype = scope.implementPrototype;
- var useNative = scope.useNative;
- function register(name, options) {
- var definition = options || {};
- if (!name) {
- throw new Error("document.registerElement: first argument `+"`"+`name`+"`"+` must not be empty");
- }
- if (name.indexOf("-") < 0) {
- throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '" + String(name) + "'.");
- }
- if (isReservedTag(name)) {
- throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '" + String(name) + "'. The type name is invalid.");
- }
- if (getRegisteredDefinition(name)) {
- throw new Error("DuplicateDefinitionError: a type with name '" + String(name) + "' is already registered");
- }
- if (!definition.prototype) {
- definition.prototype = Object.create(HTMLElement.prototype);
- }
- definition.__name = name.toLowerCase();
- definition.lifecycle = definition.lifecycle || {};
- definition.ancestry = ancestry(definition.extends);
- resolveTagName(definition);
- resolvePrototypeChain(definition);
- overrideAttributeApi(definition.prototype);
- registerDefinition(definition.__name, definition);
- definition.ctor = generateConstructor(definition);
- definition.ctor.prototype = definition.prototype;
- definition.prototype.constructor = definition.ctor;
- if (scope.ready) {
- upgradeDocumentTree(document);
- }
- return definition.ctor;
- }
- function overrideAttributeApi(prototype) {
- if (prototype.setAttribute._polyfilled) {
- return;
- }
- var setAttribute = prototype.setAttribute;
- prototype.setAttribute = function(name, value) {
- changeAttribute.call(this, name, value, setAttribute);
- };
- var removeAttribute = prototype.removeAttribute;
- prototype.removeAttribute = function(name) {
- changeAttribute.call(this, name, null, removeAttribute);
- };
- prototype.setAttribute._polyfilled = true;
- }
- function changeAttribute(name, value, operation) {
- name = name.toLowerCase();
- var oldValue = this.getAttribute(name);
- operation.apply(this, arguments);
- var newValue = this.getAttribute(name);
- if (this.attributeChangedCallback && newValue !== oldValue) {
- this.attributeChangedCallback(name, oldValue, newValue);
- }
- }
- function isReservedTag(name) {
- for (var i = 0; i < reservedTagList.length; i++) {
- if (name === reservedTagList[i]) {
- return true;
- }
- }
- }
- var reservedTagList = [ "annotation-xml", "color-profile", "font-face", "font-face-src", "font-face-uri", "font-face-format", "font-face-name", "missing-glyph" ];
- function ancestry(extnds) {
- var extendee = getRegisteredDefinition(extnds);
- if (extendee) {
- return ancestry(extendee.extends).concat([ extendee ]);
- }
- return [];
- }
- function resolveTagName(definition) {
- var baseTag = definition.extends;
- for (var i = 0, a; a = definition.ancestry[i]; i++) {
- baseTag = a.is && a.tag;
- }
- definition.tag = baseTag || definition.__name;
- if (baseTag) {
- definition.is = definition.__name;
- }
- }
- function resolvePrototypeChain(definition) {
- if (!Object.__proto__) {
- var nativePrototype = HTMLElement.prototype;
- if (definition.is) {
- var inst = document.createElement(definition.tag);
- nativePrototype = Object.getPrototypeOf(inst);
- }
- var proto = definition.prototype, ancestor;
- var foundPrototype = false;
- while (proto) {
- if (proto == nativePrototype) {
- foundPrototype = true;
- }
- ancestor = Object.getPrototypeOf(proto);
- if (ancestor) {
- proto.__proto__ = ancestor;
- }
- proto = ancestor;
- }
- if (!foundPrototype) {
- console.warn(definition.tag + " prototype not found in prototype chain for " + definition.is);
- }
- definition.native = nativePrototype;
- }
- }
- function instantiate(definition) {
- return upgradeWithDefinition(domCreateElement(definition.tag), definition);
- }
- var registry = {};
- function getRegisteredDefinition(name) {
- if (name) {
- return registry[name.toLowerCase()];
- }
- }
- function registerDefinition(name, definition) {
- registry[name] = definition;
- }
- function generateConstructor(definition) {
- return function() {
- return instantiate(definition);
- };
- }
- var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
- function createElementNS(namespace, tag, typeExtension) {
- if (namespace === HTML_NAMESPACE) {
- return createElement(tag, typeExtension);
- } else {
- return domCreateElementNS(namespace, tag);
- }
- }
- function createElement(tag, typeExtension) {
- if (tag) {
- tag = tag.toLowerCase();
- }
- if (typeExtension) {
- typeExtension = typeExtension.toLowerCase();
- }
- var definition = getRegisteredDefinition(typeExtension || tag);
- if (definition) {
- if (tag == definition.tag && typeExtension == definition.is) {
- return new definition.ctor();
- }
- if (!typeExtension && !definition.is) {
- return new definition.ctor();
- }
- }
- var element;
- if (typeExtension) {
- element = createElement(tag);
- element.setAttribute("is", typeExtension);
- return element;
- }
- element = domCreateElement(tag);
- if (tag.indexOf("-") >= 0) {
- implementPrototype(element, HTMLElement);
- }
- return element;
- }
- var domCreateElement = document.createElement.bind(document);
- var domCreateElementNS = document.createElementNS.bind(document);
- var isInstance;
- if (!Object.__proto__ && !useNative) {
- isInstance = function(obj, ctor) {
- if (obj instanceof ctor) {
- return true;
- }
- var p = obj;
- while (p) {
- if (p === ctor.prototype) {
- return true;
- }
- p = p.__proto__;
- }
- return false;
- };
- } else {
- isInstance = function(obj, base) {
- return obj instanceof base;
- };
- }
- function wrapDomMethodToForceUpgrade(obj, methodName) {
- var orig = obj[methodName];
- obj[methodName] = function() {
- var n = orig.apply(this, arguments);
- upgradeAll(n);
- return n;
- };
- }
- wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode");
- wrapDomMethodToForceUpgrade(document, "importNode");
- if (isIE11OrOlder) {
- (function() {
- var importNode = document.importNode;
- document.importNode = function() {
- var n = importNode.apply(document, arguments);
- if (n.nodeType == n.DOCUMENT_FRAGMENT_NODE) {
- var f = document.createDocumentFragment();
- f.appendChild(n);
- return f;
- } else {
- return n;
- }
- };
- })();
- }
- document.registerElement = register;
- document.createElement = createElement;
- document.createElementNS = createElementNS;
- scope.registry = registry;
- scope.instanceof = isInstance;
- scope.reservedTagList = reservedTagList;
- scope.getRegisteredDefinition = getRegisteredDefinition;
- document.register = document.registerElement;
-});
-
-(function(scope) {
- var useNative = scope.useNative;
- var initializeModules = scope.initializeModules;
- var isIE11OrOlder = /Trident/.test(navigator.userAgent);
- if (useNative) {
- var nop = function() {};
- scope.watchShadow = nop;
- scope.upgrade = nop;
- scope.upgradeAll = nop;
- scope.upgradeDocumentTree = nop;
- scope.upgradeSubtree = nop;
- scope.takeRecords = nop;
- scope.instanceof = function(obj, base) {
- return obj instanceof base;
- };
- } else {
- initializeModules();
- }
- var upgradeDocumentTree = scope.upgradeDocumentTree;
- var upgradeDocument = scope.upgradeDocument;
- if (!window.wrap) {
- if (window.ShadowDOMPolyfill) {
- window.wrap = window.ShadowDOMPolyfill.wrapIfNeeded;
- window.unwrap = window.ShadowDOMPolyfill.unwrapIfNeeded;
- } else {
- window.wrap = window.unwrap = function(node) {
- return node;
- };
- }
- }
- if (window.HTMLImports) {
- window.HTMLImports.__importsParsingHook = function(elt) {
- if (elt.import) {
- upgradeDocument(wrap(elt.import));
- }
- };
- }
- function bootstrap() {
- upgradeDocumentTree(window.wrap(document));
- window.CustomElements.ready = true;
- requestAnimationFrame(function() {
- setTimeout(function() {
- window.CustomElements.readyTime = Date.now();
- if (window.HTMLImports) {
- window.CustomElements.elapsed = window.CustomElements.readyTime - window.HTMLImports.readyTime;
- }
- document.dispatchEvent(new CustomEvent("WebComponentsReady", {
- bubbles: true
- }));
- });
- });
- }
- if (isIE11OrOlder && typeof window.CustomEvent !== "function") {
- window.CustomEvent = function(inType, params) {
- params = params || {};
- var e = document.createEvent("CustomEvent");
- e.initCustomEvent(inType, Boolean(params.bubbles), Boolean(params.cancelable), params.detail);
- e.preventDefault = function() {
- Object.defineProperty(this, "defaultPrevented", {
- get: function() {
- return true;
- }
- });
- };
- return e;
- };
- window.CustomEvent.prototype = window.Event.prototype;
- }
- if (document.readyState === "complete" || scope.flags.eager) {
- bootstrap();
- } else if (document.readyState === "interactive" && !window.attachEvent && (!window.HTMLImports || window.HTMLImports.ready)) {
- bootstrap();
- } else {
- var loadEvent = window.HTMLImports && !window.HTMLImports.ready ? "HTMLImportsLoaded" : "DOMContentLoaded";
- window.addEventListener(loadEvent, bootstrap);
- }
- scope.isIE11OrOlder = isIE11OrOlder;
-})(window.CustomElements);
-
-(function(scope) {
- if (!Function.prototype.bind) {
- Function.prototype.bind = function(scope) {
- var self = this;
- var args = Array.prototype.slice.call(arguments, 1);
- return function() {
- var args2 = args.slice();
- args2.push.apply(args2, arguments);
- return self.apply(scope, args2);
- };
- };
- }
-})(window.WebComponents);
-
-(function(scope) {
- "use strict";
- if (!window.performance) {
- var start = Date.now();
- window.performance = {
- now: function() {
- return Date.now() - start;
- }
- };
- }
- if (!window.requestAnimationFrame) {
- window.requestAnimationFrame = function() {
- var nativeRaf = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;
- return nativeRaf ? function(callback) {
- return nativeRaf(function() {
- callback(performance.now());
- });
- } : function(callback) {
- return window.setTimeout(callback, 1e3 / 60);
- };
- }();
- }
- if (!window.cancelAnimationFrame) {
- window.cancelAnimationFrame = function() {
- return window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || function(id) {
- clearTimeout(id);
- };
- }();
- }
-})(window.WebComponents);
-
-(function(scope) {
- var 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";
- var head = document.querySelector("head");
- head.insertBefore(style, head.firstChild);
-})(window.WebComponents);
-
-(function(scope) {
- window.Platform = scope;
-})(window.WebComponents);`},
- "/bower_components/webcomponentsjs/webcomponents.min.js": {"/bower_components/webcomponentsjs/webcomponents.min.js", time.Unix(0, 1440513533117507599), false, `/**
- * @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
- */
-// @version 0.7.11
-window.WebComponents=window.WebComponents||{},function(e){var t=e.flags||{},n="webcomponents.js",r=document.querySelector('script[src*="'+n+'"]');if(!t.noOpts){if(location.search.slice(1).split("&").forEach(function(e){var n,r=e.split("=");r[0]&&(n=r[0].match(/wc-(.+)/))&&(t[n[1]]=r[1]||!0)}),r)for(var o,i=0;o=r.attributes[i];i++)"src"!==o.name&&(t[o.name]=o.value||!0);if(t.log&&t.log.split){var a=t.log.split(",");t.log={},a.forEach(function(e){t.log[e]=!0})}else t.log={}}t.shadow=t.shadow||t.shadowdom||t.polyfill,t.shadow="native"===t.shadow?!1:t.shadow||!HTMLElement.prototype.createShadowRoot,t.register&&(window.CustomElements=window.CustomElements||{flags:{}},window.CustomElements.flags.register=t.register),e.flags=t}(WebComponents),WebComponents.flags.shadow&&("undefined"==typeof WeakMap&&!function(){var e=Object.defineProperty,t=Date.now()%1e9,n=function(){this.name="__st"+(1e9*Math.random()>>>0)+(t++ +"__")};n.prototype={set:function(t,n){var r=t[this.name];return r&&r[0]===t?r[1]=n:e(t,this.name,{value:[t,n],writable:!0}),this},get:function(e){var t;return(t=e[this.name])&&t[0]===e?t[1]:void 0},"delete":function(e){var t=e[this.name];return t&&t[0]===e?(t[0]=t[1]=void 0,!0):!1},has:function(e){var t=e[this.name];return t?t[0]===e:!1}},window.WeakMap=n}(),window.ShadowDOMPolyfill={},function(e){"use strict";function t(){if("undefined"!=typeof chrome&&chrome.app&&chrome.app.runtime)return!1;if(navigator.getDeviceStorage)return!1;try{var e=new Function("return true;");return e()}catch(t){return!1}}function n(e){if(!e)throw new Error("Assertion failed")}function r(e,t){for(var n=W(t),r=0;rl;l++)c[l]=new Array(s),c[l][0]=l;for(var u=0;s>u;u++)c[0][u]=u;for(var l=1;a>l;l++)for(var u=1;s>u;u++)if(this.equals(e[t+u-1],r[o+l-1]))c[l][u]=c[l-1][u-1];else{var d=c[l-1][u]+1,p=c[l][u-1]+1;c[l][u]=p>d?d:p}return c},spliceOperationsFromEditDistances:function(e){for(var t=e.length-1,n=e[0].length-1,s=e[t][n],c=[];t>0||n>0;)if(0!=t)if(0!=n){var l,u=e[t-1][n-1],d=e[t-1][n],p=e[t][n-1];l=p>d?u>d?d:u:u>p?p:u,l==u?(u==s?c.push(r):(c.push(o),s=u),t--,n--):l==d?(c.push(a),t--,s=d):(c.push(i),n--,s=p)}else c.push(a),t--;else c.push(i),n--;return c.reverse(),c},calcSplices:function(e,n,s,c,l,u){var d=0,p=0,h=Math.min(s-n,u-l);if(0==n&&0==l&&(d=this.sharedPrefix(e,c,h)),s==e.length&&u==c.length&&(p=this.sharedSuffix(e,c,h-d)),n+=d,l+=d,s-=p,u-=p,s-n==0&&u-l==0)return[];if(n==s){for(var f=t(n,[],0);u>l;)f.removed.push(c[l++]);return[f]}if(l==u)return[t(n,[],s-n)];for(var m=this.spliceOperationsFromEditDistances(this.calcEditDistances(e,n,s,c,l,u)),f=void 0,w=[],v=n,g=l,b=0;br;r++)if(!this.equals(e[r],t[r]))return r;return n},sharedSuffix:function(e,t,n){for(var r=e.length,o=t.length,i=0;n>i&&this.equals(e[--r],t[--o]);)i++;return i},calculateSplices:function(e,t){return this.calcSplices(e,0,e.length,t,0,t.length)},equals:function(e,t){return e===t}},e.ArraySplice=n}(window.ShadowDOMPolyfill),function(e){"use strict";function t(){a=!1;var e=i.slice(0);i=[];for(var t=0;t0){for(var u=0;u0&&r.length>0;){var i=n.pop(),a=r.pop();if(i!==a)break;o=i}return o}function u(e,t,n){t instanceof G.Window&&(t=t.document);var o,i=A(t),a=A(n),s=r(n,e),o=l(i,a);o||(o=a.root);for(var c=o;c;c=c.parent)for(var u=0;u0;i--)if(!g(t[i],e,o,t,r))return!1;return!0}function w(e,t,n,r){var o=ie,i=t[0]||n;return g(i,e,o,t,r)}function v(e,t,n,r){for(var o=ae,i=1;i0&&g(n,e,o,t,r)}function g(e,t,n,r,o){var i=z.get(e);if(!i)return!0;var a=o||s(r,e);if(a===e){if(n===oe)return!0;n===ae&&(n=ie)}else if(n===ae&&!t.bubbles)return!0;if("relatedTarget"in t){var c=B(t),l=c.relatedTarget;if(l){if(l instanceof Object&&l.addEventListener){var d=V(l),p=u(t,e,d);if(p===a)return!0}else p=null;Z.set(t,p)}}J.set(t,n);var h=t.type,f=!1;X.set(t,a),Y.set(t,e),i.depth++;for(var m=0,w=i.length;w>m;m++){var v=i[m];if(v.removed)f=!0;else if(!(v.type!==h||!v.capture&&n===oe||v.capture&&n===ae))try{if("function"==typeof v.handler?v.handler.call(e,t):v.handler.handleEvent(t),ee.get(t))return!1}catch(g){P||(P=g)}}if(i.depth--,f&&0===i.depth){var b=i.slice();i.length=0;for(var m=0;mr;r++)t[r]=a(e[r]);return t.length=o,t}function o(e,t){e.prototype[t]=function(){return r(i(this)[t].apply(i(this),arguments))}}var i=e.unsafeUnwrap,a=e.wrap,s={enumerable:!1};n.prototype={item:function(e){return this[e]}},t(n.prototype,"item"),e.wrappers.NodeList=n,e.addWrapNodeListMethod=o,e.wrapNodeList=r}(window.ShadowDOMPolyfill),function(e){"use strict";e.wrapHTMLCollection=e.wrapNodeList,e.wrappers.HTMLCollection=e.wrappers.NodeList}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){O(e instanceof _)}function n(e){var t=new T;return t[0]=e,t.length=1,t}function r(e,t,n){N(t,"childList",{removedNodes:n,previousSibling:e.previousSibling,nextSibling:e.nextSibling})}function o(e,t){N(e,"childList",{removedNodes:t})}function i(e,t,r,o){if(e instanceof DocumentFragment){var i=s(e);U=!0;for(var a=i.length-1;a>=0;a--)e.removeChild(i[a]),i[a].parentNode_=t;U=!1;for(var a=0;ao;o++)r.appendChild(P(t[o]));return r}function w(e){if(void 0!==e.firstChild_)for(var t=e.firstChild_;t;){var n=t;t=t.nextSibling_,n.parentNode_=n.previousSibling_=n.nextSibling_=void 0}e.firstChild_=e.lastChild_=void 0}function v(e){if(e.invalidateShadowRenderer()){for(var t=e.firstChild;t;){O(t.parentNode===e);var n=t.nextSibling,r=P(t),o=r.parentNode;o&&X.call(o,r),t.previousSibling_=t.nextSibling_=t.parentNode_=null,t=n}e.firstChild_=e.lastChild_=null}else for(var n,i=P(e),a=i.firstChild;a;)n=a.nextSibling,X.call(i,a),a=n}function g(e){var t=e.parentNode;return t&&t.invalidateShadowRenderer()}function b(e){for(var t,n=0;ns;s++)i=b(t[s]),!o&&(a=v(i).root)&&a instanceof e.wrappers.ShadowRoot||(r[n++]=i);return n}function n(e){return String(e).replace(/\/deep\/|::shadow|>>>/g," ")}function r(e){return String(e).replace(/:host\(([^\s]+)\)/g,"$1").replace(/([^\s]):host/g,"$1").replace(":host","*").replace(/\^|\/shadow\/|\/shadow-deep\/|::shadow|\/deep\/|::content|>>>/g," ")}function o(e,t){for(var n,r=e.firstElementChild;r;){if(r.matches(t))return r;if(n=o(r,t))return n;r=r.nextElementSibling}return null}function i(e,t){return e.matches(t)}function a(e,t,n){var r=e.localName;return r===t||r===n&&e.namespaceURI===j}function s(){return!0}function c(e,t,n){return e.localName===n}function l(e,t){return e.namespaceURI===t}function u(e,t,n){return e.namespaceURI===t&&e.localName===n}function d(e,t,n,r,o,i){for(var a=e.firstElementChild;a;)r(a,o,i)&&(n[t++]=a),t=d(a,t,n,r,o,i),a=a.nextElementSibling;return t}function p(n,r,o,i,a){var s,c=g(this),l=v(this).root;if(l instanceof e.wrappers.ShadowRoot)return d(this,r,o,n,i,null);if(c instanceof N)s=S.call(c,i);else{if(!(c instanceof C))return d(this,r,o,n,i,null);s=_.call(c,i)}return t(s,r,o,a)}function h(n,r,o,i,a){var s,c=g(this),l=v(this).root;if(l instanceof e.wrappers.ShadowRoot)return d(this,r,o,n,i,a);if(c instanceof N)s=M.call(c,i,a);else{if(!(c instanceof C))return d(this,r,o,n,i,a);s=T.call(c,i,a)}return t(s,r,o,!1)}function f(n,r,o,i,a){var s,c=g(this),l=v(this).root;if(l instanceof e.wrappers.ShadowRoot)return d(this,r,o,n,i,a);if(c instanceof N)s=L.call(c,i,a);else{if(!(c instanceof C))return d(this,r,o,n,i,a);s=O.call(c,i,a)}return t(s,r,o,!1)}var m=e.wrappers.HTMLCollection,w=e.wrappers.NodeList,v=e.getTreeScope,g=e.unsafeUnwrap,b=e.wrap,y=document.querySelector,E=document.documentElement.querySelector,_=document.querySelectorAll,S=document.documentElement.querySelectorAll,T=document.getElementsByTagName,M=document.documentElement.getElementsByTagName,O=document.getElementsByTagNameNS,L=document.documentElement.getElementsByTagNameNS,N=window.Element,C=window.HTMLDocument||window.Document,j="http://www.w3.org/1999/xhtml",D={querySelector:function(t){var r=n(t),i=r!==t;t=r;var a,s=g(this),c=v(this).root;if(c instanceof e.wrappers.ShadowRoot)return o(this,t);if(s instanceof N)a=b(E.call(s,t));else{if(!(s instanceof C))return o(this,t);
-
-a=b(y.call(s,t))}return a&&!i&&(c=v(a).root)&&c instanceof e.wrappers.ShadowRoot?o(this,t):a},querySelectorAll:function(e){var t=n(e),r=t!==e;e=t;var o=new w;return o.length=p.call(this,i,0,o,e,r),o}},H={matches:function(t){return t=r(t),e.originalMatches.call(g(this),t)}},x={getElementsByTagName:function(e){var t=new m,n="*"===e?s:a;return t.length=h.call(this,n,0,t,e,e.toLowerCase()),t},getElementsByClassName:function(e){return this.querySelectorAll("."+e)},getElementsByTagNameNS:function(e,t){var n=new m,r=null;return r="*"===e?"*"===t?s:c:"*"===t?l:u,n.length=f.call(this,r,0,n,e||null,t),n}};e.GetElementsByInterface=x,e.SelectorsInterface=D,e.MatchesInterface=H}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){for(;e&&e.nodeType!==Node.ELEMENT_NODE;)e=e.nextSibling;return e}function n(e){for(;e&&e.nodeType!==Node.ELEMENT_NODE;)e=e.previousSibling;return e}var r=e.wrappers.NodeList,o={get firstElementChild(){return t(this.firstChild)},get lastElementChild(){return n(this.lastChild)},get childElementCount(){for(var e=0,t=this.firstElementChild;t;t=t.nextElementSibling)e++;return e},get children(){for(var e=new r,t=0,n=this.firstElementChild;n;n=n.nextElementSibling)e[t++]=n;return e.length=t,e},remove:function(){var e=this.parentNode;e&&e.removeChild(this)}},i={get nextElementSibling(){return t(this.nextSibling)},get previousElementSibling(){return n(this.previousSibling)}},a={getElementById:function(e){return/[ \t\n\r\f]/.test(e)?null:this.querySelector('[id="'+e+'"]')}};e.ChildNodeInterface=i,e.NonElementParentNodeInterface=a,e.ParentNodeInterface=o}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){r.call(this,e)}var n=e.ChildNodeInterface,r=e.wrappers.Node,o=e.enqueueMutation,i=e.mixin,a=e.registerWrapper,s=e.unsafeUnwrap,c=window.CharacterData;t.prototype=Object.create(r.prototype),i(t.prototype,{get nodeValue(){return this.data},set nodeValue(e){this.data=e},get textContent(){return this.data},set textContent(e){this.data=e},get data(){return s(this).data},set data(e){var t=s(this).data;o(this,"characterData",{oldValue:t}),s(this).data=e}}),i(t.prototype,n),a(c,t,document.createTextNode("")),e.wrappers.CharacterData=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){return e>>>0}function n(e){r.call(this,e)}var r=e.wrappers.CharacterData,o=(e.enqueueMutation,e.mixin),i=e.registerWrapper,a=window.Text;n.prototype=Object.create(r.prototype),o(n.prototype,{splitText:function(e){e=t(e);var n=this.data;if(e>n.length)throw new Error("IndexSizeError");var r=n.slice(0,e),o=n.slice(e);this.data=r;var i=this.ownerDocument.createTextNode(o);return this.parentNode&&this.parentNode.insertBefore(i,this.nextSibling),i}}),i(a,n,document.createTextNode("")),e.wrappers.Text=n}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){return i(e).getAttribute("class")}function n(e,t){a(e,"attributes",{name:"class",namespace:null,oldValue:t})}function r(t){e.invalidateRendererBasedOnAttribute(t,"class")}function o(e,o,i){var a=e.ownerElement_;if(null==a)return o.apply(e,i);var s=t(a),c=o.apply(e,i);return t(a)!==s&&(n(a,s),r(a)),c}if(!window.DOMTokenList)return void console.warn("Missing DOMTokenList prototype, please include a compatible classList polyfill such as http://goo.gl/uTcepH.");var i=e.unsafeUnwrap,a=e.enqueueMutation,s=DOMTokenList.prototype.add;DOMTokenList.prototype.add=function(){o(this,s,arguments)};var c=DOMTokenList.prototype.remove;DOMTokenList.prototype.remove=function(){o(this,c,arguments)};var l=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(){return o(this,l,arguments)}}(window.ShadowDOMPolyfill),function(e){"use strict";function t(t,n){var r=t.parentNode;if(r&&r.shadowRoot){var o=e.getRendererForHost(r);o.dependsOnAttribute(n)&&o.invalidate()}}function n(e,t,n){u(e,"attributes",{name:t,namespace:null,oldValue:n})}function r(e){a.call(this,e)}var o=e.ChildNodeInterface,i=e.GetElementsByInterface,a=e.wrappers.Node,s=e.ParentNodeInterface,c=e.SelectorsInterface,l=e.MatchesInterface,u=(e.addWrapNodeListMethod,e.enqueueMutation),d=e.mixin,p=(e.oneOf,e.registerWrapper),h=e.unsafeUnwrap,f=e.wrappers,m=window.Element,w=["matches","mozMatchesSelector","msMatchesSelector","webkitMatchesSelector"].filter(function(e){return m.prototype[e]}),v=w[0],g=m.prototype[v],b=new WeakMap;r.prototype=Object.create(a.prototype),d(r.prototype,{createShadowRoot:function(){var t=new f.ShadowRoot(this);h(this).polymerShadowRoot_=t;var n=e.getRendererForHost(this);return n.invalidate(),t},get shadowRoot(){return h(this).polymerShadowRoot_||null},setAttribute:function(e,r){var o=h(this).getAttribute(e);h(this).setAttribute(e,r),n(this,e,o),t(this,e)},removeAttribute:function(e){var r=h(this).getAttribute(e);h(this).removeAttribute(e),n(this,e,r),t(this,e)},get classList(){var e=b.get(this);if(!e){if(e=h(this).classList,!e)return;e.ownerElement_=this,b.set(this,e)}return e},get className(){return h(this).className},set className(e){this.setAttribute("class",e)},get id(){return h(this).id},set id(e){this.setAttribute("id",e)}}),w.forEach(function(e){"matches"!==e&&(r.prototype[e]=function(e){return this.matches(e)})}),m.prototype.webkitCreateShadowRoot&&(r.prototype.webkitCreateShadowRoot=r.prototype.createShadowRoot),d(r.prototype,o),d(r.prototype,i),d(r.prototype,s),d(r.prototype,c),d(r.prototype,l),p(m,r,document.createElementNS(null,"x")),e.invalidateRendererBasedOnAttribute=t,e.matchesNames=w,e.originalMatches=g,e.wrappers.Element=r}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){switch(e){case"&":return"&";case"<":return"<";case">":return">";case'"':return""";case"Â ":return" "}}function n(e){return e.replace(L,t)}function r(e){return e.replace(N,t)}function o(e){for(var t={},n=0;n"):c+">"+s(e)+""+a+">";case Node.TEXT_NODE:var d=e.data;return t&&j[t.localName]?d:r(d);case Node.COMMENT_NODE:return"";default:throw console.error(e),new Error("not implemented")}}function s(e){e instanceof O.HTMLTemplateElement&&(e=e.content);for(var t="",n=e.firstChild;n;n=n.nextSibling)t+=a(n,e);return t}function c(e,t,n){var r=n||"div";e.textContent="";var o=T(e.ownerDocument.createElement(r));o.innerHTML=t;for(var i;i=o.firstChild;)e.appendChild(M(i))}function l(e){m.call(this,e)}function u(e,t){var n=T(e.cloneNode(!1));n.innerHTML=t;for(var r,o=T(document.createDocumentFragment());r=n.firstChild;)o.appendChild(r);return M(o)}function d(t){return function(){return e.renderAllPending(),S(this)[t]}}function p(e){w(l,e,d(e))}function h(t){Object.defineProperty(l.prototype,t,{get:d(t),set:function(n){e.renderAllPending(),S(this)[t]=n},configurable:!0,enumerable:!0})}function f(t){Object.defineProperty(l.prototype,t,{value:function(){return e.renderAllPending(),S(this)[t].apply(S(this),arguments)},configurable:!0,enumerable:!0})}var m=e.wrappers.Element,w=e.defineGetter,v=e.enqueueMutation,g=e.mixin,b=e.nodesWereAdded,y=e.nodesWereRemoved,E=e.registerWrapper,_=e.snapshotNodeList,S=e.unsafeUnwrap,T=e.unwrap,M=e.wrap,O=e.wrappers,L=/[&\u00A0"]/g,N=/[&\u00A0<>]/g,C=o(["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),j=o(["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"]),D="http://www.w3.org/1999/xhtml",H=/MSIE/.test(navigator.userAgent),x=window.HTMLElement,R=window.HTMLTemplateElement;l.prototype=Object.create(m.prototype),g(l.prototype,{get innerHTML(){return s(this)},set innerHTML(e){if(H&&j[this.localName])return void(this.textContent=e);var t=_(this.childNodes);this.invalidateShadowRenderer()?this instanceof O.HTMLTemplateElement?c(this.content,e):c(this,e,this.tagName):!R&&this instanceof O.HTMLTemplateElement?c(this.content,e):S(this).innerHTML=e;var n=_(this.childNodes);v(this,"childList",{addedNodes:n,removedNodes:t}),y(t),b(n,this)},get outerHTML(){return a(this,this.parentNode)},set outerHTML(e){var t=this.parentNode;if(t){t.invalidateShadowRenderer();var n=u(t,e);t.replaceChild(n,this)}},insertAdjacentHTML:function(e,t){var n,r;switch(String(e).toLowerCase()){case"beforebegin":n=this.parentNode,r=this;break;case"afterend":n=this.parentNode,r=this.nextSibling;break;case"afterbegin":n=this,r=this.firstChild;break;case"beforeend":n=this,r=null;break;default:return}var o=u(n,t);n.insertBefore(o,r)},get hidden(){return this.hasAttribute("hidden")},set hidden(e){e?this.setAttribute("hidden",""):this.removeAttribute("hidden")}}),["clientHeight","clientLeft","clientTop","clientWidth","offsetHeight","offsetLeft","offsetTop","offsetWidth","scrollHeight","scrollWidth"].forEach(p),["scrollLeft","scrollTop"].forEach(h),["getBoundingClientRect","getClientRects","scrollIntoView"].forEach(f),E(x,l,document.createElement("b")),e.wrappers.HTMLElement=l,e.getInnerHTML=s,e.setInnerHTML=c}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.unsafeUnwrap,a=e.wrap,s=window.HTMLCanvasElement;t.prototype=Object.create(n.prototype),r(t.prototype,{getContext:function(){var e=i(this).getContext.apply(i(this),arguments);return e&&a(e)}}),o(s,t,document.createElement("canvas")),e.wrappers.HTMLCanvasElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=window.HTMLContentElement;t.prototype=Object.create(n.prototype),r(t.prototype,{constructor:t,get select(){return this.getAttribute("select")},set select(e){this.setAttribute("select",e)},setAttribute:function(e,t){n.prototype.setAttribute.call(this,e,t),"select"===String(e).toLowerCase()&&this.invalidateShadowRenderer(!0)}}),i&&o(i,t),e.wrappers.HTMLContentElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.wrapHTMLCollection,a=e.unwrap,s=window.HTMLFormElement;t.prototype=Object.create(n.prototype),r(t.prototype,{get elements(){return i(a(this).elements)}}),o(s,t,document.createElement("form")),e.wrappers.HTMLFormElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){r.call(this,e)}function n(e,t){if(!(this instanceof n))throw new TypeError("DOM object constructor cannot be called as a function.");var o=i(document.createElement("img"));r.call(this,o),a(o,this),void 0!==e&&(o.width=e),void 0!==t&&(o.height=t)}var r=e.wrappers.HTMLElement,o=e.registerWrapper,i=e.unwrap,a=e.rewrap,s=window.HTMLImageElement;t.prototype=Object.create(r.prototype),o(s,t,document.createElement("img")),n.prototype=t.prototype,e.wrappers.HTMLImageElement=t,e.wrappers.Image=n}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=(e.mixin,e.wrappers.NodeList,e.registerWrapper),o=window.HTMLShadowElement;t.prototype=Object.create(n.prototype),t.prototype.constructor=t,o&&r(o,t),e.wrappers.HTMLShadowElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){if(!e.defaultView)return e;var t=d.get(e);if(!t){for(t=e.implementation.createHTMLDocument("");t.lastChild;)t.removeChild(t.lastChild);d.set(e,t)}return t}function n(e){for(var n,r=t(e.ownerDocument),o=c(r.createDocumentFragment());n=e.firstChild;)o.appendChild(n);return o}function r(e){if(o.call(this,e),!p){var t=n(e);u.set(this,l(t))}}var o=e.wrappers.HTMLElement,i=e.mixin,a=e.registerWrapper,s=e.unsafeUnwrap,c=e.unwrap,l=e.wrap,u=new WeakMap,d=new WeakMap,p=window.HTMLTemplateElement;r.prototype=Object.create(o.prototype),i(r.prototype,{constructor:r,get content(){return p?l(s(this).content):u.get(this)}}),p&&a(p,r),e.wrappers.HTMLTemplateElement=r}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.registerWrapper,o=window.HTMLMediaElement;o&&(t.prototype=Object.create(n.prototype),r(o,t,document.createElement("audio")),e.wrappers.HTMLMediaElement=t)}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){r.call(this,e)}function n(e){if(!(this instanceof n))throw new TypeError("DOM object constructor cannot be called as a function.");var t=i(document.createElement("audio"));r.call(this,t),a(t,this),t.setAttribute("preload","auto"),void 0!==e&&t.setAttribute("src",e)}var r=e.wrappers.HTMLMediaElement,o=e.registerWrapper,i=e.unwrap,a=e.rewrap,s=window.HTMLAudioElement;s&&(t.prototype=Object.create(r.prototype),o(s,t,document.createElement("audio")),n.prototype=t.prototype,e.wrappers.HTMLAudioElement=t,e.wrappers.Audio=n)}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){return e.replace(/\s+/g," ").trim()}function n(e){o.call(this,e)}function r(e,t,n,i){if(!(this instanceof r))throw new TypeError("DOM object constructor cannot be called as a function.");var a=c(document.createElement("option"));o.call(this,a),s(a,this),void 0!==e&&(a.text=e),void 0!==t&&a.setAttribute("value",t),n===!0&&a.setAttribute("selected",""),a.selected=i===!0}var o=e.wrappers.HTMLElement,i=e.mixin,a=e.registerWrapper,s=e.rewrap,c=e.unwrap,l=e.wrap,u=window.HTMLOptionElement;n.prototype=Object.create(o.prototype),i(n.prototype,{get text(){return t(this.textContent)},set text(e){this.textContent=t(String(e))},get form(){return l(c(this).form)}}),a(u,n,document.createElement("option")),r.prototype=n.prototype,e.wrappers.HTMLOptionElement=n,e.wrappers.Option=r}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.unwrap,a=e.wrap,s=window.HTMLSelectElement;t.prototype=Object.create(n.prototype),r(t.prototype,{add:function(e,t){"object"==typeof t&&(t=i(t)),i(this).add(i(e),t)},remove:function(e){return void 0===e?void n.prototype.remove.call(this):("object"==typeof e&&(e=i(e)),void i(this).remove(e))},get form(){return a(i(this).form)}}),o(s,t,document.createElement("select")),e.wrappers.HTMLSelectElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.unwrap,a=e.wrap,s=e.wrapHTMLCollection,c=window.HTMLTableElement;t.prototype=Object.create(n.prototype),r(t.prototype,{get caption(){return a(i(this).caption)},createCaption:function(){return a(i(this).createCaption())},get tHead(){return a(i(this).tHead)},createTHead:function(){return a(i(this).createTHead())},createTFoot:function(){return a(i(this).createTFoot())},get tFoot(){return a(i(this).tFoot)},get tBodies(){return s(i(this).tBodies)},createTBody:function(){return a(i(this).createTBody())},get rows(){return s(i(this).rows)},insertRow:function(e){return a(i(this).insertRow(e))}}),o(c,t,document.createElement("table")),e.wrappers.HTMLTableElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.wrapHTMLCollection,a=e.unwrap,s=e.wrap,c=window.HTMLTableSectionElement;t.prototype=Object.create(n.prototype),r(t.prototype,{constructor:t,get rows(){return i(a(this).rows)},insertRow:function(e){return s(a(this).insertRow(e))}}),o(c,t,document.createElement("thead")),e.wrappers.HTMLTableSectionElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.HTMLElement,r=e.mixin,o=e.registerWrapper,i=e.wrapHTMLCollection,a=e.unwrap,s=e.wrap,c=window.HTMLTableRowElement;t.prototype=Object.create(n.prototype),r(t.prototype,{get cells(){return i(a(this).cells)},insertCell:function(e){return s(a(this).insertCell(e))}}),o(c,t,document.createElement("tr")),e.wrappers.HTMLTableRowElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){switch(e.localName){case"content":return new n(e);case"shadow":return new o(e);case"template":return new i(e)}r.call(this,e)}var n=e.wrappers.HTMLContentElement,r=e.wrappers.HTMLElement,o=e.wrappers.HTMLShadowElement,i=e.wrappers.HTMLTemplateElement,a=(e.mixin,e.registerWrapper),s=window.HTMLUnknownElement;t.prototype=Object.create(r.prototype),a(s,t),e.wrappers.HTMLUnknownElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";var t=e.wrappers.Element,n=e.wrappers.HTMLElement,r=e.registerObject,o=e.defineWrapGetter,i="http://www.w3.org/2000/svg",a=document.createElementNS(i,"title"),s=r(a),c=Object.getPrototypeOf(s.prototype).constructor;if(!("classList"in a)){var l=Object.getOwnPropertyDescriptor(t.prototype,"classList");Object.defineProperty(n.prototype,"classList",l),delete t.prototype.classList}o(c,"ownerSVGElement"),e.wrappers.SVGElement=c}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){p.call(this,e)}var n=e.mixin,r=e.registerWrapper,o=e.unwrap,i=e.wrap,a=window.SVGUseElement,s="http://www.w3.org/2000/svg",c=i(document.createElementNS(s,"g")),l=document.createElementNS(s,"use"),u=c.constructor,d=Object.getPrototypeOf(u.prototype),p=d.constructor;t.prototype=Object.create(d),"instanceRoot"in l&&n(t.prototype,{get instanceRoot(){return i(o(this).instanceRoot)},get animatedInstanceRoot(){return i(o(this).animatedInstanceRoot)}}),r(a,t,l),e.wrappers.SVGUseElement=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.EventTarget,r=e.mixin,o=e.registerWrapper,i=e.unsafeUnwrap,a=e.wrap,s=window.SVGElementInstance;s&&(t.prototype=Object.create(n.prototype),r(t.prototype,{get correspondingElement(){return a(i(this).correspondingElement)},get correspondingUseElement(){return a(i(this).correspondingUseElement)},get parentNode(){return a(i(this).parentNode)},get childNodes(){throw new Error("Not implemented")},get firstChild(){return a(i(this).firstChild)},get lastChild(){return a(i(this).lastChild)},get previousSibling(){return a(i(this).previousSibling)},get nextSibling(){return a(i(this).nextSibling)}}),o(s,t),e.wrappers.SVGElementInstance=t)}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){o(e,this)}var n=e.mixin,r=e.registerWrapper,o=e.setWrapper,i=e.unsafeUnwrap,a=e.unwrap,s=e.unwrapIfNeeded,c=e.wrap,l=window.CanvasRenderingContext2D;n(t.prototype,{get canvas(){return c(i(this).canvas)},drawImage:function(){arguments[0]=s(arguments[0]),i(this).drawImage.apply(i(this),arguments)},createPattern:function(){return arguments[0]=a(arguments[0]),i(this).createPattern.apply(i(this),arguments)}}),r(l,t,document.createElement("canvas").getContext("2d")),e.wrappers.CanvasRenderingContext2D=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){o(e,this)}var n=e.mixin,r=e.registerWrapper,o=e.setWrapper,i=e.unsafeUnwrap,a=e.unwrapIfNeeded,s=e.wrap,c=window.WebGLRenderingContext;if(c){n(t.prototype,{get canvas(){return s(i(this).canvas)},texImage2D:function(){arguments[5]=a(arguments[5]),i(this).texImage2D.apply(i(this),arguments)},texSubImage2D:function(){arguments[6]=a(arguments[6]),i(this).texSubImage2D.apply(i(this),arguments)}});var l=/WebKit/.test(navigator.userAgent)?{drawingBufferHeight:null,drawingBufferWidth:null}:{};r(c,t,l),e.wrappers.WebGLRenderingContext=t}}(window.ShadowDOMPolyfill),function(e){"use strict";var t=e.GetElementsByInterface,n=e.NonElementParentNodeInterface,r=e.ParentNodeInterface,o=e.SelectorsInterface,i=e.mixin,a=e.registerObject,s=a(document.createDocumentFragment());i(s.prototype,r),i(s.prototype,o),i(s.prototype,t),i(s.prototype,n);var c=a(document.createComment(""));e.wrappers.Comment=c,e.wrappers.DocumentFragment=s}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){var t=d(u(e).ownerDocument.createDocumentFragment());n.call(this,t),c(t,this);var o=e.shadowRoot;h.set(this,o),this.treeScope_=new r(this,a(o||e)),p.set(this,e)}var n=e.wrappers.DocumentFragment,r=e.TreeScope,o=e.elementFromPoint,i=e.getInnerHTML,a=e.getTreeScope,s=e.mixin,c=e.rewrap,l=e.setInnerHTML,u=e.unsafeUnwrap,d=e.unwrap,p=new WeakMap,h=new WeakMap;t.prototype=Object.create(n.prototype),s(t.prototype,{constructor:t,get innerHTML(){return i(this)},set innerHTML(e){l(this,e),this.invalidateShadowRenderer()},get olderShadowRoot(){return h.get(this)||null},get host(){return p.get(this)||null},invalidateShadowRenderer:function(){return p.get(this).invalidateShadowRenderer()},elementFromPoint:function(e,t){return o(this,this.ownerDocument,e,t)}}),e.wrappers.ShadowRoot=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){var t=d(e).root;return t instanceof h?t.host:null}function n(t,n){if(t.shadowRoot){n=Math.min(t.childNodes.length-1,n);var r=t.childNodes[n];if(r){var o=e.getDestinationInsertionPoints(r);if(o.length>0){var i=o[0].parentNode;i.nodeType==Node.ELEMENT_NODE&&(t=i)}}}return t}function r(e){return e=u(e),t(e)||e}function o(e){a(e,this)}var i=e.registerWrapper,a=e.setWrapper,s=e.unsafeUnwrap,c=e.unwrap,l=e.unwrapIfNeeded,u=e.wrap,d=e.getTreeScope,p=window.Range,h=e.wrappers.ShadowRoot;o.prototype={get startContainer(){return r(s(this).startContainer)},get endContainer(){return r(s(this).endContainer)},get commonAncestorContainer(){return r(s(this).commonAncestorContainer)},setStart:function(e,t){e=n(e,t),s(this).setStart(l(e),t)},setEnd:function(e,t){e=n(e,t),s(this).setEnd(l(e),t)},setStartBefore:function(e){s(this).setStartBefore(l(e))},setStartAfter:function(e){s(this).setStartAfter(l(e))},setEndBefore:function(e){s(this).setEndBefore(l(e))},setEndAfter:function(e){s(this).setEndAfter(l(e))},selectNode:function(e){s(this).selectNode(l(e))},selectNodeContents:function(e){s(this).selectNodeContents(l(e))},compareBoundaryPoints:function(e,t){return s(this).compareBoundaryPoints(e,c(t))},extractContents:function(){return u(s(this).extractContents())},cloneContents:function(){return u(s(this).cloneContents())},insertNode:function(e){s(this).insertNode(l(e))},surroundContents:function(e){s(this).surroundContents(l(e))},cloneRange:function(){return u(s(this).cloneRange())},isPointInRange:function(e,t){return s(this).isPointInRange(l(e),t)},comparePoint:function(e,t){return s(this).comparePoint(l(e),t)},intersectsNode:function(e){return s(this).intersectsNode(l(e))},toString:function(){return s(this).toString()}},p.prototype.createContextualFragment&&(o.prototype.createContextualFragment=function(e){return u(s(this).createContextualFragment(e))}),i(window.Range,o,document.createRange()),e.wrappers.Range=o}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){e.previousSibling_=e.previousSibling,e.nextSibling_=e.nextSibling,e.parentNode_=e.parentNode}function n(n,o,i){var a=x(n),s=x(o),c=i?x(i):null;if(r(o),t(o),i)n.firstChild===i&&(n.firstChild_=i),i.previousSibling_=i.previousSibling;else{n.lastChild_=n.lastChild,n.lastChild===n.firstChild&&(n.firstChild_=n.firstChild);var l=R(a.lastChild);l&&(l.nextSibling_=l.nextSibling)}e.originalInsertBefore.call(a,s,c)}function r(n){var r=x(n),o=r.parentNode;if(o){var i=R(o);t(n),n.previousSibling&&(n.previousSibling.nextSibling_=n),n.nextSibling&&(n.nextSibling.previousSibling_=n),i.lastChild===n&&(i.lastChild_=n),i.firstChild===n&&(i.firstChild_=n),e.originalRemoveChild.call(o,r)}}function o(e){P.set(e,[])}function i(e){var t=P.get(e);return t||P.set(e,t=[]),t}function a(e){for(var t=[],n=0,r=e.firstChild;r;r=r.nextSibling)t[n++]=r;return t}function s(){for(var e=0;em;m++){var w=R(i[u++]);s.get(w)||r(w)}for(var v=h.addedCount,g=i[u]&&R(i[u]),m=0;v>m;m++){var b=o[l++],y=b.node;n(t,y,g),s.set(y,!0),b.sync(s)}d+=v}for(var p=d;p=0;o--){var i=r[o],a=m(i);if(a){var s=i.olderShadowRoot;s&&(n=f(s));for(var c=0;c=0;u--)l=Object.create(l);["createdCallback","attachedCallback","detachedCallback","attributeChangedCallback"].forEach(function(e){var t=o[e];t&&(l[e]=function(){C(this)instanceof r||M(this),t.apply(C(this),arguments)})});var d={prototype:l};i&&(d["extends"]=i),r.prototype=o,r.prototype.constructor=r,e.constructorTable.set(l,r),e.nativePrototypeTable.set(o,l);P.call(N(this),t,d);return r},y([window.HTMLDocument||window.Document],["registerElement"])}y([window.HTMLBodyElement,window.HTMLDocument||window.Document,window.HTMLHeadElement,window.HTMLHtmlElement],["appendChild","compareDocumentPosition","contains","getElementsByClassName","getElementsByTagName","getElementsByTagNameNS","insertBefore","querySelector","querySelectorAll","removeChild","replaceChild"]),y([window.HTMLBodyElement,window.HTMLHeadElement,window.HTMLHtmlElement],E),y([window.HTMLDocument||window.Document],["adoptNode","importNode","contains","createComment","createDocumentFragment","createElement","createElementNS","createEvent","createEventNS","createRange","createTextNode","createTreeWalker","elementFromPoint","getElementById","getElementsByName","getSelection"]),_(t.prototype,l),_(t.prototype,d),_(t.prototype,f),_(t.prototype,p),_(t.prototype,{get implementation(){var e=D.get(this);return e?e:(e=new a(N(this).implementation),D.set(this,e),e)},get defaultView(){return C(N(this).defaultView)}}),S(window.Document,t,document.implementation.createHTMLDocument("")),window.HTMLDocument&&S(window.HTMLDocument,t),j([window.HTMLBodyElement,window.HTMLDocument||window.Document,window.HTMLHeadElement]);var k=document.implementation.createDocument;a.prototype.createDocument=function(){return arguments[2]=N(arguments[2]),C(k.apply(L(this),arguments))},s(a,"createDocumentType"),s(a,"createHTMLDocument"),c(a,"hasFeature"),S(window.DOMImplementation,a),y([window.DOMImplementation],["createDocument","createDocumentType","createHTMLDocument","hasFeature"]),e.adoptNodeNoRemove=r,e.wrappers.DOMImplementation=a,e.wrappers.Document=t}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){n.call(this,e)}var n=e.wrappers.EventTarget,r=e.wrappers.Selection,o=e.mixin,i=e.registerWrapper,a=e.renderAllPending,s=e.unwrap,c=e.unwrapIfNeeded,l=e.wrap,u=window.Window,d=window.getComputedStyle,p=window.getDefaultComputedStyle,h=window.getSelection;t.prototype=Object.create(n.prototype),u.prototype.getComputedStyle=function(e,t){return l(this||window).getComputedStyle(c(e),t)},p&&(u.prototype.getDefaultComputedStyle=function(e,t){return l(this||window).getDefaultComputedStyle(c(e),t)}),u.prototype.getSelection=function(){return l(this||window).getSelection()},delete window.getComputedStyle,delete window.getDefaultComputedStyle,delete window.getSelection,["addEventListener","removeEventListener","dispatchEvent"].forEach(function(e){u.prototype[e]=function(){var t=l(this||window);return t[e].apply(t,arguments)},delete window[e]}),o(t.prototype,{getComputedStyle:function(e,t){return a(),d.call(s(this),c(e),t)},getSelection:function(){return a(),new r(h.call(s(this)))},get document(){return l(s(this).document)}}),p&&(t.prototype.getDefaultComputedStyle=function(e,t){return a(),p.call(s(this),c(e),t)}),i(u,t,window),e.wrappers.Window=t}(window.ShadowDOMPolyfill),function(e){"use strict";var t=e.unwrap,n=window.DataTransfer||window.Clipboard,r=n.prototype.setDragImage;r&&(n.prototype.setDragImage=function(e,n,o){r.call(this,t(e),n,o)})}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){var t;t=e instanceof i?e:new i(e&&o(e)),r(t,this)}var n=e.registerWrapper,r=e.setWrapper,o=e.unwrap,i=window.FormData;i&&(n(i,t,new i),e.wrappers.FormData=t)}(window.ShadowDOMPolyfill),function(e){"use strict";var t=e.unwrapIfNeeded,n=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.send=function(e){return n.call(this,t(e))}}(window.ShadowDOMPolyfill),function(e){"use strict";function t(e){var t=n[e],r=window[t];if(r){var o=document.createElement(e),i=o.constructor;window[t]=i}}var n=(e.isWrapperFor,{a:"HTMLAnchorElement",area:"HTMLAreaElement",audio:"HTMLAudioElement",base:"HTMLBaseElement",body:"HTMLBodyElement",br:"HTMLBRElement",button:"HTMLButtonElement",canvas:"HTMLCanvasElement",caption:"HTMLTableCaptionElement",col:"HTMLTableColElement",content:"HTMLContentElement",data:"HTMLDataElement",datalist:"HTMLDataListElement",del:"HTMLModElement",dir:"HTMLDirectoryElement",div:"HTMLDivElement",dl:"HTMLDListElement",embed:"HTMLEmbedElement",fieldset:"HTMLFieldSetElement",font:"HTMLFontElement",form:"HTMLFormElement",frame:"HTMLFrameElement",frameset:"HTMLFrameSetElement",h1:"HTMLHeadingElement",head:"HTMLHeadElement",hr:"HTMLHRElement",html:"HTMLHtmlElement",iframe:"HTMLIFrameElement",img:"HTMLImageElement",input:"HTMLInputElement",keygen:"HTMLKeygenElement",label:"HTMLLabelElement",legend:"HTMLLegendElement",li:"HTMLLIElement",link:"HTMLLinkElement",map:"HTMLMapElement",marquee:"HTMLMarqueeElement",menu:"HTMLMenuElement",menuitem:"HTMLMenuItemElement",meta:"HTMLMetaElement",meter:"HTMLMeterElement",object:"HTMLObjectElement",ol:"HTMLOListElement",optgroup:"HTMLOptGroupElement",option:"HTMLOptionElement",output:"HTMLOutputElement",p:"HTMLParagraphElement",param:"HTMLParamElement",pre:"HTMLPreElement",progress:"HTMLProgressElement",q:"HTMLQuoteElement",script:"HTMLScriptElement",select:"HTMLSelectElement",shadow:"HTMLShadowElement",source:"HTMLSourceElement",span:"HTMLSpanElement",style:"HTMLStyleElement",table:"HTMLTableElement",tbody:"HTMLTableSectionElement",template:"HTMLTemplateElement",textarea:"HTMLTextAreaElement",thead:"HTMLTableSectionElement",time:"HTMLTimeElement",title:"HTMLTitleElement",tr:"HTMLTableRowElement",track:"HTMLTrackElement",ul:"HTMLUListElement",video:"HTMLVideoElement"});Object.keys(n).forEach(t),Object.getOwnPropertyNames(e.wrappers).forEach(function(t){window[t]=e.wrappers[t]})}(window.ShadowDOMPolyfill),function(e){function t(e,t){var n="";return Array.prototype.forEach.call(e,function(e){n+=e.textContent+"\n\n"}),t||(n=n.replace(d,"")),n}function n(e){var t=document.createElement("style");return t.textContent=e,t}function r(e){var t=n(e);document.head.appendChild(t);var r=[];if(t.sheet)try{r=t.sheet.cssRules}catch(o){}else console.warn("sheet not found",t);return t.parentNode.removeChild(t),r}function o(){C.initialized=!0,document.body.appendChild(C);var e=C.contentDocument,t=e.createElement("base");t.href=document.baseURI,e.head.appendChild(t)}function i(e){C.initialized||o(),document.body.appendChild(C),e(C.contentDocument),document.body.removeChild(C)}function a(e,t){if(t){var o;if(e.match("@import")&&D){var a=n(e);i(function(e){e.head.appendChild(a.impl),o=Array.prototype.slice.call(a.sheet.cssRules,0),t(o)})}else o=r(e),t(o)}}function s(e){e&&l().appendChild(document.createTextNode(e))}function c(e,t){var r=n(e);r.setAttribute(t,""),r.setAttribute(x,""),document.head.appendChild(r)}function l(){return j||(j=document.createElement("style"),j.setAttribute(x,""),j[x]=!0),j}var u={strictStyling:!1,registry:{},shimStyling:function(e,n,r){var o=this.prepareRoot(e,n,r),i=this.isTypeExtension(r),a=this.makeScopeSelector(n,i),s=t(o,!0);s=this.scopeCssText(s,a),e&&(e.shimmedStyle=s),this.addCssToDocument(s,n)},shimStyle:function(e,t){return this.shimCssText(e.textContent,t)},shimCssText:function(e,t){return e=this.insertDirectives(e),this.scopeCssText(e,t)},makeScopeSelector:function(e,t){return e?t?"[is="+e+"]":e:""},isTypeExtension:function(e){return e&&e.indexOf("-")<0},prepareRoot:function(e,t,n){var r=this.registerRoot(e,t,n);return this.replaceTextInStyles(r.rootStyles,this.insertDirectives),this.removeStyles(e,r.rootStyles),this.strictStyling&&this.applyScopeToContent(e,t),r.scopeStyles},removeStyles:function(e,t){for(var n,r=0,o=t.length;o>r&&(n=t[r]);r++)n.parentNode.removeChild(n)},registerRoot:function(e,t,n){var r=this.registry[t]={root:e,name:t,extendsName:n},o=this.findStyles(e);r.rootStyles=o,r.scopeStyles=r.rootStyles;var i=this.registry[r.extendsName];return i&&(r.scopeStyles=i.scopeStyles.concat(r.scopeStyles)),r},findStyles:function(e){if(!e)return[];var t=e.querySelectorAll("style");return Array.prototype.filter.call(t,function(e){return!e.hasAttribute(R)})},applyScopeToContent:function(e,t){e&&(Array.prototype.forEach.call(e.querySelectorAll("*"),function(e){e.setAttribute(t,"")}),Array.prototype.forEach.call(e.querySelectorAll("template"),function(e){this.applyScopeToContent(e.content,t)},this))},insertDirectives:function(e){return e=this.insertPolyfillDirectivesInCssText(e),this.insertPolyfillRulesInCssText(e)},insertPolyfillDirectivesInCssText:function(e){return e=e.replace(p,function(e,t){return t.slice(0,-2)+"{"}),e.replace(h,function(e,t){return t+" {"})},insertPolyfillRulesInCssText:function(e){return e=e.replace(f,function(e,t){return t.slice(0,-1)}),e.replace(m,function(e,t,n,r){var o=e.replace(t,"").replace(n,"");return r+o})},scopeCssText:function(e,t){var n=this.extractUnscopedRulesFromCssText(e);if(e=this.insertPolyfillHostInCssText(e),e=this.convertColonHost(e),e=this.convertColonHostContext(e),e=this.convertShadowDOMSelectors(e),t){var e,r=this;a(e,function(n){e=r.scopeRules(n,t)})}return e=e+"\n"+n,e.trim()},extractUnscopedRulesFromCssText:function(e){for(var t,n="";t=w.exec(e);)n+=t[1].slice(0,-1)+"\n\n";for(;t=v.exec(e);)n+=t[0].replace(t[2],"").replace(t[1],t[3])+"\n\n";return n},convertColonHost:function(e){return this.convertColonRule(e,E,this.colonHostPartReplacer)},convertColonHostContext:function(e){return this.convertColonRule(e,_,this.colonHostContextPartReplacer)},convertColonRule:function(e,t,n){return e.replace(t,function(e,t,r,o){if(t=O,r){for(var i,a=r.split(","),s=[],c=0,l=a.length;l>c&&(i=a[c]);c++)i=i.trim(),s.push(n(t,i,o));return s.join(",")}return t+o})},colonHostContextPartReplacer:function(e,t,n){return t.match(g)?this.colonHostPartReplacer(e,t,n):e+t+n+", "+t+" "+e+n},colonHostPartReplacer:function(e,t,n){return e+t.replace(g,"")+n},convertShadowDOMSelectors:function(e){for(var t=0;t","+","~"],r=e,o="["+t+"]";return n.forEach(function(e){var t=r.split(e);r=t.map(function(e){var t=e.trim().replace(L,"");return t&&n.indexOf(t)<0&&t.indexOf(o)<0&&(e=t.replace(/([^:]*)(:*)(.*)/,"$1"+o+"$2$3")),e}).join(e)}),r},insertPolyfillHostInCssText:function(e){return e.replace(M,b).replace(T,g)},propertiesFromRule:function(e){var t=e.style.cssText;e.style.content&&!e.style.content.match(/['"]+|attr/)&&(t=t.replace(/content:[^;]*;/g,"content: '"+e.style.content+"';"));var n=e.style;for(var r in n)"initial"===n[r]&&(t+=r+": initial; ");return t},replaceTextInStyles:function(e,t){e&&t&&(e instanceof Array||(e=[e]),Array.prototype.forEach.call(e,function(e){e.textContent=t.call(this,e.textContent)},this))},addCssToDocument:function(e,t){e.match("@import")?c(e,t):s(e)}},d=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim,p=/\/\*\s*@polyfill ([^*]*\*+([^/*][^*]*\*+)*\/)([^{]*?){/gim,h=/polyfill-next-selector[^}]*content\:[\s]*?['"](.*?)['"][;\s]*}([^{]*?){/gim,f=/\/\*\s@polyfill-rule([^*]*\*+([^/*][^*]*\*+)*)\//gim,m=/(polyfill-rule)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim,w=/\/\*\s@polyfill-unscoped-rule([^*]*\*+([^/*][^*]*\*+)*)\//gim,v=/(polyfill-unscoped-rule)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim,g="-shadowcsshost",b="-shadowcsscontext",y=")(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))?([^,{]*)",E=new RegExp("("+g+y,"gim"),_=new RegExp("("+b+y,"gim"),S="([>\\s~+[.,{:][\\s\\S]*)?$",T=/\:host/gim,M=/\:host-context/gim,O=g+"-no-combinator",L=new RegExp(g,"gim"),N=(new RegExp(b,"gim"),[/>>>/g,/::shadow/g,/::content/g,/\/deep\//g,/\/shadow\//g,/\/shadow-deep\//g,/\^\^/g,/\^/g]),C=document.createElement("iframe");C.style.display="none";var j,D=navigator.userAgent.match("Chrome"),H="shim-shadowdom",x="shim-shadowdom-css",R="no-shim";if(window.ShadowDOMPolyfill){s("style { display: none !important; }\n");var I=ShadowDOMPolyfill.wrap(document),P=I.querySelector("head");P.insertBefore(l(),P.childNodes[0]),document.addEventListener("DOMContentLoaded",function(){e.urlResolver;if(window.HTMLImports&&!HTMLImports.useNative){var t="link[rel=stylesheet]["+H+"]",n="style["+H+"]";HTMLImports.importer.documentPreloadSelectors+=","+t,HTMLImports.importer.importsPreloadSelectors+=","+t,HTMLImports.parser.documentSelectors=[HTMLImports.parser.documentSelectors,t,n].join(",");var r=HTMLImports.parser.parseGeneric;HTMLImports.parser.parseGeneric=function(e){if(!e[x]){var t=e.__importElement||e;if(!t.hasAttribute(H))return void r.call(this,e);e.__resource&&(t=e.ownerDocument.createElement("style"),t.textContent=e.__resource),HTMLImports.path.resolveUrlsInStyle(t,e.href),t.textContent=u.shimStyle(t),t.removeAttribute(H,""),t.setAttribute(x,""),t[x]=!0,t.parentNode!==P&&(e.parentNode===P?P.replaceChild(t,e):this.addElementToDocument(t)),t.__importParsed=!0,this.markParsingComplete(e),this.parseNext()}};var o=HTMLImports.parser.hasResource;HTMLImports.parser.hasResource=function(e){return"link"===e.localName&&"stylesheet"===e.rel&&e.hasAttribute(H)?e.__resource:o.call(this,e)}}})}e.ShadowCSS=u}(window.WebComponents)),function(e){window.ShadowDOMPolyfill?(window.wrap=ShadowDOMPolyfill.wrapIfNeeded,window.unwrap=ShadowDOMPolyfill.unwrapIfNeeded):window.wrap=window.unwrap=function(e){return e}}(window.WebComponents),function(e){"use strict";function t(e){return void 0!==p[e]}function n(){s.call(this),this._isInvalid=!0}function r(e){return""==e&&n.call(this),e.toLowerCase()}function o(e){var t=e.charCodeAt(0);return t>32&&127>t&&-1==[34,35,60,62,63,96].indexOf(t)?e:encodeURIComponent(e)}function i(e){var t=e.charCodeAt(0);return t>32&&127>t&&-1==[34,35,60,62,96].indexOf(t)?e:encodeURIComponent(e)}function a(e,a,s){function c(e){b.push(e)}var l=a||"scheme start",u=0,d="",v=!1,g=!1,b=[];e:for(;(e[u-1]!=f||0==u)&&!this._isInvalid;){var y=e[u];switch(l){case"scheme start":if(!y||!m.test(y)){if(a){c("Invalid scheme.");break e}d="",l="no scheme";continue}d+=y.toLowerCase(),l="scheme";break;case"scheme":if(y&&w.test(y))d+=y.toLowerCase();else{if(":"!=y){if(a){if(f==y)break e;c("Code point not allowed in scheme: "+y);break e}d="",u=0,l="no scheme";continue}if(this._scheme=d,d="",a)break e;t(this._scheme)&&(this._isRelative=!0),l="file"==this._scheme?"relative":this._isRelative&&s&&s._scheme==this._scheme?"relative or authority":this._isRelative?"authority first slash":"scheme data"}break;case"scheme data":"?"==y?(this._query="?",l="query"):"#"==y?(this._fragment="#",l="fragment"):f!=y&&" "!=y&&"\n"!=y&&"\r"!=y&&(this._schemeData+=o(y));break;case"no scheme":if(s&&t(s._scheme)){l="relative";continue}c("Missing scheme."),n.call(this);break;case"relative or authority":if("/"!=y||"/"!=e[u+1]){c("Expected /, got: "+y),l="relative";continue}l="authority ignore slashes";break;case"relative":if(this._isRelative=!0,"file"!=this._scheme&&(this._scheme=s._scheme),f==y){this._host=s._host,this._port=s._port,this._path=s._path.slice(),this._query=s._query,this._username=s._username,this._password=s._password;break e}if("/"==y||"\\"==y)"\\"==y&&c("\\ is an invalid code point."),l="relative slash";else if("?"==y)this._host=s._host,this._port=s._port,this._path=s._path.slice(),this._query="?",this._username=s._username,this._password=s._password,l="query";else{if("#"!=y){var E=e[u+1],_=e[u+2];("file"!=this._scheme||!m.test(y)||":"!=E&&"|"!=E||f!=_&&"/"!=_&&"\\"!=_&&"?"!=_&&"#"!=_)&&(this._host=s._host,this._port=s._port,this._username=s._username,this._password=s._password,this._path=s._path.slice(),this._path.pop()),l="relative path";continue}this._host=s._host,this._port=s._port,this._path=s._path.slice(),this._query=s._query,this._fragment="#",this._username=s._username,this._password=s._password,l="fragment"}break;case"relative slash":if("/"!=y&&"\\"!=y){"file"!=this._scheme&&(this._host=s._host,this._port=s._port,this._username=s._username,this._password=s._password),l="relative path";continue}"\\"==y&&c("\\ is an invalid code point."),l="file"==this._scheme?"file host":"authority ignore slashes";break;case"authority first slash":if("/"!=y){c("Expected '/', got: "+y),l="authority ignore slashes";continue}l="authority second slash";break;case"authority second slash":if(l="authority ignore slashes","/"!=y){c("Expected '/', got: "+y);continue}break;case"authority ignore slashes":if("/"!=y&&"\\"!=y){l="authority";continue}c("Expected authority, got: "+y);break;case"authority":if("@"==y){v&&(c("@ already seen."),d+="%40"),v=!0;for(var S=0;S0){var o=n[r-1],i=h(o,e);if(i)return void(n[r-1]=i)}else t(this.observer);n[r]=e},addListeners:function(){this.addListeners_(this.target)},addListeners_:function(e){var t=this.options;t.attributes&&e.addEventListener("DOMAttrModified",this,!0),t.characterData&&e.addEventListener("DOMCharacterDataModified",this,!0),t.childList&&e.addEventListener("DOMNodeInserted",this,!0),(t.childList||t.subtree)&&e.addEventListener("DOMNodeRemoved",this,!0)},removeListeners:function(){this.removeListeners_(this.target)},removeListeners_:function(e){var t=this.options;t.attributes&&e.removeEventListener("DOMAttrModified",this,!0),t.characterData&&e.removeEventListener("DOMCharacterDataModified",this,!0),t.childList&&e.removeEventListener("DOMNodeInserted",this,!0),(t.childList||t.subtree)&&e.removeEventListener("DOMNodeRemoved",this,!0)},addTransientObserver:function(e){if(e!==this.target){this.addListeners_(e),this.transientObservedNodes.push(e);var t=w.get(e);t||w.set(e,t=[]),t.push(this)}},removeTransientObservers:function(){var e=this.transientObservedNodes;this.transientObservedNodes=[],e.forEach(function(e){this.removeListeners_(e);for(var t=w.get(e),n=0;nh&&(p=s[h]);h++)a(p)?(c++,n()):(p.addEventListener("load",r),p.addEventListener("error",i));else n()}function a(e){return d?e.__loaded||e["import"]&&"loading"!==e["import"].readyState:e.__importParsed}function s(e){for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)c(t)&&l(t)}function c(e){return"link"===e.localName&&"import"===e.rel}function l(e){var t=e["import"];t?o({target:e}):(e.addEventListener("load",o),e.addEventListener("error",o))}var u="import",d=Boolean(u in document.createElement("link")),p=Boolean(window.ShadowDOMPolyfill),h=function(e){return p?window.ShadowDOMPolyfill.wrapIfNeeded(e):e},f=h(document),m={get:function(){var e=window.HTMLImports.currentScript||document.currentScript||("complete"!==document.readyState?document.scripts[document.scripts.length-1]:null);return h(e)},configurable:!0};Object.defineProperty(document,"_currentScript",m),Object.defineProperty(f,"_currentScript",m);var w=/Trident/.test(navigator.userAgent),v=w?"complete":"interactive",g="readystatechange";d&&(new MutationObserver(function(e){for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)t.addedNodes&&s(t.addedNodes)}).observe(document.head,{childList:!0}),function(){if("loading"===document.readyState)for(var e,t=document.querySelectorAll("link[rel=import]"),n=0,r=t.length;r>n&&(e=t[n]);n++)l(e)}()),t(function(e){window.HTMLImports.ready=!0,window.HTMLImports.readyTime=(new Date).getTime();var t=f.createEvent("CustomEvent");t.initCustomEvent("HTMLImportsLoaded",!0,!0,e),f.dispatchEvent(t)}),e.IMPORT_LINK_TYPE=u,e.useNative=d,e.rootDocument=f,e.whenReady=t,e.isIE=w}(window.HTMLImports),function(e){var t=[],n=function(e){t.push(e)},r=function(){t.forEach(function(t){t(e)})};e.addModule=n,e.initializeModules=r}(window.HTMLImports),window.HTMLImports.addModule(function(e){var t=/(url\()([^)]*)(\))/g,n=/(@import[\s]+(?!url\())([^;]*)(;)/g,r={resolveUrlsInStyle:function(e,t){var n=e.ownerDocument,r=n.createElement("a");return e.textContent=this.resolveUrlsInCssText(e.textContent,t,r),e},resolveUrlsInCssText:function(e,r,o){var i=this.replaceUrls(e,o,r,t);return i=this.replaceUrls(i,o,r,n)},replaceUrls:function(e,t,n,r){return e.replace(r,function(e,r,o,i){var a=o.replace(/["']/g,"");return n&&(a=new URL(a,n).href),t.href=a,a=t.href,r+"'"+a+"'"+i})}};e.path=r}),window.HTMLImports.addModule(function(e){var t={async:!0,ok:function(e){return e.status>=200&&e.status<300||304===e.status||0===e.status},load:function(n,r,o){var i=new XMLHttpRequest;return(e.flags.debug||e.flags.bust)&&(n+="?"+Math.random()),i.open("GET",n,t.async),i.addEventListener("readystatechange",function(e){
-if(4===i.readyState){var n=i.getResponseHeader("Location"),a=null;if(n)var a="/"===n.substr(0,1)?location.origin+n:n;r.call(o,!t.ok(i)&&i,i.response||i.responseText,a)}}),i.send(),i},loadDocument:function(e,t,n){this.load(e,t,n).responseType="document"}};e.xhr=t}),window.HTMLImports.addModule(function(e){var t=e.xhr,n=e.flags,r=function(e,t){this.cache={},this.onload=e,this.oncomplete=t,this.inflight=0,this.pending={}};r.prototype={addNodes:function(e){this.inflight+=e.length;for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)this.require(t);this.checkDone()},addNode:function(e){this.inflight++,this.require(e),this.checkDone()},require:function(e){var t=e.src||e.href;e.__nodeUrl=t,this.dedupe(t,e)||this.fetch(t,e)},dedupe:function(e,t){if(this.pending[e])return this.pending[e].push(t),!0;return this.cache[e]?(this.onload(e,t,this.cache[e]),this.tail(),!0):(this.pending[e]=[t],!1)},fetch:function(e,r){if(n.load&&console.log("fetch",e,r),e)if(e.match(/^data:/)){var o=e.split(","),i=o[0],a=o[1];a=i.indexOf(";base64")>-1?atob(a):decodeURIComponent(a),setTimeout(function(){this.receive(e,r,null,a)}.bind(this),0)}else{var s=function(t,n,o){this.receive(e,r,t,n,o)}.bind(this);t.load(e,s)}else setTimeout(function(){this.receive(e,r,{error:"href must be specified"},null)}.bind(this),0)},receive:function(e,t,n,r,o){this.cache[e]=r;for(var i,a=this.pending[e],s=0,c=a.length;c>s&&(i=a[s]);s++)this.onload(e,i,r,n,o),this.tail();this.pending[e]=null},tail:function(){--this.inflight,this.checkDone()},checkDone:function(){this.inflight||this.oncomplete()}},e.Loader=r}),window.HTMLImports.addModule(function(e){var t=function(e){this.addCallback=e,this.mo=new MutationObserver(this.handler.bind(this))};t.prototype={handler:function(e){for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)"childList"===t.type&&t.addedNodes.length&&this.addedNodes(t.addedNodes)},addedNodes:function(e){this.addCallback&&this.addCallback(e);for(var t,n=0,r=e.length;r>n&&(t=e[n]);n++)t.children&&t.children.length&&this.addedNodes(t.children)},observe:function(e){this.mo.observe(e,{childList:!0,subtree:!0})}},e.Observer=t}),window.HTMLImports.addModule(function(e){function t(e){return"link"===e.localName&&e.rel===u}function n(e){var t=r(e);return"data:text/javascript;charset=utf-8,"+encodeURIComponent(t)}function r(e){return e.textContent+o(e)}function o(e){var t=e.ownerDocument;t.__importedScripts=t.__importedScripts||0;var n=e.ownerDocument.baseURI,r=t.__importedScripts?"-"+t.__importedScripts:"";return t.__importedScripts++,"\n//# sourceURL="+n+r+".js\n"}function i(e){var t=e.ownerDocument.createElement("style");return t.textContent=e.textContent,a.resolveUrlsInStyle(t),t}var a=e.path,s=e.rootDocument,c=e.flags,l=e.isIE,u=e.IMPORT_LINK_TYPE,d="link[rel="+u+"]",p={documentSelectors:d,importsSelectors:[d,"link[rel=stylesheet]:not([type])","style:not([type])","script:not([type])",'script[type="application/javascript"]','script[type="text/javascript"]'].join(","),map:{link:"parseLink",script:"parseScript",style:"parseStyle"},dynamicElements:[],parseNext:function(){var e=this.nextToParse();e&&this.parse(e)},parse:function(e){if(this.isParsed(e))return void(c.parse&&console.log("[%s] is already parsed",e.localName));var t=this[this.map[e.localName]];t&&(this.markParsing(e),t.call(this,e))},parseDynamic:function(e,t){this.dynamicElements.push(e),t||this.parseNext()},markParsing:function(e){c.parse&&console.log("parsing",e),this.parsingElement=e},markParsingComplete:function(e){e.__importParsed=!0,this.markDynamicParsingComplete(e),e.__importElement&&(e.__importElement.__importParsed=!0,this.markDynamicParsingComplete(e.__importElement)),this.parsingElement=null,c.parse&&console.log("completed",e)},markDynamicParsingComplete:function(e){var t=this.dynamicElements.indexOf(e);t>=0&&this.dynamicElements.splice(t,1)},parseImport:function(e){if(e["import"]=e.__doc,window.HTMLImports.__importsParsingHook&&window.HTMLImports.__importsParsingHook(e),e["import"]&&(e["import"].__importParsed=!0),this.markParsingComplete(e),e.dispatchEvent(e.__resource&&!e.__error?new CustomEvent("load",{bubbles:!1}):new CustomEvent("error",{bubbles:!1})),e.__pending)for(var t;e.__pending.length;)t=e.__pending.shift(),t&&t({target:e});this.parseNext()},parseLink:function(e){t(e)?this.parseImport(e):(e.href=e.href,this.parseGeneric(e))},parseStyle:function(e){var t=e;e=i(e),t.__appliedElement=e,e.__importElement=t,this.parseGeneric(e)},parseGeneric:function(e){this.trackElement(e),this.addElementToDocument(e)},rootImportForElement:function(e){for(var t=e;t.ownerDocument.__importLink;)t=t.ownerDocument.__importLink;return t},addElementToDocument:function(e){var t=this.rootImportForElement(e.__importElement||e);t.parentNode.insertBefore(e,t)},trackElement:function(e,t){var n=this,r=function(o){e.removeEventListener("load",r),e.removeEventListener("error",r),t&&t(o),n.markParsingComplete(e),n.parseNext()};if(e.addEventListener("load",r),e.addEventListener("error",r),l&&"style"===e.localName){var o=!1;if(-1==e.textContent.indexOf("@import"))o=!0;else if(e.sheet){o=!0;for(var i,a=e.sheet.cssRules,s=a?a.length:0,c=0;s>c&&(i=a[c]);c++)i.type===CSSRule.IMPORT_RULE&&(o=o&&Boolean(i.styleSheet))}o&&setTimeout(function(){e.dispatchEvent(new CustomEvent("load",{bubbles:!1}))})}},parseScript:function(t){var r=document.createElement("script");r.__importElement=t,r.src=t.src?t.src:n(t),e.currentScript=t,this.trackElement(r,function(t){r.parentNode&&r.parentNode.removeChild(r),e.currentScript=null}),this.addElementToDocument(r)},nextToParse:function(){return this._mayParse=[],!this.parsingElement&&(this.nextToParseInDoc(s)||this.nextToParseDynamic())},nextToParseInDoc:function(e,n){if(e&&this._mayParse.indexOf(e)<0){this._mayParse.push(e);for(var r,o=e.querySelectorAll(this.parseSelectorsForNode(e)),i=0,a=o.length;a>i&&(r=o[i]);i++)if(!this.isParsed(r))return this.hasResource(r)?t(r)?this.nextToParseInDoc(r.__doc,r):r:void 0}return n},nextToParseDynamic:function(){return this.dynamicElements[0]},parseSelectorsForNode:function(e){var t=e.ownerDocument||e;return t===s?this.documentSelectors:this.importsSelectors},isParsed:function(e){return e.__importParsed},needsDynamicParsing:function(e){return this.dynamicElements.indexOf(e)>=0},hasResource:function(e){return t(e)&&void 0===e.__doc?!1:!0}};e.parser=p,e.IMPORT_SELECTOR=d}),window.HTMLImports.addModule(function(e){function t(e){return n(e,a)}function n(e,t){return"link"===e.localName&&e.getAttribute("rel")===t}function r(e){return!!Object.getOwnPropertyDescriptor(e,"baseURI")}function o(e,t){var n=document.implementation.createHTMLDocument(a);n._URL=t;var o=n.createElement("base");o.setAttribute("href",t),n.baseURI||r(n)||Object.defineProperty(n,"baseURI",{value:t});var i=n.createElement("meta");return i.setAttribute("charset","utf-8"),n.head.appendChild(i),n.head.appendChild(o),n.body.innerHTML=e,window.HTMLTemplateElement&&HTMLTemplateElement.bootstrap&&HTMLTemplateElement.bootstrap(n),n}var i=e.flags,a=e.IMPORT_LINK_TYPE,s=e.IMPORT_SELECTOR,c=e.rootDocument,l=e.Loader,u=e.Observer,d=e.parser,p={documents:{},documentPreloadSelectors:s,importsPreloadSelectors:[s].join(","),loadNode:function(e){h.addNode(e)},loadSubtree:function(e){var t=this.marshalNodes(e);h.addNodes(t)},marshalNodes:function(e){return e.querySelectorAll(this.loadSelectorsForNode(e))},loadSelectorsForNode:function(e){var t=e.ownerDocument||e;return t===c?this.documentPreloadSelectors:this.importsPreloadSelectors},loaded:function(e,n,r,a,s){if(i.load&&console.log("loaded",e,n),n.__resource=r,n.__error=a,t(n)){var c=this.documents[e];void 0===c&&(c=a?null:o(r,s||e),c&&(c.__importLink=n,this.bootDocument(c)),this.documents[e]=c),n.__doc=c}d.parseNext()},bootDocument:function(e){this.loadSubtree(e),this.observer.observe(e),d.parseNext()},loadedAll:function(){d.parseNext()}},h=new l(p.loaded.bind(p),p.loadedAll.bind(p));if(p.observer=new u,!document.baseURI){var f={get:function(){var e=document.querySelector("base");return e?e.href:window.location.href},configurable:!0};Object.defineProperty(document,"baseURI",f),Object.defineProperty(c,"baseURI",f)}e.importer=p,e.importLoader=h}),window.HTMLImports.addModule(function(e){var t=e.parser,n=e.importer,r={added:function(e){for(var r,o,i,a,s=0,c=e.length;c>s&&(a=e[s]);s++)r||(r=a.ownerDocument,o=t.isParsed(r)),i=this.shouldLoadNode(a),i&&n.loadNode(a),this.shouldParseNode(a)&&o&&t.parseDynamic(a,i)},shouldLoadNode:function(e){return 1===e.nodeType&&o.call(e,n.loadSelectorsForNode(e))},shouldParseNode:function(e){return 1===e.nodeType&&o.call(e,t.parseSelectorsForNode(e))}};n.observer.addCallback=r.added.bind(r);var o=HTMLElement.prototype.matches||HTMLElement.prototype.matchesSelector||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector}),function(e){function t(){window.HTMLImports.importer.bootDocument(o)}var n=e.initializeModules,r=e.isIE;if(!e.useNative){r&&"function"!=typeof window.CustomEvent&&(window.CustomEvent=function(e,t){t=t||{};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,Boolean(t.bubbles),Boolean(t.cancelable),t.detail),n.preventDefault=function(){Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})},n},window.CustomEvent.prototype=window.Event.prototype),n();var o=e.rootDocument;"complete"===document.readyState||"interactive"===document.readyState&&!window.attachEvent?t():document.addEventListener("DOMContentLoaded",t)}}(window.HTMLImports),window.CustomElements=window.CustomElements||{flags:{}},function(e){var t=e.flags,n=[],r=function(e){n.push(e)},o=function(){n.forEach(function(t){t(e)})};e.addModule=r,e.initializeModules=o,e.hasNative=Boolean(document.registerElement),e.useNative=!t.register&&e.hasNative&&!window.ShadowDOMPolyfill&&(!window.HTMLImports||window.HTMLImports.useNative)}(window.CustomElements),window.CustomElements.addModule(function(e){function t(e,t){n(e,function(e){return t(e)?!0:void r(e,t)}),r(e,t)}function n(e,t,r){var o=e.firstElementChild;if(!o)for(o=e.firstChild;o&&o.nodeType!==Node.ELEMENT_NODE;)o=o.nextSibling;for(;o;)t(o,r)!==!0&&n(o,t,r),o=o.nextElementSibling;return null}function r(e,n){for(var r=e.shadowRoot;r;)t(r,n),r=r.olderShadowRoot}function o(e,t){i(e,t,[])}function i(e,t,n){if(e=window.wrap(e),!(n.indexOf(e)>=0)){n.push(e);for(var r,o=e.querySelectorAll("link[rel="+a+"]"),s=0,c=o.length;c>s&&(r=o[s]);s++)r["import"]&&i(r["import"],t,n);t(e)}}var a=window.HTMLImports?window.HTMLImports.IMPORT_LINK_TYPE:"none";e.forDocumentTree=o,e.forSubtree=t}),window.CustomElements.addModule(function(e){function t(e,t){return n(e,t)||r(e,t)}function n(t,n){return e.upgrade(t,n)?!0:void(n&&a(t))}function r(e,t){b(e,function(e){return n(e,t)?!0:void 0})}function o(e){S.push(e),_||(_=!0,setTimeout(i))}function i(){_=!1;for(var e,t=S,n=0,r=t.length;r>n&&(e=t[n]);n++)e();S=[]}function a(e){E?o(function(){s(e)}):s(e)}function s(e){e.__upgraded__&&!e.__attached&&(e.__attached=!0,e.attachedCallback&&e.attachedCallback())}function c(e){l(e),b(e,function(e){l(e)})}function l(e){E?o(function(){u(e)}):u(e)}function u(e){e.__upgraded__&&e.__attached&&(e.__attached=!1,e.detachedCallback&&e.detachedCallback())}function d(e){for(var t=e,n=window.wrap(document);t;){if(t==n)return!0;t=t.parentNode||t.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&t.host}}function p(e){if(e.shadowRoot&&!e.shadowRoot.__watched){g.dom&&console.log("watching shadow-root for: ",e.localName);for(var t=e.shadowRoot;t;)m(t),t=t.olderShadowRoot}}function h(e,n){if(g.dom){var r=n[0];if(r&&"childList"===r.type&&r.addedNodes&&r.addedNodes){for(var o=r.addedNodes[0];o&&o!==document&&!o.host;)o=o.parentNode;var i=o&&(o.URL||o._URL||o.host&&o.host.localName)||"";i=i.split("/?").shift().split("/").pop()}console.group("mutations (%d) [%s]",n.length,i||"")}var a=d(e);n.forEach(function(e){"childList"===e.type&&(T(e.addedNodes,function(e){e.localName&&t(e,a)}),T(e.removedNodes,function(e){e.localName&&c(e)}))}),g.dom&&console.groupEnd()}function f(e){for(e=window.wrap(e),e||(e=window.wrap(document));e.parentNode;)e=e.parentNode;var t=e.__observer;t&&(h(e,t.takeRecords()),i())}function m(e){if(!e.__observer){var t=new MutationObserver(h.bind(this,e));t.observe(e,{childList:!0,subtree:!0}),e.__observer=t}}function w(e){e=window.wrap(e),g.dom&&console.group("upgradeDocument: ",e.baseURI.split("/").pop());var n=e===window.wrap(document);t(e,n),m(e),g.dom&&console.groupEnd()}function v(e){y(e,w)}var g=e.flags,b=e.forSubtree,y=e.forDocumentTree,E=!window.MutationObserver||window.MutationObserver===window.JsMutationObserver;e.hasPolyfillMutations=E;var _=!1,S=[],T=Array.prototype.forEach.call.bind(Array.prototype.forEach),M=Element.prototype.createShadowRoot;M&&(Element.prototype.createShadowRoot=function(){var e=M.call(this);return window.CustomElements.watchShadow(this),e}),e.watchShadow=p,e.upgradeDocumentTree=v,e.upgradeDocument=w,e.upgradeSubtree=r,e.upgradeAll=t,e.attached=a,e.takeRecords=f}),window.CustomElements.addModule(function(e){function t(t,r){if(!t.__upgraded__&&t.nodeType===Node.ELEMENT_NODE){var o=t.getAttribute("is"),i=e.getRegisteredDefinition(t.localName)||e.getRegisteredDefinition(o);if(i&&(o&&i.tag==t.localName||!o&&!i["extends"]))return n(t,i,r)}}function n(t,n,o){return a.upgrade&&console.group("upgrade:",t.localName),n.is&&t.setAttribute("is",n.is),r(t,n),t.__upgraded__=!0,i(t),o&&e.attached(t),e.upgradeSubtree(t,o),a.upgrade&&console.groupEnd(),t}function r(e,t){Object.__proto__?e.__proto__=t.prototype:(o(e,t.prototype,t["native"]),e.__proto__=t.prototype)}function o(e,t,n){for(var r={},o=t;o!==n&&o!==HTMLElement.prototype;){for(var i,a=Object.getOwnPropertyNames(o),s=0;i=a[s];s++)r[i]||(Object.defineProperty(e,i,Object.getOwnPropertyDescriptor(o,i)),r[i]=1);o=Object.getPrototypeOf(o)}}function i(e){e.createdCallback&&e.createdCallback()}var a=e.flags;e.upgrade=t,e.upgradeWithDefinition=n,e.implementPrototype=r}),window.CustomElements.addModule(function(e){function t(t,r){var c=r||{};if(!t)throw new Error("document.registerElement: first argument `+"`"+`name`+"`"+` must not be empty");if(t.indexOf("-")<0)throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '"+String(t)+"'.");if(o(t))throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '"+String(t)+"'. The type name is invalid.");if(l(t))throw new Error("DuplicateDefinitionError: a type with name '"+String(t)+"' is already registered");return c.prototype||(c.prototype=Object.create(HTMLElement.prototype)),c.__name=t.toLowerCase(),c.lifecycle=c.lifecycle||{},c.ancestry=i(c["extends"]),a(c),s(c),n(c.prototype),u(c.__name,c),c.ctor=d(c),c.ctor.prototype=c.prototype,c.prototype.constructor=c.ctor,e.ready&&v(document),c.ctor}function n(e){if(!e.setAttribute._polyfilled){var t=e.setAttribute;e.setAttribute=function(e,n){r.call(this,e,n,t)};var n=e.removeAttribute;e.removeAttribute=function(e){r.call(this,e,null,n)},e.setAttribute._polyfilled=!0}}function r(e,t,n){e=e.toLowerCase();var r=this.getAttribute(e);n.apply(this,arguments);var o=this.getAttribute(e);this.attributeChangedCallback&&o!==r&&this.attributeChangedCallback(e,r,o)}function o(e){for(var t=0;t<_.length;t++)if(e===_[t])return!0}function i(e){var t=l(e);return t?i(t["extends"]).concat([t]):[]}function a(e){for(var t,n=e["extends"],r=0;t=e.ancestry[r];r++)n=t.is&&t.tag;e.tag=n||e.__name,n&&(e.is=e.__name)}function s(e){if(!Object.__proto__){var t=HTMLElement.prototype;if(e.is){var n=document.createElement(e.tag);t=Object.getPrototypeOf(n)}for(var r,o=e.prototype,i=!1;o;)o==t&&(i=!0),r=Object.getPrototypeOf(o),r&&(o.__proto__=r),o=r;i||console.warn(e.tag+" prototype not found in prototype chain for "+e.is),e["native"]=t}}function c(e){return b(M(e.tag),e)}function l(e){return e?S[e.toLowerCase()]:void 0}function u(e,t){S[e]=t}function d(e){return function(){return c(e)}}function p(e,t,n){return e===T?h(t,n):O(e,t)}function h(e,t){e&&(e=e.toLowerCase()),t&&(t=t.toLowerCase());var n=l(t||e);if(n){if(e==n.tag&&t==n.is)return new n.ctor;if(!t&&!n.is)return new n.ctor}var r;return t?(r=h(e),r.setAttribute("is",t),r):(r=M(e),e.indexOf("-")>=0&&y(r,HTMLElement),r)}function f(e,t){var n=e[t];e[t]=function(){var e=n.apply(this,arguments);return g(e),e}}var m,w=e.isIE11OrOlder,v=e.upgradeDocumentTree,g=e.upgradeAll,b=e.upgradeWithDefinition,y=e.implementPrototype,E=e.useNative,_=["annotation-xml","color-profile","font-face","font-face-src","font-face-uri","font-face-format","font-face-name","missing-glyph"],S={},T="http://www.w3.org/1999/xhtml",M=document.createElement.bind(document),O=document.createElementNS.bind(document);m=Object.__proto__||E?function(e,t){return e instanceof t}:function(e,t){if(e instanceof t)return!0;for(var n=e;n;){if(n===t.prototype)return!0;n=n.__proto__}return!1},f(Node.prototype,"cloneNode"),f(document,"importNode"),w&&!function(){var e=document.importNode;document.importNode=function(){var t=e.apply(document,arguments);if(t.nodeType==t.DOCUMENT_FRAGMENT_NODE){var n=document.createDocumentFragment();return n.appendChild(t),n}return t}}(),document.registerElement=t,document.createElement=h,document.createElementNS=p,e.registry=S,e["instanceof"]=m,e.reservedTagList=_,e.getRegisteredDefinition=l,document.register=document.registerElement}),function(e){function t(){a(window.wrap(document)),window.CustomElements.ready=!0,requestAnimationFrame(function(){setTimeout(function(){window.CustomElements.readyTime=Date.now(),window.HTMLImports&&(window.CustomElements.elapsed=window.CustomElements.readyTime-window.HTMLImports.readyTime),document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))})})}var n=e.useNative,r=e.initializeModules,o=/Trident/.test(navigator.userAgent);if(n){var i=function(){};e.watchShadow=i,e.upgrade=i,e.upgradeAll=i,e.upgradeDocumentTree=i,e.upgradeSubtree=i,e.takeRecords=i,e["instanceof"]=function(e,t){return e instanceof t}}else r();var a=e.upgradeDocumentTree,s=e.upgradeDocument;if(window.wrap||(window.ShadowDOMPolyfill?(window.wrap=window.ShadowDOMPolyfill.wrapIfNeeded,window.unwrap=window.ShadowDOMPolyfill.unwrapIfNeeded):window.wrap=window.unwrap=function(e){return e}),window.HTMLImports&&(window.HTMLImports.__importsParsingHook=function(e){e["import"]&&s(wrap(e["import"]))}),o&&"function"!=typeof window.CustomEvent&&(window.CustomEvent=function(e,t){t=t||{};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,Boolean(t.bubbles),Boolean(t.cancelable),t.detail),n.preventDefault=function(){Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})},n},window.CustomEvent.prototype=window.Event.prototype),"complete"===document.readyState||e.flags.eager)t();else if("interactive"!==document.readyState||window.attachEvent||window.HTMLImports&&!window.HTMLImports.ready){var c=window.HTMLImports&&!window.HTMLImports.ready?"HTMLImportsLoaded":"DOMContentLoaded";window.addEventListener(c,t)}else t();e.isIE11OrOlder=o}(window.CustomElements),function(e){Function.prototype.bind||(Function.prototype.bind=function(e){var t=this,n=Array.prototype.slice.call(arguments,1);return function(){var r=n.slice();return r.push.apply(r,arguments),t.apply(e,r)}})}(window.WebComponents),function(e){"use strict";if(!window.performance){var t=Date.now();window.performance={now:function(){return Date.now()-t}}}window.requestAnimationFrame||(window.requestAnimationFrame=function(){var e=window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame;return e?function(t){return e(function(){t(performance.now())})}:function(e){return window.setTimeout(e,1e3/60)}}()),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(){return window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||function(e){clearTimeout(e)}}())}(window.WebComponents),function(e){var t=document.createElement("style");t.textContent="body {transition: opacity ease-in 0.2s; } \nbody[unresolved] {opacity: 0; display: block; overflow: hidden; position: relative; } \n";var n=document.querySelector("head");n.insertBefore(t,n.firstChild)}(window.WebComponents),function(e){window.Platform=e}(window.WebComponents);`},
- "/index.html": {"/index.html", time.Unix(0, 1441663014153278782), false, `
-
-
-
-
-
- Memory latency profile browser
-
-
-
-
-
-
-
-
-
-`},
- "/memlat-browser.html": {"/memlat-browser.html", time.Unix(0, 1553308639140562297), false, `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{{_m.Filename}}
-
- {{item.k}} {{item.v}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Filter
-
-
-
- All
-
-
-
-
- {{_label(item)}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- By function
- Source annotation
- By source line
- By data source
- By address
- By process
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
- | |
-
-
-
-
-
- |
-
- | Memory access cycles distribution |
-
-
-
- |
-
- | |
-
-
-
-
-
-
- {{item.text}} |
-
-
- {{item.text}} |
-
-
-
-
-
- |
- {{item.text}} |
-
-
- {{_label(item)}} |
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`},
- }
-}