blob: 4c492fd260525f46ccbba559a937888c583e6f41 [file] [log] [blame]
<style>
.labeled-checkbox {
display: flex;
white-space: nowrap;
}
</style>
<template id="overlay-template">
<style>
overlay-mask {
left: 0;
padding: 8px;
position: absolute;
top: 0;
z-index: 1000;
font-family: sans-serif;
-webkit-justify-content: center;
background: rgba(0, 0, 0, 0.8);
display: -webkit-flex;
height: 100%;
left: 0;
position: fixed;
top: 0;
width: 100%;
}
overlay-mask:focus {
outline: none;
}
overlay-vertical-centering-container {
-webkit-justify-content: center;
-webkit-flex-direction: column;
display: -webkit-flex;
}
overlay-frame {
z-index: 1100;
background: rgb(255, 255, 255);
border: 1px solid #ccc;
margin: 75px;
display: -webkit-flex;
-webkit-flex-direction: column;
}
title-bar {
-webkit-align-items: center;
-webkit-flex-direction: row;
border-bottom: 1px solid #ccc;
background-color: #ddd;
display: -webkit-flex;
padding: 5px;
-webkit-flex: 0 0 auto;
}
title {
display: inline;
font-weight: bold;
-webkit-box-flex: 1;
-webkit-flex: 1 1 auto;
}
close-button {
-webkit-align-self: flex-end;
border: 1px solid #eee;
background-color: #999;
font-size: 10pt;
font-weight: bold;
padding: 2px;
text-align: center;
width: 16px;
}
close-button:hover {
background-color: #ddd;
border-color: black;
cursor: pointer;
}
overlay-content {
display: -webkit-flex;
-webkit-flex: 1 1 auto;
-webkit-flex-direction: column;
overflow-y: auto;
padding: 10px;
min-width: 300px;
}
button-bar {
-webkit-align-items: baseline;
border-top: 1px solid #ccc;
display: -webkit-flex;
-webkit-flex: 0 0 auto;
-webkit-flex-direction: row-reverse;
padding: 4px;
}
</style>
<overlay-mask>
<overlay-vertical-centering-container>
<overlay-frame>
<title-bar>
<title></title>
<close-button>&#x2715</close-button>
</title-bar>
<overlay-content>
<content></content>
</overlay-content>
<button-bar></button-bar>
</overlay-frame>
</overlay-vertical-centering-container>
</overlay-mask>
</template>
<style>
x-drag-handle{-webkit-user-select:none;box-sizing:border-box;display:block}x-drag-handle.horizontal-drag-handle{background-image:-webkit-gradient(linear,0 0,0 100%,from(#e5e5e5),to(#d1d1d1));border-bottom:1px solid #8e8e8e;border-top:1px solid white;cursor:ns-resize;height:7px;position:relative;z-index:10}x-drag-handle.vertical-drag-handle{background-image:-webkit-gradient(linear,0 0,100% 0,from(#e5e5e5),to(#d1d1d1));border-left:1px solid white;border-right:1px solid #8e8e8e;cursor:ew-resize;position:relative;width:7px;z-index:10}
</style>
<polymer-element name="tracing-analysis-tab-view" constructor="TracingAnalysisTabView">
<template>
<style>
:host {
display: flex;
flex-flow: column nowrap;
overflow: hidden;
box-sizing: border-box;
}
tab-strip[tabs-hidden] {
display: none;
}
tab-strip {
background-color: rgb(236, 236, 236);
border-bottom: 1px solid #8e8e8e;
display: flex;
flex: 0 0 auto;
flex-flow: row;
overflow-x: auto;
padding: 0 10px 0 10px;
font-size: 12px;
}
tab-button {
display: block;
flex: 0 0 auto;
padding: 4px 15px 1px 15px;
margin-top: 2px;
}
tab-button[selected=true] {
background-color: white;
border: 1px solid rgb(163, 163, 163);
border-bottom: none;
padding: 3px 14px 1px 14px;
}
tabs-content-container {
display: flex;
flex: 1 1 auto;
overflow: auto;
width: 100%;
}
::content > * {
flex: 1 1 auto;
}
::content > *:not([selected]) {
display: none;
}
button-label {
display: inline;
}
</style>
<tab-strip>
<template repeat="{{tab in tabs_}}">
<tab-button button-id="{{ tab.id }}" on-click="{{ tabButtonSelectHandler_ }}" selected="{{ selectedTab_.id === tab.id }}">
<button-label>{{ tab.label ? tab.label : 'No Label'}}</button-label>
</tab-button>
</template>
</tab-strip>
<tabs-content-container id="content-container">
<content></content>
</tabs-content-container>
</template>
</polymer-element>
<polymer-element name="tracing-analysis-sub-view" constructor="TracingAnalysisSubView">
</polymer-element>
<style>
.analysis-link{color:-webkit-link;cursor:pointer;text-decoration:underline}.analysis-link:hover{cursor:pointer}
</style>
<style>
x-generic-object-view{display:block;font-family:monospace}x-generic-object-view-with-label{display:block}
</style>
<style>
.analysis-header{font-weight:bold}.analysis-results{font-family:monospace;white-space:pre}.analysis-results *{-webkit-user-select:text!important;cursor:text}.analysis-table{border-collapse:collapse;border-width:0;margin-bottom:25px;width:100%}.analysis-table tr>td:first-child{padding-left:2px}.analysis-table tr>td{padding:2px 4px 2px 4px;vertical-align:text-top;width:150px}.analysis-table td td{padding:0;width:auto}.analysis-table-header{text-align:left}.analysis-table-row{vertical-align:top}.analysis-table-row:nth-child(2n+0){background-color:#e2e2e2}.analysis-table-row-inverted:nth-child(2n+1){background-color:#e2e2e2}.selection-changing-link{color:-webkit-link;cursor:pointer;text-decoration:underline}.analysis-table thead{background-color:#e2e2e2;font-weight:bold}.analysis-table tfoot{font-weight:bold}
</style>
<style>
.sortable-table>thead>tr>td{cursor:pointer!important}
</style>
<polymer-element name="tv-c-single-slice-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tv-c-multi-slice-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tv-c-single-thread-time-slice-sub-view" extends="tracing-analysis-sub-view">
<template>
<style>
table {
border-collapse: collapse;
border-width: 0;
margin-bottom: 25px;
width: 100%;
}
table tr > td:first-child {
padding-left: 2px;
}
table tr > td {
padding: 2px 4px 2px 4px;
vertical-align: text-top;
width: 150px;
}
table td td {
padding: 0 0 0 0;
width: auto;
}
tr {
vertical-align: top;
}
tr:nth-child(2n+0) {
background-color: #e2e2e2;
}
</style>
<table>
<tr>
<td>Running process:</td><td id="process-name"></td>
</tr>
<tr>
<td>Running thread:</td><td id="thread-name"></td>
</tr>
<tr>
<td>State:</td>
<td><b><span id="state"></span></b></td>
</tr>
<tr>
<td>Start:</td><td id="start"></td>
</tr>
<tr>
<td>Duration:</td><td id="duration"></td>
</tr>
<tr>
<td>On CPU:</td><td id="on-cpu"></td>
</tr>
<tr>
<td>Running instead:</td><td id="running-instead"></td>
</tr>
<tr>
<td>Args:</td><td id="args"></td>
</tr>
</table>
</template>
</polymer-element>
<polymer-element name="tv-c-single-cpu-slice-sub-view" extends="tracing-analysis-sub-view">
<template>
<style>
table {
border-collapse: collapse;
border-width: 0;
margin-bottom: 25px;
width: 100%;
}
table tr > td:first-child {
padding-left: 2px;
}
table tr > td {
padding: 2px 4px 2px 4px;
vertical-align: text-top;
width: 150px;
}
table td td {
padding: 0 0 0 0;
width: auto;
}
tr {
vertical-align: top;
}
tr:nth-child(2n+0) {
background-color: #e2e2e2;
}
</style>
<table>
<tr>
<td>Running process:</td><td id="process-name"></td>
</tr>
<tr>
<td>Running thread:</td><td id="thread-name"></td>
</tr>
<tr>
<td>Start:</td><td id="start"></td>
</tr>
<tr>
<td>Duration:</td><td id="duration"></td>
</tr>
<tr>
<td>Active slices:</td><td id="running-thread"></td>
</tr>
</table>
</template>
</polymer-element>
<polymer-element name="tv-c-single-instant-event-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tv-c-multi-instant-event-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tv-c-counter-sample-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tv-c-single-flow-event-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tv-c-multi-flow-event-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tv-c-single-object-instance-sub-view" extends="tracing-analysis-sub-view">
<template>
<style>
#snapshots > * {
display: block;
}
:host {
overflow: auto;
display: block;
}
* {
-webkit-user-select: text;
}
.title {
border-bottom: 1px solid rgb(128, 128, 128);
font-size: 110%;
font-weight: bold;
}
td, th {
font-family: monospace;
vertical-align: top;
}
</style>
</template>
</polymer-element>
<polymer-element name="tv-c-single-object-snapshot-sub-view" extends="tracing-analysis-sub-view">
<template>
<style>
#args {
white-space: pre;
}
:host {
overflow: auto;
display: flex;
}
* {
-webkit-user-select: text;
}
.title {
border-bottom: 1px solid rgb(128, 128, 128);
font-size: 110%;
font-weight: bold;
}
td, th {
font-family: monospace;
vertical-align: top;
}
</style>
<content></content>
</template>
</polymer-element>
<polymer-element name="tv-c-multi-object-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tv-c-single-sample-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tv-c-multi-sample-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tv-c-single-interaction-record-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tv-c-multi-interaction-record-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tv-c-single-alert-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tv-c-multi-alert-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tv-c-single-global-memory-dump-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tv-c-multi-global-memory-dump-sub-view" extends="tracing-analysis-sub-view">
</polymer-element>
<polymer-element name="tracing-analysis-view" constructor="TracingAnalysisView">
<template>
<style>
:host {
background-color: white;
display: flex;
flex-direction: column;
height: 275px;
overflow: auto;
}
:host(.tall-mode) {
height: 525px;
}
::content > * {
flex: 1 0 auto;
}
</style>
<content></content>
</template>
</polymer-element>
<style>
.mouse-mode-selector{-webkit-user-drag:element;-webkit-user-select:none;background:#DDD;border:1px solid #BBB;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,0.2);left:calc(100% - 120px);position:absolute;top:100px;user-select:none;width:29px;z-index:20}.mouse-mode-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAChCAYAAACbBNzvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA3LzE2LzEzRNEKUwAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAA9aSURBVHic7V1rTFvl//+UrgUmZWMpbLa6cLErwpYxkqLGkjAG88WSbmumGUllvlmAJctMRtybvlHrLXiJUekMIZuYSCL5gS+EuLIXGEGjqCsllCEW6xQECgzWG7S05/+C/zkp9LTn0gsL6ych9JzznOdzPj19Luf5PN/nCN59913ixRdfRFdXFxLx/2GDgCAIYmpqCoWFhUjE/4cNae+99x4AIFH/Hzak7nDqDu+wOyyw2WzEdl9EMpG23ReQbKQE73Q8coJ3bfcFWK1W/Pbbb/D7/UhLi/37DwaDEIvFKC8vR0lJSdjxbRVstVoxPDyMxx9/HAUFBcjMzIRAIOCdXzAYhNvtht1ux/DwMACEid5WwSMjI3jyySdRXFwMsVgMoVAYk2CCIJCZmYns7GyMjo5iZGQkPoKXl5exd+9e3hdGIhgMIj8/H5mZmRCJRIyCyQ5NJBAEgUAgAKFQiIKCAiwsLISl4VxoHA4H+vv74Xa7uZ4aBqFQiOzsbIhEIojFYojFYohEItq/8fFxXLlyBUtLSxHThOaxZ88eCIXC2AWPj48DAH799deYBaelpUEoFLL6++qrrwAAH3zwAav0YrGYthLkJHh6ehpzc3MAgPn5eUxPT8csWiAQMJbboaEhmM1mAIDFYsHQ0BDvPDkJtlgsYdt+v59LFrxw/fr1sG2Xy8UrL06C6+vrw7bFYjEvYi747rvvwrYlEgmvvDjV0g6HI+p2ohBP3qh32OFwoLe3l1VGvb29sNvtvC8kFCMjI9DpdKzS6nQ6mEwm1nnTPg/7/X6MjY1hcnKS/VX+P/bu3YuysjLk5uYypv36669x8uRJZGRkQCQSwev1oqOjAz09PZx5CwsLcenSJRw+fBh+vx+rq6swmUx46aWXNqWjvcMDAwO8xAIbnZKBgQFeNXhzczMvscBGp6S5uRk//vhj1HS0grVaLYqLi3kRy+Vy1NXVRe0RRcKNGzeg0Wh48apUKnR1daG6ujpqOtpKy+VyQa1Wo6SkBLdv38aFCxeoY5988gn1+fLly9TnL774ApWVlXjiiSfgdDqxtrbG+aJ9Ph/0ej3OnDkDvV6PW7duUceOHDlCfR4dHaU+v/DCC7h27RrUajWcTidWV1ejctAKJggCKysryMzMhE6nw+zsLO3Joft1Oh0ePHiApaUlduqi8BYVFaGvr48Vb19fHyfeqM2Sz+dj3QTEs4lKJC+njsfWJoptkxUrtjZRbJssOnASXFtbG3U7UXjrrbeibnMBJ8FZWVkoKysDABQUFCArK4s3MRcoFArqrlZXV0OhUPDOi5Ngn8+Hw4cPQyqV4tlnn4XP5+NNTIIgmH0An8+HV155BUqlEq+++ior3kAgQLuf84jH2toajh8/jvX1da6n0sLj8SAjI4MxHUEQ+PTTT1nlSRAEHjx4QHtsW8e0RCIR7HY79uzZE/GOcEUgEEAgEMDff/8NkUgUdnxbBR85cgRmsxkCgQD5+fkRh2XYIhAI4P79+5iamoLD4cCxY8fC0myr4KeeegoCgQBWqxVzc3NIS0uLedQyGAxi165dKC8vR1FRUVialHu405ESvNPxyAlOuYfJRMo9fFjdw3iBq3vIBDbu4bYK3uoextKtJEH2yWNyD8nyEG8wuYcffvgha3cxru6h3W5Hf39/QoyzaE6fyWRCQ0MDZ+MsLu7h8vIyent7sby8zIk8VkxNTUGn08Fms8UlP04Nn9/vR39/f9w8JLZwu91obGzk5CFFAq+Wfnh4mDKok4mWlha0trbGlAfvrs3k5CQGBgaSYoiHoqenB1evXk2OIb4VDocDJpMp6eXaYrGgsbGRV7mOufPq8XgwMDCQ9HI9NzeHq1evci7XvDseUqkUWq0W6enpCAaDcDqd8Hq9fLNjDaVSiRs3bkAikfDi5XSHxWIxampqAAALCwsYGhrC7Ows5ufnEypWIpHAYDAAACYmJnD9+nXevJwEnzp1CjKZDBUVFQCAsbGxpJTfjz76CFVVVWhqagIAdHR08G6XWQuuqanB7t274fV6UVpaiuzsbAAbTzyJhMFggEKhgNfrRX19PWQyGQDAaDTyyo+V4JqaGshkMsricLlcOH78OICNCWp8p0cwwWAwoKqqahPvG2+8AWDji+7u7uacJyvBMpksrKxkZWVR0yLGxsY4E7NBVVVVGK9CoaCmRXR0dHDOk5VguorB5/OhoqICYrE4YZ2PSLxXrlyBRCLhNcE1pufh1dVVXLx4EWlpaRGnJzCBjXtId87g4GBU3ri5h1uJ5+fnY8mCtXvIhTflHoYg5R4mEyn3MAl45KyWlOCdjkdOcMo9TCZS7mHKPeSGhLmH5LBOrAGXXN1DcliHrgdFgsk95CzYbrfDbDbD7/ejrKwstpmtNO5hJJhMJrS2tsLtdqOpqQlarTZi2mjuIWvBfr8fZrN50/iz2WzG9PQ0nn/+edonEzZgij10uVwwGo2bxp+NRiOGhobw+uuv005hjtk9JENz6AbbyWCuRESp2Ww2NDc30w62WywW6HQ6zoOIrO5wbm4uzp8/j5WVFXR2dm46VldXh3379mF5eTku86dDUVxcjK6uLthstrClqrq6unDo0CHOvKwE+/1+LC4uUqG0oZiYmIhaicQCkvfu3bthxwYGBnhVmpy6NnSD7kxxQvEA3Zo+fIsQJ8F040j379/nRcwFdF4037FwToLphkUXFxd5EXMB3chkUgQ7nc6wfT6fL+Gm+H///Re2z+Vy8TLFGSut/v5+RsPsm2++AbDR84pXLFNDQwPjelxnz54FsBFK+/nnn7PKl/EOa7VaVmHvYrE4au+HK27evMkq7F0ikeDmzZus82UU7HK5qG8yGs6ePct73gUdfD4f2tvbGdO1t7dzaocZBRMEAaFQSBnhdKipqYFQKORlm0TjzcvLo4xwOhgMBuTl5XHiZVVp+f1+yGQy2iDq4uJiyGSyhFRcfr8fVVVVtEHUGo0GVVVVnHlZ19JerxdqtRpSqZTaJ5VKoVarEzrdwev1Qq/XQ6lUUvuUSiX0ej0vXk7N0srKCjQaDbXmjUajwcrKCmfSULD5Oa6srKCtrQ0SiQQSiQRtbW2MvHFzD0MrsXhUUmzdw9BKjKmSiqt7SBBE3Conru4hOa8kWqBnyj3cgl0EQcQ0cMYWW3kIgkiKe7iVV2C1Won09PSYxLCB1+tFZmYmtb22tobt4E1LBimATaQAkiKWjveR85ZSgnc6Uu5hMpFyD1PuITekYg/ZxB52dXXFTMo2n1D38NSpU7zjDEP/yHzisnJpIsBm5dJ45rntgpONuITTJirctqWlJabjdGAUvNUEp0NouxcvtLa2MgZhmUwmzqKjCrbb7aw9HC5pmWAymVivb2kymTgFe0RslrbeNTa1rtlshkgkQn5+PusL2Iqtd42NdWM0GpGVlYWTJ08ypo14h/nGI8Uax8Q3XJbteREFV1ZW8iLmex6Ja9euJfS8iD9puVyOmpoa3L59G8DmVUq3glzNlAzoimVgvrq6GmlpadDr9QA2r1K6FeRqpmRAFxveiIK9Xi8VZ/jLL78whulUVFTELJbkJeMMjUYjI29TUxNrsQBDX5qMM4w0qE2iuLgYpaWlcXMPyThDphWMNRoN6uvrOfGyskvVanXUNGq1Oq5WKclL/qwjQa/Xc+Zl1dNi8nFi9ZeSyZvqS0erjbmAbT6kT7X1lQp8QeYTyasKE8w3aJJvPh6PBwRBYGZmJi68MzMzqdjDUDx67mEsFxwrUrGHSUCqWdrpSAne6dix7uFzzz1HW0s/FO7h/v37UVBQgMceeyxm99DlcsFut2NwcBACgSDsnTHb7h4ePHgQxcXFcTPTMjIyIJFIcOfOHfz+++8Pl2DSPSTftxQv93DXrl0oKirCnTt3wtIwFhq62aputxtms5maCR8pHROEQiEkEgntew/X1tbC3mu4tLSE9vZ2nD9/njZd6Pn79u3jHoo3OTmJsbExnDlzBsDGWLXdbqcNoent7YVCocChQ4dYh+VFij3s7u5GR0cH9YWaTCbcunVr0yMkmfbChQvQarXQarVUWF4wGER6ejp7wdPT0zCbzfB4PJv2R7NT/H4/rFYrJicnUVZWxnowPtTpGxoagtFoDAsIi2anuN1ufPnll+ju7salS5dw4sQJKk+64hH2FTgcDgwPD4eJZQu/3w+bzcZ5JSSLxYL333+fNvqNDdxuN3p6ehjPDxMsl8tjjkw5ceIENfOVLVQqFd58882YeA0GA7WiWiSECfb5fPjpp58AbKyBx/bCpVIp6urqAADff/895wf6tbU1fPbZZwCAjz/+mPHCSSiVSsr3eueddxh5aWtpMrwuJyeH9cuczp07R5UZvktO/fnnnwCAY8eOoa+vj9U5nZ2d1CsH2fhaUZulwcFB1kGNi4uLjK/gYwuDwcCJ9+2332add9RmyW63w+12Q6FQIC8vD5cvX8bCwgI19VcqlcJms8HhcGBycjJuSz6aTCbMzs5Cq9Xi6NGjGB0dxcTEBJxOJyQSCZRKJUZGRjAyMoL//e9/jBFsoaAVLJfLKZvD4XBQ37ZEItlUph0OB238gVwu5ySQhEqlopo+i8VCtbsymWxTmb579y6t46BSqRg5aAXX1tbi22+/DZvY5XQ6aQMuQyGVSlFbW8trgb6WlhY0NDRgYmJi0/6ZmRnGYVylUomWlhbGeGbaMuzxeKDRaKhVDdkgOzsblZWVOHfuHO82fH19HW1tbWhqamL9ul2ZTIbXXnsNnZ2drN7yFfFFjy6XC6WlpVCpVFhaWsK///5LVfnz8/PIy8sDAOzevRu5ubnIycmBx+OJKZ6YIAj4fD7U19ejsbERf/zxB4aHhykrdHx8HE8//TQAYP/+/VAqlVAoFJx4I1ZapGiyrBw4cAD37t2DXC7HgQMHAGx0QXNycrC+vh63VR5Cecnw3J6eHqhUKpSXlwPY6OI+88wzALiHxnN6PPz555/D9h08eJATIR/Qzd9gE/FKh9SYFlvI5XKqPMUCrlFuKpUKp0+fZkwXDAZp93MSLBaLUVJSgqNHjyIjIwNerzfmOR0ul4sx9lAikeD06dN4+eWXIZVKGXnj5h5evHgRXq8XHo+Hd9MTCpFIhHv37iEnJydqp/+HH36A1+uFy+VirKTi6h7Gug7tVpDuIUEQKCwsjOge/vPPP6zyCwQCWF5exl9//YX5+Xla93DbzTSbzQar1Yr19fW4uoclJSUp9xB4BJullOCdjkdO8P8BGCQ0hnF1DxUAAAAASUVORK5CYII=)}.mouse-mode-selector .drag-handle{background:url(data:image/png;base64,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) 2px 3px no-repeat;background-repeat:no-repeat;border-bottom:1px solid #bcbcbc;cursor:move;display:block;height:13px;width:27px}.mouse-mode-selector .pan-scan-mode-button{background-image:url(data:image/png;base64,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);background-position:0 -10px}.mouse-mode-selector .pan-scan-mode-button.active{background-position:-30px -10px}.mouse-mode-selector .selection-mode-button{background-image:url(data:image/png;base64,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);background-position:0 -40px}.mouse-mode-selector .selection-mode-button.active{background-position:-30px -40px}.mouse-mode-selector .zoom-mode-button{background-image:url(data:image/png;base64,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);background-position:0 -70px}.mouse-mode-selector .zoom-mode-button.active{background-position:-30px -70px}.mouse-mode-selector .timing-mode-button{background-image:url(data:image/png;base64,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);background-position:0 -100px;border-bottom:0}.mouse-mode-selector .timing-mode-button.active{background-position:-30px -100px}.mouse-mode-selector .rotate-mode-button{background-image:url(data:image/png;base64,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);background-position:0 -130px;border-bottom:0}.mouse-mode-selector .rotate-mode-button.active{background-position:-30px -130px}
</style>
<style>
.tool-button{background-position:center center;background-repeat:no-repeat;border-bottom:1px solid #bcbcbc;border-top:1px solid #f1f1f1;cursor:pointer;height:30px}.tool-button.active{cursor:auto}
</style>
<template id="mouse-mode-selector-template">
<div class="drag-handle"></div>
<div class="buttons">
</div>
</template>
<style>
.track-button{background-color:rgba(255,255,255,0.5);border:1px solid rgba(0,0,0,0.1);color:rgba(0,0,0,0.2);font-size:10px;height:12px;text-align:center;width:12px}.track-button:hover{background-color:rgba(255,255,255,1.0);border:1px solid rgba(0,0,0,0.5);box-shadow:0 0 .05em rgba(0,0,0,0.4);color:rgba(0,0,0,1)}.track-close-button{left:2px;position:absolute;top:2px}.track-collapse-button{left:3px;position:absolute;top:2px}
</style>
<style>
.drawing-container{-webkit-box-flex:1;display:inline;overflow:auto;position:relative}.drawing-container-canvas{-webkit-box-flex:1;display:block;pointer-events:none;position:absolute;top:0}
</style>
<style>
.heading-track{-webkit-box-align:stretch;-webkit-box-orient:horizontal;display:-webkit-box;margin:0;padding:0 5px 0 0}.heading-track>heading{-webkit-box-sizing:border-box;background-color:#f3f5f7;border-right:1px solid #8e8e8e;box-sizing:border-box;display:-webkit-flex;-webkit-flex-direction:row;align-items:center;overflow-x:hidden;padding-right:5px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.heading-track>heading>.heading-arrow{-webkit-flex:0 0 auto;margin-left:5px;margin-right:5px;width:8px;font-family:sans-serif}
</style>
<style>
.counter-track{height:30px;position:relative}
</style>
<style>
.object-instance-track{height:18px}
</style>
<style>
.spacing-track{height:4px}
</style>
<style>
.rect-track{height:18px}
</style>
<style>
.thread-track{-webkit-box-orient:vertical;display:-webkit-box;position:relative}
</style>
<style>
.process-track-header{-webkit-flex:0 0 auto;background-image:-webkit-gradient(linear,0 0,100% 0,from(#e5e5e5),to(#d1d1d1));border-bottom:1px solid #8e8e8e;border-top:1px solid white;font-size:75%}.process-track-base:not(.expanded)>.track{display:none}.process-track-name:before{content:'\25B8';padding:0 5px}.process-track-base.expanded .process-track-name:before{content:'\25BE'}
</style>
<style>
.letter-dot-track {
height: 18px;
}
</style>
<style>
.model-track {
-webkit-box-flex: 1;
}
</style>
<style>
.ruler-track{height:12px}.ruler-track.tall-mode{height:30px}
</style>
<style>
body *{-webkit-user-select:none;box-sizing:border-box}
</style>
<style>
.timeline-track-view *{-webkit-user-select:none;cursor:default}.timeline-track-view .tool-button{cursor:pointer}.timeline-track-view{-webkit-box-orient:vertical;display:-webkit-box;position:relative}.model-track-container{-webkit-box-flex:1;overflow:auto}.drag-box{background-color:rgba(0,0,255,0.25);border:1px solid #000060;font-size:75%;position:fixed}.timeline-track-view>.hint-text{position:absolute;bottom:6px;right:6px;font-size:8pt}
</style>
<polymer-element name="tracing-find-control" constructor="TracingFindControl">
<template>
<style>
div.root {
-webkit-user-select: none;
display: -webkit-flex;
position: relative;
}
input {
-webkit-user-select: auto;
background-color: #f8f8f8;
border: 1px solid rgba(0, 0, 0, 0.5);
box-sizing: border-box;
height: 19px;
margin-bottom: 1px;
margin-left: 0;
margin-right: 0;
margin-top: 1px;
padding: 0;
width: 170px;
}
input:focus {
background-color: white;
}
.button {
background-color: #f8f8f8;
border: 1px solid rgba(0, 0, 0, 0.5);
border-left: none;
font-size: 14px;
height: 17px;
margin-left: 0;
margin-top: 1px;
}
.button :first-of-type {
margin-right: 0;
}
#hitCount {
height: 19px;
left: 0;
opacity: 0.25;
pointer-events: none;
position: absolute;
text-align: right;
top: 2px;
width: 170px;
z-index: 1;
}
#spinner {
visibility: hidden;
width: 8px;
height: 8px;
left: 154px;
pointer-events: none;
position: absolute;
top: 4px;
z-index: 1;
border: 2px solid transparent;
border-bottom: 2px solid rgba(0, 0, 0, 0.5);
border-right: 2px solid rgba(0, 0, 0, 0.5);
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin { 100% { transform: rotate(360deg); } }
</style>
<div class="root">
<input type="text" id="filter" on-input="{{ filterTextChanged }}" on-keypress="{{ filterKeyPress }}" on-keydown="{{ filterKeyDown }}" on-blur="{{ filterBlur }}" on-focus="{{ filterFocus }}" on-mouseup="{{ filterMouseUp }}" />
<div id="spinner"></div>
<div class="button" on-click="{{ findPrevious }}">&larr;</div>
<div class="button" on-click="{{ findNext }}">&rarr;</div>
<div id="hitCount">0 of 0</div>
</div>
</template>
</polymer-element>
<style>
x-side-panel-container{align-items:stretch;display:-webkit-flex}x-side-panel-container[expanded]>active-panel-container{-webkit-flex:1 1 auto;border-left:1px solid black;display:-webkit-flex}x-side-panel-container:not([expanded])>active-panel-container{display:none}x-side-panel-container>tab-strip{-webkit-flex:0 0 auto;-webkit-flex-direction:column;-webkit-user-select:none;background-color:#ececec;border-left:1px solid black;cursor:default;display:-webkit-flex;min-width:18px;padding:10px 0 10px 0;font-size:12px}x-side-panel-container>tab-strip>tab-strip-label{-webkit-writing-mode:vertical-rl;display:inline;margin-right:1px;min-height:20px;padding:15px 3px 15px 1px}x-side-panel-container>tab-strip>tab-strip-label:not([enabled]){color:#808080}x-side-panel-container>tab-strip>tab-strip-label[selected]{background-color:white;border:1px solid #a3a3a3;border-left:none;padding:14px 2px 14px 1px}
</style>
<style>
x-timeline-view{-webkit-flex-direction:column;cursor:default;display:-webkit-flex;font-family:sans-serif;padding:0}x-timeline-view>.control>.title{font-size:14px;height:22px;padding-left:2px;padding-right:8px;padding-top:2px;flex:1 0 auto}x-timeline-view>.control{flex:0 0 auto;background-color:#e6e6e6;background-image:-webkit-gradient(linear,0 0,0 100%,from(#e5e5e5),to(#d1d1d1));border-bottom:1px solid #8e8e8e;display:flex;padding-top:1px;overflow-x:auto}x-timeline-view>.control::-webkit-scrollbar{height:0}x-timeline-view>.control>#right-controls{margin-left:auto}x-timeline-view>.control>.controls{display:-webkit-flex;flex:0 0 auto}x-timeline-view>.control>span{padding-left:5px;padding-right:10px}x-timeline-view>.control>.controls button,x-timeline-view>.control>.controls label{font-size:14px;height:22px;margin:1px 2px 1px 2px}x-timeline-view>.control>.spacer{-webkit-flex:1 1 auto}x-timeline-view>middle-container{-webkit-flex:1 1 auto;-webkit-flex-direction:row;border-bottom:1px solid #8e8e8e;display:-webkit-flex;min-height:0}x-timeline-view>middle-container>track-view-container{-webkit-flex:1 1 auto;display:-webkit-flex;min-height:0;min-width:0}x-timeline-view>middle-container>track-view-container>*{-webkit-flex:1 1 auto}x-timeline-view>middle-container>x-timeline-view-side-panel-container{-webkit-flex:0 0 auto}x-timeline-view>x-drag-handle{-webkit-flex:0 0 auto}x-timeline-view>tracing-analysis-view{-webkit-flex:0 0 auto}x-timeline-view .selection{margin:2px}x-timeline-view .selection ul{margin:0}.button{background-color:#f8f8f8;border:1px solid rgba(0,0,0,0.5);color:rgba(0,0,0,0.8);font-size:14px;height:19px;margin:1px;min-width:23px;text-align:center}.button:hover{background-color:rgba(255,255,255,1.0);border:1px solid rgba(0,0,0,0.8);box-shadow:0 0 .05em rgba(0,0,0,0.4);color:rgba(0,0,0,1)}.view-info-button{padding-left:4px;padding-right:4px;width:auto}.view-info-button:hover{border:solid 1px}.metadata-dialog-text{font-family:monospace;overflow:auto;white-space:pre}.view-help-text{-webkit-flex:1 1 auto;-webkit-flex-direction:row;display:-webkit-flex;width:700px}.view-help-text .column{width:50%}.view-help-text h2{font-size:1.2em;margin:0;margin-top:5px;text-align:center}.view-help-text h3{margin:0;margin-left:126px;margin-top:10px}.view-help-text .pair{-webkit-flex:1 1 auto;-webkit-flex-direction:row;display:-webkit-flex}.view-help-text .command{font-family:monospace;margin-right:5px;text-align:right;width:150px}.view-help-text .action{font-size:.9em;text-align:left;width:200px}.view-help-text .mouse-mode-icon{border:1px solid #888;border-radius:3px;box-shadow:inset 0 0 2px rgba(0,0,0,0.3);display:inline-block;height:26px;margin-right:1px;position:relative;top:4px;width:27px;zoom:.75}.view-help-text .mouse-mode-icon.pan-mode{background-position:-1px -11px}.view-help-text .mouse-mode-icon.select-mode{background-position:-1px -41px}.view-help-text .mouse-mode-icon.zoom-mode{background-position:-1px -71px}.view-help-text .mouse-mode-icon.timing-mode{background-position:-1px -101px}
</style>
<template id="timeline-view-template">
<div class="control">
<div id="left-controls" class="controls"></div>
<div class="title">^_^</div>
<div id="right-controls" class="controls"></div>
</div>
<middle-container>
<track-view-container></track-view-container>
<x-side-panel-container></x-side-panel-container>
</middle-container>
<x-drag-handle></x-drag-handle>
<tracing-analysis-view id="analysis"></tracing-analysis-view>
</template>
<template id="help-btn-template">
<div class="button view-help-button">?</div>
<div class="view-help-text">
<div class="column left">
<h2>Navigation</h2>
<div class="pair">
<div class="command">w/s</div>
<div class="action">Zoom in/out (+shift: faster)</div>
</div>
<div class="pair">
<div class="command">a/d</div>
<div class="action">Pan left/right (+shift: faster)</div>
</div>
<div class="pair">
<div class="command">&rarr;/shift-TAB</div>
<div class="action">Select previous event</div>
</div>
<div class="pair">
<div class="command">&larr;/TAB</div>
<div class="action">Select next event</div>
</div>
<h2>Mouse Controls</h2>
<div class="pair">
<div class="command">click</div>
<div class="action">Select event</div>
</div>
<div class="pair">
<div class="command">alt-mousewheel</div>
<div class="action">Zoom in/out</div>
</div>
<h3>
<span class="mouse-mode-icon select-mode"></span>
Select mode
</h3>
<div class="pair">
<div class="command">drag</div>
<div class="action">Box select</div>
</div>
<div class="pair">
<div class="command">double click</div>
<div class="action">Select all events with same title</div>
</div>
<h3>
<span class="mouse-mode-icon pan-mode"></span>
Pan mode
</h3>
<div class="pair">
<div class="command">drag</div>
<div class="action">Pan the view</div>
</div>
<h3>
<span class="mouse-mode-icon zoom-mode"></span>
Zoom mode
</h3>
<div class="pair">
<div class="command">drag</div>
<div class="action">Zoom in/out by dragging up/down</div>
</div>
<h3>
<span class="mouse-mode-icon timing-mode"></span>
Timing mode
</h3>
<div class="pair">
<div class="command">drag</div>
<div class="action">Create or move markers</div>
</div>
<div class="pair">
<div class="command">double click</div>
<div class="action">Set marker range to slice</div>
</div>
</div>
<div class="column right">
<h2>General</h2>
<div class="pair">
<div class="command">1-4</div>
<div class="action">Switch mouse mode</div>
</div>
<div class="pair">
<div class="command">shift</div>
<div class="action">Hold for temporary select</div>
</div>
<div class="pair">
<div class="command">space</div>
<div class="action">Hold for temporary pan</div>
</div>
<div class="pair">
<div class="command"><span class="mod"></span></div>
<div class="action">Hold for temporary zoom</div>
</div>
<div class="pair">
<div class="command">/</div>
<div class="action">Search</div>
</div>
<div class="pair">
<div class="command">enter</div>
<div class="action">Step through search results</div>
</div>
<div class="pair">
<div class="command">f</div>
<div class="action">Zoom into selection</div>
</div>
<div class="pair">
<div class="command">z/0</div>
<div class="action">Reset zoom and pan</div>
</div>
<div class="pair">
<div class="command">g/G</div>
<div class="action">Toggle 60hz grid</div>
</div>
<div class="pair">
<div class="command">v</div>
<div class="action">Highlight VSync</div>
</div>
<div class="pair">
<div class="command">h</div>
<div class="action">Toggle low/high details</div>
</div>
<div class="pair">
<div class="command">m</div>
<div class="action">Mark current selection</div>
</div>
<div class="pair">
<div class="command">?</div>
<div class="action">Show help</div>
</div>
</div>
</div>
</template>
<template id="metadata-btn-template">
<div class="button view-metadata-button view-info-button">Metadata</div>
<div class="info-button-text metadata-dialog-text"></div>
</template>
<script>
// Copyright (c) 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/* WARNING: This file is auto generated.
*
* Do not edit directly.
*/
/**
* @license
* Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
*/
// @version: 0.4.1
window.PolymerGestures={},function(a){var b=!1,c=document.createElement("meta");if(c.createShadowRoot){var d=c.createShadowRoot(),e=document.createElement("span");d.appendChild(e),c.addEventListener("testpath",function(a){a.path&&(b=a.path[0]===e),a.stopPropagation()});var f=new CustomEvent("testpath",{bubbles:!0});document.head.appendChild(c),e.dispatchEvent(f),c.parentNode.removeChild(c),d=e=null}c=null;var g={shadow:function(a){return a?a.shadowRoot||a.webkitShadowRoot:void 0},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);return this.canTarget(b)?b:void 0},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){var d,e;return a?(d=a.elementFromPoint(b,c),d?e=this.targetingShadow(d):a!==document&&(e=this.olderShadow(a)),this.searchRoot(e,b,c)||d):void 0},owner:function(a){if(!a)return document;for(var b=a;b.parentNode;)b=b.parentNode;return b.nodeType!=Node.DOCUMENT_NODE&&b.nodeType!=Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){if(b&&a.path&&a.path.length)return a.path[0];var c=a.clientX,d=a.clientY,e=this.owner(a.target);return e.elementFromPoint(c,d)||(e=document),this.searchRoot(e,c,d)},findTouchAction:function(a){var c;if(b&&a.path&&a.path.length){for(var d=a.path,e=0;e<d.length;e++)if(c=d[e],c.nodeType===Node.ELEMENT_NODE&&c.hasAttribute("touch-action"))return c.getAttribute("touch-action")}else for(c=a.target;c;){if(c.nodeType===Node.ELEMENT_NODE&&c.hasAttribute("touch-action"))return c.getAttribute("touch-action");c=c.parentNode||c.host}return"auto"},LCA:function(a,b){if(a===b)return a;if(a&&!b)return a;if(b&&!a)return b;if(!b&&!a)return document;if(a.contains&&a.contains(b))return a;if(b.contains&&b.contains(a))return b;var c=this.depth(a),d=this.depth(b),e=c-d;for(e>=0?a=this.walk(a,e):b=this.walk(b,-e);a&&b&&a!==b;)a=a.parentNode||a.host,b=b.parentNode||b.host;return a},walk:function(a,b){for(var c=0;a&&b>c;c++)a=a.parentNode||a.host;return a},depth:function(a){for(var b=0;a;)b++,a=a.parentNode||a.host;return b},deepContains:function(a,b){var c=this.LCA(a,b);return c===a},insideNode:function(a,b,c){var d=a.getBoundingClientRect();return d.left<=b&&b<=d.right&&d.top<=c&&c<=d.bottom},path:function(a){var c;if(b&&a.path&&a.path.length)c=a.path;else{c=[];for(var d=this.findTarget(a);d;)c.push(d),d=d.parentNode||d.host}return c}};a.targetFinding=g,a.findTarget=g.findTarget.bind(g),a.deepContains=g.deepContains.bind(g),a.insideNode=g.insideNode}(window.PolymerGestures),function(){function a(a){return"html /deep/ "+b(a)}function b(a){return'[touch-action="'+a+'"]'}function c(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+";}"}var d=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]},"manipulation"],e="",f="string"==typeof document.head.style.touchAction,g=!window.ShadowDOMPolyfill&&document.head.createShadowRoot;if(f){d.forEach(function(d){String(d)===d?(e+=b(d)+c(d)+"\n",g&&(e+=a(d)+c(d)+"\n")):(e+=d.selectors.map(b)+c(d.rule)+"\n",g&&(e+=d.selectors.map(a)+c(d.rule)+"\n"))});var h=document.createElement("style");h.textContent=e,document.head.appendChild(h)}}(),function(a){var b=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],c=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],d=function(){return function(){}},e={preventTap:d,makeBaseEvent:function(a,b){var c=document.createEvent("Event");return c.initEvent(a,b.bubbles||!1,b.cancelable||!1),c.preventTap=e.preventTap(c),c},makeGestureEvent:function(a,b){b=b||Object.create(null);for(var c,d=this.makeBaseEvent(a,b),e=0,f=Object.keys(b);e<f.length;e++)c=f[e],d[c]=b[c];return d},makePointerEvent:function(a,d){d=d||Object.create(null);for(var e,f=this.makeBaseEvent(a,d),g=0;g<b.length;g++)e=b[g],f[e]=d[e]||c[g];f.buttons=d.buttons||0;var h=0;return h=d.pressure?d.pressure:f.buttons?.5:0,f.x=f.clientX,f.y=f.clientY,f.pointerId=d.pointerId||0,f.width=d.width||0,f.height=d.height||0,f.pressure=h,f.tiltX=d.tiltX||0,f.tiltY=d.tiltY||0,f.pointerType=d.pointerType||"",f.hwTimestamp=d.hwTimestamp||0,f.isPrimary=d.isPrimary||!1,f._source=d._source||"",f}};a.eventFactory=e}(window.PolymerGestures),function(a){function b(){if(c){var a=new Map;return a.pointers=d,a}this.keys=[],this.values=[]}var c=window.Map&&window.Map.prototype.forEach,d=function(){return this.size};b.prototype={set:function(a,b){var c=this.keys.indexOf(a);c>-1?this.values[c]=b:(this.keys.push(a),this.values.push(b))},has:function(a){return this.keys.indexOf(a)>-1},"delete":function(a){var b=this.keys.indexOf(a);b>-1&&(this.keys.splice(b,1),this.values.splice(b,1))},get:function(a){var b=this.keys.indexOf(a);return this.values[b]},clear:function(){this.keys.length=0,this.values.length=0},forEach:function(a,b){this.values.forEach(function(c,d){a.call(b,c,this.keys[d],this)},this)},pointers:function(){return this.keys.length}},a.PointerMap=b}(window.PolymerGestures),function(a){var b,c=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp","preventTap","tapPrevented","_source"],d=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0,function(){},!1],e="undefined"!=typeof SVGElementInstance,f=a.eventFactory,g={IS_IOS:!1,pointermap:new a.PointerMap,requiredGestures:new a.PointerMap,eventMap:Object.create(null),eventSources:Object.create(null),eventSourceList:[],gestures:[],dependencyMap:{down:{listeners:0,index:-1},up:{listeners:0,index:-1}},gestureQueue:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},registerGesture:function(a,b){var c=Object.create(null);c.listeners=0,c.index=this.gestures.length;for(var d,e=0;e<b.exposes.length;e++)d=b.exposes[e].toLowerCase(),this.dependencyMap[d]=c;this.gestures.push(b)},register:function(a,b){for(var c,d=this.eventSourceList.length,e=0;d>e&&(c=this.eventSourceList[e]);e++)c.register.call(c,a,b)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;c>d&&(b=this.eventSourceList[d]);d++)b.unregister.call(b,a)},down:function(a){this.requiredGestures.set(a.pointerId,b),this.fireEvent("down",a)},move:function(a){a.type="move",this.fillGestureQueue(a)},up:function(a){this.fireEvent("up",a),this.requiredGestures.delete(a.pointerId)},cancel:function(a){a.tapPrevented=!0,this.fireEvent("up",a),this.requiredGestures.delete(a.pointerId)},addGestureDependency:function(a,b){var c=a._pgEvents;if(c)for(var d,e,f,g=Object.keys(c),h=0;h<g.length;h++)f=g[h],c[f]>0&&(d=this.dependencyMap[f],e=d?d.index:-1,b[e]=!0)},eventHandler:function(c){var d=c.type;if("touchstart"===d||"mousedown"===d||"pointerdown"===d||"MSPointerDown"===d)if(c._handledByPG||(b={}),this.IS_IOS)for(var e,f=a.targetFinding.path(c),g=0;g<f.length;g++)e=f[g],this.addGestureDependency(e,b);else this.addGestureDependency(c.currentTarget,b);if(!c._handledByPG){var h=this.eventMap&&this.eventMap[d];h&&h(c),c._handledByPG=!0}},listen:function(a,b){for(var c,d=0,e=b.length;e>d&&(c=b[d]);d++)this.addEvent(a,c)},unlisten:function(a,b){for(var c,d=0,e=b.length;e>d&&(c=b[d]);d++)this.removeEvent(a,c)},addEvent:function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(a,b){var c=f.makePointerEvent(a,b);return c.preventDefault=b.preventDefault,c.tapPrevented=b.tapPrevented,c._target=c._target||b.target,c},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var b,f=Object.create(null),g=0;g<c.length;g++)b=c[g],f[b]=a[b]||d[g],("target"===b||"relatedTarget"===b)&&e&&f[b]instanceof SVGElementInstance&&(f[b]=f[b].correspondingUseElement);return f.preventDefault=function(){a.preventDefault()},f},dispatchEvent:function(a){var b=a._target;if(b){b.dispatchEvent(a);var c=this.cloneEvent(a);c.target=b,this.fillGestureQueue(c)}},gestureTrigger:function(){for(var a,b,c=0;c<this.gestureQueue.length;c++){a=this.gestureQueue[c],b=a._requiredGestures;for(var d,e,f=0;f<this.gestures.length;f++)b[f]&&(d=this.gestures[f],e=d[a.type],e&&e.call(d,a))}this.gestureQueue.length=0},fillGestureQueue:function(a){this.gestureQueue.length||requestAnimationFrame(this.boundGestureTrigger),a._requiredGestures=this.requiredGestures.get(a.pointerId),this.gestureQueue.push(a)}};g.boundHandler=g.eventHandler.bind(g),g.boundGestureTrigger=g.gestureTrigger.bind(g),a.dispatcher=g,a.activateGesture=function(a,b){var c=b.toLowerCase(),d=g.dependencyMap[c];if(d){var e=g.gestures[d.index];if(a._pgListeners||(g.register(a),a._pgListeners=0),e){var f,h=e.defaultActions&&e.defaultActions[c];switch(a.nodeType){case Node.ELEMENT_NODE:f=a;break;case Node.DOCUMENT_FRAGMENT_NODE:f=a.host;break;default:f=null}h&&f&&!f.hasAttribute("touch-action")&&f.setAttribute("touch-action",h)}a._pgEvents||(a._pgEvents={}),a._pgEvents[c]=(a._pgEvents[c]||0)+1,a._pgListeners++}return Boolean(d)},a.addEventListener=function(b,c,d,e){d&&(a.activateGesture(b,c),b.addEventListener(c,d,e))},a.deactivateGesture=function(a,b){var c=b.toLowerCase(),d=g.dependencyMap[c];return d&&(a._pgListeners>0&&a._pgListeners--,0===a._pgListeners&&g.unregister(a),a._pgEvents&&(a._pgEvents[c]>0?a._pgEvents[c]--:a._pgEvents[c]=0)),Boolean(d)},a.removeEventListener=function(b,c,d,e){d&&(a.deactivateGesture(b,c),b.removeEventListener(c,d,e))}}(window.PolymerGestures),function(a){var b=a.dispatcher,c=b.pointermap,d=25,e=[0,1,4,2],f=!1;try{f=1===new MouseEvent("test",{buttons:1}).buttons}catch(g){}var h={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup"],exposes:["down","up","move"],register:function(a){b.listen(a,this.events)},unregister:function(a){a!==document&&b.unlisten(a,this.events)},lastTouches:[],isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,e=a.clientX,f=a.clientY,g=0,h=c.length;h>g&&(b=c[g]);g++){var i=Math.abs(e-b.x),j=Math.abs(f-b.y);if(d>=i&&d>=j)return!0}},prepareEvent:function(a){var c=b.cloneEvent(a);return c.pointerId=this.POINTER_ID,c.isPrimary=!0,c.pointerType=this.POINTER_TYPE,c._source="mouse",f||(c.buttons=e[c.which]||0),c},mousedown:function(d){if(!this.isEventSimulatedFromTouch(d)){var e=c.has(this.POINTER_ID);e&&this.mouseup(d);var f=this.prepareEvent(d);f.target=a.findTarget(d),c.set(this.POINTER_ID,f.target),b.down(f)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var d=c.get(this.POINTER_ID);if(d){var e=this.prepareEvent(a);e.target=d,0===e.buttons?(b.cancel(e),this.cleanupMouse()):b.move(e)}}},mouseup:function(d){if(!this.isEventSimulatedFromTouch(d)){var e=this.prepareEvent(d);e.relatedTarget=a.findTarget(d),e.target=c.get(this.POINTER_ID),b.up(e),this.cleanupMouse()}},cleanupMouse:function(){c["delete"](this.POINTER_ID)}};a.mouseEvents=h}(window.PolymerGestures),function(a){var b=a.dispatcher,c=(a.targetFinding.allShadows.bind(a.targetFinding),b.pointermap),d=(Array.prototype.map.call.bind(Array.prototype.map),2500),e=200,f=20,g=!1,h={IS_IOS:!1,events:["touchstart","touchmove","touchend","touchcancel"],exposes:["down","up","move"],register:function(a,c){(this.IS_IOS?c:!c)&&b.listen(a,this.events)},unregister:function(a){this.IS_IOS||b.unlisten(a,this.events)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y"},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return b===c.EMITTER?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":"XY"},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){(0===c.pointers()||1===c.pointers()&&c.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=null,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,e)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return("touchstart"===a||"touchmove"===a)&&(b=1),b},findTarget:function(b,d){if("touchstart"===this.currentTouchEvent.type){if(this.isPrimaryTouch(b)){var e={clientX:b.clientX,clientY:b.clientY,path:this.currentTouchEvent.path,target:this.currentTouchEvent.target};return a.findTarget(e)}return a.findTarget(b)}return c.get(d)},touchToPointer:function(a){var c=this.currentTouchEvent,d=b.cloneEvent(a),e=d.pointerId=a.identifier+2;d.target=this.findTarget(a,e),d.bubbles=!0,d.cancelable=!0,d.detail=this.clickCount,d.buttons=this.typeToButtons(c.type),d.width=a.webkitRadiusX||a.radiusX||0,d.height=a.webkitRadiusY||a.radiusY||0,d.pressure=a.webkitForce||a.force||.5,d.isPrimary=this.isPrimaryTouch(a),d.pointerType=this.POINTER_TYPE,d._source="touch";var f=this;return d.preventDefault=function(){f.scrolling=!1,f.firstXY=null,c.preventDefault()},d},processTouches:function(a,b){var d=a.changedTouches;this.currentTouchEvent=a;for(var e,f,g=0;g<d.length;g++)e=d[g],f=this.touchToPointer(e),"touchstart"===a.type&&c.set(f.pointerId,f.target),c.has(f.pointerId)&&b.call(this,f),("touchend"===a.type||a._cancel)&&this.cleanUpPointer(f)},shouldScroll:function(b){if(this.firstXY){var c,d=a.targetFinding.findTouchAction(b),e=this.touchActionToScrollType(d);if("none"===e)c=!1;else if("XY"===e)c=!0;else{var f=b.changedTouches[0],g=e,h="Y"===e?"X":"Y",i=Math.abs(f["client"+g]-this.firstXY[g]),j=Math.abs(f["client"+h]-this.firstXY[h]);c=i>=j}return c}},findTouch:function(a,b){for(var c,d=0,e=a.length;e>d&&(c=a[d]);d++)if(c.identifier===b)return!0},vacuumTouches:function(a){var b=a.touches;if(c.pointers()>=b.length){var d=[];c.forEach(function(a,c){if(1!==c&&!this.findTouch(b,c-2)){var e=a;d.push(e)}},this),d.forEach(function(a){this.cancel(a),c.delete(a.pointerId)})}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.down))},down:function(a){b.down(a)},touchmove:function(a){if(g)a.cancelable&&this.processTouches(a,this.move);else if(this.scrolling){if(this.firstXY){var b=a.changedTouches[0],c=b.clientX-this.firstXY.X,d=b.clientY-this.firstXY.Y,e=Math.sqrt(c*c+d*d);e>=f&&(this.touchcancel(a),this.scrolling=!0,this.firstXY=null)}}else null===this.scrolling&&this.shouldScroll(a)?this.scrolling=!0:(this.scrolling=!1,a.preventDefault(),this.processTouches(a,this.move))},move:function(a){b.move(a)},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.up)},up:function(c){c.relatedTarget=a.findTarget(c),b.up(c)},cancel:function(a){b.cancel(a)},touchcancel:function(a){a._cancel=!0,this.processTouches(a,this.cancel)},cleanUpPointer:function(a){c["delete"](a.pointerId),this.removePrimaryPointer(a)},dedupSynthMouse:function(b){var c=a.mouseEvents.lastTouches,e=b.changedTouches[0];if(this.isPrimaryTouch(e)){var f={x:e.clientX,y:e.clientY};c.push(f);var g=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,c,f);setTimeout(g,d)}}};a.touchEvents=h}(window.PolymerGestures),function(a){var b=a.dispatcher,c=b.pointermap,d=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,e={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerCancel"],register:function(a){b.listen(a,this.events)},unregister:function(a){a!==document&&b.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var c=a;return c=b.cloneEvent(a),d&&(c.pointerType=this.POINTER_TYPES[a.pointerType]),c._source="ms",c},cleanup:function(a){c["delete"](a)},MSPointerDown:function(d){var e=this.prepareEvent(d);e.target=a.findTarget(d),c.set(d.pointerId,e.target),b.down(e)},MSPointerMove:function(a){var d=c.get(a.pointerId);if(d){var e=this.prepareEvent(a);e.target=d,b.move(e)}},MSPointerUp:function(d){var e=this.prepareEvent(d);e.relatedTarget=a.findTarget(d),e.target=c.get(e.pointerId),b.up(e),this.cleanup(d.pointerId)},MSPointerCancel:function(d){var e=this.prepareEvent(d);e.relatedTarget=a.findTarget(d),e.target=c.get(e.pointerId),b.cancel(e),this.cleanup(d.pointerId)}};a.msEvents=e}(window.PolymerGestures),function(a){var b=a.dispatcher,c=b.pointermap,d={events:["pointerdown","pointermove","pointerup","pointercancel"],prepareEvent:function(a){var c=b.cloneEvent(a);return c._source="pointer",c},register:function(a){b.listen(a,this.events)},unregister:function(a){a!==document&&b.unlisten(a,this.events)},cleanup:function(a){c["delete"](a)},pointerdown:function(d){var e=this.prepareEvent(d);e.target=a.findTarget(d),c.set(e.pointerId,e.target),b.down(e)},pointermove:function(a){var d=c.get(a.pointerId);if(d){var e=this.prepareEvent(a);e.target=d,b.move(e)}},pointerup:function(d){var e=this.prepareEvent(d);e.relatedTarget=a.findTarget(d),e.target=c.get(e.pointerId),b.up(e),this.cleanup(d.pointerId)},pointercancel:function(d){var e=this.prepareEvent(d);e.relatedTarget=a.findTarget(d),e.target=c.get(e.pointerId),b.cancel(e),this.cleanup(d.pointerId)}};a.pointerEvents=d}(window.PolymerGestures),function(a){var b=a.dispatcher,c=window.navigator;window.PointerEvent?b.registerSource("pointer",a.pointerEvents):c.msPointerEnabled?b.registerSource("ms",a.msEvents):(b.registerSource("mouse",a.mouseEvents),void 0!==window.ontouchstart&&b.registerSource("touch",a.touchEvents));var d=navigator.userAgent,e=d.match(/iPad|iPhone|iPod/)&&"ontouchstart"in window;b.IS_IOS=e,a.touchEvents.IS_IOS=e,b.register(document,!0)}(window.PolymerGestures),function(a){var b=a.dispatcher,c=a.eventFactory,d=new a.PointerMap,e={events:["down","move","up"],exposes:["trackstart","track","trackx","tracky","trackend"],defaultActions:{track:"none",trackx:"pan-y",tracky:"pan-x"},WIGGLE_THRESHOLD:4,clampDir:function(a){return a>0?1:-1},calcPositionDelta:function(a,b){var c=0,d=0;return a&&b&&(c=b.pageX-a.pageX,d=b.pageY-a.pageY),{x:c,y:d}},fireTrack:function(a,b,d){var e=d,f=this.calcPositionDelta(e.downEvent,b),g=this.calcPositionDelta(e.lastMoveEvent,b);if(g.x)e.xDirection=this.clampDir(g.x);else if("trackx"===a)return;if(g.y)e.yDirection=this.clampDir(g.y);else if("tracky"===a)return;var h={bubbles:!0,cancelable:!0,trackInfo:e.trackInfo,relatedTarget:b.relatedTarget,pointerType:b.pointerType,pointerId:b.pointerId,_source:"track"};"tracky"!==a&&(h.x=b.x,h.dx=f.x,h.ddx=g.x,h.clientX=b.clientX,h.pageX=b.pageX,h.screenX=b.screenX,h.xDirection=e.xDirection),"trackx"!==a&&(h.dy=f.y,h.ddy=g.y,h.y=b.y,h.clientY=b.clientY,h.pageY=b.pageY,h.screenY=b.screenY,h.yDirection=e.yDirection);var i=c.makeGestureEvent(a,h);e.downTarget.dispatchEvent(i)},down:function(a){if(a.isPrimary&&("mouse"===a.pointerType?1===a.buttons:!0)){var b={downEvent:a,downTarget:a.target,trackInfo:{},lastMoveEvent:null,xDirection:0,yDirection:0,tracking:!1};d.set(a.pointerId,b)}},move:function(a){var b=d.get(a.pointerId);if(b){if(!b.tracking){var c=this.calcPositionDelta(b.downEvent,a),e=c.x*c.x+c.y*c.y;e>this.WIGGLE_THRESHOLD&&(b.tracking=!0,b.lastMoveEvent=b.downEvent,this.fireTrack("trackstart",a,b))}b.tracking&&(this.fireTrack("track",a,b),this.fireTrack("trackx",a,b),this.fireTrack("tracky",a,b)),b.lastMoveEvent=a}},up:function(a){var b=d.get(a.pointerId);b&&(b.tracking&&this.fireTrack("trackend",a,b),d.delete(a.pointerId))}};b.registerGesture("track",e)}(window.PolymerGestures),function(a){var b=a.dispatcher,c=a.eventFactory,d={HOLD_DELAY:200,WIGGLE_THRESHOLD:16,events:["down","move","up"],exposes:["hold","holdpulse","release"],heldPointer:null,holdJob:null,pulse:function(){var a=Date.now()-this.heldPointer.timeStamp,b=this.held?"holdpulse":"hold";this.fireHold(b,a),this.held=!0},cancel:function(){clearInterval(this.holdJob),this.held&&this.fireHold("release"),this.held=!1,this.heldPointer=null,this.target=null,this.holdJob=null},down:function(a){a.isPrimary&&!this.heldPointer&&(this.heldPointer=a,this.target=a.target,this.holdJob=setInterval(this.pulse.bind(this),this.HOLD_DELAY))},up:function(a){this.heldPointer&&this.heldPointer.pointerId===a.pointerId&&this.cancel()},move:function(a){if(this.heldPointer&&this.heldPointer.pointerId===a.pointerId){var b=a.clientX-this.heldPointer.clientX,c=a.clientY-this.heldPointer.clientY;b*b+c*c>this.WIGGLE_THRESHOLD&&this.cancel()}},fireHold:function(a,b){var d={bubbles:!0,cancelable:!0,pointerType:this.heldPointer.pointerType,pointerId:this.heldPointer.pointerId,x:this.heldPointer.clientX,y:this.heldPointer.clientY,_source:"hold"};b&&(d.holdTime=b);var e=c.makeGestureEvent(a,d);this.target.dispatchEvent(e)}};b.registerGesture("hold",d)}(window.PolymerGestures),function(a){var b=a.dispatcher,c=a.eventFactory,d=new a.PointerMap,e={events:["down","up"],exposes:["tap"],down:function(a){a.isPrimary&&!a.tapPrevented&&d.set(a.pointerId,{target:a.target,buttons:a.buttons,x:a.clientX,y:a.clientY})},shouldTap:function(a,b){return"mouse"===a.pointerType?1===b.buttons:!a.tapPrevented},up:function(b){var e=d.get(b.pointerId);if(e&&this.shouldTap(b,e)){var f=a.targetFinding.LCA(e.target,b.relatedTarget);if(f){var g=c.makeGestureEvent("tap",{bubbles:!0,cancelable:!0,x:b.clientX,y:b.clientY,detail:b.detail,pointerType:b.pointerType,pointerId:b.pointerId,altKey:b.altKey,ctrlKey:b.ctrlKey,metaKey:b.metaKey,shiftKey:b.shiftKey,_source:"tap"});f.dispatchEvent(g)}}d.delete(b.pointerId)}};c.preventTap=function(a){return function(){a.tapPrevented=!0,d.delete(a.pointerId)}},b.registerGesture("tap",e)}(window.PolymerGestures),function(a){"use strict";function b(a,b){if(!a)throw new Error("ASSERT: "+b)}function c(a){return a>=48&&57>=a}function d(a){return 32===a||9===a||11===a||12===a||160===a||a>=5760&&"\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\ufeff".indexOf(String.fromCharCode(a))>0}function e(a){return 10===a||13===a||8232===a||8233===a}function f(a){return 36===a||95===a||a>=65&&90>=a||a>=97&&122>=a}function g(a){return 36===a||95===a||a>=65&&90>=a||a>=97&&122>=a||a>=48&&57>=a}function h(a){return"this"===a}function i(){for(;Y>X&&d(W.charCodeAt(X));)++X}function j(){var a,b;for(a=X++;Y>X&&(b=W.charCodeAt(X),g(b));)++X;return W.slice(a,X)}function k(){var a,b,c;return a=X,b=j(),c=1===b.length?S.Identifier:h(b)?S.Keyword:"null"===b?S.NullLiteral:"true"===b||"false"===b?S.BooleanLiteral:S.Identifier,{type:c,value:b,range:[a,X]}}function l(){var a,b,c=X,d=W.charCodeAt(X),e=W[X];switch(d){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:return++X,{type:S.Punctuator,value:String.fromCharCode(d),range:[c,X]};default:if(a=W.charCodeAt(X+1),61===a)switch(d){case 37:case 38:case 42:case 43:case 45:case 47:case 60:case 62:case 124:return X+=2,{type:S.Punctuator,value:String.fromCharCode(d)+String.fromCharCode(a),range:[c,X]};case 33:case 61:return X+=2,61===W.charCodeAt(X)&&++X,{type:S.Punctuator,value:W.slice(c,X),range:[c,X]}}}return b=W[X+1],e===b&&"&|".indexOf(e)>=0?(X+=2,{type:S.Punctuator,value:e+b,range:[c,X]}):"<>=!+-*%&|^/".indexOf(e)>=0?(++X,{type:S.Punctuator,value:e,range:[c,X]}):void s({},V.UnexpectedToken,"ILLEGAL")}function m(){var a,d,e;if(e=W[X],b(c(e.charCodeAt(0))||"."===e,"Numeric literal must start with a decimal digit or a decimal point"),d=X,a="","."!==e){for(a=W[X++],e=W[X],"0"===a&&e&&c(e.charCodeAt(0))&&s({},V.UnexpectedToken,"ILLEGAL");c(W.charCodeAt(X));)a+=W[X++];e=W[X]}if("."===e){for(a+=W[X++];c(W.charCodeAt(X));)a+=W[X++];e=W[X]}if("e"===e||"E"===e)if(a+=W[X++],e=W[X],("+"===e||"-"===e)&&(a+=W[X++]),c(W.charCodeAt(X)))for(;c(W.charCodeAt(X));)a+=W[X++];else s({},V.UnexpectedToken,"ILLEGAL");return f(W.charCodeAt(X))&&s({},V.UnexpectedToken,"ILLEGAL"),{type:S.NumericLiteral,value:parseFloat(a),range:[d,X]}}function n(){var a,c,d,f="",g=!1;for(a=W[X],b("'"===a||'"'===a,"String literal must starts with a quote"),c=X,++X;Y>X;){if(d=W[X++],d===a){a="";break}if("\\"===d)if(d=W[X++],d&&e(d.charCodeAt(0)))"\r"===d&&"\n"===W[X]&&++X;else switch(d){case"n":f+="\n";break;case"r":f+="\r";break;case"t":f+=" ";break;case"b":f+="\b";break;case"f":f+="\f";break;case"v":f+=" ";break;default:f+=d}else{if(e(d.charCodeAt(0)))break;f+=d}}return""!==a&&s({},V.UnexpectedToken,"ILLEGAL"),{type:S.StringLiteral,value:f,octal:g,range:[c,X]}}function o(a){return a.type===S.Identifier||a.type===S.Keyword||a.type===S.BooleanLiteral||a.type===S.NullLiteral}function p(){var a;return i(),X>=Y?{type:S.EOF,range:[X,X]}:(a=W.charCodeAt(X),40===a||41===a||58===a?l():39===a||34===a?n():f(a)?k():46===a?c(W.charCodeAt(X+1))?m():l():c(a)?m():l())}function q(){var a;return a=$,X=a.range[1],$=p(),X=a.range[1],a}function r(){var a;a=X,$=p(),X=a}function s(a,c){var d,e=Array.prototype.slice.call(arguments,2),f=c.replace(/%(\d)/g,function(a,c){return b(c<e.length,"Message reference must be in range"),e[c]});throw d=new Error(f),d.index=X,d.description=f,d}function t(a){s(a,V.UnexpectedToken,a.value)}function u(a){var b=q();(b.type!==S.Punctuator||b.value!==a)&&t(b)}function v(a){return $.type===S.Punctuator&&$.value===a}function w(a){return $.type===S.Keyword&&$.value===a}function x(){var a=[];for(u("[");!v("]");)v(",")?(q(),a.push(null)):(a.push(bb()),v("]")||u(","));return u("]"),Z.createArrayExpression(a)}function y(){var a;return i(),a=q(),a.type===S.StringLiteral||a.type===S.NumericLiteral?Z.createLiteral(a):Z.createIdentifier(a.value)}function z(){var a,b;return a=$,i(),(a.type===S.EOF||a.type===S.Punctuator)&&t(a),b=y(),u(":"),Z.createProperty("init",b,bb())}function A(){var a=[];for(u("{");!v("}");)a.push(z()),v("}")||u(",");return u("}"),Z.createObjectExpression(a)}function B(){var a;return u("("),a=bb(),u(")"),a}function C(){var a,b,c;return v("(")?B():(a=$.type,a===S.Identifier?c=Z.createIdentifier(q().value):a===S.StringLiteral||a===S.NumericLiteral?c=Z.createLiteral(q()):a===S.Keyword?w("this")&&(q(),c=Z.createThisExpression()):a===S.BooleanLiteral?(b=q(),b.value="true"===b.value,c=Z.createLiteral(b)):a===S.NullLiteral?(b=q(),b.value=null,c=Z.createLiteral(b)):v("[")?c=x():v("{")&&(c=A()),c?c:void t(q()))}function D(){var a=[];if(u("("),!v(")"))for(;Y>X&&(a.push(bb()),!v(")"));)u(",");return u(")"),a}function E(){var a;return a=q(),o(a)||t(a),Z.createIdentifier(a.value)}function F(){return u("."),E()}function G(){var a;return u("["),a=bb(),u("]"),a}function H(){var a,b,c;for(a=C();;)if(v("["))c=G(),a=Z.createMemberExpression("[",a,c);else if(v("."))c=F(),a=Z.createMemberExpression(".",a,c);else{if(!v("("))break;b=D(),a=Z.createCallExpression(a,b)}return a}function I(){var a,b;return $.type!==S.Punctuator&&$.type!==S.Keyword?b=ab():v("+")||v("-")||v("!")?(a=q(),b=I(),b=Z.createUnaryExpression(a.value,b)):w("delete")||w("void")||w("typeof")?s({},V.UnexpectedToken):b=ab(),b}function J(a){var b=0;if(a.type!==S.Punctuator&&a.type!==S.Keyword)return 0;switch(a.value){case"||":b=1;break;case"&&":b=2;break;case"==":case"!=":case"===":case"!==":b=6;break;case"<":case">":case"<=":case">=":case"instanceof":b=7;break;case"in":b=7;break;case"+":case"-":b=9;break;case"*":case"/":case"%":b=11}return b}function K(){var a,b,c,d,e,f,g,h;if(g=I(),b=$,c=J(b),0===c)return g;for(b.prec=c,q(),e=I(),d=[g,b,e];(c=J($))>0;){for(;d.length>2&&c<=d[d.length-2].prec;)e=d.pop(),f=d.pop().value,g=d.pop(),a=Z.createBinaryExpression(f,g,e),d.push(a);b=q(),b.prec=c,d.push(b),a=I(),d.push(a)}for(h=d.length-1,a=d[h];h>1;)a=Z.createBinaryExpression(d[h-1].value,d[h-2],a),h-=2;return a}function L(){var a,b,c;return a=K(),v("?")&&(q(),b=L(),u(":"),c=L(),a=Z.createConditionalExpression(a,b,c)),a}function M(){var a,b;return a=q(),a.type!==S.Identifier&&t(a),b=v("(")?D():[],Z.createFilter(a.value,b)}function N(){for(;v("|");)q(),M()}function O(){i(),r();var a=bb();a&&(","===$.value||"in"==$.value&&a.type===U.Identifier?Q(a):(N(),"as"===$.value?P(a):Z.createTopLevel(a))),$.type!==S.EOF&&t($)}function P(a){q();var b=q().value;Z.createAsExpression(a,b)}function Q(a){var b;","===$.value&&(q(),$.type!==S.Identifier&&t($),b=q().value),q();var c=bb();N(),Z.createInExpression(a.name,b,c)}function R(a,b){return Z=b,W=a,X=0,Y=W.length,$=null,_={labelSet:{}},O()}var S,T,U,V,W,X,Y,Z,$,_;S={BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8},T={},T[S.BooleanLiteral]="Boolean",T[S.EOF]="<end>",T[S.Identifier]="Identifier",T[S.Keyword]="Keyword",T[S.NullLiteral]="Null",T[S.NumericLiteral]="Numeric",T[S.Punctuator]="Punctuator",T[S.StringLiteral]="String",U={ArrayExpression:"ArrayExpression",BinaryExpression:"BinaryExpression",CallExpression:"CallExpression",ConditionalExpression:"ConditionalExpression",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",Identifier:"Identifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",ThisExpression:"ThisExpression",UnaryExpression:"UnaryExpression"},V={UnexpectedToken:"Unexpected token %0",UnknownLabel:"Undefined label '%0'",Redeclaration:"%0 '%1' has already been declared"};var ab=H,bb=L;a.esprima={parse:R}}(this),function(a){"use strict";function b(a,b,d,e){var f;try{if(f=c(a),f.scopeIdent&&(d.nodeType!==Node.ELEMENT_NODE||"TEMPLATE"!==d.tagName||"bind"!==b&&"repeat"!==b))throw Error("as and in can only be used within <template bind/repeat>")}catch(g){return void console.error("Invalid expression syntax: "+a,g)}return function(a,b,c){var d=f.getBinding(a,e,c);return f.scopeIdent&&d&&(b.polymerExpressionScopeIdent_=f.scopeIdent,f.indexIdent&&(b.polymerExpressionIndexIdent_=f.indexIdent)),d}}function c(a){var b=q[a];if(!b){var c=new j;esprima.parse(a,c),b=new l(c),q[a]=b}return b}function d(a){this.value=a,this.valueFn_=void 0}function e(a){this.name=a,this.path=Path.get(a)}function f(a,b,c){this.computed="["==c,this.dynamicDeps="function"==typeof a||a.dynamicDeps||this.computed&&!(b instanceof d),this.simplePath=!this.dynamicDeps&&(b instanceof e||b instanceof d)&&(a instanceof f||a instanceof e),this.object=this.simplePath?a:i(a),this.property=!this.computed||this.simplePath?b:i(b)}function g(a,b){this.name=a,this.args=[];for(var c=0;c<b.length;c++)this.args[c]=i(b[c])}function h(){throw Error("Not Implemented")}function i(a){return"function"==typeof a?a:a.valueFn()}function j(){this.expression=null,this.filters=[],this.deps={},this.currentPath=void 0,this.scopeIdent=void 0,this.indexIdent=void 0,this.dynamicDeps=!1}function k(a){this.value_=a}function l(a){if(this.scopeIdent=a.scopeIdent,this.indexIdent=a.indexIdent,!a.expression)throw Error("No expression found.");this.expression=a.expression,i(this.expression),this.filters=a.filters,this.dynamicDeps=a.dynamicDeps}function m(a){return String(a).replace(/[A-Z]/g,function(a){return"-"+a.toLowerCase()})}function n(a,b){for(;a[t]&&!Object.prototype.hasOwnProperty.call(a,b);)a=a[t];return a}function o(a){switch(a){case"":return!1;case"false":case"null":case"true":return!0}return isNaN(Number(a))?!1:!0}function p(){}var q=Object.create(null);d.prototype={valueFn:function(){if(!this.valueFn_){var a=this.value;this.valueFn_=function(){return a}}return this.valueFn_}},e.prototype={valueFn:function(){if(!this.valueFn_){var a=(this.name,this.path);this.valueFn_=function(b,c){return c&&c.addPath(b,a),a.getValueFrom(b)}}return this.valueFn_},setValue:function(a,b){return 1==this.path.length,a=n(a,this.path[0]),this.path.setValueFrom(a,b)}},f.prototype={get fullPath(){if(!this.fullPath_){var a=this.object instanceof f?this.object.fullPath.slice():[this.object.name];
a.push(this.property instanceof e?this.property.name:this.property.value),this.fullPath_=Path.get(a)}return this.fullPath_},valueFn:function(){if(!this.valueFn_){var a=this.object;if(this.simplePath){var b=this.fullPath;this.valueFn_=function(a,c){return c&&c.addPath(a,b),b.getValueFrom(a)}}else if(this.computed){var c=this.property;this.valueFn_=function(b,d,e){var f=a(b,d,e),g=c(b,d,e);return d&&d.addPath(f,[g]),f?f[g]:void 0}}else{var b=Path.get(this.property.name);this.valueFn_=function(c,d,e){var f=a(c,d,e);return d&&d.addPath(f,b),b.getValueFrom(f)}}}return this.valueFn_},setValue:function(a,b){if(this.simplePath)return this.fullPath.setValueFrom(a,b),b;var c=this.object(a),d=this.property instanceof e?this.property.name:this.property(a);return c[d]=b}},g.prototype={transform:function(a,b,c,d,e){var f=c[this.name],g=a;if(f)g=void 0;else if(f=g[this.name],!f)return void console.error("Cannot find function or filter: "+this.name);if(d?f=f.toModel:"function"==typeof f.toDOM&&(f=f.toDOM),"function"!=typeof f)return void console.error("Cannot find function or filter: "+this.name);for(var h=e||[],j=0;j<this.args.length;j++)h.push(i(this.args[j])(a,b,c));return f.apply(g,h)}};var r={"+":function(a){return+a},"-":function(a){return-a},"!":function(a){return!a}},s={"+":function(a,b){return a+b},"-":function(a,b){return a-b},"*":function(a,b){return a*b},"/":function(a,b){return a/b},"%":function(a,b){return a%b},"<":function(a,b){return b>a},">":function(a,b){return a>b},"<=":function(a,b){return b>=a},">=":function(a,b){return a>=b},"==":function(a,b){return a==b},"!=":function(a,b){return a!=b},"===":function(a,b){return a===b},"!==":function(a,b){return a!==b},"&&":function(a,b){return a&&b},"||":function(a,b){return a||b}};j.prototype={createUnaryExpression:function(a,b){if(!r[a])throw Error("Disallowed operator: "+a);return b=i(b),function(c,d,e){return r[a](b(c,d,e))}},createBinaryExpression:function(a,b,c){if(!s[a])throw Error("Disallowed operator: "+a);switch(b=i(b),c=i(c),a){case"||":return this.dynamicDeps=!0,function(a,d,e){return b(a,d,e)||c(a,d,e)};case"&&":return this.dynamicDeps=!0,function(a,d,e){return b(a,d,e)&&c(a,d,e)}}return function(d,e,f){return s[a](b(d,e,f),c(d,e,f))}},createConditionalExpression:function(a,b,c){return a=i(a),b=i(b),c=i(c),this.dynamicDeps=!0,function(d,e,f){return a(d,e,f)?b(d,e,f):c(d,e,f)}},createIdentifier:function(a){var b=new e(a);return b.type="Identifier",b},createMemberExpression:function(a,b,c){var d=new f(b,c,a);return d.dynamicDeps&&(this.dynamicDeps=!0),d},createCallExpression:function(a,b){if(!(a instanceof e))throw Error("Only identifier function invocations are allowed");var c=new g(a.name,b);return function(a,b,d){return c.transform(a,b,d,!1)}},createLiteral:function(a){return new d(a.value)},createArrayExpression:function(a){for(var b=0;b<a.length;b++)a[b]=i(a[b]);return function(b,c,d){for(var e=[],f=0;f<a.length;f++)e.push(a[f](b,c,d));return e}},createProperty:function(a,b,c){return{key:b instanceof e?b.name:b.value,value:c}},createObjectExpression:function(a){for(var b=0;b<a.length;b++)a[b].value=i(a[b].value);return function(b,c,d){for(var e={},f=0;f<a.length;f++)e[a[f].key]=a[f].value(b,c,d);return e}},createFilter:function(a,b){this.filters.push(new g(a,b))},createAsExpression:function(a,b){this.expression=a,this.scopeIdent=b},createInExpression:function(a,b,c){this.expression=c,this.scopeIdent=a,this.indexIdent=b},createTopLevel:function(a){this.expression=a},createThisExpression:h},k.prototype={open:function(){return this.value_},discardChanges:function(){return this.value_},deliver:function(){},close:function(){}},l.prototype={getBinding:function(a,b,c){function d(){if(h)return h=!1,g;i.dynamicDeps&&f.startReset();var c=i.getValue(a,i.dynamicDeps?f:void 0,b);return i.dynamicDeps&&f.finishReset(),c}function e(c){return i.setValue(a,c,b),c}if(c)return this.getValue(a,void 0,b);var f=new CompoundObserver,g=this.getValue(a,f,b),h=!0,i=this;return new ObserverTransform(f,d,e,!0)},getValue:function(a,b,c){for(var d=i(this.expression)(a,b,c),e=0;e<this.filters.length;e++)d=this.filters[e].transform(a,b,c,!1,[d]);return d},setValue:function(a,b,c){for(var d=this.filters?this.filters.length:0;d-->0;)b=this.filters[d].transform(a,void 0,c,!0,[b]);return this.expression.setValue?this.expression.setValue(a,b):void 0}};var t="@"+Math.random().toString(36).slice(2);p.prototype={styleObject:function(a){var b=[];for(var c in a)b.push(m(c)+": "+a[c]);return b.join("; ")},tokenList:function(a){var b=[];for(var c in a)a[c]&&b.push(c);return b.join(" ")},prepareInstancePositionChanged:function(a){var b=a.polymerExpressionIndexIdent_;if(b)return function(a,c){a.model[b]=c}},prepareBinding:function(a,c,d){var e=Path.get(a);{if(o(a)||!e.valid)return b(a,c,d,this);if(1==e.length)return function(a,b,c){if(c)return e.getValueFrom(a);var d=n(a,e[0]);return new PathObserver(d,e)}}},prepareInstanceModel:function(a){var b=a.polymerExpressionScopeIdent_;if(b){var c=a.templateInstance?a.templateInstance.model:a.model,d=a.polymerExpressionIndexIdent_;return function(a){return u(c,a,b,d)}}}};var u="__proto__"in{}?function(a,b,c,d){var e={};return e[c]=b,e[d]=void 0,e[t]=a,e.__proto__=a,e}:function(a,b,c,d){var e=Object.create(a);return Object.defineProperty(e,c,{value:b,configurable:!0,writable:!0}),Object.defineProperty(e,d,{value:void 0,configurable:!0,writable:!0}),Object.defineProperty(e,t,{value:a,configurable:!0,writable:!0}),e};a.PolymerExpressions=p,p.getExpression=c}(this),Polymer={version:"0.4.0-d62a0e4"},"function"==typeof window.Polymer&&(Polymer={}),window.Platform||(logFlags=window.logFlags||{},Platform={flush:function(){}},CustomElements={useNative:!0,ready:!0,takeRecords:function(){},"instanceof":function(a,b){return a instanceof b}},HTMLImports={useNative:!0},addEventListener("HTMLImportsLoaded",function(){document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0}))}),ShadowDOMPolyfill=null,wrap=unwrap=function(a){return a}),function(a){function b(a,b){b=b||o,d(function(){f(a,b)},b)}function c(a){return"complete"===a.readyState||a.readyState===q}function d(a,b){if(c(b))a&&a();else{var e=function(){("complete"===b.readyState||b.readyState===q)&&(b.removeEventListener(r,e),d(a,b))};b.addEventListener(r,e)}}function e(a){a.target.__loaded=!0}function f(a,b){function c(){h==i&&a&&a()}function d(a){e(a),h++,c()}var f=b.querySelectorAll("link[rel=import]"),h=0,i=f.length;if(i)for(var j,k=0;i>k&&(j=f[k]);k++)g(j)?d.call(j,{target:j}):(j.addEventListener("load",d),j.addEventListener("error",d));else c()}function g(a){return l?a.__loaded||a.import&&"loading"!==a.import.readyState:a.__importParsed}function h(a){for(var b,c=0,d=a.length;d>c&&(b=a[c]);c++)i(b)&&j(b)}function i(a){return"link"===a.localName&&"import"===a.rel}function j(a){var b=a.import;b?e({target:a}):(a.addEventListener("load",e),a.addEventListener("error",e))}var k="import"in document.createElement("link"),l=k;isIE=/Trident/.test(navigator.userAgent);var m=Boolean(window.ShadowDOMPolyfill),n=function(a){return m?ShadowDOMPolyfill.wrapIfNeeded(a):a},o=n(document),p={get:function(){var a=HTMLImports.currentScript||document.currentScript||("complete"!==document.readyState?document.scripts[document.scripts.length-1]:null);return n(a)},configurable:!0};Object.defineProperty(document,"_currentScript",p),Object.defineProperty(o,"_currentScript",p);var q=isIE?"complete":"interactive",r="readystatechange";l&&(new MutationObserver(function(a){for(var b,c=0,d=a.length;d>c&&(b=a[c]);c++)b.addedNodes&&h(b.addedNodes)}).observe(document.head,{childList:!0}),function(){if("loading"===document.readyState)for(var a,b=document.querySelectorAll("link[rel=import]"),c=0,d=b.length;d>c&&(a=b[c]);c++)j(a)}()),b(function(){HTMLImports.ready=!0,HTMLImports.readyTime=(new Date).getTime(),o.dispatchEvent(new CustomEvent("HTMLImportsLoaded",{bubbles:!0}))}),a.useNative=l,a.isImportLoaded=g,a.whenReady=b,a.isIE=isIE,a.whenImportsReady=b}(window.HTMLImports),function(a){function b(a,b){return b=b||[],b.map||(b=[b]),a.apply(this,b.map(d))}function c(a,c,d){var e;switch(arguments.length){case 0:return;case 1:e=null;break;case 2:e=c.apply(this);break;default:e=b(d,c)}f[a]=e}function d(a){return f[a]}function e(a,c){HTMLImports.whenImportsReady(function(){b(c,a)})}var f={};a.marshal=d,a.modularize=c,a.using=e}(window),function(){var a=document.createElement("style");a.textContent="body {transition: opacity ease-in 0.2s; } \nbody[unresolved] {opacity: 0; display: block; overflow: hidden; } \n";var b=document.querySelector("head");b.insertBefore(a,b.firstChild)}(Platform),function(a){"use strict";function b(){function a(a){b=a}if("function"!=typeof Object.observe||"function"!=typeof Array.observe)return!1;var b=[],c={},d=[];return Object.observe(c,a),Array.observe(d,a),c.id=1,c.id=2,delete c.id,d.push(1,2),d.length=0,Object.deliverChangeRecords(a),5!==b.length?!1:"add"!=b[0].type||"update"!=b[1].type||"delete"!=b[2].type||"splice"!=b[3].type||"splice"!=b[4].type?!1:(Object.unobserve(c,a),Array.unobserve(d,a),!0)}function c(){if("undefined"!=typeof chrome&&chrome.app&&chrome.app.runtime)return!1;if("undefined"!=typeof navigator&&navigator.getDeviceStorage)return!1;try{var a=new Function("","return true;");return a()}catch(b){return!1}}function d(a){return+a===a>>>0&&""!==a}function e(a){return+a}function f(a){return a===Object(a)}function g(a,b){return a===b?0!==a||1/a===1/b:R(a)&&R(b)?!0:a!==a&&b!==b}function h(a){if(void 0===a)return"eof";var b=a.charCodeAt(0);switch(b){case 91:case 93:case 46:case 34:case 39:case 48:return a;case 95:case 36:return"ident";case 32:case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"ws"}return b>=97&&122>=b||b>=65&&90>=b?"ident":b>=49&&57>=b?"number":"else"}function i(){}function j(a){function b(){if(!(m>=a.length)){var b=a[m+1];return"inSingleQuote"==n&&"'"==b||"inDoubleQuote"==n&&'"'==b?(m++,d=b,o.append(),!0):void 0}}for(var c,d,e,f,g,j,k,l=[],m=-1,n="beforePath",o={push:function(){void 0!==e&&(l.push(e),e=void 0)},append:function(){void 0===e?e=d:e+=d}};n;)if(m++,c=a[m],"\\"!=c||!b(n)){if(f=h(c),k=W[n],g=k[f]||k["else"]||"error","error"==g)return;if(n=g[0],j=o[g[1]]||i,d=void 0===g[2]?c:g[2],j(),"afterPath"===n)return l}}function k(a){return V.test(a)}function l(a,b){if(b!==X)throw Error("Use Path.get to retrieve path objects");for(var c=0;c<a.length;c++)this.push(String(a[c]));Q&&this.length&&(this.getValueFrom=this.compiledGetValueFromFn())}function m(a){if(a instanceof l)return a;if((null==a||0==a.length)&&(a=""),"string"!=typeof a){if(d(a.length))return new l(a,X);a=String(a)}var b=Y[a];if(b)return b;var c=j(a);if(!c)return Z;var b=new l(c,X);return Y[a]=b,b}function n(a){return d(a)?"["+a+"]":'["'+a.replace(/"/g,'\\"')+'"]'}function o(b){for(var c=0;_>c&&b.check_();)c++;return O&&(a.dirtyCheckCycleCount=c),c>0}function p(a){for(var b in a)return!1;return!0}function q(a){return p(a.added)&&p(a.removed)&&p(a.changed)}function r(a,b){var c={},d={},e={};for(var f in b){var g=a[f];(void 0===g||g!==b[f])&&(f in a?g!==b[f]&&(e[f]=g):d[f]=void 0)}for(var f in a)f in b||(c[f]=a[f]);return Array.isArray(a)&&a.length!==b.length&&(e.length=a.length),{added:c,removed:d,changed:e}}function s(){if(!ab.length)return!1;for(var a=0;a<ab.length;a++)ab[a]();return ab.length=0,!0}function t(){function a(a){b&&b.state_===fb&&!d&&b.check_(a)}var b,c,d=!1,e=!0;return{open:function(c){if(b)throw Error("ObservedObject in use");e||Object.deliverChangeRecords(a),b=c,e=!1},observe:function(b,d){c=b,d?Array.observe(c,a):Object.observe(c,a)},deliver:function(b){d=b,Object.deliverChangeRecords(a),d=!1},close:function(){b=void 0,Object.unobserve(c,a),cb.push(this)}}}function u(a,b,c){var d=cb.pop()||t();return d.open(a),d.observe(b,c),d}function v(){function a(b,f){b&&(b===d&&(e[f]=!0),h.indexOf(b)<0&&(h.push(b),Object.observe(b,c)),a(Object.getPrototypeOf(b),f))}function b(a){for(var b=0;b<a.length;b++){var c=a[b];if(c.object!==d||e[c.name]||"setPrototype"===c.type)return!1}return!0}function c(c){if(!b(c)){for(var d,e=0;e<g.length;e++)d=g[e],d.state_==fb&&d.iterateObjects_(a);for(var e=0;e<g.length;e++)d=g[e],d.state_==fb&&d.check_()}}var d,e,f=0,g=[],h=[],i={object:void 0,objects:h,open:function(b,c){d||(d=c,e={}),g.push(b),f++,b.iterateObjects_(a)},close:function(){if(f--,!(f>0)){for(var a=0;a<h.length;a++)Object.unobserve(h[a],c),x.unobservedCount++;g.length=0,h.length=0,d=void 0,e=void 0,db.push(this)}}};return i}function w(a,b){return $&&$.object===b||($=db.pop()||v(),$.object=b),$.open(a,b),$}function x(){this.state_=eb,this.callback_=void 0,this.target_=void 0,this.directObserver_=void 0,this.value_=void 0,this.id_=ib++}function y(a){x._allObserversCount++,kb&&jb.push(a)}function z(){x._allObserversCount--}function A(a){x.call(this),this.value_=a,this.oldObject_=void 0}function B(a){if(!Array.isArray(a))throw Error("Provided object is not an Array");A.call(this,a)}function C(a,b){x.call(this),this.object_=a,this.path_=m(b),this.directObserver_=void 0}function D(a){x.call(this),this.reportChangesOnOpen_=a,this.value_=[],this.directObserver_=void 0,this.observed_=[]}function E(a){return a}function F(a,b,c,d){this.callback_=void 0,this.target_=void 0,this.value_=void 0,this.observable_=a,this.getValueFn_=b||E,this.setValueFn_=c||E,this.dontPassThroughSet_=d}function G(a,b,c){for(var d={},e={},f=0;f<b.length;f++){var g=b[f];nb[g.type]?(g.name in c||(c[g.name]=g.oldValue),"update"!=g.type&&("add"!=g.type?g.name in d?(delete d[g.name],delete c[g.name]):e[g.name]=!0:g.name in e?delete e[g.name]:d[g.name]=!0)):(console.error("Unknown changeRecord type: "+g.type),console.error(g))}for(var h in d)d[h]=a[h];for(var h in e)e[h]=void 0;var i={};for(var h in c)if(!(h in d||h in e)){var j=a[h];c[h]!==j&&(i[h]=j)}return{added:d,removed:e,changed:i}}function H(a,b,c){return{index:a,removed:b,addedCount:c}}function I(){}function J(a,b,c,d,e,f){return sb.calcSplices(a,b,c,d,e,f)}function K(a,b,c,d){return c>b||a>d?-1:b==c||d==a?0:c>a?d>b?b-c:d-c:b>d?d-a:b-a}function L(a,b,c,d){for(var e=H(b,c,d),f=!1,g=0,h=0;h<a.length;h++){var i=a[h];if(i.index+=g,!f){var j=K(e.index,e.index+e.removed.length,i.index,i.index+i.addedCount);if(j>=0){a.splice(h,1),h--,g-=i.addedCount-i.removed.length,e.addedCount+=i.addedCount-j;var k=e.removed.length+i.removed.length-j;if(e.addedCount||k){var c=i.removed;if(e.index<i.index){var l=e.removed.slice(0,i.index-e.index);Array.prototype.push.apply(l,c),c=l}if(e.index+e.removed.length>i.index+i.addedCount){var m=e.removed.slice(i.index+i.addedCount-e.index);Array.prototype.push.apply(c,m)}e.removed=c,i.index<e.index&&(e.index=i.index)}else f=!0}else if(e.index<i.index){f=!0,a.splice(h,0,e),h++;var n=e.addedCount-e.removed.length;i.index+=n,g+=n}}}f||a.push(e)}function M(a,b){for(var c=[],f=0;f<b.length;f++){var g=b[f];switch(g.type){case"splice":L(c,g.index,g.removed.slice(),g.addedCount);break;case"add":case"update":case"delete":if(!d(g.name))continue;var h=e(g.name);if(0>h)continue;L(c,h,[g.oldValue],1);break;default:console.error("Unexpected record type: "+JSON.stringify(g))}}return c}function N(a,b){var c=[];return M(a,b).forEach(function(b){return 1==b.addedCount&&1==b.removed.length?void(b.removed[0]!==a[b.index]&&c.push(b)):void(c=c.concat(J(a,b.index,b.index+b.addedCount,b.removed,0,b.removed.length)))}),c}var O=a.testingExposeCycleCount,P=b(),Q=c(),R=a.Number.isNaN||function(b){return"number"==typeof b&&a.isNaN(b)},S="__proto__"in{}?function(a){return a}:function(a){var b=a.__proto__;if(!b)return a;var c=Object.create(b);return Object.getOwnPropertyNames(a).forEach(function(b){Object.defineProperty(c,b,Object.getOwnPropertyDescriptor(a,b))}),c},T="[$_a-zA-Z]",U="[$_a-zA-Z0-9]",V=new RegExp("^"+T+"+"+U+"*$"),W={beforePath:{ws:["beforePath"],ident:["inIdent","append"],"[":["beforeElement"],eof:["afterPath"]},inPath:{ws:["inPath"],".":["beforeIdent"],"[":["beforeElement"],eof:["afterPath"]},beforeIdent:{ws:["beforeIdent"],ident:["inIdent","append"]},inIdent:{ident:["inIdent","append"],0:["inIdent","append"],number:["inIdent","append"],ws:["inPath","push"],".":["beforeIdent","push"],"[":["beforeElement","push"],eof:["afterPath","push"]},beforeElement:{ws:["beforeElement"],0:["afterZero","append"],number:["inIndex","append"],"'":["inSingleQuote","append",""],'"':["inDoubleQuote","append",""]},afterZero:{ws:["afterElement","push"],"]":["inPath","push"]},inIndex:{0:["inIndex","append"],number:["inIndex","append"],ws:["afterElement"],"]":["inPath","push"]},inSingleQuote:{"'":["afterElement"],eof:["error"],"else":["inSingleQuote","append"]},inDoubleQuote:{'"':["afterElement"],eof:["error"],"else":["inDoubleQuote","append"]},afterElement:{ws:["afterElement"],"]":["inPath","push"]}},X={},Y={};l.get=m,l.prototype=S({__proto__:[],valid:!0,toString:function(){for(var a="",b=0;b<this.length;b++){var c=this[b];a+=k(c)?b?"."+c:c:n(c)}return a},getValueFrom:function(a){for(var b=0;b<this.length;b++){if(null==a)return;a=a[this[b]]}return a},iterateObjects:function(a,b){for(var c=0;c<this.length;c++){if(c&&(a=a[this[c-1]]),!f(a))return;b(a,this[0])}},compiledGetValueFromFn:function(){var a="",b="obj";a+="if (obj != null";for(var c,d=0;d<this.length-1;d++)c=this[d],b+=k(c)?"."+c:n(c),a+=" &&\n "+b+" != null";a+=")\n";var c=this[d];return b+=k(c)?"."+c:n(c),a+=" return "+b+";\nelse\n return undefined;",new Function("obj",a)},setValueFrom:function(a,b){if(!this.length)return!1;for(var c=0;c<this.length-1;c++){if(!f(a))return!1;a=a[this[c]]}return f(a)?(a[this[c]]=b,!0):!1}});var Z=new l("",X);Z.valid=!1,Z.getValueFrom=Z.setValueFrom=function(){};var $,_=1e3,ab=[],bb=P?function(){var a={pingPong:!0},b=!1;return Object.observe(a,function(){s(),b=!1}),function(c){ab.push(c),b||(b=!0,a.pingPong=!a.pingPong)}}():function(){return function(a){ab.push(a)}}(),cb=[],db=[],eb=0,fb=1,gb=2,hb=3,ib=1;x.prototype={open:function(a,b){if(this.state_!=eb)throw Error("Observer has already been opened.");return y(this),this.callback_=a,this.target_=b,this.connect_(),this.state_=fb,this.value_},close:function(){this.state_==fb&&(z(this),this.disconnect_(),this.value_=void 0,this.callback_=void 0,this.target_=void 0,this.state_=gb)},deliver:function(){this.state_==fb&&o(this)},report_:function(a){try{this.callback_.apply(this.target_,a)}catch(b){x._errorThrownDuringCallback=!0,console.error("Exception caught during observer callback: "+(b.stack||b))}},discardChanges:function(){return this.check_(void 0,!0),this.value_}};var jb,kb=!P;x._allObserversCount=0,kb&&(jb=[]);var lb=!1;a.Platform=a.Platform||{},a.Platform.performMicrotaskCheckpoint=function(){if(!lb&&kb){lb=!0;var b,c,d=0;do{d++,c=jb,jb=[],b=!1;for(var e=0;e<c.length;e++){var f=c[e];f.state_==fb&&(f.check_()&&(b=!0),jb.push(f))}s()&&(b=!0)}while(_>d&&b);O&&(a.dirtyCheckCycleCount=d),lb=!1}},kb&&(a.Platform.clearObservers=function(){jb=[]}),A.prototype=S({__proto__:x.prototype,arrayObserve:!1,connect_:function(){P?this.directObserver_=u(this,this.value_,this.arrayObserve):this.oldObject_=this.copyObject(this.value_)},copyObject:function(a){var b=Array.isArray(a)?[]:{};for(var c in a)b[c]=a[c];return Array.isArray(a)&&(b.length=a.length),b},check_:function(a){var b,c;if(P){if(!a)return!1;c={},b=G(this.value_,a,c)}else c=this.oldObject_,b=r(this.value_,this.oldObject_);return q(b)?!1:(P||(this.oldObject_=this.copyObject(this.value_)),this.report_([b.added||{},b.removed||{},b.changed||{},function(a){return c[a]}]),!0)},disconnect_:function(){P?(this.directObserver_.close(),this.directObserver_=void 0):this.oldObject_=void 0},deliver:function(){this.state_==fb&&(P?this.directObserver_.deliver(!1):o(this))},discardChanges:function(){return this.directObserver_?this.directObserver_.deliver(!0):this.oldObject_=this.copyObject(this.value_),this.value_}}),B.prototype=S({__proto__:A.prototype,arrayObserve:!0,copyObject:function(a){return a.slice()},check_:function(a){var b;if(P){if(!a)return!1;b=N(this.value_,a)}else b=J(this.value_,0,this.value_.length,this.oldObject_,0,this.oldObject_.length);return b&&b.length?(P||(this.oldObject_=this.copyObject(this.value_)),this.report_([b]),!0):!1}}),B.applySplices=function(a,b,c){c.forEach(function(c){for(var d=[c.index,c.removed.length],e=c.index;e<c.index+c.addedCount;)d.push(b[e]),e++;Array.prototype.splice.apply(a,d)})},C.prototype=S({__proto__:x.prototype,get path(){return this.path_},connect_:function(){P&&(this.directObserver_=w(this,this.object_)),this.check_(void 0,!0)},disconnect_:function(){this.value_=void 0,this.directObserver_&&(this.directObserver_.close(this),this.directObserver_=void 0)},iterateObjects_:function(a){this.path_.iterateObjects(this.object_,a)},check_:function(a,b){var c=this.value_;return this.value_=this.path_.getValueFrom(this.object_),b||g(this.value_,c)?!1:(this.report_([this.value_,c,this]),!0)},setValue:function(a){this.path_&&this.path_.setValueFrom(this.object_,a)}});var mb={};D.prototype=S({__proto__:x.prototype,connect_:function(){if(P){for(var a,b=!1,c=0;c<this.observed_.length;c+=2)if(a=this.observed_[c],a!==mb){b=!0;break}b&&(this.directObserver_=w(this,a))}this.check_(void 0,!this.reportChangesOnOpen_)},disconnect_:function(){for(var a=0;a<this.observed_.length;a+=2)this.observed_[a]===mb&&this.observed_[a+1].close();this.observed_.length=0,this.value_.length=0,this.directObserver_&&(this.directObserver_.close(this),this.directObserver_=void 0)},addPath:function(a,b){if(this.state_!=eb&&this.state_!=hb)throw Error("Cannot add paths once started.");var b=m(b);if(this.observed_.push(a,b),this.reportChangesOnOpen_){var c=this.observed_.length/2-1;this.value_[c]=b.getValueFrom(a)}},addObserver:function(a){if(this.state_!=eb&&this.state_!=hb)throw Error("Cannot add observers once started.");if(this.observed_.push(mb,a),this.reportChangesOnOpen_){var b=this.observed_.length/2-1;this.value_[b]=a.open(this.deliver,this)}},startReset:function(){if(this.state_!=fb)throw Error("Can only reset while open");this.state_=hb,this.disconnect_()},finishReset:function(){if(this.state_!=hb)throw Error("Can only finishReset after startReset");return this.state_=fb,this.connect_(),this.value_},iterateObjects_:function(a){for(var b,c=0;c<this.observed_.length;c+=2)b=this.observed_[c],b!==mb&&this.observed_[c+1].iterateObjects(b,a)},check_:function(a,b){for(var c,d=0;d<this.observed_.length;d+=2){var e,f=this.observed_[d],h=this.observed_[d+1];if(f===mb){var i=h;e=this.state_===eb?i.open(this.deliver,this):i.discardChanges()}else e=h.getValueFrom(f);b?this.value_[d/2]=e:g(e,this.value_[d/2])||(c=c||[],c[d/2]=this.value_[d/2],this.value_[d/2]=e)}return c?(this.report_([this.value_,c,this.observed_]),!0):!1}}),F.prototype={open:function(a,b){return this.callback_=a,this.target_=b,this.value_=this.getValueFn_(this.observable_.open(this.observedCallback_,this)),this.value_},observedCallback_:function(a){if(a=this.getValueFn_(a),!g(a,this.value_)){var b=this.value_;this.value_=a,this.callback_.call(this.target_,this.value_,b)}},discardChanges:function(){return this.value_=this.getValueFn_(this.observable_.discardChanges()),this.value_},deliver:function(){return this.observable_.deliver()},setValue:function(a){return a=this.setValueFn_(a),!this.dontPassThroughSet_&&this.observable_.setValue?this.observable_.setValue(a):void 0},close:function(){this.observable_&&this.observable_.close(),this.callback_=void 0,this.target_=void 0,this.observable_=void 0,this.value_=void 0,this.getValueFn_=void 0,this.setValueFn_=void 0}};var nb={add:!0,update:!0,"delete":!0},ob=0,pb=1,qb=2,rb=3;I.prototype={calcEditDistances:function(a,b,c,d,e,f){for(var g=f-e+1,h=c-b+1,i=new Array(g),j=0;g>j;j++)i[j]=new Array(h),i[j][0]=j;for(var k=0;h>k;k++)i[0][k]=k;for(var j=1;g>j;j++)for(var k=1;h>k;k++)if(this.equals(a[b+k-1],d[e+j-1]))i[j][k]=i[j-1][k-1];else{var l=i[j-1][k]+1,m=i[j][k-1]+1;i[j][k]=m>l?l:m}return i},spliceOperationsFromEditDistances:function(a){for(var b=a.length-1,c=a[0].length-1,d=a[b][c],e=[];b>0||c>0;)if(0!=b)if(0!=c){var f,g=a[b-1][c-1],h=a[b-1][c],i=a[b][c-1];f=i>h?g>h?h:g:g>i?i:g,f==g?(g==d?e.push(ob):(e.push(pb),d=g),b--,c--):f==h?(e.push(rb),b--,d=h):(e.push(qb),c--,d=i)}else e.push(rb),b--;else e.push(qb),c--;return e.reverse(),e},calcSplices:function(a,b,c,d,e,f){var g=0,h=0,i=Math.min(c-b,f-e);if(0==b&&0==e&&(g=this.sharedPrefix(a,d,i)),c==a.length&&f==d.length&&(h=this.sharedSuffix(a,d,i-g)),b+=g,e+=g,c-=h,f-=h,c-b==0&&f-e==0)return[];if(b==c){for(var j=H(b,[],0);f>e;)j.removed.push(d[e++]);return[j]}if(e==f)return[H(b,[],c-b)];for(var k=this.spliceOperationsFromEditDistances(this.calcEditDistances(a,b,c,d,e,f)),j=void 0,l=[],m=b,n=e,o=0;o<k.length;o++)switch(k[o]){case ob:j&&(l.push(j),j=void 0),m++,n++;break;case pb:j||(j=H(m,[],0)),j.addedCount++,m++,j.removed.push(d[n]),n++;break;case qb:j||(j=H(m,[],0)),j.addedCount++,m++;break;case rb:j||(j=H(m,[],0)),j.removed.push(d[n]),n++}return j&&l.push(j),l},sharedPrefix:function(a,b,c){for(var d=0;c>d;d++)if(!this.equals(a[d],b[d]))return d;return c},sharedSuffix:function(a,b,c){for(var d=a.length,e=b.length,f=0;c>f&&this.equals(a[--d],b[--e]);)f++;return f},calculateSplices:function(a,b){return this.calcSplices(a,0,a.length,b,0,b.length)},equals:function(a,b){return a===b}};var sb=new I;a.Observer=x,a.Observer.runEOM_=bb,a.Observer.observerSentinel_=mb,a.Observer.hasObjectObserve=P,a.ArrayObserver=B,a.ArrayObserver.calculateSplices=function(a,b){return sb.calculateSplices(a,b)},a.ArraySplice=I,a.ObjectObserver=A,a.PathObserver=C,a.CompoundObserver=D,a.Path=l,a.ObserverTransform=F}("undefined"!=typeof global&&global&&"undefined"!=typeof module&&module?global:this||window),function(){"use strict";function a(a){for(;a.parentNode;)a=a.parentNode;return"function"==typeof a.getElementById?a:null}function b(a,b,c){var d=a.bindings_;return d||(d=a.bindings_={}),d[b]&&c[b].close(),d[b]=c}function c(a,b,c){return c}function d(a){return null==a?"":a}function e(a,b){a.data=d(b)}function f(a){return function(b){return e(a,b)}}function g(a,b,c,e){return c?void(e?a.setAttribute(b,""):a.removeAttribute(b)):void a.setAttribute(b,d(e))}function h(a,b,c){return function(d){g(a,b,c,d)}}function i(a){switch(a.type){case"checkbox":return u;case"radio":case"select-multiple":case"select-one":return"change";case"range":if(/Trident|MSIE/.test(navigator.userAgent))return"change";default:return"input"}}function j(a,b,c,e){a[b]=(e||d)(c)}function k(a,b,c){return function(d){return j(a,b,d,c)}}function l(){}function m(a,b,c,d){function e(){c.setValue(a[b]),c.discardChanges(),(d||l)(a),Platform.performMicrotaskCheckpoint()}var f=i(a);return a.addEventListener(f,e),{close:function(){a.removeEventListener(f,e),c.close()},observable_:c}}function n(a){return Boolean(a)}function o(b){if(b.form)return s(b.form.elements,function(a){return a!=b&&"INPUT"==a.tagName&&"radio"==a.type&&a.name==b.name});var c=a(b);if(!c)return[];var d=c.querySelectorAll('input[type="radio"][name="'+b.name+'"]');return s(d,function(a){return a!=b&&!a.form})}function p(a){"INPUT"===a.tagName&&"radio"===a.type&&o(a).forEach(function(a){var b=a.bindings_.checked;b&&b.observable_.setValue(!1)})}function q(a,b){var c,e,f,g=a.parentNode;g instanceof HTMLSelectElement&&g.bindings_&&g.bindings_.value&&(c=g,e=c.bindings_.value,f=c.value),a.value=d(b),c&&c.value!=f&&(e.observable_.setValue(c.value),e.observable_.discardChanges(),Platform.performMicrotaskCheckpoint())}function r(a){return function(b){q(a,b)}}var s=Array.prototype.filter.call.bind(Array.prototype.filter);Node.prototype.bind=function(a,b){console.error("Unhandled binding to Node: ",this,a,b)},Node.prototype.bindFinished=function(){};var t=c;Object.defineProperty(Platform,"enableBindingsReflection",{get:function(){return t===b},set:function(a){return t=a?b:c,a},configurable:!0}),Text.prototype.bind=function(a,b,c){if("textContent"!==a)return Node.prototype.bind.call(this,a,b,c);if(c)return e(this,b);var d=b;return e(this,d.open(f(this))),t(this,a,d)},Element.prototype.bind=function(a,b,c){var d="?"==a[a.length-1];if(d&&(this.removeAttribute(a),a=a.slice(0,-1)),c)return g(this,a,d,b);var e=b;return g(this,a,d,e.open(h(this,a,d))),t(this,a,e)};var u;!function(){var a=document.createElement("div"),b=a.appendChild(document.createElement("input"));b.setAttribute("type","checkbox");var c,d=0;b.addEventListener("click",function(){d++,c=c||"click"}),b.addEventListener("change",function(){d++,c=c||"change"});var e=document.createEvent("MouseEvent");e.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),b.dispatchEvent(e),u=1==d?"change":c}(),HTMLInputElement.prototype.bind=function(a,c,e){if("value"!==a&&"checked"!==a)return HTMLElement.prototype.bind.call(this,a,c,e);this.removeAttribute(a);var f="checked"==a?n:d,g="checked"==a?p:l;if(e)return j(this,a,c,f);var h=c,i=m(this,a,h,g);return j(this,a,h.open(k(this,a,f)),f),b(this,a,i)},HTMLTextAreaElement.prototype.bind=function(a,b,c){if("value"!==a)return HTMLElement.prototype.bind.call(this,a,b,c);if(this.removeAttribute("value"),c)return j(this,"value",b);var e=b,f=m(this,"value",e);return j(this,"value",e.open(k(this,"value",d))),t(this,a,f)},HTMLOptionElement.prototype.bind=function(a,b,c){if("value"!==a)return HTMLElement.prototype.bind.call(this,a,b,c);if(this.removeAttribute("value"),c)return q(this,b);var d=b,e=m(this,"value",d);return q(this,d.open(r(this))),t(this,a,e)},HTMLSelectElement.prototype.bind=function(a,c,d){if("selectedindex"===a&&(a="selectedIndex"),"selectedIndex"!==a&&"value"!==a)return HTMLElement.prototype.bind.call(this,a,c,d);if(this.removeAttribute(a),d)return j(this,a,c);var e=c,f=m(this,a,e);return j(this,a,e.open(k(this,a))),b(this,a,f)}}(this),function(a){"use strict";function b(a){if(!a)throw new Error("Assertion failed")}function c(a){for(var b;b=a.parentNode;)a=b;return a}function d(a,b){if(b){for(var d,e="#"+b;!d&&(a=c(a),a.protoContent_?d=a.protoContent_.querySelector(e):a.getElementById&&(d=a.getElementById(b)),!d&&a.templateCreator_);)a=a.templateCreator_;return d}}function e(a){return"template"==a.tagName&&"http://www.w3.org/2000/svg"==a.namespaceURI}function f(a){return"TEMPLATE"==a.tagName&&"http://www.w3.org/1999/xhtml"==a.namespaceURI}function g(a){return Boolean(L[a.tagName]&&a.hasAttribute("template"))}function h(a){return void 0===a.isTemplate_&&(a.isTemplate_="TEMPLATE"==a.tagName||g(a)),a.isTemplate_}function i(a,b){var c=a.querySelectorAll(N);h(a)&&b(a),G(c,b)}function j(a){function b(a){HTMLTemplateElement.decorate(a)||j(a.content)}i(a,b)}function k(a,b){Object.getOwnPropertyNames(b).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))})}function l(a){var b=a.ownerDocument;if(!b.defaultView)return b;var c=b.templateContentsOwner_;if(!c){for(c=b.implementation.createHTMLDocument("");c.lastChild;)c.removeChild(c.lastChild);b.templateContentsOwner_=c}return c}function m(a){if(!a.stagingDocument_){var b=a.ownerDocument;if(!b.stagingDocument_){b.stagingDocument_=b.implementation.createHTMLDocument(""),b.stagingDocument_.isStagingDocument=!0;var c=b.stagingDocument_.createElement("base");c.href=document.baseURI,b.stagingDocument_.head.appendChild(c),b.stagingDocument_.stagingDocument_=b.stagingDocument_}a.stagingDocument_=b.stagingDocument_}return a.stagingDocument_}function n(a){var b=a.ownerDocument.createElement("template");a.parentNode.insertBefore(b,a);for(var c=a.attributes,d=c.length;d-->0;){var e=c[d];K[e.name]&&("template"!==e.name&&b.setAttribute(e.name,e.value),a.removeAttribute(e.name))}return b}function o(a){var b=a.ownerDocument.createElement("template");a.parentNode.insertBefore(b,a);for(var c=a.attributes,d=c.length;d-->0;){var e=c[d];b.setAttribute(e.name,e.value),a.removeAttribute(e.name)}return a.parentNode.removeChild(a),b}function p(a,b,c){var d=a.content;if(c)return void d.appendChild(b);for(var e;e=b.firstChild;)d.appendChild(e)}function q(a){P?a.__proto__=HTMLTemplateElement.prototype:k(a,HTMLTemplateElement.prototype)}function r(a){a.setModelFn_||(a.setModelFn_=function(){a.setModelFnScheduled_=!1;
var b=z(a,a.delegate_&&a.delegate_.prepareBinding);w(a,b,a.model_)}),a.setModelFnScheduled_||(a.setModelFnScheduled_=!0,Observer.runEOM_(a.setModelFn_))}function s(a,b,c,d){if(a&&a.length){for(var e,f=a.length,g=0,h=0,i=0,j=!0;f>h;){var g=a.indexOf("{{",h),k=a.indexOf("[[",h),l=!1,m="}}";if(k>=0&&(0>g||g>k)&&(g=k,l=!0,m="]]"),i=0>g?-1:a.indexOf(m,g+2),0>i){if(!e)return;e.push(a.slice(h));break}e=e||[],e.push(a.slice(h,g));var n=a.slice(g+2,i).trim();e.push(l),j=j&&l;var o=d&&d(n,b,c);e.push(null==o?Path.get(n):null),e.push(o),h=i+2}return h===f&&e.push(""),e.hasOnePath=5===e.length,e.isSimplePath=e.hasOnePath&&""==e[0]&&""==e[4],e.onlyOneTime=j,e.combinator=function(a){for(var b=e[0],c=1;c<e.length;c+=4){var d=e.hasOnePath?a:a[(c-1)/4];void 0!==d&&(b+=d),b+=e[c+3]}return b},e}}function t(a,b,c,d){if(b.hasOnePath){var e=b[3],f=e?e(d,c,!0):b[2].getValueFrom(d);return b.isSimplePath?f:b.combinator(f)}for(var g=[],h=1;h<b.length;h+=4){var e=b[h+2];g[(h-1)/4]=e?e(d,c):b[h+1].getValueFrom(d)}return b.combinator(g)}function u(a,b,c,d){var e=b[3],f=e?e(d,c,!1):new PathObserver(d,b[2]);return b.isSimplePath?f:new ObserverTransform(f,b.combinator)}function v(a,b,c,d){if(b.onlyOneTime)return t(a,b,c,d);if(b.hasOnePath)return u(a,b,c,d);for(var e=new CompoundObserver,f=1;f<b.length;f+=4){var g=b[f],h=b[f+2];if(h){var i=h(d,c,g);g?e.addPath(i):e.addObserver(i)}else{var j=b[f+1];g?e.addPath(j.getValueFrom(d)):e.addPath(d,j)}}return new ObserverTransform(e,b.combinator)}function w(a,b,c,d){for(var e=0;e<b.length;e+=2){var f=b[e],g=b[e+1],h=v(f,g,a,c),i=a.bind(f,h,g.onlyOneTime);i&&d&&d.push(i)}if(a.bindFinished(),b.isTemplate){a.model_=c;var j=a.processBindingDirectives_(b);d&&j&&d.push(j)}}function x(a,b,c){var d=a.getAttribute(b);return s(""==d?"{{}}":d,b,a,c)}function y(a,c){b(a);for(var d=[],e=0;e<a.attributes.length;e++){for(var f=a.attributes[e],g=f.name,i=f.value;"_"===g[0];)g=g.substring(1);if(!h(a)||g!==J&&g!==H&&g!==I){var j=s(i,g,a,c);j&&d.push(g,j)}}return h(a)&&(d.isTemplate=!0,d.if=x(a,J,c),d.bind=x(a,H,c),d.repeat=x(a,I,c),!d.if||d.bind||d.repeat||(d.bind=s("{{}}",H,a,c))),d}function z(a,b){if(a.nodeType===Node.ELEMENT_NODE)return y(a,b);if(a.nodeType===Node.TEXT_NODE){var c=s(a.data,"textContent",a,b);if(c)return["textContent",c]}return[]}function A(a,b,c,d,e,f,g){for(var h=b.appendChild(c.importNode(a,!1)),i=0,j=a.firstChild;j;j=j.nextSibling)A(j,h,c,d.children[i++],e,f,g);return d.isTemplate&&(HTMLTemplateElement.decorate(h,a),f&&h.setDelegate_(f)),w(h,d,e,g),h}function B(a,b){var c=z(a,b);c.children={};for(var d=0,e=a.firstChild;e;e=e.nextSibling)c.children[d++]=B(e,b);return c}function C(a){var b=a.id_;return b||(b=a.id_=S++),b}function D(a,b){var c=C(a);if(b){var d=b.bindingMaps[c];return d||(d=b.bindingMaps[c]=B(a,b.prepareBinding)||[]),d}var d=a.bindingMap_;return d||(d=a.bindingMap_=B(a,void 0)||[]),d}function E(a){this.closed=!1,this.templateElement_=a,this.instances=[],this.deps=void 0,this.iteratedValue=[],this.presentValue=void 0,this.arrayObserver=void 0}var F,G=Array.prototype.forEach.call.bind(Array.prototype.forEach);a.Map&&"function"==typeof a.Map.prototype.forEach?F=a.Map:(F=function(){this.keys=[],this.values=[]},F.prototype={set:function(a,b){var c=this.keys.indexOf(a);0>c?(this.keys.push(a),this.values.push(b)):this.values[c]=b},get:function(a){var b=this.keys.indexOf(a);if(!(0>b))return this.values[b]},"delete":function(a){var b=this.keys.indexOf(a);return 0>b?!1:(this.keys.splice(b,1),this.values.splice(b,1),!0)},forEach:function(a,b){for(var c=0;c<this.keys.length;c++)a.call(b||this,this.values[c],this.keys[c],this)}});"function"!=typeof document.contains&&(Document.prototype.contains=function(a){return a===this||a.parentNode===this?!0:this.documentElement.contains(a)});var H="bind",I="repeat",J="if",K={template:!0,repeat:!0,bind:!0,ref:!0},L={THEAD:!0,TBODY:!0,TFOOT:!0,TH:!0,TR:!0,TD:!0,COLGROUP:!0,COL:!0,CAPTION:!0,OPTION:!0,OPTGROUP:!0},M="undefined"!=typeof HTMLTemplateElement;M&&!function(){var a=document.createElement("template"),b=a.content.ownerDocument,c=b.appendChild(b.createElement("html")),d=c.appendChild(b.createElement("head")),e=b.createElement("base");e.href=document.baseURI,d.appendChild(e)}();var N="template, "+Object.keys(L).map(function(a){return a.toLowerCase()+"[template]"}).join(", ");document.addEventListener("DOMContentLoaded",function(){j(document),Platform.performMicrotaskCheckpoint()},!1),M||(a.HTMLTemplateElement=function(){throw TypeError("Illegal constructor")});var O,P="__proto__"in{};"function"==typeof MutationObserver&&(O=new MutationObserver(function(a){for(var b=0;b<a.length;b++)a[b].target.refChanged_()})),HTMLTemplateElement.decorate=function(a,c){if(a.templateIsDecorated_)return!1;var d=a;d.templateIsDecorated_=!0;var h=f(d)&&M,i=h,k=!h,m=!1;if(h||(g(d)?(b(!c),d=n(a),d.templateIsDecorated_=!0,h=M,m=!0):e(d)&&(d=o(a),d.templateIsDecorated_=!0,h=M)),!h){q(d);var r=l(d);d.content_=r.createDocumentFragment()}return c?d.instanceRef_=c:k?p(d,a,m):i&&j(d.content),!0},HTMLTemplateElement.bootstrap=j;var Q=a.HTMLUnknownElement||HTMLElement,R={get:function(){return this.content_},enumerable:!0,configurable:!0};M||(HTMLTemplateElement.prototype=Object.create(Q.prototype),Object.defineProperty(HTMLTemplateElement.prototype,"content",R)),k(HTMLTemplateElement.prototype,{bind:function(a,b,c){if("ref"!=a)return Element.prototype.bind.call(this,a,b,c);var d=this,e=c?b:b.open(function(a){d.setAttribute("ref",a),d.refChanged_()});return this.setAttribute("ref",e),this.refChanged_(),c?void 0:(this.bindings_?this.bindings_.ref=b:this.bindings_={ref:b},b)},processBindingDirectives_:function(a){return this.iterator_&&this.iterator_.closeDeps(),a.if||a.bind||a.repeat?(this.iterator_||(this.iterator_=new E(this)),this.iterator_.updateDependencies(a,this.model_),O&&O.observe(this,{attributes:!0,attributeFilter:["ref"]}),this.iterator_):void(this.iterator_&&(this.iterator_.close(),this.iterator_=void 0))},createInstance:function(a,b,c){b?c=this.newDelegate_(b):c||(c=this.delegate_),this.refContent_||(this.refContent_=this.ref_.content);var d=this.refContent_;if(null===d.firstChild)return T;var e=D(d,c),f=m(this),g=f.createDocumentFragment();g.templateCreator_=this,g.protoContent_=d,g.bindings_=[],g.terminator_=null;for(var h=g.templateInstance_={firstNode:null,lastNode:null,model:a},i=0,j=!1,k=d.firstChild;k;k=k.nextSibling){null===k.nextSibling&&(j=!0);var l=A(k,g,f,e.children[i++],a,c,g.bindings_);l.templateInstance_=h,j&&(g.terminator_=l)}return h.firstNode=g.firstChild,h.lastNode=g.lastChild,g.templateCreator_=void 0,g.protoContent_=void 0,g},get model(){return this.model_},set model(a){this.model_=a,r(this)},get bindingDelegate(){return this.delegate_&&this.delegate_.raw},refChanged_:function(){this.iterator_&&this.refContent_!==this.ref_.content&&(this.refContent_=void 0,this.iterator_.valueChanged(),this.iterator_.updateIteratedValue(this.iterator_.getUpdatedValue()))},clear:function(){this.model_=void 0,this.delegate_=void 0,this.bindings_&&this.bindings_.ref&&this.bindings_.ref.close(),this.refContent_=void 0,this.iterator_&&(this.iterator_.valueChanged(),this.iterator_.close(),this.iterator_=void 0)},setDelegate_:function(a){this.delegate_=a,this.bindingMap_=void 0,this.iterator_&&(this.iterator_.instancePositionChangedFn_=void 0,this.iterator_.instanceModelFn_=void 0)},newDelegate_:function(a){function b(b){var c=a&&a[b];if("function"==typeof c)return function(){return c.apply(a,arguments)}}if(a)return{bindingMaps:{},raw:a,prepareBinding:b("prepareBinding"),prepareInstanceModel:b("prepareInstanceModel"),prepareInstancePositionChanged:b("prepareInstancePositionChanged")}},set bindingDelegate(a){if(this.delegate_)throw Error("Template must be cleared before a new bindingDelegate can be assigned");this.setDelegate_(this.newDelegate_(a))},get ref_(){var a=d(this,this.getAttribute("ref"));if(a||(a=this.instanceRef_),!a)return this;var b=a.ref_;return b?b:a}});var S=1;Object.defineProperty(Node.prototype,"templateInstance",{get:function(){var a=this.templateInstance_;return a?a:this.parentNode?this.parentNode.templateInstance:void 0}});var T=document.createDocumentFragment();T.bindings_=[],T.terminator_=null,E.prototype={closeDeps:function(){var a=this.deps;a&&(a.ifOneTime===!1&&a.ifValue.close(),a.oneTime===!1&&a.value.close())},updateDependencies:function(a,b){this.closeDeps();var c=this.deps={},d=this.templateElement_,e=!0;if(a.if){if(c.hasIf=!0,c.ifOneTime=a.if.onlyOneTime,c.ifValue=v(J,a.if,d,b),e=c.ifValue,c.ifOneTime&&!e)return void this.valueChanged();c.ifOneTime||(e=e.open(this.updateIfValue,this))}a.repeat?(c.repeat=!0,c.oneTime=a.repeat.onlyOneTime,c.value=v(I,a.repeat,d,b)):(c.repeat=!1,c.oneTime=a.bind.onlyOneTime,c.value=v(H,a.bind,d,b));var f=c.value;return c.oneTime||(f=f.open(this.updateIteratedValue,this)),e?void this.updateValue(f):void this.valueChanged()},getUpdatedValue:function(){var a=this.deps.value;return this.deps.oneTime||(a=a.discardChanges()),a},updateIfValue:function(a){return a?void this.updateValue(this.getUpdatedValue()):void this.valueChanged()},updateIteratedValue:function(a){if(this.deps.hasIf){var b=this.deps.ifValue;if(this.deps.ifOneTime||(b=b.discardChanges()),!b)return void this.valueChanged()}this.updateValue(a)},updateValue:function(a){this.deps.repeat||(a=[a]);var b=this.deps.repeat&&!this.deps.oneTime&&Array.isArray(a);this.valueChanged(a,b)},valueChanged:function(a,b){Array.isArray(a)||(a=[]),a!==this.iteratedValue&&(this.unobserve(),this.presentValue=a,b&&(this.arrayObserver=new ArrayObserver(this.presentValue),this.arrayObserver.open(this.handleSplices,this)),this.handleSplices(ArrayObserver.calculateSplices(this.presentValue,this.iteratedValue)))},getLastInstanceNode:function(a){if(-1==a)return this.templateElement_;var b=this.instances[a],c=b.terminator_;if(!c)return this.getLastInstanceNode(a-1);if(c.nodeType!==Node.ELEMENT_NODE||this.templateElement_===c)return c;var d=c.iterator_;return d?d.getLastTemplateNode():c},getLastTemplateNode:function(){return this.getLastInstanceNode(this.instances.length-1)},insertInstanceAt:function(a,b){var c=this.getLastInstanceNode(a-1),d=this.templateElement_.parentNode;this.instances.splice(a,0,b),d.insertBefore(b,c.nextSibling)},extractInstanceAt:function(a){for(var b=this.getLastInstanceNode(a-1),c=this.getLastInstanceNode(a),d=this.templateElement_.parentNode,e=this.instances.splice(a,1)[0];c!==b;){var f=b.nextSibling;f==c&&(c=b),e.appendChild(d.removeChild(f))}return e},getDelegateFn:function(a){return a=a&&a(this.templateElement_),"function"==typeof a?a:null},handleSplices:function(a){if(!this.closed&&a.length){var b=this.templateElement_;if(!b.parentNode)return void this.close();ArrayObserver.applySplices(this.iteratedValue,this.presentValue,a);var c=b.delegate_;void 0===this.instanceModelFn_&&(this.instanceModelFn_=this.getDelegateFn(c&&c.prepareInstanceModel)),void 0===this.instancePositionChangedFn_&&(this.instancePositionChangedFn_=this.getDelegateFn(c&&c.prepareInstancePositionChanged));for(var d=new F,e=0,f=0;f<a.length;f++){for(var g=a[f],h=g.removed,i=0;i<h.length;i++){var j=h[i],k=this.extractInstanceAt(g.index+e);k!==T&&d.set(j,k)}e-=g.addedCount}for(var f=0;f<a.length;f++)for(var g=a[f],l=g.index;l<g.index+g.addedCount;l++){var j=this.iteratedValue[l],k=d.get(j);k?d.delete(j):(this.instanceModelFn_&&(j=this.instanceModelFn_(j)),k=void 0===j?T:b.createInstance(j,void 0,c)),this.insertInstanceAt(l,k)}d.forEach(function(a){this.closeInstanceBindings(a)},this),this.instancePositionChangedFn_&&this.reportInstancesMoved(a)}},reportInstanceMoved:function(a){var b=this.instances[a];b!==T&&this.instancePositionChangedFn_(b.templateInstance_,a)},reportInstancesMoved:function(a){for(var b=0,c=0,d=0;d<a.length;d++){var e=a[d];if(0!=c)for(;b<e.index;)this.reportInstanceMoved(b),b++;else b=e.index;for(;b<e.index+e.addedCount;)this.reportInstanceMoved(b),b++;c+=e.addedCount-e.removed.length}if(0!=c)for(var f=this.instances.length;f>b;)this.reportInstanceMoved(b),b++},closeInstanceBindings:function(a){for(var b=a.bindings_,c=0;c<b.length;c++)b[c].close()},unobserve:function(){this.arrayObserver&&(this.arrayObserver.close(),this.arrayObserver=void 0)},close:function(){if(!this.closed){this.unobserve();for(var a=0;a<this.instances.length;a++)this.closeInstanceBindings(this.instances[a]);this.instances.length=0,this.closeDeps(),this.templateElement_.iterator_=void 0,this.closed=!0}}},HTMLTemplateElement.forAllTemplatesFrom_=i}(this),function(a){function b(a){f.textContent=d++,e.push(a)}function c(){for(;e.length;)e.shift()()}var d=0,e=[],f=document.createTextNode("");new(window.MutationObserver||JsMutationObserver)(c).observe(f,{characterData:!0}),a.endOfMicrotask=b}(Platform),function(a){function b(){e||(e=!0,a.endOfMicrotask(function(){e=!1,logFlags.data&&console.group("Platform.flush()"),a.performMicrotaskCheckpoint(),logFlags.data&&console.groupEnd()}))}var c=document.createElement("style");c.textContent="template {display: none !important;} /* injected by platform.js */";var d=document.querySelector("head");d.insertBefore(c,d.firstChild);var e;if(Observer.hasObjectObserve)b=function(){};else{var f=125;window.addEventListener("WebComponentsReady",function(){b(),a.flushPoll=setInterval(b,f)})}if(window.CustomElements&&!CustomElements.useNative){var g=Document.prototype.importNode;Document.prototype.importNode=function(a,b){var c=g.call(this,a,b);return CustomElements.upgradeAll(c),c}}a.flush=b}(window.Platform),function(a){function b(a,b,d,e){return a.replace(e,function(a,e,f,g){var h=f.replace(/["']/g,"");return h=c(b,h,d),e+"'"+h+"'"+g})}function c(a,b,c){if(b&&"/"===b[0])return b;var e=new URL(b,a);return c?e.href:d(e.href)}function d(a){var b=new URL(document.baseURI),c=new URL(a,b);return c.host===b.host&&c.port===b.port&&c.protocol===b.protocol?e(b,c):a}function e(a,b){for(var c=a.pathname,d=b.pathname,e=c.split("/"),f=d.split("/");e.length&&e[0]===f[0];)e.shift(),f.shift();for(var g=0,h=e.length-1;h>g;g++)f.unshift("..");return f.join("/")+b.search+b.hash}var f={resolveDom:function(a,b){b=b||a.ownerDocument.baseURI,this.resolveAttributes(a,b),this.resolveStyles(a,b);var c=a.querySelectorAll("template");if(c)for(var d,e=0,f=c.length;f>e&&(d=c[e]);e++)d.content&&this.resolveDom(d.content,b)},resolveTemplate:function(a){this.resolveDom(a.content,a.ownerDocument.baseURI)},resolveStyles:function(a,b){var c=a.querySelectorAll("style");if(c)for(var d,e=0,f=c.length;f>e&&(d=c[e]);e++)this.resolveStyle(d,b)},resolveStyle:function(a,b){b=b||a.ownerDocument.baseURI,a.textContent=this.resolveCssText(a.textContent,b)},resolveCssText:function(a,c,d){return a=b(a,c,d,g),b(a,c,d,h)},resolveAttributes:function(a,b){a.hasAttributes&&a.hasAttributes()&&this.resolveElementAttributes(a,b);var c=a&&a.querySelectorAll(j);if(c)for(var d,e=0,f=c.length;f>e&&(d=c[e]);e++)this.resolveElementAttributes(d,b)},resolveElementAttributes:function(a,d){d=d||a.ownerDocument.baseURI,i.forEach(function(e){var f,h=a.attributes[e],i=h&&h.value;i&&i.search(k)<0&&(f="style"===e?b(i,d,!1,g):c(d,i),h.value=f)})}},g=/(url\()([^)]*)(\))/g,h=/(@import[\s]+(?!url\())([^;]*)(;)/g,i=["href","src","action","style","url"],j="["+i.join("],[")+"]",k="{{.*}}";a.urlResolver=f}(Polymer),function(a){function b(a){this.cache=Object.create(null),this.map=Object.create(null),this.requests=0,this.regex=a}var c=Platform.endOfMicrotask;b.prototype={extractUrls:function(a,b){for(var c,d,e=[];c=this.regex.exec(a);)d=new URL(c[1],b),e.push({matched:c[0],url:d.href});return e},process:function(a,b,c){var d=this.extractUrls(a,b),e=c.bind(null,this.map);this.fetch(d,e)},fetch:function(a,b){var c=a.length;if(!c)return b();for(var d,e,f,g=function(){0===--c&&b()},h=0;c>h;h++)d=a[h],f=d.url,e=this.cache[f],e||(e=this.xhr(f),e.match=d,this.cache[f]=e),e.wait(g)},handleXhr:function(a){var b=a.match,c=b.url,d=a.response||a.responseText||"";this.map[c]=d,this.fetch(this.extractUrls(d,c),a.resolve)},xhr:function(a){this.requests++;var b=new XMLHttpRequest;return b.open("GET",a,!0),b.send(),b.onerror=b.onload=this.handleXhr.bind(this,b),b.pending=[],b.resolve=function(){for(var a=b.pending,c=0;c<a.length;c++)a[c]();b.pending=null},b.wait=function(a){b.pending?b.pending.push(a):c(a)},b}},a.Loader=b}(Polymer),function(a){function b(){this.loader=new d(this.regex)}var c=a.urlResolver,d=a.Loader;b.prototype={regex:/@import\s+(?:url)?["'\(]*([^'"\)]*)['"\)]*;/g,resolve:function(a,b,c){var d=function(d){c(this.flatten(a,b,d))}.bind(this);this.loader.process(a,b,d)},resolveNode:function(a,b,c){var d=a.textContent,e=function(b){a.textContent=b,c(a)};this.resolve(d,b,e)},flatten:function(a,b,d){for(var e,f,g,h=this.loader.extractUrls(a,b),i=0;i<h.length;i++)e=h[i],f=e.url,g=c.resolveCssText(d[f],f,!0),g=this.flatten(g,b,d),a=a.replace(e.matched,g);return a},loadStyles:function(a,b,c){function d(){f++,f===g&&c&&c()}for(var e,f=0,g=a.length,h=0;g>h&&(e=a[h]);h++)this.resolveNode(e,b,d)}};var e=new b;a.styleResolver=e}(Polymer),function(a){function b(a,b){return a&&b&&Object.getOwnPropertyNames(b).forEach(function(c){var d=Object.getOwnPropertyDescriptor(b,c);d&&(Object.defineProperty(a,c,d),"function"==typeof d.value&&(d.value.nom=c))}),a}function c(a){for(var b=a||{},c=1;c<arguments.length;c++){var e=arguments[c];try{for(var f in e)d(f,e,b)}catch(g){}}return b}function d(a,b,c){var d=e(b,a);Object.defineProperty(c,a,d)}function e(a,b){if(a){var c=Object.getOwnPropertyDescriptor(a,b);return c||e(Object.getPrototypeOf(a),b)}}a.extend=b,a.mixin=c,Platform.mixin=c}(Polymer),function(a){function b(a,b,d){return a?a.stop():a=new c(this),a.go(b,d),a}var c=function(a){this.context=a,this.boundComplete=this.complete.bind(this)};c.prototype={go:function(a,b){this.callback=a;var c;b?(c=setTimeout(this.boundComplete,b),this.handle=function(){clearTimeout(c)}):(c=requestAnimationFrame(this.boundComplete),this.handle=function(){cancelAnimationFrame(c)})},stop:function(){this.handle&&(this.handle(),this.handle=null)},complete:function(){this.handle&&(this.stop(),this.callback.call(this.context))}},a.job=b}(Polymer),function(a){function b(a,b,c){var d="string"==typeof a?document.createElement(a):a.cloneNode(!0);if(d.innerHTML=b,c)for(var e in c)d.setAttribute(e,c[e]);return d}var c={};HTMLElement.register=function(a,b){c[a]=b},HTMLElement.getPrototypeForTag=function(a){var b=a?c[a]:HTMLElement.prototype;return b||Object.getPrototypeOf(document.createElement(a))};var d=Event.prototype.stopPropagation;Event.prototype.stopPropagation=function(){this.cancelBubble=!0,d.apply(this,arguments)};var e=DOMTokenList.prototype.add,f=DOMTokenList.prototype.remove;DOMTokenList.prototype.add=function(){for(var a=0;a<arguments.length;a++)e.call(this,arguments[a])},DOMTokenList.prototype.remove=function(){for(var a=0;a<arguments.length;a++)f.call(this,arguments[a])},DOMTokenList.prototype.toggle=function(a,b){1==arguments.length&&(b=!this.contains(a)),b?this.add(a):this.remove(a)},DOMTokenList.prototype.switch=function(a,b){a&&this.remove(a),b&&this.add(b)};var g=function(){return Array.prototype.slice.call(this)},h=window.NamedNodeMap||window.MozNamedAttrMap||{};NodeList.prototype.array=g,h.prototype.array=g,HTMLCollection.prototype.array=g,a.createDOM=b}(Polymer),function(a){function b(a){var e=b.caller,g=e.nom,h=e._super;h||(g||(g=e.nom=c.call(this,e)),g||console.warn("called super() on a method not installed declaratively (has no .nom property)"),h=d(e,g,f(this)));var i=h[g];return i?(i._super||d(i,g,h),i.apply(this,a||[])):void 0}function c(a){for(var b=this.__proto__;b&&b!==HTMLElement.prototype;){for(var c,d=Object.getOwnPropertyNames(b),e=0,f=d.length;f>e&&(c=d[e]);e++){var g=Object.getOwnPropertyDescriptor(b,c);if("function"==typeof g.value&&g.value===a)return c}b=b.__proto__}}function d(a,b,c){var d=e(c,b,a);return d[b]&&(d[b].nom=b),a._super=d}function e(a,b,c){for(;a;){if(a[b]!==c&&a[b])return a;a=f(a)}return Object}function f(a){return a.__proto__}a.super=b}(Polymer),function(a){function b(a){return a}function c(a,b){var c=typeof b;return b instanceof Date&&(c="date"),d[c](a,b)}var d={string:b,undefined:b,date:function(a){return new Date(Date.parse(a)||Date.now())},"boolean":function(a){return""===a?!0:"false"===a?!1:!!a},number:function(a){var b=parseFloat(a);return 0===b&&(b=parseInt(a)),isNaN(b)?a:b},object:function(a,b){if(null===b)return a;try{return JSON.parse(a.replace(/'/g,'"'))}catch(c){return a}},"function":function(a,b){return b}};a.deserializeValue=c}(Polymer),function(a){var b=a.extend,c={};c.declaration={},c.instance={},c.publish=function(a,c){for(var d in a)b(c,a[d])},a.api=c}(Polymer),function(a){var b={async:function(a,b,c){Platform.flush(),b=b&&b.length?b:[b];var d=function(){(this[a]||a).apply(this,b)}.bind(this),e=c?setTimeout(d,c):requestAnimationFrame(d);return c?e:~e},cancelAsync:function(a){0>a?cancelAnimationFrame(~a):clearTimeout(a)},fire:function(a,b,c,d,e){var f=c||this,b=null===b||void 0===b?{}:b,g=new CustomEvent(a,{bubbles:void 0!==d?d:!0,cancelable:void 0!==e?e:!0,detail:b});return f.dispatchEvent(g),g},asyncFire:function(){this.async("fire",arguments)},classFollows:function(a,b,c){b&&b.classList.remove(c),a&&a.classList.add(c)},injectBoundHTML:function(a,b){var c=document.createElement("template");c.innerHTML=a;var d=this.instanceTemplate(c);return b&&(b.textContent="",b.appendChild(d)),d}},c=function(){},d={};b.asyncMethod=b.async,a.api.instance.utils=b,a.nop=c,a.nob=d}(Polymer),function(a){var b=window.logFlags||{},c="on-",d={EVENT_PREFIX:c,addHostListeners:function(){var a=this.eventDelegates;b.events&&Object.keys(a).length>0&&console.log("[%s] addHostListeners:",this.localName,a);for(var c in a){var d=a[c];PolymerGestures.addEventListener(this,c,this.element.getEventHandler(this,this,d))}},dispatchMethod:function(a,c,d){if(a){b.events&&console.group("[%s] dispatch [%s]",a.localName,c);var e="function"==typeof c?c:a[c];e&&e[d?"apply":"call"](a,d),b.events&&console.groupEnd(),Platform.flush()}}};a.api.instance.events=d,a.addEventListener=function(a,b,c,d){PolymerGestures.addEventListener(wrap(a),b,c,d)},a.removeEventListener=function(a,b,c,d){PolymerGestures.removeEventListener(wrap(a),b,c,d)}}(Polymer),function(a){var b={copyInstanceAttributes:function(){var a=this._instanceAttributes;for(var b in a)this.hasAttribute(b)||this.setAttribute(b,a[b])},takeAttributes:function(){if(this._publishLC)for(var a,b=0,c=this.attributes,d=c.length;(a=c[b])&&d>b;b++)this.attributeToProperty(a.name,a.value)},attributeToProperty:function(b,c){var b=this.propertyForAttribute(b);if(b){if(c&&c.search(a.bindPattern)>=0)return;var d=this[b],c=this.deserializeValue(c,d);c!==d&&(this[b]=c)}},propertyForAttribute:function(a){var b=this._publishLC&&this._publishLC[a];return b},deserializeValue:function(b,c){return a.deserializeValue(b,c)},serializeValue:function(a,b){return"boolean"===b?a?"":void 0:"object"!==b&&"function"!==b&&void 0!==a?a:void 0},reflectPropertyToAttribute:function(a){var b=typeof this[a],c=this.serializeValue(this[a],b);void 0!==c?this.setAttribute(a,c):"boolean"===b&&this.removeAttribute(a)}};a.api.instance.attributes=b}(Polymer),function(a){function b(a,b){return a===b?0!==a||1/a===1/b:f(a)&&f(b)?!0:a!==a&&b!==b}function c(a,b){return void 0===b&&null===a?b:null===b||void 0===b?a:b}var d=window.logFlags||{},e={object:void 0,type:"update",name:void 0,oldValue:void 0},f=Number.isNaN||function(a){return"number"==typeof a&&isNaN(a)},g={createPropertyObserver:function(){var a=this._observeNames;if(a&&a.length){var b=this._propertyObserver=new CompoundObserver(!0);this.registerObserver(b);for(var c,d=0,e=a.length;e>d&&(c=a[d]);d++)b.addPath(this,c),this.observeArrayValue(c,this[c],null)}},openPropertyObserver:function(){this._propertyObserver&&this._propertyObserver.open(this.notifyPropertyChanges,this)},notifyPropertyChanges:function(a,b,c){var d,e,f={};for(var g in b)if(d=c[2*g+1],e=this.observe[d]){var h=b[g],i=a[g];this.observeArrayValue(d,i,h),f[e]||(void 0!==h&&null!==h||void 0!==i&&null!==i)&&(f[e]=!0,this.invokeMethod(e,[h,i,arguments]))}},deliverChanges:function(){this._propertyObserver&&this._propertyObserver.deliver()},propertyChanged_:function(a){this.reflect[a]&&this.reflectPropertyToAttribute(a)},observeArrayValue:function(a,b,c){var e=this.observe[a];if(e&&(Array.isArray(c)&&(d.observe&&console.log("[%s] observeArrayValue: unregister observer [%s]",this.localName,a),this.closeNamedObserver(a+"__array")),Array.isArray(b))){d.observe&&console.log("[%s] observeArrayValue: register observer [%s]",this.localName,a,b);var f=new ArrayObserver(b);f.open(function(a){this.invokeMethod(e,[a])},this),this.registerNamedObserver(a+"__array",f)}},emitPropertyChangeRecord:function(a,c,d){if(!b(c,d)&&(this.propertyChanged_(a,c,d),Observer.hasObjectObserve)){var f=this.notifier_;f||(f=this.notifier_=Object.getNotifier(this)),e.object=this,e.name=a,e.oldValue=d,f.notify(e)}},bindToAccessor:function(a,c,d){function e(b,c){j[f]=b;var d=j[h];d&&"function"==typeof d.setValue&&d.setValue(b),j.emitPropertyChangeRecord(a,b,c)}var f=a+"_",g=a+"Observable_",h=a+"ComputedBoundObservable_";this[g]=c;var i=this[f],j=this,k=c.open(e);if(d&&!b(i,k)){var l=d(i,k);b(k,l)||(k=l,c.setValue&&c.setValue(k))}e(k,i);var m={close:function(){c.close(),j[g]=void 0,j[h]=void 0}};return this.registerObserver(m),m},createComputedProperties:function(){if(this._computedNames)for(var a=0;a<this._computedNames.length;a++){var b=this._computedNames[a],c=this.computed[b];try{var d=PolymerExpressions.getExpression(c),e=d.getBinding(this,this.element.syntax);this.bindToAccessor(b,e)}catch(f){console.error("Failed to create computed property",f)}}},bindProperty:function(a,b,d){if(d)return void(this[a]=b);var e=this.element.prototype.computed;if(e&&e[a]){var f=a+"ComputedBoundObservable_";return void(this[f]=b)}return this.bindToAccessor(a,b,c)},invokeMethod:function(a,b){var c=this[a]||a;"function"==typeof c&&c.apply(this,b)},registerObserver:function(a){return this._observers?void this._observers.push(a):void(this._observers=[a])},closeObservers:function(){if(this._observers){for(var a=this._observers,b=0;b<a.length;b++){var c=a[b];c&&"function"==typeof c.close&&c.close()}this._observers=[]}},registerNamedObserver:function(a,b){var c=this._namedObservers||(this._namedObservers={});c[a]=b},closeNamedObserver:function(a){var b=this._namedObservers;return b&&b[a]?(b[a].close(),b[a]=null,!0):void 0},closeNamedObservers:function(){if(this._namedObservers){for(var a in this._namedObservers)this.closeNamedObserver(a);this._namedObservers={}}}};a.api.instance.properties=g}(Polymer),function(a){var b=window.logFlags||0,c={instanceTemplate:function(a){HTMLTemplateElement.decorate(a);for(var b=this.syntax||!a.bindingDelegate&&this.element.syntax,c=a.createInstance(this,b),d=c.bindings_,e=0;e<d.length;e++)this.registerObserver(d[e]);return c},bind:function(a,b,c){var d=this.propertyForAttribute(a);if(d){var e=this.bindProperty(d,b,c);return Platform.enableBindingsReflection&&e&&(e.path=b.path_,this._recordBinding(d,e)),this.reflect[d]&&this.reflectPropertyToAttribute(d),e}return this.mixinSuper(arguments)},bindFinished:function(){this.makeElementReady()},_recordBinding:function(a,b){this.bindings_=this.bindings_||{},this.bindings_[a]=b},asyncUnbindAll:function(){this._unbound||(b.unbind&&console.log("[%s] asyncUnbindAll",this.localName),this._unbindAllJob=this.job(this._unbindAllJob,this.unbindAll,0))},unbindAll:function(){this._unbound||(this.closeObservers(),this.closeNamedObservers(),this._unbound=!0)},cancelUnbindAll:function(){return this._unbound?void(b.unbind&&console.warn("[%s] already unbound, cannot cancel unbindAll",this.localName)):(b.unbind&&console.log("[%s] cancelUnbindAll",this.localName),void(this._unbindAllJob&&(this._unbindAllJob=this._unbindAllJob.stop())))}},d=/\{\{([^{}]*)}}/;a.bindPattern=d,a.api.instance.mdv=c}(Polymer),function(a){function b(a){return a.hasOwnProperty("PolymerBase")}function c(){}var d={PolymerBase:!0,job:function(a,b,c){if("string"!=typeof a)return Polymer.job.call(this,a,b,c);var d="___"+a;this[d]=Polymer.job.call(this,this[d],b,c)},"super":Polymer.super,created:function(){},ready:function(){},createdCallback:function(){this.templateInstance&&this.templateInstance.model&&console.warn("Attributes on "+this.localName+" were data bound prior to Polymer upgrading the element. This may result in incorrect binding types."),this.created(),this.prepareElement(),this.ownerDocument.isStagingDocument||this.makeElementReady()},prepareElement:function(){return this._elementPrepared?void console.warn("Element already prepared",this.localName):(this._elementPrepared=!0,this.shadowRoots={},this.createPropertyObserver(),this.openPropertyObserver(),this.copyInstanceAttributes(),this.takeAttributes(),void this.addHostListeners())},makeElementReady:function(){this._readied||(this._readied=!0,this.createComputedProperties(),this.parseDeclarations(this.__proto__),this.removeAttribute("unresolved"),this.ready())},attachedCallback:function(){this.cancelUnbindAll(),this.attached&&this.attached(),this.enteredView&&this.enteredView(),this.hasBeenAttached||(this.hasBeenAttached=!0,this.domReady&&this.async("domReady"))},detachedCallback:function(){this.preventDispose||this.asyncUnbindAll(),this.detached&&this.detached(),this.leftView&&this.leftView()},enteredViewCallback:function(){this.attachedCallback()},leftViewCallback:function(){this.detachedCallback()},enteredDocumentCallback:function(){this.attachedCallback()},leftDocumentCallback:function(){this.detachedCallback()},parseDeclarations:function(a){a&&a.element&&(this.parseDeclarations(a.__proto__),a.parseDeclaration.call(this,a.element))},parseDeclaration:function(a){var b=this.fetchTemplate(a);if(b){var c=this.shadowFromTemplate(b);this.shadowRoots[a.name]=c}},fetchTemplate:function(a){return a.querySelector("template")},shadowFromTemplate:function(a){if(a){var b=this.createShadowRoot(),c=this.instanceTemplate(a);return b.appendChild(c),this.shadowRootReady(b,a),b}},lightFromTemplate:function(a,b){if(a){this.eventController=this;var c=this.instanceTemplate(a);return b?this.insertBefore(c,b):this.appendChild(c),this.shadowRootReady(this),c}},shadowRootReady:function(a){this.marshalNodeReferences(a)},marshalNodeReferences:function(a){var b=this.$=this.$||{};if(a)for(var c,d=a.querySelectorAll("[id]"),e=0,f=d.length;f>e&&(c=d[e]);e++)b[c.id]=c},attributeChangedCallback:function(a){"class"!==a&&"style"!==a&&this.attributeToProperty(a,this.getAttribute(a)),this.attributeChanged&&this.attributeChanged.apply(this,arguments)},onMutation:function(a,b){var c=new MutationObserver(function(a){b.call(this,c,a),c.disconnect()}.bind(this));c.observe(a,{childList:!0,subtree:!0})}};c.prototype=d,d.constructor=c,a.Base=c,a.isBase=b,a.api.instance.base=d}(Polymer),function(a){function b(a){return a.__proto__}function c(a,b){var c="",d=!1;b&&(c=b.localName,d=b.hasAttribute("is"));var e=Platform.ShadowCSS.makeScopeSelector(c,d);return Platform.ShadowCSS.shimCssText(a,e)}var d=(window.logFlags||{},window.ShadowDOMPolyfill),e="element",f="controller",g={STYLE_SCOPE_ATTRIBUTE:e,installControllerStyles:function(){var a=this.findStyleScope();if(a&&!this.scopeHasNamedStyle(a,this.localName)){for(var c=b(this),d="";c&&c.element;)d+=c.element.cssTextForScope(f),c=b(c);d&&this.installScopeCssText(d,a)}},installScopeStyle:function(a,b,c){var c=c||this.findStyleScope(),b=b||"";if(c&&!this.scopeHasNamedStyle(c,this.localName+b)){var d="";if(a instanceof Array)for(var e,f=0,g=a.length;g>f&&(e=a[f]);f++)d+=e.textContent+"\n\n";else d=a.textContent;this.installScopeCssText(d,c,b)}},installScopeCssText:function(a,b,e){if(b=b||this.findStyleScope(),e=e||"",b){d&&(a=c(a,b.host));var g=this.element.cssTextToScopeStyle(a,f);Polymer.applyStyleToScope(g,b),this.styleCacheForScope(b)[this.localName+e]=!0}},findStyleScope:function(a){for(var b=a||this;b.parentNode;)b=b.parentNode;return b},scopeHasNamedStyle:function(a,b){var c=this.styleCacheForScope(a);
return c[b]},styleCacheForScope:function(a){if(d){var b=a.host?a.host.localName:a.localName;return h[b]||(h[b]={})}return a._scopeStyles=a._scopeStyles||{}}},h={};a.api.instance.styles=g}(Polymer),function(a){function b(a,b){if("string"!=typeof a){var c=b||document._currentScript;if(b=a,a=c&&c.parentNode&&c.parentNode.getAttribute?c.parentNode.getAttribute("name"):"",!a)throw"Element name could not be inferred."}if(f[a])throw"Already registered (Polymer) prototype for element "+a;e(a,b),d(a)}function c(a,b){i[a]=b}function d(a){i[a]&&(i[a].registerWhenReady(),delete i[a])}function e(a,b){return j[a]=b||{}}function f(a){return j[a]}function g(a,b){if("string"!=typeof b)return!1;var c=HTMLElement.getPrototypeForTag(b),d=c&&c.constructor;return d?CustomElements.instanceof?CustomElements.instanceof(a,d):a instanceof d:!1}var h=a.extend,i=(a.api,{}),j={};a.getRegisteredPrototype=f,a.waitingForPrototype=c,a.instanceOfType=g,window.Polymer=b,h(Polymer,a),Platform.consumeDeclarations&&Platform.consumeDeclarations(function(a){if(a)for(var c,d=0,e=a.length;e>d&&(c=a[d]);d++)b.apply(null,c)})}(Polymer),function(a){var b={resolveElementPaths:function(a){Polymer.urlResolver.resolveDom(a)},addResolvePathApi:function(){var a=this.getAttribute("assetpath")||"",b=new URL(a,this.ownerDocument.baseURI);this.prototype.resolvePath=function(a,c){var d=new URL(a,c||b);return d.href}}};a.api.declaration.path=b}(Polymer),function(a){function b(a,b){var c=new URL(a.getAttribute("href"),b).href;return"@import '"+c+"';"}function c(a,b){if(a){b===document&&(b=document.head),i&&(b=document.head);var c=d(a.textContent),e=a.getAttribute(h);e&&c.setAttribute(h,e);var f=b.firstElementChild;if(b===document.head){var g="style["+h+"]",j=document.head.querySelectorAll(g);j.length&&(f=j[j.length-1].nextElementSibling)}b.insertBefore(c,f)}}function d(a,b){b=b||document,b=b.createElement?b:b.ownerDocument;var c=b.createElement("style");return c.textContent=a,c}function e(a){return a&&a.__resource||""}function f(a,b){return q?q.call(a,b):void 0}var g=(window.logFlags||{},a.api.instance.styles),h=g.STYLE_SCOPE_ATTRIBUTE,i=window.ShadowDOMPolyfill,j="style",k="@import",l="link[rel=stylesheet]",m="global",n="polymer-scope",o={loadStyles:function(a){var b=this.fetchTemplate(),c=b&&this.templateContent();if(c){this.convertSheetsToStyles(c);var d=this.findLoadableStyles(c);if(d.length){var e=b.ownerDocument.baseURI;return Polymer.styleResolver.loadStyles(d,e,a)}}a&&a()},convertSheetsToStyles:function(a){for(var c,e,f=a.querySelectorAll(l),g=0,h=f.length;h>g&&(c=f[g]);g++)e=d(b(c,this.ownerDocument.baseURI),this.ownerDocument),this.copySheetAttributes(e,c),c.parentNode.replaceChild(e,c)},copySheetAttributes:function(a,b){for(var c,d=0,e=b.attributes,f=e.length;(c=e[d])&&f>d;d++)"rel"!==c.name&&"href"!==c.name&&a.setAttribute(c.name,c.value)},findLoadableStyles:function(a){var b=[];if(a)for(var c,d=a.querySelectorAll(j),e=0,f=d.length;f>e&&(c=d[e]);e++)c.textContent.match(k)&&b.push(c);return b},installSheets:function(){this.cacheSheets(),this.cacheStyles(),this.installLocalSheets(),this.installGlobalStyles()},cacheSheets:function(){this.sheets=this.findNodes(l),this.sheets.forEach(function(a){a.parentNode&&a.parentNode.removeChild(a)})},cacheStyles:function(){this.styles=this.findNodes(j+"["+n+"]"),this.styles.forEach(function(a){a.parentNode&&a.parentNode.removeChild(a)})},installLocalSheets:function(){var a=this.sheets.filter(function(a){return!a.hasAttribute(n)}),b=this.templateContent();if(b){var c="";if(a.forEach(function(a){c+=e(a)+"\n"}),c){var f=d(c,this.ownerDocument);b.insertBefore(f,b.firstChild)}}},findNodes:function(a,b){var c=this.querySelectorAll(a).array(),d=this.templateContent();if(d){var e=d.querySelectorAll(a).array();c=c.concat(e)}return b?c.filter(b):c},installGlobalStyles:function(){var a=this.styleForScope(m);c(a,document.head)},cssTextForScope:function(a){var b="",c="["+n+"="+a+"]",d=function(a){return f(a,c)},g=this.sheets.filter(d);g.forEach(function(a){b+=e(a)+"\n\n"});var h=this.styles.filter(d);return h.forEach(function(a){b+=a.textContent+"\n\n"}),b},styleForScope:function(a){var b=this.cssTextForScope(a);return this.cssTextToScopeStyle(b,a)},cssTextToScopeStyle:function(a,b){if(a){var c=d(a);return c.setAttribute(h,this.getAttribute("name")+"-"+b),c}}},p=HTMLElement.prototype,q=p.matches||p.matchesSelector||p.webkitMatchesSelector||p.mozMatchesSelector;a.api.declaration.styles=o,a.applyStyleToScope=c}(Polymer),function(a){var b=(window.logFlags||{},a.api.instance.events),c=b.EVENT_PREFIX,d={};["webkitAnimationStart","webkitAnimationEnd","webkitTransitionEnd","DOMFocusOut","DOMFocusIn","DOMMouseScroll"].forEach(function(a){d[a.toLowerCase()]=a});var e={parseHostEvents:function(){var a=this.prototype.eventDelegates;this.addAttributeDelegates(a)},addAttributeDelegates:function(a){for(var b,c=0;b=this.attributes[c];c++)this.hasEventPrefix(b.name)&&(a[this.removeEventPrefix(b.name)]=b.value.replace("{{","").replace("}}","").trim())},hasEventPrefix:function(a){return a&&"o"===a[0]&&"n"===a[1]&&"-"===a[2]},removeEventPrefix:function(a){return a.slice(f)},findController:function(a){for(;a.parentNode;){if(a.eventController)return a.eventController;a=a.parentNode}return a.host},getEventHandler:function(a,b,c){var d=this;return function(e){a&&a.PolymerBase||(a=d.findController(b));var f=[e,e.detail,e.currentTarget];a.dispatchMethod(a,c,f)}},prepareEventBinding:function(a,b){if(this.hasEventPrefix(b)){var c=this.removeEventPrefix(b);c=d[c]||c;var e=this;return function(b,d,f){function g(){return"{{ "+a+" }}"}var h=e.getEventHandler(void 0,d,a);return PolymerGestures.addEventListener(d,c,h),f?void 0:{open:g,discardChanges:g,close:function(){PolymerGestures.removeEventListener(d,c,h)}}}}}},f=c.length;a.api.declaration.events=e}(Polymer),function(a){var b={inferObservers:function(a){var b,c=a.observe;for(var d in a)"Changed"===d.slice(-7)&&(c||(c=a.observe={}),b=d.slice(0,-7),c[b]=c[b]||d)},explodeObservers:function(a){var b=a.observe;if(b){var c={};for(var d in b)for(var e,f=d.split(" "),g=0;e=f[g];g++)c[e]=b[d];a.observe=c}},optimizePropertyMaps:function(a){if(a.observe){var b=a._observeNames=[];for(var c in a.observe)for(var d,e=c.split(" "),f=0;d=e[f];f++)b.push(d)}if(a.publish){var b=a._publishNames=[];for(var c in a.publish)b.push(c)}if(a.computed){var b=a._computedNames=[];for(var c in a.computed)b.push(c)}},publishProperties:function(a,b){var c=a.publish;c&&(this.requireProperties(c,a,b),a._publishLC=this.lowerCaseMap(c))},requireProperties:function(a,b){b.reflect=b.reflect||{};for(var c in a){var d=a[c];d&&void 0!==d.reflect&&(b.reflect[c]=Boolean(d.reflect),d=d.value),void 0!==d&&(b[c]=d)}},lowerCaseMap:function(a){var b={};for(var c in a)b[c.toLowerCase()]=c;return b},createPropertyAccessor:function(a,b){var c=this.prototype,d=a+"_",e=a+"Observable_";c[d]=c[a],Object.defineProperty(c,a,{get:function(){var a=this[e];return a&&a.deliver(),this[d]},set:function(c){if(b)return this[d];var f=this[e];if(f)return void f.setValue(c);var g=this[d];return this[d]=c,this.emitPropertyChangeRecord(a,c,g),c},configurable:!0})},createPropertyAccessors:function(a){var b=a._computedNames;if(b&&b.length)for(var c,d=0,e=b.length;e>d&&(c=b[d]);d++)this.createPropertyAccessor(c,!0);var b=a._publishNames;if(b&&b.length)for(var c,d=0,e=b.length;e>d&&(c=b[d]);d++)a.computed&&a.computed[c]||this.createPropertyAccessor(c)}};a.api.declaration.properties=b}(Polymer),function(a){var b="attributes",c=/\s|,/,d={inheritAttributesObjects:function(a){this.inheritObject(a,"publishLC"),this.inheritObject(a,"_instanceAttributes")},publishAttributes:function(a){var d=this.getAttribute(b);if(d)for(var e,f=a.publish||(a.publish={}),g=d.split(c),h=0,i=g.length;i>h;h++)e=g[h].trim(),e&&void 0===f[e]&&(f[e]=void 0)},accumulateInstanceAttributes:function(){for(var a,b=this.prototype._instanceAttributes,c=this.attributes,d=0,e=c.length;e>d&&(a=c[d]);d++)this.isInstanceAttribute(a.name)&&(b[a.name]=a.value)},isInstanceAttribute:function(a){return!this.blackList[a]&&"on-"!==a.slice(0,3)},blackList:{name:1,"extends":1,constructor:1,noscript:1,assetpath:1,"cache-csstext":1}};d.blackList[b]=1,a.api.declaration.attributes=d}(Polymer),function(a){var b=a.api.declaration.events,c=new PolymerExpressions,d=c.prepareBinding;c.prepareBinding=function(a,e,f){return b.prepareEventBinding(a,e,f)||d.call(c,a,e,f)};var e={syntax:c,fetchTemplate:function(){return this.querySelector("template")},templateContent:function(){var a=this.fetchTemplate();return a&&a.content},installBindingDelegate:function(a){a&&(a.bindingDelegate=this.syntax)}};a.api.declaration.mdv=e}(Polymer),function(a){function b(a){if(!Object.__proto__){var b=Object.getPrototypeOf(a);a.__proto__=b,d(b)&&(b.__proto__=Object.getPrototypeOf(b))}}var c=a.api,d=a.isBase,e=a.extend,f=window.ShadowDOMPolyfill,g={register:function(a,b){this.buildPrototype(a,b),this.registerPrototype(a,b),this.publishConstructor()},buildPrototype:function(b,c){var d=a.getRegisteredPrototype(b),e=this.generateBasePrototype(c);this.desugarBeforeChaining(d,e),this.prototype=this.chainPrototypes(d,e),this.desugarAfterChaining(b,c)},desugarBeforeChaining:function(a,b){a.element=this,this.publishAttributes(a,b),this.publishProperties(a,b),this.inferObservers(a),this.explodeObservers(a)},chainPrototypes:function(a,c){this.inheritMetaData(a,c);var d=this.chainObject(a,c);return b(d),d},inheritMetaData:function(a,b){this.inheritObject("observe",a,b),this.inheritObject("publish",a,b),this.inheritObject("reflect",a,b),this.inheritObject("_publishLC",a,b),this.inheritObject("_instanceAttributes",a,b),this.inheritObject("eventDelegates",a,b)},desugarAfterChaining:function(a,b){this.optimizePropertyMaps(this.prototype),this.createPropertyAccessors(this.prototype),this.installBindingDelegate(this.fetchTemplate()),this.installSheets(),this.resolveElementPaths(this),this.accumulateInstanceAttributes(),this.parseHostEvents(),this.addResolvePathApi(),f&&Platform.ShadowCSS.shimStyling(this.templateContent(),a,b),this.prototype.registerCallback&&this.prototype.registerCallback(this)},publishConstructor:function(){var a=this.getAttribute("constructor");a&&(window[a]=this.ctor)},generateBasePrototype:function(a){var b=this.findBasePrototype(a);if(!b){var b=HTMLElement.getPrototypeForTag(a);b=this.ensureBaseApi(b),h[a]=b}return b},findBasePrototype:function(a){return h[a]},ensureBaseApi:function(a){if(a.PolymerBase)return a;var b=Object.create(a);return c.publish(c.instance,b),this.mixinMethod(b,a,c.instance.mdv,"bind"),b},mixinMethod:function(a,b,c,d){var e=function(a){return b[d].apply(this,a)};a[d]=function(){return this.mixinSuper=e,c[d].apply(this,arguments)}},inheritObject:function(a,b,c){var d=b[a]||{};b[a]=this.chainObject(d,c[a])},registerPrototype:function(a,b){var c={prototype:this.prototype},d=this.findTypeExtension(b);d&&(c.extends=d),HTMLElement.register(a,this.prototype),this.ctor=document.registerElement(a,c)},findTypeExtension:function(a){if(a&&a.indexOf("-")<0)return a;var b=this.findBasePrototype(a);return b.element?this.findTypeExtension(b.element.extends):void 0}},h={};g.chainObject=Object.__proto__?function(a,b){return a&&b&&a!==b&&(a.__proto__=b),a}:function(a,b){if(a&&b&&a!==b){var c=Object.create(b);a=e(c,a)}return a},c.declaration.prototype=g}(Polymer),function(a){function b(a){return document.contains(a)?j:i}function c(){return i.length?i[0]:j[0]}function d(a){f.waitToReady=!0,Platform.endOfMicrotask(function(){HTMLImports.whenImportsReady(function(){f.addReadyCallback(a),f.waitToReady=!1,f.check()})})}function e(a){if(void 0===a)return void f.ready();var b=setTimeout(function(){f.ready()},a);Polymer.whenReady(function(){clearTimeout(b)})}var f={wait:function(a){a.__queue||(a.__queue={},g.push(a))},enqueue:function(a,c,d){var e=a.__queue&&!a.__queue.check;return e&&(b(a).push(a),a.__queue.check=c,a.__queue.go=d),0!==this.indexOf(a)},indexOf:function(a){var c=b(a).indexOf(a);return c>=0&&document.contains(a)&&(c+=HTMLImports.useNative||HTMLImports.ready?i.length:1e9),c},go:function(a){var b=this.remove(a);b&&(a.__queue.flushable=!0,this.addToFlushQueue(b),this.check())},remove:function(a){var c=this.indexOf(a);if(0===c)return b(a).shift()},check:function(){var a=this.nextElement();return a&&a.__queue.check.call(a),this.canReady()?(this.ready(),!0):void 0},nextElement:function(){return c()},canReady:function(){return!this.waitToReady&&this.isEmpty()},isEmpty:function(){for(var a,b=0,c=g.length;c>b&&(a=g[b]);b++)if(a.__queue&&!a.__queue.flushable)return;return!0},addToFlushQueue:function(a){h.push(a)},flush:function(){if(!this.flushing){this.flushing=!0;for(var a;h.length;)a=h.shift(),a.__queue.go.call(a),a.__queue=null;this.flushing=!1}},ready:function(){var a=CustomElements.ready;CustomElements.ready=!1,this.flush(),CustomElements.useNative||CustomElements.upgradeDocumentTree(document),CustomElements.ready=a,Platform.flush(),requestAnimationFrame(this.flushReadyCallbacks)},addReadyCallback:function(a){a&&k.push(a)},flushReadyCallbacks:function(){if(k)for(var a;k.length;)(a=k.shift())()},waitingFor:function(){for(var a,b=[],c=0,d=g.length;d>c&&(a=g[c]);c++)a.__queue&&!a.__queue.flushable&&b.push(a);return b},waitToReady:!0},g=[],h=[],i=[],j=[],k=[];a.elements=g,a.waitingFor=f.waitingFor.bind(f),a.forceReady=e,a.queue=f,a.whenReady=a.whenPolymerReady=d}(Polymer),function(a){function b(a){return Boolean(HTMLElement.getPrototypeForTag(a))}function c(a){return a&&a.indexOf("-")>=0}var d=a.extend,e=a.api,f=a.queue,g=a.whenReady,h=a.getRegisteredPrototype,i=a.waitingForPrototype,j=d(Object.create(HTMLElement.prototype),{createdCallback:function(){this.getAttribute("name")&&this.init()},init:function(){this.name=this.getAttribute("name"),this.extends=this.getAttribute("extends"),f.wait(this),this.loadResources(),this.registerWhenReady()},registerWhenReady:function(){this.registered||this.waitingForPrototype(this.name)||this.waitingForQueue()||this.waitingForResources()||f.go(this)},_register:function(){c(this.extends)&&!b(this.extends)&&console.warn("%s is attempting to extend %s, an unregistered element or one that was not registered with Polymer.",this.name,this.extends),this.register(this.name,this.extends),this.registered=!0},waitingForPrototype:function(a){return h(a)?void 0:(i(a,this),this.handleNoScript(a),!0)},handleNoScript:function(a){this.hasAttribute("noscript")&&!this.noscript&&(this.noscript=!0,Polymer(a))},waitingForResources:function(){return this._needsResources},waitingForQueue:function(){return f.enqueue(this,this.registerWhenReady,this._register)},loadResources:function(){this._needsResources=!0,this.loadStyles(function(){this._needsResources=!1,this.registerWhenReady()}.bind(this))}});e.publish(e.declaration,j),g(function(){document.body.removeAttribute("unresolved"),document.dispatchEvent(new CustomEvent("polymer-ready",{bubbles:!0}))}),document.registerElement("polymer-element",{prototype:j})}(Polymer),function(a){function b(a,b){a?(document.head.appendChild(a),d(b)):b&&b()}function c(a,c){if(a&&a.length){for(var d,e,f=document.createDocumentFragment(),g=0,h=a.length;h>g&&(d=a[g]);g++)e=document.createElement("link"),e.rel="import",e.href=d,f.appendChild(e);b(f,c)}else c&&c()}var d=a.whenPolymerReady;a.import=c,a.importElements=b}(Polymer),function(){var a=document.createElement("polymer-element");a.setAttribute("name","auto-binding"),a.setAttribute("extends","template"),a.init(),Polymer("auto-binding",{createdCallback:function(){this.syntax=this.bindingDelegate=this.makeSyntax(),Polymer.whenPolymerReady(function(){this.model=this,this.setAttribute("bind",""),this.async(function(){this.marshalNodeReferences(this.parentNode),this.fire("template-bound")})}.bind(this))},makeSyntax:function(){var a=Object.create(Polymer.api.declaration.events),b=this;a.findController=function(){return b.model};var c=new PolymerExpressions,d=c.prepareBinding;return c.prepareBinding=function(b,e,f){return a.prepareEventBinding(b,e,f)||d.call(c,b,e,f)},c}})}();
//# sourceMappingURL=polymer.js.map
window._TV_IS_COMPILED = true;
var global=this;
this.tv=function(){function d(){if(!a){var b=document.createElement("div");b.style.backgroundColor="white";b.style.border="3px solid red";b.style.boxSizing="border-box";b.style.color="black";b.style.display="-webkit-flex";b.style.height="100%";b.style.left=0;b.style.padding="8px";b.style.position="fixed";b.style.top=0;b.style.webkitFlexDirection="column";b.style.width="100%";a=document.createElement("div");a.style.webkitFlex="1 1 auto";a.style.overflow="auto";b.appendChild(a);document.body?document.body.appendChild(b):
setTimeout(function(){document.body.appendChild(b)},150)}}function c(b,e){e instanceof Error&&(e=e.stack);d();var c=document.createElement("div");c.innerHTML='<h2 id="message"></h2><pre id="details"></pre>';c.querySelector("#message").textContent=b;c.querySelector("#details").textContent=e;a.appendChild(c);f.push({title:b,details:e})}if(window.tv)return console.warn("Base was multiply initialized. First init wins."),window.tv;var a=void 0,f=[];return{initialize:function(){if(!window._TRACE_VIEWER_IS_COMPILED){var a=
parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1],10),f=window.navigator.appVersion.match("77.34.5");36>a&&!f&&c("Invalid Chrome version","A Chrome version of 36 or higher is required for trace-viewer development. Please upgrade your version of Chrome and try again.")}tv.doc=document;tv.isMac=/Mac/.test(navigator.platform);tv.isWindows=/Win/.test(navigator.platform);tv.isChromeOS=/CrOS/.test(navigator.userAgent);tv.isLinux=/Linux/.test(navigator.userAgent)},exportTo:function(a,f){var c;
c=a.split(".");for(var d=global,h;c.length&&(h=c.shift());)d=h in d?d[h]:d[h]={};c=d;var d=f(),l;for(l in d)(h=Object.getOwnPropertyDescriptor(d,l))&&Object.defineProperty(c,l,h)},isDefined:function(a,f){for(var c=a.split("."),d=f||global,h=0;h<c.length;h++)if(d=d[c[h]],void 0===d)return!1;return!0},showPanic:c,hasPanic:function(){return 0!==f.length},getPanicText:function(){return f.map(function(a){return a.title}).join(", ")}}}();tv.initialize();"use strict";
tv.exportTo("tv.b.ui",function(){return{decorate:function(d,c){var a;a="string"==typeof d?tv.doc.querySelectorAll(d):[d];for(var f=0,b;b=a[f];f++)b instanceof c||c.decorate(b)},define:function(d,c,a){function f(){if(c&&f.prototype.__proto__!=c.prototype)throw Error(d+" prototye's __proto__ field is messed up. It MUST be the prototype of "+c.tagName);var a;a=void 0===e?tv.doc.createElement(b):tv.doc.createElementNS(e,b);f.decorate.call(this,a,arguments);return a}if("function"==typeof d)throw Error("Passing functions as className is deprecated. Please use (className, opt_parentConstructor) to subclass");
d=d.toLowerCase();if(c&&!c.tagName)throw Error("opt_parentConstructor was not created by tv.b.ui.define");var b=d,e=void 0;if(c){if(a)throw Error("Must not specify tagNS if parentConstructor is given");for(a=c;a&&a.tagName;)b=a.tagName,e=a.tagNS,a=a.parentConstructor}else e=a;f.decorate=function(a,b){a.__proto__=f.prototype;a.decorate.apply(a,b);a.constructor=f};f.className=d;f.tagName=b;f.tagNS=e;f.parentConstructor=c?c:void 0;f.toString=function(){return f.parentConstructor?f.parentConstructor.toString()+
"::"+f.className:f.tagName};return f},elementIsChildOf:function(d,c){if(d==c)return!1;for(var a=d;a.parentNode;){if(a==c)return!0;a=a.parentNode}return!1}}});"use strict";
tv.exportTo("tv.b",function(){function d(a,b){if(a instanceof Object)if(a instanceof Array)for(var e=0;e<a.length;e++)b(a,e,a[e]),d(a[e],b);else for(e in a){var c=a[e];b(a,e,c);d(c,b)}}function c(a){return a}function a(a,b,e){b=b||c;for(var k=0;k<a.length;k++)if(b.call(e,a[k],k))return k;return-1}return{asArray:function(a){for(var b=[],e=0;e<a.length;e++)b.push(a[e]);return b},concatenateArrays:function(){for(var a=[],b=0;b<arguments.length;b++){if(!(arguments[b]instanceof Array))throw Error("Arguments "+
b+"is not an array");a.push.apply(a,arguments[b])}return a},concatenateObjects:function(){for(var a={},b=0;b<arguments.length;b++){var e=arguments[b],c;for(c in e)a[c]=e[c]}return a},compareArrays:function(a,b,e){for(var c=Math.min(a.length,b.length),d=0;d<c;d++){var h=e(a[d],b[d]);if(h)return h}return a.length==b.length?0:void 0===a[d]?-1:1},comparePossiblyUndefinedValues:function(a,b,e){return void 0!==a&&void 0!==b?e(a,b):void 0!==a?-1:void 0!==b?1:0},dictionaryLength:function(a){var b=0,e;for(e in a)b++;
return b},dictionaryKeys:function(a){var b=[],e;for(e in a)b.push(e);return b},dictionaryValues:function(a){var b=[],e;for(e in a)b.push(a[e]);return b},iterItems:function(a,b,e){e=e||this;for(var c in a)b.call(e,c,a[c])},iterObjectFieldsRecursively:d,findFirstIndexInArray:a,findFirstInArray:function(f,b,e){b=a(f,b,b);return-1===b?void 0:f[b]}}});
(function(){var d;"undefined"==typeof exports?"function"==typeof define&&"object"==typeof define.amd&&define.amd?(d={},define(function(){return d})):d=window:d=exports;(function(c){if(!a)var a=1E-6;if(!f)var f="undefined"!=typeof Float32Array?Float32Array:Array;var b={setMatrixArrayType:function(a){f=a}};"undefined"!=typeof c&&(c.glMatrix=b);var e={create:function(){var a=new f(2);return a[0]=0,a[1]=0,a},clone:function(a){var b=new f(2);return b[0]=a[0],b[1]=a[1],b},fromValues:function(a,b){var e=
new f(2);return e[0]=a,e[1]=b,e},copy:function(a,b){return a[0]=b[0],a[1]=b[1],a},set:function(a,b,e){return a[0]=b,a[1]=e,a},add:function(a,b,e){return a[0]=b[0]+e[0],a[1]=b[1]+e[1],a},subtract:function(a,b,e){return a[0]=b[0]-e[0],a[1]=b[1]-e[1],a}};e.sub=e.subtract;e.multiply=function(a,b,e){return a[0]=b[0]*e[0],a[1]=b[1]*e[1],a};e.mul=e.multiply;e.divide=function(a,b,e){return a[0]=b[0]/e[0],a[1]=b[1]/e[1],a};e.div=e.divide;e.min=function(a,b,e){return a[0]=Math.min(b[0],e[0]),a[1]=Math.min(b[1],
e[1]),a};e.max=function(a,b,e){return a[0]=Math.max(b[0],e[0]),a[1]=Math.max(b[1],e[1]),a};e.scale=function(a,b,e){return a[0]=b[0]*e,a[1]=b[1]*e,a};e.distance=function(a,b){var e=b[0]-a[0],f=b[1]-a[1];return Math.sqrt(e*e+f*f)};e.dist=e.distance;e.squaredDistance=function(a,b){var e=b[0]-a[0],f=b[1]-a[1];return e*e+f*f};e.sqrDist=e.squaredDistance;e.length=function(a){var b=a[0];a=a[1];return Math.sqrt(b*b+a*a)};e.len=e.length;e.squaredLength=function(a){var b=a[0];a=a[1];return b*b+a*a};e.sqrLen=
e.squaredLength;e.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a};e.normalize=function(a,b){var e=b[0],f=b[1],e=e*e+f*f;return 0<e&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e),a};e.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]};e.cross=function(a,b,e){b=b[0]*e[1]-b[1]*e[0];return a[0]=a[1]=0,a[2]=b,a};e.lerp=function(a,b,e,f){var c=b[0];b=b[1];return a[0]=c+f*(e[0]-c),a[1]=b+f*(e[1]-b),a};e.transformMat2=function(a,b,e){var f=b[0];b=b[1];return a[0]=e[0]*f+e[2]*b,a[1]=e[1]*f+e[3]*b,a};e.transformMat2d=
function(a,b,e){var f=b[0];b=b[1];return a[0]=e[0]*f+e[2]*b+e[4],a[1]=e[1]*f+e[3]*b+e[5],a};e.transformMat3=function(a,b,e){var f=b[0];b=b[1];return a[0]=e[0]*f+e[3]*b+e[6],a[1]=e[1]*f+e[4]*b+e[7],a};e.transformMat4=function(a,b,e){var f=b[0];b=b[1];return a[0]=e[0]*f+e[4]*b+e[12],a[1]=e[1]*f+e[5]*b+e[13],a};e.forEach=function(){var a=e.create();return function(b,e,f,c,k,d){var g;e||(e=2);f||(f=0);for(c?g=Math.min(c*e+f,b.length):g=b.length;f<g;f+=e)a[0]=b[f],a[1]=b[f+1],k(a,a,d),b[f]=a[0],b[f+1]=
a[1];return b}}();e.str=function(a){return"vec2("+a[0]+", "+a[1]+")"};"undefined"!=typeof c&&(c.vec2=e);var k={create:function(){var a=new f(3);return a[0]=0,a[1]=0,a[2]=0,a},clone:function(a){var b=new f(3);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b},fromValues:function(a,b,e){var c=new f(3);return c[0]=a,c[1]=b,c[2]=e,c},copy:function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a},set:function(a,b,e,f){return a[0]=b,a[1]=e,a[2]=f,a},add:function(a,b,e){return a[0]=b[0]+e[0],a[1]=b[1]+e[1],a[2]=b[2]+e[2],
a},subtract:function(a,b,e){return a[0]=b[0]-e[0],a[1]=b[1]-e[1],a[2]=b[2]-e[2],a}};k.sub=k.subtract;k.multiply=function(a,b,e){return a[0]=b[0]*e[0],a[1]=b[1]*e[1],a[2]=b[2]*e[2],a};k.mul=k.multiply;k.divide=function(a,b,e){return a[0]=b[0]/e[0],a[1]=b[1]/e[1],a[2]=b[2]/e[2],a};k.div=k.divide;k.min=function(a,b,e){return a[0]=Math.min(b[0],e[0]),a[1]=Math.min(b[1],e[1]),a[2]=Math.min(b[2],e[2]),a};k.max=function(a,b,e){return a[0]=Math.max(b[0],e[0]),a[1]=Math.max(b[1],e[1]),a[2]=Math.max(b[2],e[2]),
a};k.scale=function(a,b,e){return a[0]=b[0]*e,a[1]=b[1]*e,a[2]=b[2]*e,a};k.distance=function(a,b){var e=b[0]-a[0],f=b[1]-a[1],c=b[2]-a[2];return Math.sqrt(e*e+f*f+c*c)};k.dist=k.distance;k.squaredDistance=function(a,b){var e=b[0]-a[0],f=b[1]-a[1],c=b[2]-a[2];return e*e+f*f+c*c};k.sqrDist=k.squaredDistance;k.length=function(a){var b=a[0],e=a[1];a=a[2];return Math.sqrt(b*b+e*e+a*a)};k.len=k.length;k.squaredLength=function(a){var b=a[0],e=a[1];a=a[2];return b*b+e*e+a*a};k.sqrLen=k.squaredLength;k.negate=
function(a,b){return a[0]=-b[0],a[1]=-b[1],a[2]=-b[2],a};k.normalize=function(a,b){var e=b[0],f=b[1],c=b[2],e=e*e+f*f+c*c;return 0<e&&(e=1/Math.sqrt(e),a[0]=b[0]*e,a[1]=b[1]*e,a[2]=b[2]*e),a};k.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]};k.cross=function(a,b,e){var f=b[0],c=b[1];b=b[2];var k=e[0],d=e[1];e=e[2];return a[0]=c*e-b*d,a[1]=b*k-f*e,a[2]=f*d-c*k,a};k.lerp=function(a,b,e,f){var c=b[0],k=b[1];b=b[2];return a[0]=c+f*(e[0]-c),a[1]=k+f*(e[1]-k),a[2]=b+f*(e[2]-b),a};k.transformMat4=
function(a,b,e){var f=b[0],c=b[1];b=b[2];return a[0]=e[0]*f+e[4]*c+e[8]*b+e[12],a[1]=e[1]*f+e[5]*c+e[9]*b+e[13],a[2]=e[2]*f+e[6]*c+e[10]*b+e[14],a};k.transformQuat=function(a,b,e){var f=b[0],c=b[1],k=b[2];b=e[0];var d=e[1],g=e[2];e=e[3];var h=e*f+d*k-g*c,q=e*c+g*f-b*k,r=e*k+b*c-d*f,f=-b*f-d*c-g*k;return a[0]=h*e+f*-b+q*-g-r*-d,a[1]=q*e+f*-d+r*-b-h*-g,a[2]=r*e+f*-g+h*-d-q*-b,a};k.forEach=function(){var a=k.create();return function(b,e,f,c,k,d){var g;e||(e=3);f||(f=0);for(c?g=Math.min(c*e+f,b.length):
g=b.length;f<g;f+=e)a[0]=b[f],a[1]=b[f+1],a[2]=b[f+2],k(a,a,d),b[f]=a[0],b[f+1]=a[1],b[f+2]=a[2];return b}}();k.str=function(a){return"vec3("+a[0]+", "+a[1]+", "+a[2]+")"};"undefined"!=typeof c&&(c.vec3=k);var d={create:function(){var a=new f(4);return a[0]=0,a[1]=0,a[2]=0,a[3]=0,a},clone:function(a){var b=new f(4);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b},fromValues:function(a,b,e,c){var k=new f(4);return k[0]=a,k[1]=b,k[2]=e,k[3]=c,k},copy:function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],
a[3]=b[3],a},set:function(a,b,e,f,c){return a[0]=b,a[1]=e,a[2]=f,a[3]=c,a},add:function(a,b,e){return a[0]=b[0]+e[0],a[1]=b[1]+e[1],a[2]=b[2]+e[2],a[3]=b[3]+e[3],a},subtract:function(a,b,e){return a[0]=b[0]-e[0],a[1]=b[1]-e[1],a[2]=b[2]-e[2],a[3]=b[3]-e[3],a}};d.sub=d.subtract;d.multiply=function(a,b,e){return a[0]=b[0]*e[0],a[1]=b[1]*e[1],a[2]=b[2]*e[2],a[3]=b[3]*e[3],a};d.mul=d.multiply;d.divide=function(a,b,e){return a[0]=b[0]/e[0],a[1]=b[1]/e[1],a[2]=b[2]/e[2],a[3]=b[3]/e[3],a};d.div=d.divide;
d.min=function(a,b,e){return a[0]=Math.min(b[0],e[0]),a[1]=Math.min(b[1],e[1]),a[2]=Math.min(b[2],e[2]),a[3]=Math.min(b[3],e[3]),a};d.max=function(a,b,e){return a[0]=Math.max(b[0],e[0]),a[1]=Math.max(b[1],e[1]),a[2]=Math.max(b[2],e[2]),a[3]=Math.max(b[3],e[3]),a};d.scale=function(a,b,e){return a[0]=b[0]*e,a[1]=b[1]*e,a[2]=b[2]*e,a[3]=b[3]*e,a};d.distance=function(a,b){var e=b[0]-a[0],f=b[1]-a[1],c=b[2]-a[2],k=b[3]-a[3];return Math.sqrt(e*e+f*f+c*c+k*k)};d.dist=d.distance;d.squaredDistance=function(a,
b){var e=b[0]-a[0],f=b[1]-a[1],c=b[2]-a[2],k=b[3]-a[3];return e*e+f*f+c*c+k*k};d.sqrDist=d.squaredDistance;d.length=function(a){var b=a[0],e=a[1],f=a[2];a=a[3];return Math.sqrt(b*b+e*e+f*f+a*a)};d.len=d.length;d.squaredLength=function(a){var b=a[0],e=a[1],f=a[2];a=a[3];return b*b+e*e+f*f+a*a};d.sqrLen=d.squaredLength;d.negate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a[2]=-b[2],a[3]=-b[3],a};d.normalize=function(a,b){var e=b[0],f=b[1],c=b[2],k=b[3],e=e*e+f*f+c*c+k*k;return 0<e&&(e=1/Math.sqrt(e),
a[0]=b[0]*e,a[1]=b[1]*e,a[2]=b[2]*e,a[3]=b[3]*e),a};d.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]};d.lerp=function(a,b,e,f){var c=b[0],k=b[1],d=b[2];b=b[3];return a[0]=c+f*(e[0]-c),a[1]=k+f*(e[1]-k),a[2]=d+f*(e[2]-d),a[3]=b+f*(e[3]-b),a};d.transformMat4=function(a,b,e){var f=b[0],c=b[1],k=b[2];b=b[3];return a[0]=e[0]*f+e[4]*c+e[8]*k+e[12]*b,a[1]=e[1]*f+e[5]*c+e[9]*k+e[13]*b,a[2]=e[2]*f+e[6]*c+e[10]*k+e[14]*b,a[3]=e[3]*f+e[7]*c+e[11]*k+e[15]*b,a};d.transformQuat=function(a,b,e){var f=
b[0],c=b[1],k=b[2];b=e[0];var d=e[1],g=e[2];e=e[3];var h=e*f+d*k-g*c,q=e*c+g*f-b*k,r=e*k+b*c-d*f,f=-b*f-d*c-g*k;return a[0]=h*e+f*-b+q*-g-r*-d,a[1]=q*e+f*-d+r*-b-h*-g,a[2]=r*e+f*-g+h*-d-q*-b,a};d.forEach=function(){var a=d.create();return function(b,e,f,c,k,d){var g;e||(e=4);f||(f=0);for(c?g=Math.min(c*e+f,b.length):g=b.length;f<g;f+=e)a[0]=b[f],a[1]=b[f+1],a[2]=b[f+2],a[3]=b[f+3],k(a,a,d),b[f]=a[0],b[f+1]=a[1],b[f+2]=a[2],b[f+3]=a[3];return b}}();d.str=function(a){return"vec4("+a[0]+", "+a[1]+", "+
a[2]+", "+a[3]+")"};"undefined"!=typeof c&&(c.vec4=d);b={create:function(){var a=new f(4);return a[0]=1,a[1]=0,a[2]=0,a[3]=1,a},clone:function(a){var b=new f(4);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b},copy:function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a},identity:function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=1,a},transpose:function(a,b){if(a===b){var e=b[1];a[1]=b[2];a[2]=e}else a[0]=b[0],a[1]=b[2],a[2]=b[1],a[3]=b[3];return a},invert:function(a,b){var e=b[0],f=b[1],c=b[2],
k=b[3],d=e*k-c*f;return d?(d=1/d,a[0]=k*d,a[1]=-f*d,a[2]=-c*d,a[3]=e*d,a):null},adjoint:function(a,b){var e=b[0];return a[0]=b[3],a[1]=-b[1],a[2]=-b[2],a[3]=e,a},determinant:function(a){return a[0]*a[3]-a[2]*a[1]},multiply:function(a,b,e){var f=b[0],c=b[1],k=b[2];b=b[3];var d=e[0],g=e[1],h=e[2];e=e[3];return a[0]=f*d+c*h,a[1]=f*g+c*e,a[2]=k*d+b*h,a[3]=k*g+b*e,a}};b.mul=b.multiply;b.rotate=function(a,b,e){var f=b[0],c=b[1],k=b[2];b=b[3];var d=Math.sin(e);e=Math.cos(e);return a[0]=f*e+c*d,a[1]=f*-d+
c*e,a[2]=k*e+b*d,a[3]=k*-d+b*e,a};b.scale=function(a,b,e){var f=b[1],c=b[2],k=b[3],d=e[0];e=e[1];return a[0]=b[0]*d,a[1]=f*e,a[2]=c*d,a[3]=k*e,a};b.str=function(a){return"mat2("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")"};"undefined"!=typeof c&&(c.mat2=b);b={create:function(){var a=new f(6);return a[0]=1,a[1]=0,a[2]=0,a[3]=1,a[4]=0,a[5]=0,a},clone:function(a){var b=new f(6);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b},copy:function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=
b[3],a[4]=b[4],a[5]=b[5],a},identity:function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=1,a[4]=0,a[5]=0,a},invert:function(a,b){var e=b[0],f=b[1],c=b[2],k=b[3],d=b[4],g=b[5],h=e*k-f*c;return h?(h=1/h,a[0]=k*h,a[1]=-f*h,a[2]=-c*h,a[3]=e*h,a[4]=(c*g-k*d)*h,a[5]=(f*d-e*g)*h,a):null},determinant:function(a){return a[0]*a[3]-a[1]*a[2]},multiply:function(a,b,e){var f=b[0],c=b[1],k=b[2],d=b[3],g=b[4];b=b[5];var h=e[0],q=e[1],r=e[2],t=e[3],w=e[4];e=e[5];return a[0]=f*h+c*r,a[1]=f*q+c*t,a[2]=k*h+d*r,a[3]=k*q+d*
t,a[4]=h*g+r*b+w,a[5]=q*g+t*b+e,a}};b.mul=b.multiply;b.rotate=function(a,b,e){var f=b[0],c=b[1],k=b[2],d=b[3],g=b[4];b=b[5];var h=Math.sin(e);e=Math.cos(e);return a[0]=f*e+c*h,a[1]=-f*h+c*e,a[2]=k*e+d*h,a[3]=-k*h+e*d,a[4]=e*g+h*b,a[5]=e*b-h*g,a};b.scale=function(a,b,e){var f=e[0];e=e[1];return a[0]=b[0]*f,a[1]=b[1]*e,a[2]=b[2]*f,a[3]=b[3]*e,a[4]=b[4]*f,a[5]=b[5]*e,a};b.translate=function(a,b,e){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[4]=b[4]+e[0],a[5]=b[5]+e[1],a};b.str=function(a){return"mat2d("+
a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+")"};"undefined"!=typeof c&&(c.mat2d=b);b={create:function(){var a=new f(9);return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=1,a[5]=0,a[6]=0,a[7]=0,a[8]=1,a},fromMat4:function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[4],a[4]=b[5],a[5]=b[6],a[6]=b[8],a[7]=b[9],a[8]=b[10],a},clone:function(a){var b=new f(9);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b},copy:function(a,b){return a[0]=b[0],a[1]=
b[1],a[2]=b[2],a[3]=b[3],a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[8]=b[8],a},identity:function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=1,a[5]=0,a[6]=0,a[7]=0,a[8]=1,a},transpose:function(a,b){if(a===b){var e=b[1],f=b[2],c=b[5];a[1]=b[3];a[2]=b[6];a[3]=e;a[5]=b[7];a[6]=f;a[7]=c}else a[0]=b[0],a[1]=b[3],a[2]=b[6],a[3]=b[1],a[4]=b[4],a[5]=b[7],a[6]=b[2],a[7]=b[5],a[8]=b[8];return a},invert:function(a,b){var e=b[0],f=b[1],c=b[2],k=b[3],d=b[4],g=b[5],h=b[6],q=b[7],r=b[8],t=r*d-g*q,w=-r*k+g*h,x=q*k-
d*h,y=e*t+f*w+c*x;return y?(y=1/y,a[0]=t*y,a[1]=(-r*f+c*q)*y,a[2]=(g*f-c*d)*y,a[3]=w*y,a[4]=(r*e-c*h)*y,a[5]=(-g*e+c*k)*y,a[6]=x*y,a[7]=(-q*e+f*h)*y,a[8]=(d*e-f*k)*y,a):null},adjoint:function(a,b){var e=b[0],f=b[1],c=b[2],k=b[3],d=b[4],g=b[5],h=b[6],q=b[7],r=b[8];return a[0]=d*r-g*q,a[1]=c*q-f*r,a[2]=f*g-c*d,a[3]=g*h-k*r,a[4]=e*r-c*h,a[5]=c*k-e*g,a[6]=k*q-d*h,a[7]=f*h-e*q,a[8]=e*d-f*k,a},determinant:function(a){var b=a[3],e=a[4],f=a[5],c=a[6],k=a[7],d=a[8];return a[0]*(d*e-f*k)+a[1]*(-d*b+f*c)+a[2]*
(k*b-e*c)},multiply:function(a,b,e){var f=b[0],c=b[1],k=b[2],d=b[3],g=b[4],h=b[5],q=b[6],r=b[7];b=b[8];var t=e[0],w=e[1],x=e[2],y=e[3],A=e[4],B=e[5],C=e[6],F=e[7];e=e[8];return a[0]=t*f+w*d+x*q,a[1]=t*c+w*g+x*r,a[2]=t*k+w*h+x*b,a[3]=y*f+A*d+B*q,a[4]=y*c+A*g+B*r,a[5]=y*k+A*h+B*b,a[6]=C*f+F*d+e*q,a[7]=C*c+F*g+e*r,a[8]=C*k+F*h+e*b,a}};b.mul=b.multiply;b.translate=function(a,b,e){var f=b[0],c=b[1],k=b[2],d=b[3],g=b[4],h=b[5],q=b[6],r=b[7];b=b[8];var t=e[0];e=e[1];return a[0]=f,a[1]=c,a[2]=k,a[3]=d,a[4]=
g,a[5]=h,a[6]=t*f+e*d+q,a[7]=t*c+e*g+r,a[8]=t*k+e*h+b,a};b.rotate=function(a,b,e){var f=b[0],c=b[1],k=b[2],d=b[3],g=b[4],h=b[5],q=b[6],r=b[7];b=b[8];var t=Math.sin(e);e=Math.cos(e);return a[0]=e*f+t*d,a[1]=e*c+t*g,a[2]=e*k+t*h,a[3]=e*d-t*f,a[4]=e*g-t*c,a[5]=e*h-t*k,a[6]=q,a[7]=r,a[8]=b,a};b.scale=function(a,b,e){var f=e[0];e=e[2];return a[0]=f*b[0],a[1]=f*b[1],a[2]=f*b[2],a[3]=e*b[3],a[4]=e*b[4],a[5]=e*b[5],a[6]=b[6],a[7]=b[7],a[8]=b[8],a};b.fromMat2d=function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=
0,a[3]=b[2],a[4]=b[3],a[5]=0,a[6]=b[4],a[7]=b[5],a[8]=1,a};b.fromQuat=function(a,b){var e=b[0],f=b[1],c=b[2],k=b[3],d=e+e,g=f+f,h=c+c,q=e*d,r=e*g,e=e*h,t=f*g,f=f*h,c=c*h,d=k*d,g=k*g,k=k*h;return a[0]=1-(t+c),a[1]=r+k,a[2]=e-g,a[3]=r-k,a[4]=1-(q+c),a[5]=f+d,a[6]=e+g,a[7]=f-d,a[8]=1-(q+t),a};b.str=function(a){return"mat3("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+")"};"undefined"!=typeof c&&(c.mat3=b);var h={create:function(){var a=new f(16);return a[0]=1,
a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=1,a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,a},clone:function(a){var b=new f(16);return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15],b},copy:function(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],
a[14]=b[14],a[15]=b[15],a},identity:function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=1,a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,a},transpose:function(a,b){if(a===b){var e=b[1],f=b[2],c=b[3],k=b[6],d=b[7],g=b[11];a[1]=b[4];a[2]=b[8];a[3]=b[12];a[4]=e;a[6]=b[9];a[7]=b[13];a[8]=f;a[9]=k;a[11]=b[14];a[12]=c;a[13]=d;a[14]=g}else a[0]=b[0],a[1]=b[4],a[2]=b[8],a[3]=b[12],a[4]=b[1],a[5]=b[5],a[6]=b[9],a[7]=b[13],a[8]=b[2],a[9]=b[6],a[10]=b[10],a[11]=b[14],a[12]=
b[3],a[13]=b[7],a[14]=b[11],a[15]=b[15];return a},invert:function(a,b){var e=b[0],f=b[1],c=b[2],k=b[3],d=b[4],g=b[5],h=b[6],q=b[7],r=b[8],t=b[9],w=b[10],x=b[11],y=b[12],A=b[13],B=b[14],C=b[15],F=e*g-f*d,G=e*h-c*d,H=e*q-k*d,I=f*h-c*g,L=f*q-k*g,M=c*q-k*h,N=r*A-t*y,K=r*B-w*y,O=r*C-x*y,P=t*B-w*A,Q=t*C-x*A,R=w*C-x*B,J=F*R-G*Q+H*P+I*O-L*K+M*N;return J?(J=1/J,a[0]=(g*R-h*Q+q*P)*J,a[1]=(c*Q-f*R-k*P)*J,a[2]=(A*M-B*L+C*I)*J,a[3]=(w*L-t*M-x*I)*J,a[4]=(h*O-d*R-q*K)*J,a[5]=(e*R-c*O+k*K)*J,a[6]=(B*H-y*M-C*G)*J,
a[7]=(r*M-w*H+x*G)*J,a[8]=(d*Q-g*O+q*N)*J,a[9]=(f*O-e*Q-k*N)*J,a[10]=(y*L-A*H+C*F)*J,a[11]=(t*H-r*L-x*F)*J,a[12]=(g*K-d*P-h*N)*J,a[13]=(e*P-f*K+c*N)*J,a[14]=(A*G-y*I-B*F)*J,a[15]=(r*I-t*G+w*F)*J,a):null},adjoint:function(a,b){var e=b[0],f=b[1],c=b[2],k=b[3],d=b[4],g=b[5],h=b[6],q=b[7],r=b[8],t=b[9],w=b[10],x=b[11],y=b[12],A=b[13],B=b[14],C=b[15];return a[0]=g*(w*C-x*B)-t*(h*C-q*B)+A*(h*x-q*w),a[1]=-(f*(w*C-x*B)-t*(c*C-k*B)+A*(c*x-k*w)),a[2]=f*(h*C-q*B)-g*(c*C-k*B)+A*(c*q-k*h),a[3]=-(f*(h*x-q*w)-g*
(c*x-k*w)+t*(c*q-k*h)),a[4]=-(d*(w*C-x*B)-r*(h*C-q*B)+y*(h*x-q*w)),a[5]=e*(w*C-x*B)-r*(c*C-k*B)+y*(c*x-k*w),a[6]=-(e*(h*C-q*B)-d*(c*C-k*B)+y*(c*q-k*h)),a[7]=e*(h*x-q*w)-d*(c*x-k*w)+r*(c*q-k*h),a[8]=d*(t*C-x*A)-r*(g*C-q*A)+y*(g*x-q*t),a[9]=-(e*(t*C-x*A)-r*(f*C-k*A)+y*(f*x-k*t)),a[10]=e*(g*C-q*A)-d*(f*C-k*A)+y*(f*q-k*g),a[11]=-(e*(g*x-q*t)-d*(f*x-k*t)+r*(f*q-k*g)),a[12]=-(d*(t*B-w*A)-r*(g*B-h*A)+y*(g*w-h*t)),a[13]=e*(t*B-w*A)-r*(f*B-c*A)+y*(f*w-c*t),a[14]=-(e*(g*B-h*A)-d*(f*B-c*A)+y*(f*h-c*g)),a[15]=
e*(g*w-h*t)-d*(f*w-c*t)+r*(f*h-c*g),a},determinant:function(a){var b=a[0],e=a[1],f=a[2],c=a[3],k=a[4],d=a[5],g=a[6],h=a[7],q=a[8],r=a[9],t=a[10],w=a[11],x=a[12],y=a[13],A=a[14];a=a[15];return(b*d-e*k)*(t*a-w*A)-(b*g-f*k)*(r*a-w*y)+(b*h-c*k)*(r*A-t*y)+(e*g-f*d)*(q*a-w*x)-(e*h-c*d)*(q*A-t*x)+(f*h-c*g)*(q*y-r*x)},multiply:function(a,b,e){var f=b[0],c=b[1],k=b[2],d=b[3],g=b[4],h=b[5],q=b[6],r=b[7],t=b[8],w=b[9],x=b[10],y=b[11],A=b[12],B=b[13],C=b[14];b=b[15];var F=e[0],G=e[1],H=e[2],I=e[3];return a[0]=
F*f+G*g+H*t+I*A,a[1]=F*c+G*h+H*w+I*B,a[2]=F*k+G*q+H*x+I*C,a[3]=F*d+G*r+H*y+I*b,F=e[4],G=e[5],H=e[6],I=e[7],a[4]=F*f+G*g+H*t+I*A,a[5]=F*c+G*h+H*w+I*B,a[6]=F*k+G*q+H*x+I*C,a[7]=F*d+G*r+H*y+I*b,F=e[8],G=e[9],H=e[10],I=e[11],a[8]=F*f+G*g+H*t+I*A,a[9]=F*c+G*h+H*w+I*B,a[10]=F*k+G*q+H*x+I*C,a[11]=F*d+G*r+H*y+I*b,F=e[12],G=e[13],H=e[14],I=e[15],a[12]=F*f+G*g+H*t+I*A,a[13]=F*c+G*h+H*w+I*B,a[14]=F*k+G*q+H*x+I*C,a[15]=F*d+G*r+H*y+I*b,a}};h.mul=h.multiply;h.translate=function(a,b,e){var f=e[0],c=e[1];e=e[2];
var k,d,g,h,q,r,t,w,x,y,A,B;return b===a?(a[12]=b[0]*f+b[4]*c+b[8]*e+b[12],a[13]=b[1]*f+b[5]*c+b[9]*e+b[13],a[14]=b[2]*f+b[6]*c+b[10]*e+b[14],a[15]=b[3]*f+b[7]*c+b[11]*e+b[15]):(k=b[0],d=b[1],g=b[2],h=b[3],q=b[4],r=b[5],t=b[6],w=b[7],x=b[8],y=b[9],A=b[10],B=b[11],a[0]=k,a[1]=d,a[2]=g,a[3]=h,a[4]=q,a[5]=r,a[6]=t,a[7]=w,a[8]=x,a[9]=y,a[10]=A,a[11]=B,a[12]=k*f+q*c+x*e+b[12],a[13]=d*f+r*c+y*e+b[13],a[14]=g*f+t*c+A*e+b[14],a[15]=h*f+w*c+B*e+b[15]),a};h.scale=function(a,b,e){var f=e[0],c=e[1];e=e[2];return a[0]=
b[0]*f,a[1]=b[1]*f,a[2]=b[2]*f,a[3]=b[3]*f,a[4]=b[4]*c,a[5]=b[5]*c,a[6]=b[6]*c,a[7]=b[7]*c,a[8]=b[8]*e,a[9]=b[9]*e,a[10]=b[10]*e,a[11]=b[11]*e,a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15],a};h.rotate=function(b,e,f,c){var k=c[0],d=c[1];c=c[2];var g=Math.sqrt(k*k+d*d+c*c),h,D,q,r,t,w,x,y,A,B,C,F,G,H,I,L,M,N,K,O,P,Q,R,J;return Math.abs(g)<a?null:(g=1/g,k*=g,d*=g,c*=g,h=Math.sin(f),D=Math.cos(f),q=1-D,r=e[0],t=e[1],w=e[2],x=e[3],y=e[4],A=e[5],B=e[6],C=e[7],F=e[8],G=e[9],H=e[10],I=e[11],L=k*k*q+D,
M=d*k*q+c*h,N=c*k*q-d*h,K=k*d*q-c*h,O=d*d*q+D,P=c*d*q+k*h,Q=k*c*q+d*h,R=d*c*q-k*h,J=c*c*q+D,b[0]=r*L+y*M+F*N,b[1]=t*L+A*M+G*N,b[2]=w*L+B*M+H*N,b[3]=x*L+C*M+I*N,b[4]=r*K+y*O+F*P,b[5]=t*K+A*O+G*P,b[6]=w*K+B*O+H*P,b[7]=x*K+C*O+I*P,b[8]=r*Q+y*R+F*J,b[9]=t*Q+A*R+G*J,b[10]=w*Q+B*R+H*J,b[11]=x*Q+C*R+I*J,e!==b&&(b[12]=e[12],b[13]=e[13],b[14]=e[14],b[15]=e[15]),b)};h.rotateX=function(a,b,e){var f=Math.sin(e);e=Math.cos(e);var c=b[4],k=b[5],d=b[6],g=b[7],h=b[8],q=b[9],r=b[10],t=b[11];return b!==a&&(a[0]=b[0],
a[1]=b[1],a[2]=b[2],a[3]=b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]),a[4]=c*e+h*f,a[5]=k*e+q*f,a[6]=d*e+r*f,a[7]=g*e+t*f,a[8]=h*e-c*f,a[9]=q*e-k*f,a[10]=r*e-d*f,a[11]=t*e-g*f,a};h.rotateY=function(a,b,e){var f=Math.sin(e);e=Math.cos(e);var c=b[0],k=b[1],d=b[2],g=b[3],h=b[8],q=b[9],r=b[10],t=b[11];return b!==a&&(a[4]=b[4],a[5]=b[5],a[6]=b[6],a[7]=b[7],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]),a[0]=c*e-h*f,a[1]=k*e-q*f,a[2]=d*e-r*f,a[3]=g*e-t*f,a[8]=c*f+h*e,a[9]=k*f+q*e,a[10]=d*f+r*
e,a[11]=g*f+t*e,a};h.rotateZ=function(a,b,e){var f=Math.sin(e);e=Math.cos(e);var c=b[0],k=b[1],d=b[2],g=b[3],h=b[4],q=b[5],r=b[6],t=b[7];return b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]),a[0]=c*e+h*f,a[1]=k*e+q*f,a[2]=d*e+r*f,a[3]=g*e+t*f,a[4]=h*e-c*f,a[5]=q*e-k*f,a[6]=r*e-d*f,a[7]=t*e-g*f,a};h.fromRotationTranslation=function(a,b,e){var f=b[0],c=b[1],k=b[2],d=b[3],g=f+f,h=c+c,q=k+k;b=f*g;var r=f*h,f=f*q,t=c*h,c=c*q,k=k*q,g=d*g,h=d*h,d=d*q;
return a[0]=1-(t+k),a[1]=r+d,a[2]=f-h,a[3]=0,a[4]=r-d,a[5]=1-(b+k),a[6]=c+g,a[7]=0,a[8]=f+h,a[9]=c-g,a[10]=1-(b+t),a[11]=0,a[12]=e[0],a[13]=e[1],a[14]=e[2],a[15]=1,a};h.fromQuat=function(a,b){var e=b[0],f=b[1],c=b[2],k=b[3],d=e+e,g=f+f,h=c+c,q=e*d,r=e*g,e=e*h,t=f*g,f=f*h,c=c*h,d=k*d,g=k*g,k=k*h;return a[0]=1-(t+c),a[1]=r+k,a[2]=e-g,a[3]=0,a[4]=r-k,a[5]=1-(q+c),a[6]=f+d,a[7]=0,a[8]=e+g,a[9]=f-d,a[10]=1-(q+t),a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,a};h.frustum=function(a,b,e,f,c,k,d){var g=1/(e-b),
h=1/(c-f),q=1/(k-d);return a[0]=2*k*g,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=2*k*h,a[6]=0,a[7]=0,a[8]=(e+b)*g,a[9]=(c+f)*h,a[10]=(d+k)*q,a[11]=-1,a[12]=0,a[13]=0,a[14]=d*k*2*q,a[15]=0,a};h.perspective=function(a,b,e,f,c){b=1/Math.tan(b/2);var k=1/(f-c);return a[0]=b/e,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=b,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=(c+f)*k,a[11]=-1,a[12]=0,a[13]=0,a[14]=2*c*f*k,a[15]=0,a};h.ortho=function(a,b,e,f,c,k,d){var g=1/(b-e),h=1/(f-c),q=1/(k-d);return a[0]=-2*g,a[1]=0,a[2]=0,a[3]=0,a[4]=0,
a[5]=-2*h,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=2*q,a[11]=0,a[12]=(b+e)*g,a[13]=(c+f)*h,a[14]=(d+k)*q,a[15]=1,a};h.lookAt=function(b,e,f,c){var k,d,g,E,D,q,r,t,w,x,y=e[0],A=e[1];e=e[2];var B=c[0],C=c[1];c=c[2];var F=f[0],G=f[1];f=f[2];return Math.abs(y-F)<a&&Math.abs(A-G)<a&&Math.abs(e-f)<a?h.identity(b):(r=y-F,t=A-G,w=e-f,x=1/Math.sqrt(r*r+t*t+w*w),r*=x,t*=x,w*=x,k=C*w-c*t,d=c*r-B*w,g=B*t-C*r,x=Math.sqrt(k*k+d*d+g*g),x?(x=1/x,k*=x,d*=x,g*=x):(k=0,d=0,g=0),E=t*g-w*d,D=w*k-r*g,q=r*d-t*k,x=Math.sqrt(E*
E+D*D+q*q),x?(x=1/x,E*=x,D*=x,q*=x):(E=0,D=0,q=0),b[0]=k,b[1]=E,b[2]=r,b[3]=0,b[4]=d,b[5]=D,b[6]=t,b[7]=0,b[8]=g,b[9]=q,b[10]=w,b[11]=0,b[12]=-(k*y+d*A+g*e),b[13]=-(E*y+D*A+q*e),b[14]=-(r*y+t*A+w*e),b[15]=1,b)};h.str=function(a){return"mat4("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+", "+a[9]+", "+a[10]+", "+a[11]+", "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+")"};"undefined"!=typeof c&&(c.mat4=h);b={create:function(){var a=new f(4);return a[0]=0,a[1]=0,a[2]=
0,a[3]=1,a}};b.clone=d.clone;b.fromValues=d.fromValues;b.copy=d.copy;b.set=d.set;b.identity=function(a){return a[0]=0,a[1]=0,a[2]=0,a[3]=1,a};b.setAxisAngle=function(a,b,e){e*=.5;var f=Math.sin(e);return a[0]=f*b[0],a[1]=f*b[1],a[2]=f*b[2],a[3]=Math.cos(e),a};b.add=d.add;b.multiply=function(a,b,e){var f=b[0],c=b[1],k=b[2];b=b[3];var d=e[0],g=e[1],h=e[2];e=e[3];return a[0]=f*e+b*d+c*h-k*g,a[1]=c*e+b*g+k*d-f*h,a[2]=k*e+b*h+f*g-c*d,a[3]=b*e-f*d-c*g-k*h,a};b.mul=b.multiply;b.scale=d.scale;b.rotateX=function(a,
b,e){e*=.5;var f=b[0],c=b[1],k=b[2];b=b[3];var d=Math.sin(e);e=Math.cos(e);return a[0]=f*e+b*d,a[1]=c*e+k*d,a[2]=k*e-c*d,a[3]=b*e-f*d,a};b.rotateY=function(a,b,e){e*=.5;var f=b[0],c=b[1],k=b[2];b=b[3];var d=Math.sin(e);e=Math.cos(e);return a[0]=f*e-k*d,a[1]=c*e+b*d,a[2]=k*e+f*d,a[3]=b*e-c*d,a};b.rotateZ=function(a,b,e){e*=.5;var f=b[0],c=b[1],k=b[2];b=b[3];var d=Math.sin(e);e=Math.cos(e);return a[0]=f*e+c*d,a[1]=c*e-f*d,a[2]=k*e+b*d,a[3]=b*e-k*d,a};b.calculateW=function(a,b){var e=b[0],f=b[1],c=b[2];
return a[0]=e,a[1]=f,a[2]=c,a[3]=-Math.sqrt(Math.abs(1-e*e-f*f-c*c)),a};b.dot=d.dot;b.lerp=d.lerp;b.slerp=function(a,b,e,f){var c=b[0],k=b[1],d=b[2],g=b[3],h=e[0],q=e[1],r=e[2];e=e[3];var t=c*h+k*q+d*r+g*e,w,x,y,A;return 1<=Math.abs(t)?(a!==b&&(a[0]=c,a[1]=k,a[2]=d,a[3]=g),a):(w=Math.acos(t),x=Math.sqrt(1-t*t),.001>Math.abs(x)?(a[0]=.5*c+.5*h,a[1]=.5*k+.5*q,a[2]=.5*d+.5*r,a[3]=.5*g+.5*e,a):(y=Math.sin((1-f)*w)/x,A=Math.sin(f*w)/x,a[0]=c*y+h*A,a[1]=k*y+q*A,a[2]=d*y+r*A,a[3]=g*y+e*A,a))};b.invert=function(a,
b){var e=b[0],f=b[1],c=b[2],k=b[3],d=e*e+f*f+c*c+k*k,d=d?1/d:0;return a[0]=-e*d,a[1]=-f*d,a[2]=-c*d,a[3]=k*d,a};b.conjugate=function(a,b){return a[0]=-b[0],a[1]=-b[1],a[2]=-b[2],a[3]=b[3],a};b.length=d.length;b.len=b.length;b.squaredLength=d.squaredLength;b.sqrLen=b.squaredLength;b.normalize=d.normalize;b.fromMat3=function(){var a=[1,2,0];return function(b,e){var f=e[0]+e[4]+e[8];if(0<f)f=Math.sqrt(f+1),b[3]=.5*f,f=.5/f,b[0]=(e[7]-e[5])*f,b[1]=(e[2]-e[6])*f,b[2]=(e[3]-e[1])*f;else{var c=0;e[4]>e[0]&&
(c=1);e[8]>e[3*c+c]&&(c=2);var k=a[c],d=a[k],f=Math.sqrt(e[3*c+c]-e[3*k+k]-e[3*d+d]+1);b[c]=.5*f;f=.5/f;b[3]=(e[3*d+k]-e[3*k+d])*f;b[k]=(e[3*k+c]+e[3*c+k])*f;b[d]=(e[3*d+c]+e[3*c+d])*f}return b}}();b.str=function(a){return"quat("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")"};"undefined"!=typeof c&&(c.quat=b)})(d)})();"use strict";
tv.exportTo("tv.b",function(){var d=vec2.create(),c=vec2.create(),a=vec4.create();mat2d.create();vec2.createFromArray=function(a){if(2!=a.length)throw Error("Should be length 2");var b=vec2.create();vec2.set(b,a[0],a[1]);return b};vec2.createXY=function(a,b){var e=vec2.create();vec2.set(e,a,b);return e};vec2.toString=function(a){return"["+a[0]+", "+a[1]+"]"};vec2.addTwoScaledUnitVectors=function(a,b,e,k,g){vec2.scale(d,b,e);vec2.scale(c,k,g);vec2.add(a,d,c)};vec3.createXYZ=function(a,b,e){var c=vec3.create();
vec3.set(c,a,b,e);return c};vec3.toString=function(a){return"vec3("+a[0]+", "+a[1]+", "+a[2]+")"};mat2d.translateXY=function(a,b,e){vec2.set(d,b,e);mat2d.translate(a,a,d)};mat2d.scaleXY=function(a,b,e){vec2.set(d,b,e);mat2d.scale(a,a,d)};vec4.unitize=function(a,b){a[0]=b[0]/b[3];a[1]=b[1]/b[3];a[2]=b[2]/b[3];a[3]=1;return a};vec2.copyFromVec4=function(f,b){vec4.unitize(a,b);vec2.copy(f,a)};return{}});"use strict";
tv.exportTo("tv.b",function(){function d(){this.height=this.width=this.y=this.x=0}d.fromXYWH=function(c,a,f,b){var e=new d;e.x=c;e.y=a;e.width=f;e.height=b;return e};d.fromArray=function(c){if(4!=c.length)throw Error("ary.length must be 4");var a=new d;a.x=c[0];a.y=c[1];a.width=c[2];a.height=c[3];return a};d.prototype={__proto__:Object.prototype,get left(){return this.x},get top(){return this.y},get right(){return this.x+this.width},get bottom(){return this.y+this.height},toString:function(){return"Rect("+
this.x+", "+this.y+", "+this.width+", "+this.height+")"},toArray:function(){return[this.x,this.y,this.width,this.height]},clone:function(){var c=new d;c.x=this.x;c.y=this.y;c.width=this.width;c.height=this.height;return c},enlarge:function(c){var a=new d;this.enlargeFast(a,c);return a},enlargeFast:function(c,a){c.x=this.x-a;c.y=this.y-a;c.width=this.width+2*a;c.height=this.height+2*a;return c},size:function(){return{width:this.width,height:this.height}},scale:function(c){var a=new d;this.scaleFast(a,
c);return a},scaleSize:function(c){return d.fromXYWH(this.x,this.y,this.width*c,this.height*c)},scaleFast:function(c,a){c.x=this.x*a;c.y=this.y*a;c.width=this.width*a;c.height=this.height*a;return c},translate:function(c){var a=new d;this.translateFast(a,c);return a},translateFast:function(c,a){c.x=this.x+a[0];c.y=this.x+a[1];c.width=this.width;c.height=this.height;return c},asUVRectInside:function(c){var a=new d;a.x=(this.x-c.x)/c.width;a.y=(this.y-c.y)/c.height;a.width=this.width/c.width;a.height=
this.height/c.height;return a},intersects:function(c){var a;a=1&this.x<c.right;a&=this.right>c.x;a&=this.y<c.bottom;return a&=this.bottom>c.y},equalTo:function(c){return c&&this.x===c.x&&this.y===c.y&&this.width===c.width&&this.height===c.height}};return{Rect:d}});"use strict";
tv.exportTo("tv.b",function(){return{addSingletonGetter:function(d){d.getInstance=function(){return d.instance_||(d.instance_=new d)}},tracedFunction:function(d,c,a){return function(){console.time(c);try{d.apply(a,arguments)}finally{console.timeEnd(c)}}},normalizeException:function(d){return"string"==typeof d?{message:d,stack:["<unknown>"]}:{message:d.message,stack:d.stack?d.stack:["<unknown>"]}},instantiateTemplate:function(d,c){c=c||document;var a=c.querySelector(d);if(!a)throw Error("Element not found");
return a.createInstance()},stackTrace:function(){var d=Error().stack+"",d=d.split("\n");return d.slice(2)},windowRectForElement:function(d){var c=[d.offsetLeft,d.offsetTop],a=[d.offsetWidth,d.offsetHeight];for(d=d.offsetParent;d;)c[0]+=d.offsetLeft,c[1]+=d.offsetTop,d=d.offsetParent;return tv.b.Rect.fromXYWH(c[0],c[1],a[0],a[1])},scrollIntoViewIfNeeded:function(d){var c=d.parentElement.getBoundingClientRect(),a=d.getBoundingClientRect();a.top<c.top?d.scrollIntoView(!0):a.bottom>c.bottom&&d.scrollIntoView(!1)},
clamp:function(d,c,a){return Math.min(Math.max(d,c),a)},lerp:function(d,c,a){return c+d*(a-c)},deg2rad:function(d){return Math.PI*d/180},getUsingPath:function(d,c){for(var a=d.split("."),f=c,b;a.length&&(b=a.shift());)if(a.length)if(b in f)f=f[b];else break;else return f[b]}}});"use strict";
tv.exportTo("tv.b",function(){function d(){return d}function c(){return c}function a(a,b){a.storage_=b;a.get=function(b,c,d){b=a.namespace_(b,d);var h=a.storage_.getItem(b);if(null===h||void 0===h)return c;try{return JSON.parse(h).value}catch(l){return a.storage_.removeItem(a.namespace_(b,d)),c}};a.set=function(b,c,d){if(void 0===c)throw Error("Settings.set: value must not be undefined");c=JSON.stringify({value:c});a.storage_.setItem(a.namespace_(b,d),c)};a.keys=function(b){var c=[];b=b||"";for(var d=
0;d<a.storage_.length;d++){var h=a.storage_.key(d);a.isnamespaced_(h,b)&&c.push(a.unnamespace_(h,b))}return c};a.isnamespaced_=function(b,c){return 0==b.indexOf(a.normalize_(c))};a.namespace_=function(b,c){return a.normalize_(c)+b};a.unnamespace_=function(b,c){return b.replace(a.normalize_(c),"")};a.normalize_=function(b){return a.NAMESPACE+(b?b+".":"")};a.setAlternativeStorageInstance=function(b){a.storage_=b};a.getAlternativeStorageInstance=function(){return a.storage_===localStorage?void 0:a.storage_};
a.NAMESPACE="trace-viewer"}document.head.addEventListener("tv-unittest-will-run",function(){d.setAlternativeStorageInstance(global.sessionStorage)});a(d,localStorage);a(c,sessionStorage);return{Settings:d,SessionSettings:c}});"use strict";
tv.exportTo("tv.b.ui",function(){function d(a){var e=document.createElement("span");a&&(a.className&&(e.className=a.className),a.textContent&&(e.textContent=a.textContent),a.parent&&a.parent.appendChild(e),a.bold&&(e.style.fontWeight="bold"));return e}function c(a,e){return a instanceof Array&&e instanceof Array?a.length===e.length&&JSON.stringify(a)===JSON.stringify(e):a===e}function a(a,e){var f=d({className:"edit-categories"});f.textContent="Edit categories";f.classList.add("labeled-option");f.addEventListener("click",
function(){e.onClickEditCategories()});return f}var f=1;return{createSpan:d,createDiv:function(a){var e=document.createElement("div");a&&(a.className&&(e.className=a.className),a.parent&&a.parent.appendChild(e));return e},createScopedStyle:function(a){var e=document.createElement("style");e.scoped=!0;e.innerHTML=a;return e},createSelector:function(a,e,f,d,h,l){function m(c){c=v.selectedOptions[0].targetPropertyValue;tv.b.Settings.set(f,c,l);a[e]=c}for(var n,p=0;p<h.length;p++){var u=h[p];if(c(u.value,
d)){n=p;break}}if(void 0===n)throw Error("defaultValue must be in the items list");var v=document.createElement("select");v.addEventListener("change",m);for(p=0;p<h.length;p++){var u=h[p],z=document.createElement("option");z.textContent=u.label;z.targetPropertyValue=u.value;v.appendChild(z)}a.__lookupSetter__("selectedIndex");v.__defineGetter__("selectedValue",function(a){return v.children[v.selectedIndex].targetPropertyValue});v.__defineSetter__("selectedValue",function(a){for(var b=0;b<v.children.length;b++)if(c(v.children[b].targetPropertyValue,
a)){v.selectedIndex!=b&&(v.selectedIndex=b,m());return}throw Error("Not a valid value");});h=tv.b.Settings.get(f,d,l);u=!1;for(p=0;p<v.children.length;p++)if(c(v.children[p].targetPropertyValue,h)){u=!0;a[e]=h;v.selectedIndex=p;break}u||(v.selectedIndex=n,a[e]=d);return v},createOptionGroup:function(b,e,f,g,h){function l(){var a=[];this.value.length&&(a=this.value.split(","));tv.b.Settings.set(f,a);b[e]=a}var m=d({className:"labeled-option-group"});g=tv.b.Settings.get(f,g);for(var n=0;n<h.length;++n){var p=
h[n],u="category-preset-"+p.label.replace(/ /g,"-"),v=document.createElement("input");v.type="radio";v.setAttribute("id",u);v.setAttribute("name","category-presets-group");v.setAttribute("value",p.value);v.addEventListener("change",l.bind(v,b,e,f));c(g,p.value)&&(v.checked=!0);var z=document.createElement("label");z.textContent=p.label;z.setAttribute("for",u);p=d({className:"labeled-option"});p.appendChild(v);p.appendChild(z);p.__defineSetter__("checked",function(a){v.checked!==!!a&&(v.checked=!!a,
l())});p.__defineGetter__("checked",function(){return v.checked});m.appendChild(p)}m.appendChild(a(m,b));g.length||m.classList.add("categories-expanded");b[e]=g;return m},createCheckBox:function(a,e,c,g,h){function l(){tv.b.Settings.set(c,m.checked);a&&(a[e]=m.checked)}var m=document.createElement("input");m.type="checkbox";g=tv.b.Settings.get(c,g);m.checked=!!g;a&&(a[e]=g);m.addEventListener("change",l);g="#checkbox-"+f++;var n=d({className:"labeled-checkbox"});m.setAttribute("id",g);var p=document.createElement("label");
p.textContent=h;p.setAttribute("for",g);n.appendChild(m);n.appendChild(p);n.__defineSetter__("checked",function(a){m.checked!==!!a&&(m.checked=!!a,l())});n.__defineGetter__("checked",function(){return m.checked});return n},isElementAttachedToDocument:function(a){for(var e=a;e.parentNode;)e=e.parentNode;return e==a.ownerDocument}}});"use strict";
tv.exportTo("tv.b",function(){function d(){}d.decorate=function(a){for(var f in d.prototype)if("decorate"!=f){var b=d.prototype[f];"function"===typeof b&&(a[f]=b)}};d.prototype={addEventListener:function(a,f){this.listeners_||(this.listeners_=Object.create(null));if(a in this.listeners_){var b=this.listeners_[a];0>b.indexOf(f)&&b.push(f)}else this.listeners_[a]=[f]},removeEventListener:function(a,f){if(this.listeners_&&a in this.listeners_){var b=this.listeners_[a],e=b.indexOf(f);0<=e&&(1==b.length?
delete this.listeners_[a]:b.splice(e,1))}},dispatchEvent:function(a){if(!this.listeners_)return!0;var f=this;a.__defineGetter__("target",function(){return f});var b=a.preventDefault;a.preventDefault=function(){b.call(this);this.rawReturnValue=!1};var e=a.type,c=0;if(e in this.listeners_)for(var e=this.listeners_[e].concat(),d=0,h;h=e[d];d++)c=h.handleEvent?c|!1===h.handleEvent.call(h,a):c|!1===h.call(this,a);return!c&&a.rawReturnValue},hasEventListener:function(a){return void 0!==this.listeners_[a]}};
var c={decorate:function(a){for(var f in c)if("decorate"!=f){var b=c[f];"function"===typeof b&&(a[f]=b)}a.listenerCounts_={}},addEventListener:function(a,f,b){this.__proto__.addEventListener.call(this,a,f,b);void 0===this.listenerCounts_[a]&&(this.listenerCounts_[a]=0);this.listenerCounts_[a]++},removeEventListener:function(a,f,b){this.__proto__.removeEventListener.call(this,a,f,b);this.listenerCounts_[a]--},hasEventListener:function(a){return 0<this.listenerCounts_[a]}};return{EventTarget:d,EventTargetHelper:c}});
"use strict";tv.exportTo("tv.b",function(){function d(c,a,f){var b=tv.doc.createEvent("Event");b.initEvent(c,!!a,!!f);b.__proto__=global.Event.prototype;return b}d.prototype={__proto__:global.Event.prototype};return{Event:d,dispatchSimpleEvent:function(c,a,f,b){a=new d(a,f,b);return c.dispatchEvent(a)}}});"use strict";
tv.exportTo("tv.b",function(){function d(a,b,f,c,d,m){d=new tv.b.Event(b+"Change",d,m);d.propertyName=b;d.newValue=f;d.oldValue=c;var n;d.throwError=function(a){n=a};a.dispatchEvent(d);if(n)throw n;}function c(a){return a.replace(/([A-Z])/g,"-$1").toLowerCase()}function a(a,f){switch(f){case b.JS:var d=a+"_tv_";return function(){return this[d]};case b.ATTR:var h=c(a);return function(){return this.getAttribute(h)};case b.BOOL_ATTR:return h=c(a),function(){return this.hasAttribute(h)}}}function f(a,
f,g,h,l){switch(f){case b.JS:var m=a+"_tv_";return function(b){var f=this[m];b!==f&&(this[m]=b,g&&g.call(this,b,f),d(this,a,b,f,h,l))};case b.ATTR:var n=c(a);return function(b){var f=this.getAttribute(n);b!==f&&(void 0==b?this.removeAttribute(n):this.setAttribute(n,b),g&&g.call(this,b,f),d(this,a,b,f,h,l))};case b.BOOL_ATTR:return n=c(a),function(b){var f=this.getAttribute(n)===a;b!==f&&(b?this.setAttribute(n,a):this.removeAttribute(n),g&&g.call(this,b,f),d(this,a,b,f,h,l))}}}var b={JS:"js",ATTR:"attr",
BOOL_ATTR:"boolAttr"};return{PropertyKind:b,defineProperty:function(e,c,d,h,l,m){console.error("Don't use tv.b.defineProperty");"function"==typeof e&&(e=e.prototype);d=d||b.JS;e.__lookupGetter__(c)||e.__defineGetter__(c,a(c,d));e.__lookupSetter__(c)||e.__defineSetter__(c,f(c,d,h,l,m))},dispatchPropertyChange:d,setPropertyAndDispatchChange:function(a,b,f){var c=a[b];a[b+"_"]=f;c!==f&&tv.b.dispatchPropertyChange(a,b,f,c,!0,!1)}}});"use strict";
tv.exportTo("tv.b.ui",function(){var d=document.currentScript.ownerDocument,c=tv.b.ui.define("overlay");c.prototype={__proto__:HTMLDivElement.prototype,decorate:function(){this.classList.add("overlay");this.parentEl_=this.ownerDocument.body;this.visible_=!1;this.userCanClose_=!0;this.onKeyDown_=this.onKeyDown_.bind(this);this.onClick_=this.onClick_.bind(this);this.onFocusIn_=this.onFocusIn_.bind(this);this.onDocumentClick_=this.onDocumentClick_.bind(this);this.onClose_=this.onClose_.bind(this);this.addEventListener("visibleChange",
tv.b.ui.Overlay.prototype.onVisibleChange_.bind(this),!0);this.shadow_=(this.createShadowRoot||this.webkitCreateShadowRoot).call(this);this.shadow_.appendChild(tv.b.instantiateTemplate("#overlay-template",d));this.closeBtn_=this.shadow_.querySelector("close-button");this.closeBtn_.addEventListener("click",this.onClose_);this.shadow_.querySelector("overlay-frame").addEventListener("click",this.onClick_);this.observer_=new WebKitMutationObserver(this.didButtonBarMutate_.bind(this));this.observer_.observe(this.shadow_.querySelector("button-bar"),
{childList:!0});Object.defineProperty(this,"title",{get:function(){return this.shadow_.querySelector("title").textContent},set:function(a){this.shadow_.querySelector("title").textContent=a}})},set userCanClose(a){this.userCanClose_=a;this.closeBtn_.style.display=a?"block":"none"},get buttons(){return this.shadow_.querySelector("button-bar")},get visible(){return this.visible_},set visible(a){this.visible_!==a&&tv.b.setPropertyAndDispatchChange(this,"visible",a)},onVisibleChange_:function(){this.visible_?
this.show_():this.hide_()},show_:function(){this.parentEl_.appendChild(this);this.userCanClose_&&(this.addEventListener("keydown",this.onKeyDown_.bind(this)),this.addEventListener("click",this.onDocumentClick_.bind(this)));this.parentEl_.addEventListener("focusin",this.onFocusIn_);this.tabIndex=0;var a=void 0,f=this.querySelectorAll("button, input, list, select, a");0<f.length&&(f[0]===this.closeBtn_?1<f.length&&(a=f[1]):a=f[0]);void 0===a&&(a=this);a.focus()},hide_:function(){this.parentEl_.removeChild(this);
this.parentEl_.removeEventListener("focusin",this.onFocusIn_);this.closeBtn_&&this.closeBtn_.removeEventListener(this.onClose_);document.removeEventListener("keydown",this.onKeyDown_);document.removeEventListener("click",this.onDocumentClick_)},onClose_:function(a){this.visible=!1;("keydown"!=a.type||"keydown"===a.type&&27===a.keyCode)&&a.stopPropagation();a.preventDefault();tv.b.dispatchSimpleEvent(this,"closeclick")},onFocusIn_:function(a){a.target!==this&&(window.setTimeout(function(){this.focus()},
0),a.preventDefault(),a.stopPropagation())},didButtonBarMutate_:function(a){0<this.buttons.children.length?this.shadow_.querySelector("button-bar").style.display=void 0:this.shadow_.querySelector("button-bar").style.display="none"},onKeyDown_:function(a){if(9===a.keyCode&&a.shiftKey&&a.target===this)a.preventDefault();else if(27===a.keyCode)this.onClose_(a)},onClick_:function(a){a.stopPropagation()},onDocumentClick_:function(a){if(this.userCanClose_)this.onClose_(a)}};c.showError=function(a,f){var b=
new c;b.title="Error";b.textContent=a;if(f){var e=tv.b.normalizeException(f),k=document.createElement("pre");k.textContent=e.stack;k.style.paddingLeft="8px";k.style.margin=0;b.appendChild(k)}e=document.createElement("button");e.textContent="OK";e.addEventListener("click",function(){b.visible=!1});b.buttons.appendChild(e);b.visible=!0;return b};return{Overlay:c}});"use strict";
tv.exportTo("tv.b.ui",function(){var d=tv.b.ui.define("x-drag-handle");d.prototype={__proto__:HTMLDivElement.prototype,decorate:function(){this.lastMousePos_=0;this.onMouseMove_=this.onMouseMove_.bind(this);this.onMouseUp_=this.onMouseUp_.bind(this);this.addEventListener("mousedown",this.onMouseDown_);this.target_=void 0;this.horizontal=!0;this.observer_=new WebKitMutationObserver(this.didTargetMutate_.bind(this));this.targetSizesByModeKey_={}},get modeKey_(){return""==this.target_.className?".":
this.target_.className},get target(){return this.target_},set target(c){this.observer_.disconnect();(this.target_=c)&&this.observer_.observe(this.target_,{attributes:!0,attributeFilter:["class"]})},get horizontal(){return this.horizontal_},set horizontal(c){this.className=(this.horizontal_=c)?"horizontal-drag-handle":"vertical-drag-handle"},get vertical(){return!this.horizontal_},set vertical(c){this.horizontal=!c},forceMutationObserverFlush_:function(){var c=this.observer_.takeRecords();c.length&&
this.didTargetMutate_(c)},didTargetMutate_:function(c){c=this.targetSizesByModeKey_[this.modeKey_];void 0!==c?this.setTargetSize_(c):this.target_.style[this.targetStyleKey_]=""},get targetStyleKey_(){return this.horizontal_?"height":"width"},getTargetSize_:function(){var c=this.targetStyleKey_;this.target_.style[c]||(this.target_.style[c]=window.getComputedStyle(this.target_)[c]);c=parseInt(this.target_.style[c]);return this.targetSizesByModeKey_[this.modeKey_]=c},setTargetSize_:function(c){this.target_.style[this.targetStyleKey_]=
c+"px";this.targetSizesByModeKey_[this.modeKey_]=c},applyDelta_:function(c){var a=this.getTargetSize_();this.setTargetSize_(this.target_===this.nextElementSibling?a+c:a-c)},onMouseMove_:function(c){var a=this.horizontal_?c.clientY:c.clientX;this.applyDelta_(this.lastMousePos_-a);this.lastMousePos_=a;c.preventDefault();return!0},onMouseDown_:function(c){if(this.target_)return this.forceMutationObserverFlush_(),this.lastMousePos_=this.horizontal_?c.clientY:c.clientX,document.addEventListener("mousemove",
this.onMouseMove_),document.addEventListener("mouseup",this.onMouseUp_),c.preventDefault(),!0},onMouseUp_:function(c){document.removeEventListener("mousemove",this.onMouseMove_);document.removeEventListener("mouseup",this.onMouseUp_);c.preventDefault()}};return{DragHandle:d}});"use strict";
tv.exportTo("tv.b",function(){function d(){if(void 0===b||void 0===f)f={},b={},Polymer.elements.forEach(function(a){if(f[a.name])throw Error("Something is strange: dupe polymer element names");f[a.name]=a;a.extends&&(void 0===b[a.extends]&&(b[a.extends]=[]),b[a.extends].push(a.name))})}function c(a){d();return f[a]}function a(f){if(Polymer.waitingFor().length)throw Error("There are unresolved polymer elements. Wait until Polymer.whenReady");d();element=c(f);if(!element)throw Error(f+" is not a polymer element");
opt_includeSelf=!!opt_includeSelf;void 0===e[f]&&(immediateSubElements=b[polymerElement],immediateSubElements.length?immediateSubElements.forEach(function(b){(void 0).push.apply(void 0,a(b.name))}):e[f]=immediateSubElements,e[f]=void 0);return e[f]}Object.observe(Polymer.elements,function(){f={};b=void 0;e={}});var f=void 0,b=void 0,e=void 0;return{getPolymerElementNamed:c,getPolymerElementsThatSubclass:a,getPolymerSubclassingDepthFrom:function(a,b){if(Polymer.waitingFor().length)throw Error("There are unresolved polymer elements. Wait until Polymer.whenReady");
if(!Polymer.elements[b])throw Error(b+" is not a polymer element");if(!Polymer.elements[a])throw Error(a+" is not a polymer element");for(var e=0,f=a;f!=b;)if(e+=1,f=Polymer.elements[f].extends,!f)throw Error(a+" does not subclass "+b);return e}}});"use strict";
Polymer("tracing-analysis-tab-view",{get selectedTab(){if(this.selectedTab_)return this.selectedTab_.content},set selectedTab(d){this.childrenUpdated_(this.childrenObserver_.takeRecords(),this.childrenObserver_);if(void 0===d||null===d)this.changeSelectedTabById_(void 0);else{for(var c=void 0,a=0;a<this.tabs_.length;a++)if(this.tabs_[a].content===d){c=this.tabs_[a].id;break}void 0===c?console.warn("Tab not in tabs list. Ignoring changed selection."):this.changeSelectedTabById_(c)}},get tabsHidden(){return this.shadowRoot.querySelector("tab-strip").hasAttribute("tabs-hidden")},
set tabsHidden(d){d=!!d;var c=this.shadowRoot.querySelector("tab-strip");d?c.setAttribute("tabs-hidden",!0):c.removeAttribute("tabs-hidden")},ready:function(){this.tabs_=[];this.selectedTab_=void 0;for(var d=0;d<this.children.length;d++)this.processAddedChild_(this.children[d]);this.childrenObserver_=new MutationObserver(this.childrenUpdated_.bind(this));this.childrenObserver_.observe(this,{childList:"true"})},processAddedChild_:function(d){var c=new MutationObserver(this.childAttributesChanged_.bind(this)),
a=new MutationObserver(this.childAttributesChanged_.bind(this)),f={id:this.tabs_.length,content:d,label:d.getAttribute("tab-label"),observers:{forAttributeSelected:c,forAttributeTabLabel:a},savedScrollTop:0,savedScrollLeft:0};this.tabs_.push(f);d.hasAttribute("selected")&&(this.selectedTab_?d.removeAttribute("selected"):this.setSelectedTabById_(f.id));var b=d.selected,e=this;Object.defineProperty(d,"selected",{configurable:!0,set:function(a){a?e.changeSelectedTabById_(f.id):e.selectedTab_===f&&e.changeSelectedTabById_(void 0)},
get:function(){return this.hasAttribute("selected")}});b&&(d.selected=b);c.observe(d,{attributeFilter:["selected"]});a.observe(d,{attributeFilter:["tab-label"]})},processRemovedChild_:function(d){for(var c=0;c<this.tabs_.length;c++)this.tabs_[c].id=c,this.tabs_[c].content===d&&(this.tabs_[c].observers.forAttributeSelected.disconnect(),this.tabs_[c].observers.forAttributeTabLabel.disconnect(),this.tabs_[c]===this.selectedTab_&&this.clearSelectedTab_(),d.removeAttribute("selected"),delete d.selected,
this.tabs_.splice(c,1),c--)},childAttributesChanged_:function(d,c){for(var a=void 0,f=0;f<this.tabs_.length;f++){var b=this.tabs_[f].observers;if(b.forAttributeSelected===c||b.forAttributeTabLabel===c){a=this.tabs_[f];break}}if(a)for(f=0;f<d.length;f++)b=a.content,"tab-label"===d[f].attributeName&&(a.label=b.getAttribute("tab-label")),"selected"===d[f].attributeName&&(b.hasAttribute("selected")?this.changeSelectedTabById_(a.id):this.changeSelectedTabById_(void 0))},childrenUpdated_:function(d,c){d.forEach(function(a){for(var f=
0;f<a.removedNodes.length;f++)this.processRemovedChild_(a.removedNodes[f]);for(f=0;f<a.addedNodes.length;f++)this.processAddedChild_(a.addedNodes[f])},this)},tabButtonSelectHandler_:function(d,c,a){this.changeSelectedTabById_(a.getAttribute("button-id"))},changeSelectedTabById_:function(d){var c=this.selectedTab_!==(void 0!==d?this.tabs_[d]:void 0);this.saveCurrentTabScrollPosition_();this.clearSelectedTab_();void 0!==d&&(this.setSelectedTabById_(d),this.restoreCurrentTabScrollPosition_());c&&this.fire("selected-tab-change")},
setSelectedTabById_:function(d){this.selectedTab_=this.tabs_[d];this.selectedTab_.observers.forAttributeSelected.disconnect();this.selectedTab_.content.setAttribute("selected","selected");this.selectedTab_.observers.forAttributeSelected.observe(this.selectedTab_.content,{attributeFilter:["selected"]})},saveCurrentTabScrollPosition_:function(){this.selectedTab_&&(this.selectedTab_.savedScrollTop=this.$["content-container"].scrollTop,this.selectedTab_.savedScrollLeft=this.$["content-container"].scrollLeft)},
restoreCurrentTabScrollPosition_:function(){this.selectedTab_&&(this.$["content-container"].scrollTop=this.selectedTab_.savedScrollTop,this.$["content-container"].scrollLeft=this.selectedTab_.savedScrollLeft)},clearSelectedTab_:function(){this.selectedTab_&&(this.selectedTab_.observers.forAttributeSelected.disconnect(),this.selectedTab_.content.removeAttribute("selected"),this.selectedTab_.observers.forAttributeSelected.observe(this.selectedTab_.content,{attributeFilter:["selected"]}),this.selectedTab_=
void 0)}});"use strict";Polymer("tracing-analysis-sub-view",{set tabLabel(d){return this.setAttribute("tab-label",d)},get tabLabel(){return this.getAttribute("tab-label")},get requiresTallView(){return!1},set selection(d){throw Error("Not implemented!");},get selection(){throw Error("Not implemented!");}});"use strict";tv.exportTo("tv.c.analysis",function(){return{tsRound:function(d){return Math.round(1E3*d)/1E3}}});"use strict";tv.exportTo("tv.b",function(){var d=1;return{GUID:{allocate:function(){return d++}}}});
"use strict";
tv.exportTo("tv.b",function(){function d(){this.isEmpty_=!0;this.max_=this.min_=void 0}d.prototype={__proto__:Object.prototype,reset:function(){this.isEmpty_=!0;this.max_=this.min_=void 0},get isEmpty(){return this.isEmpty_},addRange:function(c){c.isEmpty||(this.addValue(c.min),this.addValue(c.max))},addValue:function(c){this.isEmpty_?(this.min_=this.max_=c,this.isEmpty_=!1):(this.max_=Math.max(this.max_,c),this.min_=Math.min(this.min_,c))},set min(c){this.isEmpty_=!1;this.min_=c},get min(){return this.isEmpty_?void 0:
this.min_},get max(){return this.isEmpty_?void 0:this.max_},set max(c){this.isEmpty_=!1;this.max_=c},get range(){return this.isEmpty_?void 0:this.max_-this.min_},get center(){return.5*(this.min_+this.max_)},equals:function(c){return this.isEmpty&&c.isEmpty?!0:this.isEmpty!=c.isEmpty?!1:this.min===c.min&&this.max===c.max},containsRange:function(c){return this.isEmpty||c.isEmpty?!1:this.min<=c.min&&this.max>=c.max},containsExplicitRange:function(c,a){return this.isEmpty?!1:this.min<=c&&this.max>=a},
intersectsRange:function(c){return this.isEmpty||c.isEmpty?!1:!(c.max<this.min||c.min>this.max)},intersectsExplicitRange:function(c,a){return this.isEmpty?!1:!(a<this.min||c>this.max)}};d.compareByMinTimes=function(c,a){return c.isEmpty||a.isEmpty?c.isEmpty&&!a.isEmpty?-1:!c.isEmpty&&a.isEmpty?1:0:c.min_-a.min_};return{Range:d}});"use strict";
tv.exportTo("tv.b",function(){function d(a,e){return void 0===a?e:void 0===e?a:Math.max(a,e)}function c(a,e){this.beginPositionCb_=a;this.endPositionCb_=e;this.root_=void 0;this.size_=0}function a(a,e,c,d){this.lowValue_=c;this.data_=[{start:a,end:e,high:d,low:c}];this.colour_=f.RED;this.maxHighRight_=this.maxHighLeft_=this.rightNode_=this.leftNode_=this.parentNode_=void 0}c.prototype={insert:function(b,e){var c=this.beginPositionCb_(b),d=this.endPositionCb_(e||b),c=new a(b,e||b,c,d);this.size_++;
this.root_=this.insertNode_(this.root_,c);this.root_.colour=f.BLACK},insertNode_:function(a,e){if(void 0===a)return e;a.leftNode&&a.leftNode.isRed&&a.rightNode&&a.rightNode.isRed&&this.flipNodeColour_(a);e.key<a.key?a.leftNode=this.insertNode_(a.leftNode,e):e.key===a.key?a.merge(e):a.rightNode=this.insertNode_(a.rightNode,e);!a.rightNode||!a.rightNode.isRed||void 0!==a.leftNode&&a.leftNode.isRed||(a=this.rotateLeft_(a));a.leftNode&&a.leftNode.isRed&&a.leftNode.leftNode&&a.leftNode.leftNode.isRed&&
(a=this.rotateRight_(a));return a},rotateRight_:function(a){var e=a.leftNode;a.leftNode=e.rightNode;e.rightNode=a;e.colour=a.colour;a.colour=f.RED;return e},rotateLeft_:function(a){var e=a.rightNode;a.rightNode=e.leftNode;e.leftNode=a;e.colour=a.colour;a.colour=f.RED;return e},flipNodeColour_:function(a){a.colour=this.flipColour_(a.colour);a.leftNode.colour=this.flipColour_(a.leftNode.colour);a.rightNode.colour=this.flipColour_(a.rightNode.colour)},flipColour_:function(a){return a===f.RED?f.BLACK:
f.RED},updateHighValues:function(){this.updateHighValues_(this.root_)},updateHighValues_:function(a){if(void 0!==a)return a.maxHighLeft=this.updateHighValues_(a.leftNode),a.maxHighRight=this.updateHighValues_(a.rightNode),d(d(a.maxHighLeft,a.highValue),a.maxHighRight)},findIntersection:function(a,e){if(void 0===a||void 0===e)throw Error("lowValue and highValue must be defined");if("number"!==typeof a||"number"!==typeof e)throw Error("lowValue and highValue must be numbers");return void 0===this.root_?
[]:this.findIntersection_(this.root_,a,e)},findIntersection_:function(a,e,f){var c=[];if(a.lowValue>=f)return a.hasLeftNode?this.findIntersection_(a.leftNode,e,f):[];a.maxHighLeft>e&&(c=c.concat(this.findIntersection_(a.leftNode,e,f)));if(a.highValue>e)for(var d=a.data.length-1;0<=d&&!(a.data[d].high<e);--d)c.unshift([a.data[d].start,a.data[d].end]);a.hasRightNode&&(c=c.concat(this.findIntersection_(a.rightNode,e,f)));return c},get size(){return this.size_},get root(){return this.root_},dump_:function(){return void 0===
this.root_?[]:this.dumpNode_(this.root_)},dumpNode_:function(a){var e={};a.hasLeftNode&&(e.left=this.dumpNode_(a.leftNode));e.node=a.dump();a.hasRightNode&&(e.right=this.dumpNode_(a.rightNode));return e}};var f={RED:"red",BLACK:"black"};a.prototype={get colour(){return this.colour_},set colour(a){this.colour_=a},get key(){return this.lowValue_},get lowValue(){return this.lowValue_},get highValue(){return this.data_[this.data_.length-1].high},set leftNode(a){this.leftNode_=a},get leftNode(){return this.leftNode_},
get hasLeftNode(){return void 0!==this.leftNode_},set rightNode(a){this.rightNode_=a},get rightNode(){return this.rightNode_},get hasRightNode(){return void 0!==this.rightNode_},set parentNode(a){this.parentNode_=a},get parentNode(){return this.parentNode_},get isRootNode(){return void 0===this.parentNode_},set maxHighLeft(a){this.maxHighLeft_=a},get maxHighLeft(){return this.maxHighLeft_},set maxHighRight(a){this.maxHighRight_=a},get maxHighRight(){return this.maxHighRight_},get data(){return this.data_},
get isRed(){return this.colour_===f.RED},merge:function(a){this.data_=this.data_.concat(a.data);this.data_.sort(function(a,b){return a.high-b.high})},dump:function(){return 1===this.data_.length?[this.data_[0].low,this.data[0].high]:this.data_.map(function(a){return[a.low,a.high]})}};return{IntervalTree:c}});"use strict";
tv.exportTo("tv.b",function(){function d(){if(!h)if(h=!0,window.requestAnimationFrame)window.requestAnimationFrame(a);else{var b=Date.now()-window.performance.now();window.webkitRequestAnimationFrame(function(e){a(e-b)})}}function c(a,b){try{a.callback.call(a.context,b)}catch(e){tv.b.onAnimationFrameError(e,a.stack)}}function a(a){var f=a+10;h=!1;var n=b;g=e;b=[];e=[];for(var p=n.length||g.length,u=0;u<n.length;u++)c(n[u],a);for(;0<g.length;)c(g.shift(),a);g=void 0;if(!p)for(;0<k.length&&!(c(k.shift()),
window.performance.now()>=f););0<k.length&&d()}function f(a,b){e.push({callback:a,context:b||window,stack:""});d()}var b=[],e=[],k=[],g=void 0,h=!1;return{onAnimationFrameError:function(a,b){b&&console.log(b);a.message?console.error(a.message,a.stack):console.error(a)},requestPreAnimationFrame:function(a,e){b.push({callback:a,context:e||window,stack:""});d()},requestAnimationFrame:f,requestAnimationFrameInThisFrameIfPossible:function(a,b){g?g.push({callback:a,context:b||window,stack:""}):f(a,b)},
requestIdleCallback:function(a,b){k.push({callback:a,context:b||window,stack:""});d()},forcePendingRAFTasksToRun:function(b){h&&a(b)}}});"use strict";
tv.exportTo("tv.b",function(){function d(c,a){if(void 0!==c&&void 0===a)throw Error("Almost certainly, you meant to pass a thisArg.");this.runCb_=c;this.thisArg_=a;this.afterTask_=void 0;this.subTasks_=[]}d.prototype={subTask:function(c,a){c instanceof d?this.subTasks_.push(c):this.subTasks_.push(new d(c,a));return this.subTasks_[this.subTasks_.length-1]},run:function(){void 0!==this.runCb_&&this.runCb_.call(this.thisArg_,this);var c=this.subTasks_;this.subTasks_=void 0;if(!c.length)return this.afterTask_;
for(var a=1;a<c.length;a++)c[a-1].afterTask_=c[a];c[c.length-1].afterTask_=this.afterTask_;return c[0]},after:function(c,a){if(this.afterTask_)throw Error("Has an after task already");return this.afterTask_=c instanceof d?c:new d(c,a)}};d.RunSynchronously=function(c){for(;c;)c=c.run()};d.RunWhenIdle=function(c){return new Promise(function(a,f){function b(){try{e=e.run()}catch(c){f(c);console.error(c.stack);return}e?tv.b.requestIdleCallback(b):a()}var e=c;tv.b.requestIdleCallback(b)})};return{Task:d}});
"use strict";
tv.exportTo("tv.c",function(){function d(){}function c(a){this.text_=a.toLowerCase();if(!a.length)throw Error("Filter text is empty.");}function a(a){this.text_=a;if(!a.length)throw Error("Filter text is empty.");}d.prototype={__proto__:Object.prototype,matchCounter:function(a){return!0},matchCpu:function(a){return!0},matchProcess:function(a){return!0},matchSlice:function(a){return!0},matchThread:function(a){return!0}};c.prototype={__proto__:d.prototype,matchSlice:function(a){return void 0===a.title?
!1:-1!==a.title.toLowerCase().indexOf(this.text_)}};a.prototype={__proto__:d.prototype,matchSlice:function(a){return a.title===this.text_}};return{TitleFilter:c,ExactTitleFilter:a}});"use strict";
tv.exportTo("tv.b",function(){function d(a,b){this.constructor=a;this.metadata=b}function c(f){if(void 0===f)throw Error("Mode is required");if(!a[f])throw Error("Not a mode.");this.mode_=f;this.defaultMetadata_={};this.defaultTypeInfo_=this.mandatoryBaseClass_=this.defaultConstructor_=void 0;this.frozen_=!1}var a={BASIC_REGISTRY_MODE:!0,TYPE_BASED_REGISTRY_MODE:!0};c.prototype={freeze:function(){if(this.frozen_)throw Error("Frozen");this.frozen_=!0},get mode(){return this.mode_},get defaultMetadata(){return this.defaultMetadata_},
set defaultMetadata(a){if(this.frozen_)throw Error("Frozen");this.defaultMetadata_=a;this.defaultTypeInfo_=void 0},get defaultConstructor(){return this.defaultConstructor_},set defaultConstructor(a){if(this.frozen_)throw Error("Frozen");this.defaultConstructor_=a;this.defaultTypeInfo_=void 0},get defaultTypeInfo(){void 0===this.defaultTypeInfo_&&this.defaultConstructor_&&(this.defaultTypeInfo_=new d(this.defaultConstructor,this.defaultMetadata));return this.defaultTypeInfo_},validateConstructor:function(a){if(this.mandatoryBaseClass){for(var b=
a.prototype.__proto__,e=!1;b;){if(b===this.mandatoryBaseClass.prototype){e=!0;break}b=b.__proto__}if(!e)throw Error(a+"must be subclass of "+registry);}}};return{BASIC_REGISTRY_MODE:"BASIC_REGISTRY_MODE",TYPE_BASED_REGISTRY_MODE:"TYPE_BASED_REGISTRY_MODE",ExtensionRegistryOptions:c,RegisteredTypeInfo:d}});"use strict";
tv.exportTo("tv.b",function(){var d=tv.b.RegisteredTypeInfo;return{_decorateBasicExtensionRegistry:function(c,a){var f=[];c.registeredTypeInfos_=[];c.register=function(b,e){if(void 0!==c.findIndexOfRegisteredConstructor(b))throw Error("Handler already registered for "+b);a.validateConstructor(b);var f={},g;for(g in a.defaultMetadata)f[g]=a.defaultMetadata[g];if(e)for(g in e)f[g]=e[g];f=new d(b,f);g=new Event("will-register");g.typeInfo=f;c.dispatchEvent(g);c.registeredTypeInfos_.push(f);g=new Event("registry-changed");
c.dispatchEvent(g)};c.pushCleanStateBeforeTest=function(){f.push(c.registeredTypeInfos_);c.registeredTypeInfos_=[];var a=new Event("registry-changed");c.dispatchEvent(a)};c.popCleanStateAfterTest=function(){c.registeredTypeInfos_=f[0];f.splice(0,1);var a=new Event("registry-changed");c.dispatchEvent(a)};c.findIndexOfRegisteredConstructor=function(a){for(var e=0;e<c.registeredTypeInfos_.length;e++)if(c.registeredTypeInfos_[e].constructor==a)return e};c.unregister=function(a){var e=c.findIndexOfRegisteredConstructor(a);
if(void 0===e)throw Error(a+" not registered");c.registeredTypeInfos_.splice(e,1);a=new Event("registry-changed");c.dispatchEvent(a)};c.getAllRegisteredTypeInfos=function(){return c.registeredTypeInfos_};c.findTypeInfo=function(a){a=this.findIndexOfRegisteredConstructor(a);if(void 0!==a)return this.registeredTypeInfos_[a]};c.findTypeInfoMatching=function(b,e){e=e?e:void 0;for(var f=0;f<c.registeredTypeInfos_.length;++f){var d=c.registeredTypeInfos_[f];if(b.call(e,d))return d}return a.defaultTypeInfo}}}});
"use strict";tv.exportTo("tv.b",function(){var d={};return{getCategoryParts:function(c){var a=d[c];if(void 0!==a)return a;a=c.split(",");return d[c]=a}}});"use strict";
tv.exportTo("tv.b",function(){var d=tv.b.getCategoryParts,c=tv.b.RegisteredTypeInfo;return{_decorateTypeBasedExtensionRegistry:function(a,f){var b=[];a.registeredTypeInfos_=[];a.categoryPartToTypeInfoMap_={};a.typeNameToTypeInfoMap_={};a.register=function(b,k){f.validateConstructor(b);var d=new c(b,k||f.defaultMetadata);d.typeNames=[];d.categoryParts=[];k&&k.typeName&&d.typeNames.push(k.typeName);k&&k.typeNames&&d.typeNames.push.apply(d.typeNames,k.typeNames);k&&k.categoryParts&&d.categoryParts.push.apply(d.categoryParts,
k.categoryParts);if(0===d.typeNames.length&&0===d.categoryParts.length)throw Error("typeName or typeNames must be provided");d.typeNames.forEach(function(b){if(a.typeNameToTypeInfoMap_[b])throw Error("typeName "+b+" already registered");});d.categoryParts.forEach(function(b){if(a.categoryPartToTypeInfoMap_[b])throw Error("categoryPart "+b+" already registered");});var h=new Event("will-register");h.typeInfo=d;a.dispatchEvent(h);d.typeNames.forEach(function(b){a.typeNameToTypeInfoMap_[b]=d});d.categoryParts.forEach(function(b){a.categoryPartToTypeInfoMap_[b]=
d});a.registeredTypeInfos_.push(d);h=new Event("registry-changed");a.dispatchEvent(h)};a.pushCleanStateBeforeTest=function(){b.push({registeredTypeInfos:a.registeredTypeInfos_,typeNameToTypeInfoMap:a.typeNameToTypeInfoMap_,categoryPartToTypeInfoMap:a.categoryPartToTypeInfoMap_});a.registeredTypeInfos_=[];a.typeNameToTypeInfoMap_={};a.categoryPartToTypeInfoMap_={};var e=new Event("registry-changed");a.dispatchEvent(e)};a.popCleanStateAfterTest=function(){var e=b[0];b.splice(0,1);a.registeredTypeInfos_=
e.registeredTypeInfos;a.typeNameToTypeInfoMap_=e.typeNameToTypeInfoMap;a.categoryPartToTypeInfoMap_=e.categoryPartToTypeInfoMap;e=new Event("registry-changed");a.dispatchEvent(e)};a.unregister=function(b){for(var f=-1,c=0;c<a.registeredTypeInfos_.length;c++)if(a.registeredTypeInfos_[c].constructor==b){f=c;break}if(-1===f)throw Error(b+" not registered");b=a.registeredTypeInfos_[f];a.registeredTypeInfos_.splice(f,1);b.typeNames.forEach(function(b){delete a.typeNameToTypeInfoMap_[b]});b.categoryParts.forEach(function(b){delete a.categoryPartToTypeInfoMap_[b]});
f=new Event("registry-changed");a.dispatchEvent(f)};a.getTypeInfo=function(b,c){if(b)for(var g=d(b),h=0;h<g.length;h++){var l=g[h];if(a.categoryPartToTypeInfoMap_[l])return a.categoryPartToTypeInfoMap_[l]}return a.typeNameToTypeInfoMap_[c]?a.typeNameToTypeInfoMap_[c]:f.defaultTypeInfo};a.getConstructor=function(b,f){var c=a.getTypeInfo(b,f);if(c)return c.constructor}}}});"use strict";
tv.exportTo("tv.b",function(){return{decorateExtensionRegistry:function(d,c){if(d.register)throw Error("Already has registry");c.freeze();if(c.mode==tv.b.BASIC_REGISTRY_MODE)tv.b._decorateBasicExtensionRegistry(d,c);else if(c.mode==tv.b.TYPE_BASED_REGISTRY_MODE)tv.b._decorateTypeBasedExtensionRegistry(d,c);else throw Error("Unrecognized mode");void 0===d.addEventListener&&tv.b.EventTarget.decorate(d)}}});"use strict";
tv.exportTo("tv.c",function(){function d(a){}d.prototype={__proto__:Object.prototype,runAudit:function(){}};var c=new tv.b.ExtensionRegistryOptions(tv.b.BASIC_REGISTRY_MODE);c.defaultMetadata={};c.mandatoryBaseClass=d;tv.b.decorateExtensionRegistry(d,c);return{Auditor:d}});"use strict";
tv.exportTo("tv.c.importer",function(){function d(){}d.prototype={__proto__:Object.prototype,isTraceDataContainer:function(){return!1},extractSubtraces:function(){return[]},importEvents:function(){},importSampleData:function(){},finalizeImport:function(){},joinRefs:function(){}};var c=new tv.b.ExtensionRegistryOptions(tv.b.BASIC_REGISTRY_MODE);c.defaultMetadata={};c.mandatoryBaseClass=d;tv.b.decorateExtensionRegistry(d,c);d.findImporterFor=function(a){var f=d.findTypeInfoMatching(function(b){return b.constructor.canImport(a)});
if(f)return f.constructor};return{Importer:d}});"use strict";tv.exportTo("tv.c.importer",function(){function d(a){this.importPriority=0}var c=tv.c.importer.Importer;d.canImport=function(a){return a instanceof Array&&0==a.length?!0:"string"===typeof a||a instanceof String?0==a.length:!1};d.prototype={__proto__:c.prototype};c.register(d);return{EmptyImporter:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(){this.guid_=tv.b.GUID.allocate();this.selectionState=a.NONE}function c(){}var a={NONE:0,SELECTED:1,HIGHLIGHTED:2,DIMMED:3};d.prototype={get guid(){return this.guid_},get selected(){return this.selectionState===a.SELECTED}};var f=new tv.b.ExtensionRegistryOptions(tv.b.BASIC_REGISTRY_MODE);f.mandatoryBaseType=d;tv.b.decorateExtensionRegistry(c,f);c.addEventListener("will-register",function(a){var b=a.typeInfo.metadata;if(void 0===b.name)throw Error("Registered events must provide name metadata");
if(void 0!==tv.b.findFirstInArray(c.getAllRegisteredTypeInfos(),function(a){return a.metadata.name===b.name}))throw Error("Event type with that name already registered");if(void 0===b.pluralName)throw Error("Registered events must provide pluralName metadata");if(void 0===b.singleViewElementName)throw Error("Registered events must provide singleViewElementName metadata");if(void 0===b.multiViewElementName)throw Error("Registered events must provide multiViewElementName metadata");});var b=void 0;
c.getEventTypeInfoByTypeName=function(a){void 0===b&&(b={},c.getAllRegisteredTypeInfos().forEach(function(a){b[a.metadata.name]=a}));return b[a]};c.addEventListener("registry-changed",function(){b=void 0});return{Event:d,EventRegistry:c,SelectionState:a}});"use strict";
tv.exportTo("tv.b",function(){function d(a,f,b){if(0==a.length)return 1;for(var e=0,c=a.length-1,d,h,l=-1;e<=c;)d=Math.floor((e+c)/2),h=f(a[d])-b,0>h?e=d+1:(0<h||(l=d),c=d-1);return-1!=l?l:e}function c(a,f,b,e,c,g){if(0!=a.length&&!(e>c)){var h=d(a,f,e);if(-1!=h&&(0<h&&f(a[h-1])+b(a[h-1],h-1)>=e&&g(a[h-1]),h!=a.length))for(b=a.length;h<b&&!(f(a[h])>=c);h++)g(a[h])}}return{findLowIndexInSortedArray:d,findLowIndexInSortedIntervals:function(a,f,b,e){var c=d(a,f,e);return 0==c?e>=f(a[0])&&e<f(a[0])+b(a[0],
0)?0:-1:c<a.length?e>=f(a[c])&&e<f(a[c])+b(a[c],c)?c:e>=f(a[c-1])&&e<f(a[c-1])+b(a[c-1],c-1)?c-1:a.length:c==a.length?e>=f(a[c-1])&&e<f(a[c-1])+b(a[c-1],c-1)?c-1:a.length:a.length},iterateOverIntersectingIntervals:c,getIntersectingIntervals:function(a,f,b,e,k){var d=[];c(a,f,b,e,k,function(a){d.push(a)});return d},findClosestElementInSortedArray:function(a,f,b,e){if(0===a.length)return null;var c=d(a,f,b),g=0<c?c-1:0;c===a.length&&--c;var h=Math.abs(b-f(a[g]));f=Math.abs(b-f(a[c]));return h>e&&f>
e?null:a[h<f?g:c]},findClosestIntervalInSortedIntervals:function(a,f,b,e,c){if(0===a.length)return null;var g=d(a,f,e);0<g&&--g;var h=a[g],l=h;e>b(h)&&g+1<a.length&&(l=a[g+1]);a=Math.abs(e-f(l));b=Math.abs(e-b(h));return a>c&&b>c?null:a<b?l:h}}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(c,a,f){tv.c.trace_model.Event.call(this);this.series_=c;this.timestamp_=a;this.value_=f}d.groupByTimestamp=function(c){for(var a={},f=0;f<c.length;f++){var b=c[f],e=b.timestamp;a[e]||(a[e]=[]);a[e].push(b)}c=tv.b.dictionaryKeys(a);c.sort();b=[];for(f=0;f<c.length;f++)e=c[f],e=a[e],e.sort(function(a,b){return a.series.seriesIndex-b.series.seriesIndex}),b.push(e);return b};d.prototype={__proto__:tv.c.trace_model.Event.prototype,get series(){return this.series_},
get timestamp(){return this.timestamp_},get value(){return this.value_},set timestamp(c){this.timestamp_=c},addBoundsToRange:function(c){c.addValue(this.timestamp)},toJSON:function(){for(var c={},a=Object.keys(this),f=0;f<a.length;f++){var b=a[f];"function"!=typeof this[b]&&(c[b]="series_"==b?this[b].guid:this[b])}return c},getSampleIndex:function(){return tv.b.findLowIndexInSortedArray(this.series.timestamps,function(c){return c},this.timestamp_)}};tv.c.trace_model.EventRegistry.register(d,{name:"counterSample",
pluralName:"counterSamples",singleViewElementName:"tv-c-counter-sample-sub-view",multiViewElementName:"tv-c-counter-sample-sub-view"});return{CounterSample:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(a,f){this.guid_=tv.b.GUID.allocate();this.name_=a;this.color_=f;this.timestamps_=[];this.samples_=[];this.seriesIndex=this.counter=void 0}var c=tv.c.trace_model.CounterSample;d.prototype={__proto__:Object.prototype,toJSON:function(){for(var a={},f=Object.keys(this),b=0;b<f.length;b++){var e=f[b];"function"!=typeof this[e]&&(a[e]="counter"==e?this[e].guid:this[e])}return a},get length(){return this.timestamps_.length},get name(){return this.name_},
get color(){return this.color_},get samples(){return this.samples_},get timestamps(){return this.timestamps_},getSample:function(a){return this.samples_[a]},getTimestamp:function(a){return this.timestamps_[a]},addCounterSample:function(a,f){this.timestamps_.push(a);var b=new c(this,a,f);this.samples_.push(b);return b},getStatistics:function(a){for(var f=0,b=Number.MAX_VALUE,e=-Number.MAX_VALUE,c=0;c<a.length;++c)var d=this.getSample(a[c]).value,f=f+d,b=Math.min(d,b),e=Math.max(d,e);return{min:b,max:e,
avg:f/a.length,start:this.getSample(a[0]).value,end:this.getSample(a.length-1).value}},shiftTimestampsForward:function(a){for(var f=0;f<this.timestamps_.length;++f)this.timestamps_[f]+=a,this.samples_[f].timestamp=this.timestamps_[f]},iterateAllEvents:function(a,f){this.samples_.forEach(a,f)}};return{CounterSeries:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(c,a,f,b){this.guid_=tv.b.GUID.allocate();this.parent=c;this.id=a;this.category=f||"";this.name=b;this.series_=[];this.totals=[];this.bounds=new tv.b.Range}d.prototype={__proto__:Object.prototype,get guid(){return this.guid_},toJSON:function(){for(var c={},a=Object.keys(this),f=0;f<a.length;f++){var b=a[f];"function"!=typeof this[b]&&(c[b]="parent"==b?this[b].guid:this[b])}return c},set timestamps(c){throw Error("Bad counter API. No cookie.");},
set seriesNames(c){throw Error("Bad counter API. No cookie.");},set seriesColors(c){throw Error("Bad counter API. No cookie.");},set samples(c){throw Error("Bad counter API. No cookie.");},addSeries:function(c){c.counter=this;c.seriesIndex=this.series_.length;this.series_.push(c);return c},getSeries:function(c){return this.series_[c]},get series(){return this.series_},get numSeries(){return this.series_.length},get numSamples(){return 0===this.series_.length?0:this.series_[0].length},get timestamps(){return 0===
this.series_.length?[]:this.series_[0].timestamps},getSampleStatistics:function(c){c.sort();var a=[];this.series_.forEach(function(f){a.push(f.getStatistics(c))});return a},shiftTimestampsForward:function(c){for(var a=0;a<this.series_.length;++a)this.series_[a].shiftTimestampsForward(c)},updateBounds:function(){this.totals=[];this.maxTotal=0;this.bounds.reset();if(0!==this.series_.length){var c=this.series_[0],a=this.series_[this.series_.length-1];this.bounds.addValue(c.getTimestamp(0));this.bounds.addValue(a.getTimestamp(a.length-
1));this.maxTotal=-Infinity;for(var f=0;f<c.length;++f){var b=0;this.series_.forEach(function(a){b+=a.getSample(f).value;this.totals.push(b)}.bind(this));this.maxTotal=Math.max(b,this.maxTotal)}}},iterateAllEvents:function(c,a){for(var f=0;f<this.series_.length;f++)this.series_[f].iterateAllEvents(c,a)}};d.compare=function(c,a){var f=c.parent.compareTo(a);if(0!=f)return f;f=c.name.localeCompare(a.name);return 0==f?c.tid-a.tid:f};return{Counter:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(c){tv.c.trace_model.Event.call(this);this.start=c;this.duration=0}d.prototype={__proto__:tv.c.trace_model.Event.prototype,get end(){return this.start+this.duration},addBoundsToRange:function(c){c.addValue(this.start);c.addValue(this.end)},bounds:function(c){var a=Math.round(1E3*this.end),f=Math.round(1E3*c.end);return this.start<=c.start&&a>=f}};return{TimedEvent:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(c,a,f,b,e,k,d,h){tv.c.trace_model.TimedEvent.call(this,b);this.category=c||"";this.title=a;this.colorId=f;this.args=e;this.endStackFrame=this.startStackFrame=void 0;this.didNotFinish=!1;void 0!==k&&(this.duration=k);void 0!==d&&(this.cpuStart=d);void 0!==h&&(this.cpuDuration=h)}d.prototype={__proto__:tv.c.trace_model.TimedEvent.prototype,get analysisTypeName(){return this.title}};tv.c.trace_model.EventRegistry.register(d,{name:"slice",pluralName:"slices",
singleViewElementName:"tv-c-single-slice-sub-view",multiViewElementName:"tv-c-multi-slice-sub-view"});return{Slice:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(a,f,b,e,k,d,h){c.call(this,f,b,e,k,d,h);this.thread=a;this.cpuOnWhichThreadWasRunning=void 0}var c=tv.c.trace_model.Slice;d.prototype={__proto__:c.prototype,get analysisTypeName(){return"tv.c.analysis.ThreadTimeSlice"},toJSON:function(){for(var a={},f=Object.keys(this),b=0;b<f.length;b++){var e=f[b];"function"!=typeof this[e]&&("thread"==e||"cpuOnWhichThreadWasRunning"==e?this[e]&&(a[e]=this[e].guid):a[e]=this[e])}return a},getAssociatedCpuSlice:function(){if(this.cpuOnWhichThreadWasRunning)for(var a=
this.cpuOnWhichThreadWasRunning.slices,f=0;f<a.length;f++){var b=a[f];if(b.start===this.start&&b.duration===this.duration)return b}},getCpuSliceThatTookCpu:function(){if(!this.cpuOnWhichThreadWasRunning){for(var a=this.thread.indexOfTimeSlice(this),f;0<=a;){var b=this.thread.timeSlices[a];if(b.cpuOnWhichThreadWasRunning){f=b.getAssociatedCpuSlice();break}else a--}if(f&&(a=f.cpu,b=a.indexOf(f),(a=a.slices[b+1])&&1E-5>Math.abs(a.start-f.end)))return a}}};tv.c.trace_model.EventRegistry.register(d,{name:"threadTimeSlice",
pluralName:"threadTimeSlices",singleViewElementName:"tv-c-single-thread-time-slice-sub-view",multiViewElementName:"tv-c-multi-slice-sub-view"});return{ThreadTimeSlice:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(a,f,b,e,k,d){c.apply(this,arguments);this.cpu=this.threadThatWasRunning=void 0}var c=tv.c.trace_model.Slice;d.prototype={__proto__:c.prototype,get analysisTypeName(){return"tv.c.analysis.CpuSlice"},toJSON:function(){for(var a={},f=Object.keys(this),b=0;b<f.length;b++){var e=f[b];"function"!=typeof this[e]&&("cpu"==e||"threadThatWasRunning"==e?this[e]&&(a[e]=this[e].guid):a[e]=this[e])}return a},getAssociatedTimeslice:function(){if(this.threadThatWasRunning)for(var a=
this.threadThatWasRunning.timeSlices,f=0;f<a.length;f++){var b=a[f];if(b.start===this.start&&b.duration===this.duration)return b}}};tv.c.trace_model.EventRegistry.register(d,{name:"cpuSlice",pluralName:"cpuSlices",singleViewElementName:"tv-c-single-cpu-slice-sub-view",multiViewElementName:"tv-c-multi-slice-sub-view"});return{CpuSlice:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(a,f){if(void 0===a||void 0===f)throw Error("Missing arguments");this.kernel=a;this.cpuNumber=f;this.slices=[];this.counters={};this.bounds=new tv.b.Range;this.lastActiveArgs_=this.lastActiveName_=this.lastActiveThread_=this.lastActiveTimestamp_=this.samples_=void 0}var c=tv.c.trace_model.Counter;d.prototype={getOrCreateCounter:function(a,f){var b;b=a.length?a+"."+f:f;this.counters[b]||(this.counters[b]=new c(this,b,a,f));return this.counters[b]},
shiftTimestampsForward:function(a){for(var f=0;f<this.slices.length;f++)this.slices[f].start+=a;for(var b in this.counters)this.counters[b].shiftTimestampsForward(a)},updateBounds:function(){this.bounds.reset();this.slices.length&&(this.bounds.addValue(this.slices[0].start),this.bounds.addValue(this.slices[this.slices.length-1].end));for(var a in this.counters)this.counters[a].updateBounds(),this.bounds.addRange(this.counters[a].bounds);this.samples_&&this.samples_.length&&(this.bounds.addValue(this.samples_[0].start),
this.bounds.addValue(this.samples_[this.samples_.length-1].end))},createSubSlices:function(){this.samples_=this.kernel.model.samples.filter(function(a){return a.cpu==this},this)},addCategoriesToDict:function(a){for(var f=0;f<this.slices.length;f++)a[this.slices[f].category]=!0;for(var b in this.counters)a[this.counters[b].category]=!0;for(f=0;f<this.samples_.length;f++)a[this.samples_[f].category]=!0},get userFriendlyName(){return"CPU "+this.cpuNumber},toJSON:function(){for(var a={},f=Object.keys(this),
b=0;b<f.length;b++){var e=f[b];"function"!=typeof this[e]&&"kernel"!=e&&(a[e]=this[e])}return a},indexOf:function(a){var f=tv.b.findLowIndexInSortedArray(this.slices,function(a){return a.start},a.start);return this.slices[f]!==a?void 0:f},iterateAllEvents:function(a,f){this.slices.forEach(a,f);for(var b in this.counters)this.counters[b].iterateAllEvents(a,f)},closeActiveThread:function(a,f){if(void 0!=this.lastActiveThread_&&0!=this.lastActiveThread_){if(a<this.lastActiveTimestamp_)throw Error("The end timestamp of a thread running on CPU "+
this.cpuNumber+" is before its start timestamp.");for(var b in f)this.lastActiveArgs_[b]=f[b];b=a-this.lastActiveTimestamp_;b=new tv.c.trace_model.CpuSlice("",this.lastActiveName_,tv.b.ui.getColorIdForGeneralPurposeString(this.lastActiveName_),this.lastActiveTimestamp_,this.lastActiveArgs_,b);b.cpu=this;this.slices.push(b);this.lastActiveArgs_=this.lastActiveName_=this.lastActiveThread_=this.lastActiveTimestamp_=void 0}},switchActiveThread:function(a,f,b,e,c){this.closeActiveThread(a,f);this.lastActiveTimestamp_=
a;this.lastActiveThread_=b;this.lastActiveName_=e;this.lastActiveArgs_=c},get samples(){return this.samples_}};d.compare=function(a,f){return a.cpuNumber-f.cpuNumber};return{Cpu:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(a,f,b){tv.c.trace_model.Event.call(this);this.objectInstance=a;this.ts=f;this.args=b}d.prototype={__proto__:tv.c.trace_model.Event.prototype,preInitialize:function(){},initialize:function(){},addBoundsToRange:function(a){a.addValue(this.ts)}};tv.c.trace_model.EventRegistry.register(d,{name:"objectSnapshot",pluralName:"objectSnapshots",singleViewElementName:"tv-c-single-object-snapshot-sub-view",multiViewElementName:"tv-c-multi-object-sub-view"});
var c=new tv.b.ExtensionRegistryOptions(tv.b.TYPE_BASED_REGISTRY_MODE);c.mandatoryBaseClass=d;c.defaultConstructor=d;tv.b.decorateExtensionRegistry(d,c);return{ObjectSnapshot:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(a,f,b,e,c,d){tv.c.trace_model.Event.call(this);this.parent=a;this.id=f;this.category=b;this.baseTypeName=d?d:e;this.name=e;this.creationTs=c;this.creationTsWasExplicit=!1;this.deletionTs=Number.MAX_VALUE;this.deletionTsWasExplicit=!1;this.colorId=0;this.bounds=new tv.b.Range;this.snapshots=[];this.hasImplicitSnapshots=!1}d.prototype={__proto__:tv.c.trace_model.Event.prototype,get typeName(){return this.name},addBoundsToRange:function(a){a.addRange(this.bounds)},
addSnapshot:function(a,f,b,e){if(a<this.creationTs)throw Error("Snapshots must be >= instance.creationTs");if(a>=this.deletionTs)throw Error("Snapshots cannot be added after an objects deletion timestamp.");var c;if(0<this.snapshots.length){c=this.snapshots[this.snapshots.length-1];if(c.ts==a)throw Error("Snapshots already exists at this time!");if(a<c.ts)throw Error("Snapshots must be added in increasing timestamp order");}if(b&&this.name!=b){if(!e)throw Error("Must provide base type name for name update");
if(this.baseTypeName!=e)throw Error("Cannot update type name: base types dont match");this.name=b}a=new (tv.c.trace_model.ObjectSnapshot.getConstructor(this.category,this.name))(this,a,f);this.snapshots.push(a);return a},wasDeleted:function(a){var f;if(0<this.snapshots.length&&(f=this.snapshots[this.snapshots.length-1],f.ts>a))throw Error("Instance cannot be deleted at ts="+a+". A snapshot exists that is older.");this.deletionTs=a;this.deletionTsWasExplicit=!0},preInitialize:function(){for(var a=
0;a<this.snapshots.length;a++)this.snapshots[a].preInitialize()},initialize:function(){for(var a=0;a<this.snapshots.length;a++)this.snapshots[a].initialize()},getSnapshotAt:function(a){if(a<this.creationTs){if(this.creationTsWasExplicit)throw Error("ts must be within lifetime of this instance");return this.snapshots[0]}if(a>this.deletionTs)throw Error("ts must be within lifetime of this instance");var f=this.snapshots;a=tv.b.findLowIndexInSortedIntervals(f,function(a){return a.ts},function(a,e){return e==
f.length-1?f[e].objectInstance.deletionTs:f[e+1].ts-f[e].ts},a);return 0>a?this.snapshots[0]:a>=this.snapshots.length?this.snapshots[this.snapshots.length-1]:this.snapshots[a]},updateBounds:function(){this.bounds.reset();this.bounds.addValue(this.creationTs);this.deletionTs!=Number.MAX_VALUE?this.bounds.addValue(this.deletionTs):0<this.snapshots.length&&this.bounds.addValue(this.snapshots[this.snapshots.length-1].ts)},shiftTimestampsForward:function(a){this.creationTs+=a;this.deletionTs!=Number.MAX_VALUE&&
(this.deletionTs+=a);this.snapshots.forEach(function(f){f.ts+=a})}};tv.c.trace_model.EventRegistry.register(d,{name:"objectInstance",pluralName:"objectInstances",singleViewElementName:"tv-c-single-object-instance-sub-view",multiViewElementName:"tv-c-multi-object-sub-view"});var c=new tv.b.ExtensionRegistryOptions(tv.b.TYPE_BASED_REGISTRY_MODE);c.mandatoryBaseClass=d;c.defaultConstructor=d;tv.b.decorateExtensionRegistry(d,c);return{ObjectInstance:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(c,a,f){this.createObjectInstanceFunction_=c;this.parent=a;this.id=f;this.instances=[]}d.prototype={idWasCreated:function(c,a,f){if(0==this.instances.length)return this.instances.push(this.createObjectInstanceFunction_(this.parent,this.id,c,a,f)),this.instances[0].creationTsWasExplicit=!0,this.instances[0];var b=this.instances[this.instances.length-1];if(f<b.deletionTs)throw Error("Mutation of the TimeToObjectInstanceMap must be done in ascending timestamp order.");
b=this.createObjectInstanceFunction_(this.parent,this.id,c,a,f);b.creationTsWasExplicit=!0;this.instances.push(b);return b},addSnapshot:function(c,a,f,b,e){0==this.instances.length&&this.instances.push(this.createObjectInstanceFunction_(this.parent,this.id,c,a,f,e));var d=tv.b.findLowIndexInSortedIntervals(this.instances,function(a){return a.creationTs},function(a){return a.deletionTs-a.creationTs},f);if(0>d){d=this.instances[0];if(f>d.deletionTs||d.creationTsWasExplicit)throw Error("At the provided timestamp, no instance was still alive");
if(0!=d.snapshots.length)throw Error("Cannot shift creationTs forward, snapshots have been added. First snap was at ts="+d.snapshots[0].ts+" and creationTs was "+d.creationTs);d.creationTs=f}else if(d>=this.instances.length)if(d=this.instances[this.instances.length-1],f>=d.deletionTs)d=this.createObjectInstanceFunction_(this.parent,this.id,c,a,f,e),this.instances.push(d);else{for(var g,d=this.instances.length-1;0<=d;d--){c=this.instances[d];if(f>=c.deletionTs)break;0==c.creationTsWasExplicit&&0==
c.snapshots.length&&(g=d)}if(void 0===g)throw Error("Cannot add snapshot. No instance was alive that was mutable.");d=this.instances[g];d.creationTs=f}else d=this.instances[d];return d.addSnapshot(f,b,a,e)},get lastInstance(){return 0==this.instances.length?void 0:this.instances[this.instances.length-1]},idWasDeleted:function(c,a,f){0==this.instances.length&&this.instances.push(this.createObjectInstanceFunction_(this.parent,this.id,c,a,f));var b=this.instances[this.instances.length-1];if(f<b.creationTs)throw Error("Cannot delete a id before it was crated");
if(b.deletionTs==Number.MAX_VALUE)return b.wasDeleted(f),b;if(f<b.deletionTs)throw Error("id was already deleted earlier.");b=this.createObjectInstanceFunction_(this.parent,this.id,c,a,f);this.instances.push(b);b.wasDeleted(f);return b},getInstanceAt:function(c){c=tv.b.findLowIndexInSortedIntervals(this.instances,function(a){return a.creationTs},function(a){return a.deletionTs-a.creationTs},c);return 0>c?this.instances[0].creationTsWasExplicit?void 0:this.instances[0]:c>=this.instances.length?void 0:
this.instances[c]},logToConsole:function(){for(var c=0;c<this.instances.length;c++){var a=this.instances[c],f="",b="";a.creationTsWasExplicit&&(f="(explicitC)");a.deletionTsWasExplicit&&(b="(explicit)");console.log(a.creationTs,f,a.deletionTs,b,a.category,a.name,a.snapshots.length+" snapshots")}}};return{TimeToObjectInstanceMap:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(c){this.parent=c;this.bounds=new tv.b.Range;this.instanceMapsById_={};this.instancesByTypeName_={};this.createObjectInstance_=this.createObjectInstance_.bind(this)}d.prototype={__proto__:Object.prototype,createObjectInstance_:function(c,a,f,b,e,d){c=new (tv.c.trace_model.ObjectInstance.getConstructor(f,b))(c,a,f,b,e,d);a=c.typeName;f=this.instancesByTypeName_[a];f||(f=[],this.instancesByTypeName_[a]=f);f.push(c);return c},getOrCreateInstanceMap_:function(c){var a=
this.instanceMapsById_[c];if(a)return a;a=new tv.c.trace_model.TimeToObjectInstanceMap(this.createObjectInstance_,this.parent,c);return this.instanceMapsById_[c]=a},idWasCreated:function(c,a,f,b){return this.getOrCreateInstanceMap_(c).idWasCreated(a,f,b)},addSnapshot:function(c,a,f,b,e,d){c=this.getOrCreateInstanceMap_(c).addSnapshot(a,f,b,e,d);if(c.objectInstance.category!=a)throw Error("Added snapshot name="+f+" with cat="+a+" impossible. It instance was created/snapshotted with cat="+c.objectInstance.category+
" name="+c.objectInstance.name);if(d&&c.objectInstance.baseTypeName!=d)throw Error("Could not add snapshot with baseTypeName="+d+". It was previously created with name="+c.objectInstance.baseTypeName);if(c.objectInstance.name!=f)throw Error("Could not add snapshot with name="+f+". It was previously created with name="+c.objectInstance.name);return c},idWasDeleted:function(c,a,f,b){if(c=this.getOrCreateInstanceMap_(c).idWasDeleted(a,f,b)){if(c.category!=a)throw Error("Deleting object "+c.name+" with a different category than when it was created. It previous had cat="+
c.category+" but the delete command had cat="+a);if(c.baseTypeName!=f)throw Error("Deletion requested for name="+f+" could not proceed: An existing object with baseTypeName="+c.baseTypeName+" existed.");}},autoDeleteObjects:function(c){tv.b.iterItems(this.instanceMapsById_,function(a,f){var b=f.lastInstance;b.deletionTs==Number.MAX_VALUE&&(f.idWasDeleted(b.category,b.name,c),b.deletionTsWasExplicit=!1)})},getObjectInstanceAt:function(c,a){var f=this.instanceMapsById_[c];return f?f.getInstanceAt(a):
void 0},getSnapshotAt:function(c,a){var f=this.getObjectInstanceAt(c,a);return f?f.getSnapshotAt(a):void 0},iterObjectInstances:function(c,a){a=a||this;tv.b.iterItems(this.instanceMapsById_,function(f,b){b.instances.forEach(c,a)})},getAllObjectInstances:function(){var c=[];this.iterObjectInstances(function(a){c.push(a)});return c},getAllInstancesNamed:function(c){return this.instancesByTypeName_[c]},getAllInstancesByTypeName:function(){return this.instancesByTypeName_},preInitializeAllObjects:function(){this.iterObjectInstances(function(c){c.preInitialize()})},
initializeAllObjects:function(){this.iterObjectInstances(function(c){c.initialize()})},initializeInstances:function(){this.iterObjectInstances(function(c){c.initialize()})},updateBounds:function(){this.bounds.reset();this.iterObjectInstances(function(c){c.updateBounds();this.bounds.addRange(c.bounds)},this)},shiftTimestampsForward:function(c){this.iterObjectInstances(function(a){a.shiftTimestampsForward(c)})},addCategoriesToDict:function(c){this.iterObjectInstances(function(a){c[a.category]=!0})},
toJSON:function(){return{}},iterateAllEvents:function(c,a){this.iterObjectInstances(function(a){c.call(this,a);a.snapshots.forEach(c)},a)}};return{ObjectCollection:d}});"use strict";tv.exportTo("tv.c.trace_model",function(){function d(){}d.prototype={get stableId(){throw Error("Not implemented");}};return{EventContainer:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(a,f,b,e,d,g,h,l){c.call(this,a,f,b,e,d,g,h,l);this.subSlices=[]}var c=tv.c.trace_model.Slice;d.prototype={__proto__:c.prototype};return{ThreadSlice:d}});"use strict";
tv.exportTo("tv.b.ui",function(){return{brightenColor:function(d){var c;c=240<=d.r&&240<=d.g&&240<=d.b?-.2:.45;return{r:Math.min(255,d.r+Math.floor(d.r*c)),g:Math.min(255,d.g+Math.floor(d.g*c)),b:Math.min(255,d.b+Math.floor(d.b*c))}},colorToRGBString:function(d){return"rgb("+d.r+","+d.g+","+d.b+")"},colorToRGBAString:function(d,c){return"rgba("+d.r+","+d.g+","+d.b+","+c+")"}}});"use strict";
tv.exportTo("tv.b.ui",function(){function d(a){for(var b=0,e=0;e<a.length;++e)b=(b+37*b+11*a.charCodeAt(e))%4294967295;return b}var c=tv.b.ui.colorToRGBString,a=[{r:138,g:113,b:152},{r:175,g:112,b:133},{r:127,g:135,b:225},{r:93,g:81,b:137},{r:116,g:143,b:119},{r:178,g:214,b:122},{r:87,g:109,b:147},{r:119,g:155,b:95},{r:114,g:180,b:160},{r:132,g:85,b:103},{r:157,g:210,b:150},{r:148,g:94,b:86},{r:164,g:108,b:138},{r:139,g:191,b:150},{r:110,g:99,b:145},{r:80,g:129,b:109},{r:125,g:140,b:149},{r:93,g:124,
b:132},{r:140,g:85,b:140},{r:104,g:163,b:162},{r:132,g:141,b:178},{r:131,g:105,b:147},{r:135,g:183,b:98},{r:152,g:134,b:177},{r:141,g:188,b:141},{r:133,g:160,b:210},{r:126,g:186,b:148},{r:112,g:198,b:205},{r:180,g:122,b:195},{r:203,g:144,b:152}],f={thread_state_iowait:{r:182,g:125,b:143},thread_state_running:{r:126,g:200,b:148},thread_state_runnable:{r:133,g:160,b:210},thread_state_sleeping:{r:240,g:240,b:240},thread_state_unknown:{r:199,g:155,b:125},memory_dump:{r:0,g:0,b:180}},b=a.length;tv.b.dictionaryLength(f);
var e=function(){var b=[];b.push.apply(b,a);b.push.apply(b,tv.b.dictionaryValues(f));return b.concat(b.map(tv.b.ui.brightenColor))}(),k=e.map(c),g=k.length/2,h=function(){var b={},e=a.length;tv.b.iterItems(f,function(a,f){b[a]=e++});return b}(),l={};return{getRawColorPalette:function(){return e},getColorPalette:function(){return k},paletteProperties:{numGeneralPurposeColorIds:b,highlightIdBoost:g},getColorPaletteHighlightIdBoost:function(){return g},getColorIdForReservedName:function(a){var b=h[a];
if(void 0===b)throw Error("Unrecognized color ")+a;return b},getStringHash:d,getColorIdForGeneralPurposeString:function(a){if(void 0===l[a]){var e=d(a);l[a]=e%b}return l[a]}}});"use strict";
tv.exportTo("tv.c",function(){var d=tv.b.ui.getRawColorPalette(),c=tv.b.ui.getColorPalette(),a=tv.c.trace_model.SelectionState;return{EventPresenter:{getAlpha_:function(f){return f.selectionState===a.DIMMED?.3:1},getColorIdOffset_:function(f){return f.selectionState===a.SELECTED?tv.b.ui.paletteProperties.highlightIdBoost:0},getTextColor:function(f){return f.selectionState===a.DIMMED?"rgb(60,60,60)":"rgb(0,0,0)"},getSliceColorId:function(a){return a.colorId+this.getColorIdOffset_(a)},getSliceAlpha:function(a,
b){var e=this.getAlpha_(a);b&&(e*=.3);return e},getInstantSliceColor:function(a){var b=a.colorId+this.getColorIdOffset_(a);return tv.b.ui.colorToRGBAString(d[b],this.getAlpha_(a))},getObjectInstanceColor:function(a){a=a.colorId+this.getColorIdOffset_(a);return tv.b.ui.colorToRGBAString(d[a],.25)},getObjectSnapshotColor:function(a){a=a.objectInstance.colorId+this.getColorIdOffset_(a);return c[a]},getCounterSeriesColor:function(a,b,e){b={selectionState:b};return tv.b.ui.colorToRGBAString(d[a+this.getColorIdOffset_(b)],
this.getAlpha_(b)*(void 0!==e?e:1))},getBarSnapshotColor:function(a,b){var e=(a.objectInstance.colorId+b)%tv.b.ui.paletteProperties.numGeneralPurposeColorIds,e=e+this.getColorIdOffset_(a);return tv.b.ui.colorToRGBAString(d[e],this.getAlpha_(a))}}}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(a,f,b){this.guid_=tv.b.GUID.allocate();this.parentThread_=a;this.sliceConstructor=f||c;this.openPartialSlices_=[];this.slices=[];this.bounds=new tv.b.Range;this.topLevelSlices=[];this.name_=b}var c=tv.c.trace_model.Slice;d.prototype={__proto__:tv.c.trace_model.EventContainer.prototype,get guid(){return this.guid_},get parentThread(){return this.parentThread_},get model(){return this.parentThread_.parent.model},get stableId(){return this.parentThread_.stableId+
".SliceGroup"},getSettingsKey:function(){if(this.name_){var a=this.parentThread_.getSettingsKey();return a?a+"."+this.name:void 0}},get length(){return this.slices.length},pushSlice:function(a){this.slices.push(a);return a},pushSlices:function(a){this.slices.push.apply(this.slices,a)},beginSlice:function(a,f,b,e,c){if(this.openPartialSlices_.length&&b<this.openPartialSlices_[this.openPartialSlices_.length-1].start)throw Error("Slices must be added in increasing timestamp order");var d=tv.b.ui.getColorIdForGeneralPurposeString(f);
a=new this.sliceConstructor(a,f,d,b,e?e:{},null,c);this.openPartialSlices_.push(a);a.didNotFinish=!0;this.pushSlice(a);return a},isTimestampValidForBeginOrEnd:function(a){return this.openPartialSlices_.length?a>=this.openPartialSlices_[this.openPartialSlices_.length-1].start:!0},get openSliceCount(){return this.openPartialSlices_.length},get mostRecentlyOpenedPartialSlice(){return this.openPartialSlices_.length?this.openPartialSlices_[this.openPartialSlices_.length-1]:void 0},endSlice:function(a,
f){if(!this.openSliceCount)throw Error("endSlice called without an open slice");var b=this.openPartialSlices_[this.openSliceCount-1];this.openPartialSlices_.splice(this.openSliceCount-1,1);if(a<b.start)throw Error("Slice "+b.title+" end time is before its start.");b.duration=a-b.start;b.didNotFinish=!1;f&&void 0!==b.cpuStart&&(b.cpuDuration=f-b.cpuStart);return b},pushCompleteSlice:function(a,f,b,e,c,d,h){var l=tv.b.ui.getColorIdForGeneralPurposeString(f);a=new this.sliceConstructor(a,f,l,b,h?h:{},
e,c,d);void 0===e&&(a.didNotFinish=!0);this.pushSlice(a);return a},autoCloseOpenSlices:function(a){a||(this.updateBounds(),a=this.bounds.max);for(var f=0;f<this.slices.length;f++){var b=this.slices[f];b.didNotFinish&&(b.duration=a-b.start)}this.openPartialSlices_=[]},shiftTimestampsForward:function(a){for(var f=0;f<this.slices.length;f++){var b=this.slices[f];b.start+=a}},updateBounds:function(){this.bounds.reset();for(var a=0;a<this.slices.length;a++)this.bounds.addValue(this.slices[a].start),this.bounds.addValue(this.slices[a].end)},
copySlice:function(a){var f=new this.sliceConstructor(a.category,a.title,a.colorId,a.start,a.args,a.duration,a.cpuStart,a.cpuDuration);f.didNotFinish=a.didNotFinish;return f},iterateAllEvents:function(a,f){this.slices.forEach(a,f)},iterateAllEventContainers:function(a){a(this)},toJSON:function(){return{}},createSubSlices:function(){function a(b,e){if(b.bounds(e)){if(b.subSlices&&0<b.subSlices.length&&a(b.subSlices[b.subSlices.length-1],e))return!0;b.selfTime||(b.selfTime=b.duration);!b.cpuSelfTime&&
b.cpuDuration&&(b.cpuSelfTime=b.cpuDuration);e.parentSlice=b;b.subSlices||(b.subSlices=[]);b.subSlices.push(e);b.selfTime-=e.duration;e.cpuDuration&&(b.cpuSelfTime-=e.cpuDuration);return!0}return!1}if(this.slices.length){for(var f=[],b=0;b<this.slices.length;b++)this.slices[b].subSlices&&this.slices[b].subSlices.splice(0,this.slices[b].subSlices.length),f.push(b);var e=this.slices;f.sort(function(a,b){var f=e[a],c=e[b];return f.start!=c.start?f.start-c.start:a-b});var c=this.slices[f[0]];this.topLevelSlices=
[];this.topLevelSlices.push(c);for(b=1;b<f.length;b++){var d=this.slices[f[b]];a(c,d)||(c=d,this.topLevelSlices.push(c))}}}};d.merge=function(a,f){if(0<a.openPartialSlices_.length)throw Error("groupA has open partial slices");if(0<f.openPartialSlices_.length)throw Error("groupB has open partial slices");if(a.parentThread!=f.parentThread)throw Error("Different parent threads. Cannot merge");for(var b=new d(a.parentThread),e=a.slices,c=f.slices,g=0,h=0,l=[],m=[],n=function(a){for(var e=0;e<m.length;e++){var f=
m[e],c=f.end;if(a<f.start||c<a)throw Error("slice should not be split");var d=b.copySlice(f);d.start=a;d.duration=c-a;-1==d.title.indexOf(" (cont.)")&&(d.title+=" (cont.)");f.duration=a-f.start;m[e]=d;b.pushSlice(d)}},p=function(a){for(;0<l.length||0<m.length;){var b=l[l.length-1],e=m[m.length-1],b=b&&b.end,e=e&&e.end;if((void 0===b||b>a)&&(void 0===e||e>a))break;void 0===e||b<e?(n(b),l.pop()):m.pop()}};g<e.length||h<c.length;){var u=e[g],v=c[h];void 0===u||void 0!==v&&u.start>v.start?(u=b.copySlice(v),
v=!0,h++):(u=b.copySlice(u),v=!1,g++);p(u.start);b.pushSlice(u);v?m.push(u):(n(u.start),l.push(u))}p();return b};return{SliceGroup:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(a,f,b,e,c){tv.c.trace_model.Slice.apply(this,arguments)}d.prototype={__proto__:tv.c.trace_model.Slice.prototype,toJSON:function(){for(var a={},f=Object.keys(this),b=0;b<f.length;b++){var e=f[b];"function"!=typeof this[e]&&(a[e]="startThread"==e||"endThread"==e?this[e].guid:this[e])}return a},id:void 0,startThread:void 0,endThread:void 0,subSlices:void 0,get viewSubGroupTitle(){return this.title}};tv.c.trace_model.EventRegistry.register(d,{name:"asyncSlice",
pluralName:"asyncSlices",singleViewElementName:"tv-c-single-slice-sub-view",multiViewElementName:"tv-c-multi-slice-sub-view"});var c=new tv.b.ExtensionRegistryOptions(tv.b.TYPE_BASED_REGISTRY_MODE);c.mandatoryBaseClass=d;c.defaultConstructor=d;tv.b.decorateExtensionRegistry(d,c);return{AsyncSlice:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(c,a){this.parentThread_=c;this.guid_=tv.b.GUID.allocate();this.slices=[];this.bounds=new tv.b.Range;this.name_=a;this.viewSubGroups_=void 0}d.prototype={__proto__:tv.c.trace_model.EventContainer.prototype,get guid(){return this.guid_},get parentThread(){return this.parentThread_},get model(){return this.parentThread_.parent.model},get stableId(){return this.parentThread_.stableId+".AsyncSliceGroup"},getSettingsKey:function(){if(this.name_){var c=
this.parentThread_.getSettingsKey();return c?c+"."+this.name_:void 0}},push:function(c){this.slices.push(c)},get length(){return this.slices.length},shiftTimestampsForward:function(c){for(var a=0;a<this.slices.length;a++){var f=this.slices[a];f.start+=c;var b=function(a){if(void 0!==a&&0!==a.length)for(var f=0;f<a.length;f++)a[f].start+=c,b(a[f].subSlices)};b(f.subSlices)}},updateBounds:function(){this.bounds.reset();for(var c=0;c<this.slices.length;c++)this.bounds.addValue(this.slices[c].start),
this.bounds.addValue(this.slices[c].end)},get viewSubGroups(){if(void 0===this.viewSubGroups_){for(var c="",c=void 0!==this.name?this.name+".":"",a={},f=0;f<this.slices.length;++f){var b=this.slices[f],e=b.viewSubGroupTitle;a[e]||(a[e]=new d(this.parentThread_,c+e));a[e].slices.push(b)}this.viewSubGroups_=tv.b.dictionaryValues(a)}return this.viewSubGroups_},iterateAllEvents:function(c,a){for(var f=0;f<this.slices.length;f++){var b=this.slices[f];c.call(a,b);b.subSlices&&b.subSlices.forEach(c,a)}},
iterateAllEventContainers:function(c){c(this)},toJSON:function(){return{}}};return{AsyncSliceGroup:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(b,f,c,d,l,m,n,p){a.call(this,b,f,c,d,l,m,n,p);this.subSlices=[]}function c(a,c){function g(a,b,e,f,c,k,g,E){d.call(this,a,b,e,f,c,k,g,E);this.parentThread=h}this.guid_=tv.b.GUID.allocate();if(!a)throw Error("Parent must be provided.");this.parent=a;this.sortIndex=0;this.tid=c;this.samples_=this.name=void 0;var h=this;g.prototype={__proto__:d.prototype};this.sliceGroup=new f(this,g,"slices");this.timeSlices=void 0;this.kernelSliceGroup=new f(this,
void 0,"kernel-slices");this.asyncSliceGroup=new b(this,"async-slices");this.bounds=new tv.b.Range}var a=tv.c.trace_model.Slice,f=tv.c.trace_model.SliceGroup,b=tv.c.trace_model.AsyncSliceGroup,d=tv.c.trace_model.ThreadSlice;d.prototype={__proto__:a.prototype};c.prototype={__proto__:tv.c.trace_model.EventContainer.prototype,get guid(){return this.guid_},get stableId(){return this.parent.stableId+"."+this.tid},compareTo:function(a){return c.compare(this,a)},toJSON:function(){for(var a={},b=Object.keys(this),
f=0;f<b.length;f++){var c=b[f];"function"!=typeof this[c]&&(a[c]="parent"==c?this[c].guid:this[c])}return a},shiftTimestampsForward:function(a){this.sliceGroup.shiftTimestampsForward(a);if(this.timeSlices)for(var b=0;b<this.timeSlices.length;b++)this.timeSlices[b].start+=a;this.kernelSliceGroup.shiftTimestampsForward(a);this.asyncSliceGroup.shiftTimestampsForward(a)},get isEmpty(){return this.sliceGroup.length||this.sliceGroup.openSliceCount||this.timeSlices&&this.timeSlices.length||this.kernelSliceGroup.length||
this.asyncSliceGroup.length||this.samples_.length?!1:!0},updateBounds:function(){this.bounds.reset();this.sliceGroup.updateBounds();this.bounds.addRange(this.sliceGroup.bounds);this.kernelSliceGroup.updateBounds();this.bounds.addRange(this.kernelSliceGroup.bounds);this.asyncSliceGroup.updateBounds();this.bounds.addRange(this.asyncSliceGroup.bounds);this.timeSlices&&this.timeSlices.length&&(this.bounds.addValue(this.timeSlices[0].start),this.bounds.addValue(this.timeSlices[this.timeSlices.length-1].end));
this.samples_&&this.samples_.length&&(this.bounds.addValue(this.samples_[0].start),this.bounds.addValue(this.samples_[this.samples_.length-1].end))},addCategoriesToDict:function(a){for(var b=0;b<this.sliceGroup.length;b++)a[this.sliceGroup.slices[b].category]=!0;for(b=0;b<this.kernelSliceGroup.length;b++)a[this.kernelSliceGroup.slices[b].category]=!0;for(b=0;b<this.asyncSliceGroup.length;b++)a[this.asyncSliceGroup.slices[b].category]=!0;if(this.samples_)for(b=0;b<this.samples_.length;b++)a[this.samples_[b].category]=
!0},autoCloseOpenSlices:function(a){this.sliceGroup.autoCloseOpenSlices(a);this.kernelSliceGroup.autoCloseOpenSlices(a)},mergeKernelWithUserland:function(){if(0<this.kernelSliceGroup.length){var a=f.merge(this.sliceGroup,this.kernelSliceGroup);this.sliceGroup.slices=a.slices;this.kernelSliceGroup=new f(this);this.updateBounds()}},createSubSlices:function(){this.sliceGroup.createSubSlices();this.samples_=this.parent.model.samples.filter(function(a){return a.thread==this},this)},get userFriendlyName(){return this.name||
this.tid},get userFriendlyDetails(){return"tid: "+this.tid+(this.name?", name: "+this.name:"")},getSettingsKey:function(){if(this.name){var a=this.parent.getSettingsKey();return a?a+"."+this.name:void 0}},indexOfTimeSlice:function(a){var b=tv.b.findLowIndexInSortedArray(this.timeSlices,function(a){return a.start},a.start);return this.timeSlices[b]!==a?void 0:b},iterateAllEvents:function(a,b){this.sliceGroup.iterateAllEvents(a,b);this.kernelSliceGroup.iterateAllEvents(a,b);this.asyncSliceGroup.iterateAllEvents(a,
b);this.timeSlices&&this.timeSlices.length&&this.timeSlices.forEach(a,b)},iterateAllPersistableObjects:function(a){a(this);this.sliceGroup.length&&a(this.sliceGroup);this.asyncSliceGroup.viewSubGroups.forEach(a)},iterateAllEventContainers:function(a){a(this);this.sliceGroup.length&&this.sliceGroup.iterateAllEventContainers(a);this.kernelSliceGroup.length&&this.kernelSliceGroup.iterateAllEventContainers(a);this.asyncSliceGroup.length&&this.asyncSliceGroup.iterateAllEventContainers(a)},get samples(){return this.samples_}};
c.compare=function(a,b){var f=a.parent.compareTo(b.parent);return f||(f=a.sortIndex-b.sortIndex)?f:(f=tv.b.comparePossiblyUndefinedValues(a.name,b.name,function(a,b){return a.localeCompare(b)}))?f:a.tid-b.tid};return{Thread:c}});"use strict";
tv.exportTo("tv.c",function(){function d(a){this.model=a;this.objectsByKey_=[];this.nonuniqueKeys_=[];this.buildObjectsByKeyMap_();this.removeNonuniqueKeysFromSettings_();this.ephemeralSettingsByGUID_={}}var c=tv.b.Settings;d.prototype={buildObjectsByKeyMap_:function(){var a=[];this.model.iterateAllPersistableObjects(function(b){a.push(b)});for(var f={},b=0;b<a.length;b++){var e=a[b],c=e.getSettingsKey();c&&(f[c]=void 0===f[c]?e:"nonuniqueKey")}var d={};tv.b.dictionaryKeys(f).forEach(function(a){"nonuniqueKey"===
f[a]&&(delete f[a],d[a]=!0)});this.nonuniqueKeys=d;this.objectsByKey_=f},removeNonuniqueKeysFromSettings_:function(){var a=c.get("trace_model_settings",{}),f=!1;tv.b.dictionaryKeys(a).forEach(function(b){this.nonuniqueKeys[b]&&(f=!0,delete a[b])},this);f&&c.set("trace_model_settings",a)},hasUniqueSettingKey:function(a){return(a=a.getSettingsKey())?void 0!==this.objectsByKey_[a]:!1},getSettingFor:function(a,f,b){var e=a.getSettingsKey();if(!e||!this.objectsByKey_[e])return a=this.getEphemeralSettingsFor_(a),
f=a[f],void 0!==f?f:b;a=c.get("trace_model_settings",{});a[e]||(a[e]={});f=a[e][f];return void 0!==f?f:b},setSettingFor:function(a,f,b){var e=a.getSettingsKey();e&&this.objectsByKey_[e]?(a=c.get("trace_model_settings",{}),a[e]||(a[e]={}),a[e][f]!==b&&(a[e][f]=b,c.set("trace_model_settings",a))):this.getEphemeralSettingsFor_(a)[f]=b},getEphemeralSettingsFor_:function(a){if(void 0===a.guid)throw Error("Only objects with GUIDs can be persisted");void 0===this.ephemeralSettingsByGUID_[a.guid]&&(this.ephemeralSettingsByGUID_[a.guid]=
{});return this.ephemeralSettingsByGUID_[a.guid]}};return{TraceModelSettings:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(a){if(!a)throw Error("Must provide a model");this.guid_=tv.b.GUID.allocate();this.model=a;this.threads={};this.counters={};this.objects=new tv.c.trace_model.ObjectCollection(this);this.bounds=new tv.b.Range;this.sortIndex=0}var c=tv.c.trace_model.Thread,a=tv.c.trace_model.Counter;d.compare=function(a,b){return a.sortIndex-b.sortIndex};d.prototype={__proto__:tv.c.trace_model.EventContainer.prototype,get guid(){return this.guid_},get stableId(){throw Error("Not implemented");
},get numThreads(){var a=0,b;for(b in this.threads)a++;return a},toJSON:function(){for(var a={},b=Object.keys(this),e=0;e<b.length;e++){var c=b[e];"function"!=typeof this[c]&&"model"!=c&&(a[c]=this[c])}return a},shiftTimestampsForward:function(a){for(var b in this.threads)this.threads[b].shiftTimestampsForward(a);for(var e in this.counters)this.counters[e].shiftTimestampsForward(a);this.objects.shiftTimestampsForward(a)},autoCloseOpenSlices:function(a){for(var b in this.threads)this.threads[b].autoCloseOpenSlices(a)},
autoDeleteObjects:function(a){this.objects.autoDeleteObjects(a)},preInitializeObjects:function(){this.objects.preInitializeAllObjects()},initializeObjects:function(){this.objects.initializeAllObjects()},mergeKernelWithUserland:function(){for(var a in this.threads)this.threads[a].mergeKernelWithUserland()},updateBounds:function(){this.bounds.reset();for(var a in this.threads)this.threads[a].updateBounds(),this.bounds.addRange(this.threads[a].bounds);for(var b in this.counters)this.counters[b].updateBounds(),
this.bounds.addRange(this.counters[b].bounds);this.objects.updateBounds();this.bounds.addRange(this.objects.bounds)},addCategoriesToDict:function(a){for(var b in this.threads)this.threads[b].addCategoriesToDict(a);for(var e in this.counters)a[this.counters[e].category]=!0;this.objects.addCategoriesToDict(a)},findAllThreadsNamed:function(a){var b=[],e;for(e in this.threads){var c=this.threads[e];c.name==a&&b.push(c)}return b},pruneEmptyContainers:function(){var a={},b;for(b in this.threads){var e=
this.threads[b];e.isEmpty||(a[b]=e)}this.threads=a},getThread:function(a){return this.threads[a]},getOrCreateThread:function(a){this.threads[a]||(this.threads[a]=new c(this,a));return this.threads[a]},getOrCreateCounter:function(f,b){var e=f+"."+b;this.counters[e]||(this.counters[e]=new a(this,e,f,b));return this.counters[e]},getSettingsKey:function(){throw Error("Not implemented");},createSubSlices:function(){for(var a in this.threads)this.threads[a].createSubSlices()},iterateAllEvents:function(a,
b){for(var e in this.threads)this.threads[e].iterateAllEvents(a,b);for(var c in this.counters)this.counters[c].iterateAllEvents(a,b);this.objects.iterateAllEvents(a,b)},iterateAllPersistableObjects:function(a){a(this);for(var b in this.threads)this.threads[b].iterateAllPersistableObjects(a)}};return{ProcessBase:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(f){if(void 0===f)throw Error("model must be provided");a.call(this,f);this.cpus={};this.softwareMeasuredCpuCount_=void 0}var c=tv.c.trace_model.Cpu,a=tv.c.trace_model.ProcessBase;d.compare=function(a,b){return 0};d.prototype={__proto__:a.prototype,compareTo:function(a){return d.compare(this,a)},get userFriendlyName(){return"Kernel"},get userFriendlyDetails(){return"Kernel"},get stableId(){return"Kernel"},getOrCreateCpu:function(a){this.cpus[a]||
(this.cpus[a]=new c(this,a));return this.cpus[a]},get softwareMeasuredCpuCount(){return this.softwareMeasuredCpuCount_},set softwareMeasuredCpuCount(a){if(void 0!==this.softwareMeasuredCpuCount_&&this.softwareMeasuredCpuCount_!==a)throw Error("Cannot change the softwareMeasuredCpuCount once it is set");this.softwareMeasuredCpuCount_=a},get bestGuessAtCpuCount(){var a=tv.b.dictionaryLength(this.cpus);return 0!==a?a:this.softwareMeasuredCpuCount},shiftTimestampsForward:function(f){a.prototype.shiftTimestampsForward.call(this);
for(var b in this.cpus)this.cpus[b].shiftTimestampsForward(f)},updateBounds:function(){a.prototype.updateBounds.call(this);for(var f in this.cpus){var b=this.cpus[f];b.updateBounds();this.bounds.addRange(b.bounds)}},createSubSlices:function(){a.prototype.createSubSlices.call(this);for(var f in this.cpus)this.cpus[f].createSubSlices()},addCategoriesToDict:function(f){a.prototype.addCategoriesToDict.call(this,f);for(var b in this.cpus)this.cpus[b].addCategoriesToDict(f)},getSettingsKey:function(){return"kernel"},
iterateAllEvents:function(f,b){for(var e in this.cpus)this.cpus[e].iterateAllEvents(f,b);a.prototype.iterateAllEvents.call(this,f,b)},iterateAllEventContainers:function(a){a(this)}};return{Kernel:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(a,f){if(void 0===a)throw Error("model must be provided");if(void 0===f)throw Error("pid must be provided");tv.c.trace_model.ProcessBase.call(this,a);this.pid=f;this.name=void 0;this.labels=[];this.instantEvents=[];this.memoryDumps=[]}var c=tv.c.trace_model.ProcessBase;d.compare=function(a,f){var b=tv.c.trace_model.ProcessBase.compare(a,f);return b||(b=tv.b.comparePossiblyUndefinedValues(a.name,f.name,function(a,b){return a.localeCompare(b)}))?b:
(b=tv.b.compareArrays(a.labels,f.labels,function(a,b){return a.localeCompare(b)}))?b:a.pid-f.pid};d.prototype={__proto__:tv.c.trace_model.ProcessBase.prototype,get stableId(){return this.pid},compareTo:function(a){return d.compare(this,a)},pushInstantEvent:function(a){this.instantEvents.push(a)},addLabelIfNeeded:function(a){for(var f=0;f<this.labels.length;f++)if(this.labels[f]===a)return;this.labels.push(a)},get userFriendlyName(){var a;a=this.name?this.name+" (pid "+this.pid+")":"Process "+this.pid;
this.labels.length&&(a+=": "+this.labels.join(", "));return a},get userFriendlyDetails(){return this.name?this.name+" (pid "+this.pid+")":"pid: "+this.pid},getSettingsKey:function(){return this.name?this.labels.length?"processes."+this.name+"."+this.labels.join("."):"processes."+this.name:void 0},shiftTimestampsForward:function(a){for(var f in this.instantEvents)this.instantEvents[f].start+=a;for(f=0;f<this.memoryDumps.length;f++)this.memoryDumps[f].shiftTimestampsForward(a);tv.c.trace_model.ProcessBase.prototype.shiftTimestampsForward.apply(this,
arguments)},updateBounds:function(){tv.c.trace_model.ProcessBase.prototype.updateBounds.apply(this);for(var a=0;a<this.memoryDumps.length;a++)this.memoryDumps[a].addBoundsToRange(this.bounds)},iterateAllEvents:function(a,f){this.instantEvents.forEach(a,f);this.memoryDumps.forEach(a,f);c.prototype.iterateAllEvents.call(this,a,f)},iterateAllEventContainers:function(a){a(this);for(var f in this.threads)this.threads[f].iterateAllEventContainers(a)},sortMemoryDumps:function(){this.memoryDumps.sort(function(a,
f){return a.start-f.start})}};return{Process:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(c,a,f,b,e,d,g){tv.c.trace_model.TimedEvent.call(this,b);this.title=f;this.cpu=c;this.thread=a;this.leafStackFrame=e;this.weight=d;this.args=g||{}}d.prototype={__proto__:tv.c.trace_model.TimedEvent.prototype,get colorId(){return this.leafStackFrame.colorId},toJSON:function(){return{}},get stackTrace(){return this.leafStackFrame.stackTrace},getUserFriendlyStackTrace:function(){return this.leafStackFrame.getUserFriendlyStackTrace()}};tv.c.trace_model.EventRegistry.register(d,
{name:"sample",pluralName:"samples",singleViewElementName:"tv-c-single-sample-sub-view",multiViewElementName:"tv-c-multi-sample-sub-view"});return{Sample:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(c,a,f,b,e){if(void 0===a)throw Error("id must be given");this.parentFrame_=c;this.id=a;this.category=f||"";this.title=b;this.colorId=e;this.children=[];this.parentFrame_&&this.parentFrame_.addChild(this)}d.prototype={get parentFrame(){return this.parentFrame_},set parentFrame(c){this.parentFrame_&&this.parentFrame_.removeChild(this);(this.parentFrame_=c)&&this.parentFrame_.addChild(this)},addChild:function(c){this.children.push(c)},removeChild:function(c){c=
this.children.indexOf(c.id);if(-1==c)throw Error("omg");this.children.splice(c,1)},removeAllChildren:function(){for(var c=0;c<this.children.length;c++)this.children[c].parentFrame_=void 0;this.children.splice(0,this.children.length)},toJSON:function(){return{}},get stackTrace(){for(var c=[],a=this;a;)c.push(a),a=a.parentFrame;c.reverse();return c},getUserFriendlyStackTrace:function(){return this.stackTrace.map(function(c){return c.category+": "+c.title})}};return{StackFrame:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(a,e,f,c,d){tv.c.trace_model.TimedEvent.call(this);this.category=a||"";this.title=e;this.colorId=f;this.start=c;this.args=d;this.type=void 0}function c(a,e,c,g,h){d.apply(this,arguments);this.type=f.GLOBAL}function a(a,e,c,g,h){d.apply(this,arguments);this.type=f.PROCESS}var f={GLOBAL:1,PROCESS:2};d.prototype={__proto__:tv.c.trace_model.TimedEvent.prototype,selected:!1};c.prototype={__proto__:d.prototype};a.prototype={__proto__:d.prototype};tv.c.trace_model.EventRegistry.register(d,
{name:"instantEvent",pluralName:"instantEvents",singleViewElementName:"tv-c-single-instant-event-sub-view",multiViewElementName:"tv-c-multi-instant-event-sub-view"});return{GlobalInstantEvent:c,ProcessInstantEvent:a,InstantEventType:f,InstantEvent:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(c,a,f,b,e,d){tv.c.trace_model.TimedEvent.call(this,e);this.category=c||"";this.title=f;this.colorId=b;this.start=e;this.args=d;this.id=a;this.previousFlowEvent_=this.nextFlowEvent_=void 0}d.prototype={__proto__:tv.c.trace_model.TimedEvent.prototype,set nextFlowEvent(c){this.nextFlowEvent_=c},set previousFlowEvent(c){this.previousFlowEvent_=c},get nextFlowEvent(){return this.nextFlowEvent_},get previousFlowEvent(){return this.previousFlowEvent_}};
tv.c.trace_model.EventRegistry.register(d,{name:"flowEvent",pluralName:"flowEvents",singleViewElementName:"tv-c-single-flow-event-sub-view",multiViewElementName:"tv-c-multi-flow-event-sub-view"});return{FlowEvent:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(c,a,f){tv.c.trace_model.TimedEvent.call(this,a);this.model=c;this.processMemoryDumps={};this.args=f}d.prototype={__proto__:tv.c.trace_model.TimedEvent.prototype,shiftTimestampsForward:function(c){this.start+=c},toJSON:function(){for(var c={},a=Object.keys(this),f=0;f<a.length;f++){var b=a[f];"function"!=typeof this[b]&&"model"!=b&&"processMemoryDumps"!=b&&(c[b]=this[b])}return c}};tv.c.trace_model.EventRegistry.register(d,{name:"globalMemoryDump",
pluralName:"globalMemoryDumps",singleViewElementName:"tv-c-single-global-memory-dump-sub-view",multiViewElementName:"tv-c-multi-global-memory-dump-sub-view"});return{GlobalMemoryDump:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(c,a,f,b){tv.c.trace_model.TimedEvent.call(this,f);this.process=a;this.globalMemoryDump=c;this.args=b}d.prototype={__proto__:tv.c.trace_model.TimedEvent.prototype,shiftTimestampsForward:function(c){this.start+=c},toJSON:function(){for(var c={},a=Object.keys(this),f=0;f<a.length;f++){var b=a[f];"function"!=typeof this[b]&&"process"!=b&&"globalMemoryDump"!=b&&(c[b]=this[b])}return c}};tv.c.trace_model.EventRegistry.register(d,{name:"processMemoryDump",
pluralName:"processMemoryDumps",singleViewElementName:"tv-c-single-process-memory-dump-sub-view",multiViewElementName:"tv-c-multi-process-memory-dump-sub-view"});return{ProcessMemoryDump:d}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(c,a,f,b,e){tv.c.trace_model.TimedEvent.call(this,b);this.title=c;this.colorId=a;this.severity=f;this.args=void 0!==e?e:{};this.duration=0}d.prototype={__proto__:tv.c.trace_model.TimedEvent.prototype};tv.c.trace_model.EventRegistry.register(d,{name:"alert",pluralName:"alerts",singleViewElementName:"tv-c-single-alert-sub-view",multiViewElementName:"tv-c-multi-alert-sub-view"});return{Alert:d,ALERT_SEVERITY:{CRITICAL:"high",WARNING:"warning"}}});"use strict";
tv.exportTo("tv.c.trace_model",function(){function d(c,a,f,b){tv.c.trace_model.TimedEvent.call(this,f);this.title=c;this.colorId=a;this.duration=b}d.prototype={__proto__:tv.c.trace_model.TimedEvent.prototype,get subSlices(){return[]}};tv.c.trace_model.EventRegistry.register(d,{name:"interaction",pluralName:"interactions",singleViewElementName:"tv-c-single-interaction-record-sub-view",multiViewElementName:"tv-c-multi-interaction-record-sub-view"});return{InteractionRecord:d}});"use strict";
tv.exportTo("tv.c",function(){function d(){this.pruneEmptyContainers=this.shiftWorldToZero=!0;this.customizeModelCallback=void 0;this.auditorConstructors=tv.c.Auditor.getAllRegisteredTypeInfos().map(function(a){return a.constructor})}function c(a,e){this.kernel=new f(this);this.processes={};this.metadata=[];this.categories=[];this.bounds=new tv.b.Range;this.instantEvents=[];this.flowEvents=[];this.stackFrames={};this.samples=[];this.alerts=[];this.interaction_records=[];this.flowIntervalTree=new tv.b.IntervalTree(function(a){return a.start},
function(a){return a.start});this.globalMemoryDumps=[];this.importWarnings_=[];this.reportedImportWarnings_={};var c=d.fromArguments(arguments,1);a&&this.importTraces([a],c)}var a=tv.c.trace_model.Process,f=tv.c.trace_model.Kernel;d.fromArguments=function(a,e){var f=a[e+0];if("object"===typeof f){if(!(f instanceof d))throw Error("Unexpected");return f}f=new d;void 0!==a[e]&&(f.shiftWorldToZero=a[e]);void 0!==a[e+1]&&(f.pruneEmptyContainers=a[e+1]);a[e+2]&&(f.customizeModelCallback=a[e+2]);return f};
c.prototype={__proto__:tv.b.EventTarget.prototype,get numProcesses(){var a=0,e;for(e in this.processes)a++;return a},getProcess:function(a){return this.processes[a]},getOrCreateProcess:function(b){this.processes[b]||(this.processes[b]=new a(this,b));return this.processes[b]},pushInstantEvent:function(a){this.instantEvents.push(a)},addStackFrame:function(a){if(this.stackFrames[a.id])throw Error("Stack frame already exists");return this.stackFrames[a.id]=a},addInteractionRecord:function(a){this.interaction_records.push(a)},
updateCategories_:function(){var a={};this.kernel.addCategoriesToDict(a);for(var e in this.processes)this.processes[e].addCategoriesToDict(a);this.categories=[];for(var f in a)""!=f&&this.categories.push(f)},updateBounds:function(){this.bounds.reset();this.kernel.updateBounds();this.bounds.addRange(this.kernel.bounds);for(var a in this.processes)this.processes[a].updateBounds(),this.bounds.addRange(this.processes[a].bounds);for(a=0;a<this.globalMemoryDumps.length;a++)this.globalMemoryDumps[a].addBoundsToRange(this.bounds);
this.alerts.forEach(function(a){this.bounds.addValue(a.start);this.bounds.addValue(a.end)},this);this.interaction_records.forEach(function(a){this.bounds.addValue(a.start);this.bounds.addValue(a.end)},this)},shiftWorldToZero:function(){if(!this.bounds.isEmpty){var a=this.bounds.min;this.kernel.shiftTimestampsForward(-a);for(var e in this.instantEvents)this.instantEvents[e].start-=a;for(var f in this.processes)this.processes[f].shiftTimestampsForward(-a);for(e=0;e<this.samples.length;e++)this.samples[e].start-=
a;this.alerts.forEach(function(e){e.start-=a});this.interaction_records.forEach(function(e){e.start-=a});for(e=0;e<this.globalMemoryDumps.length;e++)this.globalMemoryDumps[e].shiftTimestampsForward(-a);this.updateBounds()}},getAllThreads:function(){var a=[],e;for(e in this.kernel.threads)a.push(c.threads[e]);for(var f in this.processes){var c=this.processes[f];for(e in c.threads)a.push(c.threads[e])}return a},getAllProcesses:function(){var a=[],e;for(e in this.processes)a.push(this.processes[e]);
return a},getAllCounters:function(){var a=[];a.push.apply(a,tv.b.dictionaryValues(this.kernel.counters));for(var e in this.processes){var f=this.processes[e],c;for(c in f.counters)a.push(f.counters[c])}return a},findAllThreadsNamed:function(a){var e=[];e.push.apply(e,this.kernel.findAllThreadsNamed(a));for(var f in this.processes)e.push.apply(e,this.processes[f].findAllThreadsNamed(a));return e},createImporter_:function(a){var e=tv.c.importer.Importer.findImporterFor(a);if(!e)throw Error("Could not find an importer for the provided eventData.");
return new e(this,a)},importTraces:function(a,e){var f=d.fromArguments(arguments,1),f=this.createImportTracesTask({update:function(a){}},a,f);tv.b.Task.RunSynchronously(f)},importTracesWithProgressDialog:function(a,e){var f=d.fromArguments(arguments,1),c=tv.b.ui.Overlay();c.title="Importing...";c.userCanClose=!1;c.msgEl=document.createElement("div");c.appendChild(c.msgEl);c.msgEl.style.margin="20px";c.update=function(a){this.msgEl.textContent=a};c.visible=!0;f=this.createImportTracesTask(c,a,f);f=
tv.b.Task.RunWhenIdle(f);f.then(function(){c.visible=!1},function(a){c.visible=!1});return f},hasEventDataDecoder_:function(a){if(0===a.length)return!1;for(var e=0;e<a.length;++e)if(!a[e].isTraceDataContainer())return!0;return!1},createImportTracesTask:function(a,e,f){var c=d.fromArguments(arguments,2);if(this.importing_)throw Error("Already importing.");this.importing_=!0;var h=new tv.b.Task(function(){a.update("I will now import your traces for you...")},this),l,m=[];l=h.after(function(){e=e.slice(0);
a.update("Creating importers...");for(var f=0;f<e.length;++f)m.push(this.createImporter_(e[f]));for(f=0;f<m.length;f++)for(var c=m[f].extractSubtraces(),d=0;d<c.length;d++)try{e.push(c[d]),m.push(this.createImporter_(c[d]))}catch(k){console.warn(k.name+": "+k.message)}if(e.length&&!this.hasEventDataDecoder_(m))throw Error("Could not find an importer for the provided eventData.");m.sort(function(a,b){return a.importPriority-b.importPriority})},this);l=l.after(function(e){m.forEach(function(f,c){e.subTask(function(){a.update("Importing "+
(c+1)+" of "+m.length);f.importEvents(0<c)},this)},this)},this);c.customizeModelCallback&&(l=l.after(function(a){c.customizeModelCallback(this)},this));l=l.after(function(e){m.forEach(function(e,f){a.update("Importing sample data "+(f+1)+"/"+m.length);e.importSampleData()},this)},this);l=l.after(function(){a.update("Autoclosing open slices...");this.samples.sort(function(a,b){return a.start-b.start});this.updateBounds();this.kernel.autoCloseOpenSlices(this.bounds.max);for(var e in this.processes)this.processes[e].autoCloseOpenSlices(this.bounds.max);
this.kernel.createSubSlices();for(e in this.processes)this.processes[e].createSubSlices()},this);l=l.after(function(e){m.forEach(function(e,f){a.update("Finalizing import "+(f+1)+"/"+m.length);e.finalizeImport()},this)},this);l=l.after(function(){a.update("Initializing objects (step 1/2)...");for(var e in this.processes)this.processes[e].preInitializeObjects()},this);c.pruneEmptyContainers&&(l=l.after(function(){a.update("Pruning empty containers...");this.kernel.pruneEmptyContainers();for(var e in this.processes)this.processes[e].pruneEmptyContainers()},
this));l=l.after(function(){a.update("Merging kernel with userland...");for(var e in this.processes)this.processes[e].mergeKernelWithUserland()},this);l=l.after(function(){a.update("Computing final world bounds...");this.updateBounds();this.updateCategories_();c.shiftWorldToZero&&this.shiftWorldToZero()},this);l=l.after(function(){a.update("Building flow event map...");for(var e=0;e<this.flowEvents.length;++e){var f=this.flowEvents[e];this.flowIntervalTree.insert(f[0],f[1])}this.flowIntervalTree.updateHighValues()},
this);l=l.after(function(){a.update("Joining object refs...");for(var e=0;e<m.length;e++)m[e].joinRefs()},this);l=l.after(function(){a.update("Cleaning up undeleted objects...");for(var e in this.processes)this.processes[e].autoDeleteObjects(this.bounds.max)},this);l=l.after(function(){a.update("Sorting memory dumps...");this.globalMemoryDumps.sort(function(a,b){return a.start-b.start});for(var e in this.processes)this.processes[e].sortMemoryDumps()},this);l=l.after(function(){a.update("Initializing objects (step 2/2)...");
for(var e in this.processes)this.processes[e].initializeObjects()},this);l=l.after(function(){a.update("Running auditors...");c.auditorConstructors.map(function(a){return new a(this)},this).forEach(function(a){a.runAudit()});this.interaction_records.sort(function(a,b){return a.start-b.start});this.alerts.sort(function(a,b){return a.start-b.start});this.updateBounds()},this);l.after(function(){this.importing_=!1},this);return h},importWarning:function(a){this.importWarnings_.push(a);!0!==this.reportedImportWarnings_[a.type]&&
(console.warn(a.message),this.reportedImportWarnings_[a.type]=!0)},get hasImportWarnings(){return 0<this.importWarnings_.length},get importWarnings(){return this.importWarnings_},iterateAllEvents:function(a,e){this.instantEvents.forEach(a,e);this.kernel.iterateAllEvents(a,e);for(var f in this.processes)this.processes[f].iterateAllEvents(a,e);this.samples.forEach(a,e);this.globalMemoryDumps.forEach(a,e)},iterateAllPersistableObjects:function(a){this.kernel.iterateAllPersistableObjects(a);for(var e in this.processes)this.processes[e].iterateAllPersistableObjects(a)},
iterateAllEventContainers:function(a){this.kernel.iterateAllEventContainers(a);for(var e in this.processes)this.processes[e].iterateAllEventContainers(a)}};return{ImportOptions:d,TraceModel:c}});"use strict";
tv.exportTo("tv.c",function(){function d(a){this.sunburst_zoom_level=void 0;this.bounds_dirty_=!0;this.bounds_=new tv.b.Range;this.length_=0;this.guid_=tv.b.GUID.allocate();this.pushed_guids_={};if(a)for(var b=0;b<a.length;b++)this.push(a[b])}var c=tv.c.trace_model.EventRegistry,a=tv.b.Event.bind(void 0,"requestSelectionChange",!0,!1);d.prototype={__proto__:Object.prototype,get bounds(){if(this.bounds_dirty_){this.bounds_.reset();for(var a=0;a<this.length_;a++)this[a].addBoundsToRange(this.bounds_);
this.bounds_dirty_=!1}return this.bounds_},get duration(){return this.bounds_.isEmpty?0:this.bounds_.max-this.bounds_.min},get length(){return this.length_},get guid(){return this.guid_},clear:function(){for(var a=0;a<this.length_;++a)delete this[a];this.length_=0;this.bounds_dirty_=!0},push:function(a){if(void 0==a.guid)throw Error("Event must have a GUID");if(this.pushed_guids_[a.guid])return a;this.pushed_guids_[a.guid]=!0;this[this.length_++]=a;this.bounds_dirty_=!0;return a},addSelection:function(a){for(var b=
0;b<a.length;b++)this.push(a[b])},subSelection:function(a,b){b=b||1;var e=new d;e.bounds_dirty_=!0;if(0>a||a+b>this.length_)throw Error("Index out of bounds");for(var c=a;c<a+b;c++)e.push(this[c]);return e},getEventsOrganizedByBaseType:function(a){var b={},e=c.getAllRegisteredTypeInfos();e.forEach(function(a){b[a.metadata.name]=new d;void 0!==this.sunburst_zoom_level&&(b[a.metadata.name].sunburst_zoom_level=this.sunburst_zoom_level)},this);this.forEach(function(a,f){var c=-1,d=void 0;e.forEach(function(b,
e){a instanceof b.constructor&&e>c&&(c=e,d=b)});if(-1==c)throw Error("Unrecgonized event type");b[d.metadata.name].push(a)});if(a){a={};for(var k in b)0<b[k].length&&(a[k]=b[k]);return a}return b},enumEventsOfType:function(a,b){for(var e=0;e<this.length_;e++)this[e]instanceof a&&b(this[e])},getShiftedSelection:function(a,b){for(var e=new d,c=0;c<this.length_;c++){var g=this[c];if(g instanceof tv.c.trace_model.FlowEvent)if(0<b&&g.nextFlowEvent){e.push(g.nextFlowEvent);continue}else if(0>b&&g.previousFlowEvent){e.push(g.previousFlowEvent);
continue}a.trackForEvent(g).addItemNearToProvidedEventToSelection(g,b,e)}return 0==e.length?void 0:e},forEach:function(a,b){for(var e=0;e<this.length;e++)a.call(b,this[e],e)},map:function(a,b){for(var e=[],c=0;c<this.length;c++)e.push(a.call(b,this[c],c));return e},every:function(a,b){for(var e=0;e<this.length;e++)if(!a.call(b,this[e],e))return!1;return!0},some:function(a,b){for(var e=0;e<this.length;e++)if(a.call(b,this[e],e))return!0;return!1}};return{Selection:d,RequestSelectionChangeEvent:a}});
"use strict";
tv.exportTo("tv.c.analysis",function(){var d=tv.c.analysis.tsRound,c=tv.c.RequestSelectionChangeEvent,a=tv.b.ui.define("a");a.prototype={__proto__:HTMLAnchorElement.prototype,decorate:function(){this.classList.add("analysis-link");this.addEventListener("click",this.onClicked_.bind(this))},onClicked_:function(){var a=new c;a.selection=this.selectionGenerator();this.dispatchEvent(a)}};var f=tv.b.ui.define("object-snapshot-link",a);f.prototype={__proto__:a.prototype,decorate:function(){a.prototype.decorate.apply(this)},set objectSnapshot(a){this.textContent=
a.objectInstance.typeName+" "+a.objectInstance.id+" @ "+d(a.ts)+" ms";this.selectionGenerator=function(){var b=new tv.c.Selection;b.push(a);return b}.bind(this)}};var b=tv.b.ui.define("object-instance-link",a);b.prototype={__proto__:a.prototype,decorate:function(){a.prototype.decorate.apply(this)},set objectInstance(a){this.textContent=a.typeName+" "+a.id;this.selectionGenerator=function(){var b=new tv.c.Selection;b.push(a);return b}.bind(this)}};return{RequestSelectionChangeEvent:c,AnalysisLink:a,
ObjectSnapshotLink:f,ObjectInstanceLink:b}});"use strict";
tv.exportTo("tv.c.analysis",function(){var d=tv.b.ui.define("x-generic-object-view");d.prototype={__proto__:HTMLUnknownElement.prototype,decorate:function(){this.object_=void 0},get object(){return this.object_},set object(a){this.object_=a;this.updateContents_()},updateContents_:function(){this.textContent="";this.appendElementsForType_("",this.object_,0,0,5,"")},appendElementsForType_:function(a,f,b,e,c,d){if(e>c)this.appendSimpleText_(a,b,"<recursion limit reached>",d);else if(void 0===f)this.appendSimpleText_(a,
b,"undefined",d);else if(null===f)this.appendSimpleText_(a,b,"null",d);else{if(!(f instanceof Object))if("string"==typeof f){var h=!1;if("{"==f[0]&&"}"==f[f.length-1]||"["==f[0]&&"]"==f[f.length-1])try{f=JSON.parse(f),h=!0}catch(l){}if(!h)return this.appendSimpleText_(a,b,'"'+f+'"',d)}else return this.appendSimpleText_(a,b,f,d);f instanceof tv.c.trace_model.ObjectSnapshot?(e=new tv.c.analysis.ObjectSnapshotLink(f),e.objectSnapshot=f,this.appendElementWithLabel_(a,b,e,d)):f instanceof tv.c.trace_model.ObjectInstance?
(e=new tv.c.analysis.ObjectInstanceLink(f),e.objectInstance=f,this.appendElementWithLabel_(a,b,e,d)):f instanceof tv.b.Rect?this.appendSimpleText_(a,b,f.toString(),d):f instanceof Array?this.appendElementsForArray_(a,f,b,e,c,d):this.appendElementsForObject_(a,f,b,e,c,d)}},appendElementsForArray_:function(a,f,b,e,c,d){if(0==f.length)this.appendSimpleText_(a,b,"[]",d);else{this.appendElementsForType_(a+"[",f[0],b,e+1,c,1<f.length?",":"]"+d);for(var h=1;h<f.length;h++)this.appendElementsForType_("",
f[h],b+a.length+1,e+1,c,h<f.length-1?",":"]"+d)}},appendElementsForObject_:function(a,f,b,e,c,d){var h=tv.b.dictionaryKeys(f);if(0==h.length)this.appendSimpleText_(a,b,"{}",d);else{this.appendElementsForType_(a+"{"+h[0]+": ",f[h[0]],b,e,c,1<h.length?",":"}"+d);for(var l=1;l<h.length;l++)this.appendElementsForType_(h[l]+": ",f[h[l]],b+a.length+1,e+1,c,l<h.length-1?",":"}"+d)}},appendElementWithLabel_:function(a,f,b,e){var c=document.createElement("div"),d=document.createElement("span");d.style.whiteSpace=
"pre";for(var h=0;h<f;h++)d.textContent+=" ";c.appendChild(d);f=document.createElement("span");f.textContent=a;c.appendChild(f);c.appendChild(b);a=document.createElement("span");a.textContent=e;c.appendChild(a);c.dataElement=b;this.appendChild(c)},appendSimpleText_:function(a,f,b,e){var c=this.ownerDocument.createElement("span");c.textContent=b;this.appendElementWithLabel_(a,f,c,e);return c}};var c=tv.b.ui.define("x-generic-object-view-with-label");c.prototype={__proto__:HTMLUnknownElement.prototype,
decorate:function(){this.labelEl_=document.createElement("div");this.genericObjectView_=new tv.c.analysis.GenericObjectView;this.appendChild(this.labelEl_);this.appendChild(this.genericObjectView_)},get label(){return this.labelEl_.textContent},set label(a){this.labelEl_.textContent=a},get object(){return this.genericObjectView_.object},set object(a){this.genericObjectView_.object=a}};return{GenericObjectView:d,GenericObjectViewWithLabel:c}});"use strict";
tv.exportTo("tv.c.analysis",function(){var d=tv.b.ui.define("div");d.prototype={__proto__:HTMLDivElement.prototype,decorate:function(){this.className="analysis-results"},get requiresTallView(){return!0},clear:function(){this.textContent=""},createSelectionChangingLink:function(c,a,f){var b=this.ownerDocument.createElement("a");tv.c.analysis.AnalysisLink.decorate(b);b.textContent=c;b.selectionGenerator=a;f&&(b.title=f);return b},appendElement_:function(c,a,f){a=c.ownerDocument.createElement(a);c.appendChild(a);
void 0!=f&&(a.textContent=f);return a},appendText_:function(c,a){c.ownerDocument.createTextNode(a);c.appendChild(textNode);return textNode},appendTableCell_:function(c,a,f,b,e){a=this.appendElement_(a,"td",b);a.className=c.className+"-col-"+f;e&&(c=document.createElement("span"),c.textContent=" "+String.fromCharCode(9888),c.title=e,a.appendChild(c));return a},appendTableCell:function(c,a,f){return this.appendTableCell_(c,a,a.children.length,f)},appendTableCellWithTooltip_:function(c,a,f,b,e){return e?
(a=this.appendElement_(a,"td"),a.className=c.className+"-col-"+f,c=this.appendElement_(a,"span",b),c.className="tooltip",c.title=e,a):this.appendTableCell_(c,a,f,b)},appendHeader:function(c){c=this.appendElement_(this,"span",c);c.className="analysis-header";return c},appendInfo:function(c,a){var f=this.appendElement_(this,"div");f.label=this.appendElement_(f,"b",c);f.value=this.appendElement_(f,"span",a);return f},appendTable:function(c,a){var f=this.appendElement_(this,"table");f.className=c+" analysis-table";
f.numColumns=a;return f},appendHeadRow:function(c){if(c.headerRow)throw Error("Only one header row allowed.");if(c.tbody||c.tfoot)throw Error("Cannot add a header row after data rows have been added.");c.headerRow=this.appendElement_(this.appendElement_(c,"thead"),"tr");c.headerRow.className="analysis-table-header";return c.headerRow},appendBodyRow:function(c){if(c.tfoot)throw Error("Cannot add a tbody row after footer rows have been added.");c.tbody||(c.tbody=this.appendElement_(c,"tbody"));var a=
this.appendElement_(c.tbody,"tr");a.className=c.headerRow?"analysis-table-row":"analysis-table-row-inverted";return a},appendFootRow:function(c){c.tfoot||(c.tfoot=this.appendElement_(c,"tfoot"),c.tfoot.rowsClassName=((c.headerRow?1:0)+(c.tbody?c.tbody.rows.length:0))%2?"analysis-table-row":"analysis-table-row-inverted");var a=this.appendElement_(c.tfoot,"tr");a.className=c.tfoot.rowsClassName;return a},appendSpacingRow:function(c,a){for(var f=c.tfoot||a?this.appendFootRow(c):this.appendBodyRow(c),
b=0;b<c.numColumns;b++)this.appendTableCell_(c,f,b," ")},appendInfoRow:function(c,a,f,b){b=c.tfoot||b?this.appendFootRow(c):this.appendBodyRow(c);this.appendTableCell_(c,b,0,a);void 0!==f?(a=new tv.c.analysis.GenericObjectView,a.object=f,a.classList.add("analysis-table-col-1"),a.style.display="table-cell",b.appendChild(a)):this.appendTableCell_(c,b,1,"");for(f=2;f<c.numColumns;f++)this.appendTableCell_(c,b,f,"")},appendInfoRowTime:function(c,a,f,b,e){b=c.tfoot||b?this.appendFootRow(c):this.appendBodyRow(c);
this.appendTableCell_(c,b,0,a);this.appendTableCell_(c,b,1,tv.c.analysis.tsRound(f)+" ms",e)},appendDetailsRow:function(c,a,f,b,e,d,g,h){if(h)h=this.appendFootRow(c),this.appendTableCell(c,h,"Totals");else if(h=this.appendBodyRow(c),d){var l=this.appendTableCell(c,h,tv.c.analysis.tsRound(a));l.textContent="";l.appendChild(this.createSelectionChangingLink(tv.c.analysis.tsRound(a),d,""))}else this.appendTableCell(c,h,tv.c.analysis.tsRound(a));null!==f&&this.appendTableCell(c,h,tv.c.analysis.tsRound(f));
g&&this.appendTableCell(c,h,""!=g?tv.c.analysis.tsRound(g):"");null!==b&&this.appendTableCell(c,h,tv.c.analysis.tsRound(b));c=this.appendTableCell(c,h,"");a=0;for(var m in e)a+=1;if(0<a)for(m in e)f=e[m],a=new tv.c.analysis.GenericObjectView,a.object=f,f=this.appendElement_(this.appendElement_(c,"table"),"tr"),this.appendElement_(f,"td",m+":"),this.appendElement_(f,"td").appendChild(a)},appendDataRow:function(c,a,f,b,e,d,g,h,l,m,n){var p=void 0;l&&(p="Min Duration:\t"+tv.c.analysis.tsRound(l.min)+
" ms \rMax Duration:\t"+tv.c.analysis.tsRound(l.max)+" ms \rAvg Duration:\t"+tv.c.analysis.tsRound(l.avg)+" ms (\u03c3 = "+tv.c.analysis.tsRound(l.avg_stddev)+")",l.start&&(p+="\rStart Time:\t"+tv.c.analysis.tsRound(l.start)+" ms"),l.end&&(p+="\rEnd Time:\t"+tv.c.analysis.tsRound(l.end)+" ms"),l.frequency&&l.frequency_stddev&&(p+="\rFrequency:\t"+tv.c.analysis.tsRound(l.frequency)+" occurrences/s (\u03c3 = "+tv.c.analysis.tsRound(l.frequency_stddev)+")"));l=c.tfoot||n?this.appendFootRow(c):this.appendBodyRow(c);
n=0;if(m){var u=this.appendTableCellWithTooltip_(c,l,n,a,p);u&&(u.textContent="",u.appendChild(this.createSelectionChangingLink(a,m,p)))}else this.appendTableCellWithTooltip_(c,l,n,a,p);n++;null!==f&&(f?f instanceof Array?this.appendTableCellWithTooltip_(c,l,n,"["+f.join(", ")+"]",p):this.appendTableCellWithTooltip_(c,l,n,tv.c.analysis.tsRound(f),p):this.appendTableCell_(c,l,n,""),n++);null!==b&&(""!=b?this.appendTableCellWithTooltip_(c,l,n,tv.c.analysis.tsRound(b),p):this.appendTableCell_(c,l,n,
""),n++);null!==e&&(e?this.appendTableCellWithTooltip_(c,l,n,tv.c.analysis.tsRound(e),p):this.appendTableCell_(c,l,n,""),n++);null!==d&&(d?this.appendTableCellWithTooltip_(c,l,n,tv.c.analysis.tsRound(d),p):this.appendTableCell_(c,l,n,""),n++);null!==h&&(h?this.appendTableCellWithTooltip_(c,l,n,h,p):this.appendTableCell_(c,l,n,""),n++);g?this.appendTableCellWithTooltip_(c,l,n,String(g),p):this.appendTableCell_(c,l,n,"")}};return{AnalysisResults:d}});"use strict";
tv.exportTo("tv.b.ui",function(){function d(b,e){return a(b,e)}function c(b,e){return a(e,b)}function a(a,e){var f=parseFloat(a),c=parseFloat(e);return isNaN(f)&&isNaN(c)?a.toString().localeCompare(e.toString()):isNaN(f)?-1:isNaN(c)?1:f-c}var f=tv.b.ui.define("sortable-table");f.prototype={__proto__:HTMLTableElement.prototype,decorate:function(){this.classList.add("sortable-table");if(this.tHead){for(var a=this.tHead.rows[0],e=window.history.state,f=0;f<a.cells.length;f++)a.cells[f].addEventListener("click",
this.onItemClicked_,!0),a.cells[f].innerHTML+="&nbsp;&#x25BF";e&&e.tableSorting&&(a=this.sortingHashCode_(),e.tableSorting[a]&&this.sort(e.tableSorting[a].col,e.tableSorting[a].sortDirection))}},onItemClicked_:function(a){var e=this.parentNode;a=e.parentNode.parentNode;var e=Array.prototype.slice.call(e.cells).indexOf(this),f=a.sort(e),c=history.state;c.tableSorting||(c.tableSorting={});c.tableSorting[a.sortingHashCode_()]={col:e,sortDirection:f};window.history.pushState(c)},sort:function(a,e){var f=
this.tHead.rows[0],g=f.cells[a];if(g.hasAttribute("sort")){var h=f,f=g.getAttribute("sort");if(e!=f){f="upward"==f?"downward":"upward";g.setAttribute("sort",f);h=g.innerHTML;g.innerHTML=h.substr(0,h.length-2)+("downward"==f?"&#x25BE":"&#x25B4");for(var h=g.parentNode,g=h.parentNode.parentNode.tBodies[0],h=[],l=0;l<g.rows.length;l++)h[h.length]=g.rows[l];for(l=h.length-1;0<=l;l--)g.appendChild(h[l])}return f}h=e||"downward";for(l=0;l<f.cells.length;l++)if(f.cells[l].getAttribute("sort")){f.cells[l].removeAttribute("sort");
var m=f.cells[l].innerHTML;f.cells[l].innerHTML=m.substr(0,m.length-2)+"&#x25BF"}m=f.cells[a].innerHTML;g.innerHTML=m.substr(0,m.length-2)+("downward"==h?"&#x25BE":"&#x25B4");g.setAttribute("sort",h);m=f.parentNode.parentNode.tBodies[0].rows;g=[];for(l=0;l<m.length;l++)g.push([m[l].cells[a].innerText,m[l]]);g.sort("downward"==h?d:c);for(l=0;l<g.length;l++)f.parentNode.parentNode.tBodies[0].appendChild(g[l][1]);return h},sortingHashCode_:function(){if(this.sortingHashValue_)return this.sortingHashValue_;
for(var a=this.tHead.rows[0].innerText,e=0,f=0;f<a.length;f++)127>a.charCodeAt(f)&&(e+=a.charCodeAt(f));return this.sortingHashValue_=Array.prototype.slice.call(document.getElementsByClassName("sortable-table")).indexOf(this)+""+e}};return{SortableTable:f}});"use strict";
Polymer("tv-c-single-slice-sub-view",{created:function(){this.currentSelection_=void 0},set selection(d){if(1!==d.length)throw Error("Only supports single slices");if(!(d[0]instanceof tv.c.trace_model.Slice))throw Error("Only supports slices");this.setSelectionWithoutErrorChecks(d)},get selection(){return this.currentSelection_},setSelectionWithoutErrorChecks:function(d){this.currentSelection_=d;this.textContent="";var c=new tv.c.analysis.AnalysisResults;this.appendChild(c);this.analyzeSingleSlice_(c,
d[0])},analyzeSingleSlice_:function(d,c){var a=d.appendTable("analysis-slice-table",2);c.error&&d.appendInfoRow(a,"Error",c.error);c.title&&d.appendInfoRow(a,"Title",c.title);c.category&&d.appendInfoRow(a,"Category",c.category);d.appendInfoRowTime(a,"Start",c.start);d.appendInfoRowTime(a,"Wall Duration",c.duration);c.cpuDuration&&d.appendInfoRowTime(a,"CPU Duration",c.cpuDuration);c.selfTime&&d.appendInfoRowTime(a,"Self Time",c.selfTime);if(c.cpuSelfTime){var f;c.cpuSelfTime>c.selfTime&&(f="Note that CPU Self Time is larger than Self Time. This is a known limitation of this system, which occurs due to several subslices, rounding issues, and inprecise time at which we get cpu- and real-time.");
d.appendInfoRowTime(a,"CPU Self Time",c.cpuSelfTime,!1,f)}c.durationInUserTime&&d.appendInfoRowTime(a,"Duration (U)",c.durationInUserTime);c.startStackFrame&&c.endStackFrame?c.startStackFrame===c.endStackFrame?d.appendInfoRow(a,"Start+End Stack Trace",c.startStackFrame.getUserFriendlyStackTrace()):(d.appendInfoRow(a,"Start Stack Trace",c.startStackFrame.getUserFriendlyStackTrace()),d.appendInfoRow(a,"End Stack Trace",c.endStackFrame.getUserFriendlyStackTrace())):c.startStackFrame?d.appendInfoRow(a,
"Start Stack Trace",c.startStackFrame.getUserFriendlyStackTrace()):c.endStackFrame&&d.appendInfoRow(a,"End Stack Trace",c.endStackFrame.getUserFriendlyStackTrace());f=0;for(var b in c.args)f+=1;if(0<f)for(b in d.appendInfoRow(a,"Args"),c.args)d.appendInfoRow(a," "+b,c.args[b])}});"use strict";
Polymer("tv-c-multi-slice-sub-view",{created:function(){this.currentSelection_=void 0;this.requiresTallView_=!1},set selection(d){if(1>=d.length)throw Error("Only supports multiple items");if(!d.every(function(c){return c instanceof tv.c.trace_model.Slice}))throw Error("Only supports slices");this.setSelectionWithoutErrorChecks(d)},get selection(){return this.currentSelection_},get requiresTallView(){return this.requiresTallView_},setSelectionWithoutErrorChecks:function(d){this.currentSelection_=
d;this.textContent="";this.requiresTallView_=!1;if(void 0!==window.RasterTaskView&&tv.e.cc.RasterTaskSelection.supports(d)){d=new tv.e.cc.RasterTaskSelection(d);var c=new tv.e.cc.LayerTreeHostImplSnapshotView;c.objectSnapshot=d.containingSnapshot;c.selection=d;c.extraHighlightsByLayerId=d.extraHighlightsByLayerId;this.appendChild(c);this.style.display="flex";this.requiresTallView_=!0}else this.style.display="",c=new tv.c.analysis.AnalysisResults,this.appendChild(c),this.analyzeMultipleSlices_(c,d)},
analyzeSingleTypeSlices_:function(d,c,a){d.appendInfo("Title: ",c[0].title);d.appendInfo("Category: ",c[0].category);var f=d.appendTable("analysis-slice-table",4+a),b=d.appendHeadRow(f);d.appendTableCell(f,b,"Start");d.appendTableCell(f,b,"Wall Duration (ms)");a&&d.appendTableCell(f,b,"CPU Duration (ms)");d.appendTableCell(f,b,"Self Time (ms)");d.appendTableCell(f,b,"Args");var e=0,k={},g=0,h=0,l=0;tv.b.iterItems(c,function(b,c){e++;d.appendDetailsRow(f,c.start,c.duration,c.selfTime?c.selfTime:c.duration,
c.args,function(){return new tv.c.Selection([c])},c.cpuDuration,!1);g+=c.duration;h+=c.selfTime?c.selfTime:c.duration;a&&(l+=c.cpuDuration);for(var p in c.args){var u=c.args[p];"number"==typeof u&&(null==k[p]&&(k[p]=0),k[p]+=u)}});1<e&&(d.appendDetailsRow(f,void 0,g,h,k,void 0,a?l:void 0,!0),tv.b.ui.SortableTable.decorate(f))},analyzeMultipleSlices_:function(d,c){for(var a=c.bounds.min,f=c.bounds.max,b=0,e={},k=!1,g=0;g<c.length;g++){var h=c[g];void 0===e[h.title]&&(e[h.title]=[],b++);h.cpuDuration&&
(k=!0);e[h.title].push(c[g])}var l=d.appendTable("analysis-slice-table",4+k),g=d.appendHeadRow(l);d.appendTableCell(l,g,"Name");d.appendTableCell(l,g,"Wall Duration (ms)");k&&d.appendTableCell(l,g,"CPU Duration (ms)");d.appendTableCell(l,g,"Self Time (ms)");k&&d.appendTableCell(l,g,"CPU Self Time (ms)");d.appendTableCell(l,g,"Occurrences");var m=this,n=0,p=0,u=0,v=0;tv.b.iterItems(e,function(a,e){for(var f=0,c=0,g=0,h=0,w=0,x=Number.MAX_VALUE,y=-Number.MAX_VALUE,A=Number.MAX_VALUE,B=-Number.MAX_VALUE,
w=0;w<e.length;w++){var C=e[w],f=f+C.duration;C.cpuDuration&&(c+=C.cpuDuration,h+=C.cpuSelfTime?C.cpuSelfTime:C.cpuDuration);g+=C.selfTime?C.selfTime:C.duration;x=Math.min(C.start,x);y=Math.max(C.start,y);A=Math.min(C.duration,A);B=Math.max(C.duration,B)}n+=f;p+=c;u+=g;v+=h;0==e.length&&(w=0);w=f/e.length;A={min:A,max:B,avg:w,avg_stddev:void 0,frequency:void 0,frequency_stddev:void 0};for(w=B=0;w<e.length;w++)C=A.avg-e[w].duration,B+=C*C;A.avg_stddev=Math.sqrt(B/(e.length-1));y-=x;if(2<e.length&&
0<y){x=e.length-1;A.frequency=1E3*x/y;B=0;for(w=1;w<e.length;w++)C=A.frequency-1E3/(e[w].start-e[w-1].start),B+=C*C;A.frequency_stddev=Math.sqrt(B/(x-1))}d.appendDataRow(l,a,f,k?0<c?c:"":null,g,k?0<h?h:"":null,e.length,null,A,function(){return new tv.c.Selection(e)});1===b&&m.analyzeSingleTypeSlices_(d,e,k)});1!==b&&(d.appendDataRow(l,"Totals",n,k?p:null,u,k?v:null,c.length,null,null,null,!0),d.appendSpacingRow(l,!0),tv.b.ui.SortableTable.decorate(l));d.appendInfoRowTime(l,"Selection start",a,!0);
d.appendInfoRowTime(l,"Selection extent",f-a,!0)}});"use strict";
Polymer("tv-c-single-thread-time-slice-sub-view",{created:function(){this.currentSelection_=void 0},get selection(){return this.currentSelection_},set selection(d){if(1!==d.length)throw Error("Only supports single slices");if(!(d[0]instanceof tv.c.trace_model.ThreadTimeSlice))throw Error("Only supports thread time slices");this.currentSelection_=d;var c=d[0],a=c.thread;d=this.shadowRoot;d.querySelector("#state").textContent=c.title;var f=tv.b.ui.getColorPalette()[c.colorId];d.querySelector("#state").style.backgroundColor=
f;d.querySelector("#process-name").textContent=a.parent.userFriendlyName;d.querySelector("#thread-name").textContent=a.userFriendlyName;d.querySelector("#start").textContent=tv.c.analysis.tsRound(c.start)+"ms";d.querySelector("#duration").textContent=tv.c.analysis.tsRound(c.duration)+"ms";a=d.querySelector("#on-cpu");a.textContent="";f=d.querySelector("#running-instead");if(c.cpuOnWhichThreadWasRunning){f.parentElement.removeChild(f);var b=new tv.c.analysis.AnalysisLink;b.textContent=c.cpuOnWhichThreadWasRunning.userFriendlyName;
b.selectionGenerator=function(){var a=new tv.c.Selection;a.push(c.getAssociatedCpuSlice());return a}.bind(this);a.appendChild(b)}else{a.parentElement.removeChild(a);var e=c.getCpuSliceThatTookCpu();e?(b=new tv.c.analysis.AnalysisLink,b.textContent=e.thread?e.thread.userFriendlyName:e.title,b.selectionGenerator=function(){var a=new tv.c.Selection;a.push(e);return a}.bind(this),f.appendChild(b)):f.parentElement.removeChild(f)}d=d.querySelector("#args");0<tv.b.dictionaryKeys(c.args).length?(a=new tv.c.analysis.GenericObjectView,
a.object=c.args,d.parentElement.style.display="",d.textContent="",d.appendChild(a)):d.parentElement.style.display="none"}});"use strict";
Polymer("tv-c-single-cpu-slice-sub-view",{created:function(){this.currentSelection_=void 0},get selection(){return this.currentSelection_},set selection(d){if(1!==d.length)throw Error("Only supports single slices");if(!(d[0]instanceof tv.c.trace_model.CpuSlice))throw Error("Only supports thread time slices");this.currentSelection_=d;d=d[0];var c=d.threadThatWasRunning,a=this.shadowRoot;c?(a.querySelector("#process-name").textContent=c.parent.userFriendlyName,a.querySelector("#thread-name").textContent=
c.userFriendlyName):(a.querySelector("#process-name").parentElement.style.display="none",a.querySelector("#thread-name").textContent=d.title);a.querySelector("#start").textContent=tv.c.analysis.tsRound(d.start)+"ms";a.querySelector("#duration").textContent=tv.c.analysis.tsRound(d.duration)+"ms";var c=a.querySelector("#running-thread"),f=d.getAssociatedTimeslice();f?(d=new tv.c.analysis.AnalysisLink,d.textContent="Click to select",d.selectionGenerator=function(){var a=new tv.c.Selection;a.push(f);
return a}.bind(this),c.parentElement.style.display="",c.textContent="",c.appendChild(d)):c.parentElement.style.display="none"}});"use strict";Polymer("tv-c-single-instant-event-sub-view",{created:function(){this.currentSelection_=void 0},set selection(d){this.textContent="";var c=document.createElement("tv-c-single-slice-sub-view");this.appendChild(c);c.setSelectionWithoutErrorChecks(d);this.currentSelection_=d},get selection(){return this.currentSelection_}});"use strict";
Polymer("tv-c-multi-instant-event-sub-view",{created:function(){this.currentSelection_=void 0},set selection(d){this.textContent="";var c=document.createElement("tv-c-multi-slice-sub-view");this.appendChild(c);c.setSelectionWithoutErrorChecks(d);this.currentSelection_=d},get selection(){return this.currentSelection_}});"use strict";
(function(){var d=tv.c.trace_model.CounterSample;Polymer("tv-c-counter-sample-sub-view",{created:function(){this.currentSelection_=void 0},get selection(){return this.currentSelection_},set selection(c){var a=new tv.c.analysis.AnalysisResults;this.appendChild(a);this.analyzeCounterSamples_(a,c)},analyzeCounterSamples_:function(c,a){for(var f={},b=0;b<a.length;b++){var e=a[b].series.counter;f[e.guid]||(f[e.guid]=[]);f[e.guid].push(a[b])}for(var k in f)b=f[k],e=b[0].series.counter,b=d.groupByTimestamp(b),
1==b.length?this.analyzeSingleCounterTimestamp_(c,e,b[0]):this.analyzeMultipleCounterTimestamps_(c,e,b)},analyzeSingleCounterTimestamp_:function(c,a,f){c.appendHeader("Selected counter:");var b=c.appendTable("analysis-counter-table",2);c.appendInfoRow(b,"Title",a.name);c.appendInfoRowTime(b,"Timestamp",f[0].timestamp);for(a=0;a<f.length;a++){var e=f[a];c.appendInfoRow(b,e.series.name,e.value)}},analyzeMultipleCounterTimestamps_:function(c,a,f){c.appendHeader("Counter "+a.name);for(var b=c.appendTable("analysis-counter-table",
2),e=[],d=0;d<f.length;d++)e.push(f[d][0].getSampleIndex());f=a.getSampleStatistics(e);for(d=0;d<f.length;d++){for(var g=[],h=0;h<e.length;++h)g.push(a.getSeries(d).getSample(e[h]).value);c.appendDataRow(b,a.name+": series("+a.getSeries(d).name+")",g,null,null,null,g.length,null,f[d])}}})})();"use strict";
Polymer("tv-c-single-flow-event-sub-view",{created:function(){this.currentSelection_=void 0},set selection(d){this.textContent="";var c=document.createElement("tv-c-single-slice-sub-view");this.appendChild(c);c.setSelectionWithoutErrorChecks(d);this.currentSelection_=d},get selection(){return this.currentSelection_}});"use strict";
Polymer("tv-c-multi-flow-event-sub-view",{created:function(){this.currentSelection_=void 0},set selection(d){this.textContent="";var c=document.createElement("tv-c-multi-slice-sub-view");this.appendChild(c);c.setSelectionWithoutErrorChecks(d);this.currentSelection_=d},get selection(){return this.currentSelection_}});"use strict";
tv.exportTo("tv.c.analysis",function(){var d=tv.b.ui.define("object-instance-view");d.prototype={__proto__:HTMLUnknownElement.prototype,decorate:function(){this.objectInstance_=void 0},get requiresTallView(){return!0},set modelEvent(a){this.objectInstance=a},get modelEvent(){return this.objectInstance},get objectInstance(){return this.objectInstance_},set objectInstance(a){this.objectInstance_=a;this.updateContents()},updateContents:function(){throw Error("Not implemented");}};var c=new tv.b.ExtensionRegistryOptions(tv.b.TYPE_BASED_REGISTRY_MODE);
c.mandatoryBaseClass=d;c.defaultMetadata={showInTrackView:!0};tv.b.decorateExtensionRegistry(d,c);return{ObjectInstanceView:d}});"use strict";
Polymer("tv-c-single-object-instance-sub-view",{created:function(){this.currentSelection_=void 0},get requiresTallView(){if(0===this.children.length)return!1;if(this.children[0]instanceof tv.c.analysis.ObjectInstanceView)return this.children[0].requiresTallView},get selection(){return this.currentSelection_},set selection(d){if(1!==d.length)throw Error("Only supports single item selections");if(!(d[0]instanceof tv.c.trace_model.ObjectInstance))throw Error("Only supports object instances");this.textContent=
"";this.currentSelection_=d;d=d[0];var c=tv.c.analysis.ObjectInstanceView.getTypeInfo(d.category,d.typeName);c?(c=new c.constructor,this.appendChild(c),c.modelEvent=d):this.appendGenericAnalysis_(d)},appendGenericAnalysis_:function(d){var c;c=""+('<div class="title">'+d.typeName+" "+d.id+"</div>\n");c+="<table><tr>";c+="<tr><td>creationTs:</td><td>"+d.creationTs+"</td></tr>\n";c=d.deletionTs!=Number.MAX_VALUE?c+("<tr><td>deletionTs:</td><td>"+d.deletionTs+"</td></tr>\n"):c+"<tr><td>deletionTs:</td><td>not deleted</td></tr>\n";
c+='<tr><td>snapshots:</td><td id="snapshots"></td></tr>\n';this.innerHTML=c+="</table>";var a=this.querySelector("#snapshots");d.snapshots.forEach(function(f){var b=new tv.c.analysis.ObjectSnapshotLink;b.objectSnapshot=f;a.appendChild(b)})}});"use strict";
Polymer("tv-c-single-object-snapshot-sub-view",{created:function(){this.currentSelection_=void 0},get requiresTallView(){if(0===this.children.length)return!1;if(this.children[0]instanceof tv.c.analysis.ObjectSnapshotView)return this.children[0].requiresTallView},get selection(){return this.currentSelection_},set selection(d){if(1!==d.length)throw Error("Only supports single item selections");if(!(d[0]instanceof tv.c.trace_model.ObjectSnapshot))throw Error("Only supports object instances");this.textContent=
"";this.currentSelection_=d;d=d[0];var c=tv.c.analysis.ObjectSnapshotView.getTypeInfo(d.objectInstance.category,d.objectInstance.typeName);c?(c=new c.constructor,this.appendChild(c),c.modelEvent=d):this.appendGenericAnalysis_(d)},appendGenericAnalysis_:function(d){var c=d.objectInstance,a;a=""+('<div class="title">Snapshot of <a id="instance-link"></a> @ '+tv.c.analysis.tsRound(d.ts)+"ms</div>\n");a+="<table><tr>";a+='<tr><td>args:</td><td id="args"></td></tr>\n';this.innerHTML=a+="</table>";a=new tv.c.analysis.ObjectInstanceLink;
a.objectInstance=c;c=this.querySelector("#instance-link");c.parentElement.replaceChild(a,c);c=this.querySelector("#args");c.textContent="";a=tv.c.analysis.GenericObjectView();a.object=d.args;c.appendChild(a)}});"use strict";
Polymer("tv-c-multi-object-sub-view",{created:function(){this.currentSelection_=void 0},get selection(){return this.currentSelection_},set selection(d){this.currentSelection_=d;this.textContent="";var c=new tv.c.analysis.AnalysisResults;this.appendChild(c);this.analyzeObjectEvents_(c,d)},analyzeObjectEvents_:function(d,c){c=tv.b.asArray(c).sort(tv.b.Range.compareByMinTimes);var a=d.appendTable("analysis-object-sample-table",2);c.forEach(function(f){var b=d.appendBodyRow(a),e,c,g;f instanceof tv.c.trace_model.ObjectSnapshot?
(e=tv.c.analysis.tsRound(f.ts),c=f.objectInstance.typeName+" "+f.objectInstance.id,g=function(){var a=new tv.c.Selection;a.push(f);return a}):(e=f.deletionTs==Number.MAX_VALUE?"":tv.c.analysis.tsRound(f.deletionTs),e=tv.c.analysis.tsRound(f.creationTs)+"-"+e,c=f.typeName+" "+f.id,g=function(){var a=new tv.c.Selection;a.push(f);return a});d.appendTableCell(a,b,e);d.appendTableCell(a,b,"").appendChild(d.createSelectionChangingLink(c,g))})}});"use strict";
Polymer("tv-c-single-sample-sub-view",{created:function(){this.currentSelection_=void 0},set selection(d){this.textContent="";this.currentSelection_=d;var c=new tv.c.analysis.AnalysisResults;this.appendChild(c);this.analyzeSingleSampleEvent_(c,d[0],"Sample Event")},get selection(){return this.currentSelection_},analyzeSingleSampleEvent_:function(d,c,a){d.appendHeader("Selected "+a+":");a=d.appendTable("analysis-slice-table",2);d.appendInfoRow(a,"Title",c.title);d.appendInfoRowTime(a,"Sample Time",
c.start);d.appendInfoRow(a,"Stack Trace",c.getUserFriendlyStackTrace())}});"use strict";Polymer("tv-c-multi-sample-sub-view",{created:function(){this.currentSelection_=void 0},get requiresTallView(){return!0},set selection(d){this.textContent="";this.currentSelection_=d;if(tv.isDefined("tv.e.analysis.SamplingSummaryPanel")){var c=new tv.e.analysis.SamplingSummaryPanel;this.appendChild(c);c.selection=d}else this.textContent="SamplingSummaryPanel not installed. :("},get selection(){return this.currentSelection_}});
"use strict";Polymer("tv-c-single-interaction-record-sub-view",{created:function(){this.currentSelection_=void 0},set selection(d){this.textContent="";var c=document.createElement("tv-c-single-slice-sub-view");this.appendChild(c);c.setSelectionWithoutErrorChecks(d);this.currentSelection_=d}});"use strict";
Polymer("tv-c-multi-interaction-record-sub-view",{created:function(){this.currentSelection_=void 0},set selection(d){this.currentSelection_=d;this.textContent="";var c=document.createElement("tv-c-multi-slice-sub-view");this.appendChild(c);c.setSelectionWithoutErrorChecks(d);this.currentSelection_=d},get selection(){return this.currentSelection_}});"use strict";
Polymer("tv-c-single-alert-sub-view",{created:function(){this.currentSelection_=void 0},set selection(d){this.textContent="";var c=document.createElement("tv-c-single-slice-sub-view");this.appendChild(c);c.setSelectionWithoutErrorChecks(d);this.currentSelection_=d}});"use strict";
Polymer("tv-c-multi-alert-sub-view",{created:function(){this.currentSelection_=void 0},set selection(d){this.currentSelection_=d;this.textContent="";var c=document.createElement("tv-c-multi-slice-sub-view");this.appendChild(c);c.setSelectionWithoutErrorChecks(d);this.currentSelection_=d},get selection(){return this.currentSelection_}});"use strict";
Polymer("tv-c-single-global-memory-dump-sub-view",{created:function(){this.currentSelection_=void 0},set selection(d){if(1!==d.length)throw Error("Only supports a single global memory dump");if(!(d[0]instanceof tv.c.trace_model.GlobalMemoryDump))throw Error("Only supports global memory dumps");this.setSelectionWithoutErrorChecks(d)},get selection(){return this.currentSelection_},setSelectionWithoutErrorChecks:function(d){this.currentSelection_=d;this.textContent="";d={};var c=this.currentSelection_[0],
a;for(a in c.processMemoryDumps)d[a]=c.processMemoryDumps[a].args;a=tv.c.analysis.GenericObjectView();a.object=d;this.appendChild(a)}});"use strict";
Polymer("tv-c-multi-global-memory-dump-sub-view",{created:function(){this.currentSelection_=void 0},set selection(d){this.currentSelection_=d;this.textContent="";d=tv.b.asArray(d).sort(tv.b.Range.compareByMinTimes);var c=new tv.c.analysis.AnalysisResults;this.appendChild(c);var a=c.appendTable("analysis-global-memory-dump-table",1);d.forEach(function(f){var b=c.appendBodyRow(a),b=c.appendTableCell(a,b,""),e="Dump at "+tv.c.analysis.tsRound(f.start)+" ms";b.appendChild(c.createSelectionChangingLink(e,
function(){var a=new tv.c.Selection;a.push(f);return a}))})},get selection(){return this.currentSelection_}});"use strict";
(function(){var d=tv.c.trace_model.EventRegistry;Polymer("tracing-analysis-view",{ready:function(){this.tabView_=document.createElement("tracing-analysis-tab-view");this.tabView_.style.flex="1 1 auto";this.tabView_.addEventListener("selected-tab-change",this.onSelectedTabChange_.bind(this));this.appendChild(this.tabView_);this.currentSelection_=void 0},set tallMode(c){c?this.classList.add("tall-mode"):this.classList.remove("tall-mode")},get tallMode(){return this.classList.contains("tall-mode")},
get tabView(){return this.tabView_},get selection(){return this.currentSelection_},set selection(c){var a,f;this.tabView_.selectedTab&&(a=this.tabView_.selectedTab.tagName,f=this.tabView_.selectedTab._eventTypeName);this.tallMode=!1;this.tabView_.textContent="";c=c.getEventsOrganizedByBaseType(!0);tv.b.dictionaryLength(c);for(var b in c){var e=c[b],d=this.createSubViewForSelection_(b,e);d._eventTypeName=b;this.tabView_.appendChild(d);d.selection=e}var g;a&&(g=this.tabView_.querySelector(a));!g&&f&&
(g=tv.b.findFirstInArray(this.tabView_.children,function(a){return a._eventTypeName===f}));g||(g=this.tabView_.firstChild);this.tabView_.selectedTab=g},createSubViewForSelection_:function(c,a){var f=d.getEventTypeInfoByTypeName(c),b;b=1===a.length?f.metadata.singleViewElementName:f.metadata.multiViewElementName;if(!tv.b.getPolymerElementNamed(b))throw Error("Element not registered: "+b);b=document.createElement(b);f=(1===a.length?f.metadata.name:f.metadata.pluralName).replace(/[A-Z]/g," $&");f=f.charAt(0).toUpperCase()+
f.slice(1);b.tabLabel=f;return b},onSelectedTabChange_:function(){this.tallMode=this.tabView_.selectedTab?this.tabView_.selectedTab.requiresTallView:!1}})})();"use strict";
tv.exportTo("tv.c",function(){function d(){this.model_=this.timeline_=void 0;this.filterText_="";this.filterHits_=new tv.c.Selection;this.filterHitsDirty_=!0;this.currentHitIndex_=-1}var c=tv.b.Task;d.prototype={__proto__:Object.prototype,get timeline(){return this.timeline_},set timeline(a){this.timeline_=a;this.filterHitsDirty_=!0},get filterText(){return this.filterText_},set filterText(a){a!=this.filterText_&&(this.filterText_=a,this.filterHitsDirty_=!0)},updateFilterHits:function(){var a=Promise.resolve();
if(!this.filterHitsDirty_)return a;this.filterHits_=new tv.c.Selection;this.currentHitIndex_=-1;if(this.timeline_&&this.filterText.length){var a=new tv.c.TitleFilter(this.filterText),f=new tv.c.Selection,a=this.timeline.addAllObjectsMatchingFilterToSelectionAsTask(a,f),a=c.RunWhenIdle(a);a.then(function(){this.filterHitsDirty_=!1;this.filterHits_=f;this.timeline.setHighlightAndClearSelection(f)}.bind(this))}return a},get filterHits(){return this.filterHits_},get currentHitIndex(){return this.currentHitIndex_},
find_:function(a){-1===this.currentHitIndex_&&0>a&&(this.currentHitIndex_=0);var f=this.filterHits.length;this.currentHitIndex_=(this.currentHitIndex_+a+f)%f;this.timeline&&(this.timeline.selection=this.filterHits.subSelection(this.currentHitIndex_,1))},findNext:function(){this.find_(1)},findPrevious:function(){this.find_(-1)},reset:function(){this.filterText_="";this.filterHitsDirty_=!0}};return{FindController:d}});"use strict";
tv.exportTo("tv.b",function(){function d(c){this.document_=c||document;if(d.instance)throw Error("KeyEventManager is a singleton.");this.onEvent_=this.onEvent_.bind(this);this.document_.addEventListener("keydown",this.onEvent_);this.document_.addEventListener("keypress",this.onEvent_);this.document_.addEventListener("keyup",this.onEvent_);this.listeners_=[]}d.instance=void 0;document.head.addEventListener("tv-unittest-will-run",function(){d.instance&&(d.instance.destroy(),d.instance=void 0);d.instance=
new d});d.prototype={addListener:function(c,a,f){f.keyEventManagerGuid_||(f.keyEventManagerGuid_=tv.b.GUID.allocate(),f.keyEventManagerRefCount_=0);f.classList.add("key-event-manager-target");f.keyEventManagerRefCount_++;this.listeners_.push({guid:f.keyEventManagerGuid_,type:c,handler:a})},onEvent_:function(c){var a=void 0,f=!1,b=c.preventDefault;c.preventDefault=function(){a=!1;b.call(this)};var e=c.stopPropagation;c.stopPropagation=function(){f=!0;e.call(this)};c.stopImmediatePropagation=function(){throw Error("Not implemented");
};for(var d=this.document_.querySelectorAll(".key-event-manager-target"),g={},h=0;h<d.length;h++)g[d[h].keyEventManagerGuid_]=d[h];for(var d=this.listeners_.concat(),l=c.type,m=0,h=0;h<d.length;h++){var n=d[h];if(n.type===l){var p=g[n.guid];if(p&&(n=n.handler,m=n.handleEvent?m|!1===n.handleEvent.call(n,c):m|!1===n.call(p,c),f))break}}return!m&&a},removeListener:function(c,a,f){if(void 0===f.keyEventManagerGuid_)throw Error("Was not registered with KeyEventManager");if(0===f.keyEventManagerRefCount_)throw Error("No events were registered on the provided thisArg");
for(var b=0;b<this.listeners_.length;b++){var e=this.listeners_[b];if(e.type==c&&e.handler==a&&e.guid==f.keyEventManagerGuid_){f.keyEventManagerRefCount_--;0===f.keyEventManagerRefCount_&&f.classList.remove("key-event-manager-target");this.listeners_.splice(b,1);return}}throw Error("Listener not found");},destroy:function(){this.listeners_.splice(0);this.document_.removeEventListener("keydown",this.onEvent_);this.document_.removeEventListener("keypress",this.onEvent_);this.document_.removeEventListener("keyup",
this.onEvent_)},dispatchFakeEvent:function(c,a){var f=new KeyboardEvent(c,a);return d.instance.onEvent_.call(void 0,f)}};d.instance=new d;return{KeyEventManager:d}});"use strict";
tv.exportTo("tv.b.ui",function(){function d(c){this.onMouseDown_=this.onMouseDown_.bind(this);this.onMouseMove_=this.onMouseMove_.bind(this);this.onMouseUp_=this.onMouseUp_.bind(this);this.targetElement=c}d.prototype={get targetElement(){return this.targetElement_},set targetElement(c){this.targetElement_&&this.targetElement_.removeEventListener("mousedown",this.onMouseDown_);(this.targetElement_=c)&&this.targetElement_.addEventListener("mousedown",this.onMouseDown_)},onMouseDown_:function(c){if(0!==
c.button)return!0;c=this.remakeEvent_(c,"mouse-tracker-start");this.targetElement_.dispatchEvent(c);document.addEventListener("mousemove",this.onMouseMove_);document.addEventListener("mouseup",this.onMouseUp_);this.targetElement_.addEventListener("blur",this.onMouseUp_);this.savePreviousUserSelect_=document.body.style["-webkit-user-select"];document.body.style["-webkit-user-select"]="none";c.preventDefault();return!0},onMouseMove_:function(c){c=this.remakeEvent_(c,"mouse-tracker-move");this.targetElement_.dispatchEvent(c)},
onMouseUp_:function(c){document.removeEventListener("mousemove",this.onMouseMove_);document.removeEventListener("mouseup",this.onMouseUp_);this.targetElement_.removeEventListener("blur",this.onMouseUp_);document.body.style["-webkit-user-select"]=this.savePreviousUserSelect_;c=this.remakeEvent_(c,"mouse-tracker-end");this.targetElement_.dispatchEvent(c)},remakeEvent_:function(c,a){var f=new tv.b.Event(a,!0,!0);f.x=c.x;f.y=c.y;f.offsetX=c.offsetX;f.offsetY=c.offsetY;f.clientX=c.clientX;f.clientY=c.clientY;
return f}};return{MouseTracker:d,trackMouseMovesUntilMouseUp:function(c,a){function f(b){document.removeEventListener("mousemove",c);document.removeEventListener("mouseup",f);a&&a(b)}document.addEventListener("mousemove",c);document.addEventListener("mouseup",f)}}});"use strict";
tv.exportTo("tv.b.ui",function(){var d=document.currentScript.ownerDocument,c={SELECTION:1,PANSCAN:2,ZOOM:4,TIMING:8,ROTATE:16,ALL_MODES:31},a={};a[c.PANSCAN]={title:"pan",className:"pan-scan-mode-button",eventNames:{enter:"enterpan",begin:"beginpan",update:"updatepan",end:"endpan",exit:"exitpan"}};a[c.SELECTION]={title:"selection",className:"selection-mode-button",eventNames:{enter:"enterselection",begin:"beginselection",update:"updateselection",end:"endselection",exit:"exitselection"}};a[c.ZOOM]=
{title:"zoom",className:"zoom-mode-button",eventNames:{enter:"enterzoom",begin:"beginzoom",update:"updatezoom",end:"endzoom",exit:"exitzoom"}};a[c.TIMING]={title:"timing",className:"timing-mode-button",eventNames:{enter:"entertiming",begin:"begintiming",update:"updatetiming",end:"endtiming",exit:"exittiming"}};a[c.ROTATE]={title:"rotate",className:"rotate-mode-button",eventNames:{enter:"enterrotate",begin:"beginrotate",update:"updaterotate",end:"endrotate",exit:"exitrotate"}};var f={SHIFT:1,SPACE:2,
CMD_OR_CTRL:4},b=tv.b.ui.define("div");b.prototype={__proto__:HTMLDivElement.prototype,decorate:function(a){this.classList.add("mouse-mode-selector");var b=tv.b.instantiateTemplate("#mouse-mode-selector-template",d);this.appendChild(b);this.buttonsEl_=this.querySelector(".buttons");this.dragHandleEl_=this.querySelector(".drag-handle");this.supportedModeMask=c.ALL_MODES;this.initialRelativeMouseDownPos_={x:0,y:0};this.defaultMode_=c.PANSCAN;this.settingsKey_=void 0;this.mousePos_={x:0,y:0};this.mouseDownPos_=
{x:0,y:0};this.dragHandleEl_.addEventListener("mousedown",this.onDragHandleMouseDown_.bind(this));this.onMouseDown_=this.onMouseDown_.bind(this);this.onMouseMove_=this.onMouseMove_.bind(this);this.onMouseUp_=this.onMouseUp_.bind(this);this.buttonsEl_.addEventListener("mouseup",this.onButtonMouseUp_);this.buttonsEl_.addEventListener("mousedown",this.onButtonMouseDown_);this.buttonsEl_.addEventListener("click",this.onButtonPress_.bind(this));tv.b.KeyEventManager.instance.addListener("keydown",this.onKeyDown_,
this);tv.b.KeyEventManager.instance.addListener("keyup",this.onKeyUp_,this);this.mode_=this.keyCodeCondition=void 0;this.modeToKeyCodeMap_={};this.modifierToModeMap_={};this.targetElement=a;this.spacePressed_=!1;this.modeBeforeAlternativeModeActivated_=null;this.isClick_=this.isInteracting_=!1},get targetElement(){return this.targetElement_},set targetElement(a){this.targetElement_&&this.targetElement_.removeEventListener("mousedown",this.onMouseDown_);(this.targetElement_=a)&&this.targetElement_.addEventListener("mousedown",
this.onMouseDown_)},get defaultMode(){return this.defaultMode_},set defaultMode(a){this.defaultMode_=a},get settingsKey(){return this.settingsKey_},set settingsKey(b){if(this.settingsKey_=b)if(b=tv.b.Settings.get(this.settingsKey_+".mode",void 0),void 0===a[b]&&(b=void 0),0===(b&this.supportedModeMask_)&&(b=void 0),b||(b=this.defaultMode_),this.mode=b,b=tv.b.Settings.get(this.settingsKey_+".pos",void 0))this.pos=b},get supportedModeMask(){return this.supportedModeMask_},set supportedModeMask(b){function f(b){var e=
document.createElement("div");e.mode=b;e.title=a[b].title;e.classList.add("tool-button");e.classList.add(a[b].className);return e}if(this.mode&&0===(b&this.mode))throw Error("supportedModeMask must include current mode.");this.supportedModeMask_=b;this.buttonsEl_.textContent="";for(var d in c)"ALL_MODES"!=d&&(b=c[d],0!==(this.supportedModeMask_&b)&&this.buttonsEl_.appendChild(f(b)))},get mode(){return this.currentMode_},set mode(b){if(void 0!==b){if("number"!==typeof b)throw Error("Mode must be a number");
if(0===(b&this.supportedModeMask_))throw Error("Cannot switch to this mode, it is not supported");if(void 0===a[b])throw Error("Unrecognized mode");}var f;if(this.currentMode_!==b){if(this.currentMode_){f=a[this.currentMode_];var c=this.buttonsEl_.querySelector("."+f.className);c&&c.classList.remove("active");this.isInteracting_&&(c=this.createEvent_(a[this.mode].eventNames.end),this.dispatchEvent(c));tv.b.dispatchSimpleEvent(this,f.eventNames.exit,!0)}if(this.currentMode_=b)f=a[this.currentMode_],
(c=this.buttonsEl_.querySelector("."+f.className))&&c.classList.add("active"),this.mouseDownPos_.x=this.mousePos_.x,this.mouseDownPos_.y=this.mousePos_.y,this.isInAlternativeMode_||tv.b.dispatchSimpleEvent(this,f.eventNames.enter,!0),this.isInteracting_&&(c=this.createEvent_(a[this.mode].eventNames.begin),this.dispatchEvent(c));this.settingsKey_&&!this.isInAlternativeMode_&&tv.b.Settings.set(this.settingsKey_+".mode",this.mode)}},setKeyCodeForMode:function(b,f){if(0===(b&this.supportedModeMask_))throw Error("Mode not supported");
this.modeToKeyCodeMap_[b]=f;if(this.buttonsEl_){var c=a[b],d=this.buttonsEl_.querySelector("."+c.className);d&&(d.title=c.title+" ("+String.fromCharCode(f)+")")}},setKeyCodeCondition:function(a){this.keyCodeCondition=a},setCurrentMousePosFromEvent_:function(a){this.mousePos_.x=a.clientX;this.mousePos_.y=a.clientY},createEvent_:function(a,b){var f=new tv.b.Event(a,!0);f.clientX=this.mousePos_.x;f.clientY=this.mousePos_.y;f.deltaX=this.mousePos_.x-this.mouseDownPos_.x;f.deltaY=this.mousePos_.y-this.mouseDownPos_.y;
f.mouseDownX=this.mouseDownPos_.x;f.mouseDownY=this.mouseDownPos_.y;f.didPreventDefault=!1;f.preventDefault=function(){f.didPreventDefault=!0;b&&b.preventDefault()};f.stopPropagation=function(){b.stopPropagation()};f.stopImmediatePropagation=function(){throw Error("Not implemented");};return f},onMouseDown_:function(b){0===b.button&&(this.setCurrentMousePosFromEvent_(b),b=this.createEvent_(a[this.mode].eventNames.begin,b),this.dispatchEvent(b),this.isClick_=this.isInteracting_=!0,tv.b.ui.trackMouseMovesUntilMouseUp(this.onMouseMove_,
this.onMouseUp_))},onMouseMove_:function(b){this.setCurrentMousePosFromEvent_(b);var f=this.createEvent_(a[this.mode].eventNames.update,b);this.dispatchEvent(f);this.isInteracting_&&this.checkIsClick_(b)},onMouseUp_:function(b){if(0===b.button){var f=this.createEvent_(a[this.mode].eventNames.end,b);f.isClick=this.isClick_;this.dispatchEvent(f);this.isClick_&&!f.didPreventDefault&&this.dispatchClickEvents_(b);this.isInteracting_=!1;this.updateAlternativeModeState_(b)}},onButtonMouseDown_:function(a){a.preventDefault();
a.stopImmediatePropagation()},onButtonMouseUp_:function(a){a.preventDefault();a.stopImmediatePropagation()},onButtonPress_:function(a){this.modeBeforeAlternativeModeActivated_=void 0;this.mode=a.target.mode;a.preventDefault()},onKeyDown_:function(a){32===a.keyCode&&(this.spacePressed_=!0);this.updateAlternativeModeState_(a)},onKeyUp_:function(a){32===a.keyCode&&(this.spacePressed_=!1);if(void 0==this.keyCodeCondition||this.keyCodeCondition()){var b=!1;tv.b.iterItems(this.modeToKeyCodeMap_,function(f,
c){a.keyCode===c&&(this.modeBeforeAlternativeModeActivated_=void 0,this.mode=parseInt(f),b=!0)},this);b?(a.preventDefault(),a.stopPropagation()):this.updateAlternativeModeState_(a)}},updateAlternativeModeState_:function(a){var b=this.spacePressed_,c=tv.isMac&&a.metaKey||!tv.isMac&&a.ctrlKey,d=this.supportedModeMask_,l=!1;a.shiftKey&&0!==(this.modifierToModeMap_[f.SHIFT]&d)?(a=this.modifierToModeMap_[f.SHIFT],l=!0):b&&0!==(this.modifierToModeMap_[f.SPACE]&d)?(a=this.modifierToModeMap_[f.SPACE],l=!0):
c&&0!==(this.modifierToModeMap_[f.CMD_OR_CTRL]&d)?(a=this.modifierToModeMap_[f.CMD_OR_CTRL],l=!0):this.isInAlternativeMode_?(a=this.modeBeforeAlternativeModeActivated_,l=!1):a=void 0;this.mode!==a&&void 0!==a&&(l&&(this.modeBeforeAlternativeModeActivated_=this.mode),this.mode=a)},get isInAlternativeMode_(){return!!this.modeBeforeAlternativeModeActivated_},setModifierForAlternateMode:function(a,b){this.modifierToModeMap_[b]=a},get pos(){return{x:parseInt(this.style.left),y:parseInt(this.style.top)}},
set pos(a){a=this.constrainPositionToBounds_(a);this.style.left=a.x+"px";this.style.top=a.y+"px";this.settingsKey_&&tv.b.Settings.set(this.settingsKey_+".pos",this.pos)},constrainPositionToBounds_:function(a){var b=tv.b.windowRectForElement(this.offsetParent||document.body),f=b.height-this.offsetHeight,b=b.width-this.offsetWidth,c={};c.x=Math.max(a.x,0);c.x=Math.min(c.x,b);c.y=Math.max(a.y,0);c.y=Math.min(c.y,f);return c},onDragHandleMouseDown_:function(a){a.preventDefault();a.stopImmediatePropagation();
var b=a.clientX-this.offsetLeft,f=a.clientY-this.offsetTop;tv.b.ui.trackMouseMovesUntilMouseUp(function(a){var e={};e.x=a.clientX-b;e.y=a.clientY-f;this.pos=e}.bind(this))},checkIsClick_:function(a){if(this.isInteracting_&&this.isClick_){a=this.mousePos_.x-this.mouseDownPos_.x;var b=this.mousePos_.y-this.mouseDownPos_.y;16<a*a+b*b&&(this.isClick_=!1)}},dispatchClickEvents_:function(b){if(this.isClick_){b=a[c.SELECTION].eventNames;var f=this.createEvent_(b.begin);this.dispatchEvent(f);f=this.createEvent_(b.end);
this.dispatchEvent(f)}}};return{MIN_MOUSE_SELECTION_DISTANCE:4,MouseModeSelector:b,MOUSE_SELECTOR_MODE:c,MODIFIER:f}});"use strict";
tv.exportTo("tv.c",function(){function d(){this.textWidthMap={}}function c(a,b){this.string=a;this.width=b}var a={};new d;d.prototype={get:function(f,b,e,d,g){var h=a[e];h||(h={},a[e]=h);d=h[b];d||(h[b]={},d=h[b]);h=d[g];if(void 0===h){for(h=!1;this.labelWidthWorld(f,e,b)>g&&!(1>.75*e.length);)e=e.substring(0,.75*e.length),h=!0;h&&3<e.length&&(e=e.substring(0,e.length-3)+"...");h=new c(e,this.labelWidth(f,e));d[g]=h}return h},quickMeasureText_:function(a,b){var e=this.textWidthMap[b];e||(e=a.measureText(b).width,
this.textWidthMap[b]=e);return e},labelWidth:function(a,b){return this.quickMeasureText_(a,b)+2},labelWidthWorld:function(a,b,e){return this.labelWidth(a,b)*e}};return{ElidedTitleCache:d}});"use strict";
tv.exportTo("tv.c",function(){function d(a,b,f,c,d){a.moveTo(b,f);a.lineTo(c,d)}function c(a,b,f,c,d,m,n){a.beginPath();a.moveTo(b,f);a.lineTo(c,d);a.lineTo(m,n);a.closePath()}var a=new tv.c.ElidedTitleCache,f=tv.b.ui.getColorPalette(),b=tv.c.EventPresenter;return{drawSlices:function(a,c,d,h,l,m,n){var p=window.devicePixelRatio||1,u=c.xViewVectorToWorld(1);l*=p;p*=4;l<p&&(p=0);var v=l-p;a.save();c.applyTransformToCanvas(a);c=new tv.c.FastRectRenderer(a,2*u,2*u,f);c.setYandH(0,l);for(d=tv.b.findLowIndexInSortedArray(m,
function(a){return a.start+a.duration},d);d<m.length;++d){var z=m[d],E=z.start;if(E>h)break;var D=u;0<z.duration&&(D=Math.max(z.duration,.001),D<u&&(D=u));var q=b.getSliceColorId(z),r=b.getSliceAlpha(z,n),t=.7*r;if(z.cpuDuration){var z=z.cpuDuration/z.duration*D,w=D-z;z<1*u&&(z=0,w=D);w<3*u&&(z=D,w=0);0<z&&c.fillRect(E,z,q,r);0<w&&(c.setYandH(0,v),c.fillRect(E+z-u,w+u,q,t),c.setYandH(v,p),c.fillRect(E+z-u,w+u,q,r),c.setYandH(0,l))}else c.fillRect(E,D,q,r)}c.flush();a.restore()},drawInstantSlicesAsLines:function(a,
f,c,d,l,m,n){var p=window.devicePixelRatio||1;l*=p;var u=f.xViewVectorToWorld(1);a.save();a.lineWidth=u*n*p;f.applyTransformToCanvas(a);a.beginPath();for(f=tv.b.findLowIndexInSortedArray(m,function(a){return a.start},c);f<m.length;++f){c=m[f];n=c.start;if(n>d)break;a.strokeStyle=b.getInstantSliceColor(c);a.moveTo(n,0);a.lineTo(n,l)}a.stroke();a.restore()},drawLabels:function(e,f,c,d,l,m,n,p){var u=window.devicePixelRatio||1,v=f.xViewVectorToWorld(1);e.save();e.textAlign="center";e.textBaseline="top";
e.font=n*u+"px sans-serif";m&&(e.font="italic "+e.font);m=p*u;n=tv.b.findLowIndexInSortedArray(l,function(a){return a.start+a.duration},c);for(c=20*v;n<l.length;++n){u=l[n];if(u.start>d)break;if(!(u.duration<=c)){p=u.title+(u.didNotFinish?" (Did Not Finish)":"");var z=a.labelWidth(e,p);a.labelWidthWorld(e,p,v)>u.duration&&(z=a.get(e,v,p,z,u.duration),p=z.string,z=z.width);z*v<u.duration&&(e.fillStyle=b.getTextColor(u),u=f.xWorldToView(u.start+.5*u.duration),e.fillText(p,u,m,z))}}e.restore()},drawLine:d,
drawTriangle:c,drawArrow:function(a,b,f,h,l,m,n){var p=h-b,u=l-f,v=Math.sqrt(p*p+u*u),z=(v-m)/v;m=b+z*p;z=f+z*u;u=u/v*n;n*=-(p/v);a.beginPath();d(a,b,f,h,l);a.stroke();c(a,m+u,z+n,h,l,m-u,z-n);a.fill()},elidedTitleCache_:a,THIN_SLICE_HEIGHT:4}});"use strict";
tv.exportTo("tv.c",function(){function d(c){this.viewport_=c;this.range_=new tv.b.Range;this.rightSelected_=this.leftSelected_=!1;this.rightSnapIndicator_=this.leftSnapIndicator_=void 0}d.prototype={get isEmpty(){return this.range_.isEmpty},reset:function(){this.range_.reset();this.rightSelected_=this.leftSelected_=!1;this.rightSnapIndicator_=this.leftSnapIndicator_=void 0;this.viewport_.dispatchChangeEvent()},get min(){return this.range_.min},set min(c){this.range_.min=c;this.viewport_.dispatchChangeEvent()},
get max(){return this.range_.max},set max(c){this.range_.max=c;this.viewport_.dispatchChangeEvent()},set:function(c){this.range_.reset();this.range_.addRange(c);this.viewport_.dispatchChangeEvent()},setMinAndMax:function(c,a){this.range_.min=c;this.range_.max=a;this.viewport_.dispatchChangeEvent()},get range(){return this.range_.range},asRangeObject:function(){var c=new tv.b.Range;c.addRange(this.range_);return c},get leftSelected(){return this.leftSelected_},set leftSelected(c){this.leftSelected_!=
c&&(this.leftSelected_=c,this.viewport_.dispatchChangeEvent())},get rightSelected(){return this.rightSelected_},set rightSelected(c){this.rightSelected_!=c&&(this.rightSelected_=c,this.viewport_.dispatchChangeEvent())},get leftSnapIndicator(){return this.leftSnapIndicator_},set leftSnapIndicator(c){this.leftSnapIndicator_=c;this.viewport_.dispatchChangeEvent()},get rightSnapIndicator(){return this.rightSnapIndicator_},set rightSnapIndicator(c){this.rightSnapIndicator_=c;this.viewport_.dispatchChangeEvent()},
draw:function(c,a,f){if(!this.range_.isEmpty){var b=this.viewport_.currentDisplayTransform,e=this.min,d=this.max,g=Math.round(b.xWorldToView(e)),h=Math.round(b.xWorldToView(d));c.fillStyle="rgba(0, 0, 0, 0.2)";e>a&&c.fillRect(b.xWorldToView(a),0,g,c.canvas.height);d<f&&c.fillRect(h,0,b.xWorldToView(f),c.canvas.height);c.lineWidth=Math.round(window.devicePixelRatio||1);0<this.range_.range?(this.drawLine_(c,a,f,c.canvas.height,this.min,this.leftSelected_),this.drawLine_(c,a,f,c.canvas.height,this.max,
this.rightSelected_)):this.drawLine_(c,a,f,c.canvas.height,this.min,this.leftSelected_||this.rightSelected_);c.lineWidth=1}},drawLine_:function(c,a,f,b,e,d){e<a||e>=f||(a=Math.round(this.viewport_.currentDisplayTransform.xWorldToView(e)),c.save(),c.translate(Math.round(c.lineWidth)%2/2,0),c.beginPath(),tv.c.drawLine(c,a,0,a,b),c.strokeStyle=d?"rgb(255, 0, 0)":"rgb(0, 0, 0)",c.stroke(),c.restore())},drawIndicators:function(c,a,f){this.leftSnapIndicator_&&this.drawIndicator_(c,a,f,this.range_.min,this.leftSnapIndicator_,
this.leftSelected_);this.rightSnapIndicator_&&this.drawIndicator_(c,a,f,this.range_.max,this.rightSnapIndicator_,this.rightSelected_)},drawIndicator_:function(c,a,f,b,e,d){a=Math.round(this.viewport_.currentDisplayTransform.xWorldToView(b));c.save();c.translate(Math.round(c.lineWidth)%2/2,0);f=e.y*devicePixelRatio;e=e.height*devicePixelRatio;b=4*(window.devicePixelRatio||1);c.fillStyle=d?"rgb(255, 0, 0)":"rgb(0, 0, 0)";tv.c.drawTriangle(c,a-.75*b,f,a+.75*b,f,a,f+b);c.fill();tv.c.drawTriangle(c,a-
.75*b,f+e,a+.75*b,f+e,a,f+e-b);c.fill();c.restore()}};return{SnapIndicator:function(c,a){this.y=c;this.height=a},TimelineInterestRange:d}});"use strict";
tv.exportTo("tv.c",function(){function d(c){c?this.set(c):(this.scaleX=1,this.panY=this.panX=0)}d.prototype={set:function(c){this.scaleX=c.scaleX;this.panX=c.panX;this.panY=c.panY},clone:function(){return new d(this)},equals:function(c){var a;if(void 0===c||null===c)return!1;a=1&this.panX===c.panX;a&=this.panY===c.panY;a&=this.scaleX===c.scaleX;return!!a},almostEquals:function(c){var a;if(void 0===c||null===c)return!1;a=1&.001>Math.abs(this.panX-c.panX);a&=.001>Math.abs(this.panY-c.panY);a&=.001>
Math.abs(this.scaleX-c.scaleX);return!!a},incrementPanXInViewUnits:function(c){this.panX+=this.xViewVectorToWorld(c)},xPanWorldPosToViewPos:function(c,a,f){if("string"==typeof a)if("left"===a)a=0;else if("center"===a)a=f/2;else if("right"===a)a=f-1;else throw Error("viewX must be left|center|right or number.");this.panX=a/this.scaleX-c},xPanWorldBoundsIntoView:function(c,a,f){0>this.xWorldToView(c)?this.xPanWorldPosToViewPos(c,"left",f):this.xWorldToView(a)>f&&this.xPanWorldPosToViewPos(a,"right",
f)},xSetWorldBounds:function(c,a,f){this.setPanAndScale(-c,f/(a-c))},setPanAndScale:function(c,a){this.scaleX=a;this.panX=c},xWorldToView:function(c){return(c+this.panX)*this.scaleX},xWorldVectorToView:function(c){return c*this.scaleX},xViewToWorld:function(c){return c/this.scaleX-this.panX},xViewVectorToWorld:function(c){return c/this.scaleX},applyTransformToCanvas:function(c){c.transform(this.scaleX,0,0,1,this.panX*this.scaleX,0)}};return{TimelineDisplayTransform:d}});"use strict";
tv.exportTo("tv.b.ui",function(){function d(){}d.prototype={canTakeOverFor:function(c){throw Error("Not implemented");},takeOverFor:function(c,a,f){throw Error("Not implemented");},start:function(c,a){throw Error("Not implemented");},didStopEarly:function(c,a,f){},tick:function(c,a){throw Error("Not implemented");}};return{Animation:d}});"use strict";
tv.exportTo("tv.b.ui",function(){function d(){tv.b.EventTarget.call(this);this.activeAnimation_=this.target_=void 0;this.tickScheduled_=!1}d.prototype={__proto__:tv.b.EventTarget.prototype,get target(){return this.target_},set target(c){if(this.activeAnimation_)throw Error("Cannot change target while animation is running.");if(void 0===c.cloneAnimationState||"function"!==typeof c.cloneAnimationState)throw Error("target must have a cloneAnimationState function");this.target_=c},get activeAnimation(){return this.activeAnimation_},
get hasActiveAnimation(){return!!this.activeAnimation_},queueAnimation:function(c,a){if(void 0===this.target_)throw Error("Cannot queue animations without a target");var f;f=void 0!==a?a:window.performance.now();this.activeAnimation_&&this.activeAnimation_.tick(f,this.target_)&&(this.activeAnimation_=void 0);this.activeAnimation_&&(c.canTakeOverFor(this.activeAnimation_)?(this.activeAnimation_.didStopEarly(f,this.target_,!0),c.takeOverFor(this.activeAnimation_,f,this.target_)):this.activeAnimation_.didStopEarly(f,
this.target_,!1));this.activeAnimation_=c;this.activeAnimation_.start(f,this.target_);this.tickScheduled_||(this.tickScheduled_=!0,tv.b.requestAnimationFrame(this.tickActiveAnimation_,this))},cancelActiveAnimation:function(c){this.activeAnimation_&&(c=void 0!==c?c:window.performance.now(),this.activeAnimation_.didStopEarly(c,this.target_,!1),this.activeAnimation_=void 0)},tickActiveAnimation_:function(c){this.tickScheduled_=!1;if(this.activeAnimation_)if(void 0===this.target_)this.activeAnimation_.didStopEarly(c,
this.target_,!1);else{var a=this.target_.cloneAnimationState();this.activeAnimation_.tick(c,this.target_)&&(this.activeAnimation_=void 0);this.activeAnimation_&&(this.tickScheduled_=!0,tv.b.requestAnimationFrame(this.tickActiveAnimation_,this));a&&(c=new Event("didtick"),c.oldTargetState=a,this.dispatchEvent(c,!1,!1))}}};return{AnimationController:d}});"use strict";
tv.exportTo("tv.c",function(){function d(){this.stableIdToTrackMap_={}}function c(b){this.parentEl_=b;this.modelTrackContainer_=void 0;this.currentDisplayTransform_=new a;this.initAnimationController_();this.highDetails_=this.highlightVSync_=this.showFlowEvents_=!1;this.gridTimebase_=0;this.gridStep_=1E3/60;this.hasCalledSetupFunction_=this.gridEnabled_=!1;this.onResize_=this.onResize_.bind(this);this.onModelTrackControllerScroll_=this.onModelTrackControllerScroll_.bind(this);this.checkForAttachInterval_=
setInterval(this.checkForAttach_.bind(this),250);this.majorMarkPositions=[];this.interestRange_=new f(this);this.eventToTrackMap_={};this.containerToTrackObj=new d}var a=tv.c.TimelineDisplayTransform,f=tv.c.TimelineInterestRange;d.prototype={addContainer:function(a,e){if(!e)throw Error("Must provide a track.");this.stableIdToTrackMap_[a.stableId]=e},clearMap:function(){this.stableIdToTrackMap_={}},getTrackByStableId:function(a){return this.stableIdToTrackMap_[a]}};c.prototype={__proto__:tv.b.EventTarget.prototype,
setWhenPossible:function(a){this.pendingSetFunction_=a},get isAttachedToDocumentOrInTestMode(){if(void 0!==this.parentEl_)return tv.b.ui.isElementAttachedToDocument(this.parentEl_)},onResize_:function(){this.dispatchChangeEvent()},checkForAttach_:function(){if(this.isAttachedToDocumentOrInTestMode&&0!=this.clientWidth){this.iframe_||(this.iframe_=document.createElement("iframe"),this.iframe_.style.cssText="position:absolute;width:100%;height:0;border:0;visibility:hidden;",this.parentEl_.appendChild(this.iframe_),
this.iframe_.contentWindow.addEventListener("resize",this.onResize_));var a=this.parentEl_.clientWidth+"x"+this.parentEl_.clientHeight;if(this.pendingSetFunction_){this.lastSize_=a;try{this.pendingSetFunction_()}catch(e){console.log("While running setWhenPossible:",e.message?e.message+"\n"+e.stack:e.stack)}this.pendingSetFunction_=void 0}window.clearInterval(this.checkForAttachInterval_);this.checkForAttachInterval_=void 0}},dispatchChangeEvent:function(){tv.b.dispatchSimpleEvent(this,"change")},
detach:function(){this.checkForAttachInterval_&&(window.clearInterval(this.checkForAttachInterval_),this.checkForAttachInterval_=void 0);this.iframe_&&(this.iframe_.removeEventListener("resize",this.onResize_),this.parentEl_.removeChild(this.iframe_))},initAnimationController_:function(){this.dtAnimationController_=new tv.b.ui.AnimationController;this.dtAnimationController_.addEventListener("didtick",function(a){this.onCurentDisplayTransformChange_(a.oldTargetState)}.bind(this));var a=this;this.dtAnimationController_.target=
{get panX(){return a.currentDisplayTransform_.panX},set panX(e){a.currentDisplayTransform_.panX=e},get panY(){return a.currentDisplayTransform_.panY},set panY(e){a.currentDisplayTransform_.panY=e},get scaleX(){return a.currentDisplayTransform_.scaleX},set scaleX(e){a.currentDisplayTransform_.scaleX=e},cloneAnimationState:function(){return a.currentDisplayTransform_.clone()},xPanWorldPosToViewPos:function(e,f){a.currentDisplayTransform_.xPanWorldPosToViewPos(e,f,a.modelTrackContainer_.canvas.clientWidth)}}},
get currentDisplayTransform(){return this.currentDisplayTransform_},setDisplayTransformImmediately:function(a){this.dtAnimationController_.cancelActiveAnimation();var e=this.dtAnimationController_.target.cloneAnimationState();this.currentDisplayTransform_.set(a);this.onCurentDisplayTransformChange_(e)},queueDisplayTransformAnimation:function(a){if(!(a instanceof tv.b.ui.Animation))throw Error("animation must be instanceof tv.b.ui.Animation");this.dtAnimationController_.queueAnimation(a)},onCurentDisplayTransformChange_:function(a){this.modelTrackContainer_&&
(this.currentDisplayTransform.panY=tv.b.clamp(this.currentDisplayTransform.panY,0,this.modelTrackContainer_.scrollHeight-this.modelTrackContainer_.clientHeight));var e=!this.currentDisplayTransform.equals(a);this.currentDisplayTransform.panY!==a.panY&&(this.modelTrackContainer_.scrollTop=this.currentDisplayTransform.panY);e&&this.dispatchChangeEvent()},onModelTrackControllerScroll_:function(a){this.dtAnimationController_.activeAnimation&&this.dtAnimationController_.activeAnimation.affectsPanY&&this.dtAnimationController_.cancelActiveAnimation();
this.currentDisplayTransform_.panY=this.modelTrackContainer_.scrollTop},get modelTrackContainer(){return this.modelTrackContainer_},set modelTrackContainer(a){this.modelTrackContainer_&&this.modelTrackContainer_.removeEventListener("scroll",this.onModelTrackControllerScroll_);this.modelTrackContainer_=a;this.modelTrackContainer_.addEventListener("scroll",this.onModelTrackControllerScroll_)},get showFlowEvents(){return this.showFlowEvents_},set showFlowEvents(a){this.showFlowEvents_=a;this.dispatchChangeEvent()},
get highlightVSync(){return this.highlightVSync_},set highlightVSync(a){this.highlightVSync_=a;this.dispatchChangeEvent()},get highDetails(){return this.highDetails_},set highDetails(a){this.highDetails_=a;this.dispatchChangeEvent()},get gridEnabled(){return this.gridEnabled_},set gridEnabled(a){this.gridEnabled_!=a&&(this.gridEnabled_=a&&!0,this.dispatchChangeEvent())},get gridTimebase(){return this.gridTimebase_},set gridTimebase(a){this.gridTimebase_!=a&&(this.gridTimebase_=a,this.dispatchChangeEvent())},
get gridStep(){return this.gridStep_},get interestRange(){return this.interestRange_},drawMajorMarkLines:function(a){a.save();a.translate(Math.round(a.lineWidth)%2/2,0);a.beginPath();for(var e in this.majorMarkPositions){var f=Math.floor(this.majorMarkPositions[e]);tv.c.drawLine(a,f,0,f,a.canvas.height)}a.strokeStyle="#ddd";a.stroke();a.restore()},drawGridLines:function(a,e,f){if(this.gridEnabled){var c=this.currentDisplayTransform,d=this.gridTimebase;a.save();a.translate(Math.round(a.lineWidth)%
2/2,0);for(a.beginPath();d<f;){if(d>=e){var l=Math.floor(c.xWorldToView(d));tv.c.drawLine(a,l,0,l,a.canvas.height)}d+=this.gridStep}a.strokeStyle="rgba(255, 0, 0, 0.25)";a.stroke();a.restore()}},rebuildEventToTrackMap:function(){this.eventToTrackMap_=void 0;var a={addEvent:function(a,b){if(!b)throw Error("Must provide a track.");this[a.guid]=b}};this.modelTrackContainer_.addEventsToTrackMap(a);this.eventToTrackMap_=a},rebuildContainerToTrackMap:function(){this.containerToTrackObj.clearMap();this.modelTrackContainer_.addContainersToTrackMap(this.containerToTrackObj)},
trackForEvent:function(a){return this.eventToTrackMap_[a.guid]}};return{ContainerToTrackObj:d,TimelineViewport:c}});"use strict";
tv.exportTo("tv.c",function(){function d(a,f,b){this.deltaX=a;this.deltaY=f;this.durationMs=void 0===b?100:b;this.startTimeMs=this.startPanY=this.startPanX=void 0}function c(a,f,b,e,c){this.goalFocalPointXWorld=a;this.goalFocalPointXView=f;this.goalFocalPointY=b;this.zoomInRatioX=e;this.durationMs=void 0===c?100:c;this.startPanY=this.goalScaleX=this.startScaleX=this.startTimeMs=void 0}d.prototype={__proto__:tv.b.ui.Animation.prototype,get affectsPanY(){return 0!==this.deltaY},canTakeOverFor:function(a){return a instanceof
d},takeOverFor:function(a,f,b){var e=a.goalPanX-b.panX;b=a.goalPanY-b.panY;a=f-(a.startTimeMs+a.durationMs);a=Math.max(a,0);this.deltaX+=e;this.deltaY+=b;this.durationMs+=a},start:function(a,f){this.startTimeMs=a;this.startPanX=f.panX;this.startPanY=f.panY},tick:function(a,f){var b=(a-this.startTimeMs)/this.durationMs,b=tv.b.clamp(b,0,1);f.panX=tv.b.lerp(b,this.startPanX,this.goalPanX);this.affectsPanY&&(f.panY=tv.b.lerp(b,this.startPanY,this.goalPanY));return a>=this.startTimeMs+this.durationMs},
get goalPanX(){return this.startPanX+this.deltaX},get goalPanY(){return this.startPanY+this.deltaY}};c.prototype={__proto__:tv.b.ui.Animation.prototype,get affectsPanY(){return this.startPanY!=this.goalFocalPointY},canTakeOverFor:function(a){return!1},takeOverFor:function(a,f,b){this.goalScaleX=b.scaleX*this.zoomInRatioX},start:function(a,f){this.startTimeMs=a;this.startScaleX=f.scaleX;this.goalScaleX=this.zoomInRatioX*f.scaleX;this.startPanY=f.panY},tick:function(a,f){var b=(a-this.startTimeMs)/
this.durationMs,b=tv.b.clamp(b,0,1);f.scaleX=tv.b.lerp(b,this.startScaleX,this.goalScaleX);this.affectsPanY&&(f.panY=tv.b.lerp(b,this.startPanY,this.goalFocalPointY));f.xPanWorldPosToViewPos(this.goalFocalPointXWorld,this.goalFocalPointXView);return a>=this.startTimeMs+this.durationMs}};return{TimelineDisplayTransformPanAnimation:d,TimelineDisplayTransformZoomToAnimation:c}});"use strict";tv.exportTo("tv.c",function(){return{constants:{HEADING_WIDTH:250}}});"use strict";
tv.exportTo("tv.c",function(){function d(c,a){this.viewport_=c;this.onMouseMove_=this.onMouseMove_.bind(this);this.onDblClick_=this.onDblClick_.bind(this);this.targetElement_=a;this.isMovingLeftEdge_=!1}d.prototype={onEnterTiming:function(c){this.targetElement_.addEventListener("mousemove",this.onMouseMove_);this.targetElement_.addEventListener("dblclick",this.onDblClick_)},onBeginTiming:function(c){this.isTouchPointInsideTrackBounds_(c.clientX,c.clientY)&&(c=this.getSnappedToEventPosition_(c),this.mouseDownAt_(c.x,
c.y),this.updateSnapIndicators_(c))},updateSnapIndicators_:function(c){if(c.snapped){var a=this.viewport_.interestRange;a.min===c.x&&(a.leftSnapIndicator=new tv.c.SnapIndicator(c.y,c.height));a.max===c.x&&(a.rightSnapIndicator=new tv.c.SnapIndicator(c.y,c.height))}},onUpdateTiming:function(c){c=this.getSnappedToEventPosition_(c);this.mouseMoveAt_(c.x,c.y,!0);this.updateSnapIndicators_(c)},onEndTiming:function(c){this.mouseUp_()},onExitTiming:function(c){this.targetElement_.removeEventListener("mousemove",
this.onMouseMove_);this.targetElement_.removeEventListener("dblclick",this.onDblClick_)},onMouseMove_:function(c){if(!c.button){var a=this.getWorldXFromEvent_(c);this.mouseMoveAt_(a,c.clientY,!1)}},onDblClick_:function(c){console.error("not implemented")},isTouchPointInsideTrackBounds_:function(c,a){if(!this.viewport_||!this.viewport_.modelTrackContainer||!this.viewport_.modelTrackContainer.canvas)return!1;var f=this.viewport_.modelTrackContainer.canvas.getBoundingClientRect();return c>=f.left&&c<=
f.right&&a>=f.top&&a<=f.bottom?!0:!1},mouseDownAt_:function(c,a){var f=this.viewport_.interestRange,b=this.viewport_.currentDisplayTransform.xViewVectorToWorld(6*(window.devicePixelRatio||1));f.isEmpty?(f.setMinAndMax(c,c),f.rightSelected=!0,this.isMovingLeftEdge_=!1):Math.abs(c-f.min)<b?(f.leftSelected=!0,f.min=c,this.isMovingLeftEdge_=!0):(Math.abs(c-f.max)<b?(f.rightSelected=!0,f.max=c):(f.setMinAndMax(c,c),f.rightSelected=!0),this.isMovingLeftEdge_=!1)},mouseMoveAt_:function(c,a,f){a=this.viewport_.interestRange;
f?this.updateMovingEdge_(c):(a=this.viewport_.interestRange,f=this.viewport_.currentDisplayTransform.xViewVectorToWorld(6*(window.devicePixelRatio||1)),Math.abs(c-a.min)<f?(a.leftSelected=!0,a.rightSelected=!1):Math.abs(c-a.max)<f?(a.leftSelected=!1,a.rightSelected=!0):(a.leftSelected=!1,a.rightSelected=!1))},updateMovingEdge_:function(c){var a=this.viewport_.interestRange,f=a.min,b=a.max;this.isMovingLeftEdge_?f=c:b=c;f<=b?a.setMinAndMax(f,b):a.setMinAndMax(b,f);a.min==c?(this.isMovingLeftEdge_=
!0,a.leftSelected=!0,a.rightSelected=!1):(this.isMovingLeftEdge_=!1,a.leftSelected=!1,a.rightSelected=!0)},mouseUp_:function(){var c=this.viewport_.currentDisplayTransform,a=this.viewport_.interestRange;a.leftSelected=!1;a.rightSelected=!1;c=c.xViewVectorToWorld(2*(window.devicePixelRatio||1));a.range<c&&a.reset()},getWorldXFromEvent_:function(c){var a=window.devicePixelRatio||1,f=this.viewport_.modelTrackContainer.canvas.getBoundingClientRect().left;return this.viewport_.currentDisplayTransform.xViewToWorld((c.clientX-
f)*a)},getSnappedToEventPosition_:function(c){var a=16*(window.devicePixelRatio||1),f=this.viewport_.modelTrackContainer,b=f.getBoundingClientRect(),e=this.viewport_,d=e.currentDisplayTransform,g=d.xViewVectorToWorld(a),a=this.getWorldXFromEvent_(c);c=c.clientY;var h=new tv.c.Selection;f.addClosestEventToSelection(a,g,c,c,h);h.length||f.addClosestEventToSelection(a,g,b.top,b.bottom,h);for(var l=Infinity,d=d.xViewVectorToWorld(1),m={x:a,y:c-b.top,height:0,snapped:!1},n=new tv.b.Range,p=0;p<h.length;p++){var u=
h[p],v=e.trackForEvent(u).getBoundingClientRect();n.reset();u.addBoundsToRange(n);var u=Math.abs(n.min-a)<Math.abs(n.max-a)?n.min:n.max,z=u-a,E=v.top,v=v.height,D=Math.abs(E+v/2-c);(z<=g||Math.abs(z-g)<d)&&D<l&&(g=z,l=D,m.x=u,m.y=E+f.scrollTop-b.top,m.height=v,m.snapped=!0)}return m}};return{TimingTool:d}});"use strict";
tv.exportTo("tv.b.ui",function(){var d=tv.b.ui.define("div");d.prototype={__proto__:HTMLUnknownElement.prototype,decorate:function(){this.observer_=new WebKitMutationObserver(this.didMutate_.bind(this));this.observer_.observe(this,{childList:!0});Object.defineProperty(this,"textContent",{get:void 0,set:this.onSetTextContent_})},appendChild:function(c){HTMLUnknownElement.prototype.appendChild.call(this,c);this.didMutate_(this.observer_.takeRecords())},insertBefore:function(c,a){HTMLUnknownElement.prototype.insertBefore.call(this,
c,a);this.didMutate_(this.observer_.takeRecords())},removeChild:function(c){HTMLUnknownElement.prototype.removeChild.call(this,c);this.didMutate_(this.observer_.takeRecords())},replaceChild:function(c,a){HTMLUnknownElement.prototype.replaceChild.call(this,c,a);this.didMutate_(this.observer_.takeRecords())},onSetTextContent_:function(c){if(""!=c)throw Error("textContent can only be set to ''.");this.clear()},clear:function(){for(;this.lastChild;)HTMLUnknownElement.prototype.removeChild.call(this,this.lastChild);
this.didMutate_(this.observer_.takeRecords())},didMutate_:function(c){this.beginDecorating_();for(var a=0;a<c.length;a++){var f=c[a].addedNodes;if(f)for(var b=0;b<f.length;b++)this.decorateChild_(f[b]);if(f=c[a].removedNodes)for(b=0;b<f.length;b++)this.undecorateChild_(f[b])}this.doneDecoratingForNow_()},decorateChild_:function(c){throw Error("Not implemented");},undecorateChild_:function(c){throw Error("Not implemented");},beginDecorating_:function(){},doneDecoratingForNow_:function(){}};return{ContainerThatDecoratesItsChildren:d}});
"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.b.ui.define("track",tv.b.ui.ContainerThatDecoratesItsChildren);d.prototype={__proto__:tv.b.ui.ContainerThatDecoratesItsChildren.prototype,decorate:function(c){tv.b.ui.ContainerThatDecoratesItsChildren.prototype.decorate.call(this);if(void 0===c)throw Error("viewport is required when creating a Track.");this.viewport_=c;this.classList.add("track")},get viewport(){return this.viewport_},get drawingContainer(){for(var c=this;c;){if(c instanceof tv.c.tracks.DrawingContainer)return c;
c=c.parentElement}},get eventContainer(){},invalidateDrawingContainer:function(){var c=this.drawingContainer;c&&c.invalidate()},context:function(){if(this.parentNode){if(!this.parentNode.context)throw Error("Parent container does not support context() method.");return this.parentNode.context()}},decorateChild_:function(c){},undecorateChild_:function(c){c.detach&&c.detach()},updateContents_:function(){},drawTrack:function(c){var a=this.context(),f=window.devicePixelRatio||1,b=this.getBoundingClientRect(),
e=a.canvas.getBoundingClientRect();a.save();a.translate(0,f*(b.top-e.top));var d=this.viewport.currentDisplayTransform,e=d.xViewToWorld(0),f=d.xViewToWorld(b.width*f);this.draw(c,e,f);a.restore()},draw:function(c,a,f){},addEventsToTrackMap:function(c){},addContainersToTrackMap:function(c){},addIntersectingItemsInRangeToSelection:function(c,a,f,b,e){var d=window.devicePixelRatio||1,g=this.viewport.currentDisplayTransform,h=g.xViewVectorToWorld(1);c=g.xViewToWorld(c*d);a=g.xViewToWorld(a*d);d=this.getBoundingClientRect();
f=Math.max(f,d.top);b=Math.min(b,d.bottom);f>b||this.addIntersectingItemsInRangeToSelectionInWorldSpace(c,a,h,e)},addIntersectingItemsInRangeToSelectionInWorldSpace:function(c,a,f,b){},addClosestEventToSelection:function(c,a,f,b,e){},addClosestInstantEventToSelection:function(c,a,f,b){(c=tv.b.findClosestElementInSortedArray(c,function(a){return a.start},a,f))&&b.push(c)}};return{Track:d}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d={SLICE:1,INSTANT_EVENT:2,BACKGROUND:3,GRID:4,FLOW_ARROWS:5,MARKERS:6,HIGHLIGHTS:7},c=tv.b.ui.define("drawing-container",tv.c.tracks.Track);c.prototype={__proto__:tv.c.tracks.Track.prototype,decorate:function(a){tv.c.tracks.Track.prototype.decorate.call(this,a);this.classList.add("drawing-container");this.canvas_=document.createElement("canvas");this.canvas_.className="drawing-container-canvas";this.canvas_.style.left=tv.c.constants.HEADING_WIDTH+"px";this.appendChild(this.canvas_);
this.ctx_=this.canvas_.getContext("2d");this.viewportChange_=this.viewportChange_.bind(this);this.viewport.addEventListener("change",this.viewportChange_)},get canvas(){return this.canvas_},context:function(){return this.ctx_},viewportChange_:function(){this.invalidate()},invalidate:function(){this.rafPending_||(this.rafPending_=!0,tv.b.requestPreAnimationFrame(this.preDraw_,this))},preDraw_:function(){this.rafPending_=!1;this.updateCanvasSizeIfNeeded_();tv.b.requestAnimationFrameInThisFrameIfPossible(this.draw_,
this)},draw_:function(){this.ctx_.clearRect(0,0,this.canvas_.width,this.canvas_.height);var a=[d.BACKGROUND,d.HIGHLIGHTS,d.GRID,d.INSTANT_EVENT,d.SLICE,d.MARKERS];this.viewport.showFlowEvents&&a.push(d.FLOW_ARROWS);for(var f in a)for(var b=0;b<this.children.length;++b)this.children[b]instanceof tv.c.tracks.Track&&this.children[b].drawTrack(a[f]);f=window.devicePixelRatio||1;var b=this.canvas_.getBoundingClientRect(),e=this.viewport.currentDisplayTransform,a=e.xViewToWorld(0);f=e.xViewToWorld(b.width*
f);this.viewport.drawGridLines(this.ctx_,a,f)},updateCanvasSizeIfNeeded_:function(){var a=tv.b.asArray(this.children).filter(this.visibleFilter_);this.getBoundingClientRect();var f=a[0].getBoundingClientRect(),b=a[a.length-1].getBoundingClientRect(),a=f.width-tv.c.constants.HEADING_WIDTH,f=b.bottom-f.top,b=window.devicePixelRatio||1;this.canvas_.width!=a*b&&(this.canvas_.width=a*b,this.canvas_.style.width=a+"px");this.canvas_.height!=f*b&&(this.canvas_.height=f*b,this.canvas_.style.height=f+"px")},
visibleFilter_:function(a){return a instanceof tv.c.tracks.Track?"none"!==window.getComputedStyle(a).display:!1},addClosestEventToSelection:function(a,f,b,e,c){for(var d=0;d<this.children.length;++d)if(this.children[d]instanceof tv.c.tracks.Track){var h=this.children[d].getBoundingClientRect(),l=Math.max(b,h.top),h=Math.min(e,h.bottom);l<=h&&this.children[d].addClosestEventToSelection(a,f,b,e,c)}tv.c.tracks.Track.prototype.addClosestEventToSelection.apply(this,arguments)},addEventsToTrackMap:function(a){for(var f=
0;f<this.children.length;++f)this.children[f]instanceof tv.c.tracks.Track&&this.children[f].addEventsToTrackMap(a)},addContainersToTrackMap:function(a){for(var f=0;f<this.children.length;++f)this.children[f]instanceof tv.c.tracks.Track&&this.children[f].addContainersToTrackMap(a)}};return{DrawingContainer:c,DrawType:d}});"use strict";
tv.exportTo("tv.c.tracks",function(){function d(a){if(void 0===a)throw Error("viewport must be provided");this.viewport_=a}d.prototype={__proto__:Object.prototype,processModel:function(a){throw Error("processModel implementation missing");},drawHighlight:function(a,f,b,e,c){throw Error("drawHighlight implementation missing");}};var c=new tv.b.ExtensionRegistryOptions(tv.b.BASIC_REGISTRY_MODE);c.defaultMetadata={};c.mandatoryBaseClass=d;tv.b.decorateExtensionRegistry(d,c);return{Highlighter:d}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.b.Task,c=tv.b.ui.define("container-track",tv.c.tracks.Track);c.prototype={__proto__:tv.c.tracks.Track.prototype,decorate:function(a){tv.c.tracks.Track.prototype.decorate.call(this,a)},detach:function(){this.textContent=""},get tracks_(){for(var a=[],f=0;f<this.children.length;f++)this.children[f].classList.contains("track")&&a.push(this.children[f]);return a},drawTrack:function(a){for(var f=0;f<this.children.length;++f)this.children[f]instanceof tv.c.tracks.Track&&
this.children[f].drawTrack(a)},addIntersectingItemsInRangeToSelection:function(a,f,b,e,c){for(var d=0;d<this.tracks_.length;d++){var h=this.tracks_[d].getBoundingClientRect(),l=Math.max(b,h.top),h=Math.min(e,h.bottom);l<=h&&this.tracks_[d].addIntersectingItemsInRangeToSelection(a,f,b,e,c)}tv.c.tracks.Track.prototype.addIntersectingItemsInRangeToSelection.apply(this,arguments)},addEventsToTrackMap:function(a){for(var f=0;f<this.children.length;++f)this.children[f].addEventsToTrackMap(a)},addAllObjectsMatchingFilterToSelection:function(a,
f){for(var b=0;b<this.tracks_.length;b++)this.tracks_[b].addAllObjectsMatchingFilterToSelection(a,f)},addAllObjectsMatchingFilterToSelectionAsTask:function(a,f){for(var b=new d,e=0;e<this.tracks_.length;e++)b.subTask(function(b){return function(){this.tracks_[b].addAllObjectsMatchingFilterToSelection(a,f)}}(e),this);return b},addClosestEventToSelection:function(a,f,b,e,c){for(var d=0;d<this.tracks_.length;d++){var h=this.tracks_[d].getBoundingClientRect(),l=Math.max(b,h.top),h=Math.min(e,h.bottom);
l<=h&&this.tracks_[d].addClosestEventToSelection(a,f,b,e,c)}tv.c.tracks.Track.prototype.addClosestEventToSelection.apply(this,arguments)}};return{ContainerTrack:c}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=String.fromCharCode(9662),c=String.fromCharCode(9656),a=tv.b.ui.define("heading-track",tv.c.tracks.Track);a.prototype={__proto__:tv.c.tracks.Track.prototype,decorate:function(a){tv.c.tracks.Track.prototype.decorate.call(this,a);this.classList.add("heading-track");this.headingDiv_=document.createElement("heading");this.headingDiv_.style.width=tv.c.constants.HEADING_WIDTH+"px";this.headingDiv_.addEventListener("click",this.onHeadingDivClicked_.bind(this));
this.heading_="";this.selectionGenerator_=this.expanded_=void 0;this.updateContents_()},get heading(){return this.heading_},set heading(a){this.heading_=a;this.updateContents_()},set tooltip(a){this.headingDiv_.title=a},set selectionGenerator(a){this.selectionGenerator_=a;this.updateContents_()},get expanded(){return this.expanded_},set expanded(a){this.expanded_!=a&&(this.expanded_=a,this.expandedStateChanged_())},expandedStateChanged_:function(){this.updateHeadigDiv_()},onHeadingDivClicked_:function(){var a=
new Event("heading-clicked",!0,!1);this.dispatchEvent(a)},updateContents_:function(){this.updateHeadigDiv_()},updateHeadigDiv_:function(){this.headingDiv_.innerHTML="";var a=document.createElement("span");a.classList.add("heading-arrow");a.textContent=!0===this.expanded?d:!1===this.expanded?c:"";this.headingDiv_.appendChild(a);this.selectionGenerator_?(this.headingLink_=document.createElement("a"),tv.c.analysis.AnalysisLink.decorate(this.headingLink_),this.headingLink_.selectionGenerator=this.selectionGenerator_,
this.headingDiv_.appendChild(this.headingLink_),this.headingLink_.appendChild(document.createTextNode(this.heading_))):(a=document.createElement("span"),a.textContent=this.heading_,this.headingDiv_.appendChild(a));this.appendChild(this.headingDiv_)},draw:function(a,b,e){throw Error("draw implementation missing");}};return{HeadingTrack:a}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.c.trace_model.SelectionState,c=tv.c.EventPresenter,a=tv.b.ui.define("counter-track",tv.c.tracks.HeadingTrack);a.prototype={__proto__:tv.c.tracks.HeadingTrack.prototype,decorate:function(a){tv.c.tracks.HeadingTrack.prototype.decorate.call(this,a);this.classList.add("counter-track")},get counter(){return this.counter_},set counter(a){this.counter_=a;this.heading=a.name+": "},draw:function(a,b,e){switch(a){case tv.c.tracks.DrawType.SLICE:this.drawSlices_(b,
e)}},drawSlices_:function(a,b){var e=this.viewport.highDetails,k=this.context(),g=window.devicePixelRatio||1,h=this.getBoundingClientRect().height*g,l=h-2*g,m=this.counter_,n=this.viewport.currentDisplayTransform;n.xViewVectorToWorld(1);for(var p=n.xViewVectorToWorld(1),u=m.numSeries,v=m.numSamples,z=tv.b.findLowIndexInSortedArray(m.timestamps,function(a){return a},a),E=m.timestamps,z=0<z-1?z-1:0,D=l/m.maxTotal,q=m.numSeries-1;0<=q;q--){var r=m.series[q];k.strokeStyle=c.getCounterSeriesColor(r.color,
d.NONE);var t=function(e){for(var d=-1,t=z-1,w=0<=t?E[t]-p:-1,x=h,A=!1;;){t++;if(t>=v)break;var y=E[t],B=l-D*m.totals[t*u+q];if(y>b){A&&(w=y=b,k.lineTo(n.xWorldToView(y),x));break}if(t+1<v){var K=E[t+1];if(K-w<=p&&K<b)continue;y<a&&(y=a)}y-w<p&&w<y&&(y=w+p);K=r.samples[t].selectionState;A&&(k.lineTo(n.xWorldToView(y),x),K!=d&&(e?(k.lineTo(n.xWorldToView(y),h),k.closePath(),k.fill()):(k.lineTo(n.xWorldToView(y),B),k.stroke())));K!=d&&(k.fillStyle=c.getCounterSeriesColor(r.color,K,.5),k.lineWidth=1*
g,k.beginPath(),e?k.moveTo(n.xWorldToView(y),h):k.moveTo(n.xWorldToView(y),A?x:B));k.lineTo(n.xWorldToView(y),B);A=!0;w=y;x=B;d=K}A&&(e?(k.lineTo(n.xWorldToView(w),h),k.closePath(),k.fill()):k.stroke())};t(!0);e&&t(!1);t=tv.b.findLowIndexInSortedArray(m.timestamps,function(a){return a},b);m.timestamps[t]==b&&t++;var w=z>=m.timestamps.length?a:m.timestamps[z],x=1>t?b:m.timestamps[t-1],t=(.1-tv.b.clamp((t-z)/(n.scaleX*(w>=x?b-a:x-w)),.05,.1))/.05;k.strokeStyle=c.getCounterSeriesColor(r.color,d.NONE);
w=void 0;for(x=z;E[x]<b;x++){var y=E[x],A=l-D*m.totals[x*u+q];if(r.samples[x].selected){var B=c.getCounterSeriesColor(r.color,r.samples[x].selectionState);B!==w&&(k.fillStyle=w=B);k.beginPath();k.arc(n.xWorldToView(y),A,2*g,0,2*Math.PI);k.fill();k.stroke()}else e&&(B=c.getCounterSeriesColor(r.color,r.samples[x].selectionState,t),B!==w&&(k.fillStyle=w=B),k.fillRect(n.xWorldToView(y)-1.5*g,A-1.5*g,3*g,3*g))}}},addEventsToTrackMap:function(a){for(var b=this.counter_.series,e=0;e<b.length;e++)for(var c=
b[e].samples,d=0;d<c.length;d++)a.addEvent(c[d],this)},addIntersectingItemsInRangeToSelectionInWorldSpace:function(a,b,e,c){function d(a,b){return b===h.timestamps.length-1?8*this.viewport.currentDisplayTransform.xViewVectorToWorld(1):h.timestamps[b+1]-h.timestamps[b]}var h=this.counter_;a=tv.b.findLowIndexInSortedIntervals(h.timestamps,function(a){return a},d.bind(this),a);for(b=tv.b.findLowIndexInSortedIntervals(h.timestamps,function(a){return a},d.bind(this),b);a<=b;a++)if(!(0>a||a>=h.timestamps.length))for(e=
0;e<this.counter.numSeries;e++)c.push(this.counter.series[e].samples[a])},addItemNearToProvidedEventToSelection:function(a,b,e){b=a.getSampleIndex()+b;if(0>b||b>=a.series.samples.length)return!1;e.push(a.series.samples[b]);return!0},addAllObjectsMatchingFilterToSelection:function(a,b){},addClosestEventToSelection:function(a,b,e,c,d){e=this.counter;if(e.numSeries)for(c=0;c<e.numSeries;c++){var h=tv.b.findClosestElementInSortedArray(e.series_[c].samples_,function(a){return a.timestamp},a,b);h&&d.push(h)}}};
return{CounterTrack:a}});"use strict";
tv.exportTo("tv.c.analysis",function(){var d=tv.b.ui.define("object-snapshot-view");d.prototype={__proto__:HTMLUnknownElement.prototype,decorate:function(){this.objectSnapshot_=void 0},get requiresTallView(){return!0},set modelEvent(a){this.objectSnapshot=a},get modelEvent(){return this.objectSnapshot},get objectSnapshot(){return this.objectSnapshot_},set objectSnapshot(a){this.objectSnapshot_=a;this.updateContents()},updateContents:function(){throw Error("Not implemented");}};var c=new tv.b.ExtensionRegistryOptions(tv.b.TYPE_BASED_REGISTRY_MODE);
c.mandatoryBaseClass=d;c.defaultMetadata={showInstances:!0,showInTrackView:!0};tv.b.decorateExtensionRegistry(d,c);return{ObjectSnapshotView:d}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.c.TraceModelSettings,c=tv.b.ui.define("multi-row-track",tv.c.tracks.ContainerTrack);c.prototype={__proto__:tv.c.tracks.ContainerTrack.prototype,decorate:function(a){tv.c.tracks.ContainerTrack.prototype.decorate.call(this,a);this.heading_=this.tooltip_="";this.itemsToGroup_=this.groupingSource_=void 0;this.defaultToCollapsedWhenSubRowCountMoreThan=1;this.itemsGroupedOnLastUpdateContents_=void 0;this.currentSubRows_=[];this.expanded_=!0},get itemsToGroup(){return this.itemsToGroup_},
setItemsToGroup:function(a,c){this.itemsToGroup_=a;this.groupingSource_=c;this.updateContents_();this.updateExpandedStateFromGroupingSource_()},get heading(){return this.heading_},set heading(a){this.heading_=a;this.updateContents_()},get tooltip(){return this.tooltip_},set tooltip(a){this.tooltip_=a;this.updateContents_()},get subRows(){return this.currentSubRows_},get hasVisibleContent(){return 0<this.children.length},get expanded(){return this.expanded_},set expanded(a){this.expanded_!=a&&(this.expanded_=
a,this.expandedStateChanged_())},onHeadingClicked_:function(a){1>=this.subRows.length||(this.expanded=!this.expanded,this.groupingSource_&&(new d(this.groupingSource_.model)).setSettingFor(this.groupingSource_,"expanded",this.expanded),a.stopPropagation())},updateExpandedStateFromGroupingSource_:function(){if(this.groupingSource_){var a=this.subRows.length,c=new d(this.groupingSource_.model);this.expanded=1<a?c.getSettingFor(this.groupingSource_,"expanded",a>this.defaultToCollapsedWhenSubRowCountMoreThan?
!1:!0):void 0}},expandedStateChanged_:function(){for(var a=Math.max(2,Math.ceil(18/this.children.length)),a=(this.expanded_?18:a)+"px",c=0;c<this.children.length;c++)this.children[c].height=a;0<this.children.length&&(this.children[0].expanded=this.expanded)},updateContents_:function(){tv.c.tracks.ContainerTrack.prototype.updateContents_.call(this);if(this.itemsToGroup_)if(this.areArrayContentsSame_(this.itemsGroupedOnLastUpdateContents_,this.itemsToGroup_))this.updateHeadingAndTooltip_();else if(this.itemsGroupedOnLastUpdateContents_=
this.itemsToGroup_,this.detach(),this.itemsToGroup_.length){var a=this.buildSubRows_(this.itemsToGroup_);this.currentSubRows_=a;for(var c=0;c<a.length;c++){var b=a[c];b.length&&this.addSubTrack_(b).addEventListener("heading-clicked",this.onHeadingClicked_.bind(this))}this.updateHeadingAndTooltip_();this.expandedStateChanged_()}else this.currentSubRows_=[];else this.updateHeadingAndTooltip_(),this.currentSubRows_=[]},updateHeadingAndTooltip_:function(){this.firstChild&&(this.firstChild.heading=this.heading_,
this.firstChild.tooltip=this.tooltip_)},buildSubRows_:function(a){throw Error("Not implemented");},addSubTrack_:function(a){throw Error("Not implemented");},areArrayContentsSame_:function(a,c){if(!(a&&c&&a.length&&c.length)||a.length!=c.length)return!1;for(var b=0;b<a.length;++b)if(a[b]!=c[b])return!1;return!0}};return{MultiRowTrack:c}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.c.trace_model.SelectionState,c=tv.c.EventPresenter,a=tv.b.ui.define("object-instance-track",tv.c.tracks.HeadingTrack);a.prototype={__proto__:tv.c.tracks.HeadingTrack.prototype,decorate:function(a){tv.c.tracks.HeadingTrack.prototype.decorate.call(this,a);this.classList.add("object-instance-track");this.objectInstances_=[];this.objectSnapshots_=[]},get objectInstances(){return this.objectInstances_},set objectInstances(a){a&&0!=a.length?(this.heading=a[0].typeName,
this.objectInstances_=a,this.objectSnapshots_=[],this.objectInstances_.forEach(function(a){this.objectSnapshots_.push.apply(this.objectSnapshots_,a.snapshots)},this),this.objectSnapshots_.sort(function(a,b){return a.ts-b.ts})):(this.heading="",this.objectInstances_=[],this.objectSnapshots_=[])},get height(){return window.getComputedStyle(this).height},set height(a){this.style.height=a},get snapshotRadiusView(){return 7*(window.devicePixelRatio||1)},draw:function(a,e,c){switch(a){case tv.c.tracks.DrawType.SLICE:this.drawSlices_(e,
c)}},drawSlices_:function(a,e){var f=this.context(),g=window.devicePixelRatio||1,h=this.getBoundingClientRect(),l=h.height*g,m=.5*l,n=2*Math.PI,p=this.viewport.currentDisplayTransform,u=this.snapshotRadiusView,v=p.xViewVectorToWorld(l),z;f.save();p.applyTransformToCanvas(f);var E=this.objectInstances_;z=tv.b.findLowIndexInSortedArray(E,function(a){return a.deletionTs},a);for(f.strokeStyle="rgb(0,0,0)";z<E.length;++z){var D=E[z],q=D.creationTs;if(q>e)break;var r=D.deletionTs==Number.MAX_VALUE?e:D.deletionTs;
f.fillStyle=c.getObjectInstanceColor(D);f.fillRect(q,g,r-q,l-2*g)}f.restore();D=this.objectSnapshots_;for(z=tv.b.findLowIndexInSortedArray(D,function(a){return a.ts+v},a);z<D.length;++z){r=D[z];q=r.ts;if(q-v>e)break;q=p.xWorldToView(q);f.fillStyle=c.getObjectSnapshotColor(r);f.beginPath();f.arc(q,m,u,0,n);f.fill();r.selected?(f.lineWidth=5,f.strokeStyle="rgb(100,100,0)",f.stroke(),f.beginPath(),f.arc(q,m,u-1,0,n),f.lineWidth=2,f.strokeStyle="rgb(255,255,0)"):(f.lineWidth=1,f.strokeStyle="rgb(0,0,0)");
f.stroke()}f.lineWidth=1;m=d.NONE;E.length&&E[0].selectionState===d.DIMMED&&(m=d.DIMMED);m===d.DIMMED&&(g*=h.width,f.fillStyle="rgba(255,255,255,0.5)",f.fillRect(0,0,g,l),f.restore())},addEventsToTrackMap:function(a){void 0!==this.objectInstance_&&this.objectInstance_.forEach(function(e){a.addEvent(e,this)},this);void 0!==this.objectSnapshots_&&this.objectSnapshots_.forEach(function(e){a.addEvent(e,this)},this)},addIntersectingItemsInRangeToSelectionInWorldSpace:function(a,e,c,f){var d=!1,l=c*this.snapshotRadiusView;
tv.b.iterateOverIntersectingIntervals(this.objectSnapshots_,function(a){return a.ts-l},function(a){return 2*l},a,e,function(a){f.push(a);d=!0});d||tv.b.iterateOverIntersectingIntervals(this.objectInstances_,function(a){return a.creationTs},function(a){return a.deletionTs-a.creationTs},a,e,f.push.bind(f))},addItemNearToProvidedEventToSelection:function(a,e,c){var f;if(a instanceof tv.c.trace_model.ObjectSnapshot)f=this.objectSnapshots_;else if(a instanceof tv.c.trace_model.ObjectInstance)f=this.objectInstances_;
else throw Error("Unrecognized event");a=f.indexOf(a)+e;return 0<=a&&a<f.length?(c.push(f[a]),!0):!1},addAllObjectsMatchingFilterToSelection:function(a,e){},addClosestEventToSelection:function(a,e,c,f,d){(a=tv.b.findClosestElementInSortedArray(this.objectSnapshots_,function(a){return a.ts},a,e))&&d.push(a)}};var f=new tv.b.ExtensionRegistryOptions(tv.b.TYPE_BASED_REGISTRY_MODE);tv.b.decorateExtensionRegistry(a,f);return{ObjectInstanceTrack:a}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.b.ui.define("object-instance-group-track",tv.c.tracks.MultiRowTrack);d.prototype={__proto__:tv.c.tracks.MultiRowTrack.prototype,decorate:function(c){tv.c.tracks.MultiRowTrack.prototype.decorate.call(this,c);this.classList.add("object-instance-group-track");this.objectInstances_=void 0},get objectInstances(){return this.itemsToGroup},set objectInstances(c){this.setItemsToGroup(c)},addSubTrack_:function(c){var a=new tv.c.tracks.ObjectInstanceTrack(this.viewport);
a.objectInstances=c;this.appendChild(a);return a},buildSubRows_:function(c){c.sort(function(a,b){return a.creationTs-b.creationTs});for(var a=[],f=0;f<c.length;f++){for(var b=c[f],e=!1,d=0;d<a.length;d++){var g=a[d];if(b.creationTs>=g[g.length-1].deletionTs){e=!0;g.push(b);break}}e||(g=[b],a.push(g))}return a},updateHeadingAndTooltip_:function(){}};return{ObjectInstanceGroupTrack:d}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.b.ui.define("spacing-track",tv.c.tracks.HeadingTrack);d.prototype={__proto__:tv.c.tracks.HeadingTrack.prototype,decorate:function(c){tv.c.tracks.HeadingTrack.prototype.decorate.call(this,c);this.classList.add("spacing-track")},draw:function(c,a,f){},addAllObjectsMatchingFilterToSelection:function(c,a){}};return{SpacingTrack:d}});"use strict";
tv.exportTo("tv.c",function(){function d(c,a,f,b){this.ctx_=c;this.minRectSize_=a;this.maxMergeDist_=f;this.pallette_=b}d.prototype={y_:0,h_:0,merging_:!1,mergeStartX_:0,mergeCurRight_:0,mergedColorId_:0,mergedAlpha_:0,setYandH:function(c,a){this.flush();this.y_=c;this.h_=a},fillRect:function(c,a,f,b){var e=c+a;if(a<this.minRectSize_)if(e-this.mergeStartX_>this.maxMergeDist_&&this.flush(),this.merging_){if(this.mergeCurRight_=e,this.mergedAlpha_<b||this.mergedAlpha_===b&&this.mergedColorId_<f)this.mergedAlpha_=
b,this.mergedColorId_=f}else this.merging_=!0,this.mergeStartX_=c,this.mergeCurRight_=e,this.mergedColorId_=f,this.mergedAlpha_=b;else this.merging_&&this.flush(),this.ctx_.fillStyle=this.pallette_[f],this.ctx_.globalAlpha=b,this.ctx_.fillRect(c,this.y_,a,this.h_)},flush:function(){this.merging_&&(this.ctx_.fillStyle=this.pallette_[this.mergedColorId_],this.ctx_.globalAlpha=this.mergedAlpha_,this.ctx_.fillRect(this.mergeStartX_,this.y_,this.mergeCurRight_-this.mergeStartX_,this.h_),this.merging_=
!1)}};return{FastRectRenderer:d}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.b.ui.define("rect-track",tv.c.tracks.HeadingTrack);d.prototype={__proto__:tv.c.tracks.HeadingTrack.prototype,decorate:function(c){tv.c.tracks.HeadingTrack.prototype.decorate.call(this,c);this.classList.add("rect-track");this.asyncStyle_=!1;this.rects_=null},get asyncStyle(){return this.asyncStyle_},set asyncStyle(c){this.asyncStyle_=!!c},get rects(){return this.rects_},set rects(c){this.rects_=c||[];this.invalidateDrawingContainer()},get height(){return window.getComputedStyle(this).height},
set height(c){this.style.height=c;this.invalidateDrawingContainer()},get hasVisibleContent(){return 0<this.rects_.length},getModelEventFromItem:function(c){throw Error("Not implemented.");},draw:function(c,a,f){switch(c){case tv.c.tracks.DrawType.SLICE:this.drawRects_(a,f)}},drawRects_:function(c,a){var f=this.context();f.save();var b=this.getBoundingClientRect();tv.c.drawSlices(f,this.viewport.currentDisplayTransform,c,a,b.height,this.rects_,this.asyncStyle_);f.restore();if(!(6>=b.height)){var e;
15>b.height?(b=6,e=1):(b=10,e=2.5);tv.c.drawLabels(f,this.viewport.currentDisplayTransform,c,a,this.rects_,this.asyncStyle_,b,e)}},addEventsToTrackMap:function(c){void 0!==this.rects_&&null!==this.rects_&&this.rects_.forEach(function(a){(a=this.getModelEventFromItem(a))&&c.addEvent(a,this)},this)},addIntersectingItemsInRangeToSelectionInWorldSpace:function(c,a,f,b){function e(a){(a=this.getModelEventFromItem(a))&&b.push(a)}e=e.bind(this);tv.b.iterateOverIntersectingIntervals(this.rects_,function(a){return a.start},
function(a){return a.duration},c,a,e)},indexOfRect_:function(c){for(var a=tv.b.findLowIndexInSortedArray(this.rects_,function(a){return a.start},c.start);a<this.rects_.length&&c.start==this.rects_[a].start&&c.colorId!=this.rects_[a].colorId;)a++;return a<this.rects_.length?a:void 0},addItemNearToProvidedEventToSelection:function(c,a,f){c=this.indexOfRect_(c);if(void 0===c)return!1;a=c+a;if(0>a||a>=this.rects_.length)return!1;(c=this.rects_[a])&&f.push(c);return!0},addAllObjectsMatchingFilterToSelection:function(c,
a){for(var f=0;f<this.rects_.length;++f)if(c.matchSlice(this.rects_[f])){var b=this.getModelEventFromItem(this.rects_[f]);b&&a.push(b)}},addClosestEventToSelection:function(c,a,f,b,e){(c=tv.b.findClosestIntervalInSortedIntervals(this.rects_,function(a){return a.start},function(a){return a.end},c,a))&&(c=this.getModelEventFromItem(c))&&e.push(c)}};return{RectTrack:d}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.b.ui.define("sample-track",tv.c.tracks.RectTrack);d.prototype={__proto__:tv.c.tracks.RectTrack.prototype,decorate:function(c){tv.c.tracks.RectTrack.prototype.decorate.call(this,c)},get samples(){return this.rects},set samples(c){this.rects=c},getModelEventFromItem:function(c){return c}};return{SampleTrack:d}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.b.ui.define("slice-track",tv.c.tracks.RectTrack);d.prototype={__proto__:tv.c.tracks.RectTrack.prototype,decorate:function(c){tv.c.tracks.RectTrack.prototype.decorate.call(this,c)},get slices(){return this.rects},set slices(c){this.rects=c},getModelEventFromItem:function(c){return c}};return{SliceTrack:d}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.b.ui.define("slice-group-track",tv.c.tracks.MultiRowTrack);d.prototype={__proto__:tv.c.tracks.MultiRowTrack.prototype,decorate:function(c){tv.c.tracks.MultiRowTrack.prototype.decorate.call(this,c);this.classList.add("slice-group-track");this.group_=void 0;this.defaultToCollapsedWhenSubRowCountMoreThan=100},addSubTrack_:function(c){var a=new tv.c.tracks.SliceTrack(this.viewport);a.slices=c;this.appendChild(a);return a},get group(){return this.group_},set group(c){this.group_=
c;this.setItemsToGroup(this.group_.slices,this.group_)},get eventContainer(){return this.group},addContainersToTrackMap:function(c){c.addContainer(this.group,this)},buildSubRows_:function(c){if(!c.length)return[];for(var a=[],f=0;f<c.length;f++)c[f].subSlices&&c[f].subSlices.splice(0,c[f].subSlices.length),a.push(f);a.sort(function(a,b){var e=c[a],f=c[b];return e.start!=f.start?e.start-f.start:a-b});var b=[[]];this.badSlices_=[];for(f=0;f<a.length;f++){for(var e=c[a[f]],d=!1,g=b.length-1;0<=g;g--)if(0!=
b[g].length){var h=b[g][b[g].length-1];e.start<h.start&&(this.badSlices_.push(e),d=!0);if(h.bounds(e)){for(;b.length<=g+1;)b.push([]);b[g+1].push(e);h.subSlices&&h.subSlices.push(e);d=!0;break}}d||b[0].push(e)}return b}};return{SliceGroupTrack:d}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.b.ui.define("async-slice-group-track",tv.c.tracks.MultiRowTrack);d.prototype={__proto__:tv.c.tracks.MultiRowTrack.prototype,decorate:function(c){tv.c.tracks.MultiRowTrack.prototype.decorate.call(this,c);this.classList.add("async-slice-group-track");this.group_=void 0},addSubTrack_:function(c){var a=new tv.c.tracks.SliceTrack(this.viewport);a.slices=c;this.appendChild(a);a.asyncStyle=!0;return a},get group(){return this.group_},set group(c){this.group_=
c;this.setItemsToGroup(this.group_.slices,this.group_)},get eventContainer(){return this.group},addContainersToTrackMap:function(c){c.addContainer(this.group,this)},buildSubRows_:function(c,a){a||c.sort(function(a,b){return a.start-b.start});for(var f=function(a,b,e){if(e>=b.length)return!0;var c=b[e];if(a.start>=c[c.length-1].end){if(void 0===a.subSlices||0===a.subSlices.length)return!0;for(c=0;c<a.subSlices.length;c++)if(!f(a.subSlices[c],b,e+1))return!1;return!0}return!1},b=[],e=0;e<c.length;e++){var d=
c[e];d.isTopLevel=!0;for(var g=!1,h=b.length,l=0;l<b.length;l++)if(f(d,b,l)){g=!0;h=l;break}g||b.push([]);b[h].push(d);var m=function(a,b,e){if(void 0!==a&&0!==a.length){b===e.length&&e.push([]);for(var c=0;c<a.length;c++)e[b].push(a[c]),m(a[c].subSlices,b+1,e)}};m(d.subSlices,h+1,b)}return b}};return{AsyncSliceGroupTrack:d}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.b.ui.define("thread-track",tv.c.tracks.ContainerTrack);d.prototype={__proto__:tv.c.tracks.ContainerTrack.prototype,decorate:function(c){tv.c.tracks.ContainerTrack.prototype.decorate.call(this,c);this.classList.add("thread-track")},get thread(){return this.thread_},set thread(c){this.thread_=c;this.updateContents_()},get hasVisibleContent(){return 0<this.tracks_.length},get eventContainer(){return this.thread},addContainersToTrackMap:function(c){c.addContainer(this.thread,
this);for(var a=0;a<this.childNodes.length;++a)this.childNodes[a].addContainersToTrackMap(c)},updateContents_:function(){this.detach();if(this.thread_){this.heading=this.thread_.userFriendlyName+": ";this.tooltip=this.thread_.userFriendlyDetails;this.thread_.asyncSliceGroup.length&&this.appendAsyncSliceTracks_();this.appendThreadSamplesTracks_();if(this.thread_.timeSlices){var c=new tv.c.tracks.SliceTrack(this.viewport);c.heading="";c.height=tv.c.THIN_SLICE_HEIGHT+"px";c.slices=this.thread_.timeSlices;
c.hasVisibleContent&&this.appendChild(c)}this.thread_.sliceGroup.length&&(c=new tv.c.tracks.SliceGroupTrack(this.viewport),c.heading=this.thread_.userFriendlyName,c.tooltip=this.thread_.userFriendlyDetails,c.group=this.thread_.sliceGroup,c.hasVisibleContent&&this.appendChild(c))}},appendAsyncSliceTracks_:function(){this.thread_.asyncSliceGroup.viewSubGroups.forEach(function(c){var a=new tv.c.tracks.AsyncSliceGroupTrack(this.viewport),f=c.slices[0].viewSubGroupTitle;a.group=c;a.heading=f;a.hasVisibleContent&&
this.appendChild(a)},this)},appendThreadSamplesTracks_:function(){var c=this.thread_.samples;if(void 0!==c&&0!==c.length){var a={};c.forEach(function(c){void 0===a[c.title]&&(a[c.title]=[]);a[c.title].push(c)});c=tv.b.dictionaryKeys(a);c.sort();c.forEach(function(c){var b=a[c],e=new tv.c.tracks.SampleTrack(this.viewport);e.group=this.thread_;e.samples=b;e.heading=this.thread_.userFriendlyName+": "+c;e.tooltip=this.thread_.userFriendlyDetails;e.selectionGenerator=function(){for(var a=new tv.c.Selection,
b=0;b<e.samples.length;b++)a.push(e.samples[b]);return a};this.appendChild(e)},this)}},collapsedDidChange:function(c){if(c){c=parseInt(this.tracks[0].height);for(var a=0;a<this.tracks.length;++a)2<c?this.tracks[a].height=Math.floor(c)+"px":this.tracks[a].style.display="none",c*=.5}else for(a=0;a<this.tracks.length;++a)this.tracks[a].height=this.tracks[0].height,this.tracks[a].style.display=""}};return{ThreadTrack:d}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.c.analysis.ObjectSnapshotView,c=tv.c.analysis.ObjectInstanceView,a=tv.c.TraceModelSettings,f=tv.c.tracks.SpacingTrack,b=tv.b.ui.define("process-track-base",tv.c.tracks.ContainerTrack);b.prototype={__proto__:tv.c.tracks.ContainerTrack.prototype,decorate:function(a){tv.c.tracks.ContainerTrack.prototype.decorate.call(this,a);this.processBase_=void 0;this.classList.add("process-track-base");this.classList.add("expanded");this.processNameEl_=tv.b.ui.createSpan();
this.processNameEl_.classList.add("process-track-name");this.headerEl_=tv.b.ui.createDiv({className:"process-track-header"});this.headerEl_.appendChild(this.processNameEl_);this.headerEl_.addEventListener("click",this.onHeaderClick_.bind(this));this.appendChild(this.headerEl_)},get processBase(){return this.processBase_},set processBase(b){if(this.processBase_=b)this.expanded=(new a(this.processBase_.model)).getSettingFor(this.processBase_,"expanded",void 0!==this.processBase_.labels&&1==this.processBase_.labels.length&&
"chrome://tracing"==this.processBase_.labels[0]?!1:!0);this.updateContents_()},get expanded(){return this.classList.contains("expanded")},set expanded(b){b=!!b;this.expanded!==b&&(this.classList.toggle("expanded"),this.viewport_.dispatchChangeEvent(),this.processBase_&&(new a(this.processBase_.model)).setSettingFor(this.processBase_,"expanded",b))},get hasVisibleContent(){return this.expanded?1<this.children.length:!0},onHeaderClick_:function(a){a.stopPropagation();a.preventDefault();this.expanded=
!this.expanded},updateContents_:function(){this.tracks_.forEach(function(a){this.removeChild(a)},this);this.processBase_&&(this.processNameEl_.textContent=this.processBase_.userFriendlyName,this.headerEl_.title=this.processBase_.userFriendlyDetails,this.willAppendTracks_(),this.appendObjectInstanceTracks_(),this.appendCounterTracks_(),this.appendThreadTracks_(),this.didAppendTracks_())},addEventsToTrackMap:function(a){this.tracks_.forEach(function(b){b.addEventsToTrackMap(a)})},willAppendTracks_:function(){},
didAppendTracks_:function(){},appendObjectInstanceTracks_:function(){var a=this.processBase_.objects.getAllInstancesByTypeName(),b=tv.b.dictionaryKeys(a);b.sort();var g=!1;b.forEach(function(b){var f=a[b],k=c.getTypeInfo(void 0,b),n=d.getTypeInfo(void 0,b);k&&!k.metadata.showInTrackView&&(k=void 0);n&&!n.metadata.showInTrackView&&(n=void 0);for(var n=k||n,k=[],p=0;p<f.length;p++){var u=f[p];0!==u.snapshots.length&&(u.hasImplicitSnapshots&&!n||k.push(u))}0!==k.length&&(f=tv.c.tracks.ObjectInstanceTrack.getConstructor(void 0,
b),f||(f=(n=d.getTypeInfo(void 0,b))&&n.metadata.showInstances?tv.c.tracks.ObjectInstanceGroupTrack:tv.c.tracks.ObjectInstanceTrack),b=new f(this.viewport),b.objectInstances=k,this.appendChild(b),g=!0)},this);g&&this.appendChild(new f(this.viewport))},appendCounterTracks_:function(){var a=tv.b.dictionaryValues(this.processBase.counters);a.sort(tv.c.trace_model.Counter.compare);a.forEach(function(a){var b=new tv.c.tracks.CounterTrack(this.viewport);b.counter=a;this.appendChild(b);this.appendChild(new f(this.viewport))}.bind(this))},
appendThreadTracks_:function(){var a=tv.b.dictionaryValues(this.processBase.threads);a.sort(tv.c.trace_model.Thread.compare);a.forEach(function(a){var b=new tv.c.tracks.ThreadTrack(this.viewport);b.thread=a;b.hasVisibleContent&&(this.appendChild(b),this.appendChild(new f(this.viewport)))}.bind(this))}};return{ProcessTrackBase:b}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.b.ui.define("cpu-track",tv.c.tracks.ContainerTrack);d.prototype={__proto__:tv.c.tracks.ContainerTrack.prototype,decorate:function(c){tv.c.tracks.ContainerTrack.prototype.decorate.call(this,c);this.classList.add("cpu-track")},get cpu(){return this.cpu_},set cpu(c){this.cpu_=c;this.updateContents_()},get tooltip(){return this.tooltip_},set tooltip(c){this.tooltip_=c;this.updateContents_()},get hasVisibleContent(){return 0<this.children.length},updateContents_:function(){this.detach();
if(this.cpu_){var c=this.cpu_.slices;if(c.length){var a=new tv.c.tracks.SliceTrack(this.viewport);a.slices=c;a.heading=this.cpu_.userFriendlyName+":";this.appendChild(a)}this.appendSamplesTracks_();for(var f in this.cpu_.counters)c=this.cpu_.counters[f],a=new tv.c.tracks.CounterTrack(this.viewport),a.heading=this.cpu_.userFriendlyName+" "+c.name+":",a.counter=c,this.appendChild(a)}},appendSamplesTracks_:function(){var c=this.cpu_.samples;if(void 0!==c&&0!==c.length){var a={};c.forEach(function(c){void 0===
a[c.title]&&(a[c.title]=[]);a[c.title].push(c)});c=tv.b.dictionaryKeys(a);c.sort();c.forEach(function(c){var b=a[c],e=new tv.c.tracks.SliceTrack(this.viewport);e.group=this.cpu_;e.slices=b;e.heading=this.cpu_.userFriendlyName+": "+c;e.tooltip=this.cpu_.userFriendlyDetails;e.selectionGenerator=function(){for(var a=new tv.c.Selection,b=0;b<e.slices.length;b++)a.push(e.slices[b]);return a};this.appendChild(e)},this)}}};return{CpuTrack:d}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.c.tracks.ProcessTrackBase,c=tv.c.tracks.SpacingTrack,a=tv.b.ui.define("kernel-track",d);a.prototype={__proto__:d.prototype,decorate:function(a){tv.c.tracks.ProcessTrackBase.prototype.decorate.call(this,a)},set kernel(a){this.processBase=a},get kernel(){return this.processBase},get eventContainer(){return this.kernel},addContainersToTrackMap:function(a){a.addContainer(this.kernel,this)},willAppendTracks_:function(){var a=tv.b.dictionaryValues(this.kernel.cpus);
a.sort(tv.c.trace_model.Cpu.compare);for(var b=!1,e=0;e<a.length;++e){var d=a[e],g=new tv.c.tracks.CpuTrack(this.viewport);g.cpu=d;g.hasVisibleContent&&(this.appendChild(g),b=!0)}b&&this.appendChild(new c(this.viewport))}};return{KernelTrack:a}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.c.trace_model.SelectionState,c=tv.b.ui.define("letter-dot-track",tv.c.tracks.HeadingTrack);c.prototype={__proto__:tv.c.tracks.HeadingTrack.prototype,decorate:function(a){tv.c.tracks.HeadingTrack.prototype.decorate.call(this,a);this.classList.add("letter-dot-track");this.items_=void 0},getModelEventFromItem:function(a){throw Error("Not implemented.");},get items(){return this.items_},set items(a){this.items_=a;this.invalidateDrawingContainer()},get height(){return window.getComputedStyle(this).height},
set height(a){this.style.height=a},get dumpRadiusView(){return 7*(window.devicePixelRatio||1)},draw:function(a,c,b){if(void 0!==this.items_)switch(a){case tv.c.tracks.DrawType.SLICE:this.drawSlices_(c,b)}},drawSlices_:function(a,c){var b=this.context(),e=window.devicePixelRatio||1,k=this.getBoundingClientRect(),g=k.height*e,h=.5*g,l=2*Math.PI,m=tv.b.ui.getColorPalette(),n=tv.b.ui.paletteProperties.highlightIdBoost,p=this.viewport.currentDisplayTransform,u=this.dumpRadiusView,v=p.xViewVectorToWorld(g),
z=this.items_,E=tv.b.findLowIndexInSortedArray(z,function(a){return a.start},a),D=b.font;b.font="400 "+Math.floor(9*e)+"px Arial";b.strokeStyle="rgb(0,0,0)";b.textBaseline="middle";for(b.textAlign="center";E<z.length;++E){var q=z[E],r=q.start;if(r-v>c)break;r=p.xWorldToView(r);b.fillStyle=q.selected?m[q.colorId+n]:m[q.colorId];b.beginPath();b.arc(r,h,u+.5,0,l);b.fill();q.selected?(b.lineWidth=3,b.strokeStyle="rgb(100,100,0)",b.stroke(),b.beginPath(),b.arc(r,h,u,0,l),b.lineWidth=1.5,b.strokeStyle=
"rgb(255,255,0)"):(b.lineWidth=1,b.strokeStyle="rgb(0,0,0)");b.stroke();b.fillStyle="rgb(255, 255, 255)";b.fillText(q.dotLetter,r,h)}b.lineWidth=1;b.font=D;h=d.NONE;z.length&&z[0].selectionState===d.DIMMED&&(h=d.DIMMED);h===d.DIMMED&&(e*=k.width,b.fillStyle="rgba(255,255,255,0.5)",b.fillRect(0,0,e,g))},addEventsToTrackMap:function(a){void 0!==this.items_&&this.items_.forEach(function(c){(c=this.getModelEventFromItem(c))&&a.addEvent(c,this)},this)},addIntersectingItemsInRangeToSelectionInWorldSpace:function(a,
c,b,e){if(void 0!==this.items_){var d=b*this.dumpRadiusView;tv.b.iterateOverIntersectingIntervals(this.items_,function(a){return a.start-d},function(a){return 2*d},a,c,function(a){(a=this.getModelEventFromItem(a))&&e.push(a)}.bind(this))}},addItemNearToProvidedEventToSelection:function(a,c,b){if(void 0!==this.items_){var e=this.items_;a=e.indexOf(a)+c;return 0<=a&&a<e.length?((a=this.getModelEventFromItem(e[a]))&&b.push(a),!0):!1}},addAllObjectsMatchingFilterToSelection:function(a,c){},addClosestEventToSelection:function(a,
c,b,e,d){void 0!==this.items_&&(a=tv.b.findClosestElementInSortedArray(this.items_,function(a){return a.start},a,c))&&(a=this.getModelEventFromItem(a))&&d.push(a)}};return{LetterDotTrack:c}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.b.ui.define("alert-track",tv.c.tracks.LetterDotTrack);d.prototype={__proto__:tv.c.tracks.LetterDotTrack.prototype,decorate:function(c){tv.c.tracks.LetterDotTrack.prototype.decorate.call(this,c);this.heading="Alerts";this.alerts_=void 0},get alerts(){return this.alerts_},set alerts(c){this.alerts_=c;this.items=void 0===c?void 0:this.alerts_.map(function(a){return{start:a.start,get selected(){return this.alert.selected},colorId:a.colorId,dotLetter:String.fromCharCode(9888),
alert:a}})},getModelEventFromItem:function(c){return c.alert}};return{AlertTrack:d}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.b.ui.define("memory-dump-track",tv.c.tracks.LetterDotTrack);d.prototype={__proto__:tv.c.tracks.LetterDotTrack.prototype,decorate:function(c){tv.c.tracks.LetterDotTrack.prototype.decorate.call(this,c);this.heading="Memory dumps";this.memoryDumps_=void 0},get memoryDumps(){return this.memoryDumps_},set memoryDumps(c){this.memoryDumps_=c;if(void 0===c)this.items=void 0;else{var a=tv.b.ui.getColorIdForReservedName("memory_dump");this.items=this.memoryDumps_.map(function(c){return{start:c.start,
get selected(){return this.memoryDump.selected},colorId:a,dotLetter:"M",memoryDump:c}})}},getModelEventFromItem:function(c){return c.memoryDump}};return{MemoryDumpTrack:d}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.c.tracks.ProcessTrackBase,c=tv.b.ui.define("process-track",d);c.prototype={__proto__:d.prototype,decorate:function(a){tv.c.tracks.ProcessTrackBase.prototype.decorate.call(this,a)},drawTrack:function(a){switch(a){case tv.c.tracks.DrawType.INSTANT_EVENT:if(!this.processBase.instantEvents||0===this.processBase.instantEvents.length)break;var c=this.context(),b=window.devicePixelRatio||1,e=this.getBoundingClientRect(),d=c.canvas.getBoundingClientRect();c.save();
c.translate(0,b*(e.top-d.top));var g=this.viewport.currentDisplayTransform,d=g.xViewToWorld(0),b=g.xViewToWorld(e.width*b);tv.c.drawInstantSlicesAsLines(c,this.viewport.currentDisplayTransform,d,b,e.height,this.processBase.instantEvents,2);c.restore();break;case tv.c.tracks.DrawType.BACKGROUND:this.drawBackground_();return}tv.c.tracks.ContainerTrack.prototype.drawTrack.call(this,a)},drawBackground_:function(){var a=this.context(),c=a.canvas.getBoundingClientRect(),b=window.devicePixelRatio||1,e=!1;
a.fillStyle="#eee";for(var d=0;d<this.children.length;++d)if(this.children[d]instanceof tv.c.tracks.Track&&!(this.children[d]instanceof tv.c.tracks.SpacingTrack)&&(e=!e)){var g=this.children[d].getBoundingClientRect();a.fillRect(0,b*(g.top-c.top),a.canvas.width,b*g.height)}},set process(a){this.processBase=a},get process(){return this.processBase},get eventContainer(){return this.process},addContainersToTrackMap:function(a){a.addContainer(this.process,this);this.tracks_.forEach(function(c){c.addContainersToTrackMap(a)})},
addIntersectingItemsInRangeToSelectionInWorldSpace:function(a,c,b,e){tv.b.iterateOverIntersectingIntervals(this.processBase.instantEvents,function(a){return a.start},function(a){return a.duration},a,c,function(a){e.push(a)}.bind(this));tv.c.tracks.ContainerTrack.prototype.addIntersectingItemsInRangeToSelectionInWorldSpace.apply(this,arguments)},addClosestEventToSelection:function(a,c,b,e,d){this.addClosestInstantEventToSelection(this.processBase.instantEvents,a,c,d);tv.c.tracks.ContainerTrack.prototype.addClosestEventToSelection.apply(this,
arguments)}};return{ProcessTrack:c}});"use strict";
tv.exportTo("tv.c.tracks",function(){function d(a,c){var b=new tv.c.tracks.MultiRowTrack(a);b.heading="Interactions";b.buildSubRows_=function(a){a.sort(function(a,b){var c=a.title.localeCompare(b.title);return c?c:a.start-b.start});return tv.c.tracks.AsyncSliceGroupTrack.prototype.buildSubRows_.call({},a,!0)};b.addSubTrack_=function(a){var b=new tv.c.tracks.SliceTrack(this.viewport);b.slices=a;this.appendChild(b);return b};b.setItemsToGroup(c.interaction_records,{guid:tv.b.GUID.allocate(),model:c,
getSettingsKey:function(){}});return b}var c=tv.b.ui.define("trace-model-track",tv.c.tracks.ContainerTrack);c.prototype={__proto__:tv.c.tracks.ContainerTrack.prototype,decorate:function(a){tv.c.tracks.ContainerTrack.prototype.decorate.call(this,a);this.classList.add("model-track");this.highlighters_=tv.c.tracks.Highlighter.getAllRegisteredTypeInfos().map(function(c){return new c.constructor(a)});this.upperMode_=!1},get upperMode(){return this.upperMode_},set upperMode(a){this.upperMode_=a;this.updateContents_()},
detach:function(){tv.c.tracks.ContainerTrack.prototype.detach.call(this)},get model(){return this.model_},set model(a){this.model_=a;this.updateContents_()},get hasVisibleContent(){return 0<this.children.length},updateContents_:function(){this.textContent="";this.model_&&(this.upperMode_?this.updateContentsForUpperMode_():this.updateContentsForLowerMode_())},updateContentsForUpperMode_:function(){},updateContentsForLowerMode_:function(){if(this.model_.interaction_records.length){var a=new d(this.viewport_,
this.model_);this.appendChild(a)}this.model_.alerts.length&&(a=new tv.c.tracks.AlertTrack(this.viewport_),a.alerts=this.model_.alerts,this.appendChild(a));this.model_.globalMemoryDumps.length&&(a=new tv.c.tracks.MemoryDumpTrack(this.viewport_),a.memoryDumps=this.model_.globalMemoryDumps,this.appendChild(a));this.appendKernelTrack_();a=this.model_.getAllProcesses();a.sort(tv.c.trace_model.Process.compare);for(var c=0;c<a.length;++c){var b=a[c],e=new tv.c.tracks.ProcessTrack(this.viewport);e.process=
b;e.hasVisibleContent&&this.appendChild(e)}this.viewport_.rebuildEventToTrackMap();this.viewport_.rebuildContainerToTrackMap();for(c=0;c<this.highlighters_.length;c++)this.highlighters_[c].processModel(this.model_)},addEventsToTrackMap:function(a){if(this.model_){for(var c=this.children,b=0;b<c.length;++b)c[b].addEventsToTrackMap(a);void 0!==this.instantEvents&&this.instantEvents.forEach(function(b){a.addEvent(b,this)}.bind(this))}},addContainersToTrackMap:function(a){for(var c=this.children,b=0;b<
c.length;++b)c[b].addContainersToTrackMap(a)},appendKernelTrack_:function(){var a=new tv.c.tracks.KernelTrack(this.viewport);a.kernel=this.model.kernel;a.hasVisibleContent&&this.appendChild(a)},drawTrack:function(a){var c=this.context(),b=window.devicePixelRatio||1,e=this.getBoundingClientRect(),d=c.canvas.getBoundingClientRect();c.save();c.translate(0,b*(e.top-d.top));var d=this.viewport.currentDisplayTransform,g=d.xViewToWorld(0),b=d.xViewToWorld(e.width*b);switch(a){case tv.c.tracks.DrawType.GRID:this.viewport.drawMajorMarkLines(c);
c.restore();return;case tv.c.tracks.DrawType.FLOW_ARROWS:if(0===this.model_.flowIntervalTree.size){c.restore();return}this.drawFlowArrows_(g,b);c.restore();return;case tv.c.tracks.DrawType.INSTANT_EVENT:if(!this.model_.instantEvents||0===this.model_.instantEvents.length)break;tv.c.drawInstantSlicesAsLines(c,this.viewport.currentDisplayTransform,g,b,e.height,this.model_.instantEvents,4);break;case tv.c.tracks.DrawType.MARKERS:this.viewport.interestRange.isEmpty||(this.viewport.interestRange.draw(c,
g,b),this.viewport.interestRange.drawIndicators(c,g,b));c.restore();return;case tv.c.tracks.DrawType.HIGHLIGHTS:for(a=0;a<this.highlighters_.length;a++)this.highlighters_[a].drawHighlight(c,d,g,b,e.height);c.restore();return}c.restore();tv.c.tracks.ContainerTrack.prototype.drawTrack.call(this,a)},drawFlowArrows_:function(a,c){var b=this.context(),e=this.viewport.currentDisplayTransform;e.applyTransformToCanvas(b);e=e.xViewVectorToWorld(1);b.strokeStyle="rgba(0, 0, 0, 0.4)";b.fillStyle="rgba(0, 0, 0, 0.4)";
b.lineWidth=1<e?1:e;for(var d=this.model_.flowIntervalTree.findIntersection(a,c),g=2*e,h=b.canvas.getBoundingClientRect(),l=0;l<d.length;++l){var m=d[l][0],n=d[l][1];n.start-m.start<=g||this.drawFlowArrowBetween_(b,m,n,h,e)}},drawFlowArrowBetween_:function(a,c,b,e,d){var g=window.devicePixelRatio||1,h=this.viewport.trackForEvent(c),l=this.viewport.trackForEvent(b),m=h.getBoundingClientRect(),n=l.getBoundingClientRect();if(c.selected||b.selected)a.shadowBlur=1,a.shadowColor="red",a.shadowOffsety=2,
a.strokeStyle="red";var p=n.left+n.top+n.bottom+n.right;if(0!==m.left+m.top+m.bottom+m.right||0!==p){h=this.calculateTrackY_(h,e);e=this.calculateTrackY_(l,e);l=g*h;e*=g;h=(b.start-c.start)/2;a.beginPath();a.moveTo(c.start,l);a.bezierCurveTo(c.start+h,l,c.start+h,e,b.start,e);a.stroke();if(c.selected||b.selected)a.shadowBlur=0,a.shadowOffsetX=0,a.strokeStyle="rgba(0, 0, 0, 0.4)";d=5*d*g;b.start-c.start<=2*d||(c=b.start,g*=n.height/4,tv.c.drawTriangle(a,c,e,c-d,e-g,c-d,e+g),a.fill())}},calculateTrackY_:function(a,
c){var b=a.getBoundingClientRect();return 0===b.left+b.top+b.bottom+b.right?this.calculateTrackY_(a.parentNode,c):b.top-c.top+b.height/2},addIntersectingItemsInRangeToSelectionInWorldSpace:function(a,c,b,e){tv.b.iterateOverIntersectingIntervals(this.model_.instantEvents,function(a){return a.start},function(a){return a.duration},a,c,function(a){e.push(a)}.bind(this));tv.c.tracks.ContainerTrack.prototype.addIntersectingItemsInRangeToSelectionInWorldSpace.apply(this,arguments)},addClosestEventToSelection:function(a,
c,b,e,d){this.addClosestInstantEventToSelection(this.model_.instantEvents,a,c,d);tv.c.tracks.ContainerTrack.prototype.addClosestEventToSelection.apply(this,arguments)}};return{TraceModelTrack:c}});"use strict";
tv.exportTo("tv.c.tracks",function(){var d=tv.b.ui.define("ruler-track",tv.c.tracks.HeadingTrack),c=Math.log(10);d.prototype={__proto__:tv.c.tracks.HeadingTrack.prototype,decorate:function(a){tv.c.tracks.HeadingTrack.prototype.decorate.call(this,a);this.classList.add("ruler-track");this.strings_secs_=[];this.strings_msecs_=[];this.viewportChange_=this.viewportChange_.bind(this);a.addEventListener("change",this.viewportChange_)},detach:function(){tv.c.tracks.HeadingTrack.prototype.detach.call(this);
this.viewport.removeEventListener("change",this.viewportChange_)},viewportChange_:function(){this.viewport.interestRange.isEmpty?this.classList.remove("tall-mode"):this.classList.add("tall-mode")},draw:function(a,c,b){switch(a){case tv.c.tracks.DrawType.GRID:this.drawGrid_(c,b);break;case tv.c.tracks.DrawType.MARKERS:this.viewport.interestRange.isEmpty||this.viewport.interestRange.draw(this.context(),c,b)}},drawGrid_:function(a,f){for(var b=this.context(),e=window.devicePixelRatio||1,d=b.canvas.getBoundingClientRect(),
g=this.getBoundingClientRect(),d=d.width*e,h=g.height*e,l=!this.viewport.interestRange.isEmpty,m=l?2*h/5:h,n=this.viewport,g=n.currentDisplayTransform,e=150*e,p=g.xViewVectorToWorld(e),u,p=Math.pow(10,Math.ceil(Math.log(p)/c)),v=[10,5,2,1],z=0;z<v.length;++z)if(!(g.xWorldVectorToView(p/v[z])<e)){u=p/v[z-1];break}var E=void 0;100>u?(p="ms",v=1,E=this.strings_msecs_):(p="s",v=1E3,E=this.strings_secs_);var D=g.xWorldVectorToView(u/5),z=Math.floor(a/u)*u,q=Math.floor(.25*m);b.save();e=window.devicePixelRatio||
1;b.lineWidth=Math.round(e);var r=b.lineWidth%2/2;b.translate(r,-r);b.fillStyle="rgb(0, 0, 0)";b.strokeStyle="rgb(0, 0, 0)";b.textAlign="left";b.textBaseline="top";b.font=9*e+"px sans-serif";n.majorMarkPositions=[];b.beginPath();for(r=z;r<f;r+=u){var t=Math.floor(g.xWorldToView(r)),z=Math.floor(r/v*1E5)/1E5;E[z]||(E[z]=z+" "+p);b.fillText(E[z],t+2*e,0);n.majorMarkPositions.push(t);tv.c.drawLine(b,t,0,t,m);for(z=1;5>z;++z){var w=Math.floor(t+D*z);tv.c.drawLine(b,w,m-q,w,m)}}b.strokeStyle="rgb(0, 0, 0)";
tv.c.drawLine(b,0,h,d,h);b.stroke();l&&(tv.c.drawLine(b,0,m,d,m),b.stroke(),h=10*e,u=1.75*m,m=3*e,l=10*e,z=2*(m+h),b.textBaseline="middle",b.font=14*e+"px sans-serif",E=n.interestRange,0===E.range?(n=E.min,g=g.xWorldToView(n),v=Math.abs(Math.floor(n/v*1E3)/1E3),p=v+" "+p,v=g+4*e,D=b.measureText(p).width,v+D>d&&(v=g-4*e-D),b.fillStyle="rgb(0,0,0)",b.fillText(p,v,u)):(p=E.max,e=g.xWorldToView(E.min),n=g.xWorldToView(p),D=E.range,E=g.xWorldVectorToView(D),g=e+E/2,100>D?(p="ms",v=1):(p="s",v=1E3),p=Math.abs(Math.floor(D/
v*1E3)/1E3)+" "+p,D=b.measureText(p).width,r=D+z+h,v=g-D/2,q=v+D,r>E?(v=n+2*h,v+D>d&&(v=e-2*h-D),b.fillStyle="rgb(0,0,0)",b.fillText(p,v,u),b.strokeStyle="rgb(128,121,121)",b.beginPath(),tv.c.drawLine(b,e,u,n,u),b.stroke(),b.fillStyle="rgb(128,121,121)",tv.c.drawArrow(b,e-1.5*h,u,e,u,l,m),tv.c.drawArrow(b,n+1.5*h,u,n,u,l,m)):z<=E&&(r<=E?(b.fillStyle="rgb(0,0,0)",b.fillText(p,v,u),d=v-h,g=q+h):d=g,b.strokeStyle="rgb(128,121,121)",b.fillStyle="rgb(128,121,121)",tv.c.drawArrow(b,d,u,e,u,l,m),tv.c.drawArrow(b,
g,u,n,u,l,m)),b.restore()))},addIntersectingItemsInRangeToSelection:function(a,c,b,e,d){},addAllObjectsMatchingFilterToSelection:function(a,c){}};return{RulerTrack:d}});"use strict";
tv.exportTo("tv.c",function(){var d=tv.c.Selection,c=tv.c.trace_model.SelectionState,a=tv.c.TimelineViewport,f=new tv.c.TimelineDisplayTransform,b=tv.b.ui.define("div");b.prototype={__proto__:HTMLDivElement.prototype,model_:null,decorate:function(){this.classList.add("timeline-track-view");this.viewport_=new a(this);this.viewportDisplayTransformAtMouseDown_=null;this.rulerTrackContainer_=new tv.c.tracks.DrawingContainer(this.viewport_);this.appendChild(this.rulerTrackContainer_);this.rulerTrackContainer_.invalidate();
this.rulerTrack_=new tv.c.tracks.RulerTrack(this.viewport_);this.rulerTrackContainer_.appendChild(this.rulerTrack_);this.upperModelTrack_=new tv.c.tracks.TraceModelTrack(this.viewport_);this.upperModelTrack_.upperMode=!0;this.rulerTrackContainer_.appendChild(this.upperModelTrack_);this.modelTrackContainer_=new tv.c.tracks.DrawingContainer(this.viewport_);this.appendChild(this.modelTrackContainer_);this.modelTrackContainer_.style.display="block";this.modelTrackContainer_.invalidate();this.viewport_.modelTrackContainer=
this.modelTrackContainer_;this.modelTrack_=new tv.c.tracks.TraceModelTrack(this.viewport_);this.modelTrackContainer_.appendChild(this.modelTrack_);this.timingTool_=new tv.c.TimingTool(this.viewport_,this);this.initMouseModeSelector();this.dragBox_=this.ownerDocument.createElement("div");this.dragBox_.className="drag-box";this.appendChild(this.dragBox_);this.hideDragBox_();this.initHintText_();this.bindEventListener_(document,"keypress",this.onKeypress_,this);this.bindEventListener_(document,"keydown",
this.onKeydown_,this);this.bindEventListener_(document,"keyup",this.onKeyup_,this);this.bindEventListener_(this,"dblclick",this.onDblClick_,this);this.bindEventListener_(this,"mousewheel",this.onMouseWheel_,this);this.addEventListener("mousemove",this.onMouseMove_);this.addEventListener("touchstart",this.onTouchStart_);this.addEventListener("touchmove",this.onTouchMove_);this.addEventListener("touchend",this.onTouchEnd_);this.mouseViewPosAtMouseDown_={x:0,y:0};this.lastMouseViewPos_={x:0,y:0};this.lastTouchViewPositions_=
[];this.selection_=new d;this.highlight_=new d;this.isZooming_=this.isPanningAndScanning_=!1},bindEventListener_:function(a,b,c,f){this.boundListeners_||(this.boundListeners_=[]);c=c.bind(f);this.boundListeners_.push({object:a,event:b,boundFunc:c});a.addEventListener(b,c)},initMouseModeSelector:function(){this.mouseModeSelector_=new tv.b.ui.MouseModeSelector(this);this.appendChild(this.mouseModeSelector_);this.mouseModeSelector_.addEventListener("beginpan",this.onBeginPanScan_.bind(this));this.mouseModeSelector_.addEventListener("updatepan",
this.onUpdatePanScan_.bind(this));this.mouseModeSelector_.addEventListener("endpan",this.onEndPanScan_.bind(this));this.mouseModeSelector_.addEventListener("beginselection",this.onBeginSelection_.bind(this));this.mouseModeSelector_.addEventListener("updateselection",this.onUpdateSelection_.bind(this));this.mouseModeSelector_.addEventListener("endselection",this.onEndSelection_.bind(this));this.mouseModeSelector_.addEventListener("beginzoom",this.onBeginZoom_.bind(this));this.mouseModeSelector_.addEventListener("updatezoom",
this.onUpdateZoom_.bind(this));this.mouseModeSelector_.addEventListener("endzoom",this.onEndZoom_.bind(this));this.mouseModeSelector_.addEventListener("entertiming",this.timingTool_.onEnterTiming.bind(this.timingTool_));this.mouseModeSelector_.addEventListener("begintiming",this.timingTool_.onBeginTiming.bind(this.timingTool_));this.mouseModeSelector_.addEventListener("updatetiming",this.timingTool_.onUpdateTiming.bind(this.timingTool_));this.mouseModeSelector_.addEventListener("endtiming",this.timingTool_.onEndTiming.bind(this.timingTool_));
this.mouseModeSelector_.addEventListener("exittiming",this.timingTool_.onExitTiming.bind(this.timingTool_));var a=tv.b.ui.MOUSE_SELECTOR_MODE;this.mouseModeSelector_.supportedModeMask=a.SELECTION|a.PANSCAN|a.ZOOM|a.TIMING;this.mouseModeSelector_.settingsKey="timelineTrackView.mouseModeSelector";this.mouseModeSelector_.setKeyCodeForMode(a.PANSCAN,50);this.mouseModeSelector_.setKeyCodeForMode(a.SELECTION,49);this.mouseModeSelector_.setKeyCodeForMode(a.ZOOM,51);this.mouseModeSelector_.setKeyCodeForMode(a.TIMING,
52);this.mouseModeSelector_.setKeyCodeCondition(function(){return this.listenToKeys_}.bind(this));this.mouseModeSelector_.setModifierForAlternateMode(a.SELECTION,tv.b.ui.MODIFIER.SHIFT);this.mouseModeSelector_.setModifierForAlternateMode(a.PANSCAN,tv.b.ui.MODIFIER.SPACE);this.mouseModeSelector_.setModifierForAlternateMode(a.ZOOM,tv.b.ui.MODIFIER.CMD_OR_CTRL)},detach:function(){this.modelTrack_.detach();this.upperModelTrack_.detach();for(var a=0;a<this.boundListeners_.length;a++){var b=this.boundListeners_[a];
b.object.removeEventListener(b.event,b.boundFunc)}this.boundListeners_=void 0;this.viewport_.detach()},get viewport(){return this.viewport_},get model(){return this.model_},set model(a){if(!a)throw Error("Model cannot be null");var b=this.model_!==a;this.model_=a;this.modelTrack_.model=a;this.upperModelTrack_.model=a;b&&this.viewport_.setWhenPossible(this.setInitialViewport_.bind(this));tv.b.setPropertyAndDispatchChange(this,"model",a)},get hasVisibleContent(){return this.modelTrack_.hasVisibleContent||
this.upperModelTrack_.hasVisibleContent},setInitialViewport_:function(){this.modelTrackContainer_.updateCanvasSizeIfNeeded_();var a=this.modelTrackContainer_.canvas.width,b,c;this.model_.bounds.isEmpty?(b=0,c=1E3):0===this.model_.bounds.range?(b=this.model_.bounds.min,c=1E3):(b=this.model_.bounds.min,c=this.model_.bounds.range);var d=.15*c;f.set(this.viewport_.currentDisplayTransform);f.xSetWorldBounds(b-d,b+c+d,a);this.viewport_.setDisplayTransformImmediately(f)},addAllObjectsMatchingFilterToSelectionAsTask:function(a,
b){return this.modelTrack_.addAllObjectsMatchingFilterToSelectionAsTask(a,b)},get focusElement(){return this.focusElement_?this.focusElement_:this.parentElement},set focusElement(a){this.focusElement_=a},get listenToKeys_(){return!this.viewport_.isAttachedToDocumentOrInTestMode||document.activeElement instanceof TracingFindControl?!1:this.focusElement_?0<=this.focusElement.tabIndex?document.activeElement==this.focusElement?!0:tv.b.ui.elementIsChildOf(document.activeElement,this.focusElement):!0:!0},
onMouseMove_:function(a){this.isZooming_||this.storeLastMousePos_(a)},onTouchStart_:function(a){this.storeLastTouchPositions_(a);this.focusElements_()},onTouchMove_:function(a){a.preventDefault();this.onUpdateTransformForTouch_(a)},onTouchEnd_:function(a){this.storeLastTouchPositions_(a);this.focusElements_()},onKeypress_:function(a){if(this.listenToKeys_&&"INPUT"!=document.activeElement.nodeName){var b=this.modelTrackContainer_.canvas.clientWidth;switch(a.keyCode){case 119:case 44:this.zoomBy_(1.5,
!0);break;case 115:case 111:this.zoomBy_(1/1.5,!0);break;case 103:this.onGridToggle_(!0);break;case 71:this.onGridToggle_(!1);break;case 87:case 60:this.zoomBy_(10,!0);break;case 83:case 79:this.zoomBy_(.1,!0);break;case 97:this.queueSmoothPan_(.3*b,0);break;case 100:case 101:this.queueSmoothPan_(-.3*b,0);break;case 65:this.queueSmoothPan_(.5*b,0);break;case 68:this.queueSmoothPan_(-.5*b,0);break;case 48:this.setInitialViewport_();break;case 102:this.zoomToSelection();break;case 109:this.setCurrentSelectionAsInterestRange_();
break;case 104:this.toggleHighDetails_()}}},onKeydown_:function(a){if(this.listenToKeys_){var b,c=this.modelTrackContainer_.canvas.clientWidth;switch(a.keyCode){case 37:(b=this.selection.getShiftedSelection(this.viewport,-1))?(this.setSelectionAndClearHighlight(b),this.panToSelection(),a.preventDefault()):this.queueSmoothPan_(.3*c,0);break;case 39:(b=this.selection.getShiftedSelection(this.viewport,1))?(this.setSelectionAndClearHighlight(b),this.panToSelection(),a.preventDefault()):this.queueSmoothPan_(.3*
-c,0);break;case 9:-1==this.focusElement.tabIndex&&(a.shiftKey?this.selectPrevious_(a):this.selectNext_(a),a.preventDefault())}}},onKeyup_:function(a){this.listenToKeys_&&(a.shiftKey||this.dragBeginEvent_&&this.setDragBoxPosition_(this.dragBoxXStart_,this.dragBoxYStart_,this.dragBoxXEnd_,this.dragBoxYEnd_))},onDblClick_:function(a){if(this.mouseModeSelector_.mode===tv.b.ui.MOUSE_SELECTOR_MODE.SELECTION&&this.selection.length&&this.selection[0].title){a=new d;var b=new tv.c.ExactTitleFilter(this.selection[0].title);
this.addAllObjectsMatchingFilterToSelection(b,a);this.setSelectionAndClearHighlight(a)}},onMouseWheel_:function(a){if(a.altKey){var b=Math.pow(1.5,a.wheelDelta/120);this.zoomBy_(b);a.preventDefault()}},queueSmoothPan_:function(a,b){var c=this.viewport_.currentDisplayTransform.xViewVectorToWorld(a),c=new tv.c.TimelineDisplayTransformPanAnimation(c,b);this.viewport_.queueDisplayTransformAnimation(c)},zoomBy_:function(a,b){if(!(0>=a)){b=!!b;var c=this.viewport_,d=this.modelTrackContainer_.canvas.clientWidth,
l=this.lastMouseViewPos_.x*(window.devicePixelRatio||1),m=c.currentDisplayTransform.xViewToWorld(l);b?(d=new tv.c.TimelineDisplayTransformZoomToAnimation(m,l,c.currentDisplayTransform.panY,a),c.queueDisplayTransformAnimation(d)):(f.set(c.currentDisplayTransform),f.scaleX*=a,f.xPanWorldPosToViewPos(m,l,d),c.setDisplayTransformImmediately(f))}},zoomToSelection:function(){if(this.selectionOfInterest.length){var a=this.selectionOfInterest.bounds;a.range&&(a=new tv.c.TimelineDisplayTransformZoomToAnimation(a.center,
this.modelTrackContainer_.canvas.width/2,this.viewport_.currentDisplayTransform.panY,this.modelTrackContainer_.canvas.width/(1.25*a.range)/this.viewport_.currentDisplayTransform.scaleX),this.viewport_.queueDisplayTransformAnimation(a))}},panToSelection:function(){var a;if(this.selectionOfInterest.length){a=this.selectionOfInterest.bounds;var b=this.modelTrackContainer_.canvas.width,c=this.viewport_.currentDisplayTransform;f.set(c);f.xPanWorldBoundsIntoView(a.min,a.max,b);a=f.panX-c.panX;a=new tv.c.TimelineDisplayTransformPanAnimation(a,
0);this.viewport_.queueDisplayTransformAnimation(a)}},setCurrentSelectionAsInterestRange_:function(){var a=this.selection.bounds;a.empty?this.viewport_.interestRange.reset():this.viewport_.interestRange.min==a.min&&this.viewport_.interestRange.max==a.max?this.viewport_.interestRange.reset():this.viewport_.interestRange.set(a)},toggleHighDetails_:function(){this.viewport_.highDetails=!this.viewport_.highDetails},set selection(a){this.setSelectionAndHighlight(a,this.highlight_)},get selection(){return this.selection_},
set highlight(a){this.setSelectionAndHighlight(this.selection_,a)},get highlight(){return this.highlight_},get selectionOfInterest(){return!this.selection_.length&&this.highlight_.length?this.highlight_:this.selection_},setSelectionAndClearHighlight:function(a){this.setSelectionAndHighlight(a,null)},setHighlightAndClearSelection:function(a){this.setSelectionAndHighlight(null,a)},setSelectionAndHighlight:function(a,b){if(a!==this.selection_||b!==this.highlight_){if(null!==a&&!(a instanceof d)||null!==
b&&!(b instanceof d))throw Error("Expected Selection");b&&b.length?(this.resetEventsTo_(c.DIMMED),b!==this.highlight_&&(this.highlight_=b),this.setSelectionState_(b,c.HIGHLIGHTED)):(this.resetEventsTo_(c.NONE),this.highlight_=new d);a&&a.length?(a!==this.selection_&&(this.selection_=a),this.setSelectionState_(a,c.SELECTED)):this.selection_=new d;tv.b.dispatchSimpleEvent(this,"selectionChange");this.showHintText_("Press 'm' to mark current selection");if(this.selectionOfInterest.length){var f=this.viewport_.trackForEvent(this.selectionOfInterest[0]);
f&&f.scrollIntoViewIfNeeded()}this.viewport_.dispatchChangeEvent()}},setSelectionState_:function(a,b){for(var c=0;c<a.length;c++)a[c].selectionState=b},resetEventsTo_:function(a){var b=this.highlight_.length;b&&a!==c.DIMMED||!b&&a===c.DIMMED?this.model.iterateAllEvents(function(b){b.selectionState=a}):(this.setSelectionState_(this.selection_,a),this.setSelectionState_(this.highlight_,a))},hideDragBox_:function(){this.dragBox_.style.left="-1000px";this.dragBox_.style.top="-1000px";this.dragBox_.style.width=
0;this.dragBox_.style.height=0},setDragBoxPosition_:function(a,b,c,f){var d=Math.min(b,f);f=Math.max(b,f);b=Math.min(a,c);a=Math.max(a,c);this.modelTrack_.getBoundingClientRect();c=b+(a-b);f=d+(f-d);var m=this.modelTrackContainer_.getBoundingClientRect(),n=m.left,p=m.top,u=m.right,m=m.bottom,v=window.getComputedStyle(this.querySelector("heading")).width,v=parseInt(v),n=n+v;v={};b>u||c<n||d>m||f<p?d=!1:(v.left=Math.max(n,b),v.top=Math.max(p,d),v.right=Math.min(u,c),v.bottom=Math.min(m,f),v.width=v.right-
v.left,v.height=v.bottom-v.top,d=v);this.dragBox_.style.left=d.left+"px";this.dragBox_.style.width=d.width+"px";this.dragBox_.style.top=d.top+"px";this.dragBox_.style.height=d.height+"px";d=window.devicePixelRatio||1;c=this.modelTrackContainer_.canvas;f=this.viewport_.currentDisplayTransform;b=f.xViewToWorld((b-c.offsetLeft)*d);a=f.xViewToWorld((a-c.offsetLeft)*d);d=Math.round(100*(a-b))/100;this.dragBox_.textContent=d+"ms";d=new tv.b.Event("selectionChanging");d.loWX=b;d.hiWX=a;this.dispatchEvent(d)},
onGridToggle_:function(a){var b=a?this.selection.bounds.min:this.selection.bounds.max;if(this.viewport_.gridEnabled&&this.viewport_.gridSide===a&&this.viewport_.gridInitialTimebase===b)this.viewport_.gridside=void 0,this.viewport_.gridEnabled=!1,this.viewport_.gridInitialTimebase=void 0;else{var c=Math.ceil((b-this.model_.bounds.min)/this.viewport_.gridStep_);this.viewport_.gridEnabled=!0;this.viewport_.gridSide=a;this.viewport_.gridInitialTimebase=b;this.viewport_.gridTimebase=b-(c+1)*this.viewport_.gridStep_}},
storeLastMousePos_:function(a){this.lastMouseViewPos_=this.extractRelativeMousePosition_(a)},storeLastTouchPositions_:function(a){this.lastTouchViewPositions_=this.extractRelativeTouchPositions_(a)},extractRelativeMousePosition_:function(a){var b=this.modelTrackContainer_.canvas;return{x:a.clientX-b.offsetLeft,y:a.clientY-b.offsetTop}},extractRelativeTouchPositions_:function(a){for(var b=this.modelTrackContainer_.canvas,c=[],f=0;f<a.touches.length;++f)c.push({x:a.touches[f].clientX-b.offsetLeft,y:a.touches[f].clientY-
b.offsetTop});return c},storeInitialMouseDownPos_:function(a){a=this.extractRelativeMousePosition_(a);this.mouseViewPosAtMouseDown_.x=a.x;this.mouseViewPosAtMouseDown_.y=a.y},focusElements_:function(){document.activeElement&&document.activeElement.blur();0<=this.focusElement.tabIndex&&this.focusElement.focus()},storeInitialInteractionPositionsAndFocus_:function(a){this.storeInitialMouseDownPos_(a);this.storeLastMousePos_(a);this.focusElements_()},onBeginPanScan_:function(a){this.viewportDisplayTransformAtMouseDown_=
this.viewport_.currentDisplayTransform.clone();this.isPanningAndScanning_=!0;this.storeInitialInteractionPositionsAndFocus_(a);a.preventDefault()},onUpdatePanScan_:function(a){if(this.isPanningAndScanning_){var b=(window.devicePixelRatio||1)*(this.lastMouseViewPos_.x-this.mouseViewPosAtMouseDown_.x),c=this.lastMouseViewPos_.y-this.mouseViewPosAtMouseDown_.y;f.set(this.viewportDisplayTransformAtMouseDown_);f.incrementPanXInViewUnits(b);f.panY-=c;this.viewport_.setDisplayTransformImmediately(f);a.preventDefault();
a.stopPropagation();this.storeLastMousePos_(a)}},onEndPanScan_:function(a){this.isPanningAndScanning_=!1;this.storeLastMousePos_(a);a.isClick||a.preventDefault()},onBeginSelection_:function(a){var b=this.modelTrackContainer_.canvas,c=this.modelTrack_.getBoundingClientRect(),b=b.getBoundingClientRect();c&&a.clientX>=c.left&&a.clientX<c.right&&a.clientY>=c.top&&a.clientY<c.bottom&&a.clientX>=b.left&&a.clientX<b.right&&(this.dragBeginEvent_=a,this.storeInitialInteractionPositionsAndFocus_(a),a.preventDefault())},
onUpdateSelection_:function(a){this.dragBeginEvent_&&(this.dragBoxXStart_=this.dragBeginEvent_.clientX,this.dragBoxXEnd_=a.clientX,this.dragBoxYStart_=this.dragBeginEvent_.clientY,this.dragBoxYEnd_=a.clientY,this.setDragBoxPosition_(this.dragBoxXStart_,this.dragBoxYStart_,this.dragBoxXEnd_,this.dragBoxYEnd_))},onEndSelection_:function(a){a.preventDefault();if(this.dragBeginEvent_){this.hideDragBox_();var b=this.dragBeginEvent_;this.dragBeginEvent_=null;var c=Math.min(b.clientY,a.clientY),f=Math.max(b.clientY,
a.clientY),l=Math.min(b.clientX,a.clientX);a=Math.max(b.clientX,a.clientX);b=this.modelTrackContainer_.canvas.getBoundingClientRect().left;l-=b;b=a-b;a=new d;this.modelTrack_.addIntersectingItemsInRangeToSelection(l,b,c,f,a);c=new tv.c.RequestSelectionChangeEvent;c.selection=a;this.dispatchEvent(c)}},onBeginZoom_:function(a){this.isZooming_=!0;this.storeInitialInteractionPositionsAndFocus_(a);a.preventDefault()},onUpdateZoom_:function(a){if(this.isZooming_){var b=this.extractRelativeMousePosition_(a);
this.zoomBy_(1+.01*(this.lastMouseViewPos_.y-b.y),!1);this.storeLastMousePos_(a)}},onEndZoom_:function(a){this.isZooming_=!1;a.isClick||a.preventDefault()},computeTouchCenter_:function(a){for(var b=0,c=0,f=0;f<a.length;++f)b+=a[f].x,c+=a[f].y;return{x:b/a.length,y:c/a.length}},computeTouchSpan_:function(a){for(var b=Number.MAX_VALUE,c=Number.MAX_VALUE,f=Number.MIN_VALUE,d=Number.MIN_VALUE,m=0;m<a.length;++m)b=Math.min(b,a[m].x),c=Math.min(c,a[m].y),f=Math.max(f,a[m].x),d=Math.max(d,a[m].y);return Math.sqrt((b-
f)*(b-f)+(c-d)*(c-d))},onUpdateTransformForTouch_:function(a){var b=this.extractRelativeTouchPositions_(a),c=this.lastTouchViewPositions_,d=this.computeTouchCenter_(b),l=this.computeTouchCenter_(c),m=this.computeTouchSpan_(b),n=this.computeTouchSpan_(c),c=this.viewport_,b=this.modelTrackContainer_.canvas.clientWidth,p=window.devicePixelRatio||1,u=p*(d.x-l.x),l=d.y-l.y,m=10<n?m/n:1,d=p*d.x,p=c.currentDisplayTransform.xViewToWorld(d);f.set(c.currentDisplayTransform);f.scaleX*=m;f.xPanWorldPosToViewPos(p,
d,b);f.incrementPanXInViewUnits(u);f.panY-=l;c.setDisplayTransformImmediately(f);this.storeLastTouchPositions_(a)},initHintText_:function(){this.hintTextBox_=this.ownerDocument.createElement("div");this.hintTextBox_.className="hint-text";this.hintTextBox_.style.display="none";this.appendChild(this.hintTextBox_);this.pendingHintTextClearTimeout_=void 0},showHintText_:function(a){this.pendingHintTextClearTimeout_&&(window.clearTimeout(this.pendingHintTextClearTimeout_),this.pendingHintTextClearTimeout_=
void 0);this.pendingHintTextClearTimeout_=setTimeout(this.hideHintText_.bind(this),1E3);this.hintTextBox_.textContent=a;this.hintTextBox_.style.display=""},hideHintText_:function(){this.pendingHintTextClearTimeout_=void 0;this.hintTextBox_.style.display="none"}};return{TimelineTrackView:b}});"use strict";
Polymer("tracing-find-control",{filterKeyDown:function(d){d.stopPropagation();13===d.keyCode&&(d.shiftKey?this.findPrevious():this.findNext())},filterKeyPress:function(d){d.stopPropagation()},filterBlur:function(d){this.updateHitCountEl()},filterFocus:function(d){this.controller.reset();this.filterTextChanged();this.$.filter.select()},filterMouseUp:function(d){d.preventDefault()},get controller(){return this.controller_},set controller(d){this.controller_=d;this.updateHitCountEl()},focus:function(){this.$.filter.focus()},
hasFocus:function(){return this===document.activeElement},filterTextChanged:function(){this.controller.filterText=this.$.filter.value;this.$.hitCount.textContent="";this.$.spinner.style.visibility="visible";this.controller.updateFilterHits().then(function(){this.$.spinner.style.visibility="hidden";this.updateHitCountEl()}.bind(this))},findNext:function(){this.controller&&this.controller.findNext();this.updateHitCountEl()},findPrevious:function(){this.controller&&this.controller.findPrevious();this.updateHitCountEl()},
updateHitCountEl:function(){if(this.controller&&this.hasFocus()){var d=this.controller.filterHits.length;this.$.hitCount.textContent=(0===d?-1:this.controller.currentHitIndex)+1+" of "+d}else this.$.hitCount.textContent=""}});"use strict";
tv.exportTo("tv.c",function(){var d=tv.b.ui.define("side-panel");d.prototype={__proto__:HTMLUnknownElement.prototype,decorate:function(){this.objectInstance_=void 0},get rangeOfInterest(){throw Error("Not implemented");},set rangeOfInterest(a){throw Error("Not implemented");},get selection(){throw Error("Not implemented");},set selection(a){throw Error("Not implemented");},get model(){throw Error("Not implemented");},set model(a){throw Error("Not implemented");}};var c=new tv.b.ExtensionRegistryOptions(tv.b.BASIC_REGISTRY_MODE);
c.mandatoryBaseClass=tv.c.SidePanel;c.defaultMetadata={textLabel:"<Unknown>",supportsModel:function(a){return{supported:!0}}};tv.b.decorateExtensionRegistry(d,c);return{SidePanel:d}});"use strict";
tv.exportTo("tv.c",function(){var d=tv.b.ui.define("x-side-panel-container");d.prototype={__proto__:HTMLUnknownElement.prototype,decorate:function(){this.activePanelContainer_=document.createElement("active-panel-container");this.tabStrip_=document.createElement("tab-strip");this.appendChild(this.activePanelContainer_);this.appendChild(this.tabStrip_);this.model_=void 0;this.rangeOfInterest_=new tv.b.Range},get model(){return this.model_},set model(c){this.model_=c;this.updateContents_()},get expanded(){this.hasAttribute("expanded")},
get activePanel(){return 0===this.activePanelContainer_.children.length?void 0:this.activePanelContainer_.children[0]},get activePanelConstructor(){return this.activePanelType?this.activePanelType.constructor:void 0},set activePanelConstructor(c){if(c){if(c=this.getPanelTypeForConstructor_(c),void 0===c)throw Error("Not registered");}else c=void 0;this.activePanelType=c},get activePanelType(){if(this.activePanel)return this.getPanelTypeForConstructor_(this.activePanel.constructor)},set activePanelType(c){if(void 0===
this.model_)throw Error("Cannot activate panel without a model");if(c&&!c.metadata.supportsModel(this.model_))throw Error("Cannot activate panel: it doesn't support this model");this.activePanelType&&this.getLabelElementForPanelType_(this.activePanelType).removeAttribute("selected");this.activePanelContainer_.textContent="";void 0===c?this.removeAttribute("expanded"):(this.getLabelElementForPanelType_(c).setAttribute("selected",!0),this.setAttribute("expanded",!0),c=new c.constructor,this.activePanelContainer_.appendChild(c),
c.rangeOfInterest=this.rangeOfInterest_,c.selection=this.selection_,c.model=this.model_)},getPanelTypeForConstructor_:function(c){for(var a=0;a<this.tabStrip_.children.length;a++)if(this.tabStrip_.children[a].panelType.constructor==c)return this.tabStrip_.children[a].panelType},getLabelElementForPanelType_:function(c){for(var a=0;a<this.tabStrip_.children.length;a++)if(this.tabStrip_.children[a].panelType==c)return this.tabStrip_.children[a]},updateContents_:function(){var c=this.activePanelType;
this.tabStrip_.textContent="";var a=[];tv.c.SidePanel.getAllRegisteredTypeInfos().forEach(function(c){var b=document.createElement("tab-strip-label");b.textContent=c.metadata.textLabel;b.panelType=c;var e=c.metadata.supportsModel(this.model_);this.model_&&e.supported?(a.push(c),b.setAttribute("enabled",!0),b.addEventListener("click",function(){this.activePanelType=this.activePanelType===c?void 0:c}.bind(this))):b.title="Not supported for the current trace: "+e.reason;this.tabStrip_.appendChild(b)},
this);c&&-1!=a.indexOf(c)?(this.activePanelType=c,this.setAttribute("expanded",!0)):(this.activePanelContainer_.textContent="",this.removeAttribute("expanded"))},get selection(){return this.selection_},set selection(c){this.selection_=c;this.activePanel&&(this.activePanel.selection=c)},get rangeOfInterest(){return this.rangeOfInterest_},set rangeOfInterest(c){if(void 0==c)throw Error("Must not be undefined");this.rangeOfInterest_=c;this.activePanel&&(this.activePanel.rangeOfInterest=c)}};return{SidePanelContainer:d}});
"use strict";
tv.exportTo("tv.c",function(){var d=document.currentScript.ownerDocument,c=tv.b.ui.define("x-timeline-view");c.prototype={__proto__:HTMLUnknownElement.prototype,decorate:function(){var a=tv.b.instantiateTemplate("#timeline-view-template",d);this.appendChild(a);this.titleEl_=this.querySelector(".title");this.leftControlsEl_=this.querySelector("#left-controls");this.rightControlsEl_=this.querySelector("#right-controls");this.sidePanelContainer_=this.querySelector("x-side-panel-container");this.trackViewContainer_=
this.querySelector("track-view-container");tv.b.ui.decorate(this.sidePanelContainer_,tv.c.SidePanelContainer);this.findCtl_=new TracingFindControl;this.findCtl_.controller=new tv.c.FindController;this.showFlowEvents_=!1;this.rightControls.appendChild(tv.b.ui.createCheckBox(this,"showFlowEvents","tv.c.TimelineView.showFlowEvents",!1,"Flow events"));this.highlightVSync_=!1;this.highlightVSyncCheckbox_=tv.b.ui.createCheckBox(this,"highlightVSync","tv.c.TimelineView.highlightVSync",!1,"Highlight VSync");
this.rightControls.appendChild(this.highlightVSyncCheckbox_);this.rightControls.appendChild(this.createMetadataButton_());this.rightControls.appendChild(this.findCtl_);this.rightControls.appendChild(this.createHelpButton_());this.dragEl_=this.querySelector("x-drag-handle");tv.b.ui.decorate(this.dragEl_,tv.b.ui.DragHandle);this.analysisEl_=this.querySelector("#analysis");this.addEventListener("requestSelectionChange",this.onRequestSelectionChange_.bind(this));this.onViewportChanged_=this.onViewportChanged_.bind(this);
this.onSelectionChanged_=this.onSelectionChanged_.bind(this);document.addEventListener("keydown",this.onKeyDown_.bind(this),!0);document.addEventListener("keypress",this.onKeypress_.bind(this),!0);this.dragEl_.target=this.analysisEl_;this.selections_={};window.addEventListener("popstate",this.onPopState_.bind(this))},get showFlowEvents(){return this.showFlowEvents_},set showFlowEvents(a){this.showFlowEvents_=a;this.trackView_&&(this.trackView_.viewport.showFlowEvents=a)},get highlightVSync(){return this.highlightVSync_},
set highlightVSync(a){this.highlightVSync_=a;this.trackView_&&(this.trackView_.viewport.highlightVSync=a)},createHelpButton_:function(){var a=tv.b.instantiateTemplate("#help-btn-template",d),c=a.querySelector(".view-help-button"),b=a.querySelector(".view-help-text"),e=new tv.b.ui.Overlay;e.title="chrome://tracing Help";e.classList.add("view-help-overlay");e.appendChild(a);c.addEventListener("click",function(a){e.visible=!e.visible;for(var c=tv.isMac?"cmd ":"ctrl",f=b.querySelectorAll("span.mod"),
d=0;d<f.length;d++)f[d].textContent=c;a.stopPropagation();return!1}.bind(this));return c},createMetadataButton_:function(){var a=tv.b.instantiateTemplate("#metadata-btn-template",d),c=a.querySelector(".view-metadata-button"),b=a.querySelector(".info-button-text"),e=new tv.b.ui.Overlay;e.title="Metadata for trace";e.classList.add("view-metadata-overlay");e.appendChild(a);c.addEventListener("click",function(a){e.visible=!0;var c=[],f=this.model,d;for(d in f.metadata){var m=f.metadata[d],n=JSON.stringify(m.name),
m=JSON.stringify(m.value,void 0," ");c.push(n+": "+m)}b.textContent=c.join("\n");a.stopPropagation();return!1}.bind(this));a=function(){c.style.display=this.model&&this.model.metadata.length?"":"none"}.bind(this);a();this.addEventListener("modelChange",a);return c},get leftControls(){return this.leftControlsEl_},get rightControls(){return this.rightControlsEl_},get viewTitle(){return this.titleEl_.textContent.substring(this.titleEl_.textContent.length-2)},set viewTitle(a){void 0===a?(this.titleEl_.textContent=
"",this.titleEl_.hidden=!0):(this.titleEl_.hidden=!1,this.titleEl_.textContent=a)},get model(){if(this.trackView_)return this.trackView_.model},set model(a){var c=a!=this.model,b=a&&!a.bounds.isEmpty;c&&(this.trackViewContainer_.textContent="",this.trackView_&&(this.trackView_.viewport.removeEventListener("change",this.onViewportChanged_),this.trackView_.removeEventListener("selectionChange",this.onSelectionChanged_),this.trackView_.detach(),this.trackView_=void 0,this.findCtl_.controller.trackView=
void 0),this.sidePanelContainer_.model=void 0);b&&!this.trackView_&&(this.trackView_=new tv.c.TimelineTrackView,this.trackView_.focusElement=this.focusElement_?this.focusElement_:this.parentElement,this.trackViewContainer_.appendChild(this.trackView_),this.findCtl_.controller.timeline=this.trackView_,this.trackView_.addEventListener("selectionChange",this.onSelectionChanged_),this.trackView_.viewport.addEventListener("change",this.onViewportChanged_));b&&(this.trackView_.model=a,this.sidePanelContainer_.model=
a,this.trackView_.viewport.showFlowEvents=this.showFlowEvents,this.trackView_.viewport.highlightVSync=this.highlightVSync,this.clearSelectionHistory_());tv.b.dispatchSimpleEvent(this,"modelChange");c&&(this.onSelectionChanged_(),this.onViewportChanged_())},get timeline(){return this.trackView_},get settings(){this.settings_||(this.settings_=new tv.b.Settings);return this.settings_},set focusElement(a){this.focusElement_=a;this.trackView_&&(this.trackView_.focusElement=a)},get focusElement(){return this.focusElement_?
this.focusElement_:this.parentElement},get listenToKeys_(){if(tv.b.ui.isElementAttachedToDocument(this))return this.focusElement_?0<=this.focusElement.tabIndex?document.activeElement==this.focusElement:!0:!0},onKeyDown_:function(a){this.listenToKeys_&&27===a.keyCode&&(this.focus(),a.preventDefault())},onKeypress_:function(a){if(this.listenToKeys_){switch(a.keyCode){case 47:this.findCtl_.hasFocus()?this.focus():this.findCtl_.focus();a.preventDefault();break;case 63:this.querySelector(".view-help-button").click(),
a.preventDefault()}if(!this.findCtl_.hasFocus())switch(a.keyCode){case 118:this.toggleHighlightVSync_(),a.preventDefault()}}},onSelectionChanged_:function(a){a=this.trackViewContainer_.scrollTop;var c=this.trackView_?this.trackView_.selectionOfInterest:new tv.c.Selection;this.analysisEl_.selection=c;this.trackViewContainer_.scrollTop=a;this.sidePanelContainer_.selection=c},onRequestSelectionChange_:function(a){this.selections_[a.selection.guid]=a.selection;window.history.pushState({selection_guid:a.selection.guid});
this.trackView_.selection=a.selection;a.stopPropagation()},onPopState_:function(a){if(null!==a.state){var c=this.selections_[a.state.selection_guid];c&&(this.trackView_.selection=c);a.stopPropagation()}},clearSelectionHistory_:function(){this.selections_={}},onViewportChanged_:function(a){a=this.sidePanelContainer_;if(this.trackView_){var c=this.trackView_.viewport.interestRange.asRangeObject();a.rangeOfInterest.equals(c)||(a.rangeOfInterest=c)}else a.rangeOfInterest.reset()},toggleHighlightVSync_:function(){this.highlightVSyncCheckbox_.checked=
!this.highlightVSyncCheckbox_.checked}};return{TimelineView:c}});"use strict";
tv.exportTo("tv",function(){var d=tv.b.ui.define("trace-viewer",tv.c.TimelineView);d.prototype={__proto__:tv.c.TimelineView.prototype,decorate:function(c){function a(){e.model=h;e.viewTitle=b;e.timeline&&(e.timeline.focusElement=e)}function f(){var a=new tv.b.ui.Overlay;a.textContent=tv.b.normalizeException(err).message;a.title="Import error";a.visible=!0}tv.c.TimelineView.prototype.decorate.call(this);if(void 0!==c){var b=c,e=this,d=new XMLHttpRequest,g=/[.]gz$/.test(b)||/[.]zip$/.test(b);d.overrideMimeType("text/plain; charset=x-user-defined");
d.open("GET",b,!0);g&&(d.responseType="arraybuffer");d.onreadystatechange=function(c){4==d.readyState&&window.setTimeout(function(){if(200==d.status){var c=g?d.response:d.responseText;h=new tv.c.TraceModel;h.importTracesWithProgressDialog([c],!0).then(a,f)}else{var c=d.status,e=new tv.b.ui.Overlay;e.textContent=c+": "+b+" could not be loaded";e.title="Failed to fetch data";e.visible=!0}},0)};d.send(null);var h}}};return{TraceViewer:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){this.importer=a;this.model=a.model}d.prototype={__proto__:Object.prototype};var c=new tv.b.ExtensionRegistryOptions(tv.b.BASIC_REGISTRY_MODE);c.mandatoryBaseClass=d;tv.b.decorateExtensionRegistry(d,c);return{Parser:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){c.call(this,a);a.registerEventHandler("memory_bus_usage",d.prototype.traceMarkWriteBusEvent.bind(this));this.model_=a.model_;this.ppids_={}}var c=tv.e.importer.linux_perf.Parser;d.prototype={__proto__:c.prototype,traceMarkWriteBusEvent:function(a,c,b,e,d,g){b=/bus=(\S+) rw_bytes=(\d+) r_bytes=(\d+) w_bytes=(\d+) cycles=(\d+) ns=(\d+)/.exec(d.details);a=b[1];parseInt(b[2]);c=parseInt(b[3]);parseInt(b[4]);parseInt(b[5]);b=parseInt(b[6]);
var h=1E9*c/b,h=h/1048576;c=this.model_.getOrCreateProcess(0).getOrCreateCounter(null,"bus "+a+" read");0===c.numSeries&&c.addSeries(new tv.c.trace_model.CounterSeries("value",tv.b.ui.getColorIdForGeneralPurposeString(c.name+".value")));c.series.forEach(function(a){a.addCounterSample(e,h)});c=this.model_.getOrCreateProcess(0).getOrCreateCounter(null,"bus "+a+" write");0===c.numSeries&&c.addSeries(new tv.c.trace_model.CounterSeries("value",tv.b.ui.getColorIdForGeneralPurposeString(c.name+".value")));
c.series.forEach(function(a){a.addCounterSample(e,h)});return!0}};c.register(d);return{BusParser:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){c.call(this,a);a.registerEventHandler("clock_set_rate",d.prototype.traceMarkWriteClockEvent.bind(this));this.model_=a.model_;this.ppids_={}}var c=tv.e.importer.linux_perf.Parser;d.prototype={__proto__:c.prototype,traceMarkWriteClockEvent:function(a,c,b,e,d,g){a=/(\S+) state=(\d+) cpu_id=(\d+)/.exec(d.details);c=a[1];var h=parseInt(a[2]);a=this.model_.getOrCreateProcess(0).getOrCreateCounter(null,c);0===a.numSeries&&a.addSeries(new tv.c.trace_model.CounterSeries("value",
tv.b.ui.getColorIdForGeneralPurposeString(a.name+".value")));a.series.forEach(function(a){a.addCounterSample(e,h)});return!0}};c.register(d);return{ClockParser:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(c){a.call(this,c);c.registerEventHandler("cpufreq_interactive_up",d.prototype.cpufreqUpDownEvent.bind(this));c.registerEventHandler("cpufreq_interactive_down",d.prototype.cpufreqUpDownEvent.bind(this));c.registerEventHandler("cpufreq_interactive_already",d.prototype.cpufreqTargetEvent.bind(this));c.registerEventHandler("cpufreq_interactive_notyet",d.prototype.cpufreqTargetEvent.bind(this));c.registerEventHandler("cpufreq_interactive_setspeed",
d.prototype.cpufreqTargetEvent.bind(this));c.registerEventHandler("cpufreq_interactive_target",d.prototype.cpufreqTargetEvent.bind(this));c.registerEventHandler("cpufreq_interactive_boost",d.prototype.cpufreqBoostUnboostEvent.bind(this));c.registerEventHandler("cpufreq_interactive_unboost",d.prototype.cpufreqBoostUnboostEvent.bind(this))}function c(a){var b={};a=a.split(/\s+/);for(var c=a.length,d=0;d<c;d++){var g=a[d].split("=");b[g[0]]=parseInt(g[1])}return b}var a=tv.e.importer.linux_perf.Parser;
d.prototype={__proto__:a.prototype,cpufreqSlice:function(a,b,c,d){c=this.importer.getOrCreatePseudoThread("cpufreq");c.openSlice=b;a=new tv.c.trace_model.Slice("",c.openSlice,tv.b.ui.getColorIdForGeneralPurposeString(c.openSlice),a,d,0);c.thread.sliceGroup.pushSlice(a)},cpufreqBoostSlice:function(a,b,c){var d=this.importer.getOrCreatePseudoThread("cpufreq_boost");d.openSlice=b;a=new tv.c.trace_model.Slice("",d.openSlice,tv.b.ui.getColorIdForGeneralPurposeString(d.openSlice),a,c,0);d.thread.sliceGroup.pushSlice(a)},
cpufreqUpDownEvent:function(a,b,e,d,g){b=c(g.details);this.cpufreqSlice(d,a,b.cpu,b);return!0},cpufreqTargetEvent:function(a,b,e,d,g){b=c(g.details);this.cpufreqSlice(d,a,b.cpu,b);return!0},cpufreqBoostUnboostEvent:function(a,b,c,d,g){this.cpufreqBoostSlice(d,a,{type:g.details});return!0}};a.register(d);return{CpufreqParser:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){c.call(this,a);a.registerEventHandler("f2fs_write_begin",d.prototype.f2fsWriteBeginEvent.bind(this));a.registerEventHandler("f2fs_write_end",d.prototype.f2fsWriteEndEvent.bind(this));a.registerEventHandler("f2fs_sync_file_enter",d.prototype.f2fsSyncFileEnterEvent.bind(this));a.registerEventHandler("f2fs_sync_file_exit",d.prototype.f2fsSyncFileExitEvent.bind(this));a.registerEventHandler("ext4_sync_file_enter",d.prototype.ext4SyncFileEnterEvent.bind(this));
a.registerEventHandler("ext4_sync_file_exit",d.prototype.ext4SyncFileExitEvent.bind(this));a.registerEventHandler("ext4_da_write_begin",d.prototype.ext4WriteBeginEvent.bind(this));a.registerEventHandler("ext4_da_write_end",d.prototype.ext4WriteEndEvent.bind(this));a.registerEventHandler("block_rq_issue",d.prototype.blockRqIssueEvent.bind(this));a.registerEventHandler("block_rq_complete",d.prototype.blockRqCompleteEvent.bind(this))}var c=tv.e.importer.linux_perf.Parser;d.prototype={__proto__:c.prototype,
openAsyncSlice:function(a,c,b,e,d,g){b=this.importer.getOrCreateKernelThread(c+":"+b,e);a=new (tv.c.trace_model.AsyncSlice.getConstructor(c,g))(c,g,tv.b.ui.getColorIdForGeneralPurposeString(g),a);a.startThread=b.thread;b.openAsyncSlices||(b.openAsyncSlices={});b.openAsyncSlices[d]=a},closeAsyncSlice:function(a,c,b,e,d,g){b=this.importer.getOrCreateKernelThread(c+":"+b,e);b.openAsyncSlices&&(e=b.openAsyncSlices[d])&&(e.duration=a-e.start,e.args=g,e.endThread=b.thread,e.subSlices=[new tv.c.trace_model.Slice(c,
e.title,e.colorId,e.start,e.args,e.duration)],b.thread.asyncSliceGroup.push(e),delete b.openAsyncSlices[d])},f2fsWriteBeginEvent:function(a,c,b,e,d){var g=/dev = \((\d+,\d+)\), ino = (\d+), pos = (\d+), len = (\d+), flags = (\d+)/.exec(d.details);if(!g)return!1;a=g[1];c=parseInt(g[2]);b=parseInt(g[3]);g=parseInt(g[4]);this.openAsyncSlice(e,"f2fs",d.threadName,d.pid,a+"-"+c+"-"+b+"-"+g,"f2fs_write");return!0},f2fsWriteEndEvent:function(a,c,b,e,d){var g=/dev = \((\d+,\d+)\), ino = (\d+), pos = (\d+), len = (\d+), copied = (\d+)/.exec(d.details);
if(!g)return!1;a=g[1];c=parseInt(g[2]);b=parseInt(g[3]);var h=parseInt(g[4]),g=parseInt(g[5])!==h;this.closeAsyncSlice(e,"f2fs",d.threadName,d.pid,a+"-"+c+"-"+b+"-"+h,{device:a,inode:c,error:g});return!0},ext4WriteBeginEvent:function(a,c,b,e,d){var g=/dev (\d+,\d+) ino (\d+) pos (\d+) len (\d+) flags (\d+)/.exec(d.details);if(!g)return!1;a=g[1];c=parseInt(g[2]);b=parseInt(g[3]);g=parseInt(g[4]);this.openAsyncSlice(e,"ext4",d.threadName,d.pid,a+"-"+c+"-"+b+"-"+g,"ext4_write");return!0},ext4WriteEndEvent:function(a,
c,b,e,d){var g=/dev (\d+,\d+) ino (\d+) pos (\d+) len (\d+) copied (\d+)/.exec(d.details);if(!g)return!1;a=g[1];c=parseInt(g[2]);b=parseInt(g[3]);var h=parseInt(g[4]),g=parseInt(g[5])!==h;this.closeAsyncSlice(e,"ext4",d.threadName,d.pid,a+"-"+c+"-"+b+"-"+h,{device:a,inode:c,error:g});return!0},f2fsSyncFileEnterEvent:function(a,c,b,e,d){c=/dev = \((\d+,\d+)\), ino = (\d+), pino = (\d+), i_mode = (\S+), i_size = (\d+), i_nlink = (\d+), i_blocks = (\d+), i_advise = (\d+)/.exec(d.details);if(!c)return!1;
a=c[1];c=parseInt(c[2]);this.openAsyncSlice(e,"f2fs",d.threadName,d.pid,a+"-"+c,"fsync");return!0},f2fsSyncFileExitEvent:function(a,c,b,e,d){b=/dev = \((\d+,\d+)\), ino = (\d+), checkpoint is (\S+), datasync = (\d+), ret = (\d+)/.exec(d.details.replace("not needed","not_needed"));if(!b)return!1;a=b[1];c=parseInt(b[2]);b=parseInt(b[5]);this.closeAsyncSlice(e,"f2fs",d.threadName,d.pid,a+"-"+c,{device:a,inode:c,error:b});return!0},ext4SyncFileEnterEvent:function(a,c,b,e,d){a=/dev (\d+,\d+) ino (\d+) parent (\d+) datasync (\d+)/.exec(d.details);
if(!a)return!1;c=a[1];b=parseInt(a[2]);this.openAsyncSlice(e,"ext4",d.threadName,d.pid,c+"-"+b,1==a[4]?"fdatasync":"fsync");return!0},ext4SyncFileExitEvent:function(a,c,b,e,d){b=/dev (\d+,\d+) ino (\d+) ret (\d+)/.exec(d.details);if(!b)return!1;a=b[1];c=parseInt(b[2]);b=parseInt(b[3]);this.closeAsyncSlice(e,"ext4",d.threadName,d.pid,a+"-"+c,{device:a,inode:c,error:b});return!0},blockRqIssueEvent:function(a,c,b,e,d){var g=/(\d+,\d+) (F)?([DWRN])(F)?(A)?(S)?(M)? \d+ \(.*\) (\d+) \+ (\d+) \[.*\]/.exec(d.details);
if(!g)return!1;switch(g[3]){case "D":a="discard";break;case "W":a="write";break;case "R":a="read";break;case "N":a="none";break;default:a="unknown"}g[2]&&(a+=" flush");"F"==g[4]&&(a+=" fua");"A"==g[5]&&(a+=" ahead");"S"==g[6]&&(a+=" sync");"M"==g[7]&&(a+=" meta");c=g[1];b=parseInt(g[8]);g=parseInt(g[9]);this.openAsyncSlice(e,"block",d.threadName,d.pid,c+"-"+b+"-"+g,a);return!0},blockRqCompleteEvent:function(a,c,b,e,d){var g=/(\d+,\d+) (F)?([DWRN])(F)?(A)?(S)?(M)? \(.*\) (\d+) \+ (\d+) \[(.*)\]/.exec(d.details);
if(!g)return!1;a=g[1];c=parseInt(g[8]);b=parseInt(g[9]);g=parseInt(g[10]);this.closeAsyncSlice(e,"block",d.threadName,d.pid,a+"-"+c+"-"+b,{device:a,sector:c,numSectors:b,error:g});return!0}};c.register(d);return{DiskParser:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){c.call(this,a);a.registerEventHandler("drm_vblank_event",d.prototype.vblankEvent.bind(this))}var c=tv.e.importer.linux_perf.Parser;d.prototype={__proto__:c.prototype,drmVblankSlice:function(a,c,b){var e=this.importer.getOrCreatePseudoThread("drm_vblank");e.openSlice=c;a=new tv.c.trace_model.Slice("",e.openSlice,tv.b.ui.getColorIdForGeneralPurposeString(e.openSlice),a,b,0);e.thread.sliceGroup.pushSlice(a)},vblankEvent:function(a,c,b,e,
d){c=/crtc=(\d+), seq=(\d+)/.exec(d.details);if(!c)return!1;a=parseInt(c[1]);c=parseInt(c[2]);this.drmVblankSlice(e,"vblank:"+a,{crtc:a,seq:c});return!0}};c.register(d);return{DrmParser:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){c.call(this,a);a.registerEventHandler("irq_handler_entry",d.prototype.irqHandlerEntryEvent.bind(this));a.registerEventHandler("irq_handler_exit",d.prototype.irqHandlerExitEvent.bind(this));a.registerEventHandler("softirq_raise",d.prototype.softirqRaiseEvent.bind(this));a.registerEventHandler("softirq_entry",d.prototype.softirqEntryEvent.bind(this));a.registerEventHandler("softirq_exit",d.prototype.softirqExitEvent.bind(this))}var c=tv.e.importer.linux_perf.Parser,
a=/irq=(\d+) name=(.+)/,f=/irq=(\d+) ret=(.+)/,b=/vec=(\d+) \[action=(.+)\]/;d.prototype={__proto__:c.prototype,irqHandlerEntryEvent:function(b,c,f,d,l){b=a.exec(l.details);if(!b)return!1;parseInt(b[1]);b=b[2];c=this.importer.getOrCreatePseudoThread("irqs cpu "+c);c.lastEntryTs=d;c.irqName=b;return!0},irqHandlerExitEvent:function(a,b,c,d,l){a=f.exec(l.details);if(!a)return!1;parseInt(a[1]);c=a[2];b=this.importer.getOrCreatePseudoThread("irqs cpu "+b);void 0!==b.lastEntryTs&&(d-=b.lastEntryTs,d=new tv.c.trace_model.Slice("",
b.irqName,tv.b.ui.getColorIdForGeneralPurposeString(a[1]),b.lastEntryTs,{ret:c},d),b.thread.sliceGroup.pushSlice(d));b.lastEntryTs=void 0;b.irqName=void 0;return!0},softirqRaiseEvent:function(a,b,c,f,d){return!0},softirqEntryEvent:function(a,c,f,d,l){if(!b.exec(l.details))return!1;this.importer.getOrCreatePseudoThread("softirq cpu "+c).lastEntryTs=d;return!0},softirqExitEvent:function(a,c,f,d,l){a=b.exec(l.details);if(!a)return!1;f=parseInt(a[1]);l=a[2];c=this.importer.getOrCreatePseudoThread("softirq cpu "+
c);void 0!==c.lastEntryTs&&(d-=c.lastEntryTs,d=new tv.c.trace_model.Slice("",l,tv.b.ui.getColorIdForGeneralPurposeString(a[1]),c.lastEntryTs,{vec:f},d),c.thread.sliceGroup.pushSlice(d));c.lastEntryTs=void 0;return!0}};c.register(d);return{IrqParser:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){c.call(this,a);a.registerEventHandler("exynos_busfreq_target_int",d.prototype.busfreqTargetIntEvent.bind(this));a.registerEventHandler("exynos_busfreq_target_mif",d.prototype.busfreqTargetMifEvent.bind(this));a.registerEventHandler("exynos_page_flip_state",d.prototype.pageFlipStateEvent.bind(this))}var c=tv.e.importer.linux_perf.Parser;d.prototype={__proto__:c.prototype,exynosBusfreqSample:function(a,c,b){a=this.importer.getOrCreateCpu(0).getOrCreateCounter("",
a);0===a.numSeries&&a.addSeries(new tv.c.trace_model.CounterSeries("frequency",tv.b.ui.getColorIdForGeneralPurposeString(a.name+".frequency")));a.series.forEach(function(a){a.addCounterSample(c,b)})},busfreqTargetIntEvent:function(a,c,b,e,d){a=/frequency=(\d+)/.exec(d.details);if(!a)return!1;this.exynosBusfreqSample("INT Frequency",e,parseInt(a[1]));return!0},busfreqTargetMifEvent:function(a,c,b,e,d){a=/frequency=(\d+)/.exec(d.details);if(!a)return!1;this.exynosBusfreqSample("MIF Frequency",e,parseInt(a[1]));
return!0},exynosPageFlipStateOpenSlice:function(a,c,b,e){c=this.importer.getOrCreatePseudoThread("exynos_flip_state (pipe:"+c+", fb:"+b+")");c.openSliceTS=a;c.openSlice=e},exynosPageFlipStateCloseSlice:function(a,c,b,e){c=this.importer.getOrCreatePseudoThread("exynos_flip_state (pipe:"+c+", fb:"+b+")");c.openSlice&&(a=new tv.c.trace_model.Slice("",c.openSlice,tv.b.ui.getColorIdForGeneralPurposeString(c.openSlice),c.openSliceTS,e,a-c.openSliceTS),c.thread.sliceGroup.pushSlice(a));c.openSlice=void 0},
pageFlipStateEvent:function(a,c,b,e,d){b=/pipe=(\d+), fb=(\d+), state=(.*)/.exec(d.details);if(!b)return!1;a=parseInt(b[1]);c=parseInt(b[2]);b=b[3];this.exynosPageFlipStateCloseSlice(e,a,c,{pipe:a,fb:c});"flipped"!==b&&this.exynosPageFlipStateOpenSlice(e,a,c,b);return!0}};c.register(d);return{ExynosParser:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){c.call(this,a);a.registerEventHandler("tracing_mark_write:log",d.prototype.logEvent.bind(this));a.registerEventHandler("tracing_mark_write:SyncInterpret",d.prototype.syncEvent.bind(this));a.registerEventHandler("tracing_mark_write:HandleTimer",d.prototype.timerEvent.bind(this))}var c=tv.e.importer.linux_perf.Parser;d.prototype={__proto__:c.prototype,gestureOpenSlice:function(a,c,b){this.importer.getOrCreatePseudoThread("gesture").thread.sliceGroup.beginSlice("touchpad_gesture",
a,c,b)},gestureCloseSlice:function(a,c){var b=this.importer.getOrCreatePseudoThread("gesture").thread;if(b.sliceGroup.openSliceCount){var e=b.sliceGroup.mostRecentlyOpenedPartialSlice;e.title!=a?this.importer.model.importWarning({type:"title_match_error",message:"Titles do not match. Title is "+e.title+" in openSlice, and is "+a+" in endSlice"}):b.sliceGroup.endSlice(c)}},logEvent:function(a,c,b,e,d){a=/^\s*(\w+):\s*(\w+)$/.exec(d.details);switch(a[1]){case "start":this.gestureOpenSlice("GestureLog",
e,{name:a[2]});break;case "end":this.gestureCloseSlice("GestureLog",e)}return!0},syncEvent:function(a,c,b,e,d){a=/^\s*(\w+):\s*(\w+)$/.exec(d.details);switch(a[1]){case "start":this.gestureOpenSlice("SyncInterpret",e,{interpreter:a[2]});break;case "end":this.gestureCloseSlice("SyncInterpret",e)}return!0},timerEvent:function(a,c,b,e,d){a=/^\s*(\w+):\s*(\w+)$/.exec(d.details);switch(a[1]){case "start":this.gestureOpenSlice("HandleTimer",e,{interpreter:a[2]});break;case "end":this.gestureCloseSlice("HandleTimer",
e)}return!0}};c.register(d);return{GestureParser:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){c.call(this,a);a.registerEventHandler("i915_gem_object_create",d.prototype.gemObjectCreateEvent.bind(this));a.registerEventHandler("i915_gem_object_bind",d.prototype.gemObjectBindEvent.bind(this));a.registerEventHandler("i915_gem_object_unbind",d.prototype.gemObjectBindEvent.bind(this));a.registerEventHandler("i915_gem_object_change_domain",d.prototype.gemObjectChangeDomainEvent.bind(this));a.registerEventHandler("i915_gem_object_pread",
d.prototype.gemObjectPreadWriteEvent.bind(this));a.registerEventHandler("i915_gem_object_pwrite",d.prototype.gemObjectPreadWriteEvent.bind(this));a.registerEventHandler("i915_gem_object_fault",d.prototype.gemObjectFaultEvent.bind(this));a.registerEventHandler("i915_gem_object_clflush",d.prototype.gemObjectDestroyEvent.bind(this));a.registerEventHandler("i915_gem_object_destroy",d.prototype.gemObjectDestroyEvent.bind(this));a.registerEventHandler("i915_gem_ring_dispatch",d.prototype.gemRingDispatchEvent.bind(this));
a.registerEventHandler("i915_gem_ring_flush",d.prototype.gemRingFlushEvent.bind(this));a.registerEventHandler("i915_gem_request",d.prototype.gemRequestEvent.bind(this));a.registerEventHandler("i915_gem_request_add",d.prototype.gemRequestEvent.bind(this));a.registerEventHandler("i915_gem_request_complete",d.prototype.gemRequestEvent.bind(this));a.registerEventHandler("i915_gem_request_retire",d.prototype.gemRequestEvent.bind(this));a.registerEventHandler("i915_gem_request_wait_begin",d.prototype.gemRequestEvent.bind(this));
a.registerEventHandler("i915_gem_request_wait_end",d.prototype.gemRequestEvent.bind(this));a.registerEventHandler("i915_gem_ring_wait_begin",d.prototype.gemRingWaitEvent.bind(this));a.registerEventHandler("i915_gem_ring_wait_end",d.prototype.gemRingWaitEvent.bind(this));a.registerEventHandler("i915_reg_rw",d.prototype.regRWEvent.bind(this));a.registerEventHandler("i915_flip_request",d.prototype.flipEvent.bind(this));a.registerEventHandler("i915_flip_complete",d.prototype.flipEvent.bind(this));a.registerEventHandler("intel_gpu_freq_change",
d.prototype.gpuFrequency.bind(this))}var c=tv.e.importer.linux_perf.Parser;d.prototype={__proto__:c.prototype,i915FlipOpenSlice:function(a,c,b){var e=this.importer.getOrCreatePseudoThread("i915_flip");e.openSliceTS=a;e.openSlice="flip:"+c+"/"+b},i915FlipCloseSlice:function(a,c){var b=this.importer.getOrCreatePseudoThread("i915_flip");if(b.openSlice){var e=new tv.c.trace_model.Slice("",b.openSlice,tv.b.ui.getColorIdForGeneralPurposeString(b.openSlice),b.openSliceTS,c,a-b.openSliceTS);b.thread.sliceGroup.pushSlice(e)}b.openSlice=
void 0},i915GemObjectSlice:function(a,c,b,e){var d=this.importer.getOrCreatePseudoThread("i915_gem");d.openSlice=c+":"+b;a=new tv.c.trace_model.Slice("",d.openSlice,tv.b.ui.getColorIdForGeneralPurposeString(d.openSlice),a,e,0);d.thread.sliceGroup.pushSlice(a)},i915GemRingSlice:function(a,c,b,e,d){var g=this.importer.getOrCreatePseudoThread("i915_gem_ring");g.openSlice=c+":"+b+"."+e;a=new tv.c.trace_model.Slice("",g.openSlice,tv.b.ui.getColorIdForGeneralPurposeString(g.openSlice),a,d,0);g.thread.sliceGroup.pushSlice(a)},
i915RegSlice:function(a,c,b,e){var d=this.importer.getOrCreatePseudoThread("i915_reg");d.openSlice=c+":"+b;a=new tv.c.trace_model.Slice("",d.openSlice,tv.b.ui.getColorIdForGeneralPurposeString(d.openSlice),a,e,0);d.thread.sliceGroup.pushSlice(a)},i915FreqChangeSlice:function(a,c,b){var e=this.importer.getOrCreatePseudoThread("i915_gpu_freq");e.openSlice=c;a=new tv.c.trace_model.Slice("",e.openSlice,tv.b.ui.getColorIdForGeneralPurposeString(e.openSlice),a,b,0);e.thread.sliceGroup.pushSlice(a)},gemObjectCreateEvent:function(a,
c,b,e,d){b=/obj=(\w+), size=(\d+)/.exec(d.details);if(!b)return!1;c=b[1];b=parseInt(b[2]);this.i915GemObjectSlice(e,a,c,{obj:c,size:b});return!0},gemObjectBindEvent:function(a,c,b,e,d){d=/obj=(\w+), offset=(\w+), size=(\d+)/.exec(d.details);if(!d)return!1;c=d[1];b=d[2];d=parseInt(d[3]);this.i915ObjectGemSlice(e,a+":"+c,{obj:c,offset:b,size:d});return!0},gemObjectChangeDomainEvent:function(a,c,b,e,d){c=/obj=(\w+), read=(\w+=>\w+), write=(\w+=>\w+)/.exec(d.details);if(!c)return!1;b=c[1];this.i915GemObjectSlice(e,
a,b,{obj:b,read:c[2],write:c[3]});return!0},gemObjectPreadWriteEvent:function(a,c,b,e,d){d=/obj=(\w+), offset=(\d+), len=(\d+)/.exec(d.details);if(!d)return!1;c=d[1];b=parseInt(d[2]);d=parseInt(d[3]);this.i915GemObjectSlice(e,a,c,{obj:c,offset:b,len:d});return!0},gemObjectFaultEvent:function(a,c,b,e,d){d=/obj=(\w+), (\w+) index=(\d+)/.exec(d.details);if(!d)return!1;c=d[1];b=d[2];d=parseInt(d[3]);this.i915GemObjectSlice(e,a,c,{obj:c,type:b,index:d});return!0},gemObjectDestroyEvent:function(a,c,b,e,
d){c=/obj=(\w+)/.exec(d.details);if(!c)return!1;c=c[1];this.i915GemObjectSlice(e,a,c,{obj:c});return!0},gemRingDispatchEvent:function(a,c,b,e,d){d=/dev=(\d+), ring=(\d+), seqno=(\d+)/.exec(d.details);if(!d)return!1;c=parseInt(d[1]);b=parseInt(d[2]);d=parseInt(d[3]);this.i915GemRingSlice(e,a,c,b,{dev:c,ring:b,seqno:d});return!0},gemRingFlushEvent:function(a,c,b,e,d){c=/dev=(\d+), ring=(\w+), invalidate=(\w+), flush=(\w+)/.exec(d.details);if(!c)return!1;b=parseInt(c[1]);d=parseInt(c[2]);this.i915GemRingSlice(e,
a,b,d,{dev:b,ring:d,invalidate:c[3],flush:c[4]});return!0},gemRequestEvent:function(a,c,b,e,d){d=/dev=(\d+), ring=(\d+), seqno=(\d+)/.exec(d.details);if(!d)return!1;c=parseInt(d[1]);b=parseInt(d[2]);d=parseInt(d[3]);this.i915GemRingSlice(e,a,c,b,{dev:c,ring:b,seqno:d});return!0},gemRingWaitEvent:function(a,c,b,e,d){b=/dev=(\d+), ring=(\d+)/.exec(d.details);if(!b)return!1;c=parseInt(b[1]);b=parseInt(b[2]);this.i915GemRingSlice(e,a,c,b,{dev:c,ring:b});return!0},regRWEvent:function(a,c,b,e,d){a=/(\w+) reg=(\w+), len=(\d+), val=(\(\w+, \w+\))/.exec(d.details);
if(!a)return!1;c=a[1];b=a[2];this.i915RegSlice(e,c,b,{rw:c,reg:b,len:a[3],data:a[3]});return!0},flipEvent:function(a,c,b,e,d){b=/plane=(\d+), obj=(\w+)/.exec(d.details);if(!b)return!1;c=parseInt(b[1]);b=b[2];"i915_flip_request"==a?this.i915FlipOpenSlice(e,b,c):this.i915FlipCloseSlice(e,{obj:b,plane:c});return!0},gpuFrequency:function(a,c,b,e,d){c=/new_freq=(\d+)/.exec(d.details);if(!c)return!1;c=parseInt(c[1]);this.i915FreqChangeSlice(e,a,{freq:c});return!0}};c.register(d);return{I915Parser:d}});
"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){c.call(this,a);a.registerEventHandler("mali_dvfs_event",d.prototype.dvfsEventEvent.bind(this));a.registerEventHandler("mali_dvfs_set_clock",d.prototype.dvfsSetClockEvent.bind(this));a.registerEventHandler("mali_dvfs_set_voltage",d.prototype.dvfsSetVoltageEvent.bind(this));this.addJMCounter("mali_hwc_MESSAGES_SENT","Messages Sent");this.addJMCounter("mali_hwc_MESSAGES_RECEIVED","Messages Received");this.addJMCycles("mali_hwc_GPU_ACTIVE","GPU Active");
this.addJMCycles("mali_hwc_IRQ_ACTIVE","IRQ Active");for(var f=0;7>f;f++){var b="JS"+f,e="mali_hwc_"+b;this.addJMCounter(e+"_JOBS",b+" Jobs");this.addJMCounter(e+"_TASKS",b+" Tasks");this.addJMCycles(e+"_ACTIVE",b+" Active");this.addJMCycles(e+"_WAIT_READ",b+" Wait Read");this.addJMCycles(e+"_WAIT_ISSUE",b+" Wait Issue");this.addJMCycles(e+"_WAIT_DEPEND",b+" Wait Depend");this.addJMCycles(e+"_WAIT_FINISH",b+" Wait Finish")}this.addTilerCounter("mali_hwc_TRIANGLES","Triangles");this.addTilerCounter("mali_hwc_QUADS",
"Quads");this.addTilerCounter("mali_hwc_POLYGONS","Polygons");this.addTilerCounter("mali_hwc_POINTS","Points");this.addTilerCounter("mali_hwc_LINES","Lines");this.addTilerCounter("mali_hwc_VCACHE_HIT","VCache Hit");this.addTilerCounter("mali_hwc_VCACHE_MISS","VCache Miss");this.addTilerCounter("mali_hwc_FRONT_FACING","Front Facing");this.addTilerCounter("mali_hwc_BACK_FACING","Back Facing");this.addTilerCounter("mali_hwc_PRIM_VISIBLE","Prim Visible");this.addTilerCounter("mali_hwc_PRIM_CULLED","Prim Culled");
this.addTilerCounter("mali_hwc_PRIM_CLIPPED","Prim Clipped");this.addTilerCounter("mali_hwc_WRBUF_HIT","Wrbuf Hit");this.addTilerCounter("mali_hwc_WRBUF_MISS","Wrbuf Miss");this.addTilerCounter("mali_hwc_WRBUF_LINE","Wrbuf Line");this.addTilerCounter("mali_hwc_WRBUF_PARTIAL","Wrbuf Partial");this.addTilerCounter("mali_hwc_WRBUF_STALL","Wrbuf Stall");this.addTilerCycles("mali_hwc_ACTIVE","Tiler Active");this.addTilerCycles("mali_hwc_INDEX_WAIT","Index Wait");this.addTilerCycles("mali_hwc_INDEX_RANGE_WAIT",
"Index Range Wait");this.addTilerCycles("mali_hwc_VERTEX_WAIT","Vertex Wait");this.addTilerCycles("mali_hwc_PCACHE_WAIT","Pcache Wait");this.addTilerCycles("mali_hwc_WRBUF_WAIT","Wrbuf Wait");this.addTilerCycles("mali_hwc_BUS_READ","Bus Read");this.addTilerCycles("mali_hwc_BUS_WRITE","Bus Write");this.addTilerCycles("mali_hwc_TILER_UTLB_STALL","Tiler UTLB Stall");this.addTilerCycles("mali_hwc_TILER_UTLB_HIT","Tiler UTLB Hit");this.addFragCycles("mali_hwc_FRAG_ACTIVE","Active");this.addFragCounter("mali_hwc_FRAG_PRIMATIVES",
"Primitives");this.addFragCounter("mali_hwc_FRAG_PRIMATIVES_DROPPED","Primitives Dropped");this.addFragCycles("mali_hwc_FRAG_CYCLE_DESC","Descriptor Processing");this.addFragCycles("mali_hwc_FRAG_CYCLES_PLR","PLR Processing??");this.addFragCycles("mali_hwc_FRAG_CYCLES_VERT","Vertex Processing");this.addFragCycles("mali_hwc_FRAG_CYCLES_TRISETUP","Triangle Setup");this.addFragCycles("mali_hwc_FRAG_CYCLES_RAST","Rasterization???");this.addFragCounter("mali_hwc_FRAG_THREADS","Threads");this.addFragCounter("mali_hwc_FRAG_DUMMY_THREADS",
"Dummy Threads");this.addFragCounter("mali_hwc_FRAG_QUADS_RAST","Quads Rast");this.addFragCounter("mali_hwc_FRAG_QUADS_EZS_TEST","Quads EZS Test");this.addFragCounter("mali_hwc_FRAG_QUADS_EZS_KILLED","Quads EZS Killed");this.addFragCounter("mali_hwc_FRAG_QUADS_LZS_TEST","Quads LZS Test");this.addFragCounter("mali_hwc_FRAG_QUADS_LZS_KILLED","Quads LZS Killed");this.addFragCycles("mali_hwc_FRAG_CYCLE_NO_TILE","No Tiles");this.addFragCounter("mali_hwc_FRAG_NUM_TILES","Tiles");this.addFragCounter("mali_hwc_FRAG_TRANS_ELIM",
"Transactions Eliminated");this.addComputeCycles("mali_hwc_COMPUTE_ACTIVE","Active");this.addComputeCounter("mali_hwc_COMPUTE_TASKS","Tasks");this.addComputeCounter("mali_hwc_COMPUTE_THREADS","Threads Started");this.addComputeCycles("mali_hwc_COMPUTE_CYCLES_DESC","Waiting for Descriptors");this.addTripipeCycles("mali_hwc_TRIPIPE_ACTIVE","Active");this.addArithCounter("mali_hwc_ARITH_WORDS","Instructions (/Pipes)");this.addArithCycles("mali_hwc_ARITH_CYCLES_REG","Reg scheduling stalls (/Pipes)");this.addArithCycles("mali_hwc_ARITH_CYCLES_L0",
"L0 cache miss stalls (/Pipes)");this.addArithCounter("mali_hwc_ARITH_FRAG_DEPEND","Frag dep check failures (/Pipes)");this.addLSCounter("mali_hwc_LS_WORDS","Instruction Words Completed");this.addLSCounter("mali_hwc_LS_ISSUES","Full Pipeline Issues");this.addLSCounter("mali_hwc_LS_RESTARTS","Restarts (unpairable insts)");this.addLSCounter("mali_hwc_LS_REISSUES_MISS","Pipeline reissue (cache miss/uTLB)");this.addLSCounter("mali_hwc_LS_REISSUES_VD","Pipeline reissue (varying data)");this.addLSCounter("mali_hwc_LS_REISSUE_ATTRIB_MISS",
"Pipeline reissue (attribute cache miss)");this.addLSCounter("mali_hwc_LS_REISSUE_NO_WB","Writeback not used");this.addTexCounter("mali_hwc_TEX_WORDS","Words");this.addTexCounter("mali_hwc_TEX_BUBBLES","Bubbles");this.addTexCounter("mali_hwc_TEX_WORDS_L0","Words L0");this.addTexCounter("mali_hwc_TEX_WORDS_DESC","Words Desc");this.addTexCounter("mali_hwc_TEX_THREADS","Threads");this.addTexCounter("mali_hwc_TEX_RECIRC_FMISS","Recirc due to Full Miss");this.addTexCounter("mali_hwc_TEX_RECIRC_DESC","Recirc due to Desc Miss");
this.addTexCounter("mali_hwc_TEX_RECIRC_MULTI","Recirc due to Multipass");this.addTexCounter("mali_hwc_TEX_RECIRC_PMISS","Recirc due to Partial Cache Miss");this.addTexCounter("mali_hwc_TEX_RECIRC_CONF","Recirc due to Cache Conflict");this.addLSCCounter("mali_hwc_LSC_READ_HITS","Read Hits");this.addLSCCounter("mali_hwc_LSC_READ_MISSES","Read Misses");this.addLSCCounter("mali_hwc_LSC_WRITE_HITS","Write Hits");this.addLSCCounter("mali_hwc_LSC_WRITE_MISSES","Write Misses");this.addLSCCounter("mali_hwc_LSC_ATOMIC_HITS",
"Atomic Hits");this.addLSCCounter("mali_hwc_LSC_ATOMIC_MISSES","Atomic Misses");this.addLSCCounter("mali_hwc_LSC_LINE_FETCHES","Line Fetches");this.addLSCCounter("mali_hwc_LSC_DIRTY_LINE","Dirty Lines");this.addLSCCounter("mali_hwc_LSC_SNOOPS","Snoops");this.addAXICounter("mali_hwc_AXI_TLB_STALL","Address channel stall");this.addAXICounter("mali_hwc_AXI_TLB_MISS","Cache Miss");this.addAXICounter("mali_hwc_AXI_TLB_TRANSACTION","Transactions");this.addAXICounter("mali_hwc_LS_TLB_MISS","LS Cache Miss");
this.addAXICounter("mali_hwc_LS_TLB_HIT","LS Cache Hit");this.addAXICounter("mali_hwc_AXI_BEATS_READ","Read Beats");this.addAXICounter("mali_hwc_AXI_BEATS_WRITE","Write Beats");this.addMMUCounter("mali_hwc_MMU_TABLE_WALK","Page Table Walks");this.addMMUCounter("mali_hwc_MMU_REPLAY_MISS","Cache Miss from Replay Buffer");this.addMMUCounter("mali_hwc_MMU_REPLAY_FULL","Replay Buffer Full");this.addMMUCounter("mali_hwc_MMU_NEW_MISS","Cache Miss on New Request");this.addMMUCounter("mali_hwc_MMU_HIT","Cache Hit");
this.addMMUCycles("mali_hwc_UTLB_STALL","UTLB Stalled");this.addMMUCycles("mali_hwc_UTLB_REPLAY_MISS","UTLB Replay Miss");this.addMMUCycles("mali_hwc_UTLB_REPLAY_FULL","UTLB Replay Full");this.addMMUCycles("mali_hwc_UTLB_NEW_MISS","UTLB New Miss");this.addMMUCycles("mali_hwc_UTLB_HIT","UTLB Hit");this.addL2Counter("mali_hwc_L2_READ_BEATS","Read Beats");this.addL2Counter("mali_hwc_L2_WRITE_BEATS","Write Beats");this.addL2Counter("mali_hwc_L2_ANY_LOOKUP","Any Lookup");this.addL2Counter("mali_hwc_L2_READ_LOOKUP",
"Read Lookup");this.addL2Counter("mali_hwc_L2_SREAD_LOOKUP","Shareable Read Lookup");this.addL2Counter("mali_hwc_L2_READ_REPLAY","Read Replayed");this.addL2Counter("mali_hwc_L2_READ_SNOOP","Read Snoop");this.addL2Counter("mali_hwc_L2_READ_HIT","Read Cache Hit");this.addL2Counter("mali_hwc_L2_CLEAN_MISS","CleanUnique Miss");this.addL2Counter("mali_hwc_L2_WRITE_LOOKUP","Write Lookup");this.addL2Counter("mali_hwc_L2_SWRITE_LOOKUP","Shareable Write Lookup");this.addL2Counter("mali_hwc_L2_WRITE_REPLAY",
"Write Replayed");this.addL2Counter("mali_hwc_L2_WRITE_SNOOP","Write Snoop");this.addL2Counter("mali_hwc_L2_WRITE_HIT","Write Cache Hit");this.addL2Counter("mali_hwc_L2_EXT_READ_FULL","ExtRD with BIU Full");this.addL2Counter("mali_hwc_L2_EXT_READ_HALF","ExtRD with BIU >1/2 Full");this.addL2Counter("mali_hwc_L2_EXT_WRITE_FULL","ExtWR with BIU Full");this.addL2Counter("mali_hwc_L2_EXT_WRITE_HALF","ExtWR with BIU >1/2 Full");this.addL2Counter("mali_hwc_L2_EXT_READ","External Read (ExtRD)");this.addL2Counter("mali_hwc_L2_EXT_READ_LINE",
"ExtRD (linefill)");this.addL2Counter("mali_hwc_L2_EXT_WRITE","External Write (ExtWR)");this.addL2Counter("mali_hwc_L2_EXT_WRITE_LINE","ExtWR (linefill)");this.addL2Counter("mali_hwc_L2_EXT_WRITE_SMALL","ExtWR (burst size <64B)");this.addL2Counter("mali_hwc_L2_EXT_BARRIER","External Barrier");this.addL2Counter("mali_hwc_L2_EXT_AR_STALL","Address Read stalls");this.addL2Counter("mali_hwc_L2_EXT_R_BUF_FULL","Response Buffer full stalls");this.addL2Counter("mali_hwc_L2_EXT_RD_BUF_FULL","Read Data Buffer full stalls");
this.addL2Counter("mali_hwc_L2_EXT_R_RAW","RAW hazard stalls");this.addL2Counter("mali_hwc_L2_EXT_W_STALL","Write Data stalls");this.addL2Counter("mali_hwc_L2_EXT_W_BUF_FULL","Write Data Buffer full");this.addL2Counter("mali_hwc_L2_EXT_R_W_HAZARD","WAW or WAR hazard stalls");this.addL2Counter("mali_hwc_L2_TAG_HAZARD","Tag hazard replays");this.addL2Cycles("mali_hwc_L2_SNOOP_FULL","Snoop buffer full");this.addL2Cycles("mali_hwc_L2_REPLAY_FULL","Replay buffer full");a.registerEventHandler("tracing_mark_write:mali_driver",
d.prototype.maliDDKEvent.bind(this));this.model_=a.model_}var c=tv.e.importer.linux_perf.Parser;d.prototype={__proto__:c.prototype,maliDDKOpenSlice:function(a,c,b,e,d){a=this.importer.model_.getOrCreateProcess(a).getOrCreateThread(c);e=/^([\w\d_]*)(?:\(\))?:?\s*(.*)$/.exec(e);a.sliceGroup.beginSlice("gpu-driver",e[1],b,{args:e[2],blockinfo:d})},maliDDKCloseSlice:function(a,c,b,e,d){a=this.importer.model_.getOrCreateProcess(a).getOrCreateThread(c);a.sliceGroup.openSliceCount&&a.sliceGroup.endSlice(b)},
autoDetectLineRE:function(a){var c=/^\s*\(([\w\-]*)\)\s*(\w+):\s*([\w\\\/\.\-]*@\d*):?\s*(.*)$/;if(c.test(a))return c;c=/^s*()(\w+):\s*([\w\\\/.\-]*):?\s*(.*)$/;return c.test(a)?c:null},lineRE:null,maliDDKEvent:function(a,c,b,e,d){if(null==this.lineRE&&(this.lineRE=this.autoDetectLineRE(d.details),null==this.lineRE))return!1;a=this.lineRE.exec(d.details);c=""===a[1]?"mali":a[1];switch(a[2]){case "cros_trace_print_enter":this.maliDDKOpenSlice(b,c,e,a[4],a[3]);break;case "cros_trace_print_exit":this.maliDDKCloseSlice(b,
c,e,[],a[3])}return!0},dvfsSample:function(a,c,b,e){var d=parseInt(e);a=this.model_.getOrCreateProcess(0).getOrCreateCounter("DVFS",a);0===a.numSeries&&a.addSeries(new tv.c.trace_model.CounterSeries(c,tv.b.ui.getColorIdForGeneralPurposeString(a.name)));a.series.forEach(function(a){a.addCounterSample(b,d)})},dvfsEventEvent:function(a,c,b,e,d){a=/utilization=(\d+)/.exec(d.details);if(!a)return!1;this.dvfsSample("DVFS Utilization","utilization",e,a[1]);return!0},dvfsSetClockEvent:function(a,c,b,e,d){a=
/frequency=(\d+)/.exec(d.details);if(!a)return!1;this.dvfsSample("DVFS Frequency","frequency",e,a[1]);return!0},dvfsSetVoltageEvent:function(a,c,b,e,d){a=/voltage=(\d+)/.exec(d.details);if(!a)return!1;this.dvfsSample("DVFS Voltage","voltage",e,a[1]);return!0},hwcSample:function(a,c,b,e,d){d=/val=(\d+)/.exec(d.details);if(!d)return!1;var g=parseInt(d[1]);a=this.model_.getOrCreateProcess(0).getOrCreateCounter(a,c);0===a.numSeries&&a.addSeries(new tv.c.trace_model.CounterSeries(b,tv.b.ui.getColorIdForGeneralPurposeString(a.name)));
a.series.forEach(function(a){a.addCounterSample(e,g)});return!0},jmSample:function(a,c,b,e){return this.hwcSample("mali:jm","JM: "+a,c,b,e)},addJMCounter:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.jmSample(c,"count",g,h)}.bind(this))},addJMCycles:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.jmSample(c,"cycles",g,h)}.bind(this))},tilerSample:function(a,c,b,e){return this.hwcSample("mali:tiler","Tiler: "+a,c,b,e)},addTilerCounter:function(a,
c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.tilerSample(c,"count",g,h)}.bind(this))},addTilerCycles:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.tilerSample(c,"cycles",g,h)}.bind(this))},fragSample:function(a,c,b,e){return this.hwcSample("mali:fragment","Fragment: "+a,c,b,e)},addFragCounter:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.fragSample(c,"count",g,h)}.bind(this))},addFragCycles:function(a,
c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.fragSample(c,"cycles",g,h)}.bind(this))},computeSample:function(a,c,b,e){return this.hwcSample("mali:compute","Compute: "+a,c,b,e)},addComputeCounter:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.computeSample(c,"count",g,h)}.bind(this))},addComputeCycles:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.computeSample(c,"cycles",g,h)}.bind(this))},addTripipeCycles:function(a,
c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.hwcSample("mali:shader","Tripipe: "+c,"cycles",g,h)}.bind(this))},arithSample:function(a,c,b,e){return this.hwcSample("mali:arith","Arith: "+a,c,b,e)},addArithCounter:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.arithSample(c,"count",g,h)}.bind(this))},addArithCycles:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.arithSample(c,"cycles",g,h)}.bind(this))},
addLSCounter:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.hwcSample("mali:ls","LS: "+c,"count",g,h)}.bind(this))},textureSample:function(a,c,b,e){return this.hwcSample("mali:texture","Texture: "+a,c,b,e)},addTexCounter:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.textureSample(c,"count",g,h)}.bind(this))},addLSCCounter:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.hwcSample("mali:lsc",
"LSC: "+c,"count",g,h)}.bind(this))},addAXICounter:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.hwcSample("mali:axi","AXI: "+c,"count",g,h)}.bind(this))},mmuSample:function(a,c,b,e){return this.hwcSample("mali:mmu","MMU: "+a,c,b,e)},addMMUCounter:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.mmuSample(c,"count",g,h)}.bind(this))},addMMUCycles:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.mmuSample(c,
"cycles",g,h)}.bind(this))},l2Sample:function(a,c,b,e){return this.hwcSample("mali:l2","L2: "+a,c,b,e)},addL2Counter:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.l2Sample(c,"count",g,h)}.bind(this))},addL2Cycles:function(a,c){this.importer.registerEventHandler(a,function(a,e,d,g,h){return this.l2Sample(c,"cycles",g,h)}.bind(this))}};c.register(d);return{MaliParser:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){c.call(this,a);a.registerEventHandler("mm_vmscan_kswapd_wake",d.prototype.kswapdWake.bind(this));a.registerEventHandler("mm_vmscan_kswapd_sleep",d.prototype.kswapdSleep.bind(this));a.registerEventHandler("mm_vmscan_direct_reclaim_begin",d.prototype.reclaimBegin.bind(this));a.registerEventHandler("mm_vmscan_direct_reclaim_end",d.prototype.reclaimEnd.bind(this))}var c=tv.e.importer.linux_perf.Parser,a=/nid=(\d+) order=(\d+)/,f=/order=(\d+) may_writepage=\d+ gfp_flags=(.+)/,
b=/nr_reclaimed=(\d+)/;d.prototype={__proto__:c.prototype,openAsyncSlice:function(a,b,c,d,f,m){c=this.importer.getOrCreateKernelThread(b+":"+c,d);a=new tv.c.trace_model.AsyncSlice(b,m,tv.c.getColorIdForGeneralPurposeString(m),a);a.startThread=c.thread;c.openAsyncSlices||(c.openAsyncSlices={});c.openAsyncSlices[f]=a},closeAsyncSlice:function(a,b,c,d,f,m){c=this.importer.getOrCreateKernelThread(b+":"+c,d);c.openAsyncSlices&&(d=c.openAsyncSlices[f])&&(d.duration=a-d.start,d.args=m,d.endThread=c.thread,
d.subSlices=[new tv.c.trace_model.Slice(b,d.title,d.colorId,d.start,d.args,d.duration)],c.thread.asyncSliceGroup.push(d),delete c.openAsyncSlices[f])},kswapdWake:function(b,c,d,f,l){b=a.exec(l.details);if(!b)return!1;parseInt(b[1]);b=parseInt(b[2]);d=this.importer.getOrCreateKernelThread("kswapd: "+l.threadName,d,d);d.openSliceTS?b>d.order&&(d.order=b):(d.openSliceTS=f,d.order=b);return!0},kswapdSleep:function(a,b,c,d,f){a=this.importer.getOrCreateKernelThread("kswapd: "+f.threadName,c,c);a.openSliceTS&&
(d=new tv.c.trace_model.Slice("",f.threadName,tv.b.ui.getColorIdForGeneralPurposeString(f.threadName),a.openSliceTS,{order:a.order},d-a.openSliceTS),a.thread.sliceGroup.pushSlice(d));a.openSliceTS=void 0;a.order=void 0;return!0},reclaimBegin:function(a,b,c,d,l){b=f.exec(l.details);if(!b)return!1;a=parseInt(b[1]);b=b[2];c=this.importer.getOrCreateKernelThread("direct reclaim: "+l.threadName,c,c);c.openSliceTS=d;c.order=a;c.gfp=b;return!0},reclaimEnd:function(a,c,d,f,l){a=b.exec(l.details);if(!a)return!1;
a=parseInt(a[1]);d=this.importer.getOrCreateKernelThread("direct reclaim: "+l.threadName,d,d);void 0!==d.openSliceTS&&(f=new tv.c.trace_model.Slice("","direct reclaim",tv.b.ui.getColorIdForGeneralPurposeString(l.threadName),d.openSliceTS,{order:d.order,gfp:d.gfp,nr_reclaimed:a},f-d.openSliceTS),d.thread.sliceGroup.pushSlice(f));d.openSliceTS=void 0;d.order=void 0;d.gfp=void 0;return!0}};c.register(d);return{MemReclaimParser:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){c.call(this,a);a.registerEventHandler("power_start",d.prototype.powerStartEvent.bind(this));a.registerEventHandler("power_frequency",d.prototype.powerFrequencyEvent.bind(this));a.registerEventHandler("cpu_frequency",d.prototype.cpuFrequencyEvent.bind(this));a.registerEventHandler("cpu_idle",d.prototype.cpuIdleEvent.bind(this))}var c=tv.e.importer.linux_perf.Parser;d.prototype={__proto__:c.prototype,cpuStateSlice:function(a,c,b,e){c=this.importer.getOrCreateCpu(c);
"1"!=b?this.importer.model.importWarning({type:"parse_error",message:"Don't understand power_start events of type "+b}):(b=c.getOrCreateCounter("","C-State"),0===b.numSeries&&b.addSeries(new tv.c.trace_model.CounterSeries("state",tv.b.ui.getColorIdForGeneralPurposeString(b.name+".state"))),b.series.forEach(function(b){b.addCounterSample(a,e)}))},cpuIdleSlice:function(a,c,b){c=this.importer.getOrCreateCpu(c).getOrCreateCounter("","C-State");0===c.numSeries&&c.addSeries(new tv.c.trace_model.CounterSeries("state",
tv.b.ui.getColorIdForGeneralPurposeString(c.name)));var e=4294967295!=b?b+1:0;c.series.forEach(function(b){b.addCounterSample(a,e)})},cpuFrequencySlice:function(a,c,b){c=this.importer.getOrCreateCpu(c).getOrCreateCounter("","Clock Frequency");0===c.numSeries&&c.addSeries(new tv.c.trace_model.CounterSeries("state",tv.b.ui.getColorIdForGeneralPurposeString(c.name+".state")));c.series.forEach(function(c){c.addCounterSample(a,b)})},powerStartEvent:function(a,c,b,e,d){a=/type=(\d+) state=(\d) cpu_id=(\d)+/.exec(d.details);
if(!a)return!1;c=parseInt(a[3]);b=parseInt(a[2]);this.cpuStateSlice(e,c,a[1],b);return!0},powerFrequencyEvent:function(a,c,b,e,d){c=/type=(\d+) state=(\d+) cpu_id=(\d)+/.exec(d.details);if(!c)return!1;a=parseInt(c[3]);c=parseInt(c[2]);this.cpuFrequencySlice(e,a,c);return!0},cpuFrequencyEvent:function(a,c,b,e,d){c=/state=(\d+) cpu_id=(\d)+/.exec(d.details);if(!c)return!1;a=parseInt(c[2]);c=parseInt(c[1]);this.cpuFrequencySlice(e,a,c);return!0},cpuIdleEvent:function(a,c,b,e,d){c=/state=(\d+) cpu_id=(\d)+/.exec(d.details);
if(!c)return!1;a=parseInt(c[2]);c=parseInt(c[1]);this.cpuIdleSlice(e,a,c);return!0}};c.register(d);return{PowerParser:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){c.call(this,a);a.registerEventHandler("sched_switch",d.prototype.schedSwitchEvent.bind(this));a.registerEventHandler("sched_wakeup",d.prototype.schedWakeupEvent.bind(this))}var c=tv.e.importer.linux_perf.Parser,a={},f=/prev_comm=(.+) prev_pid=(\d+) prev_prio=(\d+) prev_state=(\S\+?|\S\|\S) ==> next_comm=(.+) next_pid=(\d+) next_prio=(\d+)/;a.schedSwitchRE=f;var b=/comm=(.+) pid=(\d+) prio=(\d+) success=(\d+) target_cpu=(\d+)/;a.schedWakeupRE=
b;d.prototype={__proto__:c.prototype,schedSwitchEvent:function(a,b,c,d,l){var m=f.exec(l.details);if(!m)return!1;a=m[4];c=m[5];l=parseInt(m[6]);var m=parseInt(m[7]),n=this.importer.threadsByLinuxPid[l],n=n?n.userFriendlyName:c;this.importer.getOrCreateCpu(b).switchActiveThread(d,{stateWhenDescheduled:a},l,n,{comm:c,tid:l,prio:m});return!0},schedWakeupEvent:function(a,c,d,f,l){l=b.exec(l.details);if(!l)return!1;a=d;c=l[1];d=parseInt(l[2]);l=parseInt(l[3]);this.importer.markPidRunnable(f,d,c,l,a);return!0}};
c.register(d);return{SchedParser:d,_SchedParserTestExports:a}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){c.call(this,a);a.registerEventHandler("sync_timeline",d.prototype.timelineEvent.bind(this));a.registerEventHandler("sync_wait",d.prototype.syncWaitEvent.bind(this));a.registerEventHandler("sync_pt",d.prototype.syncPtEvent.bind(this));this.model_=a.model_}var c=tv.e.importer.linux_perf.Parser,a=/name=(\S+) value=(\S*)/,f=/(\S+) name=(\S+) state=(\d+)/,b=/name=(\S+) value=(\S*)/;d.prototype={__proto__:c.prototype,timelineEvent:function(b,
c,d,f,l){b=a.exec(l.details);if(!b)return!1;c=this.importer.getOrCreatePseudoThread(b[1]);void 0!==c.lastActiveTs&&(d=f-c.lastActiveTs,l=c.lastActiveValue,void 0==l&&(l=" "),d=new tv.c.trace_model.Slice("",l,tv.b.ui.getColorIdForGeneralPurposeString(l),c.lastActiveTs,{},d),c.thread.sliceGroup.pushSlice(d));c.lastActiveTs=f;c.lastActiveValue=b[2];return!0},syncWaitEvent:function(a,b,c,d,l){a=f.exec(l.details);if(!a||void 0===l.tgid)return!1;b=parseInt(l.tgid);c=this.model_.getOrCreateProcess(b).getOrCreateThread(c);
c.name=l.threadName;l=c.kernelSliceGroup;if(!l.isTimestampValidForBeginOrEnd(d))return this.model_.importWarning({type:"parse_error",message:"Timestamps are moving backward."}),!1;c='fence_wait("'+a[2]+'")';if("begin"==a[1])l.beginSlice(null,c,d,{"Start state":a[3]});else if("end"==a[1])0<l.openSliceCount&&l.endSlice(d);else return!1;return!0},syncPtEvent:function(a,c,d,f,l){return b.exec(l.details)?!0:!1}};c.register(d);return{SyncParser:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){c.call(this,a);a.registerEventHandler("workqueue_execute_start",d.prototype.executeStartEvent.bind(this));a.registerEventHandler("workqueue_execute_end",d.prototype.executeEndEvent.bind(this));a.registerEventHandler("workqueue_queue_work",d.prototype.executeQueueWork.bind(this));a.registerEventHandler("workqueue_activate_work",d.prototype.executeActivateWork.bind(this))}var c=tv.e.importer.linux_perf.Parser,a=/work struct (.+): function (\S+)/,
f=/work struct (.+)/;d.prototype={__proto__:c.prototype,executeStartEvent:function(b,c,d,f,h){b=a.exec(h.details);if(!b)return!1;d=this.importer.getOrCreateKernelThread(h.threadName,d,d);d.openSliceTS=f;d.openSlice=b[2];return!0},executeEndEvent:function(a,c,d,g,h){if(!f.exec(h.details))return!1;a=this.importer.getOrCreateKernelThread(h.threadName,d,d);a.openSlice&&(g=new tv.c.trace_model.Slice("",a.openSlice,tv.b.ui.getColorIdForGeneralPurposeString(a.openSlice),a.openSliceTS,{},g-a.openSliceTS),
a.thread.sliceGroup.pushSlice(g));a.openSlice=void 0;return!0},executeQueueWork:function(a,c,d,f,h){return!0},executeActivateWork:function(a,c,d,f,h){return!0}};c.register(d);return{WorkqueueParser:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(c){a.call(this,c);c.registerEventHandler("tracing_mark_write:android",d.prototype.traceMarkWriteAndroidEvent.bind(this));c.registerEventHandler("0:android",d.prototype.traceMarkWriteAndroidEvent.bind(this));this.model_=c.model_;this.ppids_={}}function c(a){var b={};if(a){a=a.split(";");for(var c=0;c<a.length;++c){var d=a[c].split("=");d[0]&&(b[d.shift()]=d.join("="))}}return b}var a=tv.e.importer.linux_perf.Parser;d.prototype={__proto__:a.prototype,
openAsyncSlice:function(a,b,c,d,g,h){g=new (tv.c.trace_model.AsyncSlice.getConstructor(b,c))(b,c,tv.b.ui.getColorIdForGeneralPurposeString(c),g,h);g.id=d;g.startThread=a;this.openAsyncSlices||(this.openAsyncSlices={});this.openAsyncSlices[b+":"+c+":"+d]=g},closeAsyncSlice:function(a,b,c,d,g,h){if(this.openAsyncSlices&&(b=b+":"+c+":"+d,c=this.openAsyncSlices[b])){for(var l in h)void 0!==c.args[l]&&this.model_.importWarning({type:"parse_error",message:"Both the S and F events of "+c.title+" provided values for argument "+
l+". The value of the F event will be used."}),c.args[l]=h[l];c.endThread=a;c.duration=g-c.start;c.startThread.asyncSliceGroup.push(c);c.subSlices=[new tv.c.trace_model.Slice(c.category,c.title,c.colorId,c.start,c.args,c.duration)];delete this.openAsyncSlices[b]}},traceMarkWriteAndroidEvent:function(a,b,d,k,g){b=g.details.split("|");switch(b[0]){case "B":var h=parseInt(b[1]),l=b[2];a=c(b[3]);b=b[4];void 0===b&&(b="android");var m=this.model_.getOrCreateProcess(h).getOrCreateThread(d);m.name=g.threadName;
if(!m.sliceGroup.isTimestampValidForBeginOrEnd(k))return this.model_.importWarning({type:"parse_error",message:"Timestamps are moving backward."}),!1;this.ppids_[d]=h;m.sliceGroup.beginSlice(b,l,k,a);break;case "E":h=this.ppids_[d];if(void 0===h)break;m=this.model_.getOrCreateProcess(h).getOrCreateThread(d);if(!m.sliceGroup.openSliceCount)break;d=m.sliceGroup.endSlice(k);a=c(b[3]);for(l in a)void 0!==d.args[l]&&this.model_.importWarning({type:"parse_error",message:"Both the B and E events of "+d.title+
" provided values for argument "+l+". The value of the E event will be used."}),d.args[l]=a[l];break;case "C":var h=parseInt(b[1]),l=b[2],n=parseInt(b[3]);b=b[4];void 0===b&&(b="android");d=this.model_.getOrCreateProcess(h).getOrCreateCounter(b,l);0===d.numSeries&&d.addSeries(new tv.c.trace_model.CounterSeries(n,tv.b.ui.getColorIdForGeneralPurposeString(d.name+".value")));d.series.forEach(function(a){a.addCounterSample(k,n)});break;case "S":var h=parseInt(b[1]),l=b[2],p=parseInt(b[3]);a=c(b[4]);b=
b[5];void 0===b&&(b="android");m=this.model_.getOrCreateProcess(h).getOrCreateThread(d);m.name=g.threadName;this.ppids_[d]=h;this.openAsyncSlice(m,b,l,p,k,a);break;case "F":h=parseInt(b[1]);l=b[2];p=parseInt(b[3]);a=c(b[4]);b=b[5];void 0===b&&(b="android");m=this.model_.getOrCreateProcess(h).getOrCreateThread(d);m.name=g.threadName;this.ppids_[d]=h;this.closeAsyncSlice(m,b,l,p,k,a);break;default:return!1}return!0}};a.register(d);return{AndroidParser:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a){c.call(this,a);a.registerEventHandler("graph_ent",d.prototype.traceKernelFuncEnterEvent.bind(this));a.registerEventHandler("graph_ret",d.prototype.traceKernelFuncReturnEvent.bind(this));this.model_=a.model_;this.ppids_={}}var c=tv.e.importer.linux_perf.Parser,a=/func=(.+)/;d.prototype={__proto__:c.prototype,traceKernelFuncEnterEvent:function(c,b,d,k,g){c=a.exec(g.details);if(!c||void 0===g.tgid)return!1;b=parseInt(g.tgid);c=c[1];d=this.model_.getOrCreateProcess(b).getOrCreateThread(d);
d.name=g.threadName;g=d.kernelSliceGroup;if(!g.isTimestampValidForBeginOrEnd(k))return this.model_.importWarning({type:"parse_error",message:"Timestamps are moving backward."}),!1;g.beginSlice(null,c,k,{});return!0},traceKernelFuncReturnEvent:function(a,b,c,d,g){if(void 0===g.tgid)return!1;a=parseInt(g.tgid);c=this.model_.getOrCreateProcess(a).getOrCreateThread(c);c.name=g.threadName;g=c.kernelSliceGroup;if(!g.isTimestampValidForBeginOrEnd(d))return this.model_.importWarning({type:"parse_error",message:"Timestamps are moving backward."}),
!1;0<g.openSliceCount&&g.endSlice(d);return!0}};c.register(d);return{KernelFuncParser:d}});"use strict";
tv.exportTo("tv.c.importer",function(){function d(c){this.lines_=c.split("\n");this.curLine_=0;this.savedLines_=void 0}d.prototype={advanceToLineMatching:function(c){for(;this.curLine_<this.lines_.length;this.curLine_++){var a=this.lines_[this.curLine_];void 0!==this.savedLines_&&this.savedLines_.push(a);if(c.test(a))return!0}return!1},get curLineNumber(){return this.curLine_},beginSavingLines:function(){this.savedLines_=[]},endSavingLinesAndGetResult:function(){var c=this.savedLines_;this.savedLines_=
void 0;return c}};return{SimpleLineReader:d}});"use strict";
tv.exportTo("tv.e.importer.linux_perf",function(){function d(a,b){this.importPriority=2;this.model_=a;this.events_=b;this.clockSyncRecords_=[];this.wakeups_=[];this.kernelThreadStates_={};this.buildMapFromLinuxPidsToThreads();this.lines_=[];this.pseudoThreadCounter=1;this.parsers_=[];this.eventHandlers_={}}function c(a){return"{"==a[0]?!1:b.test(a)?e:k.test(a)?g:h.test(a)?l:null}var a=tv.c.importer.Importer,f={},b=/^\s*(.+)-(\d+)\s+\(\s*(\d+|-+)\)\s\[(\d+)\]\s+[dX.][N.][Hhs.][0-9a-f.]\s+(\d+\.\d+):\s+(\S+):\s(.*)$/,e=
function(a){a=b.exec(a);if(!a)return a;var c=a[3];"-"===c[0]&&(c=void 0);return{threadName:a[1],pid:a[2],tgid:c,cpuNumber:a[4],timestamp:a[5],eventName:a[6],details:a[7]}};f.lineParserWithTGID=e;var k=/^\s*(.+)-(\d+)\s+\[(\d+)\]\s+[dX.][N.][Hhs.][0-9a-f.]\s+(\d+\.\d+):\s+(\S+):\s(.*)$/,g=function(a){return(a=k.exec(a))?{threadName:a[1],pid:a[2],cpuNumber:a[3],timestamp:a[4],eventName:a[5],details:a[6]}:a};f.lineParserWithIRQInfo=g;var h=/^\s*(.+)-(\d+)\s+\[(\d+)\]\s*(\d+\.\d+):\s+(\S+):\s(.*)$/,l=
function(a){return(a=h.exec(a))?{threadName:a[1],pid:a[2],cpuNumber:a[3],timestamp:a[4],eventName:a[5],details:a[6]}:a};f.lineParserWithLegacyFmt=l;var m=/trace_event_clock_sync: parent_ts=(\d+\.?\d*)/;f.traceEventClockSyncRE=m;f.autoDetectLineParser=c;d.canImport=function(a){if(!("string"===typeof a||a instanceof String))return!1;if(d._extractEventsFromSystraceHTML(a,!1).ok||/^# tracer:/.test(a))return!0;var b=/^(.+)\n/.exec(a);b&&(a=b[1]);return c(a)?!0:!1};d._extractEventsFromSystraceHTML=function(a,
b){function c(a,b){return-1===a.indexOf(b,a.length-b.length)?a:a.substring(a,a.length-b.length)}var d={ok:!1};void 0===b&&(b=!0);if(0==/^<!DOCTYPE HTML>/.test(a))return d;var e=new tv.c.importer.SimpleLineReader(a);if(!e.advanceToLineMatching(/^ <script>$/)||!e.advanceToLineMatching(/^ var linuxPerfData = "\\$/))return d;var f=e.curLineNumber+1;e.beginSavingLines();if(!e.advanceToLineMatching(/^ <\/script>$/))return d;var g=e.endSavingLinesAndGetResult(),g=g.slice(1,g.length-1);if(!e.advanceToLineMatching(/^<\/body>$/)||
!e.advanceToLineMatching(/^<\/html>$/))return d;e=[];if(b)for(var h=0;h<g.length;h++){var k=g[h],k=c(k,"\\n\\");e.push(k)}else e=[g[g.length-1]];g=e[e.length-1];h=c(g,'\\n";');if(h==g)return d;e[e.length-1]=h;return{ok:!0,lines:b?e:void 0,events_begin_at_line:f}};d.prototype={__proto__:a.prototype,get model(){return this.model_},buildMapFromLinuxPidsToThreads:function(){this.threadsByLinuxPid={};this.model_.getAllThreads().forEach(function(a){this.threadsByLinuxPid[a.tid]=a}.bind(this))},getOrCreateCpu:function(a){return this.model_.kernel.getOrCreateCpu(a)},
getOrCreateKernelThread:function(a,b,c){this.kernelThreadStates_[a]||(c=this.model_.getOrCreateProcess(b).getOrCreateThread(c),c.name=a,this.kernelThreadStates_[a]={pid:b,thread:c,openSlice:void 0,openSliceTS:void 0},this.threadsByLinuxPid[b]=c);return this.kernelThreadStates_[a]},getOrCreatePseudoThread:function(a){var b=this.kernelThreadStates_[a];b||(b=this.getOrCreateKernelThread(a,0,this.pseudoThreadCounter),this.pseudoThreadCounter++);return b},importEvents:function(a){this.parsers_=this.createParsers_();
this.registerDefaultHandlers_();this.parseLines();this.importClockSyncRecords();a=this.computeTimeTransform(a);void 0===a?this.model_.importWarning({type:"clock_sync",message:"Cannot import kernel trace without a clock sync."}):(this.importCpuData(a),this.buildMapFromLinuxPidsToThreads(),this.buildPerThreadCpuSlicesFromCpuState(),this.computeCpuTimestampsForSlicesAsNeeded())},buildPerThreadCpuSlicesFromCpuState:function(){for(var a in this.model_.kernel.cpus)for(var b=this.model_.kernel.cpus[a],c=
0;c<b.slices.length;c++){var d=b.slices[c],e=this.threadsByLinuxPid[d.args.tid];e&&(d.threadThatWasRunning=e,e.tempCpuSlices||(e.tempCpuSlices=[]),e.tempCpuSlices.push(d))}for(c in this.wakeups_)if(a=this.wakeups_[c],e=this.threadsByLinuxPid[a.tid])e.tempWakeups=e.tempWakeups||[],e.tempWakeups.push(a);var c=tv.b.ui.getColorIdForReservedName,f=c("thread_state_running"),g=c("thread_state_runnable"),h=c("thread_state_sleeping"),k=c("thread_state_iowait"),l=c("thread_state_unknown");this.model_.getAllThreads().forEach(function(a){if(void 0!==
a.tempCpuSlices){var b=a.tempCpuSlices;delete a.tempCpuSlices;b.sort(function(a,b){return a.start-b.start});var c=a.tempWakeups||[];delete a.tempWakeups;c.sort(function(a,b){return a.ts-b.ts});var d=[];if(b.length){var e=b[0];if(c.length&&c[0].ts<e.start){var n=c.shift();d.push(new tv.c.trace_model.ThreadTimeSlice(a,"","Runnable",g,n.ts,{"wakeup from tid":n.fromTid},e.start-n.ts))}var m=new tv.c.trace_model.ThreadTimeSlice(a,"","Running",f,e.start,{},e.duration);m.cpuOnWhichThreadWasRunning=e.cpu;
d.push(m)}n=void 0;for(e=1;e<b.length;e++){for(var p=b[e-1],u=b[e],v=u.start-p.end;c.length&&c[0].ts<u.start;)m=c.shift(),void 0===n&&m.ts>p.end&&(n=m);m=function(b,c){void 0!==n&&(v=n.ts-p.end);d.push(new tv.c.trace_model.ThreadTimeSlice(a,"",b,c,p.end,{},v));void 0!==n&&(d.push(new tv.c.trace_model.ThreadTimeSlice(a,"","Runnable",g,n.ts,{"wakeup from tid":n.fromTid},u.start-n.ts)),n=void 0)};"S"==p.args.stateWhenDescheduled?m("Sleeping",h):"R"==p.args.stateWhenDescheduled||"R+"==p.args.stateWhenDescheduled?
d.push(new tv.c.trace_model.ThreadTimeSlice(a,"","Runnable",g,p.end,{},v)):"D"==p.args.stateWhenDescheduled?m("Uninterruptible Sleep",k):"T"==p.args.stateWhenDescheduled?d.push(new tv.c.trace_model.ThreadTimeSlice(a,"","__TASK_STOPPED",k,p.end,{},v)):"t"==p.args.stateWhenDescheduled?d.push(new tv.c.trace_model.ThreadTimeSlice(a,"","debug",k,p.end,{},v)):"Z"==p.args.stateWhenDescheduled?d.push(new tv.c.trace_model.ThreadTimeSlice(a,"","Zombie",k,p.end,{},v)):"X"==p.args.stateWhenDescheduled?d.push(new tv.c.trace_model.ThreadTimeSlice(a,
"","Exit Dead",k,p.end,{},v)):"x"==p.args.stateWhenDescheduled?d.push(new tv.c.trace_model.ThreadTimeSlice(a,"","Task Dead",k,p.end,{},v)):"K"==p.args.stateWhenDescheduled?d.push(new tv.c.trace_model.ThreadTimeSlice(a,"","Wakekill",k,p.end,{},v)):"W"==p.args.stateWhenDescheduled?d.push(new tv.c.trace_model.ThreadTimeSlice(a,"","Waking",k,p.end,{},v)):"D|K"==p.args.stateWhenDescheduled?m("Uninterruptible Sleep | WakeKill",k):"D|W"==p.args.stateWhenDescheduled?m("Uninterruptible Sleep | Waking",k):
(d.push(new tv.c.trace_model.ThreadTimeSlice(a,"","UNKNOWN",l,p.end,{},v)),this.model_.importWarning({type:"parse_error",message:"Unrecognized sleep state: "+p.args.stateWhenDescheduled}));m=new tv.c.trace_model.ThreadTimeSlice(a,"","Running",f,u.start,{},u.duration);m.cpuOnWhichThreadWasRunning=p.cpu;d.push(m)}a.timeSlices=d}},this)},computeCpuTimestampsForSlicesAsNeeded:function(){},computeTimeTransform:function(a){if(0==this.clockSyncRecords_.length)return a?void 0:0;a=this.clockSyncRecords_[0];
return 0==a.parentTS||a.parentTS==a.perfTS?0:a.parentTS-a.perfTS},createParsers_:function(){return tv.e.importer.linux_perf.Parser.getAllRegisteredTypeInfos().map(function(a){return new a.constructor(this)},this)},registerDefaultHandlers_:function(){this.registerEventHandler("tracing_mark_write",d.prototype.traceMarkingWriteEvent.bind(this));this.registerEventHandler("0",d.prototype.traceMarkingWriteEvent.bind(this));this.registerEventHandler("tracing_mark_write:trace_event_clock_sync",function(){return!0});
this.registerEventHandler("0:trace_event_clock_sync",function(){return!0})},registerEventHandler:function(a,b){this.eventHandlers_[a]=b},markPidRunnable:function(a,b,c,d,e){this.wakeups_.push({ts:a,tid:b,fromTid:e})},traceClockSyncEvent:function(a,b,c,d,e){a=/parent_ts=(\d+\.?\d*)/.exec(e.details);if(!a)return!1;this.clockSyncRecords_.push({perfTS:d,parentTS:1E3*a[1]});return!0},traceMarkingWriteEvent:function(a,b,c,d,e,f){e.details=e.details.replace(/\\n.*$/,"");var g=/^\s*(\w+):\s*(.*)$/.exec(e.details);
if(g)e.subEventName=g[1],e.details=g[2];else if(g=e.details.substring(0,2),"B|"==g||"E"==g||"E|"==g||"X|"==g||"C|"==g||"S|"==g||"F|"==g)e.subEventName="android";else return!1;a=a+":"+e.subEventName;g=this.eventHandlers_[a];return g?g(a,b,c,d,e,f):(this.model_.importWarning({type:"parse_error",message:"Unknown trace_marking_write event "+a}),!0)},importClockSyncRecords:function(){this.forEachLine(function(a,b,c,d,e){a=b.eventName;"tracing_mark_write"!==a&&"0"!==a||!m.exec(b.details)||this.traceClockSyncEvent(a,
c,d,e,b)}.bind(this))},importCpuData:function(a){this.forEachLine(function(b,c,d,e,f){var g=c.eventName,h=this.eventHandlers_[g];h?(f+=a,h(g,d,e,f,c)||this.model_.importWarning({type:"parse_error",message:"Malformed "+g+" event ("+b+")"})):this.model_.importWarning({type:"parse_error",message:"Unknown event "+g+" ("+b+")"})}.bind(this))},parseLines:function(){for(var a=d._extractEventsFromSystraceHTML(this.events_,!0),a=a.ok?a.lines:this.events_.split("\n"),b=null,e=0;e<a.length;++e){var f=a[e];if(0!=
f.length&&!/^#/.test(f)){if(null==b&&(b=c(f),null==b)){this.model_.importWarning({type:"parse_error",message:"Cannot parse line: "+f});continue}var g=b(f);g?this.lines_.push([f,g,parseInt(g.cpuNumber),parseInt(g.pid),1E3*parseFloat(g.timestamp)]):this.model_.importWarning({type:"parse_error",message:"Unrecognized line: "+f})}}},forEachLine:function(a){for(var b=0;b<this.lines_.length;++b)a.apply(this,this.lines_[b])}};tv.c.importer.Importer.register(d);return{LinuxPerfImporter:d,_LinuxPerfImporterTestExports:f}});
</script>