Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(206)

Side by Side Diff: pkg/web_components/lib/platform.js.map

Issue 158083002: introduce web_components pkg for consolidated polyfills (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 {"version":3,"file":"platform.js","sources":["../PointerGestures/src/PointerGest ureEvent.js","../WeakMap/weakmap.js","../observe-js/src/observe.js","build/if-po ly.js","../ShadowDOM/src/wrappers.js","../ShadowDOM/src/microtask.js","../Shadow DOM/src/MutationObserver.js","../ShadowDOM/src/wrappers/events.js","../ShadowDOM /src/wrappers/NodeList.js","../ShadowDOM/src/wrappers/Node.js","../ShadowDOM/src /querySelector.js","../ShadowDOM/src/wrappers/node-interfaces.js","../ShadowDOM/ src/wrappers/CharacterData.js","../ShadowDOM/src/wrappers/Text.js","../ShadowDOM /src/wrappers/Element.js","../ShadowDOM/src/wrappers/HTMLElement.js","../ShadowD OM/src/wrappers/HTMLCanvasElement.js","../ShadowDOM/src/wrappers/HTMLContentElem ent.js","../ShadowDOM/src/wrappers/HTMLImageElement.js","../ShadowDOM/src/wrappe rs/HTMLShadowElement.js","../ShadowDOM/src/wrappers/HTMLTemplateElement.js","../ ShadowDOM/src/wrappers/HTMLMediaElement.js","../ShadowDOM/src/wrappers/HTMLAudio Element.js","../ShadowDOM/src/wrappers/HTMLOptionElement.js","../ShadowDOM/src/w rappers/HTMLUnknownElement.js","../ShadowDOM/src/wrappers/SVGElement.js","../Sha dowDOM/src/wrappers/SVGUseElement.js","../ShadowDOM/src/wrappers/SVGElementInsta nce.js","../ShadowDOM/src/wrappers/CanvasRenderingContext2D.js","../ShadowDOM/sr c/wrappers/WebGLRenderingContext.js","../ShadowDOM/src/wrappers/Range.js","../Sh adowDOM/src/wrappers/generic.js","../ShadowDOM/src/wrappers/ShadowRoot.js","../S hadowDOM/src/ShadowRenderer.js","../ShadowDOM/src/wrappers/elements-with-form-pr operty.js","../ShadowDOM/src/wrappers/Selection.js","../ShadowDOM/src/wrappers/D ocument.js","../ShadowDOM/src/wrappers/Window.js","../ShadowDOM/src/wrappers/ove rride-constructors.js","src/patches-shadowdom-polyfill.js","src/ShadowCSS.js","s rc/patches-shadowdom-native.js","../URL/url.js","src/lang.js","src/dom.js","src/ template.js","src/inspector.js","src/unresolved.js","src/module.js","src/microta sk.js","src/url.js","../MutationObservers/MutationObserver.js","../HTMLImports/s rc/scope.js","../HTMLImports/src/Loader.js","../HTMLImports/src/Parser.js","../H TMLImports/src/HTMLImports.js","../HTMLImports/src/Observer.js","../HTMLImports/ src/boot.js","../CustomElements/src/scope.js","../CustomElements/src/Observer.js ","../CustomElements/src/CustomElements.js","../CustomElements/src/Parser.js",". ./CustomElements/src/boot.js","src/patches-custom-elements.js","src/loader.js"," ../PointerEvents/src/boot.js","../PointerEvents/src/touch-action.js","../Pointer Events/src/PointerEvent.js","../PointerEvents/src/pointermap.js","../PointerEven ts/src/dispatcher.js","../PointerEvents/src/installer.js","../PointerEvents/src/ mouse.js","../PointerEvents/src/touch.js","../PointerEvents/src/ms.js","../Point erEvents/src/platform-events.js","../PointerEvents/src/capture.js","../PointerGe stures/src/initialize.js","../PointerGestures/src/pointermap.js","../PointerGest ures/src/dispatcher.js","../PointerGestures/src/hold.js","../PointerGestures/src /track.js","../PointerGestures/src/flick.js","../PointerGestures/src/pinch.js"," ../PointerGestures/src/tap.js","../NodeBind/src/NodeBind.js","../TemplateBinding /src/TemplateBinding.js","../polymer-expressions/third_party/esprima/esprima.js" ,"../polymer-expressions/src/polymer-expressions.js","src/patches-mdv.js"],"name s":[],"mappings":"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 KA,EAAA,MAAA,GAEA,OAAA","sourcesContent":["/*\n * Copyright 2013 The Polymer Aut hors. All rights reserved.\n * Use of this source code is governed by a BSD-styl e\n * license that can be found in the LICENSE file.\n */\n\n/**\n * PointerGest ureEvent is the constructor for all PointerGesture events.\n *\n * @module Point erGestures\n * @class PointerGestureEvent\n * @extends UIEvent\n * @constructor\ n * @param {String} inType Event type\n * @param {Object} [inDict] Dictionary of properties to initialize on the event\n */\n\nfunction PointerGestureEvent(inTy pe, inDict) {\n var dict = inDict || {};\n var e = document.createEvent('Event ');\n var props = {\n bubbles: Boolean(dict.bubbles) === dict.bubbles || tru e,\n cancelable: Boolean(dict.cancelable) === dict.cancelable || true\n };\n \n e.initEvent(inType, props.bubbles, props.cancelable);\n\n var keys = Object .keys(dict), k;\n for (var i = 0; i < keys.length; i++) {\n k = keys[i];\n e[k] = dict[k];\n }\n\n e.preventTap = this.preventTap;\n\n return e;\n}\n\ n/**\n * Allows for any gesture to prevent the tap gesture.\n *\n * @method prev entTap\n */\nPointerGestureEvent.prototype.preventTap = function() {\n this.tap Prevented = true;\n};\n\n","/*\n * Copyright 2012 The Polymer Authors. All right s reserved.\n * Use of this source code is governed by a BSD-style\n * license t hat can be found in the LICENSE file.\n */\n\nif (typeof WeakMap === 'undefined' ) {\n (function() {\n var defineProperty = Object.defineProperty;\n var c ounter = Date.now() % 1e9;\n\n var WeakMap = function() {\n this.name = '__st' + (Math.random() * 1e9 >>> 0) + (counter++ + '__');\n };\n\n WeakMa p.prototype = {\n set: function(key, value) {\n var entry = key[this .name];\n if (entry && entry[0] === key)\n entry[1] = value;\n else\n defineProperty(key, this.name, {value: [key, value], writa ble: true});\n },\n get: function(key) {\n var entry;\n return (entry = key[this.name]) && entry[0] === key ?\n entry[1] : un defined;\n },\n delete: function(key) {\n this.set(key, undefin ed);\n }\n };\n\n window.WeakMap = WeakMap;\n })();\n}\n","// Copyri ght 2012 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the Licen se.\n// You may obtain a copy of the License at\n//\n// http://www.apache.or g/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS I S\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or i mplied.\n// See the License for the specific language governing permissions and\ n// limitations under the License.\n\n(function(global) {\n 'use strict';\n\n var PROP_ADD_TYPE = 'add';\n var PROP_UPDATE_TYPE = 'update';\n var PROP_RECON FIGURE_TYPE = 'reconfigure';\n var PROP_DELETE_TYPE = 'delete';\n var ARRAY_SP LICE_TYPE = 'splice';\n\n // Detect and do basic sanity checking on Object/Arra y.observe.\n function detectObjectObserve() {\n if (typeof Object.observe != = 'function' ||\n typeof Array.observe !== 'function') {\n return fa lse;\n }\n\n var records = [];\n\n function callback(recs) {\n rec ords = recs;\n }\n\n var test = {};\n Object.observe(test, callback);\n test.id = 1;\n test.id = 2;\n delete test.id;\n Object.deliverChang eRecords(callback);\n if (records.length !== 3)\n return false;\n\n / / TODO(rafaelw): Remove this when new change record type names make it to\n / / chrome release.\n if (records[0].type == 'new' &&\n records[1].type == 'updated' &&\n records[2].type == 'deleted') {\n PROP_ADD_TYPE = 'new';\n PROP_UPDATE_TYPE = 'updated';\n PROP_RECONFIGURE_TYPE = 'reco nfigured';\n PROP_DELETE_TYPE = 'deleted';\n } else if (records[0].type != 'add' ||\n records[1].type != 'update' ||\n recor ds[2].type != 'delete') {\n console.error('Unexpected change record names f or Object.observe. ' +\n 'Using dirty-checking instead');\n return false;\n }\n Object.unobserve(test, callback);\n\n test = [0 ];\n Array.observe(test, callback);\n test[1] = 1;\n test.length = 0;\n Object.deliverChangeRecords(callback);\n if (records.length != 2)\n return false;\n if (records[0].type != ARRAY_SPLICE_TYPE ||\n records[ 1].type != ARRAY_SPLICE_TYPE) {\n return false;\n }\n Array.unobserve (test, callback);\n\n return true;\n }\n\n var hasObserve = detectObjectObs erve();\n\n function detectEval() {\n // don't test for eval if document has CSP securityPolicy object and we can see that\n // eval is not supported. Th is avoids an error message in console even when the exception\n // is caught\ n if (global.document &&\n 'securityPolicy' in global.document &&\n !global.document.securityPolicy.allowsEval) {\n return false;\n }\n \n try {\n var f = new Function('', 'return true;');\n return f();\ n } catch (ex) {\n return false;\n }\n }\n\n var hasEval = detectEv al();\n\n function isIndex(s) {\n return +s === s >>> 0;\n }\n\n function toNumber(s) {\n return +s;\n }\n\n function isObject(obj) {\n return obj === Object(obj);\n }\n\n var numberIsNaN = global.Number.isNaN || function is NaN(value) {\n return typeof value === 'number' && global.isNaN(value);\n }\ n\n function areSameValue(left, right) {\n if (left === right)\n return left !== 0 || 1 / left === 1 / right;\n if (numberIsNaN(left) && numberIsNaN (right))\n return true;\n\n return left !== left && right !== right;\n }\n\n var createObject = ('__proto__' in {}) ?\n function(obj) { return obj; } :\n function(obj) {\n var proto = obj.__proto__;\n if (!proto)\n return obj;\n var newObject = Object.create(proto);\n Object.g etOwnPropertyNames(obj).forEach(function(name) {\n Object.defineProperty( newObject, name,\n Object.getOwnPropertyDescriptor(o bj, name));\n });\n return newObject;\n };\n\n var identStart = '[ \\$_a-zA-Z]';\n var identPart = '[\\$_a-zA-Z0-9]';\n var ident = identStart + '+' + identPart + '*';\n var elementIndex = '(?:[0-9]|[1-9]+[0-9]+)';\n var id entOrElementIndex = '(?:' + ident + '|' + elementIndex + ')';\n var path = '(?: ' + identOrElementIndex + ')(?:\\\\s*\\\\.\\\\s*' + identOrElementIndex + ')*';\ n var pathRegExp = new RegExp('^' + path + '$');\n\n function isPathValid(s) { \n if (typeof s != 'string')\n return false;\n s = s.trim();\n\n i f (s == '')\n return true;\n\n if (s[0] == '.')\n return false;\n\n return pathRegExp.test(s);\n }\n\n var constructorIsPrivate = {};\n\n fun ction Path(s, privateToken) {\n if (privateToken !== constructorIsPrivate)\n throw Error('Use Path.get to retrieve path objects');\n\n if (s.trim() = = '')\n return this;\n\n if (isIndex(s)) {\n this.push(s);\n r eturn this;\n }\n\n s.split(/\\s*\\.\\s*/).filter(function(part) {\n return part;\n }).forEach(function(part) {\n this.push(part);\n }, th is);\n\n if (hasEval && this.length) {\n this.getValueFrom = this.compil edGetValueFromFn();\n }\n }\n\n // TODO(rafaelw): Make simple LRU cache\n var pathCache = {};\n\n function getPath(pathString) {\n if (pathString inst anceof Path)\n return pathString;\n\n if (pathString == null)\n pat hString = '';\n\n if (typeof pathString !== 'string')\n pathString = Str ing(pathString);\n\n var path = pathCache[pathString];\n if (path)\n return path;\n if (!isPathValid(pathString))\n return invalidPath;\n var path = new Path(pathString, constructorIsPrivate);\n pathCache[pathString ] = path;\n return path;\n }\n\n Path.get = getPath;\n\n Path.prototype = createObject({\n __proto__: [],\n valid: true,\n\n toString: function() {\n return this.join('.');\n },\n\n getValueFrom: function(obj, dire ctObserver) {\n for (var i = 0; i < this.length; i++) {\n if (obj == null)\n return;\n obj = obj[this[i]];\n }\n return ob j;\n },\n\n iterateObjects: function(obj, observe) {\n for (var i = 0 ; i < this.length; i++) {\n if (i)\n obj = obj[this[i - 1]];\n if (!obj)\n return;\n observe(obj);\n }\n },\n\n compiledGetValueFromFn: function() {\n var accessors = this.map(function( ident) {\n return isIndex(ident) ? '[\"' + ident + '\"]' : '.' + ident;\n });\n\n var str = '';\n var pathString = 'obj';\n str += 'i f (obj != null';\n var i = 0;\n for (; i < (this.length - 1); i++) {\n var ident = this[i];\n pathString += accessors[i];\n str + = ' &&\\n ' + pathString + ' != null';\n }\n str += ')\\n';\n\n pathString += accessors[i];\n\n str += ' return ' + pathString + ';\\ne lse\\n return undefined;';\n return new Function('obj', str);\n },\n\n setValueFrom: function(obj, value) {\n if (!this.length)\n return false;\n\n for (var i = 0; i < this.length - 1; i++) {\n if (!isObj ect(obj))\n return false;\n obj = obj[this[i]];\n }\n\n if (!isObject(obj))\n return false;\n\n obj[this[i]] = value;\n return true;\n }\n });\n\n var invalidPath = new Path('', constructorIsP rivate);\n invalidPath.valid = false;\n invalidPath.getValueFrom = invalidPath .setValueFrom = function() {};\n\n var MAX_DIRTY_CHECK_CYCLES = 1000;\n\n func tion dirtyCheck(observer) {\n var cycles = 0;\n while (cycles < MAX_DIRTY_ CHECK_CYCLES && observer.check_()) {\n cycles++;\n }\n if (global.tes tingExposeCycleCount)\n global.dirtyCheckCycleCount = cycles;\n\n return cycles > 0;\n }\n\n function objectIsEmpty(object) {\n for (var prop in ob ject)\n return false;\n return true;\n }\n\n function diffIsEmpty(diff ) {\n return objectIsEmpty(diff.added) &&\n objectIsEmpty(diff.remo ved) &&\n objectIsEmpty(diff.changed);\n }\n\n function diffObjectFr omOldObject(object, oldObject) {\n var added = {};\n var removed = {};\n var changed = {};\n\n for (var prop in oldObject) {\n var newValue = o bject[prop];\n\n if (newValue !== undefined && newValue === oldObject[prop] )\n continue;\n\n if (!(prop in object)) {\n removed[prop] = undefined;\n continue;\n }\n\n if (newValue !== oldObject[prop] )\n changed[prop] = newValue;\n }\n\n for (var prop in object) {\n if (prop in oldObject)\n continue;\n\n added[prop] = object[pro p];\n }\n\n if (Array.isArray(object) && object.length !== oldObject.lengt h)\n changed.length = object.length;\n\n return {\n added: added,\n removed: removed,\n changed: changed\n };\n }\n\n var eomTasks = [];\n function runEOMTasks() {\n if (!eomTasks.length)\n return false; \n\n for (var i = 0; i < eomTasks.length; i++) {\n eomTasks[i]();\n } \n eomTasks.length = 0;\n return true;\n }\n\n var runEOM = hasObserve ? (function(){\n var eomObj = { pingPong: true };\n var eomRunScheduled = f alse;\n\n Object.observe(eomObj, function() {\n runEOMTasks();\n eo mRunScheduled = false;\n });\n\n return function(fn) {\n eomTasks.pus h(fn);\n if (!eomRunScheduled) {\n eomRunScheduled = true;\n eomObj.pingPong = !eomObj.pingPong;\n }\n };\n })() :\n (function() {\ n return function(fn) {\n eomTasks.push(fn);\n };\n })();\n\n var o bservedObjectCache = [];\n\n function newObservedObject() {\n var observer;\ n var object;\n var discardRecords = false;\n var first = true;\n\n function callback(records) {\n if (observer && observer.state_ === OPENED & & !discardRecords)\n observer.check_(records);\n }\n\n return {\n open: function(obs) {\n if (observer)\n throw Error('Observe dObject in use');\n\n if (!first)\n Object.deliverChangeRecords( callback);\n\n observer = obs;\n first = false;\n },\n o bserve: function(obj, arrayObserve) {\n object = obj;\n if (arrayO bserve)\n Array.observe(object, callback);\n else\n Obj ect.observe(object, callback);\n },\n deliver: function(discard) {\n discardRecords = discard;\n Object.deliverChangeRecords(callback);\ n discardRecords = false;\n },\n close: function() {\n o bserver = undefined;\n Object.unobserve(object, callback);\n obser vedObjectCache.push(this);\n }\n };\n }\n\n function getObservedObject (observer, object, arrayObserve) {\n var dir = observedObjectCache.pop() || n ewObservedObject();\n dir.open(observer);\n dir.observe(object, arrayObser ve);\n return dir;\n }\n\n var emptyArray = [];\n var observedSetCache = [ ];\n\n function newObservedSet() {\n var observers = [];\n var observerCo unt = 0;\n var objects = [];\n var toRemove = emptyArray;\n var resetNe eded = false;\n var resetScheduled = false;\n\n function observe(obj) {\n if (!isObject(obj))\n return;\n\n var index = toRemove.indexOf( obj);\n if (index >= 0) {\n toRemove[index] = undefined;\n ob jects.push(obj);\n } else if (objects.indexOf(obj) < 0) {\n objects. push(obj);\n Object.observe(obj, callback);\n }\n\n observe(Obj ect.getPrototypeOf(obj));\n }\n\n function reset() {\n resetScheduled = false;\n if (!resetNeeded)\n return;\n\n var objs = toRemove === emptyArray ? [] : toRemove;\n toRemove = objects;\n objects = obj s;\n\n var observer;\n for (var id in observers) {\n observer = observers[id];\n if (!observer || observer.state_ != OPENED)\n continue;\n\n observer.iterateObjects_(observe);\n }\n\n for (v ar i = 0; i < toRemove.length; i++) {\n var obj = toRemove[i];\n i f (obj)\n Object.unobserve(obj, callback);\n }\n\n toRemove.l ength = 0;\n }\n\n function scheduleReset() {\n if (resetScheduled)\n return;\n\n resetNeeded = true;\n resetScheduled = true;\n runEOM(reset);\n }\n\n function callback() {\n var observer;\n\n for (var id in observers) {\n observer = observers[id];\n if (! observer || observer.state_ != OPENED)\n continue;\n\n observer. check_();\n }\n\n scheduleReset();\n }\n\n var record = {\n object: undefined,\n objects: objects,\n open: function(obs) {\n observers[obs.id_] = obs;\n observerCount++;\n obs.iterateObjec ts_(observe);\n },\n close: function(obs) {\n var anyLeft = fal se;\n\n observers[obs.id_] = undefined;\n observerCount--;\n\n if (observerCount) {\n scheduleReset();\n return;\n }\n resetNeeded = false;\n\n for (var i = 0; i < objects.length; i++) {\n Object.unobserve(objects[i], callback);\n Observer.un observedCount++;\n }\n\n observers.length = 0;\n objects.le ngth = 0;\n observedSetCache.push(this);\n },\n reset: schedule Reset\n };\n\n return record;\n }\n\n var lastObservedSet;\n\n function getObservedSet(observer, obj) {\n if (!lastObservedSet || lastObservedSet.ob ject !== obj) {\n lastObservedSet = observedSetCache.pop() || newObservedSe t();\n lastObservedSet.object = obj;\n }\n lastObservedSet.open(obser ver);\n return lastObservedSet;\n }\n\n var UNOPENED = 0;\n var OPENED = 1 ;\n var CLOSED = 2;\n var RESETTING = 3;\n\n var nextObserverId = 1;\n\n fun ction Observer() {\n this.state_ = UNOPENED;\n this.callback_ = undefined; \n this.target_ = undefined; // TODO(rafaelw): Should be WeakRef\n this.di rectObserver_ = undefined;\n this.value_ = undefined;\n this.id_ = nextObs erverId++;\n }\n\n Observer.prototype = {\n open: function(callback, target ) {\n if (this.state_ != UNOPENED)\n throw Error('Observer has alrea dy been opened.');\n\n addToAll(this);\n this.callback_ = callback;\n this.target_ = target;\n this.state_ = OPENED;\n this.connect_(); \n return this.value_;\n },\n\n close: function() {\n if (this.s tate_ != OPENED)\n return;\n\n removeFromAll(this);\n this.stat e_ = CLOSED;\n this.disconnect_();\n this.value_ = undefined;\n t his.callback_ = undefined;\n this.target_ = undefined;\n },\n\n deliv er: function() {\n if (this.state_ != OPENED)\n return;\n\n dir tyCheck(this);\n },\n\n report_: function(changes) {\n try {\n this.callback_.apply(this.target_, changes);\n } catch (ex) {\n Obs erver._errorThrownDuringCallback = true;\n console.error('Exception caugh t during observer callback: ' +\n (ex.stack || ex));\n }\n },\n\n discardChanges: function() {\n this.check_(undefined, tr ue);\n return this.value_;\n }\n }\n\n var collectObservers = !hasObse rve;\n var allObservers;\n Observer._allObserversCount = 0;\n\n if (collectOb servers) {\n allObservers = [];\n }\n\n function addToAll(observer) {\n Observer._allObserversCount++;\n if (!collectObservers)\n return;\n\n allObservers.push(observer);\n }\n\n function removeFromAll(observer) {\n Observer._allObserversCount--;\n }\n\n var runningMicrotaskCheckpoint = false; \n\n var hasDebugForceFullDelivery = typeof Object.deliverAllChangeRecords == ' function';\n\n global.Platform = global.Platform || {};\n\n global.Platform.pe rformMicrotaskCheckpoint = function() {\n if (runningMicrotaskCheckpoint)\n return;\n\n if (hasDebugForceFullDelivery) {\n Object.deliverAllChan geRecords();\n return;\n }\n\n if (!collectObservers)\n return;\ n\n runningMicrotaskCheckpoint = true;\n\n var cycles = 0;\n var anyCha nged, toCheck;\n\n do {\n cycles++;\n toCheck = allObservers;\n allObservers = [];\n anyChanged = false;\n\n for (var i = 0; i < toC heck.length; i++) {\n var observer = toCheck[i];\n if (observer.st ate_ != OPENED)\n continue;\n\n if (observer.check_())\n anyChanged = true;\n\n allObservers.push(observer);\n }\n if (runEOMTasks())\n anyChanged = true;\n } while (cycles < MAX_DIRTY_CHE CK_CYCLES && anyChanged);\n\n if (global.testingExposeCycleCount)\n glob al.dirtyCheckCycleCount = cycles;\n\n runningMicrotaskCheckpoint = false;\n };\n\n if (collectObservers) {\n global.Platform.clearObservers = function() {\n allObservers = [];\n };\n }\n\n function ObjectObserver(object) { \n Observer.call(this);\n this.value_ = object;\n this.oldObject_ = und efined;\n }\n\n ObjectObserver.prototype = createObject({\n __proto__: Obse rver.prototype,\n\n arrayObserve: false,\n\n connect_: function(callback, target) {\n if (hasObserve) {\n this.directObserver_ = getObservedOb ject(this, this.value_,\n this.a rrayObserve);\n } else {\n this.oldObject_ = this.copyObject(this.va lue_);\n }\n\n },\n\n copyObject: function(object) {\n var copy = Array.isArray(object) ? [] : {};\n for (var prop in object) {\n co py[prop] = object[prop];\n };\n if (Array.isArray(object))\n co py.length = object.length;\n return copy;\n },\n\n check_: function(c hangeRecords, skipChanges) {\n var diff;\n var oldValues;\n if (h asObserve) {\n if (!changeRecords)\n return false;\n\n ol dValues = {};\n diff = diffObjectFromChangeRecords(this.value_, changeRec ords,\n oldValues);\n } else {\n oldValues = this.oldObject_;\n diff = diffObjectFromOldObject(this .value_, this.oldObject_);\n }\n\n if (diffIsEmpty(diff))\n ret urn false;\n\n if (!hasObserve)\n this.oldObject_ = this.copyObject( this.value_);\n\n this.report_([\n diff.added || {},\n diff.r emoved || {},\n diff.changed || {},\n function(property) {\n return oldValues[property];\n }\n ]);\n\n return true;\n },\n\n disconnect_: function() {\n if (hasObserve) {\n this.dire ctObserver_.close();\n this.directObserver_ = undefined;\n } else {\ n this.oldObject_ = undefined;\n }\n },\n\n deliver: function( ) {\n if (this.state_ != OPENED)\n return;\n\n if (hasObserve)\ n this.directObserver_.deliver(false);\n else\n dirtyCheck(th is);\n },\n\n discardChanges: function() {\n if (this.directObserver_ )\n this.directObserver_.deliver(true);\n else\n this.oldObje ct_ = this.copyObject(this.value_);\n\n return this.value_;\n }\n });\n \n function ArrayObserver(array) {\n if (!Array.isArray(array))\n throw Error('Provided object is not an Array');\n ObjectObserver.call(this, array) ;\n }\n\n ArrayObserver.prototype = createObject({\n\n __proto__: ObjectObs erver.prototype,\n\n arrayObserve: true,\n\n copyObject: function(arr) {\n return arr.slice();\n },\n\n check_: function(changeRecords) {\n var splices;\n if (hasObserve) {\n if (!changeRecords)\n return false;\n splices = projectArraySplices(this.value_, changeRecords) ;\n } else {\n splices = calcSplices(this.value_, 0, this.value_.len gth,\n this.oldObject_, 0, this.oldObject_.length); \n }\n\n if (!splices || !splices.length)\n return false;\n\n if (!hasObserve)\n this.oldObject_ = this.copyObject(this.value_);\n\ n this.report_([splices]);\n return true;\n }\n });\n\n ArrayObse rver.applySplices = function(previous, current, splices) {\n splices.forEach( function(splice) {\n var spliceArgs = [splice.index, splice.removed.length] ;\n var addIndex = splice.index;\n while (addIndex < splice.index + sp lice.addedCount) {\n spliceArgs.push(current[addIndex]);\n addInde x++;\n }\n\n Array.prototype.splice.apply(previous, spliceArgs);\n });\n };\n\n function PathObserver(object, path) {\n Observer.call(this);\n \n this.object_ = object;\n this.path_ = path instanceof Path ? path : get Path(path);\n this.directObserver_ = undefined;\n }\n\n PathObserver.protot ype = createObject({\n __proto__: Observer.prototype,\n\n connect_: functi on() {\n if (hasObserve)\n this.directObserver_ = getObservedSet(thi s, this.object_);\n\n this.check_(undefined, true);\n },\n\n disconne ct_: function() {\n this.value_ = undefined;\n\n if (this.directObserv er_) {\n this.directObserver_.close(this);\n this.directObserver_ = undefined;\n }\n },\n\n iterateObjects_: function(observe) {\n this.path_.iterateObjects(this.object_, observe);\n },\n\n check_: functi on(changeRecords, skipChanges) {\n var oldValue = this.value_;\n this. value_ = this.path_.getValueFrom(this.object_);\n if (skipChanges || areSam eValue(this.value_, oldValue))\n return false;\n\n this.report_([thi s.value_, oldValue]);\n return true;\n },\n\n setValue: function(newV alue) {\n if (this.path_)\n this.path_.setValueFrom(this.object_, ne wValue);\n }\n });\n\n function CompoundObserver() {\n Observer.call(thi s);\n\n this.value_ = [];\n this.directObserver_ = undefined;\n this.ob served_ = [];\n }\n\n var observerSentinel = {};\n\n CompoundObserver.prototy pe = createObject({\n __proto__: Observer.prototype,\n\n connect_: functio n() {\n this.check_(undefined, true);\n\n if (!hasObserve)\n re turn;\n\n var object;\n var needsDirectObserver = false;\n for (v ar i = 0; i < this.observed_.length; i += 2) {\n object = this.observed_[ i]\n if (object !== observerSentinel) {\n needsDirectObserver = true;\n break;\n }\n }\n\n if (this.directObserver_) { \n if (needsDirectObserver) {\n this.directObserver_.reset();\n return;\n }\n this.directObserver_.close();\n this .directObserver_ = undefined;\n return;\n }\n\n if (needsDirect Observer)\n this.directObserver_ = getObservedSet(this, object);\n },\ n\n closeObservers_: function() {\n for (var i = 0; i < this.observed_.l ength; i += 2) {\n if (this.observed_[i] === observerSentinel)\n this.observed_[i + 1].close();\n }\n this.observed_.length = 0;\n },\n\n disconnect_: function() {\n this.value_ = undefined;\n\n if (this.directObserver_) {\n this.directObserver_.close(this);\n thi s.directObserver_ = undefined;\n }\n\n this.closeObservers_();\n }, \n\n addPath: function(object, path) {\n if (this.state_ != UNOPENED && this.state_ != RESETTING)\n throw Error('Cannot add paths once started.') ;\n\n this.observed_.push(object, path instanceof Path ? path : getPath(pat h));\n },\n\n addObserver: function(observer) {\n if (this.state_ != UNOPENED && this.state_ != RESETTING)\n throw Error('Cannot add observers once started.');\n\n observer.open(this.deliver, this);\n this.observ ed_.push(observerSentinel, observer);\n },\n\n startReset: function() {\n if (this.state_ != OPENED)\n throw Error('Can only reset while open' );\n\n this.state_ = RESETTING;\n this.closeObservers_();\n },\n\n finishReset: function() {\n if (this.state_ != RESETTING)\n throw Error('Can only finishReset after startReset');\n this.state_ = OPENED;\n this.connect_();\n\n return this.value_;\n },\n\n iterateObjects _: function(observe) {\n var object;\n for (var i = 0; i < this.observ ed_.length; i += 2) {\n object = this.observed_[i]\n if (object != = observerSentinel)\n this.observed_[i + 1].iterateObjects(object, obse rve)\n }\n },\n\n check_: function(changeRecords, skipChanges) {\n var oldValues;\n for (var i = 0; i < this.observed_.length; i += 2) {\n var pathOrObserver = this.observed_[i+1];\n var object = this.obse rved_[i];\n var value = object === observerSentinel ?\n pathOr Observer.discardChanges() :\n pathOrObserver.getValueFrom(object)\n\n if (skipChanges) {\n this.value_[i / 2] = value;\n con tinue;\n }\n\n if (areSameValue(value, this.value_[i / 2]))\n continue;\n\n oldValues = oldValues || [];\n oldValues[i / 2] = this.value_[i / 2];\n this.value_[i / 2] = value;\n }\n\n if (!oldValues)\n return false;\n\n // TODO(rafaelw): Having observed_ as the third callback arg here is\n // pretty lame API. Fix.\n this.r eport_([this.value_, oldValues, this.observed_]);\n return true;\n }\n });\n\n function identFn(value) { return value; }\n\n function ObserverTransfo rm(observable, getValueFn, setValueFn,\n dontPassThr oughSet) {\n this.callback_ = undefined;\n this.target_ = undefined;\n this.value_ = undefined;\n this.observable_ = observable;\n this.getValueF n_ = getValueFn || identFn;\n this.setValueFn_ = setValueFn || identFn;\n // TODO(rafaelw): This is a temporary hack. PolymerExpressions needs this\n / / at the moment because of a bug in it's dependency tracking.\n this.dontPass ThroughSet_ = dontPassThroughSet;\n }\n\n ObserverTransform.prototype = {\n open: function(callback, target) {\n this.callback_ = callback;\n thi s.target_ = target;\n this.value_ =\n this.getValueFn_(this.observ able_.open(this.observedCallback_, this));\n return this.value_;\n },\n\ n observedCallback_: function(value) {\n value = this.getValueFn_(value) ;\n if (areSameValue(value, this.value_))\n return;\n var oldVa lue = this.value_;\n this.value_ = value;\n this.callback_.call(this.t arget_, this.value_, oldValue);\n },\n\n discardChanges: function() {\n this.value_ = this.getValueFn_(this.observable_.discardChanges());\n ret urn this.value_;\n },\n\n deliver: function() {\n return this.observa ble_.deliver();\n },\n\n setValue: function(value) {\n value = this.s etValueFn_(value);\n if (!this.dontPassThroughSet_ && this.observable_.setV alue)\n return this.observable_.setValue(value);\n },\n\n close: fu nction() {\n if (this.observable_)\n this.observable_.close();\n this.callback_ = undefined;\n this.target_ = undefined;\n this.obser vable_ = undefined;\n this.value_ = undefined;\n this.getValueFn_ = un defined;\n this.setValueFn_ = undefined;\n }\n }\n\n var expectedRecor dTypes = {};\n expectedRecordTypes[PROP_ADD_TYPE] = true;\n expectedRecordType s[PROP_UPDATE_TYPE] = true;\n expectedRecordTypes[PROP_DELETE_TYPE] = true;\n\n function notifyFunction(object, name) {\n if (typeof Object.observe !== 'fu nction')\n return;\n\n var notifier = Object.getNotifier(object);\n r eturn function(type, oldValue) {\n var changeRecord = {\n object: ob ject,\n type: type,\n name: name\n };\n if (arguments.le ngth === 2)\n changeRecord.oldValue = oldValue;\n notifier.notify(ch angeRecord);\n }\n }\n\n Observer.defineComputedProperty = function(target, name, observable) {\n var notify = notifyFunction(target, name);\n var va lue = observable.open(function(newValue, oldValue) {\n value = newValue;\n if (notify)\n notify(PROP_UPDATE_TYPE, oldValue);\n });\n\n Ob ject.defineProperty(target, name, {\n get: function() {\n observable .deliver();\n return value;\n },\n set: function(newValue) {\n observable.setValue(newValue);\n return newValue;\n },\n configurable: true\n });\n\n return {\n close: function() {\n observable.close();\n Object.defineProperty(target, name, {\n v alue: value,\n writable: true,\n configurable: true\n } );\n }\n };\n }\n\n function diffObjectFromChangeRecords(object, chang eRecords, oldValues) {\n var added = {};\n var removed = {};\n\n for (v ar i = 0; i < changeRecords.length; i++) {\n var record = changeRecords[i]; \n if (!expectedRecordTypes[record.type]) {\n console.error('Unknown changeRecord type: ' + record.type);\n console.error(record);\n c ontinue;\n }\n\n if (!(record.name in oldValues))\n oldValues[r ecord.name] = record.oldValue;\n\n if (record.type == PROP_UPDATE_TYPE)\n continue;\n\n if (record.type == PROP_ADD_TYPE) {\n if (record .name in removed)\n delete removed[record.name];\n else\n added[record.name] = true;\n\n continue;\n }\n\n // type = ' delete'\n if (record.name in added) {\n delete added[record.name];\n delete oldValues[record.name];\n } else {\n removed[record.n ame] = true;\n }\n }\n\n for (var prop in added)\n added[prop] = object[prop];\n\n for (var prop in removed)\n removed[prop] = undefined ;\n\n var changed = {};\n for (var prop in oldValues) {\n if (prop in added || prop in removed)\n continue;\n\n var newValue = object[pro p];\n if (oldValues[prop] !== newValue)\n changed[prop] = newValue;\ n }\n\n return {\n added: added,\n removed: removed,\n chan ged: changed\n };\n }\n\n function newSplice(index, removed, addedCount) {\ n return {\n index: index,\n removed: removed,\n addedCount: a ddedCount\n };\n }\n\n var EDIT_LEAVE = 0;\n var EDIT_UPDATE = 1;\n var E DIT_ADD = 2;\n var EDIT_DELETE = 3;\n\n function ArraySplice() {}\n\n ArraySp lice.prototype = {\n\n // Note: This function is *based* on the computation o f the Levenshtein\n // \"edit\" distance. The one change is that \"updates\" are treated as two\n // edits - not one. With Array splices, an update is rea lly a delete\n // followed by an add. By retaining this, we optimize for \"ke eping\" the\n // maximum array items in the original array. For example:\n //\n // 'xxxx123' -> '123yyyy'\n //\n // With 1-edit updates, the sh ortest path would be just to update all seven\n // characters. With 2-edit up dates, we delete 4, leave 3, and add 4. This\n // leaves the substring '123' intact.\n calcEditDistances: function(current, currentStart, currentEnd,\n old, oldStart, oldEnd) {\n // \"Deletion\" col umns\n var rowCount = oldEnd - oldStart + 1;\n var columnCount = curre ntEnd - currentStart + 1;\n var distances = new Array(rowCount);\n\n / / \"Addition\" rows. Initialize null column.\n for (var i = 0; i < rowCount ; i++) {\n distances[i] = new Array(columnCount);\n distances[i][0 ] = i;\n }\n\n // Initialize null row\n for (var j = 0; j < colum nCount; j++)\n distances[0][j] = j;\n\n for (var i = 1; i < rowCount ; i++) {\n for (var j = 1; j < columnCount; j++) {\n if (this.eq uals(current[currentStart + j - 1], old[oldStart + i - 1]))\n distanc es[i][j] = distances[i - 1][j - 1];\n else {\n var north = d istances[i - 1][j] + 1;\n var west = distances[i][j - 1] + 1;\n distances[i][j] = north < west ? north : west;\n }\n }\n }\n\n return distances;\n },\n\n // This starts at the final weig ht, and walks \"backward\" by finding\n // the minimum previous weight recurs ively until the origin of the weight\n // matrix.\n spliceOperationsFromEd itDistances: function(distances) {\n var i = distances.length - 1;\n v ar j = distances[0].length - 1;\n var current = distances[i][j];\n var edits = [];\n while (i > 0 || j > 0) {\n if (i == 0) {\n e dits.push(EDIT_ADD);\n j--;\n continue;\n }\n if (j == 0) {\n edits.push(EDIT_DELETE);\n i--;\n conti nue;\n }\n var northWest = distances[i - 1][j - 1];\n var w est = distances[i - 1][j];\n var north = distances[i][j - 1];\n\n var min;\n if (west < north)\n min = west < northWest ? west : n orthWest;\n else\n min = north < northWest ? north : northWest;\ n\n if (min == northWest) {\n if (northWest == current) {\n edits.push(EDIT_LEAVE);\n } else {\n edits.push(EDIT_ UPDATE);\n current = northWest;\n }\n i--;\n j--;\n } else if (min == west) {\n edits.push(EDIT_DELETE);\n i--;\n current = west;\n } else {\n edits.pus h(EDIT_ADD);\n j--;\n current = north;\n }\n }\n\n edits.reverse();\n return edits;\n },\n\n /**\n * Splice Pr ojection functions:\n *\n * A splice map is a representation of how a pr evious array of items\n * was transformed into a new array of items. Concept ually it is a list of\n * tuples of\n *\n * <index, removed, added Count>\n *\n * which are kept in ascending index order of. The tuple rep resents that at\n * the |index|, |removed| sequence of items were removed, a nd counting forward\n * from |index|, |addedCount| items were added.\n * /\n\n /**\n * Lacking individual splice mutation information, the minimal set of\n * splices can be synthesized given the previous state and final st ate of an\n * array. The basic approach is to calculate the edit distance ma trix and\n * choose the shortest path through it.\n *\n * Complexity : O(l * p)\n * l: The length of the current array\n * p: The length of the old array\n */\n calcSplices: function(current, currentStart, curr entEnd,\n old, oldStart, oldEnd) {\n var prefixCou nt = 0;\n var suffixCount = 0;\n\n var minLength = Math.min(currentEnd - currentStart, oldEnd - oldStart);\n if (currentStart == 0 && oldStart == 0)\n prefixCount = this.sharedPrefix(current, old, minLength);\n\n if (currentEnd == current.length && oldEnd == old.length)\n suffixCount = this.sharedSuffix(current, old, minLength - prefixCount);\n\n currentStart += prefixCount;\n oldStart += prefixCount;\n currentEnd -= suffixCoun t;\n oldEnd -= suffixCount;\n\n if (currentEnd - currentStart == 0 && oldEnd - oldStart == 0)\n return [];\n\n if (currentStart == current End) {\n var splice = newSplice(currentStart, [], 0);\n while (old Start < oldEnd)\n splice.removed.push(old[oldStart++]);\n\n retu rn [ splice ];\n } else if (oldStart == oldEnd)\n return [ newSplice (currentStart, [], currentEnd - currentStart) ];\n\n var ops = this.spliceO perationsFromEditDistances(\n this.calcEditDistances(current, currentSt art, currentEnd,\n old, oldStart, oldEnd));\n\n var splice = undefined;\n var splices = [];\n var index = current Start;\n var oldIndex = oldStart;\n for (var i = 0; i < ops.length; i+ +) {\n switch(ops[i]) {\n case EDIT_LEAVE:\n if (spli ce) {\n splices.push(splice);\n splice = undefined;\n }\n\n index++;\n oldIndex++;\n break ;\n case EDIT_UPDATE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.addedCount++;\n index ++;\n\n splice.removed.push(old[oldIndex]);\n oldIndex++;\ n break;\n case EDIT_ADD:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n splice.addedCount++;\n index++;\n break;\n case EDIT_DELETE:\n if (!splice)\n splice = newSplice(index, [], 0);\n\n sp lice.removed.push(old[oldIndex]);\n oldIndex++;\n break;\n }\n }\n\n if (splice) {\n splices.push(splice);\n }\n return splices;\n },\n\n sharedPrefix: function(current, old, sea rchLength) {\n for (var i = 0; i < searchLength; i++)\n if (!this.eq uals(current[i], old[i]))\n return i;\n return searchLength;\n },\n\n sharedSuffix: function(current, old, searchLength) {\n var index1 = current.length;\n var index2 = old.length;\n var count = 0;\n while (count < searchLength && this.equals(current[--index1], old[--index2]))\n count++;\n\n return count;\n },\n\n calculateSplices: function (current, previous) {\n return this.calcSplices(current, 0, current.length, previous, 0,\n previous.length);\n },\n\n eq uals: function(currentValue, previousValue) {\n return currentValue === pre viousValue;\n }\n };\n\n var arraySplice = new ArraySplice();\n\n function calcSplices(current, currentStart, currentEnd,\n old, old Start, oldEnd) {\n return arraySplice.calcSplices(current, currentStart, curr entEnd,\n old, oldStart, oldEnd);\n }\n\n fu nction intersect(start1, end1, start2, end2) {\n // Disjoint\n if (end1 < start2 || end2 < start1)\n return -1;\n\n // Adjacent\n if (end1 == s tart2 || end2 == start1)\n return 0;\n\n // Non-zero intersect, span1 fi rst\n if (start1 < start2) {\n if (end1 < end2)\n return end1 - s tart2; // Overlap\n else\n return end2 - start2; // Contained\n } else {\n // Non-zero intersect, span2 first\n if (end2 < end1)\n return end2 - start1; // Overlap\n else\n return end1 - start1; / / Contained\n }\n }\n\n function mergeSplice(splices, index, removed, added Count) {\n\n var splice = newSplice(index, removed, addedCount);\n\n var i nserted = false;\n var insertionOffset = 0;\n\n for (var i = 0; i < splice s.length; i++) {\n var current = splices[i];\n current.index += insert ionOffset;\n\n if (inserted)\n continue;\n\n var intersectCount = intersect(splice.index,\n splice.index + splice.removed.length,\n current.index,\n current.index + current.addedCount);\n\n if (intersectCount >= 0) {\n // Merge the two splices\n\n splices. splice(i, 1);\n i--;\n\n insertionOffset -= current.addedCount - c urrent.removed.length;\n\n splice.addedCount += current.addedCount - inte rsectCount;\n var deleteCount = splice.removed.length +\n current.removed.length - intersectCount;\n\n if (!splice.addedC ount && !deleteCount) {\n // merged splice is a noop. discard.\n inserted = true;\n } else {\n var removed = current.removed;\ n\n if (splice.index < current.index) {\n // some prefix of splice.removed is prepended to current.removed.\n var prepend = splic e.removed.slice(0, current.index - splice.index);\n Array.prototype.p ush.apply(prepend, removed);\n removed = prepend;\n }\n\n if (splice.index + splice.removed.length > current.index + current.addedC ount) {\n // some suffix of splice.removed is appended to current.rem oved.\n var append = splice.removed.slice(current.index + current.add edCount - splice.index);\n Array.prototype.push.apply(removed, append );\n }\n\n splice.removed = removed;\n if (current.in dex < splice.index) {\n splice.index = current.index;\n }\n }\n } else if (splice.index < current.index) {\n // Insert sp lice here.\n\n inserted = true;\n\n splices.splice(i, 0, splice);\ n i++;\n\n var offset = splice.addedCount - splice.removed.length\ n current.index += offset;\n insertionOffset += offset;\n }\n }\n\n if (!inserted)\n splices.push(splice);\n }\n\n function crea teInitialSplices(array, changeRecords) {\n var splices = [];\n\n for (var i = 0; i < changeRecords.length; i++) {\n var record = changeRecords[i];\n switch(record.type) {\n case ARRAY_SPLICE_TYPE:\n mergeSpli ce(splices, record.index, record.removed.slice(), record.addedCount);\n break;\n case PROP_ADD_TYPE:\n case PROP_UPDATE_TYPE:\n ca se PROP_DELETE_TYPE:\n if (!isIndex(record.name))\n continue ;\n var index = toNumber(record.name);\n if (index < 0)\n continue;\n mergeSplice(splices, index, [record.oldValue], 1);\n break;\n default:\n console.error('Unexpected record t ype: ' + JSON.stringify(record));\n break;\n }\n }\n\n retur n splices;\n }\n\n function projectArraySplices(array, changeRecords) {\n v ar splices = [];\n\n createInitialSplices(array, changeRecords).forEach(funct ion(splice) {\n if (splice.addedCount == 1 && splice.removed.length == 1) { \n if (splice.removed[0] !== array[splice.index])\n splices.push (splice);\n\n return\n };\n\n splices = splices.concat(calcSpli ces(array, splice.index, splice.index + splice.addedCount,\n splice.removed, 0, splice.removed.length));\n });\n\n return splices;\n }\n\n global.Observer = Observer;\n global.Observer.runE OM_ = runEOM;\n global.Observer.hasObjectObserve = hasObserve;\n global.ArrayO bserver = ArrayObserver;\n global.ArrayObserver.calculateSplices = function(cur rent, previous) {\n return arraySplice.calculateSplices(current, previous);\n };\n\n global.ArraySplice = ArraySplice;\n global.ObjectObserver = ObjectObs erver;\n global.PathObserver = PathObserver;\n global.CompoundObserver = Compo undObserver;\n global.Path = Path;\n global.ObserverTransform = ObserverTransf orm;\n\n // TODO(rafaelw): Only needed for testing until new change record name s\n // make it to release.\n global.Observer.changeRecordTypes = {\n add: P ROP_ADD_TYPE,\n update: PROP_UPDATE_TYPE,\n reconfigure: PROP_RECONFIGURE_ TYPE,\n 'delete': PROP_DELETE_TYPE,\n splice: ARRAY_SPLICE_TYPE\n };\n})( typeof global !== 'undefined' && global && typeof module !== 'undefined' && modu le ? global : this || window);\n","// prepoulate window.Platform.flags for defau lt controls\r\nwindow.Platform = window.Platform || {};\r\n// prepopulate window .logFlags if necessary\r\nwindow.logFlags = window.logFlags || {};\r\n// process flags\r\n(function(scope){\r\n // import\r\n var flags = scope.flags || {};\r \n // populate flags from location\r\n location.search.slice(1).split('&').for Each(function(o) {\r\n o = o.split('=');\r\n o[0] && (flags[o[0]] = o[1] | | true);\r\n });\r\n var entryPoint = document.currentScript || document.query Selector('script[src*=\"platform.js\"]');\r\n if (entryPoint) {\r\n var a = entryPoint.attributes;\r\n for (var i = 0, n; i < a.length; i++) {\r\n n = a[i];\r\n if (n.name !== 'src') {\r\n flags[n.name] = n.value || true;\r\n }\r\n }\r\n }\r\n if (flags.log) {\r\n flags.log.split(', ').forEach(function(f) {\r\n window.logFlags[f] = true;\r\n });\r\n }\r \n // If any of these flags match 'native', then force native ShadowDOM; any\r\ n // other truthy value, or failure to detect native\r\n // ShadowDOM, results in polyfill\r\n flags.shadow = (flags.shadow || flags.shadowdom || flags.polyf ill);\r\n if (flags.shadow === 'native') {\r\n flags.shadow = false;\r\n } else {\r\n flags.shadow = flags.shadow || !HTMLElement.prototype.createShadow Root;\r\n }\r\n\r\n // CustomElements polyfill flag\r\n if (flags.register) { \r\n window.CustomElements = window.CustomElements || {flags: {}};\r\n win dow.CustomElements.flags.register = flags.register;\r\n }\r\n\r\n if (flags.im ports) {\r\n window.HTMLImports = window.HTMLImports || {flags: {}};\r\n w indow.HTMLImports.flags.imports = flags.imports;\r\n }\r\n\r\n // export\r\n scope.flags = flags;\r\n})(Platform);\r\n\r\n// select ShadowDOM impl\r\nif (Pla tform.flags.shadow) {\r\n","// Copyright 2012 The Polymer Authors. All rights re served.\n// Use of this source code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n\nwindow.ShadowDOMPolyfill = {};\n\n(functio n(scope) {\n 'use strict';\n\n var constructorTable = new WeakMap();\n var na tivePrototypeTable = new WeakMap();\n var wrappers = Object.create(null);\n\n // Don't test for eval if document has CSP securityPolicy object and we can\n / / see that eval is not supported. This avoids an error message in console\n // even when the exception is caught\n var hasEval = !('securityPolicy' in documen t) ||\n document.securityPolicy.allowsEval;\n if (hasEval) {\n try {\n var f = new Function('', 'return true;');\n hasEval = f();\n } catc h (ex) {\n hasEval = false;\n }\n }\n\n function assert(b) {\n if ( !b)\n throw new Error('Assertion failed');\n };\n\n var defineProperty = Object.defineProperty;\n var getOwnPropertyNames = Object.getOwnPropertyNames;\ n var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n function mixin(to, from) {\n getOwnPropertyNames(from).forEach(function(name) {\n defineProperty(to, name, getOwnPropertyDescriptor(from, name));\n });\n return to;\n };\n\n function mixinStatics(to, from) {\n getOwnPropertyNames (from).forEach(function(name) {\n switch (name) {\n case 'arguments' :\n case 'caller':\n case 'length':\n case 'name':\n case 'prototype':\n case 'toString':\n return;\n }\n defineProperty(to, name, getOwnPropertyDescriptor(from, name));\n });\n re turn to;\n };\n\n function oneOf(object, propertyNames) {\n for (var i = 0; i < propertyNames.length; i++) {\n if (propertyNames[i] in object)\n return propertyNames[i];\n }\n }\n\n // Mozilla's old DOM bindings are br etty busted:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=855844\n // Mak e sure they are create before we start modifying things.\n getOwnPropertyNames( window);\n\n function getWrapperConstructor(node) {\n var nativePrototype = node.__proto__ || Object.getPrototypeOf(node);\n var wrapperConstructor = con structorTable.get(nativePrototype);\n if (wrapperConstructor)\n return w rapperConstructor;\n\n var parentWrapperConstructor = getWrapperConstructor(n ativePrototype);\n\n var GeneratedWrapper = createWrapperConstructor(parentWr apperConstructor);\n registerInternal(nativePrototype, GeneratedWrapper, node );\n\n return GeneratedWrapper;\n }\n\n function addForwardingProperties(na tivePrototype, wrapperPrototype) {\n installProperty(nativePrototype, wrapper Prototype, true);\n }\n\n function registerInstanceProperties(wrapperPrototype , instanceObject) {\n installProperty(instanceObject, wrapperPrototype, false );\n }\n\n var isFirefox = /Firefox/.test(navigator.userAgent);\n\n // This i s used as a fallback when getting the descriptor fails in\n // installProperty. \n var dummyDescriptor = {\n get: function() {},\n set: function(v) {},\n configurable: true,\n enumerable: true\n };\n\n function isEventHandler Name(name) {\n return /^on[a-z]+$/.test(name);\n }\n\n function isIdentifie rName(name) {\n return /^\\w[a-zA-Z_0-9]*$/.test(name);\n }\n\n function ge tGetter(name) {\n return hasEval && isIdentifierName(name) ?\n new Fun ction('return this.impl.' + name) :\n function() { return this.impl[name] ; };\n }\n\n function getSetter(name) {\n return hasEval && isIdentifierNam e(name) ?\n new Function('v', 'this.impl.' + name + ' = v') :\n fu nction(v) { this.impl[name] = v; };\n }\n\n function getMethod(name) {\n re turn hasEval && isIdentifierName(name) ?\n new Function('return this.impl .' + name +\n '.apply(this.impl, arguments)') :\n fun ction() { return this.impl[name].apply(this.impl, arguments); };\n }\n\n funct ion getDescriptor(source, name) {\n try {\n return Object.getOwnProperty Descriptor(source, name);\n } catch (ex) {\n // JSC and V8 both use data properties instead of accessors which can\n // cause getting the property desciptor to throw an exception.\n // https://bugs.webkit.org/show_bug.cgi? id=49739\n return dummyDescriptor;\n }\n }\n\n function installPropert y(source, target, allowMethod, opt_blacklist) {\n var names = getOwnPropertyN ames(source);\n for (var i = 0; i < names.length; i++) {\n var name = na mes[i];\n if (name === 'polymerBlackList_')\n continue;\n\n if (name in target)\n continue;\n\n if (source.polymerBlackList_ && sou rce.polymerBlackList_[name])\n continue;\n\n if (isFirefox) {\n // Tickle Firefox's old bindings.\n source.__lookupGetter__(name);\n }\n var descriptor = getDescriptor(source, name);\n var getter, se tter;\n if (allowMethod && typeof descriptor.value === 'function') {\n target[name] = getMethod(name);\n continue;\n }\n\n var isEv ent = isEventHandlerName(name);\n if (isEvent)\n getter = scope.getE ventHandlerGetter(name);\n else\n getter = getGetter(name);\n\n if (descriptor.writable || descriptor.set) {\n if (isEvent)\n s etter = scope.getEventHandlerSetter(name);\n else\n setter = get Setter(name);\n }\n\n defineProperty(target, name, {\n get: get ter,\n set: setter,\n configurable: descriptor.configurable,\n enumerable: descriptor.enumerable\n });\n }\n }\n\n /**\n * @par am {Function} nativeConstructor\n * @param {Function} wrapperConstructor\n * @param {Object=} opt_instance If present, this is used to extract\n * pro perties from an instance object.\n */\n function register(nativeConstructor, wrapperConstructor, opt_instance) {\n var nativePrototype = nativeConstructor .prototype;\n registerInternal(nativePrototype, wrapperConstructor, opt_insta nce);\n mixinStatics(wrapperConstructor, nativeConstructor);\n }\n\n functi on registerInternal(nativePrototype, wrapperConstructor, opt_instance) {\n va r wrapperPrototype = wrapperConstructor.prototype;\n assert(constructorTable. get(nativePrototype) === undefined);\n\n constructorTable.set(nativePrototype , wrapperConstructor);\n nativePrototypeTable.set(wrapperPrototype, nativePro totype);\n\n addForwardingProperties(nativePrototype, wrapperPrototype);\n if (opt_instance)\n registerInstanceProperties(wrapperPrototype, opt_insta nce);\n defineProperty(wrapperPrototype, 'constructor', {\n value: wrapp erConstructor,\n configurable: true,\n enumerable: false,\n writa ble: true\n });\n }\n\n function isWrapperFor(wrapperConstructor, nativeCon structor) {\n return constructorTable.get(nativeConstructor.prototype) ===\n wrapperConstructor;\n }\n\n /**\n * Creates a generic wrapper constru ctor based on |object| and its\n * constructor.\n * @param {Node} object\n * @return {Function} The generated constructor.\n */\n function registerObje ct(object) {\n var nativePrototype = Object.getPrototypeOf(object);\n\n va r superWrapperConstructor = getWrapperConstructor(nativePrototype);\n var Gen eratedWrapper = createWrapperConstructor(superWrapperConstructor);\n register Internal(nativePrototype, GeneratedWrapper, object);\n\n return GeneratedWrap per;\n }\n\n function createWrapperConstructor(superWrapperConstructor) {\n function GeneratedWrapper(node) {\n superWrapperConstructor.call(this, nod e);\n }\n GeneratedWrapper.prototype =\n Object.create(superWrapper Constructor.prototype);\n GeneratedWrapper.prototype.constructor = GeneratedW rapper;\n\n return GeneratedWrapper;\n }\n\n var OriginalDOMImplementation = window.DOMImplementation;\n var OriginalEventTarget = window.EventTarget;\n var OriginalEvent = window.Event;\n var OriginalNode = window.Node;\n var Orig inalWindow = window.Window;\n var OriginalRange = window.Range;\n var Original CanvasRenderingContext2D = window.CanvasRenderingContext2D;\n var OriginalWebGL RenderingContext = window.WebGLRenderingContext;\n var OriginalSVGElementInstan ce = window.SVGElementInstance;\n\n function isWrapper(object) {\n return ob ject instanceof wrappers.EventTarget ||\n object instanceof wrappers.E vent ||\n object instanceof wrappers.Range ||\n object insta nceof wrappers.DOMImplementation ||\n object instanceof wrappers.Canva sRenderingContext2D ||\n wrappers.WebGLRenderingContext &&\n object instanceof wrappers.WebGLRenderingContext;\n }\n\n function isNati ve(object) {\n return OriginalEventTarget && object instanceof OriginalEventT arget ||\n object instanceof OriginalNode ||\n object instan ceof OriginalEvent ||\n object instanceof OriginalWindow ||\n object instanceof OriginalRange ||\n object instanceof OriginalDOMIm plementation ||\n object instanceof OriginalCanvasRenderingContext2D | |\n OriginalWebGLRenderingContext &&\n object instanceof OriginalWebGLRenderingContext ||\n OriginalSVGElementInstance &&\n object instanceof OriginalSVGElementInstance;\n }\n\n /**\n * Wr aps a node in a WrapperNode. If there already exists a wrapper for the\n * |no de| that wrapper is returned instead.\n * @param {Node} node\n * @return {Wr apperNode}\n */\n function wrap(impl) {\n if (impl === null)\n return null;\n\n assert(isNative(impl));\n return impl.polymerWrapper_ ||\n (impl.polymerWrapper_ = new (getWrapperConstructor(impl))(impl));\n }\n\n / **\n * Unwraps a wrapper and returns the node it is wrapping.\n * @param {Wr apperNode} wrapper\n * @return {Node}\n */\n function unwrap(wrapper) {\n if (wrapper === null)\n return null;\n assert(isWrapper(wrapper));\n return wrapper.impl;\n }\n\n /**\n * Unwraps object if it is a wrapper.\n * @param {Object} object\n * @return {Object} The native implementation obje ct.\n */\n function unwrapIfNeeded(object) {\n return object && isWrapper( object) ? unwrap(object) : object;\n }\n\n /**\n * Wraps object if it is not a wrapper.\n * @param {Object} object\n * @return {Object} The wrapper for object.\n */\n function wrapIfNeeded(object) {\n return object && !isWrapp er(object) ? wrap(object) : object;\n }\n\n /**\n * Overrides the current wr apper (if any) for node.\n * @param {Node} node\n * @param {WrapperNode=} wr apper If left out the wrapper will be created as\n * needed next time some one wraps the node.\n */\n function rewrap(node, wrapper) {\n if (wrapper === null)\n return;\n assert(isNative(node));\n assert(wrapper === un defined || isWrapper(wrapper));\n node.polymerWrapper_ = wrapper;\n }\n\n f unction defineGetter(constructor, name, getter) {\n defineProperty(constructo r.prototype, name, {\n get: getter,\n configurable: true,\n enume rable: true\n });\n }\n\n function defineWrapGetter(constructor, name) {\n defineGetter(constructor, name, function() {\n return wrap(this.impl[nam e]);\n });\n }\n\n /**\n * Forwards existing methods on the native object to the wrapper methods.\n * This does not wrap any of the arguments or the re turn value since the\n * wrapper implementation already takes care of that.\n * @param {Array.<Function>} constructors\n * @parem {Array.<string>} names\n */\n function forwardMethodsToWrapper(constructors, names) {\n constructo rs.forEach(function(constructor) {\n names.forEach(function(name) {\n constructor.prototype[name] = function() {\n var w = wrapIfNeeded(thi s);\n return w[name].apply(w, arguments);\n };\n });\n } );\n }\n\n scope.assert = assert;\n scope.constructorTable = constructorTable ;\n scope.defineGetter = defineGetter;\n scope.defineWrapGetter = defineWrapGe tter;\n scope.forwardMethodsToWrapper = forwardMethodsToWrapper;\n scope.isWra pper = isWrapper;\n scope.isWrapperFor = isWrapperFor;\n scope.mixin = mixin;\ n scope.nativePrototypeTable = nativePrototypeTable;\n scope.oneOf = oneOf;\n scope.registerObject = registerObject;\n scope.registerWrapper = register;\n scope.rewrap = rewrap;\n scope.unwrap = unwrap;\n scope.unwrapIfNeeded = unwra pIfNeeded;\n scope.wrap = wrap;\n scope.wrapIfNeeded = wrapIfNeeded;\n scope. wrappers = wrappers;\n\n})(window.ShadowDOMPolyfill);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is goveren ed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n(fu nction(context) {\n 'use strict';\n\n var OriginalMutationObserver = window.Mu tationObserver;\n var callbacks = [];\n var pending = false;\n var timerFunc; \n\n function handle() {\n pending = false;\n var copies = callbacks.slic e(0);\n callbacks = [];\n for (var i = 0; i < copies.length; i++) {\n (0, copies[i])();\n }\n }\n\n if (OriginalMutationObserver) {\n var cou nter = 1;\n var observer = new OriginalMutationObserver(handle);\n var tex tNode = document.createTextNode(counter);\n observer.observe(textNode, {chara cterData: true});\n\n timerFunc = function() {\n counter = (counter + 1) % 2;\n textNode.data = counter;\n };\n\n } else {\n timerFunc = win dow.setImmediate || window.setTimeout;\n }\n\n function setEndOfMicrotask(func ) {\n callbacks.push(func);\n if (pending)\n return;\n pending = t rue;\n timerFunc(handle, 0);\n }\n\n context.setEndOfMicrotask = setEndOfMi crotask;\n\n})(window.ShadowDOMPolyfill);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is goverened by a BSD- style\n * license that can be found in the LICENSE file.\n */\n\n(function(scope ) {\n 'use strict';\n\n var setEndOfMicrotask = scope.setEndOfMicrotask\n var wrapIfNeeded = scope.wrapIfNeeded\n var wrappers = scope.wrappers;\n\n var re gistrationsTable = new WeakMap();\n var globalMutationObservers = [];\n var is Scheduled = false;\n\n function scheduleCallback(observer) {\n if (isSchedul ed)\n return;\n setEndOfMicrotask(notifyObservers);\n isScheduled = t rue;\n }\n\n // http://dom.spec.whatwg.org/#mutation-observers\n function not ifyObservers() {\n isScheduled = false;\n\n do {\n var notifyList = g lobalMutationObservers.slice();\n var anyNonEmpty = false;\n for (var i = 0; i < notifyList.length; i++) {\n var mo = notifyList[i];\n v ar queue = mo.takeRecords();\n removeTransientObserversFor(mo);\n if (queue.length) {\n mo.callback_(queue, mo);\n anyNonEmpty = true;\n }\n }\n } while (anyNonEmpty);\n }\n\n /**\n * @para m {string} type\n * @param {Node} target\n * @constructor\n */\n function MutationRecord(type, target) {\n this.type = type;\n this.target = target ;\n this.addedNodes = new wrappers.NodeList();\n this.removedNodes = new w rappers.NodeList();\n this.previousSibling = null;\n this.nextSibling = nu ll;\n this.attributeName = null;\n this.attributeNamespace = null;\n th is.oldValue = null;\n }\n\n /**\n * Registers transient observers to ancesto r and its ancesors for the node\n * which was removed.\n * @param {!Node} an cestor\n * @param {!Node} node\n */\n function registerTransientObservers(a ncestor, node) {\n for (; ancestor; ancestor = ancestor.parentNode) {\n var registrations = registrationsTable.get(ancestor);\n if (!registrations) \n continue;\n for (var i = 0; i < registrations.length; i++) {\n var registration = registrations[i];\n if (registration.options.subt ree)\n registration.addTransientObserver(node);\n }\n }\n }\n\ n function removeTransientObserversFor(observer) {\n for (var i = 0; i < obs erver.nodes_.length; i++) {\n var node = observer.nodes_[i];\n var reg istrations = registrationsTable.get(node);\n if (!registrations)\n r eturn;\n for (var j = 0; j < registrations.length; j++) {\n var regi stration = registrations[j];\n if (registration.observer === observer)\n registration.removeTransientObservers();\n }\n }\n }\n\n // h ttp://dom.spec.whatwg.org/#queue-a-mutation-record\n function enqueueMutation(t arget, type, data) {\n // 1.\n var interestedObservers = Object.create(nul l);\n var associatedStrings = Object.create(null);\n\n // 2.\n for (var node = target; node; node = node.parentNode) {\n // 3.\n var registra tions = registrationsTable.get(node);\n if (!registrations)\n contin ue;\n for (var j = 0; j < registrations.length; j++) {\n var registr ation = registrations[j];\n var options = registration.options;\n // 1.\n if (node !== target && !options.subtree)\n continue;\n\n // 2.\n if (type === 'attributes' && !options.attributes)\n continue;\n\n // 3. If type is \"attributes\", options's attributeFil ter is present, and\n // either options's attributeFilter does not contai n name or namespace\n // is non-null, continue.\n if (type === 'at tributes' && options.attributeFilter &&\n (data.namespace !== null || \n options.attributeFilter.indexOf(data.name) === -1)) {\n continue;\n }\n\n // 4.\n if (type === 'characterData' && ! options.characterData)\n continue;\n\n // 5.\n if (type = == 'childList' && !options.childList)\n continue;\n\n // 6.\n var observer = registration.observer;\n interestedObservers[observer .uid_] = observer;\n\n // 7. If either type is \"attributes\" and options 's attributeOldValue is\n // true, or type is \"characterData\" and optio ns's characterDataOldValue\n // is true, set the paired string of registe red observer's observer in\n // interested observers to oldValue.\n if (type === 'attributes' && options.attributeOldValue ||\n type == = 'characterData' && options.characterDataOldValue) {\n associatedStrin gs[observer.uid_] = data.oldValue;\n }\n }\n }\n\n var anyReco rdsEnqueued = false;\n\n // 4.\n for (var uid in interestedObservers) {\n var observer = interestedObservers[uid];\n var record = new MutationRe cord(type, target);\n\n // 2.\n if ('name' in data && 'namespace' in d ata) {\n record.attributeName = data.name;\n record.attributeNames pace = data.namespace;\n }\n\n // 3.\n if (data.addedNodes)\n record.addedNodes = data.addedNodes;\n\n // 4.\n if (data.removedN odes)\n record.removedNodes = data.removedNodes;\n\n // 5.\n if (data.previousSibling)\n record.previousSibling = data.previousSibling;\ n\n // 6.\n if (data.nextSibling)\n record.nextSibling = data.n extSibling;\n\n // 7.\n if (associatedStrings[uid] !== undefined)\n record.oldValue = associatedStrings[uid];\n\n // 8.\n observer.re cords_.push(record);\n\n anyRecordsEnqueued = true;\n }\n\n if (anyRe cordsEnqueued)\n scheduleCallback();\n }\n\n var slice = Array.prototype. slice;\n\n /**\n * @param {!Object} options\n * @constructor\n */\n func tion MutationObserverOptions(options) {\n this.childList = !!options.childLis t;\n this.subtree = !!options.subtree;\n\n // 1. If either options' attrib uteOldValue or attributeFilter is present\n // and options' attributes is omi tted, set options' attributes to true.\n if (!('attributes' in options) &&\n ('attributeOldValue' in options || 'attributeFilter' in options)) {\n this.attributes = true;\n } else {\n this.attributes = !!options.attri butes;\n }\n\n // 2. If options' characterDataOldValue is present and opti ons'\n // characterData is omitted, set options' characterData to true.\n if ('characterDataOldValue' in options && !('characterData' in options))\n this.characterData = true;\n else\n this.characterData = !!options.chara cterData;\n\n // 3. & 4.\n if (!this.attributes &&\n (options.attri buteOldValue || 'attributeFilter' in options) ||\n // 5.\n !this.c haracterData && options.characterDataOldValue) {\n throw new TypeError();\n }\n\n this.characterData = !!options.characterData;\n this.attributeOl dValue = !!options.attributeOldValue;\n this.characterDataOldValue = !!option s.characterDataOldValue;\n if ('attributeFilter' in options) {\n if (opt ions.attributeFilter == null ||\n typeof options.attributeFilter !== 'o bject') {\n throw new TypeError();\n }\n this.attributeFilter = slice.call(options.attributeFilter);\n } else {\n this.attributeFilter = null;\n }\n }\n\n var uidCounter = 0;\n\n /**\n * The class that maps to the DOM MutationObserver interface.\n * @param {Function} callback.\n * @ constructor\n */\n function MutationObserver(callback) {\n this.callback_ = callback;\n this.nodes_ = [];\n this.records_ = [];\n this.uid_ = ++u idCounter;\n\n // This will leak. There is no way to implement this without W eakRefs :'(\n globalMutationObservers.push(this);\n }\n\n MutationObserver. prototype = {\n // http://dom.spec.whatwg.org/#dom-mutationobserver-observe\n observe: function(target, options) {\n target = wrapIfNeeded(target);\n \n var newOptions = new MutationObserverOptions(options);\n\n // 6.\n var registration;\n var registrations = registrationsTable.get(target) ;\n if (!registrations)\n registrationsTable.set(target, registratio ns = []);\n\n for (var i = 0; i < registrations.length; i++) {\n if (registrations[i].observer === this) {\n registration = registrations[i ];\n // 6.1.\n registration.removeTransientObservers();\n // 6.2.\n registration.options = newOptions;\n }\n }\n \n // 7.\n if (!registration) {\n registration = new Registrati on(this, target, newOptions);\n registrations.push(registration);\n this.nodes_.push(target);\n }\n },\n\n // http://dom.spec.whatwg.or g/#dom-mutationobserver-disconnect\n disconnect: function() {\n this.nod es_.forEach(function(node) {\n var registrations = registrationsTable.get (node);\n for (var i = 0; i < registrations.length; i++) {\n var registration = registrations[i];\n if (registration.observer === this) {\n registrations.splice(i, 1);\n // Each node can only h ave one registered observer associated with\n // this observer.\n break;\n }\n }\n }, this);\n this.records_ = [ ];\n },\n\n takeRecords: function() {\n var copyOfRecords = this.reco rds_;\n this.records_ = [];\n return copyOfRecords;\n }\n };\n\n /**\n * Class used to represent a registered observer.\n * @param {MutationO bserver} observer\n * @param {Node} target\n * @param {MutationObserverOptio ns} options\n * @constructor\n */\n function Registration(observer, target, options) {\n this.observer = observer;\n this.target = target;\n this. options = options;\n this.transientObservedNodes = [];\n }\n\n Registration .prototype = {\n /**\n * Adds a transient observer on node. The transient observer gets removed\n * next time we deliver the change records.\n * @param {Node} node\n */\n addTransientObserver: function(node) {\n / / Don't add transient observers on the target itself. We already have all\n // the required listeners set up on the target.\n if (node === this.target )\n return;\n\n this.transientObservedNodes.push(node);\n var r egistrations = registrationsTable.get(node);\n if (!registrations)\n registrationsTable.set(node, registrations = []);\n\n // We know that regi strations does not contain this because we already\n // checked if node === this.target.\n registrations.push(this);\n },\n\n removeTransientObs ervers: function() {\n var transientObservedNodes = this.transientObservedN odes;\n this.transientObservedNodes = [];\n\n for (var i = 0; i < tran sientObservedNodes.length; i++) {\n var node = transientObservedNodes[i]; \n var registrations = registrationsTable.get(node);\n for (var j = 0; j < registrations.length; j++) {\n if (registrations[j] === this) {\n registrations.splice(j, 1);\n // Each node can only ha ve one registered observer associated with\n // this observer.\n break;\n }\n }\n }\n }\n };\n\n scope.enqueueMu tation = enqueueMutation;\n scope.registerTransientObservers = registerTransien tObservers;\n scope.wrappers.MutationObserver = MutationObserver;\n scope.wrap pers.MutationRecord = MutationRecord;\n\n})(window.ShadowDOMPolyfill);\n","// Co pyright 2013 The Polymer Authors. All rights reserved.\n// Use of this source co de is goverened by a BSD-style\n// license that can be found in the LICENSE file .\n\n(function(scope) {\n 'use strict';\n\n var forwardMethodsToWrapper = scop e.forwardMethodsToWrapper;\n var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n var wrappers = scope.wrappers;\n\n var wrappedFuns = new WeakMap();\n var li stenersTable = new WeakMap();\n var handledEventsTable = new WeakMap();\n var currentlyDispatchingEvents = new WeakMap();\n var targetTable = new WeakMap();\ n var currentTargetTable = new WeakMap();\n var relatedTargetTable = new WeakM ap();\n var eventPhaseTable = new WeakMap();\n var stopPropagationTable = new WeakMap();\n var stopImmediatePropagationTable = new WeakMap();\n var eventHan dlersTable = new WeakMap();\n var eventPathTable = new WeakMap();\n\n function isShadowRoot(node) {\n return node instanceof wrappers.ShadowRoot;\n }\n\n function isInsertionPoint(node) {\n var localName = node.localName;\n ret urn localName === 'content' || localName === 'shadow';\n }\n\n function isShad owHost(node) {\n return !!node.shadowRoot;\n }\n\n function getEventParent( node) {\n var dv;\n return node.parentNode || (dv = node.defaultView) && w rap(dv) || null;\n }\n\n // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/ spec/shadow/index.html#dfn-adjusted-parent\n function calculateParents(node, co ntext, ancestors) {\n if (ancestors.length)\n return ancestors.shift();\ n\n // 1.\n if (isShadowRoot(node))\n return getInsertionParent(node) || node.host;\n\n // 2.\n var eventParents = scope.eventParentsTable.get( node);\n if (eventParents) {\n // Copy over the remaining event parents for next iteration.\n for (var i = 1; i < eventParents.length; i++) {\n ancestors[i - 1] = eventParents[i];\n }\n return eventParents[0];\ n }\n\n // 3.\n if (context && isInsertionPoint(node)) {\n var par entNode = node.parentNode;\n if (parentNode && isShadowHost(parentNode)) {\ n var trees = scope.getShadowTrees(parentNode);\n var p = getInser tionParent(context);\n for (var i = 0; i < trees.length; i++) {\n if (trees[i].contains(p))\n return p;\n }\n }\n }\n\ n return getEventParent(node);\n }\n\n // https://dvcs.w3.org/hg/webcompone nts/raw-file/tip/spec/shadow/index.html#event-retargeting\n function retarget(n ode) {\n var stack = []; // 1.\n var ancestor = node; // 2.\n var tar gets = [];\n var ancestors = [];\n while (ancestor) { // 3.\n var co ntext = null; // 3.2.\n // TODO(arv): Change order of these. If the stack is empty we always end\n // up pushing ancestor, no matter what.\n if (isInsertionPoint(ancestor)) { // 3.1.\n context = topMostNotInsertionPo int(stack); // 3.1.1.\n var top = stack[stack.length - 1] || ancestor; // 3.1.2.\n stack.push(top);\n } else if (!stack.length) {\n stack.push(ancestor); // 3.3.\n }\n var target = stack[stack.length - 1]; // 3.4.\n targets.push({target: target, currentTarget: ancestor}); / / 3.5.\n if (isShadowRoot(ancestor)) // 3.6.\n stack.pop(); // 3.6 .1.\n\n ancestor = calculateParents(ancestor, context, ancestors); // 3.7. \n }\n return targets;\n }\n\n function topMostNotInsertionPoint(stack) {\n for (var i = stack.length - 1; i >= 0; i--) {\n if (!isInsertionPoin t(stack[i]))\n return stack[i];\n }\n return null;\n }\n\n // htt ps://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#dfn-adjust ed-related-target\n function adjustRelatedTarget(target, related) {\n var an cestors = [];\n while (target) { // 3.\n var stack = []; // 3.1.\n var ancestor = related; // 3.2.\n var last = undefined; // 3.3. Needs t o be reset every iteration.\n while (ancestor) {\n var context = nul l;\n if (!stack.length) {\n stack.push(ancestor);\n } els e {\n if (isInsertionPoint(ancestor)) { // 3.4.3.\n context = topMostNotInsertionPoint(stack);\n // isDistributed is more genera l than checking whether last is\n // assigned into ancestor.\n if (isDistributed(last)) { // 3.4.3.2.\n var head = stack[sta ck.length - 1];\n stack.push(head);\n }\n }\n }\n\n if (inSameTree(ancestor, target)) // 3.4.4.\n retur n stack[stack.length - 1];\n\n if (isShadowRoot(ancestor)) // 3.4.5.\n stack.pop();\n\n last = ancestor; // 3.4.6.\n ancestor = calculateParents(ancestor, context, ancestors); // 3.4.7.\n }\n if (i sShadowRoot(target)) // 3.5.\n target = target.host;\n else\n target = target.parentNode; // 3.6.\n }\n }\n\n function getInsertionPar ent(node) {\n return scope.insertionParentTable.get(node);\n }\n\n function isDistributed(node) {\n return getInsertionParent(node);\n }\n\n function rootOfNode(node) {\n var p;\n while (p = node.parentNode) {\n node = p;\n }\n return node;\n }\n\n function inSameTree(a, b) {\n return ro otOfNode(a) === rootOfNode(b);\n }\n\n function enclosedBy(a, b) {\n if (a === b)\n return true;\n if (a instanceof wrappers.ShadowRoot)\n ret urn enclosedBy(rootOfNode(a.host), b);\n return false;\n }\n\n\n function d ispatchOriginalEvent(originalEvent) {\n // Make sure this event is only dispa tched once.\n if (handledEventsTable.get(originalEvent))\n return;\n handledEventsTable.set(originalEvent, true);\n\n return dispatchEvent(wrap(or iginalEvent), wrap(originalEvent.target));\n }\n\n function dispatchEvent(even t, originalWrapperTarget) {\n if (currentlyDispatchingEvents.get(event))\n throw new Error('InvalidStateError')\n currentlyDispatchingEvents.set(even t, true);\n\n // Render to ensure that the event path is correct.\n scope. renderAllPending();\n var eventPath = retarget(originalWrapperTarget);\n\n // For window load events the load event is dispatched at the window but\n / / the target is set to the document.\n //\n // http://www.whatwg.org/specs /web-apps/current-work/multipage/the-end.html#the-end\n //\n // TODO(arv): Find a less hacky way to do this.\n if (event.type === 'load' &&\n ev entPath.length === 2 &&\n eventPath[0].target instanceof wrappers.Documen t) {\n eventPath.shift();\n }\n\n eventPathTable.set(event, eventPath );\n\n if (dispatchCapturing(event, eventPath)) {\n if (dispatchAtTarget (event, eventPath)) {\n dispatchBubbling(event, eventPath);\n }\n }\n\n eventPhaseTable.set(event, Event.NONE);\n currentTargetTable.delete (event, null);\n currentlyDispatchingEvents.delete(event);\n\n return even t.defaultPrevented;\n }\n\n function dispatchCapturing(event, eventPath) {\n var phase;\n\n for (var i = eventPath.length - 1; i > 0; i--) {\n var target = eventPath[i].target;\n var currentTarget = eventPath[i].currentTar get;\n if (target === currentTarget)\n continue;\n\n phase = Ev ent.CAPTURING_PHASE;\n if (!invoke(eventPath[i], event, phase))\n re turn false;\n }\n\n return true;\n }\n\n function dispatchAtTarget(event , eventPath) {\n var phase = Event.AT_TARGET;\n return invoke(eventPath[0] , event, phase);\n }\n\n function dispatchBubbling(event, eventPath) {\n va r bubbles = event.bubbles;\n var phase;\n\n for (var i = 1; i < eventPath. length; i++) {\n var target = eventPath[i].target;\n var currentTarget = eventPath[i].currentTarget;\n if (target === currentTarget)\n pha se = Event.AT_TARGET;\n else if (bubbles && !stopImmediatePropagationTable. get(event))\n phase = Event.BUBBLING_PHASE;\n else\n continue ;\n\n if (!invoke(eventPath[i], event, phase))\n return;\n }\n } \n\n function invoke(tuple, event, phase) {\n var target = tuple.target;\n var currentTarget = tuple.currentTarget;\n\n var listeners = listenersTable .get(currentTarget);\n if (!listeners)\n return true;\n\n if ('relate dTarget' in event) {\n var originalEvent = unwrap(event);\n // X-Tag s ets relatedTarget on a CustomEvent. If they do that there is no\n // way to have relatedTarget return the adjusted target but worse is that\n // the o riginalEvent might not have a relatedTarget so we hit an assert\n // when w e try to wrap it.\n if (originalEvent.relatedTarget) {\n var related Target = wrap(originalEvent.relatedTarget);\n\n var adjusted = adjustRela tedTarget(currentTarget, relatedTarget);\n if (adjusted === target)\n return true;\n\n relatedTargetTable.set(event, adjusted);\n }\ n }\n\n eventPhaseTable.set(event, phase);\n var type = event.type;\n\n var anyRemoved = false;\n targetTable.set(event, target);\n currentTar getTable.set(event, currentTarget);\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n if (listener.removed) {\n anyRemoved = true;\n continue;\n }\n\n if (listener.type != = type ||\n !listener.capture && phase === Event.CAPTURING_PHASE ||\n listener.capture && phase === Event.BUBBLING_PHASE) {\n continue; \n }\n\n try {\n if (typeof listener.handler === 'function')\n listener.handler.call(currentTarget, event);\n else\n l istener.handler.handleEvent(event);\n\n if (stopImmediatePropagationTable .get(event))\n return false;\n\n } catch (ex) {\n if (windo w.onerror)\n window.onerror(ex.message);\n else\n conso le.error(ex, ex.stack);\n }\n }\n\n if (anyRemoved) {\n var copy = listeners.slice();\n listeners.length = 0;\n for (var i = 0; i < co py.length; i++) {\n if (!copy[i].removed)\n listeners.push(copy[ i]);\n }\n }\n\n return !stopPropagationTable.get(event);\n }\n\n f unction Listener(type, handler, capture) {\n this.type = type;\n this.hand ler = handler;\n this.capture = Boolean(capture);\n }\n Listener.prototype = {\n equals: function(that) {\n return this.handler === that.handler && this.type === that.type &&\n this.capture === that.capture;\n },\n get removed() {\n return this.handler === null;\n },\n remove: fun ction() {\n this.handler = null;\n }\n };\n\n var OriginalEvent = wind ow.Event;\n OriginalEvent.prototype.polymerBlackList_ = {\n returnValue: tru e,\n // TODO(arv): keyLocation is part of KeyboardEvent but Firefox does not\ n // support constructable KeyboardEvent so we keep it here for now.\n key Location: true\n };\n\n /**\n * Creates a new Event wrapper or wraps an exis tin native Event object.\n * @param {string|Event} type\n * @param {Object=} options\n * @constructor\n */\n function Event(type, options) {\n if (t ype instanceof OriginalEvent)\n this.impl = type;\n else\n return w rap(constructEvent(OriginalEvent, 'Event', type, options));\n }\n Event.protot ype = {\n get target() {\n return targetTable.get(this);\n },\n ge t currentTarget() {\n return currentTargetTable.get(this);\n },\n get eventPhase() {\n return eventPhaseTable.get(this);\n },\n get path() {\n var nodeList = new wrappers.NodeList();\n var eventPath = eventPa thTable.get(this);\n if (eventPath) {\n var index = 0;\n var lastIndex = eventPath.length - 1;\n var baseRoot = rootOfNode(currentTarg etTable.get(this));\n\n for (var i = 0; i <= lastIndex; i++) {\n var currentTarget = eventPath[i].currentTarget;\n var currentRoot = ro otOfNode(currentTarget);\n if (enclosedBy(baseRoot, currentRoot) &&\n // Make sure we do not add Window to the path.\n (i !== lastIndex || currentTarget instanceof wrappers.Node)) {\n nodeList[i ndex++] = currentTarget;\n }\n }\n nodeList.length = inde x;\n }\n return nodeList;\n },\n stopPropagation: function() {\n stopPropagationTable.set(this, true);\n },\n stopImmediatePropagatio n: function() {\n stopPropagationTable.set(this, true);\n stopImmediat ePropagationTable.set(this, true);\n }\n };\n registerWrapper(OriginalEvent , Event, document.createEvent('Event'));\n\n function unwrapOptions(options) {\ n if (!options || !options.relatedTarget)\n return options;\n return Object.create(options, {\n relatedTarget: {value: unwrap(options.relatedTar get)}\n });\n }\n\n function registerGenericEvent(name, SuperEvent, prototy pe) {\n var OriginalEvent = window[name];\n var GenericEvent = function(ty pe, options) {\n if (type instanceof OriginalEvent)\n this.impl = ty pe;\n else\n return wrap(constructEvent(OriginalEvent, name, type, o ptions));\n };\n GenericEvent.prototype = Object.create(SuperEvent.prototy pe);\n if (prototype)\n mixin(GenericEvent.prototype, prototype);\n i f (OriginalEvent) {\n // - Old versions of Safari fails on new FocusEvent ( and others?).\n // - IE does not support event constructors.\n // - cr eateEvent('FocusEvent') throws in Firefox.\n // => Try the best practice so lution first and fallback to the old way\n // if needed.\n try {\n registerWrapper(OriginalEvent, GenericEvent, new OriginalEvent('temp'));\n } catch (ex) {\n registerWrapper(OriginalEvent, GenericEvent,\n document.createEvent(name));\n }\n }\n return Gener icEvent;\n }\n\n var UIEvent = registerGenericEvent('UIEvent', Event);\n var CustomEvent = registerGenericEvent('CustomEvent', Event);\n\n var relatedTarget Proto = {\n get relatedTarget() {\n return relatedTargetTable.get(this) || wrap(unwrap(this).relatedTarget);\n }\n };\n\n function getInitFunction( name, relatedTargetIndex) {\n return function() {\n arguments[relatedTar getIndex] = unwrap(arguments[relatedTargetIndex]);\n var impl = unwrap(this );\n impl[name].apply(impl, arguments);\n };\n }\n\n var mouseEventPro to = mixin({\n initMouseEvent: getInitFunction('initMouseEvent', 14)\n }, re latedTargetProto);\n\n var focusEventProto = mixin({\n initFocusEvent: getIn itFunction('initFocusEvent', 5)\n }, relatedTargetProto);\n\n var MouseEvent = registerGenericEvent('MouseEvent', UIEvent, mouseEventProto);\n var FocusEvent = registerGenericEvent('FocusEvent', UIEvent, focusEventProto);\n\n // In case the browser does not support event constructors we polyfill that\n // by calli ng `createEvent('Foo')` and `initFooEvent` where the arguments to\n // `initFoo Event` are derived from the registered default event init dict.\n var defaultIn itDicts = Object.create(null);\n\n var supportsEventConstructors = (function() {\n try {\n new window.FocusEvent('focus');\n } catch (ex) {\n r eturn false;\n }\n return true;\n })();\n\n /**\n * Constructs a new n ative event.\n */\n function constructEvent(OriginalEvent, name, type, option s) {\n if (supportsEventConstructors)\n return new OriginalEvent(type, u nwrapOptions(options));\n\n // Create the arguments from the default dictiona ry.\n var event = unwrap(document.createEvent(name));\n var defaultDict = defaultInitDicts[name];\n var args = [type];\n Object.keys(defaultDict).fo rEach(function(key) {\n var v = options != null && key in options ?\n options[key] : defaultDict[key];\n if (key === 'relatedTarget')\n v = unwrap(v);\n args.push(v);\n });\n event['init' + name].apply(e vent, args);\n return event;\n }\n\n if (!supportsEventConstructors) {\n var configureEventConstructor = function(name, initDict, superName) {\n if (superName) {\n var superDict = defaultInitDicts[superName];\n in itDict = mixin(mixin({}, superDict), initDict);\n }\n\n defaultInitDic ts[name] = initDict;\n };\n\n // The order of the default event init dicti onary keys is important, the\n // arguments to initFooEvent is derived from t hat.\n configureEventConstructor('Event', {bubbles: false, cancelable: false} );\n configureEventConstructor('CustomEvent', {detail: null}, 'Event');\n configureEventConstructor('UIEvent', {view: null, detail: 0}, 'Event');\n con figureEventConstructor('MouseEvent', {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n ctrlKey: false,\n altKey: false,\ n shiftKey: false,\n metaKey: false,\n button: 0,\n relatedT arget: null\n }, 'UIEvent');\n configureEventConstructor('FocusEvent', {re latedTarget: null}, 'UIEvent');\n }\n\n function BeforeUnloadEvent(impl) {\n Event.call(this);\n }\n BeforeUnloadEvent.prototype = Object.create(Event.pr ototype);\n mixin(BeforeUnloadEvent.prototype, {\n get returnValue() {\n return this.impl.returnValue;\n },\n set returnValue(v) {\n this.im pl.returnValue = v;\n }\n });\n\n function isValidListener(fun) {\n if ( typeof fun === 'function')\n return true;\n return fun && fun.handleEven t;\n }\n\n function isMutationEvent(type) {\n switch (type) {\n case ' DOMAttrModified':\n case 'DOMAttributeNameChanged':\n case 'DOMCharact erDataModified':\n case 'DOMElementNameChanged':\n case 'DOMNodeInsert ed':\n case 'DOMNodeInsertedIntoDocument':\n case 'DOMNodeRemoved':\n case 'DOMNodeRemovedFromDocument':\n case 'DOMSubtreeModified':\n return true;\n }\n return false;\n }\n\n var OriginalEventTarget = wi ndow.EventTarget;\n\n /**\n * This represents a wrapper for an EventTarget.\n * @param {!EventTarget} impl The original event target.\n * @constructor\n */\n function EventTarget(impl) {\n this.impl = impl;\n }\n\n // Node an d Window have different internal type checks in WebKit so we cannot\n // use th e same method as the original function.\n var methodNames = [\n 'addEventLis tener',\n 'removeEventListener',\n 'dispatchEvent'\n ];\n\n [Node, Windo w].forEach(function(constructor) {\n var p = constructor.prototype;\n meth odNames.forEach(function(name) {\n Object.defineProperty(p, name + '_', {va lue: p[name]});\n });\n });\n\n function getTargetToListenAt(wrapper) {\n if (wrapper instanceof wrappers.ShadowRoot)\n wrapper = wrapper.host;\n return unwrap(wrapper);\n }\n\n EventTarget.prototype = {\n addEventListe ner: function(type, fun, capture) {\n if (!isValidListener(fun) || isMutati onEvent(type))\n return;\n\n var listener = new Listener(type, fun, capture);\n var listeners = listenersTable.get(this);\n if (!listeners ) {\n listeners = [];\n listenersTable.set(this, listeners);\n } else {\n // Might have a duplicate.\n for (var i = 0; i < list eners.length; i++) {\n if (listener.equals(listeners[i]))\n return;\n }\n }\n\n listeners.push(listener);\n\n var targ et = getTargetToListenAt(this);\n target.addEventListener_(type, dispatchOr iginalEvent, true);\n },\n removeEventListener: function(type, fun, captur e) {\n capture = Boolean(capture);\n var listeners = listenersTable.ge t(this);\n if (!listeners)\n return;\n var count = 0, found = f alse;\n for (var i = 0; i < listeners.length; i++) {\n if (listeners [i].type === type && listeners[i].capture === capture) {\n count++;\n if (listeners[i].handler === fun) {\n found = true;\n listeners[i].remove();\n }\n }\n }\n\n if (found & & count === 1) {\n var target = getTargetToListenAt(this);\n targe t.removeEventListener_(type, dispatchOriginalEvent, true);\n }\n },\n dispatchEvent: function(event) {\n // We want to use the native dispatchEv ent because it triggers the default\n // actions (like checking a checkbox) . However, if there are no listeners\n // in the composed tree then there a re no events that will trigger and\n // listeners in the non composed tree that are part of the event path are\n // not notified.\n //\n // If we find out that there are no listeners in the composed tree we add\n // a temporary listener to the target which makes us get called back even\n / / in that case.\n\n var nativeEvent = unwrap(event);\n var eventType = nativeEvent.type;\n\n // Allow dispatching the same event again. This is s afe because if user\n // code calls this during an existing dispatch of the same event the\n // native dispatchEvent throws (that is required by the s pec).\n handledEventsTable.set(nativeEvent, false);\n\n // Force rende ring since we prefer native dispatch and that works on the\n // composed tr ee.\n scope.renderAllPending();\n\n var tempListener;\n if (!hasL istenerInAncestors(this, eventType)) {\n tempListener = function() {};\n this.addEventListener(eventType, tempListener, true);\n }\n\n t ry {\n return unwrap(this).dispatchEvent_(nativeEvent);\n } finally {\n if (tempListener)\n this.removeEventListener(eventType, temp Listener, true);\n }\n }\n };\n\n function hasListener(node, type) {\n var listeners = listenersTable.get(node);\n if (listeners) {\n for ( var i = 0; i < listeners.length; i++) {\n if (!listeners[i].removed && li steners[i].type === type)\n return true;\n }\n }\n return fa lse;\n }\n\n function hasListenerInAncestors(target, type) {\n for (var nod e = unwrap(target); node; node = node.parentNode) {\n if (hasListener(wrap( node), type))\n return true;\n }\n return false;\n }\n\n if (Orig inalEventTarget)\n registerWrapper(OriginalEventTarget, EventTarget);\n\n fu nction wrapEventTargetMethods(constructors) {\n forwardMethodsToWrapper(const ructors, methodNames);\n }\n\n var originalElementFromPoint = document.element FromPoint;\n\n function elementFromPoint(self, document, x, y) {\n scope.ren derAllPending();\n\n var element = wrap(originalElementFromPoint.call(documen t.impl, x, y));\n var targets = retarget(element, this)\n for (var i = 0; i < targets.length; i++) {\n var target = targets[i];\n if (target.cur rentTarget === self)\n return target.target;\n }\n return null;\n }\n\n /**\n * Returns a function that is to be used as a getter for `onfoo` p roperties.\n * @param {string} name\n * @return {Function}\n */\n functio n getEventHandlerGetter(name) {\n return function() {\n var inlineEventH andlers = eventHandlersTable.get(this);\n return inlineEventHandlers && inl ineEventHandlers[name] &&\n inlineEventHandlers[name].value || null;\n };\n }\n\n /**\n * Returns a function that is to be used as a setter for `onfoo` properties.\n * @param {string} name\n * @return {Function}\n */\ n function getEventHandlerSetter(name) {\n var eventType = name.slice(2);\n return function(value) {\n var inlineEventHandlers = eventHandlersTable. get(this);\n if (!inlineEventHandlers) {\n inlineEventHandlers = Obj ect.create(null);\n eventHandlersTable.set(this, inlineEventHandlers);\n }\n\n var old = inlineEventHandlers[name];\n if (old)\n th is.removeEventListener(eventType, old.wrapped, false);\n\n if (typeof value === 'function') {\n var wrapped = function(e) {\n var rv = valu e.call(this, e);\n if (rv === false)\n e.preventDefault();\n else if (name === 'onbeforeunload' && typeof rv === 'string')\n e.returnValue = rv;\n // mouseover uses true for preventDefault bu t preventDefault for\n // mouseover is ignored by browsers these day.\n };\n\n this.addEventListener(eventType, wrapped, false);\n inlineEventHandlers[name] = {\n value: value,\n wrapped: wrap ped\n };\n }\n };\n }\n\n scope.adjustRelatedTarget = adjustRel atedTarget;\n scope.elementFromPoint = elementFromPoint;\n scope.getEventHandl erGetter = getEventHandlerGetter;\n scope.getEventHandlerSetter = getEventHandl erSetter;\n scope.wrapEventTargetMethods = wrapEventTargetMethods;\n scope.wra ppers.BeforeUnloadEvent = BeforeUnloadEvent;\n scope.wrappers.CustomEvent = Cus tomEvent;\n scope.wrappers.Event = Event;\n scope.wrappers.EventTarget = Event Target;\n scope.wrappers.FocusEvent = FocusEvent;\n scope.wrappers.MouseEvent = MouseEvent;\n scope.wrappers.UIEvent = UIEvent;\n\n})(window.ShadowDOMPolyfil l);\n","// Copyright 2012 The Polymer Authors. All rights reserved.\n// Use of t his source code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var wrap = scope.wrap ;\n\n function nonEnum(obj, prop) {\n Object.defineProperty(obj, prop, {enum erable: false});\n }\n\n function NodeList() {\n this.length = 0;\n nonE num(this, 'length');\n }\n NodeList.prototype = {\n item: function(index) { \n return this[index];\n }\n };\n nonEnum(NodeList.prototype, 'item'); \n\n function wrapNodeList(list) {\n if (list == null)\n return list;\n var wrapperList = new NodeList();\n for (var i = 0, length = list.length; i < length; i++) {\n wrapperList[i] = wrap(list[i]);\n }\n wrapperLi st.length = length;\n return wrapperList;\n }\n\n function addWrapNodeListM ethod(wrapperConstructor, name) {\n wrapperConstructor.prototype[name] = func tion() {\n return wrapNodeList(this.impl[name].apply(this.impl, arguments)) ;\n };\n }\n\n scope.wrappers.NodeList = NodeList;\n scope.addWrapNodeList Method = addWrapNodeListMethod;\n scope.wrapNodeList = wrapNodeList;\n\n})(wind ow.ShadowDOMPolyfill);\n","// Copyright 2012 The Polymer Authors. All rights res erved.\n// Use of this source code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n va r EventTarget = scope.wrappers.EventTarget;\n var NodeList = scope.wrappers.Nod eList;\n var assert = scope.assert;\n var defineWrapGetter = scope.defineWrapG etter;\n var enqueueMutation = scope.enqueueMutation;\n var isWrapper = scope. isWrapper;\n var mixin = scope.mixin;\n var registerTransientObservers = scope .registerTransientObservers;\n var registerWrapper = scope.registerWrapper;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n var wrapIfNeeded = scope .wrapIfNeeded;\n var wrappers = scope.wrappers;\n\n function assertIsNodeWrapp er(node) {\n assert(node instanceof Node);\n }\n\n function createOneElemen tNodeList(node) {\n var nodes = new NodeList();\n nodes[0] = node;\n no des.length = 1;\n return nodes;\n }\n\n var surpressMutations = false;\n\n /**\n * Called before node is inserted into a node to enqueue its removal fro m its\n * old parent.\n * @param {!Node} node The node that is about to be r emoved.\n * @param {!Node} parent The parent node that the node is being remov ed from.\n * @param {!NodeList} nodes The collected nodes.\n */\n function enqueueRemovalForInsertedNodes(node, parent, nodes) {\n enqueueMutation(paren t, 'childList', {\n removedNodes: nodes,\n previousSibling: node.previ ousSibling,\n nextSibling: node.nextSibling\n });\n }\n\n function enq ueueRemovalForInsertedDocumentFragment(df, nodes) {\n enqueueMutation(df, 'ch ildList', {\n removedNodes: nodes\n });\n }\n\n /**\n * Collects nod es from a DocumentFragment or a Node for removal followed\n * by an insertion. \n *\n * This updates the internal pointers for node, previousNode and nextN ode.\n */\n function collectNodes(node, parentNode, previousNode, nextNode) { \n if (node instanceof DocumentFragment) {\n var nodes = collectNodesFor DocumentFragment(node);\n\n // The extra loop is to work around bugs with D ocumentFragments in IE.\n surpressMutations = true;\n for (var i = nod es.length - 1; i >= 0; i--) {\n node.removeChild(nodes[i]);\n node s[i].parentNode_ = parentNode;\n }\n surpressMutations = false;\n\n for (var i = 0; i < nodes.length; i++) {\n nodes[i].previousSibling_ = nodes[i - 1] || previousNode;\n nodes[i].nextSibling_ = nodes[i + 1] || nextNode;\n }\n\n if (previousNode)\n previousNode.nextSibling_ = nodes[0];\n if (nextNode)\n nextNode.previousSibling_ = nodes[nod es.length - 1];\n\n return nodes;\n }\n\n var nodes = createOneElemen tNodeList(node);\n var oldParent = node.parentNode;\n if (oldParent) {\n // This will enqueue the mutation record for the removal as needed.\n o ldParent.removeChild(node);\n }\n\n node.parentNode_ = parentNode;\n no de.previousSibling_ = previousNode;\n node.nextSibling_ = nextNode;\n if ( previousNode)\n previousNode.nextSibling_ = node;\n if (nextNode)\n nextNode.previousSibling_ = node;\n\n return nodes;\n }\n\n function colle ctNodesNative(node) {\n if (node instanceof DocumentFragment)\n return c ollectNodesForDocumentFragment(node);\n\n var nodes = createOneElementNodeLis t(node);\n var oldParent = node.parentNode;\n if (oldParent)\n enqueu eRemovalForInsertedNodes(node, oldParent, nodes);\n return nodes;\n }\n\n f unction collectNodesForDocumentFragment(node) {\n var nodes = new NodeList(); \n var i = 0;\n for (var child = node.firstChild; child; child = child.nex tSibling) {\n nodes[i++] = child;\n }\n nodes.length = i;\n enqueu eRemovalForInsertedDocumentFragment(node, nodes);\n return nodes;\n }\n\n f unction snapshotNodeList(nodeList) {\n // NodeLists are not live at the momen t so just return the same object.\n return nodeList;\n }\n\n // http://dom. spec.whatwg.org/#node-is-inserted\n function nodeWasAdded(node) {\n node.nod eIsInserted_();\n }\n\n function nodesWereAdded(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n nodeWasAdded(nodes[i]);\n }\n }\n\n // http ://dom.spec.whatwg.org/#node-is-removed\n function nodeWasRemoved(node) {\n // Nothing at this point in time.\n }\n\n function nodesWereRemoved(nodes) {\n // Nothing at this point in time.\n }\n\n function ensureSameOwnerDocument (parent, child) {\n var ownerDoc = parent.nodeType === Node.DOCUMENT_NODE ?\n parent : parent.ownerDocument;\n if (ownerDoc !== child.ownerDocument )\n ownerDoc.adoptNode(child);\n }\n\n function adoptNodesIfNeeded(owner, nodes) {\n if (!nodes.length)\n return;\n\n var ownerDoc = owner.own erDocument;\n\n // All nodes have the same ownerDocument when we get here.\n if (ownerDoc === nodes[0].ownerDocument)\n return;\n\n for (var i = 0 ; i < nodes.length; i++) {\n scope.adoptNodeNoRemove(nodes[i], ownerDoc);\n }\n }\n\n function unwrapNodesForInsertion(owner, nodes) {\n adoptNodes IfNeeded(owner, nodes);\n var length = nodes.length;\n\n if (length === 1) \n return unwrap(nodes[0]);\n\n var df = unwrap(owner.ownerDocument.crea teDocumentFragment());\n for (var i = 0; i < length; i++) {\n df.appendC hild(unwrap(nodes[i]));\n }\n return df;\n }\n\n function clearChildNode s(wrapper) {\n if (wrapper.firstChild_ !== undefined) {\n var child = wr apper.firstChild_;\n while (child) {\n var tmp = child;\n chi ld = child.nextSibling_;\n tmp.parentNode_ = tmp.previousSibling_ = tmp.n extSibling_ = undefined;\n }\n }\n wrapper.firstChild_ = wrapper.last Child_ = undefined;\n }\n\n function removeAllChildNodes(wrapper) {\n if (w rapper.invalidateShadowRenderer()) {\n var childWrapper = wrapper.firstChil d;\n while (childWrapper) {\n assert(childWrapper.parentNode === wra pper);\n var nextSibling = childWrapper.nextSibling;\n var childNo de = unwrap(childWrapper);\n var parentNode = childNode.parentNode;\n if (parentNode)\n originalRemoveChild.call(parentNode, childNode);\ n childWrapper.previousSibling_ = childWrapper.nextSibling_ =\n childWrapper.parentNode_ = null;\n childWrapper = nextSibling;\n } \n wrapper.firstChild_ = wrapper.lastChild_ = null;\n } else {\n va r node = unwrap(wrapper);\n var child = node.firstChild;\n var nextSib ling;\n while (child) {\n nextSibling = child.nextSibling;\n originalRemoveChild.call(node, child);\n child = nextSibling;\n }\n }\n }\n\n function invalidateParent(node) {\n var p = node.parentNode;\n return p && p.invalidateShadowRenderer();\n }\n\n function cleanupNodes(no des) {\n for (var i = 0, n; i < nodes.length; i++) {\n n = nodes[i];\n n.parentNode.removeChild(n);\n }\n }\n\n var originalImportNode = docum ent.importNode;\n var originalCloneNode = window.Node.prototype.cloneNode;\n\n function cloneNode(node, deep, opt_doc) {\n var clone;\n if (opt_doc)\n clone = wrap(originalImportNode.call(opt_doc, node.impl, false));\n else\ n clone = wrap(originalCloneNode.call(node.impl, false));\n\n if (deep) {\n for (var child = node.firstChild; child; child = child.nextSibling) {\n clone.appendChild(cloneNode(child, true, opt_doc));\n }\n\n if (node instanceof wrappers.HTMLTemplateElement) {\n var cloneContent = cl one.content;\n for (var child = node.content.firstChild;\n ch ild;\n child = child.nextSibling) {\n cloneContent.appendChi ld(cloneNode(child, true, opt_doc));\n }\n }\n }\n // TODO(arv ): Some HTML elements also clone other data like value.\n return clone;\n }\ n\n var OriginalNode = window.Node;\n\n /**\n * This represents a wrapper of a native DOM node.\n * @param {!Node} original The original DOM node, aka, th e visual DOM node.\n * @constructor\n * @extends {EventTarget}\n */\n fun ction Node(original) {\n assert(original instanceof OriginalNode);\n\n Eve ntTarget.call(this, original);\n\n // These properties are used to override t he visual references with the\n // logical ones. If the value is undefined it means that the logical is the\n // same as the visual.\n\n /**\n * @t ype {Node|undefined}\n * @private\n */\n this.parentNode_ = undefined ;\n\n /**\n * @type {Node|undefined}\n * @private\n */\n this. firstChild_ = undefined;\n\n /**\n * @type {Node|undefined}\n * @priv ate\n */\n this.lastChild_ = undefined;\n\n /**\n * @type {Node|un defined}\n * @private\n */\n this.nextSibling_ = undefined;\n\n /* *\n * @type {Node|undefined}\n * @private\n */\n this.previousSib ling_ = undefined;\n }\n\n var OriginalDocumentFragment = window.DocumentFragm ent;\n var originalAppendChild = OriginalNode.prototype.appendChild;\n var ori ginalCompareDocumentPosition =\n OriginalNode.prototype.compareDocumentPosi tion;\n var originalInsertBefore = OriginalNode.prototype.insertBefore;\n var originalRemoveChild = OriginalNode.prototype.removeChild;\n var originalReplace Child = OriginalNode.prototype.replaceChild;\n\n var isIe = /Trident/.test(navi gator.userAgent);\n\n var removeChildOriginalHelper = isIe ?\n function(pa rent, child) {\n try {\n originalRemoveChild.call(parent, child) ;\n } catch (ex) {\n if (!(parent instanceof OriginalDocumentFra gment))\n throw ex;\n }\n } :\n function(parent, chi ld) {\n originalRemoveChild.call(parent, child);\n };\n\n Node.prot otype = Object.create(EventTarget.prototype);\n mixin(Node.prototype, {\n ap pendChild: function(childWrapper) {\n return this.insertBefore(childWrapper , null);\n },\n\n insertBefore: function(childWrapper, refWrapper) {\n assertIsNodeWrapper(childWrapper);\n\n var refNode;\n if (refWrapper ) {\n if (isWrapper(refWrapper)) {\n refNode = unwrap(refWrapper );\n } else {\n refNode = refWrapper;\n refWrapper = wr ap(refNode);\n }\n } else {\n refWrapper = null;\n ref Node = null;\n }\n\n refWrapper && assert(refWrapper.parentNode === th is);\n\n var nodes;\n var previousNode =\n refWrapper ? refWr apper.previousSibling : this.lastChild;\n\n var useNative = !this.invalidat eShadowRenderer() &&\n !invalidateParent(childWrapper);\n\n if (useNative)\n nodes = collectNodesNative(childWrapper);\n e lse\n nodes = collectNodes(childWrapper, this, previousNode, refWrapper); \n\n if (useNative) {\n ensureSameOwnerDocument(this, childWrapper); \n clearChildNodes(this);\n originalInsertBefore.call(this.impl, u nwrap(childWrapper), refNode);\n } else {\n if (!previousNode)\n this.firstChild_ = nodes[0];\n if (!refWrapper)\n this.las tChild_ = nodes[nodes.length - 1];\n\n var parentNode = refNode ? refNode .parentNode : this.impl;\n\n // insertBefore refWrapper no matter what th e parent is?\n if (parentNode) {\n originalInsertBefore.call(par entNode,\n unwrapNodesForInsertion(this, nodes), refNode);\n } else {\n adoptNodesIfNeeded(this, nodes);\n }\n }\n\n enqueueMutation(this, 'childList', {\n addedNodes: nodes,\n nex tSibling: refWrapper,\n previousSibling: previousNode\n });\n\n nodesWereAdded(nodes);\n\n return childWrapper;\n },\n\n removeChild : function(childWrapper) {\n assertIsNodeWrapper(childWrapper);\n if ( childWrapper.parentNode !== this) {\n // IE has invalid DOM trees at time s.\n var found = false;\n var childNodes = this.childNodes;\n for (var ieChild = this.firstChild; ieChild;\n ieChild = ieChild. nextSibling) {\n if (ieChild === childWrapper) {\n found = t rue;\n break;\n }\n }\n if (!found) {\n // TODO(arv): DOMException\n throw new Error('NotFoundError');\n }\n }\n\n var childNode = unwrap(childWrapper);\n var childWr apperNextSibling = childWrapper.nextSibling;\n var childWrapperPreviousSibl ing = childWrapper.previousSibling;\n\n if (this.invalidateShadowRenderer() ) {\n // We need to remove the real node from the DOM before updating the \n // pointers. This is so that that mutation event is dispatched before\ n // the pointers have changed.\n var thisFirstChild = this.firstC hild;\n var thisLastChild = this.lastChild;\n\n var parentNode = c hildNode.parentNode;\n if (parentNode)\n removeChildOriginalHelp er(parentNode, childNode);\n\n if (thisFirstChild === childWrapper)\n this.firstChild_ = childWrapperNextSibling;\n if (thisLastChild === childWrapper)\n this.lastChild_ = childWrapperPreviousSibling;\n if (childWrapperPreviousSibling)\n childWrapperPreviousSibling.nextSi bling_ = childWrapperNextSibling;\n if (childWrapperNextSibling) {\n childWrapperNextSibling.previousSibling_ =\n childWrapperPrevi ousSibling;\n }\n\n childWrapper.previousSibling_ = childWrapper.n extSibling_ =\n childWrapper.parentNode_ = undefined;\n } else { \n clearChildNodes(this);\n removeChildOriginalHelper(this.impl, c hildNode);\n }\n\n if (!surpressMutations) {\n enqueueMutation( this, 'childList', {\n removedNodes: createOneElementNodeList(childWrap per),\n nextSibling: childWrapperNextSibling,\n previousSiblin g: childWrapperPreviousSibling\n });\n }\n\n registerTransientO bservers(this, childWrapper);\n\n return childWrapper;\n },\n\n repla ceChild: function(newChildWrapper, oldChildWrapper) {\n assertIsNodeWrapper (newChildWrapper);\n\n var oldChildNode;\n if (isWrapper(oldChildWrapp er)) {\n oldChildNode = unwrap(oldChildWrapper);\n } else {\n oldChildNode = oldChildWrapper;\n oldChildWrapper = wrap(oldChildNode);\ n }\n\n if (oldChildWrapper.parentNode !== this) {\n // TODO(ar v): DOMException\n throw new Error('NotFoundError');\n }\n\n va r nextNode = oldChildWrapper.nextSibling;\n var previousNode = oldChildWrap per.previousSibling;\n var nodes;\n\n var useNative = !this.invalidate ShadowRenderer() &&\n !invalidateParent(newChildWrapper);\n \n if (useNative) {\n nodes = collectNodesNative(newChildWrapper);\n } else {\n if (nextNode === newChildWrapper)\n nextNode = newChildWrapper.nextSibling;\n nodes = collectNodes(newChildWrapper, this , previousNode, nextNode);\n }\n\n if (!useNative) {\n if (this .firstChild === oldChildWrapper)\n this.firstChild_ = nodes[0];\n if (this.lastChild === oldChildWrapper)\n this.lastChild_ = nodes[nod es.length - 1];\n\n oldChildWrapper.previousSibling_ = oldChildWrapper.ne xtSibling_ =\n oldChildWrapper.parentNode_ = undefined;\n\n // replaceChild no matter what the parent is?\n if (oldChildNode.parentNode ) {\n originalReplaceChild.call(\n oldChildNode.parentNode ,\n unwrapNodesForInsertion(this, nodes),\n oldChildNo de);\n }\n } else {\n ensureSameOwnerDocument(this, newChildW rapper);\n clearChildNodes(this);\n originalReplaceChild.call(this .impl, unwrap(newChildWrapper),\n oldChildNode) ;\n }\n\n enqueueMutation(this, 'childList', {\n addedNodes: no des,\n removedNodes: createOneElementNodeList(oldChildWrapper),\n nextSibling: nextNode,\n previousSibling: previousNode\n });\n\n nodeWasRemoved(oldChildWrapper);\n nodesWereAdded(nodes);\n\n return oldChildWrapper;\n },\n\n /**\n * Called after a node was inserted. S ubclasses override this to invalidate\n * the renderer as needed.\n * @p rivate\n */\n nodeIsInserted_: function() {\n for (var child = this. firstChild; child; child = child.nextSibling) {\n child.nodeIsInserted_() ;\n }\n },\n\n hasChildNodes: function() {\n return this.firstCh ild !== null;\n },\n\n /** @type {Node} */\n get parentNode() {\n // If the parentNode has not been overridden, use the original parentNode.\n return this.parentNode_ !== undefined ?\n this.parentNode_ : wrap(thi s.impl.parentNode);\n },\n\n /** @type {Node} */\n get firstChild() {\n return this.firstChild_ !== undefined ?\n this.firstChild_ : wrap (this.impl.firstChild);\n },\n\n /** @type {Node} */\n get lastChild() {\n return this.lastChild_ !== undefined ?\n this.lastChild_ : wra p(this.impl.lastChild);\n },\n\n /** @type {Node} */\n get nextSibling( ) {\n return this.nextSibling_ !== undefined ?\n this.nextSibling_ : wrap(this.impl.nextSibling);\n },\n\n /** @type {Node} */\n get prev iousSibling() {\n return this.previousSibling_ !== undefined ?\n t his.previousSibling_ : wrap(this.impl.previousSibling);\n },\n\n get paren tElement() {\n var p = this.parentNode;\n while (p && p.nodeType !== N ode.ELEMENT_NODE) {\n p = p.parentNode;\n }\n return p;\n }, \n\n get textContent() {\n // TODO(arv): This should fallback to this.im pl.textContent if there\n // are no shadow trees below or above the context node.\n var s = '';\n for (var child = this.firstChild; child; child = child.nextSibling) {\n if (child.nodeType != Node.COMMENT_NODE) {\n s += child.textContent;\n }\n }\n return s;\n },\n set textContent(textContent) {\n var removedNodes = snapshotNodeList(this.c hildNodes);\n\n if (this.invalidateShadowRenderer()) {\n removeAllCh ildNodes(this);\n if (textContent !== '') {\n var textNode = thi s.impl.ownerDocument.createTextNode(textContent);\n this.appendChild(te xtNode);\n }\n } else {\n clearChildNodes(this);\n thi s.impl.textContent = textContent;\n }\n\n var addedNodes = snapshotNod eList(this.childNodes);\n\n enqueueMutation(this, 'childList', {\n a ddedNodes: addedNodes,\n removedNodes: removedNodes\n });\n\n n odesWereRemoved(removedNodes);\n nodesWereAdded(addedNodes);\n },\n\n get childNodes() {\n var wrapperList = new NodeList();\n var i = 0;\n for (var child = this.firstChild; child; child = child.nextSibling) {\n wrapperList[i++] = child;\n }\n wrapperList.length = i;\n re turn wrapperList;\n },\n\n cloneNode: function(deep) {\n return clone Node(this, deep);\n },\n\n contains: function(child) {\n if (!child)\ n return false;\n\n child = wrapIfNeeded(child);\n\n // TODO(ar v): Optimize using ownerDocument etc.\n if (child === this)\n return true;\n var parentNode = child.parentNode;\n if (!parentNode)\n return false;\n return this.contains(parentNode);\n },\n\n compareD ocumentPosition: function(otherNode) {\n // This only wraps, it therefore o nly operates on the composed DOM and not\n // the logical DOM.\n retur n originalCompareDocumentPosition.call(this.impl, unwrap(otherNode));\n },\n\ n normalize: function() {\n var nodes = snapshotNodeList(this.childNodes );\n var remNodes = [];\n var s = '';\n var modNode;\n\n for (var i = 0, n; i < nodes.length; i++) {\n n = nodes[i];\n if (n.n odeType === Node.TEXT_NODE) {\n if (!modNode && !n.data.length)\n this.removeNode(n);\n else if (!modNode)\n modNode = n ;\n else {\n s += n.data;\n remNodes.push(n);\n }\n } else {\n if (modNode && remNodes.length) {\n modNode.data += s;\n cleanUpNodes(remNodes);\n }\n remNodes = [];\n s = '';\n modNode = null;\n if (n.childNodes.length)\n n.normalize();\n }\n }\n\n // handle case where >1 text nodes are the last children\n if (modNode && r emNodes.length) {\n modNode.data += s;\n cleanupNodes(remNodes);\n }\n }\n });\n\n defineWrapGetter(Node, 'ownerDocument');\n\n // We u se a DocumentFragment as a base and then delete the properties of\n // Document Fragment.prototype from the wrapper Node. Since delete makes\n // objects slow in some JS engines we recreate the prototype object.\n registerWrapper(Original Node, Node, document.createDocumentFragment());\n delete Node.prototype.querySe lector;\n delete Node.prototype.querySelectorAll;\n Node.prototype = mixin(Obj ect.create(EventTarget.prototype), Node.prototype);\n\n scope.nodeWasAdded = no deWasAdded;\n scope.nodeWasRemoved = nodeWasRemoved;\n scope.nodesWereAdded = nodesWereAdded;\n scope.nodesWereRemoved = nodesWereRemoved;\n scope.snapshotN odeList = snapshotNodeList;\n scope.wrappers.Node = Node;\n scope.cloneNode = cloneNode;\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Au thors. All rights reserved.\n// Use of this source code is governed by a BSD-sty le\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n ' use strict';\n\n function findOne(node, selector) {\n var m, el = node.first ElementChild;\n while (el) {\n if (el.matches(selector))\n return el;\n m = findOne(el, selector);\n if (m)\n return m;\n e l = el.nextElementSibling;\n }\n return null;\n }\n\n function findAll(n ode, selector, results) {\n var el = node.firstElementChild;\n while (el) {\n if (el.matches(selector))\n results[results.length++] = el;\n findAll(el, selector, results);\n el = el.nextElementSibling;\n }\n return results;\n }\n\n // find and findAll will only match Simple Selectors ,\n // Structural Pseudo Classes are not guarenteed to be correct\n // http:// www.w3.org/TR/css3-selectors/#simple-selectors\n\n var SelectorsInterface = {\n querySelector: function(selector) {\n return findOne(this, selector);\n },\n querySelectorAll: function(selector) {\n return findAll(this, s elector, new NodeList())\n }\n };\n\n var GetElementsByInterface = {\n g etElementsByTagName: function(tagName) {\n // TODO(arv): Check tagName?\n return this.querySelectorAll(tagName);\n },\n getElementsByClassName: function(className) {\n // TODO(arv): Check className?\n return this.q uerySelectorAll('.' + className);\n },\n getElementsByTagNameNS: function( ns, tagName) {\n if (ns === '*')\n return this.getElementsByTagName( tagName);\n\n // TODO(arv): Check tagName?\n var result = new NodeList ;\n var els = this.getElementsByTagName(tagName);\n for (var i = 0, j = 0; i < els.length; i++) {\n if (els[i].namespaceURI === ns)\n result[j++] = els[i];\n }\n result.length = j;\n return result;\n }\n };\n\n scope.GetElementsByInterface = GetElementsByInterface;\n scope .SelectorsInterface = SelectorsInterface;\n\n})(window.ShadowDOMPolyfill);\n","/ / Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this sourc e code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var NodeList = scope.wrappers. NodeList;\n\n function forwardElement(node) {\n while (node && node.nodeType !== Node.ELEMENT_NODE) {\n node = node.nextSibling;\n }\n return nod e;\n }\n\n function backwardsElement(node) {\n while (node && node.nodeType !== Node.ELEMENT_NODE) {\n node = node.previousSibling;\n }\n return node;\n }\n\n var ParentNodeInterface = {\n get firstElementChild() {\n return forwardElement(this.firstChild);\n },\n\n get lastElementChild() {\n return backwardsElement(this.lastChild);\n },\n\n get childEleme ntCount() {\n var count = 0;\n for (var child = this.firstElementChild ;\n child;\n child = child.nextElementSibling) {\n co unt++;\n }\n return count;\n },\n\n get children() {\n var wrapperList = new NodeList();\n var i = 0;\n for (var child = this.fir stElementChild;\n child;\n child = child.nextElementSibling) {\n wrapperList[i++] = child;\n }\n wrapperList.length = i;\n return wrapperList;\n }\n };\n\n var ChildNodeInterface = {\n get n extElementSibling() {\n return forwardElement(this.nextSibling);\n },\n\ n get previousElementSibling() {\n return backwardsElement(this.previous Sibling);\n }\n };\n\n scope.ChildNodeInterface = ChildNodeInterface;\n sc ope.ParentNodeInterface = ParentNodeInterface;\n\n})(window.ShadowDOMPolyfill);\ n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this source code is goverened by a BSD-style\n// license that can be found in the LIC ENSE file.\n\n(function(scope) {\n 'use strict';\n\n var ChildNodeInterface = scope.ChildNodeInterface;\n var Node = scope.wrappers.Node;\n var enqueueMutat ion = scope.enqueueMutation;\n var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n\n var OriginalCharacterData = window.CharacterData;\ n\n function CharacterData(node) {\n Node.call(this, node);\n }\n Characte rData.prototype = Object.create(Node.prototype);\n mixin(CharacterData.prototyp e, {\n get textContent() {\n return this.data;\n },\n set textCont ent(value) {\n this.data = value;\n },\n get data() {\n return t his.impl.data;\n },\n set data(value) {\n var oldValue = this.impl.da ta;\n enqueueMutation(this, 'characterData', {\n oldValue: oldValue\ n });\n this.impl.data = value;\n }\n });\n\n mixin(CharacterData .prototype, ChildNodeInterface);\n\n registerWrapper(OriginalCharacterData, Cha racterData,\n document.createTextNode(''));\n\n scope.wrappers .CharacterData = CharacterData;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2014 The Polymer Authors. All rights reserved.\n// Use of this source code is go verened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(fu nction(scope) {\n 'use strict';\n\n var CharacterData = scope.wrappers.Charact erData;\n var enqueueMutation = scope.enqueueMutation;\n var mixin = scope.mix in;\n var registerWrapper = scope.registerWrapper;\n\n function toUInt32(x) {\ n return x >>> 0;\n }\n\n var OriginalText = window.Text;\n\n function Tex t(node) {\n CharacterData.call(this, node);\n }\n Text.prototype = Object.c reate(CharacterData.prototype);\n mixin(Text.prototype, {\n splitText: funct ion(offset) {\n offset = toUInt32(offset);\n var s = this.data;\n if (offset > s.length)\n throw new Error('IndexSizeError');\n var h ead = s.slice(0, offset);\n var tail = s.slice(offset);\n this.data = head;\n var newTextNode = this.ownerDocument.createTextNode(tail);\n i f (this.parentNode)\n this.parentNode.insertBefore(newTextNode, this.next Sibling);\n return newTextNode;\n }\n });\n\n registerWrapper(Original Text, Text, document.createTextNode(''));\n\n scope.wrappers.Text = Text;\n})(w indow.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this source code is goverened by a BSD-style\n// license th at can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var ChildNodeInterface = scope.ChildNodeInterface;\n var GetElementsByInterfac e = scope.GetElementsByInterface;\n var Node = scope.wrappers.Node;\n var Pare ntNodeInterface = scope.ParentNodeInterface;\n var SelectorsInterface = scope.S electorsInterface;\n var addWrapNodeListMethod = scope.addWrapNodeListMethod;\n var enqueueMutation = scope.enqueueMutation;\n var mixin = scope.mixin;\n va r oneOf = scope.oneOf;\n var registerWrapper = scope.registerWrapper;\n var wr appers = scope.wrappers;\n\n var OriginalElement = window.Element;\n\n var mat chesNames = [\n 'matches', // needs to come first.\n 'mozMatchesSelector' ,\n 'msMatchesSelector',\n 'webkitMatchesSelector',\n ].filter(function(n ame) {\n return OriginalElement.prototype[name];\n });\n\n var matchesName = matchesNames[0];\n\n var originalMatches = OriginalElement.prototype[matchesN ame];\n\n function invalidateRendererBasedOnAttribute(element, name) {\n // Only invalidate if parent node is a shadow host.\n var p = element.parentNode ;\n if (!p || !p.shadowRoot)\n return;\n\n var renderer = scope.getRe ndererForHost(p);\n if (renderer.dependsOnAttribute(name))\n renderer.in validate();\n }\n\n function enqueAttributeChange(element, name, oldValue) {\n // This is not fully spec compliant. We should use localName (which might\n // have a different case than name) and the namespace (which requires us\n // to get the Attr object).\n enqueueMutation(element, 'attributes', {\n name: name,\n namespace: null,\n oldValue: oldValue\n });\n }\n\ n function Element(node) {\n Node.call(this, node);\n }\n Element.prototyp e = Object.create(Node.prototype);\n mixin(Element.prototype, {\n createShad owRoot: function() {\n var newShadowRoot = new wrappers.ShadowRoot(this);\n this.impl.polymerShadowRoot_ = newShadowRoot;\n\n var renderer = scop e.getRendererForHost(this);\n renderer.invalidate();\n\n return newSha dowRoot;\n },\n\n get shadowRoot() {\n return this.impl.polymerShadow Root_ || null;\n },\n\n setAttribute: function(name, value) {\n var o ldValue = this.impl.getAttribute(name);\n this.impl.setAttribute(name, valu e);\n enqueAttributeChange(this, name, oldValue);\n invalidateRenderer BasedOnAttribute(this, name);\n },\n\n removeAttribute: function(name) {\n var oldValue = this.impl.getAttribute(name);\n this.impl.removeAttrib ute(name);\n enqueAttributeChange(this, name, oldValue);\n invalidateR endererBasedOnAttribute(this, name);\n },\n\n matches: function(selector) {\n return originalMatches.call(this.impl, selector);\n }\n });\n\n ma tchesNames.forEach(function(name) {\n if (name !== 'matches') {\n Elemen t.prototype[name] = function(selector) {\n return this.matches(selector); \n };\n }\n });\n\n if (OriginalElement.prototype.webkitCreateShadowRo ot) {\n Element.prototype.webkitCreateShadowRoot =\n Element.prototype .createShadowRoot;\n }\n\n /**\n * Useful for generating the accessor pair f or a property that reflects an\n * attribute.\n */\n function setterDirties Attribute(prototype, propertyName, opt_attrName) {\n var attrName = opt_attrN ame || propertyName;\n Object.defineProperty(prototype, propertyName, {\n get: function() {\n return this.impl[propertyName];\n },\n se t: function(v) {\n this.impl[propertyName] = v;\n invalidateRender erBasedOnAttribute(this, attrName);\n },\n configurable: true,\n enumerable: true\n });\n }\n\n setterDirtiesAttribute(Element.prototype, 'i d');\n setterDirtiesAttribute(Element.prototype, 'className', 'class');\n\n mi xin(Element.prototype, ChildNodeInterface);\n mixin(Element.prototype, GetEleme ntsByInterface);\n mixin(Element.prototype, ParentNodeInterface);\n mixin(Elem ent.prototype, SelectorsInterface);\n\n registerWrapper(OriginalElement, Elemen t,\n document.createElementNS(null, 'x'));\n\n // TODO(arv): E xport setterDirtiesAttribute and apply it to more bindings\n // that reflect at tributes.\n scope.matchesNames = matchesNames;\n scope.wrappers.Element = Elem ent;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. A ll rights reserved.\n// Use of this source code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n 'use str ict';\n\n var Element = scope.wrappers.Element;\n var defineGetter = scope.def ineGetter;\n var enqueueMutation = scope.enqueueMutation;\n var mixin = scope. mixin;\n var nodesWereAdded = scope.nodesWereAdded;\n var nodesWereRemoved = s cope.nodesWereRemoved;\n var registerWrapper = scope.registerWrapper;\n var sn apshotNodeList = scope.snapshotNodeList;\n var unwrap = scope.unwrap;\n var wr ap = scope.wrap;\n var wrappers = scope.wrappers;\n\n //////////////////////// /////////////////////////////////////////////////////\n // innerHTML and outerH TML\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end. html#escapingString\n var escapeAttrRegExp = /[&\\u00A0\"]/g;\n var escapeData RegExp = /[&\\u00A0<>]/g;\n\n function escapeReplace(c) {\n switch (c) {\n case '&':\n return '&amp;';\n case '<':\n return '&lt;';\ n case '>':\n return '&gt;';\n case '\"':\n return '&quo t;'\n case '\\u00A0':\n return '&nbsp;';\n }\n }\n\n function e scapeAttr(s) {\n return s.replace(escapeAttrRegExp, escapeReplace);\n }\n\n function escapeData(s) {\n return s.replace(escapeDataRegExp, escapeReplace) ;\n }\n\n function makeSet(arr) {\n var set = {};\n for (var i = 0; i < arr.length; i++) {\n set[arr[i]] = true;\n }\n return set;\n }\n\n // http://www.whatwg.org/specs/web-apps/current-work/#void-elements\n var voidE lements = makeSet([\n 'area',\n 'base',\n 'br',\n 'col',\n 'comma nd',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'lin k',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n ]);\n\ n var plaintextParents = makeSet([\n 'style',\n 'script',\n 'xmp',\n 'iframe',\n 'noembed',\n 'noframes',\n 'plaintext',\n 'noscript'\n ]);\n\n function getOuterHTML(node, parentNode) {\n switch (node.nodeType) {\n case Node.ELEMENT_NODE:\n var tagName = node.tagName.toLowerCas e();\n var s = '<' + tagName;\n var attrs = node.attributes;\n for (var i = 0, attr; attr = attrs[i]; i++) {\n s += ' ' + attr.nam e + '=\"' + escapeAttr(attr.value) + '\"';\n }\n s += '>';\n if (voidElements[tagName])\n return s;\n\n return s + getInner HTML(node) + '</' + tagName + '>';\n\n case Node.TEXT_NODE:\n var da ta = node.data;\n if (parentNode && plaintextParents[parentNode.localName ])\n return data;\n return escapeData(data);\n\n case Node. COMMENT_NODE:\n return '<!--' + node.data + '-->';\n\n default:\n console.error(node);\n throw new Error('not implemented');\n }\n }\n\n function getInnerHTML(node) {\n if (node instanceof wrappers.HTMLTemp lateElement)\n node = node.content;\n\n var s = '';\n for (var child = node.firstChild; child; child = child.nextSibling) {\n s += getOuterHTML( child, node);\n }\n return s;\n }\n\n function setInnerHTML(node, value, opt_tagName) {\n var tagName = opt_tagName || 'div';\n node.textContent = '';\n var tempElement = unwrap(node.ownerDocument.createElement(tagName));\n tempElement.innerHTML = value;\n var firstChild;\n while (firstChild = tempElement.firstChild) {\n node.appendChild(wrap(firstChild));\n }\n }\n\n // IE11 does not have MSIE in the user agent string.\n var oldIe = /MSIE /.test(navigator.userAgent);\n\n var OriginalHTMLElement = window.HTMLElement;\ n var OriginalHTMLTemplateElement = window.HTMLTemplateElement;\n\n function H TMLElement(node) {\n Element.call(this, node);\n }\n HTMLElement.prototype = Object.create(Element.prototype);\n mixin(HTMLElement.prototype, {\n get i nnerHTML() {\n return getInnerHTML(this);\n },\n set innerHTML(value) {\n // IE9 does not handle set innerHTML correctly on plaintextParents. It \n // creates element children. For example\n //\n // scriptEle ment.innerHTML = '<a>test</a>'\n //\n // Creates a single HTMLAnchorEl ement child.\n if (oldIe && plaintextParents[this.localName]) {\n th is.textContent = value;\n return;\n }\n\n var removedNodes = sn apshotNodeList(this.childNodes);\n\n if (this.invalidateShadowRenderer()) { \n if (this instanceof wrappers.HTMLTemplateElement)\n setInnerH TML(this.content, value);\n else\n setInnerHTML(this, value, thi s.tagName);\n\n // If we have a non native template element we need to hand le this\n // manually since setting impl.innerHTML would add the html as di rect\n // children and not be moved over to the content fragment.\n } else if (!OriginalHTMLTemplateElement &&\n this instanceof wrapp ers.HTMLTemplateElement) {\n setInnerHTML(this.content, value);\n } else {\n this.impl.innerHTML = value;\n }\n\n var addedNodes = snapshotNodeList(this.childNodes);\n\n enqueueMutation(this, 'childList', { \n addedNodes: addedNodes,\n removedNodes: removedNodes\n }); \n\n nodesWereRemoved(removedNodes);\n nodesWereAdded(addedNodes);\n },\n\n get outerHTML() {\n return getOuterHTML(this, this.parentNode); \n },\n set outerHTML(value) {\n var p = this.parentNode;\n if ( p) {\n p.invalidateShadowRenderer();\n var df = frag(p, value);\n p.replaceChild(df, this);\n }\n },\n\n insertAdjacentHTML: fun ction(position, text) {\n var contextElement, refNode;\n switch (Strin g(position).toLowerCase()) {\n case 'beforebegin':\n contextElem ent = this.parentNode;\n refNode = this;\n break;\n cas e 'afterend':\n contextElement = this.parentNode;\n refNode = this.nextSibling;\n break;\n case 'afterbegin':\n conte xtElement = this;\n refNode = this.firstChild;\n break;\n case 'beforeend':\n contextElement = this;\n refNode = null ;\n break;\n default:\n return;\n }\n\n var d f = frag(contextElement, text);\n contextElement.insertBefore(df, refNode); \n }\n });\n\n function frag(contextElement, html) {\n // TODO(arv): Thi s does not work with SVG and other non HTML elements.\n var p = unwrap(contex tElement.cloneNode(false));\n p.innerHTML = html;\n var df = unwrap(docume nt.createDocumentFragment());\n var c;\n while (c = p.firstChild) {\n df.appendChild(c);\n }\n return wrap(df);\n }\n\n function getter(name) {\n return function() {\n scope.renderAllPending();\n return this. impl[name];\n };\n }\n\n function getterRequiresRendering(name) {\n defi neGetter(HTMLElement, name, getter(name));\n }\n\n [\n 'clientHeight',\n 'clientLeft',\n 'clientTop',\n 'clientWidth',\n 'offsetHeight',\n ' offsetLeft',\n 'offsetTop',\n 'offsetWidth',\n 'scrollHeight',\n 'sc rollWidth',\n ].forEach(getterRequiresRendering);\n\n function getterAndSetter RequiresRendering(name) {\n Object.defineProperty(HTMLElement.prototype, name , {\n get: getter(name),\n set: function(v) {\n scope.renderAll Pending();\n this.impl[name] = v;\n },\n configurable: true,\n enumerable: true\n });\n }\n\n [\n 'scrollLeft',\n 'scrollTop',\ n ].forEach(getterAndSetterRequiresRendering);\n\n function methodRequiresRend ering(name) {\n Object.defineProperty(HTMLElement.prototype, name, {\n v alue: function() {\n scope.renderAllPending();\n return this.impl[ name].apply(this.impl, arguments);\n },\n configurable: true,\n e numerable: true\n });\n }\n\n [\n 'getBoundingClientRect',\n 'getClie ntRects',\n 'scrollIntoView'\n ].forEach(methodRequiresRendering);\n\n // H TMLElement is abstract so we use a subclass that has no members.\n registerWrap per(OriginalHTMLElement, HTMLElement,\n document.createElement( 'b'));\n\n scope.wrappers.HTMLElement = HTMLElement;\n\n // TODO: Find a bette r way to share these two with WrapperShadowRoot.\n scope.getInnerHTML = getInne rHTML;\n scope.setInnerHTML = setInnerHTML\n})(window.ShadowDOMPolyfill);\n","/ / Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this sourc e code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var HTMLElement = scope.wrappe rs.HTMLElement;\n var mixin = scope.mixin;\n var registerWrapper = scope.regis terWrapper;\n var wrap = scope.wrap;\n\n var OriginalHTMLCanvasElement = windo w.HTMLCanvasElement;\n\n function HTMLCanvasElement(node) {\n HTMLElement.ca ll(this, node);\n }\n HTMLCanvasElement.prototype = Object.create(HTMLElement. prototype);\n\n mixin(HTMLCanvasElement.prototype, {\n getContext: function( ) {\n var context = this.impl.getContext.apply(this.impl, arguments);\n return context && wrap(context);\n }\n });\n\n registerWrapper(OriginalHT MLCanvasElement, HTMLCanvasElement,\n document.createElement('c anvas'));\n\n scope.wrappers.HTMLCanvasElement = HTMLCanvasElement;\n})(window. ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rights reserv ed.\n// Use of this source code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var H TMLElement = scope.wrappers.HTMLElement;\n var mixin = scope.mixin;\n var regi sterWrapper = scope.registerWrapper;\n\n var OriginalHTMLContentElement = windo w.HTMLContentElement;\n\n function HTMLContentElement(node) {\n HTMLElement. call(this, node);\n }\n HTMLContentElement.prototype = Object.create(HTMLEleme nt.prototype);\n mixin(HTMLContentElement.prototype, {\n get select() {\n return this.getAttribute('select');\n },\n set select(value) {\n t his.setAttribute('select', value);\n },\n\n setAttribute: function(n, v) { \n HTMLElement.prototype.setAttribute.call(this, n, v);\n if (String(n ).toLowerCase() === 'select')\n this.invalidateShadowRenderer(true);\n }\n\n // getDistributedNodes is added in ShadowRenderer\n\n // TODO: attr ibute boolean resetStyleInheritance;\n });\n\n if (OriginalHTMLContentElement) \n registerWrapper(OriginalHTMLContentElement, HTMLContentElement);\n\n scop e.wrappers.HTMLContentElement = HTMLContentElement;\n})(window.ShadowDOMPolyfill );\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of th is source code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var HTMLElement = scop e.wrappers.HTMLElement;\n var registerWrapper = scope.registerWrapper;\n var u nwrap = scope.unwrap;\n var rewrap = scope.rewrap;\n\n var OriginalHTMLImageEl ement = window.HTMLImageElement;\n\n function HTMLImageElement(node) {\n HTM LElement.call(this, node);\n }\n HTMLImageElement.prototype = Object.create(HT MLElement.prototype);\n\n registerWrapper(OriginalHTMLImageElement, HTMLImageEl ement,\n document.createElement('img'));\n\n function Image(wi dth, height) {\n if (!(this instanceof Image)) {\n throw new TypeError(\ n 'DOM object constructor cannot be called as a function.');\n }\n\n var node = unwrap(document.createElement('img'));\n HTMLElement.call(this , node);\n rewrap(node, this);\n\n if (width !== undefined)\n node.wi dth = width;\n if (height !== undefined)\n node.height = height;\n }\n\ n Image.prototype = HTMLImageElement.prototype;\n\n scope.wrappers.HTMLImageEl ement = HTMLImageElement;\n scope.wrappers.Image = Image;\n})(window.ShadowDOMP olyfill);\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Us e of this source code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var HTMLElement = scope.wrappers.HTMLElement;\n var mixin = scope.mixin;\n var registerWrappe r = scope.registerWrapper;\n\n var OriginalHTMLShadowElement = window.HTMLShado wElement;\n\n function HTMLShadowElement(node) {\n HTMLElement.call(this, no de);\n }\n HTMLShadowElement.prototype = Object.create(HTMLElement.prototype); \n mixin(HTMLShadowElement.prototype, {\n // TODO: attribute boolean resetSt yleInheritance;\n });\n\n if (OriginalHTMLShadowElement)\n registerWrapper( OriginalHTMLShadowElement, HTMLShadowElement);\n\n scope.wrappers.HTMLShadowEle ment = HTMLShadowElement;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 T he Polymer Authors. All rights reserved.\n// Use of this source code is goverene d by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function (scope) {\n 'use strict';\n\n var HTMLElement = scope.wrappers.HTMLElement;\n var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n\n var contentTable = new We akMap();\n var templateContentsOwnerTable = new WeakMap();\n\n // http://dvcs. w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html#dfn-template-cont ents-owner\n function getTemplateContentsOwner(doc) {\n if (!doc.defaultView )\n return doc;\n var d = templateContentsOwnerTable.get(doc);\n if ( !d) {\n // TODO(arv): This should either be a Document or HTMLDocument depe nding\n // on doc.\n d = doc.implementation.createHTMLDocument('');\n while (d.lastChild) {\n d.removeChild(d.lastChild);\n }\n templateContentsOwnerTable.set(doc, d);\n }\n return d;\n }\n\n function extractContent(templateElement) {\n // templateElement is not a wrapper here .\n var doc = getTemplateContentsOwner(templateElement.ownerDocument);\n v ar df = unwrap(doc.createDocumentFragment());\n var child;\n while (child = templateElement.firstChild) {\n df.appendChild(child);\n }\n return df;\n }\n\n var OriginalHTMLTemplateElement = window.HTMLTemplateElement;\n\n function HTMLTemplateElement(node) {\n HTMLElement.call(this, node);\n i f (!OriginalHTMLTemplateElement) {\n var content = extractContent(node);\n contentTable.set(this, wrap(content));\n }\n }\n HTMLTemplateElement.p rototype = Object.create(HTMLElement.prototype);\n\n mixin(HTMLTemplateElement. prototype, {\n get content() {\n if (OriginalHTMLTemplateElement)\n return wrap(this.impl.content);\n return contentTable.get(this);\n }, \n\n // TODO(arv): cloneNode needs to clone content.\n\n });\n\n if (Origin alHTMLTemplateElement)\n registerWrapper(OriginalHTMLTemplateElement, HTMLTem plateElement);\n\n scope.wrappers.HTMLTemplateElement = HTMLTemplateElement;\n} )(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All righ ts reserved.\n// Use of this source code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n \n var HTMLElement = scope.wrappers.HTMLElement;\n var registerWrapper = scope .registerWrapper;\n\n var OriginalHTMLMediaElement = window.HTMLMediaElement;\n \n function HTMLMediaElement(node) {\n HTMLElement.call(this, node);\n }\n HTMLMediaElement.prototype = Object.create(HTMLElement.prototype);\n\n registe rWrapper(OriginalHTMLMediaElement, HTMLMediaElement,\n document .createElement('audio'));\n\n scope.wrappers.HTMLMediaElement = HTMLMediaElemen t;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this source code is goverened by a BSD-style\n// li cense that can be found in the LICENSE file.\n\n(function(scope) {\n 'use stric t';\n\n var HTMLMediaElement = scope.wrappers.HTMLMediaElement;\n var register Wrapper = scope.registerWrapper;\n var unwrap = scope.unwrap;\n var rewrap = s cope.rewrap;\n\n var OriginalHTMLAudioElement = window.HTMLAudioElement;\n\n f unction HTMLAudioElement(node) {\n HTMLMediaElement.call(this, node);\n }\n HTMLAudioElement.prototype = Object.create(HTMLMediaElement.prototype);\n\n re gisterWrapper(OriginalHTMLAudioElement, HTMLAudioElement,\n doc ument.createElement('audio'));\n\n function Audio(src) {\n if (!(this instan ceof Audio)) {\n throw new TypeError(\n 'DOM object constructor ca nnot be called as a function.');\n }\n\n var node = unwrap(document.create Element('audio'));\n HTMLMediaElement.call(this, node);\n rewrap(node, thi s);\n\n node.setAttribute('preload', 'auto');\n if (src !== undefined)\n node.setAttribute('src', src);\n }\n\n Audio.prototype = HTMLAudioElement. prototype;\n\n scope.wrappers.HTMLAudioElement = HTMLAudioElement;\n scope.wra ppers.Audio = Audio;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Po lymer Authors. All rights reserved.\n// Use of this source code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function(scop e) {\n 'use strict';\n\n var HTMLElement = scope.wrappers.HTMLElement;\n var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var rewr ap = scope.rewrap;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n\n var OriginalHTMLOptionElement = window.HTMLOptionElement;\n\n function trimText (s) {\n return s.replace(/\\s+/g, ' ').trim();\n }\n\n function HTMLOptionE lement(node) {\n HTMLElement.call(this, node);\n }\n HTMLOptionElement.prot otype = Object.create(HTMLElement.prototype);\n mixin(HTMLOptionElement.prototy pe, {\n get text() {\n return trimText(this.textContent);\n },\n s et text(value) {\n this.textContent = trimText(String(value));\n },\n get form() {\n return wrap(unwrap(this).form);\n }\n });\n\n register Wrapper(OriginalHTMLOptionElement, HTMLOptionElement,\n documen t.createElement('option'));\n\n function Option(text, value, defaultSelected, s elected) {\n if (!(this instanceof Option)) {\n throw new TypeError(\n 'DOM object constructor cannot be called as a function.');\n }\n\n var node = unwrap(document.createElement('option'));\n HTMLElement.call(this , node);\n rewrap(node, this);\n\n if (text !== undefined)\n node.tex t = text;\n if (value !== undefined)\n node.setAttribute('value', value) ;\n if (defaultSelected === true)\n node.setAttribute('selected', '');\n node.selected = selected === true;\n }\n\n Option.prototype = HTMLOptionEl ement.prototype;\n\n scope.wrappers.HTMLOptionElement = HTMLOptionElement;\n s cope.wrappers.Option = Option;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2 013 The Polymer Authors. All rights reserved.\n// Use of this source code is gov erened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(fun ction(scope) {\n 'use strict';\n\n var HTMLContentElement = scope.wrappers.HTM LContentElement;\n var HTMLElement = scope.wrappers.HTMLElement;\n var HTMLSha dowElement = scope.wrappers.HTMLShadowElement;\n var HTMLTemplateElement = scop e.wrappers.HTMLTemplateElement;\n var mixin = scope.mixin;\n var registerWrapp er = scope.registerWrapper;\n\n var OriginalHTMLUnknownElement = window.HTMLUnk nownElement;\n\n function HTMLUnknownElement(node) {\n switch (node.localNam e) {\n case 'content':\n return new HTMLContentElement(node);\n case 'shadow':\n return new HTMLShadowElement(node);\n case 'templa te':\n return new HTMLTemplateElement(node);\n }\n HTMLElement.call (this, node);\n }\n HTMLUnknownElement.prototype = Object.create(HTMLElement.p rototype);\n registerWrapper(OriginalHTMLUnknownElement, HTMLUnknownElement);\n scope.wrappers.HTMLUnknownElement = HTMLUnknownElement;\n})(window.ShadowDOMPo lyfill);\n","// Copyright 2014 The Polymer Authors. All rights reserved.\n// Use of this source code is goverened by a BSD-style\n// license that can be found i n the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var registerObje ct = scope.registerObject;\n\n var SVG_NS = 'http://www.w3.org/2000/svg';\n va r svgTitleElement = document.createElementNS(SVG_NS, 'title');\n var SVGTitleEl ement = registerObject(svgTitleElement);\n var SVGElement = Object.getPrototype Of(SVGTitleElement.prototype).constructor;\n\n scope.wrappers.SVGElement = SVGE lement;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2014 The Polymer Authors . All rights reserved.\n// Use of this source code is goverened by a BSD-style\n // license that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var mixin = scope.mixin;\n var registerWrapper = scope.registerWr apper;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n\n var Original SVGUseElement = window.SVGUseElement;\n\n // IE uses SVGElement as parent inter face, SVG2 (Blink & Gecko) uses\n // SVGGraphicsElement. Use the <g> element to get the right prototype.\n\n var SVG_NS = 'http://www.w3.org/2000/svg';\n var gWrapper = wrap(document.createElementNS(SVG_NS, 'g'));\n var useElement = doc ument.createElementNS(SVG_NS, 'use');\n var SVGGElement = gWrapper.constructor; \n var parentInterfacePrototype = Object.getPrototypeOf(SVGGElement.prototype); \n var parentInterface = parentInterfacePrototype.constructor;\n\n function SV GUseElement(impl) {\n parentInterface.call(this, impl);\n }\n\n SVGUseEleme nt.prototype = Object.create(parentInterfacePrototype);\n\n // Firefox does not expose instanceRoot.\n if ('instanceRoot' in useElement) {\n mixin(SVGUseEl ement.prototype, {\n get instanceRoot() {\n return wrap(unwrap(this) .instanceRoot);\n },\n get animatedInstanceRoot() {\n return wr ap(unwrap(this).animatedInstanceRoot);\n },\n });\n }\n\n registerWrap per(OriginalSVGUseElement, SVGUseElement, useElement);\n\n scope.wrappers.SVGUs eElement = SVGUseElement;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2014 T he Polymer Authors. All rights reserved.\n// Use of this source code is goverene d by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function (scope) {\n 'use strict';\n\n var EventTarget = scope.wrappers.EventTarget;\n var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var wrap = scope.wrap;\n\n var OriginalSVGElementInstance = window.SVGElementInsta nce;\n if (!OriginalSVGElementInstance)\n return;\n\n function SVGElementIn stance(impl) {\n EventTarget.call(this, impl);\n }\n\n SVGElementInstance.p rototype = Object.create(EventTarget.prototype);\n mixin(SVGElementInstance.pro totype, {\n /** @type {SVGElement} */\n get correspondingElement() {\n return wrap(this.impl.correspondingElement);\n },\n\n /** @type {SVGUseE lement} */\n get correspondingUseElement() {\n return wrap(this.impl.cor respondingUseElement);\n },\n\n /** @type {SVGElementInstance} */\n get parentNode() {\n return wrap(this.impl.parentNode);\n },\n\n /** @ty pe {SVGElementInstanceList} */\n get childNodes() {\n throw new Error('N ot implemented');\n },\n\n /** @type {SVGElementInstance} */\n get firs tChild() {\n return wrap(this.impl.firstChild);\n },\n\n /** @type {S VGElementInstance} */\n get lastChild() {\n return wrap(this.impl.lastCh ild);\n },\n\n /** @type {SVGElementInstance} */\n get previousSibling( ) {\n return wrap(this.impl.previousSibling);\n },\n\n /** @type {SVG ElementInstance} */\n get nextSibling() {\n return wrap(this.impl.nextSi bling);\n }\n });\n\n registerWrapper(OriginalSVGElementInstance, SVGElemen tInstance);\n\n scope.wrappers.SVGElementInstance = SVGElementInstance;\n})(win dow.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rights re served.\n// Use of this source code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n v ar mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var u nwrap = scope.unwrap;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wrap = scope.wrap;\n\n var OriginalCanvasRenderingContext2D = window.CanvasRendering Context2D;\n\n function CanvasRenderingContext2D(impl) {\n this.impl = impl; \n }\n\n mixin(CanvasRenderingContext2D.prototype, {\n get canvas() {\n return wrap(this.impl.canvas);\n },\n\n drawImage: function() {\n a rguments[0] = unwrapIfNeeded(arguments[0]);\n this.impl.drawImage.apply(thi s.impl, arguments);\n },\n\n createPattern: function() {\n arguments[ 0] = unwrap(arguments[0]);\n return this.impl.createPattern.apply(this.impl , arguments);\n }\n });\n\n registerWrapper(OriginalCanvasRenderingContext2 D, CanvasRenderingContext2D,\n document.createElement('canvas') .getContext('2d'));\n\n scope.wrappers.CanvasRenderingContext2D = CanvasRenderi ngContext2D;\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Au thors. All rights reserved.\n// Use of this source code is goverened by a BSD-st yle\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var mixin = scope.mixin;\n var registerWrapper = scope.regis terWrapper;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wrap = scope.wr ap;\n\n var OriginalWebGLRenderingContext = window.WebGLRenderingContext;\n\n // IE10 does not have WebGL.\n if (!OriginalWebGLRenderingContext)\n return; \n\n function WebGLRenderingContext(impl) {\n this.impl = impl;\n }\n\n mi xin(WebGLRenderingContext.prototype, {\n get canvas() {\n return wrap(th is.impl.canvas);\n },\n\n texImage2D: function() {\n arguments[5] = u nwrapIfNeeded(arguments[5]);\n this.impl.texImage2D.apply(this.impl, argume nts);\n },\n\n texSubImage2D: function() {\n arguments[6] = unwrapIfN eeded(arguments[6]);\n this.impl.texSubImage2D.apply(this.impl, arguments); \n }\n });\n\n // Blink/WebKit has broken DOM bindings. Usually we would cr eate an instance\n // of the object and pass it into registerWrapper as a \"blu eprint\" but\n // creating WebGL contexts is expensive and might fail so we use a dummy\n // object with dummy instance properties for these broken browsers.\ n var instanceProperties = /WebKit/.test(navigator.userAgent) ?\n {drawing BufferHeight: null, drawingBufferWidth: null} : {};\n\n registerWrapper(Origina lWebGLRenderingContext, WebGLRenderingContext,\n instanceProperties);\n\n scope.wrappers.WebGLRenderingContext = WebGLRenderingContext;\n})(window.ShadowD OMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this source code is goverened by a BSD-style\n// license that can be fou nd in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var register Wrapper = scope.registerWrapper;\n var unwrap = scope.unwrap;\n var unwrapIfNe eded = scope.unwrapIfNeeded;\n var wrap = scope.wrap;\n\n var OriginalRange = window.Range;\n\n function Range(impl) {\n this.impl = impl;\n }\n Range.p rototype = {\n get startContainer() {\n return wrap(this.impl.startConta iner);\n },\n get endContainer() {\n return wrap(this.impl.endContain er);\n },\n get commonAncestorContainer() {\n return wrap(this.impl.c ommonAncestorContainer);\n },\n setStart: function(refNode,offset) {\n this.impl.setStart(unwrapIfNeeded(refNode), offset);\n },\n setEnd: func tion(refNode,offset) {\n this.impl.setEnd(unwrapIfNeeded(refNode), offset); \n },\n setStartBefore: function(refNode) {\n this.impl.setStartBefor e(unwrapIfNeeded(refNode));\n },\n setStartAfter: function(refNode) {\n this.impl.setStartAfter(unwrapIfNeeded(refNode));\n },\n setEndBefore: function(refNode) {\n this.impl.setEndBefore(unwrapIfNeeded(refNode));\n },\n setEndAfter: function(refNode) {\n this.impl.setEndAfter(unwrapIfN eeded(refNode));\n },\n selectNode: function(refNode) {\n this.impl.s electNode(unwrapIfNeeded(refNode));\n },\n selectNodeContents: function(re fNode) {\n this.impl.selectNodeContents(unwrapIfNeeded(refNode));\n },\n compareBoundaryPoints: function(how, sourceRange) {\n return this.impl. compareBoundaryPoints(how, unwrap(sourceRange));\n },\n extractContents: f unction() {\n return wrap(this.impl.extractContents());\n },\n cloneC ontents: function() {\n return wrap(this.impl.cloneContents());\n },\n insertNode: function(node) {\n this.impl.insertNode(unwrapIfNeeded(node)) ;\n },\n surroundContents: function(newParent) {\n this.impl.surround Contents(unwrapIfNeeded(newParent));\n },\n cloneRange: function() {\n return wrap(this.impl.cloneRange());\n },\n isPointInRange: function(nod e, offset) {\n return this.impl.isPointInRange(unwrapIfNeeded(node), offset );\n },\n comparePoint: function(node, offset) {\n return this.impl.c omparePoint(unwrapIfNeeded(node), offset);\n },\n intersectsNode: function (node) {\n return this.impl.intersectsNode(unwrapIfNeeded(node));\n },\n toString: function() {\n return this.impl.toString();\n }\n };\n\n // IE9 does not have createContextualFragment.\n if (OriginalRange.prototype.c reateContextualFragment) {\n Range.prototype.createContextualFragment = funct ion(html) {\n return wrap(this.impl.createContextualFragment(html));\n } ;\n }\n\n registerWrapper(window.Range, Range, document.createRange());\n\n s cope.wrappers.Range = Range;\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2 013 The Polymer Authors. All rights reserved.\n// Use of this source code is gov erened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(fun ction(scope) {\n 'use strict';\n\n var GetElementsByInterface = scope.GetEleme ntsByInterface;\n var ParentNodeInterface = scope.ParentNodeInterface;\n var S electorsInterface = scope.SelectorsInterface;\n var mixin = scope.mixin;\n var registerObject = scope.registerObject;\n\n var DocumentFragment = registerObje ct(document.createDocumentFragment());\n mixin(DocumentFragment.prototype, Pare ntNodeInterface);\n mixin(DocumentFragment.prototype, SelectorsInterface);\n m ixin(DocumentFragment.prototype, GetElementsByInterface);\n\n var Comment = reg isterObject(document.createComment(''));\n\n scope.wrappers.Comment = Comment;\ n scope.wrappers.DocumentFragment = DocumentFragment;\n\n})(window.ShadowDOMPol yfill);\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this source code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var DocumentFragm ent = scope.wrappers.DocumentFragment;\n var elementFromPoint = scope.elementFr omPoint;\n var getInnerHTML = scope.getInnerHTML;\n var mixin = scope.mixin;\n var rewrap = scope.rewrap;\n var setInnerHTML = scope.setInnerHTML;\n var un wrap = scope.unwrap;\n\n var shadowHostTable = new WeakMap();\n var nextOlderS hadowTreeTable = new WeakMap();\n\n var spaceCharRe = /[ \\t\\n\\r\\f]/;\n\n f unction ShadowRoot(hostWrapper) {\n var node = unwrap(hostWrapper.impl.ownerD ocument.createDocumentFragment());\n DocumentFragment.call(this, node);\n\n // createDocumentFragment associates the node with a wrapper\n // DocumentF ragment instance. Override that.\n rewrap(node, this);\n\n var oldShadowRo ot = hostWrapper.shadowRoot;\n nextOlderShadowTreeTable.set(this, oldShadowRo ot);\n\n shadowHostTable.set(this, hostWrapper);\n }\n ShadowRoot.prototype = Object.create(DocumentFragment.prototype);\n mixin(ShadowRoot.prototype, {\n get innerHTML() {\n return getInnerHTML(this);\n },\n set innerHT ML(value) {\n setInnerHTML(this, value);\n this.invalidateShadowRender er();\n },\n\n get olderShadowRoot() {\n return nextOlderShadowTreeTa ble.get(this) || null;\n },\n\n get host() {\n return shadowHostTable .get(this) || null;\n },\n\n invalidateShadowRenderer: function() {\n return shadowHostTable.get(this).invalidateShadowRenderer();\n },\n\n ele mentFromPoint: function(x, y) {\n return elementFromPoint(this, this.ownerD ocument, x, y);\n },\n\n getElementById: function(id) {\n if (spaceCh arRe.test(id))\n return null;\n return this.querySelector('[id=\"' + id + '\"]');\n }\n });\n\n scope.wrappers.ShadowRoot = ShadowRoot;\n\n})(w indow.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license tha t can be found in the LICENSE file.\n\n(function(scope) {\n 'use strict';\n\n var Element = scope.wrappers.Element;\n var HTMLContentElement = scope.wrappers .HTMLContentElement;\n var HTMLShadowElement = scope.wrappers.HTMLShadowElement ;\n var Node = scope.wrappers.Node;\n var ShadowRoot = scope.wrappers.ShadowRo ot;\n var assert = scope.assert;\n var mixin = scope.mixin;\n var oneOf = sco pe.oneOf;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n\n /**\n * Updates the fields of a wrapper to a snapshot of the logical DOM as needed.\n * Up means parentNode\n * Sideways means previous and next sibling.\n * @pa ram {!Node} wrapper\n */\n function updateWrapperUpAndSideways(wrapper) {\n wrapper.previousSibling_ = wrapper.previousSibling;\n wrapper.nextSibling_ = wrapper.nextSibling;\n wrapper.parentNode_ = wrapper.parentNode;\n }\n\n /**\n * Updates the fields of a wrapper to a snapshot of the logical DOM as ne eded.\n * Down means first and last child\n * @param {!Node} wrapper\n */\ n function updateWrapperDown(wrapper) {\n wrapper.firstChild_ = wrapper.firs tChild;\n wrapper.lastChild_ = wrapper.lastChild;\n }\n\n function updateAl lChildNodes(parentNodeWrapper) {\n assert(parentNodeWrapper instanceof Node); \n for (var childWrapper = parentNodeWrapper.firstChild;\n childWrapp er;\n childWrapper = childWrapper.nextSibling) {\n updateWrapperUpA ndSideways(childWrapper);\n }\n updateWrapperDown(parentNodeWrapper);\n } \n\n function insertBefore(parentNodeWrapper, newChildWrapper, refChildWrapper) {\n var parentNode = unwrap(parentNodeWrapper);\n var newChild = unwrap(n ewChildWrapper);\n var refChild = refChildWrapper ? unwrap(refChildWrapper) : null;\n\n remove(newChildWrapper);\n updateWrapperUpAndSideways(newChildW rapper);\n\n if (!refChildWrapper) {\n parentNodeWrapper.lastChild_ = pa rentNodeWrapper.lastChild;\n if (parentNodeWrapper.lastChild === parentNode Wrapper.firstChild)\n parentNodeWrapper.firstChild_ = parentNodeWrapper.f irstChild;\n\n var lastChildWrapper = wrap(parentNode.lastChild);\n if (lastChildWrapper)\n lastChildWrapper.nextSibling_ = lastChildWrapper.ne xtSibling;\n } else {\n if (parentNodeWrapper.firstChild === refChildWra pper)\n parentNodeWrapper.firstChild_ = refChildWrapper;\n\n refChil dWrapper.previousSibling_ = refChildWrapper.previousSibling;\n }\n\n paren tNode.insertBefore(newChild, refChild);\n }\n\n function remove(nodeWrapper) { \n var node = unwrap(nodeWrapper)\n var parentNode = node.parentNode;\n if (!parentNode)\n return;\n\n var parentNodeWrapper = wrap(parentNode) ;\n updateWrapperUpAndSideways(nodeWrapper);\n\n if (nodeWrapper.previousS ibling)\n nodeWrapper.previousSibling.nextSibling_ = nodeWrapper;\n if ( nodeWrapper.nextSibling)\n nodeWrapper.nextSibling.previousSibling_ = nodeW rapper;\n\n if (parentNodeWrapper.lastChild === nodeWrapper)\n parentNod eWrapper.lastChild_ = nodeWrapper;\n if (parentNodeWrapper.firstChild === nod eWrapper)\n parentNodeWrapper.firstChild_ = nodeWrapper;\n\n parentNode. removeChild(node);\n }\n\n var distributedChildNodesTable = new WeakMap();\n var eventParentsTable = new WeakMap();\n var insertionParentTable = new WeakMap ();\n var rendererForHostTable = new WeakMap();\n\n function distributeChildTo InsertionPoint(child, insertionPoint) {\n getDistributedChildNodes(insertionP oint).push(child);\n assignToInsertionPoint(child, insertionPoint);\n\n va r eventParents = eventParentsTable.get(child);\n if (!eventParents)\n ev entParentsTable.set(child, eventParents = []);\n eventParents.push(insertionP oint);\n }\n\n function resetDistributedChildNodes(insertionPoint) {\n dist ributedChildNodesTable.set(insertionPoint, []);\n }\n\n function getDistribute dChildNodes(insertionPoint) {\n return distributedChildNodesTable.get(inserti onPoint);\n }\n\n function getChildNodesSnapshot(node) {\n var result = [], i = 0;\n for (var child = node.firstChild; child; child = child.nextSibling) {\n result[i++] = child;\n }\n return result;\n }\n\n /**\n * Vi sits all nodes in the tree that fulfils the |predicate|. If the |visitor|\n * function returns |false| the traversal is aborted.\n * @param {!Node} tree\n * @param {function(!Node) : boolean} predicate\n * @param {function(!Node) : *} visitor\n */\n function visit(tree, predicate, visitor) {\n // This ope rates on logical DOM.\n for (var node = tree.firstChild; node; node = node.ne xtSibling) {\n if (predicate(node)) {\n if (visitor(node) === false) \n return;\n } else {\n visit(node, predicate, visitor);\n }\n }\n }\n\n // Matching Insertion Points\n // http://dvcs.w3.org/hg /webcomponents/raw-file/tip/spec/shadow/index.html#matching-insertion-points\n\n // TODO(arv): Verify this... I don't remember why I picked this regexp.\n var selectorMatchRegExp = /^[*.:#[a-zA-Z_|]/;\n\n var allowedPseudoRegExp = new Re gExp('^:(' + [\n 'link',\n 'visited',\n 'target',\n 'enabled',\n 'disabled',\n 'checked',\n 'indeterminate',\n 'nth-child',\n 'nth-la st-child',\n 'nth-of-type',\n 'nth-last-of-type',\n 'first-child',\n 'last-child',\n 'first-of-type',\n 'last-of-type',\n 'only-of-type',\n ].join('|') + ')');\n\n\n /**\n * @param {Element} node\n * @oaram {Eleme nt} point The insertion point element.\n * @return {boolean} Whether the node matches the insertion point.\n */\n function matchesCriteria(node, point) {\n var select = point.getAttribute('select');\n if (!select)\n return t rue;\n\n // Here we know the select attribute is a non empty string.\n sel ect = select.trim();\n if (!select)\n return true;\n\n if (!(node ins tanceof Element))\n return false;\n\n // The native matches function in IE9 does not correctly work with elements\n // that are not in the document.\ n // TODO(arv): Implement matching in JS.\n // https://github.com/Polymer/ ShadowDOM/issues/361\n if (select === '*' || select === node.localName)\n return true;\n\n // TODO(arv): This does not seem right. Need to check for a simple selector.\n if (!selectorMatchRegExp.test(select))\n return fal se;\n\n // TODO(arv): This no longer matches the spec.\n if (select[0] === ':' && !allowedPseudoRegExp.test(select))\n return false;\n\n try {\n return node.matches(select);\n } catch (ex) {\n // Invalid selector. \n return false;\n }\n }\n\n var request = oneOf(window, [\n 'reque stAnimationFrame',\n 'mozRequestAnimationFrame',\n 'webkitRequestAnimation Frame',\n 'setTimeout'\n ]);\n\n var pendingDirtyRenderers = [];\n var ren derTimer;\n\n function renderAllPending() {\n for (var i = 0; i < pendingDir tyRenderers.length; i++) {\n pendingDirtyRenderers[i].render();\n }\n pendingDirtyRenderers = [];\n }\n\n function handleRequestAnimationFrame() {\ n renderTimer = null;\n renderAllPending();\n }\n\n /**\n * Returns ex isting shadow renderer for a host or creates it if it is needed.\n * @params { !Element} host\n * @return {!ShadowRenderer}\n */\n function getRendererFor Host(host) {\n var renderer = rendererForHostTable.get(host);\n if (!rende rer) {\n renderer = new ShadowRenderer(host);\n rendererForHostTable.s et(host, renderer);\n }\n return renderer;\n }\n\n function getShadowRoo tAncestor(node) {\n for (; node; node = node.parentNode) {\n if (node in stanceof ShadowRoot)\n return node;\n }\n return null;\n }\n\n fu nction getRendererForShadowRoot(shadowRoot) {\n return getRendererForHost(sha dowRoot.host);\n }\n\n var spliceDiff = new ArraySplice();\n spliceDiff.equal s = function(renderNode, rawNode) {\n return unwrap(renderNode.node) === rawN ode;\n };\n\n /**\n * RenderNode is used as an in memory \"render tree\". Wh en we render the\n * composed tree we create a tree of RenderNodes, then we di ff this against\n * the real DOM tree and make minimal changes as needed.\n */\n function RenderNode(node) {\n this.skip = false;\n this.node = node; \n this.childNodes = [];\n }\n\n RenderNode.prototype = {\n append: func tion(node) {\n var rv = new RenderNode(node);\n this.childNodes.push(r v);\n return rv;\n },\n\n sync: function(opt_added) {\n if (this .skip)\n return;\n\n var nodeWrapper = this.node;\n // plain ar ray of RenderNodes\n var newChildren = this.childNodes;\n // plain arr ay of real nodes.\n var oldChildren = getChildNodesSnapshot(unwrap(nodeWrap per));\n var added = opt_added || new WeakMap();\n\n var splices = spl iceDiff.calculateSplices(newChildren, oldChildren);\n\n var newIndex = 0, o ldIndex = 0;\n var lastIndex = 0;\n for (var i = 0; i < splices.length ; i++) {\n var splice = splices[i];\n for (; lastIndex < splice.in dex; lastIndex++) {\n oldIndex++;\n newChildren[newIndex++].sy nc(added);\n }\n\n var removedCount = splice.removed.length;\n for (var j = 0; j < removedCount; j++) {\n var wrapper = wrap(oldCh ildren[oldIndex++]);\n if (!added.get(wrapper))\n remove(wra pper);\n }\n\n var addedCount = splice.addedCount;\n var re fNode = oldChildren[oldIndex] && wrap(oldChildren[oldIndex]);\n for (var j = 0; j < addedCount; j++) {\n var newChildRenderNode = newChildren[ne wIndex++];\n var newChildWrapper = newChildRenderNode.node;\n insertBefore(nodeWrapper, newChildWrapper, refNode);\n\n // Keep track of added so that we do not remove the node after it\n // has been added .\n added.set(newChildWrapper, true);\n\n newChildRenderNode.s ync(added);\n }\n\n lastIndex += addedCount;\n }\n\n for (var i = lastIndex; i < newChildren.length; i++) {\n newChildren[i].sync (added);\n }\n }\n };\n\n function ShadowRenderer(host) {\n this.ho st = host;\n this.dirty = false;\n this.invalidateAttributes();\n this. associateNode(host);\n }\n\n ShadowRenderer.prototype = {\n\n // http://dvc s.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#rendering-shadow-t rees\n render: function(opt_renderNode) {\n if (!this.dirty)\n re turn;\n\n this.invalidateAttributes();\n this.treeComposition();\n\n var host = this.host;\n var shadowRoot = host.shadowRoot;\n\n this .associateNode(host);\n var topMostRenderer = !renderNode;\n var rende rNode = opt_renderNode || new RenderNode(host);\n\n for (var node = shadowR oot.firstChild; node; node = node.nextSibling) {\n this.renderNode(shadow Root, renderNode, node, false);\n }\n\n if (topMostRenderer)\n renderNode.sync();\n\n this.dirty = false;\n },\n\n invalidate: funct ion() {\n if (!this.dirty) {\n this.dirty = true;\n pendingDi rtyRenderers.push(this);\n if (renderTimer)\n return;\n r enderTimer = window[request](handleRequestAnimationFrame, 0);\n }\n },\n \n renderNode: function(shadowRoot, renderNode, node, isNested) {\n if ( isShadowHost(node)) {\n renderNode = renderNode.append(node);\n va r renderer = getRendererForHost(node);\n renderer.dirty = true; // Need to rerender due to reprojection.\n renderer.render(renderNode);\n } else if (isInsertionPoint(node)) {\n this.renderInsertionPoint(shadowRoot , renderNode, node, isNested);\n } else if (isShadowInsertionPoint(node)) { \n this.renderShadowInsertionPoint(shadowRoot, renderNode, node);\n } else {\n this.renderAsAnyDomTree(shadowRoot, renderNode, node, isNested );\n }\n },\n\n renderAsAnyDomTree: function(shadowRoot, renderNode, node, isNested) {\n renderNode = renderNode.append(node);\n\n if (isSh adowHost(node)) {\n var renderer = getRendererForHost(node);\n ren derNode.skip = !renderer.dirty;\n renderer.render(renderNode);\n } e lse {\n for (var child = node.firstChild; child; child = child.nextSiblin g) {\n this.renderNode(shadowRoot, renderNode, child, isNested);\n }\n }\n },\n\n renderInsertionPoint: function(shadowRoot, renderNo de, insertionPoint,\n isNested) {\n var d istributedChildNodes = getDistributedChildNodes(insertionPoint);\n if (dist ributedChildNodes.length) {\n this.associateNode(insertionPoint);\n\n for (var i = 0; i < distributedChildNodes.length; i++) {\n var chil d = distributedChildNodes[i];\n if (isInsertionPoint(child) && isNested )\n this.renderInsertionPoint(shadowRoot, renderNode, child, isNested );\n else\n this.renderAsAnyDomTree(shadowRoot, renderNode, child, isNested);\n }\n } else {\n this.renderFallbackContent (shadowRoot, renderNode, insertionPoint);\n }\n this.associateNode(ins ertionPoint.parentNode);\n },\n\n renderShadowInsertionPoint: function(sha dowRoot, renderNode,\n shadowInsertionPo int) {\n var nextOlderTree = shadowRoot.olderShadowRoot;\n if (nextOld erTree) {\n assignToInsertionPoint(nextOlderTree, shadowInsertionPoint);\ n this.associateNode(shadowInsertionPoint.parentNode);\n for (var node = nextOlderTree.firstChild;\n node;\n node = node.n extSibling) {\n this.renderNode(nextOlderTree, renderNode, node, true); \n }\n } else {\n this.renderFallbackContent(shadowRoot, rend erNode,\n shadowInsertionPoint);\n }\n },\n\n renderFallbackContent: function(shadowRoot, renderNode, fallbackHost) {\n this.associateNode(fallbackHost);\n this.associateNode(fallbackHo st.parentNode);\n for (var node = fallbackHost.firstChild; node; node = nod e.nextSibling) {\n this.renderAsAnyDomTree(shadowRoot, renderNode, node, false);\n }\n },\n\n /**\n * Invalidates the attributes used to k eep track of which attributes may\n * cause the renderer to be invalidated.\ n */\n invalidateAttributes: function() {\n this.attributes = Object .create(null);\n },\n\n /**\n * Parses the selector and makes this ren derer dependent on the attribute\n * being used in the selector.\n * @pa ram {string} selector\n */\n updateDependentAttributes: function(selector ) {\n if (!selector)\n return;\n\n var attributes = this.attrib utes;\n\n // .class\n if (/\\.\\w+/.test(selector))\n attribute s['class'] = true;\n\n // #id\n if (/#\\w+/.test(selector))\n a ttributes['id'] = true;\n\n selector.replace(/\\[\\s*([^\\s=\\|~\\]]+)/g, f unction(_, name) {\n attributes[name] = true;\n });\n\n // Pseu do selectors have been removed from the spec.\n },\n\n dependsOnAttribute: function(name) {\n return this.attributes[name];\n },\n\n // http:// dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#dfn-distributio n-algorithm\n distribute: function(tree, pool) {\n var self = this;\n\n visit(tree, isActiveInsertionPoint,\n function(insertionPoint) {\n resetDistributedChildNodes(insertionPoint);\n self.update DependentAttributes(\n insertionPoint.getAttribute('select'));\n\ n for (var i = 0; i < pool.length; i++) { // 1.2\n var node = pool[i]; // 1.2.1\n if (node === undefined) // removed\n continue;\n if (matchesCriteria(node, insertionPoint) ) { // 1.2.2\n distributeChildToInsertionPoint(node, insertionPo int); // 1.2.2.1\n pool[i] = undefined; // 1.2.2.2\n }\n }\n });\n },\n\n // http://dvcs.w3.org/hg/webco mponents/raw-file/tip/spec/shadow/index.html#dfn-tree-composition\n treeCompo sition: function () {\n var shadowHost = this.host;\n var tree = shado wHost.shadowRoot; // 1.\n var pool = []; // 2.\n\n for (var child = shadowHost.firstChild;\n child;\n child = child.nextSibling) { // 3.\n if (isInsertionPoint(child)) { // 3.2.\n var reproj ected = getDistributedChildNodes(child); // 3.2.1.\n // if reprojected is undef... reset it?\n if (!reprojected || !reprojected.length) // 3 .2.2.\n reprojected = getChildNodesSnapshot(child);\n pool.p ush.apply(pool, reprojected); // 3.2.3.\n } else {\n pool.push( child); // 3.3.\n }\n }\n\n var shadowInsertionPoint, point;\n while (tree) { // 4.\n // 4.1.\n shadowInsertionPoint = unde fined; // Reset every iteration.\n visit(tree, isActiveShadowInsertionPo int, function(point) {\n shadowInsertionPoint = point;\n retur n false;\n });\n point = shadowInsertionPoint;\n\n this.dis tribute(tree, pool); // 4.2.\n if (point) { // 4.3.\n var next OlderTree = tree.olderShadowRoot; // 4.3.1.\n if (!nextOlderTree) {\n break; // 4.3.1.1.\n } else {\n tree = nextOlder Tree; // 4.3.2.2.\n assignToInsertionPoint(tree, point); // 4.3.2.2 .\n continue; // 4.3.2.3.\n }\n } else {\n break; // 4.4.\n }\n }\n },\n\n associateNode: function(node) {\n node.impl.polymerShadowRenderer_ = this;\n }\n };\n\n function is InsertionPoint(node) {\n // Should this include <shadow>?\n return node in stanceof HTMLContentElement;\n }\n\n function isActiveInsertionPoint(node) {\n // <content> inside another <content> or <shadow> is considered inactive.\n return node instanceof HTMLContentElement;\n }\n\n function isShadowInserti onPoint(node) {\n return node instanceof HTMLShadowElement;\n }\n\n functio n isActiveShadowInsertionPoint(node) {\n // <shadow> inside another <content> or <shadow> is considered inactive.\n return node instanceof HTMLShadowEleme nt;\n }\n\n function isShadowHost(shadowHost) {\n return shadowHost.shadowR oot;\n }\n\n function getShadowTrees(host) {\n var trees = [];\n\n for ( var tree = host.shadowRoot; tree; tree = tree.olderShadowRoot) {\n trees.pu sh(tree);\n }\n return trees;\n }\n\n function assignToInsertionPoint(tr ee, point) {\n insertionParentTable.set(tree, point);\n }\n\n // http://dvc s.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#rendering-shadow-t rees\n function render(host) {\n new ShadowRenderer(host).render();\n };\n\ n // Need to rerender shadow host when:\n //\n // - a direct child to the Sha dowRoot is added or removed\n // - a direct child to the host is added or remov ed\n // - a new shadow root is created\n // - a direct child to a content/shad ow element is added or removed\n // - a sibling to a content/shadow element is added or removed\n // - content[select] is changed\n // - an attribute in a di rect child to a host is modified\n\n /**\n * This gets called when a node was added or removed to it.\n */\n Node.prototype.invalidateShadowRenderer = fun ction(force) {\n var renderer = this.impl.polymerShadowRenderer_;\n if (re nderer) {\n renderer.invalidate();\n return true;\n }\n\n return false;\n };\n\n HTMLContentElement.prototype.getDistributedNodes = function() {\n // TODO(arv): We should only rerender the dirty ancestor renderers (from \n // the root and down).\n renderAllPending();\n return getDistributed ChildNodes(this);\n };\n\n HTMLShadowElement.prototype.nodeIsInserted_ =\n HT MLContentElement.prototype.nodeIsInserted_ = function() {\n // Invalidate old renderer if any.\n this.invalidateShadowRenderer();\n\n var shadowRoot = getShadowRootAncestor(this);\n var renderer;\n if (shadowRoot)\n rend erer = getRendererForShadowRoot(shadowRoot);\n this.impl.polymerShadowRendere r_ = renderer;\n if (renderer)\n renderer.invalidate();\n };\n\n scope .eventParentsTable = eventParentsTable;\n scope.getRendererForHost = getRendere rForHost;\n scope.getShadowTrees = getShadowTrees;\n scope.insertionParentTabl e = insertionParentTable;\n scope.renderAllPending = renderAllPending;\n\n // Exposed for testing\n scope.visual = {\n insertBefore: insertBefore,\n re move: remove,\n };\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The P olymer Authors. All rights reserved.\n// Use of this source code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n\n(function(sco pe) {\n 'use strict';\n\n var HTMLElement = scope.wrappers.HTMLElement;\n var assert = scope.assert;\n var mixin = scope.mixin;\n var registerWrapper = sco pe.registerWrapper;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n\n var elementsWithFormProperty = [\n 'HTMLButtonElement',\n 'HTMLFieldSetEl ement',\n 'HTMLInputElement',\n 'HTMLKeygenElement',\n 'HTMLLabelElemen t',\n 'HTMLLegendElement',\n 'HTMLObjectElement',\n // HTMLOptionElemen t is handled in HTMLOptionElement.js\n 'HTMLOutputElement',\n 'HTMLSelectE lement',\n 'HTMLTextAreaElement',\n ];\n\n function createWrapperConstructo r(name) {\n if (!window[name])\n return;\n\n // Ensure we are not ove rriding an already existing constructor.\n assert(!scope.wrappers[name]);\n\n var GeneratedWrapper = function(node) {\n // At this point all of them extend HTMLElement.\n HTMLElement.call(this, node);\n }\n GeneratedWr apper.prototype = Object.create(HTMLElement.prototype);\n mixin(GeneratedWrap per.prototype, {\n get form() {\n return wrap(unwrap(this).form);\n },\n });\n\n registerWrapper(window[name], GeneratedWrapper,\n document.createElement(name.slice(4, -7)));\n scope.wrappers[name] = Generat edWrapper;\n }\n\n elementsWithFormProperty.forEach(createWrapperConstructor); \n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2014 The Polymer Authors. All rights reserved.\n// Use of this source code is goverened by a BSD-style\n// li cense that can be found in the LICENSE file.\n\n(function(scope) {\n 'use stric t';\n\n var registerWrapper = scope.registerWrapper;\n var unwrap = scope.unwr ap;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wrap = scope.wrap;\n\n var OriginalSelection = window.Selection;\n\n function Selection(impl) {\n this.impl = impl;\n }\n Selection.prototype = {\n get anchorNode() {\n return wrap(this.impl.anchorNode);\n },\n get focusNode() {\n return wrap(this.impl.focusNode);\n },\n addRange: function(range) {\n this .impl.addRange(unwrap(range));\n },\n collapse: function(node, index) {\n this.impl.collapse(unwrapIfNeeded(node), index);\n },\n containsNode: function(node, allowPartial) {\n return this.impl.containsNode(unwrapIfNee ded(node), allowPartial);\n },\n extend: function(node, offset) {\n t his.impl.extend(unwrapIfNeeded(node), offset);\n },\n getRangeAt: function (index) {\n return wrap(this.impl.getRangeAt(index));\n },\n removeRa nge: function(range) {\n this.impl.removeRange(unwrap(range));\n },\n selectAllChildren: function(node) {\n this.impl.selectAllChildren(unwrapIf Needed(node));\n },\n toString: function() {\n return this.impl.toStr ing();\n }\n };\n\n // WebKit extensions. Not implemented.\n // readonly a ttribute Node baseNode;\n // readonly attribute long baseOffset;\n // readonly attribute Node extentNode;\n // readonly attribute long extentOffset;\n // [R aisesException] void setBaseAndExtent([Default=Undefined] optional Node baseNode ,\n // [Default=Undefined] optional long baseOffset,\n / / [Default=Undefined] optional Node extentNode,\n // [Default=Undefined] optional long extentOffset);\n // [Raises Exception, ImplementedAs=collapse] void setPosition([Default=Undefined] optional Node node,\n // [Default=Undefined] optional long offset);\n\ n registerWrapper(window.Selection, Selection, window.getSelection());\n\n sco pe.wrappers.Selection = Selection;\n\n})(window.ShadowDOMPolyfill);\n","// Copyr ight 2013 The Polymer Authors. All rights reserved.\n// Use of this source code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n \n(function(scope) {\n 'use strict';\n\n var GetElementsByInterface = scope.Ge tElementsByInterface;\n var Node = scope.wrappers.Node;\n var ParentNodeInterf ace = scope.ParentNodeInterface;\n var Selection = scope.wrappers.Selection;\n var SelectorsInterface = scope.SelectorsInterface;\n var ShadowRoot = scope.wr appers.ShadowRoot;\n var cloneNode = scope.cloneNode;\n var defineWrapGetter = scope.defineWrapGetter;\n var elementFromPoint = scope.elementFromPoint;\n va r forwardMethodsToWrapper = scope.forwardMethodsToWrapper;\n var matchesNames = scope.matchesNames;\n var mixin = scope.mixin;\n var registerWrapper = scope. registerWrapper;\n var renderAllPending = scope.renderAllPending;\n var rewrap = scope.rewrap;\n var unwrap = scope.unwrap;\n var wrap = scope.wrap;\n var wrapEventTargetMethods = scope.wrapEventTargetMethods;\n var wrapNodeList = sco pe.wrapNodeList;\n\n var implementationTable = new WeakMap();\n\n function Doc ument(node) {\n Node.call(this, node);\n }\n Document.prototype = Object.cr eate(Node.prototype);\n\n defineWrapGetter(Document, 'documentElement');\n\n / / Conceptually both body and head can be in a shadow but suporting that seems\n // overkill at this point.\n defineWrapGetter(Document, 'body');\n defineWrap Getter(Document, 'head');\n\n // document cannot be overridden so we override a bunch of its methods\n // directly on the instance.\n\n function wrapMethod(n ame) {\n var original = document[name];\n Document.prototype[name] = funct ion() {\n return wrap(original.apply(this.impl, arguments));\n };\n }\n \n [\n 'createComment',\n 'createDocumentFragment',\n 'createElement', \n 'createElementNS',\n 'createEvent',\n 'createEventNS',\n 'createR ange',\n 'createTextNode',\n 'getElementById'\n ].forEach(wrapMethod);\n\ n var originalAdoptNode = document.adoptNode;\n\n function adoptNodeNoRemove(n ode, doc) {\n originalAdoptNode.call(doc.impl, unwrap(node));\n adoptSubtr ee(node, doc);\n }\n\n function adoptSubtree(node, doc) {\n if (node.shadow Root)\n doc.adoptNode(node.shadowRoot);\n if (node instanceof ShadowRoot )\n adoptOlderShadowRoots(node, doc);\n for (var child = node.firstChild ; child; child = child.nextSibling) {\n adoptSubtree(child, doc);\n }\n }\n\n function adoptOlderShadowRoots(shadowRoot, doc) {\n var oldShadowRoot = shadowRoot.olderShadowRoot;\n if (oldShadowRoot)\n doc.adoptNode(oldS hadowRoot);\n }\n\n var originalGetSelection = document.getSelection;\n\n mix in(Document.prototype, {\n adoptNode: function(node) {\n if (node.parent Node)\n node.parentNode.removeChild(node);\n adoptNodeNoRemove(node, this);\n return node;\n },\n elementFromPoint: function(x, y) {\n return elementFromPoint(this, this, x, y);\n },\n importNode: function( node, deep) {\n return cloneNode(node, deep, this.impl);\n },\n getSe lection: function() {\n renderAllPending();\n return new Selection(ori ginalGetSelection.call(unwrap(this)));\n }\n });\n\n if (document.registerE lement) {\n var originalRegisterElement = document.registerElement;\n Docu ment.prototype.registerElement = function(tagName, object) {\n var prototyp e = object.prototype;\n\n // If we already used the object as a prototype f or another custom\n // element.\n if (scope.nativePrototypeTable.get(p rototype)) {\n // TODO(arv): DOMException\n throw new Error('NotSu pportedError');\n }\n\n // Find first object on the prototype chain th at already have a native\n // prototype. Keep track of all the objects befo re that so we can create\n // a similar structure for the native case.\n var proto = Object.getPrototypeOf(prototype);\n var nativePrototype;\n var prototypes = [];\n while (proto) {\n nativePrototype = scope .nativePrototypeTable.get(proto);\n if (nativePrototype)\n break ;\n prototypes.push(proto);\n proto = Object.getPrototypeOf(proto) ;\n }\n\n if (!nativePrototype) {\n // TODO(arv): DOMException\ n throw new Error('NotSupportedError');\n }\n\n // This works b y creating a new prototype object that is empty, but has\n // the native pr ototype as its proto. The original prototype object\n // passed into regist er is used as the wrapper prototype.\n\n var newPrototype = Object.create(n ativePrototype);\n for (var i = prototypes.length - 1; i >= 0; i--) {\n newPrototype = Object.create(newPrototype);\n }\n\n // Add callbac ks if present.\n // Names are taken from:\n // https://code.google.c om/p/chromium/codesearch#chromium/src/third_party/WebKit/Source/bindings/v8/Cust omElementConstructorBuilder.cpp&sq=package:chromium&type=cs&l=156\n // and not from the spec since the spec is out of date.\n [\n 'createdCallb ack',\n 'attachedCallback',\n 'detachedCallback',\n 'attrib uteChangedCallback',\n ].forEach(function(name) {\n var f = prototyp e[name];\n if (!f)\n return;\n newPrototype[name] = funct ion() {\n // if this element has been wrapped prior to registration,\n // the wrapper is stale; in this case rewrap\n if (!(wrap(this ) instanceof CustomElementConstructor)) {\n rewrap(this);\n }\n f.apply(wrap(this), arguments);\n };\n });\n\n var p = {prototype: newPrototype};\n if (object.extends)\n p.extends = object.extends;\n\n function CustomElementConstructor(node) {\n if ( !node) {\n if (object.extends) {\n return document.createEle ment(object.extends, tagName);\n } else {\n return document. createElement(tagName);\n }\n }\n this.impl = node;\n }\n CustomElementConstructor.prototype = prototype;\n CustomElementC onstructor.prototype.constructor = CustomElementConstructor;\n\n scope.cons tructorTable.set(newPrototype, CustomElementConstructor);\n scope.nativePro totypeTable.set(prototype, newPrototype);\n\n // registration is synchronou s so do it last\n var nativeConstructor = originalRegisterElement.call(unwr ap(this),\n tagName, p);\n return CustomElementConstructor;\n } ;\n\n forwardMethodsToWrapper([\n window.HTMLDocument || window.Document , // Gecko adds these to HTMLDocument\n ], [\n 'registerElement',\n ]);\n }\n\n // We also override some of the methods on document.body and docum ent.head\n // for convenience.\n forwardMethodsToWrapper([\n window.HTMLBod yElement,\n window.HTMLDocument || window.Document, // Gecko adds these to H TMLDocument\n window.HTMLHeadElement,\n window.HTMLHtmlElement,\n ], [\n 'appendChild',\n 'compareDocumentPosition',\n 'contains',\n 'getElem entsByClassName',\n 'getElementsByTagName',\n 'getElementsByTagNameNS',\n 'insertBefore',\n 'querySelector',\n 'querySelectorAll',\n 'removeCh ild',\n 'replaceChild',\n ].concat(matchesNames));\n\n forwardMethodsToWrap per([\n window.HTMLDocument || window.Document, // Gecko adds these to HTMLD ocument\n ], [\n 'adoptNode',\n 'importNode',\n 'contains',\n 'crea teComment',\n 'createDocumentFragment',\n 'createElement',\n 'createEle mentNS',\n 'createEvent',\n 'createEventNS',\n 'createRange',\n 'cre ateTextNode',\n 'elementFromPoint',\n 'getElementById',\n 'getSelection ',\n ]);\n\n mixin(Document.prototype, GetElementsByInterface);\n mixin(Docum ent.prototype, ParentNodeInterface);\n mixin(Document.prototype, SelectorsInter face);\n\n mixin(Document.prototype, {\n get implementation() {\n var i mplementation = implementationTable.get(this);\n if (implementation)\n return implementation;\n implementation =\n new DOMImplementati on(unwrap(this).implementation);\n implementationTable.set(this, implementa tion);\n return implementation;\n }\n });\n\n registerWrapper(window.D ocument, Document,\n document.implementation.createHTMLDocument(''));\n\n // Both WebKit and Gecko uses HTMLDocument for document. HTML5/DOM only has\n / / one Document interface and IE implements the standard correctly.\n if (window .HTMLDocument)\n registerWrapper(window.HTMLDocument, Document);\n\n wrapEve ntTargetMethods([\n window.HTMLBodyElement,\n window.HTMLDocument || windo w.Document, // Gecko adds these to HTMLDocument\n window.HTMLHeadElement,\n ]);\n\n function DOMImplementation(impl) {\n this.impl = impl;\n }\n\n fu nction wrapImplMethod(constructor, name) {\n var original = document.implemen tation[name];\n constructor.prototype[name] = function() {\n return wrap (original.apply(this.impl, arguments));\n };\n }\n\n function forwardImplMe thod(constructor, name) {\n var original = document.implementation[name];\n constructor.prototype[name] = function() {\n return original.apply(this.i mpl, arguments);\n };\n }\n\n wrapImplMethod(DOMImplementation, 'createDocu mentType');\n wrapImplMethod(DOMImplementation, 'createDocument');\n wrapImplM ethod(DOMImplementation, 'createHTMLDocument');\n forwardImplMethod(DOMImplemen tation, 'hasFeature');\n\n registerWrapper(window.DOMImplementation, DOMImpleme ntation);\n\n forwardMethodsToWrapper([\n window.DOMImplementation,\n ], [\ n 'createDocumentType',\n 'createDocument',\n 'createHTMLDocument',\n 'hasFeature',\n ]);\n\n scope.adoptNodeNoRemove = adoptNodeNoRemove;\n scop e.wrappers.DOMImplementation = DOMImplementation;\n scope.wrappers.Document = D ocument;\n\n})(window.ShadowDOMPolyfill);\n","// Copyright 2013 The Polymer Auth ors. All rights reserved.\n// Use of this source code is goverened by a BSD-styl e\n// license that can be found in the LICENSE file.\n\n(function(scope) {\n 'u se strict';\n\n var EventTarget = scope.wrappers.EventTarget;\n var Selection = scope.wrappers.Selection;\n var mixin = scope.mixin;\n var registerWrapper = scope.registerWrapper;\n var renderAllPending = scope.renderAllPending;\n var unwrap = scope.unwrap;\n var unwrapIfNeeded = scope.unwrapIfNeeded;\n var wra p = scope.wrap;\n\n var OriginalWindow = window.Window;\n var originalGetCompu tedStyle = window.getComputedStyle;\n var originalGetSelection = window.getSele ction;\n\n function Window(impl) {\n EventTarget.call(this, impl);\n }\n W indow.prototype = Object.create(EventTarget.prototype);\n\n OriginalWindow.prot otype.getComputedStyle = function(el, pseudo) {\n return wrap(this || window) .getComputedStyle(unwrapIfNeeded(el), pseudo);\n };\n\n OriginalWindow.prototy pe.getSelection = function() {\n return wrap(this || window).getSelection();\ n };\n\n // Work around for https://bugzilla.mozilla.org/show_bug.cgi?id=94306 5\n delete window.getComputedStyle;\n delete window.getSelection;\n\n ['addEv entListener', 'removeEventListener', 'dispatchEvent'].forEach(\n function(n ame) {\n OriginalWindow.prototype[name] = function() {\n var w = wrap(this || window);\n return w[name].apply(w, arguments);\n } ;\n\n // Work around for https://bugzilla.mozilla.org/show_bug.cgi?id=943 065\n delete window[name];\n });\n\n mixin(Window.prototype, {\n getComputedStyle: function(el, pseudo) {\n renderAllPending();\n retu rn originalGetComputedStyle.call(unwrap(this), unwrapIfNeeded(el),\n pseudo);\n },\n getSelection: function() {\ n renderAllPending();\n return new Selection(originalGetSelection.call (unwrap(this)));\n },\n });\n\n registerWrapper(OriginalWindow, Window);\n\ n scope.wrappers.Window = Window;\n\n})(window.ShadowDOMPolyfill);\n","// Copyr ight 2013 The Polymer Authors. All rights reserved.\n// Use of this source code is goverened by a BSD-style\n// license that can be found in the LICENSE file.\n \n(function(scope) {\n 'use strict';\n\n var isWrapperFor = scope.isWrapperFor ;\n\n // This is a list of the elements we currently override the global constr uctor\n // for.\n var elements = {\n 'a': 'HTMLAnchorElement',\n\n // Do not create an applet element by default since it shows a warning in\n // IE. \n // https://github.com/Polymer/polymer/issues/217\n // 'applet': 'HTMLAp pletElement',\n\n 'area': 'HTMLAreaElement',\n 'br': 'HTMLBRElement',\n 'base': 'HTMLBaseElement',\n 'body': 'HTMLBodyElement',\n 'button': 'HTML ButtonElement',\n // 'command': 'HTMLCommandElement', // Not fully implement ed in Gecko.\n 'dl': 'HTMLDListElement',\n 'datalist': 'HTMLDataListElemen t',\n 'data': 'HTMLDataElement',\n 'dir': 'HTMLDirectoryElement',\n 'di v': 'HTMLDivElement',\n 'embed': 'HTMLEmbedElement',\n 'fieldset': 'HTMLFi eldSetElement',\n 'font': 'HTMLFontElement',\n 'form': 'HTMLFormElement',\ n 'frame': 'HTMLFrameElement',\n 'frameset': 'HTMLFrameSetElement',\n ' hr': 'HTMLHRElement',\n 'head': 'HTMLHeadElement',\n 'h1': 'HTMLHeadingEle ment',\n 'html': 'HTMLHtmlElement',\n 'iframe': 'HTMLIFrameElement',\n 'input': 'HTMLInputElement',\n 'li': 'HTMLLIElement',\n 'label': 'HTMLLabe lElement',\n 'legend': 'HTMLLegendElement',\n 'link': 'HTMLLinkElement',\n 'map': 'HTMLMapElement',\n 'marquee': 'HTMLMarqueeElement',\n 'menu': 'HTMLMenuElement',\n 'menuitem': 'HTMLMenuItemElement',\n 'meta': 'HTMLMet aElement',\n 'meter': 'HTMLMeterElement',\n 'del': 'HTMLModElement',\n 'ol': 'HTMLOListElement',\n 'object': 'HTMLObjectElement',\n 'optgroup': ' HTMLOptGroupElement',\n 'option': 'HTMLOptionElement',\n 'output': 'HTMLOu tputElement',\n 'p': 'HTMLParagraphElement',\n 'param': 'HTMLParamElement' ,\n 'pre': 'HTMLPreElement',\n 'progress': 'HTMLProgressElement',\n 'q' : 'HTMLQuoteElement',\n 'script': 'HTMLScriptElement',\n 'select': 'HTMLSe lectElement',\n 'source': 'HTMLSourceElement',\n 'span': 'HTMLSpanElement' ,\n 'style': 'HTMLStyleElement',\n 'time': 'HTMLTimeElement',\n 'captio n': 'HTMLTableCaptionElement',\n // WebKit and Moz are wrong:\n // https:/ /bugs.webkit.org/show_bug.cgi?id=111469\n // https://bugzilla.mozilla.org/sho w_bug.cgi?id=848096\n // 'td': 'HTMLTableCellElement',\n 'col': 'HTMLTable ColElement',\n 'table': 'HTMLTableElement',\n 'tr': 'HTMLTableRowElement', \n 'thead': 'HTMLTableSectionElement',\n 'tbody': 'HTMLTableSectionElement ',\n 'textarea': 'HTMLTextAreaElement',\n 'track': 'HTMLTrackElement',\n 'title': 'HTMLTitleElement',\n 'ul': 'HTMLUListElement',\n 'video': 'HTM LVideoElement',\n };\n\n function overrideConstructor(tagName) {\n var nati veConstructorName = elements[tagName];\n var nativeConstructor = window[nativ eConstructorName];\n if (!nativeConstructor)\n return;\n var element = document.createElement(tagName);\n var wrapperConstructor = element.constru ctor;\n window[nativeConstructorName] = wrapperConstructor;\n }\n\n Object. keys(elements).forEach(overrideConstructor);\n\n Object.getOwnPropertyNames(sco pe.wrappers).forEach(function(name) {\n window[name] = scope.wrappers[name]\n });\n\n // Export for testing.\n scope.knownElements = elements;\n\n})(windo w.ShadowDOMPolyfill);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license tha t can be found in the LICENSE file.\n */\n(function() {\n\n // convenient globa l\n window.wrap = ShadowDOMPolyfill.wrapIfNeeded;\n window.unwrap = ShadowDOMP olyfill.unwrapIfNeeded;\n\n // users may want to customize other types\n // TO DO(sjmiles): 'button' is now supported by ShadowDOMPolyfill, but\n // I've left this code here in case we need to temporarily patch another\n // type\n /*\n (function() {\n var elts = {HTMLButtonElement: 'button'};\n for (var c in elts) {\n window[c] = function() { throw 'Patched Constructor'; };\n window[c].prototype = Object.getPrototypeOf(\n document.createElement(e lts[c]));\n }\n })();\n */\n\n // patch in prefixed name\n Object.defineP roperty(Element.prototype, 'webkitShadowRoot',\n Object.getOwnPropertyDescr iptor(Element.prototype, 'shadowRoot'));\n\n var originalCreateShadowRoot = Ele ment.prototype.createShadowRoot;\n Element.prototype.createShadowRoot = functio n() {\n var root = originalCreateShadowRoot.call(this);\n CustomElements.w atchShadow(this);\n return root;\n };\n\n Element.prototype.webkitCreateSha dowRoot = Element.prototype.createShadowRoot;\n})();\n","/*\n * Copyright 2012 T he Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/*\n This is a limited shim for ShadowDOM css styling.\n https://dvcs.w3.org/hg/web components/raw-file/tip/spec/shadow/index.html#styles\n \n The intention here is to support only the styling features which can be \n relatively simply imple mented. The goal is to allow users to avoid the \n most obvious pitfalls and do so without compromising performance significantly. \n For ShadowDOM styling th at's not covered here, a set of best practices\n can be provided that should al low users to accomplish more complex styling.\n\n The following is a list of sp ecific ShadowDOM styling features and a brief\n discussion of the approach used to shim.\n\n Shimmed features:\n\n * :host, :ancestor: ShadowDOM allows styli ng of the shadowRoot's host\n element using the :host rule. To shim this featur e, the :host styles are \n reformatted and prefixed with a given scope name and promoted to a \n document level stylesheet.\n For example, given a scope name of .foo, a rule like this:\n \n :host {\n background: red;\n }\ n }\n \n becomes:\n \n .foo {\n background: red;\n }\n \n * e ncapsultion: Styles defined within ShadowDOM, apply only to \n dom inside the S hadowDOM. Polymer uses one of two techniques to imlement\n this feature.\n \n By default, rules are prefixed with the host element tag name \n as a descenda nt selector. This ensures styling does not leak out of the 'top'\n of the eleme nt's ShadowDOM. For example,\n\n div {\n font-weight: bold;\n }\n \n becomes:\n\n x-foo div {\n font-weight: bold;\n }\n \n becomes:\n\n\n Alternatively, if Platform.ShadowCSS.strictStyling is set to true then \n sel ectors are scoped by adding an attribute selector suffix to each\n simple selec tor that contains the host element tag name. Each element \n in the element's S hadowDOM template is also given the scope attribute. \n Thus, these rules match only elements that have the scope attribute.\n For example, given a scope name of x-foo, a rule like this:\n \n div {\n font-weight: bold;\n }\n \n becomes:\n \n div[x-foo] {\n font-weight: bold;\n }\n\n Note th at elements that are dynamically added to a scope must have the scope\n selecto r added to them manually.\n\n * upper/lower bound encapsulation: Styles which a re defined outside a\n shadowRoot should not cross the ShadowDOM boundary and s hould not apply\n inside a shadowRoot.\n\n This styling behavior is not emulat ed. Some possible ways to do this that \n were rejected due to complexity and/o r performance concerns include: (1) reset\n every possible property for every p ossible selector for a given scope name;\n (2) re-implement css in javascript.\ n \n As an alternative, users should make sure to use selectors\n specific to the scope in which they are working.\n \n * ::distributed: This behavior is n ot emulated. It's often not necessary\n to style the contents of a specific ins ertion point and instead, descendants\n of the host element can be styled selec tively. Users can also create an \n extra node around an insertion point and st yle that node's contents\n via descendent selectors. For example, with a shadow Root like this:\n \n <style>\n ::content(div) {\n background: re d;\n }\n </style>\n <content></content>\n \n could become:\n \n <style>\n / *@polyfill .content-container div * / \n ::content(div) { \n background: red;\n }\n </style>\n <div class=\"content-cont ainer\">\n <content></content>\n </div>\n \n Note the use of @polyfill in the comment above a ShadowDOM specific style\n declaration. This is a direc tive to the styling shim to use the selector \n in comments in lieu of the next selector when running under polyfill.\n*/\n(function(scope) {\n\nvar ShadowCSS = {\n strictStyling: false,\n registry: {},\n // Shim styles for a given root associated with a name and extendsName\n // 1. cache root styles by name\n // 2. optionally tag root nodes with scope name\n // 3. shim polyfill directives /* @polyfill */ and /* @polyfill-rule */\n // 4. shim :host and scoping\n shim Styling: function(root, name, extendsName) {\n var typeExtension = this.isTyp eExtension(extendsName);\n // use caching to make working with styles nodes e asier and to facilitate\n // lookup of extendee\n var def = this.registerD efinition(root, name, extendsName);\n // find styles and apply shimming...\n if (this.strictStyling) {\n this.applyScopeToContent(root, name);\n } \n var cssText = this.stylesToShimmedCssText(def.rootStyles, def.scopeStyles, \n name, typeExtension);\n // provide shimmedStyle for user extensibil ity\n def.shimmedStyle = cssTextToStyle(cssText);\n if (root) {\n roo t.shimmedStyle = def.shimmedStyle;\n }\n // remove existing style elements \n for (var i=0, l=def.rootStyles.length, s; (i<l) && (s=def.rootStyles[i]); \n i++) {\n s.parentNode.removeChild(s);\n }\n // add style to document\n addCssToDocument(cssText);\n },\n // apply @polyfill rules + :h ost and scope shimming\n stylesToShimmedCssText: function(rootStyles, scopeStyl es, name,\n typeExtension) {\n name = name || '';\n // insert @polyfi ll and @polyfill-rule rules into style elements\n // scoping process takes ca re of shimming these\n this.insertPolyfillDirectives(rootStyles);\n this.i nsertPolyfillRules(rootStyles);\n var cssText = this.shimScoping(scopeStyles, name, typeExtension);\n // note: we only need to do rootStyles since these a re unscoped.\n cssText += this.extractPolyfillUnscopedRules(rootStyles);\n return cssText;\n },\n registerDefinition: function(root, name, extendsName) {\n var def = this.registry[name] = {\n root: root,\n name: name,\n extendsName: extendsName\n }\n var styles = root ? root.querySelecto rAll('style') : [];\n styles = styles ? Array.prototype.slice.call(styles, 0) : [];\n def.rootStyles = styles;\n def.scopeStyles = def.rootStyles;\n var extendee = this.registry[def.extendsName];\n if (extendee && (!root || r oot.querySelector('shadow'))) {\n def.scopeStyles = extendee.scopeStyles.co ncat(def.scopeStyles);\n }\n return def;\n },\n isTypeExtension: functio n(extendsName) {\n return extendsName && extendsName.indexOf('-') < 0;\n },\ n applyScopeToContent: function(root, name) {\n if (root) {\n // add th e name attribute to each node in root.\n Array.prototype.forEach.call(root. querySelectorAll('*'),\n function(node) {\n node.setAttribut e(name, '');\n });\n // and template contents too\n Array.pro totype.forEach.call(root.querySelectorAll('template'),\n function(templ ate) {\n this.applyScopeToContent(template.content, name);\n },\n this);\n }\n },\n /*\n * Process styles to convert native ShadowDOM rules that will trip\n * up the css parser; we rely on decorating th e stylesheet with comments.\n * \n * For example, we convert this rule:\n * \n * (comment start) @polyfill :host menu-item (comment end)\n * shadow::- webkit-distributed(menu-item) {\n * \n * to this:\n * \n * scopeName men u-item {\n *\n **/\n insertPolyfillDirectives: function(styles) {\n if (s tyles) {\n Array.prototype.forEach.call(styles, function(s) {\n s.te xtContent = this.insertPolyfillDirectivesInCssText(s.textContent);\n }, thi s);\n }\n },\n insertPolyfillDirectivesInCssText: function(cssText) {\n return cssText.replace(cssPolyfillCommentRe, function(match, p1) {\n // rem ove end comment delimiter and add block start\n return p1.slice(0, -2) + '{ ';\n });\n },\n /*\n * Process styles to add rules which will only apply under the polyfill\n * \n * For example, we convert this rule:\n * \n * (comment start) @polyfill-rule :host menu-item { \n * ... } (comment end)\n * \n * to this:\n * \n * scopeName menu-item {...}\n *\n **/\n insertP olyfillRules: function(styles) {\n if (styles) {\n Array.prototype.forEa ch.call(styles, function(s) {\n s.textContent = this.insertPolyfillRulesI nCssText(s.textContent);\n }, this);\n }\n },\n insertPolyfillRulesInC ssText: function(cssText) {\n return cssText.replace(cssPolyfillRuleCommentRe , function(match, p1) {\n // remove end comment delimiter\n return p1. slice(0, -1);\n });\n },\n /*\n * Process styles to add rules which will only apply under the polyfill\n * and do not process via CSSOM. (CSSOM is dest ructive to rules on rare \n * occasions, e.g. -webkit-calc on Safari.)\n * F or example, we convert this rule:\n * \n * (comment start) @polyfill-unscope d-rule menu-item { \n * ... } (comment end)\n * \n * to this:\n * \n * menu-item {...}\n *\n **/\n extractPolyfillUnscopedRules: function(styles) {\n var cssText = '';\n if (styles) {\n Array.prototype.forEach.call( styles, function(s) {\n cssText += this.extractPolyfillUnscopedRulesFromC ssText(\n s.textContent) + '\\n\\n';\n }, this);\n }\n ret urn cssText;\n },\n extractPolyfillUnscopedRulesFromCssText: function(cssText) {\n var r = '', matches;\n while (matches = cssPolyfillUnscopedRuleCommen tRe.exec(cssText)) {\n r += matches[1].slice(0, -1) + '\\n\\n';\n }\n return r;\n },\n /* Ensure styles are scoped. Pseudo-scoping takes a rule lik e:\n * \n * .foo {... } \n * \n * and converts this to\n * \n * scopeName .foo { ... }\n */\n shimScoping: function(styles, name, typeExtensi on) {\n if (styles) {\n return this.convertScopedStyles(styles, name, ty peExtension);\n }\n },\n convertScopedStyles: function(styles, name, typeEx tension) {\n var cssText = stylesToCssText(styles);\n cssText = this.inser tPolyfillHostInCssText(cssText);\n cssText = this.convertColonHost(cssText);\ n cssText = this.convertColonAncestor(cssText);\n cssText = this.convertCo mbinators(cssText);\n var rules = cssToRules(cssText);\n if (name) {\n cssText = this.scopeRules(rules, name, typeExtension);\n }\n return cssT ext;\n },\n /*\n * convert a rule like :host(.foo) > .bar { }\n *\n * to \n *\n * scopeName.foo > .bar\n */\n convertColonHost: function(cssText) { \n return this.convertColonRule(cssText, cssColonHostRe,\n this.colonH ostPartReplacer);\n },\n /*\n * convert a rule like :ancestor(.foo) > .bar { }\n *\n * to\n *\n * scopeName.foo > .bar, .foo scopeName > .bar { }\n * \n * and\n *\n * :ancestor(.foo:host) .bar { ... }\n * \n * to\n * \n * scopeName.foo .bar { ... }\n */\n convertColonAncestor: function(css Text) {\n return this.convertColonRule(cssText, cssColonAncestorRe,\n this.colonAncestorPartReplacer);\n },\n convertColonRule: function(cssText, re gExp, partReplacer) {\n // p1 = :host, p2 = contents of (), p3 rest of rule\n return cssText.replace(regExp, function(m, p1, p2, p3) {\n p1 = polyfil lHostNoCombinator;\n if (p2) {\n var parts = p2.split(','), r = [];\ n for (var i=0, l=parts.length, p; (i<l) && (p=parts[i]); i++) {\n p = p.trim();\n r.push(partReplacer(p1, p, p3));\n }\n return r.join(',');\n } else {\n return p1 + p3;\n }\n });\ n },\n colonAncestorPartReplacer: function(host, part, suffix) {\n if (part .match(polyfillHost)) {\n return this.colonHostPartReplacer(host, part, suf fix);\n } else {\n return host + part + suffix + ', ' + part + ' ' + hos t + suffix;\n }\n },\n colonHostPartReplacer: function(host, part, suffix) {\n return host + part.replace(polyfillHost, '') + suffix;\n },\n /*\n * Convert ^ and ^^ combinators by replacing with space.\n */\n convertCombinator s: function(cssText) {\n return cssText.replace(/\\^\\^/g, ' ').replace(/\\^/ g, ' ');\n },\n // change a selector like 'div' to 'name div'\n scopeRules: f unction(cssRules, name, typeExtension) {\n var cssText = '';\n Array.proto type.forEach.call(cssRules, function(rule) {\n if (rule.selectorText && (ru le.style && rule.style.cssText)) {\n cssText += this.scopeSelector(rule.s electorText, name, typeExtension, \n this.strictStyling) + ' {\\n\\t';\ n cssText += this.propertiesFromRule(rule) + '\\n}\\n\\n';\n } else if (rule.media) {\n cssText += '@media ' + rule.media.mediaText + ' {\\n' ;\n cssText += this.scopeRules(rule.cssRules, name, typeExtension);\n cssText += '\\n}\\n\\n';\n } else if (rule.cssText) {\n cssText += rule.cssText + '\\n\\n';\n }\n }, this);\n return cssText;\n },\n scopeSelector: function(selector, name, typeExtension, strict) {\n var r = [], parts = selector.split(',');\n parts.forEach(function(p) {\n p = p.t rim();\n if (this.selectorNeedsScoping(p, name, typeExtension)) {\n p = (strict && !p.match(polyfillHostNoCombinator)) ? \n this.applyStr ictSelectorScope(p, name) :\n this.applySimpleSelectorScope(p, name, typeExtension);\n }\n r.push(p);\n }, this);\n return r.join(', ');\n },\n selectorNeedsScoping: function(selector, name, typeExtension) {\n var re = this.makeScopeMatcher(name, typeExtension);\n return !selector.mat ch(re);\n },\n makeScopeMatcher: function(name, typeExtension) {\n var matc hScope = typeExtension ? '\\\\[is=[\\'\"]?' + name + '[\\'\"]?\\\\]' : name;\n return new RegExp('^(' + matchScope + ')' + selectorReSuffix, 'm');\n },\n / / scope via name and [is=name]\n applySimpleSelectorScope: function(selector, n ame, typeExtension) {\n var scoper = typeExtension ? '[is=' + name + ']' : na me;\n if (selector.match(polyfillHostRe)) {\n selector = selector.replac e(polyfillHostNoCombinator, scoper);\n return selector.replace(polyfillHost Re, scoper + ' ');\n } else {\n return scoper + ' ' + selector;\n }\n },\n // return a selector with [name] suffix on each simple selector\n // e. g. .foo.bar > .zot becomes .foo[name].bar[name] > .zot[name]\n applyStrictSelec torScope: function(selector, name) {\n var splits = [' ', '>', '+', '~'],\n scoped = selector,\n attrName = '[' + name + ']';\n splits.forEach(f unction(sep) {\n var parts = scoped.split(sep);\n scoped = parts.map(f unction(p) {\n // remove :host since it should be unnecessary\n va r t = p.trim().replace(polyfillHostRe, '');\n if (t && (splits.indexOf(t) < 0) && (t.indexOf(attrName) < 0)) {\n p = t.replace(/([^:]*)(:*)(.*)/ , '$1' + attrName + '$2$3')\n }\n return p;\n }).join(sep);\n });\n return scoped;\n },\n insertPolyfillHostInCssText: function(selec tor) {\n return selector.replace(hostRe, polyfillHost).replace(colonHostRe,\n polyfillHost).replace(colonAncestorRe, polyfillAncestor);\n },\n prope rtiesFromRule: function(rule) {\n // TODO(sorvell): Safari cssom incorrectly removes quotes from the content\n // property. (https://bugs.webkit.org/show_ bug.cgi?id=118045)\n if (rule.style.content && !rule.style.content.match(/['\ "]+/)) {\n return rule.style.cssText.replace(/content:[^;]*;/g, 'content: \ \'' + \n rule.style.content + '\\';');\n }\n return rule.style.cs sText;\n }\n};\n\nvar selectorRe = /([^{]*)({[\\s\\S]*?})/gim,\n cssCommentR e = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//gim,\n cssPolyfillCommentRe = /\\/\\ *\\s*@polyfill ([^*]*\\*+([^/*][^*]*\\*+)*\\/)([^{]*?){/gim,\n cssPolyfillRul eCommentRe = /\\/\\*\\s@polyfill-rule([^*]*\\*+([^/*][^*]*\\*+)*)\\//gim,\n c ssPolyfillUnscopedRuleCommentRe = /\\/\\*\\s@polyfill-unscoped-rule([^*]*\\*+([^ /*][^*]*\\*+)*)\\//gim,\n cssPseudoRe = /::(x-[^\\s{,(]*)/gim,\n cssPartRe = /::part\\(([^)]*)\\)/gim,\n // note: :host pre-processed to -shadowcsshost .\n polyfillHost = '-shadowcsshost',\n // note: :ancestor pre-processed to -shadowcssancestor.\n polyfillAncestor = '-shadowcssancestor',\n parenSuf fix = ')(?:\\\\((' +\n '(?:\\\\([^)(]*\\\\)|[^)(]*)+?' +\n ')\\\\) )?([^,{]*)';\n cssColonHostRe = new RegExp('(' + polyfillHost + parenSuffix, 'gim'),\n cssColonAncestorRe = new RegExp('(' + polyfillAncestor + parenSuffi x, 'gim'),\n selectorReSuffix = '([>\\\\s~+\\[.,{:][\\\\s\\\\S]*)?$',\n ho stRe = /@host/gim,\n colonHostRe = /\\:host/gim,\n colonAncestorRe = /\\:a ncestor/gim,\n /* host name without combinator */\n polyfillHostNoCombinat or = polyfillHost + '-no-combinator',\n polyfillHostRe = new RegExp(polyfillH ost, 'gim');\n polyfillAncestorRe = new RegExp(polyfillAncestor, 'gim');\n\nf unction stylesToCssText(styles, preserveComments) {\n var cssText = '';\n Arra y.prototype.forEach.call(styles, function(s) {\n cssText += s.textContent + ' \\n\\n';\n });\n // strip comments for easier processing\n if (!preserveComme nts) {\n cssText = cssText.replace(cssCommentRe, '');\n }\n return cssText; \n}\n\nfunction cssTextToStyle(cssText) {\n var style = document.createElement( 'style');\n style.textContent = cssText;\n return style;\n}\n\nfunction cssToR ules(cssText) {\n var style = cssTextToStyle(cssText);\n document.head.appendC hild(style);\n var rules = style.sheet.cssRules;\n style.parentNode.removeChil d(style);\n return rules;\n}\n\nfunction rulesToCss(cssRules) {\n for (var i=0 , css=[]; i < cssRules.length; i++) {\n css.push(cssRules[i].cssText);\n }\n return css.join('\\n\\n');\n}\n\nfunction addCssToDocument(cssText) {\n if (c ssText) {\n getSheet().appendChild(document.createTextNode(cssText));\n }\n} \n\nvar SHIM_ATTRIBUTE = 'shim-shadowdom';\nvar SHIMMED_ATTRIBUTE = 'shim-shadow dom-css';\n\nvar sheet;\nfunction getSheet() {\n if (!sheet) {\n sheet = doc ument.createElement(\"style\");\n sheet.setAttribute(SHIMMED_ATTRIBUTE, '');\ n sheet[SHIMMED_ATTRIBUTE] = true;\n }\n return sheet;\n}\n\n// add polyfil l stylesheet to document\nif (window.ShadowDOMPolyfill) {\n addCssToDocument('s tyle { display: none !important; }\\n');\n var doc = wrap(document);\n var hea d = doc.querySelector('head');\n head.insertBefore(getSheet(), head.childNodes[ 0]);\n\n // TODO(sorvell): monkey-patching HTMLImports is abusive;\n // consid er a better solution.\n document.addEventListener('DOMContentLoaded', function( ) {\n var urlResolver = scope.urlResolver;\n \n if (window.HTMLImports && !HTMLImports.useNative) {\n var SHIM_SHEET_SELECTOR = 'link[rel=styleshe et]' +\n '[' + SHIM_ATTRIBUTE + ']';\n var SHIM_STYLE_SELECTOR = ' style[' + SHIM_ATTRIBUTE + ']';\n HTMLImports.importer.documentPreloadSelec tors += ',' + SHIM_SHEET_SELECTOR;\n HTMLImports.importer.importsPreloadSel ectors += ',' + SHIM_SHEET_SELECTOR;\n\n HTMLImports.parser.documentSelecto rs = [\n HTMLImports.parser.documentSelectors,\n SHIM_SHEET_SELECT OR,\n SHIM_STYLE_SELECTOR\n ].join(',');\n \n HTMLImports.pars er.parseGeneric = function(elt) {\n if (elt[SHIMMED_ATTRIBUTE]) {\n return;\n }\n var style = elt.__importElement || elt;\n if (elt.__resource) {\n style = elt.ownerDocument.createElement('style ');\n style.textContent = urlResolver.resolveCssText(\n el t.__resource, elt.href);\n } else {\n urlResolver.resolveStyles( style); \n }\n var styles = [style];\n style.textContent = ShadowCSS.stylesToShimmedCssText(styles, styles);\n style.removeAttribut e(SHIM_ATTRIBUTE, '');\n style.setAttribute(SHIMMED_ATTRIBUTE, '');\n style[SHIMMED_ATTRIBUTE] = true;\n // place in document\n if ( style.parentNode !== head) {\n // replace links in head\n if ( elt.parentNode === head) {\n head.replaceChild(style, elt);\n } else {\n head.appendChild(style);\n }\n }\n style.__importParsed = true\n this.markParsingComplete(elt);\n }\n \n var hasResource = HTMLImports.parser.hasResource;\n HTMLImports.par ser.hasResource = function(node) {\n if (node.localName === 'link' && nod e.rel === 'stylesheet' &&\n node.hasAttribute(SHIM_ATTRIBUTE)) {\n return (node.__resource);\n } else {\n return hasResource .call(this, node);\n }\n }\n\n }\n });\n}\n\n// exports\nscope.S hadowCSS = ShadowCSS;\n\n})(window.Platform);","/*\n * Copyright 2013 The Polyme r Authors. All rights reserved.\n * Use of this source code is governed by a BSD -style\n * license that can be found in the LICENSE file.\n */\n(function() {\n\ n // poor man's adapter for template.content on various platform scenarios\n w indow.templateContent = window.templateContent || function(inTemplate) {\n re turn inTemplate.content;\n };\n\n // so we can call wrap/unwrap without testin g for ShadowDOMPolyfill\n\n window.wrap = window.unwrap = function(n){\n ret urn n;\n }\n\n var originalCreateShadowRoot = Element.prototype.webkitCreateSh adowRoot;\n Element.prototype.webkitCreateShadowRoot = function() {\n var el derRoot = this.webkitShadowRoot;\n var root = originalCreateShadowRoot.call(t his);\n root.olderShadowRoot = elderRoot;\n root.host = this;\n CustomE lements.watchShadow(this);\n return root;\n }\n\n Object.defineProperties(E lement.prototype, {\n shadowRoot: {\n get: function() {\n return this.webkitShadowRoot;\n }\n },\n createShadowRoot: {\n value: f unction() {\n return this.webkitCreateShadowRoot();\n }\n }\n }) ;\n\n window.templateContent = function(inTemplate) {\n // if MDV exists, it may need to boostrap this template to reveal content\n if (window.HTMLTempla teElement && HTMLTemplateElement.bootstrap) {\n HTMLTemplateElement.bootstr ap(inTemplate);\n }\n // fallback when there is no Shadow DOM polyfill, no MDV polyfill, and no\n // native template support\n if (!inTemplate.conte nt && !inTemplate._content) {\n var frag = document.createDocumentFragment( );\n while (inTemplate.firstChild) {\n frag.appendChild(inTemplate.f irstChild);\n }\n inTemplate._content = frag;\n }\n return inTem plate.content || inTemplate._content;\n };\n\n})();","/* Any copyright is dedic ated to the Public Domain.\n * http://creativecommons.org/publicdomain/zero/1.0/ */\n\n(function(scope) {\n 'use strict';\n\n // feature detect for URL constr uctor\n var hasWorkingUrl = false;\n if (!scope.forceJURL) {\n try {\n var u = new URL('b', 'http://a');\n hasWorkingUrl = u.href === 'http://a/b ';\n } catch(e) {}\n }\n\n if (hasWorkingUrl)\n return;\n\n var relativ e = Object.create(null);\n relative['ftp'] = 21;\n relative['file'] = 0;\n re lative['gopher'] = 70;\n relative['http'] = 80;\n relative['https'] = 443;\n relative['ws'] = 80;\n relative['wss'] = 443;\n\n var relativePathDotMapping = Object.create(null);\n relativePathDotMapping['%2e'] = '.';\n relativePathDot Mapping['.%2e'] = '..';\n relativePathDotMapping['%2e.'] = '..';\n relativePat hDotMapping['%2e%2e'] = '..';\n\n function isRelativeScheme(scheme) {\n retu rn relative[scheme] !== undefined;\n }\n\n function invalid() {\n clear.cal l(this);\n this._isInvalid = true;\n }\n\n function IDNAToASCII(h) {\n i f ('' == h) {\n invalid.call(this)\n }\n // XXX\n return h.toLower Case()\n }\n\n function percentEscape(c) {\n var unicode = c.charCodeAt(0); \n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ? `\n [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) == -1\n ) {\n return c;\n }\n return encodeURIComponent(c);\n }\n\n function perce ntEscapeQuery(c) {\n // XXX This actually needs to encode c using encoding an d then\n // convert the bytes one-by-one.\n\n var unicode = c.charCodeAt(0 );\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ` (d o not escape '?')\n [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) == -1\ n ) {\n return c;\n }\n return encodeURIComponent(c);\n }\n\n var EOF = undefined,\n ALPHA = /[a-zA-Z]/,\n ALPHANUMERIC = /[a-zA-Z0- 9\\+\\-\\.]/;\n\n function parse(input, stateOverride, base) {\n function er r(message) {\n errors.push(message)\n }\n\n var state = stateOverride || 'scheme start',\n cursor = 0,\n buffer = '',\n seenAt = false,\n seenBracket = false,\n errors = [];\n\n loop: while ( (input[cursor - 1] != EOF || cursor == 0) && !this._isInvalid) {\n var c = input[cursor];\n switch (state) {\n case 'scheme start':\n if (c && ALPHA.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\ n state = 'scheme';\n } else if (!stateOverride) {\n buffer = '';\n state = 'no scheme';\n continue;\n } else {\n err('Invalid scheme.');\n break loop;\n }\n break;\n\n case 'scheme':\n if (c && ALPHANU MERIC.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\n } else if (':' == c) {\n this._scheme = buffer;\n buffer = '';\n if (stateOverride) {\n break loop;\n }\n if (isRelativeScheme(this._scheme)) {\n this._isRel ative = true;\n }\n if ('file' == this._scheme) {\n state = 'relative';\n } else if (this._isRelative && base && b ase._scheme == this._scheme) {\n state = 'relative or authority';\n } else if (this._isRelative) {\n state = 'authority fir st slash';\n } else {\n state = 'scheme data';\n }\n } else if (!stateOverride) {\n buffer = '';\n cursor = 0;\n state = 'no scheme';\n continue;\n } else if (EOF == c) {\n break loop;\n } else {\n err('Code point not allowed in scheme: ' + c)\n break loop;\n }\n break;\n\n case 'scheme data':\n if ('?' == c) {\n query = '?';\n state = 'query';\n } else if ('#' == c) {\n this._fragment = '#';\n state = 'fragmen t';\n } else {\n // XXX error handling\n if (EOF != c && '\\t' != c && '\\n' != c && '\\r' != c) {\n this._schemeDat a += percentEscape(c);\n }\n }\n break;\n\n case 'no scheme':\n if (!base || !(isRelativeScheme(base._scheme))) {\n err('Missing scheme.');\n invalid.call(this);\n } else {\n state = 'relative';\n continue;\n }\n break;\n\n case 'relative or authority':\n if ('/' == c && '/' == input[cursor+1]) {\n state = 'authority ignore slashes';\n } else {\n err('Expected /, got: ' + c);\n state = 'relative';\n continue\n }\n break;\n\n c ase 'relative':\n this._isRelative = true;\n if ('file' != thi s._scheme)\n this._scheme = base._scheme;\n if (EOF == c) {\ n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = base._query ;\n break loop;\n } else if ('/' == c || '\\\\' == c) {\n if ('\\\\' == c)\n err('\\\\ is an invalid code point.');\ n state = 'relative slash';\n } else if ('?' == c) {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = '?';\n state = 'query';\n } else if ('#' == c) {\n this._host = bas e._host;\n this._port = base._port;\n this._path = base._p ath.slice();\n this._query = base._query;\n this._fragment = '#';\n state = 'fragment';\n } else {\n var ne xtC = input[cursor+1]\n var nextNextC = input[cursor+2]\n if (\n 'file' != this._scheme || !ALPHA.test(c) ||\n ( nextC != ':' && nextC != '|') ||\n (EOF != nextNextC && '/' != next NextC && '\\\\' != nextNextC && '?' != nextNextC && '#' != nextNextC)) {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._path.pop();\n }\n state = 'relative path';\n continue;\n }\n break;\n\n case 'relative slash':\n if ('/' == c | | '\\\\' == c) {\n if ('\\\\' == c) {\n err('\\\\ is an invalid code point.');\n }\n if ('file' == this._scheme) { \n state = 'file host';\n } else {\n state = 'authority ignore slashes';\n }\n } else {\n if ('file' != this._scheme) {\n this._host = base._host;\n this._port = base._port;\n }\n state = 'relative path'; \n continue;\n }\n break;\n\n case 'authorit y first slash':\n if ('/' == c) {\n state = 'authority secon d slash';\n } else {\n err(\"Expected '/', got: \" + c);\n state = 'authority ignore slashes';\n continue;\n }\n break;\n\n case 'authority second slash':\n state = 'authority ignore slashes';\n if ('/' != c) {\n err(\"Expec ted '/', got: \" + c);\n continue;\n }\n break;\n\n case 'authority ignore slashes':\n if ('/' != c && '\\\\' != c) {\n state = 'authority';\n continue;\n } else {\ n err('Expected authority, got: ' + c);\n }\n break ;\n\n case 'authority':\n if ('@' == c) {\n if (seenA t) {\n err('@ already seen.');\n buffer += '%40';\n }\n seenAt = true;\n for (var i = 0; i < buffer.l ength; i++) {\n var cp = buffer[i];\n if ('\\t' == cp || '\\n' == cp || '\\r' == cp) {\n err('Invalid whitespace in aut hority.');\n continue;\n }\n // XXX che ck URL code points\n if (':' == cp && null === this._password) {\n this._password = '';\n continue;\n }\ n var tempC = percentEscape(cp);\n (null !== this._pas sword) ? this._password += tempC : this._username += tempC;\n }\n buffer = '';\n } else if (EOF == c || '/' == c || '\\\\' == c | | '?' == c || '#' == c) {\n cursor -= buffer.length;\n buf fer = '';\n state = 'host';\n continue;\n } else {\n buffer += c;\n }\n break;\n\n case 'file host':\n if (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' == c) {\n if (buffer.length == 2 && ALPHA.test(buffer[0]) && (buffer[1] == ':' || buffer[1] == '|')) {\n state = 'relative path';\n } else if (buffer.length == 0) {\n state = 'relative path star t';\n } else {\n this._host = IDNAToASCII.call(this, buf fer);\n buffer = '';\n state = 'relative path start';\ n }\n continue;\n } else if ('\\t' == c || '\\n' == c || '\\r' == c) {\n err('Invalid whitespace in file host.');\n } else {\n buffer += c;\n }\n break;\n\n case 'host':\n case 'hostname':\n if (':' == c && !seenBrack et) {\n // XXX host parsing\n this._host = IDNAToASCII.cal l(this, buffer);\n buffer = '';\n state = 'port';\n if ('hostname' == stateOverride) {\n break loop;\n }\n } else if (EOF == c || '/' == c || '\\\\' == c || '?' == c || '#' = = c) {\n this._host = IDNAToASCII.call(this, buffer);\n bu ffer = '';\n state = 'relative path start';\n if (stateOve rride) {\n break loop;\n }\n continue;\n } else if ('\\t' != c && '\\n' != c && '\\r' != c) {\n if ('[' = = c) {\n seenBracket = true;\n } else if (']' == c) {\n seenBracket = false;\n }\n buffer += c;\n } else {\n err('Invalid code point in host/hostname: ' + c);\n }\n break;\n\n case 'port':\n if (/[0-9]/.test (c)) {\n buffer += c;\n } else if (EOF == c || '/' == c || ' \\\\' == c || '?' == c || '#' == c || stateOverride) {\n if ('' != bu ffer) {\n var temp = parseInt(buffer, 10);\n if (temp != relative[this._scheme]) {\n this._port = temp + '';\n }\n buffer = '';\n }\n if (stateOverride ) {\n break loop;\n }\n state = 'relative pat h start';\n continue;\n } else if ('\\t' == c || '\\n' == c || '\\r' == c) {\n err('Invalid code point in port: ' + c);\n } else {\n invalid.call(this);\n }\n break;\n\n case 'relative path start':\n if ('\\\\' == c)\n err(\ "'\\\\' not allowed in path.\");\n state = 'relative path';\n if ('/' != c && '\\\\' != c) {\n continue;\n }\n br eak;\n\n case 'relative path':\n if (EOF == c || '/' == c || '\\ \\' == c || (!stateOverride && ('?' == c || '#' == c))) {\n if ('\\\\ ' == c) {\n err('\\\\ not allowed in relative path.');\n }\n var tmp;\n if (tmp = relativePathDotMapping[buffer.to LowerCase()]) {\n buffer = tmp;\n }\n if ('.. ' == buffer) {\n this._path.pop();\n if ('/' != c && ' \\\\' != c) {\n this._path.push('');\n }\n } else if ('.' == buffer && '/' != c && '\\\\' != c) {\n this._pa th.push('');\n } else if ('.' != buffer) {\n if ('file' == this._scheme && this._path.length == 0 && buffer.length == 2 && ALPHA.test(bu ffer[0]) && buffer[1] == '|') {\n buffer = buffer[0] + ':';\n }\n this._path.push(buffer);\n }\n buffer = '';\n if ('?' == c) {\n this._query = '?';\n state = 'query';\n } else if ('#' == c) {\n t his._fragment = '#';\n state = 'fragment';\n }\n } else if ('\\t' != c && '\\n' != c && '\\r' != c) {\n buffer += pe rcentEscape(c);\n }\n break;\n\n case 'query':\n if (!stateOverride && '#' == c) {\n this._fragment = '#';\n state = 'fragment';\n } else if (EOF != c && '\\t' != c && '\\n' ! = c && '\\r' != c) {\n this._query += percentEscapeQuery(c);\n }\n break;\n\n case 'fragment':\n if (EOF != c && '\ \t' != c && '\\n' != c && '\\r' != c) {\n this._fragment += c;\n }\n break;\n }\n\n cursor++;\n }\n }\n\n function c lear() {\n this._scheme = '';\n this._schemeData = '';\n this._username = '';\n this._password = null;\n this._host = '';\n this._port = '';\n this._path = [];\n this._query = '';\n this._fragment = '';\n this. _isInvalid = false;\n this._isRelative = false;\n }\n\n // Does not process domain names or IP addresses.\n // Does not handle encoding for the query para meter.\n function jURL(url, base /* , encoding */) {\n if (base !== undefine d && !(base instanceof jURL))\n base = new jURL(String(base));\n\n this. _url = url;\n clear.call(this);\n\n var input = url.replace(/^[ \\t\\r\\n\ \f]+|[ \\t\\r\\n\\f]+$/g, '');\n // encoding = encoding || 'utf-8'\n\n par se.call(this, input, null, base);\n }\n\n jURL.prototype = {\n get href() { \n if (this._isInvalid)\n return this._url;\n\n var authority = '';\n if ('' != this._username || null != this._password) {\n autho rity = this._username +\n (null != this._password ? ':' + this._passw ord : '') + '@';\n }\n\n return this.protocol +\n (this._isRe lative ? '//' + authority + this.host : '') +\n this.pathname + this._q uery + this._fragment;\n },\n set href(href) {\n clear.call(this);\n parse.call(this, href);\n },\n\n get protocol() {\n return this. _scheme + ':';\n },\n set protocol(protocol) {\n if (this._isInvalid) \n return;\n parse.call(this, protocol + ':', 'scheme start');\n },\n\n get host() {\n return this._isInvalid ? '' : this._port ?\n this._host + ':' + this._port : this._host;\n },\n set host(host) {\n if (this._isInvalid || !this._isRelative)\n return;\n parse.cal l(this, host, 'host');\n },\n\n get hostname() {\n return this._host; \n },\n set hostname(hostname) {\n if (this._isInvalid || !this._isRe lative)\n return;\n parse.call(this, hostname, 'hostname');\n },\ n\n get port() {\n return this._port;\n },\n set port(port) {\n if (this._isInvalid || !this._isRelative)\n return;\n parse.call( this, port, 'port');\n },\n\n get pathname() {\n return this._isInval id ? '' : this._isRelative ?\n '/' + this._path.join('/') : this._schem eData;\n },\n set pathname(pathname) {\n if (this._isInvalid || !this ._isRelative)\n return;\n this._path = [];\n parse.call(this, p athname, 'relative path start');\n },\n\n get search() {\n return thi s._isInvalid || !this._query || '?' == this._query ?\n '' : this._query ;\n },\n set search(search) {\n if (this._isInvalid || !this._isRelat ive)\n return;\n this._query = '?';\n if ('?' == search[0])\n search = search.slice(1);\n parse.call(this, search, 'query');\n } ,\n\n get hash() {\n return this._isInvalid || !this._fragment || '#' == this._fragment ?\n '' : this._fragment;\n },\n set hash(hash) {\ n if (this._isInvalid)\n return;\n this._fragment = '#';\n if ('#' == hash[0])\n hash = hash.slice(1);\n parse.call(this, hash , 'fragment');\n }\n };\n\n scope.URL = jURL;\n\n})(window);\n","/*\n * Cop yright 2013 The Polymer Authors. All rights reserved.\n * Use of this source cod e is governed by a BSD-style\n * license that can be found in the LICENSE file.\ n */\n\n(function(scope) {\n\n// Old versions of iOS do not have bind.\n\nif (!F unction.prototype.bind) {\n Function.prototype.bind = function(scope) {\n va r self = this;\n var args = Array.prototype.slice.call(arguments, 1);\n re turn function() {\n var args2 = args.slice();\n args2.push.apply(args2 , arguments);\n return self.apply(scope, args2);\n };\n };\n}\n\n// mix in\n\n// copy all properties from inProps (et al) to inObj\nfunction mixin(inObj /*, inProps, inMoreProps, ...*/) {\n var obj = inObj || {};\n for (var i = 1; i < arguments.length; i++) {\n var p = arguments[i];\n try {\n for (v ar n in p) {\n copyProperty(n, p, obj);\n }\n } catch(x) {\n } \n }\n return obj;\n}\n\n// copy property inName from inSource object to inTar get object\nfunction copyProperty(inName, inSource, inTarget) {\n var pd = getP ropertyDescriptor(inSource, inName);\n Object.defineProperty(inTarget, inName, pd);\n}\n\n// get property descriptor for inName on inObject, even if\n// inName exists on some link in inObject's prototype chain\nfunction getPropertyDescript or(inObject, inName) {\n if (inObject) {\n var pd = Object.getOwnPropertyDes criptor(inObject, inName);\n return pd || getPropertyDescriptor(Object.getPro totypeOf(inObject), inName);\n }\n}\n\n// export\n\nscope.mixin = mixin;\n\n})( window.Platform);","// Copyright 2011 Google Inc.\n//\n// Licensed under the Apa che License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by a pplicable law or agreed to in writing, software\n// distributed under the Licens e is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific langua ge governing permissions and\n// limitations under the License.\n\n(function(sco pe) {\n\n 'use strict';\n\n // polyfill DOMTokenList\n // * add/remove: allow these methods to take multiple classNames\n // * toggle: add a 2nd argument wh ich forces the given state rather\n // than toggling.\n\n var add = DOMTokenL ist.prototype.add;\n var remove = DOMTokenList.prototype.remove;\n DOMTokenLis t.prototype.add = function() {\n for (var i = 0; i < arguments.length; i++) { \n add.call(this, arguments[i]);\n }\n };\n DOMTokenList.prototype.rem ove = function() {\n for (var i = 0; i < arguments.length; i++) {\n remo ve.call(this, arguments[i]);\n }\n };\n DOMTokenList.prototype.toggle = fun ction(name, bool) {\n if (arguments.length == 1) {\n bool = !this.contai ns(name);\n }\n bool ? this.add(name) : this.remove(name);\n };\n DOMTok enList.prototype.switch = function(oldName, newName) {\n oldName && this.remo ve(oldName);\n newName && this.add(newName);\n };\n\n // add array() to Nod eList, NamedNodeMap, HTMLCollection\n\n var ArraySlice = function() {\n retu rn Array.prototype.slice.call(this);\n };\n\n var namedNodeMap = (window.Named NodeMap || window.MozNamedAttrMap || {});\n\n NodeList.prototype.array = ArrayS lice;\n namedNodeMap.prototype.array = ArraySlice;\n HTMLCollection.prototype. array = ArraySlice;\n\n // polyfill performance.now\n\n if (!window.performanc e) {\n var start = Date.now();\n // only at millisecond precision\n win dow.performance = {now: function(){ return Date.now() - start }};\n }\n\n // p olyfill for requestAnimationFrame\n\n if (!window.requestAnimationFrame) {\n window.requestAnimationFrame = (function() {\n var nativeRaf = window.webk itRequestAnimationFrame ||\n window.mozRequestAnimationFrame;\n\n re turn nativeRaf ?\n function(callback) {\n return nativeRaf(funct ion() {\n callback(performance.now());\n });\n } :\n function( callback ){\n return window.setTimeout(callback, 1000 / 60);\n };\n })();\n }\n\n if (!window.cancelAnimationFrame) {\n window.cancelAnimationFrame = (function() {\n return window.webkitCancelA nimationFrame ||\n window.mozCancelAnimationFrame ||\n function(id ) {\n clearTimeout(id);\n };\n })();\n }\n\n // TODO(sorvel l): workaround for bug:\n // https://code.google.com/p/chromium/issues/detail?i d=229142\n // remove when this bug is addressed\n // give main document templa tes a base that allows them to fetch eagerly\n // resolved paths relative to th e main document\n var template = document.createElement('template');\n var bas e = document.createElement('base');\n base.href = document.baseURI;\n template .content.ownerDocument.appendChild(base);\n \n\n // utility\n\n function crea teDOM(inTagOrNode, inHTML, inAttrs) {\n var dom = typeof inTagOrNode == 'stri ng' ?\n document.createElement(inTagOrNode) : inTagOrNode.cloneNode(true) ;\n dom.innerHTML = inHTML;\n if (inAttrs) {\n for (var n in inAttrs) {\n dom.setAttribute(n, inAttrs[n]);\n }\n }\n return dom;\n }\n // Make a stub for Polymer() for polyfill purposes; under the HTMLImports\ n // polyfill, scripts in the main document run before imports. That means\n / / if (1) polymer is imported and (2) Polymer() is called in the main document\n // in a script after the import, 2 occurs before 1. We correct this here\n // by specfiically patching Polymer(); this is not necessary under native\n // HTM LImports.\n var elementDeclarations = [];\n\n var polymerStub = function(name, dictionary) {\n elementDeclarations.push(arguments);\n }\n window.Polymer = polymerStub;\n\n // deliver queued delcarations\n scope.deliverDeclarations = function() {\n scope.deliverDeclarations = null;\n return elementDeclara tions;\n }\n\n // Once DOMContent has loaded, any main document scripts that d epend on\n // Polymer() should have run. Calling Polymer() now is an error unti l\n // polymer is imported.\n window.addEventListener('DOMContentLoaded', func tion() {\n if (window.Polymer === polymerStub) {\n window.Polymer = func tion() {\n console.error('You tried to use polymer without loading it fir st. To ' +\n 'load polymer, <link rel=\"import\" href=\"' + \n 'components/polymer/polymer.html\">');\n };\n }\n });\n\n // exports\ n scope.createDOM = createDOM;\n\n})(window.Platform);\n","/*\n * Copyright 201 3 The Polymer Authors. All rights reserved.\n * Use of this source code is gover ned by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n// poor man's adapter for template.content on various platform scenarios\nwindow.t emplateContent = window.templateContent || function(inTemplate) {\n return inTe mplate.content;\n};","(function(scope) {\n \n scope = scope || (window.Inspect or = {});\n \n var inspector;\n\n window.sinspect = function(inNode, inProxy) {\n if (!inspector) {\n inspector = window.open('', 'ShadowDOM Inspecto r', null, true);\n inspector.document.write(inspectorHTML);\n //inspec tor.document.close();\n inspector.api = {\n shadowize: shadowize\n };\n }\n inspect(inNode || wrap(document.body), inProxy);\n };\n\n v ar inspectorHTML = [\n '<!DOCTYPE html>',\n '<html>',\n ' <head>',\n ' <title>ShadowDOM Inspector</title>',\n ' <style>',\n ' body {',\n ' }',\n ' pre {',\n ' font: 9pt \"Courier New\" , monospace;',\n ' line-height: 1.5em;',\n ' }',\n ' t ag {',\n ' color: purple;',\n ' }',\n ' ul {',\n ' margin: 0;',\n ' padding: 0;',\n ' list-style: non e;',\n ' }',\n ' li {',\n ' display: inline-block;',\ n ' background-color: #f1f1f1;',\n ' padding: 4px 6px;',\n ' border-radius: 4px;',\n ' margin-right: 4px;',\n ' }',\n ' </style>',\n ' </head>',\n ' <body>',\n ' <ul id =\"crumbs\">',\n ' </ul>',\n ' <div id=\"tree\"></div>',\n ' </b ody>',\n '</html>'\n ].join('\\n');\n \n var crumbs = [];\n\n var display Crumbs = function() {\n // alias our document\n var d = inspector.document ;\n // get crumbbar\n var cb = d.querySelector('#crumbs');\n // clear c rumbs\n cb.textContent = '';\n // build new crumbs\n for (var i=0, c; c =crumbs[i]; i++) {\n var a = d.createElement('a');\n a.href = '#';\n a.textContent = c.localName;\n a.idx = i;\n a.onclick = function(e vent) {\n var c;\n while (crumbs.length > this.idx) {\n c = crumbs.pop();\n }\n inspect(c.shadow || c, c);\n event.p reventDefault();\n };\n cb.appendChild(d.createElement('li')).appendCh ild(a);\n }\n };\n\n var inspect = function(inNode, inProxy) {\n // alia s our document\n var d = inspector.document;\n // reset list of drillable nodes\n drillable = [];\n // memoize our crumb proxy\n var proxy = inPr oxy || inNode;\n crumbs.push(proxy);\n // update crumbs\n displayCrumbs ();\n // reflect local tree\n d.body.querySelector('#tree').innerHTML =\n '<pre>' + output(inNode, inNode.childNodes) + '</pre>';\n };\n\n var fo rEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);\n\n var bla cklisted = {STYLE:1, SCRIPT:1, \"#comment\": 1, TEMPLATE: 1};\n var blacklist = function(inNode) {\n return blacklisted[inNode.nodeName];\n };\n\n var out put = function(inNode, inChildNodes, inIndent) {\n if (blacklist(inNode)) {\n return '';\n }\n var indent = inIndent || '';\n if (inNode.localN ame || inNode.nodeType == 11) {\n var name = inNode.localName || 'shadow-ro ot';\n //inChildNodes = ShadowDOM.localNodes(inNode);\n var info = ind ent + describe(inNode);\n // if only textNodes\n // TODO(sjmiles): mak e correct for ShadowDOM\n /*if (!inNode.children.length && inNode.localName !== 'content' && inNode.localName !== 'shadow') {\n info += catTextConte nt(inChildNodes);\n } else*/ {\n // TODO(sjmiles): native <shadow> h as no reference to its projection\n if (name == 'content' /*|| name == 's hadow'*/) {\n inChildNodes = inNode.getDistributedNodes();\n }\n info += '<br/>';\n var ind = indent + '&nbsp;&nbsp;';\n fo rEach(inChildNodes, function(n) {\n info += output(n, n.childNodes, ind );\n });\n info += indent;\n }\n if (!({br:1}[name])) {\ n info += '<tag>&lt;/' + name + '&gt;</tag>';\n info += '<br/>';\n }\n } else {\n var text = inNode.textContent.trim();\n info = text ? indent + '\"' + text + '\"' + '<br/>' : '';\n }\n return info;\n };\n\n var catTextContent = function(inChildNodes) {\n var info = '';\n f orEach(inChildNodes, function(n) {\n info += n.textContent.trim();\n }); \n return info;\n };\n\n var drillable = [];\n\n var describe = function(i nNode) {\n var tag = '<tag>' + '&lt;';\n var name = inNode.localName || 's hadow-root';\n if (inNode.webkitShadowRoot || inNode.shadowRoot) {\n tag += ' <button idx=\"' + drillable.length +\n '\" onclick=\"api.shadowize. call(this)\">' + name + '</button>';\n drillable.push(inNode);\n } else {\n tag += name || 'shadow-root';\n }\n if (inNode.attributes) {\n forEach(inNode.attributes, function(a) {\n tag += ' ' + a.name + (a.va lue ? '=\"' + a.value + '\"' : '');\n });\n }\n tag += '&gt;'+ '</tag >';\n return tag;\n };\n\n // remote api\n\n shadowize = function() {\n var idx = Number(this.attributes.idx.value);\n //alert(idx);\n var node = drillable[idx];\n if (node) {\n inspect(node.webkitShadowRoot || node.s hadowRoot, node)\n } else {\n console.log(\"bad shadowize node\");\n console.dir(this);\n }\n };\n \n // export\n \n scope.output = output; \n \n})(window.Inspector);\n\n\n","/*\n * Copyright 2013 The Polymer Authors. A ll rights reserved.\n * Use of this source code is governed by a BSD-style\n * l icense that can be found in the LICENSE file.\n */\n(function(scope) {\n\n // T ODO(sorvell): It's desireable to provide a default stylesheet \n // that's conv enient for styling unresolved elements, but\n // it's cumbersome to have to inc lude this manually in every page.\n // It would make sense to put inside some H TMLImport but \n // the HTMLImports polyfill does not allow loading of styleshe ets \n // that block rendering. Therefore this injection is tolerated here.\n\n var style = document.createElement('style');\n style.textContent = ''\n + 'body {'\n + 'transition: opacity ease-in 0.2s;' \n + ' } \\n'\n + 'body[unresolved] {'\n + 'opacity: 0; display: block; overflow: hidden; ' \n + ' } \\n'\n ;\n var head = document.querySelector('head');\n h ead.insertBefore(style, head.firstChild);\n\n})(Platform);\n","(function(scope) {\n\n function withDependencies(task, depends) {\n depends = depends || [];\ n if (!depends.map) {\n depends = [depends];\n }\n return task.app ly(this, depends.map(marshal));\n }\n\n function module(name, dependsOrFactory , moduleFactory) {\n var module;\n switch (arguments.length) {\n case 0:\n return;\n case 1:\n module = null;\n break;\n case 2:\n module = dependsOrFactory.apply(this);\n break;\n default:\n module = withDependencies(moduleFactory, dependsOrFactory);\ n break;\n }\n modules[name] = module;\n };\n\n function marshal( name) {\n return modules[name];\n }\n\n var modules = {};\n\n function usi ng(depends, task) {\n HTMLImports.whenImportsReady(function() {\n withDe pendencies(task, depends);\n });\n };\n\n // exports\n\n scope.marshal = m arshal;\n scope.module = module;\n scope.using = using;\n\n})(window);","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sourc e code is governed by a BSD-style\n * license that can be found in the LICENSE f ile.\n */\n(function(scope) {\n\nvar iterations = 0;\nvar callbacks = [];\nvar t widdle = document.createTextNode('');\n\nfunction endOfMicrotask(callback) {\n twiddle.textContent = iterations++;\n callbacks.push(callback);\n}\n\nfunction atEndOfMicrotask() {\n while (callbacks.length) {\n callbacks.shift()();\n }\n}\n\nnew (window.MutationObserver || JsMutationObserver)(atEndOfMicrotask)\n .observe(twiddle, {characterData: true})\n ;\n\n// exports\n\nscope.endOfMicro task = endOfMicrotask;\n\n})(Platform);\n\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-s tyle\n * license that can be found in the LICENSE file.\n */\n\n(function(scope) {\n\nvar urlResolver = {\n resolveDom: function(root, url) {\n url = url || root.ownerDocument.baseURI;\n this.resolveAttributes(root, url);\n this.r esolveStyles(root, url);\n // handle template.content\n var templates = ro ot.querySelectorAll('template');\n if (templates) {\n for (var i = 0, l = templates.length, t; (i < l) && (t = templates[i]); i++) {\n if (t.cont ent) {\n this.resolveDom(t.content, url);\n }\n }\n }\n },\n resolveStyles: function(root, url) {\n var styles = root.querySelector All('style');\n if (styles) {\n for (var i = 0, l = styles.length, s; (i < l) && (s = styles[i]); i++) {\n this.resolveStyle(s, url);\n }\n }\n },\n resolveStyle: function(style, url) {\n url = url || style.owner Document.baseURI;\n style.textContent = this.resolveCssText(style.textContent , url);\n },\n resolveCssText: function(cssText, baseUrl) {\n cssText = rep laceUrlsInCssText(cssText, baseUrl, CSS_URL_REGEXP);\n return replaceUrlsInCs sText(cssText, baseUrl, CSS_IMPORT_REGEXP);\n },\n resolveAttributes: function (root, url) {\n if (root.hasAttributes && root.hasAttributes()) {\n this .resolveElementAttributes(root, url);\n }\n // search for attributes that host urls\n var nodes = root && root.querySelectorAll(URL_ATTRS_SELECTOR);\n if (nodes) {\n for (var i = 0, l = nodes.length, n; (i < l) && (n = node s[i]); i++) {\n this.resolveElementAttributes(n, url);\n }\n }\n },\n resolveElementAttributes: function(node, url) {\n url = url || node.ow nerDocument.baseURI;\n URL_ATTRS.forEach(function(v) {\n var attr = node .attributes[v];\n if (attr && attr.value &&\n (attr.value.search(UR L_TEMPLATE_SEARCH) < 0)) {\n var urlPath = resolveRelativeUrl(url, attr.v alue);\n attr.value = urlPath;\n }\n });\n }\n};\n\nvar CSS_URL_ REGEXP = /(url\\()([^)]*)(\\))/g;\nvar CSS_IMPORT_REGEXP = /(@import[\\s]+(?!url \\())([^;]*)(;)/g;\nvar URL_ATTRS = ['href', 'src', 'action'];\nvar URL_ATTRS_SE LECTOR = '[' + URL_ATTRS.join('],[') + ']';\nvar URL_TEMPLATE_SEARCH = '{{.*}}'; \n\nfunction replaceUrlsInCssText(cssText, baseUrl, regexp) {\n return cssText. replace(regexp, function(m, pre, url, post) {\n var urlPath = url.replace(/[\ "']/g, '');\n urlPath = resolveRelativeUrl(baseUrl, urlPath);\n return pre + '\\'' + urlPath + '\\'' + post;\n });\n}\n\nfunction resolveRelativeUrl(base Url, url) {\n var u = new URL(url, baseUrl);\n return makeDocumentRelPath(u.hr ef);\n}\n\nfunction makeDocumentRelPath(url) {\n var root = document.baseURI;\n var u = new URL(url, root);\n if (u.host === root.host && u.port === root.por t &&\n u.protocol === root.protocol) {\n return makeRelPath(root.pathnam e, u.pathname);\n } else {\n return url;\n }\n}\n\n// make a relative path from source to target\nfunction makeRelPath(source, target) {\n var s = source. split('/');\n var t = target.split('/');\n while (s.length && s[0] === t[0]){\ n s.shift();\n t.shift();\n }\n for (var i = 0, l = s.length - 1; i < l; i++) {\n t.unshift('..');\n }\n return t.join('/');\n}\n\n// exports\nscop e.urlResolver = urlResolver;\n\n})(Platform);\n","/*\n * Copyright 2012 The Poly mer Authors. All rights reserved.\n * Use of this source code is goverened by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n(function(g lobal) {\n\n var registrationsTable = new WeakMap();\n\n // We use setImmediat e or postMessage for our future callback.\n var setImmediate = window.msSetImme diate;\n\n // Use post message to emulate setImmediate.\n if (!setImmediate) { \n var setImmediateQueue = [];\n var sentinel = String(Math.random());\n window.addEventListener('message', function(e) {\n if (e.data === sentine l) {\n var queue = setImmediateQueue;\n setImmediateQueue = [];\n queue.forEach(function(func) {\n func();\n });\n }\n });\n setImmediate = function(func) {\n setImmediateQueue.push(func) ;\n window.postMessage(sentinel, '*');\n };\n }\n\n // This is used to ensure that we never schedule 2 callas to setImmediate\n var isScheduled = fal se;\n\n // Keep track of observers that needs to be notified next time.\n var scheduledObservers = [];\n\n /**\n * Schedules |dispatchCallback| to be calle d in the future.\n * @param {MutationObserver} observer\n */\n function sch eduleCallback(observer) {\n scheduledObservers.push(observer);\n if (!isSc heduled) {\n isScheduled = true;\n setImmediate(dispatchCallbacks);\n }\n }\n\n function wrapIfNeeded(node) {\n return window.ShadowDOMPolyfil l &&\n window.ShadowDOMPolyfill.wrapIfNeeded(node) ||\n node;\n } \n\n function dispatchCallbacks() {\n // http://dom.spec.whatwg.org/#mutatio n-observers\n\n isScheduled = false; // Used to allow a new setImmediate call above.\n\n var observers = scheduledObservers;\n scheduledObservers = []; \n // Sort observers based on their creation UID (incremental).\n observer s.sort(function(o1, o2) {\n return o1.uid_ - o2.uid_;\n });\n\n var a nyNonEmpty = false;\n observers.forEach(function(observer) {\n\n // 2.1, 2.2\n var queue = observer.takeRecords();\n // 2.3. Remove all transi ent registered observers whose observer is mo.\n removeTransientObserversFo r(observer);\n\n // 2.4\n if (queue.length) {\n observer.callba ck_(queue, observer);\n anyNonEmpty = true;\n }\n });\n\n // 3 .\n if (anyNonEmpty)\n dispatchCallbacks();\n }\n\n function removeTra nsientObserversFor(observer) {\n observer.nodes_.forEach(function(node) {\n var registrations = registrationsTable.get(node);\n if (!registrations) \n return;\n registrations.forEach(function(registration) {\n if (registration.observer === observer)\n registration.removeTransient Observers();\n });\n });\n }\n\n /**\n * This function is used for t he \"For each registered observer observer (with\n * observer's options as opt ions) in target's list of registered observers,\n * run these substeps:\" and the \"For each ancestor ancestor of target, and for\n * each registered observ er observer (with options options) in ancestor's list\n * of registered observ ers, run these substeps:\" part of the algorithms. The\n * |options.subtree| i s checked to ensure that the callback is called\n * correctly.\n *\n * @pa ram {Node} target\n * @param {function(MutationObserverInit):MutationRecord} c allback\n */\n function forEachAncestorAndObserverEnqueueRecord(target, callb ack) {\n for (var node = target; node; node = node.parentNode) {\n var r egistrations = registrationsTable.get(node);\n\n if (registrations) {\n for (var j = 0; j < registrations.length; j++) {\n var registration = registrations[j];\n var options = registration.options;\n\n // Only target ignores subtree.\n if (node !== target && !options.subt ree)\n continue;\n\n var record = callback(options);\n if (record)\n registration.enqueue(record);\n }\n }\n }\n }\n\n var uidCounter = 0;\n\n /**\n * The class that maps to the DO M MutationObserver interface.\n * @param {Function} callback.\n * @construct or\n */\n function JsMutationObserver(callback) {\n this.callback_ = callb ack;\n this.nodes_ = [];\n this.records_ = [];\n this.uid_ = ++uidCount er;\n }\n\n JsMutationObserver.prototype = {\n observe: function(target, op tions) {\n target = wrapIfNeeded(target);\n\n // 1.1\n if (!optio ns.childList && !options.attributes && !options.characterData ||\n\n // 1.2\n options.attributeOldValue && !options.attributes ||\n\n // 1.3\n options.attributeFilter && options.attributeFilter.length &&\ n !options.attributes ||\n\n // 1.4\n options.cha racterDataOldValue && !options.characterData) {\n\n throw new SyntaxError ();\n }\n\n var registrations = registrationsTable.get(target);\n if (!registrations)\n registrationsTable.set(target, registrations = []) ;\n\n // 2\n // If target's list of registered observers already inclu des a registered\n // observer associated with the context object, replace that registered\n // observer's options with options.\n var registrati on;\n for (var i = 0; i < registrations.length; i++) {\n if (registr ations[i].observer === this) {\n registration = registrations[i];\n registration.removeListeners();\n registration.options = options; \n break;\n }\n }\n\n // 3.\n // Otherwise, add a new registered observer to target's list of registered\n // observers with the context object as the observer and options as the\n // options, and ad d target to context object's list of nodes on which it\n // is registered.\ n if (!registration) {\n registration = new Registration(this, targe t, options);\n registrations.push(registration);\n this.nodes_.pus h(target);\n }\n\n registration.addListeners();\n },\n\n disconn ect: function() {\n this.nodes_.forEach(function(node) {\n var regis trations = registrationsTable.get(node);\n for (var i = 0; i < registrati ons.length; i++) {\n var registration = registrations[i];\n if (registration.observer === this) {\n registration.removeListeners(); \n registrations.splice(i, 1);\n // Each node can only hav e one registered observer associated with\n // this observer.\n break;\n }\n }\n }, this);\n this.records_ = []; \n },\n\n takeRecords: function() {\n var copyOfRecords = this.record s_;\n this.records_ = [];\n return copyOfRecords;\n }\n };\n\n /* *\n * @param {string} type\n * @param {Node} target\n * @constructor\n * /\n function MutationRecord(type, target) {\n this.type = type;\n this.ta rget = target;\n this.addedNodes = [];\n this.removedNodes = [];\n this .previousSibling = null;\n this.nextSibling = null;\n this.attributeName = null;\n this.attributeNamespace = null;\n this.oldValue = null;\n }\n\n function copyMutationRecord(original) {\n var record = new MutationRecord(or iginal.type, original.target);\n record.addedNodes = original.addedNodes.slic e();\n record.removedNodes = original.removedNodes.slice();\n record.previ ousSibling = original.previousSibling;\n record.nextSibling = original.nextSi bling;\n record.attributeName = original.attributeName;\n record.attribute Namespace = original.attributeNamespace;\n record.oldValue = original.oldValu e;\n return record;\n };\n\n // We keep track of the two (possibly one) rec ords used in a single mutation.\n var currentRecord, recordWithOldValue;\n\n / **\n * Creates a record without |oldValue| and caches it as |currentRecord| fo r\n * later use.\n * @param {string} oldValue\n * @return {MutationRecord} \n */\n function getRecord(type, target) {\n return currentRecord = new Mu tationRecord(type, target);\n }\n\n /**\n * Gets or creates a record with |o ldValue| based in the |currentRecord|\n * @param {string} oldValue\n * @retu rn {MutationRecord}\n */\n function getRecordWithOldValue(oldValue) {\n if (recordWithOldValue)\n return recordWithOldValue;\n recordWithOldValue = copyMutationRecord(currentRecord);\n recordWithOldValue.oldValue = oldValue ;\n return recordWithOldValue;\n }\n\n function clearRecords() {\n curre ntRecord = recordWithOldValue = undefined;\n }\n\n /**\n * @param {MutationR ecord} record\n * @return {boolean} Whether the record represents a record fro m the current\n * mutation event.\n */\n function recordRepresentsCurrentMu tation(record) {\n return record === recordWithOldValue || record === current Record;\n }\n\n /**\n * Selects which record, if any, to replace the last re cord in the queue.\n * This returns |null| if no record should be replaced.\n *\n * @param {MutationRecord} lastRecord\n * @param {MutationRecord} newRe cord\n * @param {MutationRecord}\n */\n function selectRecord(lastRecord, n ewRecord) {\n if (lastRecord === newRecord)\n return lastRecord;\n\n // Check if the the record we are adding represents the same record. If\n // so, we keep the one with the oldValue in it.\n if (recordWithOldValue && reco rdRepresentsCurrentMutation(lastRecord))\n return recordWithOldValue;\n\n return null;\n }\n\n /**\n * Class used to represent a registered observer .\n * @param {MutationObserver} observer\n * @param {Node} target\n * @par am {MutationObserverInit} options\n * @constructor\n */\n function Registra tion(observer, target, options) {\n this.observer = observer;\n this.targe t = target;\n this.options = options;\n this.transientObservedNodes = [];\ n }\n\n Registration.prototype = {\n enqueue: function(record) {\n var records = this.observer.records_;\n var length = records.length;\n\n // There are cases where we replace the last record with the new record.\n // For example if the record represents the same mutation we need to use\n // the one with the oldValue. If we get same record (this can happen as we\n // walk up the tree) we ignore the new record.\n if (records.length > 0) {\n var lastRecord = records[length - 1];\n var recordToReplaceLas t = selectRecord(lastRecord, record);\n if (recordToReplaceLast) {\n records[length - 1] = recordToReplaceLast;\n return;\n }\n } else {\n scheduleCallback(this.observer);\n }\n\n record s[length] = record;\n },\n\n addListeners: function() {\n this.addLis teners_(this.target);\n },\n\n addListeners_: function(node) {\n var options = this.options;\n if (options.attributes)\n node.addEventLis tener('DOMAttrModified', this, true);\n\n if (options.characterData)\n node.addEventListener('DOMCharacterDataModified', this, true);\n\n if (o ptions.childList)\n node.addEventListener('DOMNodeInserted', this, true); \n\n if (options.childList || options.subtree)\n node.addEventListen er('DOMNodeRemoved', this, true);\n },\n\n removeListeners: function() {\n this.removeListeners_(this.target);\n },\n\n removeListeners_: funct ion(node) {\n var options = this.options;\n if (options.attributes)\n node.removeEventListener('DOMAttrModified', this, true);\n\n if (opt ions.characterData)\n node.removeEventListener('DOMCharacterDataModified' , this, true);\n\n if (options.childList)\n node.removeEventListener ('DOMNodeInserted', this, true);\n\n if (options.childList || options.subtr ee)\n node.removeEventListener('DOMNodeRemoved', this, true);\n },\n\n /**\n * Adds a transient observer on node. The transient observer gets r emoved\n * next time we deliver the change records.\n * @param {Node} no de\n */\n addTransientObserver: function(node) {\n // Don't add tran sient observers on the target itself. We already have all\n // the required listeners set up on the target.\n if (node === this.target)\n retur n;\n\n this.addListeners_(node);\n this.transientObservedNodes.push(no de);\n var registrations = registrationsTable.get(node);\n if (!regist rations)\n registrationsTable.set(node, registrations = []);\n\n // We know that registrations does not contain this because we already\n // ch ecked if node === this.target.\n registrations.push(this);\n },\n\n r emoveTransientObservers: function() {\n var transientObservedNodes = this.t ransientObservedNodes;\n this.transientObservedNodes = [];\n\n transie ntObservedNodes.forEach(function(node) {\n // Transient observers are nev er added to the target.\n this.removeListeners_(node);\n\n var reg istrations = registrationsTable.get(node);\n for (var i = 0; i < registra tions.length; i++) {\n if (registrations[i] === this) {\n re gistrations.splice(i, 1);\n // Each node can only have one registered observer associated with\n // this observer.\n break;\n }\n }\n }, this);\n },\n\n handleEvent: function(e) {\ n // Stop propagation since we are managing the propagation manually.\n // This means that other mutation events on the page will not work\n // c orrectly but that is by design.\n e.stopImmediatePropagation();\n\n sw itch (e.type) {\n case 'DOMAttrModified':\n // http://dom.spec.w hatwg.org/#concept-mo-queue-attributes\n\n var name = e.attrName;\n var namespace = e.relatedNode.namespaceURI;\n var target = e.targ et;\n\n // 1.\n var record = new getRecord('attributes', targe t);\n record.attributeName = name;\n record.attributeNamespace = namespace;\n\n // 2.\n var oldValue =\n e.attr Change === MutationEvent.ADDITION ? null : e.prevValue;\n\n forEachAnce storAndObserverEnqueueRecord(target, function(options) {\n // 3.1, 4. 2\n if (!options.attributes)\n return;\n\n // 3.2, 4.3\n if (options.attributeFilter && options.attributeFilter.le ngth &&\n options.attributeFilter.indexOf(name) === -1 &&\n options.attributeFilter.indexOf(namespace) === -1) {\n re turn;\n }\n // 3.3, 4.4\n if (options.attribute OldValue)\n return getRecordWithOldValue(oldValue);\n\n // 3.4, 4.5\n return record;\n });\n\n break;\n\n case 'DOMCharacterDataModified':\n // http://dom.spec.whatwg.org/ #concept-mo-queue-characterdata\n var target = e.target;\n\n / / 1.\n var record = getRecord('characterData', target);\n\n // 2.\n var oldValue = e.prevValue;\n\n\n forEachAncestorAndObse rverEnqueueRecord(target, function(options) {\n // 3.1, 4.2\n if (!options.characterData)\n return;\n\n // 3.2, 4. 3\n if (options.characterDataOldValue)\n return getRecor dWithOldValue(oldValue);\n\n // 3.3, 4.4\n return record;\ n });\n\n break;\n\n case 'DOMNodeRemoved':\n this.addTransientObserver(e.target);\n // Fall through.\n case ' DOMNodeInserted':\n // http://dom.spec.whatwg.org/#concept-mo-queue-chi ldlist\n var target = e.relatedNode;\n var changedNode = e.tar get;\n var addedNodes, removedNodes;\n if (e.type === 'DOMNode Inserted') {\n addedNodes = [changedNode];\n removedNodes = [];\n } else {\n\n addedNodes = [];\n removedNo des = [changedNode];\n }\n var previousSibling = changedNode.p reviousSibling;\n var nextSibling = changedNode.nextSibling;\n\n // 1.\n var record = getRecord('childList', target);\n reco rd.addedNodes = addedNodes;\n record.removedNodes = removedNodes;\n record.previousSibling = previousSibling;\n record.nextSibling = nextSibling;\n\n forEachAncestorAndObserverEnqueueRecord(target, functi on(options) {\n // 2.1, 3.2\n if (!options.childList)\n return;\n\n // 2.2, 3.3\n return record;\n });\n\n }\n\n clearRecords();\n }\n };\n\n global.JsMutation Observer = JsMutationObserver;\n\n if (!global.MutationObserver)\n global.Mu tationObserver = JsMutationObserver;\n\n\n})(this);\n","/*\n * Copyright 2013 Th e Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\nwindow.H TMLImports = window.HTMLImports || {flags:{}};","/*\n * Copyright 2013 The Polym er Authors. All rights reserved.\n * Use of this source code is governed by a BS D-style\n * license that can be found in the LICENSE file.\n */\n\n(function(sco pe) {\n\n // imports\n var path = scope.path;\n var xhr = scope.xhr;\n var f lags = scope.flags;\n\n // TODO(sorvell): this loader supports a dynamic list o f urls\n // and an oncomplete callback that is called when the loader is done.\ n // The polyfill currently does *not* need this dynamism or the onComplete\n // concept. Because of this, the loader could be simplified quite a bit.\n var Loader = function(onLoad, onComplete) {\n this.cache = {};\n this.onload = onLoad;\n this.oncomplete = onComplete;\n this.inflight = 0;\n this.pe nding = {};\n };\n\n Loader.prototype = {\n addNodes: function(nodes) {\n // number of transactions to complete\n this.inflight += nodes.length;\ n // commence transactions\n for (var i=0, l=nodes.length, n; (i<l) && (n=nodes[i]); i++) {\n this.require(n);\n }\n // anything to d o?\n this.checkDone();\n },\n addNode: function(node) {\n // num ber of transactions to complete\n this.inflight++;\n // commence trans actions\n this.require(node);\n // anything to do?\n this.checkDo ne();\n },\n require: function(elt) {\n var url = elt.src || elt.href ;\n // ensure we have a standard url that can be used\n // reliably fo r deduping.\n // TODO(sjmiles): ad-hoc\n elt.__nodeUrl = url;\n / / deduplication\n if (!this.dedupe(url, elt)) {\n // fetch this reso urce\n this.fetch(url, elt);\n }\n },\n dedupe: function(url, elt) {\n if (this.pending[url]) {\n // add to list of nodes waiting for inUrl\n this.pending[url].push(elt);\n // don't need fetch\n return true;\n }\n var resource;\n if (this.cache[url]) {\n this.onload(url, elt, this.cache[url]);\n // finished this transa ction\n this.tail();\n // don't need fetch\n return true;\n }\n // first node waiting for inUrl\n this.pending[url] = [elt]; \n // need fetch (not a dupe)\n return false;\n },\n fetch: func tion(url, elt) {\n flags.load && console.log('fetch', url, elt);\n var receiveXhr = function(err, resource) {\n this.receive(url, elt, err, res ource);\n }.bind(this);\n xhr.load(url, receiveXhr);\n // TODO(so rvell): blocked on\n // https://code.google.com/p/chromium/issues/detail?id =257221\n // xhr'ing for a document makes scripts in imports runnable; othe rwise\n // they are not; however, it requires that we have doctype=html in\ n // the import which is unacceptable. This is only needed on Chrome\n // to avoid the bug above.\n /*\n if (isDocumentLink(elt)) {\n xhr.loadDocument(url, receiveXhr);\n } else {\n xhr.load(url, recei veXhr);\n }\n */\n },\n receive: function(url, elt, err, resourc e) {\n this.cache[url] = resource;\n var $p = this.pending[url];\n for (var i=0, l=$p.length, p; (i<l) && (p=$p[i]); i++) {\n //if (!err) {\n this.onload(url, p, resource);\n //}\n this.tail();\n }\n this.pending[url] = null;\n },\n tail: function() {\n --this.inflight;\n this.checkDone();\n },\n checkDone: function() {\n if (!this.inflight) {\n this.oncomplete();\n }\n }\n };\n\ n xhr = xhr || {\n async: true,\n ok: function(request) {\n return ( request.status >= 200 && request.status < 300)\n || (request.status === 304)\n || (request.status === 0);\n },\n load: function(url, nex t, nextContext) {\n var request = new XMLHttpRequest();\n if (scope.fl ags.debug || scope.flags.bust) {\n url += '?' + Math.random();\n }\n request.open('GET', url, xhr.async);\n request.addEventListener('read ystatechange', function(e) {\n if (request.readyState === 4) {\n next.call(nextContext, !xhr.ok(request) && request,\n request.resp onse || request.responseText, url);\n }\n });\n request.send(); \n return request;\n },\n loadDocument: function(url, next, nextConte xt) {\n this.load(url, next, nextContext).responseType = 'document';\n } \n };\n\n // exports\n scope.xhr = xhr;\n scope.Loader = Loader;\n\n})(windo w.HTMLImports);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserv ed.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n(function(scope) {\n\nvar IMPORT_LINK_TYPE = 'import';\nvar flags = scope.flags;\nvar isIe = /Trident/.test(navigator.user Agent);\n// TODO(sorvell): SD polyfill intrusion\nvar mainDoc = window.ShadowDOM Polyfill ? \n window.ShadowDOMPolyfill.wrapIfNeeded(document) : document;\n\n // importParser\n// highlander object to manage parsing of imports\n// parses im port related elements\n// and ensures proper parse order\n// parse order is enfo rced by crawling the tree and monitoring which elements\n// have been parsed; as ync parsing is also supported.\n\n// highlander object for parsing a document tr ee\nvar importParser = {\n // parse selectors for main document elements\n doc umentSelectors: 'link[rel=' + IMPORT_LINK_TYPE + ']',\n // parse selectors for import document elements\n importsSelectors: [\n 'link[rel=' + IMPORT_LINK_T YPE + ']',\n 'link[rel=stylesheet]',\n 'style',\n 'script:not([type])', \n 'script[type=\"text/javascript\"]'\n ].join(','),\n map: {\n link: 'p arseLink',\n script: 'parseScript',\n style: 'parseStyle'\n },\n // try to parse the next import in the tree\n parseNext: function() {\n var next = this.nextToParse();\n if (next) {\n this.parse(next);\n }\n },\n pa rse: function(elt) {\n if (this.isParsed(elt)) {\n flags.parse && consol e.log('[%s] is already parsed', elt.localName);\n return;\n }\n var f n = this[this.map[elt.localName]];\n if (fn) {\n this.markParsing(elt);\ n fn.call(this, elt);\n }\n },\n // only 1 element may be parsed at a time; parsing is async so, each\n // parsing implementation must inform the sys tem that parsing is complete\n // via markParsingComplete.\n markParsing: func tion(elt) {\n flags.parse && console.log('parsing', elt);\n this.parsingEl ement = elt;\n },\n markParsingComplete: function(elt) {\n elt.__importPars ed = true;\n if (elt.__importElement) {\n elt.__importElement.__importPa rsed = true;\n }\n this.parsingElement = null;\n flags.parse && console .log('completed', elt);\n this.parseNext();\n },\n parseImport: function(el t) {\n elt.import.__importParsed = true;\n // TODO(sorvell): consider if t here's a better way to do this;\n // expose an imports parsing hook; this is needed, for example, by the\n // CustomElements polyfill.\n if (HTMLImport s.__importsParsingHook) {\n HTMLImports.__importsParsingHook(elt);\n }\n // fire load event\n if (elt.__resource) {\n elt.dispatchEvent(new C ustomEvent('load', {bubbles: false})); \n } else {\n elt.dispatchEven t(new CustomEvent('error', {bubbles: false}));\n }\n // TODO(sorvell): wor karound for Safari addEventListener not working\n // for elements not in the main document.\n if (elt.__pending) {\n var fn;\n while (elt.__pend ing.length) {\n fn = elt.__pending.shift();\n if (fn) {\n fn({target: elt});\n }\n }\n }\n this.markParsingComplete(elt );\n },\n parseLink: function(linkElt) {\n if (nodeIsImport(linkElt)) {\n this.parseImport(linkElt);\n } else {\n // make href absolute\n linkElt.href = linkElt.href;\n this.parseGeneric(linkElt);\n }\n },\n parseStyle: function(elt) {\n // TODO(sorvell): style element load event can just not fire so clone styles\n var src = elt;\n elt = cloneStyle(elt);\n elt.__importElement = src;\n this.parseGeneric(elt);\n },\n parseGeneri c: function(elt) {\n this.trackElement(elt);\n document.head.appendChild(e lt);\n },\n // tracks when a loadable element has loaded\n trackElement: func tion(elt) {\n var self = this;\n var done = function() {\n self.markP arsingComplete(elt);\n };\n elt.addEventListener('load', done);\n elt.a ddEventListener('error', done);\n\n // NOTE: IE does not fire \"load\" event for styles that have already loaded\n // This is in violation of the spec, so we try our hardest to work around it\n if (isIe && elt.localName === 'style' ) {\n var fakeLoad = false;\n // If there's not @import in the textCon tent, assume it has loaded\n if (elt.textContent.indexOf('@import') == -1) {\n fakeLoad = true;\n // if we have a sheet, we have been parsed\n } else if (elt.sheet) {\n fakeLoad = true;\n var csr = elt.sh eet.cssRules;\n var len = csr ? csr.length : 0;\n // search the ru les for @import's\n for (var i = 0, r; (i < len) && (r = csr[i]); i++) {\ n if (r.type === CSSRule.IMPORT_RULE) {\n // if every @impor t has resolved, fake the load\n fakeLoad = fakeLoad && Boolean(r.styl eSheet);\n }\n }\n }\n // dispatch a fake load event a nd continue parsing\n if (fakeLoad) {\n elt.dispatchEvent(new Custom Event('load', {bubbles: false}));\n }\n }\n },\n parseScript: function (scriptElt) {\n // acquire code to execute\n var code = (scriptElt.__resou rce || scriptElt.textContent).trim();\n if (code) {\n // calculate sourc e map hint\n var moniker = scriptElt.__nodeUrl;\n if (!moniker) {\n moniker = scriptElt.ownerDocument.baseURI;\n // there could be more than one script this url\n var tag = '[' + Math.floor((Math.random()+1)*1 000) + ']';\n // TODO(sjmiles): Polymer hack, should be pluggable if we n eed to allow \n // this sort of thing\n var matches = code.match(/ Polymer\\(['\"]([^'\"]*)/);\n tag = matches && matches[1] || tag;\n // tag the moniker\n moniker += '/' + tag + '.js';\n }\n // s ource map hint\n code += \"\\n//# sourceURL=\" + moniker + \"\\n\";\n // evaluate the code\n scope.currentScript = scriptElt;\n eval.call(wi ndow, code);\n scope.currentScript = null;\n }\n this.markParsingComp lete(scriptElt);\n },\n // determine the next element in the tree which should be parsed\n nextToParse: function() {\n return !this.parsingElement && this .nextToParseInDoc(mainDoc);\n },\n nextToParseInDoc: function(doc, link) {\n var nodes = doc.querySelectorAll(this.parseSelectorsForNode(doc));\n for (v ar i=0, l=nodes.length, p=0, n; (i<l) && (n=nodes[i]); i++) {\n if (!this.i sParsed(n)) {\n if (this.hasResource(n)) {\n return nodeIsImport (n) ? this.nextToParseInDoc(n.import, n) : n;\n } else {\n retur n;\n }\n }\n }\n // all nodes have been parsed, ready to parse import, if any\n return link;\n },\n // return the set of parse selectors relevant for this node.\n parseSelectorsForNode: function(node) {\n var doc = node.ownerDocument || node;\n return doc === mainDoc ? this.documentSelecto rs : this.importsSelectors;\n },\n isParsed: function(node) {\n return node .__importParsed;\n },\n hasResource: function(node) {\n if (nodeIsImport(no de) && !node.import) {\n return false;\n }\n if (node.localName === ' script' && node.src && !node.__resource) {\n return false;\n }\n retu rn true;\n }\n};\n\nfunction nodeIsImport(elt) {\n return (elt.localName === ' link') && (elt.rel === IMPORT_LINK_TYPE);\n}\n\n// style/stylesheet handling\n\n // clone style with proper path resolution for main document\n// NOTE: styles ar e the only elements that require direct path fixup.\nfunction cloneStyle(style) {\n var clone = style.ownerDocument.createElement('style');\n clone.textConten t = style.textContent;\n path.resolveUrlsInStyle(clone);\n return clone;\n}\n\ n// path fixup: style elements in imports must be made relative to the main \n// document. We fixup url's in url() and @import.\nvar CSS_URL_REGEXP = /(url\\()( [^)]*)(\\))/g;\nvar CSS_IMPORT_REGEXP = /(@import[\\s]+(?!url\\())([^;]*)(;)/g;\ n\nvar path = {\n resolveUrlsInStyle: function(style) {\n var doc = style.ow nerDocument;\n var resolver = doc.createElement('a');\n style.textContent = this.resolveUrlsInCssText(style.textContent, resolver);\n return style; \n },\n resolveUrlsInCssText: function(cssText, urlObj) {\n var r = this.repl aceUrls(cssText, urlObj, CSS_URL_REGEXP);\n r = this.replaceUrls(r, urlObj, C SS_IMPORT_REGEXP);\n return r;\n },\n replaceUrls: function(text, urlObj, r egexp) {\n return text.replace(regexp, function(m, pre, url, post) {\n v ar urlPath = url.replace(/[\"']/g, '');\n urlObj.href = urlPath;\n url Path = urlObj.href;\n return pre + '\\'' + urlPath + '\\'' + post;\n }); \n }\n}\n\n// exports\nscope.parser = importParser;\nscope.path = path;\nsc ope.isIE = isIe;\n\n})(HTMLImports);\n","/*\n * Copyright 2013 The Polymer Autho rs. All rights reserved.\n * Use of this source code is governed by a BSD-style\ n * license that can be found in the LICENSE file.\n */\n\n(function(scope) {\n\ nvar hasNative = ('import' in document.createElement('link'));\nvar useNative = hasNative;\nvar flags = scope.flags;\nvar IMPORT_LINK_TYPE = 'import';\n\n// TOD O(sorvell): SD polyfill intrusion\nvar mainDoc = window.ShadowDOMPolyfill ? \n ShadowDOMPolyfill.wrapIfNeeded(document) : document;\n\nif (!useNative) {\n\n // imports\n var xhr = scope.xhr;\n var Loader = scope.Loader;\n var parser = scope.parser;\n\n // importer\n // highlander object to manage loading of im ports\n\n // for any document, importer:\n // - loads any linked import docume nts (with deduping)\n // for any import document, importer also:\n // - loads text of external script tags\n\n var importer = {\n documents: {},\n // n odes to load in the mian document\n documentPreloadSelectors: 'link[rel=' + I MPORT_LINK_TYPE + ']',\n // nodes to load in imports\n importsPreloadSelec tors: [\n 'link[rel=' + IMPORT_LINK_TYPE + ']',\n 'script[src]:not ([type])',\n 'script[src][type=\"text/javascript\"]'\n ].join(','),\n loadNode: function(node) {\n importLoader.addNode(node);\n },\n // load all loadable elements within the parent element\n loadSubtree: function (parent) {\n var nodes = this.marshalNodes(parent);\n // add these nod es to loader's queue\n importLoader.addNodes(nodes);\n },\n marshalNo des: function(parent) {\n // all preloadable nodes in inDocument\n ret urn parent.querySelectorAll(this.loadSelectorsForNode(parent));\n },\n // find the proper set of load selectors for a given node\n loadSelectorsForNode : function(node) {\n var doc = node.ownerDocument || node;\n return do c === mainDoc ? this.documentPreloadSelectors :\n this.importsPreloadSe lectors;\n },\n loaded: function(url, elt, resource) {\n flags.load & & console.log('loaded', url, elt);\n // store generic resource\n // TO DO(sorvell): fails for nodes inside <template>.content\n // see https://cod e.google.com/p/chromium/issues/detail?id=249381.\n elt.__resource = resourc e;\n if (isDocumentLink(elt)) {\n var doc = this.documents[url];\n // if we've never seen a document at this url\n if (!doc) {\n // generate an HTMLDocument from data\n doc = makeDocument(resource , url);\n doc.__importLink = elt;\n // TODO(sorvell): we canno t use MO to detect parsed nodes because\n // SD polyfill does not repor t these as mutations.\n this.bootDocument(doc);\n // cache doc ument\n this.documents[url] = doc;\n }\n // don't store i mport record until we're actually loaded\n // store document resource\n elt.import = doc;\n }\n parser.parseNext();\n },\n bootDoc ument: function(doc) {\n this.loadSubtree(doc);\n this.observe(doc);\n parser.parseNext();\n },\n loadedAll: function() {\n parser.par seNext();\n }\n };\n\n // loader singleton\n var importLoader = new Loader (importer.loaded.bind(importer), \n importer.loadedAll.bind(importer));\n\n function isDocumentLink(elt) {\n return isLinkRel(elt, IMPORT_LINK_TYPE);\n }\n\n function isLinkRel(elt, rel) {\n return elt.localName === 'link' && elt.getAttribute('rel') === rel;\n }\n\n function isScript(elt) {\n return elt.localName === 'script';\n }\n\n function makeDocument(resource, url) {\n // create a new HTML document\n var doc = resource;\n if (!(doc instance of Document)) {\n doc = document.implementation.createHTMLDocument(IMPORT_L INK_TYPE);\n }\n // cache the new document's source url\n doc._URL = ur l;\n // establish a relative path via <base>\n var base = doc.createElemen t('base');\n base.setAttribute('href', url);\n // add baseURI support to b rowsers (IE) that lack it.\n if (!doc.baseURI) {\n doc.baseURI = url;\n }\n doc.head.appendChild(base);\n // install HTML last as it may trigge r CustomElement upgrades\n // TODO(sjmiles): problem wrt to template boostrap ping below,\n // template bootstrapping must (?) come before element upgrade\ n // but we cannot bootstrap templates until they are in a document\n // w hich is too late\n if (!(resource instanceof Document)) {\n // install h tml\n doc.body.innerHTML = resource;\n }\n // TODO(sorvell): ideally this code is not aware of Template polyfill,\n // but for now the polyfill ne eds help to bootstrap these templates\n if (window.HTMLTemplateElement && HTM LTemplateElement.bootstrap) {\n HTMLTemplateElement.bootstrap(doc);\n }\ n return doc;\n }\n} else {\n // do nothing if using native imports\n var importer = {};\n}\n\n// NOTE: We cannot polyfill document.currentScript because it's not possible\n// both to override and maintain the ability to capture the n ative value;\n// therefore we choose to expose _currentScript both when native i mports\n// and the polyfill are in use.\nvar currentScriptDescriptor = {\n get: function() {\n return HTMLImports.currentScript || document.currentScript;\n },\n configurable: true\n};\n\nObject.defineProperty(document, '_currentScrip t', currentScriptDescriptor);\nObject.defineProperty(mainDoc, '_currentScript', currentScriptDescriptor);\n\n// Polyfill document.baseURI for browsers without i t.\nif (!document.baseURI) {\n var baseURIDescriptor = {\n get: function() { \n return window.location.href;\n },\n configurable: true\n };\n\n Object.defineProperty(document, 'baseURI', baseURIDescriptor);\n Object.defineP roperty(mainDoc, 'baseURI', baseURIDescriptor);\n}\n\n// call a callback when al l HTMLImports in the document at call (or at least\n// document ready) time hav e loaded.\n// 1. ensure the document is in a ready state (has dom), then \n// 2. watch for loading of imports and call callback when done\nfunction whenImportsR eady(callback, doc) {\n doc = doc || mainDoc;\n // if document is loading, wai t and try again\n whenDocumentReady(function() {\n watchImportsLoad(callback , doc);\n }, doc);\n}\n\n// call the callback when the document is in a ready s tate (has dom)\nvar requiredReadyState = HTMLImports.isIE ? 'complete' : 'intera ctive';\nvar READY_EVENT = 'readystatechange';\nfunction isDocumentReady(doc) {\ n return (doc.readyState === 'complete' ||\n doc.readyState === requiredRe adyState);\n}\n\n// call <callback> when we ensure the document is in a ready st ate\nfunction whenDocumentReady(callback, doc) {\n if (!isDocumentReady(doc)) { \n var checkReady = function() {\n if (doc.readyState === 'complete' || \n doc.readyState === requiredReadyState) {\n doc.removeEventLis tener(READY_EVENT, checkReady);\n whenDocumentReady(callback, doc);\n }\n }\n doc.addEventListener(READY_EVENT, checkReady);\n } else if (cal lback) {\n callback();\n }\n}\n\n// call <callback> when we ensure all impor ts have loaded\nfunction watchImportsLoad(callback, doc) {\n var imports = doc. querySelectorAll('link[rel=import]');\n var loaded = 0, l = imports.length;\n function checkDone(d) { \n if (loaded == l) {\n // go async to ensure pa rser isn't stuck on a script tag\n requestAnimationFrame(callback);\n }\ n }\n function loadedImport(e) {\n loaded++;\n checkDone();\n }\n if ( l) {\n for (var i=0, imp; (i<l) && (imp=imports[i]); i++) {\n if (isImpo rtLoaded(imp)) {\n loadedImport.call(imp);\n } else {\n imp.a ddEventListener('load', loadedImport);\n imp.addEventListener('error', lo adedImport);\n }\n }\n } else {\n checkDone();\n }\n}\n\nfunction i sImportLoaded(link) {\n return useNative ? (link.import && (link.import.readySt ate !== 'loading')) :\n link.__importParsed;\n}\n\n// exports\nscope.hasNat ive = hasNative;\nscope.useNative = useNative;\nscope.importer = importer;\nscop e.whenImportsReady = whenImportsReady;\nscope.IMPORT_LINK_TYPE = IMPORT_LINK_TYP E;\nscope.isImportLoaded = isImportLoaded;\nscope.importLoader = importLoader;\n \n})(window.HTMLImports);\n"," /*\nCopyright 2013 The Polymer Authors. All right s reserved.\nUse of this source code is governed by a BSD-style\nlicense that ca n be found in the LICENSE file.\n*/\n\n(function(scope){\n\nvar IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;\nvar importSelector = 'link[rel=' + IMPORT_LINK_TYPE + ']';\nvar importer = scope.importer;\n\n// we track mutations for addedNodes, looking for imports\nfunction handler(mutations) {\n for (var i=0, l=mutations. length, m; (i<l) && (m=mutations[i]); i++) {\n if (m.type === 'childList' && m.addedNodes.length) {\n addedNodes(m.addedNodes);\n }\n }\n}\n\n// fin d loadable elements and add them to the importer\nfunction addedNodes(nodes) {\n for (var i=0, l=nodes.length, n; (i<l) && (n=nodes[i]); i++) {\n if (should LoadNode(n)) {\n importer.loadNode(n);\n }\n if (n.children && n.chil dren.length) {\n addedNodes(n.children);\n }\n }\n}\n\nfunction shouldL oadNode(node) {\n return (node.nodeType === 1) && matches.call(node,\n imp orter.loadSelectorsForNode(node));\n}\n\n// x-plat matches\nvar matches = HTMLEl ement.prototype.matches || \n HTMLElement.prototype.matchesSelector || \n HTMLElement.prototype.webkitMatchesSelector ||\n HTMLElement.prototype.mozMat chesSelector ||\n HTMLElement.prototype.msMatchesSelector;\n\nvar observer = new MutationObserver(handler);\n\n// observe the given root for loadable element s\nfunction observe(root) {\n observer.observe(root, {childList: true, subtree: true});\n}\n\n// exports\n// TODO(sorvell): factor so can put on scope\nscope.o bserve = observe;\nimporter.observe = observe;\n\n})(HTMLImports);\n","/*\n * Co pyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source co de is governed by a BSD-style\n * license that can be found in the LICENSE file. \n */\n(function(){\n\n// bootstrap\n\n// IE shim for CustomEvent\nif (typeof wi ndow.CustomEvent !== 'function') {\n window.CustomEvent = function(inType, dict ionary) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(in Type,\n dictionary.bubbles === false ? false : true,\n dictionary. cancelable === false ? false : true,\n dictionary.detail);\n return e ;\n };\n}\n\n// TODO(sorvell): SD polyfill intrusion\nvar doc = window.ShadowDO MPolyfill ? \n window.ShadowDOMPolyfill.wrapIfNeeded(document) : document;\n\ n// Fire the 'HTMLImportsLoaded' event when imports in document at load time \n/ / have loaded. This event is required to simulate the script blocking \n// behav ior of native imports. A main document script that needs to be sure\n// imports have loaded should wait for this event.\nHTMLImports.whenImportsReady(function() {\n HTMLImports.ready = true;\n HTMLImports.readyTime = new Date().getTime(); \n doc.dispatchEvent(\n new CustomEvent('HTMLImportsLoaded', {bubbles: true} )\n );\n});\n\n\n// no need to bootstrap the polyfill when native imports is av ailable.\nif (!HTMLImports.useNative) {\n function bootstrap() {\n HTMLImpor ts.importer.bootDocument(doc);\n }\n \n // TODO(sorvell): SD polyfill does *not* generate mutations for nodes added\n // by the parser. For this reason, w e must wait until the dom exists to \n // bootstrap.\n if (document.readyState === 'complete' ||\n (document.readyState === 'interactive' && !window.atta chEvent)) {\n bootstrap();\n } else {\n document.addEventListener('DOMCon tentLoaded', bootstrap);\n }\n}\n\n})();\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-s tyle\n * license that can be found in the LICENSE file.\n */\nwindow.CustomEleme nts = window.CustomElements || {flags:{}};"," /*\r\nCopyright 2013 The Polymer A uthors. All rights reserved.\r\nUse of this source code is governed by a BSD-sty le\r\nlicense that can be found in the LICENSE file.\r\n*/\r\n\r\n(function(scop e){\r\n\r\nvar logFlags = window.logFlags || {};\r\nvar IMPORT_LINK_TYPE = windo w.HTMLImports ? HTMLImports.IMPORT_LINK_TYPE : 'none';\r\n\r\n// walk the subtre e rooted at node, applying 'find(element, data)' function\r\n// to each element\ r\n// if 'find' returns true for 'element', do not search element's subtree\r\nf unction findAll(node, find, data) {\r\n var e = node.firstElementChild;\r\n if (!e) {\r\n e = node.firstChild;\r\n while (e && e.nodeType !== Node.ELEME NT_NODE) {\r\n e = e.nextSibling;\r\n }\r\n }\r\n while (e) {\r\n i f (find(e, data) !== true) {\r\n findAll(e, find, data);\r\n }\r\n e = e.nextElementSibling;\r\n }\r\n return null;\r\n}\r\n\r\n// walk all shadowR oots on a given node.\r\nfunction forRoots(node, cb) {\r\n var root = node.shad owRoot;\r\n while(root) {\r\n forSubtree(root, cb);\r\n root = root.older ShadowRoot;\r\n }\r\n}\r\n\r\n// walk the subtree rooted at node, including des cent into shadow-roots,\r\n// applying 'cb' to each element\r\nfunction forSubtr ee(node, cb) {\r\n //logFlags.dom && node.childNodes && node.childNodes.length && console.group('subTree: ', node);\r\n findAll(node, function(e) {\r\n if (cb(e)) {\r\n return true;\r\n }\r\n forRoots(e, cb);\r\n });\r\n f orRoots(node, cb);\r\n //logFlags.dom && node.childNodes && node.childNodes.len gth && console.groupEnd();\r\n}\r\n\r\n// manage lifecycle on added node\r\nfunc tion added(node) {\r\n if (upgrade(node)) {\r\n insertedNode(node);\r\n r eturn true;\r\n }\r\n inserted(node);\r\n}\r\n\r\n// manage lifecycle on added node's subtree only\r\nfunction addedSubtree(node) {\r\n forSubtree(node, func tion(e) {\r\n if (added(e)) {\r\n return true;\r\n }\r\n });\r\n}\r\ n\r\n// manage lifecycle on added node and it's subtree\r\nfunction addedNode(no de) {\r\n return added(node) || addedSubtree(node);\r\n}\r\n\r\n// upgrade cust om elements at node, if applicable\r\nfunction upgrade(node) {\r\n if (!node.__ upgraded__ && node.nodeType === Node.ELEMENT_NODE) {\r\n var type = node.getA ttribute('is') || node.localName;\r\n var definition = scope.registry[type];\ r\n if (definition) {\r\n logFlags.dom && console.group('upgrade:', node .localName);\r\n scope.upgrade(node);\r\n logFlags.dom && console.grou pEnd();\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nfunction insertedNode( node) {\r\n inserted(node);\r\n if (inDocument(node)) {\r\n forSubtree(node , function(e) {\r\n inserted(e);\r\n });\r\n }\r\n}\r\n\r\n\r\n// TODO( sorvell): on platforms without MutationObserver, mutations may not be\r\n// reli able and therefore attached/detached are not reliable.\r\n// To make these callb acks less likely to fail, we defer all inserts and removes\r\n// to give a chanc e for elements to be inserted into dom.\r\n// This ensures attachedCallback fire s for elements that are created and\r\n// immediately added to dom.\r\nvar hasPo lyfillMutations = (!window.MutationObserver ||\r\n (window.MutationObserver = == window.JsMutationObserver));\r\nscope.hasPolyfillMutations = hasPolyfillMutat ions;\r\n\r\nvar isPendingMutations = false;\r\nvar pendingMutations = [];\r\nfu nction deferMutation(fn) {\r\n pendingMutations.push(fn);\r\n if (!isPendingMu tations) {\r\n isPendingMutations = true;\r\n var async = (window.Platform && window.Platform.endOfMicrotask) ||\r\n setTimeout;\r\n async(takeM utations);\r\n }\r\n}\r\n\r\nfunction takeMutations() {\r\n isPendingMutations = false;\r\n var $p = pendingMutations;\r\n for (var i=0, l=$p.length, p; (i< l) && (p=$p[i]); i++) {\r\n p();\r\n }\r\n pendingMutations = [];\r\n}\r\n\ r\nfunction inserted(element) {\r\n if (hasPolyfillMutations) {\r\n deferMut ation(function() {\r\n _inserted(element);\r\n });\r\n } else {\r\n _inserted(element);\r\n }\r\n}\r\n\r\n// TODO(sjmiles): if there are descents i nto trees that can never have inDocument(*) true, fix this\r\nfunction _inserted (element) {\r\n // TODO(sjmiles): it's possible we were inserted and removed in the space\r\n // of one microtask, in which case we won't be 'inDocument' here \r\n // But there are other cases where we are testing for inserted without\r\n // specific knowledge of mutations, and must test 'inDocument' to determine\r\ n // whether to call inserted\r\n // If we can factor these cases into separat e code paths we can have\r\n // better diagnostics.\r\n // TODO(sjmiles): when logging, do work on all custom elements so we can\r\n // track behavior even w hen callbacks not defined\r\n //console.log('inserted: ', element.localName);\r \n if (element.attachedCallback || element.detachedCallback || (element.__upgra ded__ && logFlags.dom)) {\r\n logFlags.dom && console.group('inserted:', elem ent.localName);\r\n if (inDocument(element)) {\r\n element.__inserted = (element.__inserted || 0) + 1;\r\n // if we are in a 'removed' state, blunt ly adjust to an 'inserted' state\r\n if (element.__inserted < 1) {\r\n element.__inserted = 1;\r\n }\r\n // if we are 'over inserted', squ elch the callback\r\n if (element.__inserted > 1) {\r\n logFlags.dom && console.warn('inserted:', element.localName,\r\n 'insert/remove cou nt:', element.__inserted)\r\n } else if (element.attachedCallback) {\r\n logFlags.dom && console.log('inserted:', element.localName);\r\n ele ment.attachedCallback();\r\n }\r\n }\r\n logFlags.dom && console.grou pEnd();\r\n }\r\n}\r\n\r\nfunction removedNode(node) {\r\n removed(node);\r\n forSubtree(node, function(e) {\r\n removed(e);\r\n });\r\n}\r\n\r\nfunction removed(element) {\r\n if (hasPolyfillMutations) {\r\n deferMutation(functi on() {\r\n _removed(element);\r\n });\r\n } else {\r\n _removed(elem ent);\r\n }\r\n}\r\n\r\nfunction _removed(element) {\r\n // TODO(sjmiles): tem porary: do work on all custom elements so we can track\r\n // behavior even whe n callbacks not defined\r\n if (element.attachedCallback || element.detachedCal lback || (element.__upgraded__ && logFlags.dom)) {\r\n logFlags.dom && consol e.group('removed:', element.localName);\r\n if (!inDocument(element)) {\r\n element.__inserted = (element.__inserted || 0) - 1;\r\n // if we are in a 'inserted' state, bluntly adjust to an 'removed' state\r\n if (element._ _inserted > 0) {\r\n element.__inserted = 0;\r\n }\r\n // if we are 'over removed', squelch the callback\r\n if (element.__inserted < 0) { \r\n logFlags.dom && console.warn('removed:', element.localName,\r\n 'insert/remove count:', element.__inserted)\r\n } else if (element.d etachedCallback) {\r\n element.detachedCallback();\r\n }\r\n }\r\ n logFlags.dom && console.groupEnd();\r\n }\r\n}\r\n\r\n// SD polyfill intru stion due mainly to the fact that 'document'\r\n// is not entirely wrapped\r\nfu nction wrapIfNeeded(node) {\r\n return window.ShadowDOMPolyfill ? ShadowDOMPoly fill.wrapIfNeeded(node)\r\n : node;\r\n}\r\n\r\nfunction inDocument(element ) {\r\n var p = element;\r\n var doc = wrapIfNeeded(document);\r\n while (p) {\r\n if (p == doc) {\r\n return true;\r\n }\r\n p = p.parentNode || p.host;\r\n }\r\n}\r\n\r\nfunction watchShadow(node) {\r\n if (node.shadowR oot && !node.shadowRoot.__watched) {\r\n logFlags.dom && console.log('watchin g shadow-root for: ', node.localName);\r\n // watch all unwatched roots...\r\ n var root = node.shadowRoot;\r\n while (root) {\r\n watchRoot(root); \r\n root = root.olderShadowRoot;\r\n }\r\n }\r\n}\r\n\r\nfunction watc hRoot(root) {\r\n if (!root.__watched) {\r\n observe(root);\r\n root.__wa tched = true;\r\n }\r\n}\r\n\r\nfunction handler(mutations) {\r\n //\r\n if ( logFlags.dom) {\r\n var mx = mutations[0];\r\n if (mx && mx.type === 'chil dList' && mx.addedNodes) {\r\n if (mx.addedNodes) {\r\n var d = mx.addedNodes[0];\r\n while (d && d !== document && !d.host) {\r\n d = d.parentNode;\r\n }\r\n var u = d && (d.URL || d._U RL || (d.host && d.host.localName)) || '';\r\n u = u.split('/?').shift( ).split('/').pop();\r\n }\r\n }\r\n console.group('mutations (%d) [ %s]', mutations.length, u || '');\r\n }\r\n //\r\n mutations.forEach(function (mx) {\r\n //logFlags.dom && console.group('mutation');\r\n if (mx.type == = 'childList') {\r\n forEach(mx.addedNodes, function(n) {\r\n //logF lags.dom && console.log(n.localName);\r\n if (!n.localName) {\r\n return;\r\n }\r\n // nodes added may need lifecycle management\r \n addedNode(n);\r\n });\r\n // removed nodes may need lifecycl e management\r\n forEach(mx.removedNodes, function(n) {\r\n //logFla gs.dom && console.log(n.localName);\r\n if (!n.localName) {\r\n return;\r\n }\r\n removedNode(n);\r\n });\r\n }\r\n //l ogFlags.dom && console.groupEnd();\r\n });\r\n logFlags.dom && console.groupEn d();\r\n};\r\n\r\nvar observer = new MutationObserver(handler);\r\n\r\nfunction takeRecords() {\r\n // TODO(sjmiles): ask Raf why we have to call handler ourse lves\r\n handler(observer.takeRecords());\r\n takeMutations();\r\n}\r\n\r\nvar forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);\r\n\r\nfu nction observe(inRoot) {\r\n observer.observe(inRoot, {childList: true, subtree : true});\r\n}\r\n\r\nfunction observeDocument(doc) {\r\n observe(doc);\r\n}\r\ n\r\nfunction upgradeDocument(doc) {\r\n logFlags.dom && console.group('upgrade Document: ', (doc.baseURI).split('/').pop());\r\n addedNode(doc);\r\n logFlags .dom && console.groupEnd();\r\n}\r\n\r\nfunction upgradeDocumentTree(doc) {\r\n doc = wrapIfNeeded(doc);\r\n upgradeDocument(doc);\r\n //console.log('upgrade DocumentTree: ', (doc.baseURI).split('/').pop());\r\n // upgrade contained impo rted documents\r\n var imports = doc.querySelectorAll('link[rel=' + IMPORT_LINK _TYPE + ']');\r\n for (var i=0, l=imports.length, n; (i<l) && (n=imports[i]); i ++) {\r\n if (n.import && n.import.__parsed) {\r\n upgradeDocumentTree(n .import);\r\n }\r\n }\r\n}\r\n\r\n// exports\r\nscope.IMPORT_LINK_TYPE = IMP ORT_LINK_TYPE;\r\nscope.watchShadow = watchShadow;\r\nscope.upgradeDocumentTree = upgradeDocumentTree;\r\nscope.upgradeAll = addedNode;\r\nscope.upgradeSubtree = addedSubtree;\r\n\r\nscope.observeDocument = observeDocument;\r\nscope.upgrade Document = upgradeDocument;\r\n\r\nscope.takeRecords = takeRecords;\r\n\r\n})(wi ndow.CustomElements);\r\n","/*\n * Copyright 2013 The Polymer Authors. All right s reserved.\n * Use of this source code is governed by a BSD-style\n * license t hat can be found in the LICENSE file.\n */\n\n/**\n * Implements `document.regis ter`\n * @module CustomElements\n*/\n\n/**\n * Polyfilled extensions to the `doc ument` object.\n * @class Document\n*/\n\n(function(scope) {\n\n// imports\n\nif (!scope) {\n scope = window.CustomElements = {flags:{}};\n}\nvar flags = scope .flags;\n\n// native document.registerElement?\n\nvar hasNative = Boolean(docume nt.registerElement);\n// TODO(sorvell): See https://github.com/Polymer/polymer/i ssues/399\n// we'll address this by defaulting to CE polyfill in the presence of the SD\n// polyfill. This will avoid spamming excess attached/detached callback s.\n// If there is a compelling need to run CE native with SD polyfill,\n// we'l l need to fix this issue.\nvar useNative = !flags.register && hasNative && !wind ow.ShadowDOMPolyfill;\n\nif (useNative) {\n\n // stub\n var nop = function() { };\n\n // exports\n scope.registry = {};\n scope.upgradeElement = nop;\n\n s cope.watchShadow = nop;\n scope.upgrade = nop;\n scope.upgradeAll = nop;\n sc ope.upgradeSubtree = nop;\n scope.observeDocument = nop;\n scope.upgradeDocume nt = nop;\n scope.upgradeDocumentTree = nop;\n scope.takeRecords = nop;\n\n} e lse {\n\n /**\n * Registers a custom tag name with the document.\n *\n * When a registered element is created, a `readyCallback` method is called\n * i n the scope of the element. The `readyCallback` method can be specified on\n * either `options.prototype` or `options.lifecycle` with the latter taking\n * precedence.\n *\n * @method register\n * @param {String} name The tag name to register. Must include a dash ('-'),\n * for example 'x-component'.\n * @param {Object} options\n * @param {String} [options.extends]\n * (_off spec_) Tag name of an element to extend (or blank for a new\n * el ement). This parameter is not part of the specification, but instead\n * is a hint for the polyfill because the extendee is difficult to infer.\n * Remember that the input prototype must chain to the extended element's\n * prototype (or HTMLElement.prototype) regardless of the value of\n * ` extends`.\n * @param {Object} options.prototype The prototype to use for th e new\n * element. The prototype must inherit from HTMLElement.\n * @param {Object} [options.lifecycle]\n * Callbacks that fire at important phases in the life of the custom\n * element.\n *\n * @example\n * FancyButton = document.registerElement(\"fancy-button\", {\n * ext ends: 'button',\n * prototype: Object.create(HTMLButtonElement.prototyp e, {\n * readyCallback: {\n * value: function() {\n * console.log(\"a fancy-button was created\",\n * }\n * }\n * })\n * });\n * @return {Function} Constructor for the newly registered type.\n */\n function register(name, options) {\n //console.warn('document.registerElement(\"' + name + '\", ', options, ')');\n // construct a defintion out of options\n // TODO(sjmiles): probably shou ld clone options instead of mutating it\n var definition = options || {};\n if (!name) {\n // TODO(sjmiles): replace with more appropriate error (Eri cB can probably\n // offer guidance)\n throw new Error('document.regis terElement: first argument `name` must not be empty');\n }\n if (name.inde xOf('-') < 0) {\n // TODO(sjmiles): replace with more appropriate error (Er icB can probably\n // offer guidance)\n throw new Error('document.regi sterElement: first argument (\\'name\\') must contain a dash (\\'-\\'). Argument provided was \\'' + String(name) + '\\'.');\n }\n // elements may only be registered once\n if (getRegisteredDefinition(name)) {\n throw new Erro r('DuplicateDefinitionError: a type with name \\'' + String(name) + '\\' is alre ady registered');\n }\n // must have a prototype, default to an extension of HTMLElement\n // TODO(sjmiles): probably should throw if no prototype, che ck spec\n if (!definition.prototype) {\n // TODO(sjmiles): replace with more appropriate error (EricB can probably\n // offer guidance)\n thro w new Error('Options missing required prototype property');\n }\n // recor d name\n definition.__name = name.toLowerCase();\n // ensure a lifecycle o bject so we don't have to null test it\n definition.lifecycle = definition.li fecycle || {};\n // build a list of ancestral custom elements (for native bas e detection)\n // TODO(sjmiles): we used to need to store this, but current c ode only\n // uses it in 'resolveTagName': it should probably be inlined\n definition.ancestry = ancestry(definition.extends);\n // extensions of nativ e specializations of HTMLElement require localName\n // to remain native, and use secondary 'is' specifier for extension type\n resolveTagName(definition) ;\n // some platforms require modifications to the user-supplied prototype\n // chain\n resolvePrototypeChain(definition);\n // overrides to impleme nt attributeChanged callback\n overrideAttributeApi(definition.prototype);\n // 7.1.5: Register the DEFINITION with DOCUMENT\n registerDefinition(defin ition.__name, definition);\n // 7.1.7. Run custom element constructor generat ion algorithm with PROTOTYPE\n // 7.1.8. Return the output of the previous st ep.\n definition.ctor = generateConstructor(definition);\n definition.ctor .prototype = definition.prototype;\n // force our .constructor to be our actu al constructor\n definition.prototype.constructor = definition.ctor;\n // if initial parsing is complete\n if (scope.ready) {\n // upgrade any pre -existing nodes of this type\n scope.upgradeDocumentTree(document);\n }\ n return definition.ctor;\n }\n\n function ancestry(extnds) {\n var exte ndee = getRegisteredDefinition(extnds);\n if (extendee) {\n return ances try(extendee.extends).concat([extendee]);\n }\n return [];\n }\n\n funct ion resolveTagName(definition) {\n // if we are explicitly extending somethin g, that thing is our\n // baseTag, unless it represents a custom component\n var baseTag = definition.extends;\n // if our ancestry includes custom com ponents, we only have a\n // baseTag if one of them does\n for (var i=0, a ; (a=definition.ancestry[i]); i++) {\n baseTag = a.is && a.tag;\n }\n // our tag is our baseTag, if it exists, and otherwise just our name\n defin ition.tag = baseTag || definition.__name;\n if (baseTag) {\n // if there is a base tag, use secondary 'is' specifier\n definition.is = definition._ _name;\n }\n }\n\n function resolvePrototypeChain(definition) {\n // if we don't support __proto__ we need to locate the native level\n // prototype for precise mixing in\n if (!Object.__proto__) {\n // default prototype\ n var nativePrototype = HTMLElement.prototype;\n // work out prototype when using type-extension\n if (definition.is) {\n var inst = docum ent.createElement(definition.tag);\n nativePrototype = Object.getPrototyp eOf(inst);\n }\n // ensure __proto__ reference is installed at each po int on the prototype\n // chain.\n // NOTE: On platforms without __pro to__, a mixin strategy is used instead\n // of prototype swizzling. In this case, this generated __proto__ provides\n // limited support for prototype traversal.\n var proto = definition.prototype, ancestor;\n while (pro to && (proto !== nativePrototype)) {\n var ancestor = Object.getPrototype Of(proto);\n proto.__proto__ = ancestor;\n proto = ancestor;\n }\n }\n // cache this in case of mixin\n definition.native = nativePr ototype;\n }\n\n // SECTION 4\n\n function instantiate(definition) {\n // 4.a.1. Create a new object that implements PROTOTYPE\n // 4.a.2. Let ELEMENT by this new object\n //\n // the custom element instantiation algorithm mu st also ensure that the\n // output is a valid DOM element with the proper wr apper in place.\n //\n return upgrade(domCreateElement(definition.tag), de finition);\n }\n\n function upgrade(element, definition) {\n // some defini tions specify an 'is' attribute\n if (definition.is) {\n element.setAttr ibute('is', definition.is);\n }\n // remove 'unresolved' attr, which is a standin for :unresolved.\n element.removeAttribute('unresolved');\n // mak e 'element' implement definition.prototype\n implement(element, definition);\ n // flag as upgraded\n element.__upgraded__ = true;\n // lifecycle man agement\n created(element);\n // there should never be a shadow root on el ement at this point\n // we require child nodes be upgraded before `created`\ n scope.upgradeSubtree(element);\n // OUTPUT\n return element;\n }\n\n function implement(element, definition) {\n // prototype swizzling is best\ n if (Object.__proto__) {\n element.__proto__ = definition.prototype;\n } else {\n // where above we can re-acquire inPrototype via\n // ge tPrototypeOf(Element), we cannot do so when\n // we use mixin, so we instal l a magic reference\n customMixin(element, definition.prototype, definition .native);\n element.__proto__ = definition.prototype;\n }\n }\n\n func tion customMixin(inTarget, inSrc, inNative) {\n // TODO(sjmiles): 'used' allo ws us to only copy the 'youngest' version of\n // any property. This set shou ld be precalculated. We also need to\n // consider this for supporting 'super '.\n var used = {};\n // start with inSrc\n var p = inSrc;\n // some times the default is HTMLUnknownElement.prototype instead of\n // HTMLElement .prototype, so we add a test\n // the idea is to avoid mixing in native proto types, so adding\n // the second test is WLOG\n while (p !== inNative && p !== HTMLUnknownElement.prototype) {\n var keys = Object.getOwnPropertyName s(p);\n for (var i=0, k; k=keys[i]; i++) {\n if (!used[k]) {\n Object.defineProperty(inTarget, k,\n Object.getOwnPropertyDescr iptor(p, k));\n used[k] = 1;\n }\n }\n p = Object.getP rototypeOf(p);\n }\n }\n\n function created(element) {\n // invoke creat edCallback\n if (element.createdCallback) {\n element.createdCallback(); \n }\n }\n\n // attribute watching\n\n function overrideAttributeApi(proto type) {\n // overrides to implement callbacks\n // TODO(sjmiles): should s upport access via .attributes NamedNodeMap\n // TODO(sjmiles): preserves user defined overrides, if any\n if (prototype.setAttribute._polyfilled) {\n return;\n }\n var setAttribute = prototype.setAttribute;\n prototype.s etAttribute = function(name, value) {\n changeAttribute.call(this, name, va lue, setAttribute);\n }\n var removeAttribute = prototype.removeAttribute; \n prototype.removeAttribute = function(name) {\n changeAttribute.call(t his, name, null, removeAttribute);\n }\n prototype.setAttribute._polyfille d = true;\n }\n\n // https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/cu stom/\n // index.html#dfn-attribute-changed-callback\n function changeAttribut e(name, value, operation) {\n var oldValue = this.getAttribute(name);\n op eration.apply(this, arguments);\n var newValue = this.getAttribute(name);\n if (this.attributeChangedCallback\n && (newValue !== oldValue)) {\n this.attributeChangedCallback(name, oldValue, newValue);\n }\n }\n\n // e lement registry (maps tag names to definitions)\n\n var registry = {};\n\n fun ction getRegisteredDefinition(name) {\n if (name) {\n return registry[na me.toLowerCase()];\n }\n }\n\n function registerDefinition(name, definition ) {\n if (registry[name]) {\n throw new Error('a type with that name is already registered.');\n }\n registry[name] = definition;\n }\n\n functi on generateConstructor(definition) {\n return function() {\n return inst antiate(definition);\n };\n }\n\n function createElement(tag, typeExtension ) {\n // TODO(sjmiles): ignore 'tag' when using 'typeExtension', we could\n // error check it, or perhaps there should only ever be one argument\n var definition = getRegisteredDefinition(typeExtension || tag);\n if (definition) {\n if (tag == definition.tag && typeExtension == definition.is) {\n return new definition.ctor();\n }\n // Handle empty string for type extension.\n if (!typeExtension && !definition.is) {\n return new de finition.ctor();\n }\n }\n\n if (typeExtension) {\n var element = createElement(tag);\n element.setAttribute('is', typeExtension);\n r eturn element;\n }\n var element = domCreateElement(tag);\n // Custom t ags should be HTMLElements even if not upgraded.\n if (tag.indexOf('-') >= 0) {\n implement(element, HTMLElement);\n }\n return element;\n }\n\n function upgradeElement(element) {\n if (!element.__upgraded__ && (element.n odeType === Node.ELEMENT_NODE)) {\n var is = element.getAttribute('is');\n var definition = getRegisteredDefinition(is || element.localName);\n i f (definition) {\n if (is && definition.tag == element.localName) {\n return upgrade(element, definition);\n } else if (!is && !definitio n.extends) {\n return upgrade(element, definition);\n }\n } \n }\n }\n\n function cloneNode(deep) {\n // call original clone\n va r n = domCloneNode.call(this, deep);\n // upgrade the element and subtree\n scope.upgradeAll(n);\n // return the clone\n return n;\n }\n // captur e native createElement before we override it\n\n var domCreateElement = documen t.createElement.bind(document);\n\n // capture native cloneNode before we overr ide it\n\n var domCloneNode = Node.prototype.cloneNode;\n\n // exports\n\n do cument.registerElement = register;\n document.createElement = createElement; // override\n Node.prototype.cloneNode = cloneNode; // override\n\n scope.regist ry = registry;\n\n /**\n * Upgrade an element to a custom element. Upgrading an element\n * causes the custom prototype to be applied, an `is` attribute\n * to be attached (as needed), and invocation of the `readyCallback`.\n * `up grade` does nothing if the element is already upgraded, or\n * if it matches n o registered custom tag name.\n *\n * @method ugprade\n * @param {Element} element The element to upgrade.\n * @return {Element} The upgraded element.\n */\n scope.upgrade = upgradeElement;\n}\n\n// bc\ndocument.register = docume nt.registerElement;\n\nscope.hasNative = hasNative;\nscope.useNative = useNative ;\n\n})(window.CustomElements);\n","/*\n * Copyright 2013 The Polymer Authors. A ll rights reserved.\n * Use of this source code is governed by a BSD-style\n * l icense that can be found in the LICENSE file.\n */\n\n(function(scope) {\n\n// i mport\n\nvar IMPORT_LINK_TYPE = scope.IMPORT_LINK_TYPE;\n\n// highlander object for parsing a document tree\n\nvar parser = {\n selectors: [\n 'link[rel=' + IMPORT_LINK_TYPE + ']'\n ],\n map: {\n link: 'parseLink'\n },\n parse: f unction(inDocument) {\n if (!inDocument.__parsed) {\n // only parse once \n inDocument.__parsed = true;\n // all parsable elements in inDocumen t (depth-first pre-order traversal)\n var elts = inDocument.querySelectorAl l(parser.selectors);\n // for each parsable node type, call the mapped pars ing method\n forEach(elts, function(e) {\n parser[parser.map[e.local Name]](e);\n });\n // upgrade all upgradeable static elements, anythin g dynamically\n // created should be caught by observer\n CustomElemen ts.upgradeDocument(inDocument);\n // observe document for dom changes\n CustomElements.observeDocument(inDocument);\n }\n },\n parseLink: functio n(linkElt) {\n // imports\n if (isDocumentLink(linkElt)) {\n this.par seImport(linkElt);\n }\n },\n parseImport: function(linkElt) {\n if (lin kElt.import) {\n parser.parse(linkElt.import);\n }\n }\n};\n\nfunction isDocumentLink(inElt) {\n return (inElt.localName === 'link'\n && inElt.ge tAttribute('rel') === IMPORT_LINK_TYPE);\n}\n\nvar forEach = Array.prototype.for Each.call.bind(Array.prototype.forEach);\n\n// exports\n\nscope.parser = parser; \nscope.IMPORT_LINK_TYPE = IMPORT_LINK_TYPE;\n\n})(window.CustomElements);","/*\ n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sou rce code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n(function(scope){\n\n// bootstrap parsing\nfunction bootstrap() {\n // parse document\n CustomElements.parser.parse(document);\n // one more pas s before register is 'live'\n CustomElements.upgradeDocument(document);\n // c hoose async\n var async = window.Platform && Platform.endOfMicrotask ? \n Pl atform.endOfMicrotask :\n setTimeout;\n async(function() {\n // set inter nal 'ready' flag, now document.registerElement will trigger \n // synchronous upgrades\n CustomElements.ready = true;\n // capture blunt profiling data \n CustomElements.readyTime = Date.now();\n if (window.HTMLImports) {\n CustomElements.elapsed = CustomElements.readyTime - HTMLImports.readyTime;\n }\n // notify the system that we are bootstrapped\n document.dispatchEv ent(\n new CustomEvent('WebComponentsReady', {bubbles: true})\n );\n\n // install upgrade hook if HTMLImports are available\n if (window.HTMLImpor ts) {\n HTMLImports.__importsParsingHook = function(elt) {\n CustomE lements.parser.parse(elt.import);\n }\n }\n });\n}\n\n// CustomEvent sh im for IE\nif (typeof window.CustomEvent !== 'function') {\n window.CustomEvent = function(inType) {\n var e = document.createEvent('HTMLEvents');\n e.in itEvent(inType, true, true);\n return e;\n };\n}\n\n// When loading at ready State complete time (or via flag), boot custom elements\n// immediately.\n// If relevant, HTMLImports must already be loaded.\nif (document.readyState === 'comp lete' || scope.flags.eager) {\n bootstrap();\n// When loading at readyState int eractive time, bootstrap only if HTMLImports\n// are not pending. Also avoid IE as the semantics of this state are unreliable.\n} else if (document.readyState = == 'interactive' && !window.attachEvent &&\n (!window.HTMLImports || window.H TMLImports.ready)) {\n bootstrap();\n// When loading at other readyStates, wait for the appropriate DOM event to \n// bootstrap.\n} else {\n var loadEvent = w indow.HTMLImports && !HTMLImports.ready ?\n 'HTMLImportsLoaded' : 'DOMConte ntLoaded';\n window.addEventListener(loadEvent, bootstrap);\n}\n\n})(window.Cus tomElements);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved .\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n(function() {\n\n// inject style sheet\nvar st yle = document.createElement('style');\nstyle.textContent = 'element {display: n one !important;} /* injected by platform.js */';\nvar head = document.querySelec tor('head');\nhead.insertBefore(style, head.firstChild);\n\nif (window.ShadowDOM Polyfill) {\n\n // ensure wrapped inputs for these functions\n var fns = ['upg radeAll', 'upgradeSubtree', 'observeDocument',\n 'upgradeDocument'];\n\n / / cache originals\n var original = {};\n fns.forEach(function(fn) {\n origi nal[fn] = CustomElements[fn];\n });\n\n // override\n fns.forEach(function(fn ) {\n CustomElements[fn] = function(inNode) {\n return original[fn](wrap (inNode));\n };\n });\n\n}\n\n})();\n","/*\n * Copyright 2014 The Polymer Au thors. All rights reserved.\n * Use of this source code is governed by a BSD-sty le\n * license that can be found in the LICENSE file.\n */\n(function(scope) {\n \nvar STYLE_SELECTOR = 'style';\n\nvar urlResolver = scope.urlResolver;\n\nvar l oader = {\n cacheStyles: function(styles, callback) {\n var css = [];\n f or (var i=0, l=styles.length, s; (i<l) && (s=styles[i]); i++) {\n css.push( s.textContent);\n }\n cacheCssText(css.join('\\n'), callback);\n },\n xh rStyles: function(styles, callback) {\n var loaded=0, l = styles.length;\n // called in the context of the style\n function loadedStyle(style) {\n //console.log(style.textContent);\n loaded++;\n if (loaded === l && c allback) {\n callback();\n }\n }\n for (var i=0, s; (i<l) && ( s=styles[i]); i++) {\n xhrLoadStyle(s, loadedStyle);\n }\n }\n};\n\n// use the platform to preload styles\nvar preloadElement = document.createElement( 'preloader');\npreloadElement.style.display = 'none';\nvar preloadRoot = preload Element.createShadowRoot();\ndocument.head.appendChild(preloadElement);\n\nfunct ion cacheCssText(cssText, callback) {\n var style = createStyleElement(cssText) ;\n if (callback) {\n style.addEventListener('load', callback);\n style.a ddEventListener('error', callback);\n }\n preloadRoot.appendChild(style);\n}\n \nfunction createStyleElement(cssText, scope) {\n scope = scope || document;\n scope = scope.createElement ? scope : scope.ownerDocument;\n var style = scope .createElement('style');\n style.textContent = cssText;\n return style;\n}\n\n // TODO(sorvell): use a common loader shared with HTMLImports polyfill\n// curre ntly, this just loads the first @import per style element \n// and does not recu rse into loaded elements; we'll address this with a \n// generalized loader that 's built out of the one in the HTMLImports polyfill.\n// polyfill the loading of a style element's @import via xhr\nfunction xhrLoadStyle(style, callback) {\n HTMLImports.xhr.load(atImportUrlFromStyle(style), function (err, resource,\n url) {\n replaceAtImportWithCssText(this, url, resource);\n this.textCon tent = urlResolver.resolveCssText(this.textContent, url);\n callback && callb ack(this);\n }, style);\n}\n\nvar atImportRe = /@import\\s[(]?['\"]?([^\\s'\";) ]*)/;\n\n// get the first @import rule from a style\nfunction atImportUrlFromSty le(style) {\n var matches = style.textContent.match(atImportRe);\n return matc hes && matches[1];\n}\n\nfunction replaceAtImportWithCssText(style, url, cssText ) {\n var re = new RegExp('@import[^;]*' + url + '[^;]*;', 'i');\n style.textC ontent = style.textContent.replace(re, cssText);\n}\n\n// exports\nscope.loader = loader;\n\n})(window.Platform);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n(function(scope) {\n sc ope = scope || {};\n scope.external = scope.external || {};\n var target = {\n shadow: function(inEl) {\n if (inEl) {\n return inEl.shadowRoot || inEl.webkitShadowRoot;\n }\n },\n canTarget: function(shadow) {\n return shadow && Boolean(shadow.elementFromPoint);\n },\n targetingSh adow: function(inEl) {\n var s = this.shadow(inEl);\n if (this.canTarg et(s)) {\n return s;\n }\n },\n olderShadow: function(shadow) {\n var os = shadow.olderShadowRoot;\n if (!os) {\n var se = sh adow.querySelector('shadow');\n if (se) {\n os = se.olderShadowR oot;\n }\n }\n return os;\n },\n allShadows: function(ele ment) {\n var shadows = [], s = this.shadow(element);\n while(s) {\n shadows.push(s);\n s = this.olderShadow(s);\n }\n return shadows;\n },\n searchRoot: function(inRoot, x, y) {\n if (inRoot) {\ n var t = inRoot.elementFromPoint(x, y);\n var st, sr, os;\n // is element a shadow host?\n sr = this.targetingShadow(t);\n w hile (sr) {\n // find the the element inside the shadow root\n st = sr.elementFromPoint(x, y);\n if (!st) {\n // check for older shadows\n sr = this.olderShadow(sr);\n } else {\n // shadowed element may contain a shadow root\n var ssr = thi s.targetingShadow(st);\n return this.searchRoot(ssr, x, y) || st;\n }\n }\n // light dom element is the target\n return t;\n }\n },\n owner: function(element) {\n var s = element;\n // walk up until you hit the shadow root or document\n while (s.parentN ode) {\n s = s.parentNode;\n }\n // the owner element is expect ed to be a Document or ShadowRoot\n if (s.nodeType != Node.DOCUMENT_NODE && s.nodeType != Node.DOCUMENT_FRAGMENT_NODE) {\n s = document;\n }\n return s;\n },\n findTarget: function(inEvent) {\n var x = inEve nt.clientX, y = inEvent.clientY;\n // if the listener is in the shadow root , it is much faster to start there\n var s = this.owner(inEvent.target);\n // if x, y is not in this root, fall back to document search\n if (!s. elementFromPoint(x, y)) {\n s = document;\n }\n return this.sea rchRoot(s, x, y);\n }\n };\n scope.targetFinding = target;\n scope.findTar get = target.findTarget.bind(target);\n\n window.PointerEventsPolyfill = scope; \n})(window.PointerEventsPolyfill);\n","/*\n * Copyright 2013 The Polymer Author s. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n(function() {\n functio n shadowSelector(v) {\n return 'body ^^ ' + selector(v);\n }\n function sel ector(v) {\n return '[touch-action=\"' + v + '\"]';\n }\n function rule(v) {\n return '{ -ms-touch-action: ' + v + '; touch-action: ' + v + '; touch-act ion-delay: none; }';\n }\n var attrib2css = [\n 'none',\n 'auto',\n ' pan-x',\n 'pan-y',\n {\n rule: 'pan-x pan-y',\n selectors: [\n 'pan-x pan-y',\n 'pan-y pan-x'\n ]\n }\n ];\n var styles = '';\n attrib2css.forEach(function(r) {\n if (String(r) === r) {\n sty les += selector(r) + rule(r) + '\\n';\n styles += shadowSelector(r) + rule( r) + '\\n';\n } else {\n styles += r.selectors.map(selector) + rule(r.ru le) + '\\n';\n styles += r.selectors.map(shadowSelector) + rule(r.rule) + ' \\n';\n }\n });\n var el = document.createElement('style');\n el.textConte nt = styles;\n document.head.appendChild(el);\n})();\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governe d by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/**\ n * This is the constructor for new PointerEvents.\n *\n * New Pointer Events mu st be given a type, and an optional dictionary of\n * initialization properties. \n *\n * Due to certain platform requirements, events returned from the construc tor\n * identify as MouseEvents.\n *\n * @constructor\n * @param {String} inType The type of the event to create.\n * @param {Object} [inDict] An optional dicti onary of initial event properties.\n * @return {Event} A new PointerEvent of typ e `inType` and initialized with properties from `inDict`.\n */\n(function(scope) {\n // test for DOM Level 4 Events\n var NEW_MOUSE_EVENT = false;\n var HAS_ BUTTONS = false;\n try {\n var ev = new MouseEvent('click', {buttons: 1});\n NEW_MOUSE_EVENT = true;\n HAS_BUTTONS = ev.buttons === 1;\n } catch(e) { \n }\n\n var MOUSE_PROPS = [\n 'bubbles',\n 'cancelable',\n 'view',\n 'detail',\n 'screenX',\n 'screenY',\n 'clientX',\n 'clientY',\n 'ctrlKey',\n 'altKey',\n 'shiftKey',\n 'metaKey',\n 'button',\n 'relatedTarget',\n ];\n\n var MOUSE_DEFAULTS = [\n false,\n false,\n null,\n null,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n false,\n false,\n 0,\n null\n ];\n\n function PointerEvent(inType, in Dict) {\n inDict = inDict || {};\n // According to the w3c spec,\n // h ttp://www.w3.org/TR/DOM-Level-3-Events/#events-MouseEvent-button\n // MouseEv ent.button == 0 can mean either no mouse button depressed, or the\n // left m ouse button depressed.\n //\n // As of now, the only way to distinguish be tween the two states of\n // MouseEvent.button is by using the deprecated Mou seEvent.which property, as\n // this maps mouse buttons to positive integers > 0, and uses 0 to mean that\n // no mouse button is held.\n //\n // Mo useEvent.which is derived from MouseEvent.button at MouseEvent creation,\n // but initMouseEvent does not expose an argument with which to set\n // MouseE vent.which. Calling initMouseEvent with a buttonArg of 0 will set\n // MouseE vent.button == 0 and MouseEvent.which == 1, breaking the expectations\n // of app developers.\n //\n // The only way to propagate the correct state of MouseEvent.which and\n // MouseEvent.button to a new MouseEvent.button == 0 a nd MouseEvent.which == 0\n // is to call initMouseEvent with a buttonArg valu e of -1.\n //\n // This is fixed with DOM Level 4's use of buttons\n va r buttons;\n if (inDict.buttons || HAS_BUTTONS) {\n buttons = inDict.but tons;\n } else {\n switch (inDict.which) {\n case 1: buttons = 1; break;\n case 2: buttons = 4; break;\n case 3: buttons = 2; break ;\n default: buttons = 0;\n }\n }\n\n var e;\n if (NEW_MOUS E_EVENT) {\n e = new MouseEvent(inType, inDict);\n } else {\n e = d ocument.createEvent('MouseEvent');\n\n // import values from the given dict ionary\n var props = {}, p;\n for(var i = 0; i < MOUSE_PROPS.length; i ++) {\n p = MOUSE_PROPS[i];\n props[p] = inDict[p] || MOUSE_DEFAUL TS[i];\n }\n\n // define the properties inherited from MouseEvent\n e.initMouseEvent(\n inType, props.bubbles, props.cancelable, props.vie w, props.detail,\n props.screenX, props.screenY, props.clientX, props.cli entY, props.ctrlKey,\n props.altKey, props.shiftKey, props.metaKey, props .button, props.relatedTarget\n );\n }\n\n // make the event pass inst anceof checks\n e.__proto__ = PointerEvent.prototype;\n\n // define the bu ttons property according to DOM Level 3 spec\n if (!HAS_BUTTONS) {\n // IE 10 has buttons on MouseEvent.prototype as a getter w/o any setting\n // mechanism\n Object.defineProperty(e, 'buttons', {get: function(){ return bu ttons; }, enumerable: true});\n }\n\n // Spec requires that pointers witho ut pressure specified use 0.5 for down\n // state and 0 for up state.\n va r pressure = 0;\n if (inDict.pressure) {\n pressure = inDict.pressure;\n } else {\n pressure = buttons ? 0.5 : 0;\n }\n\n // define the pr operties of the PointerEvent interface\n Object.defineProperties(e, {\n pointerId: { value: inDict.pointerId || 0, enumerable: true },\n width: { v alue: inDict.width || 0, enumerable: true },\n height: { value: inDict.heig ht || 0, enumerable: true },\n pressure: { value: pressure, enumerable: tru e },\n tiltX: { value: inDict.tiltX || 0, enumerable: true },\n tiltY: { value: inDict.tiltY || 0, enumerable: true },\n pointerType: { value: in Dict.pointerType || '', enumerable: true },\n hwTimestamp: { value: inDict. hwTimestamp || 0, enumerable: true },\n isPrimary: { value: inDict.isPrimar y || false, enumerable: true }\n });\n return e;\n }\n\n // PointerEvent extends MouseEvent\n PointerEvent.prototype = Object.create(MouseEvent.prototy pe);\n\n // attach to window\n if (!scope.PointerEvent) {\n scope.PointerEv ent = PointerEvent;\n }\n})(window);\n","/*\n * Copyright 2013 The Polymer Auth ors. All rights reserved.\n * Use of this source code is governed by a BSD-style \n * license that can be found in the LICENSE file.\n */\n\n/**\n * This module implements an map of pointer states\n */\n(function(scope) {\n var USE_MAP = wi ndow.Map && window.Map.prototype.forEach;\n var POINTERS_FN = function(){ retur n this.size; };\n function PointerMap() {\n if (USE_MAP) {\n var m = ne w Map();\n m.pointers = POINTERS_FN;\n return m;\n } else {\n this.keys = [];\n this.values = [];\n }\n }\n\n PointerMap.prototype = {\n set: function(inId, inEvent) {\n var i = this.keys.indexOf(inId);\n if (i > -1) {\n this.values[i] = inEvent;\n } else {\n this.keys.push(inId);\n this.values.push(inEvent);\n }\n },\n has: function(inId) {\n return this.keys.indexOf(inId) > -1;\n },\n ' delete': function(inId) {\n var i = this.keys.indexOf(inId);\n if (i > -1) {\n this.keys.splice(i, 1);\n this.values.splice(i, 1);\n }\n },\n get: function(inId) {\n var i = this.keys.indexOf(inId);\n return this.values[i];\n },\n clear: function() {\n this.keys.l ength = 0;\n this.values.length = 0;\n },\n // return value, key, map \n forEach: function(callback, thisArg) {\n this.values.forEach(function (v, i) {\n callback.call(thisArg, v, this.keys[i], this);\n }, this) ;\n },\n pointers: function() {\n return this.keys.length;\n }\n };\n\n scope.PointerMap = PointerMap;\n})(window.PointerEventsPolyfill);\n","/* \n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this so urce code is governed by a BSD-style\n * license that can be found in the LICENS E file.\n */\n\n(function(scope) {\n var CLONE_PROPS = [\n // MouseEvent\n 'bubbles',\n 'cancelable',\n 'view',\n 'detail',\n 'screenX',\n 'screenY',\n 'clientX',\n 'clientY',\n 'ctrlKey',\n 'altKey',\n 'shiftKey',\n 'metaKey',\n 'button',\n 'relatedTarget',\n // DOM Lev el 3\n 'buttons',\n // PointerEvent\n 'pointerId',\n 'width',\n ' height',\n 'pressure',\n 'tiltX',\n 'tiltY',\n 'pointerType',\n ' hwTimestamp',\n 'isPrimary',\n // event instance\n 'type',\n 'target ',\n 'currentTarget',\n 'which'\n ];\n\n var CLONE_DEFAULTS = [\n // MouseEvent\n false,\n false,\n null,\n null,\n 0,\n 0,\n 0, \n 0,\n false,\n false,\n false,\n false,\n 0,\n null,\n // DOM Level 3\n 0,\n // PointerEvent\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n '',\n 0,\n false,\n // event instance\n '',\n n ull,\n null,\n 0\n ];\n\n var HAS_SVG_INSTANCE = (typeof SVGElementInsta nce !== 'undefined');\n\n /**\n * This module is for normalizing events. Mous e and Touch events will be\n * collected here, and fire PointerEvents that hav e the same semantics, no\n * matter the source.\n * Events fired:\n * - pointerdown: a pointing is added\n * - pointerup: a pointer is removed\n * - pointermove: a pointer is moved\n * - pointerover: a pointer crosses in to an element\n * - pointerout: a pointer leaves an element\n * - pointe rcancel: a pointer will no longer generate events\n */\n var dispatcher = {\n targets: new WeakMap(),\n handledEvents: new WeakMap(),\n pointermap: new scope.PointerMap(),\n eventMap: {},\n // Scope objects for native even ts.\n // This exists for ease of testing.\n eventSources: {},\n eventSo urceList: [],\n /**\n * Add a new event source that will generate pointer events.\n *\n * `inSource` must contain an array of event names named ` events`, and\n * functions with the names specified in the `events` array.\n * @param {string} name A name for the event source\n * @param {Object} source A new source of platform events.\n */\n registerSource: function(n ame, source) {\n var s = source;\n var newEvents = s.events;\n if (newEvents) {\n newEvents.forEach(function(e) {\n if (s[e]) {\n this.eventMap[e] = s[e].bind(s);\n }\n }, this);\n this.eventSources[name] = s;\n this.eventSourceList.push(s);\n }\n },\n register: function(element) {\n var l = this.eventSourceLis t.length;\n for (var i = 0, es; (i < l) && (es = this.eventSourceList[i]); i++) {\n // call eventsource register\n es.register.call(es, eleme nt);\n }\n },\n unregister: function(element) {\n var l = this.e ventSourceList.length;\n for (var i = 0, es; (i < l) && (es = this.eventSou rceList[i]); i++) {\n // call eventsource register\n es.unregister .call(es, element);\n }\n },\n contains: scope.external.contains || f unction(container, contained) {\n return container.contains(contained);\n },\n // EVENTS\n down: function(inEvent) {\n this.fireEvent('pointe rdown', inEvent);\n },\n move: function(inEvent) {\n this.fireEvent(' pointermove', inEvent);\n },\n up: function(inEvent) {\n this.fireEve nt('pointerup', inEvent);\n },\n enter: function(inEvent) {\n inEvent .bubbles = false;\n this.fireEvent('pointerenter', inEvent);\n },\n l eave: function(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent( 'pointerleave', inEvent);\n },\n over: function(inEvent) {\n inEvent. bubbles = true;\n this.fireEvent('pointerover', inEvent);\n },\n out: function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('point erout', inEvent);\n },\n cancel: function(inEvent) {\n this.fireEvent ('pointercancel', inEvent);\n },\n leaveOut: function(event) {\n this .out(event);\n if (!this.contains(event.target, event.relatedTarget)) {\n this.leave(event);\n }\n },\n enterOver: function(event) {\n this.over(event);\n if (!this.contains(event.target, event.relatedTarget )) {\n this.enter(event);\n }\n },\n // LISTENER LOGIC\n ev entHandler: function(inEvent) {\n // This is used to prevent multiple dispa tch of pointerevents from\n // platform events. This can happen when two el ements in different scopes\n // are set up to create pointer events, which is relevant to Shadow DOM.\n if (this.handledEvents.get(inEvent)) {\n return;\n }\n var type = inEvent.type;\n var fn = this.eventMap && this.eventMap[type];\n if (fn) {\n fn(inEvent);\n }\n this.handledEvents.set(inEvent, true);\n },\n // set up event listeners\n listen: function(target, events) {\n events.forEach(function(e) {\n this.addEvent(target, e);\n }, this);\n },\n // remove event liste ners\n unlisten: function(target, events) {\n events.forEach(function(e) {\n this.removeEvent(target, e);\n }, this);\n },\n addEvent: scope.external.addEvent || function(target, eventName) {\n target.addEvent Listener(eventName, this.boundHandler);\n },\n removeEvent: scope.external .removeEvent || function(target, eventName) {\n target.removeEventListener( eventName, this.boundHandler);\n },\n // EVENT CREATION AND TRACKING\n /**\n * Creates a new Event of type `inType`, based on the information in\n * `inEvent`.\n *\n * @param {string} inType A string representing th e type of event to create\n * @param {Event} inEvent A platform event with a target\n * @return {Event} A PointerEvent of type `inType`\n */\n ma keEvent: function(inType, inEvent) {\n // relatedTarget must be null if poi nter is captured\n if (this.captureInfo) {\n inEvent.relatedTarget = null;\n }\n var e = new PointerEvent(inType, inEvent);\n if (inE vent.preventDefault) {\n e.preventDefault = inEvent.preventDefault;\n }\n this.targets.set(e, this.targets.get(inEvent) || inEvent.target);\n return e;\n },\n // make and dispatch an event in one call\n fireEv ent: function(inType, inEvent) {\n var e = this.makeEvent(inType, inEvent); \n return this.dispatchEvent(e);\n },\n /**\n * Returns a snapsho t of inEvent, with writable properties.\n *\n * @param {Event} inEvent A n event that contains properties to copy.\n * @return {Object} An object con taining shallow copies of `inEvent`'s\n * properties.\n */\n clone Event: function(inEvent) {\n var eventCopy = {}, p;\n for (var i = 0; i < CLONE_PROPS.length; i++) {\n p = CLONE_PROPS[i];\n eventCopy[p ] = inEvent[p] || CLONE_DEFAULTS[i];\n // Work around SVGInstanceElement shadow tree\n // Return the <use> element that is represented by the inst ance for Safari, Chrome, IE.\n // This is the behavior implemented by Fir efox.\n if (HAS_SVG_INSTANCE && (p === 'target' || p === 'relatedTarget') ) {\n if (eventCopy[p] instanceof SVGElementInstance) {\n ev entCopy[p] = eventCopy[p].correspondingUseElement;\n }\n }\n }\n // keep the semantics of preventDefault\n if (inEvent.preventDef ault) {\n eventCopy.preventDefault = function() {\n inEvent.prev entDefault();\n };\n }\n return eventCopy;\n },\n getTarg et: function(inEvent) {\n // if pointer capture is set, route all events fo r the specified pointerId\n // to the capture target\n if (this.captur eInfo) {\n if (this.captureInfo.id === inEvent.pointerId) {\n re turn this.captureInfo.target;\n }\n }\n return this.targets.get (inEvent);\n },\n setCapture: function(inPointerId, inTarget) {\n if (this.captureInfo) {\n this.releaseCapture(this.captureInfo.id);\n } \n this.captureInfo = {id: inPointerId, target: inTarget};\n var e = n ew PointerEvent('gotpointercapture', { bubbles: true });\n this.implicitRel ease = this.releaseCapture.bind(this, inPointerId);\n document.addEventList ener('pointerup', this.implicitRelease);\n document.addEventListener('point ercancel', this.implicitRelease);\n this.targets.set(e, inTarget);\n t his.asyncDispatchEvent(e);\n },\n releaseCapture: function(inPointerId) {\ n if (this.captureInfo && this.captureInfo.id === inPointerId) {\n v ar e = new PointerEvent('lostpointercapture', { bubbles: true });\n var t = this.captureInfo.target;\n this.captureInfo = null;\n document. removeEventListener('pointerup', this.implicitRelease);\n document.remove EventListener('pointercancel', this.implicitRelease);\n this.targets.set( e, t);\n this.asyncDispatchEvent(e);\n }\n },\n /**\n * Di spatches the event to its target.\n *\n * @param {Event} inEvent The eve nt to be dispatched.\n * @return {Boolean} True if an event handler returns true, false otherwise.\n */\n dispatchEvent: scope.external.dispatchEvent || function(inEvent) {\n var t = this.getTarget(inEvent);\n if (t) {\ n return t.dispatchEvent(inEvent);\n }\n },\n asyncDispatchEve nt: function(inEvent) {\n setTimeout(this.dispatchEvent.bind(this, inEvent) , 0);\n }\n };\n dispatcher.boundHandler = dispatcher.eventHandler.bind(dis patcher);\n scope.dispatcher = dispatcher;\n scope.register = dispatcher.regis ter.bind(dispatcher);\n scope.unregister = dispatcher.unregister.bind(dispatche r);\n})(window.PointerEventsPolyfill);\n","/*\n * Copyright 2013 The Polymer Aut hors. All rights reserved.\n * Use of this source code is governed by a BSD-styl e\n * license that can be found in the LICENSE file.\n */\n\n/**\n * This module uses Mutation Observers to dynamically adjust which nodes will\n * generate Poi nter Events.\n *\n * All nodes that wish to generate Pointer Events must have th e attribute\n * `touch-action` set to `none`.\n */\n(function(scope) {\n var fo rEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);\n var map = Array.prototype.map.call.bind(Array.prototype.map);\n var toArray = Array.prot otype.slice.call.bind(Array.prototype.slice);\n var filter = Array.prototype.fi lter.call.bind(Array.prototype.filter);\n var MO = window.MutationObserver || w indow.WebKitMutationObserver;\n var SELECTOR = '[touch-action]';\n var OBSERVE R_INIT = {\n subtree: true,\n childList: true,\n attributes: true,\n attributeOldValue: true,\n attributeFilter: ['touch-action']\n };\n\n func tion Installer(add, remove, changed, binder) {\n this.addCallback = add.bind( binder);\n this.removeCallback = remove.bind(binder);\n this.changedCallba ck = changed.bind(binder);\n if (MO) {\n this.observer = new MO(this.mut ationWatcher.bind(this));\n }\n }\n\n Installer.prototype = {\n watchSub tree: function(target) {\n // Only watch scopes that can target find, as th ese are top-level.\n // Otherwise we can see duplicate additions and remova ls that add noise.\n //\n // TODO(dfreedman): For some instances with ShadowDOMPolyfill, we can see\n // a removal without an insertion when a no de is redistributed among\n // shadows. Since it all ends up correct in the document, watching only\n // the document will yield the correct mutations to watch.\n if (scope.targetFinding.canTarget(target)) {\n this.obs erver.observe(target, OBSERVER_INIT);\n }\n },\n enableOnSubtree: fun ction(target) {\n this.watchSubtree(target);\n if (target === document && document.readyState !== 'complete') {\n this.installOnLoad();\n } else {\n this.installNewSubtree(target);\n }\n },\n installN ewSubtree: function(target) {\n forEach(this.findElements(target), this.add Element, this);\n },\n findElements: function(target) {\n if (target. querySelectorAll) {\n return target.querySelectorAll(SELECTOR);\n }\ n return [];\n },\n removeElement: function(el) {\n this.removeC allback(el);\n },\n addElement: function(el) {\n this.addCallback(el) ;\n },\n elementChanged: function(el, oldValue) {\n this.changedCallb ack(el, oldValue);\n },\n concatLists: function(accum, list) {\n retu rn accum.concat(toArray(list));\n },\n // register all touch-action = none nodes on document load\n installOnLoad: function() {\n document.addEven tListener('DOMContentLoaded', this.installNewSubtree.bind(this, document));\n },\n isElement: function(n) {\n return n.nodeType === Node.ELEMENT_NODE ;\n },\n flattenMutationTree: function(inNodes) {\n // find children with touch-action\n var tree = map(inNodes, this.findElements, this);\n // make sure the added nodes are accounted for\n tree.push(filter(inNodes , this.isElement));\n // flatten the list\n return tree.reduce(this.co ncatLists, []);\n },\n mutationWatcher: function(mutations) {\n mutat ions.forEach(this.mutationHandler, this);\n },\n mutationHandler: function (m) {\n if (m.type === 'childList') {\n var added = this.flattenMuta tionTree(m.addedNodes);\n added.forEach(this.addElement, this);\n var removed = this.flattenMutationTree(m.removedNodes);\n removed.forEach (this.removeElement, this);\n } else if (m.type === 'attributes') {\n this.elementChanged(m.target, m.oldValue);\n }\n }\n };\n\n if (!MO) {\n Installer.prototype.watchSubtree = function(){\n console.warn('Poin terEventsPolyfill: MutationObservers not found, touch-action will not be dynamic ally detected');\n };\n }\n\n scope.Installer = Installer;\n})(window.Point erEventsPolyfill);\n","/*\n * Copyright 2013 The Polymer Authors. All rights res erved.\n * Use of this source code is governed by a BSD-style\n * license that c an be found in the LICENSE file.\n */\n\n(function (scope) {\n var dispatcher = scope.dispatcher;\n var pointermap = dispatcher.pointermap;\n // radius aroun d touchend that swallows mouse events\n var DEDUP_DIST = 25;\n\n // handler bl ock for native mouse events\n var mouseEvents = {\n POINTER_ID: 1,\n POIN TER_TYPE: 'mouse',\n events: [\n 'mousedown',\n 'mousemove',\n 'mouseup',\n 'mouseover',\n 'mouseout'\n ],\n register: functio n(target) {\n dispatcher.listen(target, this.events);\n },\n unregist er: function(target) {\n dispatcher.unlisten(target, this.events);\n },\ n lastTouches: [],\n // collide with the global mouse listener\n isEven tSimulatedFromTouch: function(inEvent) {\n var lts = this.lastTouches;\n var x = inEvent.clientX, y = inEvent.clientY;\n for (var i = 0, l = lts. length, t; i < l && (t = lts[i]); i++) {\n // simulated mouse events will be swallowed near a primary touchend\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DIST && dy <= DEDUP_DIST) {\n return true;\n }\n }\n },\n prepareEvent: function(inEvent) {\n var e = dispatcher.cloneEvent(inEvent);\n // forward mouse preven tDefault\n var pd = e.preventDefault;\n e.preventDefault = function() {\n inEvent.preventDefault();\n pd();\n };\n e.pointerId = this.POINTER_ID;\n e.isPrimary = true;\n e.pointerType = this.POINT ER_TYPE;\n return e;\n },\n mousedown: function(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.has(thi s.POINTER_ID);\n // TODO(dfreedman) workaround for some elements not send ing mouseup\n // http://crbug/149091\n if (p) {\n this.ca ncel(inEvent);\n }\n var e = this.prepareEvent(inEvent);\n pointermap.set(this.POINTER_ID, inEvent);\n dispatcher.down(e);\n }\ n },\n mousemove: function(inEvent) {\n if (!this.isEventSimulatedFro mTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n dispatc her.move(e);\n }\n },\n mouseup: function(inEvent) {\n if (!this .isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.get(this.POIN TER_ID);\n if (p && p.button === inEvent.button) {\n var e = thi s.prepareEvent(inEvent);\n dispatcher.up(e);\n this.cleanupMou se();\n }\n }\n },\n mouseover: function(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent( inEvent);\n dispatcher.enterOver(e);\n }\n },\n mouseout: func tion(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n dispatcher.leaveOut(e);\n }\n },\n cancel: function(inEvent) {\n var e = this.prepareEvent(inEvent) ;\n dispatcher.cancel(e);\n this.cleanupMouse();\n },\n cleanupM ouse: function() {\n pointermap['delete'](this.POINTER_ID);\n }\n };\n\ n scope.mouseEvents = mouseEvents;\n})(window.PointerEventsPolyfill);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this sourc e code is governed by a BSD-style\n * license that can be found in the LICENSE f ile.\n */\n\n(function(scope) {\n var dispatcher = scope.dispatcher;\n var fin dTarget = scope.findTarget;\n var allShadows = scope.targetFinding.allShadows.b ind(scope.targetFinding);\n var pointermap = dispatcher.pointermap;\n var touc hMap = Array.prototype.map.call.bind(Array.prototype.map);\n // This should be long enough to ignore compat mouse events made by touch\n var DEDUP_TIMEOUT = 2 500;\n var CLICK_COUNT_TIMEOUT = 200;\n var ATTRIB = 'touch-action';\n var IN STALLER;\n // The presence of touch event handlers blocks scrolling, and so we must be careful to\n // avoid adding handlers unnecessarily. Chrome plans to a dd a touch-action-delay property\n // (crbug.com/329559) to address this, and o nce we have that we can opt-in to a simpler\n // handler registration mechanism . Rather than try to predict how exactly to opt-in to\n // that we'll just lea ve this disabled until there is a build of Chrome to test.\n var HAS_TOUCH_ACTI ON_DELAY = false;\n \n // handler block for native touch events\n var touchEv ents = {\n scrollType: new WeakMap(),\n events: [\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel'\n ],\n register: function(target) {\n if (HAS_TOUCH_ACTION_DELAY) {\n dispatcher.list en(target, this.events);\n } else {\n INSTALLER.enableOnSubtree(targ et);\n }\n },\n unregister: function(target) {\n if (HAS_TOUCH_A CTION_DELAY) {\n dispatcher.unlisten(target, this.events);\n } else {\n // TODO(dfreedman): is it worth it to disconnect the MO?\n }\n },\n elementAdded: function(el) {\n var a = el.getAttribute(ATTRIB);\n var st = this.touchActionToScrollType(a);\n if (st) {\n this.s crollType.set(el, st);\n dispatcher.listen(el, this.events);\n // set touch-action on shadows as well\n allShadows(el).forEach(function(s) {\n this.scrollType.set(s, st);\n dispatcher.listen(s, this.ev ents);\n }, this);\n }\n },\n elementRemoved: function(el) {\n this.scrollType['delete'](el);\n dispatcher.unlisten(el, this.events) ;\n // remove touch-action from shadow\n allShadows(el).forEach(functi on(s) {\n this.scrollType['delete'](s);\n dispatcher.unlisten(s, t his.events);\n }, this);\n },\n elementChanged: function(el, oldValue ) {\n var a = el.getAttribute(ATTRIB);\n var st = this.touchActionToSc rollType(a);\n var oldSt = this.touchActionToScrollType(oldValue);\n / / simply update scrollType if listeners are already established\n if (st && oldSt) {\n this.scrollType.set(el, st);\n allShadows(el).forEach( function(s) {\n this.scrollType.set(s, st);\n }, this);\n } else if (oldSt) {\n this.elementRemoved(el);\n } else if (st) {\n this.elementAdded(el);\n }\n },\n scrollTypes: {\n EMITTER : 'none',\n XSCROLLER: 'pan-x',\n YSCROLLER: 'pan-y',\n SCROLLER: /^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/\n },\n touchActionToScrollType: function(touchAction) {\n var t = touchAction;\n var st = this.scrollT ypes;\n if (t === 'none') {\n return 'none';\n } else if (t === st.XSCROLLER) {\n return 'X';\n } else if (t === st.YSCROLLER) {\n return 'Y';\n } else if (st.SCROLLER.exec(t)) {\n return 'XY' ;\n }\n },\n POINTER_TYPE: 'touch',\n firstTouch: null,\n isPri maryTouch: function(inTouch) {\n return this.firstTouch === inTouch.identif ier;\n },\n setPrimaryTouch: function(inTouch) {\n // set primary tou ch if there no pointers, or the only pointer is the mouse\n if (pointermap. pointers() === 0 || (pointermap.pointers() === 1 && pointermap.has(1))) {\n this.firstTouch = inTouch.identifier;\n this.firstXY = {X: inTouch.cli entX, Y: inTouch.clientY};\n this.scrolling = false;\n this.cancel ResetClickCount();\n }\n },\n removePrimaryPointer: function(inPointe r) {\n if (inPointer.isPrimary) {\n this.firstTouch = null;\n this.firstXY = null;\n this.resetClickCount();\n }\n },\n cli ckCount: 0,\n resetId: null,\n resetClickCount: function() {\n var fn = function() {\n this.clickCount = 0;\n this.resetId = null;\n }.bind(this);\n this.resetId = setTimeout(fn, CLICK_COUNT_TIMEOUT);\n },\n cancelResetClickCount: function() {\n if (this.resetId) {\n clearTimeout(this.resetId);\n }\n },\n touchToPointer: function(inTo uch) {\n var e = dispatcher.cloneEvent(inTouch);\n // Spec specifies t hat pointerId 1 is reserved for Mouse.\n // Touch identifiers can start at 0.\n // Add 2 to the touch identifier for compatibility.\n e.pointerId = inTouch.identifier + 2;\n e.target = findTarget(e);\n e.bubbles = t rue;\n e.cancelable = true;\n e.detail = this.clickCount;\n e.but ton = 0;\n e.buttons = 1;\n e.width = inTouch.webkitRadiusX || inTouch .radiusX || 0;\n e.height = inTouch.webkitRadiusY || inTouch.radiusY || 0;\ n e.pressure = inTouch.webkitForce || inTouch.force || 0.5;\n e.isPrim ary = this.isPrimaryTouch(inTouch);\n e.pointerType = this.POINTER_TYPE;\n return e;\n },\n processTouches: function(inEvent, inFunction) {\n var tl = inEvent.changedTouches;\n var pointers = touchMap(tl, this.touc hToPointer, this);\n // forward touch preventDefaults\n pointers.forEa ch(function(p) {\n p.preventDefault = function() {\n this.scroll ing = false;\n this.firstXY = null;\n inEvent.preventDefault() ;\n };\n }, this);\n pointers.forEach(inFunction, this);\n } ,\n // For single axis scrollers, determines whether the element should emit\ n // pointer events or behave as a scroller\n shouldScroll: function(inEve nt) {\n if (this.firstXY) {\n var ret;\n var scrollAxis = thi s.scrollType.get(inEvent.currentTarget);\n if (scrollAxis === 'none') {\n // this element is a touch-action: none, should never scroll\n ret = false;\n } else if (scrollAxis === 'XY') {\n // this ele ment should always scroll\n ret = true;\n } else {\n va r t = inEvent.changedTouches[0];\n // check the intended scroll axis, a nd other axis\n var a = scrollAxis;\n var oa = scrollAxis === 'Y' ? 'X' : 'Y';\n var da = Math.abs(t['client' + a] - this.firstXY[a]) ;\n var doa = Math.abs(t['client' + oa] - this.firstXY[oa]);\n // if delta in the scroll axis > delta other axis, scroll instead of\n // making events\n ret = da >= doa;\n }\n this.firstXY = null;\n return ret;\n }\n },\n findTouch: function(inTL, inId ) {\n for (var i = 0, l = inTL.length, t; i < l && (t = inTL[i]); i++) {\n if (t.identifier === inId) {\n return true;\n }\n }\ n },\n // In some instances, a touchstart can happen without a touchend. T his\n // leaves the pointermap in a broken state.\n // Therefore, on every touchstart, we remove the touches that did not fire a\n // touchend event.\n // To keep state globally consistent, we fire a\n // pointercancel for th is \"abandoned\" touch\n vacuumTouches: function(inEvent) {\n var tl = i nEvent.touches;\n // pointermap.pointers() should be < tl.length here, as t he touchstart has not\n // been processed yet.\n if (pointermap.pointe rs() >= tl.length) {\n var d = [];\n pointermap.forEach(function(v alue, key) {\n // Never remove pointerId == 1, which is mouse.\n // Touch identifiers are 2 smaller than their pointerId, which is the\n // index in pointermap.\n if (key !== 1 && !this.findTouch(tl, key - 2)) {\n var p = value.out;\n d.push(this.touchToPointer( p));\n }\n }, this);\n d.forEach(this.cancelOut, this);\n }\n },\n touchstart: function(inEvent) {\n this.vacuumTouches(i nEvent);\n this.setPrimaryTouch(inEvent.changedTouches[0]);\n this.ded upSynthMouse(inEvent);\n if (!this.scrolling) {\n this.clickCount++; \n this.processTouches(inEvent, this.overDown);\n }\n },\n ove rDown: function(inPointer) {\n var p = pointermap.set(inPointer.pointerId, {\n target: inPointer.target,\n out: inPointer,\n outTarget : inPointer.target\n });\n dispatcher.over(inPointer);\n dispatch er.enter(inPointer);\n dispatcher.down(inPointer);\n },\n touchmove: function(inEvent) {\n if (!this.scrolling) {\n if (this.shouldScroll (inEvent)) {\n this.scrolling = true;\n this.touchcancel(inEve nt);\n } else {\n inEvent.preventDefault();\n this.proc essTouches(inEvent, this.moveOverOut);\n }\n }\n },\n moveOver Out: function(inPointer) {\n var event = inPointer;\n var pointer = po intermap.get(event.pointerId);\n // a finger drifted off the screen, ignore it\n if (!pointer) {\n return;\n }\n var outEvent = point er.out;\n var outTarget = pointer.outTarget;\n dispatcher.move(event); \n if (outEvent && outTarget !== event.target) {\n outEvent.relatedT arget = event.target;\n event.relatedTarget = outTarget;\n // reco ver from retargeting by shadow\n outEvent.target = outTarget;\n if (event.target) {\n dispatcher.leaveOut(outEvent);\n dispatche r.enterOver(event);\n } else {\n // clean up case when finger le aves the screen\n event.target = outTarget;\n event.relatedTar get = null;\n this.cancelOut(event);\n }\n }\n pointer .out = event;\n pointer.outTarget = event.target;\n },\n touchend: fu nction(inEvent) {\n this.dedupSynthMouse(inEvent);\n this.processTouch es(inEvent, this.upOut);\n },\n upOut: function(inPointer) {\n if (!t his.scrolling) {\n dispatcher.up(inPointer);\n dispatcher.out(inPo inter);\n dispatcher.leave(inPointer);\n }\n this.cleanUpPointe r(inPointer);\n },\n touchcancel: function(inEvent) {\n this.processT ouches(inEvent, this.cancelOut);\n },\n cancelOut: function(inPointer) {\n dispatcher.cancel(inPointer);\n dispatcher.out(inPointer);\n dis patcher.leave(inPointer);\n this.cleanUpPointer(inPointer);\n },\n cl eanUpPointer: function(inPointer) {\n pointermap['delete'](inPointer.pointe rId);\n this.removePrimaryPointer(inPointer);\n },\n // prevent synth mouse events from creating pointer events\n dedupSynthMouse: function(inEven t) {\n var lts = scope.mouseEvents.lastTouches;\n var t = inEvent.chan gedTouches[0];\n // only the primary finger will synth mouse events\n if (this.isPrimaryTouch(t)) {\n // remember x/y of last touch\n va r lt = {x: t.clientX, y: t.clientY};\n lts.push(lt);\n var fn = (f unction(lts, lt){\n var i = lts.indexOf(lt);\n if (i > -1) {\n lts.splice(i, 1);\n }\n }).bind(null, lts, lt);\n setTimeout(fn, DEDUP_TIMEOUT);\n }\n }\n };\n\n if (!HAS_TOUCH_AC TION_DELAY) {\n INSTALLER = new scope.Installer(touchEvents.elementAdded, tou chEvents.elementRemoved, touchEvents.elementChanged, touchEvents);\n }\n\n sco pe.touchEvents = touchEvents;\n})(window.PointerEventsPolyfill);\n","/*\n * Copy right 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n(function(scope) {\n var dispatcher = scope.dispatcher;\n var pointerma p = dispatcher.pointermap;\n var HAS_BITMAP_TYPE = window.MSPointerEvent && typ eof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE === 'number';\n var msEvents = { \n events: [\n 'MSPointerDown',\n 'MSPointerMove',\n 'MSPointe rUp',\n 'MSPointerOut',\n 'MSPointerOver',\n 'MSPointerCancel',\n 'MSGotPointerCapture',\n 'MSLostPointerCapture'\n ],\n register : function(target) {\n dispatcher.listen(target, this.events);\n },\n unregister: function(target) {\n dispatcher.unlisten(target, this.events); \n },\n POINTER_TYPES: [\n '',\n 'unavailable',\n 'touch',\ n 'pen',\n 'mouse'\n ],\n prepareEvent: function(inEvent) {\n var e = inEvent;\n if (HAS_BITMAP_TYPE) {\n e = dispatcher.cloneE vent(inEvent);\n e.pointerType = this.POINTER_TYPES[inEvent.pointerType]; \n }\n return e;\n },\n cleanup: function(id) {\n pointerma p['delete'](id);\n },\n MSPointerDown: function(inEvent) {\n pointerm ap.set(inEvent.pointerId, inEvent);\n var e = this.prepareEvent(inEvent);\n dispatcher.down(e);\n },\n MSPointerMove: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.move(e);\n },\n MSP ointerUp: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.up(e);\n this.cleanup(inEvent.pointerId);\n },\n MSPointer Out: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispa tcher.leaveOut(e);\n },\n MSPointerOver: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.enterOver(e);\n },\n MSPoi nterCancel: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.cancel(e);\n this.cleanup(inEvent.pointerId);\n },\n MSL ostPointerCapture: function(inEvent) {\n var e = dispatcher.makeEvent('lost pointercapture', inEvent);\n dispatcher.dispatchEvent(e);\n },\n MSGo tPointerCapture: function(inEvent) {\n var e = dispatcher.makeEvent('gotpoi ntercapture', inEvent);\n dispatcher.dispatchEvent(e);\n }\n };\n\n sc ope.msEvents = msEvents;\n})(window.PointerEventsPolyfill);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is g overned by a BSD-style\n * license that can be found in the LICENSE file.\n */\n \n/**\n * This module contains the handlers for native platform events.\n * From here, the dispatcher is called to create unified pointer events.\n * Included a re touch events (v1), mouse events, and MSPointerEvents.\n */\n(function(scope) {\n var dispatcher = scope.dispatcher;\n\n // only activate if this platform d oes not have pointer events\n if (window.navigator.pointerEnabled === undefined ) {\n Object.defineProperty(window.navigator, 'pointerEnabled', {value: true, enumerable: true});\n\n if (window.navigator.msPointerEnabled) {\n var tp = window.navigator.msMaxTouchPoints;\n Object.defineProperty(window.navi gator, 'maxTouchPoints', {\n value: tp,\n enumerable: true\n });\n dispatcher.registerSource('ms', scope.msEvents);\n } else {\n dispatcher.registerSource('mouse', scope.mouseEvents);\n if (window.ontouc hstart !== undefined) {\n dispatcher.registerSource('touch', scope.touchE vents);\n }\n }\n\n dispatcher.register(document);\n }\n})(window.Po interEventsPolyfill);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license tha t can be found in the LICENSE file.\n */\n\n(function(scope) {\n var dispatcher = scope.dispatcher;\n var n = window.navigator;\n var s, r;\n function asser tDown(id) {\n if (!dispatcher.pointermap.has(id)) {\n throw new Error('I nvalidPointerId');\n }\n }\n if (n.msPointerEnabled) {\n s = function(po interId) {\n assertDown(pointerId);\n this.msSetPointerCapture(pointer Id);\n };\n r = function(pointerId) {\n assertDown(pointerId);\n this.msReleasePointerCapture(pointerId);\n };\n } else {\n s = function setPointerCapture(pointerId) {\n assertDown(pointerId);\n dispatcher.s etCapture(pointerId, this);\n };\n r = function releasePointerCapture(poin terId) {\n assertDown(pointerId);\n dispatcher.releaseCapture(pointerI d, this);\n };\n }\n if (window.Element && !Element.prototype.setPointerCap ture) {\n Object.defineProperties(Element.prototype, {\n 'setPointerCapt ure': {\n value: s\n },\n 'releasePointerCapture': {\n v alue: r\n }\n });\n }\n})(window.PointerEventsPolyfill);\n","/*\n * Cop yright 2013 The Polymer Authors. All rights reserved.\n * Use of this source cod e is governed by a BSD-style\n * license that can be found in the LICENSE file.\ n */\n\n(function(scope) {\n /**\n * This class contains the gesture recogniz ers that create the PointerGesture\n * events.\n *\n * @class PointerGestu res\n * @static\n */\n scope = scope || {};\n scope.utils = {\n LCA: {\ n // Determines the lowest node in the ancestor chain of a and b\n fin d: function(a, b) {\n if (a === b) {\n return a;\n }\n // fast case, a is a direct descendant of b or vice versa\n if (a.co ntains) {\n if (a.contains(b)) {\n return a;\n }\n if (b.contains(a)) {\n return b;\n }\n }\n var adepth = this.depth(a);\n var bdepth = this.depth(b);\n var d = adepth - bdepth;\n if (d > 0) {\n a = this.walk(a, d);\n } else {\n b = this.walk(b, -d);\n }\n while(a && b && a !== b) {\n a = this.walk(a, 1);\n b = this.walk(b, 1); \n }\n return a;\n },\n walk: function(n, u) {\n for (var i = 0; i < u; i++) {\n n = n.parentNode;\n }\n r eturn n;\n },\n depth: function(n) {\n var d = 0;\n whil e(n) {\n d++;\n n = n.parentNode;\n }\n return d ;\n }\n }\n };\n scope.findLCA = function(a, b) {\n return scope.ut ils.LCA.find(a, b);\n }\n window.PointerGestures = scope;\n})(window.PointerGe stures);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be foun d in the LICENSE file.\n */\n\n/**\n * This module implements an map of pointer states\n */\n(function(scope) {\n var USE_MAP = window.Map && window.Map.protot ype.forEach;\n var POINTERS_FN = function(){ return this.size; };\n function P ointerMap() {\n if (USE_MAP) {\n var m = new Map();\n m.pointers = POINTERS_FN;\n return m;\n } else {\n this.keys = [];\n this.v alues = [];\n }\n }\n\n PointerMap.prototype = {\n set: function(inId, i nEvent) {\n var i = this.keys.indexOf(inId);\n if (i > -1) {\n this.values[i] = inEvent;\n } else {\n this.keys.push(inId);\n this.values.push(inEvent);\n }\n },\n has: function(inId) {\n return this.keys.indexOf(inId) > -1;\n },\n 'delete': function(inId) {\n var i = this.keys.indexOf(inId);\n if (i > -1) {\n this.keys.spl ice(i, 1);\n this.values.splice(i, 1);\n }\n },\n get: functio n(inId) {\n var i = this.keys.indexOf(inId);\n return this.values[i];\ n },\n clear: function() {\n this.keys.length = 0;\n this.values .length = 0;\n },\n // return value, key, map\n forEach: function(callb ack, thisArg) {\n this.values.forEach(function(v, i) {\n callback.ca ll(thisArg, v, this.keys[i], this);\n }, this);\n },\n pointers: func tion() {\n return this.keys.length;\n }\n };\n\n scope.PointerMap = Po interMap;\n})(window.PointerGestures);\n","/*\n * Copyright 2013 The Polymer Aut hors. All rights reserved.\n * Use of this source code is governed by a BSD-styl e\n * license that can be found in the LICENSE file.\n */\n\n(function(scope) {\ n var CLONE_PROPS = [\n // MouseEvent\n 'bubbles',\n 'cancelable',\n 'view',\n 'detail',\n 'screenX',\n 'screenY',\n 'clientX',\n 'c lientY',\n 'ctrlKey',\n 'altKey',\n 'shiftKey',\n 'metaKey',\n 'b utton',\n 'relatedTarget',\n // DOM Level 3\n 'buttons',\n // Pointe rEvent\n 'pointerId',\n 'width',\n 'height',\n 'pressure',\n 'til tX',\n 'tiltY',\n 'pointerType',\n 'hwTimestamp',\n 'isPrimary',\n // event instance\n 'type',\n 'target',\n 'currentTarget',\n 'scre enX',\n 'screenY',\n 'pageX',\n 'pageY',\n 'tapPrevented'\n ];\n\n var CLONE_DEFAULTS = [\n // MouseEvent\n false,\n false,\n null,\n null,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n false,\n false,\n 0,\n null,\n // DOM Level 3\n 0,\n // PointerEvent\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n '',\n 0,\n false,\n / / event instance\n '',\n null,\n null,\n 0,\n 0,\n 0,\n 0\n ];\n\n var dispatcher = {\n handledEvents: new WeakMap(),\n targets: ne w WeakMap(),\n handlers: {},\n recognizers: {},\n events: {},\n // A dd a new gesture recognizer to the event listeners.\n // Recognizer needs an `events` property.\n registerRecognizer: function(inName, inRecognizer) {\n var r = inRecognizer;\n this.recognizers[inName] = r;\n r.events.f orEach(function(e) {\n if (r[e]) {\n this.events[e] = true;\n var f = r[e].bind(r);\n this.addHandler(e, f);\n }\n }, this);\n },\n addHandler: function(inEvent, inFn) {\n var e = inE vent;\n if (!this.handlers[e]) {\n this.handlers[e] = [];\n }\n this.handlers[e].push(inFn);\n },\n // add event listeners for inTar get\n registerTarget: function(inTarget) {\n this.listen(Object.keys(thi s.events), inTarget);\n },\n // remove event listeners for inTarget\n u nregisterTarget: function(inTarget) {\n this.unlisten(Object.keys(this.even ts), inTarget);\n },\n // LISTENER LOGIC\n eventHandler: function(inEve nt) {\n if (this.handledEvents.get(inEvent)) {\n return;\n }\n var type = inEvent.type, fns = this.handlers[type];\n if (fns) {\n this.makeQueue(fns, inEvent);\n }\n this.handledEvents.set(inEvent , true);\n },\n // queue event for async dispatch\n makeQueue: function (inHandlerFns, inEvent) {\n // must clone events to keep the (possibly shad owed) target correct for\n // async dispatching\n var e = this.cloneEv ent(inEvent);\n setTimeout(this.runQueue.bind(this, inHandlerFns, e), 0);\n },\n // Dispatch the queued events\n runQueue: function(inHandlers, in Event) {\n this.currentPointerId = inEvent.pointerId;\n for (var i = 0 , f, l = inHandlers.length; (i < l) && (f = inHandlers[i]); i++) {\n f(in Event);\n }\n this.currentPointerId = 0;\n },\n // set up event listeners\n listen: function(inEvents, inTarget) {\n inEvents.forEach(fu nction(e) {\n this.addEvent(e, this.boundHandler, false, inTarget);\n }, this);\n },\n // remove event listeners\n unlisten: function(inEve nts) {\n inEvents.forEach(function(e) {\n this.removeEvent(e, this.b oundHandler, false, inTarget);\n }, this);\n },\n addEvent: function( inEventName, inEventHandler, inCapture, inTarget) {\n inTarget.addEventList ener(inEventName, inEventHandler, inCapture);\n },\n removeEvent: function (inEventName, inEventHandler, inCapture, inTarget) {\n inTarget.removeEvent Listener(inEventName, inEventHandler, inCapture);\n },\n // EVENT CREATION AND TRACKING\n // Creates a new Event of type `inType`, based on the informa tion in\n // `inEvent`.\n makeEvent: function(inType, inDict) {\n ret urn new PointerGestureEvent(inType, inDict);\n },\n /*\n * Returns a s napshot of inEvent, with writable properties.\n *\n * @method cloneEvent \n * @param {Event} inEvent An event that contains properties to copy.\n * @return {Object} An object containing shallow copies of `inEvent`'s\n * properties.\n */\n cloneEvent: function(inEvent) {\n var eventCopy = {}, p;\n for (var i = 0; i < CLONE_PROPS.length; i++) {\n p = CLO NE_PROPS[i];\n eventCopy[p] = inEvent[p] || CLONE_DEFAULTS[i];\n }\n return eventCopy;\n },\n // Dispatches the event to its target.\n dispatchEvent: function(inEvent, inTarget) {\n var t = inTarget || this.ta rgets.get(inEvent);\n if (t) {\n t.dispatchEvent(inEvent);\n if (inEvent.tapPrevented) {\n this.preventTap(this.currentPointerId);\n }\n }\n },\n asyncDispatchEvent: function(inEvent, inTarget) {\n var fn = function() {\n this.dispatchEvent(inEvent, inTarget);\n }.bind(this);\n setTimeout(fn, 0);\n },\n preventTap: function( inPointerId) {\n var t = this.recognizers.tap;\n if (t){\n t.pr eventTap(inPointerId);\n }\n }\n };\n dispatcher.boundHandler = dispat cher.eventHandler.bind(dispatcher);\n scope.dispatcher = dispatcher;\n var reg isterQueue = [];\n var immediateRegister = false;\n /**\n * Enable gesture e vents for a given scope, typically\n * [ShadowRoots](https://dvcs.w3.org/hg/we bcomponents/raw-file/tip/spec/shadow/index.html#shadow-root-object).\n *\n * @for PointerGestures\n * @method register\n * @param {ShadowRoot} scope A t op level scope to enable gesture\n * support on.\n */\n scope.register = fu nction(inScope) {\n if (immediateRegister) {\n var pe = window.PointerEv entsPolyfill;\n if (pe) {\n pe.register(inScope);\n }\n sc ope.dispatcher.registerTarget(inScope);\n } else {\n registerQueue.push( inScope);\n }\n };\n // wait to register scopes until recognizers load\n d ocument.addEventListener('DOMContentLoaded', function() {\n immediateRegister = true;\n registerQueue.push(document);\n registerQueue.forEach(scope.reg ister);\n });\n})(window.PointerGestures);\n","/*\n * Copyright 2013 The Polyme r Authors. All rights reserved.\n * Use of this source code is governed by a BSD -style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * This e vent is fired when a pointer is held down for 200ms.\n *\n * @module PointerGest ures\n * @submodule Events\n * @class hold\n */\n/**\n * Milliseconds pointer ha s been held down.\n * @type Number\n * @property holdTime\n */\n/**\n * Type of pointer that made the holding event.\n * @type String\n * @property pointerType\ n */\n/**\n * This event is fired every 200ms while a pointer is held down.\n *\ n * @class holdpulse\n * @extends hold\n */\n/**\n * This event is fired when a held pointer is released or moved.\n *\n * @class released\n */\n/**\n * Type of pointer that made the holding event.\n * @type String\n * @property pointerType \n */\n\n(function(scope) {\n var dispatcher = scope.dispatcher;\n var hold = {\n // wait at least HOLD_DELAY ms between hold and pulse events\n HOLD_DE LAY: 200,\n // pointer can move WIGGLE_THRESHOLD pixels before not counting a s a hold\n WIGGLE_THRESHOLD: 16,\n events: [\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointercancel'\n ],\n heldPoint er: null,\n holdJob: null,\n pulse: function() {\n var hold = Date.no w() - this.heldPointer.timeStamp;\n var type = this.held ? 'holdpulse' : 'h old';\n this.fireHold(type, hold);\n this.held = true;\n },\n ca ncel: function() {\n clearInterval(this.holdJob);\n if (this.held) {\n this.fireHold('release');\n }\n this.held = false;\n this .heldPointer = null;\n this.target = null;\n this.holdJob = null;\n },\n pointerdown: function(inEvent) {\n if (inEvent.isPrimary && !this. heldPointer) {\n this.heldPointer = inEvent;\n this.target = inEve nt.target;\n this.holdJob = setInterval(this.pulse.bind(this), this.HOLD_ DELAY);\n }\n },\n pointerup: function(inEvent) {\n if (this.hel dPointer && this.heldPointer.pointerId === inEvent.pointerId) {\n this.ca ncel();\n }\n },\n pointercancel: function(inEvent) {\n this.can cel();\n },\n pointermove: function(inEvent) {\n if (this.heldPointer && this.heldPointer.pointerId === inEvent.pointerId) {\n var x = inEvent .clientX - this.heldPointer.clientX;\n var y = inEvent.clientY - this.hel dPointer.clientY;\n if ((x * x + y * y) > this.WIGGLE_THRESHOLD) {\n this.cancel();\n }\n }\n },\n fireHold: function(inType, inHoldTime) {\n var p = {\n pointerType: this.heldPointer.pointerTyp e\n };\n if (inHoldTime) {\n p.holdTime = inHoldTime;\n }\ n var e = dispatcher.makeEvent(inType, p);\n dispatcher.dispatchEvent( e, this.target);\n if (e.tapPrevented) {\n dispatcher.preventTap(thi s.heldPointer.pointerId);\n }\n }\n };\n dispatcher.registerRecognizer ('hold', hold);\n})(window.PointerGestures);\n","/*\n * Copyright 2013 The Polym er Authors. All rights reserved.\n * Use of this source code is governed by a BS D-style\n * license that can be found in the LICENSE file.\n */\n\n/**\n * This event denotes the beginning of a series of tracking events.\n *\n * @module Poin terGestures\n * @submodule Events\n * @class trackstart\n */\n/**\n * Pixels mov ed in the x direction since trackstart.\n * @type Number\n * @property dx\n */\n /**\n * Pixes moved in the y direction since trackstart.\n * @type Number\n * @p roperty dy\n */\n/**\n * Pixels moved in the x direction since the last track.\n * @type Number\n * @property ddx\n */\n/**\n * Pixles moved in the y direction since the last track.\n * @type Number\n * @property ddy\n */\n/**\n * The clien tX position of the track gesture.\n * @type Number\n * @property clientX\n */\n/ **\n * The clientY position of the track gesture.\n * @type Number\n * @property clientY\n */\n/**\n * The pageX position of the track gesture.\n * @type Number \n * @property pageX\n */\n/**\n * The pageY position of the track gesture.\n * @type Number\n * @property pageY\n */\n/**\n * The screenX position of the track gesture.\n * @type Number\n * @property screenX\n */\n/**\n * The screenY posit ion of the track gesture.\n * @type Number\n * @property screenY\n */\n/**\n * T he last x axis direction of the pointer.\n * @type Number\n * @property xDirecti on\n */\n/**\n * The last y axis direction of the pointer.\n * @type Number\n * @property yDirection\n */\n/**\n * A shared object between all tracking events.\ n * @type Object\n * @property trackInfo\n */\n/**\n * The element currently und er the pointer.\n * @type Element\n * @property relatedTarget\n */\n/**\n * The type of pointer that make the track gesture.\n * @type String\n * @property poin terType\n */\n/**\n *\n * This event fires for all pointer movement being tracke d.\n *\n * @class track\n * @extends trackstart\n */\n/**\n * This event fires w hen the pointer is no longer being tracked.\n *\n * @class trackend\n * @extends trackstart\n */\n\n (function(scope) {\n var dispatcher = scope.dispatcher;\n var pointermap = new scope.PointerMap();\n var track = {\n events: [\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointe rcancel'\n ],\n WIGGLE_THRESHOLD: 4,\n clampDir: function(inDelta) { \n return inDelta > 0 ? 1 : -1;\n },\n calcPositionDelta: function (inA, inB) {\n var x = 0, y = 0;\n if (inA && inB) {\n x = i nB.pageX - inA.pageX;\n y = inB.pageY - inA.pageY;\n }\n ret urn {x: x, y: y};\n },\n fireTrack: function(inType, inEvent, inTracking Data) {\n var t = inTrackingData;\n var d = this.calcPositionDelta(t .downEvent, inEvent);\n var dd = this.calcPositionDelta(t.lastMoveEvent, i nEvent);\n if (dd.x) {\n t.xDirection = this.clampDir(dd.x);\n }\n if (dd.y) {\n t.yDirection = this.clampDir(dd.y);\n } \n var trackData = {\n dx: d.x,\n dy: d.y,\n ddx: dd.x,\n ddy: dd.y,\n clientX: inEvent.clientX,\n clientY : inEvent.clientY,\n pageX: inEvent.pageX,\n pageY: inEvent.page Y,\n screenX: inEvent.screenX,\n screenY: inEvent.screenY,\n xDirection: t.xDirection,\n yDirection: t.yDirection,\n tra ckInfo: t.trackInfo,\n relatedTarget: inEvent.target,\n pointerT ype: inEvent.pointerType\n };\n var e = dispatcher.makeEvent(inType, trackData);\n t.lastMoveEvent = inEvent;\n dispatcher.dispatchEvent (e, t.downTarget);\n },\n pointerdown: function(inEvent) {\n if (i nEvent.isPrimary && (inEvent.pointerType === 'mouse' ? inEvent.buttons === 1 : t rue)) {\n var p = {\n downEvent: inEvent,\n downTarg et: inEvent.target,\n trackInfo: {},\n lastMoveEvent: null,\ n xDirection: 0,\n yDirection: 0,\n tracking: fals e\n };\n pointermap.set(inEvent.pointerId, p);\n }\n } ,\n pointermove: function(inEvent) {\n var p = pointermap.get(inEvent. pointerId);\n if (p) {\n if (!p.tracking) {\n var d = th is.calcPositionDelta(p.downEvent, inEvent);\n var move = d.x * d.x + d .y * d.y;\n // start tracking only if finger moves more than WIGGLE_TH RESHOLD\n if (move > this.WIGGLE_THRESHOLD) {\n p.tracking = true;\n this.fireTrack('trackstart', p.downEvent, p);\n this.fireTrack('track', inEvent, p);\n }\n } else {\n this.fireTrack('track', inEvent, p);\n }\n }\n },\n p ointerup: function(inEvent) {\n var p = pointermap.get(inEvent.pointerId); \n if (p) {\n if (p.tracking) {\n this.fireTrack('tracke nd', inEvent, p);\n }\n pointermap.delete(inEvent.pointerId);\n }\n },\n pointercancel: function(inEvent) {\n this.pointerup (inEvent);\n }\n };\n dispatcher.registerRecognizer('track', track);\n } )(window.PointerGestures);\n","/*\n * Copyright 2013 The Polymer Authors. All ri ghts reserved.\n * Use of this source code is governed by a BSD-style\n * licens e that can be found in the LICENSE file.\n */\n\n/**\n * This event denotes a ra pid down/move/up sequence from a pointer.\n *\n * The event is sent to the first element the pointer went down on.\n *\n * @module PointerGestures\n * @submodul e Events\n * @class flick\n */\n/**\n * Signed velocity of the flick in the x di rection.\n * @property xVelocity\n * @type Number\n */\n/**\n * Signed velocity of the flick in the y direction.\n * @type Number\n * @property yVelocity\n */\n /**\n * Unsigned total velocity of the flick.\n * @type Number\n * @property vel ocity\n */\n/**\n * Angle of the flick in degrees, with 0 along the\n * positive x axis.\n * @type Number\n * @property angle\n */\n/**\n * Axis with the greate st absolute velocity. Denoted\n * with 'x' or 'y'.\n * @type String\n * @propert y majorAxis\n */\n/**\n * Type of the pointer that made the flick.\n * @type Str ing\n * @property pointerType\n */\n\n(function(scope) {\n var dispatcher = sco pe.dispatcher;\n var flick = {\n // TODO(dfreedman): value should be low eno ugh for low speed flicks, but\n // high enough to remove accidental flicks\n MIN_VELOCITY: 0.5 /* px/ms */,\n MAX_QUEUE: 4,\n moveQueue: [],\n ta rget: null,\n pointerId: null,\n events: [\n 'pointerdown',\n 'p ointermove',\n 'pointerup',\n 'pointercancel'\n ],\n pointerdown : function(inEvent) {\n if (inEvent.isPrimary && !this.pointerId) {\n this.pointerId = inEvent.pointerId;\n this.target = inEvent.target;\n this.addMove(inEvent);\n }\n },\n pointermove: function(inEvent ) {\n if (inEvent.pointerId === this.pointerId) {\n this.addMove(inE vent);\n }\n },\n pointerup: function(inEvent) {\n if (inEvent.p ointerId === this.pointerId) {\n this.fireFlick(inEvent);\n }\n this.cleanup();\n },\n pointercancel: function(inEvent) {\n this.cle anup();\n },\n cleanup: function() {\n this.moveQueue = [];\n th is.target = null;\n this.pointerId = null;\n },\n addMove: function(i nEvent) {\n if (this.moveQueue.length >= this.MAX_QUEUE) {\n this.mo veQueue.shift();\n }\n this.moveQueue.push(inEvent);\n },\n fire Flick: function(inEvent) {\n var e = inEvent;\n var l = this.moveQueue .length;\n var dt, dx, dy, tx, ty, tv, x = 0, y = 0, v = 0;\n // flick based off the fastest segment of movement\n for (var i = 0, m; i < l && (m = this.moveQueue[i]); i++) {\n dt = e.timeStamp - m.timeStamp;\n dx = e.clientX - m.clientX, dy = e.clientY - m.clientY;\n tx = dx / dt, t y = dy / dt, tv = Math.sqrt(tx * tx + ty * ty);\n if (tv > v) {\n x = tx, y = ty, v = tv;\n }\n }\n var ma = Math.abs(x) > Math .abs(y) ? 'x' : 'y';\n var a = this.calcAngle(x, y);\n if (Math.abs(v) >= this.MIN_VELOCITY) {\n var ev = dispatcher.makeEvent('flick', {\n xVelocity: x,\n yVelocity: y,\n velocity: v,\n angle: a,\n majorAxis: ma,\n pointerType: inEvent.pointerType\ n });\n dispatcher.dispatchEvent(ev, this.target);\n }\n } ,\n calcAngle: function(inX, inY) {\n return (Math.atan2(inY, inX) * 180 / Math.PI);\n }\n };\n dispatcher.registerRecognizer('flick', flick);\n})( window.PointerGestures);\n","/*\n * Copyright 2013 The Polymer Authors. All righ ts reserved.\n * Use of this source code is governed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/*\n * Basic strategy: find the f arthest apart points, use as diameter of circle\n * react to size change and rot ation of the chord\n */\n\n/**\n * @module PointerGestures\n * @submodule Events \n * @class pinch\n */\n/**\n * Scale of the pinch zoom gesture\n * @property sc ale\n * @type Number\n */\n/**\n * Center X position of pointers causing pinch\n * @property centerX\n * @type Number\n */\n/**\n * Center Y position of pointer s causing pinch\n * @property centerY\n * @type Number\n */\n\n/**\n * @module P ointerGestures\n * @submodule Events\n * @class rotate\n */\n/**\n * Angle (in d egrees) of rotation. Measured from starting positions of pointers.\n * @property angle\n * @type Number\n */\n/**\n * Center X position of pointers causing rota tion\n * @property centerX\n * @type Number\n */\n/**\n * Center Y position of p ointers causing rotation\n * @property centerY\n * @type Number\n */\n(function( scope) {\n var dispatcher = scope.dispatcher;\n var pointermap = new scope.Poi nterMap();\n var RAD_TO_DEG = 180 / Math.PI;\n var pinch = {\n events: [\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointercan cel'\n ],\n reference: {},\n pointerdown: function(ev) {\n pointer map.set(ev.pointerId, ev);\n if (pointermap.pointers() == 2) {\n var points = this.calcChord();\n var angle = this.calcAngle(points);\n this.reference = {\n angle: angle,\n diameter: points.diamet er,\n target: scope.findLCA(points.a.target, points.b.target)\n };\n }\n },\n pointerup: function(ev) {\n pointermap.delete(ev.p ointerId);\n },\n pointermove: function(ev) {\n if (pointermap.has(ev .pointerId)) {\n pointermap.set(ev.pointerId, ev);\n if (pointerma p.pointers() > 1) {\n this.calcPinchRotate();\n }\n }\n },\n pointercancel: function(ev) {\n this.pointerup(ev);\n },\n di spatchPinch: function(diameter, points) {\n var zoom = diameter / this.refe rence.diameter;\n var ev = dispatcher.makeEvent('pinch', {\n scale: zoom,\n centerX: points.center.x,\n centerY: points.center.y\n });\n dispatcher.dispatchEvent(ev, this.reference.target);\n },\n d ispatchRotate: function(angle, points) {\n var diff = Math.round((angle - t his.reference.angle) % 360);\n var ev = dispatcher.makeEvent('rotate', {\n angle: diff,\n centerX: points.center.x,\n centerY: points. center.y\n });\n dispatcher.dispatchEvent(ev, this.reference.target);\ n },\n calcPinchRotate: function() {\n var points = this.calcChord(); \n var diameter = points.diameter;\n var angle = this.calcAngle(points );\n if (diameter != this.reference.diameter) {\n this.dispatchPinch (diameter, points);\n }\n if (angle != this.reference.angle) {\n this.dispatchRotate(angle, points);\n }\n },\n calcChord: function( ) {\n var pointers = [];\n pointermap.forEach(function(p) {\n p ointers.push(p);\n });\n var dist = 0;\n var points = {};\n var x, y, d;\n for (var i = 0; i < pointers.length; i++) {\n var a = pointers[i];\n for (var j = i + 1; j < pointers.length; j++) {\n var b = pointers[j];\n x = Math.abs(a.clientX - b.clientX);\n y = Math.abs(a.clientY - b.clientY);\n d = x + y;\n if (d > dist) {\n dist = d;\n points = {a: a, b: b};\n }\ n }\n }\n x = Math.abs(points.a.clientX + points.b.clientX) / 2 ;\n y = Math.abs(points.a.clientY + points.b.clientY) / 2;\n points.ce nter = { x: x, y: y };\n points.diameter = dist;\n return points;\n },\n calcAngle: function(points) {\n var x = points.a.clientX - points. b.clientX;\n var y = points.a.clientY - points.b.clientY;\n return (36 0 + Math.atan2(y, x) * RAD_TO_DEG) % 360;\n },\n };\n dispatcher.registerRe cognizer('pinch', pinch);\n})(window.PointerGestures);\n","/*\n * Copyright 2013 The Polymer Authors. All rights reserved.\n * Use of this source code is govern ed by a BSD-style\n * license that can be found in the LICENSE file.\n */\n\n/** \n * This event is fired when a pointer quickly goes down and up, and is used to \n * denote activation.\n *\n * Any gesture event can prevent the tap event from being created by calling\n * `event.preventTap`.\n *\n * Any pointer event can prevent the tap by setting the `tapPrevented` property\n * on itself.\n *\n * @m odule PointerGestures\n * @submodule Events\n * @class tap\n */\n/**\n * X axis position of the tap.\n * @property x\n * @type Number\n */\n/**\n * Y axis posit ion of the tap.\n * @property y\n * @type Number\n */\n/**\n * Type of the point er that made the tap.\n * @property pointerType\n * @type String\n */\n(function (scope) {\n var dispatcher = scope.dispatcher;\n var pointermap = new scope.Po interMap();\n var tap = {\n events: [\n 'pointerdown',\n 'pointerm ove',\n 'pointerup',\n 'pointercancel',\n 'keyup'\n ],\n po interdown: function(inEvent) {\n if (inEvent.isPrimary && !inEvent.tapPreve nted) {\n pointermap.set(inEvent.pointerId, {\n target: inEvent. target,\n x: inEvent.clientX,\n y: inEvent.clientY\n }) ;\n }\n },\n pointermove: function(inEvent) {\n if (inEvent.isPr imary) {\n var start = pointermap.get(inEvent.pointerId);\n if (st art) {\n if (inEvent.tapPrevented) {\n pointermap.delete(inE vent.pointerId);\n }\n }\n }\n },\n pointerup: functi on(inEvent) {\n var start = pointermap.get(inEvent.pointerId);\n if (s tart && !inEvent.tapPrevented) {\n var t = scope.findLCA(start.target, in Event.target);\n if (t) {\n var e = dispatcher.makeEvent('tap', {\n x: inEvent.clientX,\n y: inEvent.clientY,\n detail: inEvent.detail,\n pointerType: inEvent.pointerType\n });\n dispatcher.dispatchEvent(e, t);\n }\n }\n poin termap.delete(inEvent.pointerId);\n },\n pointercancel: function(inEvent) {\n pointermap.delete(inEvent.pointerId);\n },\n keyup: function(inEv ent) {\n var code = inEvent.keyCode;\n // 32 == spacebar\n if (co de === 32) {\n var t = inEvent.target;\n if (!(t instanceof HTMLIn putElement || t instanceof HTMLTextAreaElement)) {\n dispatcher.dispatc hEvent(dispatcher.makeEvent('tap', {\n x: 0,\n y: 0,\n detail: 0,\n pointerType: 'unavailable'\n }), t);\n }\n }\n },\n preventTap: function(inPointerId) {\n pointe rmap.delete(inPointerId);\n }\n };\n dispatcher.registerRecognizer('tap', t ap);\n})(window.PointerGestures);\n","// Copyright 2011 Google Inc.\n//\n// Lice nsed under the Apache License, Version 2.0 (the \"License\");\n// you may not us e this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Un less required by applicable law or agreed to in writing, software\n// distribute d under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for t he specific language governing permissions and\n// limitations under the License .\n\n(function(global) {\n 'use strict';\n\n var filter = Array.prototype.filt er.call.bind(Array.prototype.filter);\n\n function getTreeScope(node) {\n wh ile (node.parentNode) {\n node = node.parentNode;\n }\n\n return type of node.getElementById === 'function' ? node : null;\n }\n\n // JScript does n ot have __proto__. We wrap all object literals with\n // createObject which use s Object.create, Object.defineProperty and\n // Object.getOwnPropertyDescriptor to create a new object that does the exact\n // same thing. The main downside to this solution is that we have to extract\n // all those property descriptors for IE.\n var createObject = ('__proto__' in {}) ?\n function(obj) { retu rn obj; } :\n function(obj) {\n var proto = obj.__proto__;\n if (!proto)\n return obj;\n var newObject = Object.create(proto) ;\n Object.getOwnPropertyNames(obj).forEach(function(name) {\n O bject.defineProperty(newObject, name,\n Object.get OwnPropertyDescriptor(obj, name));\n });\n return newObject;\n };\n\n // IE does not support have Document.prototype.contains.\n if (typeof document.contains != 'function') {\n Document.prototype.contains = function( node) {\n if (node === this || node.parentNode === this)\n return tr ue;\n return this.documentElement.contains(node);\n }\n }\n\n Node.pro totype.bind = function(name, observable) {\n console.error('Unhandled binding to Node: ', this, name, observable);\n };\n\n function unbind(node, name) {\n var bindings = node.bindings;\n if (!bindings) {\n node.bindings = { };\n return;\n }\n\n var binding = bindings[name];\n if (!binding) \n return;\n\n binding.close();\n bindings[name] = undefined;\n }\n\ n Node.prototype.unbind = function(name) {\n unbind(this, name);\n };\n\n Node.prototype.unbindAll = function() {\n if (!this.bindings)\n return;\ n var names = Object.keys(this.bindings);\n for (var i = 0; i < names.leng th; i++) {\n var binding = this.bindings[names[i]];\n if (binding)\n binding.close();\n }\n\n this.bindings = {};\n };\n\n function san itizeValue(value) {\n return value == null ? '' : value;\n }\n\n function u pdateText(node, value) {\n node.data = sanitizeValue(value);\n }\n\n functi on textBinding(node) {\n return function(value) {\n return updateText(no de, value);\n };\n }\n\n Text.prototype.bind = function(name, value, oneTim e) {\n if (name !== 'textContent')\n return Node.prototype.bind.call(thi s, name, value, oneTime);\n\n if (oneTime)\n return updateText(this, val ue);\n\n unbind(this, 'textContent');\n updateText(this, value.open(textBi nding(this)));\n return this.bindings.textContent = value;\n }\n\n function updateAttribute(el, name, conditional, value) {\n if (conditional) {\n if (value)\n el.setAttribute(name, '');\n else\n el.removeAtt ribute(name);\n return;\n }\n\n el.setAttribute(name, sanitizeValue(v alue));\n }\n\n function attributeBinding(el, name, conditional) {\n return function(value) {\n updateAttribute(el, name, conditional, value);\n }; \n }\n\n Element.prototype.bind = function(name, value, oneTime) {\n var co nditional = name[name.length - 1] == '?';\n if (conditional) {\n this.re moveAttribute(name);\n name = name.slice(0, -1);\n }\n\n if (oneTime) \n return updateAttribute(this, name, conditional, value);\n\n unbind(th is, name);\n updateAttribute(this, name, conditional,\n value.open(att ributeBinding(this, name, conditional)));\n\n return this.bindings[name] = va lue;\n };\n\n var checkboxEventType;\n (function() {\n // Attempt to featu re-detect which event (change or click) is fired first\n // for checkboxes.\n var div = document.createElement('div');\n var checkbox = div.appendChild (document.createElement('input'));\n checkbox.setAttribute('type', 'checkbox' );\n var first;\n var count = 0;\n checkbox.addEventListener('click', f unction(e) {\n count++;\n first = first || 'click';\n });\n chec kbox.addEventListener('change', function() {\n count++;\n first = firs t || 'change';\n });\n\n var event = document.createEvent('MouseEvent');\n event.initMouseEvent(\"click\", true, true, window, 0, 0, 0, 0, 0, false,\n false, false, false, 0, null);\n checkbox.dispatchEvent(event);\n / / WebKit/Blink don't fire the change event if the element is outside the\n // document, so assume 'change' for that case.\n checkboxEventType = count == 1 ? 'change' : first;\n })();\n\n function getEventForInputType(element) {\n switch (element.type) {\n case 'checkbox':\n return checkboxEventTy pe;\n case 'radio':\n case 'select-multiple':\n case 'select-one' :\n return 'change';\n default:\n return 'input';\n }\n } \n\n function updateInput(input, property, value, santizeFn) {\n input[prope rty] = (santizeFn || sanitizeValue)(value);\n }\n\n function inputBinding(inpu t, property, santizeFn) {\n return function(value) {\n return updateInpu t(input, property, value, santizeFn);\n }\n }\n\n function noop() {}\n\n f unction bindInputEvent(input, property, observable, postEventFn) {\n var even tType = getEventForInputType(input);\n\n function eventHandler() {\n obs ervable.setValue(input[property]);\n observable.discardChanges();\n (p ostEventFn || noop)(input);\n Platform.performMicrotaskCheckpoint();\n } \n input.addEventListener(eventType, eventHandler);\n\n var capturedClose = observable.close;\n observable.close = function() {\n if (!capturedClo se)\n return;\n input.removeEventListener(eventType, eventHandler);\ n\n observable.close = capturedClose;\n observable.close();\n cap turedClose = undefined;\n }\n }\n\n function booleanSanitize(value) {\n return Boolean(value);\n }\n\n // |element| is assumed to be an HTMLInputEleme nt with |type| == 'radio'.\n // Returns an array containing all radio buttons o ther than |element| that\n // have the same |name|, either in the form that |el ement| belongs to or,\n // if no form, in the document tree to which |element| belongs.\n //\n // This implementation is based upon the HTML spec definition of a\n // \"radio button group\":\n // http://www.whatwg.org/specs/web-apps/ current-work/multipage/number-state.html#radio-button-group\n //\n function ge tAssociatedRadioButtons(element) {\n if (element.form) {\n return filter (element.form.elements, function(el) {\n return el != element &&\n el.tagName == 'INPUT' &&\n el.type == 'radio' &&\n el .name == element.name;\n });\n } else {\n var treeScope = getTreeSc ope(element);\n if (!treeScope)\n return [];\n var radios = tre eScope.querySelectorAll(\n 'input[type=\"radio\"][name=\"' + element.na me + '\"]');\n return filter(radios, function(el) {\n return el != e lement && !el.form;\n });\n }\n }\n\n function checkedPostEvent(input) {\n // Only the radio button that is getting checked gets an event. We\n // therefore find all the associated radio buttons and update their\n // chec k binding manually.\n if (input.tagName === 'INPUT' &&\n input.type == = 'radio') {\n getAssociatedRadioButtons(input).forEach(function(radio) {\n var checkedBinding = radio.bindings.checked;\n if (checkedBinding ) {\n // Set the value directly to avoid an infinite call stack.\n checkedBinding.setValue(false);\n }\n });\n }\n }\n\n HTML InputElement.prototype.bind = function(name, value, oneTime) {\n if (name !== 'value' && name !== 'checked')\n return HTMLElement.prototype.bind.call(th is, name, value, oneTime);\n\n\n this.removeAttribute(name);\n var sanitiz eFn = name == 'checked' ? booleanSanitize : sanitizeValue;\n var postEventFn = name == 'checked' ? checkedPostEvent : noop;\n\n if (oneTime)\n return updateInput(this, name, value, sanitizeFn);\n\n unbind(this, name);\n bin dInputEvent(this, name, value, postEventFn);\n updateInput(this, name,\n value.open(inputBinding(this, name, sanitizeFn)),\n sa nitizeFn);\n\n return this.bindings[name] = value;\n }\n\n HTMLTextAreaElem ent.prototype.bind = function(name, value, oneTime) {\n if (name !== 'value') \n return HTMLElement.prototype.bind.call(this, name, value, oneTime);\n\n this.removeAttribute('value');\n\n if (oneTime)\n return updateInput( this, 'value', value);\n\n unbind(this, 'value');\n bindInputEvent(this, ' value', value);\n updateInput(this, 'value',\n value.open(inpu tBinding(this, 'value', sanitizeValue)));\n\n return this.bindings.value = va lue;\n }\n\n function updateOption(option, value) {\n var parentNode = opti on.parentNode;;\n var select;\n var selectBinding;\n var oldValue;\n if (parentNode instanceof HTMLSelectElement &&\n parentNode.bindings &&\ n parentNode.bindings.value) {\n select = parentNode;\n selectB inding = select.bindings.value;\n oldValue = select.value;\n }\n\n op tion.value = sanitizeValue(value);\n\n if (select && select.value != oldValue ) {\n selectBinding.setValue(select.value);\n selectBinding.discardCha nges();\n Platform.performMicrotaskCheckpoint();\n }\n }\n\n function optionBinding(option) {\n return function(value) {\n updateOption(option , value);\n }\n }\n\n HTMLOptionElement.prototype.bind = function(name, val ue, oneTime) {\n if (name !== 'value')\n return HTMLElement.prototype.bi nd.call(this, name, value, oneTime);\n\n this.removeAttribute('value');\n\n if (oneTime)\n return updateOption(this, value);\n\n unbind(this, 'val ue');\n bindInputEvent(this, 'value', value);\n updateOption(this, value.o pen(optionBinding(this)));\n return this.bindings.value = value;\n }\n\n HT MLSelectElement.prototype.bind = function(name, value, oneTime) {\n if (name === 'selectedindex')\n name = 'selectedIndex';\n\n if (name !== 'selecte dIndex' && name !== 'value')\n return HTMLElement.prototype.bind.call(this, name, value, oneTime);\n\n this.removeAttribute(name);\n\n if (oneTime)\n return updateInput(this, name, value);\n\n unbind(this, name);\n bin dInputEvent(this, name, value);\n updateInput(this, name,\n va lue.open(inputBinding(this, name)));\n return this.bindings[name] = value;\n }\n})(this);\n","// Copyright 2011 Google Inc.\n//\n// Licensed under the Apach e License, Version 2.0 (the \"License\");\n// you may not use this file except i n compliance with the License.\n// You may obtain a copy of the License at\n//\n // http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by app licable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF AN Y KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n(function(globa l) {\n 'use strict';\n\n function assert(v) {\n if (!v)\n throw new Er ror('Assertion failed');\n }\n\n var forEach = Array.prototype.forEach.call.bi nd(Array.prototype.forEach);\n\n function getFragmentRoot(node) {\n var p;\n while (p = node.parentNode) {\n node = p;\n }\n\n return node;\n }\n\n function searchRefId(node, id) {\n if (!id)\n return;\n\n var ref;\n var selector = '#' + id;\n while (!ref) {\n node = getFragmen tRoot(node);\n\n if (node.protoContent_)\n ref = node.protoContent_. querySelector(selector);\n else if (node.getElementById)\n ref = nod e.getElementById(id);\n\n if (ref || !node.templateCreator_)\n break \n\n node = node.templateCreator_;\n }\n\n return ref;\n }\n\n func tion getInstanceRoot(node) {\n while (node.parentNode) {\n node = node.p arentNode;\n }\n return node.templateCreator_ ? node : null;\n }\n\n var Map;\n if (global.Map && typeof global.Map.prototype.forEach === 'function') { \n Map = global.Map;\n } else {\n Map = function() {\n this.keys = [ ];\n this.values = [];\n };\n\n Map.prototype = {\n set: functio n(key, value) {\n var index = this.keys.indexOf(key);\n if (index < 0) {\n this.keys.push(key);\n this.values.push(value);\n } else {\n this.values[index] = value;\n }\n },\n\n get: function(key) {\n var index = this.keys.indexOf(key);\n if (index < 0)\n return;\n\n return this.values[index];\n },\n \n delete: function(key, value) {\n var index = this.keys.indexOf(ke y);\n if (index < 0)\n return false;\n\n this.keys.splice (index, 1);\n this.values.splice(index, 1);\n return true;\n },\n\n forEach: function(f, opt_this) {\n for (var i = 0; i < this.k eys.length; i++)\n f.call(opt_this || this, this.values[i], this.keys[i ], this);\n }\n };\n }\n\n // JScript does not have __proto__. We wrap all object literals with\n // createObject which uses Object.create, Object.de fineProperty and\n // Object.getOwnPropertyDescriptor to create a new object th at does the exact\n // same thing. The main downside to this solution is that w e have to extract\n // all those property descriptors for IE.\n var createObje ct = ('__proto__' in {}) ?\n function(obj) { return obj; } :\n functio n(obj) {\n var proto = obj.__proto__;\n if (!proto)\n ret urn obj;\n var newObject = Object.create(proto);\n Object.getOwnPr opertyNames(obj).forEach(function(name) {\n Object.defineProperty(newOb ject, name,\n Object.getOwnPropertyDescriptor(obj, name));\n });\n return newObject;\n };\n\n // IE does not s upport have Document.prototype.contains.\n if (typeof document.contains != 'fun ction') {\n Document.prototype.contains = function(node) {\n if (node == = this || node.parentNode === this)\n return true;\n return this.doc umentElement.contains(node);\n }\n }\n\n var BIND = 'bind';\n var REPEAT = 'repeat';\n var IF = 'if';\n\n var templateAttributeDirectives = {\n 'temp late': true,\n 'repeat': true,\n 'bind': true,\n 'ref': true\n };\n\n var semanticTemplateElements = {\n 'THEAD': true,\n 'TBODY': true,\n ' TFOOT': true,\n 'TH': true,\n 'TR': true,\n 'TD': true,\n 'COLGROUP' : true,\n 'COL': true,\n 'CAPTION': true,\n 'OPTION': true,\n 'OPTGR OUP': true\n };\n\n var hasTemplateElement = typeof HTMLTemplateElement !== 'u ndefined';\n\n var allTemplatesSelectors = 'template, ' +\n Object.keys(se manticTemplateElements).map(function(tagName) {\n return tagName.toLowerC ase() + '[template]';\n }).join(', ');\n\n function isSVGTemplate(el) {\n return el.tagName == 'template' &&\n el.namespaceURI == 'http://www .w3.org/2000/svg';\n }\n\n function isHTMLTemplate(el) {\n return el.tagNam e == 'TEMPLATE' &&\n el.namespaceURI == 'http://www.w3.org/1999/xhtml' ;\n }\n\n function isAttributeTemplate(el) {\n return Boolean(semanticTempl ateElements[el.tagName] &&\n el.hasAttribute('template'));\n }\n\n function isTemplate(el) {\n if (el.isTemplate_ === undefined)\n e l.isTemplate_ = el.tagName == 'TEMPLATE' || isAttributeTemplate(el);\n\n retu rn el.isTemplate_;\n }\n\n // FIXME: Observe templates being added/removed fro m documents\n // FIXME: Expose imperative API to decorate and observe templates in\n // \"disconnected tress\" (e.g. ShadowRoot)\n document.addEventListener( 'DOMContentLoaded', function(e) {\n bootstrapTemplatesRecursivelyFrom(documen t);\n // FIXME: Is this needed? Seems like it shouldn't be.\n Platform.per formMicrotaskCheckpoint();\n }, false);\n\n function forAllTemplatesFrom(node, fn) {\n var subTemplates = node.querySelectorAll(allTemplatesSelectors);\n\n if (isTemplate(node))\n fn(node)\n forEach(subTemplates, fn);\n }\n \n function bootstrapTemplatesRecursivelyFrom(node) {\n function bootstrap(t emplate) {\n if (!HTMLTemplateElement.decorate(template))\n bootstra pTemplatesRecursivelyFrom(template.content);\n }\n\n forAllTemplatesFrom(n ode, bootstrap);\n }\n\n if (!hasTemplateElement) {\n /**\n * This repr esents a <template> element.\n * @constructor\n * @extends {HTMLElement} \n */\n global.HTMLTemplateElement = function() {\n throw TypeError( 'Illegal constructor');\n };\n }\n\n var hasProto = '__proto__' in {};\n\n function mixin(to, from) {\n Object.getOwnPropertyNames(from).forEach(functi on(name) {\n Object.defineProperty(to, name,\n O bject.getOwnPropertyDescriptor(from, name));\n });\n }\n\n // http://dvcs.w 3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html#dfn-template-conte nts-owner\n function getOrCreateTemplateContentsOwner(template) {\n var doc = template.ownerDocument\n if (!doc.defaultView)\n return doc;\n var d = doc.templateContentsOwner_;\n if (!d) {\n // TODO(arv): This should either be a Document or HTMLDocument depending\n // on doc.\n d = doc. implementation.createHTMLDocument('');\n while (d.lastChild) {\n d.r emoveChild(d.lastChild);\n }\n doc.templateContentsOwner_ = d;\n }\ n return d;\n }\n\n function getTemplateStagingDocument(template) {\n if (!template.stagingDocument_) {\n var owner = template.ownerDocument;\n if (!owner.stagingDocument_) {\n owner.stagingDocument_ = owner.impleme ntation.createHTMLDocument('');\n owner.stagingDocument_.stagingDocument_ = owner.stagingDocument_;\n }\n\n template.stagingDocument_ = owner.s tagingDocument_;\n }\n\n return template.stagingDocument_;\n }\n\n // Fo r non-template browsers, the parser will disallow <template> in certain\n // lo cations, so we allow \"attribute templates\" which combine the template\n // el ement with the top-level container node of the content, e.g.\n //\n // <tr t emplate repeat=\"{{ foo }}\"\" class=\"bar\"><td>Bar</td></tr>\n //\n // becom es\n //\n // <template repeat=\"{{ foo }}\">\n // + #document-fragment\n // + <tr class=\"bar\">\n // + <td>Bar</td>\n //\n function extrac tTemplateFromAttributeTemplate(el) {\n var template = el.ownerDocument.create Element('template');\n el.parentNode.insertBefore(template, el);\n\n var a ttribs = el.attributes;\n var count = attribs.length;\n while (count-- > 0 ) {\n var attrib = attribs[count];\n if (templateAttributeDirectives[a ttrib.name]) {\n if (attrib.name !== 'template')\n template.setA ttribute(attrib.name, attrib.value);\n el.removeAttribute(attrib.name);\n }\n }\n\n return template;\n }\n\n function extractTemplateFromSVG Template(el) {\n var template = el.ownerDocument.createElement('template');\n el.parentNode.insertBefore(template, el);\n\n var attribs = el.attributes ;\n var count = attribs.length;\n while (count-- > 0) {\n var attrib = attribs[count];\n template.setAttribute(attrib.name, attrib.value);\n el.removeAttribute(attrib.name);\n }\n\n el.parentNode.removeChild(el);\ n return template;\n }\n\n function liftNonNativeTemplateChildrenIntoConten t(template, el, useRoot) {\n var content = template.content;\n if (useRoot ) {\n content.appendChild(el);\n return;\n }\n\n var child;\n while (child = el.firstChild) {\n content.appendChild(child);\n }\n }\ n\n /**\n * Ensures proper API and content model for template elements.\n * @param {HTMLTemplateElement} opt_instanceRef The template element which\n * |el| template element will return as the value of its ref(), and whose\n * content will be used as source when createInstance() is invoked.\n */\n H TMLTemplateElement.decorate = function(el, opt_instanceRef) {\n if (el.templa teIsDecorated_)\n return false;\n\n var templateElement = el;\n templ ateElement.templateIsDecorated_ = true;\n\n var isNativeHTMLTemplate = isHTML Template(templateElement) &&\n hasTemplateElement; \n var bootstrapContents = isNativeHTMLTemplate;\n var liftContents = !isN ativeHTMLTemplate;\n var liftRoot = false;\n\n if (!isNativeHTMLTemplate) {\n if (isAttributeTemplate(templateElement)) {\n assert(!opt_instan ceRef);\n templateElement = extractTemplateFromAttributeTemplate(el);\n templateElement.templateIsDecorated_ = true;\n isNativeHTMLTemplate = hasTemplateElement;\n liftRoot = true;\n } else if (isSVGTemplate (templateElement)) {\n templateElement = extractTemplateFromSVGTemplate(e l);\n templateElement.templateIsDecorated_ = true;\n isNativeHTMLT emplate = hasTemplateElement;\n }\n }\n\n if (!isNativeHTMLTemplate) {\n fixTemplateElementPrototype(templateElement);\n var doc = getOrCre ateTemplateContentsOwner(templateElement);\n templateElement.content_ = doc .createDocumentFragment();\n }\n\n if (opt_instanceRef) {\n // templa te is contained within an instance, its direct content must be\n // empty\n templateElement.instanceRef_ = opt_instanceRef;\n } else if (liftConten ts) {\n liftNonNativeTemplateChildrenIntoContent(templateElement,\n el,\n liftRoot);\n } else if (bootstrapContents) {\n bootstrapTempl atesRecursivelyFrom(templateElement.content);\n }\n\n return true;\n };\n \n // TODO(rafaelw): This used to decorate recursively all templates from a giv en\n // node. This happens by default on 'DOMContentLoaded', but may be needed\ n // in subtrees not descendent from document (e.g. ShadowRoot).\n // Review w hether this is the right public API.\n HTMLTemplateElement.bootstrap = bootstra pTemplatesRecursivelyFrom;\n\n var htmlElement = global.HTMLUnknownElement || H TMLElement;\n\n var contentDescriptor = {\n get: function() {\n return this.content_;\n },\n enumerable: true,\n configurable: true\n };\n\n if (!hasTemplateElement) {\n // Gecko is more picky with the prototype than WebKit. Make sure to use the\n // same prototype as created in the constructo r.\n HTMLTemplateElement.prototype = Object.create(htmlElement.prototype);\n\ n Object.defineProperty(HTMLTemplateElement.prototype, 'content',\n contentDescriptor);\n }\n\n function fixTemplateElementPrototy pe(el) {\n if (hasProto)\n el.__proto__ = HTMLTemplateElement.prototype; \n else\n mixin(el, HTMLTemplateElement.prototype);\n }\n\n function e nsureSetModelScheduled(template) {\n if (!template.setModelFn_) {\n temp late.setModelFn_ = function() {\n template.setModelFnScheduled_ = false;\ n var map = getBindings(template,\n template.delegate_ && temp late.delegate_.prepareBinding);\n processBindings(template, map, template .model_);\n };\n }\n\n if (!template.setModelFnScheduled_) {\n t emplate.setModelFnScheduled_ = true;\n Observer.runEOM_(template.setModelFn _);\n }\n }\n\n mixin(HTMLTemplateElement.prototype, {\n processBindingD irectives_: function(directives) {\n if (this.iterator_)\n this.iter ator_.closeDeps();\n\n if (!directives.if && !directives.bind && !directive s.repeat) {\n if (this.iterator_) {\n this.iterator_.close();\n this.iterator_ = undefined;\n this.bindings.iterator = undefin ed;\n }\n\n return;\n }\n\n if (!this.iterator_) {\n this.iterator_ = new TemplateIterator(this);\n this.bindings = this.b indings || {};\n this.bindings.iterator = this.iterator_;\n }\n\n this.iterator_.updateDependencies(directives, this.model_);\n return thi s.iterator_;\n },\n\n createInstance: function(model, bindingDelegate, del egate_,\n instanceBindings_) {\n if (bindingDel egate)\n delegate_ = this.newDelegate_(bindingDelegate);\n\n var con tent = this.ref.content;\n var map = this.bindingMap_;\n if (!map || m ap.content !== content) {\n // TODO(rafaelw): Setup a MutationObserver on content to detect\n // when the instanceMap is invalid.\n map = c reateInstanceBindingMap(content,\n delegate_ && delegate_.prepareBind ing) || [];\n map.content = content;\n this.bindingMap_ = map;\n }\n\n var stagingDocument = getTemplateStagingDocument(this);\n va r instance = stagingDocument.createDocumentFragment();\n instance.templateC reator_ = this;\n instance.protoContent_ = content;\n\n var instanceRe cord = {\n firstNode: null,\n lastNode: null,\n model: mode l\n };\n\n var i = 0;\n for (var child = content.firstChild; chil d; child = child.nextSibling) {\n var clone = cloneAndBindInstance(child, instance, stagingDocument,\n map.childr en[i++],\n model,\n delegate_,\n instanc eBindings_);\n clone.templateInstance_ = instanceRecord;\n }\n\n instanceRecord.firstNode = instance.firstChild;\n instanceRecord.lastNode = instance.lastChild;\n instance.templateCreator_ = undefined;\n inst ance.protoContent_ = undefined;\n return instance;\n },\n\n get model () {\n return this.model_;\n },\n\n set model(model) {\n this.mo del_ = model;\n ensureSetModelScheduled(this);\n },\n\n get bindingDe legate() {\n return this.delegate_ && this.delegate_.raw;\n },\n\n se tDelegate_: function(delegate) {\n this.delegate_ = delegate;\n this.b indingMap_ = undefined;\n if (this.iterator_) {\n this.iterator_.ins tancePositionChangedFn_ = undefined;\n this.iterator_.instanceModelFn_ = undefined;\n }\n },\n\n newDelegate_: function(bindingDelegate) {\n if (!bindingDelegate)\n return {};\n\n function delegateFn(name) {\n var fn = bindingDelegate && bindingDelegate[name];\n if (type of fn != 'function')\n return;\n\n return function() {\n return fn.apply(bindingDelegate, arguments);\n };\n }\n\n ret urn {\n raw: bindingDelegate,\n prepareBinding: delegateFn('prepar eBinding'),\n prepareInstanceModel: delegateFn('prepareInstanceModel'),\n prepareInstancePositionChanged:\n delegateFn('prepareInstance PositionChanged')\n };\n },\n\n // TODO(rafaelw): Assigning .bindingD elegate always succeeds. It may\n // make sense to issue a warning or even th row if the template is already\n // \"activated\", since this would be a stra nge thing to do.\n set bindingDelegate(bindingDelegate) {\n this.setDele gate_(this.newDelegate_(bindingDelegate));\n },\n\n get ref() {\n var ref = searchRefId(this, this.getAttribute('ref'));\n if (!ref)\n re f = this.instanceRef_;\n\n if (!ref)\n return this;\n\n var nex tRef = ref.ref;\n return nextRef ? nextRef : ref;\n }\n });\n\n // Ret urns\n // a) undefined if there are no mustaches.\n // b) [TEXT, (ONE_TIME ?, PATH, DELEGATE_FN, TEXT)+] if there is at least one mustache.\n function par seMustaches(s, name, node, prepareBindingFn) {\n if (!s || !s.length)\n return;\n\n var tokens;\n var length = s.length;\n var startIndex = 0, lastIndex = 0, endIndex = 0;\n var onlyOneTime = true;\n while (lastIndex < length) {\n var startIndex = s.indexOf('{{', lastIndex);\n var oneTi meStart = s.indexOf('[[', lastIndex);\n var oneTime = false;\n var ter minator = '}}';\n\n if (oneTimeStart >= 0 &&\n (startIndex < 0 || oneTimeStart < startIndex)) {\n startIndex = oneTimeStart;\n oneTi me = true;\n terminator = ']]';\n }\n\n endIndex = startIndex < 0 ? -1 : s.indexOf(terminator, startIndex + 2);\n\n if (endIndex < 0) {\n if (!tokens)\n return;\n\n tokens.push(s.slice(lastIndex) ); // TEXT\n break;\n }\n\n tokens = tokens || [];\n token s.push(s.slice(lastIndex, startIndex)); // TEXT\n var pathString = s.slice( startIndex + 2, endIndex).trim();\n tokens.push(oneTime); // ONE_TIME?\n onlyOneTime = onlyOneTime && oneTime;\n tokens.push(Path.get(pathString) ); // PATH\n var delegateFn = prepareBindingFn &&\n p repareBindingFn(pathString, name, node);\n tokens.push(delegateFn); // DELE GATE_FN\n lastIndex = endIndex + 2;\n }\n\n if (lastIndex === length) \n tokens.push(''); // TEXT\n\n tokens.hasOnePath = tokens.length === 5; \n tokens.isSimplePath = tokens.hasOnePath &&\n toke ns[0] == '' &&\n tokens[4] == '';\n tokens.onlyOneTi me = onlyOneTime;\n\n tokens.combinator = function(values) {\n var newVa lue = tokens[0];\n\n for (var i = 1; i < tokens.length; i += 4) {\n var value = tokens.hasOnePath ? values : values[(i - 1) / 4];\n if (value !== undefined)\n newValue += value;\n newValue += tokens[i + 3] ;\n }\n\n return newValue;\n }\n\n return tokens;\n };\n\n fun ction processOneTimeBinding(name, tokens, node, model) {\n if (tokens.hasOneP ath) {\n var delegateFn = tokens[3];\n var value = delegateFn ? delega teFn(model, node, true) :\n tokens[2].getValueFrom (model);\n return tokens.isSimplePath ? value : tokens.combinator(value);\n }\n\n var values = [];\n for (var i = 1; i < tokens.length; i += 4) {\ n var delegateFn = tokens[i + 2];\n values[(i - 1) / 4] = delegateFn ? delegateFn(model, node) :\n tokens[i + 1].getValueFrom(model);\n }\ n\n return tokens.combinator(values);\n }\n\n function processSinglePathBin ding(name, tokens, node, model) {\n var delegateFn = tokens[3];\n var obse rver = delegateFn ? delegateFn(model, node, false) :\n new PathObserver(m odel, tokens[2]);\n\n return tokens.isSimplePath ? observer :\n new Ob serverTransform(observer, tokens.combinator);\n }\n\n function processBinding( name, tokens, node, model) {\n if (tokens.onlyOneTime)\n return processO neTimeBinding(name, tokens, node, model);\n\n if (tokens.hasOnePath)\n r eturn processSinglePathBinding(name, tokens, node, model);\n\n var observer = new CompoundObserver();\n\n for (var i = 1; i < tokens.length; i += 4) {\n var oneTime = tokens[i];\n var delegateFn = tokens[i + 2];\n\n if (delegateFn) {\n var value = delegateFn(model, node, oneTime);\n i f (oneTime)\n observer.addPath(value)\n else\n observer .addObserver(value);\n continue;\n }\n\n var path = tokens[i + 1];\n if (oneTime)\n observer.addPath(path.getValueFrom(model))\n else\n observer.addPath(model, path);\n }\n\n return new Observe rTransform(observer, tokens.combinator);\n }\n\n function processBindings(node , bindings, model, instanceBindings) {\n for (var i = 0; i < bindings.length; i += 2) {\n var name = bindings[i]\n var tokens = bindings[i + 1];\n var value = processBinding(name, tokens, node, model);\n var binding = node.bind(name, value, tokens.onlyOneTime);\n if (binding && instanceBindi ngs)\n instanceBindings.push(binding);\n }\n\n if (!bindings.isTemp late)\n return;\n\n node.model_ = model;\n var iter = node.processBin dingDirectives_(bindings);\n if (instanceBindings && iter)\n instanceBin dings.push(iter);\n }\n\n function parseWithDefault(el, name, prepareBindingFn ) {\n var v = el.getAttribute(name);\n return parseMustaches(v == '' ? '{{ }}' : v, name, el, prepareBindingFn);\n }\n\n function parseAttributeBindings( element, prepareBindingFn) {\n assert(element);\n\n var bindings = [];\n var ifFound = false;\n var bindFound = false;\n\n for (var i = 0; i < el ement.attributes.length; i++) {\n var attr = element.attributes[i];\n var name = attr.name;\n var value = attr.value;\n\n // Allow bindings expressed in attributes to be prefixed with underbars.\n // We do this to a llow correct semantics for browsers that don't implement\n // <template> wh ere certain attributes might trigger side-effects -- and\n // for IE which sanitizes certain attributes, disallowing mustache\n // replacements in the ir text.\n while (name[0] === '_') {\n name = name.substring(1);\n }\n\n if (isTemplate(element) &&\n (name === IF || name === BI ND || name === REPEAT)) {\n continue;\n }\n\n var tokens = pars eMustaches(value, name, element,\n prepareBindi ngFn);\n if (!tokens)\n continue;\n\n bindings.push(name, token s);\n }\n\n if (isTemplate(element)) {\n bindings.isTemplate = true;\ n bindings.if = parseWithDefault(element, IF, prepareBindingFn);\n bin dings.bind = parseWithDefault(element, BIND, prepareBindingFn);\n bindings. repeat = parseWithDefault(element, REPEAT, prepareBindingFn);\n\n if (bindi ngs.if && !bindings.bind && !bindings.repeat)\n bindings.bind = parseMust aches('{{}}', BIND, element, prepareBindingFn);\n }\n\n return bindings;\n }\n\n function getBindings(node, prepareBindingFn) {\n if (node.nodeType = == Node.ELEMENT_NODE)\n return parseAttributeBindings(node, prepareBindingF n);\n\n if (node.nodeType === Node.TEXT_NODE) {\n var tokens = parseMust aches(node.data, 'textContent', node,\n prepare BindingFn);\n if (tokens)\n return ['textContent', tokens];\n }\n \n return [];\n }\n\n function cloneAndBindInstance(node, parent, stagingDo cument, bindings, model,\n delegate,\n instanceBindings,\n instance Record) {\n var clone = parent.appendChild(stagingDocument.importNode(node, f alse));\n\n var i = 0;\n for (var child = node.firstChild; child; child = child.nextSibling) {\n cloneAndBindInstance(child, clone, stagingDocument,\ n bindings.children[i++],\n model,\n delegate,\n ins tanceBindings);\n }\n\n if (bindings.isTemplate) {\n HTMLTemplateElem ent.decorate(clone, node);\n if (delegate)\n clone.setDelegate_(dele gate);\n }\n\n processBindings(clone, bindings, model, instanceBindings);\ n return clone;\n }\n\n function createInstanceBindingMap(node, prepareBind ingFn) {\n var map = getBindings(node, prepareBindingFn);\n map.children = {};\n var index = 0;\n for (var child = node.firstChild; child; child = c hild.nextSibling) {\n map.children[index++] = createInstanceBindingMap(chil d, prepareBindingFn);\n }\n\n return map;\n }\n\n Object.defineProperty( Node.prototype, 'templateInstance', {\n get: function() {\n var instance = this.templateInstance_;\n return instance ? instance :\n (this. parentNode ? this.parentNode.templateInstance : undefined);\n }\n });\n\n f unction TemplateIterator(templateElement) {\n this.closed = false;\n this. templateElement_ = templateElement;\n\n // Flattened array of tuples:\n // <instanceTerminatorNode, [bindingsSetupByInstance]>\n this.terminators = [ ];\n\n this.deps = undefined;\n this.iteratedValue = [];\n this.present Value = undefined;\n this.arrayObserver = undefined;\n }\n\n TemplateIterat or.prototype = {\n closeDeps: function() {\n var deps = this.deps;\n if (deps) {\n if (deps.ifOneTime === false)\n deps.ifValue.clo se();\n if (deps.oneTime === false)\n deps.value.close();\n }\n },\n\n updateDependencies: function(directives, model) {\n this. closeDeps();\n\n var deps = this.deps = {};\n var template = this.temp lateElement_;\n\n if (directives.if) {\n deps.hasIf = true;\n deps.ifOneTime = directives.if.onlyOneTime;\n deps.ifValue = processBind ing(IF, directives.if, template, model);\n\n // oneTime if & predicate is false. nothing else to do.\n if (deps.ifOneTime && !deps.ifValue) {\n this.updateIteratedValue();\n return;\n }\n\n if ( !deps.ifOneTime)\n deps.ifValue.open(this.updateIteratedValue, this);\n }\n\n if (directives.repeat) {\n deps.repeat = true;\n deps.oneTime = directives.repeat.onlyOneTime;\n deps.value = processBindi ng(REPEAT, directives.repeat, template, model);\n } else {\n deps.re peat = false;\n deps.oneTime = directives.bind.onlyOneTime;\n deps .value = processBinding(BIND, directives.bind, template, model);\n }\n\n if (!deps.oneTime)\n deps.value.open(this.updateIteratedValue, this);\ n\n this.updateIteratedValue();\n },\n\n updateIteratedValue: functio n() {\n if (this.deps.hasIf) {\n var ifValue = this.deps.ifValue;\n if (!this.deps.ifOneTime)\n ifValue = ifValue.discardChanges();\ n if (!ifValue) {\n this.valueChanged();\n return;\n }\n }\n\n var value = this.deps.value;\n if (!this.deps.oneT ime)\n value = value.discardChanges();\n if (!this.deps.repeat)\n value = [value];\n var observe = this.deps.repeat &&\n !this.deps.oneTime &&\n Array.isArray(value);\n this .valueChanged(value, observe);\n },\n\n valueChanged: function(value, obse rveValue) {\n if (!Array.isArray(value))\n value = [];\n\n if ( value === this.iteratedValue)\n return;\n\n this.unobserve();\n this.presentValue = value;\n if (observeValue) {\n this.arrayObserv er = new ArrayObserver(this.presentValue);\n this.arrayObserver.open(this .handleSplices, this);\n }\n\n this.handleSplices(ArrayObserver.calcul ateSplices(this.presentValue,\n this.iteratedValue));\n },\n\n getTerminatorAt: function(index) {\n if (index == -1)\n return this.templateElement_;\n var termina tor = this.terminators[index*2];\n if (terminator.nodeType !== Node.ELEMENT _NODE ||\n this.templateElement_ === terminator) {\n return term inator;\n }\n\n var subIterator = terminator.iterator_;\n if (!su bIterator)\n return terminator;\n\n return subIterator.getTerminator At(subIterator.terminators.length/2 - 1);\n },\n\n // TODO(rafaelw): If we inserting sequences of instances we can probably\n // avoid lots of calls to getTerminatorAt(), or cache its result.\n insertInstanceAt: function(index, fragment, instanceNodes,\n instanceBindings) {\n var previousTerminator = this.getTerminatorAt(index - 1);\n var termina tor = previousTerminator;\n if (fragment)\n terminator = fragment.la stChild || terminator;\n else if (instanceNodes)\n terminator = inst anceNodes[instanceNodes.length - 1] || terminator;\n\n this.terminators.spl ice(index*2, 0, terminator, instanceBindings);\n var parent = this.template Element_.parentNode;\n var insertBeforeNode = previousTerminator.nextSiblin g;\n\n if (fragment) {\n parent.insertBefore(fragment, insertBeforeN ode);\n } else if (instanceNodes) {\n for (var i = 0; i < instanceNo des.length; i++)\n parent.insertBefore(instanceNodes[i], insertBeforeNo de);\n }\n },\n\n extractInstanceAt: function(index) {\n var ins tanceNodes = [];\n var previousTerminator = this.getTerminatorAt(index - 1) ;\n var terminator = this.getTerminatorAt(index);\n instanceNodes.inst anceBindings = this.terminators[index*2 + 1];\n this.terminators.splice(ind ex*2, 2);\n\n var parent = this.templateElement_.parentNode;\n while ( terminator !== previousTerminator) {\n var node = previousTerminator.next Sibling;\n if (node == terminator)\n terminator = previousTermin ator;\n\n parent.removeChild(node);\n instanceNodes.push(node);\n }\n\n return instanceNodes;\n },\n\n getDelegateFn: function(fn) {\n fn = fn && fn(this.templateElement_);\n return typeof fn === 'fun ction' ? fn : null;\n },\n\n handleSplices: function(splices) {\n if (this.closed || !splices.length)\n return;\n\n var template = this.t emplateElement_;\n\n if (!template.parentNode) {\n this.close();\n return;\n }\n\n ArrayObserver.applySplices(this.iteratedValue, t his.presentValue,\n splices);\n\n var deleg ate = template.delegate_;\n if (this.instanceModelFn_ === undefined) {\n this.instanceModelFn_ =\n this.getDelegateFn(delegate && delegat e.prepareInstanceModel);\n }\n\n if (this.instancePositionChangedFn_ = == undefined) {\n this.instancePositionChangedFn_ =\n this.get DelegateFn(delegate &&\n delegate.prepareInstanceP ositionChanged);\n }\n\n var instanceCache = new Map;\n var remov eDelta = 0;\n splices.forEach(function(splice) {\n splice.removed.fo rEach(function(model) {\n var instanceNodes =\n this.extra ctInstanceAt(splice.index + removeDelta);\n instanceCache.set(model, in stanceNodes);\n }, this);\n\n removeDelta -= splice.addedCount;\n }, this);\n\n splices.forEach(function(splice) {\n var addIndex = splice.index;\n for (; addIndex < splice.index + splice.addedCount; ad dIndex++) {\n var model = this.iteratedValue[addIndex];\n var fragment = undefined;\n var instanceNodes = instanceCache.get(model);\n var instanceBindings;\n if (instanceNodes) {\n ins tanceCache.delete(model);\n instanceBindings = instanceNodes.instance Bindings;\n } else {\n instanceBindings = [];\n i f (this.instanceModelFn_)\n model = this.instanceModelFn_(model);\n \n if (model !== undefined) {\n fragment = template.crea teInstance(model, undefined, delegate,\n instanceBindings);\n }\n }\n\n this.insert InstanceAt(addIndex, fragment, instanceNodes,\n i nstanceBindings);\n }\n }, this);\n\n instanceCache.forEach(fun ction(instanceNodes) {\n this.closeInstanceBindings(instanceNodes.instanc eBindings);\n }, this);\n\n if (this.instancePositionChangedFn_)\n this.reportInstancesMoved(splices);\n },\n\n reportInstanceMoved: func tion(index) {\n var previousTerminator = this.getTerminatorAt(index - 1);\n var terminator = this.getTerminatorAt(index);\n if (previousTerminato r === terminator)\n return; // instance has zero nodes.\n\n // We mu st use the first node of the instance, because any subsequent\n // nodes ma y have been generated by sub-templates.\n // TODO(rafaelw): This is brittle WRT instance mutation -- e.g. if the\n // first node was removed by script .\n var templateInstance = previousTerminator.nextSibling.templateInstance; \n this.instancePositionChangedFn_(templateInstance, index);\n },\n\n reportInstancesMoved: function(splices) {\n var index = 0;\n var offs et = 0;\n for (var i = 0; i < splices.length; i++) {\n var splice = splices[i];\n if (offset != 0) {\n while (index < splice.index) {\n this.reportInstanceMoved(index);\n index++;\n }\n } else {\n index = splice.index;\n }\n\n whil e (index < splice.index + splice.addedCount) {\n this.reportInstanceMov ed(index);\n index++;\n }\n\n offset += splice.addedCount - splice.removed.length;\n }\n\n if (offset == 0)\n return;\n\ n var length = this.terminators.length / 2;\n while (index < length) { \n this.reportInstanceMoved(index);\n index++;\n }\n },\n\ n closeInstanceBindings: function(instanceBindings) {\n for (var i = 0; i < instanceBindings.length; i++) {\n instanceBindings[i].close();\n }\n },\n\n unobserve: function() {\n if (!this.arrayObserver)\n return;\n\n this.arrayObserver.close();\n this.arrayObserver = unde fined;\n },\n\n close: function() {\n if (this.closed)\n retur n;\n this.unobserve();\n for (var i = 1; i < this.terminators.length; i += 2) {\n this.closeInstanceBindings(this.terminators[i]);\n }\n\n this.terminators.length = 0;\n this.closeDeps();\n this.template Element_.iterator_ = undefined;\n this.closed = true;\n }\n };\n\n // Polyfill-specific API.\n HTMLTemplateElement.forAllTemplatesFrom_ = forAllTempl atesFrom;\n})(this);\n","/*\n Copyright (C) 2013 Ariya Hidayat <ariya.hidayat@g mail.com>\n Copyright (C) 2013 Thaddee Tyl <thaddee.tyl@gmail.com>\n Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>\n Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>\n Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@ boekesteijn.nl>\n Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>\n Copyr ight (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>\n Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>\n Copyright (C) 2011 Ariya Hidayat <ariya. hidayat@gmail.com>\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyrigh t\n notice, this list of conditions and the following disclaimer.\n * Re distributions in binary form must reproduce the above copyright\n notice, t his list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PRO VIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EV ENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n LOSS OF USE, DATA, OR PROFITS; O R BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n ON ANY THEORY OF LIABILITY, WHETH ER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n THIS SOFTWARE, EVEN IF ADVISED OF THE P OSSIBILITY OF SUCH DAMAGE.\n*/\n\n(function (global) {\n 'use strict';\n\n var Token,\n TokenName,\n Syntax,\n Messages,\n sou rce,\n index,\n length,\n delegate,\n lookahead,\n state;\n\n Token = {\n BooleanLiteral: 1,\n EOF: 2,\n Identifier: 3,\n Keyword: 4,\n NullLiteral: 5,\n Numeri cLiteral: 6,\n Punctuator: 7,\n StringLiteral: 8\n };\n\n To kenName = {};\n TokenName[Token.BooleanLiteral] = 'Boolean';\n TokenName[T oken.EOF] = '<end>';\n TokenName[Token.Identifier] = 'Identifier';\n Token Name[Token.Keyword] = 'Keyword';\n TokenName[Token.NullLiteral] = 'Null';\n TokenName[Token.NumericLiteral] = 'Numeric';\n TokenName[Token.Punctuator] = 'Punctuator';\n TokenName[Token.StringLiteral] = 'String';\n\n Syntax = {\n ArrayExpression: 'ArrayExpression',\n BinaryExpression: 'Binar yExpression',\n CallExpression: 'CallExpression',\n ConditionalExp ression: 'ConditionalExpression',\n EmptyStatement: 'EmptyStatement',\n ExpressionStatement: 'ExpressionStatement',\n Identifier: 'Identifi er',\n Literal: 'Literal',\n LabeledStatement: 'LabeledStatement', \n LogicalExpression: 'LogicalExpression',\n MemberExpression: 'Me mberExpression',\n ObjectExpression: 'ObjectExpression',\n Program : 'Program',\n Property: 'Property',\n ThisExpression: 'ThisExpres sion',\n UnaryExpression: 'UnaryExpression'\n };\n\n // Error messa ges should be identical to V8.\n Messages = {\n UnexpectedToken: 'Une xpected token %0',\n UnknownLabel: 'Undefined label \\'%0\\'',\n R edeclaration: '%0 \\'%1\\' has already been declared'\n };\n\n // Ensure t he condition is true, otherwise throw an error.\n // This is only to have a b etter contract semantic, i.e. another safety net\n // to catch a logic error. The condition shall be fulfilled in normal case.\n // Do NOT use this to enf orce a certain condition on any user input.\n\n function assert(condition, me ssage) {\n if (!condition) {\n throw new Error('ASSERT: ' + me ssage);\n }\n }\n\n function isDecimalDigit(ch) {\n return ( ch >= 48 && ch <= 57); // 0..9\n }\n\n\n // 7.2 White Space\n\n funct ion isWhiteSpace(ch) {\n return (ch === 32) || // space\n (ch === 9) || // tab\n (ch === 0xB) ||\n (ch === 0xC) || \n (ch === 0xA0) ||\n (ch >= 0x1680 && '\\u1680\\u180E\\u2 000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F \\u205F\\u3000\\uFEFF'.indexOf(String.fromCharCode(ch)) > 0);\n }\n\n // 7 .3 Line Terminators\n\n function isLineTerminator(ch) {\n return (ch = == 10) || (ch === 13) || (ch === 0x2028) || (ch === 0x2029);\n }\n\n // 7. 6 Identifier Names and Identifiers\n\n function isIdentifierStart(ch) {\n return (ch === 36) || (ch === 95) || // $ (dollar) and _ (underscore)\n (ch >= 65 && ch <= 90) || // A..Z\n (ch >= 97 && ch < = 122); // a..z\n }\n\n function isIdentifierPart(ch) {\n return (ch === 36) || (ch === 95) || // $ (dollar) and _ (underscore)\n (ch >= 65 && ch <= 90) || // A..Z\n (ch >= 97 && ch <= 12 2) || // a..z\n (ch >= 48 && ch <= 57); // 0..9\n }\n\n // 7.6.1.1 Keywords\n\n function isKeyword(id) {\n return (i d === 'this')\n }\n\n // 7.4 Comments\n\n function skipWhitespace() {\n while (index < length && isWhiteSpace(source.charCodeAt(index))) {\n ++index;\n }\n }\n\n function getIdentifier() {\n var start, ch;\n\n start = index++;\n while (index < length) {\n ch = source.charCodeAt(index);\n if (isIdentifierPart(ch)) {\n ++index;\n } else {\n break;\n }\n }\n\n return source.slice(start, index);\n }\n\n fun ction scanIdentifier() {\n var start, id, type;\n\n start = index; \n\n id = getIdentifier();\n\n // There is no keyword or literal w ith only one character.\n // Thus, it must be an identifier.\n if (id.length === 1) {\n type = Token.Identifier;\n } else if (is Keyword(id)) {\n type = Token.Keyword;\n } else if (id === 'nu ll') {\n type = Token.NullLiteral;\n } else if (id === 'true' || id === 'false') {\n type = Token.BooleanLiteral;\n } else { \n type = Token.Identifier;\n }\n\n return {\n type: type,\n value: id,\n range: [start, index]\n };\n }\n\n\n // 7.7 Punctuators\n\n function scanPunctuator() {\n var start = index,\n code = source.charCodeAt(index),\n code2,\n ch1 = source[index],\n ch2;\n\n switch (code) {\n\n // Check for most common single-character punctuators.\n case 46: // . dot\n case 40: // ( open bracket\n case 41: // ) close bracket\n case 59: // ; semicolon\n case 44: // , comma\n case 123: // { open curly brace\n case 125: // } close curly brace\n case 91: // [\n case 93: // ]\n case 58: // :\n case 63: // ?\n ++index;\n return {\n type: Token.Punctuator,\n value: String.fromCharCode (code),\n range: [start, index]\n };\n\n defaul t:\n code2 = source.charCodeAt(index + 1);\n\n // '=' (cha r #61) marks an assignment or comparison operator.\n if (code2 === 61 ) {\n switch (code) {\n case 37: // %\n case 38: // &\n case 42: // *:\n case 43: // +\n case 45: // -\n case 47: // /\n case 60: // <\n case 62: // >\n case 124: // |\n index += 2;\n return {\n type: Token.Punctuator,\n value: String.fro mCharCode(code) + String.fromCharCode(code2),\n range: [s tart, index]\n };\n\n case 33: // !\n case 61: // =\n index += 2;\n\n // !== and ===\n if (source.charCodeAt(index) === 61) {\n ++index;\n }\n return {\n type: Token.Punctuator,\n value: source.slice(start, index),\n range: [start, index]\n };\n default:\n break;\n }\n }\n break;\n }\n\n // Peek mor e characters.\n\n ch2 = source[index + 1];\n\n // Other 2-characte r punctuators: && ||\n\n if (ch1 === ch2 && ('&|'.indexOf(ch1) >= 0)) {\n index += 2;\n return {\n type: Token.Punct uator,\n value: ch1 + ch2,\n range: [start, index] \n };\n }\n\n if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {\n ++index;\n return {\n type: Token.Punctuat or,\n value: ch1,\n range: [start, index]\n };\n }\n\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL' );\n }\n\n // 7.8.3 Numeric Literals\n function scanNumericLiteral() {\ n var number, start, ch;\n\n ch = source[index];\n assert(i sDecimalDigit(ch.charCodeAt(0)) || (ch === '.'),\n 'Numeric literal m ust start with a decimal digit or a decimal point');\n\n start = index;\n number = '';\n if (ch !== '.') {\n number = source[ind ex++];\n ch = source[index];\n\n // Hex number starts with '0x'.\n // Octal number starts with '0'.\n if (number === '0') {\n // decimal number starts with '0' such as '09' is illeg al.\n if (ch && isDecimalDigit(ch.charCodeAt(0))) {\n throwError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\ n }\n\n while (isDecimalDigit(source.charCodeAt(index))) { \n number += source[index++];\n }\n ch = so urce[index];\n }\n\n if (ch === '.') {\n number += sour ce[index++];\n while (isDecimalDigit(source.charCodeAt(index))) {\n number += source[index++];\n }\n ch = source [index];\n }\n\n if (ch === 'e' || ch === 'E') {\n numb er += source[index++];\n\n ch = source[index];\n if (ch == = '+' || ch === '-') {\n number += source[index++];\n }\n if (isDecimalDigit(source.charCodeAt(index))) {\n while (isDecimalDigit(source.charCodeAt(index))) {\n number + = source[index++];\n }\n } else {\n thr owError({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n }\n\n if (isIdentifierStart(source.charCodeAt(index))) {\n throwErro r({}, Messages.UnexpectedToken, 'ILLEGAL');\n }\n\n return {\n type: Token.NumericLiteral,\n value: parseFloat(number),\n range: [start, index]\n };\n }\n\n // 7.8.4 String Literal s\n\n function scanStringLiteral() {\n var str = '', quote, start, ch, octal = false;\n\n quote = source[index];\n assert((quote === '\\ '' || quote === '\"'),\n 'String literal must starts with a quote');\ n\n start = index;\n ++index;\n\n while (index < length) {\ n ch = source[index++];\n\n if (ch === quote) {\n quote = '';\n break;\n } else if (ch === '\\\\' ) {\n ch = source[index++];\n if (!ch || !isLineTe rminator(ch.charCodeAt(0))) {\n switch (ch) {\n case 'n':\n str += '\\n';\n break;\n case 'r':\n str += '\\r';\n break;\n case 't':\n str += '\\t';\n break;\n case 'b' :\n str += '\\b';\n break;\n case 'f':\n str += '\\f';\n break;\n case 'v':\n str += '\ \x0B';\n break;\n\n default:\n str += ch;\n break;\n }\n } else {\n if (ch === '\\r' && source[ind ex] === '\\n') {\n ++index;\n }\n }\n } else if (isLineTerminator(ch.charCodeAt(0))) {\n break;\n } else {\n str += ch;\n }\n }\n\n if (quote !== '') {\n throwError({}, Messag es.UnexpectedToken, 'ILLEGAL');\n }\n\n return {\n type : Token.StringLiteral,\n value: str,\n octal: octal,\n range: [start, index]\n };\n }\n\n function isIdentifierNam e(token) {\n return token.type === Token.Identifier ||\n token .type === Token.Keyword ||\n token.type === Token.BooleanLiteral ||\n token.type === Token.NullLiteral;\n }\n\n function advance() { \n var ch;\n\n skipWhitespace();\n\n if (index >= length) { \n return {\n type: Token.EOF,\n range: [index, index]\n };\n }\n\n ch = source.charCodeAt(ind ex);\n\n // Very common: ( and ) and ;\n if (ch === 40 || ch === 4 1 || ch === 58) {\n return scanPunctuator();\n }\n\n // String literal starts with single quote (#39) or double quote (#34).\n i f (ch === 39 || ch === 34) {\n return scanStringLiteral();\n } \n\n if (isIdentifierStart(ch)) {\n return scanIdentifier();\n }\n\n // Dot (.) char #46 can also start a floating-point number, hence the need\n // to check the next character.\n if (ch === 46) {\n if (isDecimalDigit(source.charCodeAt(index + 1))) {\n return scanNumericLiteral();\n }\n return scanPunctua tor();\n }\n\n if (isDecimalDigit(ch)) {\n return scanN umericLiteral();\n }\n\n return scanPunctuator();\n }\n\n fu nction lex() {\n var token;\n\n token = lookahead;\n index = token.range[1];\n\n lookahead = advance();\n\n index = token.ran ge[1];\n\n return token;\n }\n\n function peek() {\n var pos ;\n\n pos = index;\n lookahead = advance();\n index = pos;\ n }\n\n // Throw an exception\n\n function throwError(token, messageFor mat) {\n var error,\n args = Array.prototype.slice.call(argume nts, 2),\n msg = messageFormat.replace(\n /%(\\d)/g,\n function (whole, index) {\n assert(index < ar gs.length, 'Message reference must be in range');\n return ar gs[index];\n }\n );\n\n error = new Error(msg); \n error.index = index;\n error.description = msg;\n throw error;\n }\n\n // Throw an exception because of the token.\n\n function throwUnexpected(token) {\n throwError(token, Messages.UnexpectedToken, t oken.value);\n }\n\n // Expect the next token to match the specified punct uator.\n // If not, an exception will be thrown.\n\n function expect(value ) {\n var token = lex();\n if (token.type !== Token.Punctuator || token.value !== value) {\n throwUnexpected(token);\n }\n }\ n\n // Return true if the next token matches the specified punctuator.\n\n function match(value) {\n return lookahead.type === Token.Punctuator && lookahead.value === value;\n }\n\n // Return true if the next token matche s the specified keyword\n\n function matchKeyword(keyword) {\n return lookahead.type === Token.Keyword && lookahead.value === keyword;\n }\n\n f unction consumeSemicolon() {\n // Catch the very common case first: immed iately a semicolon (char #59).\n if (source.charCodeAt(index) === 59) {\n lex();\n return;\n }\n\n skipWhitespace();\ n\n if (match(';')) {\n lex();\n return;\n } \n\n if (lookahead.type !== Token.EOF && !match('}')) {\n thro wUnexpected(lookahead);\n }\n }\n\n // 11.1.4 Array Initialiser\n\n function parseArrayInitialiser() {\n var elements = [];\n\n ex pect('[');\n\n while (!match(']')) {\n if (match(',')) {\n lex();\n elements.push(null);\n } else {\n elements.push(parseExpression());\n\n if (!match( ']')) {\n expect(',');\n }\n }\n }\n\n expect(']');\n\n return delegate.createArrayExpression( elements);\n }\n\n // 11.1.5 Object Initialiser\n\n function parseObjec tPropertyKey() {\n var token;\n\n skipWhitespace();\n token = lex();\n\n // Note: This function is called only from parseObjectPrope rty(), where\n // EOF and Punctuator tokens are already filtered out.\n if (token.type === Token.StringLiteral || token.type === Token.NumericLite ral) {\n return delegate.createLiteral(token);\n }\n\n return delegate.createIdentifier(token.value);\n }\n\n function parseObjec tProperty() {\n var token, key;\n\n token = lookahead;\n sk ipWhitespace();\n\n if (token.type === Token.EOF || token.type === Token. Punctuator) {\n throwUnexpected(token);\n }\n\n key = p arseObjectPropertyKey();\n expect(':');\n return delegate.createPr operty('init', key, parseExpression());\n }\n\n function parseObjectInitia liser() {\n var properties = [];\n\n expect('{');\n\n while (!match('}')) {\n properties.push(parseObjectProperty());\n\n if (!match('}')) {\n expect(',');\n }\n }\ n\n expect('}');\n\n return delegate.createObjectExpression(proper ties);\n }\n\n // 11.1.6 The Grouping Operator\n\n function parseGroupE xpression() {\n var expr;\n\n expect('(');\n\n expr = parse Expression();\n\n expect(')');\n\n return expr;\n }\n\n\n // 11.1 Primary Expressions\n\n function parsePrimaryExpression() {\n va r type, token, expr;\n\n if (match('(')) {\n return parseGroup Expression();\n }\n\n type = lookahead.type;\n\n if (type = == Token.Identifier) {\n expr = delegate.createIdentifier(lex().value );\n } else if (type === Token.StringLiteral || type === Token.NumericLit eral) {\n expr = delegate.createLiteral(lex());\n } else if (t ype === Token.Keyword) {\n if (matchKeyword('this')) {\n lex();\n expr = delegate.createThisExpression();\n }\n } else if (type === Token.BooleanLiteral) {\n token = lex( );\n token.value = (token.value === 'true');\n expr = dele gate.createLiteral(token);\n } else if (type === Token.NullLiteral) {\n token = lex();\n token.value = null;\n expr = de legate.createLiteral(token);\n } else if (match('[')) {\n expr = parseArrayInitialiser();\n } else if (match('{')) {\n expr = parseObjectInitialiser();\n }\n\n if (expr) {\n retur n expr;\n }\n\n throwUnexpected(lex());\n }\n\n // 11.2 Left -Hand-Side Expressions\n\n function parseArguments() {\n var args = [] ;\n\n expect('(');\n\n if (!match(')')) {\n while (inde x < length) {\n args.push(parseExpression());\n if (match(')')) {\n break;\n }\n expect(',');\n }\n }\n\n expect(')');\n\n return args;\n }\n\n function parseNonComputedProperty() {\n var token;\n \n token = lex();\n\n if (!isIdentifierName(token)) {\n throwUnexpected(token);\n }\n\n return delegate.createIdentifier( token.value);\n }\n\n function parseNonComputedMember() {\n expect( '.');\n\n return parseNonComputedProperty();\n }\n\n function parse ComputedMember() {\n var expr;\n\n expect('[');\n\n expr = parseExpression();\n\n expect(']');\n\n return expr;\n }\n\n function parseLeftHandSideExpression() {\n var expr, property;\n\n expr = parsePrimaryExpression();\n\n while (match('.') || match('[')) { \n if (match('[')) {\n property = parseComputedMember( );\n expr = delegate.createMemberExpression('[', expr, property); \n } else {\n property = parseNonComputedMember();\n expr = delegate.createMemberExpression('.', expr, property);\n }\n }\n\n return expr;\n }\n\n // 11.3 Postfix Expre ssions\n\n var parsePostfixExpression = parseLeftHandSideExpression;\n\n / / 11.4 Unary Operators\n\n function parseUnaryExpression() {\n var tok en, expr;\n\n if (lookahead.type !== Token.Punctuator && lookahead.type ! == Token.Keyword) {\n expr = parsePostfixExpression();\n } els e if (match('+') || match('-') || match('!')) {\n token = lex();\n expr = parseUnaryExpression();\n expr = delegate.createUnary Expression(token.value, expr);\n } else if (matchKeyword('delete') || mat chKeyword('void') || matchKeyword('typeof')) {\n throwError({}, Messa ges.UnexpectedToken);\n } else {\n expr = parsePostfixExpressi on();\n }\n\n return expr;\n }\n\n function binaryPrecedence (token) {\n var prec = 0;\n\n if (token.type !== Token.Punctuator && token.type !== Token.Keyword) {\n return 0;\n }\n\n switch (token.value) {\n case '||':\n prec = 1;\n b reak;\n\n case '&&':\n prec = 2;\n break;\n\n case '==':\n case '!=':\n case '===':\n case '!==':\n prec = 6;\n break;\n\n case '<':\n case '>':\n case '<=':\n case '>=':\n case 'instanceof':\n p rec = 7;\n break;\n\n case 'in':\n prec = 7;\n break;\n\n case '+':\n case '-':\n prec = 9;\n break;\n\n case '*':\n case '/':\n case '%':\n prec = 11;\n break;\n\n default:\n break;\ n }\n\n return prec;\n }\n\n // 11.5 Multiplicative Operator s\n // 11.6 Additive Operators\n // 11.7 Bitwise Shift Operators\n // 1 1.8 Relational Operators\n // 11.9 Equality Operators\n // 11.10 Binary Bi twise Operators\n // 11.11 Binary Logical Operators\n\n function parseBina ryExpression() {\n var expr, token, prec, stack, right, operator, left, i ;\n\n left = parseUnaryExpression();\n\n token = lookahead;\n prec = binaryPrecedence(token);\n if (prec === 0) {\n retur n left;\n }\n token.prec = prec;\n lex();\n\n right = parseUnaryExpression();\n\n stack = [left, token, right];\n\n wh ile ((prec = binaryPrecedence(lookahead)) > 0) {\n\n // Reduce: make a binary expression from the three topmost entries.\n while ((stack.l ength > 2) && (prec <= stack[stack.length - 2].prec)) {\n right = stack.pop();\n operator = stack.pop().value;\n le ft = stack.pop();\n expr = delegate.createBinaryExpression(operat or, left, right);\n stack.push(expr);\n }\n\n // Shift.\n token = lex();\n token.prec = prec;\n stack.push(token);\n expr = parseUnaryExpression();\n stack.push(expr);\n }\n\n // Final reduce to clean-up the stack. \n i = stack.length - 1;\n expr = stack[i];\n while (i > 1) {\n expr = delegate.createBinaryExpression(stack[i - 1].value, stack [i - 2], expr);\n i -= 2;\n }\n\n return expr;\n }\n \n\n // 11.12 Conditional Operator\n\n function parseConditionalExpression () {\n var expr, consequent, alternate;\n\n expr = parseBinaryExpr ession();\n\n if (match('?')) {\n lex();\n conseque nt = parseConditionalExpression();\n expect(':');\n altern ate = parseConditionalExpression();\n\n expr = delegate.createConditi onalExpression(expr, consequent, alternate);\n }\n\n return expr;\ n }\n\n // Simplification since we do not support AssignmentExpression.\n var parseExpression = parseConditionalExpression;\n\n // Polymer Syntax ex tensions\n\n // Filter ::\n // Identifier\n // Identifier \"(\" \") \"\n // Identifier \"(\" FilterArguments \")\"\n\n function parseFilter( ) {\n var identifier, args;\n\n identifier = lex();\n\n if (identifier.type !== Token.Identifier) {\n throwUnexpected(identifier );\n }\n\n args = match('(') ? parseArguments() : [];\n\n r eturn delegate.createFilter(identifier.value, args);\n }\n\n // Filters :: \n // \"|\" Filter\n // Filters \"|\" Filter\n\n function parseFilt ers() {\n while (match('|')) {\n lex();\n parseFilt er();\n }\n }\n\n // TopLevel ::\n // LabelledExpressions\n // AsExpression\n // InExpression\n // FilterExpression\n\n // A sExpression ::\n // FilterExpression as Identifier\n\n // InExpression : :\n // Identifier, Identifier in FilterExpression\n // Identifier in F ilterExpression\n\n // FilterExpression ::\n // Expression\n // Exp ression Filters\n\n function parseTopLevel() {\n skipWhitespace();\n peek();\n\n var expr = parseExpression();\n if (expr) {\n if (lookahead.value === ',' || lookahead.value == 'in' &&\n expr.type === Syntax.Identifier) {\n parseInExpression (expr);\n } else {\n parseFilters();\n if (lookahead.value === 'as') {\n parseAsExpression(expr);\n } else {\n delegate.createTopLevel(expr);\n }\n }\n }\n\n if (lookahead.type !== Token .EOF) {\n throwUnexpected(lookahead);\n }\n }\n\n functi on parseAsExpression(expr) {\n lex(); // as\n var identifier = le x().value;\n delegate.createAsExpression(expr, identifier);\n }\n\n function parseInExpression(identifier) {\n var indexName;\n if (l ookahead.value === ',') {\n lex();\n if (lookahead.type != = Token.Identifier)\n throwUnexpected(lookahead);\n in dexName = lex().value;\n }\n\n lex(); // in\n var expr = p arseExpression();\n parseFilters();\n delegate.createInExpression( identifier.name, indexName, expr);\n }\n\n function parse(code, inDelegate ) {\n delegate = inDelegate;\n source = code;\n index = 0;\ n length = source.length;\n lookahead = null;\n state = {\n labelSet: {}\n };\n\n return parseTopLevel();\n }\n \n global.esprima = {\n parse: parse\n };\n})(this);\n","// Copyrig ht 2013 Google Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the Licens e.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org /licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS \" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or im plied.\n// See the License for the specific language governing permissions and\n // limitations under the License.\n\n(function (global) {\n 'use strict';\n\n // JScript does not have __proto__. We wrap all object literals with\n // creat eObject which uses Object.create, Object.defineProperty and\n // Object.getOwnP ropertyDescriptor to create a new object that does the exact\n // same thing. T he main downside to this solution is that we have to extract\n // all those pro perty descriptors for IE.\n var createObject = ('__proto__' in {}) ?\n fun ction(obj) { return obj; } :\n function(obj) {\n var proto = obj.__p roto__;\n if (!proto)\n return obj;\n var newObject = Obj ect.create(proto);\n Object.getOwnPropertyNames(obj).forEach(function(nam e) {\n Object.defineProperty(newObject, name,\n Object.getOwnPropertyDescriptor(obj, name));\n });\n return newObject;\n };\n\n function prepareBinding(expressionText, name, node, f ilterRegistry) {\n var expression;\n try {\n expression = getExpressi on(expressionText);\n if (expression.scopeIdent &&\n (node.nodeTyp e !== Node.ELEMENT_NODE ||\n node.tagName !== 'TEMPLATE' ||\n (name !== 'bind' && name !== 'repeat'))) {\n throw Error('as and in can only be used within <template bind/repeat>');\n }\n } catch (ex) {\n console.error('Invalid expression syntax: ' + expressionText, ex);\n ret urn;\n }\n\n return function(model, node, oneTime) {\n var binding = expression.getBinding(model, filterRegistry, oneTime);\n if (expression.sco peIdent && binding) {\n node.polymerExpressionScopeIdent_ = expression.sc opeIdent;\n if (expression.indexIdent)\n node.polymerExpressionI ndexIdent_ = expression.indexIdent;\n }\n\n return binding;\n }\n }\n\n // TODO(rafaelw): Implement simple LRU.\n var expressionParseCache = Obj ect.create(null);\n\n function getExpression(expressionText) {\n var express ion = expressionParseCache[expressionText];\n if (!expression) {\n var d elegate = new ASTDelegate();\n esprima.parse(expressionText, delegate);\n expression = new Expression(delegate);\n expressionParseCache[expressio nText] = expression;\n }\n return expression;\n }\n\n function Literal(v alue) {\n this.value = value;\n this.valueFn_ = undefined;\n }\n\n Liter al.prototype = {\n valueFn: function() {\n if (!this.valueFn_) {\n var value = this.value;\n this.valueFn_ = function() {\n retur n value;\n }\n }\n\n return this.valueFn_;\n }\n }\n\n fun ction IdentPath(name) {\n this.name = name;\n this.path = Path.get(name);\ n }\n\n IdentPath.prototype = {\n valueFn: function() {\n if (!this.va lueFn_) {\n var name = this.name;\n var path = this.path;\n this.valueFn_ = function(model, observer) {\n if (observer)\n observer.addPath(model, path);\n\n return path.getValueFrom(model);\ n }\n }\n\n return this.valueFn_;\n },\n\n setValue: func tion(model, newValue) {\n return this.path.setValueFrom(model, newValue);\n }\n };\n\n function MemberExpression(object, property, accessor) {\n // convert literal computed property access where literal value is a value\n // path to ident dot-access.\n if (accessor == '[' &&\n property instanc eof Literal &&\n Path.get(property.value).valid) {\n accessor = '.'; \n property = new IdentPath(property.value);\n }\n\n this.dynamicDeps = typeof object == 'function' || object.dynamic;\n\n this.dynamic = typeof p roperty == 'function' ||\n property.dynamic ||\n accessor == '[';\n\n this.simplePath =\n !this.dynamic &&\n !this.dynamicDeps &&\n property instanceof IdentPath &&\n (objec t instanceof MemberExpression || object instanceof IdentPath);\n\n this.objec t = this.simplePath ? object : getFn(object);\n this.property = accessor == ' .' ? property : getFn(property);\n }\n\n MemberExpression.prototype = {\n g et fullPath() {\n if (!this.fullPath_) {\n var last = this.object in stanceof IdentPath ?\n this.object.name : this.object.fullPath;\n this.fullPath_ = Path.get(last + '.' + this.property.name);\n }\n\n return this.fullPath_;\n },\n\n valueFn: function() {\n if (!this.v alueFn_) {\n var object = this.object;\n\n if (this.simplePath) {\ n var path = this.fullPath;\n\n this.valueFn_ = function(model , observer) {\n if (observer)\n observer.addPath(model, path);\n\n return path.getValueFrom(model);\n };\n } else if (this.property instanceof IdentPath) {\n var path = Path.get(th is.property.name);\n\n this.valueFn_ = function(model, observer) {\n var context = object(model, observer);\n\n if (observer)\n observer.addPath(context, path);\n\n return path.getValue From(context);\n }\n } else {\n // Computed property.\n var property = this.property;\n\n this.valueFn_ = function(mo del, observer) {\n var context = object(model, observer);\n var propName = property(model, observer);\n if (observer)\n observer.addPath(context, propName);\n\n return context ? conte xt[propName] : undefined;\n };\n }\n }\n return this.v alueFn_;\n },\n\n setValue: function(model, newValue) {\n if (this.si mplePath) {\n this.fullPath.setValueFrom(model, newValue);\n retur n newValue;\n }\n\n var object = this.object(model);\n var propNa me = this.property instanceof IdentPath ? this.property.name :\n this.p roperty(model);\n return object[propName] = newValue;\n }\n };\n\n fun ction Filter(name, args) {\n this.name = name;\n this.args = [];\n for (var i = 0; i < args.length; i++) {\n this.args[i] = getFn(args[i]);\n } \n }\n\n Filter.prototype = {\n transform: function(value, toModelDirection , filterRegistry, model,\n observer) {\n var fn = fi lterRegistry[this.name];\n var context = model;\n if (fn) {\n c ontext = undefined;\n } else {\n fn = context[this.name];\n i f (!fn) {\n console.error('Cannot find filter: ' + this.name);\n return;\n }\n }\n\n // If toModelDirection is falsey, then t he \"normal\" (dom-bound) direction\n // is used. Otherwise, it looks for a 'toModel' property function on the\n // object.\n if (toModelDirectio n) {\n fn = fn.toModel;\n } else if (typeof fn.toDOM == 'function') {\n fn = fn.toDOM;\n }\n\n if (typeof fn != 'function') {\n console.error('No ' + (toModelDirection ? 'toModel' : 'toDOM') +\n ' found on' + this.name);\n return;\n }\n\n var arg s = [value];\n for (var i = 0; i < this.args.length; i++) {\n args[i + 1] = getFn(this.args[i])(model, observer);\n }\n\n return fn.apply( context, args);\n }\n };\n\n function notImplemented() { throw Error('Not I mplemented'); }\n\n var unaryOperators = {\n '+': function(v) { return +v; } ,\n '-': function(v) { return -v; },\n '!': function(v) { return !v; }\n };\n\n var binaryOperators = {\n '+': function(l, r) { return l+r; },\n ' -': function(l, r) { return l-r; },\n '*': function(l, r) { return l*r; },\n '/': function(l, r) { return l/r; },\n '%': function(l, r) { return l%r; } ,\n '<': function(l, r) { return l<r; },\n '>': function(l, r) { return l> r; },\n '<=': function(l, r) { return l<=r; },\n '>=': function(l, r) { re turn l>=r; },\n '==': function(l, r) { return l==r; },\n '!=': function(l, r) { return l!=r; },\n '===': function(l, r) { return l===r; },\n '!==': function(l, r) { return l!==r; },\n '&&': function(l, r) { return l&&r; },\n '||': function(l, r) { return l||r; },\n };\n\n function getFn(arg) {\n return typeof arg == 'function' ? arg : arg.valueFn();\n }\n\n function ASTDel egate() {\n this.expression = null;\n this.filters = [];\n this.deps = {};\n this.currentPath = undefined;\n this.scopeIdent = undefined;\n th is.indexIdent = undefined;\n this.dynamicDeps = false;\n }\n\n ASTDelegate. prototype = {\n createUnaryExpression: function(op, argument) {\n if (!u naryOperators[op])\n throw Error('Disallowed operator: ' + op);\n\n argument = getFn(argument);\n\n return function(model, observer) {\n return unaryOperators[op](argument(model, observer));\n };\n },\n\n createBinaryExpression: function(op, left, right) {\n if (!binaryOperators[ op])\n throw Error('Disallowed operator: ' + op);\n\n left = getFn(l eft);\n right = getFn(right);\n\n return function(model, observer) {\n return binaryOperators[op](left(model, observer),\n right(model, observer));\n };\n },\n\n createConditiona lExpression: function(test, consequent, alternate) {\n test = getFn(test);\ n consequent = getFn(consequent);\n alternate = getFn(alternate);\n\n return function(model, observer) {\n return test(model, observer) ?\ n consequent(model, observer) : alternate(model, observer);\n }\ n },\n\n createIdentifier: function(name) {\n var ident = new IdentPa th(name);\n ident.type = 'Identifier';\n return ident;\n },\n\n createMemberExpression: function(accessor, object, property) {\n var ex = n ew MemberExpression(object, property, accessor);\n if (ex.dynamicDeps)\n this.dynamicDeps = true;\n return ex;\n },\n\n createLiteral: fu nction(token) {\n return new Literal(token.value);\n },\n\n createArr ayExpression: function(elements) {\n for (var i = 0; i < elements.length; i ++)\n elements[i] = getFn(elements[i]);\n\n return function(model, o bserver) {\n var arr = []\n for (var i = 0; i < elements.length; i ++)\n arr.push(elements[i](model, observer));\n return arr;\n }\n },\n\n createProperty: function(kind, key, value) {\n return { \n key: key instanceof IdentPath ? key.name : key.value,\n value: value\n };\n },\n\n createObjectExpression: function(properties) {\n for (var i = 0; i < properties.length; i++)\n properties[i].value = getFn(properties[i].value);\n\n return function(model, observer) {\n var obj = {};\n for (var i = 0; i < properties.length; i++)\n o bj[properties[i].key] = properties[i].value(model, observer);\n return ob j;\n }\n },\n\n createFilter: function(name, args) {\n this.filt ers.push(new Filter(name, args));\n },\n\n createAsExpression: function(ex pression, scopeIdent) {\n this.expression = expression;\n this.scopeId ent = scopeIdent;\n },\n\n createInExpression: function(scopeIdent, indexI dent, expression) {\n this.expression = expression;\n this.scopeIdent = scopeIdent;\n this.indexIdent = indexIdent;\n },\n\n createTopLevel : function(expression) {\n this.expression = expression;\n },\n\n cre ateThisExpression: notImplemented\n }\n\n function ConstantObservable(value) { \n this.value_ = value;\n }\n\n ConstantObservable.prototype = {\n open: function() { return this.value_; },\n discardChanges: function() { return th is.value_; },\n deliver: function() {},\n close: function() {},\n }\n\n function Expression(delegate) {\n this.scopeIdent = delegate.scopeIdent;\n this.indexIdent = delegate.indexIdent;\n\n if (!delegate.expression)\n throw Error('No expression found.');\n\n this.expression = delegate.expressio n;\n getFn(this.expression); // forces enumeration of path dependencies\n\n this.filters = delegate.filters;\n this.dynamicDeps = delegate.dynamicDeps; \n }\n\n Expression.prototype = {\n getBinding: function(model, filterRegis try, oneTime) {\n if (oneTime)\n return this.getValue(model, undefin ed, filterRegistry);\n\n var observer = new CompoundObserver();\n this .getValue(model, observer, filterRegistry); // captures deps.\n var self = this;\n\n function valueFn() {\n if (self.dynamicDeps)\n o bserver.startReset();\n\n var value = self.getValue(model,\n self.dynamicDeps ? observer : undefined,\n filterRegistry);\n if (self.dynamicDeps)\n obse rver.finishReset();\n\n return value;\n }\n\n function setValue Fn(newValue) {\n self.setValue(model, newValue, filterRegistry);\n return newValue;\n }\n\n return new ObserverTransform(observer, value Fn, setValueFn, true);\n },\n\n getValue: function(model, observer, filter Registry) {\n var value = getFn(this.expression)(model, observer);\n f or (var i = 0; i < this.filters.length; i++) {\n value = this.filters[i]. transform(value, false, filterRegistry, model,\n observer);\n }\n\n return value;\n },\n\n setValue: fu nction(model, newValue, filterRegistry) {\n var count = this.filters ? this .filters.length : 0;\n while (count-- > 0) {\n newValue = this.filte rs[count].transform(newValue, true, filterRegistry,\n model);\n }\n\n if (this.expression.setValue)\n return this.expression.setValue(model, newValue);\n }\n }\n\n /**\n * Converts a style property name to a css property name. For example:\n * \" WebkitUserSelect\" to \"-webkit-user-select\"\n */\n function convertStylePro pertyName(name) {\n return String(name).replace(/[A-Z]/g, function(c) {\n return '-' + c.toLowerCase();\n });\n }\n\n function isEventHandler(name) {\n return name[0] === 'o' &&\n name[1] === 'n' &&\n nam e[2] === '-';\n }\n\n var mixedCaseEventTypes = {};\n [\n 'webkitAnimation Start',\n 'webkitAnimationEnd',\n 'webkitTransitionEnd',\n 'DOMFocusOut ',\n 'DOMFocusIn',\n 'DOMMouseScroll'\n ].forEach(function(e) {\n mixe dCaseEventTypes[e.toLowerCase()] = e;\n });\n\n function prepareEventBinding(p ath, name) {\n var eventType = name.substring(3);\n eventType = mixedCaseE ventTypes[eventType] || eventType;\n\n return function(model, node, oneTime) {\n var fn = path.getValueFrom(model);\n\n function handler(e) {\n if (!oneTime)\n fn = path.getValueFrom(model);\n\n fn.apply( model, [e, e.detail, e.currentTarget]);\n\n if (Platform && typeof Platfo rm.flush == 'function')\n Platform.flush();\n }\n\n node.addE ventListener(eventType, handler);\n\n if (oneTime)\n return;\n\n function bindingValue() {\n return '{{ ' + path + ' }}';\n }\n\n return {\n open: bindingValue,\n discardChanges: bindingValue, \n close: function() {\n node.removeEventListener(eventType, han dler);\n }\n };\n }\n }\n\n function PolymerExpressions() {}\n\ n PolymerExpressions.prototype = {\n // \"built-in\" filters\n styleObjec t: function(value) {\n var parts = [];\n for (var key in value) {\n parts.push(convertStylePropertyName(key) + ': ' + value[key]);\n }\n return parts.join('; ');\n },\n\n tokenList: function(value) {\n var tokens = [];\n for (var key in value) {\n if (value[key])\n tokens.push(key);\n }\n return tokens.join(' ');\n },\n\n / / binding delegate API\n prepareInstancePositionChanged: function(template) { \n var indexIdent = template.polymerExpressionIndexIdent_;\n if (!inde xIdent)\n return;\n\n return function(templateInstance, index) {\n templateInstance.model[indexIdent] = index;\n };\n },\n\n prepa reBinding: function(pathString, name, node) {\n if (isEventHandler(name)) { \n var path = Path.get(pathString);\n if (!path.valid) {\n console.error('on-* bindings must be simple path expressions');\n ret urn;\n }\n\n return prepareEventBinding(path, name);\n }\n\n if (Path.get(pathString).valid)\n return; // bail out early if pathS tring is simple path.\n\n return prepareBinding(pathString, name, node, thi s);\n },\n\n prepareInstanceModel: function(template) {\n var scopeNa me = template.polymerExpressionScopeIdent_;\n if (!scopeName)\n retu rn;\n\n var parentScope = template.templateInstance ?\n template.t emplateInstance.model :\n template.model;\n\n return function(mode l) {\n var scope = Object.create(parentScope);\n scope[scopeName] = model;\n return scope;\n };\n }\n };\n\n global.PolymerExpres sions = PolymerExpressions;\n if (global.exposeGetExpression)\n global.getEx pression_ = getExpression;\n\n global.PolymerExpressions.prepareEventBinding = prepareEventBinding;\n})(this);\n","/*\n * Copyright 2013 The Polymer Authors. A ll rights reserved.\n * Use of this source code is governed by a BSD-style\n * l icense that can be found in the LICENSE file.\n */\n(function(scope) {\n\n// inj ect style sheet\nvar style = document.createElement('style');\nstyle.textContent = 'template {display: none !important;} /* injected by platform.js */';\nvar he ad = document.querySelector('head');\nhead.insertBefore(style, head.firstChild); \n\n// flush (with logging)\nvar flushing;\nfunction flush() {\n if (!flushing) {\n flushing = true;\n scope.endOfMicrotask(function() {\n flushing = false;\n logFlags.data && console.group('Platform.flush()');\n scope .performMicrotaskCheckpoint();\n logFlags.data && console.groupEnd();\n });\n }\n};\n\n// polling dirty checker\nvar FLUSH_POLL_INTERVAL = 125;\nwindow .addEventListener('WebComponentsReady', function() {\n flush();\n // flush per iodically if platform does not have object observe.\n if (!Observer.hasObjectOb serve) {\n scope.flushPoll = setInterval(flush, FLUSH_POLL_INTERVAL);\n }\n} );\n\nif (window.CustomElements && !CustomElements.useNative) {\n var originalI mportNode = Document.prototype.importNode;\n Document.prototype.importNode = fu nction(node, deep) {\n var imported = originalImportNode.call(this, node, dee p);\n CustomElements.upgradeAll(imported);\n return imported;\n }\n}\n\n/ / exports\nscope.flush = flush;\n\n})(window.Platform);\n\n"]}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698