| OLD | NEW |
| 1 <!DOCTYPE html><html><head><meta charset="UTF-8"> </head><body><div hidden="" by
-vulcanize=""><script>!function(){function e(){document.body.removeAttribute("un
resolved")}window.WebComponents?addEventListener("WebComponentsReady",e):"intera
ctive"===document.readyState||"complete"===document.readyState?e():addEventListe
ner("DOMContentLoaded",e)}(),window.Polymer={Settings:function(){var e=window.Po
lymer||{};if(!e.noUrlSettings)for(var t,r=location.search.slice(1).split("&"),i=
0;i<r.length&&(t=r[i]);i++)t=t.split("="),t[0]&&(e[t[0]]=t[1]||!0);return e.want
Shadow="shadow"===e.dom,e.hasShadow=Boolean(Element.prototype.createShadowRoot),
e.nativeShadow=e.hasShadow&&!window.ShadowDOMPolyfill,e.useShadow=e.wantShadow&&
e.hasShadow,e.hasNativeImports=Boolean("import"in document.createElement("link")
),e.useNativeImports=e.hasNativeImports,e.useNativeCustomElements=!window.Custom
Elements||window.CustomElements.useNative,e.useNativeShadow=e.useShadow&&e.nativ
eShadow,e.usePolyfillProto=!e.useNativeCustomElements&&!Object.__proto__,e.hasNa
tiveCSSProperties=!navigator.userAgent.match("AppleWebKit/601")&&window.CSS&&CSS
.supports&&CSS.supports("box-shadow","0 0 0 var(--foo)"),e.useNativeCSSPropertie
s=e.hasNativeCSSProperties&&e.lazyRegister&&e.useNativeCSSProperties,e}()},funct
ion(){var e=window.Polymer;window.Polymer=function(e){"function"==typeof e&&(e=e
.prototype),e||(e={});var r=t(e);e=r.prototype;var i={prototype:e};return e.exte
nds&&(i.extends=e.extends),Polymer.telemetry._registrate(e),document.registerEle
ment(e.is,i),r};var t=function(e){var t=Polymer.Base;return e.extends&&(t=Polyme
r.Base._getExtendedPrototype(e.extends)),e=Polymer.Base.chainObject(e,t),e.regis
terCallback(),e.constructor};if(e)for(var r in e)Polymer[r]=e[r];Polymer.Class=t
}(),Polymer.telemetry={registrations:[],_regLog:function(e){console.log("["+e.is
+"]: registered")},_registrate:function(e){this.registrations.push(e),Polymer.lo
g&&this._regLog(e)},dumpRegistrations:function(){this.registrations.forEach(this
._regLog)}},Object.defineProperty(window,"currentImport",{enumerable:!0,configur
able:!0,get:function(){return(document._currentScript||document.currentScript).o
wnerDocument}}),Polymer.RenderStatus={_ready:!1,_callbacks:[],whenReady:function
(e){this._ready?e():this._callbacks.push(e)},_makeReady:function(){this._ready=!
0;for(var e=0;e<this._callbacks.length;e++)this._callbacks[e]();this._callbacks=
[]},_catchFirstRender:function(){requestAnimationFrame(function(){Polymer.Render
Status._makeReady()})},_afterNextRenderQueue:[],_waitingNextRender:!1,afterNextR
ender:function(e,t,r){this._watchNextRender(),this._afterNextRenderQueue.push([e
,t,r])},hasRendered:function(){return this._ready},_watchNextRender:function(){i
f(!this._waitingNextRender){this._waitingNextRender=!0;var e=function(){Polymer.
RenderStatus._flushNextRender()};this._ready?requestAnimationFrame(e):this.whenR
eady(e)}},_flushNextRender:function(){var e=this;setTimeout(function(){e._flushR
enderCallbacks(e._afterNextRenderQueue),e._afterNextRenderQueue=[],e._waitingNex
tRender=!1})},_flushRenderCallbacks:function(e){for(var t,r=0;r<e.length;r++)t=e
[r],t[1].apply(t[0],t[2]||Polymer.nar)}},window.HTMLImports?HTMLImports.whenRead
y(function(){Polymer.RenderStatus._catchFirstRender()}):Polymer.RenderStatus._ca
tchFirstRender(),Polymer.ImportStatus=Polymer.RenderStatus,Polymer.ImportStatus.
whenLoaded=Polymer.ImportStatus.whenReady,function(){"use strict";var e=Polymer.
Settings;Polymer.Base={__isPolymerInstance__:!0,_addFeature:function(e){this.ext
end(this,e)},registerCallback:function(){"max"===e.lazyRegister?this.beforeRegis
ter&&this.beforeRegister():(this._desugarBehaviors(),this._doBehavior("beforeReg
ister")),this._registerFeatures(),e.lazyRegister||this.ensureRegisterFinished()}
,createdCallback:function(){this.__hasRegisterFinished||this._ensureRegisterFini
shed(this.__proto__),Polymer.telemetry.instanceCount++,this.root=this,this._doBe
havior("created"),this._initFeatures()},ensureRegisterFinished:function(){this._
ensureRegisterFinished(this)},_ensureRegisterFinished:function(t){t.__hasRegiste
rFinished===t.is&&t.is||("max"===e.lazyRegister&&(t._desugarBehaviors(),t._doBeh
aviorOnly("beforeRegister")),t.__hasRegisterFinished=t.is,t._finishRegisterFeatu
res&&t._finishRegisterFeatures(),t._doBehavior("registered"),e.usePolyfillProto&
&t!==this&&t.extend(this,t))},attachedCallback:function(){var e=this;Polymer.Ren
derStatus.whenReady(function(){e.isAttached=!0,e._doBehavior("attached")})},deta
chedCallback:function(){var e=this;Polymer.RenderStatus.whenReady(function(){e.i
sAttached=!1,e._doBehavior("detached")})},attributeChangedCallback:function(e,t,
r){this._attributeChangedImpl(e),this._doBehavior("attributeChanged",[e,t,r])},_
attributeChangedImpl:function(e){this._setAttributeToProperty(this,e)},extend:fu
nction(e,t){if(e&&t)for(var r,i=Object.getOwnPropertyNames(t),o=0;o<i.length&&(r
=i[o]);o++)this.copyOwnProperty(r,t,e);return e||t},mixin:function(e,t){for(var
r in t)e[r]=t[r];return e},copyOwnProperty:function(e,t,r){var i=Object.getOwnPr
opertyDescriptor(t,e);i&&Object.defineProperty(r,e,i)},_logger:function(e,t){swi
tch(1===t.length&&Array.isArray(t[0])&&(t=t[0]),e){case"log":case"warn":case"err
or":console[e].apply(console,t)}},_log:function(){var e=Array.prototype.slice.ca
ll(arguments,0);this._logger("log",e)},_warn:function(){var e=Array.prototype.sl
ice.call(arguments,0);this._logger("warn",e)},_error:function(){var e=Array.prot
otype.slice.call(arguments,0);this._logger("error",e)},_logf:function(){return t
his._logPrefix.concat(this.is).concat(Array.prototype.slice.call(arguments,0))}}
,Polymer.Base._logPrefix=function(){var e=window.chrome&&!/edge/i.test(navigator
.userAgent)||/firefox/i.test(navigator.userAgent);return e?["%c[%s::%s]:","font-
weight: bold; background-color:#EEEE00;"]:["[%s::%s]:"]}(),Polymer.Base.chainObj
ect=function(e,t){return e&&t&&e!==t&&(Object.__proto__||(e=Polymer.Base.extend(
Object.create(t),e)),e.__proto__=t),e},Polymer.Base=Polymer.Base.chainObject(Pol
ymer.Base,HTMLElement.prototype),window.CustomElements?Polymer.instanceof=Custom
Elements.instanceof:Polymer.instanceof=function(e,t){return e instanceof t},Poly
mer.isInstance=function(e){return Boolean(e&&e.__isPolymerInstance__)},Polymer.t
elemetry.instanceCount=0}(),function(){function e(){if(s)for(var e,t=document._c
urrentScript||document.currentScript,r=t&&t.ownerDocument||document,i=r.querySel
ectorAll("dom-module"),o=i.length-1;o>=0&&(e=i[o]);o--){if(e.__upgraded__)return
;CustomElements.upgrade(e)}}var t={},r={},i=function(e){return t[e]||r[e.toLower
Case()]},o=function(){return document.createElement("dom-module")};o.prototype=O
bject.create(HTMLElement.prototype),Polymer.Base.extend(o.prototype,{constructor
:o,createdCallback:function(){this.register()},register:function(e){e=e||this.id
||this.getAttribute("name")||this.getAttribute("is"),e&&(this.id=e,t[e]=this,r[e
.toLowerCase()]=this)},import:function(t,r){if(t){var o=i(t);return o||(e(),o=i(
t)),o&&r&&(o=o.querySelector(r)),o}}});var s=window.CustomElements&&!CustomEleme
nts.useNative;document.registerElement("dom-module",o)}(),Polymer.Base._addFeatu
re({_prepIs:function(){if(!this.is){var e=(document._currentScript||document.cur
rentScript).parentNode;if("dom-module"===e.localName){var t=e.id||e.getAttribute
("name")||e.getAttribute("is");this.is=t}}this.is&&(this.is=this.is.toLowerCase(
))}}),Polymer.Base._addFeature({behaviors:[],_desugarBehaviors:function(){this.b
ehaviors.length&&(this.behaviors=this._desugarSomeBehaviors(this.behaviors))},_d
esugarSomeBehaviors:function(e){var t=[];e=this._flattenBehaviorsList(e);for(var
r=e.length-1;r>=0;r--){var i=e[r];t.indexOf(i)===-1&&(this._mixinBehavior(i),t.
unshift(i))}return t},_flattenBehaviorsList:function(e){for(var t=[],r=0;r<e.len
gth;r++){var i=e[r];i instanceof Array?t=t.concat(this._flattenBehaviorsList(i))
:i?t.push(i):this._warn(this._logf("_flattenBehaviorsList","behavior is null, ch
eck for missing or 404 import"))}return t},_mixinBehavior:function(e){for(var t,
r=Object.getOwnPropertyNames(e),i=0;i<r.length&&(t=r[i]);i++)Polymer.Base._behav
iorProperties[t]||this.hasOwnProperty(t)||this.copyOwnProperty(t,e,this)},_prepB
ehaviors:function(){this._prepFlattenedBehaviors(this.behaviors)},_prepFlattened
Behaviors:function(e){for(var t=0,r=e.length;t<r;t++)this._prepBehavior(e[t]);th
is._prepBehavior(this)},_doBehavior:function(e,t){for(var r=0;r<this.behaviors.l
ength;r++)this._invokeBehavior(this.behaviors[r],e,t);this._invokeBehavior(this,
e,t)},_doBehaviorOnly:function(e,t){for(var r=0;r<this.behaviors.length;r++)this
._invokeBehavior(this.behaviors[r],e,t)},_invokeBehavior:function(e,t,r){var i=e
[t];i&&i.apply(this,r||Polymer.nar)},_marshalBehaviors:function(){for(var e=0;e<
this.behaviors.length;e++)this._marshalBehavior(this.behaviors[e]);this._marshal
Behavior(this)}}),Polymer.Base._behaviorProperties={hostAttributes:!0,beforeRegi
ster:!0,registered:!0,properties:!0,observers:!0,listeners:!0,created:!0,attache
d:!0,detached:!0,attributeChanged:!0,ready:!0},Polymer.Base._addFeature({_getExt
endedPrototype:function(e){return this._getExtendedNativePrototype(e)},_nativePr
ototypes:{},_getExtendedNativePrototype:function(e){var t=this._nativePrototypes
[e];if(!t){var r=this.getNativePrototype(e);t=this.extend(Object.create(r),Polym
er.Base),this._nativePrototypes[e]=t}return t},getNativePrototype:function(e){re
turn Object.getPrototypeOf(document.createElement(e))}}),Polymer.Base._addFeatur
e({_prepConstructor:function(){this._factoryArgs=this.extends?[this.extends,this
.is]:[this.is];var e=function(){return this._factory(arguments)};this.hasOwnProp
erty("extends")&&(e.extends=this.extends),Object.defineProperty(this,"constructo
r",{value:e,writable:!0,configurable:!0}),e.prototype=this},_factory:function(e)
{var t=document.createElement.apply(document,this._factoryArgs);return this.fact
oryImpl&&this.factoryImpl.apply(t,e),t}}),Polymer.nob=Object.create(null),Polyme
r.Base._addFeature({properties:{},getPropertyInfo:function(e){var t=this._getPro
pertyInfo(e,this.properties);if(!t)for(var r=0;r<this.behaviors.length;r++)if(t=
this._getPropertyInfo(e,this.behaviors[r].properties))return t;return t||Polymer
.nob},_getPropertyInfo:function(e,t){var r=t&&t[e];return"function"==typeof r&&(
r=t[e]={type:r}),r&&(r.defined=!0),r},_prepPropertyInfo:function(){this._propert
yInfo={};for(var e=0;e<this.behaviors.length;e++)this._addPropertyInfo(this._pro
pertyInfo,this.behaviors[e].properties);this._addPropertyInfo(this._propertyInfo
,this.properties),this._addPropertyInfo(this._propertyInfo,this._propertyEffects
)},_addPropertyInfo:function(e,t){if(t){var r,i;for(var o in t)r=e[o],i=t[o],("_
"!==o[0]||i.readOnly)&&(e[o]?(r.type||(r.type=i.type),r.readOnly||(r.readOnly=i.
readOnly)):e[o]={type:"function"==typeof i?i:i.type,readOnly:i.readOnly,attribut
e:Polymer.CaseMap.camelToDashCase(o)})}}}),Polymer.CaseMap={_caseMap:{},_rx:{das
hToCamel:/-[a-z]/g,camelToDash:/([A-Z])/g},dashToCamelCase:function(e){return th
is._caseMap[e]||(this._caseMap[e]=e.indexOf("-")<0?e:e.replace(this._rx.dashToCa
mel,function(e){return e[1].toUpperCase()}))},camelToDashCase:function(e){return
this._caseMap[e]||(this._caseMap[e]=e.replace(this._rx.camelToDash,"-$1").toLow
erCase())}},Polymer.Base._addFeature({_addHostAttributes:function(e){this._aggre
gatedAttributes||(this._aggregatedAttributes={}),e&&this.mixin(this._aggregatedA
ttributes,e)},_marshalHostAttributes:function(){this._aggregatedAttributes&&this
._applyAttributes(this,this._aggregatedAttributes)},_applyAttributes:function(e,
t){for(var r in t)if(!this.hasAttribute(r)&&"class"!==r){var i=t[r];this.seriali
zeValueToAttribute(i,r,this)}},_marshalAttributes:function(){this._takeAttribute
sToModel(this)},_takeAttributesToModel:function(e){if(this.hasAttributes())for(v
ar t in this._propertyInfo){var r=this._propertyInfo[t];this.hasAttribute(r.attr
ibute)&&this._setAttributeToProperty(e,r.attribute,t,r)}},_setAttributeToPropert
y:function(e,t,r,i){if(!this._serializing&&(r=r||Polymer.CaseMap.dashToCamelCase
(t),i=i||this._propertyInfo&&this._propertyInfo[r],i&&!i.readOnly)){var o=this.g
etAttribute(t);e[r]=this.deserialize(o,i.type)}},_serializing:!1,reflectProperty
ToAttribute:function(e,t,r){this._serializing=!0,r=void 0===r?this[e]:r,this.ser
ializeValueToAttribute(r,t||Polymer.CaseMap.camelToDashCase(e)),this._serializin
g=!1},serializeValueToAttribute:function(e,t,r){var i=this.serialize(e);r=r||thi
s,void 0===i?r.removeAttribute(t):r.setAttribute(t,i)},deserialize:function(e,t)
{switch(t){case Number:e=Number(e);break;case Boolean:e=null!=e;break;case Objec
t:try{e=JSON.parse(e)}catch(e){}break;case Array:try{e=JSON.parse(e)}catch(t){e=
null,console.warn("Polymer::Attributes: couldn`t decode Array as JSON")}break;ca
se Date:e=new Date(e);break;case String:}return e},serialize:function(e){switch(
typeof e){case"boolean":return e?"":void 0;case"object":if(e instanceof Date)ret
urn e.toString();if(e)try{return JSON.stringify(e)}catch(e){return""}default:ret
urn null!=e?e:void 0}}}),Polymer.version="1.7.0",Polymer.Base._addFeature({_regi
sterFeatures:function(){this._prepIs(),this._prepBehaviors(),this._prepConstruct
or(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHostAttributes
(e.hostAttributes)},_marshalBehavior:function(e){},_initFeatures:function(){this
._marshalHostAttributes(),this._marshalBehaviors()}})</script> <script>Polymer.B
ase._addFeature({_prepTemplate:function(){void 0===this._template&&(this._templa
te=Polymer.DomModule.import(this.is,"template")),this._template&&this._template.
hasAttribute("is")&&this._warn(this._logf("_prepTemplate","top-level Polymer tem
plate must not be a type-extension, found",this._template,"Move inside simple <t
emplate>.")),this._template&&!this._template.content&&window.HTMLTemplateElement
&&HTMLTemplateElement.decorate&&HTMLTemplateElement.decorate(this._template)},_s
tampTemplate:function(){this._template&&(this.root=this.instanceTemplate(this._t
emplate))},instanceTemplate:function(e){var t=document.importNode(e._content||e.
content,!0);return t}}),function(){var e=Polymer.Base.attachedCallback;Polymer.B
ase._addFeature({_hostStack:[],ready:function(){},_registerHost:function(e){this
.dataHost=e=e||Polymer.Base._hostStack[Polymer.Base._hostStack.length-1],e&&e._c
lients&&e._clients.push(this),this._clients=null,this._clientsReadied=!1},_begin
Hosting:function(){Polymer.Base._hostStack.push(this),this._clients||(this._clie
nts=[])},_endHosting:function(){Polymer.Base._hostStack.pop()},_tryReady:functio
n(){this._readied=!1,this._canReady()&&this._ready()},_canReady:function(){retur
n!this.dataHost||this.dataHost._clientsReadied},_ready:function(){this._beforeCl
ientsReady(),this._template&&(this._setupRoot(),this._readyClients()),this._clie
ntsReadied=!0,this._clients=null,this._afterClientsReady(),this._readySelf()},_r
eadyClients:function(){this._beginDistribute();var e=this._clients;if(e)for(var
t,o=0,i=e.length;o<i&&(t=e[o]);o++)t._ready();this._finishDistribute()},_readySe
lf:function(){this._doBehavior("ready"),this._readied=!0,this._attachedPending&&
(this._attachedPending=!1,this.attachedCallback())},_beforeClientsReady:function
(){},_afterClientsReady:function(){},_beforeAttached:function(){},attachedCallba
ck:function(){this._readied?(this._beforeAttached(),e.call(this)):this._attached
Pending=!0}})}(),Polymer.ArraySplice=function(){function e(e,t,o){return{index:e
,removed:t,addedCount:o}}function t(){}var o=0,i=1,n=2,s=3;return t.prototype={c
alcEditDistances:function(e,t,o,i,n,s){for(var r=s-n+1,d=o-t+1,a=new Array(r),l=
0;l<r;l++)a[l]=new Array(d),a[l][0]=l;for(var h=0;h<d;h++)a[0][h]=h;for(l=1;l<r;
l++)for(h=1;h<d;h++)if(this.equals(e[t+h-1],i[n+l-1]))a[l][h]=a[l-1][h-1];else{v
ar u=a[l-1][h]+1,c=a[l][h-1]+1;a[l][h]=u<c?u:c}return a},spliceOperationsFromEdi
tDistances:function(e){for(var t=e.length-1,r=e[0].length-1,d=e[t][r],a=[];t>0||
r>0;)if(0!=t)if(0!=r){var l,h=e[t-1][r-1],u=e[t-1][r],c=e[t][r-1];l=u<c?u<h?u:h:
c<h?c:h,l==h?(h==d?a.push(o):(a.push(i),d=h),t--,r--):l==u?(a.push(s),t--,d=u):(
a.push(n),r--,d=c)}else a.push(s),t--;else a.push(n),r--;return a.reverse(),a},c
alcSplices:function(t,r,d,a,l,h){var u=0,c=0,_=Math.min(d-r,h-l);if(0==r&&0==l&&
(u=this.sharedPrefix(t,a,_)),d==t.length&&h==a.length&&(c=this.sharedSuffix(t,a,
_-u)),r+=u,l+=u,d-=c,h-=c,d-r==0&&h-l==0)return[];if(r==d){for(var f=e(r,[],0);l
<h;)f.removed.push(a[l++]);return[f]}if(l==h)return[e(r,[],d-r)];var m=this.spli
ceOperationsFromEditDistances(this.calcEditDistances(t,r,d,a,l,h));f=void 0;for(
var p=[],v=r,g=l,b=0;b<m.length;b++)switch(m[b]){case o:f&&(p.push(f),f=void 0),
v++,g++;break;case i:f||(f=e(v,[],0)),f.addedCount++,v++,f.removed.push(a[g]),g+
+;break;case n:f||(f=e(v,[],0)),f.addedCount++,v++;break;case s:f||(f=e(v,[],0))
,f.removed.push(a[g]),g++}return f&&p.push(f),p},sharedPrefix:function(e,t,o){fo
r(var i=0;i<o;i++)if(!this.equals(e[i],t[i]))return i;return o},sharedSuffix:fun
ction(e,t,o){for(var i=e.length,n=t.length,s=0;s<o&&this.equals(e[--i],t[--n]);)
s++;return s},calculateSplices:function(e,t){return this.calcSplices(e,0,e.lengt
h,t,0,t.length)},equals:function(e,t){return e===t}},new t}(),Polymer.domInnerHT
ML=function(){function e(e){switch(e){case"&":return"&";case"<":return"<"
;case">":return">";case'"':return""";case" ":return" "}}function t(
t){return t.replace(r,e)}function o(t){return t.replace(d,e)}function i(e){for(v
ar t={},o=0;o<e.length;o++)t[e[o]]=!0;return t}function n(e,i,n){switch(e.nodeTy
pe){case Node.ELEMENT_NODE:for(var r,d=e.localName,h="<"+d,u=e.attributes,c=0;r=
u[c];c++)h+=" "+r.name+'="'+t(r.value)+'"';return h+=">",a[d]?h:h+s(e,n)+"</"+d+
">";case Node.TEXT_NODE:var _=e.data;return i&&l[i.localName]?_:o(_);case Node.C
OMMENT_NODE:return"\x3c!--"+e.data+"--\x3e";default:throw console.error(e),new E
rror("not implemented")}}function s(e,t){e instanceof HTMLTemplateElement&&(e=e.
content);for(var o,i="",s=Polymer.dom(e).childNodes,r=0,d=s.length;r<d&&(o=s[r])
;r++)i+=n(o,e,t);return i}var r=/[&\u00A0"]/g,d=/[&\u00A0<>]/g,a=i(["area","base
","br","col","command","embed","hr","img","input","keygen","link","meta","param"
,"source","track","wbr"]),l=i(["style","script","xmp","iframe","noembed","nofram
es","plaintext","noscript"]);return{getInnerHTML:s}}(),function(){"use strict";v
ar e=Element.prototype.insertBefore,t=Element.prototype.appendChild,o=Element.pr
ototype.removeChild;Polymer.TreeApi={arrayCopyChildNodes:function(e){for(var t=[
],o=0,i=e.firstChild;i;i=i.nextSibling)t[o++]=i;return t},arrayCopyChildren:func
tion(e){for(var t=[],o=0,i=e.firstElementChild;i;i=i.nextElementSibling)t[o++]=i
;return t},arrayCopy:function(e){for(var t=e.length,o=new Array(t),i=0;i<t;i++)o
[i]=e[i];return o}},Polymer.TreeApi.Logical={hasParentNode:function(e){return Bo
olean(e.__dom&&e.__dom.parentNode)},hasChildNodes:function(e){return Boolean(e._
_dom&&void 0!==e.__dom.childNodes)},getChildNodes:function(e){return this.hasChi
ldNodes(e)?this._getChildNodes(e):e.childNodes},_getChildNodes:function(e){if(!e
.__dom.childNodes){e.__dom.childNodes=[];for(var t=e.__dom.firstChild;t;t=t.__do
m.nextSibling)e.__dom.childNodes.push(t)}return e.__dom.childNodes},getParentNod
e:function(e){return e.__dom&&void 0!==e.__dom.parentNode?e.__dom.parentNode:e.p
arentNode},getFirstChild:function(e){return e.__dom&&void 0!==e.__dom.firstChild
?e.__dom.firstChild:e.firstChild},getLastChild:function(e){return e.__dom&&void
0!==e.__dom.lastChild?e.__dom.lastChild:e.lastChild},getNextSibling:function(e){
return e.__dom&&void 0!==e.__dom.nextSibling?e.__dom.nextSibling:e.nextSibling},
getPreviousSibling:function(e){return e.__dom&&void 0!==e.__dom.previousSibling?
e.__dom.previousSibling:e.previousSibling},getFirstElementChild:function(e){retu
rn e.__dom&&void 0!==e.__dom.firstChild?this._getFirstElementChild(e):e.firstEle
mentChild},_getFirstElementChild:function(e){for(var t=e.__dom.firstChild;t&&t.n
odeType!==Node.ELEMENT_NODE;)t=t.__dom.nextSibling;return t},getLastElementChild
:function(e){return e.__dom&&void 0!==e.__dom.lastChild?this._getLastElementChil
d(e):e.lastElementChild},_getLastElementChild:function(e){for(var t=e.__dom.last
Child;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},get
NextElementSibling:function(e){return e.__dom&&void 0!==e.__dom.nextSibling?this
._getNextElementSibling(e):e.nextElementSibling},_getNextElementSibling:function
(e){for(var t=e.__dom.nextSibling;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.n
extSibling;return t},getPreviousElementSibling:function(e){return e.__dom&&void
0!==e.__dom.previousSibling?this._getPreviousElementSibling(e):e.previousElement
Sibling},_getPreviousElementSibling:function(e){for(var t=e.__dom.previousSiblin
g;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},saveChi
ldNodes:function(e){if(!this.hasChildNodes(e)){e.__dom=e.__dom||{},e.__dom.first
Child=e.firstChild,e.__dom.lastChild=e.lastChild,e.__dom.childNodes=[];for(var t
=e.firstChild;t;t=t.nextSibling)t.__dom=t.__dom||{},t.__dom.parentNode=e,e.__dom
.childNodes.push(t),t.__dom.nextSibling=t.nextSibling,t.__dom.previousSibling=t.
previousSibling}},recordInsertBefore:function(e,t,o){if(t.__dom.childNodes=null,
e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(var i=e.firstChild;i;i=i.nextSiblin
g)this._linkNode(i,t,o);else this._linkNode(e,t,o)},_linkNode:function(e,t,o){e.
__dom=e.__dom||{},t.__dom=t.__dom||{},o&&(o.__dom=o.__dom||{}),e.__dom.previousS
ibling=o?o.__dom.previousSibling:t.__dom.lastChild,e.__dom.previousSibling&&(e._
_dom.previousSibling.__dom.nextSibling=e),e.__dom.nextSibling=o||null,e.__dom.ne
xtSibling&&(e.__dom.nextSibling.__dom.previousSibling=e),e.__dom.parentNode=t,o?
o===t.__dom.firstChild&&(t.__dom.firstChild=e):(t.__dom.lastChild=e,t.__dom.firs
tChild||(t.__dom.firstChild=e)),t.__dom.childNodes=null},recordRemoveChild:funct
ion(e,t){e.__dom=e.__dom||{},t.__dom=t.__dom||{},e===t.__dom.firstChild&&(t.__do
m.firstChild=e.__dom.nextSibling),e===t.__dom.lastChild&&(t.__dom.lastChild=e.__
dom.previousSibling);var o=e.__dom.previousSibling,i=e.__dom.nextSibling;o&&(o._
_dom.nextSibling=i),i&&(i.__dom.previousSibling=o),e.__dom.parentNode=e.__dom.pr
eviousSibling=e.__dom.nextSibling=void 0,t.__dom.childNodes=null}},Polymer.TreeA
pi.Composed={getChildNodes:function(e){return Polymer.TreeApi.arrayCopyChildNode
s(e)},getParentNode:function(e){return e.parentNode},clearChildNodes:function(e)
{e.textContent=""},insertBefore:function(t,o,i){return e.call(t,o,i||null)},appe
ndChild:function(e,o){return t.call(e,o)},removeChild:function(e,t){return o.cal
l(e,t)}}}(),Polymer.DomApi=function(){"use strict";var e=Polymer.Settings,t=Poly
mer.TreeApi,o=function(e){this.node=i?o.wrap(e):e},i=e.hasShadow&&!e.nativeShado
w;o.wrap=window.wrap?window.wrap:function(e){return e},o.prototype={flush:functi
on(){Polymer.dom.flush()},deepContains:function(e){if(this.node.contains(e))retu
rn!0;for(var t=e,o=e.ownerDocument;t&&t!==o&&t!==this.node;)t=Polymer.dom(t).par
entNode||t.host;return t===this.node},queryDistributedElements:function(e){for(v
ar t,i=this.getEffectiveChildNodes(),n=[],s=0,r=i.length;s<r&&(t=i[s]);s++)t.nod
eType===Node.ELEMENT_NODE&&o.matchesSelector.call(t,e)&&n.push(t);return n},getE
ffectiveChildNodes:function(){for(var e,t=[],o=this.childNodes,i=0,r=o.length;i<
r&&(e=o[i]);i++)if(e.localName===n)for(var d=s(e).getDistributedNodes(),a=0;a<d.
length;a++)t.push(d[a]);else t.push(e);return t},observeNodes:function(e){if(e)r
eturn this.observer||(this.observer=this.node.localName===n?new o.DistributedNod
esObserver(this):new o.EffectiveNodesObserver(this)),this.observer.addListener(e
)},unobserveNodes:function(e){this.observer&&this.observer.removeListener(e)},no
tifyObserver:function(){this.observer&&this.observer.notify()},_query:function(e
,o,i){o=o||this.node;var n=[];return this._queryElements(t.Logical.getChildNodes
(o),e,i,n),n},_queryElements:function(e,t,o,i){for(var n,s=0,r=e.length;s<r&&(n=
e[s]);s++)if(n.nodeType===Node.ELEMENT_NODE&&this._queryElement(n,t,o,i))return!
0},_queryElement:function(e,o,i,n){var s=o(e);return s&&n.push(e),i&&i(s)?s:void
this._queryElements(t.Logical.getChildNodes(e),o,i,n)}};var n=o.CONTENT="conten
t",s=o.factory=function(e){return e=e||document,e.__domApi||(e.__domApi=new o.ct
or(e)),e.__domApi};o.hasApi=function(e){return Boolean(e.__domApi)},o.ctor=o,Pol
ymer.dom=function(e,t){return e instanceof Event?Polymer.EventApi.factory(e):o.f
actory(e,t)};var r=Element.prototype;return o.matchesSelector=r.matches||r.match
esSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.web
kitMatchesSelector,o}(),function(){"use strict";var e=Polymer.Settings,t=Polymer
.DomApi,o=t.factory,i=Polymer.TreeApi,n=Polymer.domInnerHTML.getInnerHTML,s=t.CO
NTENT;if(!e.useShadow){var r=Element.prototype.cloneNode,d=Document.prototype.im
portNode;Polymer.Base.extend(t.prototype,{_lazyDistribute:function(e){e.shadyRoo
t&&e.shadyRoot._distributionClean&&(e.shadyRoot._distributionClean=!1,Polymer.do
m.addDebouncer(e.debounce("_distribute",e._distributeContent)))},appendChild:fun
ction(e){return this.insertBefore(e)},insertBefore:function(e,n){if(n&&i.Logical
.getParentNode(n)!==this.node)throw Error("The ref_node to be inserted before is
not a child of this node");if(e.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var r=i
.Logical.getParentNode(e);r?(t.hasApi(r)&&o(r).notifyObserver(),this._removeNode
(e)):this._removeOwnerShadyRoot(e)}if(!this._addNode(e,n)){n&&(n=n.localName===s
?this._firstComposedNode(n):n);var d=this.node._isShadyRoot?this.node.host:this.
node;n?i.Composed.insertBefore(d,e,n):i.Composed.appendChild(d,e)}return this.no
tifyObserver(),e},_addNode:function(e,t){var o=this.getOwnerRoot();if(o){var n=t
his._maybeAddInsertionPoint(e,this.node);o._invalidInsertionPoints||(o._invalidI
nsertionPoints=n),this._addNodeToHost(o.host,e)}i.Logical.hasChildNodes(this.nod
e)&&i.Logical.recordInsertBefore(e,this.node,t);var s=this._maybeDistribute(e)||
this.node.shadyRoot;if(s)if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(;e.firs
tChild;)i.Composed.removeChild(e,e.firstChild);else{var r=i.Composed.getParentNo
de(e);r&&i.Composed.removeChild(r,e)}return s},removeChild:function(e){if(i.Logi
cal.getParentNode(e)!==this.node)throw Error("The node to be removed is not a ch
ild of this node: "+e);if(!this._removeNode(e)){var t=this.node._isShadyRoot?thi
s.node.host:this.node,o=i.Composed.getParentNode(e);t===o&&i.Composed.removeChil
d(t,e)}return this.notifyObserver(),e},_removeNode:function(e){var t,n=i.Logical
.hasParentNode(e)&&i.Logical.getParentNode(e),s=this._ownerShadyRootForNode(e);r
eturn n&&(t=o(e)._maybeDistributeParent(),i.Logical.recordRemoveChild(e,n),s&&th
is._removeDistributedChildren(s,e)&&(s._invalidInsertionPoints=!0,this._lazyDist
ribute(s.host))),this._removeOwnerShadyRoot(e),s&&this._removeNodeFromHost(s.hos
t,e),t},replaceChild:function(e,t){return this.insertBefore(e,t),this.removeChil
d(t),e},_hasCachedOwnerRoot:function(e){return Boolean(void 0!==e._ownerShadyRoo
t)},getOwnerRoot:function(){return this._ownerShadyRootForNode(this.node)},_owne
rShadyRootForNode:function(e){if(e){var t=e._ownerShadyRoot;if(void 0===t){if(e.
_isShadyRoot)t=e;else{var o=i.Logical.getParentNode(e);t=o?o._isShadyRoot?o:this
._ownerShadyRootForNode(o):null}(t||document.documentElement.contains(e))&&(e._o
wnerShadyRoot=t)}return t}},_maybeDistribute:function(e){var t=e.nodeType===Node
.DOCUMENT_FRAGMENT_NODE&&!e.__noContent&&o(e).querySelector(s),n=t&&i.Logical.ge
tParentNode(t).nodeType!==Node.DOCUMENT_FRAGMENT_NODE,r=t||e.localName===s;if(r)
{var d=this.getOwnerRoot();d&&this._lazyDistribute(d.host)}var a=this._nodeNeeds
Distribution(this.node);return a&&this._lazyDistribute(this.node),a||r&&!n},_may
beAddInsertionPoint:function(e,t){var n;if(e.nodeType!==Node.DOCUMENT_FRAGMENT_N
ODE||e.__noContent)e.localName===s&&(i.Logical.saveChildNodes(t),i.Logical.saveC
hildNodes(e),n=!0);else for(var r,d,a,l=o(e).querySelectorAll(s),h=0;h<l.length&
&(r=l[h]);h++)d=i.Logical.getParentNode(r),d===e&&(d=t),a=this._maybeAddInsertio
nPoint(r,d),n=n||a;return n},_updateInsertionPoints:function(e){for(var t,n=e.sh
adyRoot._insertionPoints=o(e.shadyRoot).querySelectorAll(s),r=0;r<n.length;r++)t
=n[r],i.Logical.saveChildNodes(t),i.Logical.saveChildNodes(i.Logical.getParentNo
de(t))},_nodeNeedsDistribution:function(e){return e&&e.shadyRoot&&t.hasInsertion
Point(e.shadyRoot)},_addNodeToHost:function(e,t){e._elementAdd&&e._elementAdd(t)
},_removeNodeFromHost:function(e,t){e._elementRemove&&e._elementRemove(t)},_remo
veDistributedChildren:function(e,t){for(var n,s=e._insertionPoints,r=0;r<s.lengt
h;r++){var d=s[r];if(this._contains(t,d))for(var a=o(d).getDistributedNodes(),l=
0;l<a.length;l++){n=!0;var h=a[l],u=i.Composed.getParentNode(h);u&&i.Composed.re
moveChild(u,h)}}return n},_contains:function(e,t){for(;t;){if(t==e)return!0;t=i.
Logical.getParentNode(t)}},_removeOwnerShadyRoot:function(e){if(this._hasCachedO
wnerRoot(e))for(var t,o=i.Logical.getChildNodes(e),n=0,s=o.length;n<s&&(t=o[n]);
n++)this._removeOwnerShadyRoot(t);e._ownerShadyRoot=void 0},_firstComposedNode:f
unction(e){for(var t,i,n=o(e).getDistributedNodes(),s=0,r=n.length;s<r&&(t=n[s])
;s++)if(i=o(t).getDestinationInsertionPoints(),i[i.length-1]===e)return t},query
Selector:function(e){var o=this._query(function(o){return t.matchesSelector.call
(o,e)},this.node,function(e){return Boolean(e)})[0];return o||null},querySelecto
rAll:function(e){return this._query(function(o){return t.matchesSelector.call(o,
e)},this.node)},getDestinationInsertionPoints:function(){return this.node._desti
nationInsertionPoints||[]},getDistributedNodes:function(){return this.node._dist
ributedNodes||[]},_clear:function(){for(;this.childNodes.length;)this.removeChil
d(this.childNodes[0])},setAttribute:function(e,t){this.node.setAttribute(e,t),th
is._maybeDistributeParent()},removeAttribute:function(e){this.node.removeAttribu
te(e),this._maybeDistributeParent()},_maybeDistributeParent:function(){if(this._
nodeNeedsDistribution(this.parentNode))return this._lazyDistribute(this.parentNo
de),!0},cloneNode:function(e){var t=r.call(this.node,!1);if(e)for(var i,n=this.c
hildNodes,s=o(t),d=0;d<n.length;d++)i=o(n[d]).cloneNode(!0),s.appendChild(i);ret
urn t},importNode:function(e,t){var n=this.node instanceof Document?this.node:th
is.node.ownerDocument,s=d.call(n,e,!1);if(t)for(var r,a=i.Logical.getChildNodes(
e),l=o(s),h=0;h<a.length;h++)r=o(n).importNode(a[h],!0),l.appendChild(r);return
s},_getComposedInnerHTML:function(){return n(this.node,!0)}}),Object.definePrope
rties(t.prototype,{activeElement:{get:function(){var e=document.activeElement;if
(!e)return null;var t=!!this.node._isShadyRoot;if(this.node!==document){if(!t)re
turn null;if(this.node.host===e||!this.node.host.contains(e))return null}for(var
i=o(e).getOwnerRoot();i&&i!==this.node;)e=i.host,i=o(e).getOwnerRoot();return t
his.node===document?i?null:e:i===this.node?e:null},configurable:!0},childNodes:{
get:function(){var e=i.Logical.getChildNodes(this.node);return Array.isArray(e)?
e:i.arrayCopyChildNodes(this.node)},configurable:!0},children:{get:function(){re
turn i.Logical.hasChildNodes(this.node)?Array.prototype.filter.call(this.childNo
des,function(e){return e.nodeType===Node.ELEMENT_NODE}):i.arrayCopyChildren(this
.node)},configurable:!0},parentNode:{get:function(){return i.Logical.getParentNo
de(this.node)},configurable:!0},firstChild:{get:function(){return i.Logical.getF
irstChild(this.node)},configurable:!0},lastChild:{get:function(){return i.Logica
l.getLastChild(this.node)},configurable:!0},nextSibling:{get:function(){return i
.Logical.getNextSibling(this.node)},configurable:!0},previousSibling:{get:functi
on(){return i.Logical.getPreviousSibling(this.node)},configurable:!0},firstEleme
ntChild:{get:function(){return i.Logical.getFirstElementChild(this.node)},config
urable:!0},lastElementChild:{get:function(){return i.Logical.getLastElementChild
(this.node)},configurable:!0},nextElementSibling:{get:function(){return i.Logica
l.getNextElementSibling(this.node)},configurable:!0},previousElementSibling:{get
:function(){return i.Logical.getPreviousElementSibling(this.node)},configurable:
!0},textContent:{get:function(){var e=this.node.nodeType;if(e===Node.TEXT_NODE||
e===Node.COMMENT_NODE)return this.node.textContent;for(var t,o=[],i=0,n=this.chi
ldNodes;t=n[i];i++)t.nodeType!==Node.COMMENT_NODE&&o.push(t.textContent);return
o.join("")},set:function(e){var t=this.node.nodeType;t===Node.TEXT_NODE||t===Nod
e.COMMENT_NODE?this.node.textContent=e:(this._clear(),e&&this.appendChild(docume
nt.createTextNode(e)))},configurable:!0},innerHTML:{get:function(){var e=this.no
de.nodeType;return e===Node.TEXT_NODE||e===Node.COMMENT_NODE?null:n(this.node)},
set:function(e){var t=this.node.nodeType;if(t!==Node.TEXT_NODE||t!==Node.COMMENT
_NODE){this._clear();var o=document.createElement("div");o.innerHTML=e;for(var n
=i.arrayCopyChildNodes(o),s=0;s<n.length;s++)this.appendChild(n[s])}},configurab
le:!0}}),t.hasInsertionPoint=function(e){return Boolean(e&&e._insertionPoints.le
ngth)}}}(),function(){"use strict";var e=Polymer.Settings,t=Polymer.TreeApi,o=Po
lymer.DomApi;if(e.useShadow){Polymer.Base.extend(o.prototype,{querySelectorAll:f
unction(e){return t.arrayCopy(this.node.querySelectorAll(e))},getOwnerRoot:funct
ion(){for(var e=this.node;e;){if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.hos
t)return e;e=e.parentNode}},importNode:function(e,t){var o=this.node instanceof
Document?this.node:this.node.ownerDocument;return o.importNode(e,t)},getDestinat
ionInsertionPoints:function(){var e=this.node.getDestinationInsertionPoints&&thi
s.node.getDestinationInsertionPoints();return e?t.arrayCopy(e):[]},getDistribute
dNodes:function(){var e=this.node.getDistributedNodes&&this.node.getDistributedN
odes();return e?t.arrayCopy(e):[]}}),Object.defineProperties(o.prototype,{active
Element:{get:function(){var e=o.wrap(this.node),t=e.activeElement;return e.conta
ins(t)?t:null},configurable:!0},childNodes:{get:function(){return t.arrayCopyChi
ldNodes(this.node)},configurable:!0},children:{get:function(){return t.arrayCopy
Children(this.node)},configurable:!0},textContent:{get:function(){return this.no
de.textContent},set:function(e){return this.node.textContent=e},configurable:!0}
,innerHTML:{get:function(){return this.node.innerHTML},set:function(e){return th
is.node.innerHTML=e},configurable:!0}});var i=function(e){for(var t=0;t<e.length
;t++)n(e[t])},n=function(e){o.prototype[e]=function(){return this.node[e].apply(
this.node,arguments)}};i(["cloneNode","appendChild","insertBefore","removeChild"
,"replaceChild","setAttribute","removeAttribute","querySelector"]);var s=functio
n(e){for(var t=0;t<e.length;t++)r(e[t])},r=function(e){Object.defineProperty(o.p
rototype,e,{get:function(){return this.node[e]},configurable:!0})};s(["parentNod
e","firstChild","lastChild","nextSibling","previousSibling","firstElementChild",
"lastElementChild","nextElementSibling","previousElementSibling"])}}(),Polymer.B
ase.extend(Polymer.dom,{_flushGuard:0,_FLUSH_MAX:100,_needsTakeRecords:!Polymer.
Settings.useNativeCustomElements,_debouncers:[],_staticFlushList:[],_finishDebou
ncer:null,flush:function(){for(this._flushGuard=0,this._prepareFlush();this._deb
ouncers.length&&this._flushGuard<this._FLUSH_MAX;){for(;this._debouncers.length;
)this._debouncers.shift().complete();this._finishDebouncer&&this._finishDebounce
r.complete(),this._prepareFlush(),this._flushGuard++}this._flushGuard>=this._FLU
SH_MAX&&console.warn("Polymer.dom.flush aborted. Flush may not be complete.")},_
prepareFlush:function(){this._needsTakeRecords&&CustomElements.takeRecords();for
(var e=0;e<this._staticFlushList.length;e++)this._staticFlushList[e]()},addStati
cFlush:function(e){this._staticFlushList.push(e)},removeStaticFlush:function(e){
var t=this._staticFlushList.indexOf(e);t>=0&&this._staticFlushList.splice(t,1)},
addDebouncer:function(e){this._debouncers.push(e),this._finishDebouncer=Polymer.
Debounce(this._finishDebouncer,this._finishFlush)},_finishFlush:function(){Polym
er.dom._debouncers=[]}}),Polymer.EventApi=function(){"use strict";var e=Polymer.
DomApi.ctor,t=Polymer.Settings;e.Event=function(e){this.event=e},t.useShadow?e.E
vent.prototype={get rootTarget(){return this.event.path[0]},get localTarget(){re
turn this.event.target},get path(){var e=this.event.path;return Array.isArray(e)
||(e=Array.prototype.slice.call(e)),e}}:e.Event.prototype={get rootTarget(){retu
rn this.event.target},get localTarget(){for(var e=this.event.currentTarget,t=e&&
Polymer.dom(e).getOwnerRoot(),o=this.path,i=0;i<o.length;i++)if(Polymer.dom(o[i]
).getOwnerRoot()===t)return o[i]},get path(){if(!this.event._path){for(var e=[],
t=this.rootTarget;t;){e.push(t);var o=Polymer.dom(t).getDestinationInsertionPoin
ts();if(o.length){for(var i=0;i<o.length-1;i++)e.push(o[i]);t=o[o.length-1]}else
t=Polymer.dom(t).parentNode||t.host}e.push(window),this.event._path=e}return th
is.event._path}};var o=function(t){return t.__eventApi||(t.__eventApi=new e.Even
t(t)),t.__eventApi};return{factory:o}}(),function(){"use strict";var e=Polymer.D
omApi.ctor,t=Polymer.Settings.useShadow;Object.defineProperty(e.prototype,"class
List",{get:function(){return this._classList||(this._classList=new e.ClassList(t
his)),this._classList},configurable:!0}),e.ClassList=function(e){this.domApi=e,t
his.node=e.node},e.ClassList.prototype={add:function(){this.node.classList.add.a
pply(this.node.classList,arguments),this._distributeParent()},remove:function(){
this.node.classList.remove.apply(this.node.classList,arguments),this._distribute
Parent()},toggle:function(){this.node.classList.toggle.apply(this.node.classList
,arguments),this._distributeParent()},_distributeParent:function(){t||this.domAp
i._maybeDistributeParent()},contains:function(){return this.node.classList.conta
ins.apply(this.node.classList,arguments)}}}(),function(){"use strict";var e=Poly
mer.DomApi.ctor,t=Polymer.Settings;if(e.EffectiveNodesObserver=function(e){this.
domApi=e,this.node=this.domApi.node,this._listeners=[]},e.EffectiveNodesObserver
.prototype={addListener:function(e){this._isSetup||(this._setup(),this._isSetup=
!0);var t={fn:e,_nodes:[]};return this._listeners.push(t),this._scheduleNotify()
,t},removeListener:function(e){var t=this._listeners.indexOf(e);t>=0&&(this._lis
teners.splice(t,1),e._nodes=[]),this._hasListeners()||(this._cleanup(),this._isS
etup=!1)},_setup:function(){this._observeContentElements(this.domApi.childNodes)
},_cleanup:function(){this._unobserveContentElements(this.domApi.childNodes)},_h
asListeners:function(){return Boolean(this._listeners.length)},_scheduleNotify:f
unction(){this._debouncer&&this._debouncer.stop(),this._debouncer=Polymer.Deboun
ce(this._debouncer,this._notify),this._debouncer.context=this,Polymer.dom.addDeb
ouncer(this._debouncer)},notify:function(){this._hasListeners()&&this._scheduleN
otify()},_notify:function(){this._beforeCallListeners(),this._callListeners()},_
beforeCallListeners:function(){this._updateContentElements()},_updateContentElem
ents:function(){this._observeContentElements(this.domApi.childNodes)},_observeCo
ntentElements:function(e){for(var t,o=0;o<e.length&&(t=e[o]);o++)this._isContent
(t)&&(t.__observeNodesMap=t.__observeNodesMap||new WeakMap,t.__observeNodesMap.h
as(this)||t.__observeNodesMap.set(this,this._observeContent(t)))},_observeConten
t:function(e){var t=this,o=Polymer.dom(e).observeNodes(function(){t._scheduleNot
ify()});return o._avoidChangeCalculation=!0,o},_unobserveContentElements:functio
n(e){for(var t,o,i=0;i<e.length&&(t=e[i]);i++)this._isContent(t)&&(o=t.__observe
NodesMap.get(this),o&&(Polymer.dom(t).unobserveNodes(o),t.__observeNodesMap.dele
te(this)))},_isContent:function(e){return"content"===e.localName},_callListeners
:function(){for(var e,t=this._listeners,o=this._getEffectiveNodes(),i=0;i<t.leng
th&&(e=t[i]);i++){var n=this._generateListenerInfo(e,o);(n||e._alwaysNotify)&&th
is._callListener(e,n)}},_getEffectiveNodes:function(){return this.domApi.getEffe
ctiveChildNodes()},_generateListenerInfo:function(e,t){if(e._avoidChangeCalculat
ion)return!0;for(var o,i=e._nodes,n={target:this.node,addedNodes:[],removedNodes
:[]},s=Polymer.ArraySplice.calculateSplices(t,i),r=0;r<s.length&&(o=s[r]);r++)fo
r(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)n.removedNodes.push(d);for(
r=0,o;r<s.length&&(o=s[r]);r++)for(a=o.index;a<o.index+o.addedCount;a++)n.addedN
odes.push(t[a]);return e._nodes=t,n.addedNodes.length||n.removedNodes.length?n:v
oid 0},_callListener:function(e,t){return e.fn.call(this.node,t)},enableShadowAt
tributeTracking:function(){}},t.useShadow){var o=e.EffectiveNodesObserver.protot
ype._setup,i=e.EffectiveNodesObserver.prototype._cleanup;Polymer.Base.extend(e.E
ffectiveNodesObserver.prototype,{_setup:function(){if(!this._observer){var e=thi
s;this._mutationHandler=function(t){t&&t.length&&e._scheduleNotify()},this._obse
rver=new MutationObserver(this._mutationHandler),this._boundFlush=function(){e._
flush()},Polymer.dom.addStaticFlush(this._boundFlush),this._observer.observe(thi
s.node,{childList:!0})}o.call(this)},_cleanup:function(){this._observer.disconne
ct(),this._observer=null,this._mutationHandler=null,Polymer.dom.removeStaticFlus
h(this._boundFlush),i.call(this)},_flush:function(){this._observer&&this._mutati
onHandler(this._observer.takeRecords())},enableShadowAttributeTracking:function(
){if(this._observer){this._makeContentListenersAlwaysNotify(),this._observer.dis
connect(),this._observer.observe(this.node,{childList:!0,attributes:!0,subtree:!
0});var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).observer&&Pol
ymer.dom(t).observer.enableShadowAttributeTracking()}},_makeContentListenersAlwa
ysNotify:function(){for(var e,t=0;t<this._listeners.length;t++)e=this._listeners
[t],e._alwaysNotify=e._isContentListener}})}}(),function(){"use strict";var e=Po
lymer.DomApi.ctor,t=Polymer.Settings;e.DistributedNodesObserver=function(t){e.Ef
fectiveNodesObserver.call(this,t)},e.DistributedNodesObserver.prototype=Object.c
reate(e.EffectiveNodesObserver.prototype),Polymer.Base.extend(e.DistributedNodes
Observer.prototype,{_setup:function(){},_cleanup:function(){},_beforeCallListene
rs:function(){},_getEffectiveNodes:function(){return this.domApi.getDistributedN
odes()}}),t.useShadow&&Polymer.Base.extend(e.DistributedNodesObserver.prototype,
{_setup:function(){if(!this._observer){var e=this.domApi.getOwnerRoot(),t=e&&e.h
ost;if(t){var o=this;this._observer=Polymer.dom(t).observeNodes(function(){o._sc
heduleNotify()}),this._observer._isContentListener=!0,this._hasAttrSelect()&&Pol
ymer.dom(t).observer.enableShadowAttributeTracking()}}},_hasAttrSelect:function(
){var e=this.node.getAttribute("select");return e&&e.match(/[[.]+/)},_cleanup:fu
nction(){var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).unobserv
eNodes(this._observer),this._observer=null}})}(),function(){function e(e,t){t._d
istributedNodes.push(e);var o=e._destinationInsertionPoints;o?o.push(t):e._desti
nationInsertionPoints=[t]}function t(e){var t=e._distributedNodes;if(t)for(var o
=0;o<t.length;o++){var i=t[o]._destinationInsertionPoints;i&&i.splice(i.indexOf(
e)+1,i.length)}}function o(e,t){var o=u.Logical.getParentNode(e);o&&o.shadyRoot&
&h.hasInsertionPoint(o.shadyRoot)&&o.shadyRoot._distributionClean&&(o.shadyRoot.
_distributionClean=!1,t.shadyRoot._dirtyRoots.push(o))}function i(e,t){var o=t._
destinationInsertionPoints;return o&&o[o.length-1]===e}function n(e){return"cont
ent"==e.localName}function s(e){for(;e&&r(e);)e=e.domHost;return e}function r(e)
{for(var t,o=u.Logical.getChildNodes(e),i=0;i<o.length;i++)if(t=o[i],t.localName
&&"content"===t.localName)return e.domHost}function d(e){for(var t,o=0;o<e._inse
rtionPoints.length;o++)t=e._insertionPoints[o],h.hasApi(t)&&Polymer.dom(t).notif
yObserver()}function a(e){h.hasApi(e)&&Polymer.dom(e).notifyObserver()}function
l(e){if(c&&e)for(var t=0;t<e.length;t++)CustomElements.upgrade(e[t])}var h=Polym
er.DomApi,u=Polymer.TreeApi;Polymer.Base._addFeature({_prepShady:function(){this
._useContent=this._useContent||Boolean(this._template)},_setupShady:function(){t
his.shadyRoot=null,this.__domApi||(this.__domApi=null),this.__dom||(this.__dom=n
ull),this._ownerShadyRoot||(this._ownerShadyRoot=void 0)},_poolContent:function(
){this._useContent&&u.Logical.saveChildNodes(this)},_setupRoot:function(){this._
useContent&&(this._createLocalRoot(),this.dataHost||l(u.Logical.getChildNodes(th
is)))},_createLocalRoot:function(){this.shadyRoot=this.root,this.shadyRoot._dist
ributionClean=!1,this.shadyRoot._hasDistributed=!1,this.shadyRoot._isShadyRoot=!
0,this.shadyRoot._dirtyRoots=[];var e=this.shadyRoot._insertionPoints=!this._not
es||this._notes._hasContent?this.shadyRoot.querySelectorAll("content"):[];u.Logi
cal.saveChildNodes(this.shadyRoot);for(var t,o=0;o<e.length;o++)t=e[o],u.Logical
.saveChildNodes(t),u.Logical.saveChildNodes(t.parentNode);this.shadyRoot.host=th
is},get domHost(){var e=Polymer.dom(this).getOwnerRoot();return e&&e.host},distr
ibuteContent:function(e){if(this.shadyRoot){this.shadyRoot._invalidInsertionPoin
ts=this.shadyRoot._invalidInsertionPoints||e;var t=s(this);Polymer.dom(this)._la
zyDistribute(t)}},_distributeContent:function(){this._useContent&&!this.shadyRoo
t._distributionClean&&(this.shadyRoot._invalidInsertionPoints&&(Polymer.dom(this
)._updateInsertionPoints(this),this.shadyRoot._invalidInsertionPoints=!1),this._
beginDistribute(),this._distributeDirtyRoots(),this._finishDistribute())},_begin
Distribute:function(){this._useContent&&h.hasInsertionPoint(this.shadyRoot)&&(th
is._resetDistribution(),this._distributePool(this.shadyRoot,this._collectPool())
); | 1 <!DOCTYPE html><html><head><meta charset="UTF-8"> </head><body><div hidden="" by
-vulcanize=""><script>!function(){function e(){document.body.removeAttribute("un
resolved")}window.WebComponents?addEventListener("WebComponentsReady",e):"intera
ctive"===document.readyState||"complete"===document.readyState?e():addEventListe
ner("DOMContentLoaded",e)}(),window.Polymer={Settings:function(){var e=window.Po
lymer||{};if(!e.noUrlSettings)for(var t,r=location.search.slice(1).split("&"),i=
0;i<r.length&&(t=r[i]);i++)t=t.split("="),t[0]&&(e[t[0]]=t[1]||!0);return e.want
Shadow="shadow"===e.dom,e.hasShadow=Boolean(Element.prototype.createShadowRoot),
e.nativeShadow=e.hasShadow&&!window.ShadowDOMPolyfill,e.useShadow=e.wantShadow&&
e.hasShadow,e.hasNativeImports=Boolean("import"in document.createElement("link")
),e.useNativeImports=e.hasNativeImports,e.useNativeCustomElements=!window.Custom
Elements||window.CustomElements.useNative,e.useNativeShadow=e.useShadow&&e.nativ
eShadow,e.usePolyfillProto=!e.useNativeCustomElements&&!Object.__proto__,e.hasNa
tiveCSSProperties=!navigator.userAgent.match("AppleWebKit/601")&&window.CSS&&CSS
.supports&&CSS.supports("box-shadow","0 0 0 var(--foo)"),e.useNativeCSSPropertie
s=e.hasNativeCSSProperties&&e.lazyRegister&&e.useNativeCSSProperties,e}()},funct
ion(){var e=window.Polymer;window.Polymer=function(e){"function"==typeof e&&(e=e
.prototype),e||(e={});var r=t(e);e=r.prototype;var i={prototype:e};return e.exte
nds&&(i.extends=e.extends),Polymer.telemetry._registrate(e),document.registerEle
ment(e.is,i),r};var t=function(e){var t=Polymer.Base;return e.extends&&(t=Polyme
r.Base._getExtendedPrototype(e.extends)),e=Polymer.Base.chainObject(e,t),e.regis
terCallback(),e.constructor};if(e)for(var r in e)Polymer[r]=e[r];Polymer.Class=t
}(),Polymer.telemetry={registrations:[],_regLog:function(e){console.log("["+e.is
+"]: registered")},_registrate:function(e){this.registrations.push(e),Polymer.lo
g&&this._regLog(e)},dumpRegistrations:function(){this.registrations.forEach(this
._regLog)}},Object.defineProperty(window,"currentImport",{enumerable:!0,configur
able:!0,get:function(){return(document._currentScript||document.currentScript).o
wnerDocument}}),Polymer.RenderStatus={_ready:!1,_callbacks:[],whenReady:function
(e){this._ready?e():this._callbacks.push(e)},_makeReady:function(){this._ready=!
0;for(var e=0;e<this._callbacks.length;e++)this._callbacks[e]();this._callbacks=
[]},_catchFirstRender:function(){requestAnimationFrame(function(){Polymer.Render
Status._makeReady()})},_afterNextRenderQueue:[],_waitingNextRender:!1,afterNextR
ender:function(e,t,r){this._watchNextRender(),this._afterNextRenderQueue.push([e
,t,r])},hasRendered:function(){return this._ready},_watchNextRender:function(){i
f(!this._waitingNextRender){this._waitingNextRender=!0;var e=function(){Polymer.
RenderStatus._flushNextRender()};this._ready?requestAnimationFrame(e):this.whenR
eady(e)}},_flushNextRender:function(){var e=this;setTimeout(function(){e._flushR
enderCallbacks(e._afterNextRenderQueue),e._afterNextRenderQueue=[],e._waitingNex
tRender=!1})},_flushRenderCallbacks:function(e){for(var t,r=0;r<e.length;r++)t=e
[r],t[1].apply(t[0],t[2]||Polymer.nar)}},window.HTMLImports?HTMLImports.whenRead
y(function(){Polymer.RenderStatus._catchFirstRender()}):Polymer.RenderStatus._ca
tchFirstRender(),Polymer.ImportStatus=Polymer.RenderStatus,Polymer.ImportStatus.
whenLoaded=Polymer.ImportStatus.whenReady,function(){"use strict";var e=Polymer.
Settings;Polymer.Base={__isPolymerInstance__:!0,_addFeature:function(e){this.ext
end(this,e)},registerCallback:function(){"max"===e.lazyRegister?this.beforeRegis
ter&&this.beforeRegister():(this._desugarBehaviors(),this._doBehavior("beforeReg
ister")),this._registerFeatures(),e.lazyRegister||this.ensureRegisterFinished()}
,createdCallback:function(){this.__hasRegisterFinished||this._ensureRegisterFini
shed(this.__proto__),Polymer.telemetry.instanceCount++,this.root=this,this._doBe
havior("created"),this._initFeatures()},ensureRegisterFinished:function(){this._
ensureRegisterFinished(this)},_ensureRegisterFinished:function(t){t.__hasRegiste
rFinished===t.is&&t.is||("max"===e.lazyRegister&&(t._desugarBehaviors(),t._doBeh
aviorOnly("beforeRegister")),t.__hasRegisterFinished=t.is,t._finishRegisterFeatu
res&&t._finishRegisterFeatures(),t._doBehavior("registered"),e.usePolyfillProto&
&t!==this&&t.extend(this,t))},attachedCallback:function(){var e=this;Polymer.Ren
derStatus.whenReady(function(){e.isAttached=!0,e._doBehavior("attached")})},deta
chedCallback:function(){var e=this;Polymer.RenderStatus.whenReady(function(){e.i
sAttached=!1,e._doBehavior("detached")})},attributeChangedCallback:function(e,t,
r){this._attributeChangedImpl(e),this._doBehavior("attributeChanged",[e,t,r])},_
attributeChangedImpl:function(e){this._setAttributeToProperty(this,e)},extend:fu
nction(e,t){if(e&&t)for(var r,i=Object.getOwnPropertyNames(t),o=0;o<i.length&&(r
=i[o]);o++)this.copyOwnProperty(r,t,e);return e||t},mixin:function(e,t){for(var
r in t)e[r]=t[r];return e},copyOwnProperty:function(e,t,r){var i=Object.getOwnPr
opertyDescriptor(t,e);i&&Object.defineProperty(r,e,i)},_logger:function(e,t){swi
tch(1===t.length&&Array.isArray(t[0])&&(t=t[0]),e){case"log":case"warn":case"err
or":console[e].apply(console,t)}},_log:function(){var e=Array.prototype.slice.ca
ll(arguments,0);this._logger("log",e)},_warn:function(){var e=Array.prototype.sl
ice.call(arguments,0);this._logger("warn",e)},_error:function(){var e=Array.prot
otype.slice.call(arguments,0);this._logger("error",e)},_logf:function(){return t
his._logPrefix.concat(this.is).concat(Array.prototype.slice.call(arguments,0))}}
,Polymer.Base._logPrefix=function(){var e=window.chrome&&!/edge/i.test(navigator
.userAgent)||/firefox/i.test(navigator.userAgent);return e?["%c[%s::%s]:","font-
weight: bold; background-color:#EEEE00;"]:["[%s::%s]:"]}(),Polymer.Base.chainObj
ect=function(e,t){return e&&t&&e!==t&&(Object.__proto__||(e=Polymer.Base.extend(
Object.create(t),e)),e.__proto__=t),e},Polymer.Base=Polymer.Base.chainObject(Pol
ymer.Base,HTMLElement.prototype),window.CustomElements?Polymer.instanceof=Custom
Elements.instanceof:Polymer.instanceof=function(e,t){return e instanceof t},Poly
mer.isInstance=function(e){return Boolean(e&&e.__isPolymerInstance__)},Polymer.t
elemetry.instanceCount=0}(),function(){function e(){if(s)for(var e,t=document._c
urrentScript||document.currentScript,r=t&&t.ownerDocument||document,i=r.querySel
ectorAll("dom-module"),o=i.length-1;o>=0&&(e=i[o]);o--){if(e.__upgraded__)return
;CustomElements.upgrade(e)}}var t={},r={},i=function(e){return t[e]||r[e.toLower
Case()]},o=function(){return document.createElement("dom-module")};o.prototype=O
bject.create(HTMLElement.prototype),Polymer.Base.extend(o.prototype,{constructor
:o,createdCallback:function(){this.register()},register:function(e){e=e||this.id
||this.getAttribute("name")||this.getAttribute("is"),e&&(this.id=e,t[e]=this,r[e
.toLowerCase()]=this)},import:function(t,r){if(t){var o=i(t);return o||(e(),o=i(
t)),o&&r&&(o=o.querySelector(r)),o}}});var s=window.CustomElements&&!CustomEleme
nts.useNative;document.registerElement("dom-module",o)}(),Polymer.Base._addFeatu
re({_prepIs:function(){if(!this.is){var e=(document._currentScript||document.cur
rentScript).parentNode;if("dom-module"===e.localName){var t=e.id||e.getAttribute
("name")||e.getAttribute("is");this.is=t}}this.is&&(this.is=this.is.toLowerCase(
))}}),Polymer.Base._addFeature({behaviors:[],_desugarBehaviors:function(){this.b
ehaviors.length&&(this.behaviors=this._desugarSomeBehaviors(this.behaviors))},_d
esugarSomeBehaviors:function(e){var t=[];e=this._flattenBehaviorsList(e);for(var
r=e.length-1;r>=0;r--){var i=e[r];t.indexOf(i)===-1&&(this._mixinBehavior(i),t.
unshift(i))}return t},_flattenBehaviorsList:function(e){for(var t=[],r=0;r<e.len
gth;r++){var i=e[r];i instanceof Array?t=t.concat(this._flattenBehaviorsList(i))
:i?t.push(i):this._warn(this._logf("_flattenBehaviorsList","behavior is null, ch
eck for missing or 404 import"))}return t},_mixinBehavior:function(e){for(var t,
r=Object.getOwnPropertyNames(e),i=0;i<r.length&&(t=r[i]);i++)Polymer.Base._behav
iorProperties[t]||this.hasOwnProperty(t)||this.copyOwnProperty(t,e,this)},_prepB
ehaviors:function(){this._prepFlattenedBehaviors(this.behaviors)},_prepFlattened
Behaviors:function(e){for(var t=0,r=e.length;t<r;t++)this._prepBehavior(e[t]);th
is._prepBehavior(this)},_doBehavior:function(e,t){for(var r=0;r<this.behaviors.l
ength;r++)this._invokeBehavior(this.behaviors[r],e,t);this._invokeBehavior(this,
e,t)},_doBehaviorOnly:function(e,t){for(var r=0;r<this.behaviors.length;r++)this
._invokeBehavior(this.behaviors[r],e,t)},_invokeBehavior:function(e,t,r){var i=e
[t];i&&i.apply(this,r||Polymer.nar)},_marshalBehaviors:function(){for(var e=0;e<
this.behaviors.length;e++)this._marshalBehavior(this.behaviors[e]);this._marshal
Behavior(this)}}),Polymer.Base._behaviorProperties={hostAttributes:!0,beforeRegi
ster:!0,registered:!0,properties:!0,observers:!0,listeners:!0,created:!0,attache
d:!0,detached:!0,attributeChanged:!0,ready:!0},Polymer.Base._addFeature({_getExt
endedPrototype:function(e){return this._getExtendedNativePrototype(e)},_nativePr
ototypes:{},_getExtendedNativePrototype:function(e){var t=this._nativePrototypes
[e];if(!t){var r=this.getNativePrototype(e);t=this.extend(Object.create(r),Polym
er.Base),this._nativePrototypes[e]=t}return t},getNativePrototype:function(e){re
turn Object.getPrototypeOf(document.createElement(e))}}),Polymer.Base._addFeatur
e({_prepConstructor:function(){this._factoryArgs=this.extends?[this.extends,this
.is]:[this.is];var e=function(){return this._factory(arguments)};this.hasOwnProp
erty("extends")&&(e.extends=this.extends),Object.defineProperty(this,"constructo
r",{value:e,writable:!0,configurable:!0}),e.prototype=this},_factory:function(e)
{var t=document.createElement.apply(document,this._factoryArgs);return this.fact
oryImpl&&this.factoryImpl.apply(t,e),t}}),Polymer.nob=Object.create(null),Polyme
r.Base._addFeature({properties:{},getPropertyInfo:function(e){var t=this._getPro
pertyInfo(e,this.properties);if(!t)for(var r=0;r<this.behaviors.length;r++)if(t=
this._getPropertyInfo(e,this.behaviors[r].properties))return t;return t||Polymer
.nob},_getPropertyInfo:function(e,t){var r=t&&t[e];return"function"==typeof r&&(
r=t[e]={type:r}),r&&(r.defined=!0),r},_prepPropertyInfo:function(){this._propert
yInfo={};for(var e=0;e<this.behaviors.length;e++)this._addPropertyInfo(this._pro
pertyInfo,this.behaviors[e].properties);this._addPropertyInfo(this._propertyInfo
,this.properties),this._addPropertyInfo(this._propertyInfo,this._propertyEffects
)},_addPropertyInfo:function(e,t){if(t){var r,i;for(var o in t)r=e[o],i=t[o],("_
"!==o[0]||i.readOnly)&&(e[o]?(r.type||(r.type=i.type),r.readOnly||(r.readOnly=i.
readOnly)):e[o]={type:"function"==typeof i?i:i.type,readOnly:i.readOnly,attribut
e:Polymer.CaseMap.camelToDashCase(o)})}}}),Polymer.CaseMap={_caseMap:{},_rx:{das
hToCamel:/-[a-z]/g,camelToDash:/([A-Z])/g},dashToCamelCase:function(e){return th
is._caseMap[e]||(this._caseMap[e]=e.indexOf("-")<0?e:e.replace(this._rx.dashToCa
mel,function(e){return e[1].toUpperCase()}))},camelToDashCase:function(e){return
this._caseMap[e]||(this._caseMap[e]=e.replace(this._rx.camelToDash,"-$1").toLow
erCase())}},Polymer.Base._addFeature({_addHostAttributes:function(e){this._aggre
gatedAttributes||(this._aggregatedAttributes={}),e&&this.mixin(this._aggregatedA
ttributes,e)},_marshalHostAttributes:function(){this._aggregatedAttributes&&this
._applyAttributes(this,this._aggregatedAttributes)},_applyAttributes:function(e,
t){for(var r in t)if(!this.hasAttribute(r)&&"class"!==r){var i=t[r];this.seriali
zeValueToAttribute(i,r,this)}},_marshalAttributes:function(){this._takeAttribute
sToModel(this)},_takeAttributesToModel:function(e){if(this.hasAttributes())for(v
ar t in this._propertyInfo){var r=this._propertyInfo[t];this.hasAttribute(r.attr
ibute)&&this._setAttributeToProperty(e,r.attribute,t,r)}},_setAttributeToPropert
y:function(e,t,r,i){if(!this._serializing&&(r=r||Polymer.CaseMap.dashToCamelCase
(t),i=i||this._propertyInfo&&this._propertyInfo[r],i&&!i.readOnly)){var o=this.g
etAttribute(t);e[r]=this.deserialize(o,i.type)}},_serializing:!1,reflectProperty
ToAttribute:function(e,t,r){this._serializing=!0,r=void 0===r?this[e]:r,this.ser
ializeValueToAttribute(r,t||Polymer.CaseMap.camelToDashCase(e)),this._serializin
g=!1},serializeValueToAttribute:function(e,t,r){var i=this.serialize(e);r=r||thi
s,void 0===i?r.removeAttribute(t):r.setAttribute(t,i)},deserialize:function(e,t)
{switch(t){case Number:e=Number(e);break;case Boolean:e=null!=e;break;case Objec
t:try{e=JSON.parse(e)}catch(e){}break;case Array:try{e=JSON.parse(e)}catch(t){e=
null,console.warn("Polymer::Attributes: couldn`t decode Array as JSON")}break;ca
se Date:e=new Date(e);break;case String:}return e},serialize:function(e){switch(
typeof e){case"boolean":return e?"":void 0;case"object":if(e instanceof Date)ret
urn e.toString();if(e)try{return JSON.stringify(e)}catch(e){return""}default:ret
urn null!=e?e:void 0}}}),Polymer.version="1.7.0",Polymer.Base._addFeature({_regi
sterFeatures:function(){this._prepIs(),this._prepBehaviors(),this._prepConstruct
or(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHostAttributes
(e.hostAttributes)},_marshalBehavior:function(e){},_initFeatures:function(){this
._marshalHostAttributes(),this._marshalBehaviors()}})</script> <script>Polymer.B
ase._addFeature({_prepTemplate:function(){void 0===this._template&&(this._templa
te=Polymer.DomModule.import(this.is,"template")),this._template&&this._template.
hasAttribute("is")&&this._warn(this._logf("_prepTemplate","top-level Polymer tem
plate must not be a type-extension, found",this._template,"Move inside simple <t
emplate>.")),this._template&&!this._template.content&&window.HTMLTemplateElement
&&HTMLTemplateElement.decorate&&HTMLTemplateElement.decorate(this._template)},_s
tampTemplate:function(){this._template&&(this.root=this.instanceTemplate(this._t
emplate))},instanceTemplate:function(e){var t=document.importNode(e._content||e.
content,!0);return t}}),function(){var e=Polymer.Base.attachedCallback;Polymer.B
ase._addFeature({_hostStack:[],ready:function(){},_registerHost:function(e){this
.dataHost=e=e||Polymer.Base._hostStack[Polymer.Base._hostStack.length-1],e&&e._c
lients&&e._clients.push(this),this._clients=null,this._clientsReadied=!1},_begin
Hosting:function(){Polymer.Base._hostStack.push(this),this._clients||(this._clie
nts=[])},_endHosting:function(){Polymer.Base._hostStack.pop()},_tryReady:functio
n(){this._readied=!1,this._canReady()&&this._ready()},_canReady:function(){retur
n!this.dataHost||this.dataHost._clientsReadied},_ready:function(){this._beforeCl
ientsReady(),this._template&&(this._setupRoot(),this._readyClients()),this._clie
ntsReadied=!0,this._clients=null,this._afterClientsReady(),this._readySelf()},_r
eadyClients:function(){this._beginDistribute();var e=this._clients;if(e)for(var
t,o=0,i=e.length;o<i&&(t=e[o]);o++)t._ready();this._finishDistribute()},_readySe
lf:function(){this._doBehavior("ready"),this._readied=!0,this._attachedPending&&
(this._attachedPending=!1,this.attachedCallback())},_beforeClientsReady:function
(){},_afterClientsReady:function(){},_beforeAttached:function(){},attachedCallba
ck:function(){this._readied?(this._beforeAttached(),e.call(this)):this._attached
Pending=!0}})}(),Polymer.ArraySplice=function(){function e(e,t,o){return{index:e
,removed:t,addedCount:o}}function t(){}var o=0,i=1,n=2,s=3;return t.prototype={c
alcEditDistances:function(e,t,o,i,n,s){for(var r=s-n+1,d=o-t+1,a=new Array(r),l=
0;l<r;l++)a[l]=new Array(d),a[l][0]=l;for(var h=0;h<d;h++)a[0][h]=h;for(l=1;l<r;
l++)for(h=1;h<d;h++)if(this.equals(e[t+h-1],i[n+l-1]))a[l][h]=a[l-1][h-1];else{v
ar u=a[l-1][h]+1,c=a[l][h-1]+1;a[l][h]=u<c?u:c}return a},spliceOperationsFromEdi
tDistances:function(e){for(var t=e.length-1,r=e[0].length-1,d=e[t][r],a=[];t>0||
r>0;)if(0!=t)if(0!=r){var l,h=e[t-1][r-1],u=e[t-1][r],c=e[t][r-1];l=u<c?u<h?u:h:
c<h?c:h,l==h?(h==d?a.push(o):(a.push(i),d=h),t--,r--):l==u?(a.push(s),t--,d=u):(
a.push(n),r--,d=c)}else a.push(s),t--;else a.push(n),r--;return a.reverse(),a},c
alcSplices:function(t,r,d,a,l,h){var u=0,c=0,_=Math.min(d-r,h-l);if(0==r&&0==l&&
(u=this.sharedPrefix(t,a,_)),d==t.length&&h==a.length&&(c=this.sharedSuffix(t,a,
_-u)),r+=u,l+=u,d-=c,h-=c,d-r==0&&h-l==0)return[];if(r==d){for(var f=e(r,[],0);l
<h;)f.removed.push(a[l++]);return[f]}if(l==h)return[e(r,[],d-r)];var m=this.spli
ceOperationsFromEditDistances(this.calcEditDistances(t,r,d,a,l,h));f=void 0;for(
var p=[],v=r,g=l,b=0;b<m.length;b++)switch(m[b]){case o:f&&(p.push(f),f=void 0),
v++,g++;break;case i:f||(f=e(v,[],0)),f.addedCount++,v++,f.removed.push(a[g]),g+
+;break;case n:f||(f=e(v,[],0)),f.addedCount++,v++;break;case s:f||(f=e(v,[],0))
,f.removed.push(a[g]),g++}return f&&p.push(f),p},sharedPrefix:function(e,t,o){fo
r(var i=0;i<o;i++)if(!this.equals(e[i],t[i]))return i;return o},sharedSuffix:fun
ction(e,t,o){for(var i=e.length,n=t.length,s=0;s<o&&this.equals(e[--i],t[--n]);)
s++;return s},calculateSplices:function(e,t){return this.calcSplices(e,0,e.lengt
h,t,0,t.length)},equals:function(e,t){return e===t}},new t}(),Polymer.domInnerHT
ML=function(){function e(e){switch(e){case"&":return"&";case"<":return"<"
;case">":return">";case'"':return""";case" ":return" "}}function t(
t){return t.replace(r,e)}function o(t){return t.replace(d,e)}function i(e){for(v
ar t={},o=0;o<e.length;o++)t[e[o]]=!0;return t}function n(e,i,n){switch(e.nodeTy
pe){case Node.ELEMENT_NODE:for(var r,d=e.localName,h="<"+d,u=e.attributes,c=0;r=
u[c];c++)h+=" "+r.name+'="'+t(r.value)+'"';return h+=">",a[d]?h:h+s(e,n)+"</"+d+
">";case Node.TEXT_NODE:var _=e.data;return i&&l[i.localName]?_:o(_);case Node.C
OMMENT_NODE:return"\x3c!--"+e.data+"--\x3e";default:throw console.error(e),new E
rror("not implemented")}}function s(e,t){e instanceof HTMLTemplateElement&&(e=e.
content);for(var o,i="",s=Polymer.dom(e).childNodes,r=0,d=s.length;r<d&&(o=s[r])
;r++)i+=n(o,e,t);return i}var r=/[&\u00A0"]/g,d=/[&\u00A0<>]/g,a=i(["area","base
","br","col","command","embed","hr","img","input","keygen","link","meta","param"
,"source","track","wbr"]),l=i(["style","script","xmp","iframe","noembed","nofram
es","plaintext","noscript"]);return{getInnerHTML:s}}(),function(){"use strict";v
ar e=Element.prototype.insertBefore,t=Element.prototype.appendChild,o=Element.pr
ototype.removeChild;Polymer.TreeApi={arrayCopyChildNodes:function(e){for(var t=[
],o=0,i=e.firstChild;i;i=i.nextSibling)t[o++]=i;return t},arrayCopyChildren:func
tion(e){for(var t=[],o=0,i=e.firstElementChild;i;i=i.nextElementSibling)t[o++]=i
;return t},arrayCopy:function(e){for(var t=e.length,o=new Array(t),i=0;i<t;i++)o
[i]=e[i];return o}},Polymer.TreeApi.Logical={hasParentNode:function(e){return Bo
olean(e.__dom&&e.__dom.parentNode)},hasChildNodes:function(e){return Boolean(e._
_dom&&void 0!==e.__dom.childNodes)},getChildNodes:function(e){return this.hasChi
ldNodes(e)?this._getChildNodes(e):e.childNodes},_getChildNodes:function(e){if(!e
.__dom.childNodes){e.__dom.childNodes=[];for(var t=e.__dom.firstChild;t;t=t.__do
m.nextSibling)e.__dom.childNodes.push(t)}return e.__dom.childNodes},getParentNod
e:function(e){return e.__dom&&void 0!==e.__dom.parentNode?e.__dom.parentNode:e.p
arentNode},getFirstChild:function(e){return e.__dom&&void 0!==e.__dom.firstChild
?e.__dom.firstChild:e.firstChild},getLastChild:function(e){return e.__dom&&void
0!==e.__dom.lastChild?e.__dom.lastChild:e.lastChild},getNextSibling:function(e){
return e.__dom&&void 0!==e.__dom.nextSibling?e.__dom.nextSibling:e.nextSibling},
getPreviousSibling:function(e){return e.__dom&&void 0!==e.__dom.previousSibling?
e.__dom.previousSibling:e.previousSibling},getFirstElementChild:function(e){retu
rn e.__dom&&void 0!==e.__dom.firstChild?this._getFirstElementChild(e):e.firstEle
mentChild},_getFirstElementChild:function(e){for(var t=e.__dom.firstChild;t&&t.n
odeType!==Node.ELEMENT_NODE;)t=t.__dom.nextSibling;return t},getLastElementChild
:function(e){return e.__dom&&void 0!==e.__dom.lastChild?this._getLastElementChil
d(e):e.lastElementChild},_getLastElementChild:function(e){for(var t=e.__dom.last
Child;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},get
NextElementSibling:function(e){return e.__dom&&void 0!==e.__dom.nextSibling?this
._getNextElementSibling(e):e.nextElementSibling},_getNextElementSibling:function
(e){for(var t=e.__dom.nextSibling;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.n
extSibling;return t},getPreviousElementSibling:function(e){return e.__dom&&void
0!==e.__dom.previousSibling?this._getPreviousElementSibling(e):e.previousElement
Sibling},_getPreviousElementSibling:function(e){for(var t=e.__dom.previousSiblin
g;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.__dom.previousSibling;return t},saveChi
ldNodes:function(e){if(!this.hasChildNodes(e)){e.__dom=e.__dom||{},e.__dom.first
Child=e.firstChild,e.__dom.lastChild=e.lastChild,e.__dom.childNodes=[];for(var t
=e.firstChild;t;t=t.nextSibling)t.__dom=t.__dom||{},t.__dom.parentNode=e,e.__dom
.childNodes.push(t),t.__dom.nextSibling=t.nextSibling,t.__dom.previousSibling=t.
previousSibling}},recordInsertBefore:function(e,t,o){if(t.__dom.childNodes=null,
e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(var i=e.firstChild;i;i=i.nextSiblin
g)this._linkNode(i,t,o);else this._linkNode(e,t,o)},_linkNode:function(e,t,o){e.
__dom=e.__dom||{},t.__dom=t.__dom||{},o&&(o.__dom=o.__dom||{}),e.__dom.previousS
ibling=o?o.__dom.previousSibling:t.__dom.lastChild,e.__dom.previousSibling&&(e._
_dom.previousSibling.__dom.nextSibling=e),e.__dom.nextSibling=o||null,e.__dom.ne
xtSibling&&(e.__dom.nextSibling.__dom.previousSibling=e),e.__dom.parentNode=t,o?
o===t.__dom.firstChild&&(t.__dom.firstChild=e):(t.__dom.lastChild=e,t.__dom.firs
tChild||(t.__dom.firstChild=e)),t.__dom.childNodes=null},recordRemoveChild:funct
ion(e,t){e.__dom=e.__dom||{},t.__dom=t.__dom||{},e===t.__dom.firstChild&&(t.__do
m.firstChild=e.__dom.nextSibling),e===t.__dom.lastChild&&(t.__dom.lastChild=e.__
dom.previousSibling);var o=e.__dom.previousSibling,i=e.__dom.nextSibling;o&&(o._
_dom.nextSibling=i),i&&(i.__dom.previousSibling=o),e.__dom.parentNode=e.__dom.pr
eviousSibling=e.__dom.nextSibling=void 0,t.__dom.childNodes=null}},Polymer.TreeA
pi.Composed={getChildNodes:function(e){return Polymer.TreeApi.arrayCopyChildNode
s(e)},getParentNode:function(e){return e.parentNode},clearChildNodes:function(e)
{e.textContent=""},insertBefore:function(t,o,i){return e.call(t,o,i||null)},appe
ndChild:function(e,o){return t.call(e,o)},removeChild:function(e,t){return o.cal
l(e,t)}}}(),Polymer.DomApi=function(){"use strict";var e=Polymer.Settings,t=Poly
mer.TreeApi,o=function(e){this.node=i?o.wrap(e):e},i=e.hasShadow&&!e.nativeShado
w;o.wrap=window.wrap?window.wrap:function(e){return e},o.prototype={flush:functi
on(){Polymer.dom.flush()},deepContains:function(e){if(this.node.contains(e))retu
rn!0;for(var t=e,o=e.ownerDocument;t&&t!==o&&t!==this.node;)t=Polymer.dom(t).par
entNode||t.host;return t===this.node},queryDistributedElements:function(e){for(v
ar t,i=this.getEffectiveChildNodes(),n=[],s=0,r=i.length;s<r&&(t=i[s]);s++)t.nod
eType===Node.ELEMENT_NODE&&o.matchesSelector.call(t,e)&&n.push(t);return n},getE
ffectiveChildNodes:function(){for(var e,t=[],o=this.childNodes,i=0,r=o.length;i<
r&&(e=o[i]);i++)if(e.localName===n)for(var d=s(e).getDistributedNodes(),a=0;a<d.
length;a++)t.push(d[a]);else t.push(e);return t},observeNodes:function(e){if(e)r
eturn this.observer||(this.observer=this.node.localName===n?new o.DistributedNod
esObserver(this):new o.EffectiveNodesObserver(this)),this.observer.addListener(e
)},unobserveNodes:function(e){this.observer&&this.observer.removeListener(e)},no
tifyObserver:function(){this.observer&&this.observer.notify()},_query:function(e
,o,i){o=o||this.node;var n=[];return this._queryElements(t.Logical.getChildNodes
(o),e,i,n),n},_queryElements:function(e,t,o,i){for(var n,s=0,r=e.length;s<r&&(n=
e[s]);s++)if(n.nodeType===Node.ELEMENT_NODE&&this._queryElement(n,t,o,i))return!
0},_queryElement:function(e,o,i,n){var s=o(e);return s&&n.push(e),i&&i(s)?s:void
this._queryElements(t.Logical.getChildNodes(e),o,i,n)}};var n=o.CONTENT="conten
t",s=o.factory=function(e){return e=e||document,e.__domApi||(e.__domApi=new o.ct
or(e)),e.__domApi};o.hasApi=function(e){return Boolean(e.__domApi)},o.ctor=o,Pol
ymer.dom=function(e,t){return e instanceof Event?Polymer.EventApi.factory(e):o.f
actory(e,t)};var r=Element.prototype;return o.matchesSelector=r.matches||r.match
esSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.web
kitMatchesSelector,o}(),function(){"use strict";var e=Polymer.Settings,t=Polymer
.DomApi,o=t.factory,i=Polymer.TreeApi,n=Polymer.domInnerHTML.getInnerHTML,s=t.CO
NTENT;if(!e.useShadow){var r=Element.prototype.cloneNode,d=Document.prototype.im
portNode;Polymer.Base.extend(t.prototype,{_lazyDistribute:function(e){e.shadyRoo
t&&e.shadyRoot._distributionClean&&(e.shadyRoot._distributionClean=!1,Polymer.do
m.addDebouncer(e.debounce("_distribute",e._distributeContent)))},appendChild:fun
ction(e){return this.insertBefore(e)},insertBefore:function(e,n){if(n&&i.Logical
.getParentNode(n)!==this.node)throw Error("The ref_node to be inserted before is
not a child of this node");if(e.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var r=i
.Logical.getParentNode(e);r?(t.hasApi(r)&&o(r).notifyObserver(),this._removeNode
(e)):this._removeOwnerShadyRoot(e)}if(!this._addNode(e,n)){n&&(n=n.localName===s
?this._firstComposedNode(n):n);var d=this.node._isShadyRoot?this.node.host:this.
node;n?i.Composed.insertBefore(d,e,n):i.Composed.appendChild(d,e)}return this.no
tifyObserver(),e},_addNode:function(e,t){var o=this.getOwnerRoot();if(o){var n=t
his._maybeAddInsertionPoint(e,this.node);o._invalidInsertionPoints||(o._invalidI
nsertionPoints=n),this._addNodeToHost(o.host,e)}i.Logical.hasChildNodes(this.nod
e)&&i.Logical.recordInsertBefore(e,this.node,t);var s=this._maybeDistribute(e)||
this.node.shadyRoot;if(s)if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE)for(;e.firs
tChild;)i.Composed.removeChild(e,e.firstChild);else{var r=i.Composed.getParentNo
de(e);r&&i.Composed.removeChild(r,e)}return s},removeChild:function(e){if(i.Logi
cal.getParentNode(e)!==this.node)throw Error("The node to be removed is not a ch
ild of this node: "+e);if(!this._removeNode(e)){var t=this.node._isShadyRoot?thi
s.node.host:this.node,o=i.Composed.getParentNode(e);t===o&&i.Composed.removeChil
d(t,e)}return this.notifyObserver(),e},_removeNode:function(e){var t,n=i.Logical
.hasParentNode(e)&&i.Logical.getParentNode(e),s=this._ownerShadyRootForNode(e);r
eturn n&&(t=o(e)._maybeDistributeParent(),i.Logical.recordRemoveChild(e,n),s&&th
is._removeDistributedChildren(s,e)&&(s._invalidInsertionPoints=!0,this._lazyDist
ribute(s.host))),this._removeOwnerShadyRoot(e),s&&this._removeNodeFromHost(s.hos
t,e),t},replaceChild:function(e,t){return this.insertBefore(e,t),this.removeChil
d(t),e},_hasCachedOwnerRoot:function(e){return Boolean(void 0!==e._ownerShadyRoo
t)},getOwnerRoot:function(){return this._ownerShadyRootForNode(this.node)},_owne
rShadyRootForNode:function(e){if(e){var t=e._ownerShadyRoot;if(void 0===t){if(e.
_isShadyRoot)t=e;else{var o=i.Logical.getParentNode(e);t=o?o._isShadyRoot?o:this
._ownerShadyRootForNode(o):null}(t||document.documentElement.contains(e))&&(e._o
wnerShadyRoot=t)}return t}},_maybeDistribute:function(e){var t=e.nodeType===Node
.DOCUMENT_FRAGMENT_NODE&&!e.__noContent&&o(e).querySelector(s),n=t&&i.Logical.ge
tParentNode(t).nodeType!==Node.DOCUMENT_FRAGMENT_NODE,r=t||e.localName===s;if(r)
{var d=this.getOwnerRoot();d&&this._lazyDistribute(d.host)}var a=this._nodeNeeds
Distribution(this.node);return a&&this._lazyDistribute(this.node),a||r&&!n},_may
beAddInsertionPoint:function(e,t){var n;if(e.nodeType!==Node.DOCUMENT_FRAGMENT_N
ODE||e.__noContent)e.localName===s&&(i.Logical.saveChildNodes(t),i.Logical.saveC
hildNodes(e),n=!0);else for(var r,d,a,l=o(e).querySelectorAll(s),h=0;h<l.length&
&(r=l[h]);h++)d=i.Logical.getParentNode(r),d===e&&(d=t),a=this._maybeAddInsertio
nPoint(r,d),n=n||a;return n},_updateInsertionPoints:function(e){for(var t,n=e.sh
adyRoot._insertionPoints=o(e.shadyRoot).querySelectorAll(s),r=0;r<n.length;r++)t
=n[r],i.Logical.saveChildNodes(t),i.Logical.saveChildNodes(i.Logical.getParentNo
de(t))},_nodeNeedsDistribution:function(e){return e&&e.shadyRoot&&t.hasInsertion
Point(e.shadyRoot)},_addNodeToHost:function(e,t){e._elementAdd&&e._elementAdd(t)
},_removeNodeFromHost:function(e,t){e._elementRemove&&e._elementRemove(t)},_remo
veDistributedChildren:function(e,t){for(var n,s=e._insertionPoints,r=0;r<s.lengt
h;r++){var d=s[r];if(this._contains(t,d))for(var a=o(d).getDistributedNodes(),l=
0;l<a.length;l++){n=!0;var h=a[l],u=i.Composed.getParentNode(h);u&&i.Composed.re
moveChild(u,h)}}return n},_contains:function(e,t){for(;t;){if(t==e)return!0;t=i.
Logical.getParentNode(t)}},_removeOwnerShadyRoot:function(e){if(this._hasCachedO
wnerRoot(e))for(var t,o=i.Logical.getChildNodes(e),n=0,s=o.length;n<s&&(t=o[n]);
n++)this._removeOwnerShadyRoot(t);e._ownerShadyRoot=void 0},_firstComposedNode:f
unction(e){for(var t,i,n=o(e).getDistributedNodes(),s=0,r=n.length;s<r&&(t=n[s])
;s++)if(i=o(t).getDestinationInsertionPoints(),i[i.length-1]===e)return t},query
Selector:function(e){var o=this._query(function(o){return t.matchesSelector.call
(o,e)},this.node,function(e){return Boolean(e)})[0];return o||null},querySelecto
rAll:function(e){return this._query(function(o){return t.matchesSelector.call(o,
e)},this.node)},getDestinationInsertionPoints:function(){return this.node._desti
nationInsertionPoints||[]},getDistributedNodes:function(){return this.node._dist
ributedNodes||[]},_clear:function(){for(;this.childNodes.length;)this.removeChil
d(this.childNodes[0])},setAttribute:function(e,t){this.node.setAttribute(e,t),th
is._maybeDistributeParent()},removeAttribute:function(e){this.node.removeAttribu
te(e),this._maybeDistributeParent()},_maybeDistributeParent:function(){if(this._
nodeNeedsDistribution(this.parentNode))return this._lazyDistribute(this.parentNo
de),!0},cloneNode:function(e){var t=r.call(this.node,!1);if(e)for(var i,n=this.c
hildNodes,s=o(t),d=0;d<n.length;d++)i=o(n[d]).cloneNode(!0),s.appendChild(i);ret
urn t},importNode:function(e,t){var n=this.node instanceof Document?this.node:th
is.node.ownerDocument,s=d.call(n,e,!1);if(t)for(var r,a=i.Logical.getChildNodes(
e),l=o(s),h=0;h<a.length;h++)r=o(n).importNode(a[h],!0),l.appendChild(r);return
s},_getComposedInnerHTML:function(){return n(this.node,!0)}}),Object.definePrope
rties(t.prototype,{activeElement:{get:function(){var e=document.activeElement;if
(!e)return null;var t=!!this.node._isShadyRoot;if(this.node!==document){if(!t)re
turn null;if(this.node.host===e||!this.node.host.contains(e))return null}for(var
i=o(e).getOwnerRoot();i&&i!==this.node;)e=i.host,i=o(e).getOwnerRoot();return t
his.node===document?i?null:e:i===this.node?e:null},configurable:!0},childNodes:{
get:function(){var e=i.Logical.getChildNodes(this.node);return Array.isArray(e)?
e:i.arrayCopyChildNodes(this.node)},configurable:!0},children:{get:function(){re
turn i.Logical.hasChildNodes(this.node)?Array.prototype.filter.call(this.childNo
des,function(e){return e.nodeType===Node.ELEMENT_NODE}):i.arrayCopyChildren(this
.node)},configurable:!0},parentNode:{get:function(){return i.Logical.getParentNo
de(this.node)},configurable:!0},firstChild:{get:function(){return i.Logical.getF
irstChild(this.node)},configurable:!0},lastChild:{get:function(){return i.Logica
l.getLastChild(this.node)},configurable:!0},nextSibling:{get:function(){return i
.Logical.getNextSibling(this.node)},configurable:!0},previousSibling:{get:functi
on(){return i.Logical.getPreviousSibling(this.node)},configurable:!0},firstEleme
ntChild:{get:function(){return i.Logical.getFirstElementChild(this.node)},config
urable:!0},lastElementChild:{get:function(){return i.Logical.getLastElementChild
(this.node)},configurable:!0},nextElementSibling:{get:function(){return i.Logica
l.getNextElementSibling(this.node)},configurable:!0},previousElementSibling:{get
:function(){return i.Logical.getPreviousElementSibling(this.node)},configurable:
!0},textContent:{get:function(){var e=this.node.nodeType;if(e===Node.TEXT_NODE||
e===Node.COMMENT_NODE)return this.node.textContent;for(var t,o=[],i=0,n=this.chi
ldNodes;t=n[i];i++)t.nodeType!==Node.COMMENT_NODE&&o.push(t.textContent);return
o.join("")},set:function(e){var t=this.node.nodeType;t===Node.TEXT_NODE||t===Nod
e.COMMENT_NODE?this.node.textContent=e:(this._clear(),e&&this.appendChild(docume
nt.createTextNode(e)))},configurable:!0},innerHTML:{get:function(){var e=this.no
de.nodeType;return e===Node.TEXT_NODE||e===Node.COMMENT_NODE?null:n(this.node)},
set:function(e){var t=this.node.nodeType;if(t!==Node.TEXT_NODE||t!==Node.COMMENT
_NODE){this._clear();var o=document.createElement("div");o.innerHTML=e;for(var n
=i.arrayCopyChildNodes(o),s=0;s<n.length;s++)this.appendChild(n[s])}},configurab
le:!0}}),t.hasInsertionPoint=function(e){return Boolean(e&&e._insertionPoints.le
ngth)}}}(),function(){"use strict";var e=Polymer.Settings,t=Polymer.TreeApi,o=Po
lymer.DomApi;if(e.useShadow){Polymer.Base.extend(o.prototype,{querySelectorAll:f
unction(e){return t.arrayCopy(this.node.querySelectorAll(e))},getOwnerRoot:funct
ion(){for(var e=this.node;e;){if(e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.hos
t)return e;e=e.parentNode}},importNode:function(e,t){var o=this.node instanceof
Document?this.node:this.node.ownerDocument;return o.importNode(e,t)},getDestinat
ionInsertionPoints:function(){var e=this.node.getDestinationInsertionPoints&&thi
s.node.getDestinationInsertionPoints();return e?t.arrayCopy(e):[]},getDistribute
dNodes:function(){var e=this.node.getDistributedNodes&&this.node.getDistributedN
odes();return e?t.arrayCopy(e):[]}}),Object.defineProperties(o.prototype,{active
Element:{get:function(){var e=o.wrap(this.node),t=e.activeElement;return e.conta
ins(t)?t:null},configurable:!0},childNodes:{get:function(){return t.arrayCopyChi
ldNodes(this.node)},configurable:!0},children:{get:function(){return t.arrayCopy
Children(this.node)},configurable:!0},textContent:{get:function(){return this.no
de.textContent},set:function(e){return this.node.textContent=e},configurable:!0}
,innerHTML:{get:function(){return this.node.innerHTML},set:function(e){return th
is.node.innerHTML=e},configurable:!0}});var i=function(e){for(var t=0;t<e.length
;t++)n(e[t])},n=function(e){o.prototype[e]=function(){return this.node[e].apply(
this.node,arguments)}};i(["cloneNode","appendChild","insertBefore","removeChild"
,"replaceChild","setAttribute","removeAttribute","querySelector"]);var s=functio
n(e){for(var t=0;t<e.length;t++)r(e[t])},r=function(e){Object.defineProperty(o.p
rototype,e,{get:function(){return this.node[e]},configurable:!0})};s(["parentNod
e","firstChild","lastChild","nextSibling","previousSibling","firstElementChild",
"lastElementChild","nextElementSibling","previousElementSibling"])}}(),Polymer.B
ase.extend(Polymer.dom,{_flushGuard:0,_FLUSH_MAX:100,_needsTakeRecords:!Polymer.
Settings.useNativeCustomElements,_debouncers:[],_staticFlushList:[],_finishDebou
ncer:null,flush:function(){for(this._flushGuard=0,this._prepareFlush();this._deb
ouncers.length&&this._flushGuard<this._FLUSH_MAX;){for(;this._debouncers.length;
)this._debouncers.shift().complete();this._finishDebouncer&&this._finishDebounce
r.complete(),this._prepareFlush(),this._flushGuard++}this._flushGuard>=this._FLU
SH_MAX&&console.warn("Polymer.dom.flush aborted. Flush may not be complete.")},_
prepareFlush:function(){this._needsTakeRecords&&CustomElements.takeRecords();for
(var e=0;e<this._staticFlushList.length;e++)this._staticFlushList[e]()},addStati
cFlush:function(e){this._staticFlushList.push(e)},removeStaticFlush:function(e){
var t=this._staticFlushList.indexOf(e);t>=0&&this._staticFlushList.splice(t,1)},
addDebouncer:function(e){this._debouncers.push(e),this._finishDebouncer=Polymer.
Debounce(this._finishDebouncer,this._finishFlush)},_finishFlush:function(){Polym
er.dom._debouncers=[]}}),Polymer.EventApi=function(){"use strict";var e=Polymer.
DomApi.ctor,t=Polymer.Settings;e.Event=function(e){this.event=e},t.useShadow?e.E
vent.prototype={get rootTarget(){return this.event.path[0]},get localTarget(){re
turn this.event.target},get path(){var e=this.event.path;return Array.isArray(e)
||(e=Array.prototype.slice.call(e)),e}}:e.Event.prototype={get rootTarget(){retu
rn this.event.target},get localTarget(){for(var e=this.event.currentTarget,t=e&&
Polymer.dom(e).getOwnerRoot(),o=this.path,i=0;i<o.length;i++)if(Polymer.dom(o[i]
).getOwnerRoot()===t)return o[i]},get path(){if(!this.event._path){for(var e=[],
t=this.rootTarget;t;){e.push(t);var o=Polymer.dom(t).getDestinationInsertionPoin
ts();if(o.length){for(var i=0;i<o.length-1;i++)e.push(o[i]);t=o[o.length-1]}else
t=Polymer.dom(t).parentNode||t.host}e.push(window),this.event._path=e}return th
is.event._path}};var o=function(t){return t.__eventApi||(t.__eventApi=new e.Even
t(t)),t.__eventApi};return{factory:o}}(),function(){"use strict";var e=Polymer.D
omApi.ctor,t=Polymer.Settings.useShadow;Object.defineProperty(e.prototype,"class
List",{get:function(){return this._classList||(this._classList=new e.ClassList(t
his)),this._classList},configurable:!0}),e.ClassList=function(e){this.domApi=e,t
his.node=e.node},e.ClassList.prototype={add:function(){this.node.classList.add.a
pply(this.node.classList,arguments),this._distributeParent()},remove:function(){
this.node.classList.remove.apply(this.node.classList,arguments),this._distribute
Parent()},toggle:function(){this.node.classList.toggle.apply(this.node.classList
,arguments),this._distributeParent()},_distributeParent:function(){t||this.domAp
i._maybeDistributeParent()},contains:function(){return this.node.classList.conta
ins.apply(this.node.classList,arguments)}}}(),function(){"use strict";var e=Poly
mer.DomApi.ctor,t=Polymer.Settings;if(e.EffectiveNodesObserver=function(e){this.
domApi=e,this.node=this.domApi.node,this._listeners=[]},e.EffectiveNodesObserver
.prototype={addListener:function(e){this._isSetup||(this._setup(),this._isSetup=
!0);var t={fn:e,_nodes:[]};return this._listeners.push(t),this._scheduleNotify()
,t},removeListener:function(e){var t=this._listeners.indexOf(e);t>=0&&(this._lis
teners.splice(t,1),e._nodes=[]),this._hasListeners()||(this._cleanup(),this._isS
etup=!1)},_setup:function(){this._observeContentElements(this.domApi.childNodes)
},_cleanup:function(){this._unobserveContentElements(this.domApi.childNodes)},_h
asListeners:function(){return Boolean(this._listeners.length)},_scheduleNotify:f
unction(){this._debouncer&&this._debouncer.stop(),this._debouncer=Polymer.Deboun
ce(this._debouncer,this._notify),this._debouncer.context=this,Polymer.dom.addDeb
ouncer(this._debouncer)},notify:function(){this._hasListeners()&&this._scheduleN
otify()},_notify:function(){this._beforeCallListeners(),this._callListeners()},_
beforeCallListeners:function(){this._updateContentElements()},_updateContentElem
ents:function(){this._observeContentElements(this.domApi.childNodes)},_observeCo
ntentElements:function(e){for(var t,o=0;o<e.length&&(t=e[o]);o++)this._isContent
(t)&&(t.__observeNodesMap=t.__observeNodesMap||new WeakMap,t.__observeNodesMap.h
as(this)||t.__observeNodesMap.set(this,this._observeContent(t)))},_observeConten
t:function(e){var t=this,o=Polymer.dom(e).observeNodes(function(){t._scheduleNot
ify()});return o._avoidChangeCalculation=!0,o},_unobserveContentElements:functio
n(e){for(var t,o,i=0;i<e.length&&(t=e[i]);i++)this._isContent(t)&&(o=t.__observe
NodesMap.get(this),o&&(Polymer.dom(t).unobserveNodes(o),t.__observeNodesMap.dele
te(this)))},_isContent:function(e){return"content"===e.localName},_callListeners
:function(){for(var e,t=this._listeners,o=this._getEffectiveNodes(),i=0;i<t.leng
th&&(e=t[i]);i++){var n=this._generateListenerInfo(e,o);(n||e._alwaysNotify)&&th
is._callListener(e,n)}},_getEffectiveNodes:function(){return this.domApi.getEffe
ctiveChildNodes()},_generateListenerInfo:function(e,t){if(e._avoidChangeCalculat
ion)return!0;for(var o,i=e._nodes,n={target:this.node,addedNodes:[],removedNodes
:[]},s=Polymer.ArraySplice.calculateSplices(t,i),r=0;r<s.length&&(o=s[r]);r++)fo
r(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)n.removedNodes.push(d);for(
r=0,o;r<s.length&&(o=s[r]);r++)for(a=o.index;a<o.index+o.addedCount;a++)n.addedN
odes.push(t[a]);return e._nodes=t,n.addedNodes.length||n.removedNodes.length?n:v
oid 0},_callListener:function(e,t){return e.fn.call(this.node,t)},enableShadowAt
tributeTracking:function(){}},t.useShadow){var o=e.EffectiveNodesObserver.protot
ype._setup,i=e.EffectiveNodesObserver.prototype._cleanup;Polymer.Base.extend(e.E
ffectiveNodesObserver.prototype,{_setup:function(){if(!this._observer){var e=thi
s;this._mutationHandler=function(t){t&&t.length&&e._scheduleNotify()},this._obse
rver=new MutationObserver(this._mutationHandler),this._boundFlush=function(){e._
flush()},Polymer.dom.addStaticFlush(this._boundFlush),this._observer.observe(thi
s.node,{childList:!0})}o.call(this)},_cleanup:function(){this._observer.disconne
ct(),this._observer=null,this._mutationHandler=null,Polymer.dom.removeStaticFlus
h(this._boundFlush),i.call(this)},_flush:function(){this._observer&&this._mutati
onHandler(this._observer.takeRecords())},enableShadowAttributeTracking:function(
){if(this._observer){this._makeContentListenersAlwaysNotify(),this._observer.dis
connect(),this._observer.observe(this.node,{childList:!0,attributes:!0,subtree:!
0});var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).observer&&Pol
ymer.dom(t).observer.enableShadowAttributeTracking()}},_makeContentListenersAlwa
ysNotify:function(){for(var e,t=0;t<this._listeners.length;t++)e=this._listeners
[t],e._alwaysNotify=e._isContentListener}})}}(),function(){"use strict";var e=Po
lymer.DomApi.ctor,t=Polymer.Settings;e.DistributedNodesObserver=function(t){e.Ef
fectiveNodesObserver.call(this,t)},e.DistributedNodesObserver.prototype=Object.c
reate(e.EffectiveNodesObserver.prototype),Polymer.Base.extend(e.DistributedNodes
Observer.prototype,{_setup:function(){},_cleanup:function(){},_beforeCallListene
rs:function(){},_getEffectiveNodes:function(){return this.domApi.getDistributedN
odes()}}),t.useShadow&&Polymer.Base.extend(e.DistributedNodesObserver.prototype,
{_setup:function(){if(!this._observer){var e=this.domApi.getOwnerRoot(),t=e&&e.h
ost;if(t){var o=this;this._observer=Polymer.dom(t).observeNodes(function(){o._sc
heduleNotify()}),this._observer._isContentListener=!0,this._hasAttrSelect()&&Pol
ymer.dom(t).observer.enableShadowAttributeTracking()}}},_hasAttrSelect:function(
){var e=this.node.getAttribute("select");return e&&e.match(/[[.]+/)},_cleanup:fu
nction(){var e=this.domApi.getOwnerRoot(),t=e&&e.host;t&&Polymer.dom(t).unobserv
eNodes(this._observer),this._observer=null}})}(),function(){function e(e,t){t._d
istributedNodes.push(e);var o=e._destinationInsertionPoints;o?o.push(t):e._desti
nationInsertionPoints=[t]}function t(e){var t=e._distributedNodes;if(t)for(var o
=0;o<t.length;o++){var i=t[o]._destinationInsertionPoints;i&&i.splice(i.indexOf(
e)+1,i.length)}}function o(e,t){var o=u.Logical.getParentNode(e);o&&o.shadyRoot&
&h.hasInsertionPoint(o.shadyRoot)&&o.shadyRoot._distributionClean&&(o.shadyRoot.
_distributionClean=!1,t.shadyRoot._dirtyRoots.push(o))}function i(e,t){var o=t._
destinationInsertionPoints;return o&&o[o.length-1]===e}function n(e){return"cont
ent"==e.localName}function s(e){for(;e&&r(e);)e=e.domHost;return e}function r(e)
{for(var t,o=u.Logical.getChildNodes(e),i=0;i<o.length;i++)if(t=o[i],t.localName
&&"content"===t.localName)return e.domHost}function d(e){for(var t,o=0;o<e._inse
rtionPoints.length;o++)t=e._insertionPoints[o],h.hasApi(t)&&Polymer.dom(t).notif
yObserver()}function a(e){h.hasApi(e)&&Polymer.dom(e).notifyObserver()}function
l(e){if(c&&e)for(var t=0;t<e.length;t++)CustomElements.upgrade(e[t])}var h=Polym
er.DomApi,u=Polymer.TreeApi;Polymer.Base._addFeature({_prepShady:function(){this
._useContent=this._useContent||Boolean(this._template)},_setupShady:function(){t
his.shadyRoot=null,this.__domApi||(this.__domApi=null),this.__dom||(this.__dom=n
ull),this._ownerShadyRoot||(this._ownerShadyRoot=void 0)},_poolContent:function(
){this._useContent&&u.Logical.saveChildNodes(this)},_setupRoot:function(){this._
useContent&&(this._createLocalRoot(),this.dataHost||l(u.Logical.getChildNodes(th
is)))},_createLocalRoot:function(){this.shadyRoot=this.root,this.shadyRoot._dist
ributionClean=!1,this.shadyRoot._hasDistributed=!1,this.shadyRoot._isShadyRoot=!
0,this.shadyRoot._dirtyRoots=[];var e=this.shadyRoot._insertionPoints=!this._not
es||this._notes._hasContent?this.shadyRoot.querySelectorAll("content"):[];u.Logi
cal.saveChildNodes(this.shadyRoot);for(var t,o=0;o<e.length;o++)t=e[o],u.Logical
.saveChildNodes(t),u.Logical.saveChildNodes(t.parentNode);this.shadyRoot.host=th
is},get domHost(){var e=Polymer.dom(this).getOwnerRoot();return e&&e.host},distr
ibuteContent:function(e){if(this.shadyRoot){this.shadyRoot._invalidInsertionPoin
ts=this.shadyRoot._invalidInsertionPoints||e;var t=s(this);Polymer.dom(this)._la
zyDistribute(t)}},_distributeContent:function(){this._useContent&&!this.shadyRoo
t._distributionClean&&(this.shadyRoot._invalidInsertionPoints&&(Polymer.dom(this
)._updateInsertionPoints(this),this.shadyRoot._invalidInsertionPoints=!1),this._
beginDistribute(),this._distributeDirtyRoots(),this._finishDistribute())},_begin
Distribute:function(){this._useContent&&h.hasInsertionPoint(this.shadyRoot)&&(th
is._resetDistribution(),this._distributePool(this.shadyRoot,this._collectPool())
); |
| 2 },_distributeDirtyRoots:function(){for(var e,t=this.shadyRoot._dirtyRoots,o=0,i=
t.length;o<i&&(e=t[o]);o++)e._distributeContent();this.shadyRoot._dirtyRoots=[]}
,_finishDistribute:function(){if(this._useContent){if(this.shadyRoot._distributi
onClean=!0,h.hasInsertionPoint(this.shadyRoot))this._composeTree(),d(this.shadyR
oot);else if(this.shadyRoot._hasDistributed){var e=this._composeNode(this);this.
_updateChildNodes(this,e)}else u.Composed.clearChildNodes(this),this.appendChild
(this.shadyRoot);this.shadyRoot._hasDistributed||a(this),this.shadyRoot._hasDist
ributed=!0}},elementMatches:function(e,t){return t=t||this,h.matchesSelector.cal
l(t,e)},_resetDistribution:function(){for(var e=u.Logical.getChildNodes(this),o=
0;o<e.length;o++){var i=e[o];i._destinationInsertionPoints&&(i._destinationInser
tionPoints=void 0),n(i)&&t(i)}for(var s=this.shadyRoot,r=s._insertionPoints,d=0;
d<r.length;d++)r[d]._distributedNodes=[]},_collectPool:function(){for(var e=[],t
=u.Logical.getChildNodes(this),o=0;o<t.length;o++){var i=t[o];n(i)?e.push.apply(
e,i._distributedNodes):e.push(i)}return e},_distributePool:function(e,t){for(var
i,n=e._insertionPoints,s=0,r=n.length;s<r&&(i=n[s]);s++)this._distributeInserti
onPoint(i,t),o(i,this)},_distributeInsertionPoint:function(t,o){for(var i,n=!1,s
=0,r=o.length;s<r;s++)i=o[s],i&&this._matchesContentSelect(i,t)&&(e(i,t),o[s]=vo
id 0,n=!0);if(!n)for(var d=u.Logical.getChildNodes(t),a=0;a<d.length;a++)e(d[a],
t)},_composeTree:function(){this._updateChildNodes(this,this._composeNode(this))
;for(var e,t,o=this.shadyRoot._insertionPoints,i=0,n=o.length;i<n&&(e=o[i]);i++)
t=u.Logical.getParentNode(e),t._useContent||t===this||t===this.shadyRoot||this._
updateChildNodes(t,this._composeNode(t))},_composeNode:function(e){for(var t=[],
o=u.Logical.getChildNodes(e.shadyRoot||e),s=0;s<o.length;s++){var r=o[s];if(n(r)
)for(var d=r._distributedNodes,a=0;a<d.length;a++){var l=d[a];i(r,l)&&t.push(l)}
else t.push(r)}return t},_updateChildNodes:function(e,t){for(var o,i=u.Composed.
getChildNodes(e),n=Polymer.ArraySplice.calculateSplices(t,i),s=0,r=0;s<n.length&
&(o=n[s]);s++){for(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)u.Composed
.getParentNode(d)===e&&u.Composed.removeChild(e,d),i.splice(o.index+r,1);r-=o.ad
dedCount}for(var o,l,s=0;s<n.length&&(o=n[s]);s++)for(l=i[o.index],a=o.index,d;a
<o.index+o.addedCount;a++)d=t[a],u.Composed.insertBefore(e,d,l),i.splice(a,0,d)}
,_matchesContentSelect:function(e,t){var o=t.getAttribute("select");if(!o)return
!0;if(o=o.trim(),!o)return!0;if(!(e instanceof Element))return!1;var i=/^(:not\(
)?[*.#[a-zA-Z_|]/;return!!i.test(o)&&this.elementMatches(o,e)},_elementAdd:funct
ion(){},_elementRemove:function(){}});var c=window.CustomElements&&!CustomElemen
ts.useNative}(),Polymer.Settings.useShadow&&Polymer.Base._addFeature({_poolConte
nt:function(){},_beginDistribute:function(){},distributeContent:function(){},_di
stributeContent:function(){},_finishDistribute:function(){},_createLocalRoot:fun
ction(){this.createShadowRoot(),this.shadowRoot.appendChild(this.root),this.root
=this.shadowRoot}}),Polymer.Async={_currVal:0,_lastVal:0,_callbacks:[],_twiddleC
ontent:0,_twiddle:document.createTextNode(""),run:function(e,t){return t>0?~setT
imeout(e,t):(this._twiddle.textContent=this._twiddleContent++,this._callbacks.pu
sh(e),this._currVal++)},cancel:function(e){if(e<0)clearTimeout(~e);else{var t=e-
this._lastVal;if(t>=0){if(!this._callbacks[t])throw"invalid async handle: "+e;th
is._callbacks[t]=null}}},_atEndOfMicrotask:function(){for(var e=this._callbacks.
length,t=0;t<e;t++){var o=this._callbacks[t];if(o)try{o()}catch(e){throw t++,thi
s._callbacks.splice(0,t),this._lastVal+=t,this._twiddle.textContent=this._twiddl
eContent++,e}}this._callbacks.splice(0,e),this._lastVal+=e}},new window.Mutation
Observer(function(){Polymer.Async._atEndOfMicrotask()}).observe(Polymer.Async._t
widdle,{characterData:!0}),Polymer.Debounce=function(){function e(e,t,i){return
e?e.stop():e=new o(this),e.go(t,i),e}var t=Polymer.Async,o=function(e){this.cont
ext=e;var t=this;this.boundComplete=function(){t.complete()}};return o.prototype
={go:function(e,o){var i;this.finish=function(){t.cancel(i)},i=t.run(this.boundC
omplete,o),this.callback=e},stop:function(){this.finish&&(this.finish(),this.fin
ish=null,this.callback=null)},complete:function(){if(this.finish){var e=this.cal
lback;this.stop(),e.call(this.context)}}},e}(),Polymer.Base._addFeature({_setupD
ebouncers:function(){this._debouncers={}},debounce:function(e,t,o){return this._
debouncers[e]=Polymer.Debounce.call(this,this._debouncers[e],t,o)},isDebouncerAc
tive:function(e){var t=this._debouncers[e];return!(!t||!t.finish)},flushDebounce
r:function(e){var t=this._debouncers[e];t&&t.complete()},cancelDebouncer:functio
n(e){var t=this._debouncers[e];t&&t.stop()}}),Polymer.DomModule=document.createE
lement("dom-module"),Polymer.Base._addFeature({_registerFeatures:function(){this
._prepIs(),this._prepBehaviors(),this._prepConstructor(),this._prepTemplate(),th
is._prepShady(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHos
tAttributes(e.hostAttributes)},_initFeatures:function(){this._registerHost(),thi
s._template&&(this._poolContent(),this._beginHosting(),this._stampTemplate(),thi
s._endHosting()),this._marshalHostAttributes(),this._setupDebouncers(),this._mar
shalBehaviors(),this._tryReady()},_marshalBehavior:function(e){}})</script> <scr
ipt>Polymer.nar=[],Polymer.Annotations={parseAnnotations:function(e){var t=[],n=
e._content||e.content;return this._parseNodeAnnotations(n,t,e.hasAttribute("stri
p-whitespace")),t},_parseNodeAnnotations:function(e,t,n){return e.nodeType===Nod
e.TEXT_NODE?this._parseTextNodeAnnotation(e,t):this._parseElementAnnotations(e,t
,n)},_bindingRegex:function(){var e="(?:[a-zA-Z_$][\\w.:$\\-*]*)",t="(?:[-+]?[0-
9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?)",n="(?:'(?:[^'\\\\]|\\\\.)*')",r='(?:"(?:[^"\
\\\]|\\\\.)*")',s="(?:"+n+"|"+r+")",i="(?:"+e+"|"+t+"|"+s+"\\s*)",o="(?:"+i+"(?:
,\\s*"+i+")*)",a="(?:\\(\\s*(?:"+o+"?)\\)\\s*)",l="("+e+"\\s*"+a+"?)",c="(\\[\\[
|{{)\\s*",h="(?:]]|}})",u="(?:(!)\\s*)?",f=c+u+l+h;return new RegExp(f,"g")}(),_
parseBindings:function(e){for(var t,n=this._bindingRegex,r=[],s=0;null!==(t=n.ex
ec(e));){t.index>s&&r.push({literal:e.slice(s,t.index)});var i,o,a,l=t[1][0],c=B
oolean(t[2]),h=t[3].trim();"{"==l&&(a=h.indexOf("::"))>0&&(o=h.substring(a+2),h=
h.substring(0,a),i=!0),r.push({compoundIndex:r.length,value:h,mode:l,negate:c,ev
ent:o,customEvent:i}),s=n.lastIndex}if(s&&s<e.length){var u=e.substring(s);u&&r.
push({literal:u})}if(r.length)return r},_literalFromParts:function(e){for(var t=
"",n=0;n<e.length;n++){var r=e[n].literal;t+=r||""}return t},_parseTextNodeAnnot
ation:function(e,t){var n=this._parseBindings(e.textContent);if(n){e.textContent
=this._literalFromParts(n)||" ";var r={bindings:[{kind:"text",name:"textContent"
,parts:n,isCompound:1!==n.length}]};return t.push(r),r}},_parseElementAnnotation
s:function(e,t,n){var r={bindings:[],events:[]};return"content"===e.localName&&(
t._hasContent=!0),this._parseChildNodesAnnotations(e,r,t,n),e.attributes&&(this.
_parseNodeAttributeAnnotations(e,r,t),this.prepElement&&this.prepElement(e)),(r.
bindings.length||r.events.length||r.id)&&t.push(r),r},_parseChildNodesAnnotation
s:function(e,t,n,r){if(e.firstChild)for(var s=e.firstChild,i=0;s;){var o=s.nextS
ibling;if("template"!==s.localName||s.hasAttribute("preserve-content")||this._pa
rseTemplate(s,i,n,t),"slot"==s.localName&&(s=this._replaceSlotWithContent(s)),s.
nodeType===Node.TEXT_NODE){for(var a=o;a&&a.nodeType===Node.TEXT_NODE;)s.textCon
tent+=a.textContent,o=a.nextSibling,e.removeChild(a),a=o;r&&!s.textContent.trim(
)&&(e.removeChild(s),i--)}if(s.parentNode){var l=this._parseNodeAnnotations(s,n,
r);l&&(l.parent=t,l.index=i)}s=o,i++}},_replaceSlotWithContent:function(e){for(v
ar t=e.ownerDocument.createElement("content");e.firstChild;)t.appendChild(e.firs
tChild);for(var n=e.attributes,r=0;r<n.length;r++){var s=n[r];t.setAttribute(s.n
ame,s.value)}var i=e.getAttribute("name"),o=i?"[slot='"+i+"']":":not([slot])";re
turn t.setAttribute("select",o),e.parentNode.replaceChild(t,e),t},_parseTemplate
:function(e,t,n,r){var s=document.createDocumentFragment();s._notes=this.parseAn
notations(e),s.appendChild(e.content),n.push({bindings:Polymer.nar,events:Polyme
r.nar,templateContent:s,parent:r,index:t})},_parseNodeAttributeAnnotations:funct
ion(e,t){for(var n,r=Array.prototype.slice.call(e.attributes),s=r.length-1;n=r[s
];s--){var i,o=n.name,a=n.value;"on-"===o.slice(0,3)?(e.removeAttribute(o),t.eve
nts.push({name:o.slice(3),value:a})):(i=this._parseNodeAttributeAnnotation(e,o,a
))?t.bindings.push(i):"id"===o&&(t.id=a)}},_parseNodeAttributeAnnotation:functio
n(e,t,n){var r=this._parseBindings(n);if(r){var s=t,i="property";"$"==t[t.length
-1]&&(t=t.slice(0,-1),i="attribute");var o=this._literalFromParts(r);o&&"attribu
te"==i&&e.setAttribute(t,o),"input"===e.localName&&"value"===s&&e.setAttribute(s
,""),e.removeAttribute(s);var a=Polymer.CaseMap.dashToCamelCase(t);return"proper
ty"===i&&(t=a),{kind:i,name:t,propertyName:a,parts:r,literal:o,isCompound:1!==r.
length}}},findAnnotatedNode:function(e,t){var n=t.parent&&Polymer.Annotations.fi
ndAnnotatedNode(e,t.parent);if(!n)return e;for(var r=n.firstChild,s=0;r;r=r.next
Sibling)if(t.index===s++)return r}},function(){function e(e,t){return e.replace(
a,function(e,r,s,i){return r+"'"+n(s.replace(/["']/g,""),t)+"'"+i})}function t(t
,r){for(var s in l)for(var i,o,a,c=l[s],u=0,f=c.length;u<f&&(i=c[u]);u++)"*"!==s
&&t.localName!==s||(o=t.attributes[i],a=o&&o.value,a&&a.search(h)<0&&(o.value="s
tyle"===i?e(a,r):n(a,r)))}function n(e,t){if(e&&c.test(e))return e;var n=s(t);re
turn n.href=e,n.href||e}function r(e,t){return i||(i=document.implementation.cre
ateHTMLDocument("temp"),o=i.createElement("base"),i.head.appendChild(o)),o.href=
t,n(e,i)}function s(e){return e.__urlResolver||(e.__urlResolver=e.createElement(
"a"))}var i,o,a=/(url\()([^)]*)(\))/g,l={"*":["href","src","style","url"],form:[
"action"]},c=/(^\/)|(^#)|(^[\w-\d]*:)/,h=/\{\{|\[\[/;Polymer.ResolveUrl={resolve
Css:e,resolveAttrs:t,resolveUrl:r}}(),Polymer.Path={root:function(e){var t=e.ind
exOf(".");return t===-1?e:e.slice(0,t)},isDeep:function(e){return e.indexOf(".")
!==-1},isAncestor:function(e,t){return 0===e.indexOf(t+".")},isDescendant:functi
on(e,t){return 0===t.indexOf(e+".")},translate:function(e,t,n){return t+n.slice(
e.length)},matches:function(e,t,n){return e===n||this.isAncestor(e,n)||Boolean(t
)&&this.isDescendant(e,n)}},Polymer.Base._addFeature({_prepAnnotations:function(
){if(this._template){var e=this;Polymer.Annotations.prepElement=function(t){e._p
repElement(t)},this._template._content&&this._template._content._notes?this._not
es=this._template._content._notes:(this._notes=Polymer.Annotations.parseAnnotati
ons(this._template),this._processAnnotations(this._notes)),Polymer.Annotations.p
repElement=null}else this._notes=[]},_processAnnotations:function(e){for(var t=0
;t<e.length;t++){for(var n=e[t],r=0;r<n.bindings.length;r++)for(var s=n.bindings
[r],i=0;i<s.parts.length;i++){var o=s.parts[i];if(!o.literal){var a=this._parseM
ethod(o.value);a?o.signature=a:o.model=Polymer.Path.root(o.value)}}if(n.template
Content){this._processAnnotations(n.templateContent._notes);var l=n.templateCont
ent._parentProps=this._discoverTemplateParentProps(n.templateContent._notes),c=[
];for(var h in l){var u="_parent_"+h;c.push({index:n.index,kind:"property",name:
u,propertyName:u,parts:[{mode:"{",model:h,value:h}]})}n.bindings=n.bindings.conc
at(c)}}},_discoverTemplateParentProps:function(e){for(var t,n={},r=0;r<e.length&
&(t=e[r]);r++){for(var s,i=0,o=t.bindings;i<o.length&&(s=o[i]);i++)for(var a,l=0
,c=s.parts;l<c.length&&(a=c[l]);l++)if(a.signature){for(var h=a.signature.args,u
=0;u<h.length;u++){var f=h[u].model;f&&(n[f]=!0)}a.signature.dynamicFn&&(n[a.sig
nature.method]=!0)}else a.model&&(n[a.model]=!0);if(t.templateContent){var p=t.t
emplateContent._parentProps;Polymer.Base.mixin(n,p)}}return n},_prepElement:func
tion(e){Polymer.ResolveUrl.resolveAttrs(e,this._template.ownerDocument)},_findAn
notatedNode:Polymer.Annotations.findAnnotatedNode,_marshalAnnotationReferences:f
unction(){this._template&&(this._marshalIdNodes(),this._marshalAnnotatedNodes(),
this._marshalAnnotatedListeners())},_configureAnnotationReferences:function(){fo
r(var e=this._notes,t=this._nodes,n=0;n<e.length;n++){var r=e[n],s=t[n];this._co
nfigureTemplateContent(r,s),this._configureCompoundBindings(r,s)}},_configureTem
plateContent:function(e,t){e.templateContent&&(t._content=e.templateContent)},_c
onfigureCompoundBindings:function(e,t){for(var n=e.bindings,r=0;r<n.length;r++){
var s=n[r];if(s.isCompound){for(var i=t.__compoundStorage__||(t.__compoundStorag
e__={}),o=s.parts,a=new Array(o.length),l=0;l<o.length;l++)a[l]=o[l].literal;var
c=s.name;i[c]=a,s.literal&&"property"==s.kind&&(t._configValue?t._configValue(c
,s.literal):t[c]=s.literal)}}},_marshalIdNodes:function(){this.$={};for(var e,t=
0,n=this._notes.length;t<n&&(e=this._notes[t]);t++)e.id&&(this.$[e.id]=this._fin
dAnnotatedNode(this.root,e))},_marshalAnnotatedNodes:function(){if(this._notes&&
this._notes.length){for(var e=new Array(this._notes.length),t=0;t<this._notes.le
ngth;t++)e[t]=this._findAnnotatedNode(this.root,this._notes[t]);this._nodes=e}},
_marshalAnnotatedListeners:function(){for(var e,t=0,n=this._notes.length;t<n&&(e
=this._notes[t]);t++)if(e.events&&e.events.length)for(var r,s=this._findAnnotate
dNode(this.root,e),i=0,o=e.events;i<o.length&&(r=o[i]);i++)this.listen(s,r.name,
r.value)}}),Polymer.Base._addFeature({listeners:{},_listenListeners:function(e){
var t,n,r;for(r in e)r.indexOf(".")<0?(t=this,n=r):(n=r.split("."),t=this.$[n[0]
],n=n[1]),this.listen(t,n,e[r])},listen:function(e,t,n){var r=this._recallEventH
andler(this,t,e,n);r||(r=this._createEventHandler(e,t,n)),r._listening||(this._l
isten(e,t,r),r._listening=!0)},_boundListenerKey:function(e,t){return e+":"+t},_
recordEventHandler:function(e,t,n,r,s){var i=e.__boundListeners;i||(i=e.__boundL
isteners=new WeakMap);var o=i.get(n);o||(o={},i.set(n,o));var a=this._boundListe
nerKey(t,r);o[a]=s},_recallEventHandler:function(e,t,n,r){var s=e.__boundListene
rs;if(s){var i=s.get(n);if(i){var o=this._boundListenerKey(t,r);return i[o]}}},_
createEventHandler:function(e,t,n){var r=this,s=function(e){r[n]?r[n](e,e.detail
):r._warn(r._logf("_createEventHandler","listener method `"+n+"` not defined"))}
;return s._listening=!1,this._recordEventHandler(r,t,e,n,s),s},unlisten:function
(e,t,n){var r=this._recallEventHandler(this,t,e,n);r&&(this._unlisten(e,t,r),r._
listening=!1)},_listen:function(e,t,n){e.addEventListener(t,n)},_unlisten:functi
on(e,t,n){e.removeEventListener(t,n)}}),function(){"use strict";function e(e){fo
r(var t,n=g?["click"]:m,r=0;r<n.length;r++)t=n[r],e?document.addEventListener(t,
P,!0):document.removeEventListener(t,P,!0)}function t(){S.mouse.mouseIgnoreJob||
e(!0);var t=function(){e(),S.mouse.target=null,S.mouse.mouseIgnoreJob=null};S.mo
use.mouseIgnoreJob=Polymer.Debounce(S.mouse.mouseIgnoreJob,t,d)}function n(e){va
r t=e.type;if(m.indexOf(t)===-1)return!1;if("mousemove"===t){var n=void 0===e.bu
ttons?1:e.buttons;return e instanceof window.MouseEvent&&!v&&(n=y[e.which]||0),B
oolean(1&n)}var r=void 0===e.button?0:e.button;return 0===r}function r(e){if("cl
ick"===e.type){if(0===e.detail)return!0;var t=C.findOriginalTarget(e),n=t.getBou
ndingClientRect(),r=e.pageX,s=e.pageY;return!(r>=n.left&&r<=n.right&&s>=n.top&&s
<=n.bottom)}return!1}function s(e){for(var t,n=Polymer.dom(e).path,r="auto",s=0;
s<n.length;s++)if(t=n[s],t[u]){r=t[u];break}return r}function i(e,t,n){e.movefn=
t,e.upfn=n,document.addEventListener("mousemove",t),document.addEventListener("m
ouseup",n)}function o(e){document.removeEventListener("mousemove",e.movefn),docu
ment.removeEventListener("mouseup",e.upfn),e.movefn=null,e.upfn=null}var a=Polym
er.DomApi.wrap,l="string"==typeof document.head.style.touchAction,c="__polymerGe
stures",h="__polymerGesturesHandled",u="__polymerGesturesTouchAction",f=25,p=5,_
=2,d=2500,m=["mousedown","mousemove","mouseup","click"],y=[0,1,4,2],v=function()
{try{return 1===new MouseEvent("test",{buttons:1}).buttons}catch(e){return!1}}()
,g=navigator.userAgent.match(/iP(?:[oa]d|hone)|Android/),P=function(e){var t=e.s
ourceCapabilities;if((!t||t.firesTouchEvents)&&(e[h]={skip:!0},"click"===e.type)
){for(var n=Polymer.dom(e).path,r=0;r<n.length;r++)if(n[r]===S.mouse.target)retu
rn;e.preventDefault(),e.stopPropagation()}},S={mouse:{target:null,mouseIgnoreJob
:null},touch:{x:0,y:0,id:-1,scrollDecided:!1}},C={gestures:{},recognizers:[],dee
pTargetFind:function(e,t){for(var n=document.elementFromPoint(e,t),r=n;r&&r.shad
owRoot;)r=r.shadowRoot.elementFromPoint(e,t),r&&(n=r);return n},findOriginalTarg
et:function(e){return e.path?e.path[0]:e.target},handleNative:function(e){var n,
r=e.type,s=a(e.currentTarget),i=s[c];if(i){var o=i[r];if(o){if(!e[h]&&(e[h]={},"
touch"===r.slice(0,5))){var u=e.changedTouches[0];if("touchstart"===r&&1===e.tou
ches.length&&(S.touch.id=u.identifier),S.touch.id!==u.identifier)return;l||"touc
hstart"!==r&&"touchmove"!==r||C.handleTouchAction(e),"touchend"===r&&(S.mouse.ta
rget=Polymer.dom(e).rootTarget,t())}if(n=e[h],!n.skip){for(var f,p=C.recognizers
,_=0;_<p.length;_++)f=p[_],o[f.name]&&!n[f.name]&&f.flow&&f.flow.start.indexOf(e
.type)>-1&&f.reset&&f.reset();for(_=0,f;_<p.length;_++)f=p[_],o[f.name]&&!n[f.na
me]&&(n[f.name]=!0,f[r](e))}}}},handleTouchAction:function(e){var t=e.changedTou
ches[0],n=e.type;if("touchstart"===n)S.touch.x=t.clientX,S.touch.y=t.clientY,S.t
ouch.scrollDecided=!1;else if("touchmove"===n){if(S.touch.scrollDecided)return;S
.touch.scrollDecided=!0;var r=s(e),i=!1,o=Math.abs(S.touch.x-t.clientX),a=Math.a
bs(S.touch.y-t.clientY);e.cancelable&&("none"===r?i=!0:"pan-x"===r?i=a>o:"pan-y"
===r&&(i=o>a)),i?e.preventDefault():C.prevent("track")}},add:function(e,t,n){e=a
(e);var r=this.gestures[t],s=r.deps,i=r.name,o=e[c];o||(e[c]=o={});for(var l,h,u
=0;u<s.length;u++)l=s[u],g&&m.indexOf(l)>-1&&"click"!==l||(h=o[l],h||(o[l]=h={_c
ount:0}),0===h._count&&e.addEventListener(l,this.handleNative),h[i]=(h[i]||0)+1,
h._count=(h._count||0)+1);e.addEventListener(t,n),r.touchAction&&this.setTouchAc
tion(e,r.touchAction)},remove:function(e,t,n){e=a(e);var r=this.gestures[t],s=r.
deps,i=r.name,o=e[c];if(o)for(var l,h,u=0;u<s.length;u++)l=s[u],h=o[l],h&&h[i]&&
(h[i]=(h[i]||1)-1,h._count=(h._count||1)-1,0===h._count&&e.removeEventListener(l
,this.handleNative));e.removeEventListener(t,n)},register:function(e){this.recog
nizers.push(e);for(var t=0;t<e.emits.length;t++)this.gestures[e.emits[t]]=e},fin
dRecognizerByEvent:function(e){for(var t,n=0;n<this.recognizers.length;n++){t=th
is.recognizers[n];for(var r,s=0;s<t.emits.length;s++)if(r=t.emits[s],r===e)retur
n t}return null},setTouchAction:function(e,t){l&&(e.style.touchAction=t),e[u]=t}
,fire:function(e,t,n){var r=Polymer.Base.fire(t,n,{node:e,bubbles:!0,cancelable:
!0});if(r.defaultPrevented){var s=n.preventer||n.sourceEvent;s&&s.preventDefault
&&s.preventDefault()}},prevent:function(e){var t=this.findRecognizerByEvent(e);t
.info&&(t.info.prevent=!0)},resetMouseCanceller:function(){S.mouse.mouseIgnoreJo
b&&S.mouse.mouseIgnoreJob.complete()}};C.register({name:"downup",deps:["mousedow
n","touchstart","touchend"],flow:{start:["mousedown","touchstart"],end:["mouseup
","touchend"]},emits:["down","up"],info:{movefn:null,upfn:null},reset:function()
{o(this.info)},mousedown:function(e){if(n(e)){var t=C.findOriginalTarget(e),r=th
is,s=function(e){n(e)||(r.fire("up",t,e),o(r.info))},a=function(e){n(e)&&r.fire(
"up",t,e),o(r.info)};i(this.info,s,a),this.fire("down",t,e)}},touchstart:functio
n(e){this.fire("down",C.findOriginalTarget(e),e.changedTouches[0],e)},touchend:f
unction(e){this.fire("up",C.findOriginalTarget(e),e.changedTouches[0],e)},fire:f
unction(e,t,n,r){C.fire(t,e,{x:n.clientX,y:n.clientY,sourceEvent:n,preventer:r,p
revent:function(e){return C.prevent(e)}})}}),C.register({name:"track",touchActio
n:"none",deps:["mousedown","touchstart","touchmove","touchend"],flow:{start:["mo
usedown","touchstart"],end:["mouseup","touchend"]},emits:["track"],info:{x:0,y:0
,state:"start",started:!1,moves:[],addMove:function(e){this.moves.length>_&&this
.moves.shift(),this.moves.push(e)},movefn:null,upfn:null,prevent:!1},reset:funct
ion(){this.info.state="start",this.info.started=!1,this.info.moves=[],this.info.
x=0,this.info.y=0,this.info.prevent=!1,o(this.info)},hasMovedEnough:function(e,t
){if(this.info.prevent)return!1;if(this.info.started)return!0;var n=Math.abs(thi
s.info.x-e),r=Math.abs(this.info.y-t);return n>=p||r>=p},mousedown:function(e){i
f(n(e)){var t=C.findOriginalTarget(e),r=this,s=function(e){var s=e.clientX,i=e.c
lientY;r.hasMovedEnough(s,i)&&(r.info.state=r.info.started?"mouseup"===e.type?"e
nd":"track":"start","start"===r.info.state&&C.prevent("tap"),r.info.addMove({x:s
,y:i}),n(e)||(r.info.state="end",o(r.info)),r.fire(t,e),r.info.started=!0)},a=fu
nction(e){r.info.started&&s(e),o(r.info)};i(this.info,s,a),this.info.x=e.clientX
,this.info.y=e.clientY}},touchstart:function(e){var t=e.changedTouches[0];this.i
nfo.x=t.clientX,this.info.y=t.clientY},touchmove:function(e){var t=C.findOrigina
lTarget(e),n=e.changedTouches[0],r=n.clientX,s=n.clientY;this.hasMovedEnough(r,s
)&&("start"===this.info.state&&C.prevent("tap"),this.info.addMove({x:r,y:s}),thi
s.fire(t,n),this.info.state="track",this.info.started=!0)},touchend:function(e){
var t=C.findOriginalTarget(e),n=e.changedTouches[0];this.info.started&&(this.inf
o.state="end",this.info.addMove({x:n.clientX,y:n.clientY}),this.fire(t,n,e))},fi
re:function(e,t,n){var r,s=this.info.moves[this.info.moves.length-2],i=this.info
.moves[this.info.moves.length-1],o=i.x-this.info.x,a=i.y-this.info.y,l=0;return
s&&(r=i.x-s.x,l=i.y-s.y),C.fire(e,"track",{state:this.info.state,x:t.clientX,y:t
.clientY,dx:o,dy:a,ddx:r,ddy:l,sourceEvent:t,preventer:n,hover:function(){return
C.deepTargetFind(t.clientX,t.clientY)}})}}),C.register({name:"tap",deps:["mouse
down","click","touchstart","touchend"],flow:{start:["mousedown","touchstart"],en
d:["click","touchend"]},emits:["tap"],info:{x:NaN,y:NaN,prevent:!1},reset:functi
on(){this.info.x=NaN,this.info.y=NaN,this.info.prevent=!1},save:function(e){this
.info.x=e.clientX,this.info.y=e.clientY},mousedown:function(e){n(e)&&this.save(e
)},click:function(e){n(e)&&this.forward(e)},touchstart:function(e){this.save(e.c
hangedTouches[0],e)},touchend:function(e){this.forward(e.changedTouches[0],e)},f
orward:function(e,t){var n=Math.abs(e.clientX-this.info.x),s=Math.abs(e.clientY-
this.info.y),i=C.findOriginalTarget(e);(isNaN(n)||isNaN(s)||n<=f&&s<=f||r(e))&&(
this.info.prevent||C.fire(i,"tap",{x:e.clientX,y:e.clientY,sourceEvent:e,prevent
er:t}))}});var E={x:"pan-x",y:"pan-y",none:"none",all:"auto"};Polymer.Base._addF
eature({_setupGestures:function(){this.__polymerGestures=null},_listen:function(
e,t,n){C.gestures[t]?C.add(e,t,n):e.addEventListener(t,n)},_unlisten:function(e,
t,n){C.gestures[t]?C.remove(e,t,n):e.removeEventListener(t,n)},setScrollDirectio
n:function(e,t){t=t||this,C.setTouchAction(t,E[e]||"auto")}}),Polymer.Gestures=C
}(),function(){"use strict";if(Polymer.Base._addFeature({$$:function(e){return P
olymer.dom(this.root).querySelector(e)},toggleClass:function(e,t,n){n=n||this,1=
=arguments.length&&(t=!n.classList.contains(e)),t?Polymer.dom(n).classList.add(e
):Polymer.dom(n).classList.remove(e)},toggleAttribute:function(e,t,n){n=n||this,
1==arguments.length&&(t=!n.hasAttribute(e)),t?Polymer.dom(n).setAttribute(e,""):
Polymer.dom(n).removeAttribute(e)},classFollows:function(e,t,n){n&&Polymer.dom(n
).classList.remove(e),t&&Polymer.dom(t).classList.add(e)},attributeFollows:funct
ion(e,t,n){n&&Polymer.dom(n).removeAttribute(e),t&&Polymer.dom(t).setAttribute(e
,"")},getEffectiveChildNodes:function(){return Polymer.dom(this).getEffectiveChi
ldNodes()},getEffectiveChildren:function(){var e=Polymer.dom(this).getEffectiveC
hildNodes();return e.filter(function(e){return e.nodeType===Node.ELEMENT_NODE})}
,getEffectiveTextContent:function(){for(var e,t=this.getEffectiveChildNodes(),n=
[],r=0;e=t[r];r++)e.nodeType!==Node.COMMENT_NODE&&n.push(Polymer.dom(e).textCont
ent);return n.join("")},queryEffectiveChildren:function(e){var t=Polymer.dom(thi
s).queryDistributedElements(e);return t&&t[0]},queryAllEffectiveChildren:functio
n(e){return Polymer.dom(this).queryDistributedElements(e)},getContentChildNodes:
function(e){var t=Polymer.dom(this.root).querySelector(e||"content");return t?Po
lymer.dom(t).getDistributedNodes():[]},getContentChildren:function(e){return thi
s.getContentChildNodes(e).filter(function(e){return e.nodeType===Node.ELEMENT_NO
DE})},fire:function(e,t,n){n=n||Polymer.nob;var r=n.node||this;t=null===t||void
0===t?{}:t;var s=void 0===n.bubbles||n.bubbles,i=Boolean(n.cancelable),o=n._useC
ache,a=this._getEvent(e,s,i,o);return a.detail=t,o&&(this.__eventCache[e]=null),
r.dispatchEvent(a),o&&(this.__eventCache[e]=a),a},__eventCache:{},_getEvent:func
tion(e,t,n,r){var s=r&&this.__eventCache[e];return s&&s.bubbles==t&&s.cancelable
==n||(s=new Event(e,{bubbles:Boolean(t),cancelable:n})),s},async:function(e,t){v
ar n=this;return Polymer.Async.run(function(){e.call(n)},t)},cancelAsync:functio
n(e){Polymer.Async.cancel(e)},arrayDelete:function(e,t){var n;if(Array.isArray(e
)){if(n=e.indexOf(t),n>=0)return e.splice(n,1)}else{var r=this._get(e);if(n=r.in
dexOf(t),n>=0)return this.splice(e,n,1)}},transform:function(e,t){t=t||this,t.st
yle.webkitTransform=e,t.style.transform=e},translate3d:function(e,t,n,r){r=r||th
is,this.transform("translate3d("+e+","+t+","+n+")",r)},importHref:function(e,t,n
,r){var s=document.createElement("link");s.rel="import",s.href=e;var i=Polymer.B
ase.importHref.imported=Polymer.Base.importHref.imported||{},o=i[s.href],a=o||s,
l=this;if(t){var c=function(e){return e.target.__firedLoad=!0,e.target.removeEve
ntListener("load",c),t.call(l,e)};a.addEventListener("load",c)}if(n){var h=funct
ion(e){return e.target.__firedError=!0,e.target.removeEventListener("error",h),n
.call(l,e)};a.addEventListener("error",h)}return o?(o.__firedLoad&&o.dispatchEve
nt(new Event("load")),o.__firedError&&o.dispatchEvent(new Event("error"))):(i[s.
href]=s,r=Boolean(r),r&&s.setAttribute("async",""),document.head.appendChild(s))
,a},create:function(e,t){var n=document.createElement(e);if(t)for(var r in t)n[r
]=t[r];return n},isLightDescendant:function(e){return this!==e&&this.contains(e)
&&Polymer.dom(this).getOwnerRoot()===Polymer.dom(e).getOwnerRoot()},isLocalDesce
ndant:function(e){return this.root===Polymer.dom(e).getOwnerRoot()}}),!Polymer.S
ettings.useNativeCustomElements){var e=Polymer.Base.importHref;Polymer.Base.impo
rtHref=function(t,n,r,s){CustomElements.ready=!1;var i=function(e){if(CustomElem
ents.upgradeDocumentTree(document),CustomElements.ready=!0,n)return n.call(this,
e)};return e.call(this,t,i,r,s)}}}(),Polymer.Bind={prepareModel:function(e){Poly
mer.Base.mixin(e,this._modelApi)},_modelApi:{_notifyChange:function(e,t,n){n=voi
d 0===n?this[e]:n,t=t||Polymer.CaseMap.camelToDashCase(e)+"-changed",this.fire(t
,{value:n},{bubbles:!1,cancelable:!1,_useCache:!0})},_propertySetter:function(e,
t,n,r){var s=this.__data__[e];return s===t||s!==s&&t!==t||(this.__data__[e]=t,"o
bject"==typeof t&&this._clearPath(e),this._propertyChanged&&this._propertyChange
d(e,t,s),n&&this._effectEffects(e,t,n,s,r)),s},__setProperty:function(e,t,n,r){r
=r||this;var s=r._propertyEffects&&r._propertyEffects[e];s?r._propertySetter(e,t
,s,n):r[e]!==t&&(r[e]=t)},_effectEffects:function(e,t,n,r,s){for(var i,o=0,a=n.l
ength;o<a&&(i=n[o]);o++)i.fn.call(this,e,this[e],i.effect,r,s)},_clearPath:funct
ion(e){for(var t in this.__data__)Polymer.Path.isDescendant(e,t)&&(this.__data__
[t]=void 0)}},ensurePropertyEffects:function(e,t){e._propertyEffects||(e._proper
tyEffects={});var n=e._propertyEffects[t];return n||(n=e._propertyEffects[t]=[])
,n},addPropertyEffect:function(e,t,n,r){var s=this.ensurePropertyEffects(e,t),i=
{kind:n,effect:r,fn:Polymer.Bind["_"+n+"Effect"]};return s.push(i),i},createBind
ings:function(e){var t=e._propertyEffects;if(t)for(var n in t){var r=t[n];r.sort
(this._sortPropertyEffects),this._createAccessors(e,n,r)}},_sortPropertyEffects:
function(){var e={compute:0,annotation:1,annotatedComputation:2,reflect:3,notify
:4,observer:5,complexObserver:6,function:7};return function(t,n){return e[t.kind
]-e[n.kind]}}(),_createAccessors:function(e,t,n){var r={get:function(){return th
is.__data__[t]}},s=function(e){this._propertySetter(t,e,n)},i=e.getPropertyInfo&
&e.getPropertyInfo(t);i&&i.readOnly?i.computed||(e["_set"+this.upper(t)]=s):r.se
t=s,Object.defineProperty(e,t,r)},upper:function(e){return e[0].toUpperCase()+e.
substring(1)},_addAnnotatedListener:function(e,t,n,r,s,i){e._bindListeners||(e._
bindListeners=[]);var o=this._notedListenerFactory(n,r,Polymer.Path.isDeep(r),i)
,a=s||Polymer.CaseMap.camelToDashCase(n)+"-changed";e._bindListeners.push({index
:t,property:n,path:r,changedFn:o,event:a})},_isEventBogus:function(e,t){return e
.path&&e.path[0]!==t},_notedListenerFactory:function(e,t,n,r){return function(s,
i,o){if(o){var a=Polymer.Path.translate(e,t,o);this._notifyPath(a,i)}else i=s[e]
,r&&(i=!i),n?this.__data__[t]!=i&&this.set(t,i):this[t]=i}},prepareInstance:func
tion(e){e.__data__=Object.create(null)},setupBindListeners:function(e){for(var t
,n=e._bindListeners,r=0,s=n.length;r<s&&(t=n[r]);r++){var i=e._nodes[t.index];th
is._addNotifyListener(i,e,t.event,t.changedFn)}},_addNotifyListener:function(e,t
,n,r){e.addEventListener(n,function(e){return t._notifyListener(r,e)})}},Polymer
.Base.extend(Polymer.Bind,{_shouldAddListener:function(e){return e.name&&"attrib
ute"!=e.kind&&"text"!=e.kind&&!e.isCompound&&"{"===e.parts[0].mode},_annotationE
ffect:function(e,t,n){e!=n.value&&(t=this._get(n.value),this.__data__[n.value]=t
),this._applyEffectValue(n,t)},_reflectEffect:function(e,t,n){this.reflectProper
tyToAttribute(e,n.attribute,t)},_notifyEffect:function(e,t,n,r,s){s||this._notif
yChange(e,n.event,t)},_functionEffect:function(e,t,n,r,s){n.call(this,e,t,r,s)},
_observerEffect:function(e,t,n,r){var s=this[n.method];s?s.call(this,t,r):this._
warn(this._logf("_observerEffect","observer method `"+n.method+"` not defined"))
},_complexObserverEffect:function(e,t,n){var r=this[n.method];if(r){var s=Polyme
r.Bind._marshalArgs(this.__data__,n,e,t);s&&r.apply(this,s)}else n.dynamicFn||th
is._warn(this._logf("_complexObserverEffect","observer method `"+n.method+"` not
defined"))},_computeEffect:function(e,t,n){var r=this[n.method];if(r){var s=Pol
ymer.Bind._marshalArgs(this.__data__,n,e,t);if(s){var i=r.apply(this,s);this.__s
etProperty(n.name,i)}}else n.dynamicFn||this._warn(this._logf("_computeEffect","
compute method `"+n.method+"` not defined"))},_annotatedComputationEffect:functi
on(e,t,n){var r=this._rootDataHost||this,s=r[n.method];if(s){var i=Polymer.Bind.
_marshalArgs(this.__data__,n,e,t);if(i){var o=s.apply(r,i);this._applyEffectValu
e(n,o)}}else n.dynamicFn||r._warn(r._logf("_annotatedComputationEffect","compute
method `"+n.method+"` not defined"))},_marshalArgs:function(e,t,n,r){for(var s=
[],i=t.args,o=i.length>1||t.dynamicFn,a=0,l=i.length;a<l;a++){var c,h=i[a],u=h.n
ame;if(h.literal?c=h.value:n===u?c=r:(c=e[u],void 0===c&&h.structured&&(c=Polyme
r.Base._get(u,e))),o&&void 0===c)return;if(h.wildcard){var f=Polymer.Path.isAnce
stor(n,u);s[a]={path:f?n:u,value:f?r:c,base:c}}else s[a]=c}return s}}),Polymer.B
ase._addFeature({_addPropertyEffect:function(e,t,n){var r=Polymer.Bind.addProper
tyEffect(this,e,t,n);r.pathFn=this["_"+r.kind+"PathEffect"]},_prepEffects:functi
on(){Polymer.Bind.prepareModel(this),this._addAnnotationEffects(this._notes)},_p
repBindings:function(){Polymer.Bind.createBindings(this)},_addPropertyEffects:fu
nction(e){if(e)for(var t in e){var n=e[t];if(n.observer&&this._addObserverEffect
(t,n.observer),n.computed&&(n.readOnly=!0,this._addComputedEffect(t,n.computed))
,n.notify&&this._addPropertyEffect(t,"notify",{event:Polymer.CaseMap.camelToDash
Case(t)+"-changed"}),n.reflectToAttribute){var r=Polymer.CaseMap.camelToDashCase
(t);"-"===r[0]?this._warn(this._logf("_addPropertyEffects","Property "+t+" canno
t be reflected to attribute "+r+' because "-" is not a valid starting attribute
name. Use a lowercase first letter for the property instead.')):this._addPropert
yEffect(t,"reflect",{attribute:r})}n.readOnly&&Polymer.Bind.ensurePropertyEffect
s(this,t)}},_addComputedEffect:function(e,t){for(var n,r=this._parseMethod(t),s=
r.dynamicFn,i=0;i<r.args.length&&(n=r.args[i]);i++)this._addPropertyEffect(n.mod
el,"compute",{method:r.method,args:r.args,trigger:n,name:e,dynamicFn:s});s&&this
._addPropertyEffect(r.method,"compute",{method:r.method,args:r.args,trigger:null
,name:e,dynamicFn:s})},_addObserverEffect:function(e,t){this._addPropertyEffect(
e,"observer",{method:t,property:e})},_addComplexObserverEffects:function(e){if(e
)for(var t,n=0;n<e.length&&(t=e[n]);n++)this._addComplexObserverEffect(t)},_addC
omplexObserverEffect:function(e){var t=this._parseMethod(e);if(!t)throw new Erro
r("Malformed observer expression '"+e+"'");for(var n,r=t.dynamicFn,s=0;s<t.args.
length&&(n=t.args[s]);s++)this._addPropertyEffect(n.model,"complexObserver",{met
hod:t.method,args:t.args,trigger:n,dynamicFn:r});r&&this._addPropertyEffect(t.me
thod,"complexObserver",{method:t.method,args:t.args,trigger:null,dynamicFn:r})},
_addAnnotationEffects:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++)for(var
r,s=t.bindings,i=0;i<s.length&&(r=s[i]);i++)this._addAnnotationEffect(r,n)},_ad
dAnnotationEffect:function(e,t){Polymer.Bind._shouldAddListener(e)&&Polymer.Bind
._addAnnotatedListener(this,t,e.name,e.parts[0].value,e.parts[0].event,e.parts[0
].negate);for(var n=0;n<e.parts.length;n++){var r=e.parts[n];r.signature?this._a
ddAnnotatedComputationEffect(e,r,t):r.literal||("attribute"===e.kind&&"-"===e.na
me[0]?this._warn(this._logf("_addAnnotationEffect","Cannot set attribute "+e.nam
e+' because "-" is not a valid attribute starting character')):this._addProperty
Effect(r.model,"annotation",{kind:e.kind,index:t,name:e.name,propertyName:e.prop
ertyName,value:r.value,isCompound:e.isCompound,compoundIndex:r.compoundIndex,eve
nt:r.event,customEvent:r.customEvent,negate:r.negate}))}},_addAnnotatedComputati
onEffect:function(e,t,n){var r=t.signature;if(r.static)this.__addAnnotatedComput
ationEffect("__static__",n,e,t,null);else{for(var s,i=0;i<r.args.length&&(s=r.ar
gs[i]);i++)s.literal||this.__addAnnotatedComputationEffect(s.model,n,e,t,s);r.dy
namicFn&&this.__addAnnotatedComputationEffect(r.method,n,e,t,null)}},__addAnnota
tedComputationEffect:function(e,t,n,r,s){this._addPropertyEffect(e,"annotatedCom
putation",{index:t,isCompound:n.isCompound,compoundIndex:r.compoundIndex,kind:n.
kind,name:n.name,negate:r.negate,method:r.signature.method,args:r.signature.args
,trigger:s,dynamicFn:r.signature.dynamicFn})},_parseMethod:function(e){var t=e.m
atch(/([^\s]+?)\(([\s\S]*)\)/);if(t){var n={method:t[1],static:!0};if(this.getPr
opertyInfo(n.method)!==Polymer.nob&&(n.static=!1,n.dynamicFn=!0),t[2].trim()){va
r r=t[2].replace(/\\,/g,",").split(",");return this._parseArgs(r,n)}return
n.args=Polymer.nar,n}},_parseArgs:function(e,t){return t.args=e.map(function(e)
{var n=this._parseArg(e);return n.literal||(t.static=!1),n},this),t},_parseArg:f
unction(e){var t=e.trim().replace(/,/g,",").replace(/\\(.)/g,"$1"),n={name
:t},r=t[0];switch("-"===r&&(r=t[1]),r>="0"&&r<="9"&&(r="#"),r){case"'":case'"':n
.value=t.slice(1,-1),n.literal=!0;break;case"#":n.value=Number(t),n.literal=!0}r
eturn n.literal||(n.model=Polymer.Path.root(t),n.structured=Polymer.Path.isDeep(
t),n.structured&&(n.wildcard=".*"==t.slice(-2),n.wildcard&&(n.name=t.slice(0,-2)
))),n},_marshalInstanceEffects:function(){Polymer.Bind.prepareInstance(this),thi
s._bindListeners&&Polymer.Bind.setupBindListeners(this)},_applyEffectValue:funct
ion(e,t){var n=this._nodes[e.index],r=e.name;if(t=this._computeFinalAnnotationVa
lue(n,r,t,e),"attribute"==e.kind)this.serializeValueToAttribute(t,r,n);else{var
s=n._propertyInfo&&n._propertyInfo[r];if(s&&s.readOnly)return;this.__setProperty
(r,t,!1,n)}},_computeFinalAnnotationValue:function(e,t,n,r){if(r.negate&&(n=!n),
r.isCompound){var s=e.__compoundStorage__[t];s[r.compoundIndex]=n,n=s.join("")}r
eturn"attribute"!==r.kind&&("className"===t&&(n=this._scopeElementClass(e,n)),("
textContent"===t||"input"==e.localName&&"value"==t)&&(n=void 0==n?"":n)),n},_exe
cuteStaticEffects:function(){this._propertyEffects&&this._propertyEffects.__stat
ic__&&this._effectEffects("__static__",null,this._propertyEffects.__static__)}})
,function(){var e=Polymer.Settings.usePolyfillProto;Polymer.Base._addFeature({_s
etupConfigure:function(e){if(this._config={},this._handlers=[],this._aboveConfig
=null,e)for(var t in e)void 0!==e[t]&&(this._config[t]=e[t])},_marshalAttributes
:function(){this._takeAttributesToModel(this._config)},_attributeChangedImpl:fun
ction(e){var t=this._clientsReadied?this:this._config;this._setAttributeToProper
ty(t,e)},_configValue:function(e,t){var n=this._propertyInfo[e];n&&n.readOnly||(
this._config[e]=t)},_beforeClientsReady:function(){this._configure()},_configure
:function(){this._configureAnnotationReferences(),this._configureInstancePropert
ies(),this._aboveConfig=this.mixin({},this._config);for(var e={},t=0;t<this.beha
viors.length;t++)this._configureProperties(this.behaviors[t].properties,e);this.
_configureProperties(this.properties,e),this.mixin(e,this._aboveConfig),this._co
nfig=e,this._clients&&this._clients.length&&this._distributeConfig(this._config)
},_configureInstanceProperties:function(){for(var t in this._propertyEffects)!e&
&this.hasOwnProperty(t)&&(this._configValue(t,this[t]), | 2 },_distributeDirtyRoots:function(){for(var e,t=this.shadyRoot._dirtyRoots,o=0,i=
t.length;o<i&&(e=t[o]);o++)e._distributeContent();this.shadyRoot._dirtyRoots=[]}
,_finishDistribute:function(){if(this._useContent){if(this.shadyRoot._distributi
onClean=!0,h.hasInsertionPoint(this.shadyRoot))this._composeTree(),d(this.shadyR
oot);else if(this.shadyRoot._hasDistributed){var e=this._composeNode(this);this.
_updateChildNodes(this,e)}else u.Composed.clearChildNodes(this),this.appendChild
(this.shadyRoot);this.shadyRoot._hasDistributed||a(this),this.shadyRoot._hasDist
ributed=!0}},elementMatches:function(e,t){return t=t||this,h.matchesSelector.cal
l(t,e)},_resetDistribution:function(){for(var e=u.Logical.getChildNodes(this),o=
0;o<e.length;o++){var i=e[o];i._destinationInsertionPoints&&(i._destinationInser
tionPoints=void 0),n(i)&&t(i)}for(var s=this.shadyRoot,r=s._insertionPoints,d=0;
d<r.length;d++)r[d]._distributedNodes=[]},_collectPool:function(){for(var e=[],t
=u.Logical.getChildNodes(this),o=0;o<t.length;o++){var i=t[o];n(i)?e.push.apply(
e,i._distributedNodes):e.push(i)}return e},_distributePool:function(e,t){for(var
i,n=e._insertionPoints,s=0,r=n.length;s<r&&(i=n[s]);s++)this._distributeInserti
onPoint(i,t),o(i,this)},_distributeInsertionPoint:function(t,o){for(var i,n=!1,s
=0,r=o.length;s<r;s++)i=o[s],i&&this._matchesContentSelect(i,t)&&(e(i,t),o[s]=vo
id 0,n=!0);if(!n)for(var d=u.Logical.getChildNodes(t),a=0;a<d.length;a++)e(d[a],
t)},_composeTree:function(){this._updateChildNodes(this,this._composeNode(this))
;for(var e,t,o=this.shadyRoot._insertionPoints,i=0,n=o.length;i<n&&(e=o[i]);i++)
t=u.Logical.getParentNode(e),t._useContent||t===this||t===this.shadyRoot||this._
updateChildNodes(t,this._composeNode(t))},_composeNode:function(e){for(var t=[],
o=u.Logical.getChildNodes(e.shadyRoot||e),s=0;s<o.length;s++){var r=o[s];if(n(r)
)for(var d=r._distributedNodes,a=0;a<d.length;a++){var l=d[a];i(r,l)&&t.push(l)}
else t.push(r)}return t},_updateChildNodes:function(e,t){for(var o,i=u.Composed.
getChildNodes(e),n=Polymer.ArraySplice.calculateSplices(t,i),s=0,r=0;s<n.length&
&(o=n[s]);s++){for(var d,a=0;a<o.removed.length&&(d=o.removed[a]);a++)u.Composed
.getParentNode(d)===e&&u.Composed.removeChild(e,d),i.splice(o.index+r,1);r-=o.ad
dedCount}for(var o,l,s=0;s<n.length&&(o=n[s]);s++)for(l=i[o.index],a=o.index,d;a
<o.index+o.addedCount;a++)d=t[a],u.Composed.insertBefore(e,d,l),i.splice(a,0,d)}
,_matchesContentSelect:function(e,t){var o=t.getAttribute("select");if(!o)return
!0;if(o=o.trim(),!o)return!0;if(!(e instanceof Element))return!1;var i=/^(:not\(
)?[*.#[a-zA-Z_|]/;return!!i.test(o)&&this.elementMatches(o,e)},_elementAdd:funct
ion(){},_elementRemove:function(){}});var c=window.CustomElements&&!CustomElemen
ts.useNative}(),Polymer.Settings.useShadow&&Polymer.Base._addFeature({_poolConte
nt:function(){},_beginDistribute:function(){},distributeContent:function(){},_di
stributeContent:function(){},_finishDistribute:function(){},_createLocalRoot:fun
ction(){this.createShadowRoot(),this.shadowRoot.appendChild(this.root),this.root
=this.shadowRoot}}),Polymer.Async={_currVal:0,_lastVal:0,_callbacks:[],_twiddleC
ontent:0,_twiddle:document.createTextNode(""),run:function(e,t){return t>0?~setT
imeout(e,t):(this._twiddle.textContent=this._twiddleContent++,this._callbacks.pu
sh(e),this._currVal++)},cancel:function(e){if(e<0)clearTimeout(~e);else{var t=e-
this._lastVal;if(t>=0){if(!this._callbacks[t])throw"invalid async handle: "+e;th
is._callbacks[t]=null}}},_atEndOfMicrotask:function(){for(var e=this._callbacks.
length,t=0;t<e;t++){var o=this._callbacks[t];if(o)try{o()}catch(e){throw t++,thi
s._callbacks.splice(0,t),this._lastVal+=t,this._twiddle.textContent=this._twiddl
eContent++,e}}this._callbacks.splice(0,e),this._lastVal+=e}},new window.Mutation
Observer(function(){Polymer.Async._atEndOfMicrotask()}).observe(Polymer.Async._t
widdle,{characterData:!0}),Polymer.Debounce=function(){function e(e,t,i){return
e?e.stop():e=new o(this),e.go(t,i),e}var t=Polymer.Async,o=function(e){this.cont
ext=e;var t=this;this.boundComplete=function(){t.complete()}};return o.prototype
={go:function(e,o){var i;this.finish=function(){t.cancel(i)},i=t.run(this.boundC
omplete,o),this.callback=e},stop:function(){this.finish&&(this.finish(),this.fin
ish=null,this.callback=null)},complete:function(){if(this.finish){var e=this.cal
lback;this.stop(),e.call(this.context)}}},e}(),Polymer.Base._addFeature({_setupD
ebouncers:function(){this._debouncers={}},debounce:function(e,t,o){return this._
debouncers[e]=Polymer.Debounce.call(this,this._debouncers[e],t,o)},isDebouncerAc
tive:function(e){var t=this._debouncers[e];return!(!t||!t.finish)},flushDebounce
r:function(e){var t=this._debouncers[e];t&&t.complete()},cancelDebouncer:functio
n(e){var t=this._debouncers[e];t&&t.stop()}}),Polymer.DomModule=document.createE
lement("dom-module"),Polymer.Base._addFeature({_registerFeatures:function(){this
._prepIs(),this._prepBehaviors(),this._prepConstructor(),this._prepTemplate(),th
is._prepShady(),this._prepPropertyInfo()},_prepBehavior:function(e){this._addHos
tAttributes(e.hostAttributes)},_initFeatures:function(){this._registerHost(),thi
s._template&&(this._poolContent(),this._beginHosting(),this._stampTemplate(),thi
s._endHosting()),this._marshalHostAttributes(),this._setupDebouncers(),this._mar
shalBehaviors(),this._tryReady()},_marshalBehavior:function(e){}})</script> <scr
ipt>Polymer.nar=[],Polymer.Annotations={parseAnnotations:function(e){var t=[],n=
e._content||e.content;return this._parseNodeAnnotations(n,t,e.hasAttribute("stri
p-whitespace")),t},_parseNodeAnnotations:function(e,t,n){return e.nodeType===Nod
e.TEXT_NODE?this._parseTextNodeAnnotation(e,t):this._parseElementAnnotations(e,t
,n)},_bindingRegex:function(){var e="(?:[a-zA-Z_$][\\w.:$\\-*]*)",t="(?:[-+]?[0-
9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?)",n="(?:'(?:[^'\\\\]|\\\\.)*')",r='(?:"(?:[^"\
\\\]|\\\\.)*")',s="(?:"+n+"|"+r+")",i="(?:"+e+"|"+t+"|"+s+"\\s*)",o="(?:"+i+"(?:
,\\s*"+i+")*)",a="(?:\\(\\s*(?:"+o+"?)\\)\\s*)",l="("+e+"\\s*"+a+"?)",c="(\\[\\[
|{{)\\s*",h="(?:]]|}})",u="(?:(!)\\s*)?",f=c+u+l+h;return new RegExp(f,"g")}(),_
parseBindings:function(e){for(var t,n=this._bindingRegex,r=[],s=0;null!==(t=n.ex
ec(e));){t.index>s&&r.push({literal:e.slice(s,t.index)});var i,o,a,l=t[1][0],c=B
oolean(t[2]),h=t[3].trim();"{"==l&&(a=h.indexOf("::"))>0&&(o=h.substring(a+2),h=
h.substring(0,a),i=!0),r.push({compoundIndex:r.length,value:h,mode:l,negate:c,ev
ent:o,customEvent:i}),s=n.lastIndex}if(s&&s<e.length){var u=e.substring(s);u&&r.
push({literal:u})}if(r.length)return r},_literalFromParts:function(e){for(var t=
"",n=0;n<e.length;n++){var r=e[n].literal;t+=r||""}return t},_parseTextNodeAnnot
ation:function(e,t){var n=this._parseBindings(e.textContent);if(n){e.textContent
=this._literalFromParts(n)||" ";var r={bindings:[{kind:"text",name:"textContent"
,parts:n,isCompound:1!==n.length}]};return t.push(r),r}},_parseElementAnnotation
s:function(e,t,n){var r={bindings:[],events:[]};return"content"===e.localName&&(
t._hasContent=!0),this._parseChildNodesAnnotations(e,r,t,n),e.attributes&&(this.
_parseNodeAttributeAnnotations(e,r,t),this.prepElement&&this.prepElement(e)),(r.
bindings.length||r.events.length||r.id)&&t.push(r),r},_parseChildNodesAnnotation
s:function(e,t,n,r){if(e.firstChild)for(var s=e.firstChild,i=0;s;){var o=s.nextS
ibling;if("template"!==s.localName||s.hasAttribute("preserve-content")||this._pa
rseTemplate(s,i,n,t),"slot"==s.localName&&(s=this._replaceSlotWithContent(s)),s.
nodeType===Node.TEXT_NODE){for(var a=o;a&&a.nodeType===Node.TEXT_NODE;)s.textCon
tent+=a.textContent,o=a.nextSibling,e.removeChild(a),a=o;r&&!s.textContent.trim(
)&&(e.removeChild(s),i--)}if(s.parentNode){var l=this._parseNodeAnnotations(s,n,
r);l&&(l.parent=t,l.index=i)}s=o,i++}},_replaceSlotWithContent:function(e){for(v
ar t=e.ownerDocument.createElement("content");e.firstChild;)t.appendChild(e.firs
tChild);for(var n=e.attributes,r=0;r<n.length;r++){var s=n[r];t.setAttribute(s.n
ame,s.value)}var i=e.getAttribute("name"),o=i?"[slot='"+i+"']":":not([slot])";re
turn t.setAttribute("select",o),e.parentNode.replaceChild(t,e),t},_parseTemplate
:function(e,t,n,r){var s=document.createDocumentFragment();s._notes=this.parseAn
notations(e),s.appendChild(e.content),n.push({bindings:Polymer.nar,events:Polyme
r.nar,templateContent:s,parent:r,index:t})},_parseNodeAttributeAnnotations:funct
ion(e,t){for(var n,r=Array.prototype.slice.call(e.attributes),s=r.length-1;n=r[s
];s--){var i,o=n.name,a=n.value;"on-"===o.slice(0,3)?(e.removeAttribute(o),t.eve
nts.push({name:o.slice(3),value:a})):(i=this._parseNodeAttributeAnnotation(e,o,a
))?t.bindings.push(i):"id"===o&&(t.id=a)}},_parseNodeAttributeAnnotation:functio
n(e,t,n){var r=this._parseBindings(n);if(r){var s=t,i="property";"$"==t[t.length
-1]&&(t=t.slice(0,-1),i="attribute");var o=this._literalFromParts(r);o&&"attribu
te"==i&&e.setAttribute(t,o),"input"===e.localName&&"value"===s&&e.setAttribute(s
,""),e.removeAttribute(s);var a=Polymer.CaseMap.dashToCamelCase(t);return"proper
ty"===i&&(t=a),{kind:i,name:t,propertyName:a,parts:r,literal:o,isCompound:1!==r.
length}}},findAnnotatedNode:function(e,t){var n=t.parent&&Polymer.Annotations.fi
ndAnnotatedNode(e,t.parent);if(!n)return e;for(var r=n.firstChild,s=0;r;r=r.next
Sibling)if(t.index===s++)return r}},function(){function e(e,t){return e.replace(
a,function(e,r,s,i){return r+"'"+n(s.replace(/["']/g,""),t)+"'"+i})}function t(t
,r){for(var s in l)for(var i,o,a,c=l[s],u=0,f=c.length;u<f&&(i=c[u]);u++)"*"!==s
&&t.localName!==s||(o=t.attributes[i],a=o&&o.value,a&&a.search(h)<0&&(o.value="s
tyle"===i?e(a,r):n(a,r)))}function n(e,t){if(e&&c.test(e))return e;var n=s(t);re
turn n.href=e,n.href||e}function r(e,t){return i||(i=document.implementation.cre
ateHTMLDocument("temp"),o=i.createElement("base"),i.head.appendChild(o)),o.href=
t,n(e,i)}function s(e){return e.__urlResolver||(e.__urlResolver=e.createElement(
"a"))}var i,o,a=/(url\()([^)]*)(\))/g,l={"*":["href","src","style","url"],form:[
"action"]},c=/(^\/)|(^#)|(^[\w-\d]*:)/,h=/\{\{|\[\[/;Polymer.ResolveUrl={resolve
Css:e,resolveAttrs:t,resolveUrl:r}}(),Polymer.Path={root:function(e){var t=e.ind
exOf(".");return t===-1?e:e.slice(0,t)},isDeep:function(e){return e.indexOf(".")
!==-1},isAncestor:function(e,t){return 0===e.indexOf(t+".")},isDescendant:functi
on(e,t){return 0===t.indexOf(e+".")},translate:function(e,t,n){return t+n.slice(
e.length)},matches:function(e,t,n){return e===n||this.isAncestor(e,n)||Boolean(t
)&&this.isDescendant(e,n)}},Polymer.Base._addFeature({_prepAnnotations:function(
){if(this._template){var e=this;Polymer.Annotations.prepElement=function(t){e._p
repElement(t)},this._template._content&&this._template._content._notes?this._not
es=this._template._content._notes:(this._notes=Polymer.Annotations.parseAnnotati
ons(this._template),this._processAnnotations(this._notes)),Polymer.Annotations.p
repElement=null}else this._notes=[]},_processAnnotations:function(e){for(var t=0
;t<e.length;t++){for(var n=e[t],r=0;r<n.bindings.length;r++)for(var s=n.bindings
[r],i=0;i<s.parts.length;i++){var o=s.parts[i];if(!o.literal){var a=this._parseM
ethod(o.value);a?o.signature=a:o.model=Polymer.Path.root(o.value)}}if(n.template
Content){this._processAnnotations(n.templateContent._notes);var l=n.templateCont
ent._parentProps=this._discoverTemplateParentProps(n.templateContent._notes),c=[
];for(var h in l){var u="_parent_"+h;c.push({index:n.index,kind:"property",name:
u,propertyName:u,parts:[{mode:"{",model:h,value:h}]})}n.bindings=n.bindings.conc
at(c)}}},_discoverTemplateParentProps:function(e){for(var t,n={},r=0;r<e.length&
&(t=e[r]);r++){for(var s,i=0,o=t.bindings;i<o.length&&(s=o[i]);i++)for(var a,l=0
,c=s.parts;l<c.length&&(a=c[l]);l++)if(a.signature){for(var h=a.signature.args,u
=0;u<h.length;u++){var f=h[u].model;f&&(n[f]=!0)}a.signature.dynamicFn&&(n[a.sig
nature.method]=!0)}else a.model&&(n[a.model]=!0);if(t.templateContent){var p=t.t
emplateContent._parentProps;Polymer.Base.mixin(n,p)}}return n},_prepElement:func
tion(e){Polymer.ResolveUrl.resolveAttrs(e,this._template.ownerDocument)},_findAn
notatedNode:Polymer.Annotations.findAnnotatedNode,_marshalAnnotationReferences:f
unction(){this._template&&(this._marshalIdNodes(),this._marshalAnnotatedNodes(),
this._marshalAnnotatedListeners())},_configureAnnotationReferences:function(){fo
r(var e=this._notes,t=this._nodes,n=0;n<e.length;n++){var r=e[n],s=t[n];this._co
nfigureTemplateContent(r,s),this._configureCompoundBindings(r,s)}},_configureTem
plateContent:function(e,t){e.templateContent&&(t._content=e.templateContent)},_c
onfigureCompoundBindings:function(e,t){for(var n=e.bindings,r=0;r<n.length;r++){
var s=n[r];if(s.isCompound){for(var i=t.__compoundStorage__||(t.__compoundStorag
e__={}),o=s.parts,a=new Array(o.length),l=0;l<o.length;l++)a[l]=o[l].literal;var
c=s.name;i[c]=a,s.literal&&"property"==s.kind&&(t._configValue?t._configValue(c
,s.literal):t[c]=s.literal)}}},_marshalIdNodes:function(){this.$={};for(var e,t=
0,n=this._notes.length;t<n&&(e=this._notes[t]);t++)e.id&&(this.$[e.id]=this._fin
dAnnotatedNode(this.root,e))},_marshalAnnotatedNodes:function(){if(this._notes&&
this._notes.length){for(var e=new Array(this._notes.length),t=0;t<this._notes.le
ngth;t++)e[t]=this._findAnnotatedNode(this.root,this._notes[t]);this._nodes=e}},
_marshalAnnotatedListeners:function(){for(var e,t=0,n=this._notes.length;t<n&&(e
=this._notes[t]);t++)if(e.events&&e.events.length)for(var r,s=this._findAnnotate
dNode(this.root,e),i=0,o=e.events;i<o.length&&(r=o[i]);i++)this.listen(s,r.name,
r.value)}}),Polymer.Base._addFeature({listeners:{},_listenListeners:function(e){
var t,n,r;for(r in e)r.indexOf(".")<0?(t=this,n=r):(n=r.split("."),t=this.$[n[0]
],n=n[1]),this.listen(t,n,e[r])},listen:function(e,t,n){var r=this._recallEventH
andler(this,t,e,n);r||(r=this._createEventHandler(e,t,n)),r._listening||(this._l
isten(e,t,r),r._listening=!0)},_boundListenerKey:function(e,t){return e+":"+t},_
recordEventHandler:function(e,t,n,r,s){var i=e.__boundListeners;i||(i=e.__boundL
isteners=new WeakMap);var o=i.get(n);o||(o={},i.set(n,o));var a=this._boundListe
nerKey(t,r);o[a]=s},_recallEventHandler:function(e,t,n,r){var s=e.__boundListene
rs;if(s){var i=s.get(n);if(i){var o=this._boundListenerKey(t,r);return i[o]}}},_
createEventHandler:function(e,t,n){var r=this,s=function(e){r[n]?r[n](e,e.detail
):r._warn(r._logf("_createEventHandler","listener method `"+n+"` not defined"))}
;return s._listening=!1,this._recordEventHandler(r,t,e,n,s),s},unlisten:function
(e,t,n){var r=this._recallEventHandler(this,t,e,n);r&&(this._unlisten(e,t,r),r._
listening=!1)},_listen:function(e,t,n){e.addEventListener(t,n)},_unlisten:functi
on(e,t,n){e.removeEventListener(t,n)}}),function(){"use strict";function e(e){fo
r(var t,n=g?["click"]:m,r=0;r<n.length;r++)t=n[r],e?document.addEventListener(t,
P,!0):document.removeEventListener(t,P,!0)}function t(){S.mouse.mouseIgnoreJob||
e(!0);var t=function(){e(),S.mouse.target=null,S.mouse.mouseIgnoreJob=null};S.mo
use.mouseIgnoreJob=Polymer.Debounce(S.mouse.mouseIgnoreJob,t,d)}function n(e){va
r t=e.type;if(m.indexOf(t)===-1)return!1;if("mousemove"===t){var n=void 0===e.bu
ttons?1:e.buttons;return e instanceof window.MouseEvent&&!v&&(n=y[e.which]||0),B
oolean(1&n)}var r=void 0===e.button?0:e.button;return 0===r}function r(e){if("cl
ick"===e.type){if(0===e.detail)return!0;var t=C.findOriginalTarget(e),n=t.getBou
ndingClientRect(),r=e.pageX,s=e.pageY;return!(r>=n.left&&r<=n.right&&s>=n.top&&s
<=n.bottom)}return!1}function s(e){for(var t,n=Polymer.dom(e).path,r="auto",s=0;
s<n.length;s++)if(t=n[s],t[u]){r=t[u];break}return r}function i(e,t,n){e.movefn=
t,e.upfn=n,document.addEventListener("mousemove",t),document.addEventListener("m
ouseup",n)}function o(e){document.removeEventListener("mousemove",e.movefn),docu
ment.removeEventListener("mouseup",e.upfn),e.movefn=null,e.upfn=null}var a=Polym
er.DomApi.wrap,l="string"==typeof document.head.style.touchAction,c="__polymerGe
stures",h="__polymerGesturesHandled",u="__polymerGesturesTouchAction",f=25,p=5,_
=2,d=2500,m=["mousedown","mousemove","mouseup","click"],y=[0,1,4,2],v=function()
{try{return 1===new MouseEvent("test",{buttons:1}).buttons}catch(e){return!1}}()
,g=navigator.userAgent.match(/iP(?:[oa]d|hone)|Android/),P=function(e){var t=e.s
ourceCapabilities;if((!t||t.firesTouchEvents)&&(e[h]={skip:!0},"click"===e.type)
){for(var n=Polymer.dom(e).path,r=0;r<n.length;r++)if(n[r]===S.mouse.target)retu
rn;e.preventDefault(),e.stopPropagation()}},S={mouse:{target:null,mouseIgnoreJob
:null},touch:{x:0,y:0,id:-1,scrollDecided:!1}},C={gestures:{},recognizers:[],dee
pTargetFind:function(e,t){for(var n=document.elementFromPoint(e,t),r=n;r&&r.shad
owRoot;)r=r.shadowRoot.elementFromPoint(e,t),r&&(n=r);return n},findOriginalTarg
et:function(e){return e.path?e.path[0]:e.target},handleNative:function(e){var n,
r=e.type,s=a(e.currentTarget),i=s[c];if(i){var o=i[r];if(o){if(!e[h]&&(e[h]={},"
touch"===r.slice(0,5))){var u=e.changedTouches[0];if("touchstart"===r&&1===e.tou
ches.length&&(S.touch.id=u.identifier),S.touch.id!==u.identifier)return;l||"touc
hstart"!==r&&"touchmove"!==r||C.handleTouchAction(e),"touchend"===r&&(S.mouse.ta
rget=Polymer.dom(e).rootTarget,t())}if(n=e[h],!n.skip){for(var f,p=C.recognizers
,_=0;_<p.length;_++)f=p[_],o[f.name]&&!n[f.name]&&f.flow&&f.flow.start.indexOf(e
.type)>-1&&f.reset&&f.reset();for(_=0,f;_<p.length;_++)f=p[_],o[f.name]&&!n[f.na
me]&&(n[f.name]=!0,f[r](e))}}}},handleTouchAction:function(e){var t=e.changedTou
ches[0],n=e.type;if("touchstart"===n)S.touch.x=t.clientX,S.touch.y=t.clientY,S.t
ouch.scrollDecided=!1;else if("touchmove"===n){if(S.touch.scrollDecided)return;S
.touch.scrollDecided=!0;var r=s(e),i=!1,o=Math.abs(S.touch.x-t.clientX),a=Math.a
bs(S.touch.y-t.clientY);e.cancelable&&("none"===r?i=!0:"pan-x"===r?i=a>o:"pan-y"
===r&&(i=o>a)),i?e.preventDefault():C.prevent("track")}},add:function(e,t,n){e=a
(e);var r=this.gestures[t],s=r.deps,i=r.name,o=e[c];o||(e[c]=o={});for(var l,h,u
=0;u<s.length;u++)l=s[u],g&&m.indexOf(l)>-1&&"click"!==l||(h=o[l],h||(o[l]=h={_c
ount:0}),0===h._count&&e.addEventListener(l,this.handleNative),h[i]=(h[i]||0)+1,
h._count=(h._count||0)+1);e.addEventListener(t,n),r.touchAction&&this.setTouchAc
tion(e,r.touchAction)},remove:function(e,t,n){e=a(e);var r=this.gestures[t],s=r.
deps,i=r.name,o=e[c];if(o)for(var l,h,u=0;u<s.length;u++)l=s[u],h=o[l],h&&h[i]&&
(h[i]=(h[i]||1)-1,h._count=(h._count||1)-1,0===h._count&&e.removeEventListener(l
,this.handleNative));e.removeEventListener(t,n)},register:function(e){this.recog
nizers.push(e);for(var t=0;t<e.emits.length;t++)this.gestures[e.emits[t]]=e},fin
dRecognizerByEvent:function(e){for(var t,n=0;n<this.recognizers.length;n++){t=th
is.recognizers[n];for(var r,s=0;s<t.emits.length;s++)if(r=t.emits[s],r===e)retur
n t}return null},setTouchAction:function(e,t){l&&(e.style.touchAction=t),e[u]=t}
,fire:function(e,t,n){var r=Polymer.Base.fire(t,n,{node:e,bubbles:!0,cancelable:
!0});if(r.defaultPrevented){var s=n.preventer||n.sourceEvent;s&&s.preventDefault
&&s.preventDefault()}},prevent:function(e){var t=this.findRecognizerByEvent(e);t
.info&&(t.info.prevent=!0)},resetMouseCanceller:function(){S.mouse.mouseIgnoreJo
b&&S.mouse.mouseIgnoreJob.complete()}};C.register({name:"downup",deps:["mousedow
n","touchstart","touchend"],flow:{start:["mousedown","touchstart"],end:["mouseup
","touchend"]},emits:["down","up"],info:{movefn:null,upfn:null},reset:function()
{o(this.info)},mousedown:function(e){if(n(e)){var t=C.findOriginalTarget(e),r=th
is,s=function(e){n(e)||(r.fire("up",t,e),o(r.info))},a=function(e){n(e)&&r.fire(
"up",t,e),o(r.info)};i(this.info,s,a),this.fire("down",t,e)}},touchstart:functio
n(e){this.fire("down",C.findOriginalTarget(e),e.changedTouches[0],e)},touchend:f
unction(e){this.fire("up",C.findOriginalTarget(e),e.changedTouches[0],e)},fire:f
unction(e,t,n,r){C.fire(t,e,{x:n.clientX,y:n.clientY,sourceEvent:n,preventer:r,p
revent:function(e){return C.prevent(e)}})}}),C.register({name:"track",touchActio
n:"none",deps:["mousedown","touchstart","touchmove","touchend"],flow:{start:["mo
usedown","touchstart"],end:["mouseup","touchend"]},emits:["track"],info:{x:0,y:0
,state:"start",started:!1,moves:[],addMove:function(e){this.moves.length>_&&this
.moves.shift(),this.moves.push(e)},movefn:null,upfn:null,prevent:!1},reset:funct
ion(){this.info.state="start",this.info.started=!1,this.info.moves=[],this.info.
x=0,this.info.y=0,this.info.prevent=!1,o(this.info)},hasMovedEnough:function(e,t
){if(this.info.prevent)return!1;if(this.info.started)return!0;var n=Math.abs(thi
s.info.x-e),r=Math.abs(this.info.y-t);return n>=p||r>=p},mousedown:function(e){i
f(n(e)){var t=C.findOriginalTarget(e),r=this,s=function(e){var s=e.clientX,i=e.c
lientY;r.hasMovedEnough(s,i)&&(r.info.state=r.info.started?"mouseup"===e.type?"e
nd":"track":"start","start"===r.info.state&&C.prevent("tap"),r.info.addMove({x:s
,y:i}),n(e)||(r.info.state="end",o(r.info)),r.fire(t,e),r.info.started=!0)},a=fu
nction(e){r.info.started&&s(e),o(r.info)};i(this.info,s,a),this.info.x=e.clientX
,this.info.y=e.clientY}},touchstart:function(e){var t=e.changedTouches[0];this.i
nfo.x=t.clientX,this.info.y=t.clientY},touchmove:function(e){var t=C.findOrigina
lTarget(e),n=e.changedTouches[0],r=n.clientX,s=n.clientY;this.hasMovedEnough(r,s
)&&("start"===this.info.state&&C.prevent("tap"),this.info.addMove({x:r,y:s}),thi
s.fire(t,n),this.info.state="track",this.info.started=!0)},touchend:function(e){
var t=C.findOriginalTarget(e),n=e.changedTouches[0];this.info.started&&(this.inf
o.state="end",this.info.addMove({x:n.clientX,y:n.clientY}),this.fire(t,n,e))},fi
re:function(e,t,n){var r,s=this.info.moves[this.info.moves.length-2],i=this.info
.moves[this.info.moves.length-1],o=i.x-this.info.x,a=i.y-this.info.y,l=0;return
s&&(r=i.x-s.x,l=i.y-s.y),C.fire(e,"track",{state:this.info.state,x:t.clientX,y:t
.clientY,dx:o,dy:a,ddx:r,ddy:l,sourceEvent:t,preventer:n,hover:function(){return
C.deepTargetFind(t.clientX,t.clientY)}})}}),C.register({name:"tap",deps:["mouse
down","click","touchstart","touchend"],flow:{start:["mousedown","touchstart"],en
d:["click","touchend"]},emits:["tap"],info:{x:NaN,y:NaN,prevent:!1},reset:functi
on(){this.info.x=NaN,this.info.y=NaN,this.info.prevent=!1},save:function(e){this
.info.x=e.clientX,this.info.y=e.clientY},mousedown:function(e){n(e)&&this.save(e
)},click:function(e){n(e)&&this.forward(e)},touchstart:function(e){this.save(e.c
hangedTouches[0],e)},touchend:function(e){this.forward(e.changedTouches[0],e)},f
orward:function(e,t){var n=Math.abs(e.clientX-this.info.x),s=Math.abs(e.clientY-
this.info.y),i=C.findOriginalTarget(e);(isNaN(n)||isNaN(s)||n<=f&&s<=f||r(e))&&(
this.info.prevent||C.fire(i,"tap",{x:e.clientX,y:e.clientY,sourceEvent:e,prevent
er:t}))}});var E={x:"pan-x",y:"pan-y",none:"none",all:"auto"};Polymer.Base._addF
eature({_setupGestures:function(){this.__polymerGestures=null},_listen:function(
e,t,n){C.gestures[t]?C.add(e,t,n):e.addEventListener(t,n)},_unlisten:function(e,
t,n){C.gestures[t]?C.remove(e,t,n):e.removeEventListener(t,n)},setScrollDirectio
n:function(e,t){t=t||this,C.setTouchAction(t,E[e]||"auto")}}),Polymer.Gestures=C
}(),function(){"use strict";if(Polymer.Base._addFeature({$$:function(e){return P
olymer.dom(this.root).querySelector(e)},toggleClass:function(e,t,n){n=n||this,1=
=arguments.length&&(t=!n.classList.contains(e)),t?Polymer.dom(n).classList.add(e
):Polymer.dom(n).classList.remove(e)},toggleAttribute:function(e,t,n){n=n||this,
1==arguments.length&&(t=!n.hasAttribute(e)),t?Polymer.dom(n).setAttribute(e,""):
Polymer.dom(n).removeAttribute(e)},classFollows:function(e,t,n){n&&Polymer.dom(n
).classList.remove(e),t&&Polymer.dom(t).classList.add(e)},attributeFollows:funct
ion(e,t,n){n&&Polymer.dom(n).removeAttribute(e),t&&Polymer.dom(t).setAttribute(e
,"")},getEffectiveChildNodes:function(){return Polymer.dom(this).getEffectiveChi
ldNodes()},getEffectiveChildren:function(){var e=Polymer.dom(this).getEffectiveC
hildNodes();return e.filter(function(e){return e.nodeType===Node.ELEMENT_NODE})}
,getEffectiveTextContent:function(){for(var e,t=this.getEffectiveChildNodes(),n=
[],r=0;e=t[r];r++)e.nodeType!==Node.COMMENT_NODE&&n.push(Polymer.dom(e).textCont
ent);return n.join("")},queryEffectiveChildren:function(e){var t=Polymer.dom(thi
s).queryDistributedElements(e);return t&&t[0]},queryAllEffectiveChildren:functio
n(e){return Polymer.dom(this).queryDistributedElements(e)},getContentChildNodes:
function(e){var t=Polymer.dom(this.root).querySelector(e||"content");return t?Po
lymer.dom(t).getDistributedNodes():[]},getContentChildren:function(e){return thi
s.getContentChildNodes(e).filter(function(e){return e.nodeType===Node.ELEMENT_NO
DE})},fire:function(e,t,n){n=n||Polymer.nob;var r=n.node||this;t=null===t||void
0===t?{}:t;var s=void 0===n.bubbles||n.bubbles,i=Boolean(n.cancelable),o=n._useC
ache,a=this._getEvent(e,s,i,o);return a.detail=t,o&&(this.__eventCache[e]=null),
r.dispatchEvent(a),o&&(this.__eventCache[e]=a),a},__eventCache:{},_getEvent:func
tion(e,t,n,r){var s=r&&this.__eventCache[e];return s&&s.bubbles==t&&s.cancelable
==n||(s=new Event(e,{bubbles:Boolean(t),cancelable:n})),s},async:function(e,t){v
ar n=this;return Polymer.Async.run(function(){e.call(n)},t)},cancelAsync:functio
n(e){Polymer.Async.cancel(e)},arrayDelete:function(e,t){var n;if(Array.isArray(e
)){if(n=e.indexOf(t),n>=0)return e.splice(n,1)}else{var r=this._get(e);if(n=r.in
dexOf(t),n>=0)return this.splice(e,n,1)}},transform:function(e,t){t=t||this,t.st
yle.webkitTransform=e,t.style.transform=e},translate3d:function(e,t,n,r){r=r||th
is,this.transform("translate3d("+e+","+t+","+n+")",r)},importHref:function(e,t,n
,r){var s=document.createElement("link");s.rel="import",s.href=e;var i=Polymer.B
ase.importHref.imported=Polymer.Base.importHref.imported||{},o=i[s.href],a=o||s,
l=this;if(t){var c=function(e){return e.target.__firedLoad=!0,e.target.removeEve
ntListener("load",c),t.call(l,e)};a.addEventListener("load",c)}if(n){var h=funct
ion(e){return e.target.__firedError=!0,e.target.removeEventListener("error",h),n
.call(l,e)};a.addEventListener("error",h)}return o?(o.__firedLoad&&o.dispatchEve
nt(new Event("load")),o.__firedError&&o.dispatchEvent(new Event("error"))):(i[s.
href]=s,r=Boolean(r),r&&s.setAttribute("async",""),document.head.appendChild(s))
,a},create:function(e,t){var n=document.createElement(e);if(t)for(var r in t)n[r
]=t[r];return n},isLightDescendant:function(e){return this!==e&&this.contains(e)
&&Polymer.dom(this).getOwnerRoot()===Polymer.dom(e).getOwnerRoot()},isLocalDesce
ndant:function(e){return this.root===Polymer.dom(e).getOwnerRoot()}}),!Polymer.S
ettings.useNativeCustomElements){var e=Polymer.Base.importHref;Polymer.Base.impo
rtHref=function(t,n,r,s){CustomElements.ready=!1;var i=function(e){if(CustomElem
ents.upgradeDocumentTree(document),CustomElements.ready=!0,n)return n.call(this,
e)};return e.call(this,t,i,r,s)}}}(),Polymer.Bind={prepareModel:function(e){Poly
mer.Base.mixin(e,this._modelApi)},_modelApi:{_notifyChange:function(e,t,n){n=voi
d 0===n?this[e]:n,t=t||Polymer.CaseMap.camelToDashCase(e)+"-changed",this.fire(t
,{value:n},{bubbles:!1,cancelable:!1,_useCache:!0})},_propertySetter:function(e,
t,n,r){var s=this.__data__[e];return s===t||s!==s&&t!==t||(this.__data__[e]=t,"o
bject"==typeof t&&this._clearPath(e),this._propertyChanged&&this._propertyChange
d(e,t,s),n&&this._effectEffects(e,t,n,s,r)),s},__setProperty:function(e,t,n,r){r
=r||this;var s=r._propertyEffects&&r._propertyEffects[e];s?r._propertySetter(e,t
,s,n):r[e]!==t&&(r[e]=t)},_effectEffects:function(e,t,n,r,s){for(var i,o=0,a=n.l
ength;o<a&&(i=n[o]);o++)i.fn.call(this,e,this[e],i.effect,r,s)},_clearPath:funct
ion(e){for(var t in this.__data__)Polymer.Path.isDescendant(e,t)&&(this.__data__
[t]=void 0)}},ensurePropertyEffects:function(e,t){e._propertyEffects||(e._proper
tyEffects={});var n=e._propertyEffects[t];return n||(n=e._propertyEffects[t]=[])
,n},addPropertyEffect:function(e,t,n,r){var s=this.ensurePropertyEffects(e,t),i=
{kind:n,effect:r,fn:Polymer.Bind["_"+n+"Effect"]};return s.push(i),i},createBind
ings:function(e){var t=e._propertyEffects;if(t)for(var n in t){var r=t[n];r.sort
(this._sortPropertyEffects),this._createAccessors(e,n,r)}},_sortPropertyEffects:
function(){var e={compute:0,annotation:1,annotatedComputation:2,reflect:3,notify
:4,observer:5,complexObserver:6,function:7};return function(t,n){return e[t.kind
]-e[n.kind]}}(),_createAccessors:function(e,t,n){var r={get:function(){return th
is.__data__[t]}},s=function(e){this._propertySetter(t,e,n)},i=e.getPropertyInfo&
&e.getPropertyInfo(t);i&&i.readOnly?i.computed||(e["_set"+this.upper(t)]=s):r.se
t=s,Object.defineProperty(e,t,r)},upper:function(e){return e[0].toUpperCase()+e.
substring(1)},_addAnnotatedListener:function(e,t,n,r,s,i){e._bindListeners||(e._
bindListeners=[]);var o=this._notedListenerFactory(n,r,Polymer.Path.isDeep(r),i)
,a=s||Polymer.CaseMap.camelToDashCase(n)+"-changed";e._bindListeners.push({index
:t,property:n,path:r,changedFn:o,event:a})},_isEventBogus:function(e,t){return e
.path&&e.path[0]!==t},_notedListenerFactory:function(e,t,n,r){return function(s,
i,o){if(o){var a=Polymer.Path.translate(e,t,o);this._notifyPath(a,i)}else i=s[e]
,r&&(i=!i),n?this.__data__[t]!=i&&this.set(t,i):this[t]=i}},prepareInstance:func
tion(e){e.__data__=Object.create(null)},setupBindListeners:function(e){for(var t
,n=e._bindListeners,r=0,s=n.length;r<s&&(t=n[r]);r++){var i=e._nodes[t.index];th
is._addNotifyListener(i,e,t.event,t.changedFn)}},_addNotifyListener:function(e,t
,n,r){e.addEventListener(n,function(e){return t._notifyListener(r,e)})}},Polymer
.Base.extend(Polymer.Bind,{_shouldAddListener:function(e){return e.name&&"attrib
ute"!=e.kind&&"text"!=e.kind&&!e.isCompound&&"{"===e.parts[0].mode},_annotationE
ffect:function(e,t,n){e!=n.value&&(t=this._get(n.value),this.__data__[n.value]=t
),this._applyEffectValue(n,t)},_reflectEffect:function(e,t,n){this.reflectProper
tyToAttribute(e,n.attribute,t)},_notifyEffect:function(e,t,n,r,s){s||this._notif
yChange(e,n.event,t)},_functionEffect:function(e,t,n,r,s){n.call(this,e,t,r,s)},
_observerEffect:function(e,t,n,r){var s=this[n.method];s?s.call(this,t,r):this._
warn(this._logf("_observerEffect","observer method `"+n.method+"` not defined"))
},_complexObserverEffect:function(e,t,n){var r=this[n.method];if(r){var s=Polyme
r.Bind._marshalArgs(this.__data__,n,e,t);s&&r.apply(this,s)}else n.dynamicFn||th
is._warn(this._logf("_complexObserverEffect","observer method `"+n.method+"` not
defined"))},_computeEffect:function(e,t,n){var r=this[n.method];if(r){var s=Pol
ymer.Bind._marshalArgs(this.__data__,n,e,t);if(s){var i=r.apply(this,s);this.__s
etProperty(n.name,i)}}else n.dynamicFn||this._warn(this._logf("_computeEffect","
compute method `"+n.method+"` not defined"))},_annotatedComputationEffect:functi
on(e,t,n){var r=this._rootDataHost||this,s=r[n.method];if(s){var i=Polymer.Bind.
_marshalArgs(this.__data__,n,e,t);if(i){var o=s.apply(r,i);this._applyEffectValu
e(n,o)}}else n.dynamicFn||r._warn(r._logf("_annotatedComputationEffect","compute
method `"+n.method+"` not defined"))},_marshalArgs:function(e,t,n,r){for(var s=
[],i=t.args,o=i.length>1||t.dynamicFn,a=0,l=i.length;a<l;a++){var c,h=i[a],u=h.n
ame;if(h.literal?c=h.value:n===u?c=r:(c=e[u],void 0===c&&h.structured&&(c=Polyme
r.Base._get(u,e))),o&&void 0===c)return;if(h.wildcard){var f=Polymer.Path.isAnce
stor(n,u);s[a]={path:f?n:u,value:f?r:c,base:c}}else s[a]=c}return s}}),Polymer.B
ase._addFeature({_addPropertyEffect:function(e,t,n){var r=Polymer.Bind.addProper
tyEffect(this,e,t,n);r.pathFn=this["_"+r.kind+"PathEffect"]},_prepEffects:functi
on(){Polymer.Bind.prepareModel(this),this._addAnnotationEffects(this._notes)},_p
repBindings:function(){Polymer.Bind.createBindings(this)},_addPropertyEffects:fu
nction(e){if(e)for(var t in e){var n=e[t];if(n.observer&&this._addObserverEffect
(t,n.observer),n.computed&&(n.readOnly=!0,this._addComputedEffect(t,n.computed))
,n.notify&&this._addPropertyEffect(t,"notify",{event:Polymer.CaseMap.camelToDash
Case(t)+"-changed"}),n.reflectToAttribute){var r=Polymer.CaseMap.camelToDashCase
(t);"-"===r[0]?this._warn(this._logf("_addPropertyEffects","Property "+t+" canno
t be reflected to attribute "+r+' because "-" is not a valid starting attribute
name. Use a lowercase first letter for the property instead.')):this._addPropert
yEffect(t,"reflect",{attribute:r})}n.readOnly&&Polymer.Bind.ensurePropertyEffect
s(this,t)}},_addComputedEffect:function(e,t){for(var n,r=this._parseMethod(t),s=
r.dynamicFn,i=0;i<r.args.length&&(n=r.args[i]);i++)this._addPropertyEffect(n.mod
el,"compute",{method:r.method,args:r.args,trigger:n,name:e,dynamicFn:s});s&&this
._addPropertyEffect(r.method,"compute",{method:r.method,args:r.args,trigger:null
,name:e,dynamicFn:s})},_addObserverEffect:function(e,t){this._addPropertyEffect(
e,"observer",{method:t,property:e})},_addComplexObserverEffects:function(e){if(e
)for(var t,n=0;n<e.length&&(t=e[n]);n++)this._addComplexObserverEffect(t)},_addC
omplexObserverEffect:function(e){var t=this._parseMethod(e);if(!t)throw new Erro
r("Malformed observer expression '"+e+"'");for(var n,r=t.dynamicFn,s=0;s<t.args.
length&&(n=t.args[s]);s++)this._addPropertyEffect(n.model,"complexObserver",{met
hod:t.method,args:t.args,trigger:n,dynamicFn:r});r&&this._addPropertyEffect(t.me
thod,"complexObserver",{method:t.method,args:t.args,trigger:null,dynamicFn:r})},
_addAnnotationEffects:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++)for(var
r,s=t.bindings,i=0;i<s.length&&(r=s[i]);i++)this._addAnnotationEffect(r,n)},_ad
dAnnotationEffect:function(e,t){Polymer.Bind._shouldAddListener(e)&&Polymer.Bind
._addAnnotatedListener(this,t,e.name,e.parts[0].value,e.parts[0].event,e.parts[0
].negate);for(var n=0;n<e.parts.length;n++){var r=e.parts[n];r.signature?this._a
ddAnnotatedComputationEffect(e,r,t):r.literal||("attribute"===e.kind&&"-"===e.na
me[0]?this._warn(this._logf("_addAnnotationEffect","Cannot set attribute "+e.nam
e+' because "-" is not a valid attribute starting character')):this._addProperty
Effect(r.model,"annotation",{kind:e.kind,index:t,name:e.name,propertyName:e.prop
ertyName,value:r.value,isCompound:e.isCompound,compoundIndex:r.compoundIndex,eve
nt:r.event,customEvent:r.customEvent,negate:r.negate}))}},_addAnnotatedComputati
onEffect:function(e,t,n){var r=t.signature;if(r.static)this.__addAnnotatedComput
ationEffect("__static__",n,e,t,null);else{for(var s,i=0;i<r.args.length&&(s=r.ar
gs[i]);i++)s.literal||this.__addAnnotatedComputationEffect(s.model,n,e,t,s);r.dy
namicFn&&this.__addAnnotatedComputationEffect(r.method,n,e,t,null)}},__addAnnota
tedComputationEffect:function(e,t,n,r,s){this._addPropertyEffect(e,"annotatedCom
putation",{index:t,isCompound:n.isCompound,compoundIndex:r.compoundIndex,kind:n.
kind,name:n.name,negate:r.negate,method:r.signature.method,args:r.signature.args
,trigger:s,dynamicFn:r.signature.dynamicFn})},_parseMethod:function(e){var t=e.m
atch(/([^\s]+?)\(([\s\S]*)\)/);if(t){var n={method:t[1],static:!0};if(this.getPr
opertyInfo(n.method)!==Polymer.nob&&(n.static=!1,n.dynamicFn=!0),t[2].trim()){va
r r=t[2].replace(/\\,/g,",").split(",");return this._parseArgs(r,n)}return
n.args=Polymer.nar,n}},_parseArgs:function(e,t){return t.args=e.map(function(e)
{var n=this._parseArg(e);return n.literal||(t.static=!1),n},this),t},_parseArg:f
unction(e){var t=e.trim().replace(/,/g,",").replace(/\\(.)/g,"$1"),n={name
:t},r=t[0];switch("-"===r&&(r=t[1]),r>="0"&&r<="9"&&(r="#"),r){case"'":case'"':n
.value=t.slice(1,-1),n.literal=!0;break;case"#":n.value=Number(t),n.literal=!0}r
eturn n.literal||(n.model=Polymer.Path.root(t),n.structured=Polymer.Path.isDeep(
t),n.structured&&(n.wildcard=".*"==t.slice(-2),n.wildcard&&(n.name=t.slice(0,-2)
))),n},_marshalInstanceEffects:function(){Polymer.Bind.prepareInstance(this),thi
s._bindListeners&&Polymer.Bind.setupBindListeners(this)},_applyEffectValue:funct
ion(e,t){var n=this._nodes[e.index],r=e.name;if(t=this._computeFinalAnnotationVa
lue(n,r,t,e),"attribute"==e.kind)this.serializeValueToAttribute(t,r,n);else{var
s=n._propertyInfo&&n._propertyInfo[r];if(s&&s.readOnly)return;this.__setProperty
(r,t,!1,n)}},_computeFinalAnnotationValue:function(e,t,n,r){if(r.negate&&(n=!n),
r.isCompound){var s=e.__compoundStorage__[t];s[r.compoundIndex]=n,n=s.join("")}r
eturn"attribute"!==r.kind&&("className"===t&&(n=this._scopeElementClass(e,n)),("
textContent"===t||"input"==e.localName&&"value"==t)&&(n=void 0==n?"":n)),n},_exe
cuteStaticEffects:function(){this._propertyEffects&&this._propertyEffects.__stat
ic__&&this._effectEffects("__static__",null,this._propertyEffects.__static__)}})
,function(){var e=Polymer.Settings.usePolyfillProto;Polymer.Base._addFeature({_s
etupConfigure:function(e){if(this._config={},this._handlers=[],this._aboveConfig
=null,e)for(var t in e)void 0!==e[t]&&(this._config[t]=e[t])},_marshalAttributes
:function(){this._takeAttributesToModel(this._config)},_attributeChangedImpl:fun
ction(e){var t=this._clientsReadied?this:this._config;this._setAttributeToProper
ty(t,e)},_configValue:function(e,t){var n=this._propertyInfo[e];n&&n.readOnly||(
this._config[e]=t)},_beforeClientsReady:function(){this._configure()},_configure
:function(){this._configureAnnotationReferences(),this._configureInstancePropert
ies(),this._aboveConfig=this.mixin({},this._config);for(var e={},t=0;t<this.beha
viors.length;t++)this._configureProperties(this.behaviors[t].properties,e);this.
_configureProperties(this.properties,e),this.mixin(e,this._aboveConfig),this._co
nfig=e,this._clients&&this._clients.length&&this._distributeConfig(this._config)
},_configureInstanceProperties:function(){for(var t in this._propertyEffects)!e&
&this.hasOwnProperty(t)&&(this._configValue(t,this[t]), |
| 3 delete this[t])},_configureProperties:function(e,t){for(var n in e){var r=e[n];i
f(void 0!==r.value){var s=r.value;"function"==typeof s&&(s=s.call(this,this._con
fig)),t[n]=s}}},_distributeConfig:function(e){var t=this._propertyEffects;if(t)f
or(var n in e){var r=t[n];if(r)for(var s,i=0,o=r.length;i<o&&(s=r[i]);i++)if("an
notation"===s.kind){var a=this._nodes[s.effect.index],l=s.effect.propertyName,c=
"attribute"==s.effect.kind,h=a._propertyEffects&&a._propertyEffects[l];if(a._con
figValue&&(h||!c)){var u=n===s.effect.value?e[n]:this._get(s.effect.value,e);u=t
his._computeFinalAnnotationValue(a,l,u,s.effect),c&&(u=a.deserialize(this.serial
ize(u),a._propertyInfo[l].type)),a._configValue(l,u)}}}},_afterClientsReady:func
tion(){this._executeStaticEffects(),this._applyConfig(this._config,this._aboveCo
nfig),this._flushHandlers()},_applyConfig:function(e,t){for(var n in e)void 0===
this[n]&&this.__setProperty(n,e[n],n in t)},_notifyListener:function(e,t){if(!Po
lymer.Bind._isEventBogus(t,t.target)){var n,r;if(t.detail&&(n=t.detail.value,r=t
.detail.path),this._clientsReadied)return e.call(this,t.target,n,r);this._queueH
andler([e,t.target,n,r])}},_queueHandler:function(e){this._handlers.push(e)},_fl
ushHandlers:function(){for(var e,t=this._handlers,n=0,r=t.length;n<r&&(e=t[n]);n
++)e[0].call(this,e[1],e[2],e[3]);this._handlers=[]}})}(),function(){"use strict
";var e=Polymer.Path;Polymer.Base._addFeature({notifyPath:function(e,t,n){var r=
{},s=this._get(e,this,r);1===arguments.length&&(t=s),r.path&&this._notifyPath(r.
path,t,n)},_notifyPath:function(e,t,n){var r=this._propertySetter(e,t);if(r!==t&
&(r===r||t===t))return this._pathEffector(e,t),n||this._notifyPathUp(e,t),!0},_g
etPathParts:function(e){if(Array.isArray(e)){for(var t=[],n=0;n<e.length;n++)for
(var r=e[n].toString().split("."),s=0;s<r.length;s++)t.push(r[s]);return t}retur
n e.toString().split(".")},set:function(e,t,n){var r,s=n||this,i=this._getPathPa
rts(e),o=i[i.length-1];if(i.length>1){for(var a=0;a<i.length-1;a++){var l=i[a];i
f(r&&"#"==l[0]?s=Polymer.Collection.get(r).getItem(l):(s=s[l],r&&parseInt(l,10)=
=l&&(i[a]=Polymer.Collection.get(r).getKey(s))),!s)return;r=Array.isArray(s)?s:n
ull}if(r){var c,h,u=Polymer.Collection.get(r);"#"==o[0]?(h=o,c=u.getItem(h),o=r.
indexOf(c),u.setItem(h,t)):parseInt(o,10)==o&&(c=s[o],h=u.getKey(c),i[a]=h,u.set
Item(h,t))}s[o]=t,n||this._notifyPath(i.join("."),t)}else s[e]=t},get:function(e
,t){return this._get(e,t)},_get:function(e,t,n){for(var r,s=t||this,i=this._getP
athParts(e),o=0;o<i.length;o++){if(!s)return;var a=i[o];r&&"#"==a[0]?s=Polymer.C
ollection.get(r).getItem(a):(s=s[a],n&&r&&parseInt(a,10)==a&&(i[o]=Polymer.Colle
ction.get(r).getKey(s))),r=Array.isArray(s)?s:null}return n&&(n.path=i.join(".")
),s},_pathEffector:function(t,n){var r=e.root(t),s=this._propertyEffects&&this._
propertyEffects[r];if(s)for(var i,o=0;o<s.length&&(i=s[o]);o++){var a=i.pathFn;a
&&a.call(this,t,n,i.effect)}this._boundPaths&&this._notifyBoundPaths(t,n)},_anno
tationPathEffect:function(t,n,r){if(e.matches(r.value,!1,t))Polymer.Bind._annota
tionEffect.call(this,t,n,r);else if(!r.negate&&e.isDescendant(r.value,t)){var s=
this._nodes[r.index];if(s&&s._notifyPath){var i=e.translate(r.value,r.name,t);s.
_notifyPath(i,n,!0)}}},_complexObserverPathEffect:function(t,n,r){e.matches(r.tr
igger.name,r.trigger.wildcard,t)&&Polymer.Bind._complexObserverEffect.call(this,
t,n,r)},_computePathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wi
ldcard,t)&&Polymer.Bind._computeEffect.call(this,t,n,r)},_annotatedComputationPa
thEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer
.Bind._annotatedComputationEffect.call(this,t,n,r)},linkPaths:function(e,t){this
._boundPaths=this._boundPaths||{},t?this._boundPaths[e]=t:this.unlinkPaths(e)},u
nlinkPaths:function(e){this._boundPaths&&delete this._boundPaths[e]},_notifyBoun
dPaths:function(t,n){for(var r in this._boundPaths){var s=this._boundPaths[r];e.
isDescendant(r,t)?this._notifyPath(e.translate(r,s,t),n):e.isDescendant(s,t)&&th
is._notifyPath(e.translate(s,r,t),n)}},_notifyPathUp:function(t,n){var r=e.root(
t),s=Polymer.CaseMap.camelToDashCase(r),i=s+this._EVENT_CHANGED;this.fire(i,{pat
h:t,value:n},{bubbles:!1,_useCache:!0})},_EVENT_CHANGED:"-changed",notifySplices
:function(e,t){var n={},r=this._get(e,this,n);this._notifySplices(r,n.path,t)},_
notifySplices:function(e,t,n){var r={keySplices:Polymer.Collection.applySplices(
e,n),indexSplices:n},s=t+".splices";this._notifyPath(s,r),this._notifyPath(t+".l
ength",e.length),this.__data__[s]={keySplices:null,indexSplices:null}},_notifySp
lice:function(e,t,n,r,s){this._notifySplices(e,t,[{index:n,addedCount:r,removed:
s,object:e,type:"splice"}])},push:function(e){var t={},n=this._get(e,this,t),r=A
rray.prototype.slice.call(arguments,1),s=n.length,i=n.push.apply(n,r);return r.l
ength&&this._notifySplice(n,t.path,s,r.length,[]),i},pop:function(e){var t={},n=
this._get(e,this,t),r=Boolean(n.length),s=Array.prototype.slice.call(arguments,1
),i=n.pop.apply(n,s);return r&&this._notifySplice(n,t.path,n.length,0,[i]),i},sp
lice:function(e,t){var n={},r=this._get(e,this,n);t=t<0?r.length-Math.floor(-t):
Math.floor(t),t||(t=0);var s=Array.prototype.slice.call(arguments,1),i=r.splice.
apply(r,s),o=Math.max(s.length-2,0);return(o||i.length)&&this._notifySplice(r,n.
path,t,o,i),i},shift:function(e){var t={},n=this._get(e,this,t),r=Boolean(n.leng
th),s=Array.prototype.slice.call(arguments,1),i=n.shift.apply(n,s);return r&&thi
s._notifySplice(n,t.path,0,0,[i]),i},unshift:function(e){var t={},n=this._get(e,
this,t),r=Array.prototype.slice.call(arguments,1),s=n.unshift.apply(n,r);return
r.length&&this._notifySplice(n,t.path,0,r.length,[]),s},prepareModelNotifyPath:f
unction(e){this.mixin(e,{fire:Polymer.Base.fire,_getEvent:Polymer.Base._getEvent
,__eventCache:Polymer.Base.__eventCache,notifyPath:Polymer.Base.notifyPath,_get:
Polymer.Base._get,_EVENT_CHANGED:Polymer.Base._EVENT_CHANGED,_notifyPath:Polymer
.Base._notifyPath,_notifyPathUp:Polymer.Base._notifyPathUp,_pathEffector:Polymer
.Base._pathEffector,_annotationPathEffect:Polymer.Base._annotationPathEffect,_co
mplexObserverPathEffect:Polymer.Base._complexObserverPathEffect,_annotatedComput
ationPathEffect:Polymer.Base._annotatedComputationPathEffect,_computePathEffect:
Polymer.Base._computePathEffect,_notifyBoundPaths:Polymer.Base._notifyBoundPaths
,_getPathParts:Polymer.Base._getPathParts})}})}(),Polymer.Base._addFeature({reso
lveUrl:function(e){var t=Polymer.DomModule.import(this.is),n="";if(t){var r=t.ge
tAttribute("assetpath")||"";n=Polymer.ResolveUrl.resolveUrl(r,t.ownerDocument.ba
seURI)}return Polymer.ResolveUrl.resolveUrl(e,n)}}),Polymer.CssParse=function(){
return{parse:function(e){return e=this._clean(e),this._parseCss(this._lex(e),e)}
,_clean:function(e){return e.replace(this._rx.comments,"").replace(this._rx.port
,"")},_lex:function(e){for(var t={start:0,end:e.length},n=t,r=0,s=e.length;r<s;r
++)switch(e[r]){case this.OPEN_BRACE:n.rules||(n.rules=[]);var i=n,o=i.rules[i.r
ules.length-1];n={start:r+1,parent:i,previous:o},i.rules.push(n);break;case this
.CLOSE_BRACE:n.end=r+1,n=n.parent||t}return t},_parseCss:function(e,t){var n=t.s
ubstring(e.start,e.end-1);if(e.parsedCssText=e.cssText=n.trim(),e.parent){var r=
e.previous?e.previous.end:e.parent.start;n=t.substring(r,e.start-1),n=this._expa
ndUnicodeEscapes(n),n=n.replace(this._rx.multipleSpaces," "),n=n.substring(n.las
tIndexOf(";")+1);var s=e.parsedSelector=e.selector=n.trim();e.atRule=0===s.index
Of(this.AT_START),e.atRule?0===s.indexOf(this.MEDIA_START)?e.type=this.types.MED
IA_RULE:s.match(this._rx.keyframesRule)&&(e.type=this.types.KEYFRAMES_RULE,e.key
framesName=e.selector.split(this._rx.multipleSpaces).pop()):0===s.indexOf(this.V
AR_START)?e.type=this.types.MIXIN_RULE:e.type=this.types.STYLE_RULE}var i=e.rule
s;if(i)for(var o,a=0,l=i.length;a<l&&(o=i[a]);a++)this._parseCss(o,t);return e},
_expandUnicodeEscapes:function(e){return e.replace(/\\([0-9a-f]{1,6})\s/gi,funct
ion(){for(var e=arguments[1],t=6-e.length;t--;)e="0"+e;return"\\"+e})},stringify
:function(e,t,n){n=n||"";var r="";if(e.cssText||e.rules){var s=e.rules;if(s&&!th
is._hasMixinRules(s))for(var i,o=0,a=s.length;o<a&&(i=s[o]);o++)r=this.stringify
(i,t,r);else r=t?e.cssText:this.removeCustomProps(e.cssText),r=r.trim(),r&&(r="
"+r+"\n")}return r&&(e.selector&&(n+=e.selector+" "+this.OPEN_BRACE+"\n"),n+=r,
e.selector&&(n+=this.CLOSE_BRACE+"\n\n")),n},_hasMixinRules:function(e){return 0
===e[0].selector.indexOf(this.VAR_START)},removeCustomProps:function(e){return e
=this.removeCustomPropAssignment(e),this.removeCustomPropApply(e)},removeCustomP
ropAssignment:function(e){return e.replace(this._rx.customProp,"").replace(this.
_rx.mixinProp,"")},removeCustomPropApply:function(e){return e.replace(this._rx.m
ixinApply,"").replace(this._rx.varApply,"")},types:{STYLE_RULE:1,KEYFRAMES_RULE:
7,MEDIA_RULE:4,MIXIN_RULE:1e3},OPEN_BRACE:"{",CLOSE_BRACE:"}",_rx:{comments:/\/\
*[^*]*\*+([^\/*][^*]*\*+)*\//gim,port:/@import[^;]*;/gim,customProp:/(?:^[^;\-\s
}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,mixinProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^
{};]*?{[^}]*?}(?:[;\n]|$)?/gim,mixinApply:/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/
gim,varApply:/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,keyframesRule:/^@[^\s]*
keyframes/,multipleSpaces:/\s+/g},VAR_START:"--",MEDIA_START:"@media",AT_START:"
@"}}(),Polymer.StyleUtil=function(){var e=Polymer.Settings;return{NATIVE_VARIABL
ES:Polymer.Settings.useNativeCSSProperties,MODULE_STYLES_SELECTOR:"style, link[r
el=import][type~=css], template",INCLUDE_ATTR:"include",toCssText:function(e,t){
return"string"==typeof e&&(e=this.parser.parse(e)),t&&this.forEachRule(e,t),this
.parser.stringify(e,this.NATIVE_VARIABLES)},forRulesInStyles:function(e,t,n){if(
e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);s++)this.forEachRuleInStyle(r,t,n)},for
ActiveRulesInStyles:function(e,t,n){if(e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);
s++)this.forEachRuleInStyle(r,t,n,!0)},rulesForStyle:function(e){return!e.__cssR
ules&&e.textContent&&(e.__cssRules=this.parser.parse(e.textContent)),e.__cssRule
s},isKeyframesSelector:function(e){return e.parent&&e.parent.type===this.ruleTyp
es.KEYFRAMES_RULE},forEachRuleInStyle:function(e,t,n,r){var s,i,o=this.rulesForS
tyle(e);t&&(s=function(n){t(n,e)}),n&&(i=function(t){n(t,e)}),this.forEachRule(o
,s,i,r)},forEachRule:function(e,t,n,r){if(e){var s=!1;if(r&&e.type===this.ruleTy
pes.MEDIA_RULE){var i=e.selector.match(this.rx.MEDIA_MATCH);i&&(window.matchMedi
a(i[1]).matches||(s=!0))}e.type===this.ruleTypes.STYLE_RULE?t(e):n&&e.type===thi
s.ruleTypes.KEYFRAMES_RULE?n(e):e.type===this.ruleTypes.MIXIN_RULE&&(s=!0);var o
=e.rules;if(o&&!s)for(var a,l=0,c=o.length;l<c&&(a=o[l]);l++)this.forEachRule(a,
t,n,r)}},applyCss:function(e,t,n,r){var s=this.createScopeStyle(e,t);return this
.applyStyle(s,n,r)},applyStyle:function(e,t,n){t=t||document.head;var r=n&&n.nex
tSibling||t.firstChild;return this.__lastHeadApplyNode=e,t.insertBefore(e,r)},cr
eateScopeStyle:function(e,t){var n=document.createElement("style");return t&&n.s
etAttribute("scope",t),n.textContent=e,n},__lastHeadApplyNode:null,applyStylePla
ceHolder:function(e){var t=document.createComment(" Shady DOM styles for "+e+" "
),n=this.__lastHeadApplyNode?this.__lastHeadApplyNode.nextSibling:null,r=documen
t.head;return r.insertBefore(t,n||r.firstChild),this.__lastHeadApplyNode=t,t},cs
sFromModules:function(e,t){for(var n=e.trim().split(" "),r="",s=0;s<n.length;s++
)r+=this.cssFromModule(n[s],t);return r},cssFromModule:function(e,t){var n=Polym
er.DomModule.import(e);return n&&!n._cssText&&(n._cssText=this.cssFromElement(n)
),!n&&t&&console.warn("Could not find style data in module named",e),n&&n._cssTe
xt||""},cssFromElement:function(e){for(var t,n="",r=e.content||e,s=Polymer.TreeA
pi.arrayCopy(r.querySelectorAll(this.MODULE_STYLES_SELECTOR)),i=0;i<s.length;i++
)if(t=s[i],"template"===t.localName)t.hasAttribute("preserve-content")||(n+=this
.cssFromElement(t));else if("style"===t.localName){var o=t.getAttribute(this.INC
LUDE_ATTR);o&&(n+=this.cssFromModules(o,!0)),t=t.__appliedElement||t,t.parentNod
e.removeChild(t),n+=this.resolveCss(t.textContent,e.ownerDocument)}else t.import
&&t.import.body&&(n+=this.resolveCss(t.import.body.textContent,t.import));return
n},isTargetedBuild:function(t){return e.useNativeShadow?"shadow"===t:"shady"===
t},cssBuildTypeForModule:function(e){var t=Polymer.DomModule.import(e);if(t)retu
rn this.getCssBuildType(t)},getCssBuildType:function(e){return e.getAttribute("c
ss-build")},_findMatchingParen:function(e,t){for(var n=0,r=t,s=e.length;r<s;r++)
switch(e[r]){case"(":n++;break;case")":if(0===--n)return r}return-1},processVari
ableAndFallback:function(e,t){var n=e.indexOf("var(");if(n===-1)return t(e,"",""
,"");var r=this._findMatchingParen(e,n+3),s=e.substring(n+4,r),i=e.substring(0,n
),o=this.processVariableAndFallback(e.substring(r+1),t),a=s.indexOf(",");if(a===
-1)return t(i,s.trim(),"",o);var l=s.substring(0,a).trim(),c=s.substring(a+1).tr
im();return t(i,l,c,o)},rx:{VAR_ASSIGN:/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:([^;
{]*)|{([^}]*)})(?:(?=[;\s}])|$)/gi,MIXIN_MATCH:/(?:^|\W+)@apply\s*\(?([^);\n]*)\
)?/gi,VAR_CONSUMED:/(--[\w-]+)\s*([:,;)]|$)/gi,ANIMATION_MATCH:/(animation\s*:)|
(animation-name\s*:)/,MEDIA_MATCH:/@media[^(]*(\([^)]*\))/,IS_VAR:/^--/,BRACKETE
D:/\{[^}]*\}/g,HOST_PREFIX:"(?:^|[^.#[:])",HOST_SUFFIX:"($|[.:[\\s>+~])"},resolv
eCss:Polymer.ResolveUrl.resolveCss,parser:Polymer.CssParse,ruleTypes:Polymer.Css
Parse.types}}(),Polymer.StyleTransformer=function(){var e=Polymer.StyleUtil,t=Po
lymer.Settings,n={dom:function(e,t,n,r){this._transformDom(e,t||"",n,r)},_transf
ormDom:function(e,t,n,r){e.setAttribute&&this.element(e,t,n,r);for(var s=Polymer
.dom(e).childNodes,i=0;i<s.length;i++)this._transformDom(s[i],t,n,r)},element:fu
nction(e,t,n,s){if(n)s?e.removeAttribute(r):e.setAttribute(r,t);else if(t)if(e.c
lassList)s?(e.classList.remove(r),e.classList.remove(t)):(e.classList.add(r),e.c
lassList.add(t));else if(e.getAttribute){var i=e.getAttribute(g);s?i&&e.setAttri
bute(g,i.replace(r,"").replace(t,"")):e.setAttribute(g,(i?i+" ":"")+r+" "+t)}},e
lementStyles:function(n,r){var s,i=n._styles,o="",a=n.__cssBuild,l=t.useNativeSh
adow||"shady"===a;if(l){var h=this;s=function(e){e.selector=h._slottedToContent(
e.selector),e.selector=e.selector.replace(c,":host > *"),r&&r(e)}}for(var u,f=0,
p=i.length;f<p&&(u=i[f]);f++){var _=e.rulesForStyle(u);o+=l?e.toCssText(_,s):thi
s.css(_,n.is,n.extends,r,n._scopeCssViaAttr)+"\n\n"}return o.trim()},css:functio
n(t,n,r,s,i){var o=this._calcHostScope(n,r);n=this._calcElementScope(n,i);var a=
this;return e.toCssText(t,function(e){e.isScoped||(a.rule(e,n,o),e.isScoped=!0),
s&&s(e,n,o)})},_calcElementScope:function(e,t){return e?t?m+e+y:d+e:""},_calcHos
tScope:function(e,t){return t?"[is="+e+"]":e},rule:function(e,t,n){this._transfo
rmRule(e,this._transformComplexSelector,t,n)},_transformRule:function(e,t,n,r){e
.selector=e.transformedSelector=this._transformRuleCss(e,t,n,r)},_transformRuleC
ss:function(t,n,r,s){var o=t.selector.split(i);if(!e.isKeyframesSelector(t))for(
var a,l=0,c=o.length;l<c&&(a=o[l]);l++)o[l]=n.call(this,a,r,s);return o.join(i)}
,_transformComplexSelector:function(e,t,n){var r=!1,s=!1,a=this;return e=e.trim(
),e=this._slottedToContent(e),e=e.replace(c,":host > *"),e=e.replace(P,l+" $1"),
e=e.replace(o,function(e,i,o){if(r)o=o.replace(_," ");else{var l=a._transformCom
poundSelector(o,i,t,n);r=r||l.stop,s=s||l.hostContext,i=l.combinator,o=l.value}r
eturn i+o}),s&&(e=e.replace(f,function(e,t,r,s){return t+r+" "+n+s+i+" "+t+n+r+s
})),e},_transformCompoundSelector:function(e,t,n,r){var s=e.search(_),i=!1;e.ind
exOf(u)>=0?i=!0:e.indexOf(l)>=0?e=this._transformHostSelector(e,r):0!==s&&(e=n?t
his._transformSimpleSelector(e,n):e),e.indexOf(p)>=0&&(t="");var o;return s>=0&&
(e=e.replace(_," "),o=!0),{value:e,combinator:t,stop:o,hostContext:i}},_transfor
mSimpleSelector:function(e,t){var n=e.split(v);return n[0]+=t,n.join(v)},_transf
ormHostSelector:function(e,t){var n=e.match(h),r=n&&n[2].trim()||"";if(r){if(r[0
].match(a))return e.replace(h,function(e,n,r){return t+r});var s=r.split(a)[0];r
eturn s===t?r:S}return e.replace(l,t)},documentRule:function(e){e.selector=e.par
sedSelector,this.normalizeRootSelector(e),t.useNativeShadow||this._transformRule
(e,this._transformDocumentSelector)},normalizeRootSelector:function(e){e.selecto
r=e.selector.replace(c,"html")},_transformDocumentSelector:function(e){return e.
match(_)?this._transformComplexSelector(e,s):this._transformSimpleSelector(e.tri
m(),s)},_slottedToContent:function(e){return e.replace(C,p+"> $1")},SCOPE_NAME:"
style-scope"},r=n.SCOPE_NAME,s=":not(["+r+"]):not(."+r+")",i=",",o=/(^|[\s>+~]+)
((?:\[.+?\]|[^\s>+~=\[])+)/g,a=/[[.:#*]/,l=":host",c=":root",h=/(:host)(?:\(((?:
\([^)(]*\)|[^)(]*)+?)\))/,u=":host-context",f=/(.*)(?::host-context)(?:\(((?:\([
^)(]*\)|[^)(]*)+?)\))(.*)/,p="::content",_=/::content|::shadow|\/deep\//,d=".",m
="["+r+"~=",y="]",v=":",g="class",P=new RegExp("^("+p+")"),S="should_not_match",
C=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/g;return n}(),Polymer.StyleExt
ends=function(){var e=Polymer.StyleUtil;return{hasExtends:function(e){return Boo
lean(e.match(this.rx.EXTEND))},transform:function(t){var n=e.rulesForStyle(t),r=
this;return e.forEachRule(n,function(e){if(r._mapRuleOntoParent(e),e.parent)for(
var t;t=r.rx.EXTEND.exec(e.cssText);){var n=t[1],s=r._findExtendor(n,e);s&&r._ex
tendRule(e,s)}e.cssText=e.cssText.replace(r.rx.EXTEND,"")}),e.toCssText(n,functi
on(e){e.selector.match(r.rx.STRIP)&&(e.cssText="")},!0)},_mapRuleOntoParent:func
tion(e){if(e.parent){for(var t,n=e.parent.map||(e.parent.map={}),r=e.selector.sp
lit(","),s=0;s<r.length;s++)t=r[s],n[t.trim()]=e;return n}},_findExtendor:functi
on(e,t){return t.parent&&t.parent.map&&t.parent.map[e]||this._findExtendor(e,t.p
arent)},_extendRule:function(e,t){e.parent!==t.parent&&this._cloneAndAddRuleToPa
rent(t,e.parent),e.extends=e.extends||[],e.extends.push(t),t.selector=t.selector
.replace(this.rx.STRIP,""),t.selector=(t.selector&&t.selector+",\n")+e.selector,
t.extends&&t.extends.forEach(function(t){this._extendRule(e,t)},this)},_cloneAnd
AddRuleToParent:function(e,t){e=Object.create(e),e.parent=t,e.extends&&(e.extend
s=e.extends.slice()),t.rules.push(e)},rx:{EXTEND:/@extends\(([^)]*)\)\s*?;/gim,S
TRIP:/%[^,]*$/}}}(),Polymer.ApplyShim=function(){"use strict";function e(e,t){e=
e.trim(),m[e]={properties:t,dependants:{}}}function t(e){return e=e.trim(),m[e]}
function n(e,t){var n=_.exec(t);return n&&(t=n[1]?y._getInitialValueForProperty(
e):"apply-shim-inherit"),t}function r(e){for(var t,r,s,i,o=e.split(";"),a={},l=0
;l<o.length;l++)s=o[l],s&&(i=s.split(":"),i.length>1&&(t=i[0].trim(),r=n(t,i.sli
ce(1).join(":")),a[t]=r));return a}function s(e){var t=y.__currentElementProto,n
=t&&t.is;for(var r in e.dependants)r!==n&&(e.dependants[r].__applyShimInvalid=!0
)}function i(n,i,o,a){if(o&&c.processVariableAndFallback(o,function(e,n){n&&t(n)
&&(a="@apply "+n+";")}),!a)return n;var h=l(a),u=n.slice(0,n.indexOf("--")),f=r(
h),p=f,_=t(i),m=_&&_.properties;m?(p=Object.create(m),p=Polymer.Base.mixin(p,f))
:e(i,p);var y,v,g=[],P=!1;for(y in p)v=f[y],void 0===v&&(v="initial"),!m||y in m
||(P=!0),g.push(i+d+y+": "+v);return P&&s(_),_&&(_.properties=p),o&&(u=n+";"+u),
u+g.join("; ")+";"}function o(e,t,n){return"var("+t+",var("+n+"))"}function a(n,
r){n=n.replace(p,"");var s=[],i=t(n);if(i||(e(n,{}),i=t(n)),i){var o=y.__current
ElementProto;o&&(i.dependants[o.is]=o);var a,l,c;for(a in i.properties)c=r&&r[a]
,l=[a,": var(",n,d,a],c&&l.push(",",c),l.push(")"),s.push(l.join(""))}return s.j
oin("; ")}function l(e){for(var t;t=h.exec(e);){var n=t[0],s=t[1],i=t.index,o=i+
n.indexOf("@apply"),l=i+n.length,c=e.slice(0,o),u=e.slice(l),f=r(c),p=a(s,f);e=[
c,p,u].join(""),h.lastIndex=i+p.length}return e}var c=Polymer.StyleUtil,h=c.rx.M
IXIN_MATCH,u=c.rx.VAR_ASSIGN,f=/var\(\s*(--[^,]*),\s*(--[^)]*)\)/g,p=/;\s*/m,_=/
^\s*(initial)|(inherit)\s*$/,d="_-_",m={},y={_measureElement:null,_map:m,_separa
tor:d,transform:function(e,t){this.__currentElementProto=t,c.forRulesInStyles(e,
this._boundFindDefinitions),c.forRulesInStyles(e,this._boundFindApplications),t&
&(t.__applyShimInvalid=!1),this.__currentElementProto=null},_findDefinitions:fun
ction(e){var t=e.parsedCssText;t=t.replace(f,o),t=t.replace(u,i),e.cssText=t,":r
oot"===e.selector&&(e.selector=":host > *")},_findApplications:function(e){e.css
Text=l(e.cssText)},transformRule:function(e){this._findDefinitions(e),this._find
Applications(e)},_getInitialValueForProperty:function(e){return this._measureEle
ment||(this._measureElement=document.createElement("meta"),this._measureElement.
style.all="initial",document.head.appendChild(this._measureElement)),window.getC
omputedStyle(this._measureElement).getPropertyValue(e)}};return y._boundTransfor
mRule=y.transformRule.bind(y),y._boundFindDefinitions=y._findDefinitions.bind(y)
,y._boundFindApplications=y._findApplications.bind(y),y}(),function(){var e=Poly
mer.Base._prepElement,t=Polymer.Settings.useNativeShadow,n=Polymer.StyleUtil,r=P
olymer.StyleTransformer,s=Polymer.StyleExtends,i=Polymer.ApplyShim,o=Polymer.Set
tings;Polymer.Base._addFeature({_prepElement:function(t){this._encapsulateStyle&
&"shady"!==this.__cssBuild&&r.element(t,this.is,this._scopeCssViaAttr),e.call(th
is,t)},_prepStyles:function(){void 0===this._encapsulateStyle&&(this._encapsulat
eStyle=!t),t||(this._scopeStyle=n.applyStylePlaceHolder(this.is)),this.__cssBuil
d=n.cssBuildTypeForModule(this.is)},_prepShimStyles:function(){if(this._template
){var e=n.isTargetedBuild(this.__cssBuild);if(o.useNativeCSSProperties&&"shadow"
===this.__cssBuild&&e)return;this._styles=this._styles||this._collectStyles(),o.
useNativeCSSProperties&&!this.__cssBuild&&i.transform(this._styles,this);var s=o
.useNativeCSSProperties&&e?this._styles.length&&this._styles[0].textContent.trim
():r.elementStyles(this);this._prepStyleProperties(),!this._needsStyleProperties
()&&s&&n.applyCss(s,this.is,t?this._template.content:null,this._scopeStyle)}else
this._styles=[]},_collectStyles:function(){var e=[],t="",r=this.styleModules;if
(r)for(var i,o=0,a=r.length;o<a&&(i=r[o]);o++)t+=n.cssFromModule(i);t+=n.cssFrom
Module(this.is);var l=this._template&&this._template.parentNode;if(!this._templa
te||l&&l.id.toLowerCase()===this.is||(t+=n.cssFromElement(this._template)),t){va
r c=document.createElement("style");c.textContent=t,s.hasExtends(c.textContent)&
&(t=s.transform(c)),e.push(c)}return e},_elementAdd:function(e){this._encapsulat
eStyle&&(e.__styleScoped?e.__styleScoped=!1:r.dom(e,this.is,this._scopeCssViaAtt
r))},_elementRemove:function(e){this._encapsulateStyle&&r.dom(e,this.is,this._sc
opeCssViaAttr,!0)},scopeSubtree:function(e,n){if(!t){var r=this,s=function(e){if
(e.nodeType===Node.ELEMENT_NODE){var t=e.getAttribute("class");e.setAttribute("c
lass",r._scopeElementClass(e,t));for(var n,s=e.querySelectorAll("*"),i=0;i<s.len
gth&&(n=s[i]);i++)t=n.getAttribute("class"),n.setAttribute("class",r._scopeEleme
ntClass(n,t))}};if(s(e),n){var i=new MutationObserver(function(e){for(var t,n=0;
n<e.length&&(t=e[n]);n++)if(t.addedNodes)for(var r=0;r<t.addedNodes.length;r++)s
(t.addedNodes[r])});return i.observe(e,{childList:!0,subtree:!0}),i}}}})}(),Poly
mer.StyleProperties=function(){"use strict";function e(e,t){var n=parseInt(e/32)
,r=1<<e%32;t[n]=(t[n]||0)|r}var t=Polymer.DomApi.matchesSelector,n=Polymer.Style
Util,r=Polymer.StyleTransformer,s=navigator.userAgent.match("Trident"),i=Polymer
.Settings;return{decorateStyles:function(e,t){var s=this,i={},o=[],a=0,l=r._calc
HostScope(t.is,t.extends);n.forRulesInStyles(e,function(e,r){s.decorateRule(e),e
.index=a++,s.whenHostOrRootRule(t,e,r,function(r){if(e.parent.type===n.ruleTypes
.MEDIA_RULE&&(t.__notStyleScopeCacheable=!0),r.isHost){var s=r.selector.split("
").some(function(e){return 0===e.indexOf(l)&&e.length!==l.length});t.__notStyleS
copeCacheable=t.__notStyleScopeCacheable||s}}),s.collectPropertiesInCssText(e.pr
opertyInfo.cssText,i)},function(e){o.push(e)}),e._keyframes=o;var c=[];for(var h
in i)c.push(h);return c},decorateRule:function(e){if(e.propertyInfo)return e.pr
opertyInfo;var t={},n={},r=this.collectProperties(e,n);return r&&(t.properties=n
,e.rules=null),t.cssText=this.collectCssText(e),e.propertyInfo=t,t},collectPrope
rties:function(e,t){var n=e.propertyInfo;if(!n){for(var r,s,i,o=this.rx.VAR_ASSI
GN,a=e.parsedCssText;r=o.exec(a);)s=(r[2]||r[3]).trim(),"inherit"!==s&&(t[r[1].t
rim()]=s),i=!0;return i}if(n.properties)return Polymer.Base.mixin(t,n.properties
),!0},collectCssText:function(e){return this.collectConsumingCssText(e.parsedCss
Text)},collectConsumingCssText:function(e){return e.replace(this.rx.BRACKETED,""
).replace(this.rx.VAR_ASSIGN,"")},collectPropertiesInCssText:function(e,t){for(v
ar n;n=this.rx.VAR_CONSUMED.exec(e);){var r=n[1];":"!==n[2]&&(t[r]=!0)}},reify:f
unction(e){for(var t,n=Object.getOwnPropertyNames(e),r=0;r<n.length;r++)t=n[r],e
[t]=this.valueForProperty(e[t],e)},valueForProperty:function(e,t){if(e)if(e.inde
xOf(";")>=0)e=this.valueForProperties(e,t);else{var r=this,s=function(e,n,s,i){v
ar o=r.valueForProperty(t[n],t);return o&&"initial"!==o?"apply-shim-inherit"===o
&&(o="inherit"):o=r.valueForProperty(t[s]||s,t)||s,e+(o||"")+i};e=n.processVaria
bleAndFallback(e,s)}return e&&e.trim()||""},valueForProperties:function(e,t){for
(var n,r,s=e.split(";"),i=0;i<s.length;i++)if(n=s[i]){if(this.rx.MIXIN_MATCH.las
tIndex=0,r=this.rx.MIXIN_MATCH.exec(n))n=this.valueForProperty(t[r[1]],t);else{v
ar o=n.indexOf(":");if(o!==-1){var a=n.substring(o);a=a.trim(),a=this.valueForPr
operty(a,t)||a,n=n.substring(0,o)+a}}s[i]=n&&n.lastIndexOf(";")===n.length-1?n.s
lice(0,-1):n||""}return s.join(";")},applyProperties:function(e,t){var n="";e.pr
opertyInfo||this.decorateRule(e),e.propertyInfo.cssText&&(n=this.valueForPropert
ies(e.propertyInfo.cssText,t)),e.cssText=n},applyKeyframeTransforms:function(e,t
){var n=e.cssText,r=e.cssText;if(null==e.hasAnimations&&(e.hasAnimations=this.rx
.ANIMATION_MATCH.test(n)),e.hasAnimations){var s;if(null==e.keyframeNamesToTrans
form){e.keyframeNamesToTransform=[];for(var i in t)s=t[i],r=s(n),n!==r&&(n=r,e.k
eyframeNamesToTransform.push(i))}else{for(var o=0;o<e.keyframeNamesToTransform.l
ength;++o)s=t[e.keyframeNamesToTransform[o]],n=s(n);r=n}}e.cssText=r},propertyDa
taFromStyles:function(r,s){var i={},o=this,a=[];return n.forActiveRulesInStyles(
r,function(n){n.propertyInfo||o.decorateRule(n);var r=n.transformedSelector||n.p
arsedSelector;s&&n.propertyInfo.properties&&r&&t.call(s,r)&&(o.collectProperties
(n,i),e(n.index,a))}),{properties:i,key:a}},_rootSelector:/:root|:host\s*>\s*\*/
,_checkRoot:function(e,t){return Boolean(t.match(this._rootSelector))||"html"===
e&&t.indexOf("html")>-1},whenHostOrRootRule:function(e,t,n,s){if(t.propertyInfo|
|self.decorateRule(t),t.propertyInfo.properties){var o=e.is?r._calcHostScope(e.i
s,e.extends):"html",a=t.parsedSelector,l=this._checkRoot(o,a),c=!l&&0===a.indexO
f(":host"),h=e.__cssBuild||n.__cssBuild;if("shady"===h&&(l=a===o+" > *."+o||a.in
dexOf("html")>-1,c=!l&&0===a.indexOf(o)),l||c){var u=o;c&&(i.useNativeShadow&&!t
.transformedSelector&&(t.transformedSelector=r._transformRuleCss(t,r._transformC
omplexSelector,e.is,o)),u=t.transformedSelector||t.parsedSelector),l&&"html"===o
&&(u=t.transformedSelector||t.parsedSelector),s({selector:u,isHost:c,isRoot:l})}
}},hostAndRootPropertiesForScope:function(e){var r={},s={},i=this;return n.forAc
tiveRulesInStyles(e._styles,function(n,o){i.whenHostOrRootRule(e,n,o,function(o)
{var a=e._element||e;t.call(a,o.selector)&&(o.isHost?i.collectProperties(n,r):i.
collectProperties(n,s))})}),{rootProps:s,hostProps:r}},transformStyles:function(
e,t,n){var s=this,o=r._calcHostScope(e.is,e.extends),a=e.extends?"\\"+o.slice(0,
-1)+"\\]":o,l=new RegExp(this.rx.HOST_PREFIX+a+this.rx.HOST_SUFFIX),c=this._elem
entKeyframeTransforms(e,n);return r.elementStyles(e,function(r){s.applyPropertie
s(r,t),i.useNativeShadow||Polymer.StyleUtil.isKeyframesSelector(r)||!r.cssText||
(s.applyKeyframeTransforms(r,c),s._scopeSelector(r,l,o,e._scopeCssViaAttr,n))})}
,_elementKeyframeTransforms:function(e,t){var n=e._styles._keyframes,r={};if(!i.
useNativeShadow&&n)for(var s=0,o=n[s];s<n.length;o=n[++s])this._scopeKeyframes(o
,t),r[o.keyframesName]=this._keyframesRuleTransformer(o);return r},_keyframesRul
eTransformer:function(e){return function(t){return t.replace(e.keyframesNameRx,e
.transformedKeyframesName)}},_scopeKeyframes:function(e,t){e.keyframesNameRx=new
RegExp(e.keyframesName,"g"),e.transformedKeyframesName=e.keyframesName+"-"+t,e.
transformedSelector=e.transformedSelector||e.selector,e.selector=e.transformedSe
lector.replace(e.keyframesName,e.transformedKeyframesName)},_scopeSelector:funct
ion(e,t,n,s,i){e.transformedSelector=e.transformedSelector||e.selector;for(var o
,a=e.transformedSelector,l=s?"["+r.SCOPE_NAME+"~="+i+"]":"."+i,c=a.split(","),h=
0,u=c.length;h<u&&(o=c[h]);h++)c[h]=o.match(t)?o.replace(n,l):l+" "+o;e.selector
=c.join(",")},applyElementScopeSelector:function(e,t,n,s){var i=s?e.getAttribute
(r.SCOPE_NAME):e.getAttribute("class")||"",o=n?i.replace(n,t):(i?i+" ":"")+this.
XSCOPE_NAME+" "+t;i!==o&&(s?e.setAttribute(r.SCOPE_NAME,o):e.setAttribute("class
",o))},applyElementStyle:function(e,t,r,o){var a=o?o.textContent||"":this.transf
ormStyles(e,t,r),l=e._customStyle;return l&&!i.useNativeShadow&&l!==o&&(l._useCo
unt--,l._useCount<=0&&l.parentNode&&l.parentNode.removeChild(l)),i.useNativeShad
ow?e._customStyle?(e._customStyle.textContent=a,o=e._customStyle):a&&(o=n.applyC
ss(a,r,e.root,e._scopeStyle)):o?o.parentNode||(s&&a.indexOf("@media")>-1&&(o.tex
tContent=a),n.applyStyle(o,null,e._scopeStyle)):a&&(o=n.applyCss(a,r,null,e._sco
peStyle)),o&&(o._useCount=o._useCount||0,e._customStyle!=o&&o._useCount++,e._cus
tomStyle=o),o},mixinCustomStyle:function(e,t){var n;for(var r in t)n=t[r],(n||0=
==n)&&(e[r]=n)},updateNativeStyleProperties:function(e,t){var n=e.__customStyleP
roperties;if(n)for(var r=0;r<n.length;r++)e.style.removeProperty(n[r]);var s=[];
for(var i in t)null!==t[i]&&(e.style.setProperty(i,t[i]),s.push(i));e.__customSt
yleProperties=s},rx:n.rx,XSCOPE_NAME:"x-scope"}}(),function(){Polymer.StyleCache
=function(){this.cache={}},Polymer.StyleCache.prototype={MAX:100,store:function(
e,t,n,r){t.keyValues=n,t.styles=r;var s=this.cache[e]=this.cache[e]||[];s.push(t
),s.length>this.MAX&&s.shift()},retrieve:function(e,t,n){var r=this.cache[e];if(
r)for(var s,i=r.length-1;i>=0;i--)if(s=r[i],n===s.styles&&this._objectsEqual(t,s
.keyValues))return s},clear:function(){this.cache={}},_objectsEqual:function(e,t
){var n,r;for(var s in e)if(n=e[s],r=t[s],!("object"==typeof n&&n?this._objectsS
trictlyEqual(n,r):n===r))return!1;return!Array.isArray(e)||e.length===t.length},
_objectsStrictlyEqual:function(e,t){return this._objectsEqual(e,t)&&this._object
sEqual(t,e)}}}(),Polymer.StyleDefaults=function(){var e=Polymer.StyleProperties,
t=Polymer.StyleCache,n=Polymer.Settings.useNativeCSSProperties,r={_styles:[],_pr
operties:null,customStyle:{},_styleCache:new t,_element:Polymer.DomApi.wrap(docu
ment.documentElement),addStyle:function(e){this._styles.push(e),this._properties
=null},get _styleProperties(){return this._properties||(e.decorateStyles(this._s
tyles,this),this._styles._scopeStyleProperties=null,this._properties=e.hostAndRo
otPropertiesForScope(this).rootProps,e.mixinCustomStyle(this._properties,this.cu
stomStyle),e.reify(this._properties)),this._properties},hasStyleProperties:funct
ion(){return Boolean(this._properties)},_needsStyleProperties:function(){},_comp
uteStyleProperties:function(){return this._styleProperties},updateStyles:functio
n(t){this._properties=null,t&&Polymer.Base.mixin(this.customStyle,t),this._style
Cache.clear();for(var r,s=0;s<this._styles.length;s++)r=this._styles[s],r=r.__im
portElement||r,r._apply();n&&e.updateNativeStyleProperties(document.documentElem
ent,this.customStyle)}};return r}(),function(){"use strict";var e=Polymer.Base.s
erializeValueToAttribute,t=Polymer.StyleProperties,n=Polymer.StyleTransformer,r=
Polymer.StyleDefaults,s=Polymer.Settings.useNativeShadow,i=Polymer.Settings.useN
ativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){i||
(this._ownStylePropertyNames=this._styles&&this._styles.length?t.decorateStyles(
this._styles,this):null); | 3 delete this[t])},_configureProperties:function(e,t){for(var n in e){var r=e[n];i
f(void 0!==r.value){var s=r.value;"function"==typeof s&&(s=s.call(this,this._con
fig)),t[n]=s}}},_distributeConfig:function(e){var t=this._propertyEffects;if(t)f
or(var n in e){var r=t[n];if(r)for(var s,i=0,o=r.length;i<o&&(s=r[i]);i++)if("an
notation"===s.kind){var a=this._nodes[s.effect.index],l=s.effect.propertyName,c=
"attribute"==s.effect.kind,h=a._propertyEffects&&a._propertyEffects[l];if(a._con
figValue&&(h||!c)){var u=n===s.effect.value?e[n]:this._get(s.effect.value,e);u=t
his._computeFinalAnnotationValue(a,l,u,s.effect),c&&(u=a.deserialize(this.serial
ize(u),a._propertyInfo[l].type)),a._configValue(l,u)}}}},_afterClientsReady:func
tion(){this._executeStaticEffects(),this._applyConfig(this._config,this._aboveCo
nfig),this._flushHandlers()},_applyConfig:function(e,t){for(var n in e)void 0===
this[n]&&this.__setProperty(n,e[n],n in t)},_notifyListener:function(e,t){if(!Po
lymer.Bind._isEventBogus(t,t.target)){var n,r;if(t.detail&&(n=t.detail.value,r=t
.detail.path),this._clientsReadied)return e.call(this,t.target,n,r);this._queueH
andler([e,t.target,n,r])}},_queueHandler:function(e){this._handlers.push(e)},_fl
ushHandlers:function(){for(var e,t=this._handlers,n=0,r=t.length;n<r&&(e=t[n]);n
++)e[0].call(this,e[1],e[2],e[3]);this._handlers=[]}})}(),function(){"use strict
";var e=Polymer.Path;Polymer.Base._addFeature({notifyPath:function(e,t,n){var r=
{},s=this._get(e,this,r);1===arguments.length&&(t=s),r.path&&this._notifyPath(r.
path,t,n)},_notifyPath:function(e,t,n){var r=this._propertySetter(e,t);if(r!==t&
&(r===r||t===t))return this._pathEffector(e,t),n||this._notifyPathUp(e,t),!0},_g
etPathParts:function(e){if(Array.isArray(e)){for(var t=[],n=0;n<e.length;n++)for
(var r=e[n].toString().split("."),s=0;s<r.length;s++)t.push(r[s]);return t}retur
n e.toString().split(".")},set:function(e,t,n){var r,s=n||this,i=this._getPathPa
rts(e),o=i[i.length-1];if(i.length>1){for(var a=0;a<i.length-1;a++){var l=i[a];i
f(r&&"#"==l[0]?s=Polymer.Collection.get(r).getItem(l):(s=s[l],r&&parseInt(l,10)=
=l&&(i[a]=Polymer.Collection.get(r).getKey(s))),!s)return;r=Array.isArray(s)?s:n
ull}if(r){var c,h,u=Polymer.Collection.get(r);"#"==o[0]?(h=o,c=u.getItem(h),o=r.
indexOf(c),u.setItem(h,t)):parseInt(o,10)==o&&(c=s[o],h=u.getKey(c),i[a]=h,u.set
Item(h,t))}s[o]=t,n||this._notifyPath(i.join("."),t)}else s[e]=t},get:function(e
,t){return this._get(e,t)},_get:function(e,t,n){for(var r,s=t||this,i=this._getP
athParts(e),o=0;o<i.length;o++){if(!s)return;var a=i[o];r&&"#"==a[0]?s=Polymer.C
ollection.get(r).getItem(a):(s=s[a],n&&r&&parseInt(a,10)==a&&(i[o]=Polymer.Colle
ction.get(r).getKey(s))),r=Array.isArray(s)?s:null}return n&&(n.path=i.join(".")
),s},_pathEffector:function(t,n){var r=e.root(t),s=this._propertyEffects&&this._
propertyEffects[r];if(s)for(var i,o=0;o<s.length&&(i=s[o]);o++){var a=i.pathFn;a
&&a.call(this,t,n,i.effect)}this._boundPaths&&this._notifyBoundPaths(t,n)},_anno
tationPathEffect:function(t,n,r){if(e.matches(r.value,!1,t))Polymer.Bind._annota
tionEffect.call(this,t,n,r);else if(!r.negate&&e.isDescendant(r.value,t)){var s=
this._nodes[r.index];if(s&&s._notifyPath){var i=e.translate(r.value,r.name,t);s.
_notifyPath(i,n,!0)}}},_complexObserverPathEffect:function(t,n,r){e.matches(r.tr
igger.name,r.trigger.wildcard,t)&&Polymer.Bind._complexObserverEffect.call(this,
t,n,r)},_computePathEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wi
ldcard,t)&&Polymer.Bind._computeEffect.call(this,t,n,r)},_annotatedComputationPa
thEffect:function(t,n,r){e.matches(r.trigger.name,r.trigger.wildcard,t)&&Polymer
.Bind._annotatedComputationEffect.call(this,t,n,r)},linkPaths:function(e,t){this
._boundPaths=this._boundPaths||{},t?this._boundPaths[e]=t:this.unlinkPaths(e)},u
nlinkPaths:function(e){this._boundPaths&&delete this._boundPaths[e]},_notifyBoun
dPaths:function(t,n){for(var r in this._boundPaths){var s=this._boundPaths[r];e.
isDescendant(r,t)?this._notifyPath(e.translate(r,s,t),n):e.isDescendant(s,t)&&th
is._notifyPath(e.translate(s,r,t),n)}},_notifyPathUp:function(t,n){var r=e.root(
t),s=Polymer.CaseMap.camelToDashCase(r),i=s+this._EVENT_CHANGED;this.fire(i,{pat
h:t,value:n},{bubbles:!1,_useCache:!0})},_EVENT_CHANGED:"-changed",notifySplices
:function(e,t){var n={},r=this._get(e,this,n);this._notifySplices(r,n.path,t)},_
notifySplices:function(e,t,n){var r={keySplices:Polymer.Collection.applySplices(
e,n),indexSplices:n},s=t+".splices";this._notifyPath(s,r),this._notifyPath(t+".l
ength",e.length),this.__data__[s]={keySplices:null,indexSplices:null}},_notifySp
lice:function(e,t,n,r,s){this._notifySplices(e,t,[{index:n,addedCount:r,removed:
s,object:e,type:"splice"}])},push:function(e){var t={},n=this._get(e,this,t),r=A
rray.prototype.slice.call(arguments,1),s=n.length,i=n.push.apply(n,r);return r.l
ength&&this._notifySplice(n,t.path,s,r.length,[]),i},pop:function(e){var t={},n=
this._get(e,this,t),r=Boolean(n.length),s=Array.prototype.slice.call(arguments,1
),i=n.pop.apply(n,s);return r&&this._notifySplice(n,t.path,n.length,0,[i]),i},sp
lice:function(e,t){var n={},r=this._get(e,this,n);t=t<0?r.length-Math.floor(-t):
Math.floor(t),t||(t=0);var s=Array.prototype.slice.call(arguments,1),i=r.splice.
apply(r,s),o=Math.max(s.length-2,0);return(o||i.length)&&this._notifySplice(r,n.
path,t,o,i),i},shift:function(e){var t={},n=this._get(e,this,t),r=Boolean(n.leng
th),s=Array.prototype.slice.call(arguments,1),i=n.shift.apply(n,s);return r&&thi
s._notifySplice(n,t.path,0,0,[i]),i},unshift:function(e){var t={},n=this._get(e,
this,t),r=Array.prototype.slice.call(arguments,1),s=n.unshift.apply(n,r);return
r.length&&this._notifySplice(n,t.path,0,r.length,[]),s},prepareModelNotifyPath:f
unction(e){this.mixin(e,{fire:Polymer.Base.fire,_getEvent:Polymer.Base._getEvent
,__eventCache:Polymer.Base.__eventCache,notifyPath:Polymer.Base.notifyPath,_get:
Polymer.Base._get,_EVENT_CHANGED:Polymer.Base._EVENT_CHANGED,_notifyPath:Polymer
.Base._notifyPath,_notifyPathUp:Polymer.Base._notifyPathUp,_pathEffector:Polymer
.Base._pathEffector,_annotationPathEffect:Polymer.Base._annotationPathEffect,_co
mplexObserverPathEffect:Polymer.Base._complexObserverPathEffect,_annotatedComput
ationPathEffect:Polymer.Base._annotatedComputationPathEffect,_computePathEffect:
Polymer.Base._computePathEffect,_notifyBoundPaths:Polymer.Base._notifyBoundPaths
,_getPathParts:Polymer.Base._getPathParts})}})}(),Polymer.Base._addFeature({reso
lveUrl:function(e){var t=Polymer.DomModule.import(this.is),n="";if(t){var r=t.ge
tAttribute("assetpath")||"";n=Polymer.ResolveUrl.resolveUrl(r,t.ownerDocument.ba
seURI)}return Polymer.ResolveUrl.resolveUrl(e,n)}}),Polymer.CssParse=function(){
return{parse:function(e){return e=this._clean(e),this._parseCss(this._lex(e),e)}
,_clean:function(e){return e.replace(this._rx.comments,"").replace(this._rx.port
,"")},_lex:function(e){for(var t={start:0,end:e.length},n=t,r=0,s=e.length;r<s;r
++)switch(e[r]){case this.OPEN_BRACE:n.rules||(n.rules=[]);var i=n,o=i.rules[i.r
ules.length-1];n={start:r+1,parent:i,previous:o},i.rules.push(n);break;case this
.CLOSE_BRACE:n.end=r+1,n=n.parent||t}return t},_parseCss:function(e,t){var n=t.s
ubstring(e.start,e.end-1);if(e.parsedCssText=e.cssText=n.trim(),e.parent){var r=
e.previous?e.previous.end:e.parent.start;n=t.substring(r,e.start-1),n=this._expa
ndUnicodeEscapes(n),n=n.replace(this._rx.multipleSpaces," "),n=n.substring(n.las
tIndexOf(";")+1);var s=e.parsedSelector=e.selector=n.trim();e.atRule=0===s.index
Of(this.AT_START),e.atRule?0===s.indexOf(this.MEDIA_START)?e.type=this.types.MED
IA_RULE:s.match(this._rx.keyframesRule)&&(e.type=this.types.KEYFRAMES_RULE,e.key
framesName=e.selector.split(this._rx.multipleSpaces).pop()):0===s.indexOf(this.V
AR_START)?e.type=this.types.MIXIN_RULE:e.type=this.types.STYLE_RULE}var i=e.rule
s;if(i)for(var o,a=0,l=i.length;a<l&&(o=i[a]);a++)this._parseCss(o,t);return e},
_expandUnicodeEscapes:function(e){return e.replace(/\\([0-9a-f]{1,6})\s/gi,funct
ion(){for(var e=arguments[1],t=6-e.length;t--;)e="0"+e;return"\\"+e})},stringify
:function(e,t,n){n=n||"";var r="";if(e.cssText||e.rules){var s=e.rules;if(s&&!th
is._hasMixinRules(s))for(var i,o=0,a=s.length;o<a&&(i=s[o]);o++)r=this.stringify
(i,t,r);else r=t?e.cssText:this.removeCustomProps(e.cssText),r=r.trim(),r&&(r="
"+r+"\n")}return r&&(e.selector&&(n+=e.selector+" "+this.OPEN_BRACE+"\n"),n+=r,
e.selector&&(n+=this.CLOSE_BRACE+"\n\n")),n},_hasMixinRules:function(e){return 0
===e[0].selector.indexOf(this.VAR_START)},removeCustomProps:function(e){return e
=this.removeCustomPropAssignment(e),this.removeCustomPropApply(e)},removeCustomP
ropAssignment:function(e){return e.replace(this._rx.customProp,"").replace(this.
_rx.mixinProp,"")},removeCustomPropApply:function(e){return e.replace(this._rx.m
ixinApply,"").replace(this._rx.varApply,"")},types:{STYLE_RULE:1,KEYFRAMES_RULE:
7,MEDIA_RULE:4,MIXIN_RULE:1e3},OPEN_BRACE:"{",CLOSE_BRACE:"}",_rx:{comments:/\/\
*[^*]*\*+([^\/*][^*]*\*+)*\//gim,port:/@import[^;]*;/gim,customProp:/(?:^[^;\-\s
}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,mixinProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^
{};]*?{[^}]*?}(?:[;\n]|$)?/gim,mixinApply:/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/
gim,varApply:/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,keyframesRule:/^@[^\s]*
keyframes/,multipleSpaces:/\s+/g},VAR_START:"--",MEDIA_START:"@media",AT_START:"
@"}}(),Polymer.StyleUtil=function(){var e=Polymer.Settings;return{NATIVE_VARIABL
ES:Polymer.Settings.useNativeCSSProperties,MODULE_STYLES_SELECTOR:"style, link[r
el=import][type~=css], template",INCLUDE_ATTR:"include",toCssText:function(e,t){
return"string"==typeof e&&(e=this.parser.parse(e)),t&&this.forEachRule(e,t),this
.parser.stringify(e,this.NATIVE_VARIABLES)},forRulesInStyles:function(e,t,n){if(
e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);s++)this.forEachRuleInStyle(r,t,n)},for
ActiveRulesInStyles:function(e,t,n){if(e)for(var r,s=0,i=e.length;s<i&&(r=e[s]);
s++)this.forEachRuleInStyle(r,t,n,!0)},rulesForStyle:function(e){return!e.__cssR
ules&&e.textContent&&(e.__cssRules=this.parser.parse(e.textContent)),e.__cssRule
s},isKeyframesSelector:function(e){return e.parent&&e.parent.type===this.ruleTyp
es.KEYFRAMES_RULE},forEachRuleInStyle:function(e,t,n,r){var s,i,o=this.rulesForS
tyle(e);t&&(s=function(n){t(n,e)}),n&&(i=function(t){n(t,e)}),this.forEachRule(o
,s,i,r)},forEachRule:function(e,t,n,r){if(e){var s=!1;if(r&&e.type===this.ruleTy
pes.MEDIA_RULE){var i=e.selector.match(this.rx.MEDIA_MATCH);i&&(window.matchMedi
a(i[1]).matches||(s=!0))}e.type===this.ruleTypes.STYLE_RULE?t(e):n&&e.type===thi
s.ruleTypes.KEYFRAMES_RULE?n(e):e.type===this.ruleTypes.MIXIN_RULE&&(s=!0);var o
=e.rules;if(o&&!s)for(var a,l=0,c=o.length;l<c&&(a=o[l]);l++)this.forEachRule(a,
t,n,r)}},applyCss:function(e,t,n,r){var s=this.createScopeStyle(e,t);return this
.applyStyle(s,n,r)},applyStyle:function(e,t,n){t=t||document.head;var r=n&&n.nex
tSibling||t.firstChild;return this.__lastHeadApplyNode=e,t.insertBefore(e,r)},cr
eateScopeStyle:function(e,t){var n=document.createElement("style");return t&&n.s
etAttribute("scope",t),n.textContent=e,n},__lastHeadApplyNode:null,applyStylePla
ceHolder:function(e){var t=document.createComment(" Shady DOM styles for "+e+" "
),n=this.__lastHeadApplyNode?this.__lastHeadApplyNode.nextSibling:null,r=documen
t.head;return r.insertBefore(t,n||r.firstChild),this.__lastHeadApplyNode=t,t},cs
sFromModules:function(e,t){for(var n=e.trim().split(" "),r="",s=0;s<n.length;s++
)r+=this.cssFromModule(n[s],t);return r},cssFromModule:function(e,t){var n=Polym
er.DomModule.import(e);return n&&!n._cssText&&(n._cssText=this.cssFromElement(n)
),!n&&t&&console.warn("Could not find style data in module named",e),n&&n._cssTe
xt||""},cssFromElement:function(e){for(var t,n="",r=e.content||e,s=Polymer.TreeA
pi.arrayCopy(r.querySelectorAll(this.MODULE_STYLES_SELECTOR)),i=0;i<s.length;i++
)if(t=s[i],"template"===t.localName)t.hasAttribute("preserve-content")||(n+=this
.cssFromElement(t));else if("style"===t.localName){var o=t.getAttribute(this.INC
LUDE_ATTR);o&&(n+=this.cssFromModules(o,!0)),t=t.__appliedElement||t,t.parentNod
e.removeChild(t),n+=this.resolveCss(t.textContent,e.ownerDocument)}else t.import
&&t.import.body&&(n+=this.resolveCss(t.import.body.textContent,t.import));return
n},isTargetedBuild:function(t){return e.useNativeShadow?"shadow"===t:"shady"===
t},cssBuildTypeForModule:function(e){var t=Polymer.DomModule.import(e);if(t)retu
rn this.getCssBuildType(t)},getCssBuildType:function(e){return e.getAttribute("c
ss-build")},_findMatchingParen:function(e,t){for(var n=0,r=t,s=e.length;r<s;r++)
switch(e[r]){case"(":n++;break;case")":if(0===--n)return r}return-1},processVari
ableAndFallback:function(e,t){var n=e.indexOf("var(");if(n===-1)return t(e,"",""
,"");var r=this._findMatchingParen(e,n+3),s=e.substring(n+4,r),i=e.substring(0,n
),o=this.processVariableAndFallback(e.substring(r+1),t),a=s.indexOf(",");if(a===
-1)return t(i,s.trim(),"",o);var l=s.substring(0,a).trim(),c=s.substring(a+1).tr
im();return t(i,l,c,o)},rx:{VAR_ASSIGN:/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:([^;
{]*)|{([^}]*)})(?:(?=[;\s}])|$)/gi,MIXIN_MATCH:/(?:^|\W+)@apply\s*\(?([^);\n]*)\
)?/gi,VAR_CONSUMED:/(--[\w-]+)\s*([:,;)]|$)/gi,ANIMATION_MATCH:/(animation\s*:)|
(animation-name\s*:)/,MEDIA_MATCH:/@media[^(]*(\([^)]*\))/,IS_VAR:/^--/,BRACKETE
D:/\{[^}]*\}/g,HOST_PREFIX:"(?:^|[^.#[:])",HOST_SUFFIX:"($|[.:[\\s>+~])"},resolv
eCss:Polymer.ResolveUrl.resolveCss,parser:Polymer.CssParse,ruleTypes:Polymer.Css
Parse.types}}(),Polymer.StyleTransformer=function(){var e=Polymer.StyleUtil,t=Po
lymer.Settings,n={dom:function(e,t,n,r){this._transformDom(e,t||"",n,r)},_transf
ormDom:function(e,t,n,r){e.setAttribute&&this.element(e,t,n,r);for(var s=Polymer
.dom(e).childNodes,i=0;i<s.length;i++)this._transformDom(s[i],t,n,r)},element:fu
nction(e,t,n,s){if(n)s?e.removeAttribute(r):e.setAttribute(r,t);else if(t)if(e.c
lassList)s?(e.classList.remove(r),e.classList.remove(t)):(e.classList.add(r),e.c
lassList.add(t));else if(e.getAttribute){var i=e.getAttribute(g);s?i&&e.setAttri
bute(g,i.replace(r,"").replace(t,"")):e.setAttribute(g,(i?i+" ":"")+r+" "+t)}},e
lementStyles:function(n,r){var s,i=n._styles,o="",a=n.__cssBuild,l=t.useNativeSh
adow||"shady"===a;if(l){var h=this;s=function(e){e.selector=h._slottedToContent(
e.selector),e.selector=e.selector.replace(c,":host > *"),r&&r(e)}}for(var u,f=0,
p=i.length;f<p&&(u=i[f]);f++){var _=e.rulesForStyle(u);o+=l?e.toCssText(_,s):thi
s.css(_,n.is,n.extends,r,n._scopeCssViaAttr)+"\n\n"}return o.trim()},css:functio
n(t,n,r,s,i){var o=this._calcHostScope(n,r);n=this._calcElementScope(n,i);var a=
this;return e.toCssText(t,function(e){e.isScoped||(a.rule(e,n,o),e.isScoped=!0),
s&&s(e,n,o)})},_calcElementScope:function(e,t){return e?t?m+e+y:d+e:""},_calcHos
tScope:function(e,t){return t?"[is="+e+"]":e},rule:function(e,t,n){this._transfo
rmRule(e,this._transformComplexSelector,t,n)},_transformRule:function(e,t,n,r){e
.selector=e.transformedSelector=this._transformRuleCss(e,t,n,r)},_transformRuleC
ss:function(t,n,r,s){var o=t.selector.split(i);if(!e.isKeyframesSelector(t))for(
var a,l=0,c=o.length;l<c&&(a=o[l]);l++)o[l]=n.call(this,a,r,s);return o.join(i)}
,_transformComplexSelector:function(e,t,n){var r=!1,s=!1,a=this;return e=e.trim(
),e=this._slottedToContent(e),e=e.replace(c,":host > *"),e=e.replace(P,l+" $1"),
e=e.replace(o,function(e,i,o){if(r)o=o.replace(_," ");else{var l=a._transformCom
poundSelector(o,i,t,n);r=r||l.stop,s=s||l.hostContext,i=l.combinator,o=l.value}r
eturn i+o}),s&&(e=e.replace(f,function(e,t,r,s){return t+r+" "+n+s+i+" "+t+n+r+s
})),e},_transformCompoundSelector:function(e,t,n,r){var s=e.search(_),i=!1;e.ind
exOf(u)>=0?i=!0:e.indexOf(l)>=0?e=this._transformHostSelector(e,r):0!==s&&(e=n?t
his._transformSimpleSelector(e,n):e),e.indexOf(p)>=0&&(t="");var o;return s>=0&&
(e=e.replace(_," "),o=!0),{value:e,combinator:t,stop:o,hostContext:i}},_transfor
mSimpleSelector:function(e,t){var n=e.split(v);return n[0]+=t,n.join(v)},_transf
ormHostSelector:function(e,t){var n=e.match(h),r=n&&n[2].trim()||"";if(r){if(r[0
].match(a))return e.replace(h,function(e,n,r){return t+r});var s=r.split(a)[0];r
eturn s===t?r:S}return e.replace(l,t)},documentRule:function(e){e.selector=e.par
sedSelector,this.normalizeRootSelector(e),t.useNativeShadow||this._transformRule
(e,this._transformDocumentSelector)},normalizeRootSelector:function(e){e.selecto
r=e.selector.replace(c,"html")},_transformDocumentSelector:function(e){return e.
match(_)?this._transformComplexSelector(e,s):this._transformSimpleSelector(e.tri
m(),s)},_slottedToContent:function(e){return e.replace(C,p+"> $1")},SCOPE_NAME:"
style-scope"},r=n.SCOPE_NAME,s=":not(["+r+"]):not(."+r+")",i=",",o=/(^|[\s>+~]+)
((?:\[.+?\]|[^\s>+~=\[])+)/g,a=/[[.:#*]/,l=":host",c=":root",h=/(:host)(?:\(((?:
\([^)(]*\)|[^)(]*)+?)\))/,u=":host-context",f=/(.*)(?::host-context)(?:\(((?:\([
^)(]*\)|[^)(]*)+?)\))(.*)/,p="::content",_=/::content|::shadow|\/deep\//,d=".",m
="["+r+"~=",y="]",v=":",g="class",P=new RegExp("^("+p+")"),S="should_not_match",
C=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/g;return n}(),Polymer.StyleExt
ends=function(){var e=Polymer.StyleUtil;return{hasExtends:function(e){return Boo
lean(e.match(this.rx.EXTEND))},transform:function(t){var n=e.rulesForStyle(t),r=
this;return e.forEachRule(n,function(e){if(r._mapRuleOntoParent(e),e.parent)for(
var t;t=r.rx.EXTEND.exec(e.cssText);){var n=t[1],s=r._findExtendor(n,e);s&&r._ex
tendRule(e,s)}e.cssText=e.cssText.replace(r.rx.EXTEND,"")}),e.toCssText(n,functi
on(e){e.selector.match(r.rx.STRIP)&&(e.cssText="")},!0)},_mapRuleOntoParent:func
tion(e){if(e.parent){for(var t,n=e.parent.map||(e.parent.map={}),r=e.selector.sp
lit(","),s=0;s<r.length;s++)t=r[s],n[t.trim()]=e;return n}},_findExtendor:functi
on(e,t){return t.parent&&t.parent.map&&t.parent.map[e]||this._findExtendor(e,t.p
arent)},_extendRule:function(e,t){e.parent!==t.parent&&this._cloneAndAddRuleToPa
rent(t,e.parent),e.extends=e.extends||[],e.extends.push(t),t.selector=t.selector
.replace(this.rx.STRIP,""),t.selector=(t.selector&&t.selector+",\n")+e.selector,
t.extends&&t.extends.forEach(function(t){this._extendRule(e,t)},this)},_cloneAnd
AddRuleToParent:function(e,t){e=Object.create(e),e.parent=t,e.extends&&(e.extend
s=e.extends.slice()),t.rules.push(e)},rx:{EXTEND:/@extends\(([^)]*)\)\s*?;/gim,S
TRIP:/%[^,]*$/}}}(),Polymer.ApplyShim=function(){"use strict";function e(e,t){e=
e.trim(),m[e]={properties:t,dependants:{}}}function t(e){return e=e.trim(),m[e]}
function n(e,t){var n=_.exec(t);return n&&(t=n[1]?y._getInitialValueForProperty(
e):"apply-shim-inherit"),t}function r(e){for(var t,r,s,i,o=e.split(";"),a={},l=0
;l<o.length;l++)s=o[l],s&&(i=s.split(":"),i.length>1&&(t=i[0].trim(),r=n(t,i.sli
ce(1).join(":")),a[t]=r));return a}function s(e){var t=y.__currentElementProto,n
=t&&t.is;for(var r in e.dependants)r!==n&&(e.dependants[r].__applyShimInvalid=!0
)}function i(n,i,o,a){if(o&&c.processVariableAndFallback(o,function(e,n){n&&t(n)
&&(a="@apply "+n+";")}),!a)return n;var h=l(a),u=n.slice(0,n.indexOf("--")),f=r(
h),p=f,_=t(i),m=_&&_.properties;m?(p=Object.create(m),p=Polymer.Base.mixin(p,f))
:e(i,p);var y,v,g=[],P=!1;for(y in p)v=f[y],void 0===v&&(v="initial"),!m||y in m
||(P=!0),g.push(i+d+y+": "+v);return P&&s(_),_&&(_.properties=p),o&&(u=n+";"+u),
u+g.join("; ")+";"}function o(e,t,n){return"var("+t+",var("+n+"))"}function a(n,
r){n=n.replace(p,"");var s=[],i=t(n);if(i||(e(n,{}),i=t(n)),i){var o=y.__current
ElementProto;o&&(i.dependants[o.is]=o);var a,l,c;for(a in i.properties)c=r&&r[a]
,l=[a,": var(",n,d,a],c&&l.push(",",c),l.push(")"),s.push(l.join(""))}return s.j
oin("; ")}function l(e){for(var t;t=h.exec(e);){var n=t[0],s=t[1],i=t.index,o=i+
n.indexOf("@apply"),l=i+n.length,c=e.slice(0,o),u=e.slice(l),f=r(c),p=a(s,f);e=[
c,p,u].join(""),h.lastIndex=i+p.length}return e}var c=Polymer.StyleUtil,h=c.rx.M
IXIN_MATCH,u=c.rx.VAR_ASSIGN,f=/var\(\s*(--[^,]*),\s*(--[^)]*)\)/g,p=/;\s*/m,_=/
^\s*(initial)|(inherit)\s*$/,d="_-_",m={},y={_measureElement:null,_map:m,_separa
tor:d,transform:function(e,t){this.__currentElementProto=t,c.forRulesInStyles(e,
this._boundFindDefinitions),c.forRulesInStyles(e,this._boundFindApplications),t&
&(t.__applyShimInvalid=!1),this.__currentElementProto=null},_findDefinitions:fun
ction(e){var t=e.parsedCssText;t=t.replace(f,o),t=t.replace(u,i),e.cssText=t,":r
oot"===e.selector&&(e.selector=":host > *")},_findApplications:function(e){e.css
Text=l(e.cssText)},transformRule:function(e){this._findDefinitions(e),this._find
Applications(e)},_getInitialValueForProperty:function(e){return this._measureEle
ment||(this._measureElement=document.createElement("meta"),this._measureElement.
style.all="initial",document.head.appendChild(this._measureElement)),window.getC
omputedStyle(this._measureElement).getPropertyValue(e)}};return y._boundTransfor
mRule=y.transformRule.bind(y),y._boundFindDefinitions=y._findDefinitions.bind(y)
,y._boundFindApplications=y._findApplications.bind(y),y}(),function(){var e=Poly
mer.Base._prepElement,t=Polymer.Settings.useNativeShadow,n=Polymer.StyleUtil,r=P
olymer.StyleTransformer,s=Polymer.StyleExtends,i=Polymer.ApplyShim,o=Polymer.Set
tings;Polymer.Base._addFeature({_prepElement:function(t){this._encapsulateStyle&
&"shady"!==this.__cssBuild&&r.element(t,this.is,this._scopeCssViaAttr),e.call(th
is,t)},_prepStyles:function(){void 0===this._encapsulateStyle&&(this._encapsulat
eStyle=!t),t||(this._scopeStyle=n.applyStylePlaceHolder(this.is)),this.__cssBuil
d=n.cssBuildTypeForModule(this.is)},_prepShimStyles:function(){if(this._template
){var e=n.isTargetedBuild(this.__cssBuild);if(o.useNativeCSSProperties&&"shadow"
===this.__cssBuild&&e)return;this._styles=this._styles||this._collectStyles(),o.
useNativeCSSProperties&&!this.__cssBuild&&i.transform(this._styles,this);var s=o
.useNativeCSSProperties&&e?this._styles.length&&this._styles[0].textContent.trim
():r.elementStyles(this);this._prepStyleProperties(),!this._needsStyleProperties
()&&s&&n.applyCss(s,this.is,t?this._template.content:null,this._scopeStyle)}else
this._styles=[]},_collectStyles:function(){var e=[],t="",r=this.styleModules;if
(r)for(var i,o=0,a=r.length;o<a&&(i=r[o]);o++)t+=n.cssFromModule(i);t+=n.cssFrom
Module(this.is);var l=this._template&&this._template.parentNode;if(!this._templa
te||l&&l.id.toLowerCase()===this.is||(t+=n.cssFromElement(this._template)),t){va
r c=document.createElement("style");c.textContent=t,s.hasExtends(c.textContent)&
&(t=s.transform(c)),e.push(c)}return e},_elementAdd:function(e){this._encapsulat
eStyle&&(e.__styleScoped?e.__styleScoped=!1:r.dom(e,this.is,this._scopeCssViaAtt
r))},_elementRemove:function(e){this._encapsulateStyle&&r.dom(e,this.is,this._sc
opeCssViaAttr,!0)},scopeSubtree:function(e,n){if(!t){var r=this,s=function(e){if
(e.nodeType===Node.ELEMENT_NODE){var t=e.getAttribute("class");e.setAttribute("c
lass",r._scopeElementClass(e,t));for(var n,s=e.querySelectorAll("*"),i=0;i<s.len
gth&&(n=s[i]);i++)t=n.getAttribute("class"),n.setAttribute("class",r._scopeEleme
ntClass(n,t))}};if(s(e),n){var i=new MutationObserver(function(e){for(var t,n=0;
n<e.length&&(t=e[n]);n++)if(t.addedNodes)for(var r=0;r<t.addedNodes.length;r++)s
(t.addedNodes[r])});return i.observe(e,{childList:!0,subtree:!0}),i}}}})}(),Poly
mer.StyleProperties=function(){"use strict";function e(e,t){var n=parseInt(e/32)
,r=1<<e%32;t[n]=(t[n]||0)|r}var t=Polymer.DomApi.matchesSelector,n=Polymer.Style
Util,r=Polymer.StyleTransformer,s=navigator.userAgent.match("Trident"),i=Polymer
.Settings;return{decorateStyles:function(e,t){var s=this,i={},o=[],a=0,l=r._calc
HostScope(t.is,t.extends);n.forRulesInStyles(e,function(e,r){s.decorateRule(e),e
.index=a++,s.whenHostOrRootRule(t,e,r,function(r){if(e.parent.type===n.ruleTypes
.MEDIA_RULE&&(t.__notStyleScopeCacheable=!0),r.isHost){var s=r.selector.split("
").some(function(e){return 0===e.indexOf(l)&&e.length!==l.length});t.__notStyleS
copeCacheable=t.__notStyleScopeCacheable||s}}),s.collectPropertiesInCssText(e.pr
opertyInfo.cssText,i)},function(e){o.push(e)}),e._keyframes=o;var c=[];for(var h
in i)c.push(h);return c},decorateRule:function(e){if(e.propertyInfo)return e.pr
opertyInfo;var t={},n={},r=this.collectProperties(e,n);return r&&(t.properties=n
,e.rules=null),t.cssText=this.collectCssText(e),e.propertyInfo=t,t},collectPrope
rties:function(e,t){var n=e.propertyInfo;if(!n){for(var r,s,i,o=this.rx.VAR_ASSI
GN,a=e.parsedCssText;r=o.exec(a);)s=(r[2]||r[3]).trim(),"inherit"!==s&&(t[r[1].t
rim()]=s),i=!0;return i}if(n.properties)return Polymer.Base.mixin(t,n.properties
),!0},collectCssText:function(e){return this.collectConsumingCssText(e.parsedCss
Text)},collectConsumingCssText:function(e){return e.replace(this.rx.BRACKETED,""
).replace(this.rx.VAR_ASSIGN,"")},collectPropertiesInCssText:function(e,t){for(v
ar n;n=this.rx.VAR_CONSUMED.exec(e);){var r=n[1];":"!==n[2]&&(t[r]=!0)}},reify:f
unction(e){for(var t,n=Object.getOwnPropertyNames(e),r=0;r<n.length;r++)t=n[r],e
[t]=this.valueForProperty(e[t],e)},valueForProperty:function(e,t){if(e)if(e.inde
xOf(";")>=0)e=this.valueForProperties(e,t);else{var r=this,s=function(e,n,s,i){v
ar o=r.valueForProperty(t[n],t);return o&&"initial"!==o?"apply-shim-inherit"===o
&&(o="inherit"):o=r.valueForProperty(t[s]||s,t)||s,e+(o||"")+i};e=n.processVaria
bleAndFallback(e,s)}return e&&e.trim()||""},valueForProperties:function(e,t){for
(var n,r,s=e.split(";"),i=0;i<s.length;i++)if(n=s[i]){if(this.rx.MIXIN_MATCH.las
tIndex=0,r=this.rx.MIXIN_MATCH.exec(n))n=this.valueForProperty(t[r[1]],t);else{v
ar o=n.indexOf(":");if(o!==-1){var a=n.substring(o);a=a.trim(),a=this.valueForPr
operty(a,t)||a,n=n.substring(0,o)+a}}s[i]=n&&n.lastIndexOf(";")===n.length-1?n.s
lice(0,-1):n||""}return s.join(";")},applyProperties:function(e,t){var n="";e.pr
opertyInfo||this.decorateRule(e),e.propertyInfo.cssText&&(n=this.valueForPropert
ies(e.propertyInfo.cssText,t)),e.cssText=n},applyKeyframeTransforms:function(e,t
){var n=e.cssText,r=e.cssText;if(null==e.hasAnimations&&(e.hasAnimations=this.rx
.ANIMATION_MATCH.test(n)),e.hasAnimations){var s;if(null==e.keyframeNamesToTrans
form){e.keyframeNamesToTransform=[];for(var i in t)s=t[i],r=s(n),n!==r&&(n=r,e.k
eyframeNamesToTransform.push(i))}else{for(var o=0;o<e.keyframeNamesToTransform.l
ength;++o)s=t[e.keyframeNamesToTransform[o]],n=s(n);r=n}}e.cssText=r},propertyDa
taFromStyles:function(r,s){var i={},o=this,a=[];return n.forActiveRulesInStyles(
r,function(n){n.propertyInfo||o.decorateRule(n);var r=n.transformedSelector||n.p
arsedSelector;s&&n.propertyInfo.properties&&r&&t.call(s,r)&&(o.collectProperties
(n,i),e(n.index,a))}),{properties:i,key:a}},_rootSelector:/:root|:host\s*>\s*\*/
,_checkRoot:function(e,t){return Boolean(t.match(this._rootSelector))||"html"===
e&&t.indexOf("html")>-1},whenHostOrRootRule:function(e,t,n,s){if(t.propertyInfo|
|self.decorateRule(t),t.propertyInfo.properties){var o=e.is?r._calcHostScope(e.i
s,e.extends):"html",a=t.parsedSelector,l=this._checkRoot(o,a),c=!l&&0===a.indexO
f(":host"),h=e.__cssBuild||n.__cssBuild;if("shady"===h&&(l=a===o+" > *."+o||a.in
dexOf("html")>-1,c=!l&&0===a.indexOf(o)),l||c){var u=o;c&&(i.useNativeShadow&&!t
.transformedSelector&&(t.transformedSelector=r._transformRuleCss(t,r._transformC
omplexSelector,e.is,o)),u=t.transformedSelector||t.parsedSelector),l&&"html"===o
&&(u=t.transformedSelector||t.parsedSelector),s({selector:u,isHost:c,isRoot:l})}
}},hostAndRootPropertiesForScope:function(e){var r={},s={},i=this;return n.forAc
tiveRulesInStyles(e._styles,function(n,o){i.whenHostOrRootRule(e,n,o,function(o)
{var a=e._element||e;t.call(a,o.selector)&&(o.isHost?i.collectProperties(n,r):i.
collectProperties(n,s))})}),{rootProps:s,hostProps:r}},transformStyles:function(
e,t,n){var s=this,o=r._calcHostScope(e.is,e.extends),a=e.extends?"\\"+o.slice(0,
-1)+"\\]":o,l=new RegExp(this.rx.HOST_PREFIX+a+this.rx.HOST_SUFFIX),c=this._elem
entKeyframeTransforms(e,n);return r.elementStyles(e,function(r){s.applyPropertie
s(r,t),i.useNativeShadow||Polymer.StyleUtil.isKeyframesSelector(r)||!r.cssText||
(s.applyKeyframeTransforms(r,c),s._scopeSelector(r,l,o,e._scopeCssViaAttr,n))})}
,_elementKeyframeTransforms:function(e,t){var n=e._styles._keyframes,r={};if(!i.
useNativeShadow&&n)for(var s=0,o=n[s];s<n.length;o=n[++s])this._scopeKeyframes(o
,t),r[o.keyframesName]=this._keyframesRuleTransformer(o);return r},_keyframesRul
eTransformer:function(e){return function(t){return t.replace(e.keyframesNameRx,e
.transformedKeyframesName)}},_scopeKeyframes:function(e,t){e.keyframesNameRx=new
RegExp(e.keyframesName,"g"),e.transformedKeyframesName=e.keyframesName+"-"+t,e.
transformedSelector=e.transformedSelector||e.selector,e.selector=e.transformedSe
lector.replace(e.keyframesName,e.transformedKeyframesName)},_scopeSelector:funct
ion(e,t,n,s,i){e.transformedSelector=e.transformedSelector||e.selector;for(var o
,a=e.transformedSelector,l=s?"["+r.SCOPE_NAME+"~="+i+"]":"."+i,c=a.split(","),h=
0,u=c.length;h<u&&(o=c[h]);h++)c[h]=o.match(t)?o.replace(n,l):l+" "+o;e.selector
=c.join(",")},applyElementScopeSelector:function(e,t,n,s){var i=s?e.getAttribute
(r.SCOPE_NAME):e.getAttribute("class")||"",o=n?i.replace(n,t):(i?i+" ":"")+this.
XSCOPE_NAME+" "+t;i!==o&&(s?e.setAttribute(r.SCOPE_NAME,o):e.setAttribute("class
",o))},applyElementStyle:function(e,t,r,o){var a=o?o.textContent||"":this.transf
ormStyles(e,t,r),l=e._customStyle;return l&&!i.useNativeShadow&&l!==o&&(l._useCo
unt--,l._useCount<=0&&l.parentNode&&l.parentNode.removeChild(l)),i.useNativeShad
ow?e._customStyle?(e._customStyle.textContent=a,o=e._customStyle):a&&(o=n.applyC
ss(a,r,e.root,e._scopeStyle)):o?o.parentNode||(s&&a.indexOf("@media")>-1&&(o.tex
tContent=a),n.applyStyle(o,null,e._scopeStyle)):a&&(o=n.applyCss(a,r,null,e._sco
peStyle)),o&&(o._useCount=o._useCount||0,e._customStyle!=o&&o._useCount++,e._cus
tomStyle=o),o},mixinCustomStyle:function(e,t){var n;for(var r in t)n=t[r],(n||0=
==n)&&(e[r]=n)},updateNativeStyleProperties:function(e,t){var n=e.__customStyleP
roperties;if(n)for(var r=0;r<n.length;r++)e.style.removeProperty(n[r]);var s=[];
for(var i in t)null!==t[i]&&(e.style.setProperty(i,t[i]),s.push(i));e.__customSt
yleProperties=s},rx:n.rx,XSCOPE_NAME:"x-scope"}}(),function(){Polymer.StyleCache
=function(){this.cache={}},Polymer.StyleCache.prototype={MAX:100,store:function(
e,t,n,r){t.keyValues=n,t.styles=r;var s=this.cache[e]=this.cache[e]||[];s.push(t
),s.length>this.MAX&&s.shift()},retrieve:function(e,t,n){var r=this.cache[e];if(
r)for(var s,i=r.length-1;i>=0;i--)if(s=r[i],n===s.styles&&this._objectsEqual(t,s
.keyValues))return s},clear:function(){this.cache={}},_objectsEqual:function(e,t
){var n,r;for(var s in e)if(n=e[s],r=t[s],!("object"==typeof n&&n?this._objectsS
trictlyEqual(n,r):n===r))return!1;return!Array.isArray(e)||e.length===t.length},
_objectsStrictlyEqual:function(e,t){return this._objectsEqual(e,t)&&this._object
sEqual(t,e)}}}(),Polymer.StyleDefaults=function(){var e=Polymer.StyleProperties,
t=Polymer.StyleCache,n=Polymer.Settings.useNativeCSSProperties,r={_styles:[],_pr
operties:null,customStyle:{},_styleCache:new t,_element:Polymer.DomApi.wrap(docu
ment.documentElement),addStyle:function(e){this._styles.push(e),this._properties
=null},get _styleProperties(){return this._properties||(e.decorateStyles(this._s
tyles,this),this._styles._scopeStyleProperties=null,this._properties=e.hostAndRo
otPropertiesForScope(this).rootProps,e.mixinCustomStyle(this._properties,this.cu
stomStyle),e.reify(this._properties)),this._properties},hasStyleProperties:funct
ion(){return Boolean(this._properties)},_needsStyleProperties:function(){},_comp
uteStyleProperties:function(){return this._styleProperties},updateStyles:functio
n(t){this._properties=null,t&&Polymer.Base.mixin(this.customStyle,t),this._style
Cache.clear();for(var r,s=0;s<this._styles.length;s++)r=this._styles[s],r=r.__im
portElement||r,r._apply();n&&e.updateNativeStyleProperties(document.documentElem
ent,this.customStyle)}};return r}(),function(){"use strict";var e=Polymer.Base.s
erializeValueToAttribute,t=Polymer.StyleProperties,n=Polymer.StyleTransformer,r=
Polymer.StyleDefaults,s=Polymer.Settings.useNativeShadow,i=Polymer.Settings.useN
ativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){i||
(this._ownStylePropertyNames=this._styles&&this._styles.length?t.decorateStyles(
this._styles,this):null); |
| 4 },customStyle:null,getComputedStyleValue:function(e){return!i&&this._styleProper
ties&&this._styleProperties[e]||getComputedStyle(this).getPropertyValue(e)},_set
upStyleProperties:function(){this.customStyle={},this._styleCache=null,this._sty
leProperties=null,this._scopeSelector=null,this._ownStyleProperties=null,this._c
ustomStyle=null},_needsStyleProperties:function(){return Boolean(!i&&this._ownSt
ylePropertyNames&&this._ownStylePropertyNames.length)},_validateApplyShim:functi
on(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this._
_proto__);var e=n.elementStyles(this);if(s){var t=this._template.content.querySe
lector("style");t&&(t.textContent=e)}else{var r=this._scopeStyle&&this._scopeSty
le.nextSibling;r&&(r.textContent=e)}}},_beforeAttached:function(){this._scopeSel
ector&&!this.__stylePropertiesInvalid||!this._needsStyleProperties()||(this.__st
ylePropertiesInvalid=!1,this._updateStyleProperties())},_findStyleHost:function(
){for(var e,t=this;e=Polymer.dom(t).getOwnerRoot();){if(Polymer.isInstance(e.hos
t))return e.host;t=e.host}return r},_updateStyleProperties:function(){var e,n=th
is._findStyleHost();n._styleProperties||n._computeStyleProperties(),n._styleCach
e||(n._styleCache=new Polymer.StyleCache);var r=t.propertyDataFromStyles(n._styl
es,this),i=!this.__notStyleScopeCacheable;i&&(r.key.customStyle=this.customStyle
,e=n._styleCache.retrieve(this.is,r.key,this._styles));var a=Boolean(e);a?this._
styleProperties=e._styleProperties:this._computeStyleProperties(r.properties),th
is._computeOwnStyleProperties(),a||(e=o.retrieve(this.is,this._ownStylePropertie
s,this._styles));var l=Boolean(e)&&!a,c=this._applyStyleProperties(e);a||(c=c&&s
?c.cloneNode(!0):c,e={style:c,_scopeSelector:this._scopeSelector,_stylePropertie
s:this._styleProperties},i&&(r.key.customStyle={},this.mixin(r.key.customStyle,t
his.customStyle),n._styleCache.store(this.is,e,r.key,this._styles)),l||o.store(t
his.is,Object.create(e),this._ownStyleProperties,this._styles))},_computeStylePr
operties:function(e){var n=this._findStyleHost();n._styleProperties||n._computeS
tyleProperties();var r=Object.create(n._styleProperties),s=t.hostAndRootProperti
esForScope(this);this.mixin(r,s.hostProps),e=e||t.propertyDataFromStyles(n._styl
es,this).properties,this.mixin(r,e),this.mixin(r,s.rootProps),t.mixinCustomStyle
(r,this.customStyle),t.reify(r),this._styleProperties=r},_computeOwnStylePropert
ies:function(){for(var e,t={},n=0;n<this._ownStylePropertyNames.length;n++)e=thi
s._ownStylePropertyNames[n],t[e]=this._styleProperties[e];this._ownStyleProperti
es=t},_scopeCount:0,_applyStyleProperties:function(e){var n=this._scopeSelector;
this._scopeSelector=e?e._scopeSelector:this.is+"-"+this.__proto__._scopeCount++;
var r=t.applyElementStyle(this,this._styleProperties,this._scopeSelector,e&&e.st
yle);return s||t.applyElementScopeSelector(this,this._scopeSelector,n,this._scop
eCssViaAttr),r},serializeValueToAttribute:function(t,n,r){if(r=r||this,"class"==
=n&&!s){var i=r===this?this.domHost||this.dataHost:this;i&&(t=i._scopeElementCla
ss(r,t))}r=this.shadyRoot&&this.shadyRoot._hasDistributed?Polymer.dom(r):r,e.cal
l(this,t,n,r)},_scopeElementClass:function(e,t){return s||this._scopeCssViaAttr|
|(t=(t?t+" ":"")+a+" "+this.is+(e._scopeSelector?" "+l+" "+e._scopeSelector:""))
,t},updateStyles:function(e){e&&this.mixin(this.customStyle,e),i?t.updateNativeS
tyleProperties(this,this.customStyle):(this.isAttached?this._needsStylePropertie
s()?this._updateStyleProperties():this._styleProperties=null:this.__stylePropert
iesInvalid=!0,this._styleCache&&this._styleCache.clear(),this._updateRootStyles(
))},_updateRootStyles:function(e){e=e||this.root;for(var t,n=Polymer.dom(e)._que
ry(function(e){return e.shadyRoot||e.shadowRoot}),r=0,s=n.length;r<s&&(t=n[r]);r
++)t.updateStyles&&t.updateStyles()}}),Polymer.updateStyles=function(e){r.update
Styles(e),Polymer.Base._updateRootStyles(document)};var o=new Polymer.StyleCache
;Polymer.customStyleCache=o;var a=n.SCOPE_NAME,l=t.XSCOPE_NAME}(),Polymer.Base._
addFeature({_registerFeatures:function(){this._prepIs(),this._prepConstructor(),
this._prepStyles()},_finishRegisterFeatures:function(){this._prepTemplate(),this
._prepShimStyles(),this._prepAnnotations(),this._prepEffects(),this._prepBehavio
rs(),this._prepPropertyInfo(),this._prepBindings(),this._prepShady()},_prepBehav
ior:function(e){this._addPropertyEffects(e.properties),this._addComplexObserverE
ffects(e.observers),this._addHostAttributes(e.hostAttributes)},_initFeatures:fun
ction(){this._setupGestures(),this._setupConfigure(),this._setupStyleProperties(
),this._setupDebouncers(),this._setupShady(),this._registerHost(),this._template
&&(this._validateApplyShim(),this._poolContent(),this._beginHosting(),this._stam
pTemplate(),this._endHosting(),this._marshalAnnotationReferences()),this._marsha
lInstanceEffects(),this._marshalBehaviors(),this._marshalHostAttributes(),this._
marshalAttributes(),this._tryReady()},_marshalBehavior:function(e){e.listeners&&
this._listenListeners(e.listeners)}}),function(){var e,t=Polymer.StyleProperties
,n=Polymer.StyleUtil,r=Polymer.CssParse,s=Polymer.StyleDefaults,i=Polymer.StyleT
ransformer,o=Polymer.ApplyShim,a=Polymer.Debounce,l=Polymer.Settings;Polymer({is
:"custom-style",extends:"style",_template:null,properties:{include:String},ready
:function(){this.__appliedElement=this.__appliedElement||this,this.__cssBuild=n.
getCssBuildType(this),this.__appliedElement!==this&&(this.__appliedElement.__css
Build=this.__cssBuild),this._tryApply()},attached:function(){this._tryApply()},_
tryApply:function(){if(!this._appliesToDocument&&this.parentNode&&"dom-module"!=
=this.parentNode.localName){this._appliesToDocument=!0;var e=this.__appliedEleme
nt;if(l.useNativeCSSProperties||(this.__needsUpdateStyles=s.hasStyleProperties()
,s.addStyle(e)),e.textContent||this.include)this._apply(!0);else{var t=this,n=ne
w MutationObserver(function(){n.disconnect(),t._apply(!0)});n.observe(e,{childLi
st:!0})}}},_updateStyles:function(){Polymer.updateStyles()},_apply:function(e){v
ar t=this.__appliedElement;if(this.include&&(t.textContent=n.cssFromModules(this
.include,!0)+t.textContent),t.textContent){var r=this.__cssBuild,s=n.isTargetedB
uild(r);if(!l.useNativeCSSProperties||!s){var a=n.rulesForStyle(t);if(s||(n.forE
achRule(a,function(e){i.documentRule(e)}),l.useNativeCSSProperties&&!r&&o.transf
orm([t])),l.useNativeCSSProperties)t.textContent=n.toCssText(a);else{var c=this,
h=function(){c._flushCustomProperties()};e?Polymer.RenderStatus.whenReady(h):h()
}}}},_flushCustomProperties:function(){this.__needsUpdateStyles?(this.__needsUpd
ateStyles=!1,e=a(e,this._updateStyles)):this._applyCustomProperties()},_applyCus
tomProperties:function(){var e=this.__appliedElement;this._computeStylePropertie
s();var s=this._styleProperties,i=n.rulesForStyle(e);i&&(e.textContent=n.toCssTe
xt(i,function(e){var n=e.cssText=e.parsedCssText;e.propertyInfo&&e.propertyInfo.
cssText&&(n=r.removeCustomPropAssignment(n),e.cssText=t.valueForProperties(n,s))
}))}})}(),Polymer.Templatizer={properties:{__hideTemplateChildren__:{observer:"_
showHideChildren"}},_instanceProps:Polymer.nob,_parentPropPrefix:"_parent_",temp
latize:function(e){if(this._templatized=e,e._content||(e._content=e.content),e._
content._ctor)return this.ctor=e._content._ctor,void this._prepParentProperties(
this.ctor.prototype,e);var t=Object.create(Polymer.Base);this._customPrepAnnotat
ions(t,e),this._prepParentProperties(t,e),t._prepEffects(),this._customPrepEffec
ts(t),t._prepBehaviors(),t._prepPropertyInfo(),t._prepBindings(),t._notifyPathUp
=this._notifyPathUpImpl,t._scopeElementClass=this._scopeElementClassImpl,t.liste
n=this._listenImpl,t._showHideChildren=this._showHideChildrenImpl,t.__setPropert
yOrig=this.__setProperty,t.__setProperty=this.__setPropertyImpl;var n=this._cons
tructorImpl,r=function(e,t){n.call(this,e,t)};r.prototype=t,t.constructor=r,e._c
ontent._ctor=r,this.ctor=r},_getRootDataHost:function(){return this.dataHost&&th
is.dataHost._rootDataHost||this.dataHost},_showHideChildrenImpl:function(e){for(
var t=this._children,n=0;n<t.length;n++){var r=t[n];Boolean(e)!=Boolean(r.__hide
TemplateChildren__)&&(r.nodeType===Node.TEXT_NODE?e?(r.__polymerTextContent__=r.
textContent,r.textContent=""):r.textContent=r.__polymerTextContent__:r.style&&(e
?(r.__polymerDisplay__=r.style.display,r.style.display="none"):r.style.display=r
.__polymerDisplay__)),r.__hideTemplateChildren__=e}},__setPropertyImpl:function(
e,t,n,r){r&&r.__hideTemplateChildren__&&"textContent"==e&&(e="__polymerTextConte
nt__"),this.__setPropertyOrig(e,t,n,r)},_debounceTemplate:function(e){Polymer.do
m.addDebouncer(this.debounce("_debounceTemplate",e))},_flushTemplates:function()
{Polymer.dom.flush()},_customPrepEffects:function(e){var t=e._parentProps;for(va
r n in t)e._addPropertyEffect(n,"function",this._createHostPropEffector(n));for(
n in this._instanceProps)e._addPropertyEffect(n,"function",this._createInstanceP
ropEffector(n))},_customPrepAnnotations:function(e,t){e._template=t;var n=t._con
tent;if(!n._notes){var r=e._rootDataHost;r&&(Polymer.Annotations.prepElement=fun
ction(){r._prepElement()}),n._notes=Polymer.Annotations.parseAnnotations(t),Poly
mer.Annotations.prepElement=null,this._processAnnotations(n._notes)}e._notes=n._
notes,e._parentProps=n._parentProps},_prepParentProperties:function(e,t){var n=t
his._parentProps=e._parentProps;if(this._forwardParentProp&&n){var r,s=e._parent
PropProto;if(!s){for(r in this._instanceProps)delete n[r];s=e._parentPropProto=O
bject.create(null),t!=this&&(Polymer.Bind.prepareModel(s),Polymer.Base.prepareMo
delNotifyPath(s));for(r in n){var i=this._parentPropPrefix+r,o=[{kind:"function"
,effect:this._createForwardPropEffector(r),fn:Polymer.Bind._functionEffect},{kin
d:"notify",fn:Polymer.Bind._notifyEffect,effect:{event:Polymer.CaseMap.camelToDa
shCase(i)+"-changed"}}];Polymer.Bind._createAccessors(s,i,o)}}var a=this;t!=this
&&(Polymer.Bind.prepareInstance(t),t._forwardParentProp=function(e,t){a._forward
ParentProp(e,t)}),this._extendTemplate(t,s),t._pathEffector=function(e,t,n){retu
rn a._pathEffectorImpl(e,t,n)}}},_createForwardPropEffector:function(e){return f
unction(t,n){this._forwardParentProp(e,n)}},_createHostPropEffector:function(e){
var t=this._parentPropPrefix;return function(n,r){this.dataHost._templatized[t+e
]=r}},_createInstancePropEffector:function(e){return function(t,n,r,s){s||this.d
ataHost._forwardInstanceProp(this,e,n)}},_extendTemplate:function(e,t){var n=Obj
ect.getOwnPropertyNames(t);t._propertySetter&&(e._propertySetter=t._propertySett
er);for(var r,s=0;s<n.length&&(r=n[s]);s++){var i=e[r],o=Object.getOwnPropertyDe
scriptor(t,r);Object.defineProperty(e,r,o),void 0!==i&&e._propertySetter(r,i)}},
_showHideChildren:function(e){},_forwardInstancePath:function(e,t,n){},_forwardI
nstanceProp:function(e,t,n){},_notifyPathUpImpl:function(e,t){var n=this.dataHos
t,r=Polymer.Path.root(e);n._forwardInstancePath.call(n,this,e,t),r in n._parentP
rops&&n._templatized._notifyPath(n._parentPropPrefix+e,t)},_pathEffectorImpl:fun
ction(e,t,n){if(this._forwardParentPath&&0===e.indexOf(this._parentPropPrefix)){
var r=e.substring(this._parentPropPrefix.length),s=Polymer.Path.root(r);s in thi
s._parentProps&&this._forwardParentPath(r,t)}Polymer.Base._pathEffector.call(thi
s._templatized,e,t,n)},_constructorImpl:function(e,t){this._rootDataHost=t._getR
ootDataHost(),this._setupConfigure(e),this._registerHost(t),this._beginHosting()
,this.root=this.instanceTemplate(this._template),this.root.__noContent=!this._no
tes._hasContent,this.root.__styleScoped=!0,this._endHosting(),this._marshalAnnot
atedNodes(),this._marshalInstanceEffects(),this._marshalAnnotatedListeners();for
(var n=[],r=this.root.firstChild;r;r=r.nextSibling)n.push(r),r._templateInstance
=this;this._children=n,t.__hideTemplateChildren__&&this._showHideChildren(!0),th
is._tryReady()},_listenImpl:function(e,t,n){var r=this,s=this._rootDataHost,i=s.
_createEventHandler(e,t,n),o=function(e){e.model=r,i(e)};s._listen(e,t,o)},_scop
eElementClassImpl:function(e,t){var n=this._rootDataHost;return n?n._scopeElemen
tClass(e,t):t},stamp:function(e){if(e=e||{},this._parentProps){var t=this._templ
atized;for(var n in this._parentProps)void 0===e[n]&&(e[n]=t[this._parentPropPre
fix+n])}return new this.ctor(e,this)},modelForElement:function(e){for(var t;e;)i
f(t=e._templateInstance){if(t.dataHost==this)return t;e=t.dataHost}else e=e.pare
ntNode}},Polymer({is:"dom-template",extends:"template",_template:null,behaviors:
[Polymer.Templatizer],ready:function(){this.templatize(this)}}),Polymer._collect
ions=new WeakMap,Polymer.Collection=function(e){Polymer._collections.set(e,this)
,this.userArray=e,this.store=e.slice(),this.initMap()},Polymer.Collection.protot
ype={constructor:Polymer.Collection,initMap:function(){for(var e=this.omap=new W
eakMap,t=this.pmap={},n=this.store,r=0;r<n.length;r++){var s=n[r];s&&"object"==t
ypeof s?e.set(s,r):t[s]=r}},add:function(e){var t=this.store.push(e)-1;return e&
&"object"==typeof e?this.omap.set(e,t):this.pmap[e]=t,"#"+t},removeKey:function(
e){(e=this._parseKey(e))&&(this._removeFromMap(this.store[e]),delete this.store[
e])},_removeFromMap:function(e){e&&"object"==typeof e?this.omap.delete(e):delete
this.pmap[e]},remove:function(e){var t=this.getKey(e);return this.removeKey(t),
t},getKey:function(e){var t;if(t=e&&"object"==typeof e?this.omap.get(e):this.pma
p[e],void 0!=t)return"#"+t},getKeys:function(){return Object.keys(this.store).ma
p(function(e){return"#"+e})},_parseKey:function(e){if(e&&"#"==e[0])return e.slic
e(1)},setItem:function(e,t){if(e=this._parseKey(e)){var n=this.store[e];n&&this.
_removeFromMap(n),t&&"object"==typeof t?this.omap.set(t,e):this.pmap[t]=e,this.s
tore[e]=t}},getItem:function(e){if(e=this._parseKey(e))return this.store[e]},get
Items:function(){var e=[],t=this.store;for(var n in t)e.push(t[n]);return e},_ap
plySplices:function(e){for(var t,n,r={},s=0;s<e.length&&(n=e[s]);s++){n.addedKey
s=[];for(var i=0;i<n.removed.length;i++)t=this.getKey(n.removed[i]),r[t]=r[t]?nu
ll:-1;for(i=0;i<n.addedCount;i++){var o=this.userArray[n.index+i];t=this.getKey(
o),t=void 0===t?this.add(o):t,r[t]=r[t]?null:1,n.addedKeys.push(t)}}var a=[],l=[
];for(t in r)r[t]<0&&(this.removeKey(t),a.push(t)),r[t]>0&&l.push(t);return[{rem
oved:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collection
s.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e,
t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({
is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array}
,as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Fu
nction,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"}
,observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount
:{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initia
lizeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Num
ber,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatiz
er],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],t
his._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._ren
derChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e<this._instan
ces.length;e++)this._detachInstance(e)},attached:function(){if(this.__isDetached
){this.__isDetached=!1;for(var e=Polymer.dom(Polymer.dom(this).parentNode),t=0;t
<this._instances.length;t++)this._attachInstance(t,e)}},ready:function(){this._i
nstanceProps={__key__:!0},this._instanceProps[this.as]=!0,this._instanceProps[th
is.indexAs]=!0,this.ctor||this.templatize(this)},_sortChanged:function(e){var t=
this._getRootDataHost();this._sortFn=e&&("function"==typeof e?e:function(){retur
n t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceT
emplate(this._render)},_filterChanged:function(e){var t=this._getRootDataHost();
this._filterFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,argumen
ts)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)}
,_computeFrameTime:function(e){return Math.ceil(1e3/e)},_initializeChunking:func
tion(){this.initialCount&&(this._limit=this.initialCount,this._chunkCount=this.i
nitialCount,this._lastChunkTime=performance.now())},_tryRenderChunk:function(){t
his.items&&this._limit<this.items.length&&this.debounce("renderChunk",this._requ
estRenderChunk)},_requestRenderChunk:function(){requestAnimationFrame(this._boun
dRenderChunk)},_renderChunk:function(){var e=performance.now(),t=this._targetFra
meTime/(e-this._lastChunkTime);this._chunkCount=Math.round(this._chunkCount*t)||
1,this._limit+=this._chunkCount,this._lastChunkTime=e,this._debounceTemplate(thi
s._render)},_observeChanged:function(){this._observePaths=this.observe&&this.obs
erve.replace(".*",".").split(" ")},_itemsChanged:function(e){if("items"==e.path)
Array.isArray(this.items)?this.collection=Polymer.Collection.get(this.items):thi
s.items?this._error(this._logf("dom-repeat","expected array for `items`, found",
this.items)):this.collection=null,this._keySplices=[],this._indexSplices=[],this
._needFullRefresh=!0,this._initializeChunking(),this._debounceTemplate(this._ren
der);else if("items.splices"==e.path)this._keySplices=this._keySplices.concat(e.
value.keySplices),this._indexSplices=this._indexSplices.concat(e.value.indexSpli
ces),this._debounceTemplate(this._render);else{var t=e.path.slice(6);this._forwa
rdItemPath(t,e.value),this._checkObservedPaths(t)}},_checkObservedPaths:function
(e){if(this._observePaths){e=e.substring(e.indexOf(".")+1);for(var t=this._obser
vePaths,n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return this._needFullRefresh=!
0,void(this.delay?this.debounce("render",this._render,this.delay):this._debounce
Template(this._render))}},render:function(){this._needFullRefresh=!0,this._debou
nceTemplate(this._render),this._flushTemplates()},_render:function(){this._needF
ullRefresh?(this._applyFullRefresh(),this._needFullRefresh=!1):this._keySplices.
length&&(this._sortFn?this._applySplicesUserSort(this._keySplices):this._filterF
n?this._applyFullRefresh():this._applySplicesArrayOrder(this._indexSplices)),thi
s._keySplices=[],this._indexSplices=[];for(var e=this._keyToInstIdx={},t=this._i
nstances.length-1;t>=0;t--){var n=this._instances[t];n.isPlaceholder&&t<this._li
mit?n=this._insertInstance(t,n.__key__):!n.isPlaceholder&&t>=this._limit&&(n=thi
s._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProper
ty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._insta
nces.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:f
unction(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];v
ar n=this.items;if(n)for(var r=0;r<n.length;r++)e.push(t.getKey(n[r]))}var s=thi
s;for(this._filterFn&&(e=e.filter(function(e){return s._filterFn(t.getItem(e))})
),this._sortFn&&e.sort(function(e,n){return s._sortFn(t.getItem(e),t.getItem(n))
}),r=0;r<e.length;r++){var i=e[r],o=this._instances[r];o?(o.__key__=i,!o.isPlace
holder&&r<this._limit&&o.__setProperty(this.as,t.getItem(i),!0)):r<this._limit?t
his._insertInstance(r,i):this._insertPlaceholder(r,i)}for(var a=this._instances.
length-1;a>=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){r
eturn e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={},
i=0;i<e.length&&(n=e[i]);i++){for(var o=0;o<n.removed.length;o++)t=n.removed[o],
s[t]=s[t]?null:-1;for(o=0;o<n.added.length;o++)t=n.added[o],s[t]=s[t]?null:1}var
a=[],l=[];for(t in s)s[t]===-1&&a.push(this._keyToInstIdx[t]),1===s[t]&&l.push(
t);if(a.length)for(a.sort(this._numericSort),i=a.length-1;i>=0;i--){var c=a[i];v
oid 0!==c&&this._detachAndRemoveInstance(c)}var h=this;if(l.length){this._filter
Fn&&(l=l.filter(function(e){return h._filterFn(r.getItem(e))})),l.sort(function(
e,t){return h._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i<l.length;i+
+)u=this._insertRowUserSort(u,l[i])}},_insertRowUserSort:function(e,t){for(var n
=this.collection,r=n.getItem(t),s=this._instances.length-1,i=-1;e<=s;){var o=e+s
>>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;els
e{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i
},_applySplicesArrayOrder:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++){fo
r(var r=0;r<t.removed.length;r++)this._detachAndRemoveInstance(t.index);for(r=0;
r<t.addedKeys.length;r++)this._insertPlaceholder(t.index+r,t.addedKeys[r])}},_de
tachInstance:function(e){var t=this._instances[e];if(!t.isPlaceholder){for(var n
=0;n<t._children.length;n++){var r=t._children[n];Polymer.dom(t.root).appendChil
d(r)}return t}},_attachInstance:function(e,t){var n=this._instances[e];n.isPlace
holder||t.insertBefore(n.root,this)},_detachAndRemoveInstance:function(e){var t=
this._detachInstance(e);t&&this._pool.push(t),this._instances.splice(e,1)},_inse
rtPlaceholder:function(e,t){this._instances.splice(e,0,{isPlaceholder:!0,__key__
:t})},_stampInstance:function(e,t){var n={__key__:t};return n[this.as]=this.coll
ection.getItem(t),n[this.indexAs]=e,this.stamp(n)},_insertInstance:function(e,t)
{var n=this._pool.pop();n?(n.__setProperty(this.as,this.collection.getItem(t),!0
),n.__setProperty("__key__",t,!0)):n=this._stampInstance(e,t);var r=this._instan
ces[e+1],s=r&&!r.isPlaceholder?r._children[0]:this,i=Polymer.dom(this).parentNod
e;return Polymer.dom(i).insertBefore(n.root,s),this._instances[e]=n,n},_downgrad
eInstance:function(e,t){var n=this._detachInstance(e);return n&&this._pool.push(
n),n={isPlaceholder:!0,__key__:t},this._instances[e]=n,n},_showHideChildren:func
tion(e){for(var t=0;t<this._instances.length;t++)this._instances[t]._showHideChi
ldren(e)},_forwardInstanceProp:function(e,t,n){if(t==this.as){var r;r=this._sort
Fn||this._filterFn?this.items.indexOf(this.collection.getItem(e.__key__)):e[this
.indexAs],this.set("items."+r,n)}},_forwardInstancePath:function(e,t,n){0===t.in
dexOf(this.as+".")&&this._notifyPath("items."+e.__key__+"."+t.slice(this.as.leng
th+1),n)},_forwardParentProp:function(e,t){for(var n,r=this._instances,s=0;s<r.l
ength&&(n=r[s]);s++)n.isPlaceholder||n.__setProperty(e,t,!0)},_forwardParentPath
:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlac
eholder||n._notifyPath(e,t,!0)},_forwardItemPath:function(e,t){if(this._keyToIns
tIdx){var n=e.indexOf("."),r=e.substring(0,n<0?e.length:n),s=this._keyToInstIdx[
r],i=this._instances[s];i&&!i.isPlaceholder&&(n>=0?(e=this.as+"."+e.substring(n+
1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:functi
on(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function
(e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function(
e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array
-selector",_template:null,properties:{items:{type:Array,observer:"clearSelection
"},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object
,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}}
,clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e<this.se
lected.length;e++)this.unlinkPaths("selected."+e);else this.unlinkPaths("selecte
d"),this.unlinkPaths("selectedItem");this.multi?this.selected&&!this.selected.le
ngth||(this.selected=[],this._selectedColl=Polymer.Collection.get(this.selected)
):(this.selected=null,this._selectedColl=null),this.selectedItem=null},isSelecte
d:function(e){return this.multi?void 0!==this._selectedColl.getKey(e):this.selec
ted==e},deselect:function(e){if(this.multi){if(this.isSelected(e)){var t=this._s
electedColl.getKey(e);this.arrayDelete("selected",e),this.unlinkPaths("selected.
"+t)}}else this.selected=null,this.selectedItem=null,this.unlinkPaths("selected"
),this.unlinkPaths("selectedItem")},select:function(e){var t=Polymer.Collection.
get(this.items),n=t.getKey(e);if(this.multi)if(this.isSelected(e))this.toggle&&t
his.deselect(e);else{this.push("selected",e);var r=this._selectedColl.getKey(e);
this.linkPaths("selected."+r,"items."+n)}else this.toggle&&e==this.selected?this
.deselect():(this.selected=e,this.selectedItem=e,this.linkPaths("selected","item
s."+n),this.linkPaths("selectedItem","items."+n))}}),Polymer({is:"dom-if",extend
s:"template",_template:null,properties:{if:{type:Boolean,value:!1,observer:"_que
ueRender"},restamp:{type:Boolean,value:!1,observer:"_queueRender"}},behaviors:[P
olymer.Templatizer],_queueRender:function(){this._debounceTemplate(this._render)
},detached:function(){this.parentNode&&(this.parentNode.nodeType!=Node.DOCUMENT_
FRAGMENT_NODE||Polymer.Settings.hasShadow&&this.parentNode instanceof ShadowRoot
)||this._teardownInstance()},attached:function(){this.if&&this.ctor&&this.async(
this._ensureInstance)},render:function(){this._flushTemplates()},_render:functio
n(){this.if?(this.ctor||this.templatize(this),this._ensureInstance(),this._showH
ideChildren()):this.restamp&&this._teardownInstance(),!this.restamp&&this._insta
nce&&this._showHideChildren(),this.if!=this._lastIf&&(this.fire("dom-change"),th
is._lastIf=this.if)},_ensureInstance:function(){var e=Polymer.dom(this).parentNo
de;if(e){var t=Polymer.dom(e);if(this._instance){var n=this._instance._children;
if(n&&n.length){var r=Polymer.dom(this).previousSibling;if(r!==n[n.length-1])for
(var s,i=0;i<n.length&&(s=n[i]);i++)t.insertBefore(s,this)}}else{this._instance=
this.stamp();var o=this._instance.root;t.insertBefore(o,this)}}},_teardownInstan
ce:function(){if(this._instance){var e=this._instance._children;if(e&&e.length)f
or(var t,n=Polymer.dom(Polymer.dom(e[0]).parentNode),r=0;r<e.length&&(t=e[r]);r+
+)n.removeChild(t);this._instance=null}},_showHideChildren:function(){var e=this
.__hideTemplateChildren__||!this.if;this._instance&&this._instance._showHideChil
dren(e)},_forwardParentProp:function(e,t){this._instance&&this._instance.__setPr
operty(e,t,!0)},_forwardParentPath:function(e,t){this._instance&&this._instance.
_notifyPath(e,t,!0)}}),Polymer({is:"dom-bind",extends:"template",_template:null,
created:function(){var e=this;Polymer.RenderStatus.whenReady(function(){"loading
"==document.readyState?document.addEventListener("DOMContentLoaded",function(){e
._markImportsReady()}):e._markImportsReady()})},_ensureReady:function(){this._re
adied||this._readySelf()},_markImportsReady:function(){this._importsReady=!0,thi
s._ensureReady()},_registerFeatures:function(){this._prepConstructor()},_insertC
hildren:function(){var e=Polymer.dom(Polymer.dom(this).parentNode);e.insertBefor
e(this.root,this)},_removeChildren:function(){if(this._children)for(var e=0;e<th
is._children.length;e++)this.root.appendChild(this._children[e])},_initFeatures:
function(){},_scopeElementClass:function(e,t){return this.dataHost?this.dataHost
._scopeElementClass(e,t):t},_configureInstanceProperties:function(){},_prepConfi
gure:function(){var e={};for(var t in this._propertyEffects)e[t]=this[t];var n=t
his._setupConfigure;this._setupConfigure=function(){n.call(this,e)}},attached:fu
nction(){this._importsReady&&this.render()},detached:function(){this._removeChil
dren()},render:function(){this._ensureReady(),this._children||(this._template=th
is,this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepC
onfigure(),this._prepBindings(),this._prepPropertyInfo(),Polymer.Base._initFeatu
res.call(this),this._children=Polymer.TreeApi.arrayCopyChildNodes(this.root)),th
is._insertChildren(),this.fire("dom-change")}})</script> <script> window.Swarmin
gBehaviors = window.SwarmingBehaviors || {}; | 4 },customStyle:null,getComputedStyleValue:function(e){return!i&&this._styleProper
ties&&this._styleProperties[e]||getComputedStyle(this).getPropertyValue(e)},_set
upStyleProperties:function(){this.customStyle={},this._styleCache=null,this._sty
leProperties=null,this._scopeSelector=null,this._ownStyleProperties=null,this._c
ustomStyle=null},_needsStyleProperties:function(){return Boolean(!i&&this._ownSt
ylePropertyNames&&this._ownStylePropertyNames.length)},_validateApplyShim:functi
on(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this._
_proto__);var e=n.elementStyles(this);if(s){var t=this._template.content.querySe
lector("style");t&&(t.textContent=e)}else{var r=this._scopeStyle&&this._scopeSty
le.nextSibling;r&&(r.textContent=e)}}},_beforeAttached:function(){this._scopeSel
ector&&!this.__stylePropertiesInvalid||!this._needsStyleProperties()||(this.__st
ylePropertiesInvalid=!1,this._updateStyleProperties())},_findStyleHost:function(
){for(var e,t=this;e=Polymer.dom(t).getOwnerRoot();){if(Polymer.isInstance(e.hos
t))return e.host;t=e.host}return r},_updateStyleProperties:function(){var e,n=th
is._findStyleHost();n._styleProperties||n._computeStyleProperties(),n._styleCach
e||(n._styleCache=new Polymer.StyleCache);var r=t.propertyDataFromStyles(n._styl
es,this),i=!this.__notStyleScopeCacheable;i&&(r.key.customStyle=this.customStyle
,e=n._styleCache.retrieve(this.is,r.key,this._styles));var a=Boolean(e);a?this._
styleProperties=e._styleProperties:this._computeStyleProperties(r.properties),th
is._computeOwnStyleProperties(),a||(e=o.retrieve(this.is,this._ownStylePropertie
s,this._styles));var l=Boolean(e)&&!a,c=this._applyStyleProperties(e);a||(c=c&&s
?c.cloneNode(!0):c,e={style:c,_scopeSelector:this._scopeSelector,_stylePropertie
s:this._styleProperties},i&&(r.key.customStyle={},this.mixin(r.key.customStyle,t
his.customStyle),n._styleCache.store(this.is,e,r.key,this._styles)),l||o.store(t
his.is,Object.create(e),this._ownStyleProperties,this._styles))},_computeStylePr
operties:function(e){var n=this._findStyleHost();n._styleProperties||n._computeS
tyleProperties();var r=Object.create(n._styleProperties),s=t.hostAndRootProperti
esForScope(this);this.mixin(r,s.hostProps),e=e||t.propertyDataFromStyles(n._styl
es,this).properties,this.mixin(r,e),this.mixin(r,s.rootProps),t.mixinCustomStyle
(r,this.customStyle),t.reify(r),this._styleProperties=r},_computeOwnStylePropert
ies:function(){for(var e,t={},n=0;n<this._ownStylePropertyNames.length;n++)e=thi
s._ownStylePropertyNames[n],t[e]=this._styleProperties[e];this._ownStyleProperti
es=t},_scopeCount:0,_applyStyleProperties:function(e){var n=this._scopeSelector;
this._scopeSelector=e?e._scopeSelector:this.is+"-"+this.__proto__._scopeCount++;
var r=t.applyElementStyle(this,this._styleProperties,this._scopeSelector,e&&e.st
yle);return s||t.applyElementScopeSelector(this,this._scopeSelector,n,this._scop
eCssViaAttr),r},serializeValueToAttribute:function(t,n,r){if(r=r||this,"class"==
=n&&!s){var i=r===this?this.domHost||this.dataHost:this;i&&(t=i._scopeElementCla
ss(r,t))}r=this.shadyRoot&&this.shadyRoot._hasDistributed?Polymer.dom(r):r,e.cal
l(this,t,n,r)},_scopeElementClass:function(e,t){return s||this._scopeCssViaAttr|
|(t=(t?t+" ":"")+a+" "+this.is+(e._scopeSelector?" "+l+" "+e._scopeSelector:""))
,t},updateStyles:function(e){e&&this.mixin(this.customStyle,e),i?t.updateNativeS
tyleProperties(this,this.customStyle):(this.isAttached?this._needsStylePropertie
s()?this._updateStyleProperties():this._styleProperties=null:this.__stylePropert
iesInvalid=!0,this._styleCache&&this._styleCache.clear(),this._updateRootStyles(
))},_updateRootStyles:function(e){e=e||this.root;for(var t,n=Polymer.dom(e)._que
ry(function(e){return e.shadyRoot||e.shadowRoot}),r=0,s=n.length;r<s&&(t=n[r]);r
++)t.updateStyles&&t.updateStyles()}}),Polymer.updateStyles=function(e){r.update
Styles(e),Polymer.Base._updateRootStyles(document)};var o=new Polymer.StyleCache
;Polymer.customStyleCache=o;var a=n.SCOPE_NAME,l=t.XSCOPE_NAME}(),Polymer.Base._
addFeature({_registerFeatures:function(){this._prepIs(),this._prepConstructor(),
this._prepStyles()},_finishRegisterFeatures:function(){this._prepTemplate(),this
._prepShimStyles(),this._prepAnnotations(),this._prepEffects(),this._prepBehavio
rs(),this._prepPropertyInfo(),this._prepBindings(),this._prepShady()},_prepBehav
ior:function(e){this._addPropertyEffects(e.properties),this._addComplexObserverE
ffects(e.observers),this._addHostAttributes(e.hostAttributes)},_initFeatures:fun
ction(){this._setupGestures(),this._setupConfigure(),this._setupStyleProperties(
),this._setupDebouncers(),this._setupShady(),this._registerHost(),this._template
&&(this._validateApplyShim(),this._poolContent(),this._beginHosting(),this._stam
pTemplate(),this._endHosting(),this._marshalAnnotationReferences()),this._marsha
lInstanceEffects(),this._marshalBehaviors(),this._marshalHostAttributes(),this._
marshalAttributes(),this._tryReady()},_marshalBehavior:function(e){e.listeners&&
this._listenListeners(e.listeners)}}),function(){var e,t=Polymer.StyleProperties
,n=Polymer.StyleUtil,r=Polymer.CssParse,s=Polymer.StyleDefaults,i=Polymer.StyleT
ransformer,o=Polymer.ApplyShim,a=Polymer.Debounce,l=Polymer.Settings;Polymer({is
:"custom-style",extends:"style",_template:null,properties:{include:String},ready
:function(){this.__appliedElement=this.__appliedElement||this,this.__cssBuild=n.
getCssBuildType(this),this.__appliedElement!==this&&(this.__appliedElement.__css
Build=this.__cssBuild),this._tryApply()},attached:function(){this._tryApply()},_
tryApply:function(){if(!this._appliesToDocument&&this.parentNode&&"dom-module"!=
=this.parentNode.localName){this._appliesToDocument=!0;var e=this.__appliedEleme
nt;if(l.useNativeCSSProperties||(this.__needsUpdateStyles=s.hasStyleProperties()
,s.addStyle(e)),e.textContent||this.include)this._apply(!0);else{var t=this,n=ne
w MutationObserver(function(){n.disconnect(),t._apply(!0)});n.observe(e,{childLi
st:!0})}}},_updateStyles:function(){Polymer.updateStyles()},_apply:function(e){v
ar t=this.__appliedElement;if(this.include&&(t.textContent=n.cssFromModules(this
.include,!0)+t.textContent),t.textContent){var r=this.__cssBuild,s=n.isTargetedB
uild(r);if(!l.useNativeCSSProperties||!s){var a=n.rulesForStyle(t);if(s||(n.forE
achRule(a,function(e){i.documentRule(e)}),l.useNativeCSSProperties&&!r&&o.transf
orm([t])),l.useNativeCSSProperties)t.textContent=n.toCssText(a);else{var c=this,
h=function(){c._flushCustomProperties()};e?Polymer.RenderStatus.whenReady(h):h()
}}}},_flushCustomProperties:function(){this.__needsUpdateStyles?(this.__needsUpd
ateStyles=!1,e=a(e,this._updateStyles)):this._applyCustomProperties()},_applyCus
tomProperties:function(){var e=this.__appliedElement;this._computeStylePropertie
s();var s=this._styleProperties,i=n.rulesForStyle(e);i&&(e.textContent=n.toCssTe
xt(i,function(e){var n=e.cssText=e.parsedCssText;e.propertyInfo&&e.propertyInfo.
cssText&&(n=r.removeCustomPropAssignment(n),e.cssText=t.valueForProperties(n,s))
}))}})}(),Polymer.Templatizer={properties:{__hideTemplateChildren__:{observer:"_
showHideChildren"}},_instanceProps:Polymer.nob,_parentPropPrefix:"_parent_",temp
latize:function(e){if(this._templatized=e,e._content||(e._content=e.content),e._
content._ctor)return this.ctor=e._content._ctor,void this._prepParentProperties(
this.ctor.prototype,e);var t=Object.create(Polymer.Base);this._customPrepAnnotat
ions(t,e),this._prepParentProperties(t,e),t._prepEffects(),this._customPrepEffec
ts(t),t._prepBehaviors(),t._prepPropertyInfo(),t._prepBindings(),t._notifyPathUp
=this._notifyPathUpImpl,t._scopeElementClass=this._scopeElementClassImpl,t.liste
n=this._listenImpl,t._showHideChildren=this._showHideChildrenImpl,t.__setPropert
yOrig=this.__setProperty,t.__setProperty=this.__setPropertyImpl;var n=this._cons
tructorImpl,r=function(e,t){n.call(this,e,t)};r.prototype=t,t.constructor=r,e._c
ontent._ctor=r,this.ctor=r},_getRootDataHost:function(){return this.dataHost&&th
is.dataHost._rootDataHost||this.dataHost},_showHideChildrenImpl:function(e){for(
var t=this._children,n=0;n<t.length;n++){var r=t[n];Boolean(e)!=Boolean(r.__hide
TemplateChildren__)&&(r.nodeType===Node.TEXT_NODE?e?(r.__polymerTextContent__=r.
textContent,r.textContent=""):r.textContent=r.__polymerTextContent__:r.style&&(e
?(r.__polymerDisplay__=r.style.display,r.style.display="none"):r.style.display=r
.__polymerDisplay__)),r.__hideTemplateChildren__=e}},__setPropertyImpl:function(
e,t,n,r){r&&r.__hideTemplateChildren__&&"textContent"==e&&(e="__polymerTextConte
nt__"),this.__setPropertyOrig(e,t,n,r)},_debounceTemplate:function(e){Polymer.do
m.addDebouncer(this.debounce("_debounceTemplate",e))},_flushTemplates:function()
{Polymer.dom.flush()},_customPrepEffects:function(e){var t=e._parentProps;for(va
r n in t)e._addPropertyEffect(n,"function",this._createHostPropEffector(n));for(
n in this._instanceProps)e._addPropertyEffect(n,"function",this._createInstanceP
ropEffector(n))},_customPrepAnnotations:function(e,t){e._template=t;var n=t._con
tent;if(!n._notes){var r=e._rootDataHost;r&&(Polymer.Annotations.prepElement=fun
ction(){r._prepElement()}),n._notes=Polymer.Annotations.parseAnnotations(t),Poly
mer.Annotations.prepElement=null,this._processAnnotations(n._notes)}e._notes=n._
notes,e._parentProps=n._parentProps},_prepParentProperties:function(e,t){var n=t
his._parentProps=e._parentProps;if(this._forwardParentProp&&n){var r,s=e._parent
PropProto;if(!s){for(r in this._instanceProps)delete n[r];s=e._parentPropProto=O
bject.create(null),t!=this&&(Polymer.Bind.prepareModel(s),Polymer.Base.prepareMo
delNotifyPath(s));for(r in n){var i=this._parentPropPrefix+r,o=[{kind:"function"
,effect:this._createForwardPropEffector(r),fn:Polymer.Bind._functionEffect},{kin
d:"notify",fn:Polymer.Bind._notifyEffect,effect:{event:Polymer.CaseMap.camelToDa
shCase(i)+"-changed"}}];Polymer.Bind._createAccessors(s,i,o)}}var a=this;t!=this
&&(Polymer.Bind.prepareInstance(t),t._forwardParentProp=function(e,t){a._forward
ParentProp(e,t)}),this._extendTemplate(t,s),t._pathEffector=function(e,t,n){retu
rn a._pathEffectorImpl(e,t,n)}}},_createForwardPropEffector:function(e){return f
unction(t,n){this._forwardParentProp(e,n)}},_createHostPropEffector:function(e){
var t=this._parentPropPrefix;return function(n,r){this.dataHost._templatized[t+e
]=r}},_createInstancePropEffector:function(e){return function(t,n,r,s){s||this.d
ataHost._forwardInstanceProp(this,e,n)}},_extendTemplate:function(e,t){var n=Obj
ect.getOwnPropertyNames(t);t._propertySetter&&(e._propertySetter=t._propertySett
er);for(var r,s=0;s<n.length&&(r=n[s]);s++){var i=e[r],o=Object.getOwnPropertyDe
scriptor(t,r);Object.defineProperty(e,r,o),void 0!==i&&e._propertySetter(r,i)}},
_showHideChildren:function(e){},_forwardInstancePath:function(e,t,n){},_forwardI
nstanceProp:function(e,t,n){},_notifyPathUpImpl:function(e,t){var n=this.dataHos
t,r=Polymer.Path.root(e);n._forwardInstancePath.call(n,this,e,t),r in n._parentP
rops&&n._templatized._notifyPath(n._parentPropPrefix+e,t)},_pathEffectorImpl:fun
ction(e,t,n){if(this._forwardParentPath&&0===e.indexOf(this._parentPropPrefix)){
var r=e.substring(this._parentPropPrefix.length),s=Polymer.Path.root(r);s in thi
s._parentProps&&this._forwardParentPath(r,t)}Polymer.Base._pathEffector.call(thi
s._templatized,e,t,n)},_constructorImpl:function(e,t){this._rootDataHost=t._getR
ootDataHost(),this._setupConfigure(e),this._registerHost(t),this._beginHosting()
,this.root=this.instanceTemplate(this._template),this.root.__noContent=!this._no
tes._hasContent,this.root.__styleScoped=!0,this._endHosting(),this._marshalAnnot
atedNodes(),this._marshalInstanceEffects(),this._marshalAnnotatedListeners();for
(var n=[],r=this.root.firstChild;r;r=r.nextSibling)n.push(r),r._templateInstance
=this;this._children=n,t.__hideTemplateChildren__&&this._showHideChildren(!0),th
is._tryReady()},_listenImpl:function(e,t,n){var r=this,s=this._rootDataHost,i=s.
_createEventHandler(e,t,n),o=function(e){e.model=r,i(e)};s._listen(e,t,o)},_scop
eElementClassImpl:function(e,t){var n=this._rootDataHost;return n?n._scopeElemen
tClass(e,t):t},stamp:function(e){if(e=e||{},this._parentProps){var t=this._templ
atized;for(var n in this._parentProps)void 0===e[n]&&(e[n]=t[this._parentPropPre
fix+n])}return new this.ctor(e,this)},modelForElement:function(e){for(var t;e;)i
f(t=e._templateInstance){if(t.dataHost==this)return t;e=t.dataHost}else e=e.pare
ntNode}},Polymer({is:"dom-template",extends:"template",_template:null,behaviors:
[Polymer.Templatizer],ready:function(){this.templatize(this)}}),Polymer._collect
ions=new WeakMap,Polymer.Collection=function(e){Polymer._collections.set(e,this)
,this.userArray=e,this.store=e.slice(),this.initMap()},Polymer.Collection.protot
ype={constructor:Polymer.Collection,initMap:function(){for(var e=this.omap=new W
eakMap,t=this.pmap={},n=this.store,r=0;r<n.length;r++){var s=n[r];s&&"object"==t
ypeof s?e.set(s,r):t[s]=r}},add:function(e){var t=this.store.push(e)-1;return e&
&"object"==typeof e?this.omap.set(e,t):this.pmap[e]=t,"#"+t},removeKey:function(
e){(e=this._parseKey(e))&&(this._removeFromMap(this.store[e]),delete this.store[
e])},_removeFromMap:function(e){e&&"object"==typeof e?this.omap.delete(e):delete
this.pmap[e]},remove:function(e){var t=this.getKey(e);return this.removeKey(t),
t},getKey:function(e){var t;if(t=e&&"object"==typeof e?this.omap.get(e):this.pma
p[e],void 0!=t)return"#"+t},getKeys:function(){return Object.keys(this.store).ma
p(function(e){return"#"+e})},_parseKey:function(e){if(e&&"#"==e[0])return e.slic
e(1)},setItem:function(e,t){if(e=this._parseKey(e)){var n=this.store[e];n&&this.
_removeFromMap(n),t&&"object"==typeof t?this.omap.set(t,e):this.pmap[t]=e,this.s
tore[e]=t}},getItem:function(e){if(e=this._parseKey(e))return this.store[e]},get
Items:function(){var e=[],t=this.store;for(var n in t)e.push(t[n]);return e},_ap
plySplices:function(e){for(var t,n,r={},s=0;s<e.length&&(n=e[s]);s++){n.addedKey
s=[];for(var i=0;i<n.removed.length;i++)t=this.getKey(n.removed[i]),r[t]=r[t]?nu
ll:-1;for(i=0;i<n.addedCount;i++){var o=this.userArray[n.index+i];t=this.getKey(
o),t=void 0===t?this.add(o):t,r[t]=r[t]?null:1,n.addedKeys.push(t)}}var a=[],l=[
];for(t in r)r[t]<0&&(this.removeKey(t),a.push(t)),r[t]>0&&l.push(t);return[{rem
oved:a,added:l}]}},Polymer.Collection.get=function(e){return Polymer._collection
s.get(e)||new Polymer.Collection(e)},Polymer.Collection.applySplices=function(e,
t){var n=Polymer._collections.get(e);return n?n._applySplices(t):null},Polymer({
is:"dom-repeat",extends:"template",_template:null,properties:{items:{type:Array}
,as:{type:String,value:"item"},indexAs:{type:String,value:"index"},sort:{type:Fu
nction,observer:"_sortChanged"},filter:{type:Function,observer:"_filterChanged"}
,observe:{type:String,observer:"_observeChanged"},delay:Number,renderedItemCount
:{type:Number,notify:!0,readOnly:!0},initialCount:{type:Number,observer:"_initia
lizeChunking"},targetFramerate:{type:Number,value:20},_targetFrameTime:{type:Num
ber,computed:"_computeFrameTime(targetFramerate)"}},behaviors:[Polymer.Templatiz
er],observers:["_itemsChanged(items.*)"],created:function(){this._instances=[],t
his._pool=[],this._limit=1/0;var e=this;this._boundRenderChunk=function(){e._ren
derChunk()}},detached:function(){this.__isDetached=!0;for(var e=0;e<this._instan
ces.length;e++)this._detachInstance(e)},attached:function(){if(this.__isDetached
){this.__isDetached=!1;for(var e=Polymer.dom(Polymer.dom(this).parentNode),t=0;t
<this._instances.length;t++)this._attachInstance(t,e)}},ready:function(){this._i
nstanceProps={__key__:!0},this._instanceProps[this.as]=!0,this._instanceProps[th
is.indexAs]=!0,this.ctor||this.templatize(this)},_sortChanged:function(e){var t=
this._getRootDataHost();this._sortFn=e&&("function"==typeof e?e:function(){retur
n t[e].apply(t,arguments)}),this._needFullRefresh=!0,this.items&&this._debounceT
emplate(this._render)},_filterChanged:function(e){var t=this._getRootDataHost();
this._filterFn=e&&("function"==typeof e?e:function(){return t[e].apply(t,argumen
ts)}),this._needFullRefresh=!0,this.items&&this._debounceTemplate(this._render)}
,_computeFrameTime:function(e){return Math.ceil(1e3/e)},_initializeChunking:func
tion(){this.initialCount&&(this._limit=this.initialCount,this._chunkCount=this.i
nitialCount,this._lastChunkTime=performance.now())},_tryRenderChunk:function(){t
his.items&&this._limit<this.items.length&&this.debounce("renderChunk",this._requ
estRenderChunk)},_requestRenderChunk:function(){requestAnimationFrame(this._boun
dRenderChunk)},_renderChunk:function(){var e=performance.now(),t=this._targetFra
meTime/(e-this._lastChunkTime);this._chunkCount=Math.round(this._chunkCount*t)||
1,this._limit+=this._chunkCount,this._lastChunkTime=e,this._debounceTemplate(thi
s._render)},_observeChanged:function(){this._observePaths=this.observe&&this.obs
erve.replace(".*",".").split(" ")},_itemsChanged:function(e){if("items"==e.path)
Array.isArray(this.items)?this.collection=Polymer.Collection.get(this.items):thi
s.items?this._error(this._logf("dom-repeat","expected array for `items`, found",
this.items)):this.collection=null,this._keySplices=[],this._indexSplices=[],this
._needFullRefresh=!0,this._initializeChunking(),this._debounceTemplate(this._ren
der);else if("items.splices"==e.path)this._keySplices=this._keySplices.concat(e.
value.keySplices),this._indexSplices=this._indexSplices.concat(e.value.indexSpli
ces),this._debounceTemplate(this._render);else{var t=e.path.slice(6);this._forwa
rdItemPath(t,e.value),this._checkObservedPaths(t)}},_checkObservedPaths:function
(e){if(this._observePaths){e=e.substring(e.indexOf(".")+1);for(var t=this._obser
vePaths,n=0;n<t.length;n++)if(0===e.indexOf(t[n]))return this._needFullRefresh=!
0,void(this.delay?this.debounce("render",this._render,this.delay):this._debounce
Template(this._render))}},render:function(){this._needFullRefresh=!0,this._debou
nceTemplate(this._render),this._flushTemplates()},_render:function(){this._needF
ullRefresh?(this._applyFullRefresh(),this._needFullRefresh=!1):this._keySplices.
length&&(this._sortFn?this._applySplicesUserSort(this._keySplices):this._filterF
n?this._applyFullRefresh():this._applySplicesArrayOrder(this._indexSplices)),thi
s._keySplices=[],this._indexSplices=[];for(var e=this._keyToInstIdx={},t=this._i
nstances.length-1;t>=0;t--){var n=this._instances[t];n.isPlaceholder&&t<this._li
mit?n=this._insertInstance(t,n.__key__):!n.isPlaceholder&&t>=this._limit&&(n=thi
s._downgradeInstance(t,n.__key__)),e[n.__key__]=t,n.isPlaceholder||n.__setProper
ty(this.indexAs,t,!0)}this._pool.length=0,this._setRenderedItemCount(this._insta
nces.length),this.fire("dom-change"),this._tryRenderChunk()},_applyFullRefresh:f
unction(){var e,t=this.collection;if(this._sortFn)e=t?t.getKeys():[];else{e=[];v
ar n=this.items;if(n)for(var r=0;r<n.length;r++)e.push(t.getKey(n[r]))}var s=thi
s;for(this._filterFn&&(e=e.filter(function(e){return s._filterFn(t.getItem(e))})
),this._sortFn&&e.sort(function(e,n){return s._sortFn(t.getItem(e),t.getItem(n))
}),r=0;r<e.length;r++){var i=e[r],o=this._instances[r];o?(o.__key__=i,!o.isPlace
holder&&r<this._limit&&o.__setProperty(this.as,t.getItem(i),!0)):r<this._limit?t
his._insertInstance(r,i):this._insertPlaceholder(r,i)}for(var a=this._instances.
length-1;a>=r;a--)this._detachAndRemoveInstance(a)},_numericSort:function(e,t){r
eturn e-t},_applySplicesUserSort:function(e){for(var t,n,r=this.collection,s={},
i=0;i<e.length&&(n=e[i]);i++){for(var o=0;o<n.removed.length;o++)t=n.removed[o],
s[t]=s[t]?null:-1;for(o=0;o<n.added.length;o++)t=n.added[o],s[t]=s[t]?null:1}var
a=[],l=[];for(t in s)s[t]===-1&&a.push(this._keyToInstIdx[t]),1===s[t]&&l.push(
t);if(a.length)for(a.sort(this._numericSort),i=a.length-1;i>=0;i--){var c=a[i];v
oid 0!==c&&this._detachAndRemoveInstance(c)}var h=this;if(l.length){this._filter
Fn&&(l=l.filter(function(e){return h._filterFn(r.getItem(e))})),l.sort(function(
e,t){return h._sortFn(r.getItem(e),r.getItem(t))});var u=0;for(i=0;i<l.length;i+
+)u=this._insertRowUserSort(u,l[i])}},_insertRowUserSort:function(e,t){for(var n
=this.collection,r=n.getItem(t),s=this._instances.length-1,i=-1;e<=s;){var o=e+s
>>1,a=this._instances[o].__key__,l=this._sortFn(n.getItem(a),r);if(l<0)e=o+1;els
e{if(!(l>0)){i=o;break}s=o-1}}return i<0&&(i=s+1),this._insertPlaceholder(i,t),i
},_applySplicesArrayOrder:function(e){for(var t,n=0;n<e.length&&(t=e[n]);n++){fo
r(var r=0;r<t.removed.length;r++)this._detachAndRemoveInstance(t.index);for(r=0;
r<t.addedKeys.length;r++)this._insertPlaceholder(t.index+r,t.addedKeys[r])}},_de
tachInstance:function(e){var t=this._instances[e];if(!t.isPlaceholder){for(var n
=0;n<t._children.length;n++){var r=t._children[n];Polymer.dom(t.root).appendChil
d(r)}return t}},_attachInstance:function(e,t){var n=this._instances[e];n.isPlace
holder||t.insertBefore(n.root,this)},_detachAndRemoveInstance:function(e){var t=
this._detachInstance(e);t&&this._pool.push(t),this._instances.splice(e,1)},_inse
rtPlaceholder:function(e,t){this._instances.splice(e,0,{isPlaceholder:!0,__key__
:t})},_stampInstance:function(e,t){var n={__key__:t};return n[this.as]=this.coll
ection.getItem(t),n[this.indexAs]=e,this.stamp(n)},_insertInstance:function(e,t)
{var n=this._pool.pop();n?(n.__setProperty(this.as,this.collection.getItem(t),!0
),n.__setProperty("__key__",t,!0)):n=this._stampInstance(e,t);var r=this._instan
ces[e+1],s=r&&!r.isPlaceholder?r._children[0]:this,i=Polymer.dom(this).parentNod
e;return Polymer.dom(i).insertBefore(n.root,s),this._instances[e]=n,n},_downgrad
eInstance:function(e,t){var n=this._detachInstance(e);return n&&this._pool.push(
n),n={isPlaceholder:!0,__key__:t},this._instances[e]=n,n},_showHideChildren:func
tion(e){for(var t=0;t<this._instances.length;t++)this._instances[t]._showHideChi
ldren(e)},_forwardInstanceProp:function(e,t,n){if(t==this.as){var r;r=this._sort
Fn||this._filterFn?this.items.indexOf(this.collection.getItem(e.__key__)):e[this
.indexAs],this.set("items."+r,n)}},_forwardInstancePath:function(e,t,n){0===t.in
dexOf(this.as+".")&&this._notifyPath("items."+e.__key__+"."+t.slice(this.as.leng
th+1),n)},_forwardParentProp:function(e,t){for(var n,r=this._instances,s=0;s<r.l
ength&&(n=r[s]);s++)n.isPlaceholder||n.__setProperty(e,t,!0)},_forwardParentPath
:function(e,t){for(var n,r=this._instances,s=0;s<r.length&&(n=r[s]);s++)n.isPlac
eholder||n._notifyPath(e,t,!0)},_forwardItemPath:function(e,t){if(this._keyToIns
tIdx){var n=e.indexOf("."),r=e.substring(0,n<0?e.length:n),s=this._keyToInstIdx[
r],i=this._instances[s];i&&!i.isPlaceholder&&(n>=0?(e=this.as+"."+e.substring(n+
1),i._notifyPath(e,t,!0)):i.__setProperty(this.as,t,!0))}},itemForElement:functi
on(e){var t=this.modelForElement(e);return t&&t[this.as]},keyForElement:function
(e){var t=this.modelForElement(e);return t&&t.__key__},indexForElement:function(
e){var t=this.modelForElement(e);return t&&t[this.indexAs]}}),Polymer({is:"array
-selector",_template:null,properties:{items:{type:Array,observer:"clearSelection
"},multi:{type:Boolean,value:!1,observer:"clearSelection"},selected:{type:Object
,notify:!0},selectedItem:{type:Object,notify:!0},toggle:{type:Boolean,value:!1}}
,clearSelection:function(){if(Array.isArray(this.selected))for(var e=0;e<this.se
lected.length;e++)this.unlinkPaths("selected."+e);else this.unlinkPaths("selecte
d"),this.unlinkPaths("selectedItem");this.multi?this.selected&&!this.selected.le
ngth||(this.selected=[],this._selectedColl=Polymer.Collection.get(this.selected)
):(this.selected=null,this._selectedColl=null),this.selectedItem=null},isSelecte
d:function(e){return this.multi?void 0!==this._selectedColl.getKey(e):this.selec
ted==e},deselect:function(e){if(this.multi){if(this.isSelected(e)){var t=this._s
electedColl.getKey(e);this.arrayDelete("selected",e),this.unlinkPaths("selected.
"+t)}}else this.selected=null,this.selectedItem=null,this.unlinkPaths("selected"
),this.unlinkPaths("selectedItem")},select:function(e){var t=Polymer.Collection.
get(this.items),n=t.getKey(e);if(this.multi)if(this.isSelected(e))this.toggle&&t
his.deselect(e);else{this.push("selected",e);var r=this._selectedColl.getKey(e);
this.linkPaths("selected."+r,"items."+n)}else this.toggle&&e==this.selected?this
.deselect():(this.selected=e,this.selectedItem=e,this.linkPaths("selected","item
s."+n),this.linkPaths("selectedItem","items."+n))}}),Polymer({is:"dom-if",extend
s:"template",_template:null,properties:{if:{type:Boolean,value:!1,observer:"_que
ueRender"},restamp:{type:Boolean,value:!1,observer:"_queueRender"}},behaviors:[P
olymer.Templatizer],_queueRender:function(){this._debounceTemplate(this._render)
},detached:function(){this.parentNode&&(this.parentNode.nodeType!=Node.DOCUMENT_
FRAGMENT_NODE||Polymer.Settings.hasShadow&&this.parentNode instanceof ShadowRoot
)||this._teardownInstance()},attached:function(){this.if&&this.ctor&&this.async(
this._ensureInstance)},render:function(){this._flushTemplates()},_render:functio
n(){this.if?(this.ctor||this.templatize(this),this._ensureInstance(),this._showH
ideChildren()):this.restamp&&this._teardownInstance(),!this.restamp&&this._insta
nce&&this._showHideChildren(),this.if!=this._lastIf&&(this.fire("dom-change"),th
is._lastIf=this.if)},_ensureInstance:function(){var e=Polymer.dom(this).parentNo
de;if(e){var t=Polymer.dom(e);if(this._instance){var n=this._instance._children;
if(n&&n.length){var r=Polymer.dom(this).previousSibling;if(r!==n[n.length-1])for
(var s,i=0;i<n.length&&(s=n[i]);i++)t.insertBefore(s,this)}}else{this._instance=
this.stamp();var o=this._instance.root;t.insertBefore(o,this)}}},_teardownInstan
ce:function(){if(this._instance){var e=this._instance._children;if(e&&e.length)f
or(var t,n=Polymer.dom(Polymer.dom(e[0]).parentNode),r=0;r<e.length&&(t=e[r]);r+
+)n.removeChild(t);this._instance=null}},_showHideChildren:function(){var e=this
.__hideTemplateChildren__||!this.if;this._instance&&this._instance._showHideChil
dren(e)},_forwardParentProp:function(e,t){this._instance&&this._instance.__setPr
operty(e,t,!0)},_forwardParentPath:function(e,t){this._instance&&this._instance.
_notifyPath(e,t,!0)}}),Polymer({is:"dom-bind",extends:"template",_template:null,
created:function(){var e=this;Polymer.RenderStatus.whenReady(function(){"loading
"==document.readyState?document.addEventListener("DOMContentLoaded",function(){e
._markImportsReady()}):e._markImportsReady()})},_ensureReady:function(){this._re
adied||this._readySelf()},_markImportsReady:function(){this._importsReady=!0,thi
s._ensureReady()},_registerFeatures:function(){this._prepConstructor()},_insertC
hildren:function(){var e=Polymer.dom(Polymer.dom(this).parentNode);e.insertBefor
e(this.root,this)},_removeChildren:function(){if(this._children)for(var e=0;e<th
is._children.length;e++)this.root.appendChild(this._children[e])},_initFeatures:
function(){},_scopeElementClass:function(e,t){return this.dataHost?this.dataHost
._scopeElementClass(e,t):t},_configureInstanceProperties:function(){},_prepConfi
gure:function(){var e={};for(var t in this._propertyEffects)e[t]=this[t];var n=t
his._setupConfigure;this._setupConfigure=function(){n.call(this,e)}},attached:fu
nction(){this._importsReady&&this.render()},detached:function(){this._removeChil
dren()},render:function(){this._ensureReady(),this._children||(this._template=th
is,this._prepAnnotations(),this._prepEffects(),this._prepBehaviors(),this._prepC
onfigure(),this._prepBindings(),this._prepPropertyInfo(),Polymer.Base._initFeatu
res.call(this),this._children=Polymer.TreeApi.arrayCopyChildNodes(this.root)),th
is._insertChildren(),this.fire("dom-change")}})</script> <script> window.Swarmin
gBehaviors = window.SwarmingBehaviors || {}; |
| 5 (function(){ | 5 (function(){ |
| 6 // This behavior wraps up all the shared swarming functionality. | 6 // This behavior wraps up all the shared swarming functionality. |
| 7 SwarmingBehaviors.CommonBehavior = { | 7 SwarmingBehaviors.CommonBehavior = { |
| 8 | 8 |
| 9 _botLink: function(bot_id) { | 9 _botLink: function(bot_id) { |
| 10 if (!bot_id) { | 10 if (!bot_id) { |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 sk.errorMessage("Could not get next set of results. Try reloading the
page?", 0); | 343 sk.errorMessage("Could not get next set of results. Try reloading the
page?", 0); |
| 344 this.set("busy", false); | 344 this.set("busy", false); |
| 345 }.bind(this)); | 345 }.bind(this)); |
| 346 }, | 346 }, |
| 347 | 347 |
| 348 _noMore: function(cursor) { | 348 _noMore: function(cursor) { |
| 349 return cursor === END; | 349 return cursor === END; |
| 350 } | 350 } |
| 351 }); | 351 }); |
| 352 })(); </script> </dom-module><script>Polymer({is:"iron-a11y-keys",behaviors:[P
olymer.IronA11yKeysBehavior],properties:{target:{type:Object,observer:"_targetCh
anged"},keys:{type:String,reflectToAttribute:!0,observer:"_keysChanged"}},attach
ed:function(){this.target||(this.target=this.parentNode)},_targetChanged:functio
n(e){this.keyEventTarget=e},_keysChanged:function(){this.removeOwnKeyBindings(),
this.addOwnKeyBinding(this.keys,"_fireKeysPressed")},_fireKeysPressed:function(e
){this.fire("keys-pressed",e.detail,{})}})</script> <script>Polymer({is:"iron-se
lector",behaviors:[Polymer.IronMultiSelectableBehavior]})</script> <script>Polym
er.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:
{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,v
alue:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validato
r"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers
:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehav
iorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){thi
s.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-in
valid")},hasValidator:function(){return null!=this._validator},validate:function
(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:functi
on(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidato
r:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatable
BehaviorMeta.byKey(this.validator)}}</script> <script>Polymer.IronFormElementBeh
avior={properties:{name:{type:String},value:{notify:!0,type:String},required:{ty
pe:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("i
ron-form-element-register")},detached:function(){this._parentForm&&this._parentF
orm.fire("iron-form-element-unregister",{target:this})}}</script> <script>Polyme
r.IronCheckedElementBehaviorImpl={properties:{checked:{type:Boolean,value:!1,ref
lectToAttribute:!0,notify:!0,observer:"_checkedChanged"},toggles:{type:Boolean,v
alue:!0,reflectToAttribute:!0},value:{type:String,value:"on",observer:"_valueCha
nged"}},observers:["_requiredChanged(required)"],created:function(){this._hasIro
nCheckedElementBehavior=!0},_getValidity:function(e){return this.disabled||!this
.required||this.checked},_requiredChanged:function(){this.required?this.setAttri
bute("aria-required","true"):this.removeAttribute("aria-required")},_checkedChan
ged:function(){this.active=this.checked,this.fire("iron-change")},_valueChanged:
function(){void 0!==this.value&&null!==this.value||(this.value="on")}},Polymer.I
ronCheckedElementBehavior=[Polymer.IronFormElementBehavior,Polymer.IronValidatab
leBehavior,Polymer.IronCheckedElementBehaviorImpl]</script> <script>Polymer.Pape
rCheckedElementBehaviorImpl={_checkedChanged:function(){Polymer.IronCheckedEleme
ntBehaviorImpl._checkedChanged.call(this),this.hasRipple()&&(this.checked?this._
ripple.setAttribute("checked",""):this._ripple.removeAttribute("checked"))},_but
tonStateChanged:function(){Polymer.PaperRippleBehavior._buttonStateChanged.call(
this),this.disabled||this.isAttached&&(this.checked=this.active)}},Polymer.Paper
CheckedElementBehavior=[Polymer.PaperInkyFocusBehavior,Polymer.IronCheckedElemen
tBehavior,Polymer.PaperCheckedElementBehaviorImpl]</script> <dom-module id="pape
r-checkbox" assetpath="/res/imp/bower_components/paper-checkbox/"> <template str
ip-whitespace=""> <style>:host{display:inline-block;white-space:nowrap;cursor:po
inter;--calculated-paper-checkbox-size:var(--paper-checkbox-size, 18px);--calcul
ated-paper-checkbox-ink-size:var(--paper-checkbox-ink-size, -1px);@apply(--paper
-font-common-base);line-height:0;-webkit-tap-highlight-color:transparent}:host([
hidden]){display:none!important}:host(:focus){outline:0}.hidden{display:none}#ch
eckboxContainer{display:inline-block;position:relative;width:var(--calculated-pa
per-checkbox-size);height:var(--calculated-paper-checkbox-size);min-width:var(--
calculated-paper-checkbox-size);margin:var(--paper-checkbox-margin,initial);vert
ical-align:var(--paper-checkbox-vertical-align,middle);background-color:var(--pa
per-checkbox-unchecked-background-color,transparent)}#ink{position:absolute;top:
calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-c
heckbox-size))/ 2);left:calc(0px - (var(--calculated-paper-checkbox-ink-size) -
var(--calculated-paper-checkbox-size))/ 2);width:var(--calculated-paper-checkbox
-ink-size);height:var(--calculated-paper-checkbox-ink-size);color:var(--paper-ch
eckbox-unchecked-ink-color,var(--primary-text-color));opacity:.6;pointer-events:
none}:host-context([dir=rtl]) #ink{right:calc(0px - (var(--calculated-paper-chec
kbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:auto}#ink[check
ed]{color:var(--paper-checkbox-checked-ink-color,var(--primary-color))}#checkbox
{position:relative;box-sizing:border-box;height:100%;border:solid 2px;border-col
or:var(--paper-checkbox-unchecked-color,var(--primary-text-color));border-radius
:2px;pointer-events:none;-webkit-transition:background-color 140ms,border-color
140ms;transition:background-color 140ms,border-color 140ms}#checkbox.checked #ch
eckmark{-webkit-animation:checkmark-expand 140ms ease-out forwards;animation:che
ckmark-expand 140ms ease-out forwards}@-webkit-keyframes checkmark-expand{0%{-we
bkit-transform:scale(0,0) rotate(45deg)}100%{-webkit-transform:scale(1,1) rotate
(45deg)}}@keyframes checkmark-expand{0%{transform:scale(0,0) rotate(45deg)}100%{
transform:scale(1,1) rotate(45deg)}}#checkbox.checked{background-color:var(--pap
er-checkbox-checked-color,var(--primary-color));border-color:var(--paper-checkbo
x-checked-color,var(--primary-color))}#checkmark{position:absolute;width:36%;hei
ght:70%;border-style:solid;border-top:none;border-left:none;border-right-width:c
alc(2/15 * var(--calculated-paper-checkbox-size));border-bottom-width:calc(2/15
* var(--calculated-paper-checkbox-size));border-color:var(--paper-checkbox-check
mark-color,#fff);-webkit-transform-origin:97% 86%;transform-origin:97% 86%;box-s
izing:content-box}:host-context([dir=rtl]) #checkmark{-webkit-transform-origin:5
0% 14%;transform-origin:50% 14%}#checkboxLabel{position:relative;display:inline-
block;vertical-align:middle;padding-left:var(--paper-checkbox-label-spacing,8px)
;white-space:normal;line-height:normal;color:var(--paper-checkbox-label-color,va
r(--primary-text-color));@apply(--paper-checkbox-label)}:host([checked]) #checkb
oxLabel{color:var(--paper-checkbox-label-checked-color,var(--paper-checkbox-labe
l-color,var(--primary-text-color)));@apply(--paper-checkbox-label-checked)}:host
-context([dir=rtl]) #checkboxLabel{padding-right:var(--paper-checkbox-label-spac
ing,8px);padding-left:0}#checkboxLabel[hidden]{display:none}:host([disabled]) #c
heckbox{opacity:.5;border-color:var(--paper-checkbox-unchecked-color,var(--prima
ry-text-color))}:host([disabled][checked]) #checkbox{background-color:var(--pape
r-checkbox-unchecked-color,var(--primary-text-color));opacity:.5}:host([disabled
]) #checkboxLabel{opacity:.65}#checkbox.invalid:not(.checked){border-color:var(-
-paper-checkbox-error-color,var(--error-color))}</style> <div id="checkboxContai
ner"> <div id="checkbox" class$="[[_computeCheckboxClass(checked, invalid)]]"> <
div id="checkmark" class$="[[_computeCheckmarkClass(checked)]]"></div> </div> </
div> <div id="checkboxLabel"><content></content></div> </template> <script>Polym
er({is:"paper-checkbox",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttr
ibutes:{role:"checkbox","aria-checked":!1,tabindex:0},properties:{ariaActiveAttr
ibute:{type:String,value:"aria-checked"}},attached:function(){var e=this.getComp
utedStyleValue("--calculated-paper-checkbox-ink-size");if("-1px"===e){var t=pars
eFloat(this.getComputedStyleValue("--calculated-paper-checkbox-size")),a=Math.fl
oor(8/3*t);a%2!==t%2&&a++,this.customStyle["--paper-checkbox-ink-size"]=a+"px",t
his.updateStyles()}},_computeCheckboxClass:function(e,t){var a="";return e&&(a+=
"checked "),t&&(a+="invalid"),a},_computeCheckmarkClass:function(e){return e?"":
"hidden"},_createRipple:function(){return this._rippleContainer=this.$.checkboxC
ontainer,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)}})</script>
</dom-module> <script>Polymer({is:"iron-input",extends:"input",behaviors:[Polym
er.IronValidatableBehavior],properties:{bindValue:{observer:"_bindValueChanged",
type:String},preventInvalidInput:{type:Boolean},allowedPattern:{type:String,obse
rver:"_allowedPatternChanged"},_previousValidInput:{type:String,value:""},_patte
rnAlreadyChecked:{type:Boolean,value:!1}},listeners:{input:"_onInput",keypress:"
_onKeypress"},registered:function(){this._canDispatchEventOnDisabled()||(this._o
rigDispatchEvent=this.dispatchEvent,this.dispatchEvent=this._dispatchEventFirefo
xIE)},created:function(){Polymer.IronA11yAnnouncer.requestAvailability()},_canDi
spatchEventOnDisabled:function(){var e=document.createElement("input"),t=!1;e.di
sabled=!0,e.addEventListener("feature-check-dispatch-event",function(){t=!0});tr
y{e.dispatchEvent(new Event("feature-check-dispatch-event"))}catch(e){}return t}
,_dispatchEventFirefoxIE:function(){var e=this.disabled;this.disabled=!1,this._o
rigDispatchEvent.apply(this,arguments),this.disabled=e},get _patternRegExp(){var
e;if(this.allowedPattern)e=new RegExp(this.allowedPattern);else switch(this.typ
e){case"number":e=/[0-9.,e-]/}return e},ready:function(){this.bindValue=this.val
ue},_bindValueChanged:function(){this.value!==this.bindValue&&(this.value=this.b
indValue||0===this.bindValue||this.bindValue===!1?this.bindValue:""),this.fire("
bind-value-changed",{value:this.bindValue})},_allowedPatternChanged:function(){t
his.preventInvalidInput=!!this.allowedPattern},_onInput:function(){if(this.preve
ntInvalidInput&&!this._patternAlreadyChecked){var e=this._checkPatternValidity()
;e||(this._announceInvalidCharacter("Invalid string of characters not entered.")
,this.value=this._previousValidInput)}this.bindValue=this.value,this._previousVa
lidInput=this.value,this._patternAlreadyChecked=!1},_isPrintable:function(e){var
t=8==e.keyCode||9==e.keyCode||13==e.keyCode||27==e.keyCode,i=19==e.keyCode||20=
=e.keyCode||45==e.keyCode||46==e.keyCode||144==e.keyCode||145==e.keyCode||e.keyC
ode>32&&e.keyCode<41||e.keyCode>111&&e.keyCode<124;return!(t||0==e.charCode&&i)}
,_onKeypress:function(e){if(this.preventInvalidInput||"number"===this.type){var
t=this._patternRegExp;if(t&&!(e.metaKey||e.ctrlKey||e.altKey)){this._patternAlre
adyChecked=!0;var i=String.fromCharCode(e.charCode);this._isPrintable(e)&&!t.tes
t(i)&&(e.preventDefault(),this._announceInvalidCharacter("Invalid character "+i+
" not entered."))}}},_checkPatternValidity:function(){var e=this._patternRegExp;
if(!e)return!0;for(var t=0;t<this.value.length;t++)if(!e.test(this.value[t]))ret
urn!1;return!0},validate:function(){var e=this.checkValidity();return e&&(this.r
equired&&""===this.value?e=!1:this.hasValidator()&&(e=Polymer.IronValidatableBeh
avior.validate.call(this,this.value))),this.invalid=!e,this.fire("iron-input-val
idate"),e},_announceInvalidCharacter:function(e){this.fire("iron-announce",{text
:e})}})</script> <script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.Ne
xtLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImp
l={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:
Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:
{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String
},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:Stri
ng},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alw
aysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},valid
ator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolea
n,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},
maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},n
ame:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,valu
e:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{
type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{ty
pe:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_aria
LabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached
"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:
0},get inputElement(){return this.$.input},get _focusableElement(){return this.i
nputElement},registered:function(){this._typesThatHaveText=["date","datetime","d
atetime-local","month","time","week","file"]},attached:function(){this._updateAr
iaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElem
ent.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t)
{return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.tar
get;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribe
dBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID+
+;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy
,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler
:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focuse
d&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:funct
ion(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttr
ibute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),thi
s._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&thi
s.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElemen
t.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputEleme
nt.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t)
{return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).quer
ySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:
(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ari
aLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEv
ent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged
:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElem
ent,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElem
ent;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.Iro
nControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</scri
pt> <script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attach
ed:function(){this.fire("addon-attached")},update:function(t){}}</script> <dom-m
odule id="paper-input-char-counter" assetpath="/res/imp/bower_components/paper-i
nput/"> <template> <style>:host{display:inline-block;float:right;@apply(--paper-
font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!im
portant}:host-context([dir=rtl]){float:left}</style> <span>[[_charCounterStr]]</
span> </template> </dom-module> <script>Polymer({is:"paper-input-char-counter",b
ehaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:Str
ing,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=
t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(
e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</scr
ipt> <dom-module id="paper-input-container" assetpath="/res/imp/bower_components
/paper-input/"> <template> <style>:host{display:block;padding:8px 0;@apply(--pap
er-input-container)}:host([inline]){display:inline-block}:host([disabled]){point
er-events:none;opacity:.33;@apply(--paper-input-container-disabled)}:host([hidde
n]){display:none!important}.floated-label-placeholder{@apply(--paper-font-captio
n)}.underline{position:relative}.focused-line{@apply(--layout-fit);background:va
r(--paper-input-container-focus-color,--primary-color);height:2px;-webkit-transf
orm-origin:center center;transform-origin:center center;-webkit-transform:scale3
d(0,1,1);transform:scale3d(0,1,1);@apply(--paper-input-container-underline-focus
)}.underline.is-highlighted .focused-line{-webkit-transform:none;transform:none;
-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--pap
er-transition-easing)}.underline.is-invalid .focused-line{background:var(--paper
-input-container-invalid-color,--error-color);-webkit-transform:none;transform:n
one;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(-
-paper-transition-easing)}.unfocused-line{@apply(--layout-fit);background:var(--
paper-input-container-color,--secondary-text-color);height:1px;@apply(--paper-in
put-container-underline)}:host([disabled]) .unfocused-line{border-bottom:1px das
hed;border-color:var(--paper-input-container-color,--secondary-text-color);backg
round:0 0;@apply(--paper-input-container-underline-disabled)}.label-and-input-co
ntainer{@apply(--layout-flex-auto);@apply(--layout-relative);width:100%;max-widt
h:100%}.input-content{@apply(--layout-horizontal);@apply(--layout-center);positi
on:relative}.input-content ::content .paper-input-label,.input-content ::content
label{position:absolute;top:0;right:0;left:0;width:100%;font:inherit;color:var(
--paper-input-container-color,--secondary-text-color);-webkit-transition:-webkit
-transform .25s,width .25s;transition:transform .25s,width .25s;-webkit-transfor
m-origin:left top;transform-origin:left top;@apply(--paper-font-common-nowrap);@
apply(--paper-font-subhead);@apply(--paper-input-container-label);@apply(--paper
-transition-easing)}.input-content.label-is-floating ::content .paper-input-labe
l,.input-content.label-is-floating ::content label{-webkit-transform:translateY(
-75%) scale(.75);transform:translateY(-75%) scale(.75);width:133%;@apply(--paper
-input-container-label-floating)}:host-context([dir=rtl]) .input-content.label-i
s-floating ::content .paper-input-label,:host-context([dir=rtl]) .input-content.
label-is-floating ::content label{width:100%;-webkit-transform-origin:right top;
transform-origin:right top}.input-content.label-is-highlighted ::content .paper-
input-label,.input-content.label-is-highlighted ::content label{color:var(--pape
r-input-container-focus-color,--primary-color);@apply(--paper-input-container-la
bel-focus)}.input-content.is-invalid ::content .paper-input-label,.input-content
.is-invalid ::content label{color:var(--paper-input-container-invalid-color,--er
ror-color)}.input-content.label-is-hidden ::content .paper-input-label,.input-co
ntent.label-is-hidden ::content label{visibility:hidden}.input-content ::content
.paper-input-input,.input-content ::content input,.input-content ::content iron
-autogrow-textarea,.input-content ::content textarea{position:relative;outline:0
;box-shadow:none;padding:0;width:100%;max-width:100%;background:0 0;border:none;
color:var(--paper-input-container-input-color,--primary-text-color);-webkit-appe
arance:none;text-align:inherit;vertical-align:bottom;@apply(--paper-font-subhead
);@apply(--paper-input-container-input)}::content [prefix]{@apply(--paper-font-s
ubhead);@apply(--paper-input-prefix);@apply(--layout-flex-none)}::content [suffi
x]{@apply(--paper-font-subhead);@apply(--paper-input-suffix);@apply(--layout-fle
x-none)}.input-content ::content input{min-width:0}.input-content ::content text
area{resize:none}.add-on-content{position:relative}.add-on-content.is-invalid ::
content *{color:var(--paper-input-container-invalid-color,--error-color)}.add-on
-content.is-highlighted ::content *{color:var(--paper-input-container-focus-colo
r,--primary-color)}</style> <template is="dom-if" if="[[!noLabelFloat]]"> <div c
lass="floated-label-placeholder" aria-hidden="true"> </div> </template> <di
v class$="[[_computeInputContentClass(noLabelFloat,alwaysFloatLabel,focused,inva
lid,_inputHasContent)]]"> <content select="[prefix]" id="prefix"></content> <div
class="label-and-input-container" id="labelAndInputContainer"> <content select=
":not([add-on]):not([prefix]):not([suffix])"></content> </div> <content select="
[suffix]"></content> </div> <div class$="[[_computeUnderlineClass(focused,invali
d)]]"> <div class="unfocused-line"></div> <div class="focused-line"></div> </div
> <div class$="[[_computeAddOnContentClass(focused,invalid)]]"> <content id="add
OnContent" select="[add-on]"></content> </div> </template> </dom-module> <script
>Polymer({is:"paper-input-container",properties:{noLabelFloat:{type:Boolean,valu
e:!1},alwaysFloatLabel:{type:Boolean,value:!1},attrForValue:{type:String,value:"
bind-value"},autoValidate:{type:Boolean,value:!1},invalid:{observer:"_invalidCha
nged",type:Boolean,value:!1},focused:{readOnly:!0,type:Boolean,value:!1,notify:!
0},_addons:{type:Array},_inputHasContent:{type:Boolean,value:!1},_inputSelector:
{type:String,value:"input,textarea,.paper-input-input"},_boundOnFocus:{type:Func
tion,value:function(){return this._onFocus.bind(this)}},_boundOnBlur:{type:Funct
ion,value:function(){return this._onBlur.bind(this)}},_boundOnInput:{type:Functi
on,value:function(){return this._onInput.bind(this)}},_boundValueChanged:{type:F
unction,value:function(){return this._onValueChanged.bind(this)}}},listeners:{"a
ddon-attached":"_onAddonAttached","iron-input-validate":"_onIronInputValidate"},
get _valueChangedEvent(){return this.attrForValue+"-changed"},get _propertyForVa
lue(){return Polymer.CaseMap.dashToCamelCase(this.attrForValue)},get _inputEleme
nt(){return Polymer.dom(this).querySelector(this._inputSelector)},get _inputElem
entValue(){return this._inputElement[this._propertyForValue]||this._inputElement
.value},ready:function(){this._addons||(this._addons=[]),this.addEventListener("
focus",this._boundOnFocus,!0),this.addEventListener("blur",this._boundOnBlur,!0)
},attached:function(){this.attrForValue?this._inputElement.addEventListener(this
._valueChangedEvent,this._boundValueChanged):this.addEventListener("input",this.
_onInput),""!=this._inputElementValue?this._handleValueAndAutoValidate(this._inp
utElement):this._handleValue(this._inputElement)},_onAddonAttached:function(t){t
his._addons||(this._addons=[]);var n=t.target;this._addons.indexOf(n)===-1&&(thi
s._addons.push(n),this.isAttached&&this._handleValue(this._inputElement))},_onFo
cus:function(){this._setFocused(!0)},_onBlur:function(){this._setFocused(!1),thi
s._handleValueAndAutoValidate(this._inputElement)},_onInput:function(t){this._ha
ndleValueAndAutoValidate(t.target)},_onValueChanged:function(t){this._handleValu
eAndAutoValidate(t.target)},_handleValue:function(t){var n=this._inputElementVal
ue;n||0===n||"number"===t.type&&!t.checkValidity()?this._inputHasContent=!0:this
._inputHasContent=!1,this.updateAddons({inputElement:t,value:n,invalid:this.inva
lid})},_handleValueAndAutoValidate:function(t){if(this.autoValidate){var n;n=t.v
alidate?t.validate(this._inputElementValue):t.checkValidity(),this.invalid=!n}th
is._handleValue(t)},_onIronInputValidate:function(t){this.invalid=this._inputEle
ment.invalid},_invalidChanged:function(){this._addons&&this.updateAddons({invali
d:this.invalid})},updateAddons:function(t){for(var n,e=0;n=this._addons[e];e++)n
.update(t)},_computeInputContentClass:function(t,n,e,i,a){var u="input-content";
if(t)a&&(u+=" label-is-hidden");else{var o=this.querySelector("label");n||a?(u+=
" label-is-floating",this.$.labelAndInputContainer.style.position="static",i?u+=
" is-invalid":e&&(u+=" label-is-highlighted")):o&&(this.$.labelAndInputContainer
.style.position="relative")}return u},_computeUnderlineClass:function(t,n){var e
="underline";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e},_computeAddO
nContentClass:function(t,n){var e="add-on-content";return n?e+=" is-invalid":t&&
(e+=" is-highlighted"),e}})</script> <dom-module id="paper-input-error" assetpat
h="/res/imp/bower_components/paper-input/"> <template> <style>:host{display:inli
ne-block;visibility:hidden;color:var(--paper-input-container-invalid-color,--err
or-color);@apply(--paper-font-caption);@apply(--paper-input-error);position:abso
lute;left:0;right:0}:host([invalid]){visibility:visible};</style> <content></con
tent> </template> </dom-module> <script>Polymer({is:"paper-input-error",behavior
s:[Polymer.PaperInputAddonBehavior],properties:{invalid:{readOnly:!0,reflectToAt
tribute:!0,type:Boolean}},update:function(e){this._setInvalid(e.invalid)}})</scr
ipt> <dom-module id="paper-input" assetpath="/res/imp/bower_components/paper-inp
ut/"> <template> <style>:host{display:block}:host([focused]){outline:0}:host([hi
dden]){display:none!important}input::-webkit-input-placeholder{color:var(--paper
-input-container-color,--secondary-text-color)}input:-moz-placeholder{color:var(
--paper-input-container-color,--secondary-text-color)}input::-moz-placeholder{co
lor:var(--paper-input-container-color,--secondary-text-color)}input:-ms-input-pl
aceholder{color:var(--paper-input-container-color,--secondary-text-color)}label{
pointer-events:none}</style> <paper-input-container no-label-float="[[noLabelFlo
at]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholde
r)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[inva
lid]]"> <content select="[prefix]"></content> <label hidden$="[[!label]]" aria-h
idden="true" for="input">[[label]]</label> <input is="iron-input" id="input" ari
a-labelledby$="[[_ariaLabelledBy]]" aria-describedby$="[[_ariaDescribedBy]]" dis
abled$="[[disabled]]" title$="[[title]]" bind-value="{{value}}" invalid="{{inval
id}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowed
Pattern]]" validator="[[validator]]" type$="[[type]]" pattern$="[[pattern]]" req
uired$="[[required]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]
" inputmode$="[[inputmode]]" minlength$="[[minlength]]" maxlength$="[[maxlength]
]" min$="[[min]]" max$="[[max]]" step$="[[step]]" name$="[[name]]" placeholder$=
"[[placeholder]]" readonly$="[[readonly]]" list$="[[list]]" size$="[[size]]" aut
ocapitalize$="[[autocapitalize]]" autocorrect$="[[autocorrect]]" on-change="_onC
hange" tabindex$="[[tabindex]]" autosave$="[[autosave]]" results$="[[results]]"
accept$="[[accept]]" multiple$="[[multiple]]"> <content select="[suffix]"></cont
ent> <template is="dom-if" if="[[errorMessage]]"> <paper-input-error aria-live="
assertive">[[errorMessage]]</paper-input-error> </template> <template is="dom-if
" if="[[charCounter]]"> <paper-input-char-counter></paper-input-char-counter> </
template> </paper-input-container> </template> </dom-module> <script>Polymer({is
:"paper-input",behaviors:[Polymer.IronFormElementBehavior,Polymer.PaperInputBeha
vior]})</script> <dom-module id="query-column-filter-style" assetpath="/res/imp/
common/"> <template> <style>:host{display:block;font-family:sans-serif}#filter{m
argin:0 5px}.container{min-height:120px;width:100%}.item{border-bottom:1px solid
#EEE;max-width:250px;min-height:1em;min-width:100px;padding:.1em .2em;line-heig
ht:1.5em}.header{height:2em;padding:.25em;line-height:2em}.selector{border:1px s
olid #000;margin:0 5px;max-height:200px;min-height:130px;min-width:275px;overflo
w-y:auto}.pointable,.selectable{cursor:pointer}.selectable:hover{background-colo
r:#A6CEE3}.iron-selected{background-color:#1F78B4;color:#fff}.icons{cursor:point
er;height:20px;margin:2px;width:20px;flex-shrink:0}.side-by-side{display:inline-
block;vertical-align:top}.bold{font-weight:700}paper-checkbox{max-height:2em;mar
gin:2px;--paper-checkbox-checked-color:black;--paper-checkbox-checked-ink-color:
black;--paper-checkbox-unchecked-color:black;--paper-checkbox-unchecked-ink-colo
r:black;--paper-checkbox-label-color:black}</style> </template> </dom-module> <s
cript>!function(){var r=":",i=function(r,i){if(!i)return{idx:0,part:""};if(!r)re
turn{idx:-1};i=i.trim().toLocaleLowerCase(),r=r.toLocaleLowerCase();for(var t=i.
split(" "),e=0;e<t.length;e++){var n=r.indexOf(t[e]);if(n!==-1)return{idx:n,part
:t[e]}}return{idx:-1}},t=function(i,t,e){if(!t)return!0;if(!i)return!1;if(i=i.to
LocaleLowerCase(),t=t.trim().toLocaleLowerCase(),t.indexOf(" ")!==-1||t.indexOf(
":")===-1)return!1;var n=t.split(r,1)[0],a=t.substring(n.length+r.length);return
e?i===n:i.startsWith(a)};SwarmingBehaviors.QueryColumnFilter=[SwarmingBehaviors
.CommonBehavior,{properties:{dimensions:{type:Array},primary_map:{type:Object},p
rimary_arr:{type:Array},special_columns:{type:Array,value:function(){return[]}},
filter:{type:Function,computed:"_makeFilter(_filters.*)",notify:!0},FILTER_SEP:{
type:String,value:r},_filters:{type:Array},_limit:{type:Number},_primaryItems:{t
ype:Array,computed:"_primary(_query, primary_map, primary_arr, columns.*)"},_pri
marySelected:{type:String,value:""},_query:{type:String},_secondaryItems:{type:A
rray,computed:"_secondary(_primarySelected, _query, primary_map)"}},_addFilter:f
unction(r){var i=r.model.item;if(!this._cantAddFilter(this._primarySelected,i)){
var t=this._primarySelected+this.FILTER_SEP+i;this.push("_filters",t)}},_removeF
ilter:function(r){var i=r.model.fil;if(!this._cantRemoveFilter(i)){var t=this._f
ilters.indexOf(i);t!==-1&&this.splice("_filters",t,1)}},_cantAddFilter:function(
r,i){if(!r||!i)return!0;var t=r+this.FILTER_SEP+i;return this._filters.indexOf(t
)!==-1},_cantRemoveFilter:function(r){return!r||this._filters.indexOf(r)===-1},_
makeFilter:function(){var r={};this._filters.forEach(function(i){var t=i.indexOf
(this.FILTER_SEP),e=i.slice(0,t),n=i.slice(t+this.FILTER_SEP.length),a=r[e]||[];
a.push(n),r[e]=a}.bind(this));var i=this._filterMap||{};return function(t){var e
=!0;for(primary in r){var n=r[primary],a=i[primary];a||(a=function(r,i){var t=th
is._attribute(r,primary);return t.indexOf(i)!==-1}.bind(this)),a&&n.forEach(func
tion(r){e=e&&a.bind(this)(t,r)}.bind(this))}return e}},_manuallyAddFilter:functi
on(){var r=this._query.trim(),i=r.indexOf(this.FILTER_SEP);if(i===-1)return void
sk.errorMessage('Invalid filter. Should be like "foo:bar"',5e3);var t=r.slice(
0,i),e=r.slice(i+this.FILTER_SEP.length);return swarming.alias.DIMENSIONS_WITH_A
LIASES.indexOf(t)!==-1&&(e=swarming.alias.apply(e,t)),r=t+this.FILTER_SEP+e,this
._filters.indexOf(r)!==-1?void sk.errorMessage('Filter "'+r+'" is already active
',5e3):(this.push("_filters",r),void this.set("_query",""))},_toggleColumn:funct
ion(r){var i=r.model.item;if(!this._cantToggleColumn(i)){if(this._columnState(i)
){var t=this.columns.indexOf(i);return void(t!==-1&&this.splice("columns",t,1))}
this.push("columns",i)}},_cantToggleColumn:function(r){return!1},_columnState:fu
nction(r){return!!r&&this.columns.indexOf(r)!==-1},_primary:function(r,e,n){var
a=this.primary_arr.filter(function(n){if(t(n,r,!0))return!0;if(i(n,r).idx!==-1)r
eturn!0;for(var a=e[n]||[],s=0;s<a.length;s++)if(i(a[s],r).idx!==-1)return!0;ret
urn!1});return r&&a.length>0&&a.indexOf(this._primarySelected)===-1&&this.set("_
primarySelected",a[0]),a.sort(function(r,i){var t=this._columnState(r),e=this._c
olumnState(i);if(t&&!e)return-1;if(e&&!t)return 1;if(t&&e){if(t=this.special_col
umns.indexOf(r),e=this.special_columns.indexOf(i),t!==-1&&e===-1)return-1;if(t==
=-1&&e!==-1)return 1;if(t!==-1&&e!==-1)return t-e}return swarming.naturalCompare
(r,i)}.bind(this)),a},_secondary:function(r,e,n){if(requestAnimationFrame(functi
on(){this.$.secondaryList.render()}.bind(this)),!r)return[];var a=n[r]||[];retur
n t(r,e,!0)?a.sort(function(r,i){var n=t(r,e,!1),a=t(i,e,!1);return n===a?swarmi
ng.naturalCompare(r,i):a-n}):i(r,e).idx!==-1?a.sort(function(r,t){var n=i(r,e).i
dx!==-1,a=i(t,e).idx!==-1;return n===a?swarming.naturalCompare(r,t):a-n}):a.filt
er(function(r){return i(r,e).idx!==-1})},_beforeBold:function(r,t){var e=i(r,t.r
eplace(":"," "));return e.idx===-1?r:r.substring(0,e.idx)},_bold:function(r,t){v
ar e=i(r,t.replace(":"," "));return e.idx===-1?"":r.substring(e.idx,e.idx+e.part
.length)},_afterBold:function(r,t){var e=i(r,t.replace(":"," "));return e.idx===
-1?"":r.substring(e.idx+e.part.length)},_commonFilters:function(){return{android
_devices:function(r,i){var t=this._attribute(r,"android_devices","0");return t.i
ndexOf(i)!==-1},device_os:function(r,i){var t=this._attribute(r,"device_os","non
e");return t.indexOf(i)!==-1},device_type:function(r,i){var t=this._attribute(r,
"device_type","none");return t.indexOf(swarming.alias.unapply(i))!==-1},gpu:func
tion(r,i){var t=this._attribute(r,"gpu","none");return t.indexOf(swarming.alias.
unapply(i))!==-1}}}}]}()</script> <script>!function(){var e="unknown";SwarmingBe
haviors.BotListBehavior=[SwarmingBehaviors.CommonBehavior,{properties:{BOT_PROPE
RTIES:{type:Array,value:function(){return["disk_space","uptime","running_time","
task","status","version","external_ip","internal_ip","cloud_console_link","mp_le
ase_id","mp_lease_expires","last_seen","first_seen","battery_level","battery_vol
tage","battery_temperature","battery_status","battery_health","bot_temperature",
"device_temperature"]}}},_attribute:function(t,i,n){return n=n||e,this._dimensio
n(t,i)||this._state(t,i)||[n]},_devices:function(e){return e.state.devices},_dev
iceType:function(e){return e.device_type.toLowerCase()},_dimension:function(e,t)
{if(e&&e.dimensions&&t)for(var i=0;i<e.dimensions.length;i++)if(e.dimensions[i].
key===t)return e.dimensions[i].value},_state:function(e,t){if(e&&e.state&&e.stat
e[t]){var i=e.state[t];return Array.isArray(i)?i:[i]}},_taskId:function(e){retur
n e&&e.task_id?e.task_id:"idle"}}]}()</script> <dom-module id="bot-filters" asse
tpath="/res/imp/botlist/"> <template> <style is="custom-style" include="iron-fle
x iron-flex-alignment iron-positioning query-column-filter-style swarming-app-st
yle"></style> <url-param name="f" value="{{_filters}}" default_values="[]" multi
=""> </url-param> <url-param name="c" value="{{columns}}" default_values="["
;id","os","task","status"]" multi=""> </url-p
aram> <url-param name="q" value="{{_query}}" default_value=""> </url-param> <url
-param name="v" value="{{verbose}}"> </url-param> <url-param name="l" default_va
lue="100" value="{{_limit}}"> </url-param> <div class="container horizontal layo
ut"> <div class="narrow-down-selector"> <div> <iron-a11y-keys target="[[_filter_
input]]" keys="enter" on-keys-pressed="_manuallyAddFilter"></iron-a11y-keys> <pa
per-input id="filter" label="Search columns and filters or supply a filter and p
ress enter" placeholder="gpu nvidia pool:Chrome" value="{{_query::input}}"> </pa
per-input> </div> <div class="selector side-by-side" title="This shows all bot d
imension names and other interesting bot properties. Mark the check box to add a
s a column. Select the row to see filter options."> <iron-selector attr-for-sele
cted="label" selected="{{_primarySelected}}"> <template is="dom-repeat" items="[
[_primaryItems]]" as="item"> <div class="selectable item horizontal layout" labe
l="[[item]]"> <span>[[_beforeBold(item,_query)]]<span class="bold">[[_bold(item,
_query)]]</span>[[_afterBold(item,_query)]]</span> <span class="flex"></span> <p
aper-checkbox noink="" disabled$="[[_cantToggleColumn(item)]]" checked="[[_colum
nState(item,columns.*)]]" on-change="_toggleColumn"> </paper-checkbox> </div> </
template> </iron-selector> </div> <div class="selector side-by-side" title="Thes
e are all options (if any) that the bot list can be filtered on."> <template is=
"dom-repeat" id="secondaryList" items="[[_secondaryItems]]" as="item"> <div clas
s="item horizontal layout" label="[[item]]"> <span>[[_beforeBold(item,_query)]]<
span class="bold">[[_bold(item,_query)]]</span>[[_afterBold(item,_query)]]</span
> <span class="flex"></span> <iron-icon class="icons" icon="icons:arrow-forward"
hidden="[[_cantAddFilter(_primarySelected,item,_filters.*)]]" on-tap="_addFilte
r"> </iron-icon> </div> </template> <template is="dom-if" if="[[_showDimensionMe
ssage(_primarySelected,_secondaryItems.length)]]"> <div class="item"> Only dimen
sions can be used for filtering. <i>"[[_primarySelected]]"</i> is a part of the
bot's state and is informational only. </div> </template> </div> <div class="sel
ector side-by-side" title="These filters are AND'd together and applied to all b
ots in | 352 })(); </script> </dom-module><script>Polymer({is:"iron-a11y-keys",behaviors:[P
olymer.IronA11yKeysBehavior],properties:{target:{type:Object,observer:"_targetCh
anged"},keys:{type:String,reflectToAttribute:!0,observer:"_keysChanged"}},attach
ed:function(){this.target||(this.target=this.parentNode)},_targetChanged:functio
n(e){this.keyEventTarget=e},_keysChanged:function(){this.removeOwnKeyBindings(),
this.addOwnKeyBinding(this.keys,"_fireKeysPressed")},_fireKeysPressed:function(e
){this.fire("keys-pressed",e.detail,{})}})</script> <script>Polymer({is:"iron-se
lector",behaviors:[Polymer.IronMultiSelectableBehavior]})</script> <script>Polym
er.IronValidatableBehaviorMeta=null,Polymer.IronValidatableBehavior={properties:
{validator:{type:String},invalid:{notify:!0,reflectToAttribute:!0,type:Boolean,v
alue:!1},_validatorMeta:{type:Object},validatorType:{type:String,value:"validato
r"},_validator:{type:Object,computed:"__computeValidator(validator)"}},observers
:["_invalidChanged(invalid)"],registered:function(){Polymer.IronValidatableBehav
iorMeta=new Polymer.IronMeta({type:"validator"})},_invalidChanged:function(){thi
s.invalid?this.setAttribute("aria-invalid","true"):this.removeAttribute("aria-in
valid")},hasValidator:function(){return null!=this._validator},validate:function
(a){return this.invalid=!this._getValidity(a),!this.invalid},_getValidity:functi
on(a){return!this.hasValidator()||this._validator.validate(a)},__computeValidato
r:function(){return Polymer.IronValidatableBehaviorMeta&&Polymer.IronValidatable
BehaviorMeta.byKey(this.validator)}}</script> <script>Polymer.IronFormElementBeh
avior={properties:{name:{type:String},value:{notify:!0,type:String},required:{ty
pe:Boolean,value:!1},_parentForm:{type:Object}},attached:function(){this.fire("i
ron-form-element-register")},detached:function(){this._parentForm&&this._parentF
orm.fire("iron-form-element-unregister",{target:this})}}</script> <script>Polyme
r.IronCheckedElementBehaviorImpl={properties:{checked:{type:Boolean,value:!1,ref
lectToAttribute:!0,notify:!0,observer:"_checkedChanged"},toggles:{type:Boolean,v
alue:!0,reflectToAttribute:!0},value:{type:String,value:"on",observer:"_valueCha
nged"}},observers:["_requiredChanged(required)"],created:function(){this._hasIro
nCheckedElementBehavior=!0},_getValidity:function(e){return this.disabled||!this
.required||this.checked},_requiredChanged:function(){this.required?this.setAttri
bute("aria-required","true"):this.removeAttribute("aria-required")},_checkedChan
ged:function(){this.active=this.checked,this.fire("iron-change")},_valueChanged:
function(){void 0!==this.value&&null!==this.value||(this.value="on")}},Polymer.I
ronCheckedElementBehavior=[Polymer.IronFormElementBehavior,Polymer.IronValidatab
leBehavior,Polymer.IronCheckedElementBehaviorImpl]</script> <script>Polymer.Pape
rCheckedElementBehaviorImpl={_checkedChanged:function(){Polymer.IronCheckedEleme
ntBehaviorImpl._checkedChanged.call(this),this.hasRipple()&&(this.checked?this._
ripple.setAttribute("checked",""):this._ripple.removeAttribute("checked"))},_but
tonStateChanged:function(){Polymer.PaperRippleBehavior._buttonStateChanged.call(
this),this.disabled||this.isAttached&&(this.checked=this.active)}},Polymer.Paper
CheckedElementBehavior=[Polymer.PaperInkyFocusBehavior,Polymer.IronCheckedElemen
tBehavior,Polymer.PaperCheckedElementBehaviorImpl]</script> <dom-module id="pape
r-checkbox" assetpath="/res/imp/bower_components/paper-checkbox/"> <template str
ip-whitespace=""> <style>:host{display:inline-block;white-space:nowrap;cursor:po
inter;--calculated-paper-checkbox-size:var(--paper-checkbox-size, 18px);--calcul
ated-paper-checkbox-ink-size:var(--paper-checkbox-ink-size, -1px);@apply(--paper
-font-common-base);line-height:0;-webkit-tap-highlight-color:transparent}:host([
hidden]){display:none!important}:host(:focus){outline:0}.hidden{display:none}#ch
eckboxContainer{display:inline-block;position:relative;width:var(--calculated-pa
per-checkbox-size);height:var(--calculated-paper-checkbox-size);min-width:var(--
calculated-paper-checkbox-size);margin:var(--paper-checkbox-margin,initial);vert
ical-align:var(--paper-checkbox-vertical-align,middle);background-color:var(--pa
per-checkbox-unchecked-background-color,transparent)}#ink{position:absolute;top:
calc(0px - (var(--calculated-paper-checkbox-ink-size) - var(--calculated-paper-c
heckbox-size))/ 2);left:calc(0px - (var(--calculated-paper-checkbox-ink-size) -
var(--calculated-paper-checkbox-size))/ 2);width:var(--calculated-paper-checkbox
-ink-size);height:var(--calculated-paper-checkbox-ink-size);color:var(--paper-ch
eckbox-unchecked-ink-color,var(--primary-text-color));opacity:.6;pointer-events:
none}:host-context([dir=rtl]) #ink{right:calc(0px - (var(--calculated-paper-chec
kbox-ink-size) - var(--calculated-paper-checkbox-size))/ 2);left:auto}#ink[check
ed]{color:var(--paper-checkbox-checked-ink-color,var(--primary-color))}#checkbox
{position:relative;box-sizing:border-box;height:100%;border:solid 2px;border-col
or:var(--paper-checkbox-unchecked-color,var(--primary-text-color));border-radius
:2px;pointer-events:none;-webkit-transition:background-color 140ms,border-color
140ms;transition:background-color 140ms,border-color 140ms}#checkbox.checked #ch
eckmark{-webkit-animation:checkmark-expand 140ms ease-out forwards;animation:che
ckmark-expand 140ms ease-out forwards}@-webkit-keyframes checkmark-expand{0%{-we
bkit-transform:scale(0,0) rotate(45deg)}100%{-webkit-transform:scale(1,1) rotate
(45deg)}}@keyframes checkmark-expand{0%{transform:scale(0,0) rotate(45deg)}100%{
transform:scale(1,1) rotate(45deg)}}#checkbox.checked{background-color:var(--pap
er-checkbox-checked-color,var(--primary-color));border-color:var(--paper-checkbo
x-checked-color,var(--primary-color))}#checkmark{position:absolute;width:36%;hei
ght:70%;border-style:solid;border-top:none;border-left:none;border-right-width:c
alc(2/15 * var(--calculated-paper-checkbox-size));border-bottom-width:calc(2/15
* var(--calculated-paper-checkbox-size));border-color:var(--paper-checkbox-check
mark-color,#fff);-webkit-transform-origin:97% 86%;transform-origin:97% 86%;box-s
izing:content-box}:host-context([dir=rtl]) #checkmark{-webkit-transform-origin:5
0% 14%;transform-origin:50% 14%}#checkboxLabel{position:relative;display:inline-
block;vertical-align:middle;padding-left:var(--paper-checkbox-label-spacing,8px)
;white-space:normal;line-height:normal;color:var(--paper-checkbox-label-color,va
r(--primary-text-color));@apply(--paper-checkbox-label)}:host([checked]) #checkb
oxLabel{color:var(--paper-checkbox-label-checked-color,var(--paper-checkbox-labe
l-color,var(--primary-text-color)));@apply(--paper-checkbox-label-checked)}:host
-context([dir=rtl]) #checkboxLabel{padding-right:var(--paper-checkbox-label-spac
ing,8px);padding-left:0}#checkboxLabel[hidden]{display:none}:host([disabled]) #c
heckbox{opacity:.5;border-color:var(--paper-checkbox-unchecked-color,var(--prima
ry-text-color))}:host([disabled][checked]) #checkbox{background-color:var(--pape
r-checkbox-unchecked-color,var(--primary-text-color));opacity:.5}:host([disabled
]) #checkboxLabel{opacity:.65}#checkbox.invalid:not(.checked){border-color:var(-
-paper-checkbox-error-color,var(--error-color))}</style> <div id="checkboxContai
ner"> <div id="checkbox" class$="[[_computeCheckboxClass(checked, invalid)]]"> <
div id="checkmark" class$="[[_computeCheckmarkClass(checked)]]"></div> </div> </
div> <div id="checkboxLabel"><content></content></div> </template> <script>Polym
er({is:"paper-checkbox",behaviors:[Polymer.PaperCheckedElementBehavior],hostAttr
ibutes:{role:"checkbox","aria-checked":!1,tabindex:0},properties:{ariaActiveAttr
ibute:{type:String,value:"aria-checked"}},attached:function(){var e=this.getComp
utedStyleValue("--calculated-paper-checkbox-ink-size");if("-1px"===e){var t=pars
eFloat(this.getComputedStyleValue("--calculated-paper-checkbox-size")),a=Math.fl
oor(8/3*t);a%2!==t%2&&a++,this.customStyle["--paper-checkbox-ink-size"]=a+"px",t
his.updateStyles()}},_computeCheckboxClass:function(e,t){var a="";return e&&(a+=
"checked "),t&&(a+="invalid"),a},_computeCheckmarkClass:function(e){return e?"":
"hidden"},_createRipple:function(){return this._rippleContainer=this.$.checkboxC
ontainer,Polymer.PaperInkyFocusBehaviorImpl._createRipple.call(this)}})</script>
</dom-module> <script>Polymer({is:"iron-input",extends:"input",behaviors:[Polym
er.IronValidatableBehavior],properties:{bindValue:{observer:"_bindValueChanged",
type:String},preventInvalidInput:{type:Boolean},allowedPattern:{type:String,obse
rver:"_allowedPatternChanged"},_previousValidInput:{type:String,value:""},_patte
rnAlreadyChecked:{type:Boolean,value:!1}},listeners:{input:"_onInput",keypress:"
_onKeypress"},registered:function(){this._canDispatchEventOnDisabled()||(this._o
rigDispatchEvent=this.dispatchEvent,this.dispatchEvent=this._dispatchEventFirefo
xIE)},created:function(){Polymer.IronA11yAnnouncer.requestAvailability()},_canDi
spatchEventOnDisabled:function(){var e=document.createElement("input"),t=!1;e.di
sabled=!0,e.addEventListener("feature-check-dispatch-event",function(){t=!0});tr
y{e.dispatchEvent(new Event("feature-check-dispatch-event"))}catch(e){}return t}
,_dispatchEventFirefoxIE:function(){var e=this.disabled;this.disabled=!1,this._o
rigDispatchEvent.apply(this,arguments),this.disabled=e},get _patternRegExp(){var
e;if(this.allowedPattern)e=new RegExp(this.allowedPattern);else switch(this.typ
e){case"number":e=/[0-9.,e-]/}return e},ready:function(){this.bindValue=this.val
ue},_bindValueChanged:function(){this.value!==this.bindValue&&(this.value=this.b
indValue||0===this.bindValue||this.bindValue===!1?this.bindValue:""),this.fire("
bind-value-changed",{value:this.bindValue})},_allowedPatternChanged:function(){t
his.preventInvalidInput=!!this.allowedPattern},_onInput:function(){if(this.preve
ntInvalidInput&&!this._patternAlreadyChecked){var e=this._checkPatternValidity()
;e||(this._announceInvalidCharacter("Invalid string of characters not entered.")
,this.value=this._previousValidInput)}this.bindValue=this.value,this._previousVa
lidInput=this.value,this._patternAlreadyChecked=!1},_isPrintable:function(e){var
t=8==e.keyCode||9==e.keyCode||13==e.keyCode||27==e.keyCode,i=19==e.keyCode||20=
=e.keyCode||45==e.keyCode||46==e.keyCode||144==e.keyCode||145==e.keyCode||e.keyC
ode>32&&e.keyCode<41||e.keyCode>111&&e.keyCode<124;return!(t||0==e.charCode&&i)}
,_onKeypress:function(e){if(this.preventInvalidInput||"number"===this.type){var
t=this._patternRegExp;if(t&&!(e.metaKey||e.ctrlKey||e.altKey)){this._patternAlre
adyChecked=!0;var i=String.fromCharCode(e.charCode);this._isPrintable(e)&&!t.tes
t(i)&&(e.preventDefault(),this._announceInvalidCharacter("Invalid character "+i+
" not entered."))}}},_checkPatternValidity:function(){var e=this._patternRegExp;
if(!e)return!0;for(var t=0;t<this.value.length;t++)if(!e.test(this.value[t]))ret
urn!1;return!0},validate:function(){var e=this.checkValidity();return e&&(this.r
equired&&""===this.value?e=!1:this.hasValidator()&&(e=Polymer.IronValidatableBeh
avior.validate.call(this,this.value))),this.invalid=!e,this.fire("iron-input-val
idate"),e},_announceInvalidCharacter:function(e){this.fire("iron-announce",{text
:e})}})</script> <script>Polymer.PaperInputHelper={},Polymer.PaperInputHelper.Ne
xtLabelID=1,Polymer.PaperInputHelper.NextAddonID=1,Polymer.PaperInputBehaviorImp
l={properties:{label:{type:String},value:{notify:!0,type:String},disabled:{type:
Boolean,value:!1},invalid:{type:Boolean,value:!1,notify:!0},preventInvalidInput:
{type:Boolean},allowedPattern:{type:String},type:{type:String},list:{type:String
},pattern:{type:String},required:{type:Boolean,value:!1},errorMessage:{type:Stri
ng},charCounter:{type:Boolean,value:!1},noLabelFloat:{type:Boolean,value:!1},alw
aysFloatLabel:{type:Boolean,value:!1},autoValidate:{type:Boolean,value:!1},valid
ator:{type:String},autocomplete:{type:String,value:"off"},autofocus:{type:Boolea
n,observer:"_autofocusChanged"},inputmode:{type:String},minlength:{type:Number},
maxlength:{type:Number},min:{type:String},max:{type:String},step:{type:String},n
ame:{type:String},placeholder:{type:String,value:""},readonly:{type:Boolean,valu
e:!1},size:{type:Number},autocapitalize:{type:String,value:"none"},autocorrect:{
type:String,value:"off"},autosave:{type:String},results:{type:Number},accept:{ty
pe:String},multiple:{type:Boolean},_ariaDescribedBy:{type:String,value:""},_aria
LabelledBy:{type:String,value:""}},listeners:{"addon-attached":"_onAddonAttached
"},keyBindings:{"shift+tab:keydown":"_onShiftTabDown"},hostAttributes:{tabindex:
0},get inputElement(){return this.$.input},get _focusableElement(){return this.i
nputElement},registered:function(){this._typesThatHaveText=["date","datetime","d
atetime-local","month","time","week","file"]},attached:function(){this._updateAr
iaLabelledBy(),this.inputElement&&this._typesThatHaveText.indexOf(this.inputElem
ent.type)!==-1&&(this.alwaysFloatLabel=!0)},_appendStringWithSpace:function(e,t)
{return e=e?e+" "+t:t},_onAddonAttached:function(e){var t=e.path?e.path[0]:e.tar
get;if(t.id)this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribe
dBy,t.id);else{var a="paper-input-add-on-"+Polymer.PaperInputHelper.NextAddonID+
+;t.id=a,this._ariaDescribedBy=this._appendStringWithSpace(this._ariaDescribedBy
,a)}},validate:function(){return this.inputElement.validate()},_focusBlurHandler
:function(e){Polymer.IronControlState._focusBlurHandler.call(this,e),this.focuse
d&&!this._shiftTabPressed&&this._focusableElement.focus()},_onShiftTabDown:funct
ion(e){var t=this.getAttribute("tabindex");this._shiftTabPressed=!0,this.setAttr
ibute("tabindex","-1"),this.async(function(){this.setAttribute("tabindex",t),thi
s._shiftTabPressed=!1},1)},_handleAutoValidate:function(){this.autoValidate&&thi
s.validate()},updateValueAndPreserveCaret:function(e){try{var t=this.inputElemen
t.selectionStart;this.value=e,this.inputElement.selectionStart=t,this.inputEleme
nt.selectionEnd=t}catch(t){this.value=e}},_computeAlwaysFloatLabel:function(e,t)
{return t||e},_updateAriaLabelledBy:function(){var e=Polymer.dom(this.root).quer
ySelector("label");if(!e)return void(this._ariaLabelledBy="");var t;e.id?t=e.id:
(t="paper-input-label-"+Polymer.PaperInputHelper.NextLabelID++,e.id=t),this._ari
aLabelledBy=t},_onChange:function(e){this.shadowRoot&&this.fire(e.type,{sourceEv
ent:e},{node:this,bubbles:e.bubbles,cancelable:e.cancelable})},_autofocusChanged
:function(){if(this.autofocus&&this._focusableElement){var e=document.activeElem
ent,t=e instanceof HTMLElement,a=t&&e!==document.body&&e!==document.documentElem
ent;a||this._focusableElement.focus()}}},Polymer.PaperInputBehavior=[Polymer.Iro
nControlState,Polymer.IronA11yKeysBehavior,Polymer.PaperInputBehaviorImpl]</scri
pt> <script>Polymer.PaperInputAddonBehavior={hostAttributes:{"add-on":""},attach
ed:function(){this.fire("addon-attached")},update:function(t){}}</script> <dom-m
odule id="paper-input-char-counter" assetpath="/res/imp/bower_components/paper-i
nput/"> <template> <style>:host{display:inline-block;float:right;@apply(--paper-
font-caption);@apply(--paper-input-char-counter)}:host([hidden]){display:none!im
portant}:host-context([dir=rtl]){float:left}</style> <span>[[_charCounterStr]]</
span> </template> </dom-module> <script>Polymer({is:"paper-input-char-counter",b
ehaviors:[Polymer.PaperInputAddonBehavior],properties:{_charCounterStr:{type:Str
ing,value:"0"}},update:function(t){if(t.inputElement){t.value=t.value||"";var e=
t.value.toString().length.toString();t.inputElement.hasAttribute("maxlength")&&(
e+="/"+t.inputElement.getAttribute("maxlength")),this._charCounterStr=e}}})</scr
ipt> <dom-module id="paper-input-container" assetpath="/res/imp/bower_components
/paper-input/"> <template> <style>:host{display:block;padding:8px 0;@apply(--pap
er-input-container)}:host([inline]){display:inline-block}:host([disabled]){point
er-events:none;opacity:.33;@apply(--paper-input-container-disabled)}:host([hidde
n]){display:none!important}.floated-label-placeholder{@apply(--paper-font-captio
n)}.underline{position:relative}.focused-line{@apply(--layout-fit);background:va
r(--paper-input-container-focus-color,--primary-color);height:2px;-webkit-transf
orm-origin:center center;transform-origin:center center;-webkit-transform:scale3
d(0,1,1);transform:scale3d(0,1,1);@apply(--paper-input-container-underline-focus
)}.underline.is-highlighted .focused-line{-webkit-transform:none;transform:none;
-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(--pap
er-transition-easing)}.underline.is-invalid .focused-line{background:var(--paper
-input-container-invalid-color,--error-color);-webkit-transform:none;transform:n
one;-webkit-transition:-webkit-transform .25s;transition:transform .25s;@apply(-
-paper-transition-easing)}.unfocused-line{@apply(--layout-fit);background:var(--
paper-input-container-color,--secondary-text-color);height:1px;@apply(--paper-in
put-container-underline)}:host([disabled]) .unfocused-line{border-bottom:1px das
hed;border-color:var(--paper-input-container-color,--secondary-text-color);backg
round:0 0;@apply(--paper-input-container-underline-disabled)}.label-and-input-co
ntainer{@apply(--layout-flex-auto);@apply(--layout-relative);width:100%;max-widt
h:100%}.input-content{@apply(--layout-horizontal);@apply(--layout-center);positi
on:relative}.input-content ::content .paper-input-label,.input-content ::content
label{position:absolute;top:0;right:0;left:0;width:100%;font:inherit;color:var(
--paper-input-container-color,--secondary-text-color);-webkit-transition:-webkit
-transform .25s,width .25s;transition:transform .25s,width .25s;-webkit-transfor
m-origin:left top;transform-origin:left top;@apply(--paper-font-common-nowrap);@
apply(--paper-font-subhead);@apply(--paper-input-container-label);@apply(--paper
-transition-easing)}.input-content.label-is-floating ::content .paper-input-labe
l,.input-content.label-is-floating ::content label{-webkit-transform:translateY(
-75%) scale(.75);transform:translateY(-75%) scale(.75);width:133%;@apply(--paper
-input-container-label-floating)}:host-context([dir=rtl]) .input-content.label-i
s-floating ::content .paper-input-label,:host-context([dir=rtl]) .input-content.
label-is-floating ::content label{width:100%;-webkit-transform-origin:right top;
transform-origin:right top}.input-content.label-is-highlighted ::content .paper-
input-label,.input-content.label-is-highlighted ::content label{color:var(--pape
r-input-container-focus-color,--primary-color);@apply(--paper-input-container-la
bel-focus)}.input-content.is-invalid ::content .paper-input-label,.input-content
.is-invalid ::content label{color:var(--paper-input-container-invalid-color,--er
ror-color)}.input-content.label-is-hidden ::content .paper-input-label,.input-co
ntent.label-is-hidden ::content label{visibility:hidden}.input-content ::content
.paper-input-input,.input-content ::content input,.input-content ::content iron
-autogrow-textarea,.input-content ::content textarea{position:relative;outline:0
;box-shadow:none;padding:0;width:100%;max-width:100%;background:0 0;border:none;
color:var(--paper-input-container-input-color,--primary-text-color);-webkit-appe
arance:none;text-align:inherit;vertical-align:bottom;@apply(--paper-font-subhead
);@apply(--paper-input-container-input)}::content [prefix]{@apply(--paper-font-s
ubhead);@apply(--paper-input-prefix);@apply(--layout-flex-none)}::content [suffi
x]{@apply(--paper-font-subhead);@apply(--paper-input-suffix);@apply(--layout-fle
x-none)}.input-content ::content input{min-width:0}.input-content ::content text
area{resize:none}.add-on-content{position:relative}.add-on-content.is-invalid ::
content *{color:var(--paper-input-container-invalid-color,--error-color)}.add-on
-content.is-highlighted ::content *{color:var(--paper-input-container-focus-colo
r,--primary-color)}</style> <template is="dom-if" if="[[!noLabelFloat]]"> <div c
lass="floated-label-placeholder" aria-hidden="true"> </div> </template> <di
v class$="[[_computeInputContentClass(noLabelFloat,alwaysFloatLabel,focused,inva
lid,_inputHasContent)]]"> <content select="[prefix]" id="prefix"></content> <div
class="label-and-input-container" id="labelAndInputContainer"> <content select=
":not([add-on]):not([prefix]):not([suffix])"></content> </div> <content select="
[suffix]"></content> </div> <div class$="[[_computeUnderlineClass(focused,invali
d)]]"> <div class="unfocused-line"></div> <div class="focused-line"></div> </div
> <div class$="[[_computeAddOnContentClass(focused,invalid)]]"> <content id="add
OnContent" select="[add-on]"></content> </div> </template> </dom-module> <script
>Polymer({is:"paper-input-container",properties:{noLabelFloat:{type:Boolean,valu
e:!1},alwaysFloatLabel:{type:Boolean,value:!1},attrForValue:{type:String,value:"
bind-value"},autoValidate:{type:Boolean,value:!1},invalid:{observer:"_invalidCha
nged",type:Boolean,value:!1},focused:{readOnly:!0,type:Boolean,value:!1,notify:!
0},_addons:{type:Array},_inputHasContent:{type:Boolean,value:!1},_inputSelector:
{type:String,value:"input,textarea,.paper-input-input"},_boundOnFocus:{type:Func
tion,value:function(){return this._onFocus.bind(this)}},_boundOnBlur:{type:Funct
ion,value:function(){return this._onBlur.bind(this)}},_boundOnInput:{type:Functi
on,value:function(){return this._onInput.bind(this)}},_boundValueChanged:{type:F
unction,value:function(){return this._onValueChanged.bind(this)}}},listeners:{"a
ddon-attached":"_onAddonAttached","iron-input-validate":"_onIronInputValidate"},
get _valueChangedEvent(){return this.attrForValue+"-changed"},get _propertyForVa
lue(){return Polymer.CaseMap.dashToCamelCase(this.attrForValue)},get _inputEleme
nt(){return Polymer.dom(this).querySelector(this._inputSelector)},get _inputElem
entValue(){return this._inputElement[this._propertyForValue]||this._inputElement
.value},ready:function(){this._addons||(this._addons=[]),this.addEventListener("
focus",this._boundOnFocus,!0),this.addEventListener("blur",this._boundOnBlur,!0)
},attached:function(){this.attrForValue?this._inputElement.addEventListener(this
._valueChangedEvent,this._boundValueChanged):this.addEventListener("input",this.
_onInput),""!=this._inputElementValue?this._handleValueAndAutoValidate(this._inp
utElement):this._handleValue(this._inputElement)},_onAddonAttached:function(t){t
his._addons||(this._addons=[]);var n=t.target;this._addons.indexOf(n)===-1&&(thi
s._addons.push(n),this.isAttached&&this._handleValue(this._inputElement))},_onFo
cus:function(){this._setFocused(!0)},_onBlur:function(){this._setFocused(!1),thi
s._handleValueAndAutoValidate(this._inputElement)},_onInput:function(t){this._ha
ndleValueAndAutoValidate(t.target)},_onValueChanged:function(t){this._handleValu
eAndAutoValidate(t.target)},_handleValue:function(t){var n=this._inputElementVal
ue;n||0===n||"number"===t.type&&!t.checkValidity()?this._inputHasContent=!0:this
._inputHasContent=!1,this.updateAddons({inputElement:t,value:n,invalid:this.inva
lid})},_handleValueAndAutoValidate:function(t){if(this.autoValidate){var n;n=t.v
alidate?t.validate(this._inputElementValue):t.checkValidity(),this.invalid=!n}th
is._handleValue(t)},_onIronInputValidate:function(t){this.invalid=this._inputEle
ment.invalid},_invalidChanged:function(){this._addons&&this.updateAddons({invali
d:this.invalid})},updateAddons:function(t){for(var n,e=0;n=this._addons[e];e++)n
.update(t)},_computeInputContentClass:function(t,n,e,i,a){var u="input-content";
if(t)a&&(u+=" label-is-hidden");else{var o=this.querySelector("label");n||a?(u+=
" label-is-floating",this.$.labelAndInputContainer.style.position="static",i?u+=
" is-invalid":e&&(u+=" label-is-highlighted")):o&&(this.$.labelAndInputContainer
.style.position="relative")}return u},_computeUnderlineClass:function(t,n){var e
="underline";return n?e+=" is-invalid":t&&(e+=" is-highlighted"),e},_computeAddO
nContentClass:function(t,n){var e="add-on-content";return n?e+=" is-invalid":t&&
(e+=" is-highlighted"),e}})</script> <dom-module id="paper-input-error" assetpat
h="/res/imp/bower_components/paper-input/"> <template> <style>:host{display:inli
ne-block;visibility:hidden;color:var(--paper-input-container-invalid-color,--err
or-color);@apply(--paper-font-caption);@apply(--paper-input-error);position:abso
lute;left:0;right:0}:host([invalid]){visibility:visible};</style> <content></con
tent> </template> </dom-module> <script>Polymer({is:"paper-input-error",behavior
s:[Polymer.PaperInputAddonBehavior],properties:{invalid:{readOnly:!0,reflectToAt
tribute:!0,type:Boolean}},update:function(e){this._setInvalid(e.invalid)}})</scr
ipt> <dom-module id="paper-input" assetpath="/res/imp/bower_components/paper-inp
ut/"> <template> <style>:host{display:block}:host([focused]){outline:0}:host([hi
dden]){display:none!important}input::-webkit-input-placeholder{color:var(--paper
-input-container-color,--secondary-text-color)}input:-moz-placeholder{color:var(
--paper-input-container-color,--secondary-text-color)}input::-moz-placeholder{co
lor:var(--paper-input-container-color,--secondary-text-color)}input:-ms-input-pl
aceholder{color:var(--paper-input-container-color,--secondary-text-color)}label{
pointer-events:none}</style> <paper-input-container no-label-float="[[noLabelFlo
at]]" always-float-label="[[_computeAlwaysFloatLabel(alwaysFloatLabel,placeholde
r)]]" auto-validate$="[[autoValidate]]" disabled$="[[disabled]]" invalid="[[inva
lid]]"> <content select="[prefix]"></content> <label hidden$="[[!label]]" aria-h
idden="true" for="input">[[label]]</label> <input is="iron-input" id="input" ari
a-labelledby$="[[_ariaLabelledBy]]" aria-describedby$="[[_ariaDescribedBy]]" dis
abled$="[[disabled]]" title$="[[title]]" bind-value="{{value}}" invalid="{{inval
id}}" prevent-invalid-input="[[preventInvalidInput]]" allowed-pattern="[[allowed
Pattern]]" validator="[[validator]]" type$="[[type]]" pattern$="[[pattern]]" req
uired$="[[required]]" autocomplete$="[[autocomplete]]" autofocus$="[[autofocus]]
" inputmode$="[[inputmode]]" minlength$="[[minlength]]" maxlength$="[[maxlength]
]" min$="[[min]]" max$="[[max]]" step$="[[step]]" name$="[[name]]" placeholder$=
"[[placeholder]]" readonly$="[[readonly]]" list$="[[list]]" size$="[[size]]" aut
ocapitalize$="[[autocapitalize]]" autocorrect$="[[autocorrect]]" on-change="_onC
hange" tabindex$="[[tabindex]]" autosave$="[[autosave]]" results$="[[results]]"
accept$="[[accept]]" multiple$="[[multiple]]"> <content select="[suffix]"></cont
ent> <template is="dom-if" if="[[errorMessage]]"> <paper-input-error aria-live="
assertive">[[errorMessage]]</paper-input-error> </template> <template is="dom-if
" if="[[charCounter]]"> <paper-input-char-counter></paper-input-char-counter> </
template> </paper-input-container> </template> </dom-module> <script>Polymer({is
:"paper-input",behaviors:[Polymer.IronFormElementBehavior,Polymer.PaperInputBeha
vior]})</script> <dom-module id="query-column-filter-style" assetpath="/res/imp/
common/"> <template> <style>:host{display:block;font-family:sans-serif}#filter{m
argin:0 5px}.container{min-height:120px;width:100%}.item{border-bottom:1px solid
#EEE;max-width:250px;min-height:1em;min-width:100px;padding:.1em .2em;line-heig
ht:1.5em}.header{height:2em;padding:.25em;line-height:2em}.selector{border:1px s
olid #000;margin:0 5px;max-height:200px;min-height:130px;min-width:275px;overflo
w-y:auto}.pointable,.selectable{cursor:pointer}.selectable:hover{background-colo
r:#A6CEE3}.iron-selected{background-color:#1F78B4;color:#fff}.icons{cursor:point
er;height:20px;margin:2px;width:20px;flex-shrink:0}.side-by-side{display:inline-
block;vertical-align:top}.bold{font-weight:700}paper-checkbox{max-height:2em;mar
gin:2px;--paper-checkbox-checked-color:black;--paper-checkbox-checked-ink-color:
black;--paper-checkbox-unchecked-color:black;--paper-checkbox-unchecked-ink-colo
r:black;--paper-checkbox-label-color:black}</style> </template> </dom-module> <s
cript>!function(){var r=":",i=function(r,i){if(!i)return{idx:0,part:""};if(!r)re
turn{idx:-1};i=i.trim().toLocaleLowerCase(),r=r.toLocaleLowerCase();for(var t=i.
split(" "),e=0;e<t.length;e++){var n=r.indexOf(t[e]);if(n!==-1)return{idx:n,part
:t[e]}}return{idx:-1}},t=function(i,t,e){if(!t)return!0;if(!i)return!1;if(i=i.to
LocaleLowerCase(),t=t.trim().toLocaleLowerCase(),t.indexOf(" ")!==-1||t.indexOf(
":")===-1)return!1;var n=t.split(r,1)[0],a=t.substring(n.length+r.length);return
e?i===n:i.startsWith(a)};SwarmingBehaviors.QueryColumnFilter=[SwarmingBehaviors
.CommonBehavior,{properties:{dimensions:{type:Array},primary_map:{type:Object},p
rimary_arr:{type:Array},special_columns:{type:Array,value:function(){return[]}},
filter:{type:Function,computed:"_makeFilter(_filters.*)",notify:!0},FILTER_SEP:{
type:String,value:r},_filters:{type:Array},_limit:{type:Number},_primaryItems:{t
ype:Array,computed:"_primary(_query, primary_map, primary_arr, columns.*)"},_pri
marySelected:{type:String,value:""},_query:{type:String},_secondaryItems:{type:A
rray,computed:"_secondary(_primarySelected, _query, primary_map)"}},_addFilter:f
unction(r){var i=r.model.item;if(!this._cantAddFilter(this._primarySelected,i)){
var t=this._primarySelected+this.FILTER_SEP+i;this.push("_filters",t)}},_removeF
ilter:function(r){var i=r.model.fil;if(!this._cantRemoveFilter(i)){var t=this._f
ilters.indexOf(i);t!==-1&&this.splice("_filters",t,1)}},_cantAddFilter:function(
r,i){if(!r||!i)return!0;var t=r+this.FILTER_SEP+i;return this._filters.indexOf(t
)!==-1},_cantRemoveFilter:function(r){return!r||this._filters.indexOf(r)===-1},_
makeFilter:function(){var r={};this._filters.forEach(function(i){var t=i.indexOf
(this.FILTER_SEP),e=i.slice(0,t),n=i.slice(t+this.FILTER_SEP.length),a=r[e]||[];
a.push(n),r[e]=a}.bind(this));var i=this._filterMap||{};return function(t){var e
=!0;for(primary in r){var n=r[primary],a=i[primary];a||(a=function(r,i){var t=th
is._attribute(r,primary);return t.indexOf(i)!==-1}.bind(this)),a&&n.forEach(func
tion(r){e=e&&a.bind(this)(t,r)}.bind(this))}return e}},_manuallyAddFilter:functi
on(){var r=this._query.trim(),i=r.indexOf(this.FILTER_SEP);if(i===-1)return void
sk.errorMessage('Invalid filter. Should be like "foo:bar"',5e3);var t=r.slice(
0,i),e=r.slice(i+this.FILTER_SEP.length);return swarming.alias.DIMENSIONS_WITH_A
LIASES.indexOf(t)!==-1&&(e=swarming.alias.apply(e,t)),r=t+this.FILTER_SEP+e,this
._filters.indexOf(r)!==-1?void sk.errorMessage('Filter "'+r+'" is already active
',5e3):(this.push("_filters",r),void this.set("_query",""))},_toggleColumn:funct
ion(r){var i=r.model.item;if(!this._cantToggleColumn(i)){if(this._columnState(i)
){var t=this.columns.indexOf(i);return void(t!==-1&&this.splice("columns",t,1))}
this.push("columns",i)}},_cantToggleColumn:function(r){return!1},_columnState:fu
nction(r){return!!r&&this.columns.indexOf(r)!==-1},_primary:function(r,e,n){var
a=this.primary_arr.filter(function(n){if(t(n,r,!0))return!0;if(i(n,r).idx!==-1)r
eturn!0;for(var a=e[n]||[],s=0;s<a.length;s++)if(i(a[s],r).idx!==-1)return!0;ret
urn!1});return r&&a.length>0&&a.indexOf(this._primarySelected)===-1&&this.set("_
primarySelected",a[0]),a.sort(function(r,i){var t=this._columnState(r),e=this._c
olumnState(i);if(t&&!e)return-1;if(e&&!t)return 1;if(t&&e){if(t=this.special_col
umns.indexOf(r),e=this.special_columns.indexOf(i),t!==-1&&e===-1)return-1;if(t==
=-1&&e!==-1)return 1;if(t!==-1&&e!==-1)return t-e}return swarming.naturalCompare
(r,i)}.bind(this)),a},_secondary:function(r,e,n){if(requestAnimationFrame(functi
on(){this.$.secondaryList.render()}.bind(this)),!r)return[];var a=n[r]||[];retur
n t(r,e,!0)?a.sort(function(r,i){var n=t(r,e,!1),a=t(i,e,!1);return n===a?swarmi
ng.naturalCompare(r,i):a-n}):i(r,e).idx!==-1?a.sort(function(r,t){var n=i(r,e).i
dx!==-1,a=i(t,e).idx!==-1;return n===a?swarming.naturalCompare(r,t):a-n}):a.filt
er(function(r){return i(r,e).idx!==-1})},_beforeBold:function(r,t){var e=i(r,t.r
eplace(":"," "));return e.idx===-1?r:r.substring(0,e.idx)},_bold:function(r,t){v
ar e=i(r,t.replace(":"," "));return e.idx===-1?"":r.substring(e.idx,e.idx+e.part
.length)},_afterBold:function(r,t){var e=i(r,t.replace(":"," "));return e.idx===
-1?"":r.substring(e.idx+e.part.length)},_commonFilters:function(){return{android
_devices:function(r,i){var t=this._attribute(r,"android_devices","0");return t.i
ndexOf(i)!==-1},device_os:function(r,i){var t=this._attribute(r,"device_os","non
e");return t.indexOf(i)!==-1},device_type:function(r,i){var t=this._attribute(r,
"device_type","none");return t.indexOf(swarming.alias.unapply(i))!==-1},gpu:func
tion(r,i){var t=this._attribute(r,"gpu","none");return t.indexOf(swarming.alias.
unapply(i))!==-1}}}}]}()</script> <script>!function(){var e="unknown";SwarmingBe
haviors.BotListBehavior=[SwarmingBehaviors.CommonBehavior,{properties:{BOT_PROPE
RTIES:{type:Array,value:function(){return["disk_space","uptime","running_time","
task","status","version","external_ip","internal_ip","cloud_console_link","mp_le
ase_id","mp_lease_expires","last_seen","first_seen","battery_level","battery_vol
tage","battery_temperature","battery_status","battery_health","bot_temperature",
"device_temperature"]}}},_attribute:function(t,i,n){return n=n||e,this._dimensio
n(t,i)||this._state(t,i)||[n]},_devices:function(e){return e.state.devices},_dev
iceType:function(e){return e.device_type.toLowerCase()},_dimension:function(e,t)
{if(e&&e.dimensions&&t)for(var i=0;i<e.dimensions.length;i++)if(e.dimensions[i].
key===t)return e.dimensions[i].value},_state:function(e,t){if(e&&e.state&&e.stat
e[t]){var i=e.state[t];return Array.isArray(i)?i:[i]}},_taskId:function(e){retur
n e&&e.task_id?e.task_id:"idle"}}]}()</script> <dom-module id="bot-filters" asse
tpath="/res/imp/botlist/"> <template> <style is="custom-style" include="iron-fle
x iron-flex-alignment iron-positioning query-column-filter-style swarming-app-st
yle"></style> <url-param name="f" value="{{_filters}}" default_values="[]" multi
=""> </url-param> <url-param name="c" value="{{columns}}" default_values="["
;id","os","task","status"]" multi=""> </url-p
aram> <url-param name="q" value="{{_query}}" default_value=""> </url-param> <url
-param name="v" value="{{verbose}}"> </url-param> <url-param name="l" default_va
lue="100" value="{{_limit}}"> </url-param> <div class="container horizontal layo
ut"> <div class="narrow-down-selector"> <div> <iron-a11y-keys target="[[_filter_
input]]" keys="enter" on-keys-pressed="_manuallyAddFilter"></iron-a11y-keys> <pa
per-input id="filter" label="Search columns and filters or supply a filter and p
ress enter" placeholder="gpu nvidia pool:Chrome" value="{{_query::input}}"> </pa
per-input> </div> <div class="selector side-by-side" title="This shows all bot d
imension names and other interesting bot properties. Mark the check box to add a
s a column. Select the row to see filter options."> <iron-selector attr-for-sele
cted="label" selected="{{_primarySelected}}"> <template is="dom-repeat" items="[
[_primaryItems]]" as="item"> <div class="selectable item horizontal layout" labe
l="[[item]]"> <span>[[_beforeBold(item,_query)]]<span class="bold">[[_bold(item,
_query)]]</span>[[_afterBold(item,_query)]]</span> <span class="flex"></span> <p
aper-checkbox noink="" disabled$="[[_cantToggleColumn(item)]]" checked="[[_colum
nState(item,columns.*)]]" on-change="_toggleColumn"> </paper-checkbox> </div> </
template> </iron-selector> </div> <div class="selector side-by-side" title="Thes
e are all options (if any) that the bot list can be filtered on."> <template is=
"dom-repeat" id="secondaryList" items="[[_secondaryItems]]" as="item"> <div clas
s="item horizontal layout" label="[[item]]"> <span>[[_beforeBold(item,_query)]]<
span class="bold">[[_bold(item,_query)]]</span>[[_afterBold(item,_query)]]</span
> <span class="flex"></span> <iron-icon class="icons" icon="icons:arrow-forward"
hidden="[[_cantAddFilter(_primarySelected,item,_filters.*)]]" on-tap="_addFilte
r"> </iron-icon> </div> </template> <template is="dom-if" if="[[_showDimensionMe
ssage(_primarySelected,_secondaryItems.length)]]"> <div class="item"> Only dimen
sions can be used for filtering. <i>"[[_primarySelected]]"</i> is a part of the
bot's state and is informational only. </div> </template> </div> <div class="sel
ector side-by-side" title="These filters are AND'd together and applied to all b
ots in |
| 353 the fleet."> <template is="dom-repeat" items="[[_filters]]" as="fil"> <div class
="item horizontal layout" label="[[fil]]"> <span>[[fil]]</span> <span class="fle
x"></span> <iron-icon class="icons" icon="icons:remove-circle-outline" hidden="[
[_cantRemoveFilter(fil,_filters.*)]]" on-tap="_removeFilter"> </iron-icon> </div
> </template> </div> <div class="side-by-side"> <paper-checkbox checked="{{verbo
se}}">Verbose Entries</paper-checkbox> <paper-input id="_limit" label="Limit Res
ults" auto-validate="" min="0" max="1000" pattern="[0-9]+" value="{{_limit}}"> <
/paper-input> <a href$="[[_matchingTasksLink(query_params)]]">View Matching Task
s</a> </div> </div> </div> </template> <script>!function(){var i={disk_space:fun
ction(i,t){return!0},id:function(i,t){return!0},status:function(i,t){return"quar
antined"===t?i.quarantined:"dead"===t?i.is_dead:!i.quarantined&&!i.is_dead},task
:function(i,t){return"idle"===t?"idle"===this._taskId(i):"idle"!==this._taskId(i
)}};Polymer({is:"bot-filters",behaviors:[SwarmingBehaviors.BotListBehavior,Swarm
ingBehaviors.QueryColumnFilter],properties:{columns:{type:Array,notify:!0},query
_params:{type:Object,computed:"_extractQueryParams(dimensions.*,_filters.*, _lim
it)",notify:!0},verbose:{type:Boolean,notify:!0},_filter_input:{type:Object,valu
e:function(){return this.$.filter}},_filterMap:{type:Object,value:function(){var
t=this._commonFilters();for(var n in i)t[n]=i[n];return t}}},_cantToggleColumn:
function(i){return!i||"id"===i},_extractQueryParams:function(){var i={},t=[];thi
s._filters.forEach(function(n){var e=n.split(this.FILTER_SEP,1),s=e[0];if(this.d
imensions.indexOf(s)!==-1){var r=n.substring(s.length+this.FILTER_SEP.length);t.
push(s+this.FILTER_SEP+swarming.alias.unapply(r))}else if("status"===s){var r=n.
substring(s.length+this.FILTER_SEP.length);"alive"===r?(i.is_dead=["FALSE"],i.qu
arantined=["FALSE"]):"quarantined"===r?i.quarantined=["TRUE"]:"dead"===r&&(i.is_
dead=["TRUE"])}}.bind(this)),i.dimensions=t;var n=parseInt(this._limit);return N
umber.isInteger(n)&&(n=Math.max(n,1),n=Math.min(1e3,n),i.limit=[n],this._limit!=
n&&this.set("_limit",n)),i},_matchingTasksLink:function(i){var t=["name","state"
,"created_ts"];return i.dimensions?(i.dimensions.forEach(function(i){var n=i.spl
it(this.FILTER_SEP,1)[0];t.indexOf(n)===-1&&t.push(n)}.bind(this)),this._taskLis
tLink(i.dimensions,t)):this._taskListLink([],t)},_showDimensionMessage:function(
i,t){return i&&"id"!==i&&!t}})}()</script> </dom-module><dom-module id="bot-list
-data" assetpath="/res/imp/botlist/"> <script>!function(){function e(e){if(!e)re
turn{};var t=[],s=0;for(k in e)t.push(k+": "+e[k]),s+=e[k];return s/=t.length,s=
s?s.toFixed(1):"unknown",{average:s,zones:t.join(" | ")||"unknown"}}var t="avail
able",s=["quarantined","error"];Polymer({is:"bot-list-data",behaviors:[SwarmingB
ehaviors.BotListBehavior],properties:{auth_headers:{type:Object,observer:"signIn
"},bots:{type:Array,computed:"parseBots(_list)",notify:!0},busy:{type:Boolean,co
mputed:"_or(_busy2,_busy1)",notify:!0},dimensions:{type:Array,computed:"_makeArr
ay(_dimensions)",notify:!0},fleet:{type:Object,computed:"_fleet(_count)",notify:
!0},primary_map:{type:Object,computed:"_primaryMap(_dimensions)",notify:!0},prim
ary_arr:{type:Array,computed:"_primaryArr(dimensions, BOT_PROPERTIES)",notify:!0
},_busy1:{type:Boolean,value:!1},_busy2:{type:Boolean,value:!1},_count:{type:Obj
ect},_dimensions:{type:Object},_list:{type:Object}},signIn:function(){this._getJ
sonAsync("_count","/api/swarming/v1/bots/count","_busy2",this.auth_headers),this
._getJsonAsync("_dimensions","/api/swarming/v1/bots/dimensions","_busy1",this.au
th_headers)},parseBots:function(s){return s&&s.items?(s.items.forEach(function(s
){s.state=s.state||"{}",s.state=JSON.parse(s.state)||{};var n=s.state.disks||{},
i=Object.keys(n);if(i.length){s.disks=[];for(var a=0;a<i.length;a++)s.disks.push
({id:i[a],mb:n[i[a]].free_mb});s.disks.sort(function(e,t){return t.mb-e.mb})}els
e s.disks=[{id:"unknown",mb:0}];s.state.temp=e(s.state.temp);var o=[],r=s&&s.sta
te&&s.state.devices||{};for(key in r){var u=r[key];u.serial=key,u.okay=u.state==
=t;var _=this._dimension(s,"device_type")||["unknown"];u.device_type=_[0],u.temp
=e(u.temp),o.push(u)}s.state.devices=o,s.last_seen_ts&&(s.last_seen_ts=new Date(
s.last_seen_ts)),s.first_seen_ts&&(s.first_seen_ts=new Date(s.first_seen_ts)),s.
lease_expiration_ts&&(s.lease_expiration_ts=new Date(s.lease_expiration_ts))}.bi
nd(this)),s.items):[]},_fleet:function(){return this._count?{all:this._count.cou
nt||-1,alive:this._count.count-this._count.dead||-1,busy:this._count.busy||-1,id
le:this._count.count-this._count.busy||-1,dead:this._count.dead||-1,quarantined:
this._count.quarantined||-1}:{}},_makeArray:function(e){if(!e||!e.bots_dimension
s)return[];var t=[];return e.bots_dimensions.forEach(function(e){s.indexOf(e.key
)===-1&&t.push(e.key)}),t.push("id"),t.sort(),t},_primaryArr:function(e,t){retur
n e.concat(t)},_primaryMap:function(e){e=e.bots_dimensions||[];var t={};return e
.forEach(function(e){if(swarming.alias.DIMENSIONS_WITH_ALIASES.indexOf(e.key)===
-1)t[e.key]=e.value;else{var s=[];e.value.forEach(function(t){s.push(swarming.al
ias.apply(t,e.key))}),t[e.key]=s}}),t.android_devices&&t.android_devices.push("0
"),t.device_os&&t.device_os.push("none"),t.device_type&&t.device_type.push("none
"),t.id=[],t.disk_space=[],t.task=["busy","idle"],t.status=["alive","dead","quar
antined"],t}})}()</script> </dom-module><dom-module id="bot-list-summary" assetp
ath="/res/imp/botlist/"> <template> <style include="swarming-app-style">:host{di
splay:block;border-left:1px solid #000;padding:5px 5px;font-family:sans-serif}.h
eader{font-size:1.2em;font-weight:700}.header.buffer{margin-top:5px}.right{text-
align:right}.left{text-align:left}</style> <div class="header">Fleet</div> <tabl
e> <tbody><tr> <td class="right"> <a href$="[[_makeURL('','',columns.*,filtered_
bots.*,sort,verbose)]]">All</a>: </td> <td class="left">[[fleet.all]]</td> </tr>
<tr> <td class="right"> <a href$="[[_makeURL('alive','',columns.*,filtered_bots
.*,sort,verbose)]]">Alive</a>: </td> <td class="left">[[fleet.alive]]</td> </tr>
<tr> <td class="right"> <a href$="[[_makeURL('busy','',columns.*,filtered_bots.
*,sort,verbose)]]">Busy</a>: </td> <td class="left">[[fleet.busy]]</td> </tr> <t
r> <td class="right"> <a href$="[[_makeURL('idle','',columns.*,filtered_bots.*,s
ort,verbose)]]">Idle</a>: </td> <td class="left">[[fleet.idle]]</td> </tr> <tr>
<td class="right"> <a href$="[[_makeURL('dead','',columns.*,filtered_bots.*,sort
,verbose)]]">Dead</a>: </td> <td class="left">[[fleet.dead]]</td> </tr> <tr> <td
class="right"> <a href$="[[_makeURL('quarantined','',columns.*,filtered_bots.*,
sort,verbose)]]">Quarantined</a>: </td> <td class="left">[[fleet.quarantined]]</
td> </tr> </tbody></table> <div class="header buffer">Selected</div> <table> <tb
ody><tr> <td class="right"> Displayed: </td> <td class="left">[[_currentlyDispla
yed(filtered_bots.*)]]</td> </tr> <tr> <td class="right"> All: </td> <td class="
left">[[_count_query.count]]</td> </tr> <tr> <td class="right"> <a href$="[[_mak
eURL('alive','true',columns.*,filtered_bots.*,sort,verbose)]]">Alive</a>: </td>
<td class="left">[[_computeAlive(_count_query.*)]]</td> </tr> <tr> <td class="ri
ght"> <a href$="[[_makeURL('busy','true',columns.*,filtered_bots.*,sort,verbose)
]]">Busy</a>: </td> <td class="left">[[_count_query.busy]]</td> </tr> <tr> <td c
lass="right"> <a href$="[[_makeURL('idle','true',columns.*,filtered_bots.*,sort,
verbose)]]">Idle</a>: </td> <td class="left">[[_computeIdle(_count_query.*)]]</t
d> </tr> <tr> <td class="right"> <a href$="[[_makeURL('dead','true',columns.*,fi
ltered_bots.*,sort,verbose)]]">Dead</a>: </td> <td class="left">[[_count_query.d
ead]]</td> </tr> <tr> <td class="right"> <a href$="[[_makeURL('quarantined','tru
e',columns.*,filtered_bots.*,sort,verbose)]]">Quarantined</a>: </td> <td class="
left">[[_count_query.quarantined]]</td> </tr> </tbody></table> </template> <scri
pt>Polymer({is:"bot-list-summary",behaviors:[SwarmingBehaviors.BotListBehavior],
properties:{auth_headers:{type:Object},busy:{type:Boolean,value:!1,notify:!0},co
lumns:{type:Array},count_params:{type:Object},filtered_bots:{type:Array},fleet:{
type:Object},sort:{type:String},verbose:{type:Boolean},_count_query:{type:Object
}},observers:["_recountTotal(auth_headers.*,count_params.*)"],_computeAlive:func
tion(){return this._count_query.count-this._count_query.dead},_computeIdle:funct
ion(){return this._count_query.count-this._count_query.busy},_currentlyDisplayed
:function(){return this.filtered_bots&&this.filtered_bots.length},_getFilterStr:
function(t){return t?"alive"===t||"dead"===t||"quarantined"===t?"status:"+t:"tas
k:"+t:""},_makeURL:function(t,e){if(!e){var r={s:[this.sort],c:this.columns,v:[t
his.verbose]};return t&&(r.f=[this._getFilterStr(t)]),window.location.href.split
("?")[0]+"?"+sk.query.fromParamSet(r)}var o=encodeURIComponent(this._getFilterSt
r(t));if(window.location.href.indexOf(o)===-1)return window.location.href+"&f="+
o},_recountTotal:function(){this.auth_headers&&this.count_params&&this._getJsonA
sync("_count_query","/api/swarming/v1/bots/count","busy",this.auth_headers,this.
count_params)}})</script> </dom-module><dom-module id="bot-list" assetpath="/res
/imp/botlist/"> <template> <style include="iron-flex iron-flex-alignment iron-po
sitioning swarming-app-style dynamic-table-style">bot-filters,bot-list-summary{m
argin-bottom:8px;margin-right:10px}.bad-device,.quarantined{background-color:#fd
d}.dead{background-color:#ccc}.alt{background-color:#f8f8f8}.bot-list th>span{pa
dding-right:30px}</style> <url-param name="s" value="{{_sortstr}}" default_value
="id:asc"> </url-param> <swarming-app client_id="[[client_id]]" auth_headers="{{
_auth_headers}}" signed_in="{{_signed_in}}" server_details="{{_server_details}}"
busy="[[_or(_busy1,_busy2,_busy3)]]" name="Swarming Bot List"> <h2 hidden$="[[_
signed_in]]">You must sign in to see anything useful.</h2> <div hidden$="[[_not(
_signed_in)]]"> <div class="horizontal layout"> <bot-filters dimensions="[[_dime
nsions]]" primary_map="[[_primary_map]]" primary_arr="[[_primary_arr]]" special_
columns="[[_specialColumns]]" columns="{{_columns}}" query_params="{{_query_para
ms}}" filter="{{_filter}}" verbose="{{_verbose}}"> </bot-filters> <bot-list-summ
ary auth_headers="[[_auth_headers]]" busy="{{_busy3}}" columns="[[_columns]]" co
unt_params="[[_query_params]]" fleet="[[_fleet]]" filtered_bots="[[_filteredSort
edItems]]" sort="[[_sortstr]]" verbose="[[_verbose]]"> </bot-list-summary> </div
> <bot-list-data id="data" auth_headers="[[_auth_headers]]" query_params="[[_que
ry_params]]" busy="{{_busy1}}" dimensions="{{_dimensions}}" fleet="{{_fleet}}" p
rimary_map="{{_primary_map}}" primary_arr="{{_primary_arr}}"> </bot-list-data> <
table class="bot-list"> <thead on-sort_change="_sortChange"> <tr> <th> <span>Bot
Id</span> <sort-toggle name="id" current="[[_sort]]"> </sort-toggle> </th> <th
hidden$="[[_hide('cloud_console_link', _columns.*)]]"> <span>Bot in Cloud Consol
e</span> <sort-toggle name="cloud_console_link" current="[[_sort]]"> </sort-togg
le> </th> <th hidden$="[[_hide('mp_lease_id', _columns.*)]]"> <span>Machine Prov
ider Lease Id</span> <sort-toggle name="mp_lease_id" current="[[_sort]]"> </sort
-toggle> </th> <th hidden$="[[_hide('task', _columns.*)]]"> <span>Current Task</
span> <sort-toggle name="task" current="[[_sort]]"> </sort-toggle> </th> <templa
te is="dom-repeat" items="[[_plainColumns]]" as="c"> <th hidden$="[[_hide(c)]]">
<span>[[_header(c)]]</span> <sort-toggle name="[[c]]" current="[[_sort]]"> </so
rt-toggle> </th> </template> </tr> </thead> <tbody> <template id="bot_table" is=
"dom-repeat" items="[[_filteredSortedItems]]" as="bot" initial-count="50"> <tr c
lass$="[[_botClass(bot)]]"> <td> <a class="center" href$="[[_botLink(bot.bot_id)
]]" target="_blank" rel="noopener"> [[bot.bot_id]] </a> </td> <td hidden$="[[_hi
de('cloud_console_link', _columns.*)]]"> <a href$="[[_ccLink(bot)]]">[[_ccText(b
ot)]]</a> </td> <td hidden$="[[_hide('mp_lease_id', _columns.*)]]"> <a href$="[[
_mpLink(bot, _server_details.machine_provider_template)]]"> [[_column('mp_lease_
id', bot,_verbose)]] </a> </td> <td hidden$="[[_hide('task', _columns.*)]]"> <a
href$="[[_taskLink(bot.task_id)]]">[[_taskId(bot)]]</a> </td> <template is="dom-
repeat" items="[[_plainColumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_column(
c, bot, _verbose)]] </td> </template> </tr> <template is="dom-repeat" items="[[_
devices(bot)]]" as="device"> <tr hidden$="[[_hide('android_devices', _columns.*)
]]" class$="[[_deviceClass(device,index)]]"> <td></td> <td hidden$="[[_hide('clo
ud_console_link', _columns.*)]]"></td> <td hidden$="[[_hide('mp_lease_id', _colu
mns.*)]]"></td> <td hidden$="[[_hide('task', _columns.*)]]"></td> <template is="
dom-repeat" items="[[_plainColumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_dev
iceColumn(c, device, _verbose)]] </td> </template> </tr> </template> </template>
</tbody> </table> <pageable-data id="page_bots" busy="{{_busy2}}" label="Show m
ore bots" output="{{_items}}" parse="[[_parseBots]]"> </pageable-data> </div> </
swarming-app> </template> <script> (function(){ | 353 the fleet."> <template is="dom-repeat" items="[[_filters]]" as="fil"> <div class
="item horizontal layout" label="[[fil]]"> <span>[[fil]]</span> <span class="fle
x"></span> <iron-icon class="icons" icon="icons:remove-circle-outline" hidden="[
[_cantRemoveFilter(fil,_filters.*)]]" on-tap="_removeFilter"> </iron-icon> </div
> </template> </div> <div class="side-by-side"> <paper-checkbox checked="{{verbo
se}}">Verbose Entries</paper-checkbox> <paper-input id="_limit" label="Limit Res
ults" auto-validate="" min="0" max="1000" pattern="[0-9]+" value="{{_limit}}"> <
/paper-input> <a href$="[[_matchingTasksLink(query_params)]]">View Matching Task
s</a> </div> </div> </div> </template> <script>!function(){var i={disk_space:fun
ction(i,t){return!0},id:function(i,t){return!0},status:function(i,t){return"quar
antined"===t?i.quarantined:"dead"===t?i.is_dead:!i.quarantined&&!i.is_dead},task
:function(i,t){return"idle"===t?"idle"===this._taskId(i):"idle"!==this._taskId(i
)}};Polymer({is:"bot-filters",behaviors:[SwarmingBehaviors.BotListBehavior,Swarm
ingBehaviors.QueryColumnFilter],properties:{columns:{type:Array,notify:!0},query
_params:{type:Object,computed:"_extractQueryParams(dimensions.*,_filters.*, _lim
it)",notify:!0},verbose:{type:Boolean,notify:!0},_filter_input:{type:Object,valu
e:function(){return this.$.filter}},_filterMap:{type:Object,value:function(){var
t=this._commonFilters();for(var n in i)t[n]=i[n];return t}}},_cantToggleColumn:
function(i){return!i||"id"===i},_extractQueryParams:function(){var i={},t=[];thi
s._filters.forEach(function(n){var e=n.split(this.FILTER_SEP,1),s=e[0];if(this.d
imensions.indexOf(s)!==-1){var r=n.substring(s.length+this.FILTER_SEP.length);t.
push(s+this.FILTER_SEP+swarming.alias.unapply(r))}else if("status"===s){var r=n.
substring(s.length+this.FILTER_SEP.length);"alive"===r?(i.is_dead=["FALSE"],i.qu
arantined=["FALSE"]):"quarantined"===r?i.quarantined=["TRUE"]:"dead"===r&&(i.is_
dead=["TRUE"])}}.bind(this)),i.dimensions=t;var n=parseInt(this._limit);return N
umber.isInteger(n)&&(n=Math.max(n,1),n=Math.min(1e3,n),i.limit=[n],this._limit!=
n&&this.set("_limit",n)),i},_matchingTasksLink:function(i){var t=["name","state"
,"created_ts"];return i.dimensions?(i.dimensions.forEach(function(i){var n=i.spl
it(this.FILTER_SEP,1)[0];t.indexOf(n)===-1&&t.push(n)}.bind(this)),this._taskLis
tLink(i.dimensions,t)):this._taskListLink([],t)},_showDimensionMessage:function(
i,t){return i&&"id"!==i&&!t}})}()</script> </dom-module><dom-module id="bot-list
-data" assetpath="/res/imp/botlist/"> <script>!function(){function e(e){if(!e)re
turn{};var t=[],s=0;for(k in e)t.push(k+": "+e[k]),s+=e[k];return s/=t.length,s=
s?s.toFixed(1):"unknown",{average:s,zones:t.join(" | ")||"unknown"}}var t="avail
able",s=["quarantined","error"];Polymer({is:"bot-list-data",behaviors:[SwarmingB
ehaviors.BotListBehavior],properties:{auth_headers:{type:Object,observer:"signIn
"},bots:{type:Array,computed:"parseBots(_list)",notify:!0},busy:{type:Boolean,co
mputed:"_or(_busy2,_busy1)",notify:!0},dimensions:{type:Array,computed:"_makeArr
ay(_dimensions)",notify:!0},fleet:{type:Object,computed:"_fleet(_count)",notify:
!0},primary_map:{type:Object,computed:"_primaryMap(_dimensions)",notify:!0},prim
ary_arr:{type:Array,computed:"_primaryArr(dimensions, BOT_PROPERTIES)",notify:!0
},_busy1:{type:Boolean,value:!1},_busy2:{type:Boolean,value:!1},_count:{type:Obj
ect},_dimensions:{type:Object},_list:{type:Object}},signIn:function(){this._getJ
sonAsync("_count","/api/swarming/v1/bots/count","_busy2",this.auth_headers),this
._getJsonAsync("_dimensions","/api/swarming/v1/bots/dimensions","_busy1",this.au
th_headers)},parseBots:function(s){return s&&s.items?(s.items.forEach(function(s
){s.state=s.state||"{}",s.state=JSON.parse(s.state)||{};var n=s.state.disks||{},
i=Object.keys(n);if(i.length){s.disks=[];for(var a=0;a<i.length;a++)s.disks.push
({id:i[a],mb:n[i[a]].free_mb});s.disks.sort(function(e,t){return t.mb-e.mb})}els
e s.disks=[{id:"unknown",mb:0}];s.state.temp=e(s.state.temp);var o=[],r=s&&s.sta
te&&s.state.devices||{};for(key in r){var u=r[key];u.serial=key,u.okay=u.state==
=t;var _=this._dimension(s,"device_type")||["unknown"];u.device_type=_[0],u.temp
=e(u.temp),o.push(u)}s.state.devices=o,s.last_seen_ts&&(s.last_seen_ts=new Date(
s.last_seen_ts)),s.first_seen_ts&&(s.first_seen_ts=new Date(s.first_seen_ts)),s.
lease_expiration_ts&&(s.lease_expiration_ts=new Date(s.lease_expiration_ts))}.bi
nd(this)),s.items):[]},_fleet:function(){return this._count?{all:this._count.cou
nt||-1,alive:this._count.count-this._count.dead||-1,busy:this._count.busy||-1,id
le:this._count.count-this._count.busy||-1,dead:this._count.dead||-1,quarantined:
this._count.quarantined||-1}:{}},_makeArray:function(e){if(!e||!e.bots_dimension
s)return[];var t=[];return e.bots_dimensions.forEach(function(e){s.indexOf(e.key
)===-1&&t.push(e.key)}),t.push("id"),t.sort(),t},_primaryArr:function(e,t){retur
n e.concat(t)},_primaryMap:function(e){e=e.bots_dimensions||[];var t={};return e
.forEach(function(e){if(swarming.alias.DIMENSIONS_WITH_ALIASES.indexOf(e.key)===
-1)t[e.key]=e.value;else{var s=[];e.value.forEach(function(t){s.push(swarming.al
ias.apply(t,e.key))}),t[e.key]=s}}),t.android_devices&&t.android_devices.push("0
"),t.device_os&&t.device_os.push("none"),t.device_type&&t.device_type.push("none
"),t.id=[],t.disk_space=[],t.task=["busy","idle"],t.status=["alive","dead","quar
antined"],t}})}()</script> </dom-module><dom-module id="bot-list-summary" assetp
ath="/res/imp/botlist/"> <template> <style include="swarming-app-style">:host{di
splay:block;border-left:1px solid #000;padding:5px 5px;font-family:sans-serif}.h
eader{font-size:1.2em;font-weight:700}.header.buffer{margin-top:5px}.right{text-
align:right}.left{text-align:left}</style> <div class="header">Fleet</div> <tabl
e> <tbody><tr> <td class="right"> <a href$="[[_makeURL('','',columns.*,filtered_
bots.*,sort,verbose)]]">All</a>: </td> <td class="left">[[fleet.all]]</td> </tr>
<tr> <td class="right"> <a href$="[[_makeURL('alive','',columns.*,filtered_bots
.*,sort,verbose)]]">Alive</a>: </td> <td class="left">[[fleet.alive]]</td> </tr>
<tr> <td class="right"> <a href$="[[_makeURL('busy','',columns.*,filtered_bots.
*,sort,verbose)]]">Busy</a>: </td> <td class="left">[[fleet.busy]]</td> </tr> <t
r> <td class="right"> <a href$="[[_makeURL('idle','',columns.*,filtered_bots.*,s
ort,verbose)]]">Idle</a>: </td> <td class="left">[[fleet.idle]]</td> </tr> <tr>
<td class="right"> <a href$="[[_makeURL('dead','',columns.*,filtered_bots.*,sort
,verbose)]]">Dead</a>: </td> <td class="left">[[fleet.dead]]</td> </tr> <tr> <td
class="right"> <a href$="[[_makeURL('quarantined','',columns.*,filtered_bots.*,
sort,verbose)]]">Quarantined</a>: </td> <td class="left">[[fleet.quarantined]]</
td> </tr> </tbody></table> <div class="header buffer">Selected</div> <table> <tb
ody><tr> <td class="right"> Displayed: </td> <td class="left">[[_currentlyDispla
yed(filtered_bots.*)]]</td> </tr> <tr> <td class="right"> All: </td> <td class="
left">[[_count_query.count]]</td> </tr> <tr> <td class="right"> <a href$="[[_mak
eURL('alive','true',columns.*,filtered_bots.*,sort,verbose)]]">Alive</a>: </td>
<td class="left">[[_computeAlive(_count_query.*)]]</td> </tr> <tr> <td class="ri
ght"> <a href$="[[_makeURL('busy','true',columns.*,filtered_bots.*,sort,verbose)
]]">Busy</a>: </td> <td class="left">[[_count_query.busy]]</td> </tr> <tr> <td c
lass="right"> <a href$="[[_makeURL('idle','true',columns.*,filtered_bots.*,sort,
verbose)]]">Idle</a>: </td> <td class="left">[[_computeIdle(_count_query.*)]]</t
d> </tr> <tr> <td class="right"> <a href$="[[_makeURL('dead','true',columns.*,fi
ltered_bots.*,sort,verbose)]]">Dead</a>: </td> <td class="left">[[_count_query.d
ead]]</td> </tr> <tr> <td class="right"> <a href$="[[_makeURL('quarantined','tru
e',columns.*,filtered_bots.*,sort,verbose)]]">Quarantined</a>: </td> <td class="
left">[[_count_query.quarantined]]</td> </tr> </tbody></table> </template> <scri
pt>Polymer({is:"bot-list-summary",behaviors:[SwarmingBehaviors.BotListBehavior],
properties:{auth_headers:{type:Object},busy:{type:Boolean,value:!1,notify:!0},co
lumns:{type:Array},count_params:{type:Object},filtered_bots:{type:Array},fleet:{
type:Object},sort:{type:String},verbose:{type:Boolean},_count_query:{type:Object
}},observers:["_recountTotal(auth_headers.*,count_params.*)"],_computeAlive:func
tion(){return this._count_query.count-this._count_query.dead},_computeIdle:funct
ion(){return this._count_query.count-this._count_query.busy},_currentlyDisplayed
:function(){return this.filtered_bots&&this.filtered_bots.length},_getFilterStr:
function(t){return t?"alive"===t||"dead"===t||"quarantined"===t?"status:"+t:"tas
k:"+t:""},_makeURL:function(t,e){if(!e){var r={s:[this.sort],c:this.columns,v:[t
his.verbose]};return t&&(r.f=[this._getFilterStr(t)]),window.location.href.split
("?")[0]+"?"+sk.query.fromParamSet(r)}var o=encodeURIComponent(this._getFilterSt
r(t));if(window.location.href.indexOf(o)===-1)return window.location.href+"&f="+
o},_recountTotal:function(){this.auth_headers&&this.count_params&&this._getJsonA
sync("_count_query","/api/swarming/v1/bots/count","busy",this.auth_headers,this.
count_params)}})</script> </dom-module><dom-module id="bot-list" assetpath="/res
/imp/botlist/"> <template> <style include="iron-flex iron-flex-alignment iron-po
sitioning swarming-app-style dynamic-table-style">bot-filters,bot-list-summary{m
argin-bottom:8px;margin-right:10px}.old_version{background-color:#ffd}.bad-devic
e,.quarantined{background-color:#fdd}.dead{background-color:#ccc}.alt{background
-color:#f8f8f8}.bot-list th>span{padding-right:30px}</style> <url-param name="s"
value="{{_sortstr}}" default_value="id:asc"> </url-param> <swarming-app client_
id="[[client_id]]" auth_headers="{{_auth_headers}}" signed_in="{{_signed_in}}" s
erver_details="{{_server_details}}" busy="[[_or(_busy1,_busy2,_busy3)]]" name="S
warming Bot List"> <h2 hidden$="[[_signed_in]]">You must sign in to see anything
useful.</h2> <div hidden$="[[_not(_signed_in)]]"> <div class="horizontal layout
"> <bot-filters dimensions="[[_dimensions]]" primary_map="[[_primary_map]]" prim
ary_arr="[[_primary_arr]]" special_columns="[[_specialColumns]]" columns="{{_col
umns}}" query_params="{{_query_params}}" filter="{{_filter}}" verbose="{{_verbos
e}}"> </bot-filters> <bot-list-summary auth_headers="[[_auth_headers]]" busy="{{
_busy3}}" columns="[[_columns]]" count_params="[[_query_params]]" fleet="[[_flee
t]]" filtered_bots="[[_filteredSortedItems]]" sort="[[_sortstr]]" verbose="[[_ve
rbose]]"> </bot-list-summary> </div> <bot-list-data id="data" auth_headers="[[_a
uth_headers]]" query_params="[[_query_params]]" busy="{{_busy1}}" dimensions="{{
_dimensions}}" fleet="{{_fleet}}" primary_map="{{_primary_map}}" primary_arr="{{
_primary_arr}}"> </bot-list-data> <table class="bot-list"> <thead on-sort_change
="_sortChange"> <tr> <th> <span>Bot Id</span> <sort-toggle name="id" current="[[
_sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('cloud_console_link', _colum
ns.*)]]"> <span>Bot in Cloud Console</span> <sort-toggle name="cloud_console_lin
k" current="[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('mp_lease_id',
_columns.*)]]"> <span>Machine Provider Lease Id</span> <sort-toggle name="mp_le
ase_id" current="[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('task', _
columns.*)]]"> <span>Current Task</span> <sort-toggle name="task" current="[[_so
rt]]"> </sort-toggle> </th> <template is="dom-repeat" items="[[_plainColumns]]"
as="c"> <th hidden$="[[_hide(c)]]"> <span>[[_header(c)]]</span> <sort-toggle nam
e="[[c]]" current="[[_sort]]"> </sort-toggle> </th> </template> </tr> </thead> <
tbody> <template id="bot_table" is="dom-repeat" items="[[_filteredSortedItems]]"
as="bot" initial-count="50"> <tr class$="[[_botClass(bot,_server_details.bot_ve
rsion)]]"> <td> <a class="center" href$="[[_botLink(bot.bot_id)]]" target="_blan
k" rel="noopener"> [[bot.bot_id]] </a> </td> <td hidden$="[[_hide('cloud_console
_link', _columns.*)]]"> <a href$="[[_ccLink(bot)]]">[[_ccText(bot)]]</a> </td> <
td hidden$="[[_hide('mp_lease_id', _columns.*)]]"> <a href$="[[_mpLink(bot, _ser
ver_details.machine_provider_template)]]"> [[_column('mp_lease_id', bot,_verbose
)]] </a> </td> <td hidden$="[[_hide('task', _columns.*)]]"> <a href$="[[_taskLin
k(bot.task_id)]]">[[_taskId(bot)]]</a> </td> <template is="dom-repeat" items="[[
_plainColumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_column(c, bot, _verbose)
]] </td> </template> </tr> <template is="dom-repeat" items="[[_devices(bot)]]" a
s="device"> <tr hidden$="[[_hide('android_devices', _columns.*)]]" class$="[[_de
viceClass(device,index)]]"> <td></td> <td hidden$="[[_hide('cloud_console_link',
_columns.*)]]"></td> <td hidden$="[[_hide('mp_lease_id', _columns.*)]]"></td> <
td hidden$="[[_hide('task', _columns.*)]]"></td> <template is="dom-repeat" items
="[[_plainColumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_deviceColumn(c, devi
ce, _verbose)]] </td> </template> </tr> </template> </template> </tbody> </table
> <pageable-data id="page_bots" busy="{{_busy2}}" label="Show more bots" output=
"{{_items}}" parse="[[_parseBots]]"> </pageable-data> </div> </swarming-app> </t
emplate> <script> (function(){ |
| 354 var UNKNOWN = "unknown"; | 354 var UNKNOWN = "unknown"; |
| 355 // see dynamic-table for more information on specialColumns, headerMap, | 355 // see dynamic-table for more information on specialColumns, headerMap, |
| 356 // columnMap, and specialSort | 356 // columnMap, and specialSort |
| 357 var specialColumns = ["id", "cloud_console_link", "mp_lease_id", "task"]; | 357 var specialColumns = ["id", "cloud_console_link", "mp_lease_id", "task"]; |
| 358 | 358 |
| 359 var deviceColumns = ["battery_health", "battery_level", "battery_status", "b
attery_temperature", "battery_voltage", "device_temperature"]; | 359 var deviceColumns = ["battery_health", "battery_level", "battery_status", "b
attery_temperature", "battery_voltage", "device_temperature"]; |
| 360 | 360 |
| 361 var headerMap = { | 361 var headerMap = { |
| 362 // "id", "task" and other special columns don't go here. They have their | 362 // "id", "task" and other special columns don't go here. They have their |
| 363 // headers hard-coded above. | 363 // headers hard-coded above. |
| (...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 693 "_checkDeviceColumns(_columns.*)" | 693 "_checkDeviceColumns(_columns.*)" |
| 694 ], | 694 ], |
| 695 | 695 |
| 696 _androidAliasDevice: function(device) { | 696 _androidAliasDevice: function(device) { |
| 697 if (device.notReady) { | 697 if (device.notReady) { |
| 698 return UNAUTHENTICATED.toUpperCase(); | 698 return UNAUTHENTICATED.toUpperCase(); |
| 699 } | 699 } |
| 700 return swarming.alias.android(this._deviceType(device)); | 700 return swarming.alias.android(this._deviceType(device)); |
| 701 }, | 701 }, |
| 702 | 702 |
| 703 _botClass: function(bot) { | 703 _botClass: function(bot, serverVersion) { |
| 704 var classes = ""; |
| 704 if (bot.is_dead) { | 705 if (bot.is_dead) { |
| 705 return "dead"; | 706 classes += "dead "; |
| 706 } | 707 } |
| 707 if (bot.quarantined) { | 708 if (bot.quarantined) { |
| 708 return "quarantined"; | 709 classes += "quarantined "; |
| 709 } | 710 } |
| 710 return ""; | 711 if (bot.version !== serverVersion) { |
| 712 classes += "old_version"; |
| 713 } |
| 714 return classes; |
| 711 }, | 715 }, |
| 712 | 716 |
| 713 _ccLink: function(bot){ | 717 _ccLink: function(bot){ |
| 714 var z = this._attribute(bot, "zone")[0]; | 718 var z = this._attribute(bot, "zone")[0]; |
| 715 if (z === "unknown") { | 719 if (z === "unknown") { |
| 716 return undefined; | 720 return undefined; |
| 717 } | 721 } |
| 718 return this._cloudConsoleLink(z, bot.bot_id); | 722 return this._cloudConsoleLink(z, bot.bot_id); |
| 719 }, | 723 }, |
| 720 | 724 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 770 | 774 |
| 771 _reload: function() { | 775 _reload: function() { |
| 772 if (!this._auth_headers || !this._query_params) { | 776 if (!this._auth_headers || !this._query_params) { |
| 773 return; | 777 return; |
| 774 } | 778 } |
| 775 var url = "/api/swarming/v1/bots/list?" + sk.query.fromParamSet(this._qu
ery_params); | 779 var url = "/api/swarming/v1/bots/list?" + sk.query.fromParamSet(this._qu
ery_params); |
| 776 this.$.page_bots.load(url,this._auth_headers); | 780 this.$.page_bots.load(url,this._auth_headers); |
| 777 } | 781 } |
| 778 | 782 |
| 779 }); | 783 }); |
| 780 })(); </script> </dom-module> <dom-module id="paper-button" assetpath="/res/im
p/bower_components/paper-button/"> <template strip-whitespace=""> <style include
="paper-material-shared-styles">:host{@apply(--layout-inline);@apply(--layout-ce
nter-center);position:relative;box-sizing:border-box;min-width:5.14em;margin:0 .
29em;background:0 0;-webkit-tap-highlight-color:transparent;-webkit-tap-highligh
t-color:transparent;font:inherit;text-transform:uppercase;outline-width:0;border
-radius:3px;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;
user-select:none;cursor:pointer;z-index:0;padding:.7em .57em;@apply(--paper-font
-common-base);@apply(--paper-button)}:host([hidden]){display:none!important}:hos
t([raised].keyboard-focus){font-weight:700;@apply(--paper-button-raised-keyboard
-focus)}:host(:not([raised]).keyboard-focus){font-weight:700;@apply(--paper-butt
on-flat-keyboard-focus)}:host([disabled]){background:#eaeaea;color:#a8a8a8;curso
r:auto;pointer-events:none;@apply(--paper-button-disabled)}:host([animated]){@ap
ply(--shadow-transition)}paper-ripple{color:var(--paper-button-ink-color)}</styl
e> <content></content> </template> <script>Polymer({is:"paper-button",behaviors:
[Polymer.PaperButtonBehavior],properties:{raised:{type:Boolean,reflectToAttribut
e:!0,value:!1,observer:"_calculateElevation"}},_calculateElevation:function(){th
is.raised?Polymer.PaperButtonBehaviorImpl._calculateElevation.apply(this):this._
setElevation(0)}})</script> </dom-module> <script>Polymer.NeonAnimatableBehavior
={properties:{animationConfig:{type:Object},entryAnimation:{observer:"_entryAnim
ationChanged",type:String},exitAnimation:{observer:"_exitAnimationChanged",type:
String}},_entryAnimationChanged:function(){this.animationConfig=this.animationCo
nfig||{},this.animationConfig.entry=[{name:this.entryAnimation,node:this}]},_exi
tAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.
animationConfig.exit=[{name:this.exitAnimation,node:this}]},_copyProperties:func
tion(i,n){for(var t in n)i[t]=n[t]},_cloneConfig:function(i){var n={isClone:!0};
return this._copyProperties(n,i),n},_getAnimationConfigRecursive:function(i,n,t)
{if(this.animationConfig){if(this.animationConfig.value&&"function"==typeof this
.animationConfig.value)return void this._warn(this._logf("playAnimation","Please
put 'animationConfig' inside of your components 'properties' object instead of
outside of it."));var o;if(o=i?this.animationConfig[i]:this.animationConfig,Arra
y.isArray(o)||(o=[o]),o)for(var e,a=0;e=o[a];a++)if(e.animatable)e.animatable._g
etAnimationConfigRecursive(e.type||i,n,t);else if(e.id){var r=n[e.id];r?(r.isClo
ne||(n[e.id]=this._cloneConfig(r),r=n[e.id]),this._copyProperties(r,e)):n[e.id]=
e}else t.push(e)}},getAnimationConfig:function(i){var n={},t=[];this._getAnimati
onConfigRecursive(i,n,t);for(var o in n)t.push(n[o]);return t}}</script> <script
>Polymer.NeonAnimationRunnerBehaviorImpl={_configureAnimations:function(n){var i
=[];if(n.length>0)for(var e,t=0;e=n[t];t++){var o=document.createElement(e.name)
;if(o.isNeonAnimation){var a=null;try{a=o.configure(e),"function"!=typeof a.canc
el&&(a=document.timeline.play(a))}catch(n){a=null,console.warn("Couldnt play","(
",e.name,").",n)}a&&i.push({neonAnimation:o,config:e,animation:a})}else console.
warn(this.is+":",e.name,"not found!")}return i},_shouldComplete:function(n){for(
var i=!0,e=0;e<n.length;e++)if("finished"!=n[e].animation.playState){i=!1;break}
return i},_complete:function(n){for(var i=0;i<n.length;i++)n[i].neonAnimation.co
mplete(n[i].config);for(var i=0;i<n.length;i++)n[i].animation.cancel()},playAnim
ation:function(n,i){var e=this.getAnimationConfig(n);if(e){this._active=this._ac
tive||{},this._active[n]&&(this._complete(this._active[n]),delete this._active[n
]);var t=this._configureAnimations(e);if(0==t.length)return void this.fire("neon
-animation-finish",i,{bubbles:!1});this._active[n]=t;for(var o=0;o<t.length;o++)
t[o].animation.onfinish=function(){this._shouldComplete(t)&&(this._complete(t),d
elete this._active[n],this.fire("neon-animation-finish",i,{bubbles:!1}))}.bind(t
his)}},cancelAnimation:function(){for(var n in this._animations)this._animations
[n].cancel();this._animations={}}},Polymer.NeonAnimationRunnerBehavior=[Polymer.
NeonAnimatableBehavior,Polymer.NeonAnimationRunnerBehaviorImpl]</script> <script
>Polymer.PaperDialogBehaviorImpl={hostAttributes:{role:"dialog",tabindex:"-1"},p
roperties:{modal:{type:Boolean,value:!1}},observers:["_modalChanged(modal, _read
ied)"],listeners:{tap:"_onDialogClick"},ready:function(){this.__prevNoCancelOnOu
tsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancel
OnEscKey,this.__prevWithBackdrop=this.withBackdrop},_modalChanged:function(i,e){
e&&(i?(this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prev
NoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop
,this.noCancelOnOutsideClick=!0,this.noCancelOnEscKey=!0,this.withBackdrop=!0):(
this.noCancelOnOutsideClick=this.noCancelOnOutsideClick&&this.__prevNoCancelOnOu
tsideClick,this.noCancelOnEscKey=this.noCancelOnEscKey&&this.__prevNoCancelOnEsc
Key,this.withBackdrop=this.withBackdrop&&this.__prevWithBackdrop))},_updateClosi
ngReasonConfirmed:function(i){this.closingReason=this.closingReason||{},this.clo
singReason.confirmed=i},_onDialogClick:function(i){for(var e=Polymer.dom(i).path
,o=0;o<e.indexOf(this);o++){var t=e[o];if(t.hasAttribute&&(t.hasAttribute("dialo
g-dismiss")||t.hasAttribute("dialog-confirm"))){this._updateClosingReasonConfirm
ed(t.hasAttribute("dialog-confirm")),this.close(),i.stopPropagation();break}}}},
Polymer.PaperDialogBehavior=[Polymer.IronOverlayBehavior,Polymer.PaperDialogBeha
viorImpl]</script> <dom-module id="paper-dialog-shared-styles" assetpath="/res/i
mp/bower_components/paper-dialog-behavior/"> <template> <style>:host{display:blo
ck;margin:24px 40px;background:var(--paper-dialog-background-color,--primary-bac
kground-color);color:var(--paper-dialog-color,--primary-text-color);@apply(--pap
er-font-body1);@apply(--shadow-elevation-16dp);@apply(--paper-dialog)}:host>::co
ntent>*{margin-top:20px;padding:0 24px}:host>::content>.no-padding{padding:0}:ho
st>::content>:first-child{margin-top:24px}:host>::content>:last-child{margin-bot
tom:24px}:host>::content h2{position:relative;margin:0;@apply(--paper-font-title
);@apply(--paper-dialog-title)}:host>::content .buttons{position:relative;paddin
g:8px 8px 8px 24px;margin:0;color:var(--paper-dialog-button-color,--primary-colo
r);@apply(--layout-horizontal);@apply(--layout-end-justified)}</style> </templat
e> </dom-module> <dom-module id="paper-dialog" assetpath="/res/imp/bower_compone
nts/paper-dialog/"> <template> <style include="paper-dialog-shared-styles"></sty
le> <content></content> </template> </dom-module> <script>!function(){Polymer({i
s:"paper-dialog",behaviors:[Polymer.PaperDialogBehavior,Polymer.NeonAnimationRun
nerBehavior],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_rende
rOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderCl
osed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimat
ionFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderCl
osed()}})}()</script> <script>window.SwarmingBehaviors=window.SwarmingBehaviors|
|{},function(){SwarmingBehaviors.TaskBehavior={properties:{BOT_DIED:{type:String
,value:"BOT_DIED"},CANCELED:{type:String,value:"CANCELED"},COMPLETED:{type:Strin
g,value:"COMPLETED"},COMPLETED_DEDUPED:{type:String,value:"COMPLETED (DEDUPED)"}
,COMPLETED_FAILURE:{type:String,value:"COMPLETED (FAILURE)"},COMPLETED_SUCCESS:{
type:String,value:"COMPLETED (SUCCESS)"},EXPIRED:{type:String,value:"EXPIRED"},P
ENDING:{type:String,value:"PENDING"},RUNNING:{type:String,value:"RUNNING"},TIMED
_OUT:{type:String,value:"TIMED_OUT"}},stateClass:function(t){return t===this.CAN
CELED||t===this.TIMED_OUT||t===this.EXPIRED?"exception":t===this.BOT_DIED?"bot_d
ied":t===this.COMPLETED_FAILURE?"failed_task":t===this.RUNNING||t===this.PENDING
?"pending_task":""},state:function(t){return t?t.state===this.COMPLETED?t.failur
e?this.COMPLETED_FAILURE:"0"===t.try_number?this.COMPLETED_DEDUPED:this.COMPLETE
D_SUCCESS:t.state:""},_stateClass:function(t){return this.stateClass(this.state(
t))}}}()</script> <dom-module id="task-style" assetpath="/res/imp/common/"> <tem
plate> <style>.failed_task{background-color:#fdd}.bot_died{background-color:#ccc
}.exception{background-color:#edd2ff}.pending_task{background-color:#fffc6c}</st
yle> </template> </dom-module><dom-module id="task-filters" assetpath="/res/imp/
tasklist/"> <template> <style is="custom-style" include="iron-flex iron-flex-ali
gnment iron-positioning query-column-filter-style swarming-app-style">.item.wide
{max-width:400px}.selector.wide{min-width:275px}</style> <url-param name="f" val
ue="{{_filters}}" default_values="[]" multi=""> </url-param> <url-param name="c"
value="{{columns}}" default_values="["name","state","c
reated_ts","user"]" multi=""> </url-param> <url-param name="q" va
lue="{{_query}}" default_value=""> </url-param> <url-param name="l" default_valu
e="50" value="{{_limit}}"> </url-param> <div class="container horizontal layout"
> <div class="narrow-down-selector"> <div> <iron-a11y-keys target="[[_filter_inp
ut]]" keys="enter" on-keys-pressed="_manuallyAddFilter"></iron-a11y-keys> <paper
-input id="filter" label="Search columns and filters or supply a filter and pres
s enter" placeholder="gpu nvidia pool:Chrome" value="{{_query::input}}"> </paper
-input> </div> <div class="wide selector side-by-side" title="This shows all tas
k tags and other interesting task properties. Mark the check box to add as a col
umn. Select the row to see filter options."> <iron-selector attr-for-selected="l
abel" selected="{{_primarySelected}}"> <template is="dom-repeat" items="[[_prima
ryItems]]" as="item"> <div class="selectable item horizontal layout" label="[[it
em]]"> <span>[[_beforeBold(item,_query)]]<span class="bold">[[_bold(item,_query)
]]</span>[[_afterBold(item,_query)]]</span> <span class="flex"></span> <paper-ch
eckbox noink="" disabled$="[[_cantToggleColumn(item)]]" checked="[[_columnState(
item,columns.*)]]" on-change="_toggleColumn"> </paper-checkbox> </div> </templat
e> </iron-selector> </div> <div class="selector side-by-side" title="These are m
ost of the options (if any) that the task list can be filtered on. This list is
all that have been seen recently, augmented with the ones returned by the curren
t query. There may be others."> <template is="dom-repeat" id="secondaryList" ite
ms="[[_secondaryItems]]" as="item"> <div class="item horizontal layout" label="[
[item]]"> <span>[[_beforeBold(item,_query)]]<span class="bold">[[_bold(item,_que
ry)]]</span>[[_afterBold(item,_query)]]</span> <span class="flex"></span> <iron-
icon class="icons" icon="icons:arrow-forward" hidden="[[_cantAddFilter(_primaryS
elected,item,_filters.*)]]" on-tap="_addFilter"> </iron-icon> </div> </template>
<template is="dom-if" if="[[_secondaryItems.length]]"> <div class="pointable it
em" title="There may be more valid options than just the ones shown.">...</div>
</template> <template is="dom-if" if="[[_showTagMessage(_primarySelected,_second
aryItems.length)]]"> <div class="item">Only tags can be used for filtering. <i>"
[[_primarySelected]]"</i> is informational only.</div> </template> </div> <div c
lass="selector side-by-side" title="These tag filters are AND'd together and app
lied to all tasks."> <template is="dom-repeat" items="[[_filters]]" as="fil"> <d
iv class="item horizontal layout" label="[[fil]]"> <span>[[fil]]</span> <span cl
ass="flex"></span> <iron-icon class="icons" icon="icons:remove-circle-outline" h
idden="[[_cantRemoveFilter(fil,_filters.*)]]" on-tap="_removeFilter"> </iron-ico
n> </div> </template> </div> <div class="side-by-side"> <paper-input id="_limit"
label="Limit Results" auto-validate="" min="0" max="1000" pattern="[0-9]+" valu
e="{{_limit}}"> </paper-input> <a href$="[[_matchingBotsLink(query_params,dimens
ions.*)]]">View Matching Bots</a> </div> </div> </div> </template> <script>!func
tion(){var t={state:function(t,i){var r=this._attribute(t,"state")[0];if(i===r||
"ALL"===i)return!0;if("PENDING_RUNNING"===i)return r===this.PENDING||r===this.RU
NNING;var s=this._attribute(t,"failure",!1)[0];if("COMPLETED_SUCCESS"===i)return
r===this.COMPLETED&&!s;if("COMPLETED_FAILURE"===i)return r===this.COMPLETED&&s;
var n=this._attribute(t,"try_number","-1")[0];return"DEDUPED"===i?r===this.COMPL
ETED&&"0"===n:void 0}};Polymer({is:"task-filters",behaviors:[SwarmingBehaviors.Q
ueryColumnFilter,SwarmingBehaviors.TaskBehavior],properties:{columns:{type:Array
,notify:!0},query_params:{type:Object,computed:"_extractQueryParams(_filters.*,
_limit)",notify:!0},_filterMap:{type:Object,value:function(){var i=this._commonF
ilters();for(var r in t)i[r]=t[r];return i}}},_cantToggleColumn:function(t){retu
rn!t||"name"===t},_extractQueryParams:function(){var t={},i=[];this._filters.for
Each(function(r){var s=r.split(this.FILTER_SEP,1),n=s[0],e=r.substring(n.length+
this.FILTER_SEP.length);"state"===n?t.state=[e]:("user"===n&&"none"===e&&(e=""),
i.push(n+this.FILTER_SEP+swarming.alias.unapply(e)))}.bind(this)),t.tags=i;var r
=parseInt(this._limit);return Number.isInteger(r)&&(r=Math.max(r,1),r=Math.min(1
e3,r),t.limit=[r],this._limit!=r&&this.set("_limit",r)),t},_matchingBotsLink:fun
ction(t){var i=["id","os","task","status"];if(!t.tags||!this.dimensions)return t
his._botListLink([],i);var r=t.tags.filter(function(t){var i=t.split(this.FILTER
_SEP,1)[0];return this.dimensions.indexOf(i)!==-1}.bind(this));return r.forEach(
function(t){var r=t.split(this.FILTER_SEP,1)[0];i.indexOf(r)===-1&&i.push(r)}.bi
nd(this)),this._botListLink(r,i)},_showTagMessage:function(t,i){return t&&"name"
!==t&&!i}})}()</script> </dom-module><dom-module id="task-list-data" assetpath="
/res/imp/tasklist/"> <script>!function(){var t=["abandoned_ts","completed_ts","c
reated_ts","modified_ts","started_ts"],s=["quarantined","error"];Polymer({is:"ta
sk-list-data",behaviors:[SwarmingBehaviors.CommonBehavior,SwarmingBehaviors.Task
Behavior],properties:{auth_headers:{type:Object,observer:"signIn"},query_params:
{type:Object},tasks:{type:Array},busy:{type:Boolean,computed:"_or(_busy2,_busy1)
",notify:!0},dimensions:{type:Array,computed:"_makeArray(_dimensions)",notify:!0
},primary_map:{type:Object,computed:"_primaryMap(_tags,_dimensions,tasks.*)",not
ify:!0},primary_arr:{type:Array,computed:"_primaryArr(primary_map)",notify:!0},_
busy2:{type:Boolean,value:!1},_busy1:{type:Boolean,value:!1},_dimensions:{type:O
bject},_list:{type:Object},_tags:{type:Object}},signIn:function(){this._getJsonA
sync("_tags","/api/swarming/v1/tasks/tags","_busy2",this.auth_headers),this._get
JsonAsync("_dimensions","/api/swarming/v1/bots/dimensions","_busy1",this.auth_he
aders)},_makeArray:function(t){if(!t||!t.bots_dimensions)return[];var a=[];retur
n t.bots_dimensions.forEach(function(t){s.indexOf(t.key)===-1&&a.push(t.key)}),a
.push("id"),a.sort(),a},_primaryArr:function(t){var s=Object.keys(t);return s.so
rt(),s},_primaryMap:function(s,a){s=s&&s.tasks_tags||[],a=a&&a.bots_dimensions||
[],tasks=this.tasks||[];var e={};s.forEach(function(t){e[t.key]||(e[t.key]={});v
ar s=t.value||[];s.forEach(function(s){e[t.key][s]=!0})}),a.forEach(function(t){
var s=t.value;e[t.key]||(e[t.key]={}),s.forEach(function(s){e[t.key][s]=!0})}),t
asks.forEach(function(t){Object.keys(t.tagMap).forEach(function(s){var a=t.tagMa
p[s];e[s]||(e[s]={}),e[s][a]=!0})}),e.user&&(delete e.user[""],e.user.none=!0);v
ar r={};for(key in e){var n=Object.keys(e[key]);if(swarming.alias.DIMENSIONS_WIT
H_ALIASES.indexOf(key)===-1)r[key]=n;else{var i=[];n.forEach(function(t){i.push(
swarming.alias.apply(t,key))}),r[key]=i}}return r.name=[],r.state=[this.PENDING,
this.RUNNING,"PENDING_RUNNING",this.COMPLETED,"COMPLETED_SUCCESS","COMPLETED_FAI
LURE",this.EXPIRED,this.TIMED_OUT,this.BOT_DIED,this.CANCELED,"DEDUPED","ALL"],r
.costs_usd=[],r.deduped_from=[],r.duration=[],r.server_versions=[],r.bot=[],t.fo
rEach(function(t){r[t]=[]}),r},parseTasks:function(s){if(!s||!s.items)return[];v
ar a=new Date;return s.items.forEach(function(s){var e={};s.tags=s.tags||[],s.ta
gs.forEach(function(t){var s=t.split(":",1),a=s[0],r=t.substring(a.length+1);e[a
]=r}),s.tagMap=e,t.forEach(function(t){s[t]&&(s[t]=new Date(s[t]),s["human_"+t]=
sk.human.localeTime(s[t]))}),!s.duration&&s.state===this.RUNNING&&s.started_ts&&
(s.duration=(a-s.started_ts)/1e3),s.duration&&(s.human_duration=this._humanDurat
ion(s.duration))}.bind(this)),s.items}})}()</script> </dom-module> <dom-module i
d="task-list" assetpath="/res/imp/tasklist/"> <template> <style include="iron-fl
ex iron-flex-alignment iron-positioning swarming-app-style dynamic-table-style t
ask-style">task-filters{margin-bottom:8px;margin-right:10px}.task-list th>span{p
adding-right:30px}</style> <url-param name="s" value="{{_sortstr}}" default_valu
e="created_ts:desc"> </url-param> <swarming-app client_id="[[client_id]]" auth_h
eaders="{{_auth_headers}}" permissions="{{_permissions}}" signed_in="{{_signed_i
n}}" busy="[[_or(_busy1,_busy2)]]" name="Swarming Task List"> <h2 hidden$="[[_si
gned_in]]">You must sign in to see anything useful.</h2> <div hidden$="[[_not(_s
igned_in)]]"> <task-list-data id="data" auth_headers="[[_auth_headers]]" query_p
arams="[[_query_params]]" tasks="[[_items]]" busy="{{_busy1)}}" dimensions="{{_d
imensions}}" primary_map="{{_primary_map}}" primary_arr="{{_primary_arr}}"> </ta
sk-list-data> <div class="horizontal layout"> <task-filters dimensions="[[_dimen
sions]]" primary_map="[[_primary_map]]" primary_arr="[[_primary_arr]]" special_c
olumns="[[_specialColumns]]" columns="{{_columns}}" query_params="{{_query_param
s}}" filter="{{_filter}}"> </task-filters> </div> <table class="task-list"> <the
ad on-sort_change="_sortChange"> <tr> <th> <span>Task Name</span> <sort-toggle n
ame="name" current="[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('state
', _columns.*)]]"> <span>State</span> <sort-toggle name="state" current="[[_sort
]]"> </sort-toggle> </th> <th hidden$="[[_hide('bot', _columns.*)]]"> <span>Bot
Assigned</span> <sort-toggle name="bot" current="[[_sort]]"> </sort-toggle> </th
> <th hidden$="[[_hide('deduped_from', _columns.*)]]"> <span>Deduped from</span>
<sort-toggle name="deduped_from" current="[[_sort]]"> </sort-toggle> </th> <th
hidden$="[[_hide('source_revision', _columns.*)]]"> <span>Source Revision</span>
<sort-toggle name="source_revision" current="[[_sort]]"> </sort-toggle> </th> <
template is="dom-repeat" items="[[_plainColumns]]" as="c"> <th hidden$="[[_hide(
c)]]"> <span>[[_header(c)]]</span> <sort-toggle name="[[c]]" current="[[_sort]]"
> </sort-toggle> </th> </template> </tr> </thead> <tbody> <template id="tasks_ta
ble" is="dom-repeat" items="[[_filteredSortedItems]]" as="task" initial-count="5
0"> <tr class$="[[_taskClass(task)]]"> <td> <a class="center" href$="[[_taskLink
(task.task_id)]]" target="_blank"> [[task.name]] </a> </td> <td hidden$="[[_hide
('state', _columns.*)]]"> [[_column('state', task)]] <paper-button raised="" hid
den$="[[_cannotCancel(task,_permissions)]]" on-tap="_promptCancel"> Cancel </pap
er-button> </td> <td hidden$="[[_hide('bot', _columns.*)]]"> <a class="center" h
ref$="[[_botLink(task.bot_id)]]" target="_blank"> [[_column('bot',task)]] </a> <
/td> <td hidden$="[[_hide('deduped_from', _columns.*)]]"> <a class="center" href
$="[[_taskLink(task.deduped_from)]]" target="_blank"> [[_column('deduped_from',t
ask)]] </a> </td> <td hidden$="[[_hide('source_revision', _columns.*)]]"> <a cla
ss="center" href$="[[_sourceLink(task)]]" target="_blank"> [[_column('source_rev
ision',task)]] </a> </td> <template is="dom-repeat" items="[[_plainColumns]]" as
="c"> <td hidden$="[[_hide(c)]]"> [[_column(c, task)]] </td> </template> </tr> <
/template> </tbody> </table> <pageable-data id="page_tasks" busy="{{_busy2}}" la
bel="Show more tasks" output="{{_items}}" parse="[[_parseTasks]]"> </pageable-da
ta> </div> </swarming-app> <paper-dialog id="prompt" modal="" on-iron-overlay-cl
osed="_promptClosed"> <h2>Are you sure?</h2> <div>Are you sure you want to [[_di
alogPrompt]]?</div> <div class="buttons"> <paper-button dialog-dismiss="" autofo
cus="">No</paper-button> <paper-button dialog-confirm="">Yes</paper-button> </di
v> </paper-dialog> </template> <script>!function(){function t(t){return function
(e){return this._attribute(e,"human_"+t)[0]}}function e(t){return function(e,a,s
){var r=this._attribute(a,t,"0")[0],n=this._attribute(s,t,"0")[0];return e*(r-n)
}}var a=["deduped_from","name","state","bot","source_revision"],s={abandoned_ts:
t("abandoned_ts"),bot:function(t){return this._attribute(t,"bot_id")[0]},complet
ed_ts:t("completed_ts"),costs_usd:function(t){return this._attribute(t,"costs_us
d",0)[0]},created_ts:t("created_ts"),duration:t("duration"),modified_ts:t("modif
ied_ts"),source_revision:function(t){var e=this._attribute(t,"source_revision")[
0];return e.substring(0,8)},started_ts:t("started_ts"),state:function(t){var e=t
his._attribute(t,"state")[0];if("COMPLETED"===e){if(this._attribute(t,"failure",
!1)[0])return"COMPLETED (FAILURE)";var a=this._attribute(t,"try_number","-1")[0]
;return"0"===a?"COMPLETED (DEDUPED)":"COMPLETED (SUCCESS)"}return e}},r={abandon
ed_ts:"Abandoned On",completed_ts:"Completed On",created_ts:"Created On",duratio
n:"Duration",modified_ts:"Last Modified",started_ts:"Started Working On",user:"R
equesting User"},n={abandoned_ts:e("abandoned_ts"),completed_ts:e("completed_ts"
),created_ts:e("created_ts"),duration:e("duration"),modified_ts:e("modified_ts")
,started_ts:e("started_ts")};Polymer({is:"task-list",behaviors:[SwarmingBehavior
s.DynamicTableBehavior,SwarmingBehaviors.TaskBehavior],properties:{client_id:{ty
pe:String},_busy1:{type:Boolean,value:!1},_busy2:{type:Boolean,value:!1},_parseT
asks:{type:Function,value:function(){return this.$.data.parseTasks.bind(this)}},
_toCancel:{type:String},_columnMap:{type:Object,value:function(){var t=this._com
monColumns();for(var e in s)t[e]=s[e];return t}},_headerMap:{type:Object,value:r
},_specialColumns:{type:Array,value:a},_specialSort:{type:Object,value:n}},obser
vers:["reload(_query_params,_auth_headers)"],_attribute:function(t,e,a){void 0==
=a&&(a="none");var s=this._tag(t,e)||t[e]||[a];return Array.isArray(s)?s:[s]},_c
annotCancel:function(t,e){return!(e&&e.cancel_task&&"PENDING"===this._column("st
ate",t))},_cancelTask:function(){var t="/api/swarming/v1/task/"+this._toCancel+"
/cancel";swarming.postWithToast(t,"Canceling task "+this._toCancel,this._auth_he
aders),this.set("_toCancel","")},_promptClosed:function(t){t.detail.confirmed&&t
his._cancelTask()},_promptCancel:function(t){var e=t.model.task;return e&&e.task
_id?(this.set("_toCancel",e.task_id),this.set("_dialogPrompt",'cancel task "'+e.
name+'"'),void this.$.prompt.open()):void console.log("Missing task info",e)},re
load:function(){if(this._auth_headers&&this._query_params){var t="/api/swarming/
v1/tasks/list?"+sk.query.fromParamSet(this._query_params);this.$.page_tasks.load
(t,this._auth_headers)}},_sourceLink:function(t){var e=this._attribute(t,"source
_revision")[0],a=this._attribute(t,"source_repo")[0];return"none"!==e&&"none"!==
a&&a.replace("%s",e)},_tag:function(t,e){if(t&&t.tagMap)return t.tagMap[e]},_tas
kClass:function(t){return this.stateClass(this._column("state",t))}})}()</script
> </dom-module> <dom-module id="iron-collapse" assetpath="/res/imp/bower_compone
nts/iron-collapse/"> <template> <style>:host{display:block;transition-duration:v
ar(--iron-collapse-transition-duration,300ms);overflow:visible}:host(.iron-colla
pse-closed){display:none}:host(:not(.iron-collapse-opened)){overflow:hidden}</st
yle> <content></content> </template> </dom-module> <script>Polymer({is:"iron-col
lapse",behaviors:[Polymer.IronResizableBehavior],properties:{horizontal:{type:Bo
olean,value:!1,observer:"_horizontalChanged"},opened:{type:Boolean,value:!1,noti
fy:!0,observer:"_openedChanged"},noAnimation:{type:Boolean},_desiredSize:{type:S
tring,value:""}},get dimension(){return this.horizontal?"width":"height"},get _d
imensionMax(){return this.horizontal?"maxWidth":"maxHeight"},get _dimensionMaxCs
s(){return this.horizontal?"max-width":"max-height"},hostAttributes:{role:"group
","aria-hidden":"true","aria-expanded":"false"},listeners:{transitionend:"_trans
itionEnd"},attached:function(){this._transitionEnd()},toggle:function(){this.ope
ned=!this.opened},show:function(){this.opened=!0},hide:function(){this.opened=!1
},updateSize:function(i,t){if(i="auto"===i?"":i,this._desiredSize!==i){this._des
iredSize=i,this._updateTransition(!1);var e=t&&!this.noAnimation&&this._isDispla
yed;if(e){var n=this._calcSize();""===i&&(this.style[this._dimensionMax]="",i=th
is._calcSize()),this.style[this._dimensionMax]=n,this.scrollTop=this.scrollTop,t
his._updateTransition(!0),e=i!==n}this.style[this._dimensionMax]=i,e||this._tran
sitionEnd()}},enableTransition:function(i){Polymer.Base._warn("`enableTransition
()` is deprecated, use `noAnimation` instead."),this.noAnimation=!i},_updateTran
sition:function(i){this.style.transitionDuration=i&&!this.noAnimation?"":"0s"},_
horizontalChanged:function(){this.style.transitionProperty=this._dimensionMaxCss
;var i="maxWidth"===this._dimensionMax?"maxHeight":"maxWidth";this.style[i]="",t
his.updateSize(this.opened?"auto":"0px",!1)},_openedChanged:function(){this.setA
ttribute("aria-expanded",this.opened),this.setAttribute("aria-hidden",!this.open
ed),this.toggleClass("iron-collapse-closed",!1),this.toggleClass("iron-collapse-
opened",!1),this.updateSize(this.opened?"auto":"0px",!0),this.opened&&this.focus
()},_transitionEnd:function(){this.style[this._dimensionMax]=this._desiredSize,t
his.toggleClass("iron-collapse-closed",!this.opened),this.toggleClass("iron-coll
apse-opened",this.opened),this._updateTransition(!1),this.notifyResize()},get _i
sDisplayed(){var i=this.getBoundingClientRect();for(var t in i)if(0!==i[t])retur
n!0;return!1},_calcSize:function(){return this.getBoundingClientRect()[this.dime
nsion]+"px"}})</script> <script>Polymer.IronMenubarBehaviorImpl={hostAttributes:
{role:"menubar"},keyBindings:{left:"_onLeftKey",right:"_onRightKey"},_onUpKey:fu
nction(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefault()},_onD
ownKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preventDefaul
t()},get _isRTL(){return"rtl"===window.getComputedStyle(this).direction},_onLeft
Key:function(e){this._isRTL?this._focusNext():this._focusPrevious(),e.detail.key
boardEvent.preventDefault()},_onRightKey:function(e){this._isRTL?this._focusPrev
ious():this._focusNext(),e.detail.keyboardEvent.preventDefault()},_onKeydown:fun
ction(e){this.keyboardEventMatchesKeys(e,"up down left right esc")||this._focusW
ithKeyboardEvent(e)}},Polymer.IronMenubarBehavior=[Polymer.IronMenuBehavior,Poly
mer.IronMenubarBehaviorImpl]</script> <iron-iconset-svg name="paper-tabs" size="
24"> <svg><defs> <g id="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.
41L10.83 12z"></path></g> <g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 1
2l-4.58 4.59L10 18l6-6z"></path></g> </defs></svg> </iron-iconset-svg> <dom-modu
le id="paper-tab" assetpath="/res/imp/bower_components/paper-tabs/"> <template>
<style>:host{@apply(--layout-inline);@apply(--layout-center);@apply(--layout-cen
ter-justified);@apply(--layout-flex-auto);position:relative;padding:0 12px;overf
low:hidden;cursor:pointer;vertical-align:middle;@apply(--paper-font-common-base)
;@apply(--paper-tab)}:host(:focus){outline:0}:host([link]){padding:0}.tab-conten
t{height:100%;transform:translateZ(0);-webkit-transform:translateZ(0);transition
:opacity .1s cubic-bezier(.4,0,1,1);@apply(--layout-horizontal);@apply(--layout-
center-center);@apply(--layout-flex-auto);@apply(--paper-tab-content)}:host(:not
(.iron-selected))>.tab-content{opacity:.8;@apply(--paper-tab-content-unselected)
}:host(:focus) .tab-content{opacity:1;font-weight:700}paper-ripple{color:var(--p
aper-tab-ink,--paper-yellow-a100)}.tab-content>::content>a{@apply(--layout-flex-
auto);height:100%}</style> <div class="tab-content"> <content></content> </div>
</template> <script>Polymer({is:"paper-tab",behaviors:[Polymer.IronControlState,
Polymer.IronButtonState,Polymer.PaperRippleBehavior],properties:{link:{type:Bool
ean,value:!1,reflectToAttribute:!0}},hostAttributes:{role:"tab"},listeners:{down
:"_updateNoink",tap:"_onTap"},attached:function(){this._updateNoink()},get _pare
ntNoink(){var t=Polymer.dom(this).parentNode;return!!t&&!!t.noink},_updateNoink:
function(){this.noink=!!this.noink||!!this._parentNoink},_onTap:function(t){if(t
his.link){var e=this.queryEffectiveChildren("a");if(!e)return;if(t.target===e)re
turn;e.click()}}})</script> </dom-module> <dom-module id="paper-tabs" assetpath=
"/res/imp/bower_components/paper-tabs/"> <template> <style>:host{@apply(--layout
);@apply(--layout-center);height:48px;font-size:14px;font-weight:500;overflow:hi
dden;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-se
lect:none;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:tr
ansparent;@apply(--paper-tabs)}:host-context([dir=rtl]){@apply(--layout-horizont
al-reverse)}#tabsContainer{position:relative;height:100%;white-space:nowrap;over
flow:hidden;@apply(--layout-flex-auto)}#tabsContent{height:100%;-moz-flex-basis:
auto;-ms-flex-basis:auto;flex-basis:auto}#tabsContent.scrollable{position:absolu
te;white-space:nowrap}#tabsContent.scrollable.fit-container,#tabsContent:not(.sc
rollable){@apply(--layout-horizontal)}#tabsContent.scrollable.fit-container{min-
width:100%}#tabsContent.scrollable.fit-container>::content>*{-ms-flex:1 0 auto;-
webkit-flex:1 0 auto;flex:1 0 auto}.hidden{display:none}.not-visible{opacity:0;c
ursor:default}paper-icon-button{width:48px;height:48px;padding:12px;margin:0 4px
}#selectionBar{position:absolute;height:2px;bottom:0;left:0;right:0;background-c
olor:var(--paper-tabs-selection-bar-color,--paper-yellow-a100);-webkit-transform
:scale(0);transform:scale(0);-webkit-transform-origin:left center;transform-orig
in:left center;transition:-webkit-transform;transition:transform;@apply(--paper-
tabs-selection-bar)}#selectionBar.align-bottom{top:0;bottom:auto}#selectionBar.e
xpand{transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,1,1)
}#selectionBar.contract{transition-duration:.18s;transition-timing-function:cubi
c-bezier(0,0,.2,1)}#tabsContent>::content>:not(#selectionBar){height:100%}</styl
e> <paper-icon-button icon="paper-tabs:chevron-left" class$="[[_computeScrollBut
tonClass(_leftHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp
" on-down="_onLeftScrollButtonDown" tabindex="-1"></paper-icon-button> <div id="
tabsContainer" on-track="_scroll" on-down="_down"> <div id="tabsContent" class$=
"[[_computeTabsContentClass(scrollable, fitContainer)]]"> <div id="selectionBar"
class$="[[_computeSelectionBarClass(noBar, alignBottom)]]" on-transitionend="_o
nBarTransitionEnd"></div> <content select="*"></content> </div> </div> <paper-ic
on-button icon="paper-tabs:chevron-right" class$="[[_computeScrollButtonClass(_r
ightHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down=
"_onRightScrollButtonDown" tabindex="-1"></paper-icon-button> </template> <scrip
t>Polymer({is:"paper-tabs",behaviors:[Polymer.IronResizableBehavior,Polymer.Iron
MenubarBehavior],properties:{noink:{type:Boolean,value:!1,observer:"_noinkChange
d"},noBar:{type:Boolean,value:!1},noSlide:{type:Boolean,value:!1},scrollable:{ty
pe:Boolean,value:!1},fitContainer:{type:Boolean,value:!1},disableDrag:{type:Bool
ean,value:!1},hideScrollButtons:{type:Boolean,value:!1},alignBottom:{type:Boolea
n,value:!1},selectable:{type:String,value:"paper-tab"},autoselect:{type:Boolean,
value:!1},autoselectDelay:{type:Number,value:0},_step:{type:Number,value:10},_ho
ldDelay:{type:Number,value:1},_leftHidden:{type:Boolean,value:!1},_rightHidden:{
type:Boolean,value:!1},_previousTab:{type:Object}},hostAttributes:{role:"tablist
"},listeners:{"iron-resize":"_onTabSizingChanged","iron-items-changed":"_onTabSi
zingChanged","iron-select":"_onIronSelect","iron-deselect":"_onIronDeselect"},ke
yBindings:{"left:keyup right:keyup":"_onArrowKeyup"},created:function(){this._ho
ldJob=null,this._pendingActivationItem=void 0,this._pendingActivationTimeout=voi
d 0,this._bindDelayedActivationHandler=this._delayedActivationHandler.bind(this)
,this.addEventListener("blur",this._onBlurCapture.bind(this),!0)},ready:function
(){this.setScrollDirection("y",this.$.tabsContainer)},detached:function(){this._
cancelPendingActivation()},_noinkChanged:function(t){var e=Polymer.dom(this).que
rySelectorAll("paper-tab");e.forEach(t?this._setNoinkAttribute:this._removeNoink
Attribute)},_setNoinkAttribute:function(t){t.setAttribute("noink","")},_removeNo
inkAttribute:function(t){t.removeAttribute("noink")},_computeScrollButtonClass:f
unction(t,e,i){return!e||i?"hidden":t?"not-visible":""},_computeTabsContentClass
:function(t,e){return t?"scrollable"+(e?" fit-container":""):" fit-container"},_
computeSelectionBarClass:function(t,e){return t?"hidden":e?"align-bottom":""},_o
nTabSizingChanged:function(){this.debounce("_onTabSizingChanged",function(){this
._scroll(),this._tabChanged(this.selectedItem)},10)},_onIronSelect:function(t){t
his._tabChanged(t.detail.item,this._previousTab),this._previousTab=t.detail.item
,this.cancelDebouncer("tab-changed")},_onIronDeselect:function(t){this.debounce(
"tab-changed",function(){this._tabChanged(null,this._previousTab),this._previous
Tab=null},1)},_activateHandler:function(){this._cancelPendingActivation(),Polyme
r.IronMenuBehaviorImpl._activateHandler.apply(this,arguments)},_scheduleActivati
on:function(t,e){this._pendingActivationItem=t,this._pendingActivationTimeout=th
is.async(this._bindDelayedActivationHandler,e)},_delayedActivationHandler:functi
on(){var t=this._pendingActivationItem;this._pendingActivationItem=void 0,this._
pendingActivationTimeout=void 0,t.fire(this.activateEvent,null,{bubbles:!0,cance
lable:!0})},_cancelPendingActivation:function(){void 0!==this._pendingActivation
Timeout&&(this.cancelAsync(this._pendingActivationTimeout),this._pendingActivati
onItem=void 0,this._pendingActivationTimeout=void 0)},_onArrowKeyup:function(t){
this.autoselect&&this._scheduleActivation(this.focusedItem,this.autoselectDelay)
},_onBlurCapture:function(t){t.target===this._pendingActivationItem&&this._cance
lPendingActivation()},get _tabContainerScrollSize(){return Math.max(0,this.$.tab
sContainer.scrollWidth-this.$.tabsContainer.offsetWidth)},_scroll:function(t,e){
if(this.scrollable){var i=e&&-e.ddx||0;this._affectScroll(i)}},_down:function(t)
{this.async(function(){this._defaultFocusAsync&&(this.cancelAsync(this._defaultF
ocusAsync),this._defaultFocusAsync=null)},1)},_affectScroll:function(t){this.$.t
absContainer.scrollLeft+=t;var e=this.$.tabsContainer.scrollLeft;this._leftHidde
n=0===e,this._rightHidden=e===this._tabContainerScrollSize},_onLeftScrollButtonD
own:function(){this._scrollToLeft(),this._holdJob=setInterval(this._scrollToLeft
.bind(this),this._holdDelay)},_onRightScrollButtonDown:function(){this._scrollTo
Right(),this._holdJob=setInterval(this._scrollToRight.bind(this),this._holdDelay
)},_onScrollButtonUp:function(){clearInterval(this._holdJob),this._holdJob=null}
,_scrollToLeft:function(){this._affectScroll(-this._step)},_scrollToRight:functi
on(){this._affectScroll(this._step)},_tabChanged:function(t,e){if(!t)return this
.$.selectionBar.classList.remove("expand"),this.$.selectionBar.classList.remove(
"contract"),void this._positionBar(0,0);var i=this.$.tabsContent.getBoundingClie
ntRect(),n=i.width,o=t.getBoundingClientRect(),s=o.left-i.left;if(this._pos={wid
th:this._calcPercent(o.width,n),left:this._calcPercent(s,n)},this.noSlide||null=
=e)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.cla
ssList.remove("contract"),void this._positionBar(this._pos.width,this._pos.left)
;var a=e.getBoundingClientRect(),l=this.items.indexOf(e),c=this.items.indexOf(t)
,r=5;this.$.selectionBar.classList.add("expand");var h=l<c,d=this._isRTL;d&&(h=!
h),h?this._positionBar(this._calcPercent(o.left+o.width-a.left,n)-r,this._left):
this._positionBar(this._calcPercent(a.left+a.width-o.left,n)-r,this._calcPercent
(s,n)+r),this.scrollable&&this._scrollToSelectedIfNeeded(o.width,s)},_scrollToSe
lectedIfNeeded:function(t,e){var i=e-this.$.tabsContainer.scrollLeft;i<0?this.$.
tabsContainer.scrollLeft+=i:(i+=t-this.$.tabsContainer.offsetWidth,i>0&&(this.$.
tabsContainer.scrollLeft+=i))},_calcPercent:function(t,e){return 100*t/e},_posit
ionBar:function(t,e){t=t||0,e=e||0,this._width=t,this._left=e,this.transform("tr
anslateX("+e+"%) scaleX("+t/100+")",this.$.selectionBar)},_onBarTransitionEnd:fu
nction(t){var e=this.$.selectionBar.classList;e.contains("expand")?(e.remove("ex
pand"),e.add("contract"),this._positionBar(this._pos.width,this._pos.left)):e.co
ntains("contract")&&e.remove("contract")}})</script> </dom-module> <dom-module i
d="single-page-style" assetpath="/res/imp/common/"> <template> <style>.header{ma
x-width:800px}.title{font-size:1.5em;font-weight:700;margin:5px}.id_input{margin
-left:5px;--paper-input-container-input:{font-size:2em};}.refresh{max-width:40px
;max-height:40px;width:initial;height:initial}button{min-width:4em;max-height:55
px}table{border-collapse:collapse;margin-left:5px;margin-bottom:8px}td,th{border
:1px solid #BBB;padding:5px}.tabs{background-color:#1F78B4;color:#fff;max-width:
600px;margin-left:5px;--paper-checkbox-label-color:#fff}paper-tab{background-col
or:#A6CEE3;color:#000}paper-tab.iron-selected{background-color:#1F78B4;color:#ff
f;font-weight:700;text-decoration:underline}paper-tab[disabled]{background-color
:#AAA;text-decoration:line-through}.quarantined{background-color:#fdd}.dead{back
ground-color:#ccc}</style> </template> </dom-module><script>!function(){Swarming
Behaviors.BotPageBehavior=[SwarmingBehaviors.CommonBehavior,{}]}()</script> <dom
-module id="bot-page-data" assetpath="/res/imp/botpage/"> <script>!function(){fu
nction t(t){if(!s){var e=t.toString();s=e.substring(e.indexOf("("))}return t.toL
ocaleString()+" "+s}var e,s,i=400,n=["first_seen_ts","last_seen_ts","lease_expir
ation_ts"],a=["started_ts","completed_ts","abandoned_ts","modified_ts"];Polymer(
{is:"bot-page-data",behaviors:[SwarmingBehaviors.BotPageBehavior],properties:{au
th_headers:{type:Object},bot_id:{type:String},busy:{type:Boolean,computed:"_or(_
busy1)",notify:!0},bot:{type:Object,computed:"_parseBot(_bot)",notify:!0},bot_ex
ists:{type:Boolean,value:!0,notify:!0},_busy1:{type:Boolean,value:!1},_bot:{type
:Object},_events:{type:Object},_tasks:{type:Object}},observers:["request(auth_he
aders,bot_id)"],request:function(){this.bot_id&&this.auth_headers&&(e&&this.canc
elAsync(e),e=this.async(function(){e=void 0;var t="/api/swarming/v1/bot/"+this.b
ot_id,s=this._getJsonAsync("_bot",t+"/get","_busy1",this.auth_headers);s.then(fu
nction(){this.set("bot_exists",!0)}.bind(this)).catch(function(t){404===t.status
?this.set("bot_exists",!1):sk.errorMessage("Http response: "+(t.status||" ")+" "
+t.response)}.bind(this)),this.fire("reload",{id:this.bot_id})},i))},_parseBot:f
unction(e){if(!e)return{};e.state=e.state||"{}",e.state=JSON.parse(e.state)||{};
var s=e.state.disks||{},i=Object.keys(s);if(i.length){e.disks=[];for(var a=0;a<i
.length;a++)e.disks.push({id:i[a],mb:s[i[a]].free_mb});e.disks.sort(function(t,e
){return e.mb-t.mb})}else e.disks=[{id:"unknown",mb:0}];return e.dimensions=e.di
mensions||[],e.dimensions.forEach(function(t){swarming.alias.DIMENSIONS_WITH_ALI
ASES.indexOf(t.key)!==-1&&t.value.forEach(function(e,s){t.value[s]=swarming.alia
s.apply(e,t.key)})}),n.forEach(function(s){e[s]&&(e[s]=new Date(e[s]),e["human_"
+s]=t(e[s]))}),e},parseEvents:function(e){if(!e||!e.items)return[];var e=e.items
;return e.forEach(function(e){e.ts&&(e.ts=new Date(e.ts),e.human_ts=t(e.ts))}),e
.sort(function(t,e){return e.ts-t.ts}),e},parseTasks:function(e){if(!e||!e.items
)return[];var e=e.items;return e.forEach(function(e){if(a.forEach(function(s){e[
s]&&(e[s]=new Date(e[s]),e["human_"+s]=t(e[s]))}),e.duration)e.human_duration=th
is._humanDuration(e.duration);else{var s=e.completed_ts||e.abandoned_ts||e.modif
ied_ts||new Date;e.human_duration=this._timeDiffExact(e.started_ts,s),e.duration
=(s.getTime()-e.started_ts)/1e3}e.state=e.state||"UNKNOWN","COMPLETED"===e.state
&&(e.failure?e.state="FAILURE":e.state="SUCCESS")}.bind(this)),e.sort(function(t
,e){return e.started_ts-t.started_ts}),e}})}()</script> </dom-module> <dom-modul
e id="bot-page-summary" assetpath="/res/imp/botpage/"> <template> <style include
="single-page-style">.wrapper{display:table;margin-left:auto;margin-bottom:10px;
margin-right:5px}paper-checkbox{margin-left:5px}.thick{border-top-style:solid}</
style> <url-param name="show_full_names" value="{{_show_full_names}}"> </url-par
am> <url-param name="show_all_tasks" value="{{_show_all_tasks}}"> </url-param> <
url-param name="sort_stats" value="{{_sortstr}}" default_value="total:desc"> </u
rl-param> <div class="wrapper"> <table> <thead on-sort_change="_sortChange"> <tr
> <th> <span>Name</span> <sort-toggle name="full_name" current="[[_sort]]"> </so
rt-toggle> </th> <th> <span>Total</span> <sort-toggle name="total" current="[[_s
ort]]"> </sort-toggle> </th> <th> <span>Success</span> <sort-toggle name="succes
s" current="[[_sort]]"> </sort-toggle> </th> <th> <span>Failed</span> <sort-togg
le name="failed" current="[[_sort]]"> </sort-toggle> </th> <th> <span>Died</span
> <sort-toggle name="bot_died" current="[[_sort]]"> </sort-toggle> </th> <th> <s
pan>Average Duration</span> <sort-toggle name="avg_duration" current="[[_sort]]"
> </sort-toggle> </th> <th> <span>Total Duration</span> <sort-toggle name="total
_time" current="[[_sort]]"> </sort-toggle> </th> <th>Percent of Total</th> </tr>
</thead> <tbody> <template is="dom-repeat" items="[[_tasksToShow]]" as="task">
<tr> <td hidden$="[[_truthy(_show_full_names)]]" title="[[task.full_name]]">[[ta
sk.name]]</td> <td hidden$="[[_not(_show_full_names)]]" title="[[task.full_name]
]">[[task.full_name]]</td> <td>[[task.total]]</td> <td>[[task.success]]</td> <td
>[[task.failed]]</td> <td>[[task.bot_died]]</td> <td>[[_humanDuration(task.avg_d
uration)]]</td> <td>[[_humanDuration(task.total_time)]]</td> <td>[[task.total_ti
me_percent]]%</td> </tr> </template> </tbody> <tbody><tr class="thick"> <td>Tota
l</td> <td>[[_totalStats.total]]</td> <td>[[_totalStats.success]]</td> <td>[[_to
talStats.failed]]</td> <td>[[_totalStats.bot_died]]</td> <td>[[_humanDuration(_t
otalStats.avg_duration)]]</td> <td>[[_humanDuration(_totalStats.total_time)]]</t
d> <td>100.0%</td> </tr> </tbody></table> <div> <table> <thead> <tr> <th title="
How much time passed between the oldest task fetched and now."> Total Wall Time
</th> <th title="How much of the wall time this bot was busy with a task."> Wall
Time Utilization </th> </tr> </thead> <tbody> <tr> <td>[[_humanDuration(_totalS
tats.wall_time)]]</td> <td>[[_totalStats.wall_time_utilization]]%</td> </tr> </t
body> </table> <paper-checkbox checked="{{_show_full_names}}"> Show Full Names <
/paper-checkbox> <paper-checkbox hidden$="[[_cannotExpand]]" checked="{{_show_al
l_tasks}}"> Show All Tasks </paper-checkbox> </div> </div> </template> <script>!
function(){var t=15;Polymer({is:"bot-page-summary",behaviors:[SwarmingBehaviors.
BotPageBehavior],properties:{tasks:{type:Array},_cannotExpand:{type:Boolean,comp
uted:"_countTasks(_taskStats.*)"},_show_all_tasks:{type:Boolean},_show_full_name
s:{type:Boolean},_sortstr:{type:String},_sort:{type:Object,computed:"_makeSortOb
ject(_sortstr)"},_taskStats:{type:Array},_tasksToShow:{type:Array,computed:"_sor
tAndLimitTasks(_taskStats.*,_sort.*,_show_all_tasks)"},_totalStats:{type:Object}
},observers:["_aggregate(tasks.*)"],_aggregate:function(){if(this.tasks&&this.ta
sks.length){var t=new Date(1e3*sk.now()),a={},e={total:this.tasks.length,success
:0,failed:0,bot_died:0,avg_duration:0,total_time:0,wall_time:(t-this.tasks[this.
tasks.length-1].started_ts)/1e3};this.tasks.forEach(function(t){var s=t.name.tri
m(),i=s.split("/");5===i.length&&(s=i[0]+"/"+i[3]),a[s]||(a[s]={full_name:s,name
:s,total:0,success:0,failed:0,bot_died:0,avg_duration:0,total_time:0}),a[s].tota
l++,t.failure?(e.failed++,a[s].failed++):t.internal_failure?(e.bot_died++,a[s].b
ot_died++):(e.success++,a[s].success++),e.total_time+=t.duration,a[s].total_time
+=t.duration}),e.avg_duration=e.total_time/e.total,e.wall_time_utilization=(100*
e.total_time/e.wall_time).toFixed(1),this.set("_totalStats",e);var s=Object.keys
(a),i=[];s.forEach(function(t){a[t].avg_duration=a[t].total_time/a[t].total,a[t]
.total_time_percent=(100*a[t].total_time/e.total_time).toFixed(1),i.push(a[t])})
;var o=new Substrings({minOccurrence:Math.max(2,s.length-1),minLength:6});o.buil
d(s);var n=o.weighByAverage()||[];n.length&&n[0].source.forEach(function(t){var
a=i[t].full_name;i[t].name=a.replace(n[0].name,"...")}),this.set("_taskStats",i)
}},_compare:function(t,a){if(!this._sort)return 0;var e=1;return"desc"===this._s
ort.direction&&(e=-1),e*swarming.naturalCompare(t[this._sort.name],a[this._sort.
name])},_countTasks:function(){return this._taskStats.length<=t},_makeSortObject
:function(t){if(t){var a=t.split(":");return 2!=a.length?{name:"full_name",direc
tion:"asc"}:{name:a[0],direction:a[1]}}},_sortAndLimitTasks:function(){swarming.
stableSort(this._taskStats,this._compare.bind(this));var a=this._taskStats.lengt
h;return!this._show_all_tasks&&this._taskStats.length>t&&(a=t),this._taskStats.s
lice(0,a)},_sortChange:function(t){t&&t.detail&&t.detail.name&&(t.preventDefault
(),t.stopPropagation(),this.set("_sortstr",t.detail.name+":"+t.detail.direction)
)}})}()</script> </dom-module><dom-module id="bot-page" assetpath="/res/imp/botp
age/"> <template> <style include="iron-flex iron-flex-alignment iron-positioning
swarming-app-style single-page-style task-style">.message{white-space:pre-line;
font-family:monospace}.bot_state{white-space:pre;font-family:monospace;margin-bo
ttom:10px}.events_table,.tasks_table{border:3px solid #1F78B4}.old_version{backg
round-color:#ffd}.stats{min-width:700px;flex-grow:2}#collapse{max-width:700px}.c
loud{white-space:nowrap;margin-bottom:5px;margin-top:auto}paper-checkbox{--paper
-checkbox-label-color:#fff;--paper-checkbox-checked-color:#fff;--paper-checkbox-
checkmark-color:#000;--paper-checkbox-unchecked-color:#fff;padding:3px}paper-dia
log{border-radius:6px}</style> <url-param name="id" value="{{bot_id}}"> </url-pa
ram> <url-param name="show_all_events" value="{{_show_all}}"> </url-param> <url-
param name="selected" value="{{_selected}}"> </url-param> <url-param name="show_
state" value="{{_show_state}}"> </url-param> <swarming-app client_id="[[client_i
d]]" auth_headers="{{_auth_headers}}" permissions="{{_permissions}}" server_deta
ils="{{_server_details}}" signed_in="{{_signed_in}}" busy="[[_or(_busy1,_busy2,_
busy3)]]" name="Swarming Bot Page"> <h2 hidden$="[[_signed_in]]">You must sign i
n to see anything useful.</h2> <div hidden$="[[_not(_signed_in)]]"> <bot-page-da
ta id="data" auth_headers="[[_auth_headers]]" bot_id="[[bot_id]]" bot="{{_bot}}"
bot_exists="{{_bot_exists}}" busy="{{_busy1}}" events="{{_events}}" tasks="{{_t
asks}}" on-reload="_clearAndReload"> </bot-page-data> <div class="header horizon
tal layout"> <paper-input class="id_input" label="Bot id" value="{{bot_id}}"></p
aper-input> <template is="dom-if" if="[[_ccLink(_bot)]]"> <div class="vertical l
ayout"> <a href$="[[_ccLink(_bot)]]" class="cloud">Cloud Console</a> </div> </te
mplate> <button on-click="_refresh"> <iron-icon class="refresh" icon="icons:refr
esh"></iron-icon> </button> </div> </div> <h2 hidden$="[[_bot_exists]]">Bot not
found.</h2> <div hidden$="[[_not(_bot_exists)]]"> <div class="horizontal wrap la
yout"> <div class="flex"> <table> <tbody><tr class$="[[_isDead(_bot)]]" title="L
ast time the bot contacted the server."> <td>Last Seen</td> <td title="[[_bot.hu
man_last_seen_ts]]"> [[_timeDiffExact(_bot.last_seen_ts)]] ago</td> <td> <templa
te is="dom-if" if="[[_canShutdown(_bot,_permissions)]]"> <button class="raised"
on-click="_promptShutdown"> Shut Down Gracefully </button> </template> <template
is="dom-if" if="[[_canDelete(_bot,_permissions)]]"> <button class="raised" on-c
lick="_promptDelete"> Delete </button> </template> </td> </tr> <template is="dom
-if" if="[[_bot.quarantined]]"> <tr class="quarantined"> <td>Quarantined</td> <t
d colspan="2" class="message">[[_quarantineMessage(_bot)]]</td> </tr> </template
> <tr> <td>Current Task</td> <td> <a target="_blank" rel="noopener" href$="[[_ta
skLink(_bot.task_id)]]"> [[_task(_bot)]] </a> </td> <td> </td> </tr> <tr> <td ro
wspan$="[[_numRows(_bot.dimensions)]]"> <a href$="[[_siblingBotsLink(_bot.dimens
ions)]]" title="The list of bots that also matches these dimensions (except id).
"> Dimensions</a> </td> </tr> <template is="dom-repeat" items="[[_bot.dimensions
]]" as="dim"> <tr> <td>[[dim.key]]</td> <td>[[_concat(dim.value)]]</td> </tr> </
template> <tr title="IP address that the server saw the connection from."> <td>E
xternal IP</td> <td><a href$="[[_bot.external_ip]]">[[_bot.external_ip]]</a></td
> <td></td> </tr> <tr class$="[[_classVersion(_server_details.bot_version,_bot.v
ersion)]]" title="Version is based on the content of swarming_bot.zip which is t
he swarming bot code. The bot won't update if quarantined, dead, or busy."> <td>
Bot Version</td> <td>[[_shorten(_bot.version,'8')]]</td> <td></td> </tr> <tr tit
le="The version the server expects the bot to be using."> <td>Expected Bot Versi
on</td> <td>[[_shorten(_server_details.bot_version,'8')]]</td> <td></td> </tr> <
tr title="First time ever a bot with this id contacted the server."> <td>First s
een</td> <td title="[[_bot.human_first_seen_ts]]"> [[_timeDiffApprox(_bot.first_
seen_ts)]] ago </td> <td></td> </tr> <tr title="How the bot is authenticated by
the server."> <td>Authenticated as</td> <td colspan="2">[[_bot.authenticated_as]
]</td> </tr> <template is="dom-if" if="[[_bot.lease_id]]"> <tr> <td>Machine Prov
ider Lease ID</td> <td colspan="2"> <a href$="[[_mpLink(_bot,_server_details.mac
hine_provider_template)]]"> [[_bot.lease_id]] </a> </td> </tr> <tr> <td>Machine
Provider Lease Expires</td> <td colspan="2">[[_bot.human_lease_expiration_ts]]</
td> </tr> </template> </tbody></table> <span class="title">State</span> <templat
e is="dom-if" if="[[_not(_show_state)]]"> <button on-click="_toggleState"> <iron
-icon icon="icons:add-circle-outline"></iron-icon> </button> </template> <templa
te is="dom-if" if="[[_show_state]]"> <button on-click="_toggleState"> <iron-icon
icon="icons:remove-circle-outline"></iron-icon> </button> </template> <iron-col
lapse id="collapse" opened="[[_show_state]]"> <div class="bot_state">[[_prettyPr
int(_bot.state)]]</div> </iron-collapse> </div> <div class="stats flex"> <bot-pa
ge-summary tasks="[[_tasks]]"> </bot-page-summary> </div> </div> <div class="tab
s"> <paper-tabs selected="{{_selected}}" no-bar=""> <paper-tab>Tasks</paper-tab>
<paper-tab>Events</paper-tab> </paper-tabs> <template is="dom-if" if="[[_showEv
ents]]"> <paper-checkbox checked="{{_show_all}}"> Show all events </paper-checkb
ox> </template> </div> <template is="dom-if" if="[[_not(_showEvents)]]"> <table
class="tasks_table"> <thead> <tr> <th>Task</th> <th>Started</th> <th>Duration</t
h> <th>Result</th> </tr> </thead> <tbody> <template is="dom-repeat" items="{{_ta
sks}}" as="task"> <tr class$="[[_taskClass(task)]]"> <td> <a target="_blank" rel
="noopener" href$="[[_taskLink(task.task_id)]]"> [[task.name]] </a> </td> <td>[[
task.human_started_ts]]</td> <td title="[[task.human_completed_ts]]">[[task.huma
n_duration]]</td> <td>[[task.state]]</td> </tr> </template> </tbody> </table> </
template> <template is="dom-if" if="[[_showEvents]]"> <table class="events_table
"> <thead> <tr> <th>Message</th> <th>Type</th> <th>Timestamp</th> <th>Task ID</t
h> <th>Version</th> </tr> </thead> <tbody> <template is="dom-repeat" items="{{_e
ventList(_show_all,_events.*)}}" as="event"> <tr> <td class="message">[[event.me
ssage]]</td> <td>[[event.event_type]]</td> <td>[[event.human_ts]]</td> <td> <a t
arget="_blank" rel="noopener" href$="[[_taskLink(event.task_id)]]"> [[event.task
_id]] </a> </td> <td class$="[[_classVersion(_server_details.bot_version,event.v
ersion)]]"> [[_shorten(event.version,'8')]] </td> </tr> </template> </tbody> </t
able> </template> <pageable-data id="page_tasks" hidden$="[[_showEvents]]" busy=
"{{_busy2}}" label="Show more tasks" output="{{_tasks}}" parse="[[_parseTasks]]"
> </pageable-data> <pageable-data id="page_events" hidden$="[[_not(_showEvents)]
]" busy="{{_busy3}}" label="Show more events" output="{{_events}}" parse="[[_par
seEvents]]"> </pageable-data> </div> </swarming-app> <paper-dialog id="prompt" m
odal="" on-iron-overlay-closed="_promptClosed"> <h2>Are you sure?</h2> <div>Are
you sure you want to [[_dialogPrompt]]?</div> <div class="buttons"> <paper-butto
n dialog-dismiss="" autofocus="">No</paper-button> <paper-button dialog-confirm=
"">Yes</paper-button> </div> </paper-dialog> </template> <script> (function(){ | 784 })(); </script> </dom-module> <dom-module id="paper-button" assetpath="/res/im
p/bower_components/paper-button/"> <template strip-whitespace=""> <style include
="paper-material-shared-styles">:host{@apply(--layout-inline);@apply(--layout-ce
nter-center);position:relative;box-sizing:border-box;min-width:5.14em;margin:0 .
29em;background:0 0;-webkit-tap-highlight-color:transparent;-webkit-tap-highligh
t-color:transparent;font:inherit;text-transform:uppercase;outline-width:0;border
-radius:3px;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;
user-select:none;cursor:pointer;z-index:0;padding:.7em .57em;@apply(--paper-font
-common-base);@apply(--paper-button)}:host([hidden]){display:none!important}:hos
t([raised].keyboard-focus){font-weight:700;@apply(--paper-button-raised-keyboard
-focus)}:host(:not([raised]).keyboard-focus){font-weight:700;@apply(--paper-butt
on-flat-keyboard-focus)}:host([disabled]){background:#eaeaea;color:#a8a8a8;curso
r:auto;pointer-events:none;@apply(--paper-button-disabled)}:host([animated]){@ap
ply(--shadow-transition)}paper-ripple{color:var(--paper-button-ink-color)}</styl
e> <content></content> </template> <script>Polymer({is:"paper-button",behaviors:
[Polymer.PaperButtonBehavior],properties:{raised:{type:Boolean,reflectToAttribut
e:!0,value:!1,observer:"_calculateElevation"}},_calculateElevation:function(){th
is.raised?Polymer.PaperButtonBehaviorImpl._calculateElevation.apply(this):this._
setElevation(0)}})</script> </dom-module> <script>Polymer.NeonAnimatableBehavior
={properties:{animationConfig:{type:Object},entryAnimation:{observer:"_entryAnim
ationChanged",type:String},exitAnimation:{observer:"_exitAnimationChanged",type:
String}},_entryAnimationChanged:function(){this.animationConfig=this.animationCo
nfig||{},this.animationConfig.entry=[{name:this.entryAnimation,node:this}]},_exi
tAnimationChanged:function(){this.animationConfig=this.animationConfig||{},this.
animationConfig.exit=[{name:this.exitAnimation,node:this}]},_copyProperties:func
tion(i,n){for(var t in n)i[t]=n[t]},_cloneConfig:function(i){var n={isClone:!0};
return this._copyProperties(n,i),n},_getAnimationConfigRecursive:function(i,n,t)
{if(this.animationConfig){if(this.animationConfig.value&&"function"==typeof this
.animationConfig.value)return void this._warn(this._logf("playAnimation","Please
put 'animationConfig' inside of your components 'properties' object instead of
outside of it."));var o;if(o=i?this.animationConfig[i]:this.animationConfig,Arra
y.isArray(o)||(o=[o]),o)for(var e,a=0;e=o[a];a++)if(e.animatable)e.animatable._g
etAnimationConfigRecursive(e.type||i,n,t);else if(e.id){var r=n[e.id];r?(r.isClo
ne||(n[e.id]=this._cloneConfig(r),r=n[e.id]),this._copyProperties(r,e)):n[e.id]=
e}else t.push(e)}},getAnimationConfig:function(i){var n={},t=[];this._getAnimati
onConfigRecursive(i,n,t);for(var o in n)t.push(n[o]);return t}}</script> <script
>Polymer.NeonAnimationRunnerBehaviorImpl={_configureAnimations:function(n){var i
=[];if(n.length>0)for(var e,t=0;e=n[t];t++){var o=document.createElement(e.name)
;if(o.isNeonAnimation){var a=null;try{a=o.configure(e),"function"!=typeof a.canc
el&&(a=document.timeline.play(a))}catch(n){a=null,console.warn("Couldnt play","(
",e.name,").",n)}a&&i.push({neonAnimation:o,config:e,animation:a})}else console.
warn(this.is+":",e.name,"not found!")}return i},_shouldComplete:function(n){for(
var i=!0,e=0;e<n.length;e++)if("finished"!=n[e].animation.playState){i=!1;break}
return i},_complete:function(n){for(var i=0;i<n.length;i++)n[i].neonAnimation.co
mplete(n[i].config);for(var i=0;i<n.length;i++)n[i].animation.cancel()},playAnim
ation:function(n,i){var e=this.getAnimationConfig(n);if(e){this._active=this._ac
tive||{},this._active[n]&&(this._complete(this._active[n]),delete this._active[n
]);var t=this._configureAnimations(e);if(0==t.length)return void this.fire("neon
-animation-finish",i,{bubbles:!1});this._active[n]=t;for(var o=0;o<t.length;o++)
t[o].animation.onfinish=function(){this._shouldComplete(t)&&(this._complete(t),d
elete this._active[n],this.fire("neon-animation-finish",i,{bubbles:!1}))}.bind(t
his)}},cancelAnimation:function(){for(var n in this._animations)this._animations
[n].cancel();this._animations={}}},Polymer.NeonAnimationRunnerBehavior=[Polymer.
NeonAnimatableBehavior,Polymer.NeonAnimationRunnerBehaviorImpl]</script> <script
>Polymer.PaperDialogBehaviorImpl={hostAttributes:{role:"dialog",tabindex:"-1"},p
roperties:{modal:{type:Boolean,value:!1}},observers:["_modalChanged(modal, _read
ied)"],listeners:{tap:"_onDialogClick"},ready:function(){this.__prevNoCancelOnOu
tsideClick=this.noCancelOnOutsideClick,this.__prevNoCancelOnEscKey=this.noCancel
OnEscKey,this.__prevWithBackdrop=this.withBackdrop},_modalChanged:function(i,e){
e&&(i?(this.__prevNoCancelOnOutsideClick=this.noCancelOnOutsideClick,this.__prev
NoCancelOnEscKey=this.noCancelOnEscKey,this.__prevWithBackdrop=this.withBackdrop
,this.noCancelOnOutsideClick=!0,this.noCancelOnEscKey=!0,this.withBackdrop=!0):(
this.noCancelOnOutsideClick=this.noCancelOnOutsideClick&&this.__prevNoCancelOnOu
tsideClick,this.noCancelOnEscKey=this.noCancelOnEscKey&&this.__prevNoCancelOnEsc
Key,this.withBackdrop=this.withBackdrop&&this.__prevWithBackdrop))},_updateClosi
ngReasonConfirmed:function(i){this.closingReason=this.closingReason||{},this.clo
singReason.confirmed=i},_onDialogClick:function(i){for(var e=Polymer.dom(i).path
,o=0;o<e.indexOf(this);o++){var t=e[o];if(t.hasAttribute&&(t.hasAttribute("dialo
g-dismiss")||t.hasAttribute("dialog-confirm"))){this._updateClosingReasonConfirm
ed(t.hasAttribute("dialog-confirm")),this.close(),i.stopPropagation();break}}}},
Polymer.PaperDialogBehavior=[Polymer.IronOverlayBehavior,Polymer.PaperDialogBeha
viorImpl]</script> <dom-module id="paper-dialog-shared-styles" assetpath="/res/i
mp/bower_components/paper-dialog-behavior/"> <template> <style>:host{display:blo
ck;margin:24px 40px;background:var(--paper-dialog-background-color,--primary-bac
kground-color);color:var(--paper-dialog-color,--primary-text-color);@apply(--pap
er-font-body1);@apply(--shadow-elevation-16dp);@apply(--paper-dialog)}:host>::co
ntent>*{margin-top:20px;padding:0 24px}:host>::content>.no-padding{padding:0}:ho
st>::content>:first-child{margin-top:24px}:host>::content>:last-child{margin-bot
tom:24px}:host>::content h2{position:relative;margin:0;@apply(--paper-font-title
);@apply(--paper-dialog-title)}:host>::content .buttons{position:relative;paddin
g:8px 8px 8px 24px;margin:0;color:var(--paper-dialog-button-color,--primary-colo
r);@apply(--layout-horizontal);@apply(--layout-end-justified)}</style> </templat
e> </dom-module> <dom-module id="paper-dialog" assetpath="/res/imp/bower_compone
nts/paper-dialog/"> <template> <style include="paper-dialog-shared-styles"></sty
le> <content></content> </template> </dom-module> <script>!function(){Polymer({i
s:"paper-dialog",behaviors:[Polymer.PaperDialogBehavior,Polymer.NeonAnimationRun
nerBehavior],listeners:{"neon-animation-finish":"_onNeonAnimationFinish"},_rende
rOpened:function(){this.cancelAnimation(),this.playAnimation("entry")},_renderCl
osed:function(){this.cancelAnimation(),this.playAnimation("exit")},_onNeonAnimat
ionFinish:function(){this.opened?this._finishRenderOpened():this._finishRenderCl
osed()}})}()</script> <script>window.SwarmingBehaviors=window.SwarmingBehaviors|
|{},function(){SwarmingBehaviors.TaskBehavior={properties:{BOT_DIED:{type:String
,value:"BOT_DIED"},CANCELED:{type:String,value:"CANCELED"},COMPLETED:{type:Strin
g,value:"COMPLETED"},COMPLETED_DEDUPED:{type:String,value:"COMPLETED (DEDUPED)"}
,COMPLETED_FAILURE:{type:String,value:"COMPLETED (FAILURE)"},COMPLETED_SUCCESS:{
type:String,value:"COMPLETED (SUCCESS)"},EXPIRED:{type:String,value:"EXPIRED"},P
ENDING:{type:String,value:"PENDING"},RUNNING:{type:String,value:"RUNNING"},TIMED
_OUT:{type:String,value:"TIMED_OUT"}},stateClass:function(t){return t===this.CAN
CELED||t===this.TIMED_OUT||t===this.EXPIRED?"exception":t===this.BOT_DIED?"bot_d
ied":t===this.COMPLETED_FAILURE?"failed_task":t===this.RUNNING||t===this.PENDING
?"pending_task":""},state:function(t){return t?t.state===this.COMPLETED?t.failur
e?this.COMPLETED_FAILURE:"0"===t.try_number?this.COMPLETED_DEDUPED:this.COMPLETE
D_SUCCESS:t.state:""},_stateClass:function(t){return this.stateClass(this.state(
t))}}}()</script> <dom-module id="task-style" assetpath="/res/imp/common/"> <tem
plate> <style>.failed_task{background-color:#fdd}.bot_died{background-color:#ccc
}.exception{background-color:#edd2ff}.pending_task{background-color:#fffc6c}</st
yle> </template> </dom-module><dom-module id="task-filters" assetpath="/res/imp/
tasklist/"> <template> <style is="custom-style" include="iron-flex iron-flex-ali
gnment iron-positioning query-column-filter-style swarming-app-style">.item.wide
{max-width:400px}.selector.wide{min-width:275px}</style> <url-param name="f" val
ue="{{_filters}}" default_values="[]" multi=""> </url-param> <url-param name="c"
value="{{columns}}" default_values="["name","state","c
reated_ts","user","bot"]" multi=""> </url-param> <url-p
aram name="q" value="{{_query}}" default_value=""> </url-param> <url-param name=
"l" default_value="50" value="{{_limit}}"> </url-param> <div class="container ho
rizontal layout"> <div class="narrow-down-selector"> <div> <iron-a11y-keys targe
t="[[_filter_input]]" keys="enter" on-keys-pressed="_manuallyAddFilter"></iron-a
11y-keys> <paper-input id="filter" label="Search columns and filters or supply a
filter and press enter" placeholder="gpu nvidia pool:Chrome" value="{{_query::i
nput}}"> </paper-input> </div> <div class="wide selector side-by-side" title="Th
is shows all task tags and other interesting task properties. Mark the check box
to add as a column. Select the row to see filter options."> <iron-selector attr
-for-selected="label" selected="{{_primarySelected}}"> <template is="dom-repeat"
items="[[_primaryItems]]" as="item"> <div class="selectable item horizontal lay
out" label="[[item]]"> <span>[[_beforeBold(item,_query)]]<span class="bold">[[_b
old(item,_query)]]</span>[[_afterBold(item,_query)]]</span> <span class="flex"><
/span> <paper-checkbox noink="" disabled$="[[_cantToggleColumn(item)]]" checked=
"[[_columnState(item,columns.*)]]" on-change="_toggleColumn"> </paper-checkbox>
</div> </template> </iron-selector> </div> <div class="selector side-by-side" ti
tle="These are most of the options (if any) that the task list can be filtered o
n. This list is all that have been seen recently, augmented with the ones return
ed by the current query. There may be others."> <template is="dom-repeat" id="se
condaryList" items="[[_secondaryItems]]" as="item"> <div class="item horizontal
layout" label="[[item]]"> <span>[[_beforeBold(item,_query)]]<span class="bold">[
[_bold(item,_query)]]</span>[[_afterBold(item,_query)]]</span> <span class="flex
"></span> <iron-icon class="icons" icon="icons:arrow-forward" hidden="[[_cantAdd
Filter(_primarySelected,item,_filters.*)]]" on-tap="_addFilter"> </iron-icon> </
div> </template> <template is="dom-if" if="[[_secondaryItems.length]]"> <div cla
ss="pointable item" title="There may be more valid options than just the ones sh
own.">...</div> </template> <template is="dom-if" if="[[_showTagMessage(_primary
Selected,_secondaryItems.length)]]"> <div class="item">Only tags can be used for
filtering. <i>"[[_primarySelected]]"</i> is informational only.</div> </templat
e> </div> <div class="selector side-by-side" title="These tag filters are AND'd
together and applied to all tasks."> <template is="dom-repeat" items="[[_filters
]]" as="fil"> <div class="item horizontal layout" label="[[fil]]"> <span>[[fil]]
</span> <span class="flex"></span> <iron-icon class="icons" icon="icons:remove-c
ircle-outline" hidden="[[_cantRemoveFilter(fil,_filters.*)]]" on-tap="_removeFil
ter"> </iron-icon> </div> </template> </div> <div class="side-by-side"> <paper-i
nput id="_limit" label="Limit Results" auto-validate="" min="0" max="1000" patte
rn="[0-9]+" value="{{_limit}}"> </paper-input> <a href$="[[_matchingBotsLink(que
ry_params,dimensions.*)]]">View Matching Bots</a> </div> </div> </div> </templat
e> <script>!function(){var t={state:function(t,i){var r=this._attribute(t,"state
")[0];if(i===r||"ALL"===i)return!0;if("PENDING_RUNNING"===i)return r===this.PEND
ING||r===this.RUNNING;var s=this._attribute(t,"failure",!1)[0];if("COMPLETED_SUC
CESS"===i)return r===this.COMPLETED&&!s;if("COMPLETED_FAILURE"===i)return r===th
is.COMPLETED&&s;var n=this._attribute(t,"try_number","-1")[0];return"DEDUPED"===
i?r===this.COMPLETED&&"0"===n:void 0}};Polymer({is:"task-filters",behaviors:[Swa
rmingBehaviors.QueryColumnFilter,SwarmingBehaviors.TaskBehavior],properties:{col
umns:{type:Array,notify:!0},query_params:{type:Object,computed:"_extractQueryPar
ams(_filters.*, _limit)",notify:!0},_filterMap:{type:Object,value:function(){var
i=this._commonFilters();for(var r in t)i[r]=t[r];return i}}},_cantToggleColumn:
function(t){return!t||"name"===t},_extractQueryParams:function(){var t={},i=[];t
his._filters.forEach(function(r){var s=r.split(this.FILTER_SEP,1),n=s[0],e=r.sub
string(n.length+this.FILTER_SEP.length);"state"===n?t.state=[e]:("user"===n&&"no
ne"===e&&(e=""),i.push(n+this.FILTER_SEP+swarming.alias.unapply(e)))}.bind(this)
),t.tags=i;var r=parseInt(this._limit);return Number.isInteger(r)&&(r=Math.max(r
,1),r=Math.min(1e3,r),t.limit=[r],this._limit!=r&&this.set("_limit",r)),t},_matc
hingBotsLink:function(t){var i=["id","os","task","status"];if(!t.tags||!this.dim
ensions)return this._botListLink([],i);var r=t.tags.filter(function(t){var i=t.s
plit(this.FILTER_SEP,1)[0];return this.dimensions.indexOf(i)!==-1}.bind(this));r
eturn r.forEach(function(t){var r=t.split(this.FILTER_SEP,1)[0];i.indexOf(r)===-
1&&i.push(r)}.bind(this)),this._botListLink(r,i)},_showTagMessage:function(t,i){
return t&&"name"!==t&&!i}})}()</script> </dom-module><dom-module id="task-list-d
ata" assetpath="/res/imp/tasklist/"> <script>!function(){var t=["abandoned_ts","
completed_ts","created_ts","modified_ts","started_ts"],s=["quarantined","error"]
;Polymer({is:"task-list-data",behaviors:[SwarmingBehaviors.CommonBehavior,Swarmi
ngBehaviors.TaskBehavior],properties:{auth_headers:{type:Object,observer:"signIn
"},query_params:{type:Object},tasks:{type:Array},busy:{type:Boolean,computed:"_o
r(_busy2,_busy1)",notify:!0},dimensions:{type:Array,computed:"_makeArray(_dimens
ions)",notify:!0},primary_map:{type:Object,computed:"_primaryMap(_tags,_dimensio
ns,tasks.*)",notify:!0},primary_arr:{type:Array,computed:"_primaryArr(primary_ma
p)",notify:!0},_busy2:{type:Boolean,value:!1},_busy1:{type:Boolean,value:!1},_di
mensions:{type:Object},_list:{type:Object},_tags:{type:Object}},signIn:function(
){this._getJsonAsync("_tags","/api/swarming/v1/tasks/tags","_busy2",this.auth_he
aders),this._getJsonAsync("_dimensions","/api/swarming/v1/bots/dimensions","_bus
y1",this.auth_headers)},_makeArray:function(t){if(!t||!t.bots_dimensions)return[
];var a=[];return t.bots_dimensions.forEach(function(t){s.indexOf(t.key)===-1&&a
.push(t.key)}),a.push("id"),a.sort(),a},_primaryArr:function(t){var s=Object.key
s(t);return s.sort(),s},_primaryMap:function(s,a){s=s&&s.tasks_tags||[],a=a&&a.b
ots_dimensions||[],tasks=this.tasks||[];var e={};s.forEach(function(t){e[t.key]|
|(e[t.key]={});var s=t.value||[];s.forEach(function(s){e[t.key][s]=!0})}),a.forE
ach(function(t){var s=t.value;e[t.key]||(e[t.key]={}),s.forEach(function(s){e[t.
key][s]=!0})}),tasks.forEach(function(t){Object.keys(t.tagMap).forEach(function(
s){var a=t.tagMap[s];e[s]||(e[s]={}),e[s][a]=!0})}),e.user&&(delete e.user[""],e
.user.none=!0);var r={};for(key in e){var n=Object.keys(e[key]);if(swarming.alia
s.DIMENSIONS_WITH_ALIASES.indexOf(key)===-1)r[key]=n;else{var i=[];n.forEach(fun
ction(t){i.push(swarming.alias.apply(t,key))}),r[key]=i}}return r.name=[],r.stat
e=[this.PENDING,this.RUNNING,"PENDING_RUNNING",this.COMPLETED,"COMPLETED_SUCCESS
","COMPLETED_FAILURE",this.EXPIRED,this.TIMED_OUT,this.BOT_DIED,this.CANCELED,"D
EDUPED","ALL"],r.costs_usd=[],r.deduped_from=[],r.duration=[],r.server_versions=
[],r.bot=[],t.forEach(function(t){r[t]=[]}),r},parseTasks:function(s){if(!s||!s.
items)return[];var a=new Date;return s.items.forEach(function(s){var e={};s.tags
=s.tags||[],s.tags.forEach(function(t){var s=t.split(":",1),a=s[0],r=t.substring
(a.length+1);e[a]=r}),s.tagMap=e,t.forEach(function(t){s[t]&&(s[t]=new Date(s[t]
),s["human_"+t]=sk.human.localeTime(s[t]))}),!s.duration&&s.state===this.RUNNING
&&s.started_ts&&(s.duration=(a-s.started_ts)/1e3),s.duration&&(s.human_duration=
this._humanDuration(s.duration))}.bind(this)),s.items}})}()</script> </dom-modul
e> <dom-module id="task-list" assetpath="/res/imp/tasklist/"> <template> <style
include="iron-flex iron-flex-alignment iron-positioning swarming-app-style dynam
ic-table-style task-style">task-filters{margin-bottom:8px;margin-right:10px}.tas
k-list th>span{padding-right:30px}</style> <url-param name="s" value="{{_sortstr
}}" default_value="created_ts:desc"> </url-param> <swarming-app client_id="[[cli
ent_id]]" auth_headers="{{_auth_headers}}" permissions="{{_permissions}}" signed
_in="{{_signed_in}}" busy="[[_or(_busy1,_busy2)]]" name="Swarming Task List"> <h
2 hidden$="[[_signed_in]]">You must sign in to see anything useful.</h2> <div hi
dden$="[[_not(_signed_in)]]"> <task-list-data id="data" auth_headers="[[_auth_he
aders]]" query_params="[[_query_params]]" tasks="[[_items]]" busy="{{_busy1)}}"
dimensions="{{_dimensions}}" primary_map="{{_primary_map}}" primary_arr="{{_prim
ary_arr}}"> </task-list-data> <div class="horizontal layout"> <task-filters dime
nsions="[[_dimensions]]" primary_map="[[_primary_map]]" primary_arr="[[_primary_
arr]]" special_columns="[[_specialColumns]]" columns="{{_columns}}" query_params
="{{_query_params}}" filter="{{_filter}}"> </task-filters> </div> <table class="
task-list"> <thead on-sort_change="_sortChange"> <tr> <th> <span>Task Name</span
> <sort-toggle name="name" current="[[_sort]]"> </sort-toggle> </th> <th hidden$
="[[_hide('state', _columns.*)]]"> <span>State</span> <sort-toggle name="state"
current="[[_sort]]"> </sort-toggle> </th> <th hidden$="[[_hide('bot', _columns.*
)]]"> <span>Bot Assigned</span> <sort-toggle name="bot" current="[[_sort]]"> </s
ort-toggle> </th> <th hidden$="[[_hide('deduped_from', _columns.*)]]"> <span>Ded
uped from</span> <sort-toggle name="deduped_from" current="[[_sort]]"> </sort-to
ggle> </th> <th hidden$="[[_hide('source_revision', _columns.*)]]"> <span>Source
Revision</span> <sort-toggle name="source_revision" current="[[_sort]]"> </sort
-toggle> </th> <template is="dom-repeat" items="[[_plainColumns]]" as="c"> <th h
idden$="[[_hide(c)]]"> <span>[[_header(c)]]</span> <sort-toggle name="[[c]]" cur
rent="[[_sort]]"> </sort-toggle> </th> </template> </tr> </thead> <tbody> <templ
ate id="tasks_table" is="dom-repeat" items="[[_filteredSortedItems]]" as="task"
initial-count="50"> <tr class$="[[_taskClass(task)]]"> <td> <a class="center" hr
ef$="[[_taskLink(task.task_id)]]" target="_blank"> [[task.name]] </a> </td> <td
hidden$="[[_hide('state', _columns.*)]]"> [[_column('state', task)]] <paper-butt
on raised="" hidden$="[[_cannotCancel(task,_permissions)]]" on-tap="_promptCance
l"> Cancel </paper-button> </td> <td hidden$="[[_hide('bot', _columns.*)]]"> <a
class="center" href$="[[_botLink(task.bot_id)]]" target="_blank"> [[_column('bot
',task)]] </a> </td> <td hidden$="[[_hide('deduped_from', _columns.*)]]"> <a cla
ss="center" href$="[[_taskLink(task.deduped_from)]]" target="_blank"> [[_column(
'deduped_from',task)]] </a> </td> <td hidden$="[[_hide('source_revision', _colum
ns.*)]]"> <a class="center" href$="[[_sourceLink(task)]]" target="_blank"> [[_co
lumn('source_revision',task)]] </a> </td> <template is="dom-repeat" items="[[_pl
ainColumns]]" as="c"> <td hidden$="[[_hide(c)]]"> [[_column(c, task)]] </td> </t
emplate> </tr> </template> </tbody> </table> <pageable-data id="page_tasks" busy
="{{_busy2}}" label="Show more tasks" output="{{_items}}" parse="[[_parseTasks]]
"> </pageable-data> </div> </swarming-app> <paper-dialog id="prompt" modal="" on
-iron-overlay-closed="_promptClosed"> <h2>Are you sure?</h2> <div>Are you sure y
ou want to [[_dialogPrompt]]?</div> <div class="buttons"> <paper-button dialog-d
ismiss="" autofocus="">No</paper-button> <paper-button dialog-confirm="">Yes</pa
per-button> </div> </paper-dialog> </template> <script>!function(){function t(t)
{return function(e){return this._attribute(e,"human_"+t)[0]}}function e(t){retur
n function(e,a,s){var r=this._attribute(a,t,"0")[0],n=this._attribute(s,t,"0")[0
];return e*(r-n)}}var a=["deduped_from","name","state","bot","source_revision"],
s={abandoned_ts:t("abandoned_ts"),bot:function(t){return this._attribute(t,"bot_
id")[0]},completed_ts:t("completed_ts"),costs_usd:function(t){return this._attri
bute(t,"costs_usd",0)[0]},created_ts:t("created_ts"),duration:t("duration"),modi
fied_ts:t("modified_ts"),source_revision:function(t){var e=this._attribute(t,"so
urce_revision")[0];return e.substring(0,8)},started_ts:t("started_ts"),state:fun
ction(t){var e=this._attribute(t,"state")[0];if("COMPLETED"===e){if(this._attrib
ute(t,"failure",!1)[0])return"COMPLETED (FAILURE)";var a=this._attribute(t,"try_
number","-1")[0];return"0"===a?"COMPLETED (DEDUPED)":"COMPLETED (SUCCESS)"}retur
n e}},r={abandoned_ts:"Abandoned On",completed_ts:"Completed On",created_ts:"Cre
ated On",duration:"Duration",modified_ts:"Last Modified",started_ts:"Started Wor
king On",user:"Requesting User"},n={abandoned_ts:e("abandoned_ts"),completed_ts:
e("completed_ts"),created_ts:e("created_ts"),duration:e("duration"),modified_ts:
e("modified_ts"),started_ts:e("started_ts")};Polymer({is:"task-list",behaviors:[
SwarmingBehaviors.DynamicTableBehavior,SwarmingBehaviors.TaskBehavior],propertie
s:{client_id:{type:String},_busy1:{type:Boolean,value:!1},_busy2:{type:Boolean,v
alue:!1},_parseTasks:{type:Function,value:function(){return this.$.data.parseTas
ks.bind(this)}},_toCancel:{type:String},_columnMap:{type:Object,value:function()
{var t=this._commonColumns();for(var e in s)t[e]=s[e];return t}},_headerMap:{typ
e:Object,value:r},_specialColumns:{type:Array,value:a},_specialSort:{type:Object
,value:n}},observers:["reload(_query_params,_auth_headers)"],_attribute:function
(t,e,a){void 0===a&&(a="none");var s=this._tag(t,e)||t[e]||[a];return Array.isAr
ray(s)?s:[s]},_cannotCancel:function(t,e){return!(e&&e.cancel_task&&"PENDING"===
this._column("state",t))},_cancelTask:function(){var t="/api/swarming/v1/task/"+
this._toCancel+"/cancel";swarming.postWithToast(t,"Canceling task "+this._toCanc
el,this._auth_headers),this.set("_toCancel","")},_promptClosed:function(t){t.det
ail.confirmed&&this._cancelTask()},_promptCancel:function(t){var e=t.model.task;
return e&&e.task_id?(this.set("_toCancel",e.task_id),this.set("_dialogPrompt",'c
ancel task "'+e.name+'"'),void this.$.prompt.open()):void console.log("Missing t
ask info",e)},reload:function(){if(this._auth_headers&&this._query_params){var t
="/api/swarming/v1/tasks/list?"+sk.query.fromParamSet(this._query_params);this.$
.page_tasks.load(t,this._auth_headers)}},_sourceLink:function(t){var e=this._att
ribute(t,"source_revision")[0],a=this._attribute(t,"source_repo")[0];return"none
"!==e&&"none"!==a&&a.replace("%s",e)},_tag:function(t,e){if(t&&t.tagMap)return t
.tagMap[e]},_taskClass:function(t){return this.stateClass(this._column("state",t
))}})}()</script> </dom-module> <dom-module id="iron-collapse" assetpath="/res/i
mp/bower_components/iron-collapse/"> <template> <style>:host{display:block;trans
ition-duration:var(--iron-collapse-transition-duration,300ms);overflow:visible}:
host(.iron-collapse-closed){display:none}:host(:not(.iron-collapse-opened)){over
flow:hidden}</style> <content></content> </template> </dom-module> <script>Polym
er({is:"iron-collapse",behaviors:[Polymer.IronResizableBehavior],properties:{hor
izontal:{type:Boolean,value:!1,observer:"_horizontalChanged"},opened:{type:Boole
an,value:!1,notify:!0,observer:"_openedChanged"},noAnimation:{type:Boolean},_des
iredSize:{type:String,value:""}},get dimension(){return this.horizontal?"width":
"height"},get _dimensionMax(){return this.horizontal?"maxWidth":"maxHeight"},get
_dimensionMaxCss(){return this.horizontal?"max-width":"max-height"},hostAttribu
tes:{role:"group","aria-hidden":"true","aria-expanded":"false"},listeners:{trans
itionend:"_transitionEnd"},attached:function(){this._transitionEnd()},toggle:fun
ction(){this.opened=!this.opened},show:function(){this.opened=!0},hide:function(
){this.opened=!1},updateSize:function(i,t){if(i="auto"===i?"":i,this._desiredSiz
e!==i){this._desiredSize=i,this._updateTransition(!1);var e=t&&!this.noAnimation
&&this._isDisplayed;if(e){var n=this._calcSize();""===i&&(this.style[this._dimen
sionMax]="",i=this._calcSize()),this.style[this._dimensionMax]=n,this.scrollTop=
this.scrollTop,this._updateTransition(!0),e=i!==n}this.style[this._dimensionMax]
=i,e||this._transitionEnd()}},enableTransition:function(i){Polymer.Base._warn("`
enableTransition()` is deprecated, use `noAnimation` instead."),this.noAnimation
=!i},_updateTransition:function(i){this.style.transitionDuration=i&&!this.noAnim
ation?"":"0s"},_horizontalChanged:function(){this.style.transitionProperty=this.
_dimensionMaxCss;var i="maxWidth"===this._dimensionMax?"maxHeight":"maxWidth";th
is.style[i]="",this.updateSize(this.opened?"auto":"0px",!1)},_openedChanged:func
tion(){this.setAttribute("aria-expanded",this.opened),this.setAttribute("aria-hi
dden",!this.opened),this.toggleClass("iron-collapse-closed",!1),this.toggleClass
("iron-collapse-opened",!1),this.updateSize(this.opened?"auto":"0px",!0),this.op
ened&&this.focus()},_transitionEnd:function(){this.style[this._dimensionMax]=thi
s._desiredSize,this.toggleClass("iron-collapse-closed",!this.opened),this.toggle
Class("iron-collapse-opened",this.opened),this._updateTransition(!1),this.notify
Resize()},get _isDisplayed(){var i=this.getBoundingClientRect();for(var t in i)i
f(0!==i[t])return!0;return!1},_calcSize:function(){return this.getBoundingClient
Rect()[this.dimension]+"px"}})</script> <script>Polymer.IronMenubarBehaviorImpl=
{hostAttributes:{role:"menubar"},keyBindings:{left:"_onLeftKey",right:"_onRightK
ey"},_onUpKey:function(e){this.focusedItem.click(),e.detail.keyboardEvent.preven
tDefault()},_onDownKey:function(e){this.focusedItem.click(),e.detail.keyboardEve
nt.preventDefault()},get _isRTL(){return"rtl"===window.getComputedStyle(this).di
rection},_onLeftKey:function(e){this._isRTL?this._focusNext():this._focusPreviou
s(),e.detail.keyboardEvent.preventDefault()},_onRightKey:function(e){this._isRTL
?this._focusPrevious():this._focusNext(),e.detail.keyboardEvent.preventDefault()
},_onKeydown:function(e){this.keyboardEventMatchesKeys(e,"up down left right esc
")||this._focusWithKeyboardEvent(e)}},Polymer.IronMenubarBehavior=[Polymer.IronM
enuBehavior,Polymer.IronMenubarBehaviorImpl]</script> <iron-iconset-svg name="pa
per-tabs" size="24"> <svg><defs> <g id="chevron-left"><path d="M15.41 7.41L14 6l
-6 6 6 6 1.41-1.41L10.83 12z"></path></g> <g id="chevron-right"><path d="M10 6L8
.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"></path></g> </defs></svg> </iron-iconse
t-svg> <dom-module id="paper-tab" assetpath="/res/imp/bower_components/paper-tab
s/"> <template> <style>:host{@apply(--layout-inline);@apply(--layout-center);@ap
ply(--layout-center-justified);@apply(--layout-flex-auto);position:relative;padd
ing:0 12px;overflow:hidden;cursor:pointer;vertical-align:middle;@apply(--paper-f
ont-common-base);@apply(--paper-tab)}:host(:focus){outline:0}:host([link]){paddi
ng:0}.tab-content{height:100%;transform:translateZ(0);-webkit-transform:translat
eZ(0);transition:opacity .1s cubic-bezier(.4,0,1,1);@apply(--layout-horizontal);
@apply(--layout-center-center);@apply(--layout-flex-auto);@apply(--paper-tab-con
tent)}:host(:not(.iron-selected))>.tab-content{opacity:.8;@apply(--paper-tab-con
tent-unselected)}:host(:focus) .tab-content{opacity:1;font-weight:700}paper-ripp
le{color:var(--paper-tab-ink,--paper-yellow-a100)}.tab-content>::content>a{@appl
y(--layout-flex-auto);height:100%}</style> <div class="tab-content"> <content></
content> </div> </template> <script>Polymer({is:"paper-tab",behaviors:[Polymer.I
ronControlState,Polymer.IronButtonState,Polymer.PaperRippleBehavior],properties:
{link:{type:Boolean,value:!1,reflectToAttribute:!0}},hostAttributes:{role:"tab"}
,listeners:{down:"_updateNoink",tap:"_onTap"},attached:function(){this._updateNo
ink()},get _parentNoink(){var t=Polymer.dom(this).parentNode;return!!t&&!!t.noin
k},_updateNoink:function(){this.noink=!!this.noink||!!this._parentNoink},_onTap:
function(t){if(this.link){var e=this.queryEffectiveChildren("a");if(!e)return;if
(t.target===e)return;e.click()}}})</script> </dom-module> <dom-module id="paper-
tabs" assetpath="/res/imp/bower_components/paper-tabs/"> <template> <style>:host
{@apply(--layout);@apply(--layout-center);height:48px;font-size:14px;font-weight
:500;overflow:hidden;-moz-user-select:none;-ms-user-select:none;-webkit-user-sel
ect:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-tap-hi
ghlight-color:transparent;@apply(--paper-tabs)}:host-context([dir=rtl]){@apply(-
-layout-horizontal-reverse)}#tabsContainer{position:relative;height:100%;white-s
pace:nowrap;overflow:hidden;@apply(--layout-flex-auto)}#tabsContent{height:100%;
-moz-flex-basis:auto;-ms-flex-basis:auto;flex-basis:auto}#tabsContent.scrollable
{position:absolute;white-space:nowrap}#tabsContent.scrollable.fit-container,#tab
sContent:not(.scrollable){@apply(--layout-horizontal)}#tabsContent.scrollable.fi
t-container{min-width:100%}#tabsContent.scrollable.fit-container>::content>*{-ms
-flex:1 0 auto;-webkit-flex:1 0 auto;flex:1 0 auto}.hidden{display:none}.not-vis
ible{opacity:0;cursor:default}paper-icon-button{width:48px;height:48px;padding:1
2px;margin:0 4px}#selectionBar{position:absolute;height:2px;bottom:0;left:0;righ
t:0;background-color:var(--paper-tabs-selection-bar-color,--paper-yellow-a100);-
webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:left cente
r;transform-origin:left center;transition:-webkit-transform;transition:transform
;@apply(--paper-tabs-selection-bar)}#selectionBar.align-bottom{top:0;bottom:auto
}#selectionBar.expand{transition-duration:.15s;transition-timing-function:cubic-
bezier(.4,0,1,1)}#selectionBar.contract{transition-duration:.18s;transition-timi
ng-function:cubic-bezier(0,0,.2,1)}#tabsContent>::content>:not(#selectionBar){he
ight:100%}</style> <paper-icon-button icon="paper-tabs:chevron-left" class$="[[_
computeScrollButtonClass(_leftHidden, scrollable, hideScrollButtons)]]" on-up="_
onScrollButtonUp" on-down="_onLeftScrollButtonDown" tabindex="-1"></paper-icon-b
utton> <div id="tabsContainer" on-track="_scroll" on-down="_down"> <div id="tabs
Content" class$="[[_computeTabsContentClass(scrollable, fitContainer)]]"> <div i
d="selectionBar" class$="[[_computeSelectionBarClass(noBar, alignBottom)]]" on-t
ransitionend="_onBarTransitionEnd"></div> <content select="*"></content> </div>
</div> <paper-icon-button icon="paper-tabs:chevron-right" class$="[[_computeScro
llButtonClass(_rightHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollBu
ttonUp" on-down="_onRightScrollButtonDown" tabindex="-1"></paper-icon-button> </
template> <script>Polymer({is:"paper-tabs",behaviors:[Polymer.IronResizableBehav
ior,Polymer.IronMenubarBehavior],properties:{noink:{type:Boolean,value:!1,observ
er:"_noinkChanged"},noBar:{type:Boolean,value:!1},noSlide:{type:Boolean,value:!1
},scrollable:{type:Boolean,value:!1},fitContainer:{type:Boolean,value:!1},disabl
eDrag:{type:Boolean,value:!1},hideScrollButtons:{type:Boolean,value:!1},alignBot
tom:{type:Boolean,value:!1},selectable:{type:String,value:"paper-tab"},autoselec
t:{type:Boolean,value:!1},autoselectDelay:{type:Number,value:0},_step:{type:Numb
er,value:10},_holdDelay:{type:Number,value:1},_leftHidden:{type:Boolean,value:!1
},_rightHidden:{type:Boolean,value:!1},_previousTab:{type:Object}},hostAttribute
s:{role:"tablist"},listeners:{"iron-resize":"_onTabSizingChanged","iron-items-ch
anged":"_onTabSizingChanged","iron-select":"_onIronSelect","iron-deselect":"_onI
ronDeselect"},keyBindings:{"left:keyup right:keyup":"_onArrowKeyup"},created:fun
ction(){this._holdJob=null,this._pendingActivationItem=void 0,this._pendingActiv
ationTimeout=void 0,this._bindDelayedActivationHandler=this._delayedActivationHa
ndler.bind(this),this.addEventListener("blur",this._onBlurCapture.bind(this),!0)
},ready:function(){this.setScrollDirection("y",this.$.tabsContainer)},detached:f
unction(){this._cancelPendingActivation()},_noinkChanged:function(t){var e=Polym
er.dom(this).querySelectorAll("paper-tab");e.forEach(t?this._setNoinkAttribute:t
his._removeNoinkAttribute)},_setNoinkAttribute:function(t){t.setAttribute("noink
","")},_removeNoinkAttribute:function(t){t.removeAttribute("noink")},_computeScr
ollButtonClass:function(t,e,i){return!e||i?"hidden":t?"not-visible":""},_compute
TabsContentClass:function(t,e){return t?"scrollable"+(e?" fit-container":""):" f
it-container"},_computeSelectionBarClass:function(t,e){return t?"hidden":e?"alig
n-bottom":""},_onTabSizingChanged:function(){this.debounce("_onTabSizingChanged"
,function(){this._scroll(),this._tabChanged(this.selectedItem)},10)},_onIronSele
ct:function(t){this._tabChanged(t.detail.item,this._previousTab),this._previousT
ab=t.detail.item,this.cancelDebouncer("tab-changed")},_onIronDeselect:function(t
){this.debounce("tab-changed",function(){this._tabChanged(null,this._previousTab
),this._previousTab=null},1)},_activateHandler:function(){this._cancelPendingAct
ivation(),Polymer.IronMenuBehaviorImpl._activateHandler.apply(this,arguments)},_
scheduleActivation:function(t,e){this._pendingActivationItem=t,this._pendingActi
vationTimeout=this.async(this._bindDelayedActivationHandler,e)},_delayedActivati
onHandler:function(){var t=this._pendingActivationItem;this._pendingActivationIt
em=void 0,this._pendingActivationTimeout=void 0,t.fire(this.activateEvent,null,{
bubbles:!0,cancelable:!0})},_cancelPendingActivation:function(){void 0!==this._p
endingActivationTimeout&&(this.cancelAsync(this._pendingActivationTimeout),this.
_pendingActivationItem=void 0,this._pendingActivationTimeout=void 0)},_onArrowKe
yup:function(t){this.autoselect&&this._scheduleActivation(this.focusedItem,this.
autoselectDelay)},_onBlurCapture:function(t){t.target===this._pendingActivationI
tem&&this._cancelPendingActivation()},get _tabContainerScrollSize(){return Math.
max(0,this.$.tabsContainer.scrollWidth-this.$.tabsContainer.offsetWidth)},_scrol
l:function(t,e){if(this.scrollable){var i=e&&-e.ddx||0;this._affectScroll(i)}},_
down:function(t){this.async(function(){this._defaultFocusAsync&&(this.cancelAsyn
c(this._defaultFocusAsync),this._defaultFocusAsync=null)},1)},_affectScroll:func
tion(t){this.$.tabsContainer.scrollLeft+=t;var e=this.$.tabsContainer.scrollLeft
;this._leftHidden=0===e,this._rightHidden=e===this._tabContainerScrollSize},_onL
eftScrollButtonDown:function(){this._scrollToLeft(),this._holdJob=setInterval(th
is._scrollToLeft.bind(this),this._holdDelay)},_onRightScrollButtonDown:function(
){this._scrollToRight(),this._holdJob=setInterval(this._scrollToRight.bind(this)
,this._holdDelay)},_onScrollButtonUp:function(){clearInterval(this._holdJob),thi
s._holdJob=null},_scrollToLeft:function(){this._affectScroll(-this._step)},_scro
llToRight:function(){this._affectScroll(this._step)},_tabChanged:function(t,e){i
f(!t)return this.$.selectionBar.classList.remove("expand"),this.$.selectionBar.c
lassList.remove("contract"),void this._positionBar(0,0);var i=this.$.tabsContent
.getBoundingClientRect(),n=i.width,o=t.getBoundingClientRect(),s=o.left-i.left;i
f(this._pos={width:this._calcPercent(o.width,n),left:this._calcPercent(s,n)},thi
s.noSlide||null==e)return this.$.selectionBar.classList.remove("expand"),this.$.
selectionBar.classList.remove("contract"),void this._positionBar(this._pos.width
,this._pos.left);var a=e.getBoundingClientRect(),l=this.items.indexOf(e),c=this.
items.indexOf(t),r=5;this.$.selectionBar.classList.add("expand");var h=l<c,d=thi
s._isRTL;d&&(h=!h),h?this._positionBar(this._calcPercent(o.left+o.width-a.left,n
)-r,this._left):this._positionBar(this._calcPercent(a.left+a.width-o.left,n)-r,t
his._calcPercent(s,n)+r),this.scrollable&&this._scrollToSelectedIfNeeded(o.width
,s)},_scrollToSelectedIfNeeded:function(t,e){var i=e-this.$.tabsContainer.scroll
Left;i<0?this.$.tabsContainer.scrollLeft+=i:(i+=t-this.$.tabsContainer.offsetWid
th,i>0&&(this.$.tabsContainer.scrollLeft+=i))},_calcPercent:function(t,e){return
100*t/e},_positionBar:function(t,e){t=t||0,e=e||0,this._width=t,this._left=e,th
is.transform("translateX("+e+"%) scaleX("+t/100+")",this.$.selectionBar)},_onBar
TransitionEnd:function(t){var e=this.$.selectionBar.classList;e.contains("expand
")?(e.remove("expand"),e.add("contract"),this._positionBar(this._pos.width,this.
_pos.left)):e.contains("contract")&&e.remove("contract")}})</script> </dom-modul
e> <dom-module id="single-page-style" assetpath="/res/imp/common/"> <template> <
style>.header{max-width:800px}.title{font-size:1.5em;font-weight:700;margin:5px}
.id_input{margin-left:5px;--paper-input-container-input:{font-size:2em};}.refres
h{max-width:40px;max-height:40px;width:initial;height:initial}button{min-width:4
em;max-height:55px}table{border-collapse:collapse;margin-left:5px;margin-bottom:
8px}td,th{border:1px solid #BBB;padding:5px}.tabs{background-color:#1F78B4;color
:#fff;max-width:600px;margin-left:5px;--paper-checkbox-label-color:#fff}paper-ta
b{background-color:#A6CEE3;color:#000}paper-tab.iron-selected{background-color:#
1F78B4;color:#fff;font-weight:700;text-decoration:underline}paper-tab[disabled]{
background-color:#AAA;text-decoration:line-through}.quarantined{background-color
:#fdd}.dead{background-color:#ccc}</style> </template> </dom-module><script>!fun
ction(){SwarmingBehaviors.BotPageBehavior=[SwarmingBehaviors.CommonBehavior,{}]}
()</script> <dom-module id="bot-page-data" assetpath="/res/imp/botpage/"> <scrip
t>!function(){function t(t){if(!s){var e=t.toString();s=e.substring(e.indexOf("(
"))}return t.toLocaleString()+" "+s}var e,s,i=400,n=["first_seen_ts","last_seen_
ts","lease_expiration_ts"],a=["started_ts","completed_ts","abandoned_ts","modifi
ed_ts"];Polymer({is:"bot-page-data",behaviors:[SwarmingBehaviors.BotPageBehavior
],properties:{auth_headers:{type:Object},bot_id:{type:String},busy:{type:Boolean
,computed:"_or(_busy1)",notify:!0},bot:{type:Object,computed:"_parseBot(_bot)",n
otify:!0},bot_exists:{type:Boolean,value:!0,notify:!0},_busy1:{type:Boolean,valu
e:!1},_bot:{type:Object},_events:{type:Object},_tasks:{type:Object}},observers:[
"request(auth_headers,bot_id)"],request:function(){this.bot_id&&this.auth_header
s&&(e&&this.cancelAsync(e),e=this.async(function(){e=void 0;var t="/api/swarming
/v1/bot/"+this.bot_id,s=this._getJsonAsync("_bot",t+"/get","_busy1",this.auth_he
aders);s.then(function(){this.set("bot_exists",!0)}.bind(this)).catch(function(t
){404===t.status?this.set("bot_exists",!1):sk.errorMessage("Http response: "+(t.
status||" ")+" "+t.response)}.bind(this)),this.fire("reload",{id:this.bot_id})},
i))},_parseBot:function(e){if(!e)return{};e.state=e.state||"{}",e.state=JSON.par
se(e.state)||{};var s=e.state.disks||{},i=Object.keys(s);if(i.length){e.disks=[]
;for(var a=0;a<i.length;a++)e.disks.push({id:i[a],mb:s[i[a]].free_mb});e.disks.s
ort(function(t,e){return e.mb-t.mb})}else e.disks=[{id:"unknown",mb:0}];return e
.dimensions=e.dimensions||[],e.dimensions.forEach(function(t){swarming.alias.DIM
ENSIONS_WITH_ALIASES.indexOf(t.key)!==-1&&t.value.forEach(function(e,s){t.value[
s]=swarming.alias.apply(e,t.key)})}),n.forEach(function(s){e[s]&&(e[s]=new Date(
e[s]),e["human_"+s]=t(e[s]))}),e},parseEvents:function(e){if(!e||!e.items)return
[];var e=e.items;return e.forEach(function(e){e.ts&&(e.ts=new Date(e.ts),e.human
_ts=t(e.ts))}),e.sort(function(t,e){return e.ts-t.ts}),e},parseTasks:function(e)
{if(!e||!e.items)return[];var e=e.items;return e.forEach(function(e){if(a.forEac
h(function(s){e[s]&&(e[s]=new Date(e[s]),e["human_"+s]=t(e[s]))}),e.duration)e.h
uman_duration=this._humanDuration(e.duration);else{var s=e.completed_ts||e.aband
oned_ts||e.modified_ts||new Date;e.human_duration=this._timeDiffExact(e.started_
ts,s),e.duration=(s.getTime()-e.started_ts)/1e3}e.state=e.state||"UNKNOWN","COMP
LETED"===e.state&&(e.failure?e.state="FAILURE":e.state="SUCCESS")}.bind(this)),e
.sort(function(t,e){return e.started_ts-t.started_ts}),e}})}()</script> </dom-mo
dule> <dom-module id="bot-page-summary" assetpath="/res/imp/botpage/"> <template
> <style include="single-page-style">.wrapper{display:table;margin-left:auto;mar
gin-bottom:10px;margin-right:5px}paper-checkbox{margin-left:5px}.thick{border-to
p-style:solid}</style> <url-param name="show_full_names" value="{{_show_full_nam
es}}"> </url-param> <url-param name="show_all_tasks" value="{{_show_all_tasks}}"
> </url-param> <url-param name="sort_stats" value="{{_sortstr}}" default_value="
total:desc"> </url-param> <div class="wrapper"> <table> <thead on-sort_change="_
sortChange"> <tr> <th> <span>Name</span> <sort-toggle name="full_name" current="
[[_sort]]"> </sort-toggle> </th> <th> <span>Total</span> <sort-toggle name="tota
l" current="[[_sort]]"> </sort-toggle> </th> <th> <span>Success</span> <sort-tog
gle name="success" current="[[_sort]]"> </sort-toggle> </th> <th> <span>Failed</
span> <sort-toggle name="failed" current="[[_sort]]"> </sort-toggle> </th> <th>
<span>Died</span> <sort-toggle name="bot_died" current="[[_sort]]"> </sort-toggl
e> </th> <th> <span>Average Duration</span> <sort-toggle name="avg_duration" cur
rent="[[_sort]]"> </sort-toggle> </th> <th> <span>Total Duration</span> <sort-to
ggle name="total_time" current="[[_sort]]"> </sort-toggle> </th> <th>Percent of
Total</th> </tr> </thead> <tbody> <template is="dom-repeat" items="[[_tasksToSho
w]]" as="task"> <tr> <td hidden$="[[_truthy(_show_full_names)]]" title="[[task.f
ull_name]]">[[task.name]]</td> <td hidden$="[[_not(_show_full_names)]]" title="[
[task.full_name]]">[[task.full_name]]</td> <td>[[task.total]]</td> <td>[[task.su
ccess]]</td> <td>[[task.failed]]</td> <td>[[task.bot_died]]</td> <td>[[_humanDur
ation(task.avg_duration)]]</td> <td>[[_humanDuration(task.total_time)]]</td> <td
>[[task.total_time_percent]]%</td> </tr> </template> </tbody> <tbody><tr class="
thick"> <td>Total</td> <td>[[_totalStats.total]]</td> <td>[[_totalStats.success]
]</td> <td>[[_totalStats.failed]]</td> <td>[[_totalStats.bot_died]]</td> <td>[[_
humanDuration(_totalStats.avg_duration)]]</td> <td>[[_humanDuration(_totalStats.
total_time)]]</td> <td>100.0%</td> </tr> </tbody></table> <div> <table> <thead>
<tr> <th title="How much time passed between the oldest task fetched and now.">
Total Wall Time </th> <th title="How much of the wall time this bot was busy wit
h a task."> Wall Time Utilization </th> </tr> </thead> <tbody> <tr> <td>[[_human
Duration(_totalStats.wall_time)]]</td> <td>[[_totalStats.wall_time_utilization]]
%</td> </tr> </tbody> </table> <paper-checkbox checked="{{_show_full_names}}"> S
how Full Names </paper-checkbox> <paper-checkbox hidden$="[[_cannotExpand]]" che
cked="{{_show_all_tasks}}"> Show All Tasks </paper-checkbox> </div> </div> </tem
plate> <script>!function(){var t=15;Polymer({is:"bot-page-summary",behaviors:[Sw
armingBehaviors.BotPageBehavior],properties:{tasks:{type:Array},_cannotExpand:{t
ype:Boolean,computed:"_countTasks(_taskStats.*)"},_show_all_tasks:{type:Boolean}
,_show_full_names:{type:Boolean},_sortstr:{type:String},_sort:{type:Object,compu
ted:"_makeSortObject(_sortstr)"},_taskStats:{type:Array},_tasksToShow:{type:Arra
y,computed:"_sortAndLimitTasks(_taskStats.*,_sort.*,_show_all_tasks)"},_totalSta
ts:{type:Object}},observers:["_aggregate(tasks.*)"],_aggregate:function(){if(thi
s.tasks&&this.tasks.length){var t=new Date(1e3*sk.now()),a={},e={total:this.task
s.length,success:0,failed:0,bot_died:0,avg_duration:0,total_time:0,wall_time:(t-
this.tasks[this.tasks.length-1].started_ts)/1e3};this.tasks.forEach(function(t){
var s=t.name.trim(),i=s.split("/");5===i.length&&(s=i[0]+"/"+i[3]),a[s]||(a[s]={
full_name:s,name:s,total:0,success:0,failed:0,bot_died:0,avg_duration:0,total_ti
me:0}),a[s].total++,t.failure?(e.failed++,a[s].failed++):t.internal_failure?(e.b
ot_died++,a[s].bot_died++):(e.success++,a[s].success++),e.total_time+=t.duration
,a[s].total_time+=t.duration}),e.avg_duration=e.total_time/e.total,e.wall_time_u
tilization=(100*e.total_time/e.wall_time).toFixed(1),this.set("_totalStats",e);v
ar s=Object.keys(a),i=[];s.forEach(function(t){a[t].avg_duration=a[t].total_time
/a[t].total,a[t].total_time_percent=(100*a[t].total_time/e.total_time).toFixed(1
),i.push(a[t])});var o=new Substrings({minOccurrence:Math.max(2,s.length-1),minL
ength:6});o.build(s);var n=o.weighByAverage()||[];n.length&&n[0].source.forEach(
function(t){var a=i[t].full_name;i[t].name=a.replace(n[0].name,"...")}),this.set
("_taskStats",i)}},_compare:function(t,a){if(!this._sort)return 0;var e=1;return
"desc"===this._sort.direction&&(e=-1),e*swarming.naturalCompare(t[this._sort.nam
e],a[this._sort.name])},_countTasks:function(){return this._taskStats.length<=t}
,_makeSortObject:function(t){if(t){var a=t.split(":");return 2!=a.length?{name:"
full_name",direction:"asc"}:{name:a[0],direction:a[1]}}},_sortAndLimitTasks:func
tion(){swarming.stableSort(this._taskStats,this._compare.bind(this));var a=this.
_taskStats.length;return!this._show_all_tasks&&this._taskStats.length>t&&(a=t),t
his._taskStats.slice(0,a)},_sortChange:function(t){t&&t.detail&&t.detail.name&&(
t.preventDefault(),t.stopPropagation(),this.set("_sortstr",t.detail.name+":"+t.d
etail.direction))}})}()</script> </dom-module><dom-module id="bot-page" assetpat
h="/res/imp/botpage/"> <template> <style include="iron-flex iron-flex-alignment
iron-positioning swarming-app-style single-page-style task-style">.message{white
-space:pre-line;font-family:monospace}.bot_state{white-space:pre;font-family:mon
ospace;margin-bottom:10px}.events_table,.tasks_table{border:3px solid #1F78B4}.o
ld_version{background-color:#ffd}.stats{min-width:700px;flex-grow:2}#collapse{ma
x-width:700px}.cloud{white-space:nowrap;margin-bottom:5px;margin-top:auto}paper-
checkbox{--paper-checkbox-label-color:#fff;--paper-checkbox-checked-color:#fff;-
-paper-checkbox-checkmark-color:#000;--paper-checkbox-unchecked-color:#fff;paddi
ng:3px}paper-dialog{border-radius:6px}</style> <url-param name="id" value="{{bot
_id}}"> </url-param> <url-param name="show_all_events" value="{{_show_all}}"> </
url-param> <url-param name="selected" value="{{_selected}}"> </url-param> <url-p
aram name="show_state" value="{{_show_state}}"> </url-param> <swarming-app clien
t_id="[[client_id]]" auth_headers="{{_auth_headers}}" permissions="{{_permission
s}}" server_details="{{_server_details}}" signed_in="{{_signed_in}}" busy="[[_or
(_busy1,_busy2,_busy3)]]" name="Swarming Bot Page"> <h2 hidden$="[[_signed_in]]"
>You must sign in to see anything useful.</h2> <div hidden$="[[_not(_signed_in)]
]"> <bot-page-data id="data" auth_headers="[[_auth_headers]]" bot_id="[[bot_id]]
" bot="{{_bot}}" bot_exists="{{_bot_exists}}" busy="{{_busy1}}" events="{{_event
s}}" tasks="{{_tasks}}" on-reload="_clearAndReload"> </bot-page-data> <div class
="header horizontal layout"> <paper-input class="id_input" label="Bot id" value=
"{{bot_id}}"></paper-input> <template is="dom-if" if="[[_ccLink(_bot)]]"> <div c
lass="vertical layout"> <a href$="[[_ccLink(_bot)]]" class="cloud">Cloud Console
</a> </div> </template> <button on-click="_refresh"> <iron-icon class="refresh"
icon="icons:refresh"></iron-icon> </button> </div> </div> <h2 hidden$="[[_bot_ex
ists]]">Bot not found.</h2> <div hidden$="[[_not(_bot_exists)]]"> <div class="ho
rizontal wrap layout"> <div class="flex"> <table> <tbody><tr class$="[[_isDead(_
bot)]]" title="Last time the bot contacted the server."> <td>Last Seen</td> <td
title="[[_bot.human_last_seen_ts]]"> [[_timeDiffExact(_bot.last_seen_ts)]] ago</
td> <td> <template is="dom-if" if="[[_canShutdown(_bot,_permissions)]]"> <button
class="raised" on-click="_promptShutdown"> Shut Down Gracefully </button> </tem
plate> <template is="dom-if" if="[[_canDelete(_bot,_permissions)]]"> <button cla
ss="raised" on-click="_promptDelete"> Delete </button> </template> </td> </tr> <
template is="dom-if" if="[[_bot.quarantined]]"> <tr class="quarantined"> <td>Qua
rantined</td> <td colspan="2" class="message">[[_quarantineMessage(_bot)]]</td>
</tr> </template> <tr> <td>Current Task</td> <td> <a target="_blank" rel="noopen
er" href$="[[_taskLink(_bot.task_id)]]"> [[_task(_bot)]] </a> </td> <td> </td> <
/tr> <tr> <td rowspan$="[[_numRows(_bot.dimensions)]]"> <a href$="[[_siblingBots
Link(_bot.dimensions)]]" title="The list of bots that also matches these dimensi
ons (except id)."> Dimensions</a> </td> </tr> <template is="dom-repeat" items="[
[_bot.dimensions]]" as="dim"> <tr> <td>[[dim.key]]</td> <td>[[_concat(dim.value)
]]</td> </tr> </template> <tr title="IP address that the server saw the connecti
on from."> <td>External IP</td> <td><a href$="[[_bot.external_ip]]">[[_bot.exter
nal_ip]]</a></td> <td></td> </tr> <tr class$="[[_classVersion(_server_details.bo
t_version,_bot.version)]]" title="Version is based on the content of swarming_bo
t.zip which is the swarming bot code. The bot won't update if quarantined, dead,
or busy."> <td>Bot Version</td> <td>[[_shorten(_bot.version,'8')]]</td> <td></t
d> </tr> <tr title="The version the server expects the bot to be using."> <td>Ex
pected Bot Version</td> <td>[[_shorten(_server_details.bot_version,'8')]]</td> <
td></td> </tr> <tr title="First time ever a bot with this id contacted the serve
r."> <td>First seen</td> <td title="[[_bot.human_first_seen_ts]]"> [[_timeDiffAp
prox(_bot.first_seen_ts)]] ago </td> <td></td> </tr> <tr title="How the bot is a
uthenticated by the server."> <td>Authenticated as</td> <td colspan="2">[[_bot.a
uthenticated_as]]</td> </tr> <template is="dom-if" if="[[_bot.lease_id]]"> <tr>
<td>Machine Provider Lease ID</td> <td colspan="2"> <a href$="[[_mpLink(_bot,_se
rver_details.machine_provider_template)]]"> [[_bot.lease_id]] </a> </td> </tr> <
tr> <td>Machine Provider Lease Expires</td> <td colspan="2">[[_bot.human_lease_e
xpiration_ts]]</td> </tr> </template> </tbody></table> <span class="title">State
</span> <template is="dom-if" if="[[_not(_show_state)]]"> <button on-click="_tog
gleState"> <iron-icon icon="icons:add-circle-outline"></iron-icon> </button> </t
emplate> <template is="dom-if" if="[[_show_state]]"> <button on-click="_toggleSt
ate"> <iron-icon icon="icons:remove-circle-outline"></iron-icon> </button> </tem
plate> <iron-collapse id="collapse" opened="[[_show_state]]"> <div class="bot_st
ate">[[_prettyPrint(_bot.state)]]</div> </iron-collapse> </div> <div class="stat
s flex"> <bot-page-summary tasks="[[_tasks]]"> </bot-page-summary> </div> </div>
<div class="tabs"> <paper-tabs selected="{{_selected}}" no-bar=""> <paper-tab>T
asks</paper-tab> <paper-tab>Events</paper-tab> </paper-tabs> <template is="dom-i
f" if="[[_showEvents]]"> <paper-checkbox checked="{{_show_all}}"> Show all event
s </paper-checkbox> </template> </div> <template is="dom-if" if="[[_not(_showEve
nts)]]"> <table class="tasks_table"> <thead> <tr> <th>Task</th> <th>Started</th>
<th>Duration</th> <th>Result</th> </tr> </thead> <tbody> <template is="dom-repe
at" items="{{_tasks}}" as="task"> <tr class$="[[_taskClass(task)]]"> <td> <a tar
get="_blank" rel="noopener" href$="[[_taskLink(task.task_id)]]"> [[task.name]] <
/a> </td> <td>[[task.human_started_ts]]</td> <td title="[[task.human_completed_t
s]]">[[task.human_duration]]</td> <td>[[task.state]]</td> </tr> </template> </tb
ody> </table> </template> <template is="dom-if" if="[[_showEvents]]"> <table cla
ss="events_table"> <thead> <tr> <th>Message</th> <th>Type</th> <th>Timestamp</th
> <th>Task ID</th> <th>Version</th> </tr> </thead> <tbody> <template is="dom-rep
eat" items="{{_eventList(_show_all,_events.*)}}" as="event"> <tr> <td class="mes
sage">[[event.message]]</td> <td>[[event.event_type]]</td> <td>[[event.human_ts]
]</td> <td> <a target="_blank" rel="noopener" href$="[[_taskLink(event.task_id)]
]"> [[event.task_id]] </a> </td> <td class$="[[_classVersion(_server_details.bot
_version,event.version)]]"> [[_shorten(event.version,'8')]] </td> </tr> </templa
te> </tbody> </table> </template> <pageable-data id="page_tasks" hidden$="[[_sho
wEvents]]" busy="{{_busy2}}" label="Show more tasks" output="{{_tasks}}" parse="
[[_parseTasks]]"> </pageable-data> <pageable-data id="page_events" hidden$="[[_n
ot(_showEvents)]]" busy="{{_busy3}}" label="Show more events" output="{{_events}
}" parse="[[_parseEvents]]"> </pageable-data> </div> </swarming-app> <paper-dial
og id="prompt" modal="" on-iron-overlay-closed="_promptClosed"> <h2>Are you sure
?</h2> <div>Are you sure you want to [[_dialogPrompt]]?</div> <div class="button
s"> <paper-button dialog-dismiss="" autofocus="">No</paper-button> <paper-button
dialog-confirm="">Yes</paper-button> </div> </paper-dialog> </template> <script
> (function(){ |
| 781 | 785 |
| 782 Polymer({ | 786 Polymer({ |
| 783 is: 'bot-page', | 787 is: 'bot-page', |
| 784 | 788 |
| 785 behaviors: [ | 789 behaviors: [ |
| 786 SwarmingBehaviors.BotPageBehavior, | 790 SwarmingBehaviors.BotPageBehavior, |
| 787 ], | 791 ], |
| 788 | 792 |
| 789 properties: { | 793 properties: { |
| 790 bot_id: { | 794 bot_id: { |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1018 } | 1022 } |
| 1019 return ""; | 1023 return ""; |
| 1020 }, | 1024 }, |
| 1021 | 1025 |
| 1022 _toggleState: function() { | 1026 _toggleState: function() { |
| 1023 this.set("_show_state", !this._show_state); | 1027 this.set("_show_state", !this._show_state); |
| 1024 } | 1028 } |
| 1025 | 1029 |
| 1026 }); | 1030 }); |
| 1027 })(); </script> </dom-module><dom-module id="interval-timer" assetpath="/res/i
mp/common/"> <script>!function(){Polymer({is:"interval-timer",properties:{period
:{type:Number,value:-1,observer:"_periodChanged"}},_periodChanged:function(e){th
is._timeout&&window.clearTimeout(this._timeout),e>0&&(this._timeout=window.setTi
meout(function(){this.fire("trigger"),this._periodChanged(e)}.bind(this),1e3*e))
}})}()</script> </dom-module> <dom-module id="task-page-data" assetpath="/res/im
p/taskpage/"> <script>!function(){var t,e=400,s=["abandoned_ts","completed_ts","
created_ts","modified_ts","started_ts"];Polymer({is:"task-page-data",behaviors:[
SwarmingBehaviors.CommonBehavior,SwarmingBehaviors.TaskBehavior],properties:{aut
h_headers:{type:Object},task_id:{type:String},busy:{type:Boolean,computed:"_or(_
busy1,_busy2,_busy3)",notify:!0},request:{type:Object,computed:"_parseRequest(_r
equest)",notify:!0},result:{type:Object,computed:"_parseResult(_result)",notify:
!0},stdout:{type:String,computed:"_parseStdout(_stdout)",notify:!0},task_exists:
{type:Boolean,value:!0,notify:!0},_busy1:{type:Boolean,value:!1},_busy2:{type:Bo
olean,value:!1},_busy3:{type:Boolean,value:!1},_request:{type:Object},_result:{t
ype:Object},_stdout:{type:Object}},observers:["reload(auth_headers,task_id)"],re
load:function(){if(!this.task_id||!this.auth_headers)return void console.log("ta
sk_id and auth_headers can't be empty");t&&this.cancelAsync(t);var s="/api/swarm
ing/v1/task/"+this.task_id;t=this.async(function(){t=void 0;var e=this._getJsonA
sync("_request",s+"/request","_busy1",this.auth_headers);e.then(function(){this.
set("task_exists",!0)}.bind(this)).catch(function(t){404===t.status?this.set("ta
sk_exists",!1):sk.errorMessage("Http response: "+(t.status||" ")+" "+t.response)
}.bind(this)),this._getJsonAsync("_result",s+"/result?include_performance_stats=
true","_busy2",this.auth_headers),this.reloadStdout()},e)},_parseRequest:functio
n(t){return t?(t.tagMap={},t.tags=t.tags||[],t.tags.forEach(function(e){var s=e.
split(":",1),a=s[0],u=e.substring(a.length+1);t.tagMap[a]=u}),s.forEach(function
(e){t[e]&&(t[e]=new Date(t[e]),t["human_"+e]=sk.human.localeTime(t[e]))}),t):{}}
,_parseResult:function(t){if(!t)return{};var e=new Date;return s.forEach(functio
n(e){t[e]&&(t[e]=new Date(t[e]),t["human_"+e]=sk.human.localeTime(t[e]))}),!t.du
ration&&t.state===this.RUNNING&&t.started_ts&&(t.duration=(e-t.started_ts)/1e3),
t.duration&&(t.human_duration=this._humanDuration(t.duration)),t},_parseStdout:f
unction(t){return t&&t.output?t.output:""},reloadStdout:function(){this._getJson
Async("_stdout","/api/swarming/v1/task/"+this.task_id+"/stdout","_busy3",this.au
th_headers)}})}()</script> </dom-module><dom-module id="task-disambiguation" ass
etpath="/res/imp/taskpage/"> <template> <style include="swarming-app-style singl
e-page-style task-style"></style> <table> <thead> <tr> <th>Try ID</th> <th>Bot I
D</th> <th>Status</th> </tr> </thead> <tbody> <template id="result_list" is="dom
-repeat" items="[[_results]]" as="result" observe="task_id bot_id state"> <tr> <
td> <a href$="[[_taskLink(result.task_id,'true')]]"> [[result.task_id]] </a> </t
d> <td> <a href$="[[_botLink(result.bot_id)]]"> [[result.bot_id]] </a> </td> <td
class$="[[_stateClass(result)]]">[[state(result)]]</td> </tr> </template> </tbo
dy> </table> </template> <script>Polymer({is:"task-disambiguation",behaviors:[Sw
armingBehaviors.CommonBehavior,SwarmingBehaviors.TaskBehavior],properties:{auth_
headers:{type:Object},summary_result:{type:Object},task_id:{type:String},busy:{t
ype:Boolean,value:!1,notify:!0},_busyArr:{type:Array,value:function(){return[]}}
,_results:{type:Array,value:function(){return[]}}},observers:["_fetchRest(auth_h
eaders,task_id,summary_result)","_computeBusy(_busyArr.*)"],_computeBusy:functio
n(){for(var s=0;s<this._busyArr.length;s++)if(this._busyArr[s].status)return!0;r
eturn!1},_fetchRest:function(s,r,t){if(s&&r&&t){var e=t.try_number;this.set("_bu
syArr",[]),this.set("_results",[]);for(var u=r.substring(0,r.length-1),i="/api/s
warming/v1/task/",a=0;a<e-1;a++){var n=u+(a+1);this.splice("_busyArr",a,0,{}),th
is.splice("_results",a,0,{task_id:n}),this._getJsonAsyncArr(a,"_results",i+n+"/r
esult","_busyArr",s)}t.task_id=u+e,this.splice("_results",e-1,1,t)}}})</script>
</dom-module><dom-module id="task-page" assetpath="/res/imp/taskpage/"> <templat
e> <style include="iron-flex iron-flex-alignment swarming-app-style single-page-
style task-style">.milo{width:calc(100% - 11px);height:2000px}.right{margin-top:
8px}.break-all{word-break:break-all}.expand{min-width:3em;vertical-align:middle;
padding:.5em}.code{font-family:monospace}.stdout{white-space:pre-line;padding:2p
x}.refresh_input{padding:0 5px}.reproduce{margin-left:5px}.tabbed{border:3px sol
id #1F78B4;margin-left:5px;min-height:80vh;min-width:550px}.task-info{min-width:
500px}.cipd-header{-moz-user-select:none;-webkit-user-select:none;-ms-user-selec
t:none;user-select:none;font-weight:700;margin-left:8px}</style> <url-param name
="id" value="{{task_id}}"> </url-param> <url-param name="try_detail" value="{{_t
ry_detail}}"> </url-param> <url-param name="request_detail" value="{{_request_de
tail}}"> </url-param> <url-param name="show_raw" value="{{_show_raw}}"> </url-pa
ram> <url-param name="refresh" value="{{_refresh_interval}}" default_value="10">
</url-param> <swarming-app client_id="[[client_id]]" auth_headers="{{_auth_head
ers}}" permissions="{{_permissions}}" profile="{{_profile}}" server_details="{{_
server_details}}" signed_in="{{_signed_in}}" busy="[[_or(_busy1,busy2)]]" name="
Swarming Task Page"> <h2 hidden$="[[_signed_in]]">You must sign in to see anythi
ng useful.</h2> <div hidden$="[[_not(_signed_in)]]"> <task-page-data id="data" a
uth_headers="[[_auth_headers]]" task_id="[[task_id]]" busy="{{_busy1}}" request=
"{{_request}}" result="{{_result}}" stdout="{{_stdout}}" task_exists="{{_task_ex
ists}}"> </task-page-data> <div class="horizontal layout wrap"> <div class="left
flex"> <div class="horizontal layout"> <paper-input class="id_input" label="Tas
k id" value="{{task_id}}"></paper-input> <button on-click="_refresh"> <iron-icon
class="refresh" icon="icons:refresh"></iron-icon> </button> <button on-click="_
promptRetry">Retry</button> <template is="dom-if" if="[[_canCancelTask(_result,_
permissions)]]"> <button on-click="_promptCancel">Cancel</button> </template> </
div> <h2 hidden$="[[_task_exists]]">Task not found.</h2> <template is="dom-if" i
f="[[_disambiguate(task_id,_result)]]"> <h2>Displaying a summary for a task with
multiple tries</h2> <task-disambiguation busy="{{busy2}}" auth_headers="[[_auth
_headers]]" task_id="[[task_id]]" summary_result="[[_result]]"> </task-disambigu
ation> </template> <table class="task-info" hidden$="[[_not(_task_exists)]]"> <t
body> <tr> <td>Name</td> <td>[[_request.name]]</td> </tr> <tr> <td>State</td> <t
d class$="[[_stateClass(_result)]]">[[state(_result)]]</td> </tr> <tr> <td>Creat
ed</td> <td title$="[[_request.created_ts]]">[[_request.human_created_ts]]</td>
</tr> <template is="dom-if" if="[[_wasPickedUp(_result)]]"> <tr> <td>Started</td
> <td title$="[[_result.started_ts]]">[[_result.human_started_ts]]</td> </tr> </
template> <template is="dom-if" if="[[_wasNotPickedUp(_result)]]"> <tr> <td>Expi
res</td> <td>[[_expires(_request)]]</td> </tr> </template> <template is="dom-if"
if="[[_result.human_completed_ts]]"> <tr> <td>Completed</td> <td title$="[[_res
ult.completed_ts]]">[[_result.human_completed_ts]]</td> </tr> </template> <templ
ate is="dom-if" if="[[_result.human_abandoned_ts]]"> <tr> <td>Abandoned</td> <td
title$="[[_result.abandoned_ts]]">[[_result.human_abandoned_ts]]</td> </tr> </t
emplate> <tr> <td>Last Updated</td> <td title$="[[_result.modified_ts]]">[[_resu
lt.human_modified_ts]]</td> </tr> <template is="dom-if" if="[[_result.deduped_fr
om]]"> <tr> <td><b>Deduped from</b></td> <td> <a href$="[[_taskLink(_result.dedu
ped_from)]]"> [[_result.deduped_from]] </a> </td> </tr> </template> <tr> <td>Pen
ding Time</td> <td>[[_pending(_result)]]</td> </tr> <tr> <td>Duration</td> <td>[
[_result.human_duration]]</td> </tr> <tr> <td>Priority</td> <td>[[_request.prior
ity]]</td> </tr> <tr> <td>User</td> <td>[[_request.user]]</td> </tr> <tr> <td>Au
thenticated</td> <td>[[_request.authenticated]]</td> </tr> <template is="dom-if"
if="[[_request.service_account]]"> <tr> <td>Service Account</td> <td>[[_request
.service_account]]</td> </tr> </template> <template is="dom-if" if="[[_request.p
roperties.secret_bytes]]"> <tr> <td>Secret Bytes</td> <td>[[_request.properties.
secret_bytes]]</td> </tr> </template> <template is="dom-if" if="[[_request.paren
t_task_id]]"> <tr> <td>Parent Task</td> <td> <a href$="[[_taskLink(_request.pare
nt_task_id)]]">[[_request.parent_task_id]]</a> </td> </tr> </template> <tr> <td
rowspan$="[[_rowspan(_request.properties.dimensions)]]"> <a title="The list of b
ots that matches the list of dimensions" href$="[[_botListLink(_request.properti
es.dimensions)]]"> Requested Dimensions </a> </td> </tr> <template is="dom-repea
t" items="{{_request.properties.dimensions}}" as="dimension"> <tr> <td><b>[[dime
nsion.key]]:</b> [[_alias(dimension)]]</td> </tr> </template> <tr> <td>Isolated
Inputs</td> <td> <a href$="[[_isolateLink(_request.properties.inputs_ref)]]"> [[
_request.properties.inputs_ref.isolated]] </a> </td> </tr> <template is="dom-if"
if="[[_request.properties.outputs.length]]"> <tr> <td rowspan$="[[_rowspan(_req
uest.properties.outputs)]]">Expected outputs</td> </tr> <template is="dom-repeat
" items="{{_request.properties.outputs}}" as="output"> <tr> <td>[[output]]</td>
</tr> </template> </template> <template is="dom-if" if="[[_not(_request_detail)]
]"> <tr> <td>More Details</td> <td> <button on-click="_toggleDetails"> <iron-ico
n icon="icons:add-circle-outline"></iron-icon> </button> </td> </tr> </template>
<template is="dom-if" if="[[_request_detail]]"> <tr> <td>Hide Details</td> <td>
<button on-click="_toggleDetails"> <iron-icon icon="icons:remove-circle-outline
"></iron-icon> </button> </td> </tr> </template> </tbody> <tbody id="more_detail
s" hidden$="[[!_request_detail]]"> <tr> <td>Extra Args</td> <td class="code brea
k-all">[[_extraArgs(_request)]]</td> </tr> <tr> <td>Command</td> <td class="code
break-all">[[_command(_request)]]</td> </tr> <tr> <td>Idempotent</td> <td>[[_re
quest.properties.idempotent]]</td> </tr> <tr> <td rowspan$="[[_rowspan(_request.
tags)]]">Tags</td> </tr> <template is="dom-repeat" items="{{_request.tags}}" as=
"tag"> <tr> <td class="break-all">[[tag]]</td> </tr> </template> <tr> <td>Execut
ion timeout</td> <td>[[_humanDuration(_request.properties.execution_timeout_secs
)]]</td> </tr> <tr> <td>I/O timeout</td> <td>[[_humanDuration(_request.propertie
s.io_timeout_secs)]]</td> </tr> <tr> <td>Grace period</td> <td>[[_humanDuration(
_request.properties.grace_period_secs)]]</td> </tr> <tr> <td>CIPD server</td> <t
d> <a href$="[[_request.properties.cipd_input.server]]"> [[_request.properties.c
ipd_input.server]] </a> </td> </tr> <tr> <td>CIPD version</td> <td class="break-
all">[[_request.properties.cipd_input.client_package.version]]</td> </tr> <templ
ate is="dom-if" if="[[_wasPickedUp(_result)]]"> <tr> <td>CIPD package name</td>
<td>[[_result.cipd_pins.client_package.package_name]]</td> </tr> </template> <tr
hidden$="[[_not(_request.properties.cipd_input)]]"> <td rowspan$="[[_cipdRowspa
n(_request,_result)]]">CIPD packages</td> </tr> <template is="dom-repeat" items=
"[[_cipdPackages(_request,_result)]]" as="cipd"> <tr> <td>[[cipd.path]]/</td> </
tr> <tr> <td class="break-all"> <span class="cipd-header">Requested: </span>[[ci
pd.requested]] </td> </tr> <tr hidden$="[[!_hasActualCIPDPackages(_result)]]"> <
td class="break-all"> <span class="cipd-header">Actual: </span>[[cipd.actual]] <
/td> </tr> </template> <tr hidden$="[[_empty(_request.properties.caches)]]"> <td
rowspan$="[[_rowspan(_request.properties.caches)]]">Named caches</td> </tr> <te
mplate is="dom-repeat" items="[[_request.properties.caches]]" as="cache"> <tr> <
td><span>[[cache.name]]</span>:<span>[[cache.path]]</span></td> </tr> </template
> </tbody> </table> <div class="title" hidden$="[[_not(_task_exists)]]">Task Exe
cution</div> <template is="dom-if" if="[[_wasPickedUp(_result)]]"> <table hidden
$="[[_not(_task_exists)]]"> <tbody><tr> <td>Bot assigned to task</td> <td><a hre
f$="[[_botLink(_result.bot_id)]]">[[_result.bot_id]]</a></td> </tr> <tr> <td row
span$="[[_rowspan(_result.bot_dimensions)]]"> <a>Bot Dimensions</a> </td> </tr>
<template is="dom-repeat" items="[[_result.bot_dimensions]]" as="dimension"> <tr
> <td><b>[[dimension.key]]:</b> [[_alias(dimension)]]</td> </tr> </template> <tr
> <td>Exit code</td> <td>[[_result.exit_code]]</td> </tr> <tr> <td>Try number</t
d> <td>[[_result.try_number]]</td> </tr> <tr> <td>Failure</td> <td class$="[[_fa
ilureClass(_result.failure)]]">[[_result.failure]]</td> </tr> <tr> <td>Internal
Failure</td> <td class$="[[_internalClass(_result.internal_failure)]]">[[_result
.internal_failure]]</td> </tr> <tr> <td>Isolated Outputs</td> <td> <a href$="[[_
isolateLink(_result.outputs_ref)]]"> [[_result.outputs_ref.isolated]] </a> </td>
</tr> <tr> <td>Bot version</td> <td>[[_result.bot_version]]</td> </tr> <tr> <td
>Server version</td> <td>[[_result.server_versions]]</td> </tr> </tbody></table>
</template> <template is="dom-if" if="[[_wasNotPickedUp(_result)]]"> This space
left blank until a bot is assigned to the task. </template> <template is="dom-i
f" if="[[_result.performance_stats]]"> <div class="title">Performance Stats</div
> <table> <tbody><tr> <td title="This includes time taken to download inputs, is
olate outputs, and setup CIPD">Total Overhead</td> <td>[[_humanDuration(_result.
performance_stats.bot_overhead)]]</td> </tr> <tr> <td>Downloading Inputs From Is
olate</td> <td>[[_humanDuration(_result.performance_stats.isolated_download.dura
tion)]]</td> </tr> <tr> <td>Uploading Outputs To Isolate</td> <td>[[_humanDurati
on(_result.performance_stats.isolated_upload.duration)]]</td> </tr> <tr hidden$=
"[[!_result.performance_stats.isolated_download.initial_size]]"> <td>Initial bot
cache</td> <td>[[_result.performance_stats.isolated_download.initial_number_ite
ms]] items; [[_bytes(_result.performance_stats.isolated_download.initial_size)]]
</td> </tr> </tbody></table> </template> <div hidden$="[[_not(_task_exists)]]">
<div class="title">Reproducing the task locally</div> <div class="reproduce"> <d
iv>Download inputs files into directory <i>foo</i>:</div> <div class="code"> pyt
hon isolateserver.py download -I [[_request.properties.inputs_ref.isolatedserver
]] --namespace [[_request.properties.inputs_ref.namespace]] -s [[_request.proper
ties.inputs_ref.isolated]] --target foo</div> <br> <div>Run this task locally:</
div> <div class="code"> python swarming.py reproduce -S [[_host_url]] [[task_id]
]</div> <br> <div>Download output results into directory <i>foo</i>:</div> <div
class="code"> python swarming.py collect -S [[_host_url]] --task-output-dir=foo
[[task_id]]</div> <br> <div>Looking for <i>swarming.py</i>?</div> <div class="co
de"> git clone https://github.com/luci/client-py</div> </div> </div> </div> <div
class="flex right" hidden$="[[_not(_task_exists)]]"> <div class="horizontal lay
out"> <div class="tabs"> <paper-tabs selected="{{_show_raw}}" no-bar=""> <paper-
tab disabled$="[[_noMilo(_request)]]">Milo Output</paper-tab> <paper-tab>Raw Out
put</paper-tab> </paper-tabs> </div> <paper-input class="refresh_input" label="R
efresh Interval (seconds)" value="{{_refresh_interval}}" title="How often to ref
resh all information about the task" auto-validate="" min="1" max="1000" pattern
="[0-9]+"> </paper-input> </div> <template is="dom-if" if="[[_supportsMilo(_requ
est,_show_raw)]]"> <div class="milo tabbed" hidden$="[[_isSummaryLink(task_id)]]
"> Milo results are only generated for task summaires, that is, tasks whose ids
end in 0. Tasks ending in 1 or 2 represent possible retries of tasks. See <a hre
f="//goo.gl/LE4rwV">the docs</a> for more. </div> <iframe id="miloFrame" class="
milo tabbed" src$="[[_getDisplayServerLink(_server_details.display_server_url_te
mplate,task_id)]]"></iframe> </template> <template is="dom-if" if="[[_show_raw]]
"> <div class="code stdout tabbed break-all">[[_rawOutput(_stdout,_result)]]</di
v> </template> </div> </div> </div> </swarming-app> <paper-dialog id="prompt" mo
dal="" on-iron-overlay-closed="_promptClosed"> <h2>Are you sure?</h2> <div>Are y
ou sure you want to [[_dialog_prompt]]?</div> <div class="buttons"> <paper-butto
n dialog-dismiss="" autofocus="">No</paper-button> <paper-button dialog-confirm=
"">Yes</paper-button> </div> </paper-dialog> <interval-timer period="[[_refresh_
interval]]" on-trigger="_softRefresh"> </interval-timer> </template> <script>!fu
nction(){Polymer({is:"task-page",behaviors:[SwarmingBehaviors.CommonBehavior,Swa
rmingBehaviors.TaskBehavior],properties:{task_id:{type:String},client_id:{type:S
tring},_dialog_prompt:{type:String,value:""},_host_url:{type:String,value:functi
on(){return window.location.hostname}},_refresh_interval:{type:Number},_request:
{type:Object,observer:"_requestUpdated"},_request_detail:{type:Boolean},_result:
{type:Object},_server_details:{type:Object},_stdout:{type:String}},_alias:functi
on(t){var e=t.value;return Array.isArray(e)||(e=[e]),swarming.alias.has(t.key)&&
e.forEach(function(i,s){e[s]=swarming.alias.apply(i,t.key)}),e.join(" | ")},_byt
es:function(t){return sk.human.bytes(t)},_canCancelTask:function(t,e){return t&&
"PENDING"===t.state&&e.cancel_task},_cancelTask:function(){var t="/api/swarming/
v1/task/"+this.task_id+"/cancel";swarming.postWithToast(t,"Canceling task "+this
.task_id,this._auth_headers)},_cipdRowspan:function(t,e){if(!t||!t.properties||!
t.properties.cipd_input)return 0;var i=(t.properties.cipd_input.packages||[]).le
ngth;return i*=this._hasActualCIPDPackages(e)?3:2,i+1},_cipdPackages:function(t,
e){if(!t||!t.properties||!t.properties.cipd_input)return[];var i=t.properties.ci
pd_input.packages||[],s=e&&e.cipd_pins&&e.cipd_pins.packages||[];return i.forEac
h(function(t){t.requested=t.package_name+":"+t.version,s.forEach(function(e){e.p
ath===t.path&&(t.actual=e.package_name+":"+e.version)})}),i},_command:function(t
){if(!t||!t.properties)return"";var e=t.properties.command||[];return e.join(" "
)},_disambiguate:function(t,e){return!(!t.endsWith("0")||!e)&&e.try_number>1},_e
mpty:function(t){return!t||0==t.length},_expires:function(t){var e=parseInt(t.ex
piration_secs);return e?sk.human.localeTime(new Date(t.created_ts.getTime()+1e3*
e)):t.expiration_secs+" seconds from created time"},_extraArgs:function(t){if(!t
||!t.properties)return"";var e=t.properties.extra_args||[];return e.join(" ")},_
failureClass:function(t){return t?"failed_task":""},_getDisplayServerLink:functi
on(t,e){if(t)return t.replace("%s",e)},_hasActualCIPDPackages:function(t){return
t&&t.cipd_pins&&t.cipd_pins.packages},_internalClass:function(t){return t?"exce
ption":""},_isolateLink:function(t){if(t&&t.isolatedserver)return t.isolatedserv
er+"/browse?namespace="+t.namespace+"&hash="+t.isolated},_isSummaryLink:function
(t){return t&&t.endsWith(0)},_noMilo:function(t){return!this._tag(t,"allow_milo"
)},_pending:function(t){if(!t.created_ts)return"";var e=t.started_ts||t.abandone
d_ts||new Date;return e<=t.created_ts?"0s":this._timeDiffExact(t.created_ts,e)},
_promptClosed:function(t){t.detail.confirmed&&(this._dialog_prompt.startsWith("c
ancel")?this._cancelTask():this._retryTask())},_promptCancel:function(){this.set
("_dialog_prompt","cancel task "+this.task_id),this.$.prompt.open()},_promptRetr
y:function(){this.set("_dialog_prompt","retry task "+this.task_id),this.$.prompt
.open()},_rawOutput:function(t,e){return t?t:"PENDING"===e.state||"RUNNING"===e.
state?"[No output yet]":"[No output received]"},_refresh:function(){this.$.data.
reload()},_requestUpdated:function(t){this._noMilo(t)&&this.set("_show_raw",1)},
_softRefresh:function(){if(!this._result||"RUNNING"===this._result.state||"PENDI
NG"===this._result.state){this.$.data.reload();var t=this.$$("iframe");t&&(t.src
=this._getDisplayServerLink(this._server_details.display_server_url_template,thi
s.task_id))}},_retryTask:function(){if(!this._request)return void sk.errorMessag
e("Task not yet loaded",3e3);var t={expiration_secs:this._request.expiration_sec
s,name:this._request.name+" (retry)",parent_task_id:this._request.parent_task_id
,priority:this._request.priority,properties:this._request.properties,tags:this._
request.tags,user:this._profile.email,service_account:this._request.service_acco
unt};t.properties.idempotent=!1,swarming.postWithToast("/api/swarming/v1/tasks/n
ew","Retrying task "+this.task_id,this._auth_headers,t).then(function(t){if(t=JS
ON.parse(t),t&&t.task_id){var e={id:this.task_id};history.pushState(e,"Task Page
"),this.set("task_id",t.task_id)}}.bind(this),function(t){console.log("Task coul
d not be retried",t)})},_rowspan:function(t){return t=t||[],t.length+1},_support
sMilo:function(t,e){return!e&&t&&this._tag(t,"allow_milo")},_toggleDetails:funct
ion(){this.set("_request_detail",!this._request_detail)},_tag:function(t,e){if(t
&&t.tagMap)return t.tagMap[e]},_wasPickedUp:function(t){return t&&t.state!==this
.PENDING&&t.state!==this.CANCELED&&t.state!=this.EXPIRED},_wasNotPickedUp:functi
on(t){return t&&!this._wasPickedUp(t)}})}()</script> </dom-module> </div></body>
</html> | 1031 })(); </script> </dom-module><dom-module id="interval-timer" assetpath="/res/i
mp/common/"> <script>!function(){Polymer({is:"interval-timer",properties:{period
:{type:Number,value:-1,observer:"_periodChanged"}},_periodChanged:function(e){th
is._timeout&&window.clearTimeout(this._timeout),e>0&&(this._timeout=window.setTi
meout(function(){this.fire("trigger"),this._periodChanged(e)}.bind(this),1e3*e))
}})}()</script> </dom-module> <dom-module id="task-page-data" assetpath="/res/im
p/taskpage/"> <script>!function(){var t,e=400,s=["abandoned_ts","completed_ts","
created_ts","modified_ts","started_ts"];Polymer({is:"task-page-data",behaviors:[
SwarmingBehaviors.CommonBehavior,SwarmingBehaviors.TaskBehavior],properties:{aut
h_headers:{type:Object},task_id:{type:String},busy:{type:Boolean,computed:"_or(_
busy1,_busy2,_busy3)",notify:!0},request:{type:Object,computed:"_parseRequest(_r
equest)",notify:!0},result:{type:Object,computed:"_parseResult(_result)",notify:
!0},stdout:{type:String,computed:"_parseStdout(_stdout)",notify:!0},task_exists:
{type:Boolean,value:!0,notify:!0},_busy1:{type:Boolean,value:!1},_busy2:{type:Bo
olean,value:!1},_busy3:{type:Boolean,value:!1},_request:{type:Object},_result:{t
ype:Object},_stdout:{type:Object}},observers:["reload(auth_headers,task_id)"],re
load:function(){if(!this.task_id||!this.auth_headers)return void console.log("ta
sk_id and auth_headers can't be empty");t&&this.cancelAsync(t);var s="/api/swarm
ing/v1/task/"+this.task_id;t=this.async(function(){t=void 0;var e=this._getJsonA
sync("_request",s+"/request","_busy1",this.auth_headers);e.then(function(){this.
set("task_exists",!0)}.bind(this)).catch(function(t){404===t.status?this.set("ta
sk_exists",!1):sk.errorMessage("Http response: "+(t.status||" ")+" "+t.response)
}.bind(this)),this._getJsonAsync("_result",s+"/result?include_performance_stats=
true","_busy2",this.auth_headers),this.reloadStdout()},e)},_parseRequest:functio
n(t){return t?(t.tagMap={},t.tags=t.tags||[],t.tags.forEach(function(e){var s=e.
split(":",1),a=s[0],u=e.substring(a.length+1);t.tagMap[a]=u}),s.forEach(function
(e){t[e]&&(t[e]=new Date(t[e]),t["human_"+e]=sk.human.localeTime(t[e]))}),t):{}}
,_parseResult:function(t){if(!t)return{};var e=new Date;return s.forEach(functio
n(e){t[e]&&(t[e]=new Date(t[e]),t["human_"+e]=sk.human.localeTime(t[e]))}),!t.du
ration&&t.state===this.RUNNING&&t.started_ts&&(t.duration=(e-t.started_ts)/1e3),
t.duration&&(t.human_duration=this._humanDuration(t.duration)),t},_parseStdout:f
unction(t){return t&&t.output?t.output:""},reloadStdout:function(){this._getJson
Async("_stdout","/api/swarming/v1/task/"+this.task_id+"/stdout","_busy3",this.au
th_headers)}})}()</script> </dom-module><dom-module id="task-disambiguation" ass
etpath="/res/imp/taskpage/"> <template> <style include="swarming-app-style singl
e-page-style task-style"></style> <table> <thead> <tr> <th>Try ID</th> <th>Bot I
D</th> <th>Status</th> </tr> </thead> <tbody> <template id="result_list" is="dom
-repeat" items="[[_results]]" as="result" observe="task_id bot_id state"> <tr> <
td> <a href$="[[_taskLink(result.task_id,'true')]]"> [[result.task_id]] </a> </t
d> <td> <a href$="[[_botLink(result.bot_id)]]"> [[result.bot_id]] </a> </td> <td
class$="[[_stateClass(result)]]">[[state(result)]]</td> </tr> </template> </tbo
dy> </table> </template> <script>Polymer({is:"task-disambiguation",behaviors:[Sw
armingBehaviors.CommonBehavior,SwarmingBehaviors.TaskBehavior],properties:{auth_
headers:{type:Object},summary_result:{type:Object},task_id:{type:String},busy:{t
ype:Boolean,value:!1,notify:!0},_busyArr:{type:Array,value:function(){return[]}}
,_results:{type:Array,value:function(){return[]}}},observers:["_fetchRest(auth_h
eaders,task_id,summary_result)","_computeBusy(_busyArr.*)"],_computeBusy:functio
n(){for(var s=0;s<this._busyArr.length;s++)if(this._busyArr[s].status)return!0;r
eturn!1},_fetchRest:function(s,r,t){if(s&&r&&t){var e=t.try_number;this.set("_bu
syArr",[]),this.set("_results",[]);for(var u=r.substring(0,r.length-1),i="/api/s
warming/v1/task/",a=0;a<e-1;a++){var n=u+(a+1);this.splice("_busyArr",a,0,{}),th
is.splice("_results",a,0,{task_id:n}),this._getJsonAsyncArr(a,"_results",i+n+"/r
esult","_busyArr",s)}t.task_id=u+e,this.splice("_results",e-1,1,t)}}})</script>
</dom-module><dom-module id="task-page" assetpath="/res/imp/taskpage/"> <templat
e> <style include="iron-flex iron-flex-alignment swarming-app-style single-page-
style task-style">.milo{width:calc(100% - 11px);height:2000px}.right{margin-top:
8px}.break-all{word-break:break-all}.expand{min-width:3em;vertical-align:middle;
padding:.5em}.code{font-family:monospace}.stdout{white-space:pre-line;padding:2p
x}.refresh_input{padding:0 5px}.reproduce{margin-left:5px}.tabbed{border:3px sol
id #1F78B4;margin-left:5px;min-height:80vh;min-width:550px}.task-info{min-width:
500px}.cipd-header{-moz-user-select:none;-webkit-user-select:none;-ms-user-selec
t:none;user-select:none;font-weight:700;margin-left:8px}</style> <url-param name
="id" value="{{task_id}}"> </url-param> <url-param name="try_detail" value="{{_t
ry_detail}}"> </url-param> <url-param name="request_detail" value="{{_request_de
tail}}"> </url-param> <url-param name="show_raw" value="{{_show_raw}}"> </url-pa
ram> <url-param name="refresh" value="{{_refresh_interval}}" default_value="10">
</url-param> <swarming-app client_id="[[client_id]]" auth_headers="{{_auth_head
ers}}" permissions="{{_permissions}}" profile="{{_profile}}" server_details="{{_
server_details}}" signed_in="{{_signed_in}}" busy="[[_or(_busy1,busy2)]]" name="
Swarming Task Page"> <h2 hidden$="[[_signed_in]]">You must sign in to see anythi
ng useful.</h2> <div hidden$="[[_not(_signed_in)]]"> <task-page-data id="data" a
uth_headers="[[_auth_headers]]" task_id="[[task_id]]" busy="{{_busy1}}" request=
"{{_request}}" result="{{_result}}" stdout="{{_stdout}}" task_exists="{{_task_ex
ists}}"> </task-page-data> <div class="horizontal layout wrap"> <div class="left
flex"> <div class="horizontal layout"> <paper-input class="id_input" label="Tas
k id" value="{{task_id}}"></paper-input> <button on-click="_refresh"> <iron-icon
class="refresh" icon="icons:refresh"></iron-icon> </button> <button on-click="_
promptRetry">Retry</button> <template is="dom-if" if="[[_canCancelTask(_result,_
permissions)]]"> <button on-click="_promptCancel">Cancel</button> </template> </
div> <h2 hidden$="[[_task_exists]]">Task not found.</h2> <template is="dom-if" i
f="[[_disambiguate(task_id,_result)]]"> <h2>Displaying a summary for a task with
multiple tries</h2> <task-disambiguation busy="{{busy2}}" auth_headers="[[_auth
_headers]]" task_id="[[task_id]]" summary_result="[[_result]]"> </task-disambigu
ation> </template> <table class="task-info" hidden$="[[_not(_task_exists)]]"> <t
body> <tr> <td>Name</td> <td>[[_request.name]]</td> </tr> <tr> <td>State</td> <t
d class$="[[_stateClass(_result)]]">[[state(_result)]]</td> </tr> <tr> <td>Creat
ed</td> <td title$="[[_request.created_ts]]">[[_request.human_created_ts]]</td>
</tr> <template is="dom-if" if="[[_wasPickedUp(_result)]]"> <tr> <td>Started</td
> <td title$="[[_result.started_ts]]">[[_result.human_started_ts]]</td> </tr> </
template> <template is="dom-if" if="[[_wasNotPickedUp(_result)]]"> <tr> <td>Expi
res</td> <td>[[_expires(_request)]]</td> </tr> </template> <template is="dom-if"
if="[[_result.human_completed_ts]]"> <tr> <td>Completed</td> <td title$="[[_res
ult.completed_ts]]">[[_result.human_completed_ts]]</td> </tr> </template> <templ
ate is="dom-if" if="[[_result.human_abandoned_ts]]"> <tr> <td>Abandoned</td> <td
title$="[[_result.abandoned_ts]]">[[_result.human_abandoned_ts]]</td> </tr> </t
emplate> <tr> <td>Last Updated</td> <td title$="[[_result.modified_ts]]">[[_resu
lt.human_modified_ts]]</td> </tr> <template is="dom-if" if="[[_result.deduped_fr
om]]"> <tr> <td><b>Deduped from</b></td> <td> <a href$="[[_taskLink(_result.dedu
ped_from)]]"> [[_result.deduped_from]] </a> </td> </tr> </template> <tr> <td>Pen
ding Time</td> <td>[[_pending(_result)]]</td> </tr> <tr> <td>Duration</td> <td>[
[_result.human_duration]]</td> </tr> <tr> <td>Priority</td> <td>[[_request.prior
ity]]</td> </tr> <tr> <td>User</td> <td>[[_request.user]]</td> </tr> <tr> <td>Au
thenticated</td> <td>[[_request.authenticated]]</td> </tr> <template is="dom-if"
if="[[_request.service_account]]"> <tr> <td>Service Account</td> <td>[[_request
.service_account]]</td> </tr> </template> <template is="dom-if" if="[[_request.p
roperties.secret_bytes]]"> <tr> <td>Secret Bytes</td> <td>[[_request.properties.
secret_bytes]]</td> </tr> </template> <template is="dom-if" if="[[_request.paren
t_task_id]]"> <tr> <td>Parent Task</td> <td> <a href$="[[_taskLink(_request.pare
nt_task_id)]]">[[_request.parent_task_id]]</a> </td> </tr> </template> <tr> <td
rowspan$="[[_rowspan(_request.properties.dimensions)]]"> <a title="The list of b
ots that matches the list of dimensions" href$="[[_botListLink(_request.properti
es.dimensions)]]"> Requested Dimensions </a> </td> </tr> <template is="dom-repea
t" items="{{_request.properties.dimensions}}" as="dimension"> <tr> <td><b>[[dime
nsion.key]]:</b> [[_alias(dimension)]]</td> </tr> </template> <tr> <td>Isolated
Inputs</td> <td> <a href$="[[_isolateLink(_request.properties.inputs_ref)]]"> [[
_request.properties.inputs_ref.isolated]] </a> </td> </tr> <template is="dom-if"
if="[[_request.properties.outputs.length]]"> <tr> <td rowspan$="[[_rowspan(_req
uest.properties.outputs)]]">Expected outputs</td> </tr> <template is="dom-repeat
" items="{{_request.properties.outputs}}" as="output"> <tr> <td>[[output]]</td>
</tr> </template> </template> <template is="dom-if" if="[[_not(_request_detail)]
]"> <tr> <td>More Details</td> <td> <button on-click="_toggleDetails"> <iron-ico
n icon="icons:add-circle-outline"></iron-icon> </button> </td> </tr> </template>
<template is="dom-if" if="[[_request_detail]]"> <tr> <td>Hide Details</td> <td>
<button on-click="_toggleDetails"> <iron-icon icon="icons:remove-circle-outline
"></iron-icon> </button> </td> </tr> </template> </tbody> <tbody id="more_detail
s" hidden$="[[!_request_detail]]"> <tr> <td>Extra Args</td> <td class="code brea
k-all">[[_extraArgs(_request)]]</td> </tr> <tr> <td>Command</td> <td class="code
break-all">[[_command(_request)]]</td> </tr> <tr> <td>Idempotent</td> <td>[[_re
quest.properties.idempotent]]</td> </tr> <tr> <td rowspan$="[[_rowspan(_request.
tags)]]">Tags</td> </tr> <template is="dom-repeat" items="{{_request.tags}}" as=
"tag"> <tr> <td class="break-all">[[tag]]</td> </tr> </template> <tr> <td>Execut
ion timeout</td> <td>[[_humanDuration(_request.properties.execution_timeout_secs
)]]</td> </tr> <tr> <td>I/O timeout</td> <td>[[_humanDuration(_request.propertie
s.io_timeout_secs)]]</td> </tr> <tr> <td>Grace period</td> <td>[[_humanDuration(
_request.properties.grace_period_secs)]]</td> </tr> <tr> <td>CIPD server</td> <t
d> <a href$="[[_request.properties.cipd_input.server]]"> [[_request.properties.c
ipd_input.server]] </a> </td> </tr> <tr> <td>CIPD version</td> <td class="break-
all">[[_request.properties.cipd_input.client_package.version]]</td> </tr> <templ
ate is="dom-if" if="[[_wasPickedUp(_result)]]"> <tr> <td>CIPD package name</td>
<td>[[_result.cipd_pins.client_package.package_name]]</td> </tr> </template> <tr
hidden$="[[_not(_request.properties.cipd_input)]]"> <td rowspan$="[[_cipdRowspa
n(_request,_result)]]">CIPD packages</td> </tr> <template is="dom-repeat" items=
"[[_cipdPackages(_request,_result)]]" as="cipd"> <tr> <td>[[cipd.path]]/</td> </
tr> <tr> <td class="break-all"> <span class="cipd-header">Requested: </span>[[ci
pd.requested]] </td> </tr> <tr hidden$="[[!_hasActualCIPDPackages(_result)]]"> <
td class="break-all"> <span class="cipd-header">Actual: </span>[[cipd.actual]] <
/td> </tr> </template> <tr hidden$="[[_empty(_request.properties.caches)]]"> <td
rowspan$="[[_rowspan(_request.properties.caches)]]">Named caches</td> </tr> <te
mplate is="dom-repeat" items="[[_request.properties.caches]]" as="cache"> <tr> <
td><span>[[cache.name]]</span>:<span>[[cache.path]]</span></td> </tr> </template
> </tbody> </table> <div class="title" hidden$="[[_not(_task_exists)]]">Task Exe
cution</div> <template is="dom-if" if="[[_wasPickedUp(_result)]]"> <table hidden
$="[[_not(_task_exists)]]"> <tbody><tr> <td>Bot assigned to task</td> <td><a hre
f$="[[_botLink(_result.bot_id)]]">[[_result.bot_id]]</a></td> </tr> <tr> <td row
span$="[[_rowspan(_result.bot_dimensions)]]"> <a>Bot Dimensions</a> </td> </tr>
<template is="dom-repeat" items="[[_result.bot_dimensions]]" as="dimension"> <tr
> <td><b>[[dimension.key]]:</b> [[_alias(dimension)]]</td> </tr> </template> <tr
> <td>Exit code</td> <td>[[_result.exit_code]]</td> </tr> <tr> <td>Try number</t
d> <td>[[_result.try_number]]</td> </tr> <tr> <td>Failure</td> <td class$="[[_fa
ilureClass(_result.failure)]]">[[_result.failure]]</td> </tr> <tr> <td>Internal
Failure</td> <td class$="[[_internalClass(_result.internal_failure)]]">[[_result
.internal_failure]]</td> </tr> <tr> <td>Isolated Outputs</td> <td> <a href$="[[_
isolateLink(_result.outputs_ref)]]"> [[_result.outputs_ref.isolated]] </a> </td>
</tr> <tr> <td>Bot version</td> <td>[[_result.bot_version]]</td> </tr> <tr> <td
>Server version</td> <td>[[_result.server_versions]]</td> </tr> </tbody></table>
</template> <template is="dom-if" if="[[_wasNotPickedUp(_result)]]"> This space
left blank until a bot is assigned to the task. </template> <template is="dom-i
f" if="[[_result.performance_stats]]"> <div class="title">Performance Stats</div
> <table> <tbody><tr> <td title="This includes time taken to download inputs, is
olate outputs, and setup CIPD">Total Overhead</td> <td>[[_humanDuration(_result.
performance_stats.bot_overhead)]]</td> </tr> <tr> <td>Downloading Inputs From Is
olate</td> <td>[[_humanDuration(_result.performance_stats.isolated_download.dura
tion)]]</td> </tr> <tr> <td>Uploading Outputs To Isolate</td> <td>[[_humanDurati
on(_result.performance_stats.isolated_upload.duration)]]</td> </tr> <tr hidden$=
"[[!_result.performance_stats.isolated_download.initial_size]]"> <td>Initial bot
cache</td> <td>[[_result.performance_stats.isolated_download.initial_number_ite
ms]] items; [[_bytes(_result.performance_stats.isolated_download.initial_size)]]
</td> </tr> </tbody></table> </template> <div hidden$="[[_not(_task_exists)]]">
<div class="title">Reproducing the task locally</div> <div class="reproduce"> <d
iv>Download inputs files into directory <i>foo</i>:</div> <div class="code"> pyt
hon isolateserver.py download -I [[_request.properties.inputs_ref.isolatedserver
]] --namespace [[_request.properties.inputs_ref.namespace]] -s [[_request.proper
ties.inputs_ref.isolated]] --target foo</div> <br> <div>Run this task locally:</
div> <div class="code"> python swarming.py reproduce -S [[_host_url]] [[task_id]
]</div> <br> <div>Download output results into directory <i>foo</i>:</div> <div
class="code"> python swarming.py collect -S [[_host_url]] --task-output-dir=foo
[[task_id]]</div> <br> <div>Looking for <i>swarming.py</i>?</div> <div class="co
de"> git clone https://github.com/luci/client-py</div> </div> </div> </div> <div
class="flex right" hidden$="[[_not(_task_exists)]]"> <div class="horizontal lay
out"> <div class="tabs"> <paper-tabs selected="{{_show_raw}}" no-bar=""> <paper-
tab disabled$="[[_noMilo(_request)]]">Milo Output</paper-tab> <paper-tab>Raw Out
put</paper-tab> </paper-tabs> </div> <paper-input class="refresh_input" label="R
efresh Interval (seconds)" value="{{_refresh_interval}}" title="How often to ref
resh all information about the task" auto-validate="" min="1" max="1000" pattern
="[0-9]+"> </paper-input> </div> <template is="dom-if" if="[[_supportsMilo(_requ
est,_show_raw)]]"> <div class="milo tabbed" hidden$="[[_isSummaryLink(task_id)]]
"> Milo results are only generated for task summaires, that is, tasks whose ids
end in 0. Tasks ending in 1 or 2 represent possible retries of tasks. See <a hre
f="//goo.gl/LE4rwV">the docs</a> for more. </div> <iframe id="miloFrame" class="
milo tabbed" src$="[[_getDisplayServerLink(_server_details.display_server_url_te
mplate,task_id)]]"></iframe> </template> <template is="dom-if" if="[[_show_raw]]
"> <div class="code stdout tabbed break-all">[[_rawOutput(_stdout,_result)]]</di
v> </template> </div> </div> </div> </swarming-app> <paper-dialog id="prompt" mo
dal="" on-iron-overlay-closed="_promptClosed"> <h2>Are you sure?</h2> <div>Are y
ou sure you want to [[_dialog_prompt]]?</div> <div class="buttons"> <paper-butto
n dialog-dismiss="" autofocus="">No</paper-button> <paper-button dialog-confirm=
"">Yes</paper-button> </div> </paper-dialog> <interval-timer period="[[_refresh_
interval]]" on-trigger="_softRefresh"> </interval-timer> </template> <script>!fu
nction(){Polymer({is:"task-page",behaviors:[SwarmingBehaviors.CommonBehavior,Swa
rmingBehaviors.TaskBehavior],properties:{task_id:{type:String},client_id:{type:S
tring},_dialog_prompt:{type:String,value:""},_host_url:{type:String,value:functi
on(){return window.location.hostname}},_refresh_interval:{type:Number},_request:
{type:Object,observer:"_requestUpdated"},_request_detail:{type:Boolean},_result:
{type:Object},_server_details:{type:Object},_stdout:{type:String}},_alias:functi
on(t){var e=t.value;return Array.isArray(e)||(e=[e]),swarming.alias.has(t.key)&&
e.forEach(function(i,s){e[s]=swarming.alias.apply(i,t.key)}),e.join(" | ")},_byt
es:function(t){return sk.human.bytes(t)},_canCancelTask:function(t,e){return t&&
"PENDING"===t.state&&e.cancel_task},_cancelTask:function(){var t="/api/swarming/
v1/task/"+this.task_id+"/cancel";swarming.postWithToast(t,"Canceling task "+this
.task_id,this._auth_headers)},_cipdRowspan:function(t,e){if(!t||!t.properties||!
t.properties.cipd_input)return 0;var i=(t.properties.cipd_input.packages||[]).le
ngth;return i*=this._hasActualCIPDPackages(e)?3:2,i+1},_cipdPackages:function(t,
e){if(!t||!t.properties||!t.properties.cipd_input)return[];var i=t.properties.ci
pd_input.packages||[],s=e&&e.cipd_pins&&e.cipd_pins.packages||[];return i.forEac
h(function(t){t.requested=t.package_name+":"+t.version,s.forEach(function(e){e.p
ath===t.path&&(t.actual=e.package_name+":"+e.version)})}),i},_command:function(t
){if(!t||!t.properties)return"";var e=t.properties.command||[];return e.join(" "
)},_disambiguate:function(t,e){return!(!t.endsWith("0")||!e)&&e.try_number>1},_e
mpty:function(t){return!t||0==t.length},_expires:function(t){var e=parseInt(t.ex
piration_secs);return e?sk.human.localeTime(new Date(t.created_ts.getTime()+1e3*
e)):t.expiration_secs+" seconds from created time"},_extraArgs:function(t){if(!t
||!t.properties)return"";var e=t.properties.extra_args||[];return e.join(" ")},_
failureClass:function(t){return t?"failed_task":""},_getDisplayServerLink:functi
on(t,e){if(t)return t.replace("%s",e)},_hasActualCIPDPackages:function(t){return
t&&t.cipd_pins&&t.cipd_pins.packages},_internalClass:function(t){return t?"exce
ption":""},_isolateLink:function(t){if(t&&t.isolatedserver)return t.isolatedserv
er+"/browse?namespace="+t.namespace+"&hash="+t.isolated},_isSummaryLink:function
(t){return t&&t.endsWith(0)},_noMilo:function(t){return!this._tag(t,"allow_milo"
)},_pending:function(t){if(!t.created_ts)return"";var e=t.started_ts||t.abandone
d_ts||new Date;return e<=t.created_ts?"0s":this._timeDiffExact(t.created_ts,e)},
_promptClosed:function(t){t.detail.confirmed&&(this._dialog_prompt.startsWith("c
ancel")?this._cancelTask():this._retryTask())},_promptCancel:function(){this.set
("_dialog_prompt","cancel task "+this.task_id),this.$.prompt.open()},_promptRetr
y:function(){this.set("_dialog_prompt","retry task "+this.task_id),this.$.prompt
.open()},_rawOutput:function(t,e){return t?t:"PENDING"===e.state||"RUNNING"===e.
state?"[No output yet]":"[No output received]"},_refresh:function(){this.$.data.
reload()},_requestUpdated:function(t){this._noMilo(t)&&this.set("_show_raw",1)},
_softRefresh:function(){if(!this._result||"RUNNING"===this._result.state||"PENDI
NG"===this._result.state){this.$.data.reload();var t=this.$$("iframe");t&&(t.src
=this._getDisplayServerLink(this._server_details.display_server_url_template,thi
s.task_id))}},_retryTask:function(){if(!this._request)return void sk.errorMessag
e("Task not yet loaded",3e3);var t={expiration_secs:this._request.expiration_sec
s,name:this._request.name+" (retry)",parent_task_id:this._request.parent_task_id
,priority:this._request.priority,properties:this._request.properties,tags:this._
request.tags,user:this._profile.email,service_account:this._request.service_acco
unt};t.properties.idempotent=!1,swarming.postWithToast("/api/swarming/v1/tasks/n
ew","Retrying task "+this.task_id,this._auth_headers,t).then(function(t){if(t=JS
ON.parse(t),t&&t.task_id){var e={id:this.task_id};history.pushState(e,"Task Page
"),this.set("task_id",t.task_id)}}.bind(this),function(t){console.log("Task coul
d not be retried",t)})},_rowspan:function(t){return t=t||[],t.length+1},_support
sMilo:function(t,e){return!e&&t&&this._tag(t,"allow_milo")},_toggleDetails:funct
ion(){this.set("_request_detail",!this._request_detail)},_tag:function(t,e){if(t
&&t.tagMap)return t.tagMap[e]},_wasPickedUp:function(t){return t&&t.state!==this
.PENDING&&t.state!==this.CANCELED&&t.state!=this.EXPIRED},_wasNotPickedUp:functi
on(t){return t&&!this._wasPickedUp(t)}})}()</script> </dom-module> </div></body>
</html> |
| OLD | NEW |