From d6d06cc324d44edc16d024bca41a8e0bdc577a8e Mon Sep 17 00:00:00 2001 From: Laurentiu Ghiur Date: Fri, 7 Aug 2020 09:54:22 +0300 Subject: [PATCH] V2 panel fix (#148) * fix panel blank spacing * fixed toggle color on dark background --- lib/index.css | 2 +- lib/index.js.map | 2 +- lib/sass/components/Panel/sass/Panel.scss | 12 ++++++------ lib/sass/components/Toggle/sass/Toggle.scss | 4 ++++ lib/sass/components/Toggle/sass/variables.scss | 2 +- lib/tyk-ui.css | 2 +- src/components/Panel/sass/Panel.scss | 12 ++++++------ src/components/Toggle/sass/Toggle.scss | 4 ++++ src/components/Toggle/sass/variables.scss | 2 +- tyk-ui-styleguide | 2 +- 10 files changed, 26 insertions(+), 18 deletions(-) diff --git a/lib/index.css b/lib/index.css index aa9a9c84..c176c7f1 100644 --- a/lib/index.css +++ b/lib/index.css @@ -1,4 +1,4 @@ a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}.container{max-width:1240px;margin:0 auto}.container,.container-fluid{padding:0 20px}.tyk-row{display:flex;box-sizing:border-box;list-style:none;flex:0 1 auto;flex-direction:row;flex-wrap:wrap;margin-left:-20px;width:calc(100% + 20px)}.tyk-row.no-gutters{margin:0}.tyk-row.tyk-row--gutterless{margin:0;width:100%}.tyk-row.tyk-row--reverse{flex-direction:row-reverse}.tyk-col{max-width:calc(100% - 20px);box-sizing:border-box;flex:0 0 auto;flex-grow:1;flex-basis:calc(100% - 20px);margin-left:20px;width:calc(100% - 20px)}.tyk-col:last-child{margin-right:0}.tyk-row--gutterless .tyk-col{margin:0}.tyk-col.tyk-col--reverse{flex-direction:column-reverse}.tyk-col.tyk-col--align-bottom{align-self:flex-end}.tyk-col.tyk-col--align-top{align-self:flex-start}.tyk-col.tyk-col--align-center{align-self:center}.tyk-col.tyk-col--align-baseline{align-self:baseline}.tyk-col.tyk-col--align-stretch{align-self:stretch}@media screen and (min-width:1248px){.tyk-col--lg-0{flex-basis:-20px;max-width:-20px}.tyk-col--offset-lg-0{margin-left:0}.tyk-col--lg-1{flex-basis:calc(8.33333% - 20px);max-width:calc(8.33333% - 20px)}.tyk-col--offset-lg-1{margin-left:8.33333%}.tyk-col--lg-2{flex-basis:calc(16.66667% - 20px);max-width:calc(16.66667% - 20px)}.tyk-col--offset-lg-2{margin-left:16.66667%}.tyk-col--lg-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-lg-3{margin-left:25%}.tyk-col--lg-4{flex-basis:calc(33.33333% - 20px);max-width:calc(33.33333% - 20px)}.tyk-col--offset-lg-4{margin-left:33.33333%}.tyk-col--lg-5{flex-basis:calc(41.66667% - 20px);max-width:calc(41.66667% - 20px)}.tyk-col--offset-lg-5{margin-left:41.66667%}.tyk-col--lg-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-lg-6{margin-left:50%}.tyk-col--lg-7{flex-basis:calc(58.33333% - 20px);max-width:calc(58.33333% - 20px)}.tyk-col--offset-lg-7{margin-left:58.33333%}.tyk-col--lg-8{flex-basis:calc(66.66667% - 20px);max-width:calc(66.66667% - 20px)}.tyk-col--offset-lg-8{margin-left:66.66667%}.tyk-col--lg-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-lg-9{margin-left:75%}.tyk-col--lg-10{flex-basis:calc(83.33333% - 20px);max-width:calc(83.33333% - 20px)}.tyk-col--offset-lg-10{margin-left:83.33333%}.tyk-col--lg-11{flex-basis:calc(91.66667% - 20px);max-width:calc(91.66667% - 20px)}.tyk-col--offset-lg-11{margin-left:91.66667%}.tyk-col--lg-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-lg-12{margin-left:100%}}@media screen and (min-width:1024px) and (max-width:1247px){.tyk-col--md-0{flex-basis:-20px;max-width:-20px}.tyk-col--offset-md-0{margin-left:0}.tyk-col--md-1{flex-basis:calc(8.33333% - 20px);max-width:calc(8.33333% - 20px)}.tyk-col--offset-md-1{margin-left:8.33333%}.tyk-col--md-2{flex-basis:calc(16.66667% - 20px);max-width:calc(16.66667% - 20px)}.tyk-col--offset-md-2{margin-left:16.66667%}.tyk-col--md-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-md-3{margin-left:25%}.tyk-col--md-4{flex-basis:calc(33.33333% - 20px);max-width:calc(33.33333% - 20px)}.tyk-col--offset-md-4{margin-left:33.33333%}.tyk-col--md-5{flex-basis:calc(41.66667% - 20px);max-width:calc(41.66667% - 20px)}.tyk-col--offset-md-5{margin-left:41.66667%}.tyk-col--md-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-md-6{margin-left:50%}.tyk-col--md-7{flex-basis:calc(58.33333% - 20px);max-width:calc(58.33333% - 20px)}.tyk-col--offset-md-7{margin-left:58.33333%}.tyk-col--md-8{flex-basis:calc(66.66667% - 20px);max-width:calc(66.66667% - 20px)}.tyk-col--offset-md-8{margin-left:66.66667%}.tyk-col--md-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-md-9{margin-left:75%}.tyk-col--md-10{flex-basis:calc(83.33333% - 20px);max-width:calc(83.33333% - 20px)}.tyk-col--offset-md-10{margin-left:83.33333%}.tyk-col--md-11{flex-basis:calc(91.66667% - 20px);max-width:calc(91.66667% - 20px)}.tyk-col--offset-md-11{margin-left:91.66667%}.tyk-col--md-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-md-12{margin-left:100%}}@media screen and (min-width:769px) and (max-width:1023px){.tyk-col--sm-0{flex-basis:-20px;max-width:-20px}.tyk-col--offset-sm-0{margin-left:0}.tyk-col--sm-1{flex-basis:calc(8.33333% - 20px);max-width:calc(8.33333% - 20px)}.tyk-col--offset-sm-1{margin-left:8.33333%}.tyk-col--sm-2{flex-basis:calc(16.66667% - 20px);max-width:calc(16.66667% - 20px)}.tyk-col--offset-sm-2{margin-left:16.66667%}.tyk-col--sm-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-sm-3{margin-left:25%}.tyk-col--sm-4{flex-basis:calc(33.33333% - 20px);max-width:calc(33.33333% - 20px)}.tyk-col--offset-sm-4{margin-left:33.33333%}.tyk-col--sm-5{flex-basis:calc(41.66667% - 20px);max-width:calc(41.66667% - 20px)}.tyk-col--offset-sm-5{margin-left:41.66667%}.tyk-col--sm-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-sm-6{margin-left:50%}.tyk-col--sm-7{flex-basis:calc(58.33333% - 20px);max-width:calc(58.33333% - 20px)}.tyk-col--offset-sm-7{margin-left:58.33333%}.tyk-col--sm-8{flex-basis:calc(66.66667% - 20px);max-width:calc(66.66667% - 20px)}.tyk-col--offset-sm-8{margin-left:66.66667%}.tyk-col--sm-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-sm-9{margin-left:75%}.tyk-col--sm-10{flex-basis:calc(83.33333% - 20px);max-width:calc(83.33333% - 20px)}.tyk-col--offset-sm-10{margin-left:83.33333%}.tyk-col--sm-11{flex-basis:calc(91.66667% - 20px);max-width:calc(91.66667% - 20px)}.tyk-col--offset-sm-11{margin-left:91.66667%}.tyk-col--sm-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-sm-12{margin-left:100%}}@media screen and (max-width:768px){.tyk-col--xs-0{flex-basis:-20px;max-width:-20px}.tyk-col--offset-xs-0{margin-left:0}.tyk-col--xs-1{flex-basis:calc(8.33333% - 20px);max-width:calc(8.33333% - 20px)}.tyk-col--offset-xs-1{margin-left:8.33333%}.tyk-col--xs-2{flex-basis:calc(16.66667% - 20px);max-width:calc(16.66667% - 20px)}.tyk-col--offset-xs-2{margin-left:16.66667%}.tyk-col--xs-3{flex-basis:calc(25% - 20px);max-width:calc(25% - 20px)}.tyk-col--offset-xs-3{margin-left:25%}.tyk-col--xs-4{flex-basis:calc(33.33333% - 20px);max-width:calc(33.33333% - 20px)}.tyk-col--offset-xs-4{margin-left:33.33333%}.tyk-col--xs-5{flex-basis:calc(41.66667% - 20px);max-width:calc(41.66667% - 20px)}.tyk-col--offset-xs-5{margin-left:41.66667%}.tyk-col--xs-6{flex-basis:calc(50% - 20px);max-width:calc(50% - 20px)}.tyk-col--offset-xs-6{margin-left:50%}.tyk-col--xs-7{flex-basis:calc(58.33333% - 20px);max-width:calc(58.33333% - 20px)}.tyk-col--offset-xs-7{margin-left:58.33333%}.tyk-col--xs-8{flex-basis:calc(66.66667% - 20px);max-width:calc(66.66667% - 20px)}.tyk-col--offset-xs-8{margin-left:66.66667%}.tyk-col--xs-9{flex-basis:calc(75% - 20px);max-width:calc(75% - 20px)}.tyk-col--offset-xs-9{margin-left:75%}.tyk-col--xs-10{flex-basis:calc(83.33333% - 20px);max-width:calc(83.33333% - 20px)}.tyk-col--offset-xs-10{margin-left:83.33333%}.tyk-col--xs-11{flex-basis:calc(91.66667% - 20px);max-width:calc(91.66667% - 20px)}.tyk-col--offset-xs-11{margin-left:91.66667%}.tyk-col--xs-12{flex-basis:calc(100% - 20px);max-width:calc(100% - 20px)}.tyk-col--offset-xs-12{margin-left:100%}}@font-face{font-family:OpenSans-Bold;src:url(fonts/OpenSans-Bold.woff2) format("woff2"),url(fonts/OpenSans-Bold.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:OpenSans-SemiBold;src:url(fonts/OpenSans-SemiBold.woff2) format("woff2"),url(fonts/OpenSans-SemiBold.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:OpenSans-Regular;src:url(fonts/OpenSans-Regular.woff2) format("woff2"),url(fonts/OpenSans-Regular.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:smoolthan_bold;src:url(fonts/smoolthan_bold-webfont.woff2) format("woff2"),url(fonts/smoolthan_bold-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:smoolthan_medium;src:url(fonts/smoolthan_medium-webfont.woff2) format("woff2"),url(fonts/smoolthan_medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:smoolthan_regular;src:url(fonts/smoolthan_regular-webfont.woff2) format("woff2"),url(fonts/smoolthan_regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:tykon;src:url(fonts/tykon.woff2) format("woff2"),url(fonts/tykon.woff) format("woff");font-weight:400;font-style:normal}/*! * Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-balance-scale:before{content:"\F24E"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-concierge-bell:before{content:"\F562"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-diagnoses:before{content:"\F470"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edit:before{content:"\F044"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-git:before{content:"\F1D3"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-handshake:before{content:"\F2B5"}.fa-hanukiah:before{content:"\F6E6"}.fa-hashtag:before{content:"\F292"}.fa-hat-wizard:before{content:"\F6E8"}.fa-haykal:before{content:"\F666"}.fa-hdd:before{content:"\F0A0"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hot-tub:before{content:"\F593"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-internet-explorer:before{content:"\F26B"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse-pointer:before{content:"\F245"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-nintendo-switch:before{content:"\F418"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-carry:before{content:"\F4CE"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-volume:before{content:"\F2A0"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-sass:before{content:"\F41E"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-simplybuilt:before{content:"\F215"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowflake:before{content:"\F2DC"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-swatchbook:before{content:"\F5C3"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet-paper:before{content:"\F71E"}.fa-toolbox:before{content:"\F552"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-train:before{content:"\F238"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-uikit:before{content:"\F403"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;src:url(fonts/fa-brands-400.eot);src:url(fonts/fa-brands-400.eot) format("embedded-opentype"),url(fonts/fa-brands-400.woff2) format("woff2"),url(fonts/fa-brands-400.woff) format("woff"),url(fonts/fa-brands-400.ttf) format("truetype"),url(fonts/fa-brands-400.svg) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;src:url(fonts/fa-regular-400.eot);src:url(fonts/fa-regular-400.eot) format("embedded-opentype"),url(fonts/fa-regular-400.woff2) format("woff2"),url(fonts/fa-regular-400.woff) format("woff"),url(fonts/fa-regular-400.ttf) format("truetype"),url(fonts/fa-regular-400.svg) format("svg")}.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;src:url(fonts/fa-solid-900.eot);src:url(fonts/fa-solid-900.eot) format("embedded-opentype"),url(fonts/fa-solid-900.woff2) format("woff2"),url(fonts/fa-solid-900.woff) format("woff"),url(fonts/fa-solid-900.ttf) format("truetype"),url(fonts/fa-solid-900.svg) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}.tykon:before{font-family:tykon!important;font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tykon-arrowdown:before{content:"a"}.tykon-arrowleft:before{content:"b"}.tykon-arrowright:before{content:"c"}.tykon-arrowup:before{content:"d"}.tykon-graph1:before{content:"g"}.tykon-graph2:before{content:"h"}.tykon-deployment:before{content:"n"}.tykon-team:before{content:"o"}.tykon-overview:before{content:"p"}.tykon-loadout:before{content:"q"}.tykon-entitlement:before{content:"r"}.tykon-users:before{content:"s"}.tykon-doublearrowdown:before{content:"e"}.tykon-arrowsort:before{content:"W"}.tykon-check:before{content:"V"}.tykon-copy:before{content:"C"}.tykon-delete:before{content:"U"}.tykon-download:before{content:"L"}.tykon-draft:before{content:"D"}.tykon-edit:before{content:"E"}.tykon-filter:before{content:"f"}.tykon-graphq2:before{content:"h"}.tykon-help:before{content:"?"}.tykon-label:before{content:"i"}.tykon-link:before{content:"R"}.tykon-lock1:before{content:"Y"}.tykon-lock2:before{content:"Z"}.tykon-notifications:before{content:"N"}.tykon-plus:before{content:"+"}.tykon-profile:before{content:"P"}.tykon-reload:before{content:"j"}.tykon-search:before{content:"O"}.tykon-select:before{content:"k"}.tykon-settings:before{content:"S"}.tykon-target:before{content:"l"}.tykon-undo:before{content:"m"}.tykon-warning:before{content:"!"}.tykon-x:before{content:"X"}h1,h2,h3,h4,h5,h6{margin-bottom:15px;font-family:smoolthan_medium;font-weight:500;color:#36364c}label{display:inline-block;max-width:100%;margin-bottom:5px;color:#36364c}h1{font-size:25px;line-height:30px}h2{font-size:20px;line-height:24px}h3{font-size:17px;line-height:23px}h4{font-size:16px;line-height:22px}h5{font-size:14px;line-height:19px}h6{font-size:12px;line-height:16px}label,p{font-size:14px;line-height:19px;font-family:OpenSans-regular}strong{font-family:OpenSans-Bold}a{cursor:pointer;color:#505071;font-family:OpenSans-regular}a.link--bold{font-family:OpenSans-Bold}a+a{margin-left:5px}label a,p a{font-size:14px;text-decoration:underline}.font-family-regular{font-family:OpenSans-regular}.font-family-medium{font-family:OpenSans-SemiBold}.font-family-bold{font-family:OpenSans-Bold}.heading-font-family-regular{font-family:smoolthan_regular}.heading-font-family-medium{font-family:smoolthan_medium}.heading-font-family-bold{font-family:smoolthan_bold}.text--primary{color:#a2a2cc}.text--danger{color:#ff6c7d}.text--info{color:#82bbc6}.text--medium{font-family:OpenSans-SemiBold}.text--bold{font-family:OpenSans-Bold}.text--uppercase{text-transform:uppercase}.text--ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}td.text-ellipsis{max-width:250px}.section-title{margin-bottom:5px}.section-title .tyk-icon{margin-left:5px}.sub-section-title{margin-bottom:5px;font-family:OpenSans-SemiBold;font-size:16px;line-height:22px}.sub-section-title .tyk-icon{margin-left:5px}.section-group-title{margin-bottom:5px;font-family:OpenSans-Bold;font-size:14px;line-height:19px;text-transform:uppercase}.section-group-title .tyk-icon{margin-left:5px}.right-align{text-align:right!important}.left-align{text-align:left!important}.center-align{text-align:center!important}.left{float:left!important}.right{float:right!important}.hide{display:none!important}.no-margin{margin:0!important}.no-margin-bottom{margin-bottom:0!important}.no-margin-top{margin-top:0!important}.no-margin-left,.no-margin-right{margin-right:0!important}.disabled-section{color:#c3c3e5}.top-buffer-large{margin-top:20px}.top-buffer-small{margin-top:5px}.top-buffer-medium{margin-top:10px}.bottom-buffer-large{margin-bottom:20px}.bottom-buffer-small{margin-bottom:5px}.bottom-buffer-medium{margin-bottom:10px}.right-buffer-large{margin-right:20px}.right-buffer-small{margin-right:5px}.right-buffer-medium{margin-right:10px}.left-buffer-large{margin-left:20px}.left-buffer-small{margin-left:5px}.left-buffer-medium{margin-left:10px}.word-wrap{word-wrap:break-word;word-break:break-all}.clear-left{clear:left}.flex-container{display:flex}.vertical-center-align{align-items:center}.right-align-controls{align-items:center;display:flex;margin-left:auto}.inline-label{margin-right:15px}.nowrap{white-space:nowrap}.tyk-form-section__title{font-size:16px;margin:5px 0 15px}.tyk-form-section__title--light{color:#43435b}.tyk-form-group{margin-bottom:15px}.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #ff6c7d;border-left-color:#ea4766;outline:none}.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control:focus,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:focus{border-left:2px solid;border-color:#ea4766;outline:none}.tyk-form-group label{font-family:OpenSans-SemiBold}.tyk-form-group--inline{align-items:stretch;display:flex;flex-wrap:nowrap}.tyk-form-group--inline .tyk-form-control__wrapper{flex:1}.tyk-form-group--inline label{display:flex;white-space:nowrap;margin-right:20px;margin-top:14px}.tyk-form-group--inline input,.tyk-form-group--inline select{display:flex}.tyk-form-group--inline .tyk-form-control__help-block{display:flex;margin-left:auto}.tyk-form-group--default{color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #c3c3e5;color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #c3c3e5;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--default.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-left:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--default.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-right:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--primary{color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #a2a2cc;color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #a2a2cc;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--primary.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-left:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--primary.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-right:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--success{color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #00d9ba;color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #00d9ba;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--success.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-left:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--success.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-right:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control{border-left:2px solid #ff6c7d}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus{border-left:2px solid #ff6c7d;outline:none}.tyk-form-group--rounded-corners .tyk-form-control{border-radius:18px}.tyk-form-group--addon-right input{border-right:0!important;padding-right:0}.tyk-form-group--addon-left input{border-left:0!important;padding-left:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right input{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right .tyk-input-group__addon{background:#fff;border-top-right-radius:18px;border-bottom-right-radius:18px;color:#505071}.tyk-form-group--rounded-corners.tyk-form-group--addon-left input{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0!important}.tyk-form-group--rounded-corners.tyk-form-group--addon-left .tyk-input-group__addon{background:#fff;border-top-left-radius:18px;border-bottom-left-radius:18px;color:#505071}.tyk-form-control__error-message{font-family:OpenSans-regular;font-size:12px;line-height:16px;margin-top:5px;padding:0 0 0 20px;position:relative}.tyk-form-control__error-message:before{content:"!";background:#ff6c7d;color:#fff;font-family:OpenSans-Bold;border-radius:8px;display:inline-block;margin-right:5px;padding:0 7px}.tyk-input-group{align-items:center;display:flex;outline:none}.tyk-input-group__addon{align-items:center;background-color:#fff;border:2px solid #c3c3e5;display:flex;height:39px;padding:10px 20px}.tyk-input-group__addon:first-child{border-right:0}.tyk-input-group__addon:last-child{border-left:0}.tyk-form-control{font-family:OpenSans-SemiBold;font-size:14px;line-height:19px;border:2px solid #c3c3e5;background-color:#fff;color:#505071;display:block;height:39px;padding:10px 20px;transition:all .2s linear;width:100%}.tyk-form-control[disabled]{background-color:#ededf9;cursor:not-allowed}.tyk-form-control[disabled] .tyk-input-group__addon{background-color:#ededf9}.tyk-form-control::placeholder{font-family:OpenSans-SemiBold;color:#a2a2cc}.tyk-form-control:focus{outline:none;border:2px solid #36364c}.tyk-form-control__help-block{color:#36364c;font-style:normal;font-family:OpenSans-regular;font-size:12px;line-height:16px;padding:0 0 0 20px;margin:5px 0 0}select{border-radius:0;-webkit-appearance:none}.inline-form-wrapper{align-items:center;display:flex;width:100%}.inline-form-wrapper .inline-form{width:100%}.inline-form-wrapper>button{margin-left:10px;margin-bottom:20px}.tyk-checkbox,.tyk-radio{align-items:center;display:flex;margin:10px 0}.tyk-checkbox label,.tyk-radio label{font-family:OpenSans-SemiBold}.tyk-checkbox input,.tyk-radio input{margin:0 5px 0 0}.tyk-checkbox--inline,.tyk-radio--inline{display:inline-flex;margin-left:15px}.tyk-checkbox--inline:first-child,.tyk-radio--inline:first-child{margin-left:0}.tyk-inline-form{align-items:center;display:flex;flex-wrap:wrap}.tyk-inline-form .tyk-form-group{flex:1;margin-left:20px;min-width:200px}.tyk-inline-form .tyk-form-group:first-child{margin-left:0}.tyk-inline-form>.tyk-button{margin-left:20px;margin-bottom:20px}.tyk-accordion__item-header>button,.tyk-accordion__trigger{background:none;border:none;cursor:pointer;display:flex;font-size:14px;outline:none;padding:15px;width:100%}.tyk-accordion__item-header>button .tyk-icon,.tyk-accordion__trigger .tyk-icon{margin-left:auto}.tyk-accordion__item{display:grid}.tyk-accordion__item--trigger-position-left{grid-template-columns:40px auto;grid-template-areas:"trigger header" "trigger content"}.tyk-accordion__item--trigger-position-right{grid-template-columns:auto 40px;grid-template-areas:"header trigger" "content trigger"}.tyk-accordion__item--trigger-in-header{grid-template-columns:auto;grid-template-areas:"header" "content"}.tyk-accordion__trigger-wrapper{grid-area:trigger;display:flex;align-items:flex-start;justify-content:center}.tyk-accordion__trigger-wrapper .tyk-icon{margin-left:auto;margin-right:auto}.tyk-accordion__item-header{grid-area:header}.tyk-accordion__trigger--disabled{color:#e1e1e1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger{align-items:center;display:flex}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>div{flex:1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>button{margin-left:auto;width:auto}.tyk-accordion__item-content{grid-area:content}.tyk-button{background-color:transparent;border:none;color:#fff;cursor:pointer;display:inline-block;font-family:OpenSans-Bold;text-align:center;text-transform:uppercase;text-decoration:none;transition:all .2s linear;user-select:none;vertical-align:middle;white-space:nowrap;padding:8px 23px;font-size:14px;line-height:22px;border-radius:20px}.tyk-button+.tyk-button,.tyk-button+.tyk-dropdown,.tyk-button+.tyk-toggle,.tyk-button i+span,.tyk-button span+i{margin-left:10px}.tyk-button.disabled{cursor:not-allowed;opacity:.7}.tyk-button:hover{color:#fff;text-decoration:none}.tyk-button:focus{outline:none}.tyk-button--white{background-color:#fff;color:#36364c;border:2px solid transparent}.tyk-button--white:hover{background-color:#43435b;color:#fff}.tyk-button--primary{background-color:#ededf9;color:#505071;border:2px solid #ededf9}.tyk-button--primary:hover{background-color:#c3c3e5;color:#505071}.tyk-button--primary-link{background-color:transparent;border-color:transparent;color:#a2a2cc}.tyk-button--primary-link:hover{background-color:transparent;color:#a2a2cc;text-decoration:underline}.tyk-button--primary-outline{border:2px solid #ededf9;background-color:#fff;color:#a2a2cc}.tyk-button--primary-outline:hover{background-color:#ededf9;color:#a2a2cc}.tyk-button--primary-outline.disabled{color:#ededf9}.tyk-button--primary-outline.disabled:hover{background-color:#fff;color:#ededf9}.tyk-button--primary-gradient{border-image:linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc) 0 round;background:transparent linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--primary-gradient:active,.tyk-button--primary-gradient:active:focus,.tyk-button--primary-gradient:hover{border-image:linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc) 0 round;background:transparent linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--primary-gradient:active.disabled,.tyk-button--primary-gradient:active:focus.disabled,.tyk-button--primary-gradient:hover.disabled{border-image:linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc) 0 round;background:transparent linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success{background-color:#00d9ba;color:#fff;border:2px solid #00d9ba}.tyk-button--success:hover{background-color:#00b798;color:#fff}.tyk-button--success-link{background-color:transparent;border-color:transparent;color:#00d9ba}.tyk-button--success-link:hover{background-color:transparent;color:#00d9ba;text-decoration:underline}.tyk-button--success-outline{border:2px solid #00d9ba;background-color:#fff;color:#00d9ba}.tyk-button--success-outline:hover{background-color:#00d9ba;color:#fff}.tyk-button--success-outline.disabled{color:#00d9ba}.tyk-button--success-outline.disabled:hover{background-color:#fff;color:#00d9ba}.tyk-button--success-gradient{border-image:linear-gradient(90deg,#00d9ba,#00b798,#00d9ba) 0 round;background:transparent linear-gradient(90deg,#00d9ba,#00b798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success-gradient:active,.tyk-button--success-gradient:active:focus,.tyk-button--success-gradient:hover{border-image:linear-gradient(90deg,#00d9ba,#00b798,#00d9ba) 0 round;background:transparent linear-gradient(90deg,#00d9ba,#00b798,#00d9ba);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--success-gradient:active.disabled,.tyk-button--success-gradient:active:focus.disabled,.tyk-button--success-gradient:hover.disabled{border-image:linear-gradient(90deg,#00d9ba,#00b798,#00d9ba) 0 round;background:transparent linear-gradient(90deg,#00d9ba,#00b798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger{background-color:#ff6c7d;color:#fff;border:2px solid #ff6c7d}.tyk-button--danger:hover{background-color:#ea4766;color:#fff}.tyk-button--danger-link{background-color:transparent;border-color:transparent;color:#ff6c7d}.tyk-button--danger-link:hover{background-color:transparent;color:#ff6c7d;text-decoration:underline}.tyk-button--danger-outline{border:2px solid #ff6c7d;background-color:#fff;color:#ff6c7d}.tyk-button--danger-outline:hover{background-color:#ff6c7d;color:#fff}.tyk-button--danger-outline.disabled{color:#ff6c7d}.tyk-button--danger-outline.disabled:hover{background-color:#fff;color:#ff6c7d}.tyk-button--danger-gradient{border-image:linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d) 0 round;background:transparent linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger-gradient:active,.tyk-button--danger-gradient:active:focus,.tyk-button--danger-gradient:hover{border-image:linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d) 0 round;background:transparent linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--danger-gradient:active.disabled,.tyk-button--danger-gradient:active:focus.disabled,.tyk-button--danger-gradient:hover.disabled{border-image:linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d) 0 round;background:transparent linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning{background-color:#d6b218;color:#fff;border:2px solid transparent}.tyk-button--warning:hover{background-color:#b49514;color:#fff}.tyk-button--warning-link{background-color:transparent;border-color:transparent;color:#d6b218}.tyk-button--warning-link:hover{background-color:transparent;color:#d6b218;text-decoration:underline}.tyk-button--warning-outline{border:2px solid #d6b218;background-color:#fff;color:#d6b218}.tyk-button--warning-outline:hover{background-color:#d6b218;color:#fff}.tyk-button--warning-outline.disabled{color:#d6b218}.tyk-button--warning-outline.disabled:hover{background-color:#fff;color:#d6b218}.tyk-button--warning-gradient{border-image:linear-gradient(90deg,#d6b218,#ffe885,#d6b218) 0 round;background:transparent linear-gradient(90deg,#d6b218,#ffe885,#d6b218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning-gradient:active,.tyk-button--warning-gradient:active:focus,.tyk-button--warning-gradient:hover{border-image:linear-gradient(90deg,#d6b218,#ffe885,#d6b218) 0 round;background:transparent linear-gradient(90deg,#d6b218,#ffe885,#d6b218);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--warning-gradient:active.disabled,.tyk-button--warning-gradient:active:focus.disabled,.tyk-button--warning-gradient:hover.disabled{border-image:linear-gradient(90deg,#d6b218,#ffe885,#d6b218) 0 round;background:transparent linear-gradient(90deg,#d6b218,#ffe885,#d6b218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--info{background-color:#82bbc6;color:#fff;border:2px solid #82bbc6}.tyk-button--info:hover{background-color:#68adba;color:#fff}.tyk-button--info-link{background-color:transparent;border-color:transparent;color:#82bbc6}.tyk-button--info-link:hover{background-color:transparent;color:#82bbc6;text-decoration:underline}.tyk-button--info-outline{border:2px solid #82bbc6;background-color:#fff;color:#82bbc6}.tyk-button--info-outline:hover{background-color:#82bbc6;color:#fff}.tyk-button--info-outline.disabled{color:#82bbc6}.tyk-button--info-outline.disabled:hover{background-color:#fff;color:#82bbc6}.tyk-button--info-gradient{border-image:linear-gradient(90deg,#82bbc6,#d3ebef,#82bbc6) 0 round;background:transparent linear-gradient(90deg,#82bbc6,#d3ebef,#82bbc6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--info-gradient:active,.tyk-button--info-gradient:active:focus,.tyk-button--info-gradient:hover{border-image:linear-gradient(90deg,#82bbc6,#d3ebef,#82bbc6) 0 round;background:transparent linear-gradient(90deg,#82bbc6,#d3ebef,#82bbc6);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--info-gradient:active.disabled,.tyk-button--info-gradient:active:focus.disabled,.tyk-button--info-gradient:hover.disabled{border-image:linear-gradient(90deg,#82bbc6,#d3ebef,#82bbc6) 0 round;background:transparent linear-gradient(90deg,#82bbc6,#d3ebef,#82bbc6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--default{background-color:#36364c;color:#fff;border:2px solid #36364c}.tyk-button--default:hover{background-color:#505071;color:#fff}.tyk-button--default-link{background-color:transparent;border-color:transparent;color:#505071}.tyk-button--default-link:hover{background-color:transparent;color:#505071;text-decoration:underline}.tyk-button--default-outline{border:2px solid #36364c;background-color:#fff;color:#36364c}.tyk-button--default-outline:hover{background-color:#36364c;color:#fff}.tyk-button--default-outline.disabled{color:#36364c}.tyk-button--default-outline.disabled:hover{background-color:#fff;color:#36364c}.tyk-button--default-gradient{border-image:linear-gradient(90deg,#36364c,#505071,#36364c) 0 round;background:transparent linear-gradient(90deg,#36364c,#505071,#36364c);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--default-gradient:active,.tyk-button--default-gradient:active:focus,.tyk-button--default-gradient:hover{border-image:linear-gradient(90deg,#36364c,#505071,#36364c) 0 round;background:transparent linear-gradient(90deg,#36364c,#505071,#36364c);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--default-gradient:active.disabled,.tyk-button--default-gradient:active:focus.disabled,.tyk-button--default-gradient:hover.disabled{border-image:linear-gradient(90deg,#36364c,#505071,#36364c) 0 round;background:transparent linear-gradient(90deg,#36364c,#505071,#36364c);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--sm{padding:3px 15px;font-size:12px;line-height:16px;border-radius:20px}.tyk-button--md{padding:8px 23px;font-size:14px;line-height:19px;border-radius:20px}.tyk-button--lg{padding:13px 23px;font-size:16px;line-height:22px;border-radius:20px}.tyk-button--icon-only{border-radius:18px;padding:0;line-height:20px;width:24px}.tyk-button--icon-only:hover{border-radius:18px}.tyk-button--fit{height:auto;width:auto;line-height:normal}.tyk-button--no-style,.tyk-button--no-style:hover{background:transparent;border:none;color:#505071}.tyk-button-group__wrapper{display:inline-block;position:relative;vertical-align:middle}.tyk-button-group__wrapper label{font-family:OpenSans-SemiBold}.tyk-button-group__wrapper .tyk-button-group{display:flex}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:first-child)>.tyk-button{border-top-left-radius:0;border-bottom-left-radius:0}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:last-child)>.tyk-button{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button{border-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-button,.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-dropdown{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button:first-child{border-top-left-radius:20px;border-bottom-left-radius:20px}.tyk-button-group__wrapper .tyk-button-group .tyk-button:last-child{border-top-right-radius:20px;border-bottom-right-radius:20px}.tyk-chart__wrapper{position:relative}.tyk-chart--loading-chart,.tyk-chart--no-data{filter:blur(10px);-webkit-filter:blur(10px)}.tyk-checkbox label{align-items:center;display:flex;padding-left:20px}.tyk-checkbox label input{margin-left:-20px}.tyk-checkbox--theme-light.tyk-checkbox--is-disabled label,.tyk-checkbox--theme-light label{color:#fff}.tyk-checkbox--is-disabled label,.tyk-checkbox--is-disabled p{cursor:not-allowed;opacity:.5}.collapse-exit,.collapse-exit-active,.collapse-exit-done{height:0}.collapse-wrapper{overflow:hidden;transition:all .2s}.collapse-horizontal-exit,.collapse-horizontal-exit-active,.collapse-horizontal-exit-done{width:0}.collapse-horizontal-enter,.collapse-horizontal-enter-active,.collapse-horizontal-enter-done{width:100%}.tyk-combobox.disabled .tyk-form-control{background-color:#ededf9;border:2px solid #c3c3e5;color:#ededf9;cursor:not-allowed}.tyk-combobox ul{list-style-type:none;margin-top:0;height:auto}.tyk-combobox>.tyk-form-control__wrapper>.tyk-form-control{margin:0;padding:0}.tyk-combobox>.tyk-form-control__wrapper>.tyk-form-control--with-tags{cursor:auto;overflow:hidden;padding-right:45px;padding-bottom:5px;position:relative}.tyk-combobox>.tyk-form-control{cursor:pointer}.tyk-combobox .tyk-combobox--with-tags__button-down{bottom:0;border-radius:0;color:#505071;font-size:16px;padding:0 15px;position:absolute;right:0;top:0;width:auto}.tyk-form-group--rounded-corners .tyk-combobox .tyk-combobox--with-tags__button-down{border-radius:18px}.tyk-combobox .pill{background-color:#f0f0f0;border-radius:10px;color:#505071;float:left;margin-left:10px;margin-top:6px;padding:5px 10px}.tyk-combobox .pill button{background:none;border:none;cursor:pointer;width:23px}.tyk-combobox .pill i{margin-right:5px}.tyk-combobox__search-box{float:left;padding-right:45px;height:35px;padding-bottom:5px}.tyk-combobox__search-box input{border:none}.tyk-combobox__search-box input:focus{outline:none}.tyk-combobox .tyk-combobox__placeholder{color:#a2a2cc;align-items:center;display:flex;overflow:hidden;white-space:nowrap;padding:12px 20px;width:100%}.tyk-combobox .tyk-combobox__placeholder>i{margin-left:auto}.tyk-combobox__list{background-color:#fff;border:2px solid #c3c3e5;display:none;list-style-type:none;max-height:255px;margin:0;overflow-y:auto;padding:0;position:absolute;z-index:5}.tyk-combobox__list.tyk-form-group--rounded-corners{border-radius:18px}.tyk-combobox__list--has-tags{max-height:195px}.tyk-combobox__list--opened{display:block}.tyk-combobox__list li{border-top:1px solid #c3c3e5;cursor:pointer;padding:10px 15px;transition:all .2s}.tyk-combobox__list li:first-child{border-top:none}.tyk-combobox__list li .tyk-form-control{border-color:#c3c3e5}.tyk-combobox__list li.active,.tyk-combobox__list li:hover{background-color:#c3c3e5}.tyk-combobox__list li.disabled{color:#c3c3e5;background-color:initial}.tyk-combobox__list li.combobox-search__container{background-color:#fff;position:-webkit-sticky;position:sticky;top:0}.tyk-combobox__list li i{margin-right:5px}.tyk-combobox2{outline:none}.tyk-combobox2.disabled .tyk-form-control{border:2px solid #c3c3e5;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__current-values .tyk-pill--combobox button,.tyk-combobox2.disabled:not(.is-expand-mode) .tyk-combobox2__values-container-trigger{cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__entry-field{background-color:transparent;cursor:not-allowed}.tyk-combobox2 .tyk-form-control{display:flex;flex-direction:row;position:relative;min-height:40px;height:auto;padding:0}.tyk-combobox2 .tyk-form-control:focus-within{outline:none;border:2px solid #36364c}.tyk-combobox2__current-values{display:flex;flex-grow:1;flex-wrap:wrap;padding-top:2px;padding-bottom:2px;padding-left:10px;max-width:calc(100% - 40px)}.tyk-combobox2__current-values.expand-mode{max-height:1000px;overflow:hidden;transition:max-height 1s ease}.tyk-combobox2__current-values--collapsed.expand-mode{max-height:38px;transition:max-height .2s ease}.tyk-combobox2__current-values .tyk-pill--combobox{margin-top:3px;margin-bottom:3px;background-color:#f0f0f0;border-radius:10px;color:#505071;padding:5px 10px;max-width:100%;max-height:26px}.tyk-combobox2__current-values .tyk-pill--combobox button{background:none;border:none;cursor:pointer;width:23px;outline:none}.tyk-combobox2__current-values .tyk-pill--combobox button+span{margin-left:0}.tyk-combobox2__current-values .tyk-pill--combobox span{overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__current-values .tyk-pill--combobox i{margin-right:5px}.tyk-combobox2__entry-field{border:none;line-height:30px}.tyk-combobox2__entry-field:active,.tyk-combobox2__entry-field:focus{border:none;outline:none}.tyk-combobox2__entry-field::placeholder{color:#a2a2cc;font-family:OpenSans-SemiBold}.tyk-combobox2__text-value{font-family:OpenSans-SemiBold;font-size:14px;line-height:19px;padding:9px 5px;width:100%;overflow:hidden;text-overflow:ellipsis;line-height:1;outline:none}.tyk-combobox2__text-value.overflow-single{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__text-value.is-placeholder{color:#a2a2cc;font-family:OpenSans-SemiBold}.tyk-combobox2__values-container-trigger{position:relative;flex-basis:40px;display:flex;justify-content:center;align-items:center;cursor:pointer;outline:none;transition:all .2s}.tyk-combobox2__values-container-trigger--expanded{transform:rotate(180deg)}.tyk-combobox2__values-container-trigger .tyk-icon{height:14px}.tyk-form-group--rounded-corners .tyk-combobox2-disabled-overlay{border-radius:16px}.tyk-combobox2__combobox-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search+.combobox-list{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list{max-height:255px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li{display:flex;cursor:pointer;padding:9px 20px;transition:all .2s;font-family:OpenSans-SemiBold}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.active,.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li:hover{background-color:#ededf9}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.disabled{color:#c3c3e5;background-color:initial}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li+li{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li i{margin-right:5px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.tyk-combobox2__values-container-trigger{color:#505071}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{z-index:1081}.tyk-copy-to-clipboard{position:absolute;left:-1000px;top:-1000px}.flatpickr-day.endRange,.flatpickr-day.endRange.inRange,.flatpickr-day.endRange.nextMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.endRange:focus,.flatpickr-day.endRange:hover,.flatpickr-day.selected,.flatpickr-day.selected.inRange,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.selected:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange,.flatpickr-day.startRange.inRange,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.startRange:focus,.flatpickr-day.startRange:hover{background:#00d9ba!important;border-color:#00d9ba!important}.tyk-dropdown{display:inline-block}.tyk-dropdown+.tyk-button,.tyk-dropdown+.tyk-dropdown,.tyk-dropdown+.tyk-toggle{margin-left:10px}.tyk-dropdown--block{left:20px;right:20px}.tyk-dropdown--relative{left:auto;right:auto}.tyk-dropdown--custom{padding:20px 25px}.tyk-dropdown label{display:block}.tyk-dropdown__trigger{position:relative}.tyk-dropdown.theme-list .tyk-button{background:#fff;border:2px solid #36364c;border-radius:18px;color:#505071}.tyk-dropdown.theme-list .tyk-button:active,.tyk-dropdown.theme-list .tyk-button:active:focus,.tyk-dropdown.theme-list .tyk-button:focus,.tyk-dropdown.theme-list .tyk-button:hover{background:#fff;border-color:#43435b;color:#505071}.tyk-dropdown-menu{background:#fff;border:2px solid #c3c3e5;border-radius:18px;-webkit-filter:drop-shadow(1px 2px 1px rgba(0,0,0,.1));filter:drop-shadow(1px 2px 1px rgba(0,0,0,.1));list-style-type:none;margin:3px 0 0;overflow:hidden;padding:0;z-index:1000}.tyk-dropdown-menu .tyk-panel{margin:0}.tyk-dropdown-menu.opened{display:flex;flex-direction:column;position:absolute}.tyk-dropdown-menu>li{background:#fff;border-bottom:1px solid #fff;display:flex;position:relative;z-index:7}.tyk-dropdown-menu>li:last-child{border:none}.tyk-dropdown-menu>li i{left:7px;position:absolute;top:9px}.tyk-dropdown-menu>li>a{cursor:pointer;color:#505071;display:flex;font-size:12px;padding:7px 24px;text-transform:uppercase;text-decoration:none;width:100%}.tyk-dropdown-menu>li>a:hover{color:#505071}.tyk-dropdown-menu>li>a .badge{background:#505071;color:#fff;font-size:10px;margin-top:-4px;margin-left:6px}.tyk-dropdown-menu>li>a:hover{background-color:#ededf9;text-decoration:none}.tyk-dropdown--relative.opened{position:relative}.tyk-editable-list__submit-btn{white-space:nowrap}.tyk-editable-list__form{align-items:center;display:flex}.tyk-editable-list__form .tyk-form-group{margin-bottom:0}.tyk-editable-list__form--sticked{margin-left:0}.tyk-editable-list__form--sticked button{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:3px;border-bottom-right-radius:3px;padding:10px 15px 11px}.tyk-editable-list__form span.inline{margin-top:0}.tyk-editable-list__form>span{margin-left:15px}.tyk-editable-list__form>span.inline-with-label{align-self:flex-end}.tyk-editable-list__header{padding-top:15px;border-bottom:1px solid #43435b;color:#505071;font-size:11px;padding-bottom:15px;text-transform:uppercase}.tyk-editable-list__header .tyk-row{margin:0}.tyk-editable-list-items{overflow:hidden;list-style:none;padding:20px 0 0}.tyk-editable-list-items .edit-mode-wrapper.table button{margin-top:23px}.tyk-editable-list-items .tyk-row{margin:0}.tyk-editable-list-items button[disabled]{cursor:not-allowed}.tyk-editable-list-items.tyk-editable-list-items--inline{align-items:center;color:#505071;display:flex;flex-wrap:wrap}.tyk-editable-list-items li{border-top:1px solid #c3c3e5;transition:all .2s linear}.tyk-editable-list-items li.tyk-editable-list-item--inline{background-color:#c3c3e5;border-radius:25px;border:none;color:#fff;float:left;font-family:OpenSans-SemiBold;margin-bottom:10px;margin-right:15px;padding:0 15px;white-space:nowrap}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-item__text{color:#505071;padding:5px 0}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-action__button.on-edit{margin-top:0}.tyk-editable-list-items li:first-child{border-top:none}.tyk-editable-list-items li .tyk-editable-list-item__text{display:flex;padding:10px 0}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child,.tyk-editable-list-items li .tyk-editable-list-item__text>span{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child .error-message{margin:0}.tyk-editable-list-items li .tyk-editable-list-items{overflow:hidden;padding-bottom:10px}.tyk-editable-list-items li .tyk-editable-list{border-top:5px solid #43435b;background:#ededf9;padding:10px 15px}.tyk-editable-list-items .tyk-editable-list-item__text{display:block;word-wrap:break-word;word-break:break-all}.tyk-editable-list-items .tyk-editable-list-action__button{border:none;background:transparent}.tyk-editable-list-items .tyk-editable-list-action__button.on-edit{margin-left:10px}.tyk-editable-list-items .tyk-editable-list-item-controls{flex-grow:0;text-align:right}.tyk-editable-list-item__controls{text-align:right}.tyk-editable-list-items.table{background-color:#fff;border-radius:18px;border:2px solid #c3c3e5;padding:0!important}.tyk-editable-list-items.table li{border-color:#c3c3e5}.tyk-editable-list-items.table li:hover{background:#ededf9}.tyk-editable-list-items.table .tyk-editable-list-item__text{background:transparent}.tyk-editable-list-items.table .tyk-editable-list-action__button{border-radius:6px;cursor:pointer;margin-right:10px}.tyk-editable-list__header{background-color:#fff;border-top-left-radius:18px;border-top-right-radius:18px;border:2px solid #c3c3e5;border-bottom:1px solid #c3c3e5!important;color:#505071!important;font-family:OpenSans-Bold;margin-top:10px}.tyk-editable-list__header+.tyk-editable-list-items.table{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.tyk-file-input__wrapper{position:relative}.tyk-file-input__wrapper>input{padding:6px 20px}.tyk-file-input__wrapper>button{background:none;border:none;cursor:pointer;position:absolute;right:15px;top:9px}.tyk-fixed-wrapper{left:0;position:sticky;right:0;top:0;z-index:8}.tyk-fixed-wrapper--scrolled{box-shadow:2px 2px 5px rgba(0,0,0,.1)}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1000}.tyk-icon+.tyk-icon{margin-left:10px}.tyk-infinite-scroller{height:100%;overflow:hidden;position:relative}.tyk-infinite-scroller .loading{background:linear-gradient(180deg,hsla(0,0%,100%,0),#fff);justify-content:center;bottom:0;display:flex;left:0;padding:15px 0;right:0;top:auto;width:100%}.tyk-infinite-scroller__wrapper{height:100%;overflow-y:auto}.tyk-info-note{border-radius:0;position:relative}.tyk-info-note p+p{margin-top:15px}.tyk-info-note:after{content:"";border-color:transparent #82bbc6 transparent transparent;border-style:solid;border-width:0 20px 20px 0;height:0;position:absolute;right:0;top:0;width:0}.tyk-info-note .tyk-message{border-radius:0;padding-top:40px;padding-bottom:40px}.tyk-loading__wrapper{background:hsla(0,0%,100%,.6);bottom:0;position:absolute;left:0;right:0;top:0;z-index:99}.loader-wrapper{min-height:100px;position:relative}.loading{position:absolute;top:calc(50% - map-get($spacing, "sm"));left:50%}.loading.relative{left:auto;padding:25px;position:relative;text-align:center;top:auto;width:100%}.loading-bar{display:inline-block;width:4px;height:20px;border-radius:4px;animation:loading 1s ease-in-out infinite;margin-left:2px}.loading-bar:first-child{animation-delay:0;background-color:#00d9ba;opacity:1}.loading-bar:nth-child(2){animation-delay:.09s;background-color:#00d9ba;opacity:.8}.loading-bar:nth-child(3){animation-delay:.18s;background-color:#00d9ba;opacity:.6}.loading-bar:nth-child(4){animation-delay:.27s;background-color:#00d9ba;opacity:.4}@keyframes loading{0%{transform:scale(1)}20%{transform:scaleY(2.2)}40%{transform:scale(1)}}.tyk-list{border:2px solid #c3c3e5;border-radius:18px;font-size:14px;list-style-type:none;margin:0;max-height:191px;padding:0;overflow:auto}.tyk-list--with-inline-label{display:flex}.tyk-list--with-inline-label>label{margin-right:20px}.tyk-list li{border-bottom:1px solid #c3c3e5;padding:10px 20px;font-family:OpenSans-SemiBold}.tyk-list li:last-child{border:none}.tyk-list--default{border-color:#c3c3e5}.tyk-list--primary{border-color:#a2a2cc}.tyk-list--primary li{border-color:#ededf9;color:#505071}.tyk-list--primary-light{border-color:#ededf9}.tyk-list--primary-light li{border-color:#ededf9;color:#505071}.tyk-list--success{color:#00d9ba}.tyk-list--success,.tyk-list--success li{border-color:#00d9ba}.tyk-list--danger{border-color:#ff6c7d;color:#505071}.tyk-list--danger li{border-color:#ffbbc5}ul.tyk-list--inline{align-items:center;display:flex}ul.tyk-list--inline li{padding:0 10px}ul.tyk-list--inline.tyk-list--with-separator li:not(:first-child){border-left:1px solid #36364c}.tyk-message{border-radius:18px;margin-bottom:20px;padding:20px}.tyk-message--default{background-color:#c3c3e5;border:2px solid #36364c;color:#505071}.tyk-message--info{background-color:#d3ebef;border:2px solid #82bbc6;color:#505071}.tyk-message--success{background-color:#c2f2e9;border:2px solid #00b798;color:#505071}.tyk-message--warning{background-color:#ffe885;border:2px solid #d6b218;color:#505071}.tyk-message--danger{background-color:#f5ccd1;border:2px solid #ea4766;color:#505071}.tyk-modal{align-items:center;bottom:0;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:-1}.tyk-modal .tyk-panel{border:2px solid #43435b;box-shadow:none;-webkit-box-shadow:none}.tyk-modal .tyk-modal__dialog{opacity:0;transition:all .2s ease}.tyk-modal.opened{display:flex;z-index:1080}.tyk-modal.opened .tyk-modal__dialog{opacity:1;pointer-events:all}.tyk-modal.appear-enter-done .tyk-modal__dialog{opacity:1;margin-top:0}.tyk-modal__dialog{opacity:0;margin:-5% auto 0;pointer-events:all;transition:all .2s linear;width:85%}@media only screen and (min-width:768px){.tyk-modal__dialog{width:600px}}@media only screen and (min-width:768px){.tyk-modal__dialog.tyk-modal--lg{width:800px}}.tyk-modal__content{background:#fff;border-radius:18px;display:flex;flex-direction:column;position:relative;width:100%}.tyk-modal__header{align-items:center;border-bottom:1px solid #ededf9;display:flex;padding:25px;width:100%}.tyk-modal__header button{margin-left:auto;padding:0 5px}.tyk-modal__body{padding:25px}.tyk-modal__body.no-padding{padding:0}.tyk-modal__footer{align-items:center;border-top:1px solid #ededf9;display:flex;justify-content:flex-end;padding:25px}.tyk-modal__footer>:not(:first-child){margin-left:5px}.tyk-modal__title{font-family:OpenSans-SemiBold;font-weight:500;margin:0;width:100%}.tyk-modal__backdrop{background-color:#505071;border:none;bottom:0;display:none;left:0;position:fixed;right:0;top:0;width:100%;z-index:1079}.tyk-modal__backdrop.opened{display:block;opacity:.5;transition:opacity .2s ease}.tyk-modal__backdrop.fade-enter-done{opacity:.5}.tyk-multiselect{align-items:flex-start;border-radius:18px;flex-wrap:wrap;display:flex;margin-bottom:20px;width:100%}.tyk-multiselect .input-group .input-group-addon+.form-control{border-width:1px!important;border-left:none!important;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.tyk-multiselect .input-group .input-group-addon{background:transparent!important;border-width:1px!important;border-right:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.tyk-multiselect.has-error{border:2px solid #ff6c7d}.tyk-multiselect__header{background-color:#36364c;border-top-left-radius:18px;border-top-right-radius:18px;color:#fff;display:flex;width:100%}.tyk-multiselect__header>div{padding:10px 15px;width:50%}.tyk-multiselect__panel-wrapper{border:2px solid #c3c3e5;border-top:none;border-bottom-left-radius:18px;border-bottom-right-radius:18px;display:flex;flex:1;height:265px;width:100%}.tyk-multiselect__panel{display:flex;flex-direction:column;margin:0 0 0 -1px;position:relative;width:calc(50% + 1px)}.tyk-multiselect__panel:last-child{border-left:2px solid #c3c3e5}.tyk-multiselect__panel:last-child .tyk-form-group{margin-left:-1px;width:calc(100% + 2px)}.tyk-multiselect__panel .tyk-message{margin:20px 20px 0}.tyk-multiselect__list{list-style-type:none;margin:0;padding:0}.tyk-multiselect__list--scroll{height:100%;overflow-y:auto}.tyk-multiselect__list>li{border-bottom:2px solid #c3c3e5;display:flex;flex-direction:column;padding:10px 15px}.tyk-multiselect__list>li>div{align-items:start;display:flex;width:100%}.tyk-multiselect__list>li .loading{justify-content:center}.tyk-multiselect__list>li:last-child{border-bottom:none}.tyk-multiselect-item__name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tyk-multiselect .tyk-form-group{margin:0}.tyk-multiselect .tyk-multiselect-item__controls{display:flex;margin-left:auto;flex-wrap:nowrap}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button{color:#505071;margin-left:5px}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button:last-child{margin-left:0}.tyk-navigation{background-color:#fff;height:100%;overflow:auto;padding:0;width:100%}.tyk-navigation .tyk-navigation-item{width:100%}.tyk-navigation .tyk-navigation-item a{color:#505071;display:flex;padding:10px 20px;text-decoration:none;transition:all .2s ease}.tyk-navigation .tyk-navigation-item a:hover{background-color:#a2a2cc;color:#fff}.tyk-navigation .tyk-navigation-item a.active{background-color:#505071;color:#fff}.tyk-nav-bar{align-items:center;border:none;background-color:#fff;font-family:OpenSans-regular;color:#505071;margin:0;padding:0 20px;width:100%;z-index:8;transition:all .2s linear}.tyk-nav-bar__pre{align-self:flex-end;color:#505071;flex-basis:100%}.tyk-nav-bar__pre a{font-family:OpenSans-Bold;font-size:12px;line-height:16px;color:#505071}.tyk-nav-bar.tyk-nav-bar__with-tabs .tyk-tabs--default>ul li button{padding-top:0}@media screen and (max-width:1024px){.tyk-nav-bar{padding-left:20px}.menu-opened .tyk-nav-bar{transform:translate(245px)}}.tyk-nav-bar h1{color:#505071}.tyk-nav-bar h4{margin:0}.tyk-nav-bar .tyk-nav-bar__wrapper{align-items:center;padding-bottom:0;display:flex;flex-wrap:wrap;height:92px}.tyk-nav-bar .tyk-nav-bar__wrapper.tyk-nav-bar--align-top{align-items:flex-start}@media screen and (max-width:1024px){.tyk-nav-bar .tyk-nav-bar__wrapper{padding-left:0}}.tyk-nav-bar .tyk-nav-bar__wrapper h1{font-size:25px;font-family:smoolthan_bold;line-height:30px;margin:0;padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper h4{padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__container{align-items:center;display:flex;flex-grow:1;justify-content:space-between}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__left{flex-grow:1}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__right{margin-left:auto}.tyk-pagination{display:flex;list-style-type:none;margin:10px 0;padding:0}.tyk-pagination li{align-items:center;display:flex}.tyk-pagination li:first-child button{border-top-left-radius:18px;border-bottom-left-radius:18px}.tyk-pagination li:last-child button{border-top-right-radius:18px;border-bottom-right-radius:18px}.tyk-pagination span{margin:0 10px}.tyk-pagination button{background:#fff;border:none;font-size:14px;font-family:OpenSans-Bold;cursor:pointer;color:#36364c;margin-left:-1px;padding:10px 15px}.tyk-pagination button:hover{background-color:#c2f2e9}.tyk-pagination .active button{background-color:#00d9ba;color:#fff}.tyk-panel{background:#fff;border-radius:0;margin-bottom:20px;font-family:OpenSans-SemiBold;position:relative}.tyk-panel.has-error,.tyk-panel .tyk-panel.has-error{border:2px solid #ff6c7d}.tyk-panel__header{align-items:center;border-bottom:1px solid #e1e1e1;display:flex;font-family:OpenSans-regular}.tyk-panel__header>.tyk-icon,.tyk-panel__header>.tyk-tooltip__wrapper{margin-left:5px}.tyk-panel .tyk-panel{border:2px solid #c3c3e5;box-shadow:none;-webkit-box-shadow:none}.tyk-panel--blank.tyk-panel--collapsed{margin-bottom:20px}.tyk-panel--blank.tyk-panel--collapsed .tyk-panel__header{margin-bottom:0}.tyk-panel--blank .tyk-panel__header{margin-bottom:-map-get(("xs":5px,"sm":10px,"base":15px,"md":20px,"lg":25px,"xl":30px,"xxl":40px),"md");padding:20px 25px;background-color:#fff;border:none;color:#505071;font-size:17px;line-height:23px}.tyk-panel--primary{background-color:transparent}.tyk-panel--primary .tyk-panel__header{background-color:#a2a2cc;color:#fff;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__body{background-color:#fff;border:none;color:#505071;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__header{border:none}.tyk-panel--primary .tyk-form-group label,.tyk-panel--primary .tyk-toggle .tyk-toggle__label{color:#505071}.tyk-panel--success .tyk-panel__header{background-color:#00d9ba;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--danger .tyk-panel__header{background-color:#ff6c7d;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--warning .tyk-panel__header{background-color:#d6b218;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel__body{background-color:#fff;border-radius:0;font-family:OpenSans-regular;padding:25px;position:relative;transition:height .2s}.tyk-panel__body~.tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__body.no-padding{padding:0}.tyk-panel__header{border-radius:0;font-family:OpenSans-SemiBold;overflow:hidden;padding:10px 25px;position:relative}.tyk-panel--collapsed .tyk-panel__header,.tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__header~.tyk-panel__body{border-top-left-radius:0;border-top-right-radius:0}.tyk-panel__headerh3{margin:0}.tyk-panel__header ng-transclude{vertical-align:middle}.tyk-panel__header.collapsable{cursor:pointer}.tyk-panel__icon-collapse--right .tyk-panel__header.collapsable{padding-right:48px}.tyk-panel__icon-collapse--left .tyk-panel__header.collapsable{padding-left:48px}.tyk-panel__header .collapsable__arrow-right{font-size:14px;position:absolute;padding:10px;right:10px;top:calc(50% - 21px)}.tyk-panel__header .collapsable__arrow-left{font-size:14px;position:absolute;padding:8px 0 10px 20px;left:0;top:calc(50% - 21px)}.tyk-panel__footer{align-items:center;border-top:1px solid #ededf9;display:flex;justify-content:flex-end;padding:25px}.tyk-panel__footer>:not(:first-child){margin-left:5px}.tyk-pill{align-items:center;border-radius:18px;display:inline-flex;margin:0 0 10px;padding:6px 15px;font-family:OpenSans-SemiBold}.tyk-pill,.tyk-pill i{font-size:12px}.tyk-pill+.tyk-pill{margin-right:10px}.tyk-pill button+span,.tyk-pill span+button{margin-left:10px}.tyk-pill:first-child{margin-right:10px}.tyk-pill:last-child{margin-right:0}.tyk-pill--default{background-color:#36364c;color:#fff}.tyk-pill--default i{color:#fff}.tyk-pill--default-outline{box-shadow:inset 0 0 0 2px #36364c;color:#505071}.tyk-pill--default-outline i{color:#505071}.tyk-pill--primary{background-color:#a2a2cc;color:#fff}.tyk-pill--primary i{color:#fff}.tyk-pill--primary-outline{box-shadow:inset 0 0 0 2px #a2a2cc;color:#505071}.tyk-pill--primary-outline i{color:#505071}.tyk-pill--success{background-color:#00d9ba;color:#fff}.tyk-pill--success i{color:#fff}.tyk-pill--success-outline{box-shadow:inset 0 0 0 2px #00d9ba;color:#505071}.tyk-pill--success-outline i{color:#505071}.tyk-pill--danger{background-color:#ff6c7d;color:#fff}.tyk-pill--danger i{color:#fff}.tyk-pill--danger-outline{box-shadow:inset 0 0 0 2px #ff6c7d;color:#505071}.tyk-pill--danger-outline i{color:#505071}.tyk-pill--warning{background-color:#d6b218;color:#fff}.tyk-pill--warning i{color:#fff}.tyk-pill--warning-outline{box-shadow:inset 0 0 0 2px #d6b218;color:#505071}.tyk-pill--warning-outline i{color:#505071}.tyk-radio label{align-items:center;display:flex}.tyk-radio--is-disabled label,.tyk-radio--is-disabled p{cursor:not-allowed;opacity:.5}.tyk-select{background:transparent url(images/arrow_down.svg) no-repeat calc(100% - 15px) 50%;background-size:15px 15px}.tyk-selectable-list{margin-bottom:20px;width:100%}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message){font-family:OpenSans-SemiBold;padding:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) .tyk-message{margin-bottom:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) label{font-family:OpenSans-SemiBold;margin:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label{align-items:center;cursor:pointer;display:flex;padding:10px 20px}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label input[type=checkbox]{margin-left:auto}.tyk-selectable-list__item--with-icon input[type=checkbox]{visibility:hidden}.tyk-sidebar{background-color:#fff;height:calc(100vh - 58px);flex:0 0 280px;padding:0;position:-webkit-sticky;position:sticky;overflow:auto;top:58px}.tyk-table{border-collapse:collapse;border-spacing:0;background-color:#fff;border-radius:18px;width:100%}.tyk-table__wrapper{border:2px solid #c3c3e5;border-radius:18px;overflow:auto}.tyk-table__wrapper--no-border{border:none}.tyk-table>thead th{border-right:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:OpenSans-Bold;text-transform:uppercase}.tyk-table>thead th:last-child{border-right:none}.tyk-table>thead th i{font-size:12px}.tyk-table>thead th .tyk-button{background:none;color:#36364c;padding:0}.tyk-table>thead th{padding:10px}.tyk-table>tbody tr:hover{background:#ededf9}.tyk-table>tbody td{border-right:1px solid #c3c3e5;font-size:14px;line-height:19px;font-family:OpenSans-regular;padding:10px 5px;vertical-align:middle}.tyk-table>tbody td:last-child{border-right:none}.tyk-table>tbody td.fit{white-space:nowrap;width:1%}.tyk-table>tbody td input:not([type=checkbox]):not([type=radio]){margin-top:15px}.tyk-table>tbody td a{color:#505071;font-family:OpenSans-SemiBold}.tyk-table>tbody td input[type=checkbox],.tyk-table>tbody td label{margin:0}.tyk-table tbody>tr{border-top:1px solid #c3c3e5;transition:all .4s linear;border-radius:18px}.tyk-table tbody>tr.clickable{cursor:pointer}.tyk-table>tbody tr td:first-child,.tyk-table>thead tr th:first-child{padding-left:25px}.tyk-table>tbody tr td:first-child.with-icon,.tyk-table>thead tr th:first-child.with-icon{padding-left:15px}.tyk-table>tbody tr td:last-child,.tyk-table>thead tr th:last-child{padding-right:25px}.tyk-table>tbody tr td:last-child.with-icon,.tyk-table>thead tr th:last-child.with-icon{padding-right:15px}.tyk-table .tyk-pagination{padding:20px 25px}.tyk-table .tyk-pagination li:first-child{margin-left:auto}.tyk-table .nowrap{white-space:nowrap}.tyk-table .wrap{word-break:break-all}.tyk-table-search{padding:10px 25px 0}.tyk-table-search label{font-size:14px;text-transform:uppercase}.header-sort{padding-left:10px;padding-top:5px;vertical-align:middle}.new-table-pagination{float:right}.selectable>div{margin-left:20px}.scrollable{display:block;overflow:auto}.fixed-header{position:sticky;top:0}.tyk-table.has-error,.tyk-table__wrapper.has-error{border:2px solid #ff6c7d!important}.tyk-tabs--default>ul{display:flex;list-style-type:none;margin:0;padding:0;overflow:auto}.tyk-tabs--default>ul li{display:flex;white-space:nowrap;margin-right:0}.tyk-tabs--default>ul li:last-child{margin-right:0}.tyk-tabs--default>ul li.active button,.tyk-tabs--default>ul li button:hover{border-bottom-color:#00d9ba;color:#505071;opacity:1}.tyk-tabs--default>ul li button{background:none;border:none;border-bottom:4px solid transparent;color:#505071;cursor:pointer;font-size:14px;font-family:OpenSans-SemiBold;padding:10px 2px 3px;margin-right:20px;transition:all .2s linear;opacity:.7}.tyk-tabs--default>ul li button:focus{outline:none}.tyk-tab__content{padding:25px}textarea.tyk-form-control{height:auto}.tyk-toast__container{bottom:0;min-width:300px;position:fixed;right:20px;z-index:11}.tyk-toast__message{position:relative}.tyk-toast-message__button{color:#505071;height:20px;line-height:1;padding:5px;position:absolute;right:5px;top:5px;width:20px}.tyk-toast-message__button:hover{background:hsla(0,0%,100%,.3);color:#505071}.tyk-toggle{display:inline-flex;flex-wrap:wrap;font-family:OpenSans-Bold;font-size:14px;line-height:19px;white-space:nowrap}.tyk-toggle.block{margin-bottom:20px;width:100%}.tyk-toggle.block+.tyk-toggle{margin-left:0}.tyk-toggle.inline-label{align-items:center;flex-wrap:nowrap}.tyk-toggle__list--has-error{border:2px solid #ff6c7d}.tyk-toggle .tyk-toggle__label{display:block;font-family:OpenSans-SemiBold;font-size:14px;padding:0;width:100%;color:#36364c}.tyk-toggle.inline-label .tyk-toggle__label{margin-right:10px;width:auto}.tyk-toggle+.tyk-button,.tyk-toggle+.tyk-dropdown,.tyk-toggle+.tyk-toggle{margin-left:10px}.tyk-toggle--disabled-true{cursor:not-allowed;opacity:.7}.tyk-toggle--column .tyk-toggle__list--separated{display:flex;flex-direction:column;margin-right:20px}.tyk-toggle--column .tyk-toggle__list--separated .tyk-toggle__item{background-color:#ededf9;margin-right:auto}.tyk-toggle__list{background:#ededf9;border-radius:25px;display:flex;list-style-type:none;margin:0;padding:0;position:relative}.tyk-toggle__list--separated{background:transparent;flex-wrap:wrap}.tyk-toggle--on-dark .tyk-toggle__list{background:#ededf9}.tyk-toggle--default .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active{background-color:#36364c;color:#fff;border:2px solid transparent}.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active:hover,.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active{background-color:#a2a2cc;color:#fff;border:2px solid transparent}.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active:hover,.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active{background-color:#00b798;color:#fff;border:2px solid transparent}.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active:hover,.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active:hover{background-color:#00b798;color:#fff}.tyk-toggle--danger .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active{background-color:#ff6c7d;color:#fff;border:2px solid transparent}.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active:hover,.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__item--active span{color:#505071}.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active{background-color:#d6b218;color:#505071;border:2px solid transparent}.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active:hover,.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active{border-image:linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc) 0 round;background:transparent linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active{border-image:linear-gradient(90deg,#00d9ba,#00b798,#00d9ba) 0 round;background:transparent linear-gradient(90deg,#00d9ba,#00b798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active{border-image:linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d) 0 round;background:transparent linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--warning-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active{border-image:linear-gradient(90deg,#ffe885,#d6b218,#ffe885) 0 round;background:transparent linear-gradient(90deg,#ffe885,#d6b218,#ffe885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active span{color:#fff}.tyk-toggle__item{color:#fff;text-transform:uppercase;z-index:2}.tyk-toggle__item:first-child{border-top-left-radius:25px;border-bottom-left-radius:25px}.tyk-toggle__item:last-child{border-top-right-radius:25px;border-bottom-right-radius:25px}.tyk-toggle__list--separated .tyk-toggle__item{background:tyk-toggle__list--separated;border-radius:25px;margin-bottom:5px;margin-top:5px;margin-right:10px}.tyk-toggle__list--separated .tyk-toggle__item:last-child{margin-right:0}.tyk-toggle__item input{display:none}.tyk-toggle__item label{cursor:pointer;font-family:OpenSans-Bold;position:relative;margin:0;transition:all .2s ease}.tyk-toggle__list--single .tyk-toggle__item label{padding-left:45px}.tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:30px;padding-right:45px}.tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 35px)}.tyk-toggle--on-dark .tyk-toggle__item:not(.tyk-toggle__item--active){color:#505071}.tyk-toggle--sm label{padding:5px 17px;font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--sm .tyk-toggle__list--single label{padding-left:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:20px;padding-right:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 27px)}.tyk-toggle--md label{padding:10px 25px}.tyk-toggle--lg label,.tyk-toggle--md label{font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg label{padding:15px 25px}.tyk-toggle--lg .tyk-toggle__list--single label{padding-left:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:30px;padding-right:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 43px)}.tyk-toggle__item-notch{border-radius:25px;bottom:2px;position:absolute;transition:all .2s ease;top:2px}.tyk-toggle__item-notch--single{background:#fff;left:2px;width:32px}.tyk-toggle--sm .tyk-toggle__item-notch--single{width:24px}.tyk-toggle--lg .tyk-toggle__item-notch--single{width:40px}.tyk-toggle__notch{border-radius:25px;left:0;position:absolute;bottom:4px;top:4px;transition:all .2s ease;width:100px;z-index:1}.tyk-toggle--default .tyk-toggle__notch{background-color:#36364c;color:#fff;border:2px solid transparent}.tyk-toggle--default .tyk-toggle__notch:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__notch{background-color:#a2a2cc;color:#fff;border:2px solid transparent}.tyk-toggle--primary .tyk-toggle__notch:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__notch{background-color:#00d9ba;color:#fff;border:2px solid transparent}.tyk-toggle--success .tyk-toggle__notch:hover{background-color:#00d9ba;color:#fff}.tyk-toggle--danger .tyk-toggle__notch{background-color:#ff6c7d;color:#fff;border:2px solid transparent}.tyk-toggle--danger .tyk-toggle__notch:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__notch{background-color:#d6b218;color:#505071;border:2px solid transparent}.tyk-toggle--warning .tyk-toggle__notch:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__notch{border-image:linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc) 0 round;background:transparent linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__notch{border-image:linear-gradient(90deg,#00d9ba,#00b798,#00d9ba) 0 round;background:transparent linear-gradient(90deg,#00d9ba,#00b798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__notch{border-image:linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d) 0 round;background:transparent linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__notch{border-image:linear-gradient(90deg,#ffe885,#d6b218,#ffe885) 0 round;background:transparent linear-gradient(90deg,#ffe885,#d6b218,#ffe885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.empty-toggle{padding:1px}.tyk-tooltip-content{position:relative;background-color:#505071;color:#fff;padding:8px 16px;border-radius:5px;left:-50%}.tyk-tooltip-content:after{content:"";position:absolute;bottom:-10px;left:calc(50% - 5px);border:5px solid transparent;border-top-color:#505071}.tyk-tooltip__bottom .tyk-tooltip-content:after{border-color:transparent transparent #505071;bottom:auto;top:-10px}*{box-sizing:border-box}body{background-color:#e1e1e1;color:#505071;font-size:14px;line-height:19px;font-family:OpenSans-regular}.tyk-main-wrapper{display:flex;flex-wrap:nowrap}.tyk-main-content-wrapper{flex:1}.well{background:transparent;border:2px solid #c3c3e5;border-radius:18px;box-shadow:none}.well.has-error{border-color:#ff6c7d}.title-medium{font-family:OpenSans-SemiBold;color:#36364c;font-size:16px} \ No newline at end of file + */.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-balance-scale:before{content:"\F24E"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-concierge-bell:before{content:"\F562"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-diagnoses:before{content:"\F470"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edit:before{content:"\F044"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-git:before{content:"\F1D3"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-handshake:before{content:"\F2B5"}.fa-hanukiah:before{content:"\F6E6"}.fa-hashtag:before{content:"\F292"}.fa-hat-wizard:before{content:"\F6E8"}.fa-haykal:before{content:"\F666"}.fa-hdd:before{content:"\F0A0"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hot-tub:before{content:"\F593"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-internet-explorer:before{content:"\F26B"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse-pointer:before{content:"\F245"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-nintendo-switch:before{content:"\F418"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-carry:before{content:"\F4CE"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-volume:before{content:"\F2A0"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-sass:before{content:"\F41E"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-simplybuilt:before{content:"\F215"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowflake:before{content:"\F2DC"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-swatchbook:before{content:"\F5C3"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet-paper:before{content:"\F71E"}.fa-toolbox:before{content:"\F552"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-train:before{content:"\F238"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-uikit:before{content:"\F403"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;src:url(fonts/fa-brands-400.eot);src:url(fonts/fa-brands-400.eot) format("embedded-opentype"),url(fonts/fa-brands-400.woff2) format("woff2"),url(fonts/fa-brands-400.woff) format("woff"),url(fonts/fa-brands-400.ttf) format("truetype"),url(fonts/fa-brands-400.svg) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;src:url(fonts/fa-regular-400.eot);src:url(fonts/fa-regular-400.eot) format("embedded-opentype"),url(fonts/fa-regular-400.woff2) format("woff2"),url(fonts/fa-regular-400.woff) format("woff"),url(fonts/fa-regular-400.ttf) format("truetype"),url(fonts/fa-regular-400.svg) format("svg")}.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;src:url(fonts/fa-solid-900.eot);src:url(fonts/fa-solid-900.eot) format("embedded-opentype"),url(fonts/fa-solid-900.woff2) format("woff2"),url(fonts/fa-solid-900.woff) format("woff"),url(fonts/fa-solid-900.ttf) format("truetype"),url(fonts/fa-solid-900.svg) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}.tykon:before{font-family:tykon!important;font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tykon-arrowdown:before{content:"a"}.tykon-arrowleft:before{content:"b"}.tykon-arrowright:before{content:"c"}.tykon-arrowup:before{content:"d"}.tykon-graph1:before{content:"g"}.tykon-graph2:before{content:"h"}.tykon-deployment:before{content:"n"}.tykon-team:before{content:"o"}.tykon-overview:before{content:"p"}.tykon-loadout:before{content:"q"}.tykon-entitlement:before{content:"r"}.tykon-users:before{content:"s"}.tykon-doublearrowdown:before{content:"e"}.tykon-arrowsort:before{content:"W"}.tykon-check:before{content:"V"}.tykon-copy:before{content:"C"}.tykon-delete:before{content:"U"}.tykon-download:before{content:"L"}.tykon-draft:before{content:"D"}.tykon-edit:before{content:"E"}.tykon-filter:before{content:"f"}.tykon-graphq2:before{content:"h"}.tykon-help:before{content:"?"}.tykon-label:before{content:"i"}.tykon-link:before{content:"R"}.tykon-lock1:before{content:"Y"}.tykon-lock2:before{content:"Z"}.tykon-notifications:before{content:"N"}.tykon-plus:before{content:"+"}.tykon-profile:before{content:"P"}.tykon-reload:before{content:"j"}.tykon-search:before{content:"O"}.tykon-select:before{content:"k"}.tykon-settings:before{content:"S"}.tykon-target:before{content:"l"}.tykon-undo:before{content:"m"}.tykon-warning:before{content:"!"}.tykon-x:before{content:"X"}h1,h2,h3,h4,h5,h6{margin-bottom:15px;font-family:smoolthan_medium;font-weight:500;color:#36364c}label{display:inline-block;max-width:100%;margin-bottom:5px;color:#36364c}h1{font-size:25px;line-height:30px}h2{font-size:20px;line-height:24px}h3{font-size:17px;line-height:23px}h4{font-size:16px;line-height:22px}h5{font-size:14px;line-height:19px}h6{font-size:12px;line-height:16px}label,p{font-size:14px;line-height:19px;font-family:OpenSans-regular}strong{font-family:OpenSans-Bold}a{cursor:pointer;color:#505071;font-family:OpenSans-regular}a.link--bold{font-family:OpenSans-Bold}a+a{margin-left:5px}label a,p a{font-size:14px;text-decoration:underline}.font-family-regular{font-family:OpenSans-regular}.font-family-medium{font-family:OpenSans-SemiBold}.font-family-bold{font-family:OpenSans-Bold}.heading-font-family-regular{font-family:smoolthan_regular}.heading-font-family-medium{font-family:smoolthan_medium}.heading-font-family-bold{font-family:smoolthan_bold}.text--primary{color:#a2a2cc}.text--danger{color:#ff6c7d}.text--info{color:#82bbc6}.text--medium{font-family:OpenSans-SemiBold}.text--bold{font-family:OpenSans-Bold}.text--uppercase{text-transform:uppercase}.text--ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}td.text-ellipsis{max-width:250px}.section-title{margin-bottom:5px}.section-title .tyk-icon{margin-left:5px}.sub-section-title{margin-bottom:5px;font-family:OpenSans-SemiBold;font-size:16px;line-height:22px}.sub-section-title .tyk-icon{margin-left:5px}.section-group-title{margin-bottom:5px;font-family:OpenSans-Bold;font-size:14px;line-height:19px;text-transform:uppercase}.section-group-title .tyk-icon{margin-left:5px}.right-align{text-align:right!important}.left-align{text-align:left!important}.center-align{text-align:center!important}.left{float:left!important}.right{float:right!important}.hide{display:none!important}.no-margin{margin:0!important}.no-margin-bottom{margin-bottom:0!important}.no-margin-top{margin-top:0!important}.no-margin-left,.no-margin-right{margin-right:0!important}.disabled-section{color:#c3c3e5}.top-buffer-large{margin-top:20px}.top-buffer-small{margin-top:5px}.top-buffer-medium{margin-top:10px}.bottom-buffer-large{margin-bottom:20px}.bottom-buffer-small{margin-bottom:5px}.bottom-buffer-medium{margin-bottom:10px}.right-buffer-large{margin-right:20px}.right-buffer-small{margin-right:5px}.right-buffer-medium{margin-right:10px}.left-buffer-large{margin-left:20px}.left-buffer-small{margin-left:5px}.left-buffer-medium{margin-left:10px}.word-wrap{word-wrap:break-word;word-break:break-all}.clear-left{clear:left}.flex-container{display:flex}.vertical-center-align{align-items:center}.right-align-controls{align-items:center;display:flex;margin-left:auto}.inline-label{margin-right:15px}.nowrap{white-space:nowrap}.tyk-form-section__title{font-size:16px;margin:5px 0 15px}.tyk-form-section__title--light{color:#43435b}.tyk-form-group{margin-bottom:15px}.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #ff6c7d;border-left-color:#ea4766;outline:none}.tyk-form-group.has-error .tyk-file-input__wrapper>.tyk-form-control:focus,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus,.tyk-form-group.has-error>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:focus{border-left:2px solid;border-color:#ea4766;outline:none}.tyk-form-group label{font-family:OpenSans-SemiBold}.tyk-form-group--inline{align-items:stretch;display:flex;flex-wrap:nowrap}.tyk-form-group--inline .tyk-form-control__wrapper{flex:1}.tyk-form-group--inline label{display:flex;white-space:nowrap;margin-right:20px;margin-top:14px}.tyk-form-group--inline input,.tyk-form-group--inline select{display:flex}.tyk-form-group--inline .tyk-form-control__help-block{display:flex;margin-left:auto}.tyk-form-group--default{color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #c3c3e5;color:#505071}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #c3c3e5;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--default>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--default.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-left:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--default.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #c3c3e5;border-right:2px solid #c3c3e5;border-top:2px solid #c3c3e5;color:#505071}.tyk-form-group--primary{color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #a2a2cc;color:#505071}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #a2a2cc;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--primary>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--primary.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-left:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--primary.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #a2a2cc;border-right:2px solid #a2a2cc;border-top:2px solid #a2a2cc;color:#a2a2cc}.tyk-form-group--success{color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control{border:2px solid #00d9ba;color:#505071}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled],.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]{border:2px solid #00d9ba;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control[disabled]+.tyk-input-group__addon,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control[disabled]+.tyk-input-group__addon{background-color:#ededf9}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control:-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control:-ms-input-placeholder{opacity:.8}.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-file-input__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-form-control::-ms-input-placeholder,.tyk-form-group--success>.tyk-form-control__wrapper>.tyk-input-group>.tyk-form-control::-ms-input-placeholder{opacity:.8}.tyk-form-group--success.tyk-form-group--addon-left .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-left:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--success.tyk-form-group--addon-right .tyk-input-group__addon{border-bottom:2px solid #00d9ba;border-right:2px solid #00d9ba;border-top:2px solid #00d9ba;color:#00d9ba}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control{border-left:2px solid #ff6c7d}.tyk-form-group--rounded-corners.has-error>.tyk-form-control__wrapper>.tyk-form-control:focus{border-left:2px solid #ff6c7d;outline:none}.tyk-form-group--rounded-corners .tyk-form-control{border-radius:18px}.tyk-form-group--addon-right input{border-right:0!important;padding-right:0}.tyk-form-group--addon-left input{border-left:0!important;padding-left:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right input{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-form-group--rounded-corners.tyk-form-group--addon-right .tyk-input-group__addon{background:#fff;border-top-right-radius:18px;border-bottom-right-radius:18px;color:#505071}.tyk-form-group--rounded-corners.tyk-form-group--addon-left input{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0!important}.tyk-form-group--rounded-corners.tyk-form-group--addon-left .tyk-input-group__addon{background:#fff;border-top-left-radius:18px;border-bottom-left-radius:18px;color:#505071}.tyk-form-control__error-message{font-family:OpenSans-regular;font-size:12px;line-height:16px;margin-top:5px;padding:0 0 0 20px;position:relative}.tyk-form-control__error-message:before{content:"!";background:#ff6c7d;color:#fff;font-family:OpenSans-Bold;border-radius:8px;display:inline-block;margin-right:5px;padding:0 7px}.tyk-input-group{align-items:center;display:flex;outline:none}.tyk-input-group__addon{align-items:center;background-color:#fff;border:2px solid #c3c3e5;display:flex;height:39px;padding:10px 20px}.tyk-input-group__addon:first-child{border-right:0}.tyk-input-group__addon:last-child{border-left:0}.tyk-form-control{font-family:OpenSans-SemiBold;font-size:14px;line-height:19px;border:2px solid #c3c3e5;background-color:#fff;color:#505071;display:block;height:39px;padding:10px 20px;transition:all .2s linear;width:100%}.tyk-form-control[disabled]{background-color:#ededf9;cursor:not-allowed}.tyk-form-control[disabled] .tyk-input-group__addon{background-color:#ededf9}.tyk-form-control::placeholder{font-family:OpenSans-SemiBold;color:#a2a2cc}.tyk-form-control:focus{outline:none;border:2px solid #36364c}.tyk-form-control__help-block{color:#36364c;font-style:normal;font-family:OpenSans-regular;font-size:12px;line-height:16px;padding:0 0 0 20px;margin:5px 0 0}select{border-radius:0;-webkit-appearance:none}.inline-form-wrapper{align-items:center;display:flex;width:100%}.inline-form-wrapper .inline-form{width:100%}.inline-form-wrapper>button{margin-left:10px;margin-bottom:20px}.tyk-checkbox,.tyk-radio{align-items:center;display:flex;margin:10px 0}.tyk-checkbox label,.tyk-radio label{font-family:OpenSans-SemiBold}.tyk-checkbox input,.tyk-radio input{margin:0 5px 0 0}.tyk-checkbox--inline,.tyk-radio--inline{display:inline-flex;margin-left:15px}.tyk-checkbox--inline:first-child,.tyk-radio--inline:first-child{margin-left:0}.tyk-inline-form{align-items:center;display:flex;flex-wrap:wrap}.tyk-inline-form .tyk-form-group{flex:1;margin-left:20px;min-width:200px}.tyk-inline-form .tyk-form-group:first-child{margin-left:0}.tyk-inline-form>.tyk-button{margin-left:20px;margin-bottom:20px}.tyk-accordion__item-header>button,.tyk-accordion__trigger{background:none;border:none;cursor:pointer;display:flex;font-size:14px;outline:none;padding:15px;width:100%}.tyk-accordion__item-header>button .tyk-icon,.tyk-accordion__trigger .tyk-icon{margin-left:auto}.tyk-accordion__item{display:grid}.tyk-accordion__item--trigger-position-left{grid-template-columns:40px auto;grid-template-areas:"trigger header" "trigger content"}.tyk-accordion__item--trigger-position-right{grid-template-columns:auto 40px;grid-template-areas:"header trigger" "content trigger"}.tyk-accordion__item--trigger-in-header{grid-template-columns:auto;grid-template-areas:"header" "content"}.tyk-accordion__trigger-wrapper{grid-area:trigger;display:flex;align-items:flex-start;justify-content:center}.tyk-accordion__trigger-wrapper .tyk-icon{margin-left:auto;margin-right:auto}.tyk-accordion__item-header{grid-area:header}.tyk-accordion__trigger--disabled{color:#e1e1e1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger{align-items:center;display:flex}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>div{flex:1}.tyk-accordion__item-header.tyk-accordion__arrow-trigger>button{margin-left:auto;width:auto}.tyk-accordion__item-content{grid-area:content}.tyk-button{background-color:transparent;border:none;color:#fff;cursor:pointer;display:inline-block;font-family:OpenSans-Bold;text-align:center;text-transform:uppercase;text-decoration:none;transition:all .2s linear;user-select:none;vertical-align:middle;white-space:nowrap;padding:8px 23px;font-size:14px;line-height:22px;border-radius:20px}.tyk-button+.tyk-button,.tyk-button+.tyk-dropdown,.tyk-button+.tyk-toggle,.tyk-button i+span,.tyk-button span+i{margin-left:10px}.tyk-button.disabled{cursor:not-allowed;opacity:.7}.tyk-button:hover{color:#fff;text-decoration:none}.tyk-button:focus{outline:none}.tyk-button--white{background-color:#fff;color:#36364c;border:2px solid transparent}.tyk-button--white:hover{background-color:#43435b;color:#fff}.tyk-button--primary{background-color:#ededf9;color:#505071;border:2px solid #ededf9}.tyk-button--primary:hover{background-color:#c3c3e5;color:#505071}.tyk-button--primary-link{background-color:transparent;border-color:transparent;color:#a2a2cc}.tyk-button--primary-link:hover{background-color:transparent;color:#a2a2cc;text-decoration:underline}.tyk-button--primary-outline{border:2px solid #ededf9;background-color:#fff;color:#a2a2cc}.tyk-button--primary-outline:hover{background-color:#ededf9;color:#a2a2cc}.tyk-button--primary-outline.disabled{color:#ededf9}.tyk-button--primary-outline.disabled:hover{background-color:#fff;color:#ededf9}.tyk-button--primary-gradient{border-image:linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc) 0 round;background:transparent linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--primary-gradient:active,.tyk-button--primary-gradient:active:focus,.tyk-button--primary-gradient:hover{border-image:linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc) 0 round;background:transparent linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--primary-gradient:active.disabled,.tyk-button--primary-gradient:active:focus.disabled,.tyk-button--primary-gradient:hover.disabled{border-image:linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc) 0 round;background:transparent linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success{background-color:#00d9ba;color:#fff;border:2px solid #00d9ba}.tyk-button--success:hover{background-color:#00b798;color:#fff}.tyk-button--success-link{background-color:transparent;border-color:transparent;color:#00d9ba}.tyk-button--success-link:hover{background-color:transparent;color:#00d9ba;text-decoration:underline}.tyk-button--success-outline{border:2px solid #00d9ba;background-color:#fff;color:#00d9ba}.tyk-button--success-outline:hover{background-color:#00d9ba;color:#fff}.tyk-button--success-outline.disabled{color:#00d9ba}.tyk-button--success-outline.disabled:hover{background-color:#fff;color:#00d9ba}.tyk-button--success-gradient{border-image:linear-gradient(90deg,#00d9ba,#00b798,#00d9ba) 0 round;background:transparent linear-gradient(90deg,#00d9ba,#00b798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--success-gradient:active,.tyk-button--success-gradient:active:focus,.tyk-button--success-gradient:hover{border-image:linear-gradient(90deg,#00d9ba,#00b798,#00d9ba) 0 round;background:transparent linear-gradient(90deg,#00d9ba,#00b798,#00d9ba);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--success-gradient:active.disabled,.tyk-button--success-gradient:active:focus.disabled,.tyk-button--success-gradient:hover.disabled{border-image:linear-gradient(90deg,#00d9ba,#00b798,#00d9ba) 0 round;background:transparent linear-gradient(90deg,#00d9ba,#00b798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger{background-color:#ff6c7d;color:#fff;border:2px solid #ff6c7d}.tyk-button--danger:hover{background-color:#ea4766;color:#fff}.tyk-button--danger-link{background-color:transparent;border-color:transparent;color:#ff6c7d}.tyk-button--danger-link:hover{background-color:transparent;color:#ff6c7d;text-decoration:underline}.tyk-button--danger-outline{border:2px solid #ff6c7d;background-color:#fff;color:#ff6c7d}.tyk-button--danger-outline:hover{background-color:#ff6c7d;color:#fff}.tyk-button--danger-outline.disabled{color:#ff6c7d}.tyk-button--danger-outline.disabled:hover{background-color:#fff;color:#ff6c7d}.tyk-button--danger-gradient{border-image:linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d) 0 round;background:transparent linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--danger-gradient:active,.tyk-button--danger-gradient:active:focus,.tyk-button--danger-gradient:hover{border-image:linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d) 0 round;background:transparent linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--danger-gradient:active.disabled,.tyk-button--danger-gradient:active:focus.disabled,.tyk-button--danger-gradient:hover.disabled{border-image:linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d) 0 round;background:transparent linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning{background-color:#d6b218;color:#fff;border:2px solid transparent}.tyk-button--warning:hover{background-color:#b49514;color:#fff}.tyk-button--warning-link{background-color:transparent;border-color:transparent;color:#d6b218}.tyk-button--warning-link:hover{background-color:transparent;color:#d6b218;text-decoration:underline}.tyk-button--warning-outline{border:2px solid #d6b218;background-color:#fff;color:#d6b218}.tyk-button--warning-outline:hover{background-color:#d6b218;color:#fff}.tyk-button--warning-outline.disabled{color:#d6b218}.tyk-button--warning-outline.disabled:hover{background-color:#fff;color:#d6b218}.tyk-button--warning-gradient{border-image:linear-gradient(90deg,#d6b218,#ffe885,#d6b218) 0 round;background:transparent linear-gradient(90deg,#d6b218,#ffe885,#d6b218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--warning-gradient:active,.tyk-button--warning-gradient:active:focus,.tyk-button--warning-gradient:hover{border-image:linear-gradient(90deg,#d6b218,#ffe885,#d6b218) 0 round;background:transparent linear-gradient(90deg,#d6b218,#ffe885,#d6b218);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--warning-gradient:active.disabled,.tyk-button--warning-gradient:active:focus.disabled,.tyk-button--warning-gradient:hover.disabled{border-image:linear-gradient(90deg,#d6b218,#ffe885,#d6b218) 0 round;background:transparent linear-gradient(90deg,#d6b218,#ffe885,#d6b218);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--info{background-color:#82bbc6;color:#fff;border:2px solid #82bbc6}.tyk-button--info:hover{background-color:#68adba;color:#fff}.tyk-button--info-link{background-color:transparent;border-color:transparent;color:#82bbc6}.tyk-button--info-link:hover{background-color:transparent;color:#82bbc6;text-decoration:underline}.tyk-button--info-outline{border:2px solid #82bbc6;background-color:#fff;color:#82bbc6}.tyk-button--info-outline:hover{background-color:#82bbc6;color:#fff}.tyk-button--info-outline.disabled{color:#82bbc6}.tyk-button--info-outline.disabled:hover{background-color:#fff;color:#82bbc6}.tyk-button--info-gradient{border-image:linear-gradient(90deg,#82bbc6,#d3ebef,#82bbc6) 0 round;background:transparent linear-gradient(90deg,#82bbc6,#d3ebef,#82bbc6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--info-gradient:active,.tyk-button--info-gradient:active:focus,.tyk-button--info-gradient:hover{border-image:linear-gradient(90deg,#82bbc6,#d3ebef,#82bbc6) 0 round;background:transparent linear-gradient(90deg,#82bbc6,#d3ebef,#82bbc6);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--info-gradient:active.disabled,.tyk-button--info-gradient:active:focus.disabled,.tyk-button--info-gradient:hover.disabled{border-image:linear-gradient(90deg,#82bbc6,#d3ebef,#82bbc6) 0 round;background:transparent linear-gradient(90deg,#82bbc6,#d3ebef,#82bbc6);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-button--default{background-color:#36364c;color:#fff;border:2px solid #36364c}.tyk-button--default:hover{background-color:#505071;color:#fff}.tyk-button--default-link{background-color:transparent;border-color:transparent;color:#505071}.tyk-button--default-link:hover{background-color:transparent;color:#505071;text-decoration:underline}.tyk-button--default-outline{border:2px solid #36364c;background-color:#fff;color:#36364c}.tyk-button--default-outline:hover{background-color:#36364c;color:#fff}.tyk-button--default-outline.disabled{color:#36364c}.tyk-button--default-outline.disabled:hover{background-color:#fff;color:#36364c}.tyk-button--default-gradient{border-image:linear-gradient(90deg,#36364c,#505071,#36364c) 0 round;background:transparent linear-gradient(90deg,#36364c,#505071,#36364c);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--default-gradient:active,.tyk-button--default-gradient:active:focus,.tyk-button--default-gradient:hover{border-image:linear-gradient(90deg,#36364c,#505071,#36364c) 0 round;background:transparent linear-gradient(90deg,#36364c,#505071,#36364c);background-position:100% 0;background-size:200% auto;background-clip:border-box}.tyk-button--default-gradient:active.disabled,.tyk-button--default-gradient:active:focus.disabled,.tyk-button--default-gradient:hover.disabled{border-image:linear-gradient(90deg,#36364c,#505071,#36364c) 0 round;background:transparent linear-gradient(90deg,#36364c,#505071,#36364c);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-button--sm{padding:3px 15px;font-size:12px;line-height:16px;border-radius:20px}.tyk-button--md{padding:8px 23px;font-size:14px;line-height:19px;border-radius:20px}.tyk-button--lg{padding:13px 23px;font-size:16px;line-height:22px;border-radius:20px}.tyk-button--icon-only{border-radius:18px;padding:0;line-height:20px;width:24px}.tyk-button--icon-only:hover{border-radius:18px}.tyk-button--fit{height:auto;width:auto;line-height:normal}.tyk-button--no-style,.tyk-button--no-style:hover{background:transparent;border:none;color:#505071}.tyk-button-group__wrapper{display:inline-block;position:relative;vertical-align:middle}.tyk-button-group__wrapper label{font-family:OpenSans-SemiBold}.tyk-button-group__wrapper .tyk-button-group{display:flex}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:first-child)>.tyk-button{border-top-left-radius:0;border-bottom-left-radius:0}.tyk-button-group__wrapper .tyk-button-group>.tyk-button-group:not(:last-child)>.tyk-button{border-top-right-radius:0;border-bottom-right-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button{border-radius:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-button,.tyk-button-group__wrapper .tyk-button-group .tyk-button+.tyk-dropdown{margin-left:0}.tyk-button-group__wrapper .tyk-button-group .tyk-button:first-child{border-top-left-radius:20px;border-bottom-left-radius:20px}.tyk-button-group__wrapper .tyk-button-group .tyk-button:last-child{border-top-right-radius:20px;border-bottom-right-radius:20px}.tyk-chart__wrapper{position:relative}.tyk-chart--loading-chart,.tyk-chart--no-data{filter:blur(10px);-webkit-filter:blur(10px)}.tyk-checkbox label{align-items:center;display:flex;padding-left:20px}.tyk-checkbox label input{margin-left:-20px}.tyk-checkbox--theme-light.tyk-checkbox--is-disabled label,.tyk-checkbox--theme-light label{color:#fff}.tyk-checkbox--is-disabled label,.tyk-checkbox--is-disabled p{cursor:not-allowed;opacity:.5}.collapse-exit,.collapse-exit-active,.collapse-exit-done{height:0}.collapse-wrapper{overflow:hidden;transition:all .2s}.collapse-horizontal-exit,.collapse-horizontal-exit-active,.collapse-horizontal-exit-done{width:0}.collapse-horizontal-enter,.collapse-horizontal-enter-active,.collapse-horizontal-enter-done{width:100%}.tyk-combobox.disabled .tyk-form-control{background-color:#ededf9;border:2px solid #c3c3e5;color:#ededf9;cursor:not-allowed}.tyk-combobox ul{list-style-type:none;margin-top:0;height:auto}.tyk-combobox>.tyk-form-control__wrapper>.tyk-form-control{margin:0;padding:0}.tyk-combobox>.tyk-form-control__wrapper>.tyk-form-control--with-tags{cursor:auto;overflow:hidden;padding-right:45px;padding-bottom:5px;position:relative}.tyk-combobox>.tyk-form-control{cursor:pointer}.tyk-combobox .tyk-combobox--with-tags__button-down{bottom:0;border-radius:0;color:#505071;font-size:16px;padding:0 15px;position:absolute;right:0;top:0;width:auto}.tyk-form-group--rounded-corners .tyk-combobox .tyk-combobox--with-tags__button-down{border-radius:18px}.tyk-combobox .pill{background-color:#f0f0f0;border-radius:10px;color:#505071;float:left;margin-left:10px;margin-top:6px;padding:5px 10px}.tyk-combobox .pill button{background:none;border:none;cursor:pointer;width:23px}.tyk-combobox .pill i{margin-right:5px}.tyk-combobox__search-box{float:left;padding-right:45px;height:35px;padding-bottom:5px}.tyk-combobox__search-box input{border:none}.tyk-combobox__search-box input:focus{outline:none}.tyk-combobox .tyk-combobox__placeholder{color:#a2a2cc;align-items:center;display:flex;overflow:hidden;white-space:nowrap;padding:12px 20px;width:100%}.tyk-combobox .tyk-combobox__placeholder>i{margin-left:auto}.tyk-combobox__list{background-color:#fff;border:2px solid #c3c3e5;display:none;list-style-type:none;max-height:255px;margin:0;overflow-y:auto;padding:0;position:absolute;z-index:5}.tyk-combobox__list.tyk-form-group--rounded-corners{border-radius:18px}.tyk-combobox__list--has-tags{max-height:195px}.tyk-combobox__list--opened{display:block}.tyk-combobox__list li{border-top:1px solid #c3c3e5;cursor:pointer;padding:10px 15px;transition:all .2s}.tyk-combobox__list li:first-child{border-top:none}.tyk-combobox__list li .tyk-form-control{border-color:#c3c3e5}.tyk-combobox__list li.active,.tyk-combobox__list li:hover{background-color:#c3c3e5}.tyk-combobox__list li.disabled{color:#c3c3e5;background-color:initial}.tyk-combobox__list li.combobox-search__container{background-color:#fff;position:-webkit-sticky;position:sticky;top:0}.tyk-combobox__list li i{margin-right:5px}.tyk-combobox2{outline:none}.tyk-combobox2.disabled .tyk-form-control{border:2px solid #c3c3e5;background-color:#ededf9;color:#505071;cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__current-values .tyk-pill--combobox button,.tyk-combobox2.disabled:not(.is-expand-mode) .tyk-combobox2__values-container-trigger{cursor:not-allowed}.tyk-combobox2.disabled .tyk-combobox2__entry-field{background-color:transparent;cursor:not-allowed}.tyk-combobox2 .tyk-form-control{display:flex;flex-direction:row;position:relative;min-height:40px;height:auto;padding:0}.tyk-combobox2 .tyk-form-control:focus-within{outline:none;border:2px solid #36364c}.tyk-combobox2__current-values{display:flex;flex-grow:1;flex-wrap:wrap;padding-top:2px;padding-bottom:2px;padding-left:10px;max-width:calc(100% - 40px)}.tyk-combobox2__current-values.expand-mode{max-height:1000px;overflow:hidden;transition:max-height 1s ease}.tyk-combobox2__current-values--collapsed.expand-mode{max-height:38px;transition:max-height .2s ease}.tyk-combobox2__current-values .tyk-pill--combobox{margin-top:3px;margin-bottom:3px;background-color:#f0f0f0;border-radius:10px;color:#505071;padding:5px 10px;max-width:100%;max-height:26px}.tyk-combobox2__current-values .tyk-pill--combobox button{background:none;border:none;cursor:pointer;width:23px;outline:none}.tyk-combobox2__current-values .tyk-pill--combobox button+span{margin-left:0}.tyk-combobox2__current-values .tyk-pill--combobox span{overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__current-values .tyk-pill--combobox i{margin-right:5px}.tyk-combobox2__entry-field{border:none;line-height:30px}.tyk-combobox2__entry-field:active,.tyk-combobox2__entry-field:focus{border:none;outline:none}.tyk-combobox2__entry-field::placeholder{color:#a2a2cc;font-family:OpenSans-SemiBold}.tyk-combobox2__text-value{font-family:OpenSans-SemiBold;font-size:14px;line-height:19px;padding:9px 5px;width:100%;overflow:hidden;text-overflow:ellipsis;line-height:1;outline:none}.tyk-combobox2__text-value.overflow-single{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tyk-combobox2__text-value.is-placeholder{color:#a2a2cc;font-family:OpenSans-SemiBold}.tyk-combobox2__values-container-trigger{position:relative;flex-basis:40px;display:flex;justify-content:center;align-items:center;cursor:pointer;outline:none;transition:all .2s}.tyk-combobox2__values-container-trigger--expanded{transform:rotate(180deg)}.tyk-combobox2__values-container-trigger .tyk-icon{height:14px}.tyk-form-group--rounded-corners .tyk-combobox2-disabled-overlay{border-radius:16px}.tyk-combobox2__combobox-dropdown{display:flex;flex-direction:column;border:2px solid #c3c3e5;background-color:#fff}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{border-radius:18px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search{background-color:#fff;position:sticky;top:0;padding:10px 20px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-search+.combobox-list{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list{max-height:255px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li{display:flex;cursor:pointer;padding:9px 20px;transition:all .2s;font-family:OpenSans-SemiBold}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.active,.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li:hover{background-color:#ededf9}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li.disabled{color:#c3c3e5;background-color:initial}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li+li{border-top:1px solid #c3c3e5}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li i{margin-right:5px}.tyk-combobox2__combobox-dropdown .tyk-combobox2__combobox-list li .item-name{overflow:hidden;text-overflow:ellipsis;line-height:16px}.tyk-combobox2__values-container-trigger{color:#505071}.tyk-combobox2__combobox-dropdown.tyk-form-group--rounded-corners{z-index:1081}.tyk-copy-to-clipboard{position:absolute;left:-1000px;top:-1000px}.flatpickr-day.endRange,.flatpickr-day.endRange.inRange,.flatpickr-day.endRange.nextMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.endRange:focus,.flatpickr-day.endRange:hover,.flatpickr-day.selected,.flatpickr-day.selected.inRange,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.selected:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange,.flatpickr-day.startRange.inRange,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.startRange:focus,.flatpickr-day.startRange:hover{background:#00d9ba!important;border-color:#00d9ba!important}.tyk-dropdown{display:inline-block}.tyk-dropdown+.tyk-button,.tyk-dropdown+.tyk-dropdown,.tyk-dropdown+.tyk-toggle{margin-left:10px}.tyk-dropdown--block{left:20px;right:20px}.tyk-dropdown--relative{left:auto;right:auto}.tyk-dropdown--custom{padding:20px 25px}.tyk-dropdown label{display:block}.tyk-dropdown__trigger{position:relative}.tyk-dropdown.theme-list .tyk-button{background:#fff;border:2px solid #36364c;border-radius:18px;color:#505071}.tyk-dropdown.theme-list .tyk-button:active,.tyk-dropdown.theme-list .tyk-button:active:focus,.tyk-dropdown.theme-list .tyk-button:focus,.tyk-dropdown.theme-list .tyk-button:hover{background:#fff;border-color:#43435b;color:#505071}.tyk-dropdown-menu{background:#fff;border:2px solid #c3c3e5;border-radius:18px;-webkit-filter:drop-shadow(1px 2px 1px rgba(0,0,0,.1));filter:drop-shadow(1px 2px 1px rgba(0,0,0,.1));list-style-type:none;margin:3px 0 0;overflow:hidden;padding:0;z-index:1000}.tyk-dropdown-menu .tyk-panel{margin:0}.tyk-dropdown-menu.opened{display:flex;flex-direction:column;position:absolute}.tyk-dropdown-menu>li{background:#fff;border-bottom:1px solid #fff;display:flex;position:relative;z-index:7}.tyk-dropdown-menu>li:last-child{border:none}.tyk-dropdown-menu>li i{left:7px;position:absolute;top:9px}.tyk-dropdown-menu>li>a{cursor:pointer;color:#505071;display:flex;font-size:12px;padding:7px 24px;text-transform:uppercase;text-decoration:none;width:100%}.tyk-dropdown-menu>li>a:hover{color:#505071}.tyk-dropdown-menu>li>a .badge{background:#505071;color:#fff;font-size:10px;margin-top:-4px;margin-left:6px}.tyk-dropdown-menu>li>a:hover{background-color:#ededf9;text-decoration:none}.tyk-dropdown--relative.opened{position:relative}.tyk-editable-list__submit-btn{white-space:nowrap}.tyk-editable-list__form{align-items:center;display:flex}.tyk-editable-list__form .tyk-form-group{margin-bottom:0}.tyk-editable-list__form--sticked{margin-left:0}.tyk-editable-list__form--sticked button{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:3px;border-bottom-right-radius:3px;padding:10px 15px 11px}.tyk-editable-list__form span.inline{margin-top:0}.tyk-editable-list__form>span{margin-left:15px}.tyk-editable-list__form>span.inline-with-label{align-self:flex-end}.tyk-editable-list__header{padding-top:15px;border-bottom:1px solid #43435b;color:#505071;font-size:11px;padding-bottom:15px;text-transform:uppercase}.tyk-editable-list__header .tyk-row{margin:0}.tyk-editable-list-items{overflow:hidden;list-style:none;padding:20px 0 0}.tyk-editable-list-items .edit-mode-wrapper.table button{margin-top:23px}.tyk-editable-list-items .tyk-row{margin:0}.tyk-editable-list-items button[disabled]{cursor:not-allowed}.tyk-editable-list-items.tyk-editable-list-items--inline{align-items:center;color:#505071;display:flex;flex-wrap:wrap}.tyk-editable-list-items li{border-top:1px solid #c3c3e5;transition:all .2s linear}.tyk-editable-list-items li.tyk-editable-list-item--inline{background-color:#c3c3e5;border-radius:25px;border:none;color:#fff;float:left;font-family:OpenSans-SemiBold;margin-bottom:10px;margin-right:15px;padding:0 15px;white-space:nowrap}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-item__text{color:#505071;padding:5px 0}.tyk-editable-list-items li.tyk-editable-list-item--inline .tyk-editable-list-action__button.on-edit{margin-top:0}.tyk-editable-list-items li:first-child{border-top:none}.tyk-editable-list-items li .tyk-editable-list-item__text{display:flex;padding:10px 0}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child,.tyk-editable-list-items li .tyk-editable-list-item__text>span{flex-grow:1}.tyk-editable-list-items li .tyk-editable-list-item__text>div:first-child .error-message{margin:0}.tyk-editable-list-items li .tyk-editable-list-items{overflow:hidden;padding-bottom:10px}.tyk-editable-list-items li .tyk-editable-list{border-top:5px solid #43435b;background:#ededf9;padding:10px 15px}.tyk-editable-list-items .tyk-editable-list-item__text{display:block;word-wrap:break-word;word-break:break-all}.tyk-editable-list-items .tyk-editable-list-action__button{border:none;background:transparent}.tyk-editable-list-items .tyk-editable-list-action__button.on-edit{margin-left:10px}.tyk-editable-list-items .tyk-editable-list-item-controls{flex-grow:0;text-align:right}.tyk-editable-list-item__controls{text-align:right}.tyk-editable-list-items.table{background-color:#fff;border-radius:18px;border:2px solid #c3c3e5;padding:0!important}.tyk-editable-list-items.table li{border-color:#c3c3e5}.tyk-editable-list-items.table li:hover{background:#ededf9}.tyk-editable-list-items.table .tyk-editable-list-item__text{background:transparent}.tyk-editable-list-items.table .tyk-editable-list-action__button{border-radius:6px;cursor:pointer;margin-right:10px}.tyk-editable-list__header{background-color:#fff;border-top-left-radius:18px;border-top-right-radius:18px;border:2px solid #c3c3e5;border-bottom:1px solid #c3c3e5!important;color:#505071!important;font-family:OpenSans-Bold;margin-top:10px}.tyk-editable-list__header+.tyk-editable-list-items.table{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.tyk-file-input__wrapper{position:relative}.tyk-file-input__wrapper>input{padding:6px 20px}.tyk-file-input__wrapper>button{background:none;border:none;cursor:pointer;position:absolute;right:15px;top:9px}.tyk-fixed-wrapper{left:0;position:sticky;right:0;top:0;z-index:8}.tyk-fixed-wrapper--scrolled{box-shadow:2px 2px 5px rgba(0,0,0,.1)}.floating-container{position:fixed;top:-9999px;overflow:auto;z-index:1000}.tyk-icon+.tyk-icon{margin-left:10px}.tyk-infinite-scroller{height:100%;overflow:hidden;position:relative}.tyk-infinite-scroller .loading{background:linear-gradient(180deg,hsla(0,0%,100%,0),#fff);justify-content:center;bottom:0;display:flex;left:0;padding:15px 0;right:0;top:auto;width:100%}.tyk-infinite-scroller__wrapper{height:100%;overflow-y:auto}.tyk-info-note{border-radius:0;position:relative}.tyk-info-note p+p{margin-top:15px}.tyk-info-note:after{content:"";border-color:transparent #82bbc6 transparent transparent;border-style:solid;border-width:0 20px 20px 0;height:0;position:absolute;right:0;top:0;width:0}.tyk-info-note .tyk-message{border-radius:0;padding-top:40px;padding-bottom:40px}.tyk-loading__wrapper{background:hsla(0,0%,100%,.6);bottom:0;position:absolute;left:0;right:0;top:0;z-index:99}.loader-wrapper{min-height:100px;position:relative}.loading{position:absolute;top:calc(50% - map-get($spacing, "sm"));left:50%}.loading.relative{left:auto;padding:25px;position:relative;text-align:center;top:auto;width:100%}.loading-bar{display:inline-block;width:4px;height:20px;border-radius:4px;animation:loading 1s ease-in-out infinite;margin-left:2px}.loading-bar:first-child{animation-delay:0;background-color:#00d9ba;opacity:1}.loading-bar:nth-child(2){animation-delay:.09s;background-color:#00d9ba;opacity:.8}.loading-bar:nth-child(3){animation-delay:.18s;background-color:#00d9ba;opacity:.6}.loading-bar:nth-child(4){animation-delay:.27s;background-color:#00d9ba;opacity:.4}@keyframes loading{0%{transform:scale(1)}20%{transform:scaleY(2.2)}40%{transform:scale(1)}}.tyk-list{border:2px solid #c3c3e5;border-radius:18px;font-size:14px;list-style-type:none;margin:0;max-height:191px;padding:0;overflow:auto}.tyk-list--with-inline-label{display:flex}.tyk-list--with-inline-label>label{margin-right:20px}.tyk-list li{border-bottom:1px solid #c3c3e5;padding:10px 20px;font-family:OpenSans-SemiBold}.tyk-list li:last-child{border:none}.tyk-list--default{border-color:#c3c3e5}.tyk-list--primary{border-color:#a2a2cc}.tyk-list--primary li{border-color:#ededf9;color:#505071}.tyk-list--primary-light{border-color:#ededf9}.tyk-list--primary-light li{border-color:#ededf9;color:#505071}.tyk-list--success{color:#00d9ba}.tyk-list--success,.tyk-list--success li{border-color:#00d9ba}.tyk-list--danger{border-color:#ff6c7d;color:#505071}.tyk-list--danger li{border-color:#ffbbc5}ul.tyk-list--inline{align-items:center;display:flex}ul.tyk-list--inline li{padding:0 10px}ul.tyk-list--inline.tyk-list--with-separator li:not(:first-child){border-left:1px solid #36364c}.tyk-message{border-radius:18px;margin-bottom:20px;padding:20px}.tyk-message--default{background-color:#c3c3e5;border:2px solid #36364c;color:#505071}.tyk-message--info{background-color:#d3ebef;border:2px solid #82bbc6;color:#505071}.tyk-message--success{background-color:#c2f2e9;border:2px solid #00b798;color:#505071}.tyk-message--warning{background-color:#ffe885;border:2px solid #d6b218;color:#505071}.tyk-message--danger{background-color:#f5ccd1;border:2px solid #ea4766;color:#505071}.tyk-modal{align-items:center;bottom:0;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:-1}.tyk-modal .tyk-panel{border:2px solid #43435b;box-shadow:none;-webkit-box-shadow:none}.tyk-modal .tyk-modal__dialog{opacity:0;transition:all .2s ease}.tyk-modal.opened{display:flex;z-index:1080}.tyk-modal.opened .tyk-modal__dialog{opacity:1;pointer-events:all}.tyk-modal.appear-enter-done .tyk-modal__dialog{opacity:1;margin-top:0}.tyk-modal__dialog{opacity:0;margin:-5% auto 0;pointer-events:all;transition:all .2s linear;width:85%}@media only screen and (min-width:768px){.tyk-modal__dialog{width:600px}}@media only screen and (min-width:768px){.tyk-modal__dialog.tyk-modal--lg{width:800px}}.tyk-modal__content{background:#fff;border-radius:18px;display:flex;flex-direction:column;position:relative;width:100%}.tyk-modal__header{align-items:center;border-bottom:1px solid #ededf9;display:flex;padding:25px;width:100%}.tyk-modal__header button{margin-left:auto;padding:0 5px}.tyk-modal__body{padding:25px}.tyk-modal__body.no-padding{padding:0}.tyk-modal__footer{align-items:center;border-top:1px solid #ededf9;display:flex;justify-content:flex-end;padding:25px}.tyk-modal__footer>:not(:first-child){margin-left:5px}.tyk-modal__title{font-family:OpenSans-SemiBold;font-weight:500;margin:0;width:100%}.tyk-modal__backdrop{background-color:#505071;border:none;bottom:0;display:none;left:0;position:fixed;right:0;top:0;width:100%;z-index:1079}.tyk-modal__backdrop.opened{display:block;opacity:.5;transition:opacity .2s ease}.tyk-modal__backdrop.fade-enter-done{opacity:.5}.tyk-multiselect{align-items:flex-start;border-radius:18px;flex-wrap:wrap;display:flex;margin-bottom:20px;width:100%}.tyk-multiselect .input-group .input-group-addon+.form-control{border-width:1px!important;border-left:none!important;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.tyk-multiselect .input-group .input-group-addon{background:transparent!important;border-width:1px!important;border-right:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.tyk-multiselect.has-error{border:2px solid #ff6c7d}.tyk-multiselect__header{background-color:#36364c;border-top-left-radius:18px;border-top-right-radius:18px;color:#fff;display:flex;width:100%}.tyk-multiselect__header>div{padding:10px 15px;width:50%}.tyk-multiselect__panel-wrapper{border:2px solid #c3c3e5;border-top:none;border-bottom-left-radius:18px;border-bottom-right-radius:18px;display:flex;flex:1;height:265px;width:100%}.tyk-multiselect__panel{display:flex;flex-direction:column;margin:0 0 0 -1px;position:relative;width:calc(50% + 1px)}.tyk-multiselect__panel:last-child{border-left:2px solid #c3c3e5}.tyk-multiselect__panel:last-child .tyk-form-group{margin-left:-1px;width:calc(100% + 2px)}.tyk-multiselect__panel .tyk-message{margin:20px 20px 0}.tyk-multiselect__list{list-style-type:none;margin:0;padding:0}.tyk-multiselect__list--scroll{height:100%;overflow-y:auto}.tyk-multiselect__list>li{border-bottom:2px solid #c3c3e5;display:flex;flex-direction:column;padding:10px 15px}.tyk-multiselect__list>li>div{align-items:start;display:flex;width:100%}.tyk-multiselect__list>li .loading{justify-content:center}.tyk-multiselect__list>li:last-child{border-bottom:none}.tyk-multiselect-item__name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tyk-multiselect .tyk-form-group{margin:0}.tyk-multiselect .tyk-multiselect-item__controls{display:flex;margin-left:auto;flex-wrap:nowrap}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button{color:#505071;margin-left:5px}.tyk-multiselect .tyk-multiselect-item__controls .tyk-button:last-child{margin-left:0}.tyk-navigation{background-color:#fff;height:100%;overflow:auto;padding:0;width:100%}.tyk-navigation .tyk-navigation-item{width:100%}.tyk-navigation .tyk-navigation-item a{color:#505071;display:flex;padding:10px 20px;text-decoration:none;transition:all .2s ease}.tyk-navigation .tyk-navigation-item a:hover{background-color:#a2a2cc;color:#fff}.tyk-navigation .tyk-navigation-item a.active{background-color:#505071;color:#fff}.tyk-nav-bar{align-items:center;border:none;background-color:#fff;font-family:OpenSans-regular;color:#505071;margin:0;padding:0 20px;width:100%;z-index:8;transition:all .2s linear}.tyk-nav-bar__pre{align-self:flex-end;color:#505071;flex-basis:100%}.tyk-nav-bar__pre a{font-family:OpenSans-Bold;font-size:12px;line-height:16px;color:#505071}.tyk-nav-bar.tyk-nav-bar__with-tabs .tyk-tabs--default>ul li button{padding-top:0}@media screen and (max-width:1024px){.tyk-nav-bar{padding-left:20px}.menu-opened .tyk-nav-bar{transform:translate(245px)}}.tyk-nav-bar h1{color:#505071}.tyk-nav-bar h4{margin:0}.tyk-nav-bar .tyk-nav-bar__wrapper{align-items:center;padding-bottom:0;display:flex;flex-wrap:wrap;height:92px}.tyk-nav-bar .tyk-nav-bar__wrapper.tyk-nav-bar--align-top{align-items:flex-start}@media screen and (max-width:1024px){.tyk-nav-bar .tyk-nav-bar__wrapper{padding-left:0}}.tyk-nav-bar .tyk-nav-bar__wrapper h1{font-size:25px;font-family:smoolthan_bold;line-height:30px;margin:0;padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper h4{padding-right:10px}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__container{align-items:center;display:flex;flex-grow:1;justify-content:space-between}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__left{flex-grow:1}.tyk-nav-bar .tyk-nav-bar__wrapper .tyk-nav-bar__right{margin-left:auto}.tyk-pagination{display:flex;list-style-type:none;margin:10px 0;padding:0}.tyk-pagination li{align-items:center;display:flex}.tyk-pagination li:first-child button{border-top-left-radius:18px;border-bottom-left-radius:18px}.tyk-pagination li:last-child button{border-top-right-radius:18px;border-bottom-right-radius:18px}.tyk-pagination span{margin:0 10px}.tyk-pagination button{background:#fff;border:none;font-size:14px;font-family:OpenSans-Bold;cursor:pointer;color:#36364c;margin-left:-1px;padding:10px 15px}.tyk-pagination button:hover{background-color:#c2f2e9}.tyk-pagination .active button{background-color:#00d9ba;color:#fff}.tyk-panel{background:#fff;border-radius:0;margin-bottom:20px;font-family:OpenSans-SemiBold;position:relative}.tyk-panel.has-error,.tyk-panel .tyk-panel.has-error{border:2px solid #ff6c7d}.tyk-panel__header{align-items:center;border-bottom:1px solid #e1e1e1;display:flex;font-family:OpenSans-regular}.tyk-panel__header>.tyk-icon,.tyk-panel__header>.tyk-tooltip__wrapper{margin-left:5px}.tyk-panel .tyk-panel{border:2px solid #c3c3e5;box-shadow:none;-webkit-box-shadow:none}.tyk-panel--blank.tyk-panel--collapsed{margin-bottom:20px}.tyk-panel--blank.tyk-panel--collapsed .tyk-panel__header{margin-bottom:0}.tyk-panel--blank .tyk-panel__header{margin-bottom:-20px;padding:20px 25px;background-color:#fff;border:none;color:#505071;font-size:17px;line-height:23px}.tyk-panel--primary{background-color:transparent}.tyk-panel--primary .tyk-panel__header{background-color:#a2a2cc;color:#fff;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__body{background-color:#fff;border:none;color:#505071;font-size:17px;line-height:23px}.tyk-panel--primary .tyk-panel__header{border:none}.tyk-panel--primary .tyk-form-group label,.tyk-panel--primary .tyk-toggle .tyk-toggle__label{color:#505071}.tyk-panel--success .tyk-panel__header{background-color:#00d9ba;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--danger .tyk-panel__header{background-color:#ff6c7d;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel--warning .tyk-panel__header{background-color:#d6b218;border:none;color:#fff;font-size:17px;line-height:23px}.tyk-panel__body{background-color:#fff;border-radius:0;font-family:OpenSans-regular;padding:25px;position:relative;transition:height .2s}.tyk-panel__body~.tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__body.no-padding{padding:0}.tyk-panel__header{border-radius:0;font-family:OpenSans-SemiBold;overflow:hidden;padding:10px 25px;position:relative}.tyk-panel--collapsed .tyk-panel__header,.tyk-panel__header{border-bottom-left-radius:0;border-bottom-right-radius:0}.tyk-panel__header~.tyk-panel__body{border-top-left-radius:0;border-top-right-radius:0}.tyk-panel__headerh3{margin:0}.tyk-panel__header ng-transclude{vertical-align:middle}.tyk-panel__header.collapsable{cursor:pointer}.tyk-panel__icon-collapse--right .tyk-panel__header.collapsable{padding-right:48px}.tyk-panel__icon-collapse--left .tyk-panel__header.collapsable{padding-left:48px}.tyk-panel__header .collapsable__arrow-right{font-size:14px;position:absolute;padding:10px;right:10px;top:calc(50% - 21px)}.tyk-panel__header .collapsable__arrow-left{font-size:14px;position:absolute;padding:8px 0 10px 20px;left:0;top:calc(50% - 21px)}.tyk-panel__footer{align-items:center;border-top:1px solid #ededf9;display:flex;justify-content:flex-end;padding:25px}.tyk-panel__footer>:not(:first-child){margin-left:5px}.tyk-pill{align-items:center;border-radius:18px;display:inline-flex;margin:0 0 10px;padding:6px 15px;font-family:OpenSans-SemiBold}.tyk-pill,.tyk-pill i{font-size:12px}.tyk-pill+.tyk-pill{margin-right:10px}.tyk-pill button+span,.tyk-pill span+button{margin-left:10px}.tyk-pill:first-child{margin-right:10px}.tyk-pill:last-child{margin-right:0}.tyk-pill--default{background-color:#36364c;color:#fff}.tyk-pill--default i{color:#fff}.tyk-pill--default-outline{box-shadow:inset 0 0 0 2px #36364c;color:#505071}.tyk-pill--default-outline i{color:#505071}.tyk-pill--primary{background-color:#a2a2cc;color:#fff}.tyk-pill--primary i{color:#fff}.tyk-pill--primary-outline{box-shadow:inset 0 0 0 2px #a2a2cc;color:#505071}.tyk-pill--primary-outline i{color:#505071}.tyk-pill--success{background-color:#00d9ba;color:#fff}.tyk-pill--success i{color:#fff}.tyk-pill--success-outline{box-shadow:inset 0 0 0 2px #00d9ba;color:#505071}.tyk-pill--success-outline i{color:#505071}.tyk-pill--danger{background-color:#ff6c7d;color:#fff}.tyk-pill--danger i{color:#fff}.tyk-pill--danger-outline{box-shadow:inset 0 0 0 2px #ff6c7d;color:#505071}.tyk-pill--danger-outline i{color:#505071}.tyk-pill--warning{background-color:#d6b218;color:#fff}.tyk-pill--warning i{color:#fff}.tyk-pill--warning-outline{box-shadow:inset 0 0 0 2px #d6b218;color:#505071}.tyk-pill--warning-outline i{color:#505071}.tyk-radio label{align-items:center;display:flex}.tyk-radio--is-disabled label,.tyk-radio--is-disabled p{cursor:not-allowed;opacity:.5}.tyk-select{background:transparent url(images/arrow_down.svg) no-repeat calc(100% - 15px) 50%;background-size:15px 15px}.tyk-selectable-list{margin-bottom:20px;width:100%}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message){font-family:OpenSans-SemiBold;padding:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) .tyk-message{margin-bottom:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message) label{font-family:OpenSans-SemiBold;margin:0}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label{align-items:center;cursor:pointer;display:flex;padding:10px 20px}.tyk-selectable-list li:not(.tyk-selectable-list__no-items-message)>label input[type=checkbox]{margin-left:auto}.tyk-selectable-list__item--with-icon input[type=checkbox]{visibility:hidden}.tyk-sidebar{background-color:#fff;height:calc(100vh - 58px);flex:0 0 280px;padding:0;position:-webkit-sticky;position:sticky;overflow:auto;top:58px}.tyk-table{border-collapse:collapse;border-spacing:0;background-color:#fff;border-radius:18px;width:100%}.tyk-table__wrapper{border:2px solid #c3c3e5;border-radius:18px;overflow:auto}.tyk-table__wrapper--no-border{border:none}.tyk-table>thead th{border-right:1px solid #c3c3e5;color:#505071;font-size:14px;line-height:19px;font-family:OpenSans-Bold;text-transform:uppercase}.tyk-table>thead th:last-child{border-right:none}.tyk-table>thead th i{font-size:12px}.tyk-table>thead th .tyk-button{background:none;color:#36364c;padding:0}.tyk-table>thead th{padding:10px}.tyk-table>tbody tr:hover{background:#ededf9}.tyk-table>tbody td{border-right:1px solid #c3c3e5;font-size:14px;line-height:19px;font-family:OpenSans-regular;padding:10px 5px;vertical-align:middle}.tyk-table>tbody td:last-child{border-right:none}.tyk-table>tbody td.fit{white-space:nowrap;width:1%}.tyk-table>tbody td input:not([type=checkbox]):not([type=radio]){margin-top:15px}.tyk-table>tbody td a{color:#505071;font-family:OpenSans-SemiBold}.tyk-table>tbody td input[type=checkbox],.tyk-table>tbody td label{margin:0}.tyk-table tbody>tr{border-top:1px solid #c3c3e5;transition:all .4s linear;border-radius:18px}.tyk-table tbody>tr.clickable{cursor:pointer}.tyk-table>tbody tr td:first-child,.tyk-table>thead tr th:first-child{padding-left:25px}.tyk-table>tbody tr td:first-child.with-icon,.tyk-table>thead tr th:first-child.with-icon{padding-left:15px}.tyk-table>tbody tr td:last-child,.tyk-table>thead tr th:last-child{padding-right:25px}.tyk-table>tbody tr td:last-child.with-icon,.tyk-table>thead tr th:last-child.with-icon{padding-right:15px}.tyk-table .tyk-pagination{padding:20px 25px}.tyk-table .tyk-pagination li:first-child{margin-left:auto}.tyk-table .nowrap{white-space:nowrap}.tyk-table .wrap{word-break:break-all}.tyk-table-search{padding:10px 25px 0}.tyk-table-search label{font-size:14px;text-transform:uppercase}.header-sort{padding-left:10px;padding-top:5px;vertical-align:middle}.new-table-pagination{float:right}.selectable>div{margin-left:20px}.scrollable{display:block;overflow:auto}.fixed-header{position:sticky;top:0}.tyk-table.has-error,.tyk-table__wrapper.has-error{border:2px solid #ff6c7d!important}.tyk-tabs--default>ul{display:flex;list-style-type:none;margin:0;padding:0;overflow:auto}.tyk-tabs--default>ul li{display:flex;white-space:nowrap;margin-right:0}.tyk-tabs--default>ul li:last-child{margin-right:0}.tyk-tabs--default>ul li.active button,.tyk-tabs--default>ul li button:hover{border-bottom-color:#00d9ba;color:#505071;opacity:1}.tyk-tabs--default>ul li button{background:none;border:none;border-bottom:4px solid transparent;color:#505071;cursor:pointer;font-size:14px;font-family:OpenSans-SemiBold;padding:10px 2px 3px;margin-right:20px;transition:all .2s linear;opacity:.7}.tyk-tabs--default>ul li button:focus{outline:none}.tyk-tab__content{padding:25px}textarea.tyk-form-control{height:auto}.tyk-toast__container{bottom:0;min-width:300px;position:fixed;right:20px;z-index:11}.tyk-toast__message{position:relative}.tyk-toast-message__button{color:#505071;height:20px;line-height:1;padding:5px;position:absolute;right:5px;top:5px;width:20px}.tyk-toast-message__button:hover{background:hsla(0,0%,100%,.3);color:#505071}.tyk-toggle{display:inline-flex;flex-wrap:wrap;font-family:OpenSans-Bold;font-size:14px;line-height:19px;white-space:nowrap}.tyk-toggle.block{margin-bottom:20px;width:100%}.tyk-toggle.block+.tyk-toggle{margin-left:0}.tyk-toggle.inline-label{align-items:center;flex-wrap:nowrap}.tyk-toggle__list--has-error{border:2px solid #ff6c7d}.tyk-toggle .tyk-toggle__label{display:block;font-family:OpenSans-SemiBold;font-size:14px;padding:0;width:100%;color:#36364c}.tyk-toggle.inline-label .tyk-toggle__label{margin-right:10px;width:auto}.tyk-toggle+.tyk-button,.tyk-toggle+.tyk-dropdown,.tyk-toggle+.tyk-toggle{margin-left:10px}.tyk-toggle--disabled-true{cursor:not-allowed;opacity:.7}.tyk-toggle--column .tyk-toggle__list--separated{display:flex;flex-direction:column;margin-right:20px}.tyk-toggle--column .tyk-toggle__list--separated .tyk-toggle__item{background-color:#ededf9;margin-right:auto}.tyk-toggle__list{background:#ededf9;border-radius:25px;display:flex;list-style-type:none;margin:0;padding:0;position:relative}.tyk-toggle__list--separated{background:transparent;flex-wrap:wrap}.tyk-toggle--on-dark .tyk-toggle__list{background:#fff}.tyk-toggle--default .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active{background-color:#36364c;color:#fff;border:2px solid transparent}.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active span{color:#fff}.tyk-toggle--default .tyk-toggle__list--separated .tyk-toggle__item--active:hover,.tyk-toggle--default .tyk-toggle__list--single .tyk-toggle__item--active:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active{background-color:#a2a2cc;color:#fff;border:2px solid transparent}.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary .tyk-toggle__list--separated .tyk-toggle__item--active:hover,.tyk-toggle--primary .tyk-toggle__list--single .tyk-toggle__item--active:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active{background-color:#00b798;color:#fff;border:2px solid transparent}.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success .tyk-toggle__list--separated .tyk-toggle__item--active:hover,.tyk-toggle--success .tyk-toggle__list--single .tyk-toggle__item--active:hover{background-color:#00b798;color:#fff}.tyk-toggle--danger .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active{background-color:#ff6c7d;color:#fff;border:2px solid transparent}.tyk-toggle--danger .tyk-toggle__list--separated .tyk-toggle__item--active:hover,.tyk-toggle--danger .tyk-toggle__list--single .tyk-toggle__item--active:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__item--active span{color:#505071}.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active{background-color:#d6b218;color:#505071;border:2px solid transparent}.tyk-toggle--warning .tyk-toggle__list--separated .tyk-toggle__item--active:hover,.tyk-toggle--warning .tyk-toggle__list--single .tyk-toggle__item--active:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active{border-image:linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc) 0 round;background:transparent linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--primary-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--primary-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active{border-image:linear-gradient(90deg,#00d9ba,#00b798,#00d9ba) 0 round;background:transparent linear-gradient(90deg,#00d9ba,#00b798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--success-gradient .tyk-toggle__list--single .tyk-toggle__item--active span{color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active{border-image:linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d) 0 round;background:transparent linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--danger-gradient .tyk-toggle__list--single .tyk-toggle__item--active span,.tyk-toggle--warning-gradient .tyk-toggle__item--active span{color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active,.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active{border-image:linear-gradient(90deg,#ffe885,#d6b218,#ffe885) 0 round;background:transparent linear-gradient(90deg,#ffe885,#d6b218,#ffe885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.tyk-toggle--warning-gradient .tyk-toggle__list--separated .tyk-toggle__item--active span,.tyk-toggle--warning-gradient .tyk-toggle__list--single .tyk-toggle__item--active span{color:#fff}.tyk-toggle__item{color:#fff;text-transform:uppercase;z-index:2}.tyk-toggle__item:first-child{border-top-left-radius:25px;border-bottom-left-radius:25px}.tyk-toggle__item:last-child{border-top-right-radius:25px;border-bottom-right-radius:25px}.tyk-toggle__list--separated .tyk-toggle__item{background:tyk-toggle__list--separated;border-radius:25px;margin-bottom:5px;margin-top:5px;margin-right:10px}.tyk-toggle__list--separated .tyk-toggle__item:last-child{margin-right:0}.tyk-toggle__item input{display:none}.tyk-toggle__item label{cursor:pointer;font-family:OpenSans-Bold;position:relative;margin:0;transition:all .2s ease}.tyk-toggle__list--single .tyk-toggle__item label{padding-left:45px}.tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:30px;padding-right:45px}.tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 35px)}.tyk-toggle--on-dark .tyk-toggle__item:not(.tyk-toggle__item--active){color:#505071}.tyk-toggle--on-dark .tyk-toggle__item-notch--single{background:#ededf9}.tyk-toggle--sm label{padding:5px 17px;font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--sm .tyk-toggle__list--single label{padding-left:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:20px;padding-right:35px}.tyk-toggle--sm .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 27px)}.tyk-toggle--md label{padding:10px 25px}.tyk-toggle--lg label,.tyk-toggle--md label{font-size:14px;line-height:16px;border-radius:20px}.tyk-toggle--lg label{padding:15px 25px}.tyk-toggle--lg .tyk-toggle__list--single label{padding-left:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label{padding-left:30px;padding-right:45px}.tyk-toggle--lg .tyk-toggle__list--single .tyk-toggle__item--active label .tyk-toggle__item-notch{left:calc(100% - 43px)}.tyk-toggle__item-notch{border-radius:25px;bottom:2px;position:absolute;transition:all .2s ease;top:2px}.tyk-toggle__item-notch--single{background:#fff;left:2px;width:32px}.tyk-toggle--sm .tyk-toggle__item-notch--single{width:24px}.tyk-toggle--lg .tyk-toggle__item-notch--single{width:40px}.tyk-toggle__notch{border-radius:25px;left:0;position:absolute;bottom:4px;top:4px;transition:all .2s ease;width:100px;z-index:1}.tyk-toggle--default .tyk-toggle__notch{background-color:#36364c;color:#fff;border:2px solid transparent}.tyk-toggle--default .tyk-toggle__notch:hover{background-color:#36364c;color:#fff}.tyk-toggle--primary .tyk-toggle__notch{background-color:#a2a2cc;color:#fff;border:2px solid transparent}.tyk-toggle--primary .tyk-toggle__notch:hover{background-color:#a2a2cc;color:#fff}.tyk-toggle--success .tyk-toggle__notch{background-color:#00d9ba;color:#fff;border:2px solid transparent}.tyk-toggle--success .tyk-toggle__notch:hover{background-color:#00d9ba;color:#fff}.tyk-toggle--danger .tyk-toggle__notch{background-color:#ff6c7d;color:#fff;border:2px solid transparent}.tyk-toggle--danger .tyk-toggle__notch:hover{background-color:#ff6c7d;color:#fff}.tyk-toggle--warning .tyk-toggle__notch{background-color:#d6b218;color:#505071;border:2px solid transparent}.tyk-toggle--warning .tyk-toggle__notch:hover{background-color:#d6b218;color:#505071}.tyk-toggle--primary-gradient .tyk-toggle__notch{border-image:linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc) 0 round;background:transparent linear-gradient(90deg,#a2a2cc,#505071,#a2a2cc);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--success-gradient .tyk-toggle__notch{border-image:linear-gradient(90deg,#00d9ba,#00b798,#00d9ba) 0 round;background:transparent linear-gradient(90deg,#00d9ba,#00b798,#00d9ba);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--danger-gradient .tyk-toggle__notch{border-image:linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d) 0 round;background:transparent linear-gradient(90deg,#ff6c7d,#ea4766,#ff6c7d);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#fff}.tyk-toggle--warning-gradient .tyk-toggle__notch{border-image:linear-gradient(90deg,#ffe885,#d6b218,#ffe885) 0 round;background:transparent linear-gradient(90deg,#ffe885,#d6b218,#ffe885);background-origin:border-box;background-clip:border-box;background-size:200% auto;background-position:0 0;color:#505071}.empty-toggle{padding:1px}.tyk-tooltip-content{position:relative;background-color:#505071;color:#fff;padding:8px 16px;border-radius:5px;left:-50%}.tyk-tooltip-content:after{content:"";position:absolute;bottom:-10px;left:calc(50% - 5px);border:5px solid transparent;border-top-color:#505071}.tyk-tooltip__bottom .tyk-tooltip-content:after{border-color:transparent transparent #505071;bottom:auto;top:-10px}*{box-sizing:border-box}body{background-color:#e1e1e1;color:#505071;font-size:14px;line-height:19px;font-family:OpenSans-regular}.tyk-main-wrapper{display:flex;flex-wrap:nowrap}.tyk-main-content-wrapper{flex:1}.well{background:transparent;border:2px solid #c3c3e5;border-radius:18px;box-shadow:none}.well.has-error{border-color:#ff6c7d}.title-medium{font-family:OpenSans-SemiBold;color:#36364c;font-size:16px} \ No newline at end of file diff --git a/lib/index.js.map b/lib/index.js.map index c0967468..0c20c8c9 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://TykUI/webpack/bootstrap","webpack://TykUI/./node_modules/prop-types/index.js","webpack://TykUI/external \"react\"","webpack://TykUI/./node_modules/zrender/lib/core/util.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://TykUI/./node_modules/echarts/lib/echarts.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/createClass.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/inherits.js","webpack://TykUI/./node_modules/echarts/lib/util/graphic.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/extends.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://TykUI/./node_modules/echarts/lib/util/number.js","webpack://TykUI/external \"immutable\"","webpack://TykUI/./node_modules/echarts/lib/util/model.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack://TykUI/./node_modules/echarts/lib/config.js","webpack://TykUI/./node_modules/echarts/lib/util/layout.js","webpack://TykUI/./node_modules/zrender/lib/core/vector.js","webpack://TykUI/./node_modules/zrender/lib/core/BoundingRect.js","webpack://TykUI/./node_modules/echarts/lib/util/format.js","webpack://TykUI/./node_modules/zrender/lib/graphic/Path.js","webpack://TykUI/./node_modules/zrender/lib/core/env.js","webpack://TykUI/./node_modules/echarts/lib/model/Model.js","webpack://TykUI/./node_modules/echarts/lib/model/Component.js","webpack://TykUI/./node_modules/echarts/lib/model/Series.js","webpack://TykUI/external \"reactDOM\"","webpack://TykUI/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://TykUI/./node_modules/zrender/lib/core/matrix.js","webpack://TykUI/./node_modules/zrender/lib/contain/text.js","webpack://TykUI/./node_modules/echarts/lib/data/List.js","webpack://TykUI/./node_modules/echarts/lib/util/symbol.js","webpack://TykUI/./node_modules/echarts/lib/CoordinateSystem.js","webpack://TykUI/./node_modules/echarts/lib/coord/axisHelper.js","webpack://TykUI/./node_modules/zrender/lib/core/event.js","webpack://TykUI/./node_modules/zrender/lib/tool/color.js","webpack://TykUI/./node_modules/echarts/lib/view/Chart.js","webpack://TykUI/./node_modules/echarts/lib/data/helper/dataStackHelper.js","webpack://TykUI/./node_modules/echarts/lib/util/clazz.js","webpack://TykUI/./node_modules/echarts/lib/data/helper/sourceHelper.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/createListFromArray.js","webpack://TykUI/./node_modules/zrender/lib/core/curve.js","webpack://TykUI/./node_modules/echarts/lib/util/throttle.js","webpack://TykUI/./node_modules/echarts/lib/lang.js","webpack://TykUI/./node_modules/echarts/lib/coord/Axis.js","webpack://TykUI/./node_modules/echarts/lib/component/axis/AxisBuilder.js","webpack://TykUI/./node_modules/echarts/lib/component/toolbox/featureManager.js","webpack://TykUI/./node_modules/zrender/lib/mixin/Eventful.js","webpack://TykUI/./node_modules/zrender/lib/graphic/Text.js","webpack://TykUI/./node_modules/echarts/lib/data/helper/dataProvider.js","webpack://TykUI/./node_modules/echarts/lib/data/DataDiffer.js","webpack://TykUI/./node_modules/echarts/lib/visual/symbol.js","webpack://TykUI/./node_modules/echarts/lib/component/axis/AxisView.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/treeHelper.js","webpack://TykUI/./node_modules/echarts/lib/visual/VisualMapping.js","webpack://TykUI/./node_modules/zrender/lib/container/Group.js","webpack://TykUI/./node_modules/zrender/lib/graphic/Image.js","webpack://TykUI/./node_modules/echarts/lib/model/mixin/makeStyleMapper.js","webpack://TykUI/./node_modules/zrender/lib/core/PathProxy.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/createRenderPlanner.js","webpack://TykUI/./node_modules/echarts/lib/data/helper/createDimensions.js","webpack://TykUI/./node_modules/echarts/lib/coord/axisModelCommonMixin.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/createListSimply.js","webpack://TykUI/./node_modules/echarts/lib/component/helper/sliderMove.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom/DataZoomModel.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom/DataZoomView.js","webpack://TykUI/./node_modules/zrender/lib/core/log.js","webpack://TykUI/./node_modules/zrender/lib/graphic/Displayable.js","webpack://TykUI/./node_modules/echarts/lib/util/component.js","webpack://TykUI/./node_modules/echarts/lib/data/Source.js","webpack://TykUI/./node_modules/echarts/lib/data/helper/sourceType.js","webpack://TykUI/./node_modules/echarts/lib/data/helper/dimensionHelper.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/SymbolDraw.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js","webpack://TykUI/./node_modules/echarts/lib/layout/points.js","webpack://TykUI/./node_modules/echarts/lib/component/gridSimple.js","webpack://TykUI/./node_modules/echarts/lib/visual/LegendVisualProvider.js","webpack://TykUI/./node_modules/echarts/lib/processor/dataFilter.js","webpack://TykUI/./node_modules/echarts/lib/component/helper/RoamController.js","webpack://TykUI/./node_modules/echarts/lib/component/axisPointer.js","webpack://TykUI/./node_modules/react-transition-group/index.js","webpack://TykUI/(webpack)/buildin/global.js","webpack://TykUI/./node_modules/zrender/lib/zrender.js","webpack://TykUI/./node_modules/zrender/lib/config.js","webpack://TykUI/./node_modules/zrender/lib/graphic/constant.js","webpack://TykUI/./node_modules/zrender/lib/graphic/helper/text.js","webpack://TykUI/./node_modules/zrender/lib/core/bbox.js","webpack://TykUI/./node_modules/zrender/lib/graphic/Gradient.js","webpack://TykUI/./node_modules/echarts/lib/view/Component.js","webpack://TykUI/./node_modules/echarts/lib/scale/Scale.js","webpack://TykUI/./node_modules/echarts/lib/scale/Interval.js","webpack://TykUI/./node_modules/echarts/lib/layout/barGrid.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/Symbol.js","webpack://TykUI/./node_modules/echarts/lib/coord/axisModelCreator.js","webpack://TykUI/./node_modules/echarts/lib/component/axisPointer/modelHelper.js","webpack://TykUI/./node_modules/echarts/lib/visual/dataColor.js","webpack://TykUI/./node_modules/echarts/lib/coord/geo/geoSourceManager.js","webpack://TykUI/./node_modules/echarts/lib/component/helper/cursorHelper.js","webpack://TykUI/./node_modules/echarts/lib/component/axisPointer/viewHelper.js","webpack://TykUI/./node_modules/echarts/lib/visual/visualSolution.js","webpack://TykUI/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://TykUI/./node_modules/echarts/index.js","webpack://TykUI/./node_modules/brace/index.js","webpack://TykUI/./node_modules/zrender/lib/mixin/Transformable.js","webpack://TykUI/./node_modules/zrender/lib/core/timsort.js","webpack://TykUI/./node_modules/zrender/lib/graphic/Style.js","webpack://TykUI/./node_modules/zrender/lib/graphic/helper/image.js","webpack://TykUI/./node_modules/zrender/lib/graphic/shape/Rect.js","webpack://TykUI/./node_modules/zrender/lib/graphic/helper/subPixelOptimize.js","webpack://TykUI/./node_modules/zrender/lib/graphic/LinearGradient.js","webpack://TykUI/./node_modules/zrender/lib/graphic/IncrementalDisplayable.js","webpack://TykUI/./node_modules/echarts/lib/model/mixin/dataFormat.js","webpack://TykUI/./node_modules/echarts/lib/stream/task.js","webpack://TykUI/./node_modules/echarts/lib/coord/geo/mapDataStorage.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/labelHelper.js","webpack://TykUI/./node_modules/echarts/lib/coord/cartesian/Grid.js","webpack://TykUI/./node_modules/echarts/lib/component/helper/selectableMixin.js","webpack://TykUI/./node_modules/echarts/lib/component/helper/roamHelper.js","webpack://TykUI/./node_modules/echarts/lib/action/roamHelper.js","webpack://TykUI/./node_modules/echarts/lib/coord/geo/geoCreator.js","webpack://TykUI/./node_modules/echarts/lib/coord/View.js","webpack://TykUI/./node_modules/echarts/lib/data/Tree.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/LineDraw.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/Line.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph/graphHelper.js","webpack://TykUI/./node_modules/echarts/lib/component/helper/BrushController.js","webpack://TykUI/./node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js","webpack://TykUI/./node_modules/echarts/lib/coord/polar/polarCreator.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom/typeDefaulter.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom/helper.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom/dataZoomAction.js","webpack://TykUI/./node_modules/echarts/lib/component/marker/MarkerModel.js","webpack://TykUI/./node_modules/echarts/lib/component/marker/markerHelper.js","webpack://TykUI/./node_modules/echarts/lib/component/marker/MarkerView.js","webpack://TykUI/./node_modules/zrender/lib/svg/graphic.js","webpack://TykUI/./node_modules/zrender/lib/svg/core.js","webpack://TykUI/./node_modules/zrender/lib/svg/helper/Definable.js","webpack://TykUI/./node_modules/react-fast-compare/index.js","webpack://TykUI/./node_modules/react-transition-group/Transition.js","webpack://TykUI/./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack://TykUI/./node_modules/react-transition-group/utils/PropTypes.js","webpack://TykUI/./node_modules/react-transition-group/TransitionGroup.js","webpack://TykUI/(webpack)/buildin/amd-define.js","webpack://TykUI/./node_modules/lodash.isequal/index.js","webpack://TykUI/./node_modules/react-ace/lib/editorOptions.js","webpack://TykUI/./node_modules/react-ace/lib/split.js","webpack://TykUI/./node_modules/zrender/lib/core/guid.js","webpack://TykUI/./node_modules/zrender/lib/Element.js","webpack://TykUI/./node_modules/zrender/lib/animation/Animator.js","webpack://TykUI/./node_modules/zrender/lib/core/LRU.js","webpack://TykUI/./node_modules/zrender/lib/graphic/helper/fixShadow.js","webpack://TykUI/./node_modules/zrender/lib/graphic/Pattern.js","webpack://TykUI/./node_modules/zrender/lib/animation/requestAnimationFrame.js","webpack://TykUI/./node_modules/zrender/lib/graphic/mixin/RectText.js","webpack://TykUI/./node_modules/zrender/lib/graphic/helper/roundRect.js","webpack://TykUI/./node_modules/echarts/lib/model/Global.js","webpack://TykUI/./node_modules/zrender/lib/tool/path.js","webpack://TykUI/./node_modules/zrender/lib/contain/line.js","webpack://TykUI/./node_modules/zrender/lib/contain/quadratic.js","webpack://TykUI/./node_modules/zrender/lib/contain/util.js","webpack://TykUI/./node_modules/zrender/lib/contain/windingLine.js","webpack://TykUI/./node_modules/zrender/lib/graphic/shape/Circle.js","webpack://TykUI/./node_modules/zrender/lib/graphic/helper/fixClipWithShadow.js","webpack://TykUI/./node_modules/zrender/lib/graphic/shape/Polygon.js","webpack://TykUI/./node_modules/zrender/lib/graphic/helper/poly.js","webpack://TykUI/./node_modules/zrender/lib/graphic/shape/Polyline.js","webpack://TykUI/./node_modules/zrender/lib/graphic/shape/Line.js","webpack://TykUI/./node_modules/echarts/lib/model/mixin/colorPalette.js","webpack://TykUI/./node_modules/echarts/lib/ExtensionAPI.js","webpack://TykUI/./node_modules/echarts/lib/component/dataset.js","webpack://TykUI/./node_modules/zrender/lib/tool/parseSVG.js","webpack://TykUI/./node_modules/echarts/lib/export.js","webpack://TykUI/./node_modules/echarts/lib/data/DataDimensionInfo.js","webpack://TykUI/./node_modules/echarts/lib/data/helper/completeDimensions.js","webpack://TykUI/./node_modules/echarts/lib/data/OrdinalMeta.js","webpack://TykUI/./node_modules/echarts/lib/scale/helper.js","webpack://TykUI/./node_modules/echarts/lib/scale/Log.js","webpack://TykUI/./node_modules/echarts/lib/coord/geo/parseGeoJson.js","webpack://TykUI/./node_modules/echarts/lib/coord/geo/Region.js","webpack://TykUI/./node_modules/zrender/lib/contain/polygon.js","webpack://TykUI/./node_modules/echarts/lib/chart/line/helper.js","webpack://TykUI/./node_modules/echarts/lib/chart/line/poly.js","webpack://TykUI/./node_modules/echarts/lib/coord/cartesian/AxisModel.js","webpack://TykUI/./node_modules/echarts/lib/coord/axisDefault.js","webpack://TykUI/./node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js","webpack://TykUI/./node_modules/echarts/lib/chart/bar/BaseBarSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/bar/helper.js","webpack://TykUI/./node_modules/echarts/lib/action/createDataSelectAction.js","webpack://TykUI/./node_modules/echarts/lib/component/helper/MapDraw.js","webpack://TykUI/./node_modules/echarts/lib/component/helper/interactionMutex.js","webpack://TykUI/./node_modules/echarts/lib/action/geoRoam.js","webpack://TykUI/./node_modules/echarts/lib/data/helper/linkList.js","webpack://TykUI/./node_modules/echarts/lib/chart/tree/layoutHelper.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/focusNodeAdjacencyAction.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph/circularLayoutHelper.js","webpack://TykUI/./node_modules/echarts/lib/component/parallel.js","webpack://TykUI/./node_modules/echarts/lib/coord/parallel/parallelCreator.js","webpack://TykUI/./node_modules/echarts/lib/component/helper/brushHelper.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/EffectLine.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/Polyline.js","webpack://TykUI/./node_modules/echarts/lib/chart/lines/linesLayout.js","webpack://TykUI/./node_modules/echarts/lib/component/singleAxis.js","webpack://TykUI/./node_modules/echarts/lib/coord/single/singleAxisHelper.js","webpack://TykUI/./node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js","webpack://TykUI/./node_modules/echarts/lib/component/axisPointer/globalListener.js","webpack://TykUI/./node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js","webpack://TykUI/./node_modules/echarts/lib/component/helper/listComponent.js","webpack://TykUI/./node_modules/echarts/lib/component/helper/BrushTargetManager.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom/history.js","webpack://TykUI/./node_modules/echarts/lib/component/legend.js","webpack://TykUI/./node_modules/echarts/lib/component/legend/LegendModel.js","webpack://TykUI/./node_modules/echarts/lib/component/legend/LegendView.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoomSlider.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoomInside.js","webpack://TykUI/./node_modules/echarts/lib/component/visualMapContinuous.js","webpack://TykUI/./node_modules/echarts/lib/component/visualMap/preprocessor.js","webpack://TykUI/./node_modules/echarts/lib/component/visualMap/typeDefaulter.js","webpack://TykUI/./node_modules/echarts/lib/component/visualMap/visualEncoding.js","webpack://TykUI/./node_modules/echarts/lib/component/visualMap/VisualMapModel.js","webpack://TykUI/./node_modules/echarts/lib/visual/visualDefault.js","webpack://TykUI/./node_modules/echarts/lib/component/visualMap/VisualMapView.js","webpack://TykUI/./node_modules/echarts/lib/component/visualMap/helper.js","webpack://TykUI/./node_modules/echarts/lib/component/visualMap/visualMapAction.js","webpack://TykUI/./node_modules/echarts/lib/component/visualMapPiecewise.js","webpack://TykUI/./node_modules/zrender/lib/vml/core.js","webpack://TykUI/./node_modules/react-ace/lib/index.js","webpack://TykUI/./node_modules/flatpickr/dist/flatpickr.js","webpack://TykUI/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://TykUI/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/typeof.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://TykUI/./node_modules/react-transition-group/CSSTransition.js","webpack://TykUI/./node_modules/dom-helpers/class/addClass.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://TykUI/./node_modules/dom-helpers/class/hasClass.js","webpack://TykUI/./node_modules/dom-helpers/class/removeClass.js","webpack://TykUI/./node_modules/react-transition-group/ReplaceTransition.js","webpack://TykUI/./node_modules/react-transition-group/utils/ChildMapping.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://TykUI/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://TykUI/./node_modules/react-ace/lib/ace.js","webpack://TykUI/(webpack)/buildin/module.js","webpack://TykUI/./node_modules/lodash.get/index.js","webpack://TykUI/./node_modules/brace/ext/split.js","webpack://TykUI/./node_modules/react-ace/lib/diff.js","webpack://TykUI/./node_modules/diff-match-patch/index.js","webpack://TykUI/./node_modules/brace/mode/javascript.js","webpack://TykUI/./node_modules/brace/worker/javascript.js","webpack://TykUI/./node_modules/brace/mode/css.js","webpack://TykUI/./node_modules/brace/worker/css.js","webpack://TykUI/./node_modules/brace/mode/json.js","webpack://TykUI/./node_modules/brace/worker/json.js","webpack://TykUI/./node_modules/brace/mode/xml.js","webpack://TykUI/./node_modules/brace/worker/xml.js","webpack://TykUI/./node_modules/brace/mode/jsx.js","webpack://TykUI/./node_modules/brace/ext/searchbox.js","webpack://TykUI/./node_modules/brace/ext/beautify.js","webpack://TykUI/./node_modules/brace/theme/github.js","webpack://TykUI/./node_modules/zrender/lib/Handler.js","webpack://TykUI/./node_modules/zrender/lib/mixin/Draggable.js","webpack://TykUI/./node_modules/zrender/lib/core/fourPointsTransform.js","webpack://TykUI/./node_modules/zrender/lib/core/GestureMgr.js","webpack://TykUI/./node_modules/zrender/lib/Storage.js","webpack://TykUI/./node_modules/zrender/lib/mixin/Animatable.js","webpack://TykUI/./node_modules/zrender/lib/animation/Clip.js","webpack://TykUI/./node_modules/zrender/lib/animation/easing.js","webpack://TykUI/./node_modules/zrender/lib/Painter.js","webpack://TykUI/./node_modules/zrender/lib/Layer.js","webpack://TykUI/./node_modules/zrender/lib/animation/Animation.js","webpack://TykUI/./node_modules/zrender/lib/dom/HandlerProxy.js","webpack://TykUI/./node_modules/echarts/lib/model/mixin/lineStyle.js","webpack://TykUI/./node_modules/echarts/lib/model/mixin/areaStyle.js","webpack://TykUI/./node_modules/echarts/lib/model/mixin/textStyle.js","webpack://TykUI/./node_modules/zrender/lib/contain/path.js","webpack://TykUI/./node_modules/zrender/lib/contain/cubic.js","webpack://TykUI/./node_modules/zrender/lib/contain/arc.js","webpack://TykUI/./node_modules/zrender/lib/tool/transformPath.js","webpack://TykUI/./node_modules/zrender/lib/graphic/shape/Sector.js","webpack://TykUI/./node_modules/zrender/lib/graphic/shape/Ring.js","webpack://TykUI/./node_modules/zrender/lib/graphic/helper/smoothSpline.js","webpack://TykUI/./node_modules/zrender/lib/graphic/helper/smoothBezier.js","webpack://TykUI/./node_modules/zrender/lib/graphic/shape/BezierCurve.js","webpack://TykUI/./node_modules/zrender/lib/graphic/shape/Arc.js","webpack://TykUI/./node_modules/zrender/lib/graphic/CompoundPath.js","webpack://TykUI/./node_modules/zrender/lib/graphic/RadialGradient.js","webpack://TykUI/./node_modules/echarts/lib/model/mixin/itemStyle.js","webpack://TykUI/./node_modules/echarts/lib/model/mixin/boxLayout.js","webpack://TykUI/./node_modules/echarts/lib/model/globalDefault.js","webpack://TykUI/./node_modules/echarts/lib/model/OptionManager.js","webpack://TykUI/./node_modules/echarts/lib/preprocessor/backwardCompat.js","webpack://TykUI/./node_modules/echarts/lib/preprocessor/helper/compatStyle.js","webpack://TykUI/./node_modules/echarts/lib/processor/dataStack.js","webpack://TykUI/./node_modules/echarts/lib/visual/seriesColor.js","webpack://TykUI/./node_modules/echarts/lib/visual/aria.js","webpack://TykUI/./node_modules/echarts/lib/loading/default.js","webpack://TykUI/./node_modules/echarts/lib/stream/Scheduler.js","webpack://TykUI/./node_modules/echarts/lib/theme/light.js","webpack://TykUI/./node_modules/echarts/lib/theme/dark.js","webpack://TykUI/./node_modules/zrender/lib/graphic/shape/Ellipse.js","webpack://TykUI/./node_modules/echarts/lib/helper.js","webpack://TykUI/./node_modules/echarts/lib/model/referHelper.js","webpack://TykUI/./node_modules/echarts/lib/scale/Ordinal.js","webpack://TykUI/./node_modules/echarts/lib/scale/Time.js","webpack://TykUI/./node_modules/echarts/lib/coord/axisTickLabelBuilder.js","webpack://TykUI/./node_modules/echarts/lib/chart/line.js","webpack://TykUI/./node_modules/echarts/lib/chart/line/LineSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/line/LineView.js","webpack://TykUI/./node_modules/echarts/lib/chart/line/lineAnimationDiff.js","webpack://TykUI/./node_modules/echarts/lib/processor/dataSample.js","webpack://TykUI/./node_modules/echarts/lib/coord/cartesian/Cartesian2D.js","webpack://TykUI/./node_modules/echarts/lib/coord/cartesian/Cartesian.js","webpack://TykUI/./node_modules/echarts/lib/coord/cartesian/Axis2D.js","webpack://TykUI/./node_modules/echarts/lib/coord/cartesian/GridModel.js","webpack://TykUI/./node_modules/echarts/lib/component/axis.js","webpack://TykUI/./node_modules/echarts/lib/component/axis/CartesianAxisView.js","webpack://TykUI/./node_modules/echarts/lib/chart/bar.js","webpack://TykUI/./node_modules/echarts/lib/chart/bar/BarSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/bar/BarView.js","webpack://TykUI/./node_modules/echarts/lib/chart/bar/barItemStyle.js","webpack://TykUI/./node_modules/echarts/lib/util/shape/sausage.js","webpack://TykUI/./node_modules/echarts/lib/chart/pie.js","webpack://TykUI/./node_modules/echarts/lib/chart/pie/PieSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/pie/PieView.js","webpack://TykUI/./node_modules/echarts/lib/chart/pie/pieLayout.js","webpack://TykUI/./node_modules/echarts/lib/chart/pie/labelLayout.js","webpack://TykUI/./node_modules/echarts/lib/chart/scatter.js","webpack://TykUI/./node_modules/echarts/lib/chart/scatter/ScatterSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/scatter/ScatterView.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js","webpack://TykUI/./node_modules/echarts/lib/chart/radar.js","webpack://TykUI/./node_modules/echarts/lib/component/radar.js","webpack://TykUI/./node_modules/echarts/lib/coord/radar/Radar.js","webpack://TykUI/./node_modules/echarts/lib/coord/radar/IndicatorAxis.js","webpack://TykUI/./node_modules/echarts/lib/coord/radar/RadarModel.js","webpack://TykUI/./node_modules/echarts/lib/component/radar/RadarView.js","webpack://TykUI/./node_modules/echarts/lib/chart/radar/RadarSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/radar/RadarView.js","webpack://TykUI/./node_modules/echarts/lib/chart/radar/radarLayout.js","webpack://TykUI/./node_modules/echarts/lib/chart/radar/backwardCompat.js","webpack://TykUI/./node_modules/echarts/lib/chart/map.js","webpack://TykUI/./node_modules/echarts/lib/chart/map/MapSeries.js","webpack://TykUI/./node_modules/echarts/lib/coord/geo/geoJSONLoader.js","webpack://TykUI/./node_modules/echarts/lib/coord/geo/fix/nanhai.js","webpack://TykUI/./node_modules/echarts/lib/coord/geo/fix/textCoord.js","webpack://TykUI/./node_modules/echarts/lib/coord/geo/fix/geoCoord.js","webpack://TykUI/./node_modules/echarts/lib/coord/geo/fix/diaoyuIsland.js","webpack://TykUI/./node_modules/echarts/lib/coord/geo/geoSVGLoader.js","webpack://TykUI/./node_modules/echarts/lib/chart/map/MapView.js","webpack://TykUI/./node_modules/echarts/lib/coord/geo/Geo.js","webpack://TykUI/./node_modules/echarts/lib/chart/map/mapSymbolLayout.js","webpack://TykUI/./node_modules/echarts/lib/chart/map/mapVisual.js","webpack://TykUI/./node_modules/echarts/lib/chart/map/mapDataStatistic.js","webpack://TykUI/./node_modules/echarts/lib/chart/map/backwardCompat.js","webpack://TykUI/./node_modules/echarts/lib/chart/tree.js","webpack://TykUI/./node_modules/echarts/lib/chart/tree/TreeSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/tree/TreeView.js","webpack://TykUI/./node_modules/echarts/lib/chart/tree/treeAction.js","webpack://TykUI/./node_modules/echarts/lib/chart/tree/treeLayout.js","webpack://TykUI/./node_modules/echarts/lib/chart/tree/traversalHelper.js","webpack://TykUI/./node_modules/echarts/lib/chart/treemap.js","webpack://TykUI/./node_modules/echarts/lib/chart/treemap/TreemapSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/treemap/TreemapView.js","webpack://TykUI/./node_modules/echarts/lib/chart/treemap/Breadcrumb.js","webpack://TykUI/./node_modules/echarts/lib/util/animation.js","webpack://TykUI/./node_modules/echarts/lib/chart/treemap/treemapAction.js","webpack://TykUI/./node_modules/echarts/lib/chart/treemap/treemapVisual.js","webpack://TykUI/./node_modules/echarts/lib/chart/treemap/treemapLayout.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph/GraphSeries.js","webpack://TykUI/./node_modules/echarts/lib/data/Graph.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph/GraphView.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/LinePath.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph/adjustEdge.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph/graphAction.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph/categoryFilter.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph/categoryVisual.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph/edgeVisual.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph/simpleLayout.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph/circularLayout.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph/forceLayout.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph/forceHelper.js","webpack://TykUI/./node_modules/echarts/lib/chart/graph/createView.js","webpack://TykUI/./node_modules/echarts/lib/chart/gauge.js","webpack://TykUI/./node_modules/echarts/lib/chart/gauge/GaugeSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/gauge/GaugeView.js","webpack://TykUI/./node_modules/echarts/lib/chart/gauge/PointerPath.js","webpack://TykUI/./node_modules/echarts/lib/chart/funnel.js","webpack://TykUI/./node_modules/echarts/lib/chart/funnel/FunnelSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/funnel/FunnelView.js","webpack://TykUI/./node_modules/echarts/lib/chart/funnel/funnelLayout.js","webpack://TykUI/./node_modules/echarts/lib/chart/parallel.js","webpack://TykUI/./node_modules/echarts/lib/coord/parallel/parallelPreprocessor.js","webpack://TykUI/./node_modules/echarts/lib/coord/parallel/Parallel.js","webpack://TykUI/./node_modules/echarts/lib/coord/parallel/ParallelAxis.js","webpack://TykUI/./node_modules/echarts/lib/coord/parallel/ParallelModel.js","webpack://TykUI/./node_modules/echarts/lib/coord/parallel/AxisModel.js","webpack://TykUI/./node_modules/echarts/lib/component/parallelAxis.js","webpack://TykUI/./node_modules/echarts/lib/component/axis/parallelAxisAction.js","webpack://TykUI/./node_modules/echarts/lib/component/axis/ParallelAxisView.js","webpack://TykUI/./node_modules/echarts/lib/chart/parallel/ParallelSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/parallel/ParallelView.js","webpack://TykUI/./node_modules/echarts/lib/chart/parallel/parallelVisual.js","webpack://TykUI/./node_modules/echarts/lib/chart/sankey.js","webpack://TykUI/./node_modules/echarts/lib/chart/sankey/SankeySeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/sankey/SankeyView.js","webpack://TykUI/./node_modules/echarts/lib/chart/sankey/sankeyAction.js","webpack://TykUI/./node_modules/echarts/lib/chart/sankey/sankeyLayout.js","webpack://TykUI/./node_modules/echarts/lib/chart/sankey/sankeyVisual.js","webpack://TykUI/./node_modules/echarts/lib/chart/boxplot.js","webpack://TykUI/./node_modules/echarts/lib/chart/boxplot/BoxplotSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/boxplot/BoxplotView.js","webpack://TykUI/./node_modules/echarts/lib/chart/boxplot/boxplotVisual.js","webpack://TykUI/./node_modules/echarts/lib/chart/boxplot/boxplotLayout.js","webpack://TykUI/./node_modules/echarts/lib/chart/candlestick.js","webpack://TykUI/./node_modules/echarts/lib/chart/candlestick/CandlestickSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/candlestick/CandlestickView.js","webpack://TykUI/./node_modules/echarts/lib/chart/candlestick/preprocessor.js","webpack://TykUI/./node_modules/echarts/lib/chart/candlestick/candlestickVisual.js","webpack://TykUI/./node_modules/echarts/lib/chart/candlestick/candlestickLayout.js","webpack://TykUI/./node_modules/echarts/lib/chart/effectScatter.js","webpack://TykUI/./node_modules/echarts/lib/chart/effectScatter/EffectScatterSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/effectScatter/EffectScatterView.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/EffectSymbol.js","webpack://TykUI/./node_modules/echarts/lib/chart/lines.js","webpack://TykUI/./node_modules/echarts/lib/chart/lines/LinesSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/lines/LinesView.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/EffectPolyline.js","webpack://TykUI/./node_modules/echarts/lib/chart/helper/LargeLineDraw.js","webpack://TykUI/./node_modules/echarts/lib/chart/lines/linesVisual.js","webpack://TykUI/./node_modules/echarts/lib/chart/heatmap.js","webpack://TykUI/./node_modules/echarts/lib/chart/heatmap/HeatmapSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/heatmap/HeatmapView.js","webpack://TykUI/./node_modules/echarts/lib/chart/heatmap/HeatmapLayer.js","webpack://TykUI/./node_modules/echarts/lib/chart/pictorialBar.js","webpack://TykUI/./node_modules/echarts/lib/chart/bar/PictorialBarSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/bar/PictorialBarView.js","webpack://TykUI/./node_modules/echarts/lib/chart/themeRiver.js","webpack://TykUI/./node_modules/echarts/lib/coord/single/singleCreator.js","webpack://TykUI/./node_modules/echarts/lib/coord/single/Single.js","webpack://TykUI/./node_modules/echarts/lib/coord/single/SingleAxis.js","webpack://TykUI/./node_modules/echarts/lib/component/axis/SingleAxisView.js","webpack://TykUI/./node_modules/echarts/lib/coord/single/AxisModel.js","webpack://TykUI/./node_modules/echarts/lib/component/axisPointer/axisTrigger.js","webpack://TykUI/./node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js","webpack://TykUI/./node_modules/echarts/lib/component/axisPointer/AxisPointerView.js","webpack://TykUI/./node_modules/echarts/lib/component/axisPointer/SingleAxisPointer.js","webpack://TykUI/./node_modules/echarts/lib/chart/themeRiver/ThemeRiverSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/themeRiver/ThemeRiverView.js","webpack://TykUI/./node_modules/echarts/lib/chart/themeRiver/themeRiverLayout.js","webpack://TykUI/./node_modules/echarts/lib/chart/themeRiver/themeRiverVisual.js","webpack://TykUI/./node_modules/echarts/lib/chart/sunburst.js","webpack://TykUI/./node_modules/echarts/lib/chart/sunburst/SunburstSeries.js","webpack://TykUI/./node_modules/echarts/lib/chart/sunburst/SunburstView.js","webpack://TykUI/./node_modules/echarts/lib/chart/sunburst/SunburstPiece.js","webpack://TykUI/./node_modules/echarts/lib/chart/sunburst/sunburstAction.js","webpack://TykUI/./node_modules/echarts/lib/chart/sunburst/sunburstLayout.js","webpack://TykUI/./node_modules/echarts/lib/chart/custom.js","webpack://TykUI/./node_modules/echarts/lib/coord/cartesian/prepareCustom.js","webpack://TykUI/./node_modules/echarts/lib/coord/geo/prepareCustom.js","webpack://TykUI/./node_modules/echarts/lib/coord/single/prepareCustom.js","webpack://TykUI/./node_modules/echarts/lib/coord/polar/prepareCustom.js","webpack://TykUI/./node_modules/echarts/lib/coord/calendar/prepareCustom.js","webpack://TykUI/./node_modules/echarts/lib/component/grid.js","webpack://TykUI/./node_modules/echarts/lib/component/polar.js","webpack://TykUI/./node_modules/echarts/lib/layout/barPolar.js","webpack://TykUI/./node_modules/echarts/lib/coord/polar/Polar.js","webpack://TykUI/./node_modules/echarts/lib/coord/polar/RadiusAxis.js","webpack://TykUI/./node_modules/echarts/lib/coord/polar/AngleAxis.js","webpack://TykUI/./node_modules/echarts/lib/coord/polar/PolarModel.js","webpack://TykUI/./node_modules/echarts/lib/coord/polar/AxisModel.js","webpack://TykUI/./node_modules/echarts/lib/component/angleAxis.js","webpack://TykUI/./node_modules/echarts/lib/component/axis/AngleAxisView.js","webpack://TykUI/./node_modules/echarts/lib/component/radiusAxis.js","webpack://TykUI/./node_modules/echarts/lib/component/axis/RadiusAxisView.js","webpack://TykUI/./node_modules/echarts/lib/component/axisPointer/PolarAxisPointer.js","webpack://TykUI/./node_modules/echarts/lib/component/geo.js","webpack://TykUI/./node_modules/echarts/lib/coord/geo/GeoModel.js","webpack://TykUI/./node_modules/echarts/lib/component/geo/GeoView.js","webpack://TykUI/./node_modules/echarts/lib/component/calendar.js","webpack://TykUI/./node_modules/echarts/lib/coord/calendar/Calendar.js","webpack://TykUI/./node_modules/echarts/lib/coord/calendar/CalendarModel.js","webpack://TykUI/./node_modules/echarts/lib/component/calendar/CalendarView.js","webpack://TykUI/./node_modules/echarts/lib/component/graphic.js","webpack://TykUI/./node_modules/echarts/lib/component/toolbox.js","webpack://TykUI/./node_modules/echarts/lib/component/toolbox/ToolboxModel.js","webpack://TykUI/./node_modules/echarts/lib/component/toolbox/ToolboxView.js","webpack://TykUI/./node_modules/echarts/lib/component/toolbox/feature/SaveAsImage.js","webpack://TykUI/./node_modules/echarts/lib/component/toolbox/feature/MagicType.js","webpack://TykUI/./node_modules/echarts/lib/component/toolbox/feature/DataView.js","webpack://TykUI/./node_modules/echarts/lib/component/toolbox/feature/DataZoom.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoomSelect.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom/AxisProxy.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom/SelectZoomModel.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom/SelectZoomView.js","webpack://TykUI/./node_modules/echarts/lib/component/toolbox/feature/Restore.js","webpack://TykUI/./node_modules/echarts/lib/component/tooltip.js","webpack://TykUI/./node_modules/echarts/lib/component/tooltip/TooltipModel.js","webpack://TykUI/./node_modules/echarts/lib/component/tooltip/TooltipView.js","webpack://TykUI/./node_modules/echarts/lib/component/tooltip/TooltipContent.js","webpack://TykUI/./node_modules/echarts/lib/component/tooltip/TooltipRichContent.js","webpack://TykUI/./node_modules/echarts/lib/component/brush.js","webpack://TykUI/./node_modules/echarts/lib/component/brush/preprocessor.js","webpack://TykUI/./node_modules/echarts/lib/component/brush/visualEncoding.js","webpack://TykUI/./node_modules/echarts/lib/component/brush/selector.js","webpack://TykUI/./node_modules/echarts/lib/component/brush/BrushModel.js","webpack://TykUI/./node_modules/echarts/lib/component/brush/BrushView.js","webpack://TykUI/./node_modules/echarts/lib/component/brush/brushAction.js","webpack://TykUI/./node_modules/echarts/lib/component/toolbox/feature/Brush.js","webpack://TykUI/./node_modules/echarts/lib/component/title.js","webpack://TykUI/./node_modules/echarts/lib/component/timeline.js","webpack://TykUI/./node_modules/echarts/lib/component/timeline/preprocessor.js","webpack://TykUI/./node_modules/echarts/lib/component/timeline/typeDefaulter.js","webpack://TykUI/./node_modules/echarts/lib/component/timeline/timelineAction.js","webpack://TykUI/./node_modules/echarts/lib/component/timeline/SliderTimelineModel.js","webpack://TykUI/./node_modules/echarts/lib/component/timeline/TimelineModel.js","webpack://TykUI/./node_modules/echarts/lib/component/timeline/SliderTimelineView.js","webpack://TykUI/./node_modules/echarts/lib/component/timeline/TimelineView.js","webpack://TykUI/./node_modules/echarts/lib/component/timeline/TimelineAxis.js","webpack://TykUI/./node_modules/echarts/lib/component/markPoint.js","webpack://TykUI/./node_modules/echarts/lib/component/marker/MarkPointModel.js","webpack://TykUI/./node_modules/echarts/lib/component/marker/MarkPointView.js","webpack://TykUI/./node_modules/echarts/lib/component/markLine.js","webpack://TykUI/./node_modules/echarts/lib/component/marker/MarkLineModel.js","webpack://TykUI/./node_modules/echarts/lib/component/marker/MarkLineView.js","webpack://TykUI/./node_modules/echarts/lib/component/markArea.js","webpack://TykUI/./node_modules/echarts/lib/component/marker/MarkAreaModel.js","webpack://TykUI/./node_modules/echarts/lib/component/marker/MarkAreaView.js","webpack://TykUI/./node_modules/echarts/lib/component/legendScroll.js","webpack://TykUI/./node_modules/echarts/lib/component/legend/legendAction.js","webpack://TykUI/./node_modules/echarts/lib/component/legend/legendFilter.js","webpack://TykUI/./node_modules/echarts/lib/component/legend/ScrollableLegendModel.js","webpack://TykUI/./node_modules/echarts/lib/component/legend/ScrollableLegendView.js","webpack://TykUI/./node_modules/echarts/lib/component/legend/scrollableLegendAction.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom/SliderZoomModel.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom/SliderZoomView.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom/InsideZoomModel.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom/InsideZoomView.js","webpack://TykUI/./node_modules/echarts/lib/component/dataZoom/roams.js","webpack://TykUI/./node_modules/echarts/lib/component/visualMap.js","webpack://TykUI/./node_modules/echarts/lib/component/visualMap/ContinuousModel.js","webpack://TykUI/./node_modules/echarts/lib/component/visualMap/ContinuousView.js","webpack://TykUI/./node_modules/echarts/lib/component/visualMap/PiecewiseModel.js","webpack://TykUI/./node_modules/echarts/lib/component/visualMap/PiecewiseView.js","webpack://TykUI/./node_modules/zrender/lib/vml/vml.js","webpack://TykUI/./node_modules/zrender/lib/vml/graphic.js","webpack://TykUI/./node_modules/zrender/lib/vml/Painter.js","webpack://TykUI/./node_modules/zrender/lib/svg/svg.js","webpack://TykUI/./node_modules/zrender/lib/svg/Painter.js","webpack://TykUI/./node_modules/zrender/lib/core/arrayDiff2.js","webpack://TykUI/./node_modules/zrender/lib/svg/helper/GradientManager.js","webpack://TykUI/./node_modules/zrender/lib/svg/helper/ClippathManager.js","webpack://TykUI/./node_modules/zrender/lib/svg/helper/ShadowManager.js","webpack://TykUI/./node_modules/flatpickr/dist/flatpickr.min.css?508b","webpack://TykUI/./node_modules/flatpickr/dist/flatpickr.min.css","webpack://TykUI/./node_modules/css-loader/lib/css-base.js","webpack://TykUI/./node_modules/style-loader/lib/addStyles.js","webpack://TykUI/./node_modules/style-loader/lib/urls.js","webpack://TykUI/./src/components/Accordion/js/AccordionContext.js","webpack://TykUI/./src/components/Accordion/js/Accordion.js","webpack://TykUI/./src/components/Accordion/js/AccordionItemContext.js","webpack://TykUI/./src/components/Icon/js/Icon.js","webpack://TykUI/./src/components/Accordion/js/AccordionItemTrigger.js","webpack://TykUI/./src/components/Accordion/js/AccordionItem.js","webpack://TykUI/./src/components/Accordion/js/AccordionItemHeader.js","webpack://TykUI/./src/common/js/hooks/usePrevious.js","webpack://TykUI/./src/common/js/hooks/useTimeout.js","webpack://TykUI/./src/common/js/hooks/useInterval.js","webpack://TykUI/./src/common/js/hooks/useEventListener.js","webpack://TykUI/./src/common/js/hooks/useComponentSize.js","webpack://TykUI/./src/components/Collapsible/js/Collapsible.js","webpack://TykUI/./src/components/Accordion/js/AccordionItemContent.js","webpack://TykUI/./src/components/Accordion/index.js","webpack://TykUI/./src/components/Button/js/Button.js","webpack://TykUI/./src/components/ButtonGroup/js/ButtonGroup.js","webpack://TykUI/./src/components/Checkbox/js/Checkbox.js","webpack://TykUI/./src/common/js/utils/formik.js","webpack://TykUI/./src/components/Checkbox/js/FormikCheckbox.js","webpack://TykUI/./src/components/CodeEditor/js/CodeEditor.js","webpack://TykUI/./src/components/CodeEditor/js/FieldCodeEditor.js","webpack://TykUI/./src/components/CodeEditor/js/FormikCodeEditor.js","webpack://TykUI/./src/common/js/utils/index.js","webpack://TykUI/./src/components/Loader/js/Loader.js","webpack://TykUI/./src/components/Message/js/Message.js","webpack://TykUI/./src/components/Chart/js/Chart.js","webpack://TykUI/./src/components/Column/js/Column.js","webpack://TykUI/./src/components/Toast/js/ToastMessage.js","webpack://TykUI/./src/components/Toast/js/ToastContainer.js","webpack://TykUI/./src/components/Toast/index.js","webpack://TykUI/./src/components/Toast/js/ToastCreator.js","webpack://TykUI/./src/components/CopyToClipboard/js/CopyToClipboard.js","webpack://TykUI/./src/components/Combobox/js/Combobox.js","webpack://TykUI/./src/components/Combobox/js/FieldCombobox.js","webpack://TykUI/./src/components/Combobox/js/FormikCombobox.js","webpack://TykUI/./src/components/InfiniteScroller/js/InfiniteScroller.js","webpack://TykUI/./src/components/FloatingContainer/js/floating-container.js","webpack://TykUI/./src/components/Pill/js/Pill.js","webpack://TykUI/./src/components/Combobox2/js/Value.js","webpack://TykUI/./src/components/Combobox2/js/List.js","webpack://TykUI/./src/components/Combobox2/js/Combobox.js","webpack://TykUI/./src/components/Combobox2/js/FormikCombobox.js","webpack://TykUI/./src/components/Combobox2/js/FieldCombobox.js","webpack://TykUI/./src/components/Modal/js/Modal.js","webpack://TykUI/./src/components/Modal/js/ModalFooter.js","webpack://TykUI/./src/components/Modal/js/ModalBody.js","webpack://TykUI/./src/components/Modal/js/ModalHeader.js","webpack://TykUI/./src/components/Modal/js/ModalTitle.js","webpack://TykUI/./src/components/Modal/index.js","webpack://TykUI/./src/components/Confirm/js/Confirm.js","webpack://TykUI/./src/components/DatePicker/js/DatePicker.js","webpack://TykUI/./src/components/DatePicker/js/FieldDatePicker.js","webpack://TykUI/./src/components/DatePicker/js/FormikDatePicker.js","webpack://TykUI/./src/components/Dropdown/js/Dropdown.js","webpack://TykUI/./src/components/Dropdown/js/DropdownItem.js","webpack://TykUI/./src/components/Dropdown/js/FieldDropdown.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://TykUI/./node_modules/date-fns/esm/toDate/index.js","webpack://TykUI/./node_modules/date-fns/esm/isValid/index.js","webpack://TykUI/./src/components/Dropdown/index.js","webpack://TykUI/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://TykUI/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://TykUI/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://TykUI/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://TykUI/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://TykUI/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://TykUI/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://TykUI/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://TykUI/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://TykUI/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://TykUI/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://TykUI/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://TykUI/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://TykUI/./node_modules/date-fns/esm/format/index.js","webpack://TykUI/./src/components/Row/js/Row.js","webpack://TykUI/./src/components/EditableList/js/EditableListForm.js","webpack://TykUI/./src/components/EditableList/js/EditableList.js","webpack://TykUI/./node_modules/date-fns/esm/isDate/index.js","webpack://TykUI/./src/components/EditableList/js/FieldEditableList.js","webpack://TykUI/./src/components/EditableList/js/FormikEditableList.js","webpack://TykUI/./src/components/FileInput/js/FileInput.js","webpack://TykUI/./src/components/FileInput/js/FieldFileInput.js","webpack://TykUI/./src/components/FileInput/js/FormikFileInput.js","webpack://TykUI/./src/components/Utils/index.js","webpack://TykUI/./src/components/FixedWrapper/js/FixedWrapper.js","webpack://TykUI/./src/components/InfoNote/js/InfoNote.js","webpack://TykUI/./src/components/Input/js/Input.js","webpack://TykUI/./src/components/Input/js/FieldInput.js","webpack://TykUI/./src/components/Input/js/FormikInput.js","webpack://TykUI/./src/components/List/js/List.js","webpack://TykUI/./src/components/List/js/ListItem.js","webpack://TykUI/./src/components/List/index.js","webpack://TykUI/./src/components/Multiselect/js/MultiselectContext.js","webpack://TykUI/./src/components/Multiselect/js/MultiselectItem.js","webpack://TykUI/./src/components/Multiselect/js/MultiselectPanel.js","webpack://TykUI/./src/components/Multiselect/js/Multiselect.js","webpack://TykUI/./src/components/Multiselect/js/FieldMultiselect.js","webpack://TykUI/./src/components/Multiselect/js/FormikMultiselect.js","webpack://TykUI/./src/components/NavBar/js/NavBar.js","webpack://TykUI/./src/components/Multiselect/index.js","webpack://TykUI/./src/components/Navigation/js/Navigation.js","webpack://TykUI/./src/components/Navigation/js/NavigationItem.js","webpack://TykUI/./src/components/Navigation/index.js","webpack://TykUI/./src/components/Pagination/js/Pagination.js","webpack://TykUI/./src/components/Pagination/js/FieldPagination.js","webpack://TykUI/./src/components/Panel/js/Panel.js","webpack://TykUI/./src/components/Panel/js/PanelBody.js","webpack://TykUI/./src/components/Panel/js/PanelFooter.js","webpack://TykUI/./src/components/Panel/js/PanelHeader.js","webpack://TykUI/./src/components/Panel/index.js","webpack://TykUI/./src/components/Radio/js/Radio.js","webpack://TykUI/./src/components/Radio/js/FormikRadio.js","webpack://TykUI/./src/components/Select/js/Select.js","webpack://TykUI/./src/components/Select/js/FieldSelect.js","webpack://TykUI/./src/components/Select/js/FormikSelect.js","webpack://TykUI/./src/components/SelectableList/js/SelectableList.js","webpack://TykUI/./src/components/SelectableList/js/FieldSelectableList.js","webpack://TykUI/./src/components/SelectableList/js/FormikSelectableList.js","webpack://TykUI/./src/components/Tabs/js/Tabs.js","webpack://TykUI/./src/components/Tabs/js/TabContext.js","webpack://TykUI/./src/components/Tabs/js/TabContent.js","webpack://TykUI/./src/components/Tabs/js/Tab.js","webpack://TykUI/./src/components/Tabs/index.js","webpack://TykUI/./src/components/Textarea/js/Textarea.js","webpack://TykUI/./src/components/Textarea/js/FormikTextarea.js","webpack://TykUI/./src/components/Tooltip/js/Tooltip.js","webpack://TykUI/./src/components/TextEllipsis/js/textEllipsis.js","webpack://TykUI/./src/components/Table/tableContext.js","webpack://TykUI/./src/components/Table/js/header-cell.js","webpack://TykUI/./src/components/Table/js/header.js","webpack://TykUI/./src/components/Table/js/cell.js","webpack://TykUI/./src/components/Table/js/row.js","webpack://TykUI/./src/components/Table/js/body.js","webpack://TykUI/./src/components/Table/js/table.js","webpack://TykUI/./src/components/Toggle/js/ToggleContext.js","webpack://TykUI/./src/components/Toggle/js/Toggle.js","webpack://TykUI/./src/components/Toggle/js/ToggleItem.js","webpack://TykUI/./src/components/Toggle/js/ToggleItemWrapper.js","webpack://TykUI/./src/components/Toggle/js/FieldToggle.js","webpack://TykUI/./src/components/Toggle/js/FormikToggle.js","webpack://TykUI/./src/components/Toggle/index.js","webpack://TykUI/./src/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","BUILTIN_OBJECT","TYPED_ARRAY","objToString","toString","arrayProto","Array","nativeForEach","forEach","nativeFilter","filter","nativeSlice","slice","nativeMap","map","nativeReduce","reduce","methods","clone","source","result","typeStr","isPrimitive","len","length","Ctor","constructor","from","isDom","merge","target","overwrite","isObject","targetProp","sourceProp","isArray","isBuiltInObject","defaults","overlay","_ctx","createCanvas","each","obj","cb","context","func","args","arguments","apply","concat","type","nodeType","ownerDocument","document","createElement","HashMap","isArr","this","data","thisMap","visit","set","removeKey","$override","fn","mergeAll","targetAndSources","extend","getContext","indexOf","array","inherits","clazz","baseClazz","clazzPrototype","F","prop","superClass","mixin","isArrayLike","push","memo","find","curry","isFunction","isString","isTypedArray","eqNaN","retrieve","values","retrieve2","value0","value1","retrieve3","value2","Function","normalizeCssArray","val","assert","condition","message","Error","trim","str","replace","setAsPrimitive","createHashMap","concatArray","a","b","newArray","offset","noop","configurable","writable","__DEV__","zrender","zrUtil","colorTool","env","timsort","Eventful","GlobalModel","ExtensionAPI","CoordinateSystemManager","OptionManager","backwardCompat","dataStack","ComponentModel","SeriesModel","ComponentView","ChartView","graphic","modelUtil","throttle","seriesColor","aria","loadingDefault","Scheduler","lightTheme","darkTheme","mapDataStorage","parseClassType","PRIORITY","PROCESSOR","FILTER","SERIES_FILTER","STATISTIC","VISUAL","LAYOUT","PROGRESSIVE_LAYOUT","GLOBAL","CHART","POST_CHART_LAYOUT","COMPONENT","BRUSH","IN_MAIN_PROCESS","ACTION_REG","createRegisterEventWithLowercaseName","method","ignoreDisposed","eventName","handler","_disposed","toLowerCase","id","MessageCenter","ECharts","dom","theme","opts","themeStorage","group","_dom","zr","_zr","init","renderer","devicePixelRatio","width","height","_throttledZrFlush","flush","_theme","_chartsViews","_chartsMap","_componentsViews","_componentsMap","_coordSysMgr","ecInstance","coordSysMgr","api","_api","getCoordinateSystems","getComponentByElement","el","modelInfo","__ecComponentInfo","_model","getComponent","mainType","index","parent","prioritySortFunc","__prio","visualFuncs","dataProcessorFuncs","_scheduler","_ecEventProcessor","EventProcessor","_messageCenter","_initEvents","resize","_pendingActions","animation","on","_onframe","ecIns","trigger","isFinished","unfinished","bindRenderedEvent","off","one","echartsProto","doConvertPixel","methodName","finder","ecModel","coordSysList","parseFinder","coordSys","scheduler","silent","prepare","updateMethods","update","flushPendingActions","triggerUpdatedEvent","remainTime","startTime","Date","performSeriesTasks","performDataProcessorTasks","updateStreamModes","performVisualTasks","renderSeries","getDom","getZr","setOption","option","notMerge","lazyUpdate","optionManager","optionPreprocessorFuncs","setTheme","console","error","getModel","getOption","getWidth","getHeight","getDevicePixelRatio","painter","dpr","window","getRenderedCanvas","canvasSupported","pixelRatio","backgroundColor","getSvgDataUrl","svgSupported","list","storage","getDisplayList","stopAnimation","pathToDataUrl","getDataURL","excludeComponents","excludesComponentViews","self","componentType","eachComponent","component","view","__viewId","ignore","url","getType","toDataURL","getConnectedDataURL","groupId","mathMin","Math","min","mathMax","max","connectedGroups","left","Infinity","top","right","bottom","canvasList","instances","chart","canvas","boundingRect","getBoundingClientRect","targetCanvas","connectedBackgroundColor","add","Rect","shape","x","y","style","fill","item","img","Image","image","refreshImmediately","convertToPixel","convertFromPixel","containPixel","models","model","coordinateSystem","containPoint","getVisual","visualType","defaultMainType","seriesModel","getData","dataIndexInside","indexOfRawIndex","dataIndex","getItemVisual","getViewOfComponentModel","componentModel","getViewOfSeriesModel","prepareAndUpdate","payload","restoreData","clearColorPalette","render","setBackgroundColor","colorArr","parse","stringify","performPostUpdateFuncs","updateTransform","componentDirtyList","componentView","__alive","seriesDirtyMap","eachSeries","chartView","uid","setDirty","dirtyMap","updateView","markUpdateMethod","updateVisual","updateLayout","restorePipelines","prepareStageTasks","prepareView","plan","updateDirectly","subType","query","excludeSeriesId","normalizeToArray","callView","__model","chartsMap","doDispatchAction","payloadType","escapeConnect","actionWrap","actions","actionInfo","cptType","split","updateMethod","pop","payloads","batched","batch","eventObj","eventObjBatch","isHighDown","batchItem","action","event","main","sub","pendingActions","shift","isComponent","viewList","viewMap","doPrepare","viewId","classType","getClass","__id","componentIndex","renderTask","dispose","remove","splice","dirtyList","updateZ","renderComponents","updatePayload","dirty","perform","getPerformArgs","blendMode","traverse","isGroup","blend","setStyle","eachPendingDisplayable","displayable","updateBlend","elCount","node","preventUsingHoverLayer","useHoverLayer","updateHoverLayerStatus","postUpdateFuncs","_loadingFX","optionChanged","resetOption","showLoading","cfg","hideLoading","loadingEffects","makeActionFromEvent","eventActionMap","dispatchAction","opt","browser","weChat","appendData","params","seriesIndex","getSeriesByIndex","MOUSE_EVENT_NAMES","z","zlevel","eventInfo","eveName","e","dataModel","getDataParams","dataType","eventData","targetEl","packedEvent","zrEventfulCallAtLast","actionType","eventType","isDisposed","clear","series","setAttribute","DOM_ATTRIBUTE_KEY","normalizeQuery","cptQuery","dataQuery","otherQuery","condCptType","suffixes","dataKeys","reserved","propSuffix","suffixPos","lastIndexOf","check","filterForExposedEvent","host","propOnHost","afterTrigger","idBase","groupIdBase","disConnect","disconnect","getInstanceByDom","getAttribute","registerTheme","registerPreprocessor","preprocessorFunc","registerProcessor","priority","processor","normalizeRegister","registerAction","test","registerVisual","visualTask","targetList","defaultPriority","stageHandler","wrapStageHandler","__raw","registerLoading","loadingFx","version","dependencies","existInstance","STATUS_KEY","updateConnectedChartsStatus","charts","status","otherCharts","otherChart","enableConnect","connect","getInstanceById","registerPostUpdate","postUpdateFunc","registerCoordinateSystem","CoordinateSystem","register","getCoordinateSystemDimensions","coordSysCreator","getDimensionsInfo","dimensions","registerLayout","layoutTask","extendComponentModel","extendComponentView","extendSeriesModel","extendChartView","setCanvasCreator","creator","registerMap","mapName","geoJson","specialAreas","getMap","records","retrieveMap","geoJSON","dataTool","___ec_export","_defineProperties","props","descriptor","Constructor","protoProps","staticProps","instance","TypeError","_typeof","assertThisInitialized","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","subClass","pathTool","matrix","vector","Path","Transformable","ZImage","Group","Text","Circle","Sector","Ring","Polygon","Polyline","Line","BezierCurve","Arc","CompoundPath","LinearGradient","RadialGradient","BoundingRect","IncrementalDisplayable","subPixelOptimizeUtil","EMPTY_OBJ","_highlightNextDigit","_highlightKeyMap","_customShapeMap","registerShape","ShapeClass","makePath","pathData","rect","layout","path","createFromString","centerGraphic","getBoundingRect","resizePath","aspect","mergePath","applyTransform","calculateTransform","subPixelOptimize","hasFillOrStroke","fillOrStroke","liftedColorMap","liftedColorCount","singleEnterEmphasis","hoverStl","__hoverStl","__highlighted","__zr","elTarget","targetStyle","addHover","rollbackDefaultTextStyle","__hoverStlDirty","hoverStyle","normalStyle","__cachedNormalStl","__cachedNormalZ2","z2","elStyle","stroke","cacheElementStl","extendFrom","setDefaultHoverFillStroke","applyDefaultTextStyle","color","liftedColor","lift","liftColor","singleEnterNormal","highlighted","removeHover","normalStl","normalZ2","traverseUpdate","updater","commonParam","fromState","toState","child","__highDownOnUpdate","setElementHoverStyle","onElementMouseOver","shouldSilent","__highByOuter","onElementMouseOut","onElementEmphasisEvent","highlightDigit","onElementNormalEvent","__highDownSilentOnTouch","zrByTouch","setAsHighDownDispatcher","asDispatcher","disable","highDownSilentOnTouch","highDownOnUpdate","__highDownDispatcher","setTextStyle","textStyle","textStyleModel","specifiedTextStyle","isEmphasis","setTextStyleCommon","isRectText","textPosition","getTextPosition","getShallow","textOffset","labelRotate","PI","textRotation","textDistance","richResult","globalTextStyle","richItemNames","richItemNameMap","rich","parentModel","getRichItemNames","richTextStyle","setTokenTextStyle","forceRich","isBlock","textFill","getAutoColor","textStroke","textBorderColor","textStrokeWidth","textBorderWidth","insideRollbackOpt","autoColor","fontStyle","fontWeight","fontSize","fontFamily","textAlign","textVerticalAlign","textLineHeight","textWidth","textHeight","textTag","disableBox","textBackgroundColor","textPadding","textBorderRadius","textBoxShadowColor","textBoxShadowBlur","textBoxShadowOffsetX","textBoxShadowOffsetY","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","insideRollback","useInsideStyle","useInsideStyleCache","useAutoColorCache","animateOrSetProps","isUpdate","animatableModel","isAnimationEnabled","postfix","duration","animationEasing","animationDelay","getAnimationDelayParams","animateTo","attr","updateProps","transform","invert","getLocalTransform","lineLineIntersect","a1x","a1y","a2x","a2y","b1x","b1y","b2x","b2y","mx","my","nx","ny","nmCrossProduct","crossProduct2d","b1a1x","b1a1y","q","x1","y1","x2","y2","Z2_EMPHASIS_LIFT","CACHED_LABEL_STYLE_PROPERTIES","extendShape","extendPath","extendFromString","getShapeClass","makeImage","imageUrl","onload","subPixelOptimizeLine","param","subPixelOptimizeRect","setHoverStyle","isHighDownDispatcher","getHighlightDigit","highlightKey","setLabelStyle","emphasisStyle","normalModel","emphasisModel","normalSpecified","emphasisSpecified","baseText","labelFetcher","labelDataIndex","labelDimIndex","showNormal","showEmphasis","getFormattedLabel","defaultText","normalStyleText","emphasisStyleText","text","modifyLabelStyle","normalStyleProps","emphasisStyleProps","setText","labelModel","defaultColor","getFont","gTextStyleModel","join","initProps","getTransform","ancestor","mat","identity","mul","transformDirection","direction","hBase","abs","vBase","vertex","groupTransition","g1","g2","elMap","elMap1","anid","oldEl","newProp","getAnimatableProps","position","rotation","clipPointsByRect","points","point","clipRectByRect","targetRect","createIcon","iconStr","rectHover","strokeNoScale","linePolygonIntersect","p2","_extends","assign","ReferenceError","arrayWithHoles","iterableToArrayLimit","nonIterableRest","arr","TIME_REG","quantityExponent","exp","floor","log","LN10","pow","linearMap","domain","range","clamp","subDomain","subRange","parsePercent","percent","all","match","parseFloat","NaN","round","precision","returnStr","toFixed","asc","sort","getPrecision","isNaN","count","getPrecisionSafe","eIndex","dotIndex","getPixelPrecision","dataExtent","pixelExtent","dataQuantity","sizeQuantity","isFinite","getPercentWithPrecision","valueList","idx","sum","acc","digits","votesPerQuota","targetSeats","seats","votes","currentSum","remainder","Number","NEGATIVE_INFINITY","maxId","MAX_SAFE_INTEGER","remRadian","radian","pi2","isRadianAroundZero","parseDate","exec","hour","toUpperCase","UTC","quantity","nice","exponent","exp10","f","quantile","ascArr","H","h","v","reformIntervals","littleThan","lg","interval","close","curr","currClose","isNumeric","isIdInner","cptOption","innerUniqueIndex","has","defaultEmphasis","subOpts","emphasis","subOptName","TEXT_STYLE_OPTIONS","getDataItemValue","dataItem","isDataItemOption","mappingToExists","exists","newCptOptions","exist","makeIdAndName","mapResult","idMap","existCpt","keyInfo","idNum","isNameSpecified","compressBatches","batchA","batchB","mapA","mapB","makeMap","mapToArray","sourceBatch","otherMap","seriesId","dataIndices","otherDataIndices","j","lenj","isData","queryDataIndex","indexOfName","makeInner","random","hostObj","parsedKey","queryType","includeMainTypes","queryParam","queryComponents","getTooltipRenderMode","renderModeOption","domSupported","groupData","getKey","buckets","keys","objectWithoutPropertiesLoose","excluded","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","dev","global","formatUtil","LOCATION_PARAMS","HV_NAMES","boxLayout","orient","gap","maxWidth","maxHeight","currentLineMaxSize","eachChild","nextX","nextY","nextChild","childAt","nextChildRect","moveX","newline","moveY","box","vbox","hbox","getLayoutRect","positionInfo","containerRect","margin","containerWidth","containerHeight","verticalMargin","horizontalMargin","copyLayoutParams","getAvailableSize","positionElement","hv","boundingMode","needLocalTransform","elPos","dx","dy","sizeCalculable","hvIdx","mergeLayoutParam","targetOption","newOption","ignoreSize","hResult","vResult","names","newParams","newValueCount","merged","mergedValueCount","hasProp","hasValue","copy","getLayoutParams","ArrayCtor","Float32Array","sqrt","lenSquare","lengthSquare","distance","v1","v2","dist","distanceSquare","distSquare","out","scaleAndAdd","div","dot","scale","normalize","negate","lerp","lt","rb","lb","rt","vec2","v2ApplyTransform","union","other","maxX","maxY","sx","sy","translate","intersect","ax0","ax1","ay0","ay1","bx0","bx1","by0","by1","contain","plain","_default","textContain","numberUtil","replaceReg","replaceMap","'","encodeHTML","TPL_VAR_ALIAS","wrapVar","varName","seriesIdx","pad","substr","truncateText","addCommas","toCamelCase","upperCaseFirst","group1","charAt","formatTpl","tpl","paramsList","encode","seriesLen","$vars","alias","k","formatTplSimple","getTooltipMarker","extraCssText","renderMode","markerId","content","formatTime","isUTC","date","utc","M","S","capitalFirst","getTextBoundingRect","font","truncate","getTextRect","Displayable","PathProxy","pathContain","getCanvasPattern","pathProxyForDraw","__dirtyPath","strokeContainThreshold","segmentIgnoreThreshold","brush","ctx","prevEl","hasStroke","hasFill","hasFillGradient","colorStops","hasStrokeGradient","hasFillPattern","hasStrokePattern","setTransform","__dirty","_fillGradient","getGradient","_strokeGradient","fillStyle","strokeStyle","lineDash","lineDashOffset","ctxLineDash","setLineDash","getGlobalScale","setScale","beginPath","setLineDashOffset","buildPath","rebuildPath","fillOpacity","originalGlobalAlpha","globalAlpha","opacity","strokeOpacity","restoreTransform","drawRectText","shapeCfg","inBundle","createPathProxy","_rect","needsUpdateRect","rectWithStroke","_rectWithStroke","w","lineWidth","lineScale","getLineScale","localPos","transformCoordToLocal","containStroke","dirtyPath","__dirtyText","refresh","__clipTarget","animateShape","loop","animate","attrKV","setShape","Sub","defaultShape","thisShape","wx","getSystemInfoSync","os","wxa","touchEventsSupported","worker","navigator","ua","firefox","ie","edge","SVGRect","pointerEventsSupported","detect","userAgent","_clazz","enableClassExtend","enableClassCheck","lineStyleMixin","areaStyleMixin","textStyleMixin","itemStyleMixin","inner","Model","doGet","pathArr","getParent","getParentMethod","mergeOption","ignoreParent","parsePath","thisParentModel","isEmpty","setReadOnly","properties","customizeGetParent","componentUtil","enableClassManagement","boxLayoutMixin","defaultOption","dependentModels","layoutMode","$constructor","extraOpt","getUID","mergeDefaultAndTheme","inputPositionParams","themeModel","getTheme","getDefaultOption","optionUpdated","newCptOption","isInit","fields","optList","Class","getReferringComponents","registerWhenExtend","enableSubTypeDefaulter","enableTopologicalTravel","deps","getClassesByMainType","Clazz","unshift","_format","colorPaletteMixin","dataFormatMixin","_layout","createTask","_sourceHelper","prepareSource","getSource","retrieveRawValue","legendVisualProvider","visualColorAccessPath","visualBorderColorAccessPath","dataTask","dataTaskCount","reset","dataTaskReset","getInitialData","wrapData","dataBeforeProcessed","autoSeriesName","themeSubType","hasClass","fillDataTextStyle","newSeriesOption","label","getRawData","task","getCurrentTask","getLinkedData","setData","modifyOutputEnd","setOutputEnd","outputData","getBaseAxis","formatTooltip","multipleSeries","newLine","isRichText","markers","formatSingleValue","tooltipDims","mapDimension","tooltipDimLen","getRawValue","isValueArr","vertially","dimItem","getDimensionInfo","tooltip","displayName","setEachItem","dim","dimInfo","otherDims","dimType","markName","dimHead","dimHeadStr","valStr","formatArrayValue","colorEl","getName","seriesName","colorStr","html","animationEnabled","getColorFromPalette","scope","requestColorNum","coordDimToDataDim","coordDim","getProgressive","getProgressiveThreshold","getAxisTooltipData","getTooltipPosition","pipeTask","preventIncremental","pipelineContext","dataDims","nameArr","dataDim","getSeriesAutoName","cloneShallow","dataTaskProgress","end","CHANGABLE_METHODS","wrapMethod","onDataSelfChange","pipeline","getPipeline","currentTask","agentStubMap","arrayWithoutHoles","iterableToArray","nonIterableSpread","m1","m2","out0","out1","out2","out3","out4","out5","rotate","rad","aa","ac","atx","ab","ad","aty","st","sin","ct","cos","vx","vy","det","imageHelper","_util","textWidthCache","textWidthCacheCounter","STYLE_REG","textLines","measureText","adjustTextX","adjustTextY","calculateTextPosition","halfHeight","ellipsis","options","prepareTruncateOptions","truncateSingleLine","maxIterations","minChar","cnCharWidth","ascCharWidth","placeholder","contentWidth","ellipsisWidth","textLine","subLength","estimateLength","charCode","charCodeAt","getLineHeight","parsePlainText","padding","lineHeight","lines","outerHeight","canCacheByTextString","truncOuterHeight","truncOuterWidth","outerWidth","parseRichText","contentBlock","lastIndex","matchedIndex","pushTokens","substring","contentHeight","pendingList","stlPadding","truncateWidth","truncateHeight","line","tokens","tokenStyle","token","styleName","tokenHeight","tokenWidth","tokenWidthNotSpecified","percentWidth","bgImg","findExistImage","isImageReady","paddingW","remianTruncWidth","parseInt","block","isEmptyStr","strs","isLineHolder","tokensLen","DEFAULT_FONT","getRichTextRect","getPlainTextRect","adjustTextPositionOnRect","makeFont","textFont","DataDiffer","Source","_dataProvider","defaultDimValueGetters","DefaultDataProvider","summarizeDimensions","DataDimensionInfo","dataCtors","Float64Array","Int32Array","CtorUint32Array","Uint32Array","CtorInt32Array","CtorUint16Array","Uint16Array","getIndicesCtor","_rawCount","TRANSFERABLE_PROPERTIES","CLONE_PROPERTIES","transferProperties","__wrappedMethods","propName","_calculationInfo","List","hostModel","dimensionInfos","dimensionNames","invertedIndicesMap","dimensionInfo","dimensionName","coordDimIndex","createInvertedIndices","_dimensionInfos","_indices","_count","_storage","_nameList","_idList","_optionModels","_visual","_itemVisuals","hasItemVisual","_itemLayouts","_graphicEls","_chunkSize","_chunkCount","_rawData","_rawExtent","_extent","_approximateExtent","_dimensionsSummary","_invertedIndicesMap","userOutput","listProto","prepareChunks","chunkSize","chunkCount","DataCtor","lastChunkIndex","resizeChunkArray","newStore","prepareInvertedIndex","invertedIndices","ordinalMeta","categories","getRawValueFromStore","dimIndex","rawIndex","chunkIndex","chunkOffset","chunk","getRawIndexWithoutIndices","getRawIndexWithIndices","getId","_idDimIdx","normalizeDimensions","cloneListForMapAndSample","original","excludeDimensions","allDimensions","originalStorage","cloneDimStore","getInitialExtent","originalDimStore","originalChunk","newDimStore","hasItemOption","getDimension","getDimensionsOnCoord","dataDimsOnCoord","dimensionsSummary","encodeFirstDimNotExtra","dims","initData","nameList","dimValueGetter","isInstance","_nameRepeatCount","defaultDimValueGetter","sourceFormat","_dimValueGetter","_dimValueGetterArrayRows","arrayRows","_initDataFromProvider","pure","getProvider","rawData","start","persistent","appendValues","dimLen","rawExtent","originalChunkCount","emptyDataItem","sourceIdx","dimRawExtent","nameDimIdx","dimensionInfoMap","idList","nameRepeatCount","itemName","_nameDimIdx","itemId","getItem","dimStorage","nameDim","nameDimChunk","clean","getIndices","indices","thisCount","newIndices","buffer","getRawIndex","getByRawIndex","rawIdx","dimStore","_getFast","getValues","getDataExtent","dimData","initialExtent","dimExtent","currEnd","getApproximateExtent","setApproximateExtent","extent","getCalculationInfo","setCalculationInfo","getSum","getMedian","dimDataArray","sortedDimDataArray","rawIndexOf","rawDataIndex","mid","indicesOfNearest","maxDistance","nearestIndices","minDist","minDiff","nearestIndicesLen","diff","getRawDataItem","contextCompat","dimSize","filterSelf","dim0","keep","selectRange","originalCount","quickFinished","chunkStorage","dimStorage2","min2","max2","chunkStorage2","val2","dimk","mapArray","tmpRetValue","dataCount","retValue","rawExtentOnDim","downSample","dimension","rate","sampleValue","sampleIndex","targetStorage","frameValues","frameSize","dataIdx","originalChunkIndex","originalChunkOffset","sampleFrameIdx","sampleChunkOffset","getItemModel","otherList","thisList","visual","setVisual","setLayout","getLayout","getItemLayout","setItemLayout","clearItemLayouts","itemVisual","setItemVisual","clearAllVisual","setItemDataAndSeriesIndex","setItemGraphicEl","getItemGraphicEl","eachItemGraphicEl","dimensionInfoList","injectFunction","originalMethod","res","TRANSFERABLE_METHODS","Triangle","cx","cy","moveTo","lineTo","closePath","Diamond","Pin","angle","asin","tanX","tanY","cpLen","cpLen2","arc","bezierCurveTo","Arrow","symbolCtors","roundRect","square","circle","diamond","pin","arrow","triangle","symbolShapeMakers","size","symbolBuildProxies","SymbolClz","symbolType","proxySymbol","symbolPathSetColor","innerColor","symbolStyle","symbolShape","__isEmptyBrush","createSymbol","keepAspect","symbolPath","setColor","coordinateSystemCreators","_coordinateSystems","coordinateSystems","creater","coordinateSystemCreator","OrdinalScale","IntervalScale","Scale","_barGrid","prepareLayoutBarSeries","makeColumnLayout","retrieveColumnLayout","getScaleExtent","axisDataLen","boundaryGap","span","scaleType","getMin","getMax","fixMin","fixMax","originalExtent","getExtent","getCategories","setBlank","getOrdinalMeta","getNeedCrossZero","isBaseAxisAndHasBarSeries","barSeriesModels","axis","barWidthAndOffset","adjustedScale","axisExtent","axisLength","barsOnCurrentAxis","undefined","minOverflow","maxOverflow","totalOverFlow","oldRange","overflowBuffer","adjustScaleForOverflow","makeLabelFormatter","labelFormatter","getLabelModel","categoryTickStart","getLabel","tickValue","getAxisRawValue","tick","getOptionCategoryInterval","niceScaleExtent","splitNumber","base","setExtent","niceExtent","minInterval","maxInterval","setInterval","createScaleByModel","axisType","ifAxisCrossZero","estimateLabelUnionRect","axisModel","isBlank","realNumberScaleTicks","tickCount","isCategory","categoryScaleExtent","getTicks","textRect","rotateRadians","boundingBox","beforeWidth","beforeHeight","afterWidth","afterHeight","axisLabelModel","step","ceil","unrotatedSingleRect","singleRect","rotatedRect","shouldShowAllLabels","Dispatcher","buildTransformer","isDomLevel2","addEventListener","MOUSE_EVENT_REG","_calcOut","clientToLocal","calculate","calculateZrXY","layerX","offsetX","zrX","zrY","layerY","offsetY","ex","clientX","ey","clientY","nodeName","saved","transformer","oldSrcCoords","srcCoords","useOld","destCoords","ii","offsetLeft","offsetTop","preparePointerTransformer","propLR","propTB","marker","stl","idxLR","idxTB","cssText","appendChild","prepareCoordMarkers","getNativeEvent","stop","preventDefault","stopPropagation","cancelBubble","returnValue","normalizeEvent","touch","targetTouches","changedTouches","zrDelta","wheelDelta","detail","button","which","attachEvent","removeEventListener","detachEvent","isMiddleOrRightButtonOnMouseUpDown","notLeftMouse","LRU","kCSSColorTable","clampCssByte","clampCssFloat","parseCssInt","parseCssFloat","cssHueToRgb","lerpNumber","setRgba","g","copyRgba","colorCache","lastRemovedArr","putToCache","rgbaArr","put","cached","iv","op","ep","fname","alpha","hsla2rgba","hsla","rgba","fastLerp","normalizedValue","colors","leftIndex","rightIndex","leftColor","rightColor","dv","fastMapToColor","fullOutput","mapToColor","arrColor","level","toHex","modifyHSL","R","G","B","vMin","vMax","delta","L","deltaR","deltaG","deltaB","rgba2hsla","modifyAlpha","clazzUtil","graphicUtil","createRenderPlanner","renderPlanner","Chart","renderTaskPlan","renderTaskReset","highlight","toggleHighlight","downplay","removeAll","incrementalPrepareRender","incrementalRender","chartProto","elSetState","state","childCount","progressiveRender","progressMethodMap","progress","forceFirstProgress","isDimensionStacked","stackedDim","enableDataStack","stackedByDimInfo","stackedDimInfo","stackResultDimension","stackedOverDimension","byIndex","stackedCoordDimension","mayStack","isExtraCoord","stackedDimCoordDim","stackedDimType","stackedDimCoordIndex","isCalculationCoord","stackedDimension","stackedByDimension","isStackedByIndex","getStackedDimension","targetDim","IS_CONTAINER","ret","classBase","superCall","superApply","RootClass","mandatoryMethods","proto","ExtendedClass","Clz","classAttr","entity","registerClass","checkClassType","container","makeContainer","componentMainType","throwWhenNotFound","getAllClassMainTypes","types","hasSubTypes","originalExtend","_sourceType","SOURCE_FORMAT_ORIGINAL","SOURCE_FORMAT_ARRAY_ROWS","SOURCE_FORMAT_OBJECT_ROWS","SOURCE_FORMAT_KEYED_COLUMNS","SOURCE_FORMAT_UNKNOWN","SOURCE_FORMAT_TYPED_ARRAY","SERIES_LAYOUT_BY_ROW","BE_ORDINAL","Must","Might","Not","normalizeDimensionsDefine","dimensionsDefine","nameMap","arrayRowsTravelFirst","seriesLayoutBy","maxLoop","getDatasetModel","datasetIndex","doGuessOrdinal","startIndex","dimName","dimDefItem","sample","detectValue","row","beStr","detectSourceFormat","datasetModel","resetSourceDefaulter","datasetMap","seriesOption","fromDataset","sourceHeader","datasetOption","completeResult","dimensionsDetectCount","firstIndex","objectRowsCollectDimensions","colArr","completeBySourceData","encodeDefine","makeSeriesEncodeForAxisCoordSys","coordDimensions","baseCategoryDimIndex","categoryWayValueDimStart","encodeItemName","encodeSeriesName","coordDimInfo","coordDimIdx","getDataDimCountOnCoordDim","datasetRecord","categoryWayDim","valueWayDim","pushDim","dimIdxArr","idxFrom","idxCount","dimsDef","coordDimName","makeSeriesEncodeForNameBased","dimCount","potentialNameDimIndex","idxResult","idxRes0","idxRes1","guessRecords","guessResult","isPureNumber","fulfilled","nameDimIndex","guessOrdinal","createDimensions","getDimensionTypeByAxis","getCoordSysInfoBySeries","seriesDataToSource","coordSysDimDefs","coordSysName","registeredCoordSys","coordSysInfo","coordSysDims","axisMap","firstCategoryDimIndex","hasNameEncode","dimInfoList","generateCoord","encodeDefaulter","useEncodeDefaulter","categoryAxisModel","categoryAxisMap","stackCalculationInfo","sampleItem","firstDataNotNull","isNeedCompleteOrdinalData","itemOpt","_vector","v2Create","v2DistSquare","mathPow","mathSqrt","THREE_SQRT","_v0","_v1","_v2","isAroundZero","isNotAroundZero","cubicAt","p0","p1","p3","onet","quadraticAt","cubicDerivativeAt","cubicRootAt","roots","A","C","t1","disc","K","t2","discSqrt","Y1","Y2","T","theta","acos","ASqrt","tmp","t3","cubicExtrema","extrema","cubicSubdivide","p01","p12","p23","p012","p123","p0123","cubicProjectPoint","x0","y0","x3","y3","prev","next","d1","d2","_t","quadraticDerivativeAt","quadraticRootAt","quadraticExtremum","divider","quadraticSubdivide","quadraticProjectPoint","ORIGIN_METHOD","RATE","delay","debounce","currCall","debounceNextCall","lastCall","lastExec","timer","getTime","thisDelay","thisDebounce","clearTimeout","setTimeout","debounceDelay","createOrUpdate","fnAttr","throttleType","originFn","lastThrottleType","legend","selector","inverse","toolbox","title","polygon","lineX","lineY","dataView","lang","dataZoom","zoom","back","magicType","bar","stack","tiled","restore","saveAsImage","typeNames","pie","scatter","effectScatter","radar","tree","treemap","boxplot","candlestick","heatmap","parallel","graph","sankey","funnel","gauge","pictorialBar","themeRiver","sunburst","general","withTitle","withoutTitle","single","prefix","withName","withoutName","multiple","separator","middle","allData","partialData","_number","_axisTickLabelBuilder","createAxisTicks","createAxisLabels","calculateCategoryInterval","NORMALIZED_EXTENT","Axis","onBand","fixExtentWithBands","nTick","coord","containData","dataToCoord","coordToData","pointToData","getTicksCoords","tickModel","getTickModel","ticks","ticksCoords","alignWithLabel","ticksLen","last","diffSize","crossLen","ticksItem","fixOnBandTicksCoords","getMinorTicksCoords","minorTicks","getMinorTicks","minorTicksGroup","minorTick","getViewLabels","labels","getBandWidth","isHorizontal","getRotate","matrixUtil","AxisBuilder","labelOffset","nameDirection","tickDirection","labelDirection","dumbGroup","_transform","_dumbGroup","hasBuilder","builders","getGroup","axisLine","pt1","pt2","lineStyle","lineCap","getLineStyle","arrows","arrowSize","arrowOffset","symbolWidth","symbolHeight","symbol","pos","axisTickLabel","ticksEls","axisBuilder","lineStyleModel","tickEndCoord","createTicks","buildAxisMajorTicks","labelEls","axisLabelShow","labelMargin","labelRotation","labelLayout","innerTextLayout","rawCategoryData","isLabelSilent","triggerEvent","labelItem","formattedLabel","rawLabel","itemLabelModel","textColor","getTextColor","textEl","makeAxisEventDataBase","targetType","decomposeTransform","buildAxisLabel","tickEls","showMinLabel","showMaxLabel","firstLabel","nextLabel","lastLabel","prevLabel","firstTick","nextTick","lastTick","prevTick","ignoreEl","isTwoLabelOverlapped","fixMinMaxLabelShow","minorTickModel","minorTicksCoords","minorTickLineStyle","minorTicksEls","buildAxisMinorTicks","axisName","axisNameAvailableWidth","nameLocation","gapSignal","isNameLocationCenter","nameRotation","textRotate","rotationDiff","onLeft","endTextLayout","truncateOpt","nameTruncateMaxWidth","truncatedText","tooltipOpt","formatterParams","__fullText","__truncatedText","show","formatter","axisRotation","current","firstRect","nextRect","mRotationBack","tickTransform","tickLineStyle","aniid","tickCoord","tickEl","features","ctor","arrySlice","eventProcessor","_$handlers","_$eventProcessor","eventful","isOnce","_h","wrap","callAtLast","lastWrap","isSilent","newList","argLen","hItem","triggerWithContext","textHelper","ContextCachedBy","normalizeTextStyle","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","needDrawText","renderText","__attrCachedBy","NONE","getStroke","_source","_data","_offset","_dimSize","providerMethods","providerProto","appendDataSimply","countSimply","getItemSimply","col","newData","newCol","oldCol","rawValueGetters","getRawValueSimply","objectRows","keyedColumns","typedArray","getDimValueSimply","converDataValue","parseAndCollect","retrieveRawAttr","defaultKeyGetter","oldArr","newArr","oldKeyGetter","newKeyGetter","_old","_new","_oldKeyGetter","_newKeyGetter","initIndexMap","keyArr","keyGetterName","dataDiffer","existence","_add","_update","_remove","execute","newDataIndexMap","oldDataKeyArr","newDataKeyArr","seriesType","defaultSymbolType","legendSymbol","performRawSeries","symbolSize","hasSymbolTypeCallback","hasSymbolSizeCallback","hasCallback","seriesSymbol","seriesSymbolSize","symbolKeepAspect","isSeriesFiltered","dataEach","rawValue","itemModel","itemSymbolType","itemSymbolSize","itemSymbolKeepAspect","echarts","axisPointerModelHelper","AxisView","_axisPointer","axisPointerClass","fixValue","updateAxisPointer","force","axisPointer","disposeAxisPointer","axisView","forceRender","getAxisPointerClass","axisPointerModel","getAxisPointerModel","axisPointerClazz","registerAxisPointerClass","getPathToRoot","parentNode","reverse","retrieveTargetInfo","validPayloadTypes","root","targetNode","getNodeById","contains","targetNodeId","aboveViewRoot","viewRoot","viewPath","wrapTreePathInfo","treePathInfo","nodeDataIndex","zrColor","VisualMapping","mappingMethod","thisOption","_normalizeData","normalizers","visualHandler","visualHandlers","applyVisual","getColorMapper","_doMap","normalizeVisualRange","pieceList","hasSpecialVisual","piece","originIndex","preprocessForPiecewise","categoryMap","cate","visualArr","setVisualToOption","preprocessForSpecifiedCategory","mapValueToVisual","normalized","getNormalizer","makeApplyVisual","isNormalized","doMapCategory","returnRGBArray","parsedVisual","linear","category","piecewise","getSpecifiedVisual","fixed","doMapFixed","colorHue","makePartialColorVisualHandler","colorSaturation","colorLightness","colorAlpha","makeDoMap","liftZ","setter","symbolCfg","doMapToArray","applyValue","sourceExtent","findPieceIndex","pieceIndex","listVisualTypes","visualTypes","addVisualHandler","isValidType","eachVisual","callback","mapVisual","isPrimary","newVisual","newVal","retrieveVisuals","hasVisual","prepareVisualTypes","type1","type2","dependsOn","visualType1","visualType2","findClosestWhenOutside","possibleI","pieceValue","updatePossible","newAbs","Element","_children","__storage","children","childOfName","_doAdd","addBefore","nextSibling","addToStorage","addChildrenToStorage","delFromStorage","delChildrenFromStorage","includeChildren","tmpRect","tmpMat","invisible","childRect","src","_image","createOrUpdateImage","sWidth","sHeight","drawImage","excludes","includes","curve","bbox","CMD","Q","Z","mathCos","mathSin","mathAbs","hasTypedArray","notSaveData","_saveData","_xi","_yi","_x0","_y0","_ux","_uy","_len","_lineDash","_dashOffset","_dashIdx","_dashSum","addData","exceedUnit","_needsDash","_dashedLineTo","_dashedBezierTo","quadraticCurveTo","_dashedQuadraticTo","startAngle","endAngle","anticlockwise","arcTo","radius","toStatic","lineDashSum","appendPath","appendSize","appendPathData","cmd","_expandData","_prevCmd","dash","dashSum","nDash","bezierLen","tmpLen","MAX_VALUE","xi","yi","fromLine","fromCubic","fromQuadratic","rx","ry","fromArc","ux","uy","dTheta","psi","fs","scaleX","scaleY","originalLarge","large","originalProgressive","progressive","completeDimensions","encodeDef","dimensionsCount","generateCoordCount","origin","rangeStart","rangeEnd","getCoordSysModel","setRange","resetRange","dimensionsInfo","getSpanSign","handleEnds","handleIndex","sign","restrict","minSpan","maxSpan","extentSpan","handleSpan","originalDistSign","extentMinSpan","realExtent","currDistSign","helper","AxisProxy","eachAxisDim","retrieveRawOption","updateRangeUse","dataZoomModel","inputRawOption","rangePropMode","_rangePropMode","rangeModeInOption","percentSpecified","valueSpecified","xAxisIndex","yAxisIndex","filterMode","startValue","endValue","minValueSpan","maxValueSpan","rangeMode","_dataIntervalByAxis","_dataInfo","_axisProxies","_autoThrottle","settledOption","doInit","realtime","_setDefaultThrottle","_resetTarget","_giveAxisProxies","axisProxies","eachTargetAxis","dimNames","axisIndex","axisProxy","__dzAxisProxy","autoMode","_judgeAutoMode","axisIndexName","_autoSetAxisIndex","_autoSetOrient","hasIndexSpecified","autoAxisIndex","singleAxis","singleAxisModel","singleAxisIndex","axisIndices","axisModels","_isSeriesHasAllAxesTypeOf","axisId","is","seriesAxisIndex","globalOption","animationDurationUpdate","getFirstTargetAxisModel","firstAxisModel","getAxisProxy","getAxisModel","setRawRange","setCalculatedRange","getPercentRange","findRepresentativeAxisProxy","getDataPercentWindow","getValueRange","axisDimName","getDataValueWindow","hostedBy","getRangePropMode","getTargetCoordInfo","coordSysLists","coordModel","store","coordIndex","save","logError","debugMode","Style","RectText","__clipPaths","draggable","dragging","culling","cursor","incremental","globalScaleRatio","beforeBrush","afterBrush","rectContain","animateStyle","useStyle","subTypeDefaulters","registerSubTypeDefaulter","defaulter","determineSubType","componentTypeMain","dependencyGetter","createDependencyGraphItem","predecessor","successor","topologicalTravel","targetNameList","fullNameList","noEntryList","thisItem","availableDeps","originalDeps","dep","getAvailableDependencies","entryCount","dependentName","thatItem","makeDepndencyGraph","targetNameSet","currComponentType","currVertex","isInTargetNameSet","removeEdgeAndAdd","removeEdge","succComponentType","SERIES_LAYOUT_BY_COLUMN","OTHER_DIMENSIONS","getOrCreateEncodeArr","summary","notExtraCoordDimMap","defaultedLabel","defaultedTooltip","defaultTooltip","otherDim","encodeArr","dimArr","encodeLabel","encodeTooltip","SymbolDraw","symbolCtor","_symbolCtor","symbolDrawProto","symbolNeedsDraw","isIgnore","clipShape","normalizeUpdateOpt","makeSeriesScope","itemStyle","getItemStyle","hoverItemStyle","symbolRotate","symbolOffset","hoverAnimation","hoverLabelModel","cursorStyle","updateData","oldData","SymbolCtor","seriesScope","newIdx","symbolEl","oldIdx","fadeOut","isPersistent","incrementalPrepareUpdate","_seriesScope","incrementalUpdate","taskParams","updateIncrementalAndHover","enableAnimation","createGridClipPath","cartesian","hasAnimation","getArea","clipPath","createPolarClipPath","polar","sectorArea","r0","clockwise","createClipPath","isLargeRender","stackResultDim","segCount","tmpIn","tmpOut","dataToPoint","gridModel","getRect","xAxis","yAxis","grid","getDataWithEncodedVisual","getAllNames","containName","legendModels","findComponents","isSelected","eventTool","interactionMutex","RoamController","pointerChecker","_opt","mousedownHandler","mousedown","mousemoveHandler","mousemove","mouseupHandler","mouseup","mousewheelHandler","mousewheel","pinchHandler","pinch","setPointerChecker","enable","controlType","zoomOnMouseWheel","moveOnMouseMove","moveOnMouseWheel","preventDefaultMouseMove","isDragging","_dragging","isPinching","_pinching","_x","_y","isAvailableBehavior","gestureEvent","isTaken","oldX","oldY","newX","newY","shouldZoom","shouldMove","absWheelDeltaDelta","originX","originY","factor","checkPointerAndTrigger","absDelta","scrollDelta","pinchScale","pinchX","pinchY","controller","behaviorToCheck","contollerEvent","settings","setting","axisTrigger","link","coordSysAxesInfo","collect","_CSSTransition","_interopRequireDefault","_ReplaceTransition","_TransitionGroup","_Transition","default","Transition","TransitionGroup","ReplaceTransition","CSSTransition","guid","Handler","Storage","Painter","Animation","HandlerProxy","useVML","painterCtors","ZRender","rendererType","vml","handerProxy","getViewportRoot","stage","_needsRefresh","oldDelFromStorage","oldAddToStorage","removeSelfFromZr","addSelfToZr","addRoot","delRoot","configLayer","zLevel","config","_needsRefreshHover","triggerRendered","refreshHoverImmediately","elMirror","refreshHover","clearHover","clearAnimation","pathToImage","setCursorStyle","findHover","eventHandler","getInstance","registerPainter","STYLE_BIND","PLAIN_TEXT","WILL_BE_RESTORED","roundRectHelper","fixShadow","_constant","VALID_TEXT_ALIGN","center","VALID_TEXT_VERTICAL_ALIGN","SHADOW_STYLE_COMMON_PROPS","_tmpTextPositionResult","_tmpBoxPositionResult","normalizeStyle","textBaseline","applyTextRotation","textOrigin","placeToken","hostEl","lineTop","needDrawBackground","drawBackground","getTextXForPadding","setCtx","getFill","strokeText","fillText","isPlainBg","onBgImageLoaded","getBoxPosition","baseX","baseY","maxValue","__textCotentBlock","boxPos","boxX","boxY","xLeft","xRight","tokenCount","usedWidth","lineXLeft","lineXRight","drawRichText","renderRichText","prevStyle","needDrawBg","checkCache","cachedByMe","styleFont","computedFont","__computedFont","__styleFont","textX","textY","propItem","styleProp","ctxProp","textStrokeWidthPrev","strokeWidthChanged","strokeChanged","renderPlainText","PI2","extremity","xDim","yDim","fromPoints","tx","ty","vec2Min","vec2Max","Gradient","addColorStop","Component","componentProto","_setting","_interval","getSetting","unionExtent","unionExtentFromData","thisExtent","_isBlank","roundNumber","_intervalPrecision","getInterval","_niceExtent","getIntervalPrecision","expandToNicedExtent","niceTickExtent","intervalPrecision","lastNiceTick","minorInterval","niceTicks","intervalScaleNiceTicks","expandSize","LargeArr","getSeriesStackId","getAxisKey","seriesModels","eachSeriesByType","isOnCartesian","isInLargeMode","barSeries","axisMinGaps","axisValues","baseAxis","cnt","valuesInAxis","getValueAxesMinGaps","seriesInfoList","bandWidth","minGap","scaleSpan","barWidth","barMaxWidth","barMinWidth","barGap","barCategoryGap","axisKey","stackId","doCalBarWidthAndOffset","columnsMap","seriesInfo","columnsOnAxis","remainedWidth","autoWidthCount","categoryGap","stacks","minWidth","barGapPercent","autoWidth","column","finalWidth","lastColumn","widthSum","largeLayout","valueAxis","getOtherAxis","valueDim","baseDim","valueAxisHorizontal","valueDimIdx","largePoints","largeDataIndices","valuePair","pointsOffset","idxOffset","valueAxisStart","getValueAxisStart","stacked","toGlobalCoord","getLayoutOnAxis","widthAndOffsets","offsetCenter","lastStackCoords","lastStackCoordsOrigin","columnLayoutInfo","columnOffset","columnWidth","barMinHeight","isValueAxisH","baseValue","baseCoord","getDefaultLabel","symbolProto","getSymbolSize","getScale","driftSymbol","drift","_createSymbol","_symbolType","stopSymbolAnimation","toLastFrame","getSymbolPath","setZ","setDraggable","_updateCommon","fadeIn","_seriesModel","normalStyleAccessPath","emphasisStyleAccessPath","normalLabelAccessPath","emphasisLabelAccessPath","__symbolOriginalScale","ratio","emphasisOpt","symbolInnerColor","z2Origin","__z2Origin","useNameLabel","keepLabel","axisDefault","OrdinalMeta","AXIS_TYPES","BaseAxisModelClass","axisTypeDefaulter","extraDefaultOption","__ordinalMeta","createByAxisModel","checkPropInLink","linkPropValue","axisPropValue","getAxisInfo","axesInfo","makeKey","isHandleTrigger","seriesInvolved","coordSysMap","globalTooltipModel","globalAxisPointerModel","linksOption","linkGroups","axisPointerEnabled","coordSysKey","axesInfoInCoordSys","baseTooltipModel","getAxes","saveTooltipAxisInfo","getTooltipAxes","triggerAxis","cross","tooltipAxes","baseAxes","otherAxes","fromTooltip","triggerTooltip","axisPointerShow","snap","tooltipAxisPointerModel","volatileOption","field","labelOption","tooltipAxisPointerLabelShow","crossStyle","makeAxisPointerModel","involveSeries","axisInfo","useHandle","groupIndex","linkOption","getLinkGroupIndex","linkGroup","mapper","collectAxesInfo","seriesTooltipTrigger","seriesTooltipShow","getAxis","seriesDataCount","collectSeriesInfo","getTargetSeries","paletteScope","seiresModelMap","__paletteScope","dataAll","idxMap","filteredIdx","singleDataColor","singleDataBorderColor","borderColor","geoJSONLoader","geoSVGLoader","loaders","svg","load","regions","regionsMap","nameCoordMap","mapRecords","record","singleSource","region","regionName","makeGraphic","makeInvoker","removeGraphic","hostKey","results","IRRELEVANT_EXCLUDES","onIrrelevantElement","targetCoordSysModel","topTarget","axisHelper","buildLabelElOption","elOption","labelPos","getValueLabel","paddings","align","verticalAlign","viewWidth","viewHeight","confineInContainer","bgColor","seriesDataIndices","axisDimension","seriesData","idxItem","dataParams","getTransformedPosition","layoutInfo","buildElStyle","axisPointerType","styleModel","getAreaStyle","buildCartesianSingleLabelElOption","textLayout","makeLineShape","xDimIndex","makeRectShape","xy","wh","makeSectorShape","hasKeys","createVisualMappings","stateList","supplementVisualOption","visualMappings","Creater","mappings","__hidden","visualData","mappingOption","__alphaForOpacity","replaceVisualOption","getValueState","visualTypesMap","eachItem","valueOrIndex","rawDataItem","visualMap","valueState","incrementalApplyVisual","MapShim","Map","getIndex","some","entry","class_1","__entries__","delete","entries","_i","_a","isBrowser","global$1","requestAnimationFrame$1","requestAnimationFrame","now","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","timeStamp","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","observe","attributes","childList","characterData","subtree","_b","propertyName","instance_","defineConfigurable","getWindowOf","defaultView","emptyRect","createRectInit","toFloat","getBordersSize","styles","positions","getHTMLElementContentRect","clientWidth","clientHeight","getComputedStyle","positions_1","getPaddings","horizPad","vertPad","boxSizing","documentElement","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","Constr","contentRect","DOMRectReadOnly","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","_this","observation","WeakMap","ResizeObserver","_echarts","_export","define","trace","_acequire","parentId","lookup","acequire","packagedModule","normalizeModule","moduleName","chunks","previous","mod","uri","packaged","ace","real","RegExp","String","compliantExecNpcg","compliantLastIndexIncrement","getNativeFlags","regex","ignoreCase","multiline","extended","sticky","r2","_xregexp","captureNames","Empty","that","bound","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","makeArray","lengthBefore","array_splice","deleteCount","removeCount","removed","insert","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","createEmpty","freezeObject","boxedString","splitString","fun","toObject","thisp","every","reduceRight","sought","toInteger","getOwnPropertyDescriptor","getOwnPropertyNames","empty","isPrototypeOf","toLocaleString","valueOf","Type","defineProperties","doesDefinePropertyWork","exception","definePropertyWorksOnObject","definePropertyWorksOnDom","definePropertyFallback","seal","freeze","preventExtensions","isSealed","isFrozen","isExtensible","hasDontEnumBug","dontEnums","dontEnumsLength","dontEnum","ws","trimBeginRegexp","trimEndRegexp","getDocumentHead","doc","head","getElementsByTagName","tag","createElementNS","hasCssClass","className","addCssClass","removeCssClass","classes","toggleCssClass","setCssClass","include","hasCssString","sheets","createStyleSheet","styleSheets","owningElement","importCssString","createTextNode","importCssStylsheet","rel","href","getInnerWidth","element","computedStyle","getInnerHeight","scrollbarWidth","display","outer","overflow","body","noScrollbar","offsetWidth","withScrollbar","removeChild","pageYOffset","getPageScrollTop","getPageScrollLeft","pageXOffset","scrollTop","scrollLeft","currentStyle","setInnerHtml","innerHtml","cloneNode","innerHTML","replaceChild","setInnerText","innerText","textContent","getInnerText","getParentWindow","parentWindow","superCtor","super_","implement","oop","Keys","MODIFIER_KEYS","16","17","18","224","KEY_MODS","FUNCTION_KEYS","8","9","13","19","27","32","33","34","35","36","37","38","39","40","44","45","46","96","97","98","99","100","101","102","103","104","105","112","113","114","115","116","117","118","119","120","121","122","123","144","145","PRINTABLE_KEYS","48","49","50","51","52","53","54","55","56","57","59","61","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","107","109","110","186","187","188","189","190","191","192","219","220","221","222","111","106","enter","escape","esc","del","mods","keyCodeToString","keyCode","keyString","fromCharCode","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","platform","isWin","isIE","appName","isOldIE","isGecko","isMozilla","Controllers","controllers","product","isOldGecko","isOpera","opera","isWebKit","isChrome","isAIR","isIPad","isChromeOS","isIOS","MSStream","useragent","pressedKeys","ts","addListener","elem","wrapper","_wrapper","removeListener","stopEvent","getButton","ctrlKey","altKey","shiftKey","1","2","4","capture","releaseCaptureHandler","onMouseUp","addTouchMoveListener","startx","starty","touchObj","touches","wheelX","wheelY","addMouseWheelListener","wheelDeltaX","wheelDeltaY","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","HORIZONTAL_AXIS","addMultiMouseDownListener","elements","timeouts","callbackName","startX","startY","clicks","eventNames","3","onMousedown","isNewClick","_clicks","onDblclick","getModifierHash","metaKey","normalizeCommandKeys","hashId","getModifierState","altGr","location","keyLocation","defaultPrevented","resetPressedKeys","getModifierString","addCommandKeyListener","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","win","listener","nextFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","stringReverse","string","stringRepeat","stringTrimLeft","stringTrimRight","copyObject","copyArray","deepCopy","arrayToMap","createMap","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","regExp","matches","deferredCall","fcn","deferred","timeout","cancel","schedule","isPending","delayedCall","defaultTimeout","_self","KEYS","MODS","BROKEN_SETDATA","USE_IE_MIME_TYPE","TextInput","isTouchPad","insertBefore","firstChild","copied","cut","pasted","inComposition","tempStyle","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","resetSelection","focus","blur","syncSelection","syncValue","inputHandler","selectionStart","selectionEnd","setSelectionRange","resetValue","selection","setInputHandler","getInputHandler","afterContextMenu","sendText","onPaste","execCommand","onTextInput","onInput","handleClipboardData","forceIEMime","clipboardData","mime","doCopy","isCut","getCopyText","onCut","onCopy","select","onCommandKey","isAllSelected","selectAll","closeTimeout","onCompositionUpdate","$readOnly","lastValue","undo","canUndo","getRange","session","markUndoGroup","clearSelection","onCompositionEnd","syncComposition","onContextMenuClose","$keepTextAreaAtCursor","$moveTextAreaToCursor","onCompositionStart","$undoManager","getElement","readOnly","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","borderTopWidth","borderLeftWidth","maxTop","move","textInput","scroller","typingResetTimeout","typing","detectArrowKeys","up","home","down","TextInputIOS","DefaultHandlers","mouseHandler","$clickSelection","editor","setDefaultHandler","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","onTouchMove","selectByLines","extendSelectionBy","selectByWords","calcRangeOrientation","cmp","anchor","ev","inSelection","getDocumentPosition","mousedownEvent","selectionEmpty","getSelectionRange","$blockScrolling","moveToPosition","time","$focusTimout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","getShiftKey","selectToPosition","setCapture","comparePoint","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","ax","ay","bx","by","getBracketRange","getWordRange","isMultiLine","getLineRange","getAccelKey","$lastScroll","allowed","prevScroll","dt","canScroll","isScrollableBy","speed","scrollBy","Tooltip","isOpen","$element","$parentNode","$init","setHtml","setPosition","setClassName","hide","offsetHeight","destroy","GutterTooltip","windowWidth","innerWidth","windowHeight","innerHeight","GutterHandler","tooltipTimeout","mouseEvent","tooltipAnnotation","gutter","$gutterLayer","hideTooltip","_signal","moveTooltip","getRegion","selectTo","srcElement","$tooltipFollowsMouse","isMousePressed","annotation","$annotations","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","showTooltip","$gutter","MouseEvent","$inSelection","propagationStopped","selectionRange","DragdropHandler","blankImage","dragSelectionMarker","timerId","dragCursor","dragOperation","isInternal","autoScrollStartTime","cursorMovedTime","cursorPointOnCaretMoved","mouseTarget","counter","onDragInterval","prevCursor","vMovement","hMovement","moveCursorToPosition","calcDistance","layerConfig","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScroll","addDragMarker","toOrientedRange","addMarker","getSelectionStyle","$cursorLayer","setBlinking","clearInterval","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","getReadOnly","onDragStart","cancelDrag","dataTransfer","effectAllowed","setDragImage","clearData","getTextRange","onDragEnd","dropEffect","onDragEnter","canAccept","getDropEffect","onDragOver","onMouseMoveTimer","onDragLeave","onDrop","moveText","dropData","copyAllowed","copyModifierState","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","onMouseDrag","dragDrop","$dragEnabled","eventTarget","unselectable","xhr","XMLHttpRequest","open","onreadystatechange","readyState","responseText","send","loadScript","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","_eventRegistry","_defaultHandlers","listeners","defaultHandler","once","newCallback","handlers","_disabled_","old","disabled","removeDefaultHandler","capturing","removeAllListeners","optionsProvider","setOptions","getOptions","optionNames","$options","warn","forwardTo","handlesSet","reportError","msg","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","setDefaultValues","optionHash","net","workerPath","modePath","themePath","basePath","suffix","$moduleUrls","scriptOptions","scriptUrl","currentScript","_currentScript","scripts","script","moduleUrl","parts","sep","re","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","DefaultGutterHandler","MouseHandler","focusEditor","hasFocus","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","Boolean","gutterEl","$dragDelay","character","insideStart","$scrollSpeed","mouseMoveHandler","releaseMouse","$mouseMoved","onCaptureEnd","onCaptureInterval","$onCaptureMouseMove","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","getLine","addFold","keyUtil","KeyBinding","$editor","$data","$handlers","commands","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","command","passEvent","dir","hiLevel","lastArabic","hasUBAT_B","hasUBAT_S","impTab_LTR","impTab_RTL","UnicodeTBL00","UnicodeTBL20","_invertLevel","lev","levels","_array","lo","hi","_getCharClass","chars","ix","wType","nType","cType","rtlCandidate","_getCharacterType","ch","uc","EN","ON_R","AN","R_H","DOT","doBidiReorder","textCharTypes","isRtl","logicalFromVisual","bidiLevels","charTypes","impTab","prevState","newClass","newLevel","newState","condPos","_computeLevels","hasBidiCharacters","getVisualFromLogicalIdx","logIdx","rowMap","bidiUtil","bidiRE","BidiHandler","bidiMap","currentRow","charWidths","EOL","showInvisibles","isRtlDir","wrapIndent","isLastRow","EOF","seenBidi","isBidiRow","docRow","splitIndex","updateRowLine","updateBidiMap","onChange","getDocumentRow","rowCache","$screenRowCache","$getRowCacheIndex","$docRowCache","getSplitIndex","currentIndex","prevIndex","$useWrapMode","splits","$wrapData","indent","isFullWidth","getScreenTabSize","endOfLine","markAsDirty","updateCharacterWidths","fontMetrics","$characterSize","bidiCharWidth","$measureCharWidth","getShowInvisibles","setShowInvisibles","setEolChar","eolChar","setTextDir","getPosLeft","visualIdx","getSelections","startCol","endCol","selections","selColMin","selColMax","isSelectedPrev","visIdx","offsetToCol","posX","logicalIdx","charWidth","Range","startRow","startColumn","endRow","endColumn","isEqual","compare","compareRange","containsRange","intersects","isEnd","isStart","setStart","setEnd","inside","insideEnd","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","collapseRows","toScreenRange","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","comparePoints","Selection","getDocument","lead","selectionLead","createAnchor","selectionAnchor","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","getCursor","getPosition","getSelectionAnchor","getSelectionLead","shiftSelection","columns","moveCursorTo","isBackwards","$moveSelection","mover","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectWord","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","wouldMoveIntoSoftTab","tabSize","isTabStop","getTabSize","getNavigateWithinSoftTabs","firstColumnPosition","screenToDocumentPosition","leadingSpace","getDisplayLine","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","search","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","screenPos","$bidiHandler","docPos","lineWidgets","keepDesiredColumn","moveCursorToScreen","desiredColumn","getRangeOfMovements","toJSON","rangeCount","ranges","r1","fromJSON","rangeList","toSingleRange","addRange","MAX_TOKEN_COUNT","Tokenizer","rules","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","flag","splitterRurles","rule","caseInsensitive","adjustedregex","matchcount","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","digit","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","inChClass","lastCapture","parenOpen","parenClose","getLineTokens","startState","currentState","matchAttempts","skipped","consumeLineEnd","TextHighlightRules","$rules","addRules","nextState","getRules","embedRules","HighlightRules","escapeRules","append","$embeds","getEmbeds","pushState","popState","normalizeRules","processState","processed","toInsert","stateName","includeName","noEscape","keywordMap","createKeywordMapper","splitChar","keywords","$keywordList","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","rowCount","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","getCurrentTokenRange","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","defaultQuotes","initContext","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","selected","opening","closing","rowDiff","CstyleBehaviour","getCursorPosition","getWrapBehavioursEnabled","isSaneInsertion","braces","recordAutoInsert","recordMaybeInsert","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","openBracePos","findMatchingBracket","next_indent","$getIndent","getTabString","quotes","$mode","$quotes","lineCommentStart","quote","leftChar","rightChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","iterator","$matchTokenType","iterator2","bracket","packages","pack","codePoint","addUnicodePackage","Ll","Lu","Lt","Lm","Lo","Mn","Mc","Me","N","Nd","Nl","No","P","Pd","Ps","Pe","Pi","Pf","Pc","Po","Sm","Sc","Sk","So","Zs","Zl","Zp","Cc","Cf","Co","Cs","Cn","unicode","Mode","$defaultBehaviour","getTokenizer","$tokenizer","$highlightRules","$highlightRuleConfig","blockComment","toggleCommentLines","ignoreBlankLines","shouldRemove","minIndent","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","removeInLine","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","iter","minEmptyLength","toggleBlockComment","colDiff","initialRange","startRange","endRange","getNextLineIndent","tab","checkOutdent","input","autoOutdent","createWorker","createModeDelegates","$modes","delegations","functionName","$delegator","transformAction","$behaviour","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","word","score","meta","$id","applyDelta","docLines","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$clipPositionToDocument","$insertRight","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$getTransformedPoint","noClip","Document","textOrLines","$lines","insertMergedLines","setValue","getValue","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","MAX","to","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","first","scheduleStart","$updateOnChange","getState","SearchHighlight","setRegexp","MAX_RANGES","cache","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","containsRow","walk","lastEnd","isNewRow","getNextFoldTo","kind","addRemoveChars","foldBefore","newFoldLine","foldLineNext","idxToPosition","lastFoldEndColumn","RangeList","pointIndex","excludeEdges","endIndex","addList","substractPoint","containsPoint","rangeAtPoint","clipped","lineDif","Fold","subFolds","consumePoint","restorePoint","subFold","collapseChildren","addSubFold","afterStart","restoreRange","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","lastFold","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","getCommentFoldRange","depth","getFoldWidget","getFoldWidgetRange","$foldStyles","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","$brackets","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","$uid","onChangeFold","setMode","bgTokenizer","resetCaches","$resetRowCache","cacheArray","low","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","$deltasDoc","$deltasFold","$informUndoManager","$deltas","setUndoManager","getUndoManager","getSelection","undoManager","$syncInformUndoManager","mergeUndoDeltas","$defaultUndoManager","redo","setUseSoftTabs","$useSoftTabs","$indentWithTabs","setTabSize","$tabSize","setNavigateWithinSoftTabs","navigateWithinSoftTabs","$navigateWithinSoftTabs","$overwrite","setOverwrite","getOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","addDynamicMarker","getMarkers","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","$stopWorker","$startWorker","attachToSession","$wrapMethod","foldingRules","terminate","getMode","$scrollTop","setScrollTop","getScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","lineWidgetWidth","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","lastUndoRange","$getUndoSelection","foldDelta","redoChanges","setUndoSelect","isUndo","fromRange","toPosition","toRange","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","$moveLines","$clipRowToDocument","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","setUseWrapMode","useWrapMode","getUseWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","limit","getWrapLimitRange","foldLineBefore","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","displayLength","lastSplit","lastDocSplit","isCode","$wrapAsCode","indentedSoftWrap","$indentedSoftWrap","maxIndent","addSplit","displayed","indentation","getWrapIndent","minSplit","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","doCache","maxRow","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","$wrap","firstLineNumber","useSoftTabs","Search","$matchIterator","sr","sc","er","ec","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","$disableFakeMultiline","wholeWord","wordBoundary","addWordBoundary","modifier","caseSensitive","$assembleMultilineRegExp","backwards","forEachInLine","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","bindKey","isDefault","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","isAvailable","toggleRecording","$inReplay","recording","macro","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","textarea","$mouseHandler","keyBinding","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","startOperation","endOperation","$opResetTimer","curOp","docChanged","selectionChanged","prevOp","commadEvent","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","getSession","cursorPos","onResize","getFontSize","setFontSize","$highlightBrackets","$bracketHighlight","$highlightPending","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","prevToken","sbm","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","updateLines","$updateHighlightActiveLine","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","startOuter","endOuter","lineCols","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","inVirtualSelectionMode","getBehavioursEnabled","$mergeNextCommand","lineState","shouldOutdent","lineIndent","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","setDisplayIndentGuides","getDisplayIndentGuides","setShowPrintMargin","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","amount","charRange","nr","fp","decimals","nnr","replaceRange","sel","endPoint","moved","totalDiff","rangeIndex","subRows","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","alignCursor","getCursorPositionScreen","expand","matchType","bracketType","found","brackets","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","preventScroll","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","searchBox","$pixelPos","$resetCursorStyle","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","behavioursEnabled","wrapBehavioursEnabled","autoScrollEditorIntoView","keybindingId","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","showLineNumbers","showGutter","displayIndentGuides","maxLines","minLines","scrollPastEnd","fixedWidthGutter","foldStyle","UndoManager","$serializeDelta","$deserializeDelta","cloneDeltaSetsObj","deltaSets_old","fnGetModifiedDelta","deltaSets_new","deltaSet_old","deltaSet_new","delta_old","deltaSets","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","undoSelectionRange","redoSelectionRange","$deserializeDeltas","hasRedo","markClean","isClean","$serializeDeltas","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","$cells","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","getText","minHeight","$fixedWidth","$padding","$computePadding","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingLeft","paddingRight","Marker","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","drawBidiSingleLineMarker","firstRowScreen","stringBuilder","extraStyle","clazzModified","lineRange","range1","radiusClass","extraLength","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","$fontMetrics","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","$tabStrings","tabStr","$indentGuideRe","spaceClass","tabClass","spaceContent","tabContent","scrollLines","lineElements","childNodes","lineElementsIdx","lineElement","$renderLine","$useLineGroups","oldConfig","lastChild","fragment","$renderLinesFragment","createDocumentFragment","$textToken","$renderToken","output","tabIdx","idx4","classToUse","space","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","renderTokens","addTokens","$measureNode","isIE8","Cursor","isVisible","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","$updateOpacity","visibility","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","$selectionMarkers","cursorIndex","pixelPos","drawCursor","$setOverwrite","ScrollBar","classSuffix","setVisible","skipEvent","onScroll","coeff","VScrollBar","scrollHeight","$scrollbarWidth","$minWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","change","CHAR_COUNT","FontMetrics","$setMeasureNodeStyles","$main","$testFractionalRect","isRoot","whiteSpace","$measureSizes","boldSize","charSizes","allowBoldFonts","setPolling","GutterLayer","MarkerLayer","TextLayer","CursorLayer","VirtualRenderer","onGutterResize","$markerBack","textLayer","$textLayer","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","$loop","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_GUTTER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$updateGutterLineHighlight","$gutterLineHighlight","$printMarginEl","containerEl","posTop","posLeft","$composition","setScrollMargin","sm","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","marginTop","marginLeft","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$maxPixelHeight","$gutterWidth","hideScrollbars","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","x_min","steps","initialScroll","oldSteps","$timer","scrollTo","canvasPos","textToScreenCoordinates","pageX","pageY","keepTextAreaAtCursor","$themeId","cssClass","$theme","isDark","setMouseCursor","maxPixelHeight","workerUrl","blob","Blob","blobBuilder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","getBlob","$workerBlob","blobURL","URL","webkitURL","createObjectURL","Worker","WorkerClient","topLevelNamespaces","classname","importScripts","$sendDeltaQueue","changeListener","onMessage","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","callbackId","callbacks","onmessage","err","deltaQueue","emit","attachToDocument","UIWorkerClient","messageBuffer","emitSync","sender","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","setup","selectionBefore","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","otherPos","updateMarkers","updateMarker","undosRequired","isSamePoint","alt","ctrl","accel","selectionMode","isMultiSelect","mouseX","mouseY","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","removeSelectionMarker","tmpSel","rectSel","onSelectionInterval","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","selectMoreLines","selectMore","splitIntoLines","alignCursors","multiSelectCommands","getSelectionMarkers","$blockChangeEvents","$onAddRange","$onRemoveRange","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","startOffsetX","endOffsetX","yBackwards","docEnd","MultiSelect","$multiselectOnSessionChange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","altCursor","altDown","addAltCursorListeners","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","nl","additive","skip","screenLead","toRemove","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","startW","textW","endW","isLeftAligned","isRightAligned","alignLeft","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","hidden","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","oldWidget","gutterAnno","comparator","binarySearch","matched","findAnnotations","onmousedown","Renderer","edit","_id","getElementById","tagName","oldNode","createEditSession","mIdentity","transformableProto","scaleTmp","parentHasTransform","relX","relY","invTransform","tmpTransform","originTransform","setLocalTransform","atan2","transformCoordToGlobal","makeAscendingRun","runHi","reverseRun","binaryInsertionSort","pivot","gallopLeft","hint","lastOffset","maxOffset","gallopRight","TimSort","runStart","runLength","minGallop","stackSize","mergeAt","start1","length1","start2","length2","cursor1","cursor2","dest","count1","count2","exit","_minGallop","mergeLow","customCursor","customDest","mergeHigh","mergeRuns","forceMergeRuns","pushRun","_runStart","_runLength","remaining","minRun","minRunLength","STYLE_COMMON_PROPS","createLinearGradient","createRadialGradient","styleProto","transformText","notCheckCache","globalCompositeOperation","otherStyle","newStyle","canvasGradient","globalImageCache","imageOnLoad","cachedImgObj","__cachedImgObj","onerror","pendingWrap","cbPayload","newImageOrSrc","__zrImageSrc","subPixelOptimizeOutputShape","positiveOrNegative","doubledPosition","outputShape","inputShape","originWidth","originHeight","globalCoord","Displayble","IncrementalDisplayble","_displayables","_temporaryDisplayables","_cursor","notClear","clearDisplaybles","addDisplayable","notPersistent","addDisplayables","displayables","DIMENSION_LABEL_REG","tooltipModel","isSeries","componentSubType","labelProp","dimensionIndex","Task","_reset","_plan","_onDirty","onDirty","_dirty","taskProto","performArgs","planResult","upTask","_upstream","__pipeline","lastModBy","normalizeModBy","_modBy","lastModDataCount","_modDataCount","modBy","modDataCount","taskIns","_dueIndex","_outputDueEnd","_dueEnd","_settedOutputEnd","_progress","downstream","_downstream","doProgress","outputDueEnd","winCount","it","sStep","sCount","modNext","sequentialNext","_callingProgress","pipe","downTask","getUpstream","getDownstream","parseXML","rawGeoJson","rawSpecialAreas","parsers","JSON","svgXML","labelDims","vals","_axisHelper","Cartesian2D","Axis2D","isAxisUsedInTheGrid","Grid","_coordsMap","_coordsList","_axesMap","_axesList","_initCartesian","gridProto","fixAxisOnZero","axesMap","otherAxisDim","onZeroRecords","getAxesOnZeroOf","otherAxisOnZeroOf","onZero","onZeroAxisIndex","canOnZeroToAxis","getOnZeroRecordKey","_updateScale","ignoreContainLabel","gridRect","getBoxLayoutParams","axesList","adjustAxes","coordBase","axisExtentSum","toLocalCoord","updateAxisTransform","labelUnionRect","axesMapOnDim","getCartesian","coordList","getCartesians","_findConvertTarget","xAxisModel","yAxisModel","coordsList","axisPositionUsed","axesCount","createAxisCreator","axisPosition","addAxis","isCartesian2D","axesModels","findAxesModels","otherAxis","axesTypes","grids","updateSelectedMap","_targetList","_selectTargetMap","targetMap","unSelect","toggleSelected","updateViewOnPan","controllerHost","updateViewOnZoom","zoomDelta","zoomX","zoomY","zoomLimit","newZoom","zoomMin","zoomMax","zoomScale","updateCenterAndZoom","previousZoom","getZoom","getCenter","setCenter","fixX","fixY","setZoom","Geo","geoSourceManager","resizeGeo","geoModel","boundingCoords","leftTop","rightBottom","setBoundingRect","boxLayoutOption","aspectScale","useCenterAndSize","viewRect","setViewRect","setGeoCoords","geo","geoCoord","addGeoCoord","geoCreator","geoList","invertLongitute","geoIndex","mapModelGroupBySeries","getHostGeoModel","mapType","getMapType","mapSeries","nameMapList","singleMapSeries","getFilledRegions","originRegionArr","regionsArr","dataNameMap","TransformDummy","View","_roamTransformable","_rawTransformable","_center","_zoom","doConvert","transformTo","_viewRect","rawTransform","_updateTransform","centerCoord","_updateCenterAndZoom","getDefaultCenter","rawRect","getRoamTransform","rawTransformMatrix","roamTransform","defaultCenter","roamTransformable","rawTransformable","_rawTransform","getViewRect","getViewRectAfterRoam","noRoam","linkList","TreeNode","hostTree","viewChildren","Tree","levelOptions","leavesOption","_nodes","levelModels","levelDefine","leavesModel","isRemoved","eachNode","order","suppressVisitSub","updateDepthAndHeight","getAncestors","includeSelf","ancestors","levelModel","getLevelModel","isExpand","getLeavesModel","isAncestorOf","isDescendantOf","getNodeByDataIndex","getNodeByName","nodes","clearLayouts","createTree","dataRoot","treeOptions","beforeLink","leaves","listData","dimMax","buildHierarchy","dataNode","addChild","mainData","struct","structAttr","LineGroup","LineDraw","_ctor","lineDrawProto","lineData","hoverLineStyle","isPointNaN","pt","lineNeedsDraw","pts","lineDraw","oldLineData","_lineData","doAdd","newLineData","itemEl","doUpdate","_clearIncremental","_incremental","symbolUtil","LinePath","SYMBOL_CATEGORIES","makeSymbolTypeKey","symbolCategory","setLinePoints","targetShape","cp1","cpx1","cpy1","_createLine","lineProto","beforeUpdate","symbolFrom","symbolTo","invScale","fromPos","pointAt","toPos","tangent","tangentAt","__position","halfPercent","cp","__verticalAlign","__textAlign","createLine","lineLabelOriginalOpacity","_updateCommonStl","linePoints","visualColor","visualOpacity","defaultLabelColor","showLabel","hoverShowLabel","rawVal","normalText","emphasisText","labelStyle","linePath","getNodeGlobalScale","nodeScaleRatio","groupScale","groupZoom","DIRECTION_MAP","CURSOR_MAP","ne","sw","nw","se","DEFAULT_BRUSH_OPT","brushStyle","transformable","brushMode","removeOnClick","baseUID","BrushController","_brushType","_brushOption","_panels","_track","_covers","_creatingCover","_creatingPanel","_enableGlobalPan","_uid","_handlers","pointerHandlers","createCover","brushOption","cover","coverRenderers","brushType","__brushOption","endCreating","creatingCover","coverRenderer","getCoverRenderer","updateCoverShape","updateCoverAfterCreation","updateCommon","getPanelByPoint","localCursorPoint","panel","panels","pn","isTargetByCursor","getPanelByCover","panelId","clearCovers","covers","originalLength","areas","getTrackEnds","track","tail","createBaseRectCover","doDrift","edgeNames","makeStyle","ondragend","updateBaseRect","localRange","handleSize","xa","ya","x2a","y2a","widtha","heighta","updateRectShape","mainEl","globalDir","getGlobalDirection","localDirection","xmin","ymin","xmax","ymax","clipByPanel","formatRectRange","driftRect","toRectRange","fromRectRange","rectRange","localDelta","toLocalDelta","namePart","ind","driftPolygon","thisGroup","localD","localZero","rawE","mainShapeContain","updateCoverByMouse","eventParams","thisBrushOption","shouldShowCover","determineBrushType","getCreatingRange","defaultBrushType","enableBrush","release","unmountHandlers","take","mountHandlers","doEnableBrush","setPanels","panelOpts","mount","enableGlobalPan","eachCover","updateCovers","brushOptionList","oldCovers","newCovers","addOrUpdate","oldIndex","newIndex","newBrushOption","unmount","handleDragEnd","isOutsideZrArea","currPanel","resetCursor","getLineRenderer","localTrack","ends","xyIndex","otherExtent","getLinearBrushOtherExtent","throttleUtil","BaseAxisPointer","animationModel","moveAnimation","propsEqual","lastProps","newProps","equals","lastProp","updateLabelShowHide","labelEl","getHandleTransProps","trans","updateMandatoryProps","_group","_lastGraphicKey","_handle","_lastValue","_lastStatus","_payloadInfo","animationThreshold","_axisModel","_axisPointerModel","handle","makeElOption","graphicKey","_moveAnimation","determineAnimation","doUpdateProps","updatePointerEl","updateLabelEl","createPointerEl","createLabelEl","_renderHandle","isCategoryAxis","useSnap","pointerOption","pointer","pointerEl","updateHandleTransform","handleModel","onmousemove","_onHandleDragMove","_onHandleDragEnd","_moveHandleToValue","getHandleTransform","_doDispatchAxisPointer","payloadInfo","cursorPoint","tooltipOption","axisDim","doClear","buildLabel","Polar","updatePolarScale","angleAxis","getAngleAxis","radiusAxis","getRadiusAxis","setAxis","polarCreator","polarList","polarModel","radiusAxisModel","findAxisModel","angleAxisModel","resizePolar","COORDS","createNameEach","attrs","capitalNames","capitalAttrs","nameObj","capital","isCoordSupported","coordType","createLinkedNodesFinder","forEachNode","forEachEdgeType","edgeIdGetter","sourceNode","existsLink","edgeType","absorb","processSingleNode","isNodeAbsorded","hasLink","edgeId","isLinked","seriesModelMap","getTargetSeriesModels","overallReset","filterData","percentRange","valueRange","linkedNodesFinder","effectedModels","fillLabel","MarkerModel","_mergeOption","hostSeries","__hostSeries","newOpt","createdBySelf","modelPropName","markerOpt","markerModel","formattedValue","markerTypeCalculatorWithExtent","mlType","otherDataDim","targetDataDim","otherCoordIndex","targetCoordIndex","coordArr","calcDataDim","numCalculate","markerTypeCalculator","average","valueDataDim","dataDimToCoordDim","baseDataDim","dataTransform","hasXAndY","dataFilter","hasXOrY","markerGroupMap","__keep","markerModelKey","arrayJoin","mathRound","degree","round4","svgEl","bindStyle","isText","pathHasFill","pathHasStroke","lineJoin","miterLimit","svgPath","__svgEl","pathStr","dataLength","cmdStr","nData","dThetaPositive","isCircle","unifiedTheta","pathDataToString","svgTextDrawRectText","removeOldTextNode","svgImage","HTMLImageElement","dw","dh","__imageSrc","setAttributeNS","attrXLink","svgText","_tmpTextHostRect","_tmpTextBoxPos","_tmpTextTransform","TEXT_ALIGN_TO_ANCHRO","hostRect","elTransform","needTransformTextByHostEl","textSvgEl","__textSvgEl","textSvgElStyle","setTextTransform","tspanList","__tspanList","tspanOriginLen","__canCacheByTextString","__text","updateTextLocation","nTextLines","tspan","singleLineText","__zrText","ZText","_graphic","Definable","zrId","svgRoot","tagNames","markLabel","domName","_zrId","_svgRoot","_tagNames","_markLabel","_domName","nextId","getDefs","isForceCreating","defs","addDom","removeDom","getDoms","doms","tags","markAllUnused","markUsed","removeUnused","getSvgProxy","getTextSvgElement","getSvgElement","hasElementType","hasMap","hasSet","Set","hasArrayBuffer","ArrayBuffer","equal","done","isView","flags","$$typeof","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","PropTypes","newObj","desc","_interopRequireWildcard","_react","_reactDom","_reactLifecyclesCompat","_React$Component","initialStatus","parentGroup","transitionGroup","appear","isMounting","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","_proto","getChildContext","getDerivedStateFromProps","_ref","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","mounting","findDOMNode","performEnter","performExit","_this2","appearing","enterTimeout","onEnter","safeSetState","onEntering","onTransitionEnd","onEntered","_this3","onExit","onExiting","onExited","setNextCallback","_this4","active","doesNotHaveTimeoutOrListener","addEndListener","_this$props","childProps","sourceKeys","_objectWithoutPropertiesLoose","Children","only","cloneElement","contextTypes","childContextTypes","propTypes","defaultProps","polyfill","componentWillMount","componentWillReceiveProps","nextProps","componentWillUpdate","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","classNamesShape","timeoutsShape","_propTypes","_ChildMapping","_assertThisInitialized","handleExited","firstRender","appeared","mounted","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","childFactory","isRequired","argsTag","mapTag","objectTag","setTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","process","nodeUtil","nodeIsTypedArray","arraySome","predicate","setToArray","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","IE_PROTO","nativeObjectToString","reIsNative","Buffer","Uint8Array","symToStringTag","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeKeys","arg","DataView","getNative","Promise","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolValueOf","Hash","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","eq","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsEqual","bitmask","customizer","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isMasked","baseKeys","arrLength","seen","arrValue","othIndex","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getSymbols","getMapData","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","resolve","ctorString","isLength","baseUnary","getAceInstance","editorEvents","editorOptions","_editorOptions","_lodash","_lodash2","_defineProperty","_setPrototypeOf","Split","SplitComponent","_Component","_classCallCheck","_possibleConstructorReturn","_inherits","onBeforeLoad","defaultValue","cursorStart","wrapEnabled","_this$props$scrollMar","refEditor","editorProps","splitEditor","getEditor","availableOptions","debounceChangePeriod","defaultValueForEditor","valueForEditor","newAnnotations","newMarkers","handleMarkers","handleOptions","sp","setOrientation","orientation","BELOW","BESIDE","oldProps","setSplits","nextValue","oldAnnotations","oldMarkers","appliedClassesArray","oldClass","currentMarkers","_i2","_ref$inFront","_this$props2","divStyle","ownKeys","sym","_objectSpread","ref","updateRef","number","bool","oneOfType","arrayOf","enableBasicAutocompletion","enableLiveAutocompletion","idStart","Animatable","afterUpdate","setClipPath","removeClipPath","animators","addAnimator","removeAnimator","Clip","arraySlice","defaultGetter","defaultSetter","interpolateNumber","interpolateString","interpolateArray","arrDim","len2","fillArr","arr0","arr1","arr0Len","arr1Len","isArraySame","catmullRomInterpolateArray","catmullRomInterpolate","v0","cloneValue","rgba2String","createTrackClip","animator","easing","oneTrackDone","keyframes","forceAnimate","_getter","_setter","useSpline","trackLen","trackMaxTime","firstVal","isValueArray","isValueColor","isValueString","getArrayDim","kfPercents","kfValues","prevValue","isAllValueEqual","colorArray","_target","lastFrame","lastFramePercent","clip","life","_loop","_delay","onframe","frame","ondestroy","Animator","_tracks","_clipCount","_doneList","_onframeList","_clipList","when","tracks","during","pause","_paused","resume","isPaused","_doneCallback","doneList","lastClip","clipCount","addClip","oldOnFrame","forwardToLast","clipList","removeClip","getClips","LinkedList","linkedListProto","Entry","insertEntry","maxSize","_list","_map","_maxSize","_lastRemovedEntry","LRUProto","leastUsedEntry","SHADOW_PROPS","Pattern","repeat","createPattern","r3","r4","total","globalDefault","_optionManager","baseOption","mountOption","initBase","timelineOption","getTimelineOption","mediaOptions","getMediaOption","mediaOption","componentsMap","newCptTypes","componentOption","newCptOptionList","existComponent","getComponentsByTypes","resultItem","ComponentModelClass","createSeriesIndices","_seriesIndicesMap","_seriesIndices","cpts","isIdArray","cpt","isNameArray","filterBySubType","indexAttr","idAttr","nameAttr","queryCond","components","queryResult","getSeriesByName","oneSeries","getSeriesByType","getSeries","getSeriesCount","rawSeriesIndex","eachRawSeries","eachRawSeriesByType","getCurrentSeriesIndices","filterSeries","componentTypes","seiresIndex","isNotTargetSeries","notMergeColorLayer","colorLayer","themeItem","transformPath","vMag","vRatio","u","vAngle","processArc","fa","psiDeg","xp","yp","lambda","cxp","cyp","commandReg","numberReg","createPathOptions","pathProxy","prevCmd","cpx","cpy","subpathX","subpathY","cmdList","cmdText","pLen","ctlPtx","ctlPty","createPathProxyFromString","pathEls","pathList","pathEl","pathBundle","_l","normalizeRadian","x_","shadowTemp","orignalBrush","modified","clipPaths","polyHelper","smooth","smoothConstraint","smoothSpline","smoothBezier","controlPoints","cp2","colorIdx","colorNameMap","scopeFields","defaultColorPalette","layeredColorPalette","colorPalette","paletteNum","getNearestColorPalette","echartsAPIList","chartInstance","Ellipse","DILIMITER_REG","DOMParser","parseFromString","SVGParser","_defs","_root","_isDefine","_isText","xml","viewBox","parseAttributes","viewBoxRect","viewBoxTransform","_parseNode","viewBoxArr","makeViewBoxTransform","ignoreViewBox","elRoot","ignoreRootClip","xmlNode","parser","defineParsers","def","nodeParsers","_parseText","_textX","_textY","inheritStyle","ellipse","parsePoints","gradient","stopColor","_parseGradientColorStops","__inheritedStyle","pointsString","attributesMap","onlyInlineStyle","zrStyle","isTextEl","transformOps","transformRegex","parseTransformAttribute","styleRegResult","styleList","styleRegex","svgAttrName","parseStyleAttribute","attrValue","elFillProp","elStrokeProp","getPaint","elPropName","urlRegex","urlMatch","parseSVG","format","_throttle","ecHelper","parseGeoJSON","_List","_Model","_Axis","_env","parseGeoJson","ecUtil","util","genName","fromZero","sysDims","dataDimNameMap","coordDimNameMap","optDimCount","sysDimItem","sysDimItemDimsDef","getDimCount","userDimName","validDataDims","resultDimIdx","applyDim","availDimIdx","sysDimIndex","sysDimItemOtherDims","sysDimItemDimsDefItem","extra","_needCollect","needCollect","_deduplication","deduplication","dedplication","getOrCreateMap","getOrdinal","fixExtent","scaleProto","intervalScaleProto","roundingErrorFix","mathFloor","mathCeil","mathLog","LogScale","_originalScale","originalScale","powVal","__fixMin","fixRoundingError","__fixMax","approxTickNum","originalVal","Region","decodePolygon","coordinate","encodeOffsets","encodeScale","prevX","prevY","json","UTF8Encoding","UTF8Scale","geometry","coordinates","c2","decode","featureObj","geometries","exterior","interiors","polygonContain","MAX_NUMBER","loopGeo","newRegion","windingLine","isAroundEqual","prepareDataCoordInfo","valueOrigin","valueStart","getValueStart","baseAxisDim","valueAxisDim","baseDataOffset","dataDimsForPoint","getStackedOnPoint","dataCoordInfo","stackedData","fixClipWithShadow","v2Copy","cp0","isPointNull","drawSegment","segLen","allLen","smoothMin","smoothMax","smoothMonotone","connectNulls","drawMono","drawNonMono","prevIdx","prevP","ctrlLen","nextIdx","nextP","ratioNextSeg","lenPrevSeg","lenNextSeg","getBoundingBox","ptMin","ptMax","stackedOnPoints","stackedOnSmooth","stackedOnBBox","axisModelCreator","axisModelCommonMixin","AxisModel","gridIndex","gridId","getAxisType","extraOption","nameRotate","nameTruncate","nameTextStyle","nameGap","axisTick","axisLabel","splitArea","areaStyle","categoryAxis","minorSplitLine","timeAxis","logAxis","logBase","rawAxisPosition","rectBound","axisOffset","posBound","onZeroCoord","labelInside","createListFromArray","getMarkerPosition","clampData","legendHoverLink","barMinAngle","largeThreshold","progressiveChunkMode","fixPosition","labelPositionOutside","setLabel","actionInfos","roamHelper","getFixedItemStyle","areaColor","updateMapSelected","mapOrGeoModel","regionsGroup","otherRegionEl","__regions","MapDraw","updateGroup","_controller","_controllerHost","_updateGroup","_mouseDownFlag","_mapName","_initialized","_regionsGroup","_backgroundGroup","draw","fromView","isGeo","_updateBackground","itemStyleAccessPath","hoverItemStyleAccessPath","labelAccessPath","hoverLabelAccessPath","regionGroup","compoundPath","paths","itemStyleModel","regionModel","getRegionModel","hoverItemStyleModel","transformPoint","interior","isDataNaN","itemLayout","_updateController","mapDraw","updateMapSelectHandler","makeActionBase","ATTR","getStore","resourceKey","userKey","seriesGroup","DATAS","MAIN_DATA","transferInjection","datas","linkAll","linkSingle","changeInjection","cloneShallowInjection","datasAttr","nextRight","hierNode","thread","nextLeft","nextAncestor","nodeInLeft","moveSubtree","wl","wr","prelim","defaultSeparation","node1","node2","defaultAncestor","firstWalk","separation","subtreeW","executeShifts","midPoint","subtreeV","nodeOutRight","nodeInRight","nodeOutLeft","sumOutRight","sumInRight","sumOutLeft","sumInLeft","apportion","secondWalk","nodeX","radialCoordinate","radialCoor","Graph","edges","directed","addNode","linkNameList","validEdges","linkCount","addEdge","nodeData","coordSysCtor","edgeData","simpleLayoutEdge","eachEdge","curveness","simpleLayout","getGraph","_graphHelper","_symbolRadiansHalf","_layoutNodesBasedOn","unitAngle","radianHalf","sumRadian","nodeScale","symbolRadianHalf","halfRemainRadian","circularLayout","basedOn","x12","y12","parallelPreprocessor","parallelModel","_throttledDispatchExpand","_dispatchExpand","checkTrigger","_mouseDownPoint","mouseDownPoint","getSlidedAxisExpandWindow","behavior","axisExpandWindow","triggerOn","Parallel","normalizeRect","makeRectPanelClipPath","localPoints","makeLinearBrushOtherExtent","specifiedXYIndex","brushWidth","makeRectIsTargetByCursor","targetModel","createListSimply","seriesModelMixin","_baseAxisDim","addOrdinal","xAxisType","yAxisType","coordDims","baseAxisDimIndex","baseAxisType","otherAxisType","newOptionData","newItem","defaultValueDimensions","curveUtil","EffectLine","_updateEffectSymbol","effectLineProto","effectModel","_updateEffectAnimation","period","constantSpeed","delayExpr","isDelayFunc","updateAnimationPoints","getLineLength","_period","__t","updateSymbolPosition","__p1","__cp1","__p2","_createPolyline","polylineProto","isPolyline","isLarge","lineCoords","totalCoordsCount","getLineCoordsCount","getLineCoords","positionMap","horizontal","vertical","onLeave","doEnter","currTrigger","initialized","useHandler","dis","pendings","showTip","hideTip","makeDispatchAction","actuallyPayload","showLen","hideLen","dispatchTooltipFinally","initGlobalListeners","unregister","viewHelper","cartesianAxisHelper","CartesianAxisPointer","getGlobalExtent","pixelValue","pointerShapeBuilder","currPosition","cursorOtherValue","getAxisDimIndex","shadow","layoutBox","boxLayoutParams","viewportSize","makeBackground","brushHelper","COORD_CONVERTS","INCLUDE_FINDER_MAIN_TYPES","BrushTargetManager","targetInfoList","_targetInfoList","info","foundCpts","targetInfoBuilders","builder","formatMinMax","minMax","setOutputRanges","matchOutputRanges","area","coordRange","coordRanges","coordConvert","__rangeOffset","diffProcessor","xyMinMax","targetInfo","findTargetInfo","coordSyses","setInputRanges","xyMinMaxCurr","xyMinMaxOrigin","sizeCurr","sizeOrigin","scales","rangeOffset","getSize","makePanelOpts","getDefaultBrushType","getPanelRect","coordSysModel","controlSeries","areaPanelId","targetInfoMatchers","xAxisModels","yAxisModels","gridModels","gridModelMap","xAxesHas","yAxesHas","cartesians","panelRectBuilder","xAxisDeclared","yAxisDeclared","geoModels","axisConvert","rangeOrCoordRange","xminymin","xmaxymax","axisNameIndex","axisDiffProcessor","refer","giveStore","newSnapshot","dataZoomId","legendFilter","langSelector","defaultSelectorOption","LegendModel","_updateSelector","_updateData","legendData","hasSelected","potentialData","availableNames","isPotential","_availableNames","allSelect","inverseSelect","getOrient","borderRadius","borderWidth","itemGap","itemWidth","itemHeight","inactiveColor","inactiveBorderColor","selectedMode","selectorLabel","selectorPosition","selectorItemGap","selectorButtonGap","layoutUtil","newlineDisabled","_contentGroup","_backgroundEl","_selectorGroup","_isFirstRender","getContentGroup","getSelectorGroup","legendModel","isFirstRender","resetInner","itemAlign","renderInner","mainRect","layoutInner","layoutRect","contentGroup","legendDrawnMap","selectMode","legendSymbolType","_createItem","dispatchSelectAction","dispatchHighlightAction","dispatchDownplayAction","provider","_createSelector","selectorGroup","selectorItem","labelText","onclick","emphasisLabelModel","createSelectorButton","legendModelItemStyle","itemGroup","itemIcon","legendGlobalTooltipModel","setSymbolStyle","legendSymbolCenter","hitRect","legendIndex","__legendDataIndex","contentPos","selectorRect","selectorPos","orientIdx","hw","yx","dataName","preprocessor","pieces","splitList","calculable","visualSolution","VISUAL_PRIORITY","getColorVisual","visualMapModel","targetVisuals","resultVisual","createOnAllSeries","resetDefines","isTargetSeries","getDataDimension","visualMetaList","visualMeta","getVisualMeta","stops","outerColors","concreteDim","visualDefault","replacableOptionKeys","dataBound","inRange","outOfRange","contentColor","textGap","_dataExtent","controllerVisuals","itemSize","resetItemSize","completeVisualOption","resetVisual","getTargetSeriesIndices","optionSeriesIndex","seriesIndices","eachTargetSeries","formatValueText","edgeSymbols","isMinMax","textValue","resetExtent","optDim","listDimensions","completeSingle","defa","stateExist","stateAbsent","optExist","optAbsent","symbolExists","symbolSizeExists","visuals","setSelected","inactive","autoPositionValues","doRender","renderBackground","getControllerVisual","targetValue","visualCluster","forceState","visualObj","visualMapping","convertOpacityToAlpha","positionGroup","getItemAlign","modelOption","ecSize","realIndex","paramsSet","reals","fakeValue","layoutInput","rParam","makeHighDownBatch","doCreateNode","urn","vmlInited","namespaces","zrvml","createNode","initVML","addRule","_split","_diff","_ace","__assign","HOOKS","_disable","_enable","allowInput","altFormat","altInput","altInputClass","ariaDateFormat","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disableMobile","enableSeconds","enableTime","errorHandler","getWeek","givenDate","setHours","setDate","getDate","getDay","week1","getFullYear","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","monthSelectorType","nextArrow","noCalendar","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","hourAriaLabel","minuteAriaLabel","int","wait","immediate","arrayify","toggleClass","classList","clearNode","createNumberInput","inputClassName","numInput","arrowUp","arrowDown","pattern","doNothing","monthToStr","monthNumber","revFormat","D","dateObj","monthName","setMonth","J","day","getHours","shortMonth","seconds","setSeconds","U","unixSeconds","W","weekNum","weekNumber","Y","year","setFullYear","ISODate","minutes","setMinutes","month","unixMillSeconds","tokenRegex","formats","toISOString","getMonth","getSeconds","getMinutes","createDateFormatter","_c","l10n","frmt","overrideLocale","formatDate","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","datestr","ops","matchIndex","regexStr","token_1","isBackSlash","escaped","compareDates","date1","date2","FlatpickrInstance","instanceConfig","flatpickr","defaultConfig","bindToInstance","setCalendarWidth","calendarContainer","daysContainer","daysWidth","days","weekWrapper","removeProperty","updateTime","selectedDates","setDefaultTime","isKeyDown","curValue","newValue","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","timeWrapper","_input","setHoursFromInputs","updateValue","_debouncedChange","hours","secondElement","limitMinHours","minTime","minDate","minDateHasTime","latestSelectedDateObj","maxTime","maxDate","maxDateHasTime","setHoursFromDate","setDefaultHours","minHr","minMinutes","maxHr","maxMinutes","isMobile","onYearInput","changeYear","onClick","evt","triggerChange","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","buildMonthSwitch","redraw","timeIncrement","inputElem","createEvent","dispatchEvent","createDay","dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","tabIndex","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","onMouseOver","getFirstAvailableDay","startMonth","endMonth","focusOnDay","dayFocused","isInView","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","utils","getDaysInMonth","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","dayNum","dayContainer","buildDays","frag","shouldBuildMonth","monthsDropdownContainer","buildMonth","monthElement","monthNavFragment","selectedMonth","yearInput","tabindex","yearElement","buildMonths","monthNav","prevMonthNav","yearElements","monthElements","nextMonthNav","buildWeekdays","weekdayContainer","updateWeekdays","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","updateNavigationCurrentMonth","isCalendarElem","appendTo","documentClick","eventTarget_1","composedPath","isCalendarElement","isInput","lostFocus","relatedTarget","isIgnored","timeContainer","newYear","newYearNum","isNewYear","dateToCheck","parsed","allowKeydown","allowInlineKeydown","isTimeObj","focusAndClose","selectDate","delta_1","currentYearElement","elems","pluginElements","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","_loop_1","ts1","ts2","dayElem","timestamp","positionCalendar","minMaxDateSetter","inverseDateObj","removeAttribute","setupLocale","l10ns","dataset","customPositionElement","_positionElement","calendarHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","showOnTop","rightMost","centerMost","bodyWidth","centerLeft","centerIndex","cssRules","centerStyle","insertRule","centerBefore","msMaxTouchPoints","findParent","selectedDate","shouldChangeMonth","selectedIndex","showTimeInput","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","_type","click","wasOpen","CALLBACKS","setSelectedDate","toggle","inputDate","dates","parseDateRules","hooks","initEvent","getDateStr","dObj","mobileFormatStr","onMonthNavClick","isPrevMonth","isNextMonth","boolOpts","userConfig","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","parseConfig","querySelector","required","preloadedDate","defaultDate","_showTimeInput","setupDates","yr","__hidePrevMonthArrow","__hideNextMonthArrow","innerContainer","buildWeeks","rContainer","hourInput","minuteInput","military2ampm","secondInput","buildTime","customAppend","build","querySelectorAll","inputType","setupMobile","debouncedResize","ontouchstart","bindEvents","isSafari","_flatpickr","nodeList","HTMLElement","args_1","HTMLCollection","NodeList","Node","en","localize","setDefaults","jQuery","fp_incr","factory","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","secret","getShim","ReactPropTypes","any","elementType","instanceOf","objectOf","oneOf","exact","checkPropTypes","_arr","_n","_d","_e","_s","_addClass","_removeClass","addClass","removeClass","_key","getClassNames","removeClasses","activeClassName","reflowAndAddClass","appearClassName","doneClassName","enterClassName","classNames","isStringClassNames","_this$getClassNames6","_hasClass","baseVal","replaceClassName","origClass","classToRemove","_args","handleEnter","_len2","_key2","handleLifecycle","handleEntering","_len3","_key3","handleEntered","_len4","_key4","handleExit","_len5","_key5","handleExiting","_len6","_key6","_len7","_key7","originalArgs","_child$props","toArray","inProp","_React$Children$toArr","second","mergeChildMappings","getProp","nextChildMapping","isValidElement","hasPrev","hasNext","prevChild","isLeaving","mapFn","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","arr2","ReactAce","onValidate","navigateToFileEnd","updatePlaceholder","handleScrollMargins","margins","setScrollMargins","showPlaceholder","placeholderNode","webpackPolyfill","deprecate","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","symbolToString","baseGet","isSymbol","isKey","stringToPath","toKey","isHostObject","memoize","baseToString","resolver","memoized","Cache","$container","$splits","$editorCSS","$editors","$orientation","$cEditor","UndoManagerProxy","$u","$createEditor","$fontSize","getSplits","getCurrentEditor","keybinding","$cloneSession","undoManagerProxy","getOrientation","editorWidth","editorHeight","_diffMatchPatch","DiffComponent","dmp","lhString","rhString","diff_main","diff_cleanupSemantic","diffedLines","generateDiffedLines","setCodeMarkers","chunkType","firstChar","lastChar","linesToHighlight","codeEditorSettings","newMarkerSet","markerObj","_markerObj","diff_match_patch","Diff_Timeout","Diff_EditCost","Match_Threshold","Match_Distance","Patch_DeleteThreshold","Patch_Margin","Match_MaxBits","Diff","text1","text2","opt_checklines","opt_deadline","deadline","checklines","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_lineMode_","diff_bisect_","diff_linesToChars_","chars1","chars2","linearray","lineArray","diff_charsToLines_","count_delete","count_insert","text_delete","text_insert","text1_length","text2_length","max_d","v_offset","v_length","front","k1start","k1end","k2start","k2end","k1","k1_offset","k2_offset","diff_bisectSplit_","k2","text1a","text2a","text1b","text2b","diffsb","lineHash","diff_linesToCharsMunge_","lineStart","lineArrayLength","pointermin","pointermax","pointermid","pointerstart","pointerend","diff_commonOverlap_","text_length","best","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","best_common","prefixLength","suffixLength","hm1","hm2","equalities","equalitiesLength","lastequality","length_insertions1","length_deletions1","length_insertions2","length_deletions2","diff_cleanupSemanticLossless","deletion","insertion","overlap_length1","overlap_length2","diff_cleanupSemanticScore_","two","char1","char2","nonAlphaNumeric1","nonAlphaNumericRegex_","nonAlphaNumeric2","whitespace1","whitespaceRegex_","whitespace2","lineBreak1","linebreakRegex_","lineBreak2","blankLine1","blanklineEndRegex_","blankLine2","blanklineStartRegex_","equality1","equality2","commonOffset","commonString","bestEquality1","bestEdit","bestEquality2","bestScore","diff_cleanupEfficiency","pre_ins","pre_del","post_ins","post_del","diff_xIndex","loc","last_chars1","last_chars2","diff_prettyHtml","pattern_amp","pattern_lt","pattern_gt","pattern_para","diff_text1","diff_text2","diff_levenshtein","levenshtein","insertions","deletions","diff_toDelta","encodeURI","diff_fromDelta","diffsLength","decodeURI","match_main","match_bitap_","match_alphabet_","match_bitapScore_","accuracy","proximity","score_threshold","best_loc","bin_min","bin_mid","matchmask","last_rd","bin_max","finish","rd","charMatch","patch_addContext_","patch","patch_make","opt_b","opt_c","patches","patch_obj","patchDiffLength","char_count1","char_count2","prepatch_text","postpatch_text","diff_type","diff_text","patch_deepCopy","patchesCopy","patchCopy","patch_apply","nullPadding","patch_addPadding","patch_splitMax","start_loc","expected_loc","end_loc","index2","index1","paddingLength","patch_size","bigpatch","precontext","postcontext","patch_toText","patch_fromText","textline","textPointer","patchHeader","DocCommentHighlightRules","getTagRule","getStartRule","getEndRule","identifierRe","JavaScriptHighlightRules","keywordMapper","escapedRe","comments","noES6","no_regex","jsx","JSX","tagRegex","jsxTag","jsxJsRule","jsxAttributes","reference","MatchingBraceOutdent","BaseFoldMode","commentRegex","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","forceMultiline","getCommentRegionBlock","getSectionRange","startIndent","CStyleFoldMode","$outdent","tokenizedLine","endState","supportType","supportFunction","supportConstant","supportConstantColor","supportConstantFonts","numRe","pseudoElements","pseudoClasses","CssHighlightRules","strings","escapes","propertyMap","CssCompletions","completionsDefined","defineCompletions","getPropertyValueCompletions","getPropertyCompletions","caption","snippet","CssBehaviour","$completer","JsonHighlightRules","XmlHighlightRules","processing_instruction","doctype","int_subset","cdata","attr_reference","tag_whitespace","whitespace","attribute_value","embedTagRules","XmlBehaviour","rightSpace","tokenEnd","tokenRow","tokenColumn","voidElements","nextToken","nextIndent","optionalEndTags","Tag","selfClosing","_getFirstTagInLine","_findEndTagInLine","getCommentFoldWidget","_readTagForward","_readTagBackward","_pop","firstTag","XmlFoldMode","JsxHighlightRules","buildinConstants","SearchBox","showReplaceForm","setEditor","searchRange","$syncOptions","$initElements","sb","replaceBox","searchOption","replaceOption","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","searchCounter","activeInput","$searchBarKb","$closeSearchBarKb","isReplace","checked","findPrev","setSearchRange","searchRangeMarker","noMatch","updateCounter","MAX_COUNT","replaceAndFindNext","newLines","breakBefore","dontBreak","blockTag","prepend","singleTags","maxPos","nextTag","code","lastToken","breakAdded","phpTransform","beautify","Draggable","GestureMgr","EmptyProxy","handlerNames","painterRoot","_hovered","_lastTouchMoment","_lastX","_lastY","_gestureMgr","setHandlerProxy","isHover","isOutsideBoundary","handlerInstance","isOutside","lastHovered","lastHoveredTarget","hovered","hoveredTarget","setCursor","dispatchToElement","mouseout","eventControl","zrEventControl","zrIsToLocalDOM","dispatch","eventArgs","eventPacket","eveType","makeEventPacket","eachOtherLayer","layer","exclude","hoverCheckResult","processGesture","gestureMgr","gestureInfo","recognize","_downEl","_downPoint","_upEl","_dragStart","_drag","_dragEnd","draggingTarget","_draggingTarget","dropTarget","lastDropTarget","_dropTarget","LN2","determinant","rank","rowMask","colMask","detCache","cacheKey","fullRank","colStart","subRowMask","subRowStart","colLocalIdx","colTag","mA","vh","srcPointX","srcPointY","pk","eventUtil","pointPair","_doTrack","_recognize","trackItem","recognizers","pinchEnd","pinchPre","pinchCenter","shapeCompareFunc","_roots","_displayList","_displayListLen","includeIgnore","updateDisplayList","displayList","_updateAndAddDisplayable","userSetClipPath","currentClipPath","parentClipPath","_renderList","displayableSortFunc","animatable","animateToShallow","objShallow","propertyCount","setAttrByPath","animatingShape","pathSplitted","animateFrom","easingFuncs","_life","onrestart","_pausedTime","globalTime","deltaTime","_startTime","easingFunc","fire","restart","_needsRemove","quadraticIn","quadraticOut","quadraticInOut","cubicIn","cubicOut","cubicInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","sinusoidalOut","sinusoidalInOut","exponentialIn","exponentialOut","exponentialInOut","circularIn","circularOut","circularInOut","elasticIn","elasticOut","elasticInOut","backIn","backOut","backInOut","bounceIn","bounceOut","bounceInOut","Layer","parseInt10","singleCanvas","_opts","_singleCanvas","rootStyle","zlevelList","_zlevelList","layers","_layers","_layerConfig","_needsManuallyCompositing","_width","_height","mainLayer","__builtin__","_domRoot","_getSize","domRoot","createRoot","_hoverlayer","_hoverElements","isSingleCanvas","getViewportRootOffset","viewportRoot","paintAll","_redrawId","_paintList","clearColor","_backgroundColor","__hoverMir","__from","hoverElements","hoverLayer","getLayer","originalEl","_doPaintEl","getHoverLayer","redrawId","_updateLayerStatus","finished","_doPaintList","_compositeManually","clearRect","eachBuiltinLayer","virtual","layerList","zi","__startIndex","__drawIndex","useTimer","__endIndex","firstEl","prevElClipPaths","currentLayer","forcePaint","isDisplayableCulled","prevClipPaths","isClipPathChanged","doClip","insertLayer","layersMap","prevLayer","isLayerValid","prevDom","eachLayer","getLayers","updatePrevLayer","__used","incrementalLayerCount","getElementCount","_clearLayer","_zlevel","delLayer","_progressiveLayers","clearLayer","imageLayer","renderToCanvas","whIdx","cwh","plt","prb","shadowBlurSize","leftMargin","rightMargin","pathTransform","imgShape","returnFalse","createDom","newDom","newDomStyle","domStyle","onselectstart","domBack","ctxBack","motionBlur","lastFrameAlpha","createBackBuffer","clearAll","clearColorGradientOrPattern","haveMotionBLur","__canvasGradient","fillRect","_clips","_running","_time","_pauseStart","clips","deferredEvents","deferredClips","_startLoop","mouseHandlerNames","pointerEventNameMap","_event","globalEventSupported","localNativeListenerNames","pointerdown","pointerup","pointermove","pointerout","mouse","nm","globalNativeListenerNames","eventNameFix","isPointerFromTouch","pointerType","markTouch","isLocalEl","isLocal","FakeGlobalEvent","currentTarget","fakeGlobalEventProto","stopImmediatePropagation","localDOMHandlers","_mayPointerCapture","downPoint","togglePointerCapture","_pointerCapturing","toElement","touchstart","touchmove","touchend","globalDOMHandlers","pointerCaptureReleasing","mountLocalDOMEventListeners","domHandlers","nativeEventName","mountSingleDOMEventListener","touching","touchTimer","setTouchTimer","mountGlobalDOMEventListeners","normalizeGlobalEvent","listenerOpts","domTarget","unmountDOMEventListeners","isPointerCapturing","globalHandlerScope","_globalHandlerScope","DOMHandlerScope","HandlerDomProxy","_localHandlerScope","handlerDomProxyProto","makeStyleMapper","getLineDash","lineType","dotSize","dashSize","PATH_COLOR","cubic","quadratic","windingCubic","nRoots","y0_","y1_","nExtrema","unit","windingQuadratic","y_","windingArc","containPath","isStroke","mathAtan2","nPoint","unitX","unitY","v2Distance","interpolate","isLoop","segs","w2","w3","v2Min","v2Max","v2Scale","v2Add","v2Clone","v2Sub","constraint","prevPoint","nextPoint","cps","d0","_curve","someVectorAt","isTangent","cpx2","cpy2","_updatePathDirty","getBorderLineDash","gradientColor","animationDuration","animationEasingUpdate","progressiveThreshold","hoverLayerThreshold","useUTC","QUERY_REG","_timelineOptions","_mediaList","_mediaDefault","_currentMediaIndices","_optionBackup","_newBaseOption","parseRawOption","rawOption","isNew","mediaDefault","timelineOptions","mediaList","timelineOpt","timeline","media","singleMedia","preProcess","applyMediaQuery","ecWidth","ecHeight","realMap","aspectratio","applicatable","operator","realAttr","expect","oldOption","oldOptionBackup","newParsedOption","newCptOpt","oldCptOpt","isRecreate","optionBackup","timelineModel","getCurrentIndex","indices1","indices2","compatStyle","compatLayoutProperties","LAYOUT_PROPERTIES","COMPATITABLE_COMPONENTS","isTheme","seriesOpt","clipOverflow","clockWise","pointerColor","dataRange","POSSIBLE_STYLES","compatEC2ItemStyle","itemStyleOpt","normalItemStyleOpt","normal","emphasisItemStyleOpt","convertNormalEmphasis","optType","useExtend","normalOpt","removeEC3NormalStatus","compatTextStyle","labelOptSingle","compatEC3CommonStyles","toArr","toObj","markPoint","markLine","markArea","links","mpData","mlData","breadcrumb","processSeries","axes","axisOpt","parallelOpt","parallelAxisDefault","calendar","calendarOpt","radarOpt","geoOpt","regionObj","toolboxOpt","feature","featureOpt","calculateStack","stackInfoList","targetStackInfo","idxInStack","resultVal","resultNaN","targetData","byValue","stackedDataRawIndex","stackedOver","stackInfo","stackInfoMap","colorAccessPath","colorCallback","borderColorAccessPath","ariaModel","seriesCnt","ariaLabel","maxDataCnt","maxSeriesCnt","displaySeriesCnt","getTitle","getConfig","seriesLabels","seriesCount","seriesLabel","seriesTpl","displayCnt","dataLabels","keyValues","maskColor","mask","labelRect","dataProcessorHandlers","_dataProcessorHandlers","_visualHandlers","_allHandlers","_stageTaskMap","performStageTasks","stageHandlers","needSetDirty","stageHandlerRecord","seriesTaskMap","overallTask","overallNeedDirty","stub","pipelineId","taskRecord","_pipelineMap","pCtx","progressiveEnabled","__idxInPipeline","blockIndex","dataLen","threshold","pipelineMap","stageTaskMap","seriesTaskPlan","seriesTaskReset","seriesTaskCount","useClearVisual","isVisual","isLayout","createSeriesStageTask","overallTaskReset","overallProgress","createStub","stubReset","stubOnDirty","agent","__block","createOverallStageTask","upstreamContext","stubProgress","makeSeriesTaskProgress","singleSeriesTaskProgress","resetDefineIdx","resetDefine","detectSeriseType","legacyFunc","ecModelMock","apiMock","mockMethods","cond","colorAll","iconStyle","controlStyle","color0","borderColor0","ox","oy","_dataStackHelper","_completeDimensions","_createDimensions","_symbol","createList","createScale","mixinAxisModelCommonMethods","CoordSysInfo","fetchers","cartesian2d","parallelAxisIndex","fetch","_ordinalMeta","scaleHelper","TimeScale","stepLvl","_stepLvl","ONE_HOUR","approxInterval","scaleLevelsLen","scaleLevels","bisect","yearSpan","timezoneOffset","getTimezoneOffset","ONE_SECOND","ONE_MINUTE","ONE_DAY","makeCategoryLabelsActually","numericLabelInterval","labelsCache","getListCache","optionLabelInterval","listCacheGet","makeLabelsByCustomizedCategoryInterval","autoInterval","makeAutoCategoryInterval","makeLabelsByNumericCategoryInterval","listCacheSet","labelCategoryInterval","categoryInterval","onlyTick","ordinalScale","ordinalExtent","startTick","showAllLabel","includeMinLabel","includeMaxLabel","addItem","tVal","makeCategoryLabels","makeRealNumberLabels","tickCategoryInterval","ticksCache","optionTickInterval","labelsResult","makeCategoryTicks","axisRotate","fetchAutoCategoryIntervalCalculationParams","unitSpan","unitW","unitH","maxW","maxH","lastAutoInterval","lastTickCount","axisExtend0","axisExtend1","visualSymbol","layoutPoints","dataSample","showSymbol","showAllSymbol","sampling","lineAnimationDiff","_poly","_helper","_createClipPathFromCoordSys","isPointsSame","points1","points2","getSmooth","turnPointsIntoStep","stepTurnAt","baseIndex","stepPoints","nextPt","stepPt","stepPt2","getIsIgnoreFunc","isAuto","getAxesByScale","availSize","canShowAllSymbolForCategory","categoryDataDim","labelMap","createLineClipPath","rectShape","lineGroup","symbolDraw","_symbolDraw","_lineGroup","areaStyleModel","isCoordSysPolar","prevCoordSys","_coordSys","polyline","_polyline","_polygon","isAreaChart","getStackedOnPoints","isIgnoreFunc","__temp","clipShapeForSymbol","_clipShapeForSymbol","_step","_newPolygon","_stackedOnPoints","_points","_updateAnimation","_newPolyline","stopLen","minCoord","maxCoord","coordSpan","getVisualGradient","stackedOnSeries","_valueOrigin","stackedOnCurrent","stackedOnNext","__points","updatedDataInfo","diffStatus","idx1","ptIdx","oldStackedOnPoints","newStackedOnPoints","oldCoordSys","newCoordSys","oldValueOrigin","newValueOrigin","diffResult","diffData","currPoints","nextPoints","currStackedPoints","nextStackedPoints","sortedIndices","rawIndices","newDataOldCoordInfo","oldDataNewCoordInfo","diffItem","pointAdded","currentPt","sortedCurrPoints","sortedNextPoints","sortedCurrStackedPoints","sortedNextStackedPoints","sortedStatus","samplers","nearest","indexSampler","sampler","Cartesian","axisX","axisY","xScale","yScale","xAxisExtent","yAxisExtent","xExtent","yExtent","dimAxisMapper","_axes","_dimList","_dataCoordConvert","dimList","coordExtent","containLabel","axisBuilderAttrs","selfBuilderAttrs","CartesianAxisView","oldAxisGroup","_axisGroup","_splitAreaColors","_splitLine","splitLineModel","lineColors","colorIndex","_minorSplitLine","_splitArea","splitAreaModel","areaColors","areaColorsLen","lastSplitAreaColors","newSplitAreaColors","cIndex","brushSelector","roundCap","barItemStyle","Sausage","BAR_BORDER_WIDTH_QUERY","_eventPos","_updateDrawMode","coordinateSystemType","_isLargeDraw","_renderLarge","_renderNormal","_clear","_incrementalRenderLarge","isLargeDraw","isHorizontalOrRadial","needsClip","coordSysClipArea","expandWidth","getClipArea","elementCreator","updateStyle","removeRect","removeSector","createLarge","coordSysBoundingRect","signWidth","signHeight","animateProperty","animateTarget","isRadial","sector","fixedLineWidth","rawLayout","getLineWidth","signX","signY","isZeroOnPolar","isPolar","getBarItemStyle","LargePath","startPoint","__startPoint","baseDimIdx","__baseDimIdx","__largeDataIndices","__barWidth","setLargeStyle","largePathUpdateDataIndex","largePath","barWidthHalf","startValueVal","pointerBaseVal","pointerValueVal","baseLowerBound","baseUpperBound","barBaseVal","barValueVal","largePathFindDataIndex","dr","rCenter","unitStartX","unitStartY","unitEndX","unitEndY","createDataSelectAction","dataColor","pieLayout","dataSelectableMixin","LegendVisualProvider","PieSeries","_createSelectableList","_defaultLabelLine","labelLineNormalOpt","labelLine","labelLineEmphasisOpt","minAngle","minShowLabelAngle","selectedOffset","hoverOffset","avoidLabelOverlap","percentPrecision","stillShowZeroSum","alignTo","bleedMargin","distanceToLabelLine","animationType","animationTypeUpdate","updateDataSelected","toggleItemSelected","midAngle","PiePiece","piePieceProto","firstCreate","sectorShape","withAnimation","_updateLabel","hoverIgnore","normalIgnore","targetLineShape","targetTextStyle","labelHoverModel","labelLineModel","labelLineHoverModel","sectorGroup","_sectorGroup","onSectorClick","piePiece","_createClipPath","RADIAN","validDataCount","unitRadian","roseType","restAngle","valueSumLargerThanMinAngle","currentAngle","adjustSingleSide","viewLeft","viewTop","farthestX","shiftDown","shiftUp","changeX","isDownList","lastDeltaX","labelAlignTo","lastY","upList","downList","isPositionCenter","labelLayoutList","hasLabelRotate","minShowLabelRadian","labelPosition","labelDistance","labelLineLen","labelLineLen2","isLabelInside","leftList","rightList","leftmostX","rightmostX","targetTextWidth","isAlignToEdge","realTextWidth","avoidOverlap","LargeSymbolDraw","pointsLayout","_updateSymbolDraw","_getClipShape","_finished","clipArea","LargeSymbolPath","symbolProxy","softClipShape","symbolProxyShape","findDataIndex","largeSymbolProto","_setCommon","isIncremental","extrudeShadow","radarLayout","IndicatorAxis","Radar","radarModel","_indicatorAxes","getIndicatorModels","indicatorModel","indicatorAxis","getIndicatorAxes","indicatorIndex","coordToPoint","closestAxis","minRadianDiff","closestAxisIdx","viewSize","indicatorAxes","radarSeries","increaseInterval","fixedMin","fixedMax","halfSplitNumber","radarList","radiusExtent","valueAxisDefault","defaultsShow","showName","nameFormatter","indicatorModels","indicatorOpt","iNameTextStyle","indName","indicator","_buildAxes","_buildSplitLineAndArea","axisBuilders","showSplitLine","showSplitArea","splitLineColors","splitAreaColors","splitLines","splitAreas","ticksRadius","getColorIndex","realSplitNumber","axesTicksPoints","prevPoints","areaOrLine","areaOrLineColorList","RadarSeries","radarIndex","normalizeSymbolSize","updateSymbols","oldPoints","newPoints","symbolGroup","__dimIdx","getInitialPoints","hoverAreaStyleModel","polygonIgnore","hoverPolygonIgnore","itemHoverStyle","isValidPoint","getValueMissingPoint","firstPoint","polarOptArr","polarNotRadar","polarOpt","polarIndex","mapSymbolLayout","mapDataStatistic","MapSeries","needsDrawMap","selectTargetList","toAppendNames","geoSource","seriesNames","otherIndex","originalData","showLegendSymbol","dataRangeHoverLink","scaleLimit","fixNanhai","fixTextCoord","fixGeoCoord","fixDiaoyuIsland","mapRecord","specialArea","regionRect","coordsOffsetMap","coordFix","geoCoordMap","_parseSVG","originRoot","buildGraphic","rootMap","originRootHostKey","svgWidth","svgHeight","mapModel","_mapDraw","_renderSymbols","originalDataIndex","fullData","mainSeries","fullIndex","highDownRecord","recordVersion","onEmphasis","onRegionHighDown","onNormal","enterRegionHighDown","toHighOrDown","__mapOriginalZ2","_nameCoordMap","_regionsMap","_invertLongitute","containCoord","getRegionByCoord","getGeoCoord","processedMapType","mapSymbolOffsets","subMapSeries","colorList","seriesGroups","hostGeoModel","seriesList","statisticType","mapKey","mapLocation","treeLayout","treeOption","treeDepth","expandTreeDepth","expandAndCollapse","initialTreeDepth","collapsed","realRoot","roam","_oldTree","_mainGroup","_updateViewCoordSys","curvature","updateNode","removeNode","_nodeScaleRatio","_updateNodeAndLinkScale","oldMin","_min","oldMax","_max","viewCoordSys","_viewCoordSys","_getNodeGlobalScale","getTreeNodeStyle","virtualRoot","sourceSymbolEl","sourceLayout","sourceOldLayout","rawX","__radialOldRawX","rawY","__radialOldRawY","targetLayout","__radialRawX","__radialRawY","isLeft","rootLayout","labelRotateRadian","__edge","getEdgeShape","radialCoor1","radialCoor2","radialCoor3","radialCoor4","_traversalHelper","eachAfter","eachBefore","_layoutHelper","kx","ky","coorX","coorY","finalCoor","commonLayout","treemapVisual","treemapLayout","_viewRoot","clipWindow","squareRatio","leafDepth","drillDownIcon","zoomToNodeRatio","nodeClick","emptyItemWidth","upperLabel","gapWidth","borderColorSaturation","visualDimension","visualMin","visualMax","colorMappingBy","visibleMin","childrenVisibleMin","completeTreeValue","childValue","thisValue","hasColorDefine","globalColorList","modelColor","setDefault","resetViewRoot","setLayoutInfo","mapIdToIndex","idIndexMap","_idIndexMap","_idIndexMapCount","getViewRoot","Breadcrumb","animationUtil","PATH_LABEL_NOAMAL","PATH_LABEL_EMPHASIS","PATH_UPPERLABEL_NORMAL","PATH_UPPERLABEL_EMPHASIS","getItemStyleEmphasis","getItemStyleNormal","_containerGroup","nodeGroup","background","_breadcrumb","_state","thisStorage","reRoot","rootNodeGroup","containerGroup","_giveContainerGroup","renderResult","_doRender","renderFinally","_doAnimation","_resetController","_renderBreadcrumb","thisTree","oldTree","lastsForAnimation","oldStorage","willInvisibleEls","doRenderNode","renderNode","dualTravel","thisViewChildren","oldViewChildren","sameTree","processNode","thisNode","willDeleteEls","storageName","delEls","__tmWillDelete","clearStorage","els","animationWrap","createWrap","__tmNodeWidth","__tmNodeHeight","targetX","targetY","fadein","_onPan","_onZoom","_clearController","rootRect","findTarget","isLeafRoot","_rootToNode","_zoomToNode","linkTarget","bgEl","thisLayout","thisWidth","thisHeight","thisInvisible","thisRawIndex","oldRawIndex","upperHeight","isParent","itemStyleNormalModel","itemStyleEmphasisModel","giveGraphic","isAboveViewRoot","bg","useUpperLabel","visualBorderColor","emphasisBorderColor","upperLabelWidth","prepareText","renderContent","__tmWillVisible","upperLabelRect","nodeModel","iconChar","normalLabelModel","isShow","lasts","prepareAnimationWhenHasOld","calculateZ","__tmDepth","__tmStorageName","lastCfg","parentOldX","parentOldY","parentOldBg","prepareAnimationWhenNoOld","zInLevel","zb","makeItemPoints","packEventData","itemNode","selfType","onSelect","normalStyleModel","layoutParam","totalWidth","renderList","_prepare","_renderContent","TEXT_PADDING","lastX","availableSize","doneCallback","elExistsMap","actionTypes","originViewRoot","seriesItemStyleModel","travelTree","designatedVisual","levelItemStyles","viewRootAncestors","nodeLayout","thisNodeColor","nodeItemStyleModel","levelItemStyle","visualName","buildVisuals","calculateColor","calculateBorderColor","rangeVisual","getRangeVisual","__drColorMappingBy","buildVisualMapping","childVisual","childVisuals","mappingType","getValueVisualDefine","retrieveValue","PATH_BORDER_WIDTH","PATH_GAP_WIDTH","PATH_UPPER_LABEL_SHOW","PATH_UPPER_LABEL_HEIGHT","viewAbovePath","rootSize","currNode","defaultSize","viewArea","currNodeValue","getUpperLabelHeight","estimateRootSize","viewRootLayout","squarify","hideChildren","halfGapWidth","upperLabelHeight","layoutOffset","layoutOffsetUpper","totalArea","initChildren","rowFixedLength","worst","treeRoot","defaultPosition","targetCenter","calculateRootPosition","prunning","clipRect","nodeInViewAbovePath","childClipRect","orderBy","overLeafDepth","statistic","orderedChildren","deletePoint","filterByThreshold","areaMax","areaMin","squareArea","idx0WhenH","idx1WhenH","rowOtherLength","rowLen","wh1","remain","modWH","wh0","categoryFilter","categoryVisual","edgeVisual","forceLayout","createView","createGraphFromNodeEdge","GraphSeries","getCategoriesData","_categoriesData","_updateCategoriesData","categoryModel","_categoriesModels","edgeLabelModel","fakeSeriesModel","emphasisEdgeLabelModel","emphasisFakeSeriesModel","edgeGetParent","getEdgeData","getEdgeByIndex","sourceName","targetName","categoriesData","focusNodeAdjacency","circular","rotateLabel","initLayout","repulsion","gravity","friction","edgeLength","layoutAnimation","edgeSymbol","edgeSymbolSize","edgeLabel","generateNodeKey","_directed","_nodesMap","_edgesMap","graphProto","inEdges","outEdges","hostGraph","Edge","n1","n2","isDirected","nodesMap","getNodeByIndex","edgesMap","getEdge","breadthFirstTraverse","startNode","__visited","queue","currentNode","otherNode","inDegree","outDegree","createGraphDataProxyMixin","hostName","getGraphicEl","adjustEdge","FOCUS_ADJACENCY","nodeOpacityPath","lineOpacityPath","getItemOpacity","opacityPath","fadeOutItem","opacityRatio","opct","fadeInItem","_lineDraw","_firstRender","graphView","groupNewProp","_layoutTimeout","_startForceLayoutIteration","warmUp","_layouting","setFixed","setUnfixed","_clearTimer","_dispatchUnfocus","edgeDataIndex","circularRotateLabel","_unfocusDelayTimer","adjacentEdge","unfocusNodeAdjacency","stopped","straightLineProto","bezierCurveProto","isLine","_buildPathLine","_buildPathCurve","_pointAtLine","_pointAtCurve","_tangentAtCurve","curveTool","v3","intersectCurveCircle","curvePoints","radiusSquare","nextDiff","tmp0","pts2","fromSymbol","toSymbol","__original","originalPoints","graphSeries","categoryNames","categoryNameIdxMap","itemStyleList","colorQuery","opacityQuery","_simpleLayoutHelper","preservedPoints","forceModel","nodeDataExtent","edgeDataExtent","rep","edgeModel","ignoreForceLayout","forceInstance","oldStep","pp","initialFriction","v12","nLen","repFact","coordSysType","bbWidth","bbHeight","PointerPath","formatLabel","posInfo","parsePosition","_renderMain","axisLineModel","angleRangeSpan","prevEndAngle","axisLineWidth","showAxis","getColor","_renderTicks","_renderPointer","_renderTitle","_renderDetail","minVal","maxVal","subSplitNumber","splitLineLen","tickLen","subStep","splitLineStyle","tickLine","valueExtent","angleExtent","pointerModel","titleModel","detailModel","funnelLayout","FunnelSeries","minSize","funnelAlign","FunnelPiece","funnelPieceProto","opacityAccessPath","funnelPiece","valueArr","isAscending","getSortedIndices","sizeExtent","getLinePoints","offY","parallelVisual","hasParallelSeries","createParallelIfNeeded","parallelAxis","axisOption","parallelIndex","parallelOption","mergeAxisOptionFromParallel","ParallelAxis","sliderMove","_axesLayout","_init","layoutAxisWithoutExpand","layoutLength","axisCount","layoutAxisWithExpand","axisExpandWidth","axisCollapseWidth","winInnerIndices","axisExpandWindow0Pos","_updateAxesFromSeries","_makeLayoutInfo","axisBase","layoutBase","pixelDimIndex","pAxis","pLayout","_layoutAxes","winSize","layoutExtent","axisExpandCount","axisExpandable","positionTable","rotationTable","axisCoordToPoint","eachActiveState","dataDimensions","hasActiveSet","hasAxisBrushed","activeState","getActiveState","axisLayout","getAxisLayout","pointCoord","triggerArea","useJump","axisExpandCenter","axisExpandRate","axisExpandDebounce","axisExpandSlideTriggerArea","axisExpandTriggerOn","_initDimensions","setAxisExpand","activeIntervals","getAreaSelectStyle","setActiveIntervals","intervals","areaSelectStyle","parallelAxisModel","elementList","_brushController","_onBrush","fromAxisAreaSelect","areaWidth","builderOpt","_refreshBrushController","extentLen","getCoverInfoList","coverInfoList","coverInfo","parallelAxisId","dataDimIndex","setEncodeAndDimensions","getRawIndicesByActiveState","theActiveState","inactiveOpacity","activeOpacity","createLinePoints","addEl","dataGroup","updateElCommon","_dataGroup","newDataIndex","oldDataIndex","rectEl","createGridClipShape","globalColors","opacityMap","itemOpacity","sankeyLayout","sankeyVisual","SankeySeries","nodeDepth","setNodePosition","localPosition","localX","localY","rawDataOpt","nodeWidth","nodeGap","layoutIterations","nodeAlign","SankeyShape","_focusAdjacencyDisabled","sankeyView","n1Layout","node1Model","dragX1","dragY1","n2Layout","node2Model","dragX2","dragY2","edgeLayout","dragX","dragY","focusNodeAdj","isNodeDepth","resolveCollisions","nodesByBreadth","keyAttr","nodeDyAttr","relaxRightToLeft","weightedTarget","getEdgeValue","nodeY","weightedSource","relaxLeftToRight","computeNodeValues","iterations","remainEdges","indegreeArr","zeroIndegrees","nextTargetNode","maxNodeDepth","isItemDepth","edgeIdx","indexEdge","nodeIndex","maxDepth","nextSourceNode","remainNodes","nodeHeight","skNodeHeight","moveSinksRight","adjustNodeWithNodeAlign","scaleNodeBreadths","computeNodeBreadths","groupResult","prepareNodesByBreadth","minKy","nodeDy","edgeDy","initializeNodeDepth","computeNodeDepths","computeEdgeDepths","layoutSankey","minValue","nodeValue","mapValueToColor","customColor","boxplotVisual","boxplotLayout","BoxplotSeries","boxWidth","NORMAL_ITEM_STYLE_PATH","EMPHASIS_ITEM_STYLE_PATH","BoxplotView","constDim","createNormalBox","updateNormalBoxData","BoxPath","transInit","normalItemStyleModel","initBaseline","borderColorQuery","defaulColor","axisList","groupSeriesByAxis","groupItem","boxWidthList","boxOffsetList","boundList","maxDataCount","boxWidthBound","boxGap","calculateBase","halfWidth","cDimIdx","vDimIdx","cDim","vDims","axisDimVal","median","getPoint","end1","end2","end4","end5","addBodyEnd","layEndLine","dimIdx","endCenter","layoutSingleSeries","candlestickVisual","candlestickLayout","CandlestickSeries","animationUpdate","getShadowDim","selectors","brushRect","SKIP_PROPS","CandlestickView","_incrementalRenderNormal","isSimpleBox","isNormalBoxClipped","setBoxCommon","NormalBoxPath","__simpleBox","LargeBoxPath","__sign","elP","elN","seriesItem","positiveBorderColorQuery","negativeBorderColorQuery","positiveColorQuery","negativeColorQuery","colorP","colorN","borderColorP","getBorderColor","borderColorN","candleWidth","calculateCandleWidth","openDim","closeDim","lowestDim","highestDim","openVal","closeVal","lowestVal","highestVal","getSign","ocLow","ocHigh","ocLowPoint","ocHighPoint","lowestPoint","highestPoint","subPixelOptimizePoint","makeBrushRect","pmin","pmax","effectType","showEffectOn","rippleEffect","EffectSymbol","effectSymbolDraw","_updateGroupTransform","updateRipplePath","rippleGroup","effectCfg","rippleEffectColor","ripplePath","effectSymbolProto","stopEffectAnimation","startEffectAnimation","effectOffset","rippleScale","updateEffectAnimation","oldEffectCfg","_effectCfg","DIFFICULT_PROPS","linesLayout","linesVisual","Uint32Arr","Float64Arr","compatEc2","coords","fromName","toName","LinesSeries","_processFlatCoordsArray","_flatCoords","flatCoords","_flatCoordsOffset","flatCoordsOffset","_getCoordsFromItemModel","startOffset","coordsOffsetAndLenStorage","coordsStorage","coordsCursor","offsetCursor","effect","trailLength","EffectPolyline","LargeLineDraw","_updateLineDraw","isSvg","_lastZlevel","_showEffect","hasEffect","_hasEffet","_isPolyline","_lastFrame","_lastFramePercent","effectPolylineProto","accLenArr","_offsets","_length","lineContain","quadraticContain","LargeLineShape","largeLineProto","lineEl","blurSize","pointSize","maxOpacity","minOpacity","HeatmapLayer","visualMapOfThisSeries","targetSeries","_incrementalDisplayable","_renderOnCartesianAndCalendar","isGeoCoordSys","_renderOnGeo","dataToRect","contentShape","inRangeVisuals","outOfRangeVisuals","hmLayer","_hmLayer","lng","lat","isInRange","dataSpan","getIsInContinuousRange","getIsInPiecewiseRange","getPieceList","Heatmap","_gradientPixels","colorFunc","_getBrush","gradientInRange","_getGradient","gradientOutOfRange","imageData","getImageData","pixels","pixelLen","diffOpacity","gradientOffset","putImageData","brushCanvas","_brushCanvas","gradientPixels","pixelsSingleState","Uint8ClampedArray","PictorialBarSeries","symbolPosition","symbolMargin","symbolRepeat","symbolRepeatDirection","symbolClip","symbolBoundingData","symbolPatternSize","LAYOUT_ATTRS","posDesc","pathForLineWidth","getSymbolMeta","symbolMeta","boundingLength","zeroPx","pxSignIdx","symbolBoundingExtent","convertToCoordOnAxis","coordSysExtent","repeatCutLength","pxSign","prepareBarLength","categoryDim","categorySize","symbolScale","prepareSymbolSize","valueLineWidth","prepareLineWidth","unitLength","pathLen","absBoundingLength","hasEndGap","uLenWithMargin","endFix","repeatSpecified","repeatTimes","toIntTimes","sizeFix","pathPosition","bundlePosition","barRectShape","prepareLayoutInfo","createPath","createOrUpdateRepeatSymbols","bundle","__pictorialBundle","eachPath","__pictorialAnimationIndex","__pictorialRepeatTimes","updateAttr","makeTarget","updateHoverAnimation","onMouseOut","createOrUpdateSingleSymbol","mainPath","__pictorialMainPath","createOrUpdateBarRect","barRect","__pictorialBarRect","createOrUpdateClip","__pictorialClipPath","createBar","__pictorialShapeStr","getShapeStr","__pictorialSymbolMeta","removeBar","pathes","immediateAttrs","animationAttrs","barRectHoverStyle","barPositionOutside","roundedTimes","coordSysRect","pictorialShapeStr","updateBar","themeRiverLayout","themeRiverVisual","Single","singles","SingleAxis","_axis","_adjustAxis","_updateAxisTransform","extentSum","singleAxisHelper","SingleAxisView","selfBuilderAttr","modelHelper","findPointFromSeries","processOnAxis","updaters","dontSnap","outputFinder","snapToValue","payloadBatch","seriesNestestValue","nestestValue","buildPayloadsBySeries","showPointer","showValueMap","dataByCoordSys","coordSysItem","coordSysId","coordSysIndex","coordSysMainType","dataByAxis","valueLabelOpt","makeMapperParam","illegalPoint","isIllegalPoint","inputAxesInfo","shouldHide","coordSysContainsPoint","inputAxisInfo","findInputAxisInfo","linkTriggers","tarAxisInfo","tarKey","srcAxisInfo","srcKey","srcValItem","outputAxesInfo","valItem","updateModelActually","dispatchTooltipActually","lastHighlights","newHighlights","toHighlight","toDownplay","dispatchHighDownActually","shadowStyle","icon","globalListener","AxisPointerView","XY","WH","SingleAxisPointer","getPointDimIndex","ThemeRiverSeries","fixData","rawDataLength","layData","items","dataList","layerNum","largestLayer","timeValue","keyIndex","getLayerSeries","lenCount","indexArr","timeDim","layerSeries","nearestIdx","pointNum","theValue","htmlName","htmlValue","keyGetter","_layersSeries","newLayersGroups","oldLayersGroups","points0","layerGroup","baseY0","layerPoints","singleLayer","sums","temp","computeBaseline","baseLine","layerIndex","sunburstLayout","highlightPolicy","renderLabelForZeroData","borderType","SunburstPiece","newRoot","newChildren","oldChildren","_oldChildren","newId","oldId","newNode","virtualPiece","_onclickEvent","renderRollUp","unhighlight","targetFound","NodeHighlightPolicy","SunburstPieceProto","_ecModel","getRootId","getNodeColor","fillDefaultColor","stateStyle","activeNode","policy","onHighlight","onDownplay","getLabelAttr","labelMinAngle","labelPadding","rotateType","stateAttr","isAsc","sortOrder","rootDepth","renderRollupNode","rPerLevel","rStart","rEnd","siblingAngle","prepareCartesian2d","prepareGeo","prepareSingleAxis","preparePolar","prepareCalendar","ITEM_STYLE_NORMAL_PATH","ITEM_STYLE_EMPHASIS_PATH","LABEL_NORMAL","LABEL_EMPHASIS","prepareCustoms","prepareStyleTransition","elOptionStyle","oldElStyle","makeRenderItem","customSeries","renderItem","prepareResult","currDataIndexInside","currItemModel","currLabelNormalModel","currLabelEmphasisModel","currVisualColor","userAPI","updateCache","applyExtraBefore","applyExtraAfter","styleEmphasis","barLayout","currentSeriesIndices","userParams","dataInsideLength","wrapEncodeDef","currDirty","doCreateOrUpdate","simplyRemove","elOptionType","elOptionShape","__customGraphicType","getPathData","__customPathData","hasOwn","__customImagePath","__customText","graphicType","pathRect","createEl","transitionProps","targetOpacity","updateEl","newLen","mergeChildren","$mergeChildren","diffChildrenByName","processAddUpdate","processRemove","childOption","dummyModel","stylePropName","useTransform","setIncrementalAndHoverLayer","elementName","dataToCoordSize","dataSize","halfSize","dataToRadius","dataToAngle","rangeInfo","getRangeInfo","cellWidth","getCellWidth","cellHeight","getCellHeight","weeks","dayCount","allDay","barPolar","calRadialBar","clampLayout","radiusSpan","angleSpan","RadiusAxis","AngleAxis","_radiusAxis","_angleAxis","pointToCoord","radiusToData","angleToData","maxAngle","foundAxisModel","PolarAxisModel","polarId","polarAxisDefaultExtendedOption","getAxisLineShape","rExtent","getRadiusIdx","fixAngleOverlap","firstItem","lastItem","ticksAngles","minorTickAngles","_axisLine","rId","r0Id","_axisTick","tickAngleItem","_minorTick","tickAngles","_axisLabel","commonLabelModel","labelTextAlign","labelTextVerticalAlign","prevAngle","axisAngle","layoutAxis","prevRadius","PolarAxisPointer","coordValue","getLabelPosition","makeAction","selectableMixin","GeoModel","_optionModelMap","optionModelMap","regionOpt","Calendar","calendarModel","_rangeInfo","_sw","_sh","_orient","getFirstDayOfWeek","_firstDayOfWeek","getDateInfo","formatedDate","getNextNDay","_lineWidth","_getRangeInfo","_initRangeOption","whNames","cellSize","layoutParams","cellNumbers","cellSizeSpecified","whGlobal","calendarRect","dayInfo","week","nthWeek","pointToDate","tl","tr","br","bl","nthX","nthY","_getDateByWeeksAndDay","rg","firstDay","reversed","startDateNum","endDateNum","fweek","lweek","nthDay","calendarList","calendarSeries","CalendarModel","dayLabel","monthLabel","yearLabel","mergeAndNormalizeLayoutParams","raw","MONTH_TEXT","CN","WEEK_TEXT","_tlpoints","_blpoints","_firstDayOfMonth","_firstDayPoints","rangeData","_renderDayRect","_renderLines","_renderYearText","_renderMonthText","_renderWeekText","itemRectStyleModel","sh","addPoints","_getLinePointsOfOneWeek","_drawSplitline","_getEdgesPoints","rs","poyline","tmpD","_formatterLabel","_yearTextPositionControl","aligns","xc","yc","posPoints","yearText","_monthTextPositionControl","isCenter","vAlign","termPoints","firstDayPoints","yyyy","yy","MM","monthText","_weekTextPositionControl","weekText","_nonShapeGraphicElements","graphicOption","GraphicModel","_elOptionsToUpdate","existList","flattenedList","_flatten","mappingResult","elOptionsToUpdate","newElOption","existElOption","newElParentOption","parentOption","setKeyInfoToNewElOption","newElOptCopy","$action","mergeNewElOptionToExist","existItem","isSetLoc","setLayoutInfoToExist","optionList","useElOptionsToUpdate","targetElParent","__ecGraphicId","removeEl","existEl","existElParent","isSet","_elMap","_lastGraphicModel","graphicModel","_updateElements","_relocate","rootGroup","elOptionCleaned","getCleanedElOption","__ecGraphicWidthOption","__ecGraphicHeightOption","setEventData","elOptions","apiWidth","apiHeight","isParentRoot","__ecGraphicWidth","__ecGraphicHeight","containerInfo","bounding","featureManager","ToolboxModel","featureName","Feature","showTitle","listComponentHelper","toolboxModel","featureOpts","_features","featureNames","_featureNames","processFeature","titleText","__title","needPutOnTop","topOffset","oldName","featureModel","newTitle","isUserFeatureName","unusable","iconStyleModel","iconStyleEmphasisModel","icons","getIcons","titles","iconPaths","iconName","defaultTextPosition","createIconPaths","setIconStatus","iconStatus","saveAsImageLang","SaveAsImage","msSaveOrOpenBlob","bstr","atob","u8arr","write","$a","download","bubbles","cancelable","magicTypeLang","MagicType","availableIcons","seriesOptGenreator","isStack","radioTypes","radio","newSeriesOpt","currentType","dataViewLang","BLOCK_SPLITER","assembleOtherSeries","itemSplitRegex","parseContents","blockMetaList","blocks","isTSVFormat","tsv","tsvLines","headers","header","parseTSVContents","blockMeta","hasName","parseListContents","tryMergeDataOption","optionToContent","contentToOption","textareaColor","textareaBorderColor","buttonColor","buttonTextColor","viewMain","tables","seriesGroupByCategoryAxis","otherSeries","groupSeries","getContentFromModel","htmlOrDom","buttonContainer","buttonStyle","closeButton","refreshButton","newSeriesOptList","history","dataZoomLang","DataZoom","_isZoomActive","zoomActive","dataZoomSelectActive","brushTargetManager","retrieveAxisSetting","updateZoomBtnStatus","updateBackBtnStatus","nextActive","_dispatchZoomAction","setBatch","dzModel","findDataZoom","minMaxSpan","getMinMaxSpan","dataZoomOpts","dataZoomOpt","addForAxis","axisIndicesName","givenAxisIndices","forEachComponent","$fromToolbox","_dimName","_axisIndex","_valueWindow","_percentWindow","_minMaxSpan","_dataZoomModel","setAxisModel","isRestore","percentWindow","valueWindow","useOrigin","getOtherAxisModel","coordSysIndexName","foundOtherAxisModel","otherAxisModel","calculateDataWindow","hasPropModeValue","percentExtent","boundPercent","boundValue","spans","restrictSet","fromWindow","toWindow","fromExtent","toExtent","seriesExtent","fixExtentByAxis","calculateDataExtent","percentSpan","valueSpan","setMinMaxSpan","dataWindow","leftOut","rightOut","thisHasValue","thisLeftOut","thisRightOut","isInWindow","restoreLang","Restore","showContent","alwaysShowContent","displayMode","confine","showDelay","hideDelay","transitionDuration","enterable","TooltipContent","TooltipRichContent","axisPointerViewHelper","proxyRect","tooltipContent","_renderMode","_newLine","_tooltipContent","_tooltipModel","_lastDataByCoordSys","_alwaysShowContent","setEnterable","_initGlobalListener","_keepShow","_tryShow","_hide","_refreshUpdateTimeout","manuallyShowTip","_ticket","_manuallyAxisShowTip","pointInfo","manuallyHideTip","hideLater","buildTooltipModel","_showAxisTooltip","_showSeriesItemTooltip","_showComponentItemTooltip","_showOrMove","_showTimout","singleDefaultHTML","singleParamsList","singleTooltipModel","itemCoordSys","axisValue","seriesDefaultHTML","valueLabel","axisValueLabel","seriesTooltip","firstLine","positionExpr","_updateContentNotChangedOnAxis","_updatePosition","_showTooltipContent","tooltipTrigger","defaultHtml","asyncTicket","subTooltipModel","cbTicket","setContent","contentSize","domWidth","domHeight","rectWidth","rectHeight","calcTooltipPosition","gapH","gapV","getOuterSize","refixTooltipPosition","isCenterAlign","confineTooltipPosition","lastCoordSys","contentNotChanged","lastItemCoordSys","indexCoordSys","lastDataByAxis","thisDataByAxis","indexAxis","lastIndices","lastIdxItem","newIdxItem","modelCascade","resultModel","vendors","assembleCssText","transitionText","vendorPrefix","borderName","camelCase","assembleFont","_container","_show","_hideTimeout","onmouseenter","_enterable","_inContent","onmouseleave","_hideDelay","pointerEvents","viewportRootOffset","borderRightWidth","borderBottomWidth","markerRich","startId","endId","DEFAULT_TOOLBOX_BTNS","brushComponents","brushComponentSpecifiedBtns","brushOpt","tbs","toolboxFeature","toolboxBrush","brushTypes","STATE_LIST","PRIORITY_BRUSH","doDispatch","brushSelected","checkInRange","selectorsByBrushType","rangeInfoList","getSelectorsByBrushType","sels","selectorsByElementType","bSelector","brushModel","setBrushOption","throttleDelay","brushIndex","thisBrushSelected","brushId","brushName","brushLink","linkedSeriesMap","selectedDataIndexForLink","rangeInfoBySeries","hasBrushExists","selFn","elType","bindSelector","boundingRectBuilders","linkOthers","brushed","stepAParallel","brushModelNotControll","stepAOthers","seriesBrushSelected","getBoundingRectFromMinMax","getLineSelectors","inLineRange","layoutRange","DEFAULT_OUT_OF_BRUSH_COLOR","generateBrushOption","coordInfoList","inBrush","outOfBrush","setAreas","updateController","modelId","$from","brushLang","Brush","_brushMode","isBrushed","subtext","subtarget","subtextStyle","subtextStyleModel","subText","subTextEl","sublink","groupRect","layoutOption","alignStyle","transferItem","itemStyleEmphasis","labelNormal","excludeLabelAttr","ec2Types","controlPosition","compatibleEC2","setCurrentIndex","isIndexMax","setPlayState","playState","TimelineModel","SliderTimelineModel","checkpointStyle","showPlayBtn","showPrevBtn","showNextBtn","playIcon","stopIcon","nextIcon","prevIcon","autoPlay","rewind","playInterval","_names","_initData","getPlayState","dataArr","idxArr","TimelineView","TimelineAxis","_timer","_currentPointer","_labelGroup","mainGroup","_createGroup","labelGroup","_createAxis","_renderAxisLabel","_position","_doPlayStop","labelPosOpt","playPosition","prevBtnPosition","nextBtnPosition","labelAlignMap","labelBaselineMap","rotationMap","mainLength","controlModel","showControl","controlSize","controlGap","sizePlusGap","labelAlign","labelBaseline","rotateOriginX","rotateOriginY","viewBound","getBound","mainBound","labelBound","mainPosition","labelsPosition","mainBoundIdx","toBound","setOrigin","targetGroup","boundIdx","newGroup","_renderAxisLine","_renderAxisTick","hoverStyleModel","symbolOpt","_changeTimeline","giveSymbol","_renderControl","makeBtn","iconPath","willRotate","btn","objPath","makeIcon","_handlePlayClick","_renderCurrentPointer","me","onCreate","_handlePointerDrag","_handlePointerDragend","pointerMoveTo","_pointerChangeTimeline","mousePos","toCoord","_toAxisCoord","targetDataIndex","_findNearestTick","axisCoord","nextIndex","noAnimation","markerHelper","updateMarkerLayout","xPx","yPx","markPointModel","mpModel","symbolDrawMap","coordDimsInfos","dataOpt","isFnSymbol","isFnSymbolSize","MarkerView","markLineTransform","mlModel","mlFrom","mlTo","isInifinity","ifMarkLineHasOnlyDim","fromCoord","otherDimIndex","markLineFilter","updateSingleMarkerEndLayout","isFrom","markLineModel","fromData","toData","__to","lineDrawMap","optData","updateDataVisualAndLayout","lineColor","colorUtil","markAreaTransform","maModel","ltCoord","rbCoord","markAreaFilter","getSingleMarkerEndPoint","dimPermutations","markAreaModel","areaData","areaGroupMap","polygonGroup","__data","legendSelectActionHandler","selectedMap","isToggleSelect","isItemSelected","ScrollableLegendModel","setScrollDataIndex","scrollDataIndex","pageButtonItemGap","pageButtonGap","pageButtonPosition","pageFormatter","pageIcons","pageIconColor","pageIconInactiveColor","pageIconSize","pageTextStyle","LegendView","ScrollableLegendView","_currentIndex","_controllerGroup","_showController","__rectSize","controllerGroup","createPageButton","pageTextStyleModel","iconIdx","pageDataIndexName","_pageGo","processMaxSize","_layoutContentAndController","controllerRect","showController","containerPos","controllerPos","pageInfo","_getPageInfo","pageIndex","contentPosition","_updatePageInfoView","legendId","canJump","pageText","pageCount","containerRectSize","targetItemIndex","_findTargetItemIndex","targetItem","itemCount","pCount","pagePrevDataIndex","pageNextDataIndex","targetItemInfo","getItemInfo","winStartItemInfo","winEndItemInfo","currItemInfo","itemRect","itemInfo","winStart","defaultIndex","legendDataIdx","dataBackground","fillerColor","handleIcon","handleStyle","labelPrecision","showDetail","showDataShadow","zoomLock","DataZoomView","SHOW_DATA_SHADOW_SERIES_TYPE","SliderZoomView","_range","_handleEnds","_size","_handleWidth","_handleHeight","_location","_dataShadowInfo","_buildView","_updateView","_resetLocation","_resetInterval","barGroup","_renderBackground","_renderDataShadow","_positionGroup","coordRect","_findCoordRect","targetAxisModel","otherAxisInverse","_getViewExtent","_onClickPanelClick","_prepareDataShadowInfo","otherDataExtent","otherOffset","lastIsEmpty","otherShadowExtent","thisShadowExtent","areaPoints","thisCoord","stride","otherCoord","thisAxis","thisDim","displaybles","handles","handleLabels","filler","_onDragMove","ondragstart","_showDataInfo","_onDragEnd","onmouseover","onmouseout","bRect","handleColor","viewExtent","_updateInterval","viewExtend","nonRealtime","handleInterval","handleHeight","_updateDataInfo","labelTexts","dataInterval","_formatLabel","orderedHandleEnds","barTransform","textPoint","valueStr","showOrHide","changed","localPoint","roams","InsideZoomView","allCoordIds","coordInfo","generateCoordId","roamHandlers","coordId","directionInfo","getDirectionInfo","percentPoint","signal","pixelStart","pixelLength","pixel","pan","makeMover","scrollMove","getPercentDelta","percentDelta","oldPoint","newPoint","cleanStore","dataZoomInfo","theDataZoomId","theCoordId","dataZoomInfos","newRecord","createController","typePriority","controllerParams","oneType","VisualMapModel","DEFAULT_BAR_BOUND","ContinuousModel","hoverLink","hoverLinkDataSize","hoverLinkOnHandle","_resetRange","auto","getSelected","findTargetDataIndices","oVals","getColorStopValues","iVals","setStop","iIdx","oIdx","iLen","oLen","stopsLen","stopValues","VisualMapView","ContinuousView","_shapes","_dataInterval","_useHandle","_hoverLinkDataIndices","_hovering","_renderBar","dataRangeText","_renderEndsText","_enableHoverLinkToSeries","_enableHoverLinkFromSeries","endsIndex","_applyTransform","shapes","_createBarGroup","createPolygon","_dragHandle","textSize","handleThumbs","handleLabelPoints","_createHandle","_createIndicator","onDrift","handleThumb","createHandlePoints","handleLabel","handleLabelPoint","indicatorLabel","indicatorLabelPoint","HOVER_LINK_OUT","visualMapId","_clearHoverLinkToSeries","useHoverLinkOnHandle","_doHoverLinkToSeries","forSketch","outOfRangeHandleEnds","inRangeHandleEnds","visualInRange","_createBarVisual","visualOutOfRange","barColor","barPoints","_updateHandle","_makeColorGradient","symbolSizes","_createBarPoints","handlesColor","currValue","_showIndicator","cursorValue","rangeSymbol","halfHoverLinkSize","isRange","extentMax","createIndicatorPoints","_hoverLinkFromSeriesMouseOver","_hideIndicator","_clearHoverLinkFromSeries","hoverOnBar","HOVER_LINK_SIZE","getHalfHoverLinkSize","hoverRange","oldBatch","newBatch","resultBatches","_dispatchHighDown","PiecewiseModel","minOpen","maxOpen","itemSymbol","_pieceList","_mode","_determineMode","resetMethods","_resetSelected","visualTypesInPieces","getSelectedMapKey","hasSel","getRepresentValue","representValue","pieceInterval","splitStep","normalizeReverse","pieceListItem","closeList","infinityList","useMinMax","_getItemAlign","viewData","_getViewData","endsText","viewPieceList","_onItemClick","_enableHoverLink","indexInModelPieceList","_createItemSymbol","visualState","onHoverLink","shapeParam","newKey","vmlCore","Z2","initRootElStyle","coordsize","coordorigin","rgb2Str","getZIndex","setColorAndOpacity","updateFillAndStroke","vmlEl","zrEl","isFill","gradientType","expansion","cs1","cs2","colorAndAlphaList","colorAndAlpha","color1","color2","opacity1","opacity2","focusposition","updateFillNode","dashstyle","updateStrokeNode","brushVML","vmlRoot","_vmlEl","needTransform","strokeEl","weight","removeRectText","onRemove","onAdd","appendRectText","ow","oh","_imageSrc","_imageWidth","_imageHeight","imageRuntimeStyle","runtimeStyle","oldRuntimeWidth","oldRuntimeHeight","hasCrop","vmlElStyle","hasRotation","transformFilter","imageTransformPrefix","imageEl","_imageEl","cropEl","_cropEl","imageELStyle","tmpImage","cropElStyle","filterStr","textMeasureEl","fontStyleCache","fontStyleCacheCount","fontEl","fromTextEl","fontString","variant","fontVariant","family","getFontStyle","textPathEl","skewEl","textVmlEl","_textVmlEl","textpathok","textVmlElStyle","VMLPainter","vmlViewport","_vmlRoot","_vmlViewport","_firstPaint","__alreadyNotVisible","_getWidth","_getHeight","vmlViewportStyle","paddingTop","paddingBottom","arrayDiff","GradientManager","ClippathManager","ShadowManager","checkParentAvailable","insertAfter","prevSibling","SVGPainter","gradientManager","clipPathManager","shadowManager","viewport","_viewport","_visibleList","visibleList","listLen","newVisibleList","svgProxy","svgElement","prevSvgElement","textSvgElement","addWithoutUpdate","_getDefs","viewportStyle","outerHTML","buildValues","componentPos","componentLen","oldPos","oldLen","editLength","maxEditLength","bestPath","extractCommon","execEditLength","diagonalPath","addPath","removePath","canAdd","canRemove","pushComponent","commonCount","tokenize","updateDom","hex","clipPathEl","_textDom","hasShadow","_shadowDom","_shadowDomId","domChild","stdDeviation","locals","useSourceMap","cssMapping","btoa","sourceMapping","sourceMap","unescape","encodeURIComponent","sourceURLs","sources","sourceRoot","cssWithMappingToString","mediaQuery","alreadyImportedModules","stylesInDom","getTarget","styleTarget","HTMLIFrameElement","contentDocument","singleton","singletonCounter","stylesInsertedAtTop","fixUrls","addStylesToDom","refs","addStyle","listToStyles","newStyles","part","css","insertStyleElement","insertInto","lastStyleElementInsertedAtTop","insertAt","removeStyleElement","createStyleElement","nonce","getNonce","addAttrs","styleIndex","applyToSingletonTag","revokeObjectURL","createLinkElement","updateLink","applyToTag","DEBUG","mayRemove","textStore","replaceText","styleSheet","cssNode","autoFixUrls","convertToAbsoluteUrls","oldSrc","baseUrl","protocol","currentDir","pathname","fullMatch","origUrl","newUrl","unquotedOrigUrl","$1","AccordionContext","createContext","Accordion","cssClasses","usearrowastrigger","expandToContent","Provider","AccordionItemContext","Icon","rest","getCssClasses","ItemTrigger","useContext","toggleChange","iconType","AccordionItem","useState","collapsedState","setCollapsedState","AccordionItemHeader","accordionItemContext","usePrevious","useRef","useEffect","useTimeout","savedCallback","useInterval","useEventListener","savedHandler","eventListener","useComponentSize","ComponentSize","setComponentSize","handleResize","useCallback","useLayoutEffect","resizeObserver","Collapsible","contentContainer","collapseWrapper","contentContainerStyle","setContentContainerStyle","refContainerSize","onWindowResize","AccordionItemContent","Item","Header","Content","Button","React","forwardRef","customButton","iconPosition","iconOnly","noStyle","sizeClass","disabledClass","displayClass","themeClass","iconOnlyClass","noStyleClass","getButtonIcon","ButtonGroup","PureComponent","Checkbox","displayError","getValueFromPath","form","executeDebounced","myValue","setMyValue","getOnChangeProps","valueOrEvent","onChangeProps","formError","touched","submitCount","errors","isfield","CodeEditor","handleOnChange","handleOnBlur","labelwidth","themes","iTheme","flexBasis","note","htmlFor","getLabelStyles","getNonLabelWidth","getCodeEditorError","FieldCodeEditor","validationmessages","warning","fromJS","getInputError","later","callNow","Loader","withbackground","getLoaderComponent","Message","noMargin","areaStyleColors","dataLoaded","hasData","zoomStart","zoomEnd","seriesConfig","noDataComponent","zoomColors","tykChartInstance","setTykChartInstance","chartWrapperRef","lineBarChart","defaultOpts","seriesDefault","pieChart","geoChart","eventCallBack","debouncedMethod","prevOption","prevType","prevSeries","selectedType","selectedOptions","selectedSeries","finalOpts","mergeDeep","toJS","buildChartOptions","prevZoomStart","prevZoomEnd","chartHasData","Column","colSize","colOffsets","cSize","cOffset","ToastMessage","handleClose","itemIndex","ToastContainer","messages","setMessages","notify","updateNotifications","tempMessages","onMessageClosed","toast","createNotification","ReactDOM","bindNotify","CopyToClipboard","txtRef","createRef","handleClick","clipboard","writeText","onKeyUp","getStateSelectedValues","Combobox","opened","stateSelectedValues","searchText","comboboxRef","valuesListRef","inputRef","textRef","focusInput","openList","handleClickOutside","handleItemsNavigation","handleComboboxDropdownClick","handleListItemClick","handlePillRemoveClick","manageSelectedTags","itemValue","inputValue","setInputWidth","unBindEvents","allowCustomValues","filteredValues","filterValues","tempState","getSearchText","previousState","elHeight","elWidth","tempValue","getSelectedIndex","selectedValues","isInInitialValues","removeSelectedValue","addSelectedValue","tempSelectedValues","tempStateSelectedValues","ok","searchItem","filterByName","cursorNext","CustomListComponent","onKeyPress","visbility","getComboboxDisplayData","getComboboxListCssClass","getListItemCssClasses","createPortal","getStyles","autoFocus","FieldCombobox","getComboboxError","InfiniteScroller","showLoader","setShowLoader","containerRef","hasMore","initialLoad","loadMore","pageNumber","refChild","refChildSize","shouldLoad","loadMoreData","prevPageNumber","scrollHandler","prevRefChildSize","FloatingContainer","forceDisplay","displayAxis","passedRef","infiniteScrollerConfig","localRef","floatingContainerRef","contentWrapperRef","adjustPosition","topSpace","bottomSpace","leftSpace","determineDisplay","targetPosition","topPos","schedulePositionUpdate","Pill","Value","tagSeparators","addTagOnBlur","renderValue","valueOverflow","sendMessage","dummyElementRef","setInputValue","INPUT_MIN_WIDTH","inputWidth","entryFieldOnChange","dummy","triggerAction","isPlaceholder","role","renderCustomValue","renderTag","entryFieldOnKeyDown","isNoneSelected","searchValue","activeItem","renderListItem","showSearch","listRef","normalizeValue","existingVal","getValueFromProp","propValue","propValues","maxProp","matchItemFn","renderListProp","floatingContainerConfig","expandMode","displayDropdownTrigger","rootRef","comboboxControlRef","dropdownRef","setValues","setSearchValue","setActiveItem","isOpened","setIsOpened","valuesExpanded","setValuesExpanded","getThemeClasses","getFilteredValues","openDropdown","closeDropdown","updateSearchValue","newSearchValue","fv","addTag","listValueIndex","findIndex","lv","selectValue","moveUpActiveItem","visibleItems","activeIndex","moveDownActiveItem","executeTriggerAction","handleDocumentClick","onTagMessage","startsWith","newValues","sv","nv","valuesElement","updateScroll","mobserver","robserver","currentValuesClasses","onClickCapture","triggerElement","ModalContext","Modal","closeModal","getModalSize","getBackdropCssClasses","ModalFooter","ModalBody","ModalHeader","Consumer","modalContext","ModalTitle","Body","Footer","Title","Confirm","description","confirmBtnText","cancelBtnText","setOpen","setCallback","cancelCallback","setCancelCallback","callbackFunc","cancelCallbackFunc","beforeCallback","DatePicker","pickerInstance","setPickerInstance","dateRef","hasValueChanged","prevDate","currentDate","onDateChange","dateValue","finalValue","inputStyle","addonStyle","openCalendar","data-input","FormDatePicker","DropdownContext","Dropdown","selectedItem","dropdownListRef","dropdownButtonRef","onSelectItem","dropdownWidth","dropdownHeight","itemProps","selectedItemProps","dropdownEl","offsetPosition","customTop","customLeft","isElemInBottomView","isElemInRightView","btnGroup","btnGroupSize","btnTheme","hasCustomContent","listclassnames","btnTitle","stopButtonTextChange","btnClassName","btnSize","customBtnTitle","showDropdownIcon","showTriggerButton","showCheckmark","DropdownWrapperTag","getWrapperCssClasses","getBtnTitle","DropdownItem","dropdownItemCLick","dropdownContext","eventKey","customdropdownitem","FieldDropdown","requiredArgs","toDate","argument","argStr","isValid","dirtyDate","formatDistanceLocale","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","dirtyOptions","defaultWidth","formatLong","full","long","medium","short","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","argumentCallback","buildMatchFn","dirtyString","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","formatDistance","addSuffix","comparison","formatRelative","_date","_baseDate","_options","ordinalNumber","dirtyNumber","_dirtyOptions","rem100","era","narrow","abbreviated","wide","quarter","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","parsePattern","parseResult","weekStartsOn","firstWeekContainsDate","addMilliseconds","dirtyAmount","subMilliseconds","addLeadingZeros","targetLength","signedYear","getUTCFullYear","getUTCMonth","getUTCDate","dayPeriodEnumValue","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","startOfUTCISOWeek","getUTCDay","setUTCDate","setUTCHours","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","RangeError","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","dayPeriodEnum","formatTimezoneShort","dirtyDelimiter","absOffset","delimiter","formatTimezoneWithOptionalMinutes","formatTimezone","lightFormatters","signedWeekYear","weekYear","getUTCWeek","I","isoWeek","getUTCISOWeek","dayOfYear","setUTCMonth","startOfYearTimestamp","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","X","_localize","_originalDate","O","originalDate","dateLongFormatter","timeLongFormatter","dateTimeFormat","datePattern","timePattern","getTimezoneOffsetInMilliseconds","baseTimezoneOffset","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","cleanEscapedString","Row","nogutters","EditableListForm","submitButtonRef","submitForm","mainError","mainFormValue","getMainFormValue","addValueOnFieldChange","getMainFormButtonWidth","createRefs","noLabels","displayType","errorPersist","validatorsNames","validate","validator","validateValue","onSubmit","validationmessage","resetForm","showMainError","buttonName","getFormCssClasses","ComponentName","getComponentsError","getButtonClassName","hasMainFormErrors","propsComponents","stateComponents","EditableList","buttonWidth","handleFormSubmit","dropdownListItemRef","isDate","dirtyFormatStr","formatStr","utcDate","formatterOptions","firstCharacter","longFormatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","itemData","getItemListValue","getFormInputKey","closeListItems","editMode","removedItem","triggerOnChange","addValues","tempItemValue","clonedComponents","getListItemCssClass","handleItemUpdate","isInList","removeListItem","getListItemText","setItemEditMode","handleChildrenOnChange","getListItemsCssClass","genListItem","appendToElement","formButtonTitle","formButtonStyle","genList","FieldEditableList","getEditableListError","FileInput","clearValue","fileInputRef","accept","files","getFileInputComponent","getFileInputError","FieldFileInput","FixedWrapper","showShadow","fixedWrapperRef","attachShadow","scrollY","Utils","InfoNote","Input","initValue","stateValue","inputgroupaddonleft","inputgroupaddonright","getAddon","getInputComponent","autoComplete","getInputGroupAddon","FieldInput","styleCopy","ListItem","MultiselectContext","MultiselectItem","fieldsToSearchOn","itemType","isInSearchValue","itemDisplayTemplate","maxSelections","nrSelectedItems","onGetItemDetails","parentContext","details","detailsDisplayTemplate","getItemContent","getItemLoader","MultiselectPanel","searchOnChange","itemChanged","itemsListRef","itemsPageNumber","itemsNrPages","loadMoreItems","serverLoad","renderListItems","onCustomSearch","cloneItems","clonedItem","customSearch","panelType","getItemIndex","inputPlaceholder","noItemsMessage","getItemsList","diffObjects","Multiselect","valueChange","itemsChange","getItemDetails","allItems","valueClone","entityNamePlural","getMultiselectError","FieldMultiselect","NavBar","pre","subtitle","withTabs","Navigation","NavigationItem","getPagesArr","nrOfPages","selectedPage","currentNr","pageNr","totalNrOfPages","pagesArr","Pagination","pagesArray","pageKey","goToPage","getPageKey","getPageCssClass","FieldPagination","PortalContext","Panel","collapsable","onToggleCollapse","collapsibleIconPosition","panelTheme","collapsbleIconPosition","handleToggle","onToggle","toggleCollapse","PanelBody","noPadding","portalContext","PanelFooter","PanelHeader","HeaderTag","Radio","nospace","Select","selectedValue","getSelectComponent","getSelectError","FieldSelect","handleEvent","SelectableList","checkboxalticon","itemTemplate","primaryKey","handleOnSelect","newSelectedItems","elemPosition","tvalue","FieldSelectableList","TabsContext","Tabs","onTabChange","hideTabContent","tabs","setTabs","selectedPath","setSelectedPath","rendered","setRendered","initialPath","setInitialPath","setCurrentSelectedPath","tabData","tempPath","tempRendered","collapsible","prevTabs","tempTabs","tabsState","tempTabsState","toggleTab","getTabCssClass","tabId","hideTab","showTab","genTabs","currentTabs","addTab","tempTabData","updateTabsList","updateTab","tabExists","TabContent","tabsId","prevTabData","useMemo","TabContext","Tab","tabsContext","tabContext","setPath","Textarea","getTextareaError","setActive","domNode","tooltipOffsetTop","internalStyle","sourceRef","tooltipRef","onMouseEnter","onMouseLeave","ReactDom","offsetParent","getOffsetTop","scrollX","overflowWrap","TextEllipsis","tableContext","HeaderCell","sortable","setSortOrder","setSelectAll","selectable","generateSelectable","allowSelectAll","Cell","styling","events","SelectableCheckbox","defaultChecked","Table","noDataMessage","loading","infiniteScrolling","onChangeMsg","setOnChangeMsg","selectAllRows","selectedRow","selectRow","pagination","setPagination","getTable","totalPages","num","nrItemsOnPage","perPage","ToggleContext","Toggle","selectedRef","notchRef","toggleRef","onDark","separated","selectedWidth","toggleOffset","onItemSelected","saveSelectedRef","positionNotch","ToggleItem","itemRef","getNotchCssClasses","ToggleItemWrapper","FieldToggle"],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 571);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","module.exports = require(\"react\");","/**\n * @module zrender/core/util\n */\n// 用于处理merge时无法遍历Date等对象的问题\nvar BUILTIN_OBJECT = {\n '[object Function]': 1,\n '[object RegExp]': 1,\n '[object Date]': 1,\n '[object Error]': 1,\n '[object CanvasGradient]': 1,\n '[object CanvasPattern]': 1,\n // For node-canvas\n '[object Image]': 1,\n '[object Canvas]': 1\n};\nvar TYPED_ARRAY = {\n '[object Int8Array]': 1,\n '[object Uint8Array]': 1,\n '[object Uint8ClampedArray]': 1,\n '[object Int16Array]': 1,\n '[object Uint16Array]': 1,\n '[object Int32Array]': 1,\n '[object Uint32Array]': 1,\n '[object Float32Array]': 1,\n '[object Float64Array]': 1\n};\nvar objToString = Object.prototype.toString;\nvar arrayProto = Array.prototype;\nvar nativeForEach = arrayProto.forEach;\nvar nativeFilter = arrayProto.filter;\nvar nativeSlice = arrayProto.slice;\nvar nativeMap = arrayProto.map;\nvar nativeReduce = arrayProto.reduce; // Avoid assign to an exported variable, for transforming to cjs.\n\nvar methods = {};\n\nfunction $override(name, fn) {\n // Clear ctx instance for different environment\n if (name === 'createCanvas') {\n _ctx = null;\n }\n\n methods[name] = fn;\n}\n/**\n * Those data types can be cloned:\n * Plain object, Array, TypedArray, number, string, null, undefined.\n * Those data types will be assgined using the orginal data:\n * BUILTIN_OBJECT\n * Instance of user defined class will be cloned to a plain object, without\n * properties in prototype.\n * Other data types is not supported (not sure what will happen).\n *\n * Caution: do not support clone Date, for performance consideration.\n * (There might be a large number of date in `series.data`).\n * So date should not be modified in and out of echarts.\n *\n * @param {*} source\n * @return {*} new\n */\n\n\nfunction clone(source) {\n if (source == null || typeof source !== 'object') {\n return source;\n }\n\n var result = source;\n var typeStr = objToString.call(source);\n\n if (typeStr === '[object Array]') {\n if (!isPrimitive(source)) {\n result = [];\n\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n } else if (TYPED_ARRAY[typeStr]) {\n if (!isPrimitive(source)) {\n var Ctor = source.constructor;\n\n if (source.constructor.from) {\n result = Ctor.from(source);\n } else {\n result = new Ctor(source.length);\n\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n }\n } else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\n result = {};\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n result[key] = clone(source[key]);\n }\n }\n }\n\n return result;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overwrite=false]\n */\n\n\nfunction merge(target, source, overwrite) {\n // We should escapse that source is string\n // and enter for ... in ...\n if (!isObject(source) || !isObject(target)) {\n return overwrite ? clone(source) : target;\n }\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n var targetProp = target[key];\n var sourceProp = source[key];\n\n if (isObject(sourceProp) && isObject(targetProp) && !isArray(sourceProp) && !isArray(targetProp) && !isDom(sourceProp) && !isDom(targetProp) && !isBuiltInObject(sourceProp) && !isBuiltInObject(targetProp) && !isPrimitive(sourceProp) && !isPrimitive(targetProp)) {\n // 如果需要递归覆盖,就递归调用merge\n merge(targetProp, sourceProp, overwrite);\n } else if (overwrite || !(key in target)) {\n // 否则只处理overwrite为true,或者在目标对象中没有此属性的情况\n // NOTE,在 target[key] 不存在的时候也是直接覆盖\n target[key] = clone(source[key], true);\n }\n }\n }\n\n return target;\n}\n/**\n * @param {Array} targetAndSources The first item is target, and the rests are source.\n * @param {boolean} [overwrite=false]\n * @return {*} target\n */\n\n\nfunction mergeAll(targetAndSources, overwrite) {\n var result = targetAndSources[0];\n\n for (var i = 1, len = targetAndSources.length; i < len; i++) {\n result = merge(result, targetAndSources[i], overwrite);\n }\n\n return result;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @memberOf module:zrender/core/util\n */\n\n\nfunction extend(target, source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n\n return target;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overlay=false]\n * @memberOf module:zrender/core/util\n */\n\n\nfunction defaults(target, source, overlay) {\n for (var key in source) {\n if (source.hasOwnProperty(key) && (overlay ? source[key] != null : target[key] == null)) {\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nvar createCanvas = function () {\n return methods.createCanvas();\n};\n\nmethods.createCanvas = function () {\n return document.createElement('canvas');\n}; // FIXME\n\n\nvar _ctx;\n\nfunction getContext() {\n if (!_ctx) {\n // Use util.createCanvas instead of createCanvas\n // because createCanvas may be overwritten in different environment\n _ctx = createCanvas().getContext('2d');\n }\n\n return _ctx;\n}\n/**\n * 查询数组中元素的index\n * @memberOf module:zrender/core/util\n */\n\n\nfunction indexOf(array, value) {\n if (array) {\n if (array.indexOf) {\n return array.indexOf(value);\n }\n\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n }\n\n return -1;\n}\n/**\n * 构造类继承关系\n *\n * @memberOf module:zrender/core/util\n * @param {Function} clazz 源类\n * @param {Function} baseClazz 基类\n */\n\n\nfunction inherits(clazz, baseClazz) {\n var clazzPrototype = clazz.prototype;\n\n function F() {}\n\n F.prototype = baseClazz.prototype;\n clazz.prototype = new F();\n\n for (var prop in clazzPrototype) {\n if (clazzPrototype.hasOwnProperty(prop)) {\n clazz.prototype[prop] = clazzPrototype[prop];\n }\n }\n\n clazz.prototype.constructor = clazz;\n clazz.superClass = baseClazz;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Object|Function} target\n * @param {Object|Function} sorce\n * @param {boolean} overlay\n */\n\n\nfunction mixin(target, source, overlay) {\n target = 'prototype' in target ? target.prototype : target;\n source = 'prototype' in source ? source.prototype : source;\n defaults(target, source, overlay);\n}\n/**\n * Consider typed array.\n * @param {Array|TypedArray} data\n */\n\n\nfunction isArrayLike(data) {\n if (!data) {\n return;\n }\n\n if (typeof data === 'string') {\n return false;\n }\n\n return typeof data.length === 'number';\n}\n/**\n * 数组或对象遍历\n * @memberOf module:zrender/core/util\n * @param {Object|Array} obj\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\nfunction each(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.forEach && obj.forEach === nativeForEach) {\n obj.forEach(cb, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, len = obj.length; i < len; i++) {\n cb.call(context, obj[i], i, obj);\n }\n } else {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n cb.call(context, obj[key], key, obj);\n }\n }\n }\n}\n/**\n * 数组映射\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction map(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.map && obj.map === nativeMap) {\n return obj.map(cb, context);\n } else {\n var result = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n result.push(cb.call(context, obj[i], i, obj));\n }\n\n return result;\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {Object} [memo]\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction reduce(obj, cb, memo, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.reduce && obj.reduce === nativeReduce) {\n return obj.reduce(cb, memo, context);\n } else {\n for (var i = 0, len = obj.length; i < len; i++) {\n memo = cb.call(context, memo, obj[i], i, obj);\n }\n\n return memo;\n }\n}\n/**\n * 数组过滤\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction filter(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n if (obj.filter && obj.filter === nativeFilter) {\n return obj.filter(cb, context);\n } else {\n var result = [];\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (cb.call(context, obj[i], i, obj)) {\n result.push(obj[i]);\n }\n }\n\n return result;\n }\n}\n/**\n * 数组项查找\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {*}\n */\n\n\nfunction find(obj, cb, context) {\n if (!(obj && cb)) {\n return;\n }\n\n for (var i = 0, len = obj.length; i < len; i++) {\n if (cb.call(context, obj[i], i, obj)) {\n return obj[i];\n }\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @param {*} context\n * @return {Function}\n */\n\n\nfunction bind(func, context) {\n var args = nativeSlice.call(arguments, 2);\n return function () {\n return func.apply(context, args.concat(nativeSlice.call(arguments)));\n };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @return {Function}\n */\n\n\nfunction curry(func) {\n var args = nativeSlice.call(arguments, 1);\n return function () {\n return func.apply(this, args.concat(nativeSlice.call(arguments)));\n };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isArray(value) {\n return objToString.call(value) === '[object Array]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isString(value) {\n return objToString.call(value) === '[object String]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return type === 'function' || !!value && type === 'object';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isBuiltInObject(value) {\n return !!BUILTIN_OBJECT[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isTypedArray(value) {\n return !!TYPED_ARRAY[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isDom(value) {\n return typeof value === 'object' && typeof value.nodeType === 'number' && typeof value.ownerDocument === 'object';\n}\n/**\n * Whether is exactly NaN. Notice isNaN('a') returns true.\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction eqNaN(value) {\n /* eslint-disable-next-line no-self-compare */\n return value !== value;\n}\n/**\n * If value1 is not null, then return value1, otherwise judget rest of values.\n * Low performance.\n * @memberOf module:zrender/core/util\n * @return {*} Final value\n */\n\n\nfunction retrieve(values) {\n for (var i = 0, len = arguments.length; i < len; i++) {\n if (arguments[i] != null) {\n return arguments[i];\n }\n }\n}\n\nfunction retrieve2(value0, value1) {\n return value0 != null ? value0 : value1;\n}\n\nfunction retrieve3(value0, value1, value2) {\n return value0 != null ? value0 : value1 != null ? value1 : value2;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} arr\n * @param {number} startIndex\n * @param {number} endIndex\n * @return {Array}\n */\n\n\nfunction slice() {\n return Function.call.apply(nativeSlice, arguments);\n}\n/**\n * Normalize css liked array configuration\n * e.g.\n * 3 => [3, 3, 3, 3]\n * [4, 2] => [4, 2, 4, 2]\n * [4, 3, 2] => [4, 3, 2, 3]\n * @param {number|Array.} val\n * @return {Array.}\n */\n\n\nfunction normalizeCssArray(val) {\n if (typeof val === 'number') {\n return [val, val, val, val];\n }\n\n var len = val.length;\n\n if (len === 2) {\n // vertical | horizontal\n return [val[0], val[1], val[0], val[1]];\n } else if (len === 3) {\n // top | horizontal | bottom\n return [val[0], val[1], val[2], val[1]];\n }\n\n return val;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {boolean} condition\n * @param {string} message\n */\n\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(message);\n }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {string} str string to be trimed\n * @return {string} trimed string\n */\n\n\nfunction trim(str) {\n if (str == null) {\n return null;\n } else if (typeof str.trim === 'function') {\n return str.trim();\n } else {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n}\n\nvar primitiveKey = '__ec_primitive__';\n/**\n * Set an object as primitive to be ignored traversing children in clone or merge\n */\n\nfunction setAsPrimitive(obj) {\n obj[primitiveKey] = true;\n}\n\nfunction isPrimitive(obj) {\n return obj[primitiveKey];\n}\n/**\n * @constructor\n * @param {Object} obj Only apply `ownProperty`.\n */\n\n\nfunction HashMap(obj) {\n var isArr = isArray(obj); // Key should not be set on this, otherwise\n // methods get/set/... may be overrided.\n\n this.data = {};\n var thisMap = this;\n obj instanceof HashMap ? obj.each(visit) : obj && each(obj, visit);\n\n function visit(value, key) {\n isArr ? thisMap.set(value, key) : thisMap.set(key, value);\n }\n}\n\nHashMap.prototype = {\n constructor: HashMap,\n // Do not provide `has` method to avoid defining what is `has`.\n // (We usually treat `null` and `undefined` as the same, different\n // from ES6 Map).\n get: function (key) {\n return this.data.hasOwnProperty(key) ? this.data[key] : null;\n },\n set: function (key, value) {\n // Comparing with invocation chaining, `return value` is more commonly\n // used in this case: `var someVal = map.set('a', genVal());`\n return this.data[key] = value;\n },\n // Although util.each can be performed on this hashMap directly, user\n // should not use the exposed keys, who are prefixed.\n each: function (cb, context) {\n context !== void 0 && (cb = bind(cb, context));\n /* eslint-disable guard-for-in */\n\n for (var key in this.data) {\n this.data.hasOwnProperty(key) && cb(this.data[key], key);\n }\n /* eslint-enable guard-for-in */\n\n },\n // Do not use this method if performance sensitive.\n removeKey: function (key) {\n delete this.data[key];\n }\n};\n\nfunction createHashMap(obj) {\n return new HashMap(obj);\n}\n\nfunction concatArray(a, b) {\n var newArray = new a.constructor(a.length + b.length);\n\n for (var i = 0; i < a.length; i++) {\n newArray[i] = a[i];\n }\n\n var offset = a.length;\n\n for (i = 0; i < b.length; i++) {\n newArray[i + offset] = b[i];\n }\n\n return newArray;\n}\n\nfunction noop() {}\n\nexports.$override = $override;\nexports.clone = clone;\nexports.merge = merge;\nexports.mergeAll = mergeAll;\nexports.extend = extend;\nexports.defaults = defaults;\nexports.createCanvas = createCanvas;\nexports.getContext = getContext;\nexports.indexOf = indexOf;\nexports.inherits = inherits;\nexports.mixin = mixin;\nexports.isArrayLike = isArrayLike;\nexports.each = each;\nexports.map = map;\nexports.reduce = reduce;\nexports.filter = filter;\nexports.find = find;\nexports.bind = bind;\nexports.curry = curry;\nexports.isArray = isArray;\nexports.isFunction = isFunction;\nexports.isString = isString;\nexports.isObject = isObject;\nexports.isBuiltInObject = isBuiltInObject;\nexports.isTypedArray = isTypedArray;\nexports.isDom = isDom;\nexports.eqNaN = eqNaN;\nexports.retrieve = retrieve;\nexports.retrieve2 = retrieve2;\nexports.retrieve3 = retrieve3;\nexports.slice = slice;\nexports.normalizeCssArray = normalizeCssArray;\nexports.assert = assert;\nexports.trim = trim;\nexports.setAsPrimitive = setAsPrimitive;\nexports.isPrimitive = isPrimitive;\nexports.createHashMap = createHashMap;\nexports.concatArray = concatArray;\nexports.noop = noop;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"./config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrender = require(\"zrender/lib/zrender\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar timsort = require(\"zrender/lib/core/timsort\");\n\nvar Eventful = require(\"zrender/lib/mixin/Eventful\");\n\nvar GlobalModel = require(\"./model/Global\");\n\nvar ExtensionAPI = require(\"./ExtensionAPI\");\n\nvar CoordinateSystemManager = require(\"./CoordinateSystem\");\n\nvar OptionManager = require(\"./model/OptionManager\");\n\nvar backwardCompat = require(\"./preprocessor/backwardCompat\");\n\nvar dataStack = require(\"./processor/dataStack\");\n\nvar ComponentModel = require(\"./model/Component\");\n\nvar SeriesModel = require(\"./model/Series\");\n\nvar ComponentView = require(\"./view/Component\");\n\nvar ChartView = require(\"./view/Chart\");\n\nvar graphic = require(\"./util/graphic\");\n\nvar modelUtil = require(\"./util/model\");\n\nvar _throttle = require(\"./util/throttle\");\n\nvar throttle = _throttle.throttle;\n\nvar seriesColor = require(\"./visual/seriesColor\");\n\nvar aria = require(\"./visual/aria\");\n\nvar loadingDefault = require(\"./loading/default\");\n\nvar Scheduler = require(\"./stream/Scheduler\");\n\nvar lightTheme = require(\"./theme/light\");\n\nvar darkTheme = require(\"./theme/dark\");\n\nrequire(\"./component/dataset\");\n\nvar mapDataStorage = require(\"./coord/geo/mapDataStorage\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar assert = zrUtil.assert;\nvar each = zrUtil.each;\nvar isFunction = zrUtil.isFunction;\nvar isObject = zrUtil.isObject;\nvar parseClassType = ComponentModel.parseClassType;\nvar version = '4.6.0';\nvar dependencies = {\n zrender: '4.2.0'\n};\nvar TEST_FRAME_REMAIN_TIME = 1;\nvar PRIORITY_PROCESSOR_FILTER = 1000;\nvar PRIORITY_PROCESSOR_SERIES_FILTER = 800;\nvar PRIORITY_PROCESSOR_DATASTACK = 900;\nvar PRIORITY_PROCESSOR_STATISTIC = 5000;\nvar PRIORITY_VISUAL_LAYOUT = 1000;\nvar PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;\nvar PRIORITY_VISUAL_GLOBAL = 2000;\nvar PRIORITY_VISUAL_CHART = 3000;\nvar PRIORITY_VISUAL_POST_CHART_LAYOUT = 3500;\nvar PRIORITY_VISUAL_COMPONENT = 4000; // FIXME\n// necessary?\n\nvar PRIORITY_VISUAL_BRUSH = 5000;\nvar PRIORITY = {\n PROCESSOR: {\n FILTER: PRIORITY_PROCESSOR_FILTER,\n SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,\n STATISTIC: PRIORITY_PROCESSOR_STATISTIC\n },\n VISUAL: {\n LAYOUT: PRIORITY_VISUAL_LAYOUT,\n PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,\n GLOBAL: PRIORITY_VISUAL_GLOBAL,\n CHART: PRIORITY_VISUAL_CHART,\n POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,\n COMPONENT: PRIORITY_VISUAL_COMPONENT,\n BRUSH: PRIORITY_VISUAL_BRUSH\n }\n}; // Main process have three entries: `setOption`, `dispatchAction` and `resize`,\n// where they must not be invoked nestedly, except the only case: invoke\n// dispatchAction with updateMethod \"none\" in main process.\n// This flag is used to carry out this rule.\n// All events will be triggered out side main process (i.e. when !this[IN_MAIN_PROCESS]).\n\nvar IN_MAIN_PROCESS = '__flagInMainProcess';\nvar OPTION_UPDATED = '__optionUpdated';\nvar ACTION_REG = /^[a-zA-Z0-9_]+$/;\n\nfunction createRegisterEventWithLowercaseName(method, ignoreDisposed) {\n return function (eventName, handler, context) {\n if (!ignoreDisposed && this._disposed) {\n disposedWarning(this.id);\n return;\n } // Event name is all lowercase\n\n\n eventName = eventName && eventName.toLowerCase();\n Eventful.prototype[method].call(this, eventName, handler, context);\n };\n}\n/**\n * @module echarts~MessageCenter\n */\n\n\nfunction MessageCenter() {\n Eventful.call(this);\n}\n\nMessageCenter.prototype.on = createRegisterEventWithLowercaseName('on', true);\nMessageCenter.prototype.off = createRegisterEventWithLowercaseName('off', true);\nMessageCenter.prototype.one = createRegisterEventWithLowercaseName('one', true);\nzrUtil.mixin(MessageCenter, Eventful);\n/**\n * @module echarts~ECharts\n */\n\nfunction ECharts(dom, theme, opts) {\n opts = opts || {}; // Get theme by name\n\n if (typeof theme === 'string') {\n theme = themeStorage[theme];\n }\n /**\n * @type {string}\n */\n\n\n this.id;\n /**\n * Group id\n * @type {string}\n */\n\n this.group;\n /**\n * @type {HTMLElement}\n * @private\n */\n\n this._dom = dom;\n var defaultRenderer = 'canvas';\n\n /**\n * @type {module:zrender/ZRender}\n * @private\n */\n var zr = this._zr = zrender.init(dom, {\n renderer: opts.renderer || defaultRenderer,\n devicePixelRatio: opts.devicePixelRatio,\n width: opts.width,\n height: opts.height\n });\n /**\n * Expect 60 fps.\n * @type {Function}\n * @private\n */\n\n this._throttledZrFlush = throttle(zrUtil.bind(zr.flush, zr), 17);\n var theme = zrUtil.clone(theme);\n theme && backwardCompat(theme, true);\n /**\n * @type {Object}\n * @private\n */\n\n this._theme = theme;\n /**\n * @type {Array.}\n * @private\n */\n\n this._chartsViews = [];\n /**\n * @type {Object.}\n * @private\n */\n\n this._chartsMap = {};\n /**\n * @type {Array.}\n * @private\n */\n\n this._componentsViews = [];\n /**\n * @type {Object.}\n * @private\n */\n\n this._componentsMap = {};\n /**\n * @type {module:echarts/CoordinateSystem}\n * @private\n */\n\n this._coordSysMgr = new CoordinateSystemManager();\n /**\n * @type {module:echarts/ExtensionAPI}\n * @private\n */\n\n var api = this._api = createExtensionAPI(this); // Sort on demand\n\n function prioritySortFunc(a, b) {\n return a.__prio - b.__prio;\n }\n\n timsort(visualFuncs, prioritySortFunc);\n timsort(dataProcessorFuncs, prioritySortFunc);\n /**\n * @type {module:echarts/stream/Scheduler}\n */\n\n this._scheduler = new Scheduler(this, api, dataProcessorFuncs, visualFuncs);\n Eventful.call(this, this._ecEventProcessor = new EventProcessor());\n /**\n * @type {module:echarts~MessageCenter}\n * @private\n */\n\n this._messageCenter = new MessageCenter(); // Init mouse events\n\n this._initEvents(); // In case some people write `window.onresize = chart.resize`\n\n\n this.resize = zrUtil.bind(this.resize, this); // Can't dispatch action during rendering procedure\n\n this._pendingActions = [];\n zr.animation.on('frame', this._onframe, this);\n bindRenderedEvent(zr, this); // ECharts instance can be used as value.\n\n zrUtil.setAsPrimitive(this);\n}\n\nvar echartsProto = ECharts.prototype;\n\nechartsProto._onframe = function () {\n if (this._disposed) {\n return;\n }\n\n var scheduler = this._scheduler; // Lazy update\n\n if (this[OPTION_UPDATED]) {\n var silent = this[OPTION_UPDATED].silent;\n this[IN_MAIN_PROCESS] = true;\n prepare(this);\n updateMethods.update.call(this);\n this[IN_MAIN_PROCESS] = false;\n this[OPTION_UPDATED] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n } // Avoid do both lazy update and progress in one frame.\n else if (scheduler.unfinished) {\n // Stream progress.\n var remainTime = TEST_FRAME_REMAIN_TIME;\n var ecModel = this._model;\n var api = this._api;\n scheduler.unfinished = false;\n\n do {\n var startTime = +new Date();\n scheduler.performSeriesTasks(ecModel); // Currently dataProcessorFuncs do not check threshold.\n\n scheduler.performDataProcessorTasks(ecModel);\n updateStreamModes(this, ecModel); // Do not update coordinate system here. Because that coord system update in\n // each frame is not a good user experience. So we follow the rule that\n // the extent of the coordinate system is determin in the first frame (the\n // frame is executed immedietely after task reset.\n // this._coordSysMgr.update(ecModel, api);\n // console.log('--- ec frame visual ---', remainTime);\n\n scheduler.performVisualTasks(ecModel);\n renderSeries(this, this._model, api, 'remain');\n remainTime -= +new Date() - startTime;\n } while (remainTime > 0 && scheduler.unfinished); // Call flush explicitly for trigger finished event.\n\n\n if (!scheduler.unfinished) {\n this._zr.flush();\n } // Else, zr flushing be ensue within the same frame,\n // because zr flushing is after onframe event.\n\n }\n};\n/**\n * @return {HTMLElement}\n */\n\n\nechartsProto.getDom = function () {\n return this._dom;\n};\n/**\n * @return {module:zrender~ZRender}\n */\n\n\nechartsProto.getZr = function () {\n return this._zr;\n};\n/**\n * Usage:\n * chart.setOption(option, notMerge, lazyUpdate);\n * chart.setOption(option, {\n * notMerge: ...,\n * lazyUpdate: ...,\n * silent: ...\n * });\n *\n * @param {Object} option\n * @param {Object|boolean} [opts] opts or notMerge.\n * @param {boolean} [opts.notMerge=false]\n * @param {boolean} [opts.lazyUpdate=false] Useful when setOption frequently.\n */\n\n\nechartsProto.setOption = function (option, notMerge, lazyUpdate) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var silent;\n\n if (isObject(notMerge)) {\n lazyUpdate = notMerge.lazyUpdate;\n silent = notMerge.silent;\n notMerge = notMerge.notMerge;\n }\n\n this[IN_MAIN_PROCESS] = true;\n\n if (!this._model || notMerge) {\n var optionManager = new OptionManager(this._api);\n var theme = this._theme;\n var ecModel = this._model = new GlobalModel();\n ecModel.scheduler = this._scheduler;\n ecModel.init(null, null, theme, optionManager);\n }\n\n this._model.setOption(option, optionPreprocessorFuncs);\n\n if (lazyUpdate) {\n this[OPTION_UPDATED] = {\n silent: silent\n };\n this[IN_MAIN_PROCESS] = false;\n } else {\n prepare(this);\n updateMethods.update.call(this); // Ensure zr refresh sychronously, and then pixel in canvas can be\n // fetched after `setOption`.\n\n this._zr.flush();\n\n this[OPTION_UPDATED] = false;\n this[IN_MAIN_PROCESS] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n }\n};\n/**\n * @DEPRECATED\n */\n\n\nechartsProto.setTheme = function () {\n console.error('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\n};\n/**\n * @return {module:echarts/model/Global}\n */\n\n\nechartsProto.getModel = function () {\n return this._model;\n};\n/**\n * @return {Object}\n */\n\n\nechartsProto.getOption = function () {\n return this._model && this._model.getOption();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getWidth = function () {\n return this._zr.getWidth();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getHeight = function () {\n return this._zr.getHeight();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getDevicePixelRatio = function () {\n return this._zr.painter.dpr || window.devicePixelRatio || 1;\n};\n/**\n * Get canvas which has all thing rendered\n * @param {Object} opts\n * @param {string} [opts.backgroundColor]\n * @return {string}\n */\n\n\nechartsProto.getRenderedCanvas = function (opts) {\n if (!env.canvasSupported) {\n return;\n }\n\n opts = opts || {};\n opts.pixelRatio = opts.pixelRatio || 1;\n opts.backgroundColor = opts.backgroundColor || this._model.get('backgroundColor');\n var zr = this._zr; // var list = zr.storage.getDisplayList();\n // Stop animations\n // Never works before in init animation, so remove it.\n // zrUtil.each(list, function (el) {\n // el.stopAnimation(true);\n // });\n\n return zr.painter.getRenderedCanvas(opts);\n};\n/**\n * Get svg data url\n * @return {string}\n */\n\n\nechartsProto.getSvgDataUrl = function () {\n if (!env.svgSupported) {\n return;\n }\n\n var zr = this._zr;\n var list = zr.storage.getDisplayList(); // Stop animations\n\n zrUtil.each(list, function (el) {\n el.stopAnimation(true);\n });\n return zr.painter.pathToDataUrl();\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n * @param {string} [opts.excludeComponents]\n */\n\n\nechartsProto.getDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n opts = opts || {};\n var excludeComponents = opts.excludeComponents;\n var ecModel = this._model;\n var excludesComponentViews = [];\n var self = this;\n each(excludeComponents, function (componentType) {\n ecModel.eachComponent({\n mainType: componentType\n }, function (component) {\n var view = self._componentsMap[component.__viewId];\n\n if (!view.group.ignore) {\n excludesComponentViews.push(view);\n view.group.ignore = true;\n }\n });\n });\n var url = this._zr.painter.getType() === 'svg' ? this.getSvgDataUrl() : this.getRenderedCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\n each(excludesComponentViews, function (view) {\n view.group.ignore = false;\n });\n return url;\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n */\n\n\nechartsProto.getConnectedDataURL = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (!env.canvasSupported) {\n return;\n }\n\n var groupId = this.group;\n var mathMin = Math.min;\n var mathMax = Math.max;\n var MAX_NUMBER = Infinity;\n\n if (connectedGroups[groupId]) {\n var left = MAX_NUMBER;\n var top = MAX_NUMBER;\n var right = -MAX_NUMBER;\n var bottom = -MAX_NUMBER;\n var canvasList = [];\n var dpr = opts && opts.pixelRatio || 1;\n zrUtil.each(instances, function (chart, id) {\n if (chart.group === groupId) {\n var canvas = chart.getRenderedCanvas(zrUtil.clone(opts));\n var boundingRect = chart.getDom().getBoundingClientRect();\n left = mathMin(boundingRect.left, left);\n top = mathMin(boundingRect.top, top);\n right = mathMax(boundingRect.right, right);\n bottom = mathMax(boundingRect.bottom, bottom);\n canvasList.push({\n dom: canvas,\n left: boundingRect.left,\n top: boundingRect.top\n });\n }\n });\n left *= dpr;\n top *= dpr;\n right *= dpr;\n bottom *= dpr;\n var width = right - left;\n var height = bottom - top;\n var targetCanvas = zrUtil.createCanvas();\n targetCanvas.width = width;\n targetCanvas.height = height;\n var zr = zrender.init(targetCanvas); // Background between the charts\n\n if (opts.connectedBackgroundColor) {\n zr.add(new graphic.Rect({\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n style: {\n fill: opts.connectedBackgroundColor\n }\n }));\n }\n\n each(canvasList, function (item) {\n var img = new graphic.Image({\n style: {\n x: item.left * dpr - left,\n y: item.top * dpr - top,\n image: item.dom\n }\n });\n zr.add(img);\n });\n zr.refreshImmediately();\n return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\n } else {\n return this.getDataURL(opts);\n }\n};\n/**\n * Convert from logical coordinate system to pixel coordinate system.\n * See CoordinateSystem#convertToPixel.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId, geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName,\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\n\nechartsProto.convertToPixel = zrUtil.curry(doConvertPixel, 'convertToPixel');\n/**\n * Convert from pixel coordinate system to logical coordinate system.\n * See CoordinateSystem#convertFromPixel.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId / geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\nechartsProto.convertFromPixel = zrUtil.curry(doConvertPixel, 'convertFromPixel');\n\nfunction doConvertPixel(methodName, finder, value) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var ecModel = this._model;\n\n var coordSysList = this._coordSysMgr.getCoordinateSystems();\n\n var result;\n finder = modelUtil.parseFinder(ecModel, finder);\n\n for (var i = 0; i < coordSysList.length; i++) {\n var coordSys = coordSysList[i];\n\n if (coordSys[methodName] && (result = coordSys[methodName](ecModel, finder, value)) != null) {\n return result;\n }\n }\n}\n/**\n * Is the specified coordinate systems or components contain the given pixel point.\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * geoIndex / geoId / geoName,\n * bmapIndex / bmapId / bmapName,\n * xAxisIndex / xAxisId / xAxisName,\n * yAxisIndex / yAxisId / yAxisName,\n * gridIndex / gridId / gridName,\n * ... (can be extended)\n * }\n * @param {Array|number} value\n * @return {boolean} result\n */\n\n\nechartsProto.containPixel = function (finder, value) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var ecModel = this._model;\n var result;\n finder = modelUtil.parseFinder(ecModel, finder);\n zrUtil.each(finder, function (models, key) {\n key.indexOf('Models') >= 0 && zrUtil.each(models, function (model) {\n var coordSys = model.coordinateSystem;\n\n if (coordSys && coordSys.containPoint) {\n result |= !!coordSys.containPoint(value);\n } else if (key === 'seriesModels') {\n var view = this._chartsMap[model.__viewId];\n\n if (view && view.containPoint) {\n result |= view.containPoint(value, model);\n } else {}\n } else {}\n }, this);\n }, this);\n return !!result;\n};\n/**\n * Get visual from series or data.\n * @param {string|Object} finder\n * If string, e.g., 'series', means {seriesIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex / seriesId / seriesName,\n * dataIndex / dataIndexInside\n * }\n * If dataIndex is not specified, series visual will be fetched,\n * but not data item visual.\n * If all of seriesIndex, seriesId, seriesName are not specified,\n * visual will be fetched from first series.\n * @param {string} visualType 'color', 'symbol', 'symbolSize'\n */\n\n\nechartsProto.getVisual = function (finder, visualType) {\n var ecModel = this._model;\n finder = modelUtil.parseFinder(ecModel, finder, {\n defaultMainType: 'series'\n });\n var seriesModel = finder.seriesModel;\n var data = seriesModel.getData();\n var dataIndexInside = finder.hasOwnProperty('dataIndexInside') ? finder.dataIndexInside : finder.hasOwnProperty('dataIndex') ? data.indexOfRawIndex(finder.dataIndex) : null;\n return dataIndexInside != null ? data.getItemVisual(dataIndexInside, visualType) : data.getVisual(visualType);\n};\n/**\n * Get view of corresponding component model\n * @param {module:echarts/model/Component} componentModel\n * @return {module:echarts/view/Component}\n */\n\n\nechartsProto.getViewOfComponentModel = function (componentModel) {\n return this._componentsMap[componentModel.__viewId];\n};\n/**\n * Get view of corresponding series model\n * @param {module:echarts/model/Series} seriesModel\n * @return {module:echarts/view/Chart}\n */\n\n\nechartsProto.getViewOfSeriesModel = function (seriesModel) {\n return this._chartsMap[seriesModel.__viewId];\n};\n\nvar updateMethods = {\n prepareAndUpdate: function (payload) {\n prepare(this);\n updateMethods.update.call(this, payload);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n update: function (payload) {\n // console.profile && console.profile('update');\n var ecModel = this._model;\n var api = this._api;\n var zr = this._zr;\n var coordSysMgr = this._coordSysMgr;\n var scheduler = this._scheduler; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n scheduler.restoreData(ecModel, payload);\n scheduler.performSeriesTasks(ecModel); // TODO\n // Save total ecModel here for undo/redo (after restoring data and before processing data).\n // Undo (restoration of total ecModel) can be carried out in 'action' or outside API call.\n // Create new coordinate system each update\n // In LineView may save the old coordinate system and use it to get the orignal point\n\n coordSysMgr.create(ecModel, api);\n scheduler.performDataProcessorTasks(ecModel, payload); // Current stream render is not supported in data process. So we can update\n // stream modes after data processing, where the filtered data is used to\n // deteming whether use progressive rendering.\n\n updateStreamModes(this, ecModel); // We update stream modes before coordinate system updated, then the modes info\n // can be fetched when coord sys updating (consider the barGrid extent fix). But\n // the drawback is the full coord info can not be fetched. Fortunately this full\n // coord is not requied in stream mode updater currently.\n\n coordSysMgr.update(ecModel, api);\n clearColorPalette(ecModel);\n scheduler.performVisualTasks(ecModel, payload);\n render(this, ecModel, api, payload); // Set background\n\n var backgroundColor = ecModel.get('backgroundColor') || 'transparent'; // In IE8\n\n if (!env.canvasSupported) {\n var colorArr = colorTool.parse(backgroundColor);\n backgroundColor = colorTool.stringify(colorArr, 'rgb');\n\n if (colorArr[3] === 0) {\n backgroundColor = 'transparent';\n }\n } else {\n zr.setBackgroundColor(backgroundColor);\n }\n\n performPostUpdateFuncs(ecModel, api); // console.profile && console.profileEnd('update');\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateTransform: function (payload) {\n var ecModel = this._model;\n var ecIns = this;\n var api = this._api; // update before setOption\n\n if (!ecModel) {\n return;\n } // ChartView.markUpdateMethod(payload, 'updateTransform');\n\n\n var componentDirtyList = [];\n ecModel.eachComponent(function (componentType, componentModel) {\n var componentView = ecIns.getViewOfComponentModel(componentModel);\n\n if (componentView && componentView.__alive) {\n if (componentView.updateTransform) {\n var result = componentView.updateTransform(componentModel, ecModel, api, payload);\n result && result.update && componentDirtyList.push(componentView);\n } else {\n componentDirtyList.push(componentView);\n }\n }\n });\n var seriesDirtyMap = zrUtil.createHashMap();\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n if (chartView.updateTransform) {\n var result = chartView.updateTransform(seriesModel, ecModel, api, payload);\n result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);\n } else {\n seriesDirtyMap.set(seriesModel.uid, 1);\n }\n });\n clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n\n this._scheduler.performVisualTasks(ecModel, payload, {\n setDirty: true,\n dirtyMap: seriesDirtyMap\n }); // Currently, not call render of components. Geo render cost a lot.\n // renderComponents(ecIns, ecModel, api, payload, componentDirtyList);\n\n\n renderSeries(ecIns, ecModel, api, payload, seriesDirtyMap);\n performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateView: function (payload) {\n var ecModel = this._model; // update before setOption\n\n if (!ecModel) {\n return;\n }\n\n ChartView.markUpdateMethod(payload, 'updateView');\n clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n\n this._scheduler.performVisualTasks(ecModel, payload, {\n setDirty: true\n });\n\n render(this, this._model, this._api, payload);\n performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateVisual: function (payload) {\n updateMethods.update.call(this, payload); // var ecModel = this._model;\n // // update before setOption\n // if (!ecModel) {\n // return;\n // }\n // ChartView.markUpdateMethod(payload, 'updateVisual');\n // clearColorPalette(ecModel);\n // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // this._scheduler.performVisualTasks(ecModel, payload, {visualType: 'visual', setDirty: true});\n // render(this, this._model, this._api, payload);\n // performPostUpdateFuncs(ecModel, this._api);\n },\n\n /**\n * @param {Object} payload\n * @private\n */\n updateLayout: function (payload) {\n updateMethods.update.call(this, payload); // var ecModel = this._model;\n // // update before setOption\n // if (!ecModel) {\n // return;\n // }\n // ChartView.markUpdateMethod(payload, 'updateLayout');\n // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n // // this._scheduler.performVisualTasks(ecModel, payload, 'layout', true);\n // this._scheduler.performVisualTasks(ecModel, payload, {setDirty: true});\n // render(this, this._model, this._api, payload);\n // performPostUpdateFuncs(ecModel, this._api);\n }\n};\n\nfunction prepare(ecIns) {\n var ecModel = ecIns._model;\n var scheduler = ecIns._scheduler;\n scheduler.restorePipelines(ecModel);\n scheduler.prepareStageTasks();\n prepareView(ecIns, 'component', ecModel, scheduler);\n prepareView(ecIns, 'chart', ecModel, scheduler);\n scheduler.plan();\n}\n/**\n * @private\n */\n\n\nfunction updateDirectly(ecIns, method, payload, mainType, subType) {\n var ecModel = ecIns._model; // broadcast\n\n if (!mainType) {\n // FIXME\n // Chart will not be update directly here, except set dirty.\n // But there is no such scenario now.\n each(ecIns._componentsViews.concat(ecIns._chartsViews), callView);\n return;\n }\n\n var query = {};\n query[mainType + 'Id'] = payload[mainType + 'Id'];\n query[mainType + 'Index'] = payload[mainType + 'Index'];\n query[mainType + 'Name'] = payload[mainType + 'Name'];\n var condition = {\n mainType: mainType,\n query: query\n };\n subType && (condition.subType = subType); // subType may be '' by parseClassType;\n\n var excludeSeriesId = payload.excludeSeriesId;\n\n if (excludeSeriesId != null) {\n excludeSeriesId = zrUtil.createHashMap(modelUtil.normalizeToArray(excludeSeriesId));\n } // If dispatchAction before setOption, do nothing.\n\n\n ecModel && ecModel.eachComponent(condition, function (model) {\n if (!excludeSeriesId || excludeSeriesId.get(model.id) == null) {\n callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\n }\n }, ecIns);\n\n function callView(view) {\n view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);\n }\n}\n/**\n * Resize the chart\n * @param {Object} opts\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n * @param {boolean} [opts.silent=false]\n */\n\n\nechartsProto.resize = function (opts) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._zr.resize(opts);\n\n var ecModel = this._model; // Resize loading effect\n\n this._loadingFX && this._loadingFX.resize();\n\n if (!ecModel) {\n return;\n }\n\n var optionChanged = ecModel.resetOption('media');\n var silent = opts && opts.silent;\n this[IN_MAIN_PROCESS] = true;\n optionChanged && prepare(this);\n updateMethods.update.call(this);\n this[IN_MAIN_PROCESS] = false;\n flushPendingActions.call(this, silent);\n triggerUpdatedEvent.call(this, silent);\n};\n\nfunction updateStreamModes(ecIns, ecModel) {\n var chartsMap = ecIns._chartsMap;\n var scheduler = ecIns._scheduler;\n ecModel.eachSeries(function (seriesModel) {\n scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);\n });\n}\n/**\n * Show loading effect\n * @param {string} [name='default']\n * @param {Object} [cfg]\n */\n\n\nechartsProto.showLoading = function (name, cfg) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (isObject(name)) {\n cfg = name;\n name = '';\n }\n\n name = name || 'default';\n this.hideLoading();\n\n if (!loadingEffects[name]) {\n return;\n }\n\n var el = loadingEffects[name](this._api, cfg);\n var zr = this._zr;\n this._loadingFX = el;\n zr.add(el);\n};\n/**\n * Hide loading effect\n */\n\n\nechartsProto.hideLoading = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._loadingFX && this._zr.remove(this._loadingFX);\n this._loadingFX = null;\n};\n/**\n * @param {Object} eventObj\n * @return {Object}\n */\n\n\nechartsProto.makeActionFromEvent = function (eventObj) {\n var payload = zrUtil.extend({}, eventObj);\n payload.type = eventActionMap[eventObj.type];\n return payload;\n};\n/**\n * @pubilc\n * @param {Object} payload\n * @param {string} [payload.type] Action type\n * @param {Object|boolean} [opt] If pass boolean, means opt.silent\n * @param {boolean} [opt.silent=false] Whether trigger events.\n * @param {boolean} [opt.flush=undefined]\n * true: Flush immediately, and then pixel in canvas can be fetched\n * immediately. Caution: it might affect performance.\n * false: Not flush.\n * undefined: Auto decide whether perform flush.\n */\n\n\nechartsProto.dispatchAction = function (payload, opt) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n if (!isObject(opt)) {\n opt = {\n silent: !!opt\n };\n }\n\n if (!actions[payload.type]) {\n return;\n } // Avoid dispatch action before setOption. Especially in `connect`.\n\n\n if (!this._model) {\n return;\n } // May dispatchAction in rendering procedure\n\n\n if (this[IN_MAIN_PROCESS]) {\n this._pendingActions.push(payload);\n\n return;\n }\n\n doDispatchAction.call(this, payload, opt.silent);\n\n if (opt.flush) {\n this._zr.flush(true);\n } else if (opt.flush !== false && env.browser.weChat) {\n // In WeChat embeded browser, `requestAnimationFrame` and `setInterval`\n // hang when sliding page (on touch event), which cause that zr does not\n // refresh util user interaction finished, which is not expected.\n // But `dispatchAction` may be called too frequently when pan on touch\n // screen, which impacts performance if do not throttle them.\n this._throttledZrFlush();\n }\n\n flushPendingActions.call(this, opt.silent);\n triggerUpdatedEvent.call(this, opt.silent);\n};\n\nfunction doDispatchAction(payload, silent) {\n var payloadType = payload.type;\n var escapeConnect = payload.escapeConnect;\n var actionWrap = actions[payloadType];\n var actionInfo = actionWrap.actionInfo;\n var cptType = (actionInfo.update || 'update').split(':');\n var updateMethod = cptType.pop();\n cptType = cptType[0] != null && parseClassType(cptType[0]);\n this[IN_MAIN_PROCESS] = true;\n var payloads = [payload];\n var batched = false; // Batch action\n\n if (payload.batch) {\n batched = true;\n payloads = zrUtil.map(payload.batch, function (item) {\n item = zrUtil.defaults(zrUtil.extend({}, item), payload);\n item.batch = null;\n return item;\n });\n }\n\n var eventObjBatch = [];\n var eventObj;\n var isHighDown = payloadType === 'highlight' || payloadType === 'downplay';\n each(payloads, function (batchItem) {\n // Action can specify the event by return it.\n eventObj = actionWrap.action(batchItem, this._model, this._api); // Emit event outside\n\n eventObj = eventObj || zrUtil.extend({}, batchItem); // Convert type to eventType\n\n eventObj.type = actionInfo.event || eventObj.type;\n eventObjBatch.push(eventObj); // light update does not perform data process, layout and visual.\n\n if (isHighDown) {\n // method, payload, mainType, subType\n updateDirectly(this, updateMethod, batchItem, 'series');\n } else if (cptType) {\n updateDirectly(this, updateMethod, batchItem, cptType.main, cptType.sub);\n }\n }, this);\n\n if (updateMethod !== 'none' && !isHighDown && !cptType) {\n // Still dirty\n if (this[OPTION_UPDATED]) {\n // FIXME Pass payload ?\n prepare(this);\n updateMethods.update.call(this, payload);\n this[OPTION_UPDATED] = false;\n } else {\n updateMethods[updateMethod].call(this, payload);\n }\n } // Follow the rule of action batch\n\n\n if (batched) {\n eventObj = {\n type: actionInfo.event || payloadType,\n escapeConnect: escapeConnect,\n batch: eventObjBatch\n };\n } else {\n eventObj = eventObjBatch[0];\n }\n\n this[IN_MAIN_PROCESS] = false;\n !silent && this._messageCenter.trigger(eventObj.type, eventObj);\n}\n\nfunction flushPendingActions(silent) {\n var pendingActions = this._pendingActions;\n\n while (pendingActions.length) {\n var payload = pendingActions.shift();\n doDispatchAction.call(this, payload, silent);\n }\n}\n\nfunction triggerUpdatedEvent(silent) {\n !silent && this.trigger('updated');\n}\n/**\n * Event `rendered` is triggered when zr\n * rendered. It is useful for realtime\n * snapshot (reflect animation).\n *\n * Event `finished` is triggered when:\n * (1) zrender rendering finished.\n * (2) initial animation finished.\n * (3) progressive rendering finished.\n * (4) no pending action.\n * (5) no delayed setOption needs to be processed.\n */\n\n\nfunction bindRenderedEvent(zr, ecIns) {\n zr.on('rendered', function () {\n ecIns.trigger('rendered'); // The `finished` event should not be triggered repeatly,\n // so it should only be triggered when rendering indeed happend\n // in zrender. (Consider the case that dipatchAction is keep\n // triggering when mouse move).\n\n if ( // Although zr is dirty if initial animation is not finished\n // and this checking is called on frame, we also check\n // animation finished for robustness.\n zr.animation.isFinished() && !ecIns[OPTION_UPDATED] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length) {\n ecIns.trigger('finished');\n }\n });\n}\n/**\n * @param {Object} params\n * @param {number} params.seriesIndex\n * @param {Array|TypedArray} params.data\n */\n\n\nechartsProto.appendData = function (params) {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n var seriesIndex = params.seriesIndex;\n var ecModel = this.getModel();\n var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n seriesModel.appendData(params); // Note: `appendData` does not support that update extent of coordinate\n // system, util some scenario require that. In the expected usage of\n // `appendData`, the initial extent of coordinate system should better\n // be fixed by axis `min`/`max` setting or initial data, otherwise if\n // the extent changed while `appendData`, the location of the painted\n // graphic elements have to be changed, which make the usage of\n // `appendData` meaningless.\n\n this._scheduler.unfinished = true;\n};\n/**\n * Register event\n * @method\n */\n\n\nechartsProto.on = createRegisterEventWithLowercaseName('on', false);\nechartsProto.off = createRegisterEventWithLowercaseName('off', false);\nechartsProto.one = createRegisterEventWithLowercaseName('one', false);\n/**\n * Prepare view instances of charts and components\n * @param {module:echarts/model/Global} ecModel\n * @private\n */\n\nfunction prepareView(ecIns, type, ecModel, scheduler) {\n var isComponent = type === 'component';\n var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;\n var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;\n var zr = ecIns._zr;\n var api = ecIns._api;\n\n for (var i = 0; i < viewList.length; i++) {\n viewList[i].__alive = false;\n }\n\n isComponent ? ecModel.eachComponent(function (componentType, model) {\n componentType !== 'series' && doPrepare(model);\n }) : ecModel.eachSeries(doPrepare);\n\n function doPrepare(model) {\n // Consider: id same and type changed.\n var viewId = '_ec_' + model.id + '_' + model.type;\n var view = viewMap[viewId];\n\n if (!view) {\n var classType = parseClassType(model.type);\n var Clazz = isComponent ? ComponentView.getClass(classType.main, classType.sub) : ChartView.getClass(classType.sub);\n view = new Clazz();\n view.init(ecModel, api);\n viewMap[viewId] = view;\n viewList.push(view);\n zr.add(view.group);\n }\n\n model.__viewId = view.__id = viewId;\n view.__alive = true;\n view.__model = model;\n view.group.__ecComponentInfo = {\n mainType: model.mainType,\n index: model.componentIndex\n };\n !isComponent && scheduler.prepareView(view, model, ecModel, api);\n }\n\n for (var i = 0; i < viewList.length;) {\n var view = viewList[i];\n\n if (!view.__alive) {\n !isComponent && view.renderTask.dispose();\n zr.remove(view.group);\n view.dispose(ecModel, api);\n viewList.splice(i, 1);\n delete viewMap[view.__id];\n view.__id = view.group.__ecComponentInfo = null;\n } else {\n i++;\n }\n }\n} // /**\n// * Encode visual infomation from data after data processing\n// *\n// * @param {module:echarts/model/Global} ecModel\n// * @param {object} layout\n// * @param {boolean} [layoutFilter] `true`: only layout,\n// * `false`: only not layout,\n// * `null`/`undefined`: all.\n// * @param {string} taskBaseTag\n// * @private\n// */\n// function startVisualEncoding(ecIns, ecModel, api, payload, layoutFilter) {\n// each(visualFuncs, function (visual, index) {\n// var isLayout = visual.isLayout;\n// if (layoutFilter == null\n// || (layoutFilter === false && !isLayout)\n// || (layoutFilter === true && isLayout)\n// ) {\n// visual.func(ecModel, api, payload);\n// }\n// });\n// }\n\n\nfunction clearColorPalette(ecModel) {\n ecModel.clearColorPalette();\n ecModel.eachSeries(function (seriesModel) {\n seriesModel.clearColorPalette();\n });\n}\n\nfunction render(ecIns, ecModel, api, payload) {\n renderComponents(ecIns, ecModel, api, payload);\n each(ecIns._chartsViews, function (chart) {\n chart.__alive = false;\n });\n renderSeries(ecIns, ecModel, api, payload); // Remove groups of unrendered charts\n\n each(ecIns._chartsViews, function (chart) {\n if (!chart.__alive) {\n chart.remove(ecModel, api);\n }\n });\n}\n\nfunction renderComponents(ecIns, ecModel, api, payload, dirtyList) {\n each(dirtyList || ecIns._componentsViews, function (componentView) {\n var componentModel = componentView.__model;\n componentView.render(componentModel, ecModel, api, payload);\n updateZ(componentModel, componentView);\n });\n}\n/**\n * Render each chart and component\n * @private\n */\n\n\nfunction renderSeries(ecIns, ecModel, api, payload, dirtyMap) {\n // Render all charts\n var scheduler = ecIns._scheduler;\n var unfinished;\n ecModel.eachSeries(function (seriesModel) {\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n chartView.__alive = true;\n var renderTask = chartView.renderTask;\n scheduler.updatePayload(renderTask, payload);\n\n if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\n renderTask.dirty();\n }\n\n unfinished |= renderTask.perform(scheduler.getPerformArgs(renderTask));\n chartView.group.silent = !!seriesModel.get('silent');\n updateZ(seriesModel, chartView);\n updateBlend(seriesModel, chartView);\n });\n scheduler.unfinished |= unfinished; // If use hover layer\n\n updateHoverLayerStatus(ecIns, ecModel); // Add aria\n\n aria(ecIns._zr.dom, ecModel);\n}\n\nfunction performPostUpdateFuncs(ecModel, api) {\n each(postUpdateFuncs, function (func) {\n func(ecModel, api);\n });\n}\n\nvar MOUSE_EVENT_NAMES = ['click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'globalout', 'contextmenu'];\n/**\n * @private\n */\n\nechartsProto._initEvents = function () {\n each(MOUSE_EVENT_NAMES, function (eveName) {\n var handler = function (e) {\n var ecModel = this.getModel();\n var el = e.target;\n var params;\n var isGlobalOut = eveName === 'globalout'; // no e.target when 'globalout'.\n\n if (isGlobalOut) {\n params = {};\n } else if (el && el.dataIndex != null) {\n var dataModel = el.dataModel || ecModel.getSeriesByIndex(el.seriesIndex);\n params = dataModel && dataModel.getDataParams(el.dataIndex, el.dataType, el) || {};\n } // If element has custom eventData of components\n else if (el && el.eventData) {\n params = zrUtil.extend({}, el.eventData);\n } // Contract: if params prepared in mouse event,\n // these properties must be specified:\n // {\n // componentType: string (component main type)\n // componentIndex: number\n // }\n // Otherwise event query can not work.\n\n\n if (params) {\n var componentType = params.componentType;\n var componentIndex = params.componentIndex; // Special handling for historic reason: when trigger by\n // markLine/markPoint/markArea, the componentType is\n // 'markLine'/'markPoint'/'markArea', but we should better\n // enable them to be queried by seriesIndex, since their\n // option is set in each series.\n\n if (componentType === 'markLine' || componentType === 'markPoint' || componentType === 'markArea') {\n componentType = 'series';\n componentIndex = params.seriesIndex;\n }\n\n var model = componentType && componentIndex != null && ecModel.getComponent(componentType, componentIndex);\n var view = model && this[model.mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId];\n params.event = e;\n params.type = eveName;\n this._ecEventProcessor.eventInfo = {\n targetEl: el,\n packedEvent: params,\n model: model,\n view: view\n };\n this.trigger(eveName, params);\n }\n }; // Consider that some component (like tooltip, brush, ...)\n // register zr event handler, but user event handler might\n // do anything, such as call `setOption` or `dispatchAction`,\n // which probably update any of the content and probably\n // cause problem if it is called previous other inner handlers.\n\n\n handler.zrEventfulCallAtLast = true;\n\n this._zr.on(eveName, handler, this);\n }, this);\n each(eventActionMap, function (actionType, eventType) {\n this._messageCenter.on(eventType, function (event) {\n this.trigger(eventType, event);\n }, this);\n }, this);\n};\n/**\n * @return {boolean}\n */\n\n\nechartsProto.isDisposed = function () {\n return this._disposed;\n};\n/**\n * Clear\n */\n\n\nechartsProto.clear = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this.setOption({\n series: []\n }, true);\n};\n/**\n * Dispose instance\n */\n\n\nechartsProto.dispose = function () {\n if (this._disposed) {\n disposedWarning(this.id);\n return;\n }\n\n this._disposed = true;\n modelUtil.setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\n var api = this._api;\n var ecModel = this._model;\n each(this._componentsViews, function (component) {\n component.dispose(ecModel, api);\n });\n each(this._chartsViews, function (chart) {\n chart.dispose(ecModel, api);\n }); // Dispose after all views disposed\n\n this._zr.dispose();\n\n delete instances[this.id];\n};\n\nzrUtil.mixin(ECharts, Eventful);\n\nfunction disposedWarning(id) {}\n\nfunction updateHoverLayerStatus(ecIns, ecModel) {\n var zr = ecIns._zr;\n var storage = zr.storage;\n var elCount = 0;\n storage.traverse(function (el) {\n elCount++;\n });\n\n if (elCount > ecModel.get('hoverLayerThreshold') && !env.node) {\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.preventUsingHoverLayer) {\n return;\n }\n\n var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n if (chartView.__alive) {\n chartView.group.traverse(function (el) {\n // Don't switch back.\n el.useHoverLayer = true;\n });\n }\n });\n }\n}\n/**\n * Update chart progressive and blend.\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateBlend(seriesModel, chartView) {\n var blendMode = seriesModel.get('blendMode') || null;\n chartView.group.traverse(function (el) {\n // FIXME marker and other components\n if (!el.isGroup) {\n // Only set if blendMode is changed. In case element is incremental and don't wan't to rerender.\n if (el.style.blend !== blendMode) {\n el.setStyle('blend', blendMode);\n }\n }\n\n if (el.eachPendingDisplayable) {\n el.eachPendingDisplayable(function (displayable) {\n displayable.setStyle('blend', blendMode);\n });\n }\n });\n}\n/**\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateZ(model, view) {\n var z = model.get('z');\n var zlevel = model.get('zlevel'); // Set z and zlevel\n\n view.group.traverse(function (el) {\n if (el.type !== 'group') {\n z != null && (el.z = z);\n zlevel != null && (el.zlevel = zlevel);\n }\n });\n}\n\nfunction createExtensionAPI(ecInstance) {\n var coordSysMgr = ecInstance._coordSysMgr;\n return zrUtil.extend(new ExtensionAPI(ecInstance), {\n // Inject methods\n getCoordinateSystems: zrUtil.bind(coordSysMgr.getCoordinateSystems, coordSysMgr),\n getComponentByElement: function (el) {\n while (el) {\n var modelInfo = el.__ecComponentInfo;\n\n if (modelInfo != null) {\n return ecInstance._model.getComponent(modelInfo.mainType, modelInfo.index);\n }\n\n el = el.parent;\n }\n }\n });\n}\n/**\n * @class\n * Usage of query:\n * `chart.on('click', query, handler);`\n * The `query` can be:\n * + The component type query string, only `mainType` or `mainType.subType`,\n * like: 'xAxis', 'series', 'xAxis.category' or 'series.line'.\n * + The component query object, like:\n * `{seriesIndex: 2}`, `{seriesName: 'xx'}`, `{seriesId: 'some'}`,\n * `{xAxisIndex: 2}`, `{xAxisName: 'xx'}`, `{xAxisId: 'some'}`.\n * + The data query object, like:\n * `{dataIndex: 123}`, `{dataType: 'link'}`, `{name: 'some'}`.\n * + The other query object (cmponent customized query), like:\n * `{element: 'some'}` (only available in custom series).\n *\n * Caveat: If a prop in the `query` object is `null/undefined`, it is the\n * same as there is no such prop in the `query` object.\n */\n\n\nfunction EventProcessor() {\n // These info required: targetEl, packedEvent, model, view\n this.eventInfo;\n}\n\nEventProcessor.prototype = {\n constructor: EventProcessor,\n normalizeQuery: function (query) {\n var cptQuery = {};\n var dataQuery = {};\n var otherQuery = {}; // `query` is `mainType` or `mainType.subType` of component.\n\n if (zrUtil.isString(query)) {\n var condCptType = parseClassType(query); // `.main` and `.sub` may be ''.\n\n cptQuery.mainType = condCptType.main || null;\n cptQuery.subType = condCptType.sub || null;\n } // `query` is an object, convert to {mainType, index, name, id}.\n else {\n // `xxxIndex`, `xxxName`, `xxxId`, `name`, `dataIndex`, `dataType` is reserved,\n // can not be used in `compomentModel.filterForExposedEvent`.\n var suffixes = ['Index', 'Name', 'Id'];\n var dataKeys = {\n name: 1,\n dataIndex: 1,\n dataType: 1\n };\n zrUtil.each(query, function (val, key) {\n var reserved = false;\n\n for (var i = 0; i < suffixes.length; i++) {\n var propSuffix = suffixes[i];\n var suffixPos = key.lastIndexOf(propSuffix);\n\n if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {\n var mainType = key.slice(0, suffixPos); // Consider `dataIndex`.\n\n if (mainType !== 'data') {\n cptQuery.mainType = mainType;\n cptQuery[propSuffix.toLowerCase()] = val;\n reserved = true;\n }\n }\n }\n\n if (dataKeys.hasOwnProperty(key)) {\n dataQuery[key] = val;\n reserved = true;\n }\n\n if (!reserved) {\n otherQuery[key] = val;\n }\n });\n }\n\n return {\n cptQuery: cptQuery,\n dataQuery: dataQuery,\n otherQuery: otherQuery\n };\n },\n filter: function (eventType, query, args) {\n // They should be assigned before each trigger call.\n var eventInfo = this.eventInfo;\n\n if (!eventInfo) {\n return true;\n }\n\n var targetEl = eventInfo.targetEl;\n var packedEvent = eventInfo.packedEvent;\n var model = eventInfo.model;\n var view = eventInfo.view; // For event like 'globalout'.\n\n if (!model || !view) {\n return true;\n }\n\n var cptQuery = query.cptQuery;\n var dataQuery = query.dataQuery;\n return check(cptQuery, model, 'mainType') && check(cptQuery, model, 'subType') && check(cptQuery, model, 'index', 'componentIndex') && check(cptQuery, model, 'name') && check(cptQuery, model, 'id') && check(dataQuery, packedEvent, 'name') && check(dataQuery, packedEvent, 'dataIndex') && check(dataQuery, packedEvent, 'dataType') && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));\n\n function check(query, host, prop, propOnHost) {\n return query[prop] == null || host[propOnHost || prop] === query[prop];\n }\n },\n afterTrigger: function () {\n // Make sure the eventInfo wont be used in next trigger.\n this.eventInfo = null;\n }\n};\n/**\n * @type {Object} key: actionType.\n * @inner\n */\n\nvar actions = {};\n/**\n * Map eventType to actionType\n * @type {Object}\n */\n\nvar eventActionMap = {};\n/**\n * Data processor functions of each stage\n * @type {Array.>}\n * @inner\n */\n\nvar dataProcessorFuncs = [];\n/**\n * @type {Array.}\n * @inner\n */\n\nvar optionPreprocessorFuncs = [];\n/**\n * @type {Array.}\n * @inner\n */\n\nvar postUpdateFuncs = [];\n/**\n * Visual encoding functions of each stage\n * @type {Array.>}\n */\n\nvar visualFuncs = [];\n/**\n * Theme storage\n * @type {Object.}\n */\n\nvar themeStorage = {};\n/**\n * Loading effects\n */\n\nvar loadingEffects = {};\nvar instances = {};\nvar connectedGroups = {};\nvar idBase = new Date() - 0;\nvar groupIdBase = new Date() - 0;\nvar DOM_ATTRIBUTE_KEY = '_echarts_instance_';\n\nfunction enableConnect(chart) {\n var STATUS_PENDING = 0;\n var STATUS_UPDATING = 1;\n var STATUS_UPDATED = 2;\n var STATUS_KEY = '__connectUpdateStatus';\n\n function updateConnectedChartsStatus(charts, status) {\n for (var i = 0; i < charts.length; i++) {\n var otherChart = charts[i];\n otherChart[STATUS_KEY] = status;\n }\n }\n\n each(eventActionMap, function (actionType, eventType) {\n chart._messageCenter.on(eventType, function (event) {\n if (connectedGroups[chart.group] && chart[STATUS_KEY] !== STATUS_PENDING) {\n if (event && event.escapeConnect) {\n return;\n }\n\n var action = chart.makeActionFromEvent(event);\n var otherCharts = [];\n each(instances, function (otherChart) {\n if (otherChart !== chart && otherChart.group === chart.group) {\n otherCharts.push(otherChart);\n }\n });\n updateConnectedChartsStatus(otherCharts, STATUS_PENDING);\n each(otherCharts, function (otherChart) {\n if (otherChart[STATUS_KEY] !== STATUS_UPDATING) {\n otherChart.dispatchAction(action);\n }\n });\n updateConnectedChartsStatus(otherCharts, STATUS_UPDATED);\n }\n });\n });\n}\n/**\n * @param {HTMLElement} dom\n * @param {Object} [theme]\n * @param {Object} opts\n * @param {number} [opts.devicePixelRatio] Use window.devicePixelRatio by default\n * @param {string} [opts.renderer] Can choose 'canvas' or 'svg' to render the chart.\n * @param {number} [opts.width] Use clientWidth of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Use clientHeight of the input `dom` by default.\n * Can be 'auto' (the same as null/undefined)\n */\n\n\nfunction init(dom, theme, opts) {\n var existInstance = getInstanceByDom(dom);\n\n if (existInstance) {\n return existInstance;\n }\n\n var chart = new ECharts(dom, theme, opts);\n chart.id = 'ec_' + idBase++;\n instances[chart.id] = chart;\n modelUtil.setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\n enableConnect(chart);\n return chart;\n}\n/**\n * @return {string|Array.} groupId\n */\n\n\nfunction connect(groupId) {\n // Is array of charts\n if (zrUtil.isArray(groupId)) {\n var charts = groupId;\n groupId = null; // If any chart has group\n\n each(charts, function (chart) {\n if (chart.group != null) {\n groupId = chart.group;\n }\n });\n groupId = groupId || 'g_' + groupIdBase++;\n each(charts, function (chart) {\n chart.group = groupId;\n });\n }\n\n connectedGroups[groupId] = true;\n return groupId;\n}\n/**\n * @DEPRECATED\n * @return {string} groupId\n */\n\n\nfunction disConnect(groupId) {\n connectedGroups[groupId] = false;\n}\n/**\n * @return {string} groupId\n */\n\n\nvar disconnect = disConnect;\n/**\n * Dispose a chart instance\n * @param {module:echarts~ECharts|HTMLDomElement|string} chart\n */\n\nfunction dispose(chart) {\n if (typeof chart === 'string') {\n chart = instances[chart];\n } else if (!(chart instanceof ECharts)) {\n // Try to treat as dom\n chart = getInstanceByDom(chart);\n }\n\n if (chart instanceof ECharts && !chart.isDisposed()) {\n chart.dispose();\n }\n}\n/**\n * @param {HTMLElement} dom\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceByDom(dom) {\n return instances[modelUtil.getAttribute(dom, DOM_ATTRIBUTE_KEY)];\n}\n/**\n * @param {string} key\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceById(key) {\n return instances[key];\n}\n/**\n * Register theme\n */\n\n\nfunction registerTheme(name, theme) {\n themeStorage[name] = theme;\n}\n/**\n * Register option preprocessor\n * @param {Function} preprocessorFunc\n */\n\n\nfunction registerPreprocessor(preprocessorFunc) {\n optionPreprocessorFuncs.push(preprocessorFunc);\n}\n/**\n * @param {number} [priority=1000]\n * @param {Object|Function} processor\n */\n\n\nfunction registerProcessor(priority, processor) {\n normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_FILTER);\n}\n/**\n * Register postUpdater\n * @param {Function} postUpdateFunc\n */\n\n\nfunction registerPostUpdate(postUpdateFunc) {\n postUpdateFuncs.push(postUpdateFunc);\n}\n/**\n * Usage:\n * registerAction('someAction', 'someEvent', function () { ... });\n * registerAction('someAction', function () { ... });\n * registerAction(\n * {type: 'someAction', event: 'someEvent', update: 'updateView'},\n * function () { ... }\n * );\n *\n * @param {(string|Object)} actionInfo\n * @param {string} actionInfo.type\n * @param {string} [actionInfo.event]\n * @param {string} [actionInfo.update]\n * @param {string} [eventName]\n * @param {Function} action\n */\n\n\nfunction registerAction(actionInfo, eventName, action) {\n if (typeof eventName === 'function') {\n action = eventName;\n eventName = '';\n }\n\n var actionType = isObject(actionInfo) ? actionInfo.type : [actionInfo, actionInfo = {\n event: eventName\n }][0]; // Event name is all lowercase\n\n actionInfo.event = (actionInfo.event || actionType).toLowerCase();\n eventName = actionInfo.event; // Validate action type and event name.\n\n assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));\n\n if (!actions[actionType]) {\n actions[actionType] = {\n action: action,\n actionInfo: actionInfo\n };\n }\n\n eventActionMap[eventName] = actionType;\n}\n/**\n * @param {string} type\n * @param {*} CoordinateSystem\n */\n\n\nfunction registerCoordinateSystem(type, CoordinateSystem) {\n CoordinateSystemManager.register(type, CoordinateSystem);\n}\n/**\n * Get dimensions of specified coordinate system.\n * @param {string} type\n * @return {Array.}\n */\n\n\nfunction getCoordinateSystemDimensions(type) {\n var coordSysCreator = CoordinateSystemManager.get(type);\n\n if (coordSysCreator) {\n return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice();\n }\n}\n/**\n * Layout is a special stage of visual encoding\n * Most visual encoding like color are common for different chart\n * But each chart has it's own layout algorithm\n *\n * @param {number} [priority=1000]\n * @param {Function} layoutTask\n */\n\n\nfunction registerLayout(priority, layoutTask) {\n normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\n}\n/**\n * @param {number} [priority=3000]\n * @param {module:echarts/stream/Task} visualTask\n */\n\n\nfunction registerVisual(priority, visualTask) {\n normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\n}\n/**\n * @param {Object|Function} fn: {seriesType, createOnAllSeries, performRawSeries, reset}\n */\n\n\nfunction normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\n if (isFunction(priority) || isObject(priority)) {\n fn = priority;\n priority = defaultPriority;\n }\n\n var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\n stageHandler.__prio = priority;\n stageHandler.__raw = fn;\n targetList.push(stageHandler);\n return stageHandler;\n}\n/**\n * @param {string} name\n */\n\n\nfunction registerLoading(name, loadingFx) {\n loadingEffects[name] = loadingFx;\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentModel(opts\n/*, superClass*/\n) {\n // var Clazz = ComponentModel;\n // if (superClass) {\n // var classType = parseClassType(superClass);\n // Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n // }\n return ComponentModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentView(opts\n/*, superClass*/\n) {\n // var Clazz = ComponentView;\n // if (superClass) {\n // var classType = parseClassType(superClass);\n // Clazz = ComponentView.getClass(classType.main, classType.sub, true);\n // }\n return ComponentView.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendSeriesModel(opts\n/*, superClass*/\n) {\n // var Clazz = SeriesModel;\n // if (superClass) {\n // superClass = 'series.' + superClass.replace('series.', '');\n // var classType = parseClassType(superClass);\n // Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n // }\n return SeriesModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendChartView(opts\n/*, superClass*/\n) {\n // var Clazz = ChartView;\n // if (superClass) {\n // superClass = superClass.replace('series.', '');\n // var classType = parseClassType(superClass);\n // Clazz = ChartView.getClass(classType.main, true);\n // }\n return ChartView.extend(opts);\n}\n/**\n * ZRender need a canvas context to do measureText.\n * But in node environment canvas may be created by node-canvas.\n * So we need to specify how to create a canvas instead of using document.createElement('canvas')\n *\n * Be careful of using it in the browser.\n *\n * @param {Function} creator\n * @example\n * var Canvas = require('canvas');\n * var echarts = require('echarts');\n * echarts.setCanvasCreator(function () {\n * // Small size is enough.\n * return new Canvas(32, 32);\n * });\n */\n\n\nfunction setCanvasCreator(creator) {\n zrUtil.$override('createCanvas', creator);\n}\n/**\n * @param {string} mapName\n * @param {Array.|Object|string} geoJson\n * @param {Object} [specialAreas]\n *\n * @example GeoJSON\n * $.get('USA.json', function (geoJson) {\n * echarts.registerMap('USA', geoJson);\n * // Or\n * echarts.registerMap('USA', {\n * geoJson: geoJson,\n * specialAreas: {}\n * })\n * });\n *\n * $.get('airport.svg', function (svg) {\n * echarts.registerMap('airport', {\n * svg: svg\n * }\n * });\n *\n * echarts.registerMap('eu', [\n * {svg: eu-topographic.svg},\n * {geoJSON: eu.json}\n * ])\n */\n\n\nfunction registerMap(mapName, geoJson, specialAreas) {\n mapDataStorage.registerMap(mapName, geoJson, specialAreas);\n}\n/**\n * @param {string} mapName\n * @return {Object}\n */\n\n\nfunction getMap(mapName) {\n // For backward compatibility, only return the first one.\n var records = mapDataStorage.retrieveMap(mapName);\n return records && records[0] && {\n geoJson: records[0].geoJSON,\n specialAreas: records[0].specialAreas\n };\n}\n\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesColor);\nregisterPreprocessor(backwardCompat);\nregisterProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\nregisterLoading('default', loadingDefault); // Default actions\n\nregisterAction({\n type: 'highlight',\n event: 'highlight',\n update: 'highlight'\n}, zrUtil.noop);\nregisterAction({\n type: 'downplay',\n event: 'downplay',\n update: 'downplay'\n}, zrUtil.noop); // Default theme\n\nregisterTheme('light', lightTheme);\nregisterTheme('dark', darkTheme); // For backward compatibility, where the namespace `dataTool` will\n// be mounted on `echarts` is the extension `dataTool` is imported.\n\nvar dataTool = {};\nexports.version = version;\nexports.dependencies = dependencies;\nexports.PRIORITY = PRIORITY;\nexports.init = init;\nexports.connect = connect;\nexports.disConnect = disConnect;\nexports.disconnect = disconnect;\nexports.dispose = dispose;\nexports.getInstanceByDom = getInstanceByDom;\nexports.getInstanceById = getInstanceById;\nexports.registerTheme = registerTheme;\nexports.registerPreprocessor = registerPreprocessor;\nexports.registerProcessor = registerProcessor;\nexports.registerPostUpdate = registerPostUpdate;\nexports.registerAction = registerAction;\nexports.registerCoordinateSystem = registerCoordinateSystem;\nexports.getCoordinateSystemDimensions = getCoordinateSystemDimensions;\nexports.registerLayout = registerLayout;\nexports.registerVisual = registerVisual;\nexports.registerLoading = registerLoading;\nexports.extendComponentModel = extendComponentModel;\nexports.extendComponentView = extendComponentView;\nexports.extendSeriesModel = extendSeriesModel;\nexports.extendChartView = extendChartView;\nexports.setCanvasCreator = setCanvasCreator;\nexports.registerMap = registerMap;\nexports.getMap = getMap;\nexports.dataTool = dataTool;\nvar ___ec_export = require(\"./export\");\n(function () {\n for (var key in ___ec_export) {\n if (___ec_export.hasOwnProperty(key)) {\n exports[key] = ___ec_export[key];\n }\n }\n})();","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar pathTool = require(\"zrender/lib/tool/path\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar Transformable = require(\"zrender/lib/mixin/Transformable\");\n\nvar ZImage = require(\"zrender/lib/graphic/Image\");\n\nexports.Image = ZImage;\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nexports.Group = Group;\n\nvar Text = require(\"zrender/lib/graphic/Text\");\n\nexports.Text = Text;\n\nvar Circle = require(\"zrender/lib/graphic/shape/Circle\");\n\nexports.Circle = Circle;\n\nvar Sector = require(\"zrender/lib/graphic/shape/Sector\");\n\nexports.Sector = Sector;\n\nvar Ring = require(\"zrender/lib/graphic/shape/Ring\");\n\nexports.Ring = Ring;\n\nvar Polygon = require(\"zrender/lib/graphic/shape/Polygon\");\n\nexports.Polygon = Polygon;\n\nvar Polyline = require(\"zrender/lib/graphic/shape/Polyline\");\n\nexports.Polyline = Polyline;\n\nvar Rect = require(\"zrender/lib/graphic/shape/Rect\");\n\nexports.Rect = Rect;\n\nvar Line = require(\"zrender/lib/graphic/shape/Line\");\n\nexports.Line = Line;\n\nvar BezierCurve = require(\"zrender/lib/graphic/shape/BezierCurve\");\n\nexports.BezierCurve = BezierCurve;\n\nvar Arc = require(\"zrender/lib/graphic/shape/Arc\");\n\nexports.Arc = Arc;\n\nvar CompoundPath = require(\"zrender/lib/graphic/CompoundPath\");\n\nexports.CompoundPath = CompoundPath;\n\nvar LinearGradient = require(\"zrender/lib/graphic/LinearGradient\");\n\nexports.LinearGradient = LinearGradient;\n\nvar RadialGradient = require(\"zrender/lib/graphic/RadialGradient\");\n\nexports.RadialGradient = RadialGradient;\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nexports.BoundingRect = BoundingRect;\n\nvar IncrementalDisplayable = require(\"zrender/lib/graphic/IncrementalDisplayable\");\n\nexports.IncrementalDisplayable = IncrementalDisplayable;\n\nvar subPixelOptimizeUtil = require(\"zrender/lib/graphic/helper/subPixelOptimize\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar EMPTY_OBJ = {};\nvar Z2_EMPHASIS_LIFT = 1; // key: label model property nane, value: style property name.\n\nvar CACHED_LABEL_STYLE_PROPERTIES = {\n color: 'textFill',\n textBorderColor: 'textStroke',\n textBorderWidth: 'textStrokeWidth'\n};\nvar EMPHASIS = 'emphasis';\nvar NORMAL = 'normal'; // Reserve 0 as default.\n\nvar _highlightNextDigit = 1;\nvar _highlightKeyMap = {};\nvar _customShapeMap = {};\n/**\n * Extend shape with parameters\n */\n\nfunction extendShape(opts) {\n return Path.extend(opts);\n}\n/**\n * Extend path\n */\n\n\nfunction extendPath(pathData, opts) {\n return pathTool.extendFromString(pathData, opts);\n}\n/**\n * Register a user defined shape.\n * The shape class can be fetched by `getShapeClass`\n * This method will overwrite the registered shapes, including\n * the registered built-in shapes, if using the same `name`.\n * The shape can be used in `custom series` and\n * `graphic component` by declaring `{type: name}`.\n *\n * @param {string} name\n * @param {Object} ShapeClass Can be generated by `extendShape`.\n */\n\n\nfunction registerShape(name, ShapeClass) {\n _customShapeMap[name] = ShapeClass;\n}\n/**\n * Find shape class registered by `registerShape`. Usually used in\n * fetching user defined shape.\n *\n * [Caution]:\n * (1) This method **MUST NOT be used inside echarts !!!**, unless it is prepared\n * to use user registered shapes.\n * Because the built-in shape (see `getBuiltInShape`) will be registered by\n * `registerShape` by default. That enables users to get both built-in\n * shapes as well as the shapes belonging to themsleves. But users can overwrite\n * the built-in shapes by using names like 'circle', 'rect' via calling\n * `registerShape`. So the echarts inner featrues should not fetch shapes from here\n * in case that it is overwritten by users, except that some features, like\n * `custom series`, `graphic component`, do it deliberately.\n *\n * (2) In the features like `custom series`, `graphic component`, the user input\n * `{tpye: 'xxx'}` does not only specify shapes but also specify other graphic\n * elements like `'group'`, `'text'`, `'image'` or event `'path'`. Those names\n * are reserved names, that is, if some user register a shape named `'image'`,\n * the shape will not be used. If we intending to add some more reserved names\n * in feature, that might bring break changes (disable some existing user shape\n * names). But that case probably rearly happen. So we dont make more mechanism\n * to resolve this issue here.\n *\n * @param {string} name\n * @return {Object} The shape class. If not found, return nothing.\n */\n\n\nfunction getShapeClass(name) {\n if (_customShapeMap.hasOwnProperty(name)) {\n return _customShapeMap[name];\n }\n}\n/**\n * Create a path element from path data string\n * @param {string} pathData\n * @param {Object} opts\n * @param {module:zrender/core/BoundingRect} rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makePath(pathData, opts, rect, layout) {\n var path = pathTool.createFromString(pathData, opts);\n\n if (rect) {\n if (layout === 'center') {\n rect = centerGraphic(rect, path.getBoundingRect());\n }\n\n resizePath(path, rect);\n }\n\n return path;\n}\n/**\n * Create a image element from image url\n * @param {string} imageUrl image url\n * @param {Object} opts options\n * @param {module:zrender/core/BoundingRect} rect constrain rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makeImage(imageUrl, rect, layout) {\n var path = new ZImage({\n style: {\n image: imageUrl,\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n },\n onload: function (img) {\n if (layout === 'center') {\n var boundingRect = {\n width: img.width,\n height: img.height\n };\n path.setStyle(centerGraphic(rect, boundingRect));\n }\n }\n });\n return path;\n}\n/**\n * Get position of centered element in bounding box.\n *\n * @param {Object} rect element local bounding box\n * @param {Object} boundingRect constraint bounding box\n * @return {Object} element position containing x, y, width, and height\n */\n\n\nfunction centerGraphic(rect, boundingRect) {\n // Set rect to center, keep width / height ratio.\n var aspect = boundingRect.width / boundingRect.height;\n var width = rect.height * aspect;\n var height;\n\n if (width <= rect.width) {\n height = rect.height;\n } else {\n width = rect.width;\n height = width / aspect;\n }\n\n var cx = rect.x + rect.width / 2;\n var cy = rect.y + rect.height / 2;\n return {\n x: cx - width / 2,\n y: cy - height / 2,\n width: width,\n height: height\n };\n}\n\nvar mergePath = pathTool.mergePath;\n/**\n * Resize a path to fit the rect\n * @param {module:zrender/graphic/Path} path\n * @param {Object} rect\n */\n\nfunction resizePath(path, rect) {\n if (!path.applyTransform) {\n return;\n }\n\n var pathRect = path.getBoundingRect();\n var m = pathRect.calculateTransform(rect);\n path.applyTransform(m);\n}\n/**\n * Sub pixel optimize line for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x1]\n * @param {number} [param.shape.y1]\n * @param {number} [param.shape.x2]\n * @param {number} [param.shape.y2]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeLine(param) {\n subPixelOptimizeUtil.subPixelOptimizeLine(param.shape, param.shape, param.style);\n return param;\n}\n/**\n * Sub pixel optimize rect for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x]\n * @param {number} [param.shape.y]\n * @param {number} [param.shape.width]\n * @param {number} [param.shape.height]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeRect(param) {\n subPixelOptimizeUtil.subPixelOptimizeRect(param.shape, param.shape, param.style);\n return param;\n}\n/**\n * Sub pixel optimize for canvas\n *\n * @param {number} position Coordinate, such as x, y\n * @param {number} lineWidth Should be nonnegative integer.\n * @param {boolean=} positiveOrNegative Default false (negative).\n * @return {number} Optimized position.\n */\n\n\nvar subPixelOptimize = subPixelOptimizeUtil.subPixelOptimize;\n\nfunction hasFillOrStroke(fillOrStroke) {\n return fillOrStroke != null && fillOrStroke !== 'none';\n} // Most lifted color are duplicated.\n\n\nvar liftedColorMap = zrUtil.createHashMap();\nvar liftedColorCount = 0;\n\nfunction liftColor(color) {\n if (typeof color !== 'string') {\n return color;\n }\n\n var liftedColor = liftedColorMap.get(color);\n\n if (!liftedColor) {\n liftedColor = colorTool.lift(color, -0.1);\n\n if (liftedColorCount < 10000) {\n liftedColorMap.set(color, liftedColor);\n liftedColorCount++;\n }\n }\n\n return liftedColor;\n}\n\nfunction cacheElementStl(el) {\n if (!el.__hoverStlDirty) {\n return;\n }\n\n el.__hoverStlDirty = false;\n var hoverStyle = el.__hoverStl;\n\n if (!hoverStyle) {\n el.__cachedNormalStl = el.__cachedNormalZ2 = null;\n return;\n }\n\n var normalStyle = el.__cachedNormalStl = {};\n el.__cachedNormalZ2 = el.z2;\n var elStyle = el.style;\n\n for (var name in hoverStyle) {\n // See comment in `singleEnterEmphasis`.\n if (hoverStyle[name] != null) {\n normalStyle[name] = elStyle[name];\n }\n } // Always cache fill and stroke to normalStyle for lifting color.\n\n\n normalStyle.fill = elStyle.fill;\n normalStyle.stroke = elStyle.stroke;\n}\n\nfunction singleEnterEmphasis(el) {\n var hoverStl = el.__hoverStl;\n\n if (!hoverStl || el.__highlighted) {\n return;\n }\n\n var zr = el.__zr;\n var useHoverLayer = el.useHoverLayer && zr && zr.painter.type === 'canvas';\n el.__highlighted = useHoverLayer ? 'layer' : 'plain';\n\n if (el.isGroup || !zr && el.useHoverLayer) {\n return;\n }\n\n var elTarget = el;\n var targetStyle = el.style;\n\n if (useHoverLayer) {\n elTarget = zr.addHover(el);\n targetStyle = elTarget.style;\n }\n\n rollbackDefaultTextStyle(targetStyle);\n\n if (!useHoverLayer) {\n cacheElementStl(elTarget);\n } // styles can be:\n // {\n // label: {\n // show: false,\n // position: 'outside',\n // fontSize: 18\n // },\n // emphasis: {\n // label: {\n // show: true\n // }\n // }\n // },\n // where properties of `emphasis` may not appear in `normal`. We previously use\n // module:echarts/util/model#defaultEmphasis to merge `normal` to `emphasis`.\n // But consider rich text and setOption in merge mode, it is impossible to cover\n // all properties in merge. So we use merge mode when setting style here.\n // But we choose the merge strategy that only properties that is not `null/undefined`.\n // Because when making a textStyle (espacially rich text), it is not easy to distinguish\n // `hasOwnProperty` and `null/undefined` in code, so we trade them as the same for simplicity.\n // But this strategy brings a trouble that `null/undefined` can not be used to remove\n // style any more in `emphasis`. Users can both set properties directly on normal and\n // emphasis to avoid this issue, or we might support `'none'` for this case if required.\n\n\n targetStyle.extendFrom(hoverStl);\n setDefaultHoverFillStroke(targetStyle, hoverStl, 'fill');\n setDefaultHoverFillStroke(targetStyle, hoverStl, 'stroke');\n applyDefaultTextStyle(targetStyle);\n\n if (!useHoverLayer) {\n el.dirty(false);\n el.z2 += Z2_EMPHASIS_LIFT;\n }\n}\n\nfunction setDefaultHoverFillStroke(targetStyle, hoverStyle, prop) {\n if (!hasFillOrStroke(hoverStyle[prop]) && hasFillOrStroke(targetStyle[prop])) {\n targetStyle[prop] = liftColor(targetStyle[prop]);\n }\n}\n\nfunction singleEnterNormal(el) {\n var highlighted = el.__highlighted;\n\n if (!highlighted) {\n return;\n }\n\n el.__highlighted = false;\n\n if (el.isGroup) {\n return;\n }\n\n if (highlighted === 'layer') {\n el.__zr && el.__zr.removeHover(el);\n } else {\n var style = el.style;\n var normalStl = el.__cachedNormalStl;\n\n if (normalStl) {\n rollbackDefaultTextStyle(style);\n el.setStyle(normalStl);\n applyDefaultTextStyle(style);\n } // `__cachedNormalZ2` will not be reset if calling `setElementHoverStyle`\n // when `el` is on emphasis state. So here by comparing with 1, we try\n // hard to make the bug case rare.\n\n\n var normalZ2 = el.__cachedNormalZ2;\n\n if (normalZ2 != null && el.z2 - normalZ2 === Z2_EMPHASIS_LIFT) {\n el.z2 = normalZ2;\n }\n }\n}\n\nfunction traverseUpdate(el, updater, commonParam) {\n // If root is group, also enter updater for `highDownOnUpdate`.\n var fromState = NORMAL;\n var toState = NORMAL;\n var trigger; // See the rule of `highDownOnUpdate` on `graphic.setAsHighDownDispatcher`.\n\n el.__highlighted && (fromState = EMPHASIS, trigger = true);\n updater(el, commonParam);\n el.__highlighted && (toState = EMPHASIS, trigger = true);\n el.isGroup && el.traverse(function (child) {\n !child.isGroup && updater(child, commonParam);\n });\n trigger && el.__highDownOnUpdate && el.__highDownOnUpdate(fromState, toState);\n}\n/**\n * Set hover style (namely \"emphasis style\") of element, based on the current\n * style of the given `el`.\n * This method should be called after all of the normal styles have been adopted\n * to the `el`. See the reason on `setHoverStyle`.\n *\n * @param {module:zrender/Element} el Should not be `zrender/container/Group`.\n * @param {Object} [el.hoverStyle] Can be set on el or its descendants,\n * e.g., `el.hoverStyle = ...; graphic.setHoverStyle(el); `.\n * Often used when item group has a label element and it's hoverStyle is different.\n * @param {Object|boolean} [hoverStl] The specified hover style.\n * If set as `false`, disable the hover style.\n * Similarly, The `el.hoverStyle` can alse be set\n * as `false` to disable the hover style.\n * Otherwise, use the default hover style if not provided.\n */\n\n\nfunction setElementHoverStyle(el, hoverStl) {\n // For performance consideration, it might be better to make the \"hover style\" only the\n // difference properties from the \"normal style\", but not a entire copy of all styles.\n hoverStl = el.__hoverStl = hoverStl !== false && (el.hoverStyle || hoverStl || {});\n el.__hoverStlDirty = true; // FIXME\n // It is not completely right to save \"normal\"/\"emphasis\" flag on elements.\n // It probably should be saved on `data` of series. Consider the cases:\n // (1) A highlighted elements are moved out of the view port and re-enter\n // again by dataZoom.\n // (2) call `setOption` and replace elements totally when they are highlighted.\n\n if (el.__highlighted) {\n // Consider the case:\n // The styles of a highlighted `el` is being updated. The new \"emphasis style\"\n // should be adapted to the `el`. Notice here new \"normal styles\" should have\n // been set outside and the cached \"normal style\" is out of date.\n el.__cachedNormalStl = null; // Do not clear `__cachedNormalZ2` here, because setting `z2` is not a constraint\n // of this method. In most cases, `z2` is not set and hover style should be able\n // to rollback. Of course, that would bring bug, but only in a rare case, see\n // `doSingleLeaveHover` for details.\n\n singleEnterNormal(el);\n singleEnterEmphasis(el);\n }\n}\n\nfunction onElementMouseOver(e) {\n !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !this.__highByOuter && traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementMouseOut(e) {\n !shouldSilent(this, e) // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !this.__highByOuter && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction onElementEmphasisEvent(highlightDigit) {\n this.__highByOuter |= 1 << (highlightDigit || 0);\n traverseUpdate(this, singleEnterEmphasis);\n}\n\nfunction onElementNormalEvent(highlightDigit) {\n !(this.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdate(this, singleEnterNormal);\n}\n\nfunction shouldSilent(el, e) {\n return el.__highDownSilentOnTouch && e.zrByTouch;\n}\n/**\n * Set hover style (namely \"emphasis style\") of element,\n * based on the current style of the given `el`.\n *\n * (1)\n * **CONSTRAINTS** for this method:\n * This method MUST be called after all of the normal styles having been adopted\n * to the `el`.\n * The input `hoverStyle` (that is, \"emphasis style\") MUST be the subset of the\n * \"normal style\" having been set to the el.\n * `color` MUST be one of the \"normal styles\" (because color might be lifted as\n * a default hover style).\n *\n * The reason: this method treat the current style of the `el` as the \"normal style\"\n * and cache them when enter/update the \"emphasis style\". Consider the case: the `el`\n * is in \"emphasis\" state and `setOption`/`dispatchAction` trigger the style updating\n * logic, where the el should shift from the original emphasis style to the new\n * \"emphasis style\" and should be able to \"downplay\" back to the new \"normal style\".\n *\n * Indeed, it is error-prone to make a interface has so many constraints, but I have\n * not found a better solution yet to fit the backward compatibility, performance and\n * the current programming style.\n *\n * (2)\n * Call the method for a \"root\" element once. Do not call it for each descendants.\n * If the descendants elemenets of a group has itself hover style different from the\n * root group, we can simply mount the style on `el.hoverStyle` for them, but should\n * not call this method for them.\n *\n * (3) These input parameters can be set directly on `el`:\n *\n * @param {module:zrender/Element} el\n * @param {Object} [el.hoverStyle] See `graphic.setElementHoverStyle`.\n * @param {boolean} [el.highDownSilentOnTouch=false] See `graphic.setAsHighDownDispatcher`.\n * @param {Function} [el.highDownOnUpdate] See `graphic.setAsHighDownDispatcher`.\n * @param {Object|boolean} [hoverStyle] See `graphic.setElementHoverStyle`.\n */\n\n\nfunction setHoverStyle(el, hoverStyle) {\n setAsHighDownDispatcher(el, true);\n traverseUpdate(el, setElementHoverStyle, hoverStyle);\n}\n/**\n * @param {module:zrender/Element} el\n * @param {Function} [el.highDownOnUpdate] Called when state updated.\n * Since `setHoverStyle` has the constraint that it must be called after\n * all of the normal style updated, `highDownOnUpdate` is not needed to\n * trigger if both `fromState` and `toState` is 'normal', and needed to\n * trigger if both `fromState` and `toState` is 'emphasis', which enables\n * to sync outside style settings to \"emphasis\" state.\n * @this {string} This dispatcher `el`.\n * @param {string} fromState Can be \"normal\" or \"emphasis\".\n * `fromState` might equal to `toState`,\n * for example, when this method is called when `el` is\n * on \"emphasis\" state.\n * @param {string} toState Can be \"normal\" or \"emphasis\".\n *\n * FIXME\n * CAUTION: Do not expose `highDownOnUpdate` outside echarts.\n * Because it is not a complete solution. The update\n * listener should not have been mount in element,\n * and the normal/emphasis state should not have\n * mantained on elements.\n *\n * @param {boolean} [el.highDownSilentOnTouch=false]\n * In touch device, mouseover event will be trigger on touchstart event\n * (see module:zrender/dom/HandlerProxy). By this mechanism, we can\n * conveniently use hoverStyle when tap on touch screen without additional\n * code for compatibility.\n * But if the chart/component has select feature, which usually also use\n * hoverStyle, there might be conflict between 'select-highlight' and\n * 'hover-highlight' especially when roam is enabled (see geo for example).\n * In this case, `highDownSilentOnTouch` should be used to disable\n * hover-highlight on touch device.\n * @param {boolean} [asDispatcher=true] If `false`, do not set as \"highDownDispatcher\".\n */\n\n\nfunction setAsHighDownDispatcher(el, asDispatcher) {\n var disable = asDispatcher === false; // Make `highDownSilentOnTouch` and `highDownOnUpdate` only work after\n // `setAsHighDownDispatcher` called. Avoid it is modified by user unexpectedly.\n\n el.__highDownSilentOnTouch = el.highDownSilentOnTouch;\n el.__highDownOnUpdate = el.highDownOnUpdate; // Simple optimize, since this method might be\n // called for each elements of a group in some cases.\n\n if (!disable || el.__highDownDispatcher) {\n var method = disable ? 'off' : 'on'; // Duplicated function will be auto-ignored, see Eventful.js.\n\n el[method]('mouseover', onElementMouseOver)[method]('mouseout', onElementMouseOut); // Emphasis, normal can be triggered manually by API or other components like hover link.\n\n el[method]('emphasis', onElementEmphasisEvent)[method]('normal', onElementNormalEvent); // Also keep previous record.\n\n el.__highByOuter = el.__highByOuter || 0;\n el.__highDownDispatcher = !disable;\n }\n}\n/**\n * @param {module:zrender/src/Element} el\n * @return {boolean}\n */\n\n\nfunction isHighDownDispatcher(el) {\n return !!(el && el.__highDownDispatcher);\n}\n/**\n * Support hightlight/downplay record on each elements.\n * For the case: hover highlight/downplay (legend, visualMap, ...) and\n * user triggerred hightlight/downplay should not conflict.\n * Only all of the highlightDigit cleared, return to normal.\n * @param {string} highlightKey\n * @return {number} highlightDigit\n */\n\n\nfunction getHighlightDigit(highlightKey) {\n var highlightDigit = _highlightKeyMap[highlightKey];\n\n if (highlightDigit == null && _highlightNextDigit <= 32) {\n highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;\n }\n\n return highlightDigit;\n}\n/**\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} normalStyle\n * @param {Object} emphasisStyle\n * @param {module:echarts/model/Model} normalModel\n * @param {module:echarts/model/Model} emphasisModel\n * @param {Object} opt Check `opt` of `setTextStyleCommon` to find other props.\n * @param {string|Function} [opt.defaultText]\n * @param {module:echarts/model/Model} [opt.labelFetcher] Fetch text by\n * `opt.labelFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex)`\n * @param {module:echarts/model/Model} [opt.labelDataIndex] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex)`\n * @param {module:echarts/model/Model} [opt.labelDimIndex] Fetch text by\n * `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex)`\n * @param {Object} [normalSpecified]\n * @param {Object} [emphasisSpecified]\n */\n\n\nfunction setLabelStyle(normalStyle, emphasisStyle, normalModel, emphasisModel, opt, normalSpecified, emphasisSpecified) {\n opt = opt || EMPTY_OBJ;\n var labelFetcher = opt.labelFetcher;\n var labelDataIndex = opt.labelDataIndex;\n var labelDimIndex = opt.labelDimIndex; // This scenario, `label.normal.show = true; label.emphasis.show = false`,\n // is not supported util someone requests.\n\n var showNormal = normalModel.getShallow('show');\n var showEmphasis = emphasisModel.getShallow('show'); // Consider performance, only fetch label when necessary.\n // If `normal.show` is `false` and `emphasis.show` is `true` and `emphasis.formatter` is not set,\n // label should be displayed, where text is fetched by `normal.formatter` or `opt.defaultText`.\n\n var baseText;\n\n if (showNormal || showEmphasis) {\n if (labelFetcher) {\n baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex);\n }\n\n if (baseText == null) {\n baseText = zrUtil.isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt) : opt.defaultText;\n }\n }\n\n var normalStyleText = showNormal ? baseText : null;\n var emphasisStyleText = showEmphasis ? zrUtil.retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, 'emphasis', null, labelDimIndex) : null, baseText) : null; // Optimize: If style.text is null, text will not be drawn.\n\n if (normalStyleText != null || emphasisStyleText != null) {\n // Always set `textStyle` even if `normalStyle.text` is null, because default\n // values have to be set on `normalStyle`.\n // If we set default values on `emphasisStyle`, consider case:\n // Firstly, `setOption(... label: {normal: {text: null}, emphasis: {show: true}} ...);`\n // Secondly, `setOption(... label: {noraml: {show: true, text: 'abc', color: 'red'} ...);`\n // Then the 'red' will not work on emphasis.\n setTextStyle(normalStyle, normalModel, normalSpecified, opt);\n setTextStyle(emphasisStyle, emphasisModel, emphasisSpecified, opt, true);\n }\n\n normalStyle.text = normalStyleText;\n emphasisStyle.text = emphasisStyleText;\n}\n/**\n * Modify label style manually.\n * Only works after `setLabelStyle` and `setElementHoverStyle` called.\n *\n * @param {module:zrender/src/Element} el\n * @param {Object} [normalStyleProps] optional\n * @param {Object} [emphasisStyleProps] optional\n */\n\n\nfunction modifyLabelStyle(el, normalStyleProps, emphasisStyleProps) {\n var elStyle = el.style;\n\n if (normalStyleProps) {\n rollbackDefaultTextStyle(elStyle);\n el.setStyle(normalStyleProps);\n applyDefaultTextStyle(elStyle);\n }\n\n elStyle = el.__hoverStl;\n\n if (emphasisStyleProps && elStyle) {\n rollbackDefaultTextStyle(elStyle);\n zrUtil.extend(elStyle, emphasisStyleProps);\n applyDefaultTextStyle(elStyle);\n }\n}\n/**\n * Set basic textStyle properties.\n * See more info in `setTextStyleCommon`.\n * @param {Object|module:zrender/graphic/Style} textStyle\n * @param {module:echarts/model/Model} model\n * @param {Object} [specifiedTextStyle] Can be overrided by settings in model.\n * @param {Object} [opt] See `opt` of `setTextStyleCommon`.\n * @param {boolean} [isEmphasis]\n */\n\n\nfunction setTextStyle(textStyle, textStyleModel, specifiedTextStyle, opt, isEmphasis) {\n setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis);\n specifiedTextStyle && zrUtil.extend(textStyle, specifiedTextStyle); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n\n return textStyle;\n}\n/**\n * Set text option in the style.\n * See more info in `setTextStyleCommon`.\n * @deprecated\n * @param {Object} textStyle\n * @param {module:echarts/model/Model} labelModel\n * @param {string|boolean} defaultColor Default text color.\n * If set as false, it will be processed as a emphasis style.\n */\n\n\nfunction setText(textStyle, labelModel, defaultColor) {\n var opt = {\n isRectText: true\n };\n var isEmphasis;\n\n if (defaultColor === false) {\n isEmphasis = true;\n } else {\n // Support setting color as 'auto' to get visual color.\n opt.autoColor = defaultColor;\n }\n\n setTextStyleCommon(textStyle, labelModel, opt, isEmphasis); // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n}\n/**\n * The uniform entry of set text style, that is, retrieve style definitions\n * from `model` and set to `textStyle` object.\n *\n * Never in merge mode, but in overwrite mode, that is, all of the text style\n * properties will be set. (Consider the states of normal and emphasis and\n * default value can be adopted, merge would make the logic too complicated\n * to manage.)\n *\n * The `textStyle` object can either be a plain object or an instance of\n * `zrender/src/graphic/Style`, and either be the style of normal or emphasis.\n * After this mothod called, the `textStyle` object can then be used in\n * `el.setStyle(textStyle)` or `el.hoverStyle = textStyle`.\n *\n * Default value will be adopted and `insideRollbackOpt` will be created.\n * See `applyDefaultTextStyle` `rollbackDefaultTextStyle` for more details.\n *\n * opt: {\n * disableBox: boolean, Whether diable drawing box of block (outer most).\n * isRectText: boolean,\n * autoColor: string, specify a color when color is 'auto',\n * for textFill, textStroke, textBackgroundColor, and textBorderColor.\n * If autoColor specified, it is used as default textFill.\n * useInsideStyle:\n * `true`: Use inside style (textFill, textStroke, textStrokeWidth)\n * if `textFill` is not specified.\n * `false`: Do not use inside style.\n * `null/undefined`: use inside style if `isRectText` is true and\n * `textFill` is not specified and textPosition contains `'inside'`.\n * forceRich: boolean\n * }\n */\n\n\nfunction setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis) {\n // Consider there will be abnormal when merge hover style to normal style if given default value.\n opt = opt || EMPTY_OBJ;\n\n if (opt.isRectText) {\n var textPosition;\n\n if (opt.getTextPosition) {\n textPosition = opt.getTextPosition(textStyleModel, isEmphasis);\n } else {\n textPosition = textStyleModel.getShallow('position') || (isEmphasis ? null : 'inside'); // 'outside' is not a valid zr textPostion value, but used\n // in bar series, and magric type should be considered.\n\n textPosition === 'outside' && (textPosition = 'top');\n }\n\n textStyle.textPosition = textPosition;\n textStyle.textOffset = textStyleModel.getShallow('offset');\n var labelRotate = textStyleModel.getShallow('rotate');\n labelRotate != null && (labelRotate *= Math.PI / 180);\n textStyle.textRotation = labelRotate;\n textStyle.textDistance = zrUtil.retrieve2(textStyleModel.getShallow('distance'), isEmphasis ? null : 5);\n }\n\n var ecModel = textStyleModel.ecModel;\n var globalTextStyle = ecModel && ecModel.option.textStyle; // Consider case:\n // {\n // data: [{\n // value: 12,\n // label: {\n // rich: {\n // // no 'a' here but using parent 'a'.\n // }\n // }\n // }],\n // rich: {\n // a: { ... }\n // }\n // }\n\n var richItemNames = getRichItemNames(textStyleModel);\n var richResult;\n\n if (richItemNames) {\n richResult = {};\n\n for (var name in richItemNames) {\n if (richItemNames.hasOwnProperty(name)) {\n // Cascade is supported in rich.\n var richTextStyle = textStyleModel.getModel(['rich', name]); // In rich, never `disableBox`.\n // FIXME: consider `label: {formatter: '{a|xx}', color: 'blue', rich: {a: {}}}`,\n // the default color `'blue'` will not be adopted if no color declared in `rich`.\n // That might confuses users. So probably we should put `textStyleModel` as the\n // root ancestor of the `richTextStyle`. But that would be a break change.\n\n setTokenTextStyle(richResult[name] = {}, richTextStyle, globalTextStyle, opt, isEmphasis);\n }\n }\n }\n\n textStyle.rich = richResult;\n setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, true);\n\n if (opt.forceRich && !opt.textStyle) {\n opt.textStyle = {};\n }\n\n return textStyle;\n} // Consider case:\n// {\n// data: [{\n// value: 12,\n// label: {\n// rich: {\n// // no 'a' here but using parent 'a'.\n// }\n// }\n// }],\n// rich: {\n// a: { ... }\n// }\n// }\n\n\nfunction getRichItemNames(textStyleModel) {\n // Use object to remove duplicated names.\n var richItemNameMap;\n\n while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\n var rich = (textStyleModel.option || EMPTY_OBJ).rich;\n\n if (rich) {\n richItemNameMap = richItemNameMap || {};\n\n for (var name in rich) {\n if (rich.hasOwnProperty(name)) {\n richItemNameMap[name] = 1;\n }\n }\n }\n\n textStyleModel = textStyleModel.parentModel;\n }\n\n return richItemNameMap;\n}\n\nfunction setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, isBlock) {\n // In merge mode, default value should not be given.\n globalTextStyle = !isEmphasis && globalTextStyle || EMPTY_OBJ;\n textStyle.textFill = getAutoColor(textStyleModel.getShallow('color'), opt) || globalTextStyle.color;\n textStyle.textStroke = getAutoColor(textStyleModel.getShallow('textBorderColor'), opt) || globalTextStyle.textBorderColor;\n textStyle.textStrokeWidth = zrUtil.retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\n\n if (!isEmphasis) {\n if (isBlock) {\n textStyle.insideRollbackOpt = opt;\n applyDefaultTextStyle(textStyle);\n } // Set default finally.\n\n\n if (textStyle.textFill == null) {\n textStyle.textFill = opt.autoColor;\n }\n } // Do not use `getFont` here, because merge should be supported, where\n // part of these properties may be changed in emphasis style, and the\n // others should remain their original value got from normal style.\n\n\n textStyle.fontStyle = textStyleModel.getShallow('fontStyle') || globalTextStyle.fontStyle;\n textStyle.fontWeight = textStyleModel.getShallow('fontWeight') || globalTextStyle.fontWeight;\n textStyle.fontSize = textStyleModel.getShallow('fontSize') || globalTextStyle.fontSize;\n textStyle.fontFamily = textStyleModel.getShallow('fontFamily') || globalTextStyle.fontFamily;\n textStyle.textAlign = textStyleModel.getShallow('align');\n textStyle.textVerticalAlign = textStyleModel.getShallow('verticalAlign') || textStyleModel.getShallow('baseline');\n textStyle.textLineHeight = textStyleModel.getShallow('lineHeight');\n textStyle.textWidth = textStyleModel.getShallow('width');\n textStyle.textHeight = textStyleModel.getShallow('height');\n textStyle.textTag = textStyleModel.getShallow('tag');\n\n if (!isBlock || !opt.disableBox) {\n textStyle.textBackgroundColor = getAutoColor(textStyleModel.getShallow('backgroundColor'), opt);\n textStyle.textPadding = textStyleModel.getShallow('padding');\n textStyle.textBorderColor = getAutoColor(textStyleModel.getShallow('borderColor'), opt);\n textStyle.textBorderWidth = textStyleModel.getShallow('borderWidth');\n textStyle.textBorderRadius = textStyleModel.getShallow('borderRadius');\n textStyle.textBoxShadowColor = textStyleModel.getShallow('shadowColor');\n textStyle.textBoxShadowBlur = textStyleModel.getShallow('shadowBlur');\n textStyle.textBoxShadowOffsetX = textStyleModel.getShallow('shadowOffsetX');\n textStyle.textBoxShadowOffsetY = textStyleModel.getShallow('shadowOffsetY');\n }\n\n textStyle.textShadowColor = textStyleModel.getShallow('textShadowColor') || globalTextStyle.textShadowColor;\n textStyle.textShadowBlur = textStyleModel.getShallow('textShadowBlur') || globalTextStyle.textShadowBlur;\n textStyle.textShadowOffsetX = textStyleModel.getShallow('textShadowOffsetX') || globalTextStyle.textShadowOffsetX;\n textStyle.textShadowOffsetY = textStyleModel.getShallow('textShadowOffsetY') || globalTextStyle.textShadowOffsetY;\n}\n\nfunction getAutoColor(color, opt) {\n return color !== 'auto' ? color : opt && opt.autoColor ? opt.autoColor : null;\n}\n/**\n * Give some default value to the input `textStyle` object, based on the current settings\n * in this `textStyle` object.\n *\n * The Scenario:\n * when text position is `inside` and `textFill` is not specified, we show\n * text border by default for better view. But it should be considered that text position\n * might be changed when hovering or being emphasis, where the `insideRollback` is used to\n * restore the style.\n *\n * Usage (& NOTICE):\n * When a style object (eithor plain object or instance of `zrender/src/graphic/Style`) is\n * about to be modified on its text related properties, `rollbackDefaultTextStyle` should\n * be called before the modification and `applyDefaultTextStyle` should be called after that.\n * (For the case that all of the text related properties is reset, like `setTextStyleCommon`\n * does, `rollbackDefaultTextStyle` is not needed to be called).\n */\n\n\nfunction applyDefaultTextStyle(textStyle) {\n var textPosition = textStyle.textPosition;\n var opt = textStyle.insideRollbackOpt;\n var insideRollback;\n\n if (opt && textStyle.textFill == null) {\n var autoColor = opt.autoColor;\n var isRectText = opt.isRectText;\n var useInsideStyle = opt.useInsideStyle;\n var useInsideStyleCache = useInsideStyle !== false && (useInsideStyle === true || isRectText && textPosition // textPosition can be [10, 30]\n && typeof textPosition === 'string' && textPosition.indexOf('inside') >= 0);\n var useAutoColorCache = !useInsideStyleCache && autoColor != null; // All of the props declared in `CACHED_LABEL_STYLE_PROPERTIES` are to be cached.\n\n if (useInsideStyleCache || useAutoColorCache) {\n insideRollback = {\n textFill: textStyle.textFill,\n textStroke: textStyle.textStroke,\n textStrokeWidth: textStyle.textStrokeWidth\n };\n }\n\n if (useInsideStyleCache) {\n textStyle.textFill = '#fff'; // Consider text with #fff overflow its container.\n\n if (textStyle.textStroke == null) {\n textStyle.textStroke = autoColor;\n textStyle.textStrokeWidth == null && (textStyle.textStrokeWidth = 2);\n }\n }\n\n if (useAutoColorCache) {\n textStyle.textFill = autoColor;\n }\n } // Always set `insideRollback`, so that the previous one can be cleared.\n\n\n textStyle.insideRollback = insideRollback;\n}\n/**\n * Consider the case: in a scatter,\n * label: {\n * normal: {position: 'inside'},\n * emphasis: {position: 'top'}\n * }\n * In the normal state, the `textFill` will be set as '#fff' for pretty view (see\n * `applyDefaultTextStyle`), but when switching to emphasis state, the `textFill`\n * should be retured to 'autoColor', but not keep '#fff'.\n */\n\n\nfunction rollbackDefaultTextStyle(style) {\n var insideRollback = style.insideRollback;\n\n if (insideRollback) {\n // Reset all of the props in `CACHED_LABEL_STYLE_PROPERTIES`.\n style.textFill = insideRollback.textFill;\n style.textStroke = insideRollback.textStroke;\n style.textStrokeWidth = insideRollback.textStrokeWidth;\n style.insideRollback = null;\n }\n}\n\nfunction getFont(opt, ecModel) {\n var gTextStyleModel = ecModel && ecModel.getModel('textStyle');\n return zrUtil.trim([// FIXME in node-canvas fontWeight is before fontStyle\n opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '', opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '', (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px', opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'].join(' '));\n}\n\nfunction animateOrSetProps(isUpdate, el, props, animatableModel, dataIndex, cb) {\n if (typeof dataIndex === 'function') {\n cb = dataIndex;\n dataIndex = null;\n } // Do not check 'animation' property directly here. Consider this case:\n // animation model is an `itemModel`, whose does not have `isAnimationEnabled`\n // but its parent model (`seriesModel`) does.\n\n\n var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\n\n if (animationEnabled) {\n var postfix = isUpdate ? 'Update' : '';\n var duration = animatableModel.getShallow('animationDuration' + postfix);\n var animationEasing = animatableModel.getShallow('animationEasing' + postfix);\n var animationDelay = animatableModel.getShallow('animationDelay' + postfix);\n\n if (typeof animationDelay === 'function') {\n animationDelay = animationDelay(dataIndex, animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null);\n }\n\n if (typeof duration === 'function') {\n duration = duration(dataIndex);\n }\n\n duration > 0 ? el.animateTo(props, duration, animationDelay || 0, animationEasing, cb, !!cb) : (el.stopAnimation(), el.attr(props), cb && cb());\n } else {\n el.stopAnimation();\n el.attr(props);\n cb && cb();\n }\n}\n/**\n * Update graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So if do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} [cb]\n * @example\n * graphic.updateProps(el, {\n * position: [100, 100]\n * }, seriesModel, dataIndex, function () { console.log('Animation done!'); });\n * // Or\n * graphic.updateProps(el, {\n * position: [100, 100]\n * }, seriesModel, function () { console.log('Animation done!'); });\n */\n\n\nfunction updateProps(el, props, animatableModel, dataIndex, cb) {\n animateOrSetProps(true, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Init graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So if do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} cb\n */\n\n\nfunction initProps(el, props, animatableModel, dataIndex, cb) {\n animateOrSetProps(false, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Get transform matrix of target (param target),\n * in coordinate of its ancestor (param ancestor)\n *\n * @param {module:zrender/mixin/Transformable} target\n * @param {module:zrender/mixin/Transformable} [ancestor]\n */\n\n\nfunction getTransform(target, ancestor) {\n var mat = matrix.identity([]);\n\n while (target && target !== ancestor) {\n matrix.mul(mat, target.getLocalTransform(), mat);\n target = target.parent;\n }\n\n return mat;\n}\n/**\n * Apply transform to an vertex.\n * @param {Array.} target [x, y]\n * @param {Array.|TypedArray.|Object} transform Can be:\n * + Transform matrix: like [1, 0, 0, 1, 0, 0]\n * + {position, rotation, scale}, the same as `zrender/Transformable`.\n * @param {boolean=} invert Whether use invert matrix.\n * @return {Array.} [x, y]\n */\n\n\nfunction applyTransform(target, transform, invert) {\n if (transform && !zrUtil.isArrayLike(transform)) {\n transform = Transformable.getLocalTransform(transform);\n }\n\n if (invert) {\n transform = matrix.invert([], transform);\n }\n\n return vector.applyTransform([], target, transform);\n}\n/**\n * @param {string} direction 'left' 'right' 'top' 'bottom'\n * @param {Array.} transform Transform matrix: like [1, 0, 0, 1, 0, 0]\n * @param {boolean=} invert Whether use invert matrix.\n * @return {string} Transformed direction. 'left' 'right' 'top' 'bottom'\n */\n\n\nfunction transformDirection(direction, transform, invert) {\n // Pick a base, ensure that transform result will not be (0, 0).\n var hBase = transform[4] === 0 || transform[5] === 0 || transform[0] === 0 ? 1 : Math.abs(2 * transform[4] / transform[0]);\n var vBase = transform[4] === 0 || transform[5] === 0 || transform[2] === 0 ? 1 : Math.abs(2 * transform[4] / transform[2]);\n var vertex = [direction === 'left' ? -hBase : direction === 'right' ? hBase : 0, direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0];\n vertex = applyTransform(vertex, transform, invert);\n return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? 'right' : 'left' : vertex[1] > 0 ? 'bottom' : 'top';\n}\n/**\n * Apply group transition animation from g1 to g2.\n * If no animatableModel, no animation.\n */\n\n\nfunction groupTransition(g1, g2, animatableModel, cb) {\n if (!g1 || !g2) {\n return;\n }\n\n function getElMap(g) {\n var elMap = {};\n g.traverse(function (el) {\n if (!el.isGroup && el.anid) {\n elMap[el.anid] = el;\n }\n });\n return elMap;\n }\n\n function getAnimatableProps(el) {\n var obj = {\n position: vector.clone(el.position),\n rotation: el.rotation\n };\n\n if (el.shape) {\n obj.shape = zrUtil.extend({}, el.shape);\n }\n\n return obj;\n }\n\n var elMap1 = getElMap(g1);\n g2.traverse(function (el) {\n if (!el.isGroup && el.anid) {\n var oldEl = elMap1[el.anid];\n\n if (oldEl) {\n var newProp = getAnimatableProps(el);\n el.attr(getAnimatableProps(oldEl));\n updateProps(el, newProp, animatableModel, el.dataIndex);\n } // else {\n // if (el.previousProps) {\n // graphic.updateProps\n // }\n // }\n\n }\n });\n}\n/**\n * @param {Array.>} points Like: [[23, 44], [53, 66], ...]\n * @param {Object} rect {x, y, width, height}\n * @return {Array.>} A new clipped points.\n */\n\n\nfunction clipPointsByRect(points, rect) {\n // FIXME: this way migth be incorrect when grpahic clipped by a corner.\n // and when element have border.\n return zrUtil.map(points, function (point) {\n var x = point[0];\n x = mathMax(x, rect.x);\n x = mathMin(x, rect.x + rect.width);\n var y = point[1];\n y = mathMax(y, rect.y);\n y = mathMin(y, rect.y + rect.height);\n return [x, y];\n });\n}\n/**\n * @param {Object} targetRect {x, y, width, height}\n * @param {Object} rect {x, y, width, height}\n * @return {Object} A new clipped rect. If rect size are negative, return undefined.\n */\n\n\nfunction clipRectByRect(targetRect, rect) {\n var x = mathMax(targetRect.x, rect.x);\n var x2 = mathMin(targetRect.x + targetRect.width, rect.x + rect.width);\n var y = mathMax(targetRect.y, rect.y);\n var y2 = mathMin(targetRect.y + targetRect.height, rect.y + rect.height); // If the total rect is cliped, nothing, including the border,\n // should be painted. So return undefined.\n\n if (x2 >= x && y2 >= y) {\n return {\n x: x,\n y: y,\n width: x2 - x,\n height: y2 - y\n };\n }\n}\n/**\n * @param {string} iconStr Support 'image://' or 'path://' or direct svg path.\n * @param {Object} [opt] Properties of `module:zrender/Element`, except `style`.\n * @param {Object} [rect] {x, y, width, height}\n * @return {module:zrender/Element} Icon path or image element.\n */\n\n\nfunction createIcon(iconStr, opt, rect) {\n opt = zrUtil.extend({\n rectHover: true\n }, opt);\n var style = opt.style = {\n strokeNoScale: true\n };\n rect = rect || {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n };\n\n if (iconStr) {\n return iconStr.indexOf('image://') === 0 ? (style.image = iconStr.slice(8), zrUtil.defaults(style, rect), new ZImage(opt)) : makePath(iconStr.replace('path://', ''), opt, rect, 'center');\n }\n}\n/**\n * Return `true` if the given line (line `a`) and the given polygon\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {Array.>} points Points of the polygon.\n * @return {boolean}\n */\n\n\nfunction linePolygonIntersect(a1x, a1y, a2x, a2y, points) {\n for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) {\n var p = points[i];\n\n if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) {\n return true;\n }\n\n p2 = p;\n }\n}\n/**\n * Return `true` if the given two lines (line `a` and line `b`)\n * are intersect.\n * Note that we do not count colinear as intersect here because no\n * requirement for that. We could do that if required in future.\n *\n * @param {number} a1x\n * @param {number} a1y\n * @param {number} a2x\n * @param {number} a2y\n * @param {number} b1x\n * @param {number} b1y\n * @param {number} b2x\n * @param {number} b2y\n * @return {boolean}\n */\n\n\nfunction lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\n // let `vec_m` to be `vec_a2 - vec_a1` and `vec_n` to be `vec_b2 - vec_b1`.\n var mx = a2x - a1x;\n var my = a2y - a1y;\n var nx = b2x - b1x;\n var ny = b2y - b1y; // `vec_m` and `vec_n` are parallel iff\n // exising `k` such that `vec_m = k · vec_n`, equivalent to `vec_m X vec_n = 0`.\n\n var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\n\n if (nearZero(nmCrossProduct)) {\n return false;\n } // `vec_m` and `vec_n` are intersect iff\n // existing `p` and `q` in [0, 1] such that `vec_a1 + p * vec_m = vec_b1 + q * vec_n`,\n // such that `q = ((vec_a1 - vec_b1) X vec_m) / (vec_n X vec_m)`\n // and `p = ((vec_a1 - vec_b1) X vec_n) / (vec_n X vec_m)`.\n\n\n var b1a1x = a1x - b1x;\n var b1a1y = a1y - b1y;\n var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct;\n\n if (q < 0 || q > 1) {\n return false;\n }\n\n var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\n\n if (p < 0 || p > 1) {\n return false;\n }\n\n return true;\n}\n/**\n * Cross product of 2-dimension vector.\n */\n\n\nfunction crossProduct2d(x1, y1, x2, y2) {\n return x1 * y2 - x2 * y1;\n}\n\nfunction nearZero(val) {\n return val <= 1e-6 && val >= -1e-6;\n} // Register built-in shapes. These shapes might be overwirtten\n// by users, although we do not recommend that.\n\n\nregisterShape('circle', Circle);\nregisterShape('sector', Sector);\nregisterShape('ring', Ring);\nregisterShape('polygon', Polygon);\nregisterShape('polyline', Polyline);\nregisterShape('rect', Rect);\nregisterShape('line', Line);\nregisterShape('bezierCurve', BezierCurve);\nregisterShape('arc', Arc);\nexports.Z2_EMPHASIS_LIFT = Z2_EMPHASIS_LIFT;\nexports.CACHED_LABEL_STYLE_PROPERTIES = CACHED_LABEL_STYLE_PROPERTIES;\nexports.extendShape = extendShape;\nexports.extendPath = extendPath;\nexports.registerShape = registerShape;\nexports.getShapeClass = getShapeClass;\nexports.makePath = makePath;\nexports.makeImage = makeImage;\nexports.mergePath = mergePath;\nexports.resizePath = resizePath;\nexports.subPixelOptimizeLine = subPixelOptimizeLine;\nexports.subPixelOptimizeRect = subPixelOptimizeRect;\nexports.subPixelOptimize = subPixelOptimize;\nexports.setElementHoverStyle = setElementHoverStyle;\nexports.setHoverStyle = setHoverStyle;\nexports.setAsHighDownDispatcher = setAsHighDownDispatcher;\nexports.isHighDownDispatcher = isHighDownDispatcher;\nexports.getHighlightDigit = getHighlightDigit;\nexports.setLabelStyle = setLabelStyle;\nexports.modifyLabelStyle = modifyLabelStyle;\nexports.setTextStyle = setTextStyle;\nexports.setText = setText;\nexports.getFont = getFont;\nexports.updateProps = updateProps;\nexports.initProps = initProps;\nexports.getTransform = getTransform;\nexports.applyTransform = applyTransform;\nexports.transformDirection = transformDirection;\nexports.groupTransition = groupTransition;\nexports.clipPointsByRect = clipPointsByRect;\nexports.clipRectByRect = clipRectByRect;\nexports.createIcon = createIcon;\nexports.linePolygonIntersect = linePolygonIntersect;\nexports.lineLineIntersect = lineLineIntersect;","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The method \"quantile\" was copied from \"d3.js\".\n* (See more details in the comment of the method below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\nvar RADIAN_EPSILON = 1e-4;\n\nfunction _trim(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n/**\n * Linear mapping a value from domain to range\n * @memberOf module:echarts/util/number\n * @param {(number|Array.)} val\n * @param {Array.} domain Domain extent domain[0] can be bigger than domain[1]\n * @param {Array.} range Range extent range[0] can be bigger than range[1]\n * @param {boolean} clamp\n * @return {(number|Array.}\n */\n\n\nfunction linearMap(val, domain, range, clamp) {\n var subDomain = domain[1] - domain[0];\n var subRange = range[1] - range[0];\n\n if (subDomain === 0) {\n return subRange === 0 ? range[0] : (range[0] + range[1]) / 2;\n } // Avoid accuracy problem in edge, such as\n // 146.39 - 62.83 === 83.55999999999999.\n // See echarts/test/ut/spec/util/number.js#linearMap#accuracyError\n // It is a little verbose for efficiency considering this method\n // is a hotspot.\n\n\n if (clamp) {\n if (subDomain > 0) {\n if (val <= domain[0]) {\n return range[0];\n } else if (val >= domain[1]) {\n return range[1];\n }\n } else {\n if (val >= domain[0]) {\n return range[0];\n } else if (val <= domain[1]) {\n return range[1];\n }\n }\n } else {\n if (val === domain[0]) {\n return range[0];\n }\n\n if (val === domain[1]) {\n return range[1];\n }\n }\n\n return (val - domain[0]) / subDomain * subRange + range[0];\n}\n/**\n * Convert a percent string to absolute number.\n * Returns NaN if percent is not a valid string or number\n * @memberOf module:echarts/util/number\n * @param {string|number} percent\n * @param {number} all\n * @return {number}\n */\n\n\nfunction parsePercent(percent, all) {\n switch (percent) {\n case 'center':\n case 'middle':\n percent = '50%';\n break;\n\n case 'left':\n case 'top':\n percent = '0%';\n break;\n\n case 'right':\n case 'bottom':\n percent = '100%';\n break;\n }\n\n if (typeof percent === 'string') {\n if (_trim(percent).match(/%$/)) {\n return parseFloat(percent) / 100 * all;\n }\n\n return parseFloat(percent);\n }\n\n return percent == null ? NaN : +percent;\n}\n/**\n * (1) Fix rounding error of float numbers.\n * (2) Support return string to avoid scientific notation like '3.5e-7'.\n *\n * @param {number} x\n * @param {number} [precision]\n * @param {boolean} [returnStr]\n * @return {number|string}\n */\n\n\nfunction round(x, precision, returnStr) {\n if (precision == null) {\n precision = 10;\n } // Avoid range error\n\n\n precision = Math.min(Math.max(0, precision), 20);\n x = (+x).toFixed(precision);\n return returnStr ? x : +x;\n}\n/**\n * asc sort arr.\n * The input arr will be modified.\n *\n * @param {Array} arr\n * @return {Array} The input arr.\n */\n\n\nfunction asc(arr) {\n arr.sort(function (a, b) {\n return a - b;\n });\n return arr;\n}\n/**\n * Get precision\n * @param {number} val\n */\n\n\nfunction getPrecision(val) {\n val = +val;\n\n if (isNaN(val)) {\n return 0;\n } // It is much faster than methods converting number to string as follows\n // var tmp = val.toString();\n // return tmp.length - 1 - tmp.indexOf('.');\n // especially when precision is low\n\n\n var e = 1;\n var count = 0;\n\n while (Math.round(val * e) / e !== val) {\n e *= 10;\n count++;\n }\n\n return count;\n}\n/**\n * @param {string|number} val\n * @return {number}\n */\n\n\nfunction getPrecisionSafe(val) {\n var str = val.toString(); // Consider scientific notation: '3.4e-12' '3.4e+12'\n\n var eIndex = str.indexOf('e');\n\n if (eIndex > 0) {\n var precision = +str.slice(eIndex + 1);\n return precision < 0 ? -precision : 0;\n } else {\n var dotIndex = str.indexOf('.');\n return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;\n }\n}\n/**\n * Minimal dicernible data precisioin according to a single pixel.\n *\n * @param {Array.} dataExtent\n * @param {Array.} pixelExtent\n * @return {number} precision\n */\n\n\nfunction getPixelPrecision(dataExtent, pixelExtent) {\n var log = Math.log;\n var LN10 = Math.LN10;\n var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\n var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); // toFixed() digits argument must be between 0 and 20.\n\n var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\n return !isFinite(precision) ? 20 : precision;\n}\n/**\n * Get a data of given precision, assuring the sum of percentages\n * in valueList is 1.\n * The largest remainer method is used.\n * https://en.wikipedia.org/wiki/Largest_remainder_method\n *\n * @param {Array.} valueList a list of all data\n * @param {number} idx index of the data to be processed in valueList\n * @param {number} precision integer number showing digits of precision\n * @return {number} percent ranging from 0 to 100\n */\n\n\nfunction getPercentWithPrecision(valueList, idx, precision) {\n if (!valueList[idx]) {\n return 0;\n }\n\n var sum = zrUtil.reduce(valueList, function (acc, val) {\n return acc + (isNaN(val) ? 0 : val);\n }, 0);\n\n if (sum === 0) {\n return 0;\n }\n\n var digits = Math.pow(10, precision);\n var votesPerQuota = zrUtil.map(valueList, function (val) {\n return (isNaN(val) ? 0 : val) / sum * digits * 100;\n });\n var targetSeats = digits * 100;\n var seats = zrUtil.map(votesPerQuota, function (votes) {\n // Assign automatic seats.\n return Math.floor(votes);\n });\n var currentSum = zrUtil.reduce(seats, function (acc, val) {\n return acc + val;\n }, 0);\n var remainder = zrUtil.map(votesPerQuota, function (votes, idx) {\n return votes - seats[idx];\n }); // Has remainding votes.\n\n while (currentSum < targetSeats) {\n // Find next largest remainder.\n var max = Number.NEGATIVE_INFINITY;\n var maxId = null;\n\n for (var i = 0, len = remainder.length; i < len; ++i) {\n if (remainder[i] > max) {\n max = remainder[i];\n maxId = i;\n }\n } // Add a vote to max remainder.\n\n\n ++seats[maxId];\n remainder[maxId] = 0;\n ++currentSum;\n }\n\n return seats[idx] / digits;\n} // Number.MAX_SAFE_INTEGER, ie do not support.\n\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * To 0 - 2 * PI, considering negative radian.\n * @param {number} radian\n * @return {number}\n */\n\nfunction remRadian(radian) {\n var pi2 = Math.PI * 2;\n return (radian % pi2 + pi2) % pi2;\n}\n/**\n * @param {type} radian\n * @return {boolean}\n */\n\n\nfunction isRadianAroundZero(val) {\n return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\n}\n/* eslint-disable */\n\n\nvar TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d\\d)(?::(\\d\\d)(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/; // jshint ignore:line\n\n/* eslint-enable */\n\n/**\n * @param {string|Date|number} value These values can be accepted:\n * + An instance of Date, represent a time in its own time zone.\n * + Or string in a subset of ISO 8601, only including:\n * + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06',\n * + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123',\n * + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',\n * all of which will be treated as local time if time zone is not specified\n * (see ).\n * + Or other string format, including (all of which will be treated as loacal time):\n * '2012', '2012-3-1', '2012/3/1', '2012/03/01',\n * '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'\n * + a timestamp, which represent a time in UTC.\n * @return {Date} date\n */\n\nfunction parseDate(value) {\n if (value instanceof Date) {\n return value;\n } else if (typeof value === 'string') {\n // Different browsers parse date in different way, so we parse it manually.\n // Some other issues:\n // new Date('1970-01-01') is UTC,\n // new Date('1970/01/01') and new Date('1970-1-01') is local.\n // See issue #3623\n var match = TIME_REG.exec(value);\n\n if (!match) {\n // return Invalid Date.\n return new Date(NaN);\n } // Use local time when no timezone offset specifed.\n\n\n if (!match[8]) {\n // match[n] can only be string or undefined.\n // But take care of '12' + 1 => '121'.\n return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, +match[7] || 0);\n } // Timezoneoffset of Javascript Date has considered DST (Daylight Saving Time,\n // https://tc39.github.io/ecma262/#sec-daylight-saving-time-adjustment).\n // For example, system timezone is set as \"Time Zone: America/Toronto\",\n // then these code will get different result:\n // `new Date(1478411999999).getTimezoneOffset(); // get 240`\n // `new Date(1478412000000).getTimezoneOffset(); // get 300`\n // So we should not use `new Date`, but use `Date.UTC`.\n else {\n var hour = +match[4] || 0;\n\n if (match[8].toUpperCase() !== 'Z') {\n hour -= match[8].slice(0, 3);\n }\n\n return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, +match[7] || 0));\n }\n } else if (value == null) {\n return new Date(NaN);\n }\n\n return new Date(Math.round(value));\n}\n/**\n * Quantity of a number. e.g. 0.1, 1, 10, 100\n *\n * @param {number} val\n * @return {number}\n */\n\n\nfunction quantity(val) {\n return Math.pow(10, quantityExponent(val));\n}\n/**\n * Exponent of the quantity of a number\n * e.g., 1234 equals to 1.234*10^3, so quantityExponent(1234) is 3\n *\n * @param {number} val non-negative value\n * @return {number}\n */\n\n\nfunction quantityExponent(val) {\n if (val === 0) {\n return 0;\n }\n\n var exp = Math.floor(Math.log(val) / Math.LN10);\n /**\n * exp is expected to be the rounded-down result of the base-10 log of val.\n * But due to the precision loss with Math.log(val), we need to restore it\n * using 10^exp to make sure we can get val back from exp. #11249\n */\n\n if (val / Math.pow(10, exp) >= 10) {\n exp++;\n }\n\n return exp;\n}\n/**\n * find a “nice” number approximately equal to x. Round the number if round = true,\n * take ceiling if round = false. The primary observation is that the “nicest”\n * numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers.\n *\n * See \"Nice Numbers for Graph Labels\" of Graphic Gems.\n *\n * @param {number} val Non-negative value.\n * @param {boolean} round\n * @return {number}\n */\n\n\nfunction nice(val, round) {\n var exponent = quantityExponent(val);\n var exp10 = Math.pow(10, exponent);\n var f = val / exp10; // 1 <= f < 10\n\n var nf;\n\n if (round) {\n if (f < 1.5) {\n nf = 1;\n } else if (f < 2.5) {\n nf = 2;\n } else if (f < 4) {\n nf = 3;\n } else if (f < 7) {\n nf = 5;\n } else {\n nf = 10;\n }\n } else {\n if (f < 1) {\n nf = 1;\n } else if (f < 2) {\n nf = 2;\n } else if (f < 3) {\n nf = 3;\n } else if (f < 5) {\n nf = 5;\n } else {\n nf = 10;\n }\n }\n\n val = nf * exp10; // Fix 3 * 0.1 === 0.30000000000000004 issue (see IEEE 754).\n // 20 is the uppper bound of toFixed.\n\n return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\n}\n/**\n * This code was copied from \"d3.js\"\n * .\n * See the license statement at the head of this file.\n * @param {Array.} ascArr\n */\n\n\nfunction quantile(ascArr, p) {\n var H = (ascArr.length - 1) * p + 1;\n var h = Math.floor(H);\n var v = +ascArr[h - 1];\n var e = H - h;\n return e ? v + e * (ascArr[h] - v) : v;\n}\n/**\n * Order intervals asc, and split them when overlap.\n * expect(numberUtil.reformIntervals([\n * {interval: [18, 62], close: [1, 1]},\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [1, 1]},\n * {interval: [62, 150], close: [1, 1]},\n * {interval: [106, 150], close: [1, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ])).toEqual([\n * {interval: [-Infinity, -70], close: [0, 0]},\n * {interval: [-70, -26], close: [1, 1]},\n * {interval: [-26, 18], close: [0, 1]},\n * {interval: [18, 62], close: [0, 1]},\n * {interval: [62, 150], close: [0, 1]},\n * {interval: [150, Infinity], close: [0, 0]}\n * ]);\n * @param {Array.} list, where `close` mean open or close\n * of the interval, and Infinity can be used.\n * @return {Array.} The origin list, which has been reformed.\n */\n\n\nfunction reformIntervals(list) {\n list.sort(function (a, b) {\n return littleThan(a, b, 0) ? -1 : 1;\n });\n var curr = -Infinity;\n var currClose = 1;\n\n for (var i = 0; i < list.length;) {\n var interval = list[i].interval;\n var close = list[i].close;\n\n for (var lg = 0; lg < 2; lg++) {\n if (interval[lg] <= curr) {\n interval[lg] = curr;\n close[lg] = !lg ? 1 - currClose : 1;\n }\n\n curr = interval[lg];\n currClose = close[lg];\n }\n\n if (interval[0] === interval[1] && close[0] * close[1] !== 1) {\n list.splice(i, 1);\n } else {\n i++;\n }\n }\n\n return list;\n\n function littleThan(a, b, lg) {\n return a.interval[lg] < b.interval[lg] || a.interval[lg] === b.interval[lg] && (a.close[lg] - b.close[lg] === (!lg ? 1 : -1) || !lg && littleThan(a, b, 1));\n }\n}\n/**\n * parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n * ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n * subtraction forces infinities to NaN\n *\n * @param {*} v\n * @return {boolean}\n */\n\n\nfunction isNumeric(v) {\n return v - parseFloat(v) >= 0;\n}\n\nexports.linearMap = linearMap;\nexports.parsePercent = parsePercent;\nexports.round = round;\nexports.asc = asc;\nexports.getPrecision = getPrecision;\nexports.getPrecisionSafe = getPrecisionSafe;\nexports.getPixelPrecision = getPixelPrecision;\nexports.getPercentWithPrecision = getPercentWithPrecision;\nexports.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nexports.remRadian = remRadian;\nexports.isRadianAroundZero = isRadianAroundZero;\nexports.parseDate = parseDate;\nexports.quantity = quantity;\nexports.quantityExponent = quantityExponent;\nexports.nice = nice;\nexports.quantile = quantile;\nexports.reformIntervals = reformIntervals;\nexports.isNumeric = isNumeric;","module.exports = require(\"immutable\");","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar isArray = zrUtil.isArray;\n/**\n * Make the name displayable. But we should\n * make sure it is not duplicated with user\n * specified name, so use '\\0';\n */\n\nvar DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\n/**\n * If value is not array, then translate it to array.\n * @param {*} value\n * @return {Array} [value] or value\n */\n\nfunction normalizeToArray(value) {\n return value instanceof Array ? value : value == null ? [] : [value];\n}\n/**\n * Sync default option between normal and emphasis like `position` and `show`\n * In case some one will write code like\n * label: {\n * show: false,\n * position: 'outside',\n * fontSize: 18\n * },\n * emphasis: {\n * label: { show: true }\n * }\n * @param {Object} opt\n * @param {string} key\n * @param {Array.} subOpts\n */\n\n\nfunction defaultEmphasis(opt, key, subOpts) {\n // Caution: performance sensitive.\n if (opt) {\n opt[key] = opt[key] || {};\n opt.emphasis = opt.emphasis || {};\n opt.emphasis[key] = opt.emphasis[key] || {}; // Default emphasis option from normal\n\n for (var i = 0, len = subOpts.length; i < len; i++) {\n var subOptName = subOpts[i];\n\n if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) {\n opt.emphasis[key][subOptName] = opt[key][subOptName];\n }\n }\n }\n}\n\nvar TEXT_STYLE_OPTIONS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth', 'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY', 'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding']; // modelUtil.LABEL_OPTIONS = modelUtil.TEXT_STYLE_OPTIONS.concat([\n// 'position', 'offset', 'rotate', 'origin', 'show', 'distance', 'formatter',\n// 'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\n// // FIXME: deprecated, check and remove it.\n// 'textStyle'\n// ]);\n\n/**\n * The method do not ensure performance.\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method retieves value from data.\n * @param {string|number|Date|Array|Object} dataItem\n * @return {number|string|Date|Array.}\n */\n\nfunction getDataItemValue(dataItem) {\n return isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem;\n}\n/**\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method determine if dataItem has extra option besides value\n * @param {string|number|Date|Array|Object} dataItem\n */\n\n\nfunction isDataItemOption(dataItem) {\n return isObject(dataItem) && !(dataItem instanceof Array); // // markLine data can be array\n // && !(dataItem[0] && isObject(dataItem[0]) && !(dataItem[0] instanceof Array));\n}\n/**\n * Mapping to exists for merge.\n *\n * @public\n * @param {Array.|Array.} exists\n * @param {Object|Array.} newCptOptions\n * @return {Array.} Result, like [{exist: ..., option: ...}, {}],\n * index of which is the same as exists.\n */\n\n\nfunction mappingToExists(exists, newCptOptions) {\n // Mapping by the order by original option (but not order of\n // new option) in merge mode. Because we should ensure\n // some specified index (like xAxisIndex) is consistent with\n // original option, which is easy to understand, espatially in\n // media query. And in most case, merge option is used to\n // update partial option but not be expected to change order.\n newCptOptions = (newCptOptions || []).slice();\n var result = zrUtil.map(exists || [], function (obj, index) {\n return {\n exist: obj\n };\n }); // Mapping by id or name if specified.\n\n each(newCptOptions, function (cptOption, index) {\n if (!isObject(cptOption)) {\n return;\n } // id has highest priority.\n\n\n for (var i = 0; i < result.length; i++) {\n if (!result[i].option // Consider name: two map to one.\n && cptOption.id != null && result[i].exist.id === cptOption.id + '') {\n result[i].option = cptOption;\n newCptOptions[index] = null;\n return;\n }\n }\n\n for (var i = 0; i < result.length; i++) {\n var exist = result[i].exist;\n\n if (!result[i].option // Consider name: two map to one.\n // Can not match when both ids exist but different.\n && (exist.id == null || cptOption.id == null) && cptOption.name != null && !isIdInner(cptOption) && !isIdInner(exist) && exist.name === cptOption.name + '') {\n result[i].option = cptOption;\n newCptOptions[index] = null;\n return;\n }\n }\n }); // Otherwise mapping by index.\n\n each(newCptOptions, function (cptOption, index) {\n if (!isObject(cptOption)) {\n return;\n }\n\n var i = 0;\n\n for (; i < result.length; i++) {\n var exist = result[i].exist;\n\n if (!result[i].option // Existing model that already has id should be able to\n // mapped to (because after mapping performed model may\n // be assigned with a id, whish should not affect next\n // mapping), except those has inner id.\n && !isIdInner(exist) // Caution:\n // Do not overwrite id. But name can be overwritten,\n // because axis use name as 'show label text'.\n // 'exist' always has id and name and we dont\n // need to check it.\n && cptOption.id == null) {\n result[i].option = cptOption;\n break;\n }\n }\n\n if (i >= result.length) {\n result.push({\n option: cptOption\n });\n }\n });\n return result;\n}\n/**\n * Make id and name for mapping result (result of mappingToExists)\n * into `keyInfo` field.\n *\n * @public\n * @param {Array.} Result, like [{exist: ..., option: ...}, {}],\n * which order is the same as exists.\n * @return {Array.} The input.\n */\n\n\nfunction makeIdAndName(mapResult) {\n // We use this id to hash component models and view instances\n // in echarts. id can be specified by user, or auto generated.\n // The id generation rule ensures new view instance are able\n // to mapped to old instance when setOption are called in\n // no-merge mode. So we generate model id by name and plus\n // type in view id.\n // name can be duplicated among components, which is convenient\n // to specify multi components (like series) by one name.\n // Ensure that each id is distinct.\n var idMap = zrUtil.createHashMap();\n each(mapResult, function (item, index) {\n var existCpt = item.exist;\n existCpt && idMap.set(existCpt.id, item);\n });\n each(mapResult, function (item, index) {\n var opt = item.option;\n zrUtil.assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\n opt && opt.id != null && idMap.set(opt.id, item);\n !item.keyInfo && (item.keyInfo = {});\n }); // Make name and id.\n\n each(mapResult, function (item, index) {\n var existCpt = item.exist;\n var opt = item.option;\n var keyInfo = item.keyInfo;\n\n if (!isObject(opt)) {\n return;\n } // name can be overwitten. Consider case: axis.name = '20km'.\n // But id generated by name will not be changed, which affect\n // only in that case: setOption with 'not merge mode' and view\n // instance will be recreated, which can be accepted.\n\n\n keyInfo.name = opt.name != null ? opt.name + '' : existCpt ? existCpt.name // Avoid diffferent series has the same name,\n // because name may be used like in color pallet.\n : DUMMY_COMPONENT_NAME_PREFIX + index;\n\n if (existCpt) {\n keyInfo.id = existCpt.id;\n } else if (opt.id != null) {\n keyInfo.id = opt.id + '';\n } else {\n // Consider this situatoin:\n // optionA: [{name: 'a'}, {name: 'a'}, {..}]\n // optionB [{..}, {name: 'a'}, {name: 'a'}]\n // Series with the same name between optionA and optionB\n // should be mapped.\n var idNum = 0;\n\n do {\n keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\n } while (idMap.get(keyInfo.id));\n }\n\n idMap.set(keyInfo.id, item);\n });\n}\n\nfunction isNameSpecified(componentModel) {\n var name = componentModel.name; // Is specified when `indexOf` get -1 or > 0.\n\n return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\n}\n/**\n * @public\n * @param {Object} cptOption\n * @return {boolean}\n */\n\n\nfunction isIdInner(cptOption) {\n return isObject(cptOption) && cptOption.id && (cptOption.id + '').indexOf('\\0_ec_\\0') === 0;\n}\n/**\n * A helper for removing duplicate items between batchA and batchB,\n * and in themselves, and categorize by series.\n *\n * @param {Array.} batchA Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @param {Array.} batchB Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @return {Array., Array.>} result: [resultBatchA, resultBatchB]\n */\n\n\nfunction compressBatches(batchA, batchB) {\n var mapA = {};\n var mapB = {};\n makeMap(batchA || [], mapA);\n makeMap(batchB || [], mapB, mapA);\n return [mapToArray(mapA), mapToArray(mapB)];\n\n function makeMap(sourceBatch, map, otherMap) {\n for (var i = 0, len = sourceBatch.length; i < len; i++) {\n var seriesId = sourceBatch[i].seriesId;\n var dataIndices = normalizeToArray(sourceBatch[i].dataIndex);\n var otherDataIndices = otherMap && otherMap[seriesId];\n\n for (var j = 0, lenj = dataIndices.length; j < lenj; j++) {\n var dataIndex = dataIndices[j];\n\n if (otherDataIndices && otherDataIndices[dataIndex]) {\n otherDataIndices[dataIndex] = null;\n } else {\n (map[seriesId] || (map[seriesId] = {}))[dataIndex] = 1;\n }\n }\n }\n }\n\n function mapToArray(map, isData) {\n var result = [];\n\n for (var i in map) {\n if (map.hasOwnProperty(i) && map[i] != null) {\n if (isData) {\n result.push(+i);\n } else {\n var dataIndices = mapToArray(map[i], true);\n dataIndices.length && result.push({\n seriesId: i,\n dataIndex: dataIndices\n });\n }\n }\n }\n\n return result;\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload Contains dataIndex (means rawIndex) / dataIndexInside / name\n * each of which can be Array or primary type.\n * @return {number|Array.} dataIndex If not found, return undefined/null.\n */\n\n\nfunction queryDataIndex(data, payload) {\n if (payload.dataIndexInside != null) {\n return payload.dataIndexInside;\n } else if (payload.dataIndex != null) {\n return zrUtil.isArray(payload.dataIndex) ? zrUtil.map(payload.dataIndex, function (value) {\n return data.indexOfRawIndex(value);\n }) : data.indexOfRawIndex(payload.dataIndex);\n } else if (payload.name != null) {\n return zrUtil.isArray(payload.name) ? zrUtil.map(payload.name, function (value) {\n return data.indexOfName(value);\n }) : data.indexOfName(payload.name);\n }\n}\n/**\n * Enable property storage to any host object.\n * Notice: Serialization is not supported.\n *\n * For example:\n * var inner = zrUitl.makeInner();\n *\n * function some1(hostObj) {\n * inner(hostObj).someProperty = 1212;\n * ...\n * }\n * function some2() {\n * var fields = inner(this);\n * fields.someProperty1 = 1212;\n * fields.someProperty2 = 'xx';\n * ...\n * }\n *\n * @return {Function}\n */\n\n\nfunction makeInner() {\n // Consider different scope by es module import.\n var key = '__\\0ec_inner_' + innerUniqueIndex++ + '_' + Math.random().toFixed(5);\n return function (hostObj) {\n return hostObj[key] || (hostObj[key] = {});\n };\n}\n\nvar innerUniqueIndex = 0;\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {string|Object} finder\n * If string, e.g., 'geo', means {geoIndex: 0}.\n * If Object, could contain some of these properties below:\n * {\n * seriesIndex, seriesId, seriesName,\n * geoIndex, geoId, geoName,\n * bmapIndex, bmapId, bmapName,\n * xAxisIndex, xAxisId, xAxisName,\n * yAxisIndex, yAxisId, yAxisName,\n * gridIndex, gridId, gridName,\n * ... (can be extended)\n * }\n * Each properties can be number|string|Array.|Array.\n * For example, a finder could be\n * {\n * seriesIndex: 3,\n * geoId: ['aa', 'cc'],\n * gridName: ['xx', 'rr']\n * }\n * xxxIndex can be set as 'all' (means all xxx) or 'none' (means not specify)\n * If nothing or null/undefined specified, return nothing.\n * @param {Object} [opt]\n * @param {string} [opt.defaultMainType]\n * @param {Array.} [opt.includeMainTypes]\n * @return {Object} result like:\n * {\n * seriesModels: [seriesModel1, seriesModel2],\n * seriesModel: seriesModel1, // The first model\n * geoModels: [geoModel1, geoModel2],\n * geoModel: geoModel1, // The first model\n * ...\n * }\n */\n\nfunction parseFinder(ecModel, finder, opt) {\n if (zrUtil.isString(finder)) {\n var obj = {};\n obj[finder + 'Index'] = 0;\n finder = obj;\n }\n\n var defaultMainType = opt && opt.defaultMainType;\n\n if (defaultMainType && !has(finder, defaultMainType + 'Index') && !has(finder, defaultMainType + 'Id') && !has(finder, defaultMainType + 'Name')) {\n finder[defaultMainType + 'Index'] = 0;\n }\n\n var result = {};\n each(finder, function (value, key) {\n var value = finder[key]; // Exclude 'dataIndex' and other illgal keys.\n\n if (key === 'dataIndex' || key === 'dataIndexInside') {\n result[key] = value;\n return;\n }\n\n var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\n var mainType = parsedKey[1];\n var queryType = (parsedKey[2] || '').toLowerCase();\n\n if (!mainType || !queryType || value == null || queryType === 'index' && value === 'none' || opt && opt.includeMainTypes && zrUtil.indexOf(opt.includeMainTypes, mainType) < 0) {\n return;\n }\n\n var queryParam = {\n mainType: mainType\n };\n\n if (queryType !== 'index' || value !== 'all') {\n queryParam[queryType] = value;\n }\n\n var models = ecModel.queryComponents(queryParam);\n result[mainType + 'Models'] = models;\n result[mainType + 'Model'] = models[0];\n });\n return result;\n}\n\nfunction has(obj, prop) {\n return obj && obj.hasOwnProperty(prop);\n}\n\nfunction setAttribute(dom, key, value) {\n dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value;\n}\n\nfunction getAttribute(dom, key) {\n return dom.getAttribute ? dom.getAttribute(key) : dom[key];\n}\n\nfunction getTooltipRenderMode(renderModeOption) {\n if (renderModeOption === 'auto') {\n // Using html when `document` exists, use richText otherwise\n return env.domSupported ? 'html' : 'richText';\n } else {\n return renderModeOption || 'html';\n }\n}\n/**\n * Group a list by key.\n *\n * @param {Array} array\n * @param {Function} getKey\n * param {*} Array item\n * return {string} key\n * @return {Object} Result\n * {Array}: keys,\n * {module:zrender/core/util/HashMap} buckets: {key -> Array}\n */\n\n\nfunction groupData(array, getKey) {\n var buckets = zrUtil.createHashMap();\n var keys = [];\n zrUtil.each(array, function (item) {\n var key = getKey(item);\n (buckets.get(key) || (keys.push(key), buckets.set(key, []))).push(item);\n });\n return {\n keys: keys,\n buckets: buckets\n };\n}\n\nexports.normalizeToArray = normalizeToArray;\nexports.defaultEmphasis = defaultEmphasis;\nexports.TEXT_STYLE_OPTIONS = TEXT_STYLE_OPTIONS;\nexports.getDataItemValue = getDataItemValue;\nexports.isDataItemOption = isDataItemOption;\nexports.mappingToExists = mappingToExists;\nexports.makeIdAndName = makeIdAndName;\nexports.isNameSpecified = isNameSpecified;\nexports.isIdInner = isIdInner;\nexports.compressBatches = compressBatches;\nexports.queryDataIndex = queryDataIndex;\nexports.makeInner = makeInner;\nexports.parseFinder = parseFinder;\nexports.setAttribute = setAttribute;\nexports.getAttribute = getAttribute;\nexports.getTooltipRenderMode = getTooltipRenderMode;\nexports.groupData = groupData;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// (1) The code `if (__DEV__) ...` can be removed by build tool.\n// (2) If intend to use `__DEV__`, this module should be imported. Use a global\n// variable `__DEV__` may cause that miss the declaration (see #6535), or the\n// declaration is behind of the using position (for example in `Model.extent`,\n// And tools like rollup can not analysis the dependency if not import).\nvar dev; // In browser\n\nif (typeof window !== 'undefined') {\n dev = window.__DEV__;\n} // In node\nelse if (typeof global !== 'undefined') {\n dev = global.__DEV__;\n }\n\nif (typeof dev === 'undefined') {\n dev = true;\n}\n\nvar __DEV__ = dev;\nexports.__DEV__ = __DEV__;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _number = require(\"./number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar formatUtil = require(\"./format\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Layout helpers for each component positioning\nvar each = zrUtil.each;\n/**\n * @public\n */\n\nvar LOCATION_PARAMS = ['left', 'right', 'top', 'bottom', 'width', 'height'];\n/**\n * @public\n */\n\nvar HV_NAMES = [['width', 'left', 'right'], ['height', 'top', 'bottom']];\n\nfunction boxLayout(orient, group, gap, maxWidth, maxHeight) {\n var x = 0;\n var y = 0;\n\n if (maxWidth == null) {\n maxWidth = Infinity;\n }\n\n if (maxHeight == null) {\n maxHeight = Infinity;\n }\n\n var currentLineMaxSize = 0;\n group.eachChild(function (child, idx) {\n var position = child.position;\n var rect = child.getBoundingRect();\n var nextChild = group.childAt(idx + 1);\n var nextChildRect = nextChild && nextChild.getBoundingRect();\n var nextX;\n var nextY;\n\n if (orient === 'horizontal') {\n var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0);\n nextX = x + moveX; // Wrap when width exceeds maxWidth or meet a `newline` group\n // FIXME compare before adding gap?\n\n if (nextX > maxWidth || child.newline) {\n x = 0;\n nextX = moveX;\n y += currentLineMaxSize + gap;\n currentLineMaxSize = rect.height;\n } else {\n // FIXME: consider rect.y is not `0`?\n currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);\n }\n } else {\n var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0);\n nextY = y + moveY; // Wrap when width exceeds maxHeight or meet a `newline` group\n\n if (nextY > maxHeight || child.newline) {\n x += currentLineMaxSize + gap;\n y = 0;\n nextY = moveY;\n currentLineMaxSize = rect.width;\n } else {\n currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);\n }\n }\n\n if (child.newline) {\n return;\n }\n\n position[0] = x;\n position[1] = y;\n orient === 'horizontal' ? x = nextX + gap : y = nextY + gap;\n });\n}\n/**\n * VBox or HBox layouting\n * @param {string} orient\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\n\nvar box = boxLayout;\n/**\n * VBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar vbox = zrUtil.curry(boxLayout, 'vertical');\n/**\n * HBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar hbox = zrUtil.curry(boxLayout, 'horizontal');\n/**\n * If x or x2 is not specified or 'center' 'left' 'right',\n * the width would be as long as possible.\n * If y or y2 is not specified or 'middle' 'top' 'bottom',\n * the height would be as long as possible.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.x]\n * @param {number|string} [positionInfo.y]\n * @param {number|string} [positionInfo.x2]\n * @param {number|string} [positionInfo.y2]\n * @param {Object} containerRect {width, height}\n * @param {string|number} margin\n * @return {Object} {width, height}\n */\n\nfunction getAvailableSize(positionInfo, containerRect, margin) {\n var containerWidth = containerRect.width;\n var containerHeight = containerRect.height;\n var x = parsePercent(positionInfo.x, containerWidth);\n var y = parsePercent(positionInfo.y, containerHeight);\n var x2 = parsePercent(positionInfo.x2, containerWidth);\n var y2 = parsePercent(positionInfo.y2, containerHeight);\n (isNaN(x) || isNaN(parseFloat(positionInfo.x))) && (x = 0);\n (isNaN(x2) || isNaN(parseFloat(positionInfo.x2))) && (x2 = containerWidth);\n (isNaN(y) || isNaN(parseFloat(positionInfo.y))) && (y = 0);\n (isNaN(y2) || isNaN(parseFloat(positionInfo.y2))) && (y2 = containerHeight);\n margin = formatUtil.normalizeCssArray(margin || 0);\n return {\n width: Math.max(x2 - x - margin[1] - margin[3], 0),\n height: Math.max(y2 - y - margin[0] - margin[2], 0)\n };\n}\n/**\n * Parse position info.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width]\n * @param {number|string} [positionInfo.height]\n * @param {number|string} [positionInfo.aspect] Aspect is width / height\n * @param {Object} containerRect\n * @param {string|number} [margin]\n *\n * @return {module:zrender/core/BoundingRect}\n */\n\n\nfunction getLayoutRect(positionInfo, containerRect, margin) {\n margin = formatUtil.normalizeCssArray(margin || 0);\n var containerWidth = containerRect.width;\n var containerHeight = containerRect.height;\n var left = parsePercent(positionInfo.left, containerWidth);\n var top = parsePercent(positionInfo.top, containerHeight);\n var right = parsePercent(positionInfo.right, containerWidth);\n var bottom = parsePercent(positionInfo.bottom, containerHeight);\n var width = parsePercent(positionInfo.width, containerWidth);\n var height = parsePercent(positionInfo.height, containerHeight);\n var verticalMargin = margin[2] + margin[0];\n var horizontalMargin = margin[1] + margin[3];\n var aspect = positionInfo.aspect; // If width is not specified, calculate width from left and right\n\n if (isNaN(width)) {\n width = containerWidth - right - horizontalMargin - left;\n }\n\n if (isNaN(height)) {\n height = containerHeight - bottom - verticalMargin - top;\n }\n\n if (aspect != null) {\n // If width and height are not given\n // 1. Graph should not exceeds the container\n // 2. Aspect must be keeped\n // 3. Graph should take the space as more as possible\n // FIXME\n // Margin is not considered, because there is no case that both\n // using margin and aspect so far.\n if (isNaN(width) && isNaN(height)) {\n if (aspect > containerWidth / containerHeight) {\n width = containerWidth * 0.8;\n } else {\n height = containerHeight * 0.8;\n }\n } // Calculate width or height with given aspect\n\n\n if (isNaN(width)) {\n width = aspect * height;\n }\n\n if (isNaN(height)) {\n height = width / aspect;\n }\n } // If left is not specified, calculate left from right and width\n\n\n if (isNaN(left)) {\n left = containerWidth - right - width - horizontalMargin;\n }\n\n if (isNaN(top)) {\n top = containerHeight - bottom - height - verticalMargin;\n } // Align left and top\n\n\n switch (positionInfo.left || positionInfo.right) {\n case 'center':\n left = containerWidth / 2 - width / 2 - margin[3];\n break;\n\n case 'right':\n left = containerWidth - width - horizontalMargin;\n break;\n }\n\n switch (positionInfo.top || positionInfo.bottom) {\n case 'middle':\n case 'center':\n top = containerHeight / 2 - height / 2 - margin[0];\n break;\n\n case 'bottom':\n top = containerHeight - height - verticalMargin;\n break;\n } // If something is wrong and left, top, width, height are calculated as NaN\n\n\n left = left || 0;\n top = top || 0;\n\n if (isNaN(width)) {\n // Width may be NaN if only one value is given except width\n width = containerWidth - horizontalMargin - left - (right || 0);\n }\n\n if (isNaN(height)) {\n // Height may be NaN if only one value is given except height\n height = containerHeight - verticalMargin - top - (bottom || 0);\n }\n\n var rect = new BoundingRect(left + margin[3], top + margin[0], width, height);\n rect.margin = margin;\n return rect;\n}\n/**\n * Position a zr element in viewport\n * Group position is specified by either\n * {left, top}, {right, bottom}\n * If all properties exists, right and bottom will be igonred.\n *\n * Logic:\n * 1. Scale (against origin point in parent coord)\n * 2. Rotate (against origin point in parent coord)\n * 3. Traslate (with el.position by this method)\n * So this method only fixes the last step 'Traslate', which does not affect\n * scaling and rotating.\n *\n * If be called repeatly with the same input el, the same result will be gotten.\n *\n * @param {module:zrender/Element} el Should have `getBoundingRect` method.\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width] Only for opt.boundingModel: 'raw'\n * @param {number|string} [positionInfo.height] Only for opt.boundingModel: 'raw'\n * @param {Object} containerRect\n * @param {string|number} margin\n * @param {Object} [opt]\n * @param {Array.} [opt.hv=[1,1]] Only horizontal or only vertical.\n * @param {Array.} [opt.boundingMode='all']\n * Specify how to calculate boundingRect when locating.\n * 'all': Position the boundingRect that is transformed and uioned\n * both itself and its descendants.\n * This mode simplies confine the elements in the bounding\n * of their container (e.g., using 'right: 0').\n * 'raw': Position the boundingRect that is not transformed and only itself.\n * This mode is useful when you want a element can overflow its\n * container. (Consider a rotated circle needs to be located in a corner.)\n * In this mode positionInfo.width/height can only be number.\n */\n\n\nfunction positionElement(el, positionInfo, containerRect, margin, opt) {\n var h = !opt || !opt.hv || opt.hv[0];\n var v = !opt || !opt.hv || opt.hv[1];\n var boundingMode = opt && opt.boundingMode || 'all';\n\n if (!h && !v) {\n return;\n }\n\n var rect;\n\n if (boundingMode === 'raw') {\n rect = el.type === 'group' ? new BoundingRect(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) : el.getBoundingRect();\n } else {\n rect = el.getBoundingRect();\n\n if (el.needLocalTransform()) {\n var transform = el.getLocalTransform(); // Notice: raw rect may be inner object of el,\n // which should not be modified.\n\n rect = rect.clone();\n rect.applyTransform(transform);\n }\n } // The real width and height can not be specified but calculated by the given el.\n\n\n positionInfo = getLayoutRect(zrUtil.defaults({\n width: rect.width,\n height: rect.height\n }, positionInfo), containerRect, margin); // Because 'tranlate' is the last step in transform\n // (see zrender/core/Transformable#getLocalTransform),\n // we can just only modify el.position to get final result.\n\n var elPos = el.position;\n var dx = h ? positionInfo.x - rect.x : 0;\n var dy = v ? positionInfo.y - rect.y : 0;\n el.attr('position', boundingMode === 'raw' ? [dx, dy] : [elPos[0] + dx, elPos[1] + dy]);\n}\n/**\n * @param {Object} option Contains some of the properties in HV_NAMES.\n * @param {number} hvIdx 0: horizontal; 1: vertical.\n */\n\n\nfunction sizeCalculable(option, hvIdx) {\n return option[HV_NAMES[hvIdx][0]] != null || option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null;\n}\n/**\n * Consider Case:\n * When defulat option has {left: 0, width: 100}, and we set {right: 0}\n * through setOption or media query, using normal zrUtil.merge will cause\n * {right: 0} does not take effect.\n *\n * @example\n * ComponentModel.extend({\n * init: function () {\n * ...\n * var inputPositionParams = layout.getLayoutParams(option);\n * this.mergeOption(inputPositionParams);\n * },\n * mergeOption: function (newOption) {\n * newOption && zrUtil.merge(thisOption, newOption, true);\n * layout.mergeLayoutParam(thisOption, newOption);\n * }\n * });\n *\n * @param {Object} targetOption\n * @param {Object} newOption\n * @param {Object|string} [opt]\n * @param {boolean|Array.} [opt.ignoreSize=false] Used for the components\n * that width (or height) should not be calculated by left and right (or top and bottom).\n */\n\n\nfunction mergeLayoutParam(targetOption, newOption, opt) {\n !zrUtil.isObject(opt) && (opt = {});\n var ignoreSize = opt.ignoreSize;\n !zrUtil.isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);\n var hResult = merge(HV_NAMES[0], 0);\n var vResult = merge(HV_NAMES[1], 1);\n copy(HV_NAMES[0], targetOption, hResult);\n copy(HV_NAMES[1], targetOption, vResult);\n\n function merge(names, hvIdx) {\n var newParams = {};\n var newValueCount = 0;\n var merged = {};\n var mergedValueCount = 0;\n var enoughParamNumber = 2;\n each(names, function (name) {\n merged[name] = targetOption[name];\n });\n each(names, function (name) {\n // Consider case: newOption.width is null, which is\n // set by user for removing width setting.\n hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);\n hasValue(newParams, name) && newValueCount++;\n hasValue(merged, name) && mergedValueCount++;\n });\n\n if (ignoreSize[hvIdx]) {\n // Only one of left/right is premitted to exist.\n if (hasValue(newOption, names[1])) {\n merged[names[2]] = null;\n } else if (hasValue(newOption, names[2])) {\n merged[names[1]] = null;\n }\n\n return merged;\n } // Case: newOption: {width: ..., right: ...},\n // or targetOption: {right: ...} and newOption: {width: ...},\n // There is no conflict when merged only has params count\n // little than enoughParamNumber.\n\n\n if (mergedValueCount === enoughParamNumber || !newValueCount) {\n return merged;\n } // Case: newOption: {width: ..., right: ...},\n // Than we can make sure user only want those two, and ignore\n // all origin params in targetOption.\n else if (newValueCount >= enoughParamNumber) {\n return newParams;\n } else {\n // Chose another param from targetOption by priority.\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n\n if (!hasProp(newParams, name) && hasProp(targetOption, name)) {\n newParams[name] = targetOption[name];\n break;\n }\n }\n\n return newParams;\n }\n }\n\n function hasProp(obj, name) {\n return obj.hasOwnProperty(name);\n }\n\n function hasValue(obj, name) {\n return obj[name] != null && obj[name] !== 'auto';\n }\n\n function copy(names, target, source) {\n each(names, function (name) {\n target[name] = source[name];\n });\n }\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction getLayoutParams(source) {\n return copyLayoutParams({}, source);\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction copyLayoutParams(target, source) {\n source && target && each(LOCATION_PARAMS, function (name) {\n source.hasOwnProperty(name) && (target[name] = source[name]);\n });\n return target;\n}\n\nexports.LOCATION_PARAMS = LOCATION_PARAMS;\nexports.HV_NAMES = HV_NAMES;\nexports.box = box;\nexports.vbox = vbox;\nexports.hbox = hbox;\nexports.getAvailableSize = getAvailableSize;\nexports.getLayoutRect = getLayoutRect;\nexports.positionElement = positionElement;\nexports.sizeCalculable = sizeCalculable;\nexports.mergeLayoutParam = mergeLayoutParam;\nexports.getLayoutParams = getLayoutParams;\nexports.copyLayoutParams = copyLayoutParams;","/* global Float32Array */\nvar ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * 创建一个向量\n * @param {number} [x=0]\n * @param {number} [y=0]\n * @return {Vector2}\n */\n\nfunction create(x, y) {\n var out = new ArrayCtor(2);\n\n if (x == null) {\n x = 0;\n }\n\n if (y == null) {\n y = 0;\n }\n\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * 复制向量数据\n * @param {Vector2} out\n * @param {Vector2} v\n * @return {Vector2}\n */\n\n\nfunction copy(out, v) {\n out[0] = v[0];\n out[1] = v[1];\n return out;\n}\n/**\n * 克隆一个向量\n * @param {Vector2} v\n * @return {Vector2}\n */\n\n\nfunction clone(v) {\n var out = new ArrayCtor(2);\n out[0] = v[0];\n out[1] = v[1];\n return out;\n}\n/**\n * 设置向量的两个项\n * @param {Vector2} out\n * @param {number} a\n * @param {number} b\n * @return {Vector2} 结果\n */\n\n\nfunction set(out, a, b) {\n out[0] = a;\n out[1] = b;\n return out;\n}\n/**\n * 向量相加\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction add(out, v1, v2) {\n out[0] = v1[0] + v2[0];\n out[1] = v1[1] + v2[1];\n return out;\n}\n/**\n * 向量缩放后相加\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @param {number} a\n */\n\n\nfunction scaleAndAdd(out, v1, v2, a) {\n out[0] = v1[0] + v2[0] * a;\n out[1] = v1[1] + v2[1] * a;\n return out;\n}\n/**\n * 向量相减\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction sub(out, v1, v2) {\n out[0] = v1[0] - v2[0];\n out[1] = v1[1] - v2[1];\n return out;\n}\n/**\n * 向量长度\n * @param {Vector2} v\n * @return {number}\n */\n\n\nfunction len(v) {\n return Math.sqrt(lenSquare(v));\n}\n\nvar length = len; // jshint ignore:line\n\n/**\n * 向量长度平方\n * @param {Vector2} v\n * @return {number}\n */\n\nfunction lenSquare(v) {\n return v[0] * v[0] + v[1] * v[1];\n}\n\nvar lengthSquare = lenSquare;\n/**\n * 向量乘法\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\nfunction mul(out, v1, v2) {\n out[0] = v1[0] * v2[0];\n out[1] = v1[1] * v2[1];\n return out;\n}\n/**\n * 向量除法\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction div(out, v1, v2) {\n out[0] = v1[0] / v2[0];\n out[1] = v1[1] / v2[1];\n return out;\n}\n/**\n * 向量点乘\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\n\nfunction dot(v1, v2) {\n return v1[0] * v2[0] + v1[1] * v2[1];\n}\n/**\n * 向量缩放\n * @param {Vector2} out\n * @param {Vector2} v\n * @param {number} s\n */\n\n\nfunction scale(out, v, s) {\n out[0] = v[0] * s;\n out[1] = v[1] * s;\n return out;\n}\n/**\n * 向量归一化\n * @param {Vector2} out\n * @param {Vector2} v\n */\n\n\nfunction normalize(out, v) {\n var d = len(v);\n\n if (d === 0) {\n out[0] = 0;\n out[1] = 0;\n } else {\n out[0] = v[0] / d;\n out[1] = v[1] / d;\n }\n\n return out;\n}\n/**\n * 计算向量间距离\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\n\nfunction distance(v1, v2) {\n return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]));\n}\n\nvar dist = distance;\n/**\n * 向量距离平方\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\nfunction distanceSquare(v1, v2) {\n return (v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]);\n}\n\nvar distSquare = distanceSquare;\n/**\n * 求负向量\n * @param {Vector2} out\n * @param {Vector2} v\n */\n\nfunction negate(out, v) {\n out[0] = -v[0];\n out[1] = -v[1];\n return out;\n}\n/**\n * 插值两个点\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @param {number} t\n */\n\n\nfunction lerp(out, v1, v2, t) {\n out[0] = v1[0] + t * (v2[0] - v1[0]);\n out[1] = v1[1] + t * (v2[1] - v1[1]);\n return out;\n}\n/**\n * 矩阵左乘向量\n * @param {Vector2} out\n * @param {Vector2} v\n * @param {Vector2} m\n */\n\n\nfunction applyTransform(out, v, m) {\n var x = v[0];\n var y = v[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * 求两个向量最小值\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction min(out, v1, v2) {\n out[0] = Math.min(v1[0], v2[0]);\n out[1] = Math.min(v1[1], v2[1]);\n return out;\n}\n/**\n * 求两个向量最大值\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction max(out, v1, v2) {\n out[0] = Math.max(v1[0], v2[0]);\n out[1] = Math.max(v1[1], v2[1]);\n return out;\n}\n\nexports.create = create;\nexports.copy = copy;\nexports.clone = clone;\nexports.set = set;\nexports.add = add;\nexports.scaleAndAdd = scaleAndAdd;\nexports.sub = sub;\nexports.len = len;\nexports.length = length;\nexports.lenSquare = lenSquare;\nexports.lengthSquare = lengthSquare;\nexports.mul = mul;\nexports.div = div;\nexports.dot = dot;\nexports.scale = scale;\nexports.normalize = normalize;\nexports.distance = distance;\nexports.dist = dist;\nexports.distanceSquare = distanceSquare;\nexports.distSquare = distSquare;\nexports.negate = negate;\nexports.lerp = lerp;\nexports.applyTransform = applyTransform;\nexports.min = min;\nexports.max = max;","var vec2 = require(\"./vector\");\n\nvar matrix = require(\"./matrix\");\n\n/**\n * @module echarts/core/BoundingRect\n */\nvar v2ApplyTransform = vec2.applyTransform;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\n/**\n * @alias module:echarts/core/BoundingRect\n */\n\nfunction BoundingRect(x, y, width, height) {\n if (width < 0) {\n x = x + width;\n width = -width;\n }\n\n if (height < 0) {\n y = y + height;\n height = -height;\n }\n /**\n * @type {number}\n */\n\n\n this.x = x;\n /**\n * @type {number}\n */\n\n this.y = y;\n /**\n * @type {number}\n */\n\n this.width = width;\n /**\n * @type {number}\n */\n\n this.height = height;\n}\n\nBoundingRect.prototype = {\n constructor: BoundingRect,\n\n /**\n * @param {module:echarts/core/BoundingRect} other\n */\n union: function (other) {\n var x = mathMin(other.x, this.x);\n var y = mathMin(other.y, this.y);\n this.width = mathMax(other.x + other.width, this.x + this.width) - x;\n this.height = mathMax(other.y + other.height, this.y + this.height) - y;\n this.x = x;\n this.y = y;\n },\n\n /**\n * @param {Array.} m\n * @methods\n */\n applyTransform: function () {\n var lt = [];\n var rb = [];\n var lb = [];\n var rt = [];\n return function (m) {\n // In case usage like this\n // el.getBoundingRect().applyTransform(el.transform)\n // And element has no transform\n if (!m) {\n return;\n }\n\n lt[0] = lb[0] = this.x;\n lt[1] = rt[1] = this.y;\n rb[0] = rt[0] = this.x + this.width;\n rb[1] = lb[1] = this.y + this.height;\n v2ApplyTransform(lt, lt, m);\n v2ApplyTransform(rb, rb, m);\n v2ApplyTransform(lb, lb, m);\n v2ApplyTransform(rt, rt, m);\n this.x = mathMin(lt[0], rb[0], lb[0], rt[0]);\n this.y = mathMin(lt[1], rb[1], lb[1], rt[1]);\n var maxX = mathMax(lt[0], rb[0], lb[0], rt[0]);\n var maxY = mathMax(lt[1], rb[1], lb[1], rt[1]);\n this.width = maxX - this.x;\n this.height = maxY - this.y;\n };\n }(),\n\n /**\n * Calculate matrix of transforming from self to target rect\n * @param {module:zrender/core/BoundingRect} b\n * @return {Array.}\n */\n calculateTransform: function (b) {\n var a = this;\n var sx = b.width / a.width;\n var sy = b.height / a.height;\n var m = matrix.create(); // 矩阵右乘\n\n matrix.translate(m, m, [-a.x, -a.y]);\n matrix.scale(m, m, [sx, sy]);\n matrix.translate(m, m, [b.x, b.y]);\n return m;\n },\n\n /**\n * @param {(module:echarts/core/BoundingRect|Object)} b\n * @return {boolean}\n */\n intersect: function (b) {\n if (!b) {\n return false;\n }\n\n if (!(b instanceof BoundingRect)) {\n // Normalize negative width/height.\n b = BoundingRect.create(b);\n }\n\n var a = this;\n var ax0 = a.x;\n var ax1 = a.x + a.width;\n var ay0 = a.y;\n var ay1 = a.y + a.height;\n var bx0 = b.x;\n var bx1 = b.x + b.width;\n var by0 = b.y;\n var by1 = b.y + b.height;\n return !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);\n },\n contain: function (x, y) {\n var rect = this;\n return x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height;\n },\n\n /**\n * @return {module:echarts/core/BoundingRect}\n */\n clone: function () {\n return new BoundingRect(this.x, this.y, this.width, this.height);\n },\n\n /**\n * Copy from another rect\n */\n copy: function (other) {\n this.x = other.x;\n this.y = other.y;\n this.width = other.width;\n this.height = other.height;\n },\n plain: function () {\n return {\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height\n };\n }\n};\n/**\n * @param {Object|module:zrender/core/BoundingRect} rect\n * @param {number} rect.x\n * @param {number} rect.y\n * @param {number} rect.width\n * @param {number} rect.height\n * @return {module:zrender/core/BoundingRect}\n */\n\nBoundingRect.create = function (rect) {\n return new BoundingRect(rect.x, rect.y, rect.width, rect.height);\n};\n\nvar _default = BoundingRect;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar numberUtil = require(\"./number\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import Text from 'zrender/src/graphic/Text';\n\n/**\n * 每三位默认加,格式化\n * @param {string|number} x\n * @return {string}\n */\nfunction addCommas(x) {\n if (isNaN(x)) {\n return '-';\n }\n\n x = (x + '').split('.');\n return x[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, '$1,') + (x.length > 1 ? '.' + x[1] : '');\n}\n/**\n * @param {string} str\n * @param {boolean} [upperCaseFirst=false]\n * @return {string} str\n */\n\n\nfunction toCamelCase(str, upperCaseFirst) {\n str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) {\n return group1.toUpperCase();\n });\n\n if (upperCaseFirst && str) {\n str = str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n return str;\n}\n\nvar normalizeCssArray = zrUtil.normalizeCssArray;\nvar replaceReg = /([&<>\"'])/g;\nvar replaceMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n};\n\nfunction encodeHTML(source) {\n return source == null ? '' : (source + '').replace(replaceReg, function (str, c) {\n return replaceMap[c];\n });\n}\n\nvar TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\n\nvar wrapVar = function (varName, seriesIdx) {\n return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\n};\n/**\n * Template formatter\n * @param {string} tpl\n * @param {Array.|Object} paramsList\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTpl(tpl, paramsList, encode) {\n if (!zrUtil.isArray(paramsList)) {\n paramsList = [paramsList];\n }\n\n var seriesLen = paramsList.length;\n\n if (!seriesLen) {\n return '';\n }\n\n var $vars = paramsList[0].$vars || [];\n\n for (var i = 0; i < $vars.length; i++) {\n var alias = TPL_VAR_ALIAS[i];\n tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));\n }\n\n for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {\n for (var k = 0; k < $vars.length; k++) {\n var val = paramsList[seriesIdx][$vars[k]];\n tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);\n }\n }\n\n return tpl;\n}\n/**\n * simple Template formatter\n *\n * @param {string} tpl\n * @param {Object} param\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTplSimple(tpl, param, encode) {\n zrUtil.each(param, function (value, key) {\n tpl = tpl.replace('{' + key + '}', encode ? encodeHTML(value) : value);\n });\n return tpl;\n}\n/**\n * @param {Object|string} [opt] If string, means color.\n * @param {string} [opt.color]\n * @param {string} [opt.extraCssText]\n * @param {string} [opt.type='item'] 'item' or 'subItem'\n * @param {string} [opt.renderMode='html'] render mode of tooltip, 'html' or 'richText'\n * @param {string} [opt.markerId='X'] id name for marker. If only one marker is in a rich text, this can be omitted.\n * @return {string}\n */\n\n\nfunction getTooltipMarker(opt, extraCssText) {\n opt = zrUtil.isString(opt) ? {\n color: opt,\n extraCssText: extraCssText\n } : opt || {};\n var color = opt.color;\n var type = opt.type;\n var extraCssText = opt.extraCssText;\n var renderMode = opt.renderMode || 'html';\n var markerId = opt.markerId || 'X';\n\n if (!color) {\n return '';\n }\n\n if (renderMode === 'html') {\n return type === 'subItem' ? '' : '';\n } else {\n // Space for rich element marker\n return {\n renderMode: renderMode,\n content: '{marker' + markerId + '|} ',\n style: {\n color: color\n }\n };\n }\n}\n\nfunction pad(str, len) {\n str += '';\n return '0000'.substr(0, len - str.length) + str;\n}\n/**\n * ISO Date format\n * @param {string} tpl\n * @param {number} value\n * @param {boolean} [isUTC=false] Default in local time.\n * see `module:echarts/scale/Time`\n * and `module:echarts/util/number#parseDate`.\n * @inner\n */\n\n\nfunction formatTime(tpl, value, isUTC) {\n if (tpl === 'week' || tpl === 'month' || tpl === 'quarter' || tpl === 'half-year' || tpl === 'year') {\n tpl = 'MM-dd\\nyyyy';\n }\n\n var date = numberUtil.parseDate(value);\n var utc = isUTC ? 'UTC' : '';\n var y = date['get' + utc + 'FullYear']();\n var M = date['get' + utc + 'Month']() + 1;\n var d = date['get' + utc + 'Date']();\n var h = date['get' + utc + 'Hours']();\n var m = date['get' + utc + 'Minutes']();\n var s = date['get' + utc + 'Seconds']();\n var S = date['get' + utc + 'Milliseconds']();\n tpl = tpl.replace('MM', pad(M, 2)).replace('M', M).replace('yyyy', y).replace('yy', y % 100).replace('dd', pad(d, 2)).replace('d', d).replace('hh', pad(h, 2)).replace('h', h).replace('mm', pad(m, 2)).replace('m', m).replace('ss', pad(s, 2)).replace('s', s).replace('SSS', pad(S, 3));\n return tpl;\n}\n/**\n * Capital first\n * @param {string} str\n * @return {string}\n */\n\n\nfunction capitalFirst(str) {\n return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;\n}\n\nvar truncateText = textContain.truncateText;\n/**\n * @public\n * @param {Object} opt\n * @param {string} opt.text\n * @param {string} opt.font\n * @param {string} [opt.textAlign='left']\n * @param {string} [opt.textVerticalAlign='top']\n * @param {Array.} [opt.textPadding]\n * @param {number} [opt.textLineHeight]\n * @param {Object} [opt.rich]\n * @param {Object} [opt.truncate]\n * @return {Object} {x, y, width, height, lineHeight}\n */\n\nfunction getTextBoundingRect(opt) {\n return textContain.getBoundingRect(opt.text, opt.font, opt.textAlign, opt.textVerticalAlign, opt.textPadding, opt.textLineHeight, opt.rich, opt.truncate);\n}\n/**\n * @deprecated\n * the `textLineHeight` was added later.\n * For backward compatiblility, put it as the last parameter.\n * But deprecated this interface. Please use `getTextBoundingRect` instead.\n */\n\n\nfunction getTextRect(text, font, textAlign, textVerticalAlign, textPadding, rich, truncate, textLineHeight) {\n return textContain.getBoundingRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate);\n}\n\nexports.addCommas = addCommas;\nexports.toCamelCase = toCamelCase;\nexports.normalizeCssArray = normalizeCssArray;\nexports.encodeHTML = encodeHTML;\nexports.formatTpl = formatTpl;\nexports.formatTplSimple = formatTplSimple;\nexports.getTooltipMarker = getTooltipMarker;\nexports.formatTime = formatTime;\nexports.capitalFirst = capitalFirst;\nexports.truncateText = truncateText;\nexports.getTextBoundingRect = getTextBoundingRect;\nexports.getTextRect = getTextRect;","var Displayable = require(\"./Displayable\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar pathContain = require(\"../contain/path\");\n\nvar Pattern = require(\"./Pattern\");\n\nvar getCanvasPattern = Pattern.prototype.getCanvasPattern;\nvar abs = Math.abs;\nvar pathProxyForDraw = new PathProxy(true);\n/**\n * @alias module:zrender/graphic/Path\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\n\nfunction Path(opts) {\n Displayable.call(this, opts);\n /**\n * @type {module:zrender/core/PathProxy}\n * @readOnly\n */\n\n this.path = null;\n}\n\nPath.prototype = {\n constructor: Path,\n type: 'path',\n __dirtyPath: true,\n strokeContainThreshold: 5,\n // This item default to be false. But in map series in echarts,\n // in order to improve performance, it should be set to true,\n // so the shorty segment won't draw.\n segmentIgnoreThreshold: 0,\n\n /**\n * See `module:zrender/src/graphic/helper/subPixelOptimize`.\n * @type {boolean}\n */\n subPixelOptimize: false,\n brush: function (ctx, prevEl) {\n var style = this.style;\n var path = this.path || pathProxyForDraw;\n var hasStroke = style.hasStroke();\n var hasFill = style.hasFill();\n var fill = style.fill;\n var stroke = style.stroke;\n var hasFillGradient = hasFill && !!fill.colorStops;\n var hasStrokeGradient = hasStroke && !!stroke.colorStops;\n var hasFillPattern = hasFill && !!fill.image;\n var hasStrokePattern = hasStroke && !!stroke.image;\n style.bind(ctx, this, prevEl);\n this.setTransform(ctx);\n\n if (this.__dirty) {\n var rect; // Update gradient because bounding rect may changed\n\n if (hasFillGradient) {\n rect = rect || this.getBoundingRect();\n this._fillGradient = style.getGradient(ctx, fill, rect);\n }\n\n if (hasStrokeGradient) {\n rect = rect || this.getBoundingRect();\n this._strokeGradient = style.getGradient(ctx, stroke, rect);\n }\n } // Use the gradient or pattern\n\n\n if (hasFillGradient) {\n // PENDING If may have affect the state\n ctx.fillStyle = this._fillGradient;\n } else if (hasFillPattern) {\n ctx.fillStyle = getCanvasPattern.call(fill, ctx);\n }\n\n if (hasStrokeGradient) {\n ctx.strokeStyle = this._strokeGradient;\n } else if (hasStrokePattern) {\n ctx.strokeStyle = getCanvasPattern.call(stroke, ctx);\n }\n\n var lineDash = style.lineDash;\n var lineDashOffset = style.lineDashOffset;\n var ctxLineDash = !!ctx.setLineDash; // Update path sx, sy\n\n var scale = this.getGlobalScale();\n path.setScale(scale[0], scale[1], this.segmentIgnoreThreshold); // Proxy context\n // Rebuild path in following 2 cases\n // 1. Path is dirty\n // 2. Path needs javascript implemented lineDash stroking.\n // In this case, lineDash information will not be saved in PathProxy\n\n if (this.__dirtyPath || lineDash && !ctxLineDash && hasStroke) {\n path.beginPath(ctx); // Setting line dash before build path\n\n if (lineDash && !ctxLineDash) {\n path.setLineDash(lineDash);\n path.setLineDashOffset(lineDashOffset);\n }\n\n this.buildPath(path, this.shape, false); // Clear path dirty flag\n\n if (this.path) {\n this.__dirtyPath = false;\n }\n } else {\n // Replay path building\n ctx.beginPath();\n this.path.rebuildPath(ctx);\n }\n\n if (hasFill) {\n if (style.fillOpacity != null) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.fillOpacity * style.opacity;\n path.fill(ctx);\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n path.fill(ctx);\n }\n }\n\n if (lineDash && ctxLineDash) {\n ctx.setLineDash(lineDash);\n ctx.lineDashOffset = lineDashOffset;\n }\n\n if (hasStroke) {\n if (style.strokeOpacity != null) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.strokeOpacity * style.opacity;\n path.stroke(ctx);\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n path.stroke(ctx);\n }\n }\n\n if (lineDash && ctxLineDash) {\n // PENDING\n // Remove lineDash\n ctx.setLineDash([]);\n } // Draw rect text\n\n\n if (style.text != null) {\n // Only restore transform when needs draw text.\n this.restoreTransform(ctx);\n this.drawRectText(ctx, this.getBoundingRect());\n }\n },\n // When bundling path, some shape may decide if use moveTo to begin a new subpath or closePath\n // Like in circle\n buildPath: function (ctx, shapeCfg, inBundle) {},\n createPathProxy: function () {\n this.path = new PathProxy();\n },\n getBoundingRect: function () {\n var rect = this._rect;\n var style = this.style;\n var needsUpdateRect = !rect;\n\n if (needsUpdateRect) {\n var path = this.path;\n\n if (!path) {\n // Create path on demand.\n path = this.path = new PathProxy();\n }\n\n if (this.__dirtyPath) {\n path.beginPath();\n this.buildPath(path, this.shape, false);\n }\n\n rect = path.getBoundingRect();\n }\n\n this._rect = rect;\n\n if (style.hasStroke()) {\n // Needs update rect with stroke lineWidth when\n // 1. Element changes scale or lineWidth\n // 2. Shape is changed\n var rectWithStroke = this._rectWithStroke || (this._rectWithStroke = rect.clone());\n\n if (this.__dirty || needsUpdateRect) {\n rectWithStroke.copy(rect); // FIXME Must after updateTransform\n\n var w = style.lineWidth; // PENDING, Min line width is needed when line is horizontal or vertical\n\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1; // Only add extra hover lineWidth when there are no fill\n\n if (!style.hasFill()) {\n w = Math.max(w, this.strokeContainThreshold || 4);\n } // Consider line width\n // Line scale can't be 0;\n\n\n if (lineScale > 1e-10) {\n rectWithStroke.width += w / lineScale;\n rectWithStroke.height += w / lineScale;\n rectWithStroke.x -= w / lineScale / 2;\n rectWithStroke.y -= w / lineScale / 2;\n }\n } // Return rect with stroke\n\n\n return rectWithStroke;\n }\n\n return rect;\n },\n contain: function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n var style = this.style;\n x = localPos[0];\n y = localPos[1];\n\n if (rect.contain(x, y)) {\n var pathData = this.path.data;\n\n if (style.hasStroke()) {\n var lineWidth = style.lineWidth;\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1; // Line scale can't be 0;\n\n if (lineScale > 1e-10) {\n // Only add extra hover lineWidth when there are no fill\n if (!style.hasFill()) {\n lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\n }\n\n if (pathContain.containStroke(pathData, lineWidth / lineScale, x, y)) {\n return true;\n }\n }\n }\n\n if (style.hasFill()) {\n return pathContain.contain(pathData, x, y);\n }\n }\n\n return false;\n },\n\n /**\n * @param {boolean} dirtyPath\n */\n dirty: function (dirtyPath) {\n if (dirtyPath == null) {\n dirtyPath = true;\n } // Only mark dirty, not mark clean\n\n\n if (dirtyPath) {\n this.__dirtyPath = dirtyPath;\n this._rect = null;\n }\n\n this.__dirty = this.__dirtyText = true;\n this.__zr && this.__zr.refresh(); // Used as a clipping path\n\n if (this.__clipTarget) {\n this.__clipTarget.dirty();\n }\n },\n\n /**\n * Alias for animate('shape')\n * @param {boolean} loop\n */\n animateShape: function (loop) {\n return this.animate('shape', loop);\n },\n // Overwrite attrKV\n attrKV: function (key, value) {\n // FIXME\n if (key === 'shape') {\n this.setShape(value);\n this.__dirtyPath = true;\n this._rect = null;\n } else {\n Displayable.prototype.attrKV.call(this, key, value);\n }\n },\n\n /**\n * @param {Object|string} key\n * @param {*} value\n */\n setShape: function (key, value) {\n var shape = this.shape; // Path from string may not have shape\n\n if (shape) {\n if (zrUtil.isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n shape[name] = key[name];\n }\n }\n } else {\n shape[key] = value;\n }\n\n this.dirty(true);\n }\n\n return this;\n },\n getLineScale: function () {\n var m = this.transform; // Get the line scale.\n // Determinant of `m` means how much the area is enlarged by the\n // transformation. So its square root can be used as a scale factor\n // for width.\n\n return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10 ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1])) : 1;\n }\n};\n/**\n * 扩展一个 Path element, 比如星形,圆等。\n * Extend a path element\n * @param {Object} props\n * @param {string} props.type Path type\n * @param {Function} props.init Initialize\n * @param {Function} props.buildPath Overwrite buildPath method\n * @param {Object} [props.style] Extended default style config\n * @param {Object} [props.shape] Extended default shape config\n */\n\nPath.extend = function (defaults) {\n var Sub = function (opts) {\n Path.call(this, opts);\n\n if (defaults.style) {\n // Extend default style\n this.style.extendFrom(defaults.style, false);\n } // Extend default shape\n\n\n var defaultShape = defaults.shape;\n\n if (defaultShape) {\n this.shape = this.shape || {};\n var thisShape = this.shape;\n\n for (var name in defaultShape) {\n if (!thisShape.hasOwnProperty(name) && defaultShape.hasOwnProperty(name)) {\n thisShape[name] = defaultShape[name];\n }\n }\n }\n\n defaults.init && defaults.init.call(this, opts);\n };\n\n zrUtil.inherits(Sub, Path); // FIXME 不能 extend position, rotation 等引用对象\n\n for (var name in defaults) {\n // Extending prototype values and methods\n if (name !== 'style' && name !== 'shape') {\n Sub.prototype[name] = defaults[name];\n }\n }\n\n return Sub;\n};\n\nzrUtil.inherits(Path, Displayable);\nvar _default = Path;\nmodule.exports = _default;","/**\n * echarts设备环境识别\n *\n * @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。\n * @author firede[firede@firede.us]\n * @desc thanks zepto.\n */\n\n/* global wx */\nvar env = {};\n\nif (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\n // In Weixin Application\n env = {\n browser: {},\n os: {},\n node: false,\n wxa: true,\n // Weixin Application\n canvasSupported: true,\n svgSupported: false,\n touchEventsSupported: true,\n domSupported: false\n };\n} else if (typeof document === 'undefined' && typeof self !== 'undefined') {\n // In worker\n env = {\n browser: {},\n os: {},\n node: false,\n worker: true,\n canvasSupported: true,\n domSupported: false\n };\n} else if (typeof navigator === 'undefined') {\n // In node\n env = {\n browser: {},\n os: {},\n node: true,\n worker: false,\n // Assume canvas is supported\n canvasSupported: true,\n svgSupported: true,\n domSupported: false\n };\n} else {\n env = detect(navigator.userAgent);\n}\n\nvar _default = env; // Zepto.js\n// (c) 2010-2013 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nfunction detect(ua) {\n var os = {};\n var browser = {}; // var webkit = ua.match(/Web[kK]it[\\/]{0,1}([\\d.]+)/);\n // var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n // var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n // var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n // var iphone = !ipad && ua.match(/(iPhone\\sOS)\\s([\\d_]+)/);\n // var webos = ua.match(/(webOS|hpwOS)[\\s\\/]([\\d.]+)/);\n // var touchpad = webos && ua.match(/TouchPad/);\n // var kindle = ua.match(/Kindle\\/([\\d.]+)/);\n // var silk = ua.match(/Silk\\/([\\d._]+)/);\n // var blackberry = ua.match(/(BlackBerry).*Version\\/([\\d.]+)/);\n // var bb10 = ua.match(/(BB10).*Version\\/([\\d.]+)/);\n // var rimtabletos = ua.match(/(RIM\\sTablet\\sOS)\\s([\\d.]+)/);\n // var playbook = ua.match(/PlayBook/);\n // var chrome = ua.match(/Chrome\\/([\\d.]+)/) || ua.match(/CriOS\\/([\\d.]+)/);\n\n var firefox = ua.match(/Firefox\\/([\\d.]+)/); // var safari = webkit && ua.match(/Mobile\\//) && !chrome;\n // var webview = ua.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/) && !chrome;\n\n var ie = ua.match(/MSIE\\s([\\d.]+)/) // IE 11 Trident/7.0; rv:11.0\n || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\n var edge = ua.match(/Edge\\/([\\d.]+)/); // IE 12 and 12+\n\n var weChat = /micromessenger/i.test(ua); // Todo: clean this up with a better OS/browser seperation:\n // - discern (more) between multiple browsers on android\n // - decide if kindle fire in silk mode is android or not\n // - Firefox on Android doesn't specify the Android version\n // - possibly devide in os, device and browser hashes\n // if (browser.webkit = !!webkit) browser.version = webkit[1];\n // if (android) os.android = true, os.version = android[2];\n // if (iphone && !ipod) os.ios = os.iphone = true, os.version = iphone[2].replace(/_/g, '.');\n // if (ipad) os.ios = os.ipad = true, os.version = ipad[2].replace(/_/g, '.');\n // if (ipod) os.ios = os.ipod = true, os.version = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n // if (webos) os.webos = true, os.version = webos[2];\n // if (touchpad) os.touchpad = true;\n // if (blackberry) os.blackberry = true, os.version = blackberry[2];\n // if (bb10) os.bb10 = true, os.version = bb10[2];\n // if (rimtabletos) os.rimtabletos = true, os.version = rimtabletos[2];\n // if (playbook) browser.playbook = true;\n // if (kindle) os.kindle = true, os.version = kindle[1];\n // if (silk) browser.silk = true, browser.version = silk[1];\n // if (!silk && os.android && ua.match(/Kindle Fire/)) browser.silk = true;\n // if (chrome) browser.chrome = true, browser.version = chrome[1];\n\n if (firefox) {\n browser.firefox = true;\n browser.version = firefox[1];\n } // if (safari && (ua.match(/Safari/) || !!os.ios)) browser.safari = true;\n // if (webview) browser.webview = true;\n\n\n if (ie) {\n browser.ie = true;\n browser.version = ie[1];\n }\n\n if (edge) {\n browser.edge = true;\n browser.version = edge[1];\n } // It is difficult to detect WeChat in Win Phone precisely, because ua can\n // not be set on win phone. So we do not consider Win Phone.\n\n\n if (weChat) {\n browser.weChat = true;\n } // os.tablet = !!(ipad || playbook || (android && !ua.match(/Mobile/)) ||\n // (firefox && ua.match(/Tablet/)) || (ie && !ua.match(/Phone/) && ua.match(/Touch/)));\n // os.phone = !!(!os.tablet && !os.ipod && (android || iphone || webos ||\n // (chrome && ua.match(/Android/)) || (chrome && ua.match(/CriOS\\/([\\d.]+)/)) ||\n // (firefox && ua.match(/Mobile/)) || (ie && ua.match(/Touch/))));\n\n\n return {\n browser: browser,\n os: os,\n node: false,\n // 原生canvas支持,改极端点了\n // canvasSupported : !(browser.ie && parseFloat(browser.version) < 9)\n canvasSupported: !!document.createElement('canvas').getContext,\n svgSupported: typeof SVGRect !== 'undefined',\n // works on most browsers\n // IE10/11 does not support touch event, and MS Edge supports them but not by\n // default, so we dont check navigator.maxTouchPoints for them here.\n touchEventsSupported: 'ontouchstart' in window && !browser.ie && !browser.edge,\n // .\n pointerEventsSupported: // (1) Firefox supports pointer but not by default, only MS browsers are reliable on pointer\n // events currently. So we dont use that on other browsers unless tested sufficiently.\n // For example, in iOS 13 Mobile Chromium 78, if the touching behavior starts page\n // scroll, the `pointermove` event can not be fired any more. That will break some\n // features like \"pan horizontally to move something and pan vertically to page scroll\".\n // The horizontal pan probably be interrupted by the casually triggered page scroll.\n // (2) Although IE 10 supports pointer event, it use old style and is different from the\n // standard. So we exclude that. (IE 10 is hardly used on touch device)\n 'onpointerdown' in window && (browser.edge || browser.ie && browser.version >= 11),\n // passiveSupported: detectPassiveSupport()\n domSupported: typeof document !== 'undefined'\n };\n} // See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n// function detectPassiveSupport() {\n// // Test via a getter in the options object to see if the passive property is accessed\n// var supportsPassive = false;\n// try {\n// var opts = Object.defineProperty({}, 'passive', {\n// get: function() {\n// supportsPassive = true;\n// }\n// });\n// window.addEventListener('testPassive', function() {}, opts);\n// } catch (e) {\n// }\n// return supportsPassive;\n// }\n\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassExtend = _clazz.enableClassExtend;\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar lineStyleMixin = require(\"./mixin/lineStyle\");\n\nvar areaStyleMixin = require(\"./mixin/areaStyle\");\n\nvar textStyleMixin = require(\"./mixin/textStyle\");\n\nvar itemStyleMixin = require(\"./mixin/itemStyle\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/model/Model\n */\nvar mixin = zrUtil.mixin;\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Model\n * @constructor\n * @param {Object} [option]\n * @param {module:echarts/model/Model} [parentModel]\n * @param {module:echarts/model/Global} [ecModel]\n */\n\nfunction Model(option, parentModel, ecModel) {\n /**\n * @type {module:echarts/model/Model}\n * @readOnly\n */\n this.parentModel = parentModel;\n /**\n * @type {module:echarts/model/Global}\n * @readOnly\n */\n\n this.ecModel = ecModel;\n /**\n * @type {Object}\n * @protected\n */\n\n this.option = option; // Simple optimization\n // if (this.init) {\n // if (arguments.length <= 4) {\n // this.init(option, parentModel, ecModel, extraOpt);\n // }\n // else {\n // this.init.apply(this, arguments);\n // }\n // }\n}\n\nModel.prototype = {\n constructor: Model,\n\n /**\n * Model 的初始化函数\n * @param {Object} option\n */\n init: null,\n\n /**\n * 从新的 Option merge\n */\n mergeOption: function (option) {\n zrUtil.merge(this.option, option, true);\n },\n\n /**\n * @param {string|Array.} path\n * @param {boolean} [ignoreParent=false]\n * @return {*}\n */\n get: function (path, ignoreParent) {\n if (path == null) {\n return this.option;\n }\n\n return doGet(this.option, this.parsePath(path), !ignoreParent && getParent(this, path));\n },\n\n /**\n * @param {string} key\n * @param {boolean} [ignoreParent=false]\n * @return {*}\n */\n getShallow: function (key, ignoreParent) {\n var option = this.option;\n var val = option == null ? option : option[key];\n var parentModel = !ignoreParent && getParent(this, key);\n\n if (val == null && parentModel) {\n val = parentModel.getShallow(key);\n }\n\n return val;\n },\n\n /**\n * @param {string|Array.} [path]\n * @param {module:echarts/model/Model} [parentModel]\n * @return {module:echarts/model/Model}\n */\n getModel: function (path, parentModel) {\n var obj = path == null ? this.option : doGet(this.option, path = this.parsePath(path));\n var thisParentModel;\n parentModel = parentModel || (thisParentModel = getParent(this, path)) && thisParentModel.getModel(path);\n return new Model(obj, parentModel, this.ecModel);\n },\n\n /**\n * If model has option\n */\n isEmpty: function () {\n return this.option == null;\n },\n restoreData: function () {},\n // Pending\n clone: function () {\n var Ctor = this.constructor;\n return new Ctor(zrUtil.clone(this.option));\n },\n setReadOnly: function (properties) {// clazzUtil.setReadOnly(this, properties);\n },\n // If path is null/undefined, return null/undefined.\n parsePath: function (path) {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n\n return path;\n },\n\n /**\n * @param {Function} getParentMethod\n * param {Array.|string} path\n * return {module:echarts/model/Model}\n */\n customizeGetParent: function (getParentMethod) {\n inner(this).getParent = getParentMethod;\n },\n isAnimationEnabled: function () {\n if (!env.node) {\n if (this.option.animation != null) {\n return !!this.option.animation;\n } else if (this.parentModel) {\n return this.parentModel.isAnimationEnabled();\n }\n }\n }\n};\n\nfunction doGet(obj, pathArr, parentModel) {\n for (var i = 0; i < pathArr.length; i++) {\n // Ignore empty\n if (!pathArr[i]) {\n continue;\n } // obj could be number/string/... (like 0)\n\n\n obj = obj && typeof obj === 'object' ? obj[pathArr[i]] : null;\n\n if (obj == null) {\n break;\n }\n }\n\n if (obj == null && parentModel) {\n obj = parentModel.get(pathArr);\n }\n\n return obj;\n} // `path` can be null/undefined\n\n\nfunction getParent(model, path) {\n var getParentMethod = inner(model).getParent;\n return getParentMethod ? getParentMethod.call(model, path) : model.parentModel;\n} // Enable Model.extend.\n\n\nenableClassExtend(Model);\nenableClassCheck(Model);\nmixin(Model, lineStyleMixin);\nmixin(Model, areaStyleMixin);\nmixin(Model, textStyleMixin);\nmixin(Model, itemStyleMixin);\nvar _default = Model;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"./Model\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassManagement = _clazz.enableClassManagement;\nvar parseClassType = _clazz.parseClassType;\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar layout = require(\"../util/layout\");\n\nvar boxLayoutMixin = require(\"./mixin/boxLayout\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Component model\n *\n * @module echarts/model/Component\n */\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Component\n * @constructor\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {module:echarts/model/Model} ecModel\n */\n\nvar ComponentModel = Model.extend({\n type: 'component',\n\n /**\n * @readOnly\n * @type {string}\n */\n id: '',\n\n /**\n * Because simplified concept is probably better, series.name (or component.name)\n * has been having too many resposibilities:\n * (1) Generating id (which requires name in option should not be modified).\n * (2) As an index to mapping series when merging option or calling API (a name\n * can refer to more then one components, which is convinient is some case).\n * (3) Display.\n * @readOnly\n */\n name: '',\n\n /**\n * @readOnly\n * @type {string}\n */\n mainType: '',\n\n /**\n * @readOnly\n * @type {string}\n */\n subType: '',\n\n /**\n * @readOnly\n * @type {number}\n */\n componentIndex: 0,\n\n /**\n * @type {Object}\n * @protected\n */\n defaultOption: null,\n\n /**\n * @type {module:echarts/model/Global}\n * @readOnly\n */\n ecModel: null,\n\n /**\n * key: componentType\n * value: Component model list, can not be null.\n * @type {Object.>}\n * @readOnly\n */\n dependentModels: [],\n\n /**\n * @type {string}\n * @readOnly\n */\n uid: null,\n\n /**\n * Support merge layout params.\n * Only support 'box' now (left/right/top/bottom/width/height).\n * @type {string|Object} Object can be {ignoreSize: true}\n * @readOnly\n */\n layoutMode: null,\n $constructor: function (option, parentModel, ecModel, extraOpt) {\n Model.call(this, option, parentModel, ecModel, extraOpt);\n this.uid = componentUtil.getUID('ec_cpt_model');\n },\n init: function (option, parentModel, ecModel, extraOpt) {\n this.mergeDefaultAndTheme(option, ecModel);\n },\n mergeDefaultAndTheme: function (option, ecModel) {\n var layoutMode = this.layoutMode;\n var inputPositionParams = layoutMode ? layout.getLayoutParams(option) : {};\n var themeModel = ecModel.getTheme();\n zrUtil.merge(option, themeModel.get(this.mainType));\n zrUtil.merge(option, this.getDefaultOption());\n\n if (layoutMode) {\n layout.mergeLayoutParam(option, inputPositionParams, layoutMode);\n }\n },\n mergeOption: function (option, extraOpt) {\n zrUtil.merge(this.option, option, true);\n var layoutMode = this.layoutMode;\n\n if (layoutMode) {\n layout.mergeLayoutParam(this.option, option, layoutMode);\n }\n },\n // Hooker after init or mergeOption\n optionUpdated: function (newCptOption, isInit) {},\n getDefaultOption: function () {\n var fields = inner(this);\n\n if (!fields.defaultOption) {\n var optList = [];\n var Class = this.constructor;\n\n while (Class) {\n var opt = Class.prototype.defaultOption;\n opt && optList.push(opt);\n Class = Class.superClass;\n }\n\n var defaultOption = {};\n\n for (var i = optList.length - 1; i >= 0; i--) {\n defaultOption = zrUtil.merge(defaultOption, optList[i], true);\n }\n\n fields.defaultOption = defaultOption;\n }\n\n return fields.defaultOption;\n },\n getReferringComponents: function (mainType) {\n return this.ecModel.queryComponents({\n mainType: mainType,\n index: this.get(mainType + 'Index', true),\n id: this.get(mainType + 'Id', true)\n });\n }\n}); // Reset ComponentModel.extend, add preConstruct.\n// clazzUtil.enableClassExtend(\n// ComponentModel,\n// function (option, parentModel, ecModel, extraOpt) {\n// // Set dependentModels, componentIndex, name, id, mainType, subType.\n// zrUtil.extend(this, extraOpt);\n// this.uid = componentUtil.getUID('componentModel');\n// // this.setReadOnly([\n// // 'type', 'id', 'uid', 'name', 'mainType', 'subType',\n// // 'dependentModels', 'componentIndex'\n// // ]);\n// }\n// );\n// Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nenableClassManagement(ComponentModel, {\n registerWhenExtend: true\n});\ncomponentUtil.enableSubTypeDefaulter(ComponentModel); // Add capability of ComponentModel.topologicalTravel.\n\ncomponentUtil.enableTopologicalTravel(ComponentModel, getDependencies);\n\nfunction getDependencies(componentType) {\n var deps = [];\n zrUtil.each(ComponentModel.getClassesByMainType(componentType), function (Clazz) {\n deps = deps.concat(Clazz.prototype.dependencies || []);\n }); // Ensure main type.\n\n deps = zrUtil.map(deps, function (type) {\n return parseClassType(type).main;\n }); // Hack dataset for convenience.\n\n if (componentType !== 'dataset' && zrUtil.indexOf(deps, 'dataset') <= 0) {\n deps.unshift('dataset');\n }\n\n return deps;\n}\n\nzrUtil.mixin(ComponentModel, boxLayoutMixin);\nvar _default = ComponentModel;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar _format = require(\"../util/format\");\n\nvar formatTime = _format.formatTime;\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\nvar getTooltipMarker = _format.getTooltipMarker;\n\nvar modelUtil = require(\"../util/model\");\n\nvar ComponentModel = require(\"./Component\");\n\nvar colorPaletteMixin = require(\"./mixin/colorPalette\");\n\nvar dataFormatMixin = require(\"../model/mixin/dataFormat\");\n\nvar _layout = require(\"../util/layout\");\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\nvar _task = require(\"../stream/task\");\n\nvar createTask = _task.createTask;\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar prepareSource = _sourceHelper.prepareSource;\nvar getSource = _sourceHelper.getSource;\n\nvar _dataProvider = require(\"../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = modelUtil.makeInner();\nvar SeriesModel = ComponentModel.extend({\n type: 'series.__base__',\n\n /**\n * @readOnly\n */\n seriesIndex: 0,\n // coodinateSystem will be injected in the echarts/CoordinateSystem\n coordinateSystem: null,\n\n /**\n * @type {Object}\n * @protected\n */\n defaultOption: null,\n\n /**\n * legend visual provider to the legend component\n * @type {Object}\n */\n // PENDING\n legendVisualProvider: null,\n\n /**\n * Access path of color for visual\n */\n visualColorAccessPath: 'itemStyle.color',\n\n /**\n * Access path of borderColor for visual\n */\n visualBorderColorAccessPath: 'itemStyle.borderColor',\n\n /**\n * Support merge layout params.\n * Only support 'box' now (left/right/top/bottom/width/height).\n * @type {string|Object} Object can be {ignoreSize: true}\n * @readOnly\n */\n layoutMode: null,\n init: function (option, parentModel, ecModel, extraOpt) {\n /**\n * @type {number}\n * @readOnly\n */\n this.seriesIndex = this.componentIndex;\n this.dataTask = createTask({\n count: dataTaskCount,\n reset: dataTaskReset\n });\n this.dataTask.context = {\n model: this\n };\n this.mergeDefaultAndTheme(option, ecModel);\n prepareSource(this);\n var data = this.getInitialData(option, ecModel);\n wrapData(data, this);\n this.dataTask.context.data = data;\n\n /**\n * @type {module:echarts/data/List|module:echarts/data/Tree|module:echarts/data/Graph}\n * @private\n */\n inner(this).dataBeforeProcessed = data; // If we reverse the order (make data firstly, and then make\n // dataBeforeProcessed by cloneShallow), cloneShallow will\n // cause data.graph.data !== data when using\n // module:echarts/data/Graph or module:echarts/data/Tree.\n // See module:echarts/data/helper/linkList\n // Theoretically, it is unreasonable to call `seriesModel.getData()` in the model\n // init or merge stage, because the data can be restored. So we do not `restoreData`\n // and `setData` here, which forbids calling `seriesModel.getData()` in this stage.\n // Call `seriesModel.getRawData()` instead.\n // this.restoreData();\n\n autoSeriesName(this);\n },\n\n /**\n * Util for merge default and theme to option\n * @param {Object} option\n * @param {module:echarts/model/Global} ecModel\n */\n mergeDefaultAndTheme: function (option, ecModel) {\n var layoutMode = this.layoutMode;\n var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; // Backward compat: using subType on theme.\n // But if name duplicate between series subType\n // (for example: parallel) add component mainType,\n // add suffix 'Series'.\n\n var themeSubType = this.subType;\n\n if (ComponentModel.hasClass(themeSubType)) {\n themeSubType += 'Series';\n }\n\n zrUtil.merge(option, ecModel.getTheme().get(this.subType));\n zrUtil.merge(option, this.getDefaultOption()); // Default label emphasis `show`\n\n modelUtil.defaultEmphasis(option, 'label', ['show']);\n this.fillDataTextStyle(option.data);\n\n if (layoutMode) {\n mergeLayoutParam(option, inputPositionParams, layoutMode);\n }\n },\n mergeOption: function (newSeriesOption, ecModel) {\n // this.settingTask.dirty();\n newSeriesOption = zrUtil.merge(this.option, newSeriesOption, true);\n this.fillDataTextStyle(newSeriesOption.data);\n var layoutMode = this.layoutMode;\n\n if (layoutMode) {\n mergeLayoutParam(this.option, newSeriesOption, layoutMode);\n }\n\n prepareSource(this);\n var data = this.getInitialData(newSeriesOption, ecModel);\n wrapData(data, this);\n this.dataTask.dirty();\n this.dataTask.context.data = data;\n inner(this).dataBeforeProcessed = data;\n autoSeriesName(this);\n },\n fillDataTextStyle: function (data) {\n // Default data label emphasis `show`\n // FIXME Tree structure data ?\n // FIXME Performance ?\n if (data && !zrUtil.isTypedArray(data)) {\n var props = ['show'];\n\n for (var i = 0; i < data.length; i++) {\n if (data[i] && data[i].label) {\n modelUtil.defaultEmphasis(data[i], 'label', props);\n }\n }\n }\n },\n\n /**\n * Init a data structure from data related option in series\n * Must be overwritten\n */\n getInitialData: function () {},\n\n /**\n * Append data to list\n * @param {Object} params\n * @param {Array|TypedArray} params.data\n */\n appendData: function (params) {\n // FIXME ???\n // (1) If data from dataset, forbidden append.\n // (2) support append data of dataset.\n var data = this.getRawData();\n data.appendData(params.data);\n },\n\n /**\n * Consider some method like `filter`, `map` need make new data,\n * We should make sure that `seriesModel.getData()` get correct\n * data in the stream procedure. So we fetch data from upstream\n * each time `task.perform` called.\n * @param {string} [dataType]\n * @return {module:echarts/data/List}\n */\n getData: function (dataType) {\n var task = getCurrentTask(this);\n\n if (task) {\n var data = task.context.data;\n return dataType == null ? data : data.getLinkedData(dataType);\n } else {\n // When series is not alive (that may happen when click toolbox\n // restore or setOption with not merge mode), series data may\n // be still need to judge animation or something when graphic\n // elements want to know whether fade out.\n return inner(this).data;\n }\n },\n\n /**\n * @param {module:echarts/data/List} data\n */\n setData: function (data) {\n var task = getCurrentTask(this);\n\n if (task) {\n var context = task.context; // Consider case: filter, data sample.\n\n if (context.data !== data && task.modifyOutputEnd) {\n task.setOutputEnd(data.count());\n }\n\n context.outputData = data; // Caution: setData should update context.data,\n // Because getData may be called multiply in a\n // single stage and expect to get the data just\n // set. (For example, AxisProxy, x y both call\n // getData and setDate sequentially).\n // So the context.data should be fetched from\n // upstream each time when a stage starts to be\n // performed.\n\n if (task !== this.dataTask) {\n context.data = data;\n }\n }\n\n inner(this).data = data;\n },\n\n /**\n * @see {module:echarts/data/helper/sourceHelper#getSource}\n * @return {module:echarts/data/Source} source\n */\n getSource: function () {\n return getSource(this);\n },\n\n /**\n * Get data before processed\n * @return {module:echarts/data/List}\n */\n getRawData: function () {\n return inner(this).dataBeforeProcessed;\n },\n\n /**\n * Get base axis if has coordinate system and has axis.\n * By default use coordSys.getBaseAxis();\n * Can be overrided for some chart.\n * @return {type} description\n */\n getBaseAxis: function () {\n var coordSys = this.coordinateSystem;\n return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();\n },\n // FIXME\n\n /**\n * Default tooltip formatter\n *\n * @param {number} dataIndex\n * @param {boolean} [multipleSeries=false]\n * @param {number} [dataType]\n * @param {string} [renderMode='html'] valid values: 'html' and 'richText'.\n * 'html' is used for rendering tooltip in extra DOM form, and the result\n * string is used as DOM HTML content.\n * 'richText' is used for rendering tooltip in rich text form, for those where\n * DOM operation is not supported.\n * @return {Object} formatted tooltip with `html` and `markers`\n */\n formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n var series = this;\n renderMode = renderMode || 'html';\n var newLine = renderMode === 'html' ? '
' : '\\n';\n var isRichText = renderMode === 'richText';\n var markers = {};\n var markerId = 0;\n\n function formatArrayValue(value) {\n // ??? TODO refactor these logic.\n // check: category-no-encode-has-axis-data in dataset.html\n var vertially = zrUtil.reduce(value, function (vertially, val, idx) {\n var dimItem = data.getDimensionInfo(idx);\n return vertially |= dimItem && dimItem.tooltip !== false && dimItem.displayName != null;\n }, 0);\n var result = [];\n tooltipDims.length ? zrUtil.each(tooltipDims, function (dim) {\n setEachItem(retrieveRawValue(data, dataIndex, dim), dim);\n }) // By default, all dims is used on tooltip.\n : zrUtil.each(value, setEachItem);\n\n function setEachItem(val, dim) {\n var dimInfo = data.getDimensionInfo(dim); // If `dimInfo.tooltip` is not set, show tooltip.\n\n if (!dimInfo || dimInfo.otherDims.tooltip === false) {\n return;\n }\n\n var dimType = dimInfo.type;\n var markName = 'sub' + series.seriesIndex + 'at' + markerId;\n var dimHead = getTooltipMarker({\n color: color,\n type: 'subItem',\n renderMode: renderMode,\n markerId: markName\n });\n var dimHeadStr = typeof dimHead === 'string' ? dimHead : dimHead.content;\n var valStr = (vertially ? dimHeadStr + encodeHTML(dimInfo.displayName || '-') + ': ' : '') + // FIXME should not format time for raw data?\n encodeHTML(dimType === 'ordinal' ? val + '' : dimType === 'time' ? multipleSeries ? '' : formatTime('yyyy/MM/dd hh:mm:ss', val) : addCommas(val));\n valStr && result.push(valStr);\n\n if (isRichText) {\n markers[markName] = color;\n ++markerId;\n }\n }\n\n var newLine = vertially ? isRichText ? '\\n' : '
' : '';\n var content = newLine + result.join(newLine || ', ');\n return {\n renderMode: renderMode,\n content: content,\n style: markers\n };\n }\n\n function formatSingleValue(val) {\n // return encodeHTML(addCommas(val));\n return {\n renderMode: renderMode,\n content: encodeHTML(addCommas(val)),\n style: markers\n };\n }\n\n var data = this.getData();\n var tooltipDims = data.mapDimension('defaultedTooltip', true);\n var tooltipDimLen = tooltipDims.length;\n var value = this.getRawValue(dataIndex);\n var isValueArr = zrUtil.isArray(value);\n var color = data.getItemVisual(dataIndex, 'color');\n\n if (zrUtil.isObject(color) && color.colorStops) {\n color = (color.colorStops[0] || {}).color;\n }\n\n color = color || 'transparent'; // Complicated rule for pretty tooltip.\n\n var formattedValue = tooltipDimLen > 1 || isValueArr && !tooltipDimLen ? formatArrayValue(value) : tooltipDimLen ? formatSingleValue(retrieveRawValue(data, dataIndex, tooltipDims[0])) : formatSingleValue(isValueArr ? value[0] : value);\n var content = formattedValue.content;\n var markName = series.seriesIndex + 'at' + markerId;\n var colorEl = getTooltipMarker({\n color: color,\n type: 'item',\n renderMode: renderMode,\n markerId: markName\n });\n markers[markName] = color;\n ++markerId;\n var name = data.getName(dataIndex);\n var seriesName = this.name;\n\n if (!modelUtil.isNameSpecified(this)) {\n seriesName = '';\n }\n\n seriesName = seriesName ? encodeHTML(seriesName) + (!multipleSeries ? newLine : ': ') : '';\n var colorStr = typeof colorEl === 'string' ? colorEl : colorEl.content;\n var html = !multipleSeries ? seriesName + colorStr + (name ? encodeHTML(name) + ': ' + content : content) : colorStr + seriesName + content;\n return {\n html: html,\n markers: markers\n };\n },\n\n /**\n * @return {boolean}\n */\n isAnimationEnabled: function () {\n if (env.node) {\n return false;\n }\n\n var animationEnabled = this.getShallow('animation');\n\n if (animationEnabled) {\n if (this.getData().count() > this.getShallow('animationThreshold')) {\n animationEnabled = false;\n }\n }\n\n return animationEnabled;\n },\n restoreData: function () {\n this.dataTask.dirty();\n },\n getColorFromPalette: function (name, scope, requestColorNum) {\n var ecModel = this.ecModel; // PENDING\n\n var color = colorPaletteMixin.getColorFromPalette.call(this, name, scope, requestColorNum);\n\n if (!color) {\n color = ecModel.getColorFromPalette(name, scope, requestColorNum);\n }\n\n return color;\n },\n\n /**\n * Use `data.mapDimension(coordDim, true)` instead.\n * @deprecated\n */\n coordDimToDataDim: function (coordDim) {\n return this.getRawData().mapDimension(coordDim, true);\n },\n\n /**\n * Get progressive rendering count each step\n * @return {number}\n */\n getProgressive: function () {\n return this.get('progressive');\n },\n\n /**\n * Get progressive rendering count each step\n * @return {number}\n */\n getProgressiveThreshold: function () {\n return this.get('progressiveThreshold');\n },\n\n /**\n * Get data indices for show tooltip content. See tooltip.\n * @abstract\n * @param {Array.|string} dim\n * @param {Array.} value\n * @param {module:echarts/coord/single/SingleAxis} baseAxis\n * @return {Object} {dataIndices, nestestValue}.\n */\n getAxisTooltipData: null,\n\n /**\n * See tooltip.\n * @abstract\n * @param {number} dataIndex\n * @return {Array.} Point of tooltip. null/undefined can be returned.\n */\n getTooltipPosition: null,\n\n /**\n * @see {module:echarts/stream/Scheduler}\n */\n pipeTask: null,\n\n /**\n * Convinient for override in extended class.\n * @protected\n * @type {Function}\n */\n preventIncremental: null,\n\n /**\n * @public\n * @readOnly\n * @type {Object}\n */\n pipelineContext: null\n});\nzrUtil.mixin(SeriesModel, dataFormatMixin);\nzrUtil.mixin(SeriesModel, colorPaletteMixin);\n/**\n * MUST be called after `prepareSource` called\n * Here we need to make auto series, especially for auto legend. But we\n * do not modify series.name in option to avoid side effects.\n */\n\nfunction autoSeriesName(seriesModel) {\n // User specified name has higher priority, otherwise it may cause\n // series can not be queried unexpectedly.\n var name = seriesModel.name;\n\n if (!modelUtil.isNameSpecified(seriesModel)) {\n seriesModel.name = getSeriesAutoName(seriesModel) || name;\n }\n}\n\nfunction getSeriesAutoName(seriesModel) {\n var data = seriesModel.getRawData();\n var dataDims = data.mapDimension('seriesName', true);\n var nameArr = [];\n zrUtil.each(dataDims, function (dataDim) {\n var dimInfo = data.getDimensionInfo(dataDim);\n dimInfo.displayName && nameArr.push(dimInfo.displayName);\n });\n return nameArr.join(' ');\n}\n\nfunction dataTaskCount(context) {\n return context.model.getRawData().count();\n}\n\nfunction dataTaskReset(context) {\n var seriesModel = context.model;\n seriesModel.setData(seriesModel.getRawData().cloneShallow());\n return dataTaskProgress;\n}\n\nfunction dataTaskProgress(param, context) {\n // Avoid repead cloneShallow when data just created in reset.\n if (param.end > context.outputData.count()) {\n context.model.getRawData().cloneShallow(context.outputData);\n }\n} // TODO refactor\n\n\nfunction wrapData(data, seriesModel) {\n zrUtil.each(data.CHANGABLE_METHODS, function (methodName) {\n data.wrapMethod(methodName, zrUtil.curry(onDataSelfChange, seriesModel));\n });\n}\n\nfunction onDataSelfChange(seriesModel) {\n var task = getCurrentTask(seriesModel);\n\n if (task) {\n // Consider case: filter, selectRange\n task.setOutputEnd(this.count());\n }\n}\n\nfunction getCurrentTask(seriesModel) {\n var scheduler = (seriesModel.ecModel || {}).scheduler;\n var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid);\n\n if (pipeline) {\n // When pipline finished, the currrentTask keep the last\n // task (renderTask).\n var task = pipeline.currentTask;\n\n if (task) {\n var agentStubMap = task.agentStubMap;\n\n if (agentStubMap) {\n task = agentStubMap.get(seriesModel.uid);\n }\n }\n\n return task;\n }\n}\n\nvar _default = SeriesModel;\nmodule.exports = _default;","module.exports = require(\"reactDOM\");","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","/**\n * 3x2矩阵操作类\n * @exports zrender/tool/matrix\n */\n\n/* global Float32Array */\nvar ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * Create a identity matrix.\n * @return {Float32Array|Array.}\n */\n\nfunction create() {\n var out = new ArrayCtor(6);\n identity(out);\n return out;\n}\n/**\n * 设置矩阵为单位矩阵\n * @param {Float32Array|Array.} out\n */\n\n\nfunction identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\n/**\n * 复制矩阵\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} m\n */\n\n\nfunction copy(out, m) {\n out[0] = m[0];\n out[1] = m[1];\n out[2] = m[2];\n out[3] = m[3];\n out[4] = m[4];\n out[5] = m[5];\n return out;\n}\n/**\n * 矩阵相乘\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} m1\n * @param {Float32Array|Array.} m2\n */\n\n\nfunction mul(out, m1, m2) {\n // Consider matrix.mul(m, m2, m);\n // where out is the same as m2.\n // So use temp variable to escape error.\n var out0 = m1[0] * m2[0] + m1[2] * m2[1];\n var out1 = m1[1] * m2[0] + m1[3] * m2[1];\n var out2 = m1[0] * m2[2] + m1[2] * m2[3];\n var out3 = m1[1] * m2[2] + m1[3] * m2[3];\n var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\n var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = out3;\n out[4] = out4;\n out[5] = out5;\n return out;\n}\n/**\n * 平移变换\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n * @param {Float32Array|Array.} v\n */\n\n\nfunction translate(out, a, v) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4] + v[0];\n out[5] = a[5] + v[1];\n return out;\n}\n/**\n * 旋转变换\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n * @param {number} rad\n */\n\n\nfunction rotate(out, a, rad) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var st = Math.sin(rad);\n var ct = Math.cos(rad);\n out[0] = aa * ct + ab * st;\n out[1] = -aa * st + ab * ct;\n out[2] = ac * ct + ad * st;\n out[3] = -ac * st + ct * ad;\n out[4] = ct * atx + st * aty;\n out[5] = ct * aty - st * atx;\n return out;\n}\n/**\n * 缩放变换\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n * @param {Float32Array|Array.} v\n */\n\n\nfunction scale(out, a, v) {\n var vx = v[0];\n var vy = v[1];\n out[0] = a[0] * vx;\n out[1] = a[1] * vy;\n out[2] = a[2] * vx;\n out[3] = a[3] * vy;\n out[4] = a[4] * vx;\n out[5] = a[5] * vy;\n return out;\n}\n/**\n * 求逆矩阵\n * @param {Float32Array|Array.} out\n * @param {Float32Array|Array.} a\n */\n\n\nfunction invert(out, a) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var det = aa * ad - ab * ac;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n}\n/**\n * Clone a new matrix.\n * @param {Float32Array|Array.} a\n */\n\n\nfunction clone(a) {\n var b = create();\n copy(b, a);\n return b;\n}\n\nexports.create = create;\nexports.identity = identity;\nexports.copy = copy;\nexports.mul = mul;\nexports.translate = translate;\nexports.rotate = rotate;\nexports.scale = scale;\nexports.invert = invert;\nexports.clone = clone;","var BoundingRect = require(\"../core/BoundingRect\");\n\nvar imageHelper = require(\"../graphic/helper/image\");\n\nvar _util = require(\"../core/util\");\n\nvar getContext = _util.getContext;\nvar extend = _util.extend;\nvar retrieve2 = _util.retrieve2;\nvar retrieve3 = _util.retrieve3;\nvar trim = _util.trim;\nvar textWidthCache = {};\nvar textWidthCacheCounter = 0;\nvar TEXT_CACHE_MAX = 5000;\nvar STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\nvar DEFAULT_FONT = '12px sans-serif'; // Avoid assign to an exported variable, for transforming to cjs.\n\nvar methods = {};\n\nfunction $override(name, fn) {\n methods[name] = fn;\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @return {number} width\n */\n\n\nfunction getWidth(text, font) {\n font = font || DEFAULT_FONT;\n var key = text + ':' + font;\n\n if (textWidthCache[key]) {\n return textWidthCache[key];\n }\n\n var textLines = (text + '').split('\\n');\n var width = 0;\n\n for (var i = 0, l = textLines.length; i < l; i++) {\n // textContain.measureText may be overrided in SVG or VML\n width = Math.max(measureText(textLines[i], font).width, width);\n }\n\n if (textWidthCacheCounter > TEXT_CACHE_MAX) {\n textWidthCacheCounter = 0;\n textWidthCache = {};\n }\n\n textWidthCacheCounter++;\n textWidthCache[key] = width;\n return width;\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @param {string} [textAlign='left']\n * @param {string} [textVerticalAlign='top']\n * @param {Array.} [textPadding]\n * @param {Object} [rich]\n * @param {Object} [truncate]\n * @return {Object} {x, y, width, height, lineHeight}\n */\n\n\nfunction getBoundingRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate) {\n return rich ? getRichTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate) : getPlainTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, truncate);\n}\n\nfunction getPlainTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, truncate) {\n var contentBlock = parsePlainText(text, font, textPadding, textLineHeight, truncate);\n var outerWidth = getWidth(text, font);\n\n if (textPadding) {\n outerWidth += textPadding[1] + textPadding[3];\n }\n\n var outerHeight = contentBlock.outerHeight;\n var x = adjustTextX(0, outerWidth, textAlign);\n var y = adjustTextY(0, outerHeight, textVerticalAlign);\n var rect = new BoundingRect(x, y, outerWidth, outerHeight);\n rect.lineHeight = contentBlock.lineHeight;\n return rect;\n}\n\nfunction getRichTextRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate) {\n var contentBlock = parseRichText(text, {\n rich: rich,\n truncate: truncate,\n font: font,\n textAlign: textAlign,\n textPadding: textPadding,\n textLineHeight: textLineHeight\n });\n var outerWidth = contentBlock.outerWidth;\n var outerHeight = contentBlock.outerHeight;\n var x = adjustTextX(0, outerWidth, textAlign);\n var y = adjustTextY(0, outerHeight, textVerticalAlign);\n return new BoundingRect(x, y, outerWidth, outerHeight);\n}\n/**\n * @public\n * @param {number} x\n * @param {number} width\n * @param {string} [textAlign='left']\n * @return {number} Adjusted x.\n */\n\n\nfunction adjustTextX(x, width, textAlign) {\n // FIXME Right to left language\n if (textAlign === 'right') {\n x -= width;\n } else if (textAlign === 'center') {\n x -= width / 2;\n }\n\n return x;\n}\n/**\n * @public\n * @param {number} y\n * @param {number} height\n * @param {string} [textVerticalAlign='top']\n * @return {number} Adjusted y.\n */\n\n\nfunction adjustTextY(y, height, textVerticalAlign) {\n if (textVerticalAlign === 'middle') {\n y -= height / 2;\n } else if (textVerticalAlign === 'bottom') {\n y -= height;\n }\n\n return y;\n}\n/**\n * Follow same interface to `Displayable.prototype.calculateTextPosition`.\n * @public\n * @param {Obejct} [out] Prepared out object. If not input, auto created in the method.\n * @param {module:zrender/graphic/Style} style where `textPosition` and `textDistance` are visited.\n * @param {Object} rect {x, y, width, height} Rect of the host elment, according to which the text positioned.\n * @return {Object} The input `out`. Set: {x, y, textAlign, textVerticalAlign}\n */\n\n\nfunction calculateTextPosition(out, style, rect) {\n var textPosition = style.textPosition;\n var distance = style.textDistance;\n var x = rect.x;\n var y = rect.y;\n distance = distance || 0;\n var height = rect.height;\n var width = rect.width;\n var halfHeight = height / 2;\n var textAlign = 'left';\n var textVerticalAlign = 'top';\n\n switch (textPosition) {\n case 'left':\n x -= distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n\n case 'right':\n x += distance + width;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n\n case 'top':\n x += width / 2;\n y -= distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n\n case 'bottom':\n x += width / 2;\n y += height + distance;\n textAlign = 'center';\n break;\n\n case 'inside':\n x += width / 2;\n y += halfHeight;\n textAlign = 'center';\n textVerticalAlign = 'middle';\n break;\n\n case 'insideLeft':\n x += distance;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n\n case 'insideRight':\n x += width - distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n\n case 'insideTop':\n x += width / 2;\n y += distance;\n textAlign = 'center';\n break;\n\n case 'insideBottom':\n x += width / 2;\n y += height - distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n\n case 'insideTopLeft':\n x += distance;\n y += distance;\n break;\n\n case 'insideTopRight':\n x += width - distance;\n y += distance;\n textAlign = 'right';\n break;\n\n case 'insideBottomLeft':\n x += distance;\n y += height - distance;\n textVerticalAlign = 'bottom';\n break;\n\n case 'insideBottomRight':\n x += width - distance;\n y += height - distance;\n textAlign = 'right';\n textVerticalAlign = 'bottom';\n break;\n }\n\n out = out || {};\n out.x = x;\n out.y = y;\n out.textAlign = textAlign;\n out.textVerticalAlign = textVerticalAlign;\n return out;\n}\n/**\n * To be removed. But still do not remove in case that some one has imported it.\n * @deprecated\n * @public\n * @param {stirng} textPosition\n * @param {Object} rect {x, y, width, height}\n * @param {number} distance\n * @return {Object} {x, y, textAlign, textVerticalAlign}\n */\n\n\nfunction adjustTextPositionOnRect(textPosition, rect, distance) {\n var dummyStyle = {\n textPosition: textPosition,\n textDistance: distance\n };\n return calculateTextPosition({}, dummyStyle, rect);\n}\n/**\n * Show ellipsis if overflow.\n *\n * @public\n * @param {string} text\n * @param {string} containerWidth\n * @param {string} font\n * @param {number} [ellipsis='...']\n * @param {Object} [options]\n * @param {number} [options.maxIterations=3]\n * @param {number} [options.minChar=0] If truncate result are less\n * then minChar, ellipsis will not show, which is\n * better for user hint in some cases.\n * @param {number} [options.placeholder=''] When all truncated, use the placeholder.\n * @return {string}\n */\n\n\nfunction truncateText(text, containerWidth, font, ellipsis, options) {\n if (!containerWidth) {\n return '';\n }\n\n var textLines = (text + '').split('\\n');\n options = prepareTruncateOptions(containerWidth, font, ellipsis, options); // FIXME\n // It is not appropriate that every line has '...' when truncate multiple lines.\n\n for (var i = 0, len = textLines.length; i < len; i++) {\n textLines[i] = truncateSingleLine(textLines[i], options);\n }\n\n return textLines.join('\\n');\n}\n\nfunction prepareTruncateOptions(containerWidth, font, ellipsis, options) {\n options = extend({}, options);\n options.font = font;\n var ellipsis = retrieve2(ellipsis, '...');\n options.maxIterations = retrieve2(options.maxIterations, 2);\n var minChar = options.minChar = retrieve2(options.minChar, 0); // FIXME\n // Other languages?\n\n options.cnCharWidth = getWidth('国', font); // FIXME\n // Consider proportional font?\n\n var ascCharWidth = options.ascCharWidth = getWidth('a', font);\n options.placeholder = retrieve2(options.placeholder, ''); // Example 1: minChar: 3, text: 'asdfzxcv', truncate result: 'asdf', but not: 'a...'.\n // Example 2: minChar: 3, text: '维度', truncate result: '维', but not: '...'.\n\n var contentWidth = containerWidth = Math.max(0, containerWidth - 1); // Reserve some gap.\n\n for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\n contentWidth -= ascCharWidth;\n }\n\n var ellipsisWidth = getWidth(ellipsis, font);\n\n if (ellipsisWidth > contentWidth) {\n ellipsis = '';\n ellipsisWidth = 0;\n }\n\n contentWidth = containerWidth - ellipsisWidth;\n options.ellipsis = ellipsis;\n options.ellipsisWidth = ellipsisWidth;\n options.contentWidth = contentWidth;\n options.containerWidth = containerWidth;\n return options;\n}\n\nfunction truncateSingleLine(textLine, options) {\n var containerWidth = options.containerWidth;\n var font = options.font;\n var contentWidth = options.contentWidth;\n\n if (!containerWidth) {\n return '';\n }\n\n var lineWidth = getWidth(textLine, font);\n\n if (lineWidth <= containerWidth) {\n return textLine;\n }\n\n for (var j = 0;; j++) {\n if (lineWidth <= contentWidth || j >= options.maxIterations) {\n textLine += options.ellipsis;\n break;\n }\n\n var subLength = j === 0 ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth) : lineWidth > 0 ? Math.floor(textLine.length * contentWidth / lineWidth) : 0;\n textLine = textLine.substr(0, subLength);\n lineWidth = getWidth(textLine, font);\n }\n\n if (textLine === '') {\n textLine = options.placeholder;\n }\n\n return textLine;\n}\n\nfunction estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {\n var width = 0;\n var i = 0;\n\n for (var len = text.length; i < len && width < contentWidth; i++) {\n var charCode = text.charCodeAt(i);\n width += 0 <= charCode && charCode <= 127 ? ascCharWidth : cnCharWidth;\n }\n\n return i;\n}\n/**\n * @public\n * @param {string} font\n * @return {number} line height\n */\n\n\nfunction getLineHeight(font) {\n // FIXME A rough approach.\n return getWidth('国', font);\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @return {Object} width\n */\n\n\nfunction measureText(text, font) {\n return methods.measureText(text, font);\n} // Avoid assign to an exported variable, for transforming to cjs.\n\n\nmethods.measureText = function (text, font) {\n var ctx = getContext();\n ctx.font = font || DEFAULT_FONT;\n return ctx.measureText(text);\n};\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @param {Object} [truncate]\n * @return {Object} block: {lineHeight, lines, height, outerHeight, canCacheByTextString}\n * Notice: for performance, do not calculate outerWidth util needed.\n * `canCacheByTextString` means the result `lines` is only determined by the input `text`.\n * Thus we can simply comparing the `input` text to determin whether the result changed,\n * without travel the result `lines`.\n */\n\n\nfunction parsePlainText(text, font, padding, textLineHeight, truncate) {\n text != null && (text += '');\n var lineHeight = retrieve2(textLineHeight, getLineHeight(font));\n var lines = text ? text.split('\\n') : [];\n var height = lines.length * lineHeight;\n var outerHeight = height;\n var canCacheByTextString = true;\n\n if (padding) {\n outerHeight += padding[0] + padding[2];\n }\n\n if (text && truncate) {\n canCacheByTextString = false;\n var truncOuterHeight = truncate.outerHeight;\n var truncOuterWidth = truncate.outerWidth;\n\n if (truncOuterHeight != null && outerHeight > truncOuterHeight) {\n text = '';\n lines = [];\n } else if (truncOuterWidth != null) {\n var options = prepareTruncateOptions(truncOuterWidth - (padding ? padding[1] + padding[3] : 0), font, truncate.ellipsis, {\n minChar: truncate.minChar,\n placeholder: truncate.placeholder\n }); // FIXME\n // It is not appropriate that every line has '...' when truncate multiple lines.\n\n for (var i = 0, len = lines.length; i < len; i++) {\n lines[i] = truncateSingleLine(lines[i], options);\n }\n }\n }\n\n return {\n lines: lines,\n height: height,\n outerHeight: outerHeight,\n lineHeight: lineHeight,\n canCacheByTextString: canCacheByTextString\n };\n}\n/**\n * For example: 'some text {a|some text}other text{b|some text}xxx{c|}xxx'\n * Also consider 'bbbb{a|xxx\\nzzz}xxxx\\naaaa'.\n *\n * @public\n * @param {string} text\n * @param {Object} style\n * @return {Object} block\n * {\n * width,\n * height,\n * lines: [{\n * lineHeight,\n * width,\n * tokens: [[{\n * styleName,\n * text,\n * width, // include textPadding\n * height, // include textPadding\n * textWidth, // pure text width\n * textHeight, // pure text height\n * lineHeihgt,\n * font,\n * textAlign,\n * textVerticalAlign\n * }], [...], ...]\n * }, ...]\n * }\n * If styleName is undefined, it is plain text.\n */\n\n\nfunction parseRichText(text, style) {\n var contentBlock = {\n lines: [],\n width: 0,\n height: 0\n };\n text != null && (text += '');\n\n if (!text) {\n return contentBlock;\n }\n\n var lastIndex = STYLE_REG.lastIndex = 0;\n var result;\n\n while ((result = STYLE_REG.exec(text)) != null) {\n var matchedIndex = result.index;\n\n if (matchedIndex > lastIndex) {\n pushTokens(contentBlock, text.substring(lastIndex, matchedIndex));\n }\n\n pushTokens(contentBlock, result[2], result[1]);\n lastIndex = STYLE_REG.lastIndex;\n }\n\n if (lastIndex < text.length) {\n pushTokens(contentBlock, text.substring(lastIndex, text.length));\n }\n\n var lines = contentBlock.lines;\n var contentHeight = 0;\n var contentWidth = 0; // For `textWidth: 100%`\n\n var pendingList = [];\n var stlPadding = style.textPadding;\n var truncate = style.truncate;\n var truncateWidth = truncate && truncate.outerWidth;\n var truncateHeight = truncate && truncate.outerHeight;\n\n if (stlPadding) {\n truncateWidth != null && (truncateWidth -= stlPadding[1] + stlPadding[3]);\n truncateHeight != null && (truncateHeight -= stlPadding[0] + stlPadding[2]);\n } // Calculate layout info of tokens.\n\n\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n var lineHeight = 0;\n var lineWidth = 0;\n\n for (var j = 0; j < line.tokens.length; j++) {\n var token = line.tokens[j];\n var tokenStyle = token.styleName && style.rich[token.styleName] || {}; // textPadding should not inherit from style.\n\n var textPadding = token.textPadding = tokenStyle.textPadding; // textFont has been asigned to font by `normalizeStyle`.\n\n var font = token.font = tokenStyle.font || style.font; // textHeight can be used when textVerticalAlign is specified in token.\n\n var tokenHeight = token.textHeight = retrieve2( // textHeight should not be inherited, consider it can be specified\n // as box height of the block.\n tokenStyle.textHeight, getLineHeight(font));\n textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\n token.height = tokenHeight;\n token.lineHeight = retrieve3(tokenStyle.textLineHeight, style.textLineHeight, tokenHeight);\n token.textAlign = tokenStyle && tokenStyle.textAlign || style.textAlign;\n token.textVerticalAlign = tokenStyle && tokenStyle.textVerticalAlign || 'middle';\n\n if (truncateHeight != null && contentHeight + token.lineHeight > truncateHeight) {\n return {\n lines: [],\n width: 0,\n height: 0\n };\n }\n\n token.textWidth = getWidth(token.text, font);\n var tokenWidth = tokenStyle.textWidth;\n var tokenWidthNotSpecified = tokenWidth == null || tokenWidth === 'auto'; // Percent width, can be `100%`, can be used in drawing separate\n // line when box width is needed to be auto.\n\n if (typeof tokenWidth === 'string' && tokenWidth.charAt(tokenWidth.length - 1) === '%') {\n token.percentWidth = tokenWidth;\n pendingList.push(token);\n tokenWidth = 0; // Do not truncate in this case, because there is no user case\n // and it is too complicated.\n } else {\n if (tokenWidthNotSpecified) {\n tokenWidth = token.textWidth; // FIXME: If image is not loaded and textWidth is not specified, calling\n // `getBoundingRect()` will not get correct result.\n\n var textBackgroundColor = tokenStyle.textBackgroundColor;\n var bgImg = textBackgroundColor && textBackgroundColor.image; // Use cases:\n // (1) If image is not loaded, it will be loaded at render phase and call\n // `dirty()` and `textBackgroundColor.image` will be replaced with the loaded\n // image, and then the right size will be calculated here at the next tick.\n // See `graphic/helper/text.js`.\n // (2) If image loaded, and `textBackgroundColor.image` is image src string,\n // use `imageHelper.findExistImage` to find cached image.\n // `imageHelper.findExistImage` will always be called here before\n // `imageHelper.createOrUpdateImage` in `graphic/helper/text.js#renderRichText`\n // which ensures that image will not be rendered before correct size calcualted.\n\n if (bgImg) {\n bgImg = imageHelper.findExistImage(bgImg);\n\n if (imageHelper.isImageReady(bgImg)) {\n tokenWidth = Math.max(tokenWidth, bgImg.width * tokenHeight / bgImg.height);\n }\n }\n }\n\n var paddingW = textPadding ? textPadding[1] + textPadding[3] : 0;\n tokenWidth += paddingW;\n var remianTruncWidth = truncateWidth != null ? truncateWidth - lineWidth : null;\n\n if (remianTruncWidth != null && remianTruncWidth < tokenWidth) {\n if (!tokenWidthNotSpecified || remianTruncWidth < paddingW) {\n token.text = '';\n token.textWidth = tokenWidth = 0;\n } else {\n token.text = truncateText(token.text, remianTruncWidth - paddingW, font, truncate.ellipsis, {\n minChar: truncate.minChar\n });\n token.textWidth = getWidth(token.text, font);\n tokenWidth = token.textWidth + paddingW;\n }\n }\n }\n\n lineWidth += token.width = tokenWidth;\n tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\n }\n\n line.width = lineWidth;\n line.lineHeight = lineHeight;\n contentHeight += lineHeight;\n contentWidth = Math.max(contentWidth, lineWidth);\n }\n\n contentBlock.outerWidth = contentBlock.width = retrieve2(style.textWidth, contentWidth);\n contentBlock.outerHeight = contentBlock.height = retrieve2(style.textHeight, contentHeight);\n\n if (stlPadding) {\n contentBlock.outerWidth += stlPadding[1] + stlPadding[3];\n contentBlock.outerHeight += stlPadding[0] + stlPadding[2];\n }\n\n for (var i = 0; i < pendingList.length; i++) {\n var token = pendingList[i];\n var percentWidth = token.percentWidth; // Should not base on outerWidth, because token can not be placed out of padding.\n\n token.width = parseInt(percentWidth, 10) / 100 * contentWidth;\n }\n\n return contentBlock;\n}\n\nfunction pushTokens(block, str, styleName) {\n var isEmptyStr = str === '';\n var strs = str.split('\\n');\n var lines = block.lines;\n\n for (var i = 0; i < strs.length; i++) {\n var text = strs[i];\n var token = {\n styleName: styleName,\n text: text,\n isLineHolder: !text && !isEmptyStr\n }; // The first token should be appended to the last line.\n\n if (!i) {\n var tokens = (lines[lines.length - 1] || (lines[0] = {\n tokens: []\n })).tokens; // Consider cases:\n // (1) ''.split('\\n') => ['', '\\n', ''], the '' at the first item\n // (which is a placeholder) should be replaced by new token.\n // (2) A image backage, where token likes {a|}.\n // (3) A redundant '' will affect textAlign in line.\n // (4) tokens with the same tplName should not be merged, because\n // they should be displayed in different box (with border and padding).\n\n var tokensLen = tokens.length;\n tokensLen === 1 && tokens[0].isLineHolder ? tokens[0] = token : // Consider text is '', only insert when it is the \"lineHolder\" or\n // \"emptyStr\". Otherwise a redundant '' will affect textAlign in line.\n (text || !tokensLen || isEmptyStr) && tokens.push(token);\n } // Other tokens always start a new line.\n else {\n // If there is '', insert it as a placeholder.\n lines.push({\n tokens: [token]\n });\n }\n }\n}\n\nfunction makeFont(style) {\n // FIXME in node-canvas fontWeight is before fontStyle\n // Use `fontSize` `fontFamily` to check whether font properties are defined.\n var font = (style.fontSize || style.fontFamily) && [style.fontStyle, style.fontWeight, (style.fontSize || 12) + 'px', // If font properties are defined, `fontFamily` should not be ignored.\n style.fontFamily || 'sans-serif'].join(' ');\n return font && trim(font) || style.textFont || style.font;\n}\n\nexports.DEFAULT_FONT = DEFAULT_FONT;\nexports.$override = $override;\nexports.getWidth = getWidth;\nexports.getBoundingRect = getBoundingRect;\nexports.adjustTextX = adjustTextX;\nexports.adjustTextY = adjustTextY;\nexports.calculateTextPosition = calculateTextPosition;\nexports.adjustTextPositionOnRect = adjustTextPositionOnRect;\nexports.truncateText = truncateText;\nexports.getLineHeight = getLineHeight;\nexports.measureText = measureText;\nexports.parsePlainText = parsePlainText;\nexports.parseRichText = parseRichText;\nexports.makeFont = makeFont;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../model/Model\");\n\nvar DataDiffer = require(\"./DataDiffer\");\n\nvar Source = require(\"./Source\");\n\nvar _dataProvider = require(\"./helper/dataProvider\");\n\nvar defaultDimValueGetters = _dataProvider.defaultDimValueGetters;\nvar DefaultDataProvider = _dataProvider.DefaultDataProvider;\n\nvar _dimensionHelper = require(\"./helper/dimensionHelper\");\n\nvar summarizeDimensions = _dimensionHelper.summarizeDimensions;\n\nvar DataDimensionInfo = require(\"./DataDimensionInfo\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float64Array, Int32Array, Uint32Array, Uint16Array */\n\n/**\n * List for data storage\n * @module echarts/data/List\n */\nvar isObject = zrUtil.isObject;\nvar UNDEFINED = 'undefined';\nvar INDEX_NOT_FOUND = -1; // Use prefix to avoid index to be the same as otherIdList[idx],\n// which will cause weird udpate animation.\n\nvar ID_PREFIX = 'e\\0\\0';\nvar dataCtors = {\n 'float': typeof Float64Array === UNDEFINED ? Array : Float64Array,\n 'int': typeof Int32Array === UNDEFINED ? Array : Int32Array,\n // Ordinal data type can be string or int\n 'ordinal': Array,\n 'number': Array,\n 'time': Array\n}; // Caution: MUST not use `new CtorUint32Array(arr, 0, len)`, because the Ctor of array is\n// different from the Ctor of typed array.\n\nvar CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;\nvar CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;\nvar CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;\n\nfunction getIndicesCtor(list) {\n // The possible max value in this._indicies is always this._rawCount despite of filtering.\n return list._rawCount > 65535 ? CtorUint32Array : CtorUint16Array;\n}\n\nfunction cloneChunk(originalChunk) {\n var Ctor = originalChunk.constructor; // Only shallow clone is enough when Array.\n\n return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk);\n}\n\nvar TRANSFERABLE_PROPERTIES = ['hasItemOption', '_nameList', '_idList', '_invertedIndicesMap', '_rawData', '_chunkSize', '_chunkCount', '_dimValueGetter', '_count', '_rawCount', '_nameDimIdx', '_idDimIdx'];\nvar CLONE_PROPERTIES = ['_extent', '_approximateExtent', '_rawExtent'];\n\nfunction transferProperties(target, source) {\n zrUtil.each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) {\n if (source.hasOwnProperty(propName)) {\n target[propName] = source[propName];\n }\n });\n target.__wrappedMethods = source.__wrappedMethods;\n zrUtil.each(CLONE_PROPERTIES, function (propName) {\n target[propName] = zrUtil.clone(source[propName]);\n });\n target._calculationInfo = zrUtil.extend(source._calculationInfo);\n}\n/**\n * @constructor\n * @alias module:echarts/data/List\n *\n * @param {Array.} dimensions\n * For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...].\n * Dimensions should be concrete names like x, y, z, lng, lat, angle, radius\n * @param {module:echarts/model/Model} hostModel\n */\n\n\nvar List = function (dimensions, hostModel) {\n dimensions = dimensions || ['x', 'y'];\n var dimensionInfos = {};\n var dimensionNames = [];\n var invertedIndicesMap = {};\n\n for (var i = 0; i < dimensions.length; i++) {\n // Use the original dimensions[i], where other flag props may exists.\n var dimensionInfo = dimensions[i];\n\n if (zrUtil.isString(dimensionInfo)) {\n dimensionInfo = new DataDimensionInfo({\n name: dimensionInfo\n });\n } else if (!(dimensionInfo instanceof DataDimensionInfo)) {\n dimensionInfo = new DataDimensionInfo(dimensionInfo);\n }\n\n var dimensionName = dimensionInfo.name;\n dimensionInfo.type = dimensionInfo.type || 'float';\n\n if (!dimensionInfo.coordDim) {\n dimensionInfo.coordDim = dimensionName;\n dimensionInfo.coordDimIndex = 0;\n }\n\n dimensionInfo.otherDims = dimensionInfo.otherDims || {};\n dimensionNames.push(dimensionName);\n dimensionInfos[dimensionName] = dimensionInfo;\n dimensionInfo.index = i;\n\n if (dimensionInfo.createInvertedIndices) {\n invertedIndicesMap[dimensionName] = [];\n }\n }\n /**\n * @readOnly\n * @type {Array.}\n */\n\n\n this.dimensions = dimensionNames;\n /**\n * Infomation of each data dimension, like data type.\n * @type {Object}\n */\n\n this._dimensionInfos = dimensionInfos;\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.hostModel = hostModel;\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.dataType;\n /**\n * Indices stores the indices of data subset after filtered.\n * This data subset will be used in chart.\n * @type {Array.}\n * @readOnly\n */\n\n this._indices = null;\n this._count = 0;\n this._rawCount = 0;\n /**\n * Data storage\n * @type {Object.>}\n * @private\n */\n\n this._storage = {};\n /**\n * @type {Array.}\n */\n\n this._nameList = [];\n /**\n * @type {Array.}\n */\n\n this._idList = [];\n /**\n * Models of data option is stored sparse for optimizing memory cost\n * @type {Array.}\n * @private\n */\n\n this._optionModels = [];\n /**\n * Global visual properties after visual coding\n * @type {Object}\n * @private\n */\n\n this._visual = {};\n /**\n * Globel layout properties.\n * @type {Object}\n * @private\n */\n\n this._layout = {};\n /**\n * Item visual properties after visual coding\n * @type {Array.}\n * @private\n */\n\n this._itemVisuals = [];\n /**\n * Key: visual type, Value: boolean\n * @type {Object}\n * @readOnly\n */\n\n this.hasItemVisual = {};\n /**\n * Item layout properties after layout\n * @type {Array.}\n * @private\n */\n\n this._itemLayouts = [];\n /**\n * Graphic elemnents\n * @type {Array.}\n * @private\n */\n\n this._graphicEls = [];\n /**\n * Max size of each chunk.\n * @type {number}\n * @private\n */\n\n this._chunkSize = 1e5;\n /**\n * @type {number}\n * @private\n */\n\n this._chunkCount = 0;\n /**\n * @type {Array.}\n * @private\n */\n\n this._rawData;\n /**\n * Raw extent will not be cloned, but only transfered.\n * It will not be calculated util needed.\n * key: dim,\n * value: {end: number, extent: Array.}\n * @type {Object}\n * @private\n */\n\n this._rawExtent = {};\n /**\n * @type {Object}\n * @private\n */\n\n this._extent = {};\n /**\n * key: dim\n * value: extent\n * @type {Object}\n * @private\n */\n\n this._approximateExtent = {};\n /**\n * Cache summary info for fast visit. See \"dimensionHelper\".\n * @type {Object}\n * @private\n */\n\n this._dimensionsSummary = summarizeDimensions(this);\n /**\n * @type {Object.}\n * @private\n */\n\n this._invertedIndicesMap = invertedIndicesMap;\n /**\n * @type {Object}\n * @private\n */\n\n this._calculationInfo = {};\n /**\n * User output info of this data.\n * DO NOT use it in other places!\n *\n * When preparing user params for user callbacks, we have\n * to clone these inner data structures to prevent users\n * from modifying them to effect built-in logic. And for\n * performance consideration we make this `userOutput` to\n * avoid clone them too many times.\n *\n * @type {Object}\n * @readOnly\n */\n\n this.userOutput = this._dimensionsSummary.userOutput;\n};\n\nvar listProto = List.prototype;\nlistProto.type = 'list';\n/**\n * If each data item has it's own option\n * @type {boolean}\n */\n\nlistProto.hasItemOption = true;\n/**\n * The meanings of the input parameter `dim`:\n *\n * + If dim is a number (e.g., `1`), it means the index of the dimension.\n * For example, `getDimension(0)` will return 'x' or 'lng' or 'radius'.\n * + If dim is a number-like string (e.g., `\"1\"`):\n * + If there is the same concrete dim name defined in `this.dimensions`, it means that concrete name.\n * + If not, it will be converted to a number, which means the index of the dimension.\n * (why? because of the backward compatbility. We have been tolerating number-like string in\n * dimension setting, although now it seems that it is not a good idea.)\n * For example, `visualMap[i].dimension: \"1\"` is the same meaning as `visualMap[i].dimension: 1`,\n * if no dimension name is defined as `\"1\"`.\n * + If dim is a not-number-like string, it means the concrete dim name.\n * For example, it can be be default name `\"x\"`, `\"y\"`, `\"z\"`, `\"lng\"`, `\"lat\"`, `\"angle\"`, `\"radius\"`,\n * or customized in `dimensions` property of option like `\"age\"`.\n *\n * Get dimension name\n * @param {string|number} dim See above.\n * @return {string} Concrete dim name.\n */\n\nlistProto.getDimension = function (dim) {\n if (typeof dim === 'number' // If being a number-like string but not being defined a dimension name.\n || !isNaN(dim) && !this._dimensionInfos.hasOwnProperty(dim)) {\n dim = this.dimensions[dim];\n }\n\n return dim;\n};\n/**\n * Get type and calculation info of particular dimension\n * @param {string|number} dim\n * Dimension can be concrete names like x, y, z, lng, lat, angle, radius\n * Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius'\n */\n\n\nlistProto.getDimensionInfo = function (dim) {\n // Do not clone, because there may be categories in dimInfo.\n return this._dimensionInfos[this.getDimension(dim)];\n};\n/**\n * @return {Array.} concrete dimension name list on coord.\n */\n\n\nlistProto.getDimensionsOnCoord = function () {\n return this._dimensionsSummary.dataDimsOnCoord.slice();\n};\n/**\n * @param {string} coordDim\n * @param {number} [idx] A coordDim may map to more than one data dim.\n * If idx is `true`, return a array of all mapped dims.\n * If idx is not specified, return the first dim not extra.\n * @return {string|Array.} concrete data dim.\n * If idx is number, and not found, return null/undefined.\n * If idx is `true`, and not found, return empty array (always return array).\n */\n\n\nlistProto.mapDimension = function (coordDim, idx) {\n var dimensionsSummary = this._dimensionsSummary;\n\n if (idx == null) {\n return dimensionsSummary.encodeFirstDimNotExtra[coordDim];\n }\n\n var dims = dimensionsSummary.encode[coordDim];\n return idx === true // always return array if idx is `true`\n ? (dims || []).slice() : dims && dims[idx];\n};\n/**\n * Initialize from data\n * @param {Array.} data source or data or data provider.\n * @param {Array.} [nameLIst] The name of a datum is used on data diff and\n * defualt label/tooltip.\n * A name can be specified in encode.itemName,\n * or dataItem.name (only for series option data),\n * or provided in nameList from outside.\n * @param {Function} [dimValueGetter] (dataItem, dimName, dataIndex, dimIndex) => number\n */\n\n\nlistProto.initData = function (data, nameList, dimValueGetter) {\n var notProvider = Source.isInstance(data) || zrUtil.isArrayLike(data);\n\n if (notProvider) {\n data = new DefaultDataProvider(data, this.dimensions.length);\n }\n\n this._rawData = data; // Clear\n\n this._storage = {};\n this._indices = null;\n this._nameList = nameList || [];\n this._idList = [];\n this._nameRepeatCount = {};\n\n if (!dimValueGetter) {\n this.hasItemOption = false;\n }\n /**\n * @readOnly\n */\n\n\n this.defaultDimValueGetter = defaultDimValueGetters[this._rawData.getSource().sourceFormat]; // Default dim value getter\n\n this._dimValueGetter = dimValueGetter = dimValueGetter || this.defaultDimValueGetter;\n this._dimValueGetterArrayRows = defaultDimValueGetters.arrayRows; // Reset raw extent.\n\n this._rawExtent = {};\n\n this._initDataFromProvider(0, data.count()); // If data has no item option.\n\n\n if (data.pure) {\n this.hasItemOption = false;\n }\n};\n\nlistProto.getProvider = function () {\n return this._rawData;\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n */\n\n\nlistProto.appendData = function (data) {\n var rawData = this._rawData;\n var start = this.count();\n rawData.appendData(data);\n var end = rawData.count();\n\n if (!rawData.persistent) {\n end += start;\n }\n\n this._initDataFromProvider(start, end);\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n * This method does not modify `rawData` (`dataProvider`), but only\n * add values to storage.\n *\n * The final count will be increased by `Math.max(values.length, names.length)`.\n *\n * @param {Array.>} values That is the SourceType: 'arrayRows', like\n * [\n * [12, 33, 44],\n * [NaN, 43, 1],\n * ['-', 'asdf', 0]\n * ]\n * Each item is exaclty cooresponding to a dimension.\n * @param {Array.} [names]\n */\n\n\nlistProto.appendValues = function (values, names) {\n var chunkSize = this._chunkSize;\n var storage = this._storage;\n var dimensions = this.dimensions;\n var dimLen = dimensions.length;\n var rawExtent = this._rawExtent;\n var start = this.count();\n var end = start + Math.max(values.length, names ? names.length : 0);\n var originalChunkCount = this._chunkCount;\n\n for (var i = 0; i < dimLen; i++) {\n var dim = dimensions[i];\n\n if (!rawExtent[dim]) {\n rawExtent[dim] = getInitialExtent();\n }\n\n if (!storage[dim]) {\n storage[dim] = [];\n }\n\n prepareChunks(storage, this._dimensionInfos[dim], chunkSize, originalChunkCount, end);\n this._chunkCount = storage[dim].length;\n }\n\n var emptyDataItem = new Array(dimLen);\n\n for (var idx = start; idx < end; idx++) {\n var sourceIdx = idx - start;\n var chunkIndex = Math.floor(idx / chunkSize);\n var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n for (var k = 0; k < dimLen; k++) {\n var dim = dimensions[k];\n\n var val = this._dimValueGetterArrayRows(values[sourceIdx] || emptyDataItem, dim, sourceIdx, k);\n\n storage[dim][chunkIndex][chunkOffset] = val;\n var dimRawExtent = rawExtent[dim];\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\n }\n\n if (names) {\n this._nameList[idx] = names[sourceIdx];\n }\n }\n\n this._rawCount = this._count = end; // Reset data extent\n\n this._extent = {};\n prepareInvertedIndex(this);\n};\n\nlistProto._initDataFromProvider = function (start, end) {\n // Optimize.\n if (start >= end) {\n return;\n }\n\n var chunkSize = this._chunkSize;\n var rawData = this._rawData;\n var storage = this._storage;\n var dimensions = this.dimensions;\n var dimLen = dimensions.length;\n var dimensionInfoMap = this._dimensionInfos;\n var nameList = this._nameList;\n var idList = this._idList;\n var rawExtent = this._rawExtent;\n var nameRepeatCount = this._nameRepeatCount = {};\n var nameDimIdx;\n var originalChunkCount = this._chunkCount;\n\n for (var i = 0; i < dimLen; i++) {\n var dim = dimensions[i];\n\n if (!rawExtent[dim]) {\n rawExtent[dim] = getInitialExtent();\n }\n\n var dimInfo = dimensionInfoMap[dim];\n\n if (dimInfo.otherDims.itemName === 0) {\n nameDimIdx = this._nameDimIdx = i;\n }\n\n if (dimInfo.otherDims.itemId === 0) {\n this._idDimIdx = i;\n }\n\n if (!storage[dim]) {\n storage[dim] = [];\n }\n\n prepareChunks(storage, dimInfo, chunkSize, originalChunkCount, end);\n this._chunkCount = storage[dim].length;\n }\n\n var dataItem = new Array(dimLen);\n\n for (var idx = start; idx < end; idx++) {\n // NOTICE: Try not to write things into dataItem\n dataItem = rawData.getItem(idx, dataItem); // Each data item is value\n // [1, 2]\n // 2\n // Bar chart, line chart which uses category axis\n // only gives the 'y' value. 'x' value is the indices of category\n // Use a tempValue to normalize the value to be a (x, y) value\n\n var chunkIndex = Math.floor(idx / chunkSize);\n var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n for (var k = 0; k < dimLen; k++) {\n var dim = dimensions[k];\n var dimStorage = storage[dim][chunkIndex]; // PENDING NULL is empty or zero\n\n var val = this._dimValueGetter(dataItem, dim, idx, k);\n\n dimStorage[chunkOffset] = val;\n var dimRawExtent = rawExtent[dim];\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\n } // ??? FIXME not check by pure but sourceFormat?\n // TODO refactor these logic.\n\n\n if (!rawData.pure) {\n var name = nameList[idx];\n\n if (dataItem && name == null) {\n // If dataItem is {name: ...}, it has highest priority.\n // That is appropriate for many common cases.\n if (dataItem.name != null) {\n // There is no other place to persistent dataItem.name,\n // so save it to nameList.\n nameList[idx] = name = dataItem.name;\n } else if (nameDimIdx != null) {\n var nameDim = dimensions[nameDimIdx];\n var nameDimChunk = storage[nameDim][chunkIndex];\n\n if (nameDimChunk) {\n name = nameDimChunk[chunkOffset];\n var ordinalMeta = dimensionInfoMap[nameDim].ordinalMeta;\n\n if (ordinalMeta && ordinalMeta.categories.length) {\n name = ordinalMeta.categories[name];\n }\n }\n }\n } // Try using the id in option\n // id or name is used on dynamical data, mapping old and new items.\n\n\n var id = dataItem == null ? null : dataItem.id;\n\n if (id == null && name != null) {\n // Use name as id and add counter to avoid same name\n nameRepeatCount[name] = nameRepeatCount[name] || 0;\n id = name;\n\n if (nameRepeatCount[name] > 0) {\n id += '__ec__' + nameRepeatCount[name];\n }\n\n nameRepeatCount[name]++;\n }\n\n id != null && (idList[idx] = id);\n }\n }\n\n if (!rawData.persistent && rawData.clean) {\n // Clean unused data if data source is typed array.\n rawData.clean();\n }\n\n this._rawCount = this._count = end; // Reset data extent\n\n this._extent = {};\n prepareInvertedIndex(this);\n};\n\nfunction prepareChunks(storage, dimInfo, chunkSize, chunkCount, end) {\n var DataCtor = dataCtors[dimInfo.type];\n var lastChunkIndex = chunkCount - 1;\n var dim = dimInfo.name;\n var resizeChunkArray = storage[dim][lastChunkIndex];\n\n if (resizeChunkArray && resizeChunkArray.length < chunkSize) {\n var newStore = new DataCtor(Math.min(end - lastChunkIndex * chunkSize, chunkSize)); // The cost of the copy is probably inconsiderable\n // within the initial chunkSize.\n\n for (var j = 0; j < resizeChunkArray.length; j++) {\n newStore[j] = resizeChunkArray[j];\n }\n\n storage[dim][lastChunkIndex] = newStore;\n } // Create new chunks.\n\n\n for (var k = chunkCount * chunkSize; k < end; k += chunkSize) {\n storage[dim].push(new DataCtor(Math.min(end - k, chunkSize)));\n }\n}\n\nfunction prepareInvertedIndex(list) {\n var invertedIndicesMap = list._invertedIndicesMap;\n zrUtil.each(invertedIndicesMap, function (invertedIndices, dim) {\n var dimInfo = list._dimensionInfos[dim]; // Currently, only dimensions that has ordinalMeta can create inverted indices.\n\n var ordinalMeta = dimInfo.ordinalMeta;\n\n if (ordinalMeta) {\n invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length); // The default value of TypedArray is 0. To avoid miss\n // mapping to 0, we should set it as INDEX_NOT_FOUND.\n\n for (var i = 0; i < invertedIndices.length; i++) {\n invertedIndices[i] = INDEX_NOT_FOUND;\n }\n\n for (var i = 0; i < list._count; i++) {\n // Only support the case that all values are distinct.\n invertedIndices[list.get(dim, i)] = i;\n }\n }\n });\n}\n\nfunction getRawValueFromStore(list, dimIndex, rawIndex) {\n var val;\n\n if (dimIndex != null) {\n var chunkSize = list._chunkSize;\n var chunkIndex = Math.floor(rawIndex / chunkSize);\n var chunkOffset = rawIndex % chunkSize;\n var dim = list.dimensions[dimIndex];\n var chunk = list._storage[dim][chunkIndex];\n\n if (chunk) {\n val = chunk[chunkOffset];\n var ordinalMeta = list._dimensionInfos[dim].ordinalMeta;\n\n if (ordinalMeta && ordinalMeta.categories.length) {\n val = ordinalMeta.categories[val];\n }\n }\n }\n\n return val;\n}\n/**\n * @return {number}\n */\n\n\nlistProto.count = function () {\n return this._count;\n};\n\nlistProto.getIndices = function () {\n var newIndices;\n var indices = this._indices;\n\n if (indices) {\n var Ctor = indices.constructor;\n var thisCount = this._count; // `new Array(a, b, c)` is different from `new Uint32Array(a, b, c)`.\n\n if (Ctor === Array) {\n newIndices = new Ctor(thisCount);\n\n for (var i = 0; i < thisCount; i++) {\n newIndices[i] = indices[i];\n }\n } else {\n newIndices = new Ctor(indices.buffer, 0, thisCount);\n }\n } else {\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(this.count());\n\n for (var i = 0; i < newIndices.length; i++) {\n newIndices[i] = i;\n }\n }\n\n return newIndices;\n};\n/**\n * Get value. Return NaN if idx is out of range.\n * @param {string} dim Dim must be concrete name.\n * @param {number} idx\n * @param {boolean} stack\n * @return {number}\n */\n\n\nlistProto.get = function (dim, idx\n/*, stack */\n) {\n if (!(idx >= 0 && idx < this._count)) {\n return NaN;\n }\n\n var storage = this._storage;\n\n if (!storage[dim]) {\n // TODO Warn ?\n return NaN;\n }\n\n idx = this.getRawIndex(idx);\n var chunkIndex = Math.floor(idx / this._chunkSize);\n var chunkOffset = idx % this._chunkSize;\n var chunkStore = storage[dim][chunkIndex];\n var value = chunkStore[chunkOffset]; // FIXME ordinal data type is not stackable\n // if (stack) {\n // var dimensionInfo = this._dimensionInfos[dim];\n // if (dimensionInfo && dimensionInfo.stackable) {\n // var stackedOn = this.stackedOn;\n // while (stackedOn) {\n // // Get no stacked data of stacked on\n // var stackedValue = stackedOn.get(dim, idx);\n // // Considering positive stack, negative stack and empty data\n // if ((value >= 0 && stackedValue > 0) // Positive stack\n // || (value <= 0 && stackedValue < 0) // Negative stack\n // ) {\n // value += stackedValue;\n // }\n // stackedOn = stackedOn.stackedOn;\n // }\n // }\n // }\n\n return value;\n};\n/**\n * @param {string} dim concrete dim\n * @param {number} rawIndex\n * @return {number|string}\n */\n\n\nlistProto.getByRawIndex = function (dim, rawIdx) {\n if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {\n return NaN;\n }\n\n var dimStore = this._storage[dim];\n\n if (!dimStore) {\n // TODO Warn ?\n return NaN;\n }\n\n var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n var chunkOffset = rawIdx % this._chunkSize;\n var chunkStore = dimStore[chunkIndex];\n return chunkStore[chunkOffset];\n};\n/**\n * FIXME Use `get` on chrome maybe slow(in filterSelf and selectRange).\n * Hack a much simpler _getFast\n * @private\n */\n\n\nlistProto._getFast = function (dim, rawIdx) {\n var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n var chunkOffset = rawIdx % this._chunkSize;\n var chunkStore = this._storage[dim][chunkIndex];\n return chunkStore[chunkOffset];\n};\n/**\n * Get value for multi dimensions.\n * @param {Array.} [dimensions] If ignored, using all dimensions.\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getValues = function (dimensions, idx\n/*, stack */\n) {\n var values = [];\n\n if (!zrUtil.isArray(dimensions)) {\n // stack = idx;\n idx = dimensions;\n dimensions = this.dimensions;\n }\n\n for (var i = 0, len = dimensions.length; i < len; i++) {\n values.push(this.get(dimensions[i], idx\n /*, stack */\n ));\n }\n\n return values;\n};\n/**\n * If value is NaN. Inlcuding '-'\n * Only check the coord dimensions.\n * @param {string} dim\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.hasValue = function (idx) {\n var dataDimsOnCoord = this._dimensionsSummary.dataDimsOnCoord;\n\n for (var i = 0, len = dataDimsOnCoord.length; i < len; i++) {\n // Ordinal type originally can be string or number.\n // But when an ordinal type is used on coord, it can\n // not be string but only number. So we can also use isNaN.\n if (isNaN(this.get(dataDimsOnCoord[i], idx))) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Get extent of data in one dimension\n * @param {string} dim\n * @param {boolean} stack\n */\n\n\nlistProto.getDataExtent = function (dim\n/*, stack */\n) {\n // Make sure use concrete dim as cache name.\n dim = this.getDimension(dim);\n var dimData = this._storage[dim];\n var initialExtent = getInitialExtent(); // stack = !!((stack || false) && this.getCalculationInfo(dim));\n\n if (!dimData) {\n return initialExtent;\n } // Make more strict checkings to ensure hitting cache.\n\n\n var currEnd = this.count(); // var cacheName = [dim, !!stack].join('_');\n // var cacheName = dim;\n // Consider the most cases when using data zoom, `getDataExtent`\n // happened before filtering. We cache raw extent, which is not\n // necessary to be cleared and recalculated when restore data.\n\n var useRaw = !this._indices; // && !stack;\n\n var dimExtent;\n\n if (useRaw) {\n return this._rawExtent[dim].slice();\n }\n\n dimExtent = this._extent[dim];\n\n if (dimExtent) {\n return dimExtent.slice();\n }\n\n dimExtent = initialExtent;\n var min = dimExtent[0];\n var max = dimExtent[1];\n\n for (var i = 0; i < currEnd; i++) {\n // var value = stack ? this.get(dim, i, true) : this._getFast(dim, this.getRawIndex(i));\n var value = this._getFast(dim, this.getRawIndex(i));\n\n value < min && (min = value);\n value > max && (max = value);\n }\n\n dimExtent = [min, max];\n this._extent[dim] = dimExtent;\n return dimExtent;\n};\n/**\n * Optimize for the scenario that data is filtered by a given extent.\n * Consider that if data amount is more than hundreds of thousand,\n * extent calculation will cost more than 10ms and the cache will\n * be erased because of the filtering.\n */\n\n\nlistProto.getApproximateExtent = function (dim\n/*, stack */\n) {\n dim = this.getDimension(dim);\n return this._approximateExtent[dim] || this.getDataExtent(dim\n /*, stack */\n );\n};\n\nlistProto.setApproximateExtent = function (extent, dim\n/*, stack */\n) {\n dim = this.getDimension(dim);\n this._approximateExtent[dim] = extent.slice();\n};\n/**\n * @param {string} key\n * @return {*}\n */\n\n\nlistProto.getCalculationInfo = function (key) {\n return this._calculationInfo[key];\n};\n/**\n * @param {string|Object} key or k-v object\n * @param {*} [value]\n */\n\n\nlistProto.setCalculationInfo = function (key, value) {\n isObject(key) ? zrUtil.extend(this._calculationInfo, key) : this._calculationInfo[key] = value;\n};\n/**\n * Get sum of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getSum = function (dim\n/*, stack */\n) {\n var dimData = this._storage[dim];\n var sum = 0;\n\n if (dimData) {\n for (var i = 0, len = this.count(); i < len; i++) {\n var value = this.get(dim, i\n /*, stack */\n );\n\n if (!isNaN(value)) {\n sum += value;\n }\n }\n }\n\n return sum;\n};\n/**\n * Get median of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getMedian = function (dim\n/*, stack */\n) {\n var dimDataArray = []; // map all data of one dimension\n\n this.each(dim, function (val, idx) {\n if (!isNaN(val)) {\n dimDataArray.push(val);\n }\n }); // TODO\n // Use quick select?\n // immutability & sort\n\n var sortedDimDataArray = [].concat(dimDataArray).sort(function (a, b) {\n return a - b;\n });\n var len = this.count(); // calculate median\n\n return len === 0 ? 0 : len % 2 === 1 ? sortedDimDataArray[(len - 1) / 2] : (sortedDimDataArray[len / 2] + sortedDimDataArray[len / 2 - 1]) / 2;\n}; // /**\n// * Retreive the index with given value\n// * @param {string} dim Concrete dimension.\n// * @param {number} value\n// * @return {number}\n// */\n// Currently incorrect: should return dataIndex but not rawIndex.\n// Do not fix it until this method is to be used somewhere.\n// FIXME Precision of float value\n// listProto.indexOf = function (dim, value) {\n// var storage = this._storage;\n// var dimData = storage[dim];\n// var chunkSize = this._chunkSize;\n// if (dimData) {\n// for (var i = 0, len = this.count(); i < len; i++) {\n// var chunkIndex = Math.floor(i / chunkSize);\n// var chunkOffset = i % chunkSize;\n// if (dimData[chunkIndex][chunkOffset] === value) {\n// return i;\n// }\n// }\n// }\n// return -1;\n// };\n\n/**\n * Only support the dimension which inverted index created.\n * Do not support other cases until required.\n * @param {string} concrete dim\n * @param {number|string} value\n * @return {number} rawIndex\n */\n\n\nlistProto.rawIndexOf = function (dim, value) {\n var invertedIndices = dim && this._invertedIndicesMap[dim];\n var rawIndex = invertedIndices[value];\n\n if (rawIndex == null || isNaN(rawIndex)) {\n return INDEX_NOT_FOUND;\n }\n\n return rawIndex;\n};\n/**\n * Retreive the index with given name\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfName = function (name) {\n for (var i = 0, len = this.count(); i < len; i++) {\n if (this.getName(i) === name) {\n return i;\n }\n }\n\n return -1;\n};\n/**\n * Retreive the index with given raw data index\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfRawIndex = function (rawIndex) {\n if (rawIndex >= this._rawCount || rawIndex < 0) {\n return -1;\n }\n\n if (!this._indices) {\n return rawIndex;\n } // Indices are ascending\n\n\n var indices = this._indices; // If rawIndex === dataIndex\n\n var rawDataIndex = indices[rawIndex];\n\n if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {\n return rawIndex;\n }\n\n var left = 0;\n var right = this._count - 1;\n\n while (left <= right) {\n var mid = (left + right) / 2 | 0;\n\n if (indices[mid] < rawIndex) {\n left = mid + 1;\n } else if (indices[mid] > rawIndex) {\n right = mid - 1;\n } else {\n return mid;\n }\n }\n\n return -1;\n};\n/**\n * Retreive the index of nearest value\n * @param {string} dim\n * @param {number} value\n * @param {number} [maxDistance=Infinity]\n * @return {Array.} If and only if multiple indices has\n * the same value, they are put to the result.\n */\n\n\nlistProto.indicesOfNearest = function (dim, value, maxDistance) {\n var storage = this._storage;\n var dimData = storage[dim];\n var nearestIndices = [];\n\n if (!dimData) {\n return nearestIndices;\n }\n\n if (maxDistance == null) {\n maxDistance = Infinity;\n }\n\n var minDist = Infinity;\n var minDiff = -1;\n var nearestIndicesLen = 0; // Check the test case of `test/ut/spec/data/List.js`.\n\n for (var i = 0, len = this.count(); i < len; i++) {\n var diff = value - this.get(dim, i);\n var dist = Math.abs(diff);\n\n if (dist <= maxDistance) {\n // When the `value` is at the middle of `this.get(dim, i)` and `this.get(dim, i+1)`,\n // we'd better not push both of them to `nearestIndices`, otherwise it is easy to\n // get more than one item in `nearestIndices` (more specifically, in `tooltip`).\n // So we chose the one that `diff >= 0` in this csae.\n // But if `this.get(dim, i)` and `this.get(dim, j)` get the same value, both of them\n // should be push to `nearestIndices`.\n if (dist < minDist || dist === minDist && diff >= 0 && minDiff < 0) {\n minDist = dist;\n minDiff = diff;\n nearestIndicesLen = 0;\n }\n\n if (diff === minDiff) {\n nearestIndices[nearestIndicesLen++] = i;\n }\n }\n }\n\n nearestIndices.length = nearestIndicesLen;\n return nearestIndices;\n};\n/**\n * Get raw data index\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawIndex = getRawIndexWithoutIndices;\n\nfunction getRawIndexWithoutIndices(idx) {\n return idx;\n}\n\nfunction getRawIndexWithIndices(idx) {\n if (idx < this._count && idx >= 0) {\n return this._indices[idx];\n }\n\n return -1;\n}\n/**\n * Get raw data item\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawDataItem = function (idx) {\n if (!this._rawData.persistent) {\n var val = [];\n\n for (var i = 0; i < this.dimensions.length; i++) {\n var dim = this.dimensions[i];\n val.push(this.get(dim, idx));\n }\n\n return val;\n } else {\n return this._rawData.getItem(this.getRawIndex(idx));\n }\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getName = function (idx) {\n var rawIndex = this.getRawIndex(idx);\n return this._nameList[rawIndex] || getRawValueFromStore(this, this._nameDimIdx, rawIndex) || '';\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getId = function (idx) {\n return getId(this, this.getRawIndex(idx));\n};\n\nfunction getId(list, rawIndex) {\n var id = list._idList[rawIndex];\n\n if (id == null) {\n id = getRawValueFromStore(list, list._idDimIdx, rawIndex);\n }\n\n if (id == null) {\n // FIXME Check the usage in graph, should not use prefix.\n id = ID_PREFIX + rawIndex;\n }\n\n return id;\n}\n\nfunction normalizeDimensions(dimensions) {\n if (!zrUtil.isArray(dimensions)) {\n dimensions = [dimensions];\n }\n\n return dimensions;\n}\n\nfunction validateDimensions(list, dims) {\n for (var i = 0; i < dims.length; i++) {\n // stroage may be empty when no data, so use\n // dimensionInfos to check.\n if (!list._dimensionInfos[dims[i]]) {\n console.error('Unkown dimension ' + dims[i]);\n }\n }\n}\n/**\n * Data iteration\n * @param {string|Array.}\n * @param {Function} cb\n * @param {*} [context=this]\n *\n * @example\n * list.each('x', function (x, idx) {});\n * list.each(['x', 'y'], function (x, y, idx) {});\n * list.each(function (idx) {})\n */\n\n\nlistProto.each = function (dims, cb, context, contextCompat) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n if (typeof dims === 'function') {\n contextCompat = context;\n context = cb;\n cb = dims;\n dims = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n dims = zrUtil.map(normalizeDimensions(dims), this.getDimension, this);\n var dimSize = dims.length;\n\n for (var i = 0; i < this.count(); i++) {\n // Simple optimization\n switch (dimSize) {\n case 0:\n cb.call(context, i);\n break;\n\n case 1:\n cb.call(context, this.get(dims[0], i), i);\n break;\n\n case 2:\n cb.call(context, this.get(dims[0], i), this.get(dims[1], i), i);\n break;\n\n default:\n var k = 0;\n var value = [];\n\n for (; k < dimSize; k++) {\n value[k] = this.get(dims[k], i);\n } // Index\n\n\n value[k] = i;\n cb.apply(context, value);\n }\n }\n};\n/**\n * Data filter\n * @param {string|Array.}\n * @param {Function} cb\n * @param {*} [context=this]\n */\n\n\nlistProto.filterSelf = function (dimensions, cb, context, contextCompat) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n if (typeof dimensions === 'function') {\n contextCompat = context;\n context = cb;\n cb = dimensions;\n dimensions = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n var count = this.count();\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(count);\n var value = [];\n var dimSize = dimensions.length;\n var offset = 0;\n var dim0 = dimensions[0];\n\n for (var i = 0; i < count; i++) {\n var keep;\n var rawIdx = this.getRawIndex(i); // Simple optimization\n\n if (dimSize === 0) {\n keep = cb.call(context, i);\n } else if (dimSize === 1) {\n var val = this._getFast(dim0, rawIdx);\n\n keep = cb.call(context, val, i);\n } else {\n for (var k = 0; k < dimSize; k++) {\n value[k] = this._getFast(dim0, rawIdx);\n }\n\n value[k] = i;\n keep = cb.apply(context, value);\n }\n\n if (keep) {\n newIndices[offset++] = rawIdx;\n }\n } // Set indices after filtered.\n\n\n if (offset < count) {\n this._indices = newIndices;\n }\n\n this._count = offset; // Reset data extent\n\n this._extent = {};\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return this;\n};\n/**\n * Select data in range. (For optimization of filter)\n * (Manually inline code, support 5 million data filtering in data zoom.)\n */\n\n\nlistProto.selectRange = function (range) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n var dimensions = [];\n\n for (var dim in range) {\n if (range.hasOwnProperty(dim)) {\n dimensions.push(dim);\n }\n }\n\n var dimSize = dimensions.length;\n\n if (!dimSize) {\n return;\n }\n\n var originalCount = this.count();\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(originalCount);\n var offset = 0;\n var dim0 = dimensions[0];\n var min = range[dim0][0];\n var max = range[dim0][1];\n var quickFinished = false;\n\n if (!this._indices) {\n // Extreme optimization for common case. About 2x faster in chrome.\n var idx = 0;\n\n if (dimSize === 1) {\n var dimStorage = this._storage[dimensions[0]];\n\n for (var k = 0; k < this._chunkCount; k++) {\n var chunkStorage = dimStorage[k];\n var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n for (var i = 0; i < len; i++) {\n var val = chunkStorage[i]; // NaN will not be filtered. Consider the case, in line chart, empty\n // value indicates the line should be broken. But for the case like\n // scatter plot, a data item with empty value will not be rendered,\n // but the axis extent may be effected if some other dim of the data\n // item has value. Fortunately it is not a significant negative effect.\n\n if (val >= min && val <= max || isNaN(val)) {\n newIndices[offset++] = idx;\n }\n\n idx++;\n }\n }\n\n quickFinished = true;\n } else if (dimSize === 2) {\n var dimStorage = this._storage[dim0];\n var dimStorage2 = this._storage[dimensions[1]];\n var min2 = range[dimensions[1]][0];\n var max2 = range[dimensions[1]][1];\n\n for (var k = 0; k < this._chunkCount; k++) {\n var chunkStorage = dimStorage[k];\n var chunkStorage2 = dimStorage2[k];\n var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n for (var i = 0; i < len; i++) {\n var val = chunkStorage[i];\n var val2 = chunkStorage2[i]; // Do not filter NaN, see comment above.\n\n if ((val >= min && val <= max || isNaN(val)) && (val2 >= min2 && val2 <= max2 || isNaN(val2))) {\n newIndices[offset++] = idx;\n }\n\n idx++;\n }\n }\n\n quickFinished = true;\n }\n }\n\n if (!quickFinished) {\n if (dimSize === 1) {\n for (var i = 0; i < originalCount; i++) {\n var rawIndex = this.getRawIndex(i);\n\n var val = this._getFast(dim0, rawIndex); // Do not filter NaN, see comment above.\n\n\n if (val >= min && val <= max || isNaN(val)) {\n newIndices[offset++] = rawIndex;\n }\n }\n } else {\n for (var i = 0; i < originalCount; i++) {\n var keep = true;\n var rawIndex = this.getRawIndex(i);\n\n for (var k = 0; k < dimSize; k++) {\n var dimk = dimensions[k];\n\n var val = this._getFast(dim, rawIndex); // Do not filter NaN, see comment above.\n\n\n if (val < range[dimk][0] || val > range[dimk][1]) {\n keep = false;\n }\n }\n\n if (keep) {\n newIndices[offset++] = this.getRawIndex(i);\n }\n }\n }\n } // Set indices after filtered.\n\n\n if (offset < originalCount) {\n this._indices = newIndices;\n }\n\n this._count = offset; // Reset data extent\n\n this._extent = {};\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return this;\n};\n/**\n * Data mapping to a plain array\n * @param {string|Array.} [dimensions]\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.mapArray = function (dimensions, cb, context, contextCompat) {\n 'use strict';\n\n if (typeof dimensions === 'function') {\n contextCompat = context;\n context = cb;\n cb = dimensions;\n dimensions = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n var result = [];\n this.each(dimensions, function () {\n result.push(cb && cb.apply(this, arguments));\n }, context);\n return result;\n}; // Data in excludeDimensions is copied, otherwise transfered.\n\n\nfunction cloneListForMapAndSample(original, excludeDimensions) {\n var allDimensions = original.dimensions;\n var list = new List(zrUtil.map(allDimensions, original.getDimensionInfo, original), original.hostModel); // FIXME If needs stackedOn, value may already been stacked\n\n transferProperties(list, original);\n var storage = list._storage = {};\n var originalStorage = original._storage; // Init storage\n\n for (var i = 0; i < allDimensions.length; i++) {\n var dim = allDimensions[i];\n\n if (originalStorage[dim]) {\n // Notice that we do not reset invertedIndicesMap here, becuase\n // there is no scenario of mapping or sampling ordinal dimension.\n if (zrUtil.indexOf(excludeDimensions, dim) >= 0) {\n storage[dim] = cloneDimStore(originalStorage[dim]);\n list._rawExtent[dim] = getInitialExtent();\n list._extent[dim] = null;\n } else {\n // Direct reference for other dimensions\n storage[dim] = originalStorage[dim];\n }\n }\n }\n\n return list;\n}\n\nfunction cloneDimStore(originalDimStore) {\n var newDimStore = new Array(originalDimStore.length);\n\n for (var j = 0; j < originalDimStore.length; j++) {\n newDimStore[j] = cloneChunk(originalDimStore[j]);\n }\n\n return newDimStore;\n}\n\nfunction getInitialExtent() {\n return [Infinity, -Infinity];\n}\n/**\n * Data mapping to a new List with given dimensions\n * @param {string|Array.} dimensions\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.map = function (dimensions, cb, context, contextCompat) {\n 'use strict'; // contextCompat just for compat echarts3\n\n context = context || contextCompat || this;\n dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n var list = cloneListForMapAndSample(this, dimensions); // Following properties are all immutable.\n // So we can reference to the same value\n\n list._indices = this._indices;\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n var storage = list._storage;\n var tmpRetValue = [];\n var chunkSize = this._chunkSize;\n var dimSize = dimensions.length;\n var dataCount = this.count();\n var values = [];\n var rawExtent = list._rawExtent;\n\n for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {\n for (var dimIndex = 0; dimIndex < dimSize; dimIndex++) {\n values[dimIndex] = this.get(dimensions[dimIndex], dataIndex\n /*, stack */\n );\n }\n\n values[dimSize] = dataIndex;\n var retValue = cb && cb.apply(context, values);\n\n if (retValue != null) {\n // a number or string (in oridinal dimension)?\n if (typeof retValue !== 'object') {\n tmpRetValue[0] = retValue;\n retValue = tmpRetValue;\n }\n\n var rawIndex = this.getRawIndex(dataIndex);\n var chunkIndex = Math.floor(rawIndex / chunkSize);\n var chunkOffset = rawIndex % chunkSize;\n\n for (var i = 0; i < retValue.length; i++) {\n var dim = dimensions[i];\n var val = retValue[i];\n var rawExtentOnDim = rawExtent[dim];\n var dimStore = storage[dim];\n\n if (dimStore) {\n dimStore[chunkIndex][chunkOffset] = val;\n }\n\n if (val < rawExtentOnDim[0]) {\n rawExtentOnDim[0] = val;\n }\n\n if (val > rawExtentOnDim[1]) {\n rawExtentOnDim[1] = val;\n }\n }\n }\n }\n\n return list;\n};\n/**\n * Large data down sampling on given dimension\n * @param {string} dimension\n * @param {number} rate\n * @param {Function} sampleValue\n * @param {Function} sampleIndex Sample index for name and id\n */\n\n\nlistProto.downSample = function (dimension, rate, sampleValue, sampleIndex) {\n var list = cloneListForMapAndSample(this, [dimension]);\n var targetStorage = list._storage;\n var frameValues = [];\n var frameSize = Math.floor(1 / rate);\n var dimStore = targetStorage[dimension];\n var len = this.count();\n var chunkSize = this._chunkSize;\n var rawExtentOnDim = list._rawExtent[dimension];\n var newIndices = new (getIndicesCtor(this))(len);\n var offset = 0;\n\n for (var i = 0; i < len; i += frameSize) {\n // Last frame\n if (frameSize > len - i) {\n frameSize = len - i;\n frameValues.length = frameSize;\n }\n\n for (var k = 0; k < frameSize; k++) {\n var dataIdx = this.getRawIndex(i + k);\n var originalChunkIndex = Math.floor(dataIdx / chunkSize);\n var originalChunkOffset = dataIdx % chunkSize;\n frameValues[k] = dimStore[originalChunkIndex][originalChunkOffset];\n }\n\n var value = sampleValue(frameValues);\n var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1));\n var sampleChunkIndex = Math.floor(sampleFrameIdx / chunkSize);\n var sampleChunkOffset = sampleFrameIdx % chunkSize; // Only write value on the filtered data\n\n dimStore[sampleChunkIndex][sampleChunkOffset] = value;\n\n if (value < rawExtentOnDim[0]) {\n rawExtentOnDim[0] = value;\n }\n\n if (value > rawExtentOnDim[1]) {\n rawExtentOnDim[1] = value;\n }\n\n newIndices[offset++] = sampleFrameIdx;\n }\n\n list._count = offset;\n list._indices = newIndices;\n list.getRawIndex = getRawIndexWithIndices;\n return list;\n};\n/**\n * Get model of one data item.\n *\n * @param {number} idx\n */\n// FIXME Model proxy ?\n\n\nlistProto.getItemModel = function (idx) {\n var hostModel = this.hostModel;\n return new Model(this.getRawDataItem(idx), hostModel, hostModel && hostModel.ecModel);\n};\n/**\n * Create a data differ\n * @param {module:echarts/data/List} otherList\n * @return {module:echarts/data/DataDiffer}\n */\n\n\nlistProto.diff = function (otherList) {\n var thisList = this;\n return new DataDiffer(otherList ? otherList.getIndices() : [], this.getIndices(), function (idx) {\n return getId(otherList, idx);\n }, function (idx) {\n return getId(thisList, idx);\n });\n};\n/**\n * Get visual property.\n * @param {string} key\n */\n\n\nlistProto.getVisual = function (key) {\n var visual = this._visual;\n return visual && visual[key];\n};\n/**\n * Set visual property\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n * setVisual('color', color);\n * setVisual({\n * 'color': color\n * });\n */\n\n\nlistProto.setVisual = function (key, val) {\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.setVisual(name, key[name]);\n }\n }\n\n return;\n }\n\n this._visual = this._visual || {};\n this._visual[key] = val;\n};\n/**\n * Set layout property.\n * @param {string|Object} key\n * @param {*} [val]\n */\n\n\nlistProto.setLayout = function (key, val) {\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.setLayout(name, key[name]);\n }\n }\n\n return;\n }\n\n this._layout[key] = val;\n};\n/**\n * Get layout property.\n * @param {string} key.\n * @return {*}\n */\n\n\nlistProto.getLayout = function (key) {\n return this._layout[key];\n};\n/**\n * Get layout of single data item\n * @param {number} idx\n */\n\n\nlistProto.getItemLayout = function (idx) {\n return this._itemLayouts[idx];\n};\n/**\n * Set layout of single data item\n * @param {number} idx\n * @param {Object} layout\n * @param {boolean=} [merge=false]\n */\n\n\nlistProto.setItemLayout = function (idx, layout, merge) {\n this._itemLayouts[idx] = merge ? zrUtil.extend(this._itemLayouts[idx] || {}, layout) : layout;\n};\n/**\n * Clear all layout of single data item\n */\n\n\nlistProto.clearItemLayouts = function () {\n this._itemLayouts.length = 0;\n};\n/**\n * Get visual property of single data item\n * @param {number} idx\n * @param {string} key\n * @param {boolean} [ignoreParent=false]\n */\n\n\nlistProto.getItemVisual = function (idx, key, ignoreParent) {\n var itemVisual = this._itemVisuals[idx];\n var val = itemVisual && itemVisual[key];\n\n if (val == null && !ignoreParent) {\n // Use global visual property\n return this.getVisual(key);\n }\n\n return val;\n};\n/**\n * Set visual property of single data item\n *\n * @param {number} idx\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n * setItemVisual(0, 'color', color);\n * setItemVisual(0, {\n * 'color': color\n * });\n */\n\n\nlistProto.setItemVisual = function (idx, key, value) {\n var itemVisual = this._itemVisuals[idx] || {};\n var hasItemVisual = this.hasItemVisual;\n this._itemVisuals[idx] = itemVisual;\n\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n itemVisual[name] = key[name];\n hasItemVisual[name] = true;\n }\n }\n\n return;\n }\n\n itemVisual[key] = value;\n hasItemVisual[key] = true;\n};\n/**\n * Clear itemVisuals and list visual.\n */\n\n\nlistProto.clearAllVisual = function () {\n this._visual = {};\n this._itemVisuals = [];\n this.hasItemVisual = {};\n};\n\nvar setItemDataAndSeriesIndex = function (child) {\n child.seriesIndex = this.seriesIndex;\n child.dataIndex = this.dataIndex;\n child.dataType = this.dataType;\n};\n/**\n * Set graphic element relative to data. It can be set as null\n * @param {number} idx\n * @param {module:zrender/Element} [el]\n */\n\n\nlistProto.setItemGraphicEl = function (idx, el) {\n var hostModel = this.hostModel;\n\n if (el) {\n // Add data index and series index for indexing the data by element\n // Useful in tooltip\n el.dataIndex = idx;\n el.dataType = this.dataType;\n el.seriesIndex = hostModel && hostModel.seriesIndex;\n\n if (el.type === 'group') {\n el.traverse(setItemDataAndSeriesIndex, el);\n }\n }\n\n this._graphicEls[idx] = el;\n};\n/**\n * @param {number} idx\n * @return {module:zrender/Element}\n */\n\n\nlistProto.getItemGraphicEl = function (idx) {\n return this._graphicEls[idx];\n};\n/**\n * @param {Function} cb\n * @param {*} context\n */\n\n\nlistProto.eachItemGraphicEl = function (cb, context) {\n zrUtil.each(this._graphicEls, function (el, idx) {\n if (el) {\n cb && cb.call(context, el, idx);\n }\n });\n};\n/**\n * Shallow clone a new list except visual and layout properties, and graph elements.\n * New list only change the indices.\n */\n\n\nlistProto.cloneShallow = function (list) {\n if (!list) {\n var dimensionInfoList = zrUtil.map(this.dimensions, this.getDimensionInfo, this);\n list = new List(dimensionInfoList, this.hostModel);\n } // FIXME\n\n\n list._storage = this._storage;\n transferProperties(list, this); // Clone will not change the data extent and indices\n\n if (this._indices) {\n var Ctor = this._indices.constructor;\n list._indices = new Ctor(this._indices);\n } else {\n list._indices = null;\n }\n\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return list;\n};\n/**\n * Wrap some method to add more feature\n * @param {string} methodName\n * @param {Function} injectFunction\n */\n\n\nlistProto.wrapMethod = function (methodName, injectFunction) {\n var originalMethod = this[methodName];\n\n if (typeof originalMethod !== 'function') {\n return;\n }\n\n this.__wrappedMethods = this.__wrappedMethods || [];\n\n this.__wrappedMethods.push(methodName);\n\n this[methodName] = function () {\n var res = originalMethod.apply(this, arguments);\n return injectFunction.apply(this, [res].concat(zrUtil.slice(arguments)));\n };\n}; // Methods that create a new list based on this list should be listed here.\n// Notice that those method should `RETURN` the new list.\n\n\nlistProto.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'map']; // Methods that change indices of this list should be listed here.\n\nlistProto.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\nvar _default = List;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"./graphic\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _text = require(\"zrender/lib/contain/text\");\n\nvar calculateTextPosition = _text.calculateTextPosition;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Symbol factory\n\n/**\n * Triangle shape\n * @inner\n */\nvar Triangle = graphic.extendShape({\n type: 'triangle',\n shape: {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var cx = shape.cx;\n var cy = shape.cy;\n var width = shape.width / 2;\n var height = shape.height / 2;\n path.moveTo(cx, cy - height);\n path.lineTo(cx + width, cy + height);\n path.lineTo(cx - width, cy + height);\n path.closePath();\n }\n});\n/**\n * Diamond shape\n * @inner\n */\n\nvar Diamond = graphic.extendShape({\n type: 'diamond',\n shape: {\n cx: 0,\n cy: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var cx = shape.cx;\n var cy = shape.cy;\n var width = shape.width / 2;\n var height = shape.height / 2;\n path.moveTo(cx, cy - height);\n path.lineTo(cx + width, cy);\n path.lineTo(cx, cy + height);\n path.lineTo(cx - width, cy);\n path.closePath();\n }\n});\n/**\n * Pin shape\n * @inner\n */\n\nvar Pin = graphic.extendShape({\n type: 'pin',\n shape: {\n // x, y on the cusp\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n buildPath: function (path, shape) {\n var x = shape.x;\n var y = shape.y;\n var w = shape.width / 5 * 3; // Height must be larger than width\n\n var h = Math.max(w, shape.height);\n var r = w / 2; // Dist on y with tangent point and circle center\n\n var dy = r * r / (h - r);\n var cy = y - h + r + dy;\n var angle = Math.asin(dy / r); // Dist on x with tangent point and circle center\n\n var dx = Math.cos(angle) * r;\n var tanX = Math.sin(angle);\n var tanY = Math.cos(angle);\n var cpLen = r * 0.6;\n var cpLen2 = r * 0.7;\n path.moveTo(x - dx, cy + dy);\n path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle);\n path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y);\n path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy);\n path.closePath();\n }\n});\n/**\n * Arrow shape\n * @inner\n */\n\nvar Arrow = graphic.extendShape({\n type: 'arrow',\n shape: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n buildPath: function (ctx, shape) {\n var height = shape.height;\n var width = shape.width;\n var x = shape.x;\n var y = shape.y;\n var dx = width / 3 * 2;\n ctx.moveTo(x, y);\n ctx.lineTo(x + dx, y + height);\n ctx.lineTo(x, y + height / 4 * 3);\n ctx.lineTo(x - dx, y + height);\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n});\n/**\n * Map of path contructors\n * @type {Object.}\n */\n\nvar symbolCtors = {\n line: graphic.Line,\n rect: graphic.Rect,\n roundRect: graphic.Rect,\n square: graphic.Rect,\n circle: graphic.Circle,\n diamond: Diamond,\n pin: Pin,\n arrow: Arrow,\n triangle: Triangle\n};\nvar symbolShapeMakers = {\n line: function (x, y, w, h, shape) {\n // FIXME\n shape.x1 = x;\n shape.y1 = y + h / 2;\n shape.x2 = x + w;\n shape.y2 = y + h / 2;\n },\n rect: function (x, y, w, h, shape) {\n shape.x = x;\n shape.y = y;\n shape.width = w;\n shape.height = h;\n },\n roundRect: function (x, y, w, h, shape) {\n shape.x = x;\n shape.y = y;\n shape.width = w;\n shape.height = h;\n shape.r = Math.min(w, h) / 4;\n },\n square: function (x, y, w, h, shape) {\n var size = Math.min(w, h);\n shape.x = x;\n shape.y = y;\n shape.width = size;\n shape.height = size;\n },\n circle: function (x, y, w, h, shape) {\n // Put circle in the center of square\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.r = Math.min(w, h) / 2;\n },\n diamond: function (x, y, w, h, shape) {\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n pin: function (x, y, w, h, shape) {\n shape.x = x + w / 2;\n shape.y = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n arrow: function (x, y, w, h, shape) {\n shape.x = x + w / 2;\n shape.y = y + h / 2;\n shape.width = w;\n shape.height = h;\n },\n triangle: function (x, y, w, h, shape) {\n shape.cx = x + w / 2;\n shape.cy = y + h / 2;\n shape.width = w;\n shape.height = h;\n }\n};\nvar symbolBuildProxies = {};\nzrUtil.each(symbolCtors, function (Ctor, name) {\n symbolBuildProxies[name] = new Ctor();\n});\nvar SymbolClz = graphic.extendShape({\n type: 'symbol',\n shape: {\n symbolType: '',\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n calculateTextPosition: function (out, style, rect) {\n var res = calculateTextPosition(out, style, rect);\n var shape = this.shape;\n\n if (shape && shape.symbolType === 'pin' && style.textPosition === 'inside') {\n res.y = rect.y + rect.height * 0.4;\n }\n\n return res;\n },\n buildPath: function (ctx, shape, inBundle) {\n var symbolType = shape.symbolType;\n\n if (symbolType !== 'none') {\n var proxySymbol = symbolBuildProxies[symbolType];\n\n if (!proxySymbol) {\n // Default rect\n symbolType = 'rect';\n proxySymbol = symbolBuildProxies[symbolType];\n }\n\n symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);\n proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);\n }\n }\n}); // Provide setColor helper method to avoid determine if set the fill or stroke outside\n\nfunction symbolPathSetColor(color, innerColor) {\n if (this.type !== 'image') {\n var symbolStyle = this.style;\n var symbolShape = this.shape;\n\n if (symbolShape && symbolShape.symbolType === 'line') {\n symbolStyle.stroke = color;\n } else if (this.__isEmptyBrush) {\n symbolStyle.stroke = color;\n symbolStyle.fill = innerColor || '#fff';\n } else {\n // FIXME 判断图形默认是填充还是描边,使用 onlyStroke ?\n symbolStyle.fill && (symbolStyle.fill = color);\n symbolStyle.stroke && (symbolStyle.stroke = color);\n }\n\n this.dirty(false);\n }\n}\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolType\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n * @param {boolean} [keepAspect=false] whether to keep the ratio of w/h,\n * for path and image only.\n */\n\n\nfunction createSymbol(symbolType, x, y, w, h, color, keepAspect) {\n // TODO Support image object, DynamicImage.\n var isEmpty = symbolType.indexOf('empty') === 0;\n\n if (isEmpty) {\n symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);\n }\n\n var symbolPath;\n\n if (symbolType.indexOf('image://') === 0) {\n symbolPath = graphic.makeImage(symbolType.slice(8), new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n } else if (symbolType.indexOf('path://') === 0) {\n symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n } else {\n symbolPath = new SymbolClz({\n shape: {\n symbolType: symbolType,\n x: x,\n y: y,\n width: w,\n height: h\n }\n });\n }\n\n symbolPath.__isEmptyBrush = isEmpty;\n symbolPath.setColor = symbolPathSetColor;\n symbolPath.setColor(color);\n return symbolPath;\n}\n\nexports.createSymbol = createSymbol;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar coordinateSystemCreators = {};\n\nfunction CoordinateSystemManager() {\n this._coordinateSystems = [];\n}\n\nCoordinateSystemManager.prototype = {\n constructor: CoordinateSystemManager,\n create: function (ecModel, api) {\n var coordinateSystems = [];\n zrUtil.each(coordinateSystemCreators, function (creater, type) {\n var list = creater.create(ecModel, api);\n coordinateSystems = coordinateSystems.concat(list || []);\n });\n this._coordinateSystems = coordinateSystems;\n },\n update: function (ecModel, api) {\n zrUtil.each(this._coordinateSystems, function (coordSys) {\n coordSys.update && coordSys.update(ecModel, api);\n });\n },\n getCoordinateSystems: function () {\n return this._coordinateSystems.slice();\n }\n};\n\nCoordinateSystemManager.register = function (type, coordinateSystemCreator) {\n coordinateSystemCreators[type] = coordinateSystemCreator;\n};\n\nCoordinateSystemManager.get = function (type) {\n return coordinateSystemCreators[type];\n};\n\nvar _default = CoordinateSystemManager;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar OrdinalScale = require(\"../scale/Ordinal\");\n\nvar IntervalScale = require(\"../scale/Interval\");\n\nvar Scale = require(\"../scale/Scale\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar prepareLayoutBarSeries = _barGrid.prepareLayoutBarSeries;\nvar makeColumnLayout = _barGrid.makeColumnLayout;\nvar retrieveColumnLayout = _barGrid.retrieveColumnLayout;\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nrequire(\"../scale/Time\");\n\nrequire(\"../scale/Log\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Get axis scale extent before niced.\n * Item of returned array can only be number (including Infinity and NaN).\n */\nfunction getScaleExtent(scale, model) {\n var scaleType = scale.type;\n var min = model.getMin();\n var max = model.getMax();\n var fixMin = min != null;\n var fixMax = max != null;\n var originalExtent = scale.getExtent();\n var axisDataLen;\n var boundaryGap;\n var span;\n\n if (scaleType === 'ordinal') {\n axisDataLen = model.getCategories().length;\n } else {\n boundaryGap = model.get('boundaryGap');\n\n if (!zrUtil.isArray(boundaryGap)) {\n boundaryGap = [boundaryGap || 0, boundaryGap || 0];\n }\n\n if (typeof boundaryGap[0] === 'boolean') {\n boundaryGap = [0, 0];\n }\n\n boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], 1);\n boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], 1);\n span = originalExtent[1] - originalExtent[0] || Math.abs(originalExtent[0]);\n } // Notice: When min/max is not set (that is, when there are null/undefined,\n // which is the most common case), these cases should be ensured:\n // (1) For 'ordinal', show all axis.data.\n // (2) For others:\n // + `boundaryGap` is applied (if min/max set, boundaryGap is\n // disabled).\n // + If `needCrossZero`, min/max should be zero, otherwise, min/max should\n // be the result that originalExtent enlarged by boundaryGap.\n // (3) If no data, it should be ensured that `scale.setBlank` is set.\n // FIXME\n // (1) When min/max is 'dataMin' or 'dataMax', should boundaryGap be able to used?\n // (2) When `needCrossZero` and all data is positive/negative, should it be ensured\n // that the results processed by boundaryGap are positive/negative?\n\n\n if (min == null) {\n min = scaleType === 'ordinal' ? axisDataLen ? 0 : NaN : originalExtent[0] - boundaryGap[0] * span;\n }\n\n if (max == null) {\n max = scaleType === 'ordinal' ? axisDataLen ? axisDataLen - 1 : NaN : originalExtent[1] + boundaryGap[1] * span;\n }\n\n if (min === 'dataMin') {\n min = originalExtent[0];\n } else if (typeof min === 'function') {\n min = min({\n min: originalExtent[0],\n max: originalExtent[1]\n });\n }\n\n if (max === 'dataMax') {\n max = originalExtent[1];\n } else if (typeof max === 'function') {\n max = max({\n min: originalExtent[0],\n max: originalExtent[1]\n });\n }\n\n (min == null || !isFinite(min)) && (min = NaN);\n (max == null || !isFinite(max)) && (max = NaN);\n scale.setBlank(zrUtil.eqNaN(min) || zrUtil.eqNaN(max) || scaleType === 'ordinal' && !scale.getOrdinalMeta().categories.length); // Evaluate if axis needs cross zero\n\n if (model.getNeedCrossZero()) {\n // Axis is over zero and min is not set\n if (min > 0 && max > 0 && !fixMin) {\n min = 0;\n } // Axis is under zero and max is not set\n\n\n if (min < 0 && max < 0 && !fixMax) {\n max = 0;\n }\n } // If bars are placed on a base axis of type time or interval account for axis boundary overflow and current axis\n // is base axis\n // FIXME\n // (1) Consider support value axis, where below zero and axis `onZero` should be handled properly.\n // (2) Refactor the logic with `barGrid`. Is it not need to `makeBarWidthAndOffsetInfo` twice with different extent?\n // Should not depend on series type `bar`?\n // (3) Fix that might overlap when using dataZoom.\n // (4) Consider other chart types using `barGrid`?\n // See #6728, #4862, `test/bar-overflow-time-plot.html`\n\n\n var ecModel = model.ecModel;\n\n if (ecModel && scaleType === 'time'\n /*|| scaleType === 'interval' */\n ) {\n var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\n var isBaseAxisAndHasBarSeries;\n zrUtil.each(barSeriesModels, function (seriesModel) {\n isBaseAxisAndHasBarSeries |= seriesModel.getBaseAxis() === model.axis;\n });\n\n if (isBaseAxisAndHasBarSeries) {\n // Calculate placement of bars on axis\n var barWidthAndOffset = makeColumnLayout(barSeriesModels); // Adjust axis min and max to account for overflow\n\n var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\n min = adjustedScale.min;\n max = adjustedScale.max;\n }\n }\n\n return [min, max];\n}\n\nfunction adjustScaleForOverflow(min, max, model, barWidthAndOffset) {\n // Get Axis Length\n var axisExtent = model.axis.getExtent();\n var axisLength = axisExtent[1] - axisExtent[0]; // Get bars on current base axis and calculate min and max overflow\n\n var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\n\n if (barsOnCurrentAxis === undefined) {\n return {\n min: min,\n max: max\n };\n }\n\n var minOverflow = Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n minOverflow = Math.min(item.offset, minOverflow);\n });\n var maxOverflow = -Infinity;\n zrUtil.each(barsOnCurrentAxis, function (item) {\n maxOverflow = Math.max(item.offset + item.width, maxOverflow);\n });\n minOverflow = Math.abs(minOverflow);\n maxOverflow = Math.abs(maxOverflow);\n var totalOverFlow = minOverflow + maxOverflow; // Calulate required buffer based on old range and overflow\n\n var oldRange = max - min;\n var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength;\n var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange;\n max += overflowBuffer * (maxOverflow / totalOverFlow);\n min -= overflowBuffer * (minOverflow / totalOverFlow);\n return {\n min: min,\n max: max\n };\n}\n\nfunction niceScaleExtent(scale, model) {\n var extent = getScaleExtent(scale, model);\n var fixMin = model.getMin() != null;\n var fixMax = model.getMax() != null;\n var splitNumber = model.get('splitNumber');\n\n if (scale.type === 'log') {\n scale.base = model.get('logBase');\n }\n\n var scaleType = scale.type;\n scale.setExtent(extent[0], extent[1]);\n scale.niceExtent({\n splitNumber: splitNumber,\n fixMin: fixMin,\n fixMax: fixMax,\n minInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('minInterval') : null,\n maxInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('maxInterval') : null\n }); // If some one specified the min, max. And the default calculated interval\n // is not good enough. He can specify the interval. It is often appeared\n // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard\n // to be 60.\n // FIXME\n\n var interval = model.get('interval');\n\n if (interval != null) {\n scale.setInterval && scale.setInterval(interval);\n }\n}\n/**\n * @param {module:echarts/model/Model} model\n * @param {string} [axisType] Default retrieve from model.type\n * @return {module:echarts/scale/*}\n */\n\n\nfunction createScaleByModel(model, axisType) {\n axisType = axisType || model.get('type');\n\n if (axisType) {\n switch (axisType) {\n // Buildin scale\n case 'category':\n return new OrdinalScale(model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(), [Infinity, -Infinity]);\n\n case 'value':\n return new IntervalScale();\n // Extended scale, like time and log\n\n default:\n return (Scale.getClass(axisType) || IntervalScale).create(model);\n }\n }\n}\n/**\n * Check if the axis corss 0\n */\n\n\nfunction ifAxisCrossZero(axis) {\n var dataExtent = axis.scale.getExtent();\n var min = dataExtent[0];\n var max = dataExtent[1];\n return !(min > 0 && max > 0 || min < 0 && max < 0);\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @return {Function} Label formatter function.\n * param: {number} tickValue,\n * param: {number} idx, the index in all ticks.\n * If category axis, this param is not requied.\n * return: {string} label string.\n */\n\n\nfunction makeLabelFormatter(axis) {\n var labelFormatter = axis.getLabelModel().get('formatter');\n var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\n\n if (typeof labelFormatter === 'string') {\n labelFormatter = function (tpl) {\n return function (val) {\n // For category axis, get raw value; for numeric axis,\n // get foramtted label like '1,333,444'.\n val = axis.scale.getLabel(val);\n return tpl.replace('{value}', val != null ? val : '');\n };\n }(labelFormatter); // Consider empty array\n\n\n return labelFormatter;\n } else if (typeof labelFormatter === 'function') {\n return function (tickValue, idx) {\n // The original intention of `idx` is \"the index of the tick in all ticks\".\n // But the previous implementation of category axis do not consider the\n // `axisLabel.interval`, which cause that, for example, the `interval` is\n // `1`, then the ticks \"name5\", \"name7\", \"name9\" are displayed, where the\n // corresponding `idx` are `0`, `2`, `4`, but not `0`, `1`, `2`. So we keep\n // the definition here for back compatibility.\n if (categoryTickStart != null) {\n idx = tickValue - categoryTickStart;\n }\n\n return labelFormatter(getAxisRawValue(axis, tickValue), idx);\n };\n } else {\n return function (tick) {\n return axis.scale.getLabel(tick);\n };\n }\n}\n\nfunction getAxisRawValue(axis, value) {\n // In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n return axis.type === 'category' ? axis.scale.getLabel(value) : value;\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @return {module:zrender/core/BoundingRect} Be null/undefined if no labels.\n */\n\n\nfunction estimateLabelUnionRect(axis) {\n var axisModel = axis.model;\n var scale = axis.scale;\n\n if (!axisModel.get('axisLabel.show') || scale.isBlank()) {\n return;\n }\n\n var isCategory = axis.type === 'category';\n var realNumberScaleTicks;\n var tickCount;\n var categoryScaleExtent = scale.getExtent(); // Optimize for large category data, avoid call `getTicks()`.\n\n if (isCategory) {\n tickCount = scale.count();\n } else {\n realNumberScaleTicks = scale.getTicks();\n tickCount = realNumberScaleTicks.length;\n }\n\n var axisLabelModel = axis.getLabelModel();\n var labelFormatter = makeLabelFormatter(axis);\n var rect;\n var step = 1; // Simple optimization for large amount of labels\n\n if (tickCount > 40) {\n step = Math.ceil(tickCount / 40);\n }\n\n for (var i = 0; i < tickCount; i += step) {\n var tickValue = realNumberScaleTicks ? realNumberScaleTicks[i] : categoryScaleExtent[0] + i;\n var label = labelFormatter(tickValue);\n var unrotatedSingleRect = axisLabelModel.getTextRect(label);\n var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\n rect ? rect.union(singleRect) : rect = singleRect;\n }\n\n return rect;\n}\n\nfunction rotateTextRect(textRect, rotate) {\n var rotateRadians = rotate * Math.PI / 180;\n var boundingBox = textRect.plain();\n var beforeWidth = boundingBox.width;\n var beforeHeight = boundingBox.height;\n var afterWidth = beforeWidth * Math.cos(rotateRadians) + beforeHeight * Math.sin(rotateRadians);\n var afterHeight = beforeWidth * Math.sin(rotateRadians) + beforeHeight * Math.cos(rotateRadians);\n var rotatedRect = new BoundingRect(boundingBox.x, boundingBox.y, afterWidth, afterHeight);\n return rotatedRect;\n}\n/**\n * @param {module:echarts/src/model/Model} model axisLabelModel or axisTickModel\n * @return {number|String} Can be null|'auto'|number|function\n */\n\n\nfunction getOptionCategoryInterval(model) {\n var interval = model.get('interval');\n return interval == null ? 'auto' : interval;\n}\n/**\n * Set `categoryInterval` as 0 implicitly indicates that\n * show all labels reguardless of overlap.\n * @param {Object} axis axisModel.axis\n * @return {boolean}\n */\n\n\nfunction shouldShowAllLabels(axis) {\n return axis.type === 'category' && getOptionCategoryInterval(axis.getLabelModel()) === 0;\n}\n\nexports.getScaleExtent = getScaleExtent;\nexports.niceScaleExtent = niceScaleExtent;\nexports.createScaleByModel = createScaleByModel;\nexports.ifAxisCrossZero = ifAxisCrossZero;\nexports.makeLabelFormatter = makeLabelFormatter;\nexports.getAxisRawValue = getAxisRawValue;\nexports.estimateLabelUnionRect = estimateLabelUnionRect;\nexports.getOptionCategoryInterval = getOptionCategoryInterval;\nexports.shouldShowAllLabels = shouldShowAllLabels;","var Eventful = require(\"../mixin/Eventful\");\n\nexports.Dispatcher = Eventful;\n\nvar env = require(\"./env\");\n\nvar _fourPointsTransform = require(\"./fourPointsTransform\");\n\nvar buildTransformer = _fourPointsTransform.buildTransformer;\n\n/**\n * Utilities for mouse or touch events.\n */\nvar isDomLevel2 = typeof window !== 'undefined' && !!window.addEventListener;\nvar MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\nvar EVENT_SAVED_PROP = '___zrEVENTSAVED';\nvar _calcOut = [];\n/**\n * Get the `zrX` and `zrY`, which are relative to the top-left of\n * the input `el`.\n * CSS transform (2D & 3D) is supported.\n *\n * The strategy to fetch the coords:\n * + If `calculate` is not set as `true`, users of this method should\n * ensure that `el` is the same or the same size & location as `e.target`.\n * Otherwise the result coords are probably not expected. Because we\n * firstly try to get coords from e.offsetX/e.offsetY.\n * + If `calculate` is set as `true`, the input `el` can be any element\n * and we force to calculate the coords based on `el`.\n * + The input `el` should be positionable (not position:static).\n *\n * The force `calculate` can be used in case like:\n * When mousemove event triggered on ec tooltip, `e.target` is not `el`(zr painter.dom).\n *\n * @param {HTMLElement} el DOM element.\n * @param {Event} e Mouse event or touch event.\n * @param {Object} out Get `out.zrX` and `out.zrY` as the result.\n * @param {boolean} [calculate=false] Whether to force calculate\n * the coordinates but not use ones provided by browser.\n */\n\nfunction clientToLocal(el, e, out, calculate) {\n out = out || {}; // According to the W3C Working Draft, offsetX and offsetY should be relative\n // to the padding edge of the target element. The only browser using this convention\n // is IE. Webkit uses the border edge, Opera uses the content edge, and FireFox does\n // not support the properties.\n // (see http://www.jacklmoore.com/notes/mouse-position/)\n // In zr painter.dom, padding edge equals to border edge.\n\n if (calculate || !env.canvasSupported) {\n calculateZrXY(el, e, out);\n } // Caution: In FireFox, layerX/layerY Mouse position relative to the closest positioned\n // ancestor element, so we should make sure el is positioned (e.g., not position:static).\n // BTW1, Webkit don't return the same results as FF in non-simple cases (like add\n // zoom-factor, overflow / opacity layers, transforms ...)\n // BTW2, (ev.offsetY || ev.pageY - $(ev.target).offset().top) is not correct in preserve-3d.\n // \n // BTW3, In ff, offsetX/offsetY is always 0.\n else if (env.browser.firefox && e.layerX != null && e.layerX !== e.offsetX) {\n out.zrX = e.layerX;\n out.zrY = e.layerY;\n } // For IE6+, chrome, safari, opera. (When will ff support offsetX?)\n else if (e.offsetX != null) {\n out.zrX = e.offsetX;\n out.zrY = e.offsetY;\n } // For some other device, e.g., IOS safari.\n else {\n calculateZrXY(el, e, out);\n }\n\n return out;\n}\n\nfunction calculateZrXY(el, e, out) {\n // BlackBerry 5, iOS 3 (original iPhone) don't have getBoundingRect.\n if (el.getBoundingClientRect && env.domSupported) {\n var ex = e.clientX;\n var ey = e.clientY;\n\n if (el.nodeName.toUpperCase() === 'CANVAS') {\n // Original approach, which do not support CSS transform.\n // marker can not be locationed in a canvas container\n // (getBoundingClientRect is always 0). We do not support\n // that input a pre-created canvas to zr while using css\n // transform in iOS.\n var box = el.getBoundingClientRect();\n out.zrX = ex - box.left;\n out.zrY = ey - box.top;\n return;\n } else {\n var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\n var transformer = preparePointerTransformer(prepareCoordMarkers(el, saved), saved);\n\n if (transformer) {\n transformer(_calcOut, ex, ey);\n out.zrX = _calcOut[0];\n out.zrY = _calcOut[1];\n return;\n }\n }\n }\n\n out.zrX = out.zrY = 0;\n}\n\nfunction prepareCoordMarkers(el, saved) {\n var markers = saved.markers;\n\n if (markers) {\n return markers;\n }\n\n markers = saved.markers = [];\n var propLR = ['left', 'right'];\n var propTB = ['top', 'bottom'];\n\n for (var i = 0; i < 4; i++) {\n var marker = document.createElement('div');\n var stl = marker.style;\n var idxLR = i % 2;\n var idxTB = (i >> 1) % 2;\n stl.cssText = ['position:absolute', 'visibility: hidden', 'padding: 0', 'margin: 0', 'border-width: 0', 'width:0', 'height:0', // 'width: 5px',\n // 'height: 5px',\n propLR[idxLR] + ':0', propTB[idxTB] + ':0', propLR[1 - idxLR] + ':auto', propTB[1 - idxTB] + ':auto', ''].join('!important;');\n el.appendChild(marker);\n markers.push(marker);\n }\n\n return markers;\n}\n\nfunction preparePointerTransformer(markers, saved) {\n var transformer = saved.transformer;\n var oldSrcCoords = saved.srcCoords;\n var useOld = true;\n var srcCoords = [];\n var destCoords = [];\n\n for (var i = 0; i < 4; i++) {\n var rect = markers[i].getBoundingClientRect();\n var ii = 2 * i;\n var x = rect.left;\n var y = rect.top;\n srcCoords.push(x, y);\n useOld &= oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\n destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\n } // Cache to avoid time consuming of `buildTransformer`.\n\n\n return useOld ? transformer : (saved.srcCoords = srcCoords, saved.transformer = buildTransformer(srcCoords, destCoords));\n}\n/**\n * Find native event compat for legency IE.\n * Should be called at the begining of a native event listener.\n *\n * @param {Event} [e] Mouse event or touch event or pointer event.\n * For lagency IE, we use `window.event` is used.\n * @return {Event} The native event.\n */\n\n\nfunction getNativeEvent(e) {\n return e || window.event;\n}\n/**\n * Normalize the coordinates of the input event.\n *\n * Get the `e.zrX` and `e.zrY`, which are relative to the top-left of\n * the input `el`.\n * Get `e.zrDelta` if using mouse wheel.\n * Get `e.which`, see the comment inside this function.\n *\n * Do not calculate repeatly if `zrX` and `zrY` already exist.\n *\n * Notice: see comments in `clientToLocal`. check the relationship\n * between the result coords and the parameters `el` and `calculate`.\n *\n * @param {HTMLElement} el DOM element.\n * @param {Event} [e] See `getNativeEvent`.\n * @param {boolean} [calculate=false] Whether to force calculate\n * the coordinates but not use ones provided by browser.\n * @return {UIEvent} The normalized native UIEvent.\n */\n\n\nfunction normalizeEvent(el, e, calculate) {\n e = getNativeEvent(e);\n\n if (e.zrX != null) {\n return e;\n }\n\n var eventType = e.type;\n var isTouch = eventType && eventType.indexOf('touch') >= 0;\n\n if (!isTouch) {\n clientToLocal(el, e, e, calculate);\n e.zrDelta = e.wheelDelta ? e.wheelDelta / 120 : -(e.detail || 0) / 3;\n } else {\n var touch = eventType !== 'touchend' ? e.targetTouches[0] : e.changedTouches[0];\n touch && clientToLocal(el, touch, e, calculate);\n } // Add which for click: 1 === left; 2 === middle; 3 === right; otherwise: 0;\n // See jQuery: https://github.com/jquery/jquery/blob/master/src/event.js\n // If e.which has been defined, it may be readonly,\n // see: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which\n\n\n var button = e.button;\n\n if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\n e.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0;\n } // [Caution]: `e.which` from browser is not always reliable. For example,\n // when press left button and `mousemove (pointermove)` in Edge, the `e.which`\n // is 65536 and the `e.button` is -1. But the `mouseup (pointerup)` and\n // `mousedown (pointerdown)` is the same as Chrome does.\n\n\n return e;\n}\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Function} handler\n * @param {Object|boolean} opt If boolean, means `opt.capture`\n * @param {boolean} [opt.capture=false]\n * @param {boolean} [opt.passive=false]\n */\n\n\nfunction addEventListener(el, name, handler, opt) {\n if (isDomLevel2) {\n // Reproduct the console warning:\n // [Violation] Added non-passive event listener to a scroll-blocking event.\n // Consider marking event handler as 'passive' to make the page more responsive.\n // Just set console log level: verbose in chrome dev tool.\n // then the warning log will be printed when addEventListener called.\n // See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n // We have not yet found a neat way to using passive. Because in zrender the dom event\n // listener delegate all of the upper events of element. Some of those events need\n // to prevent default. For example, the feature `preventDefaultMouseMove` of echarts.\n // Before passive can be adopted, these issues should be considered:\n // (1) Whether and how a zrender user specifies an event listener passive. And by default,\n // passive or not.\n // (2) How to tread that some zrender event listener is passive, and some is not. If\n // we use other way but not preventDefault of mousewheel and touchmove, browser\n // compatibility should be handled.\n // var opts = (env.passiveSupported && name === 'mousewheel')\n // ? {passive: true}\n // // By default, the third param of el.addEventListener is `capture: false`.\n // : void 0;\n // el.addEventListener(name, handler /* , opts */);\n el.addEventListener(name, handler, opt);\n } else {\n // For simplicity, do not implement `setCapture` for IE9-.\n el.attachEvent('on' + name, handler);\n }\n}\n/**\n * Parameter are the same as `addEventListener`.\n *\n * Notice that if a listener is registered twice, one with capture and one without,\n * remove each one separately. Removal of a capturing listener does not affect a\n * non-capturing version of the same listener, and vice versa.\n */\n\n\nfunction removeEventListener(el, name, handler, opt) {\n if (isDomLevel2) {\n el.removeEventListener(name, handler, opt);\n } else {\n el.detachEvent('on' + name, handler);\n }\n}\n/**\n * preventDefault and stopPropagation.\n * Notice: do not use this method in zrender. It can only be\n * used by upper applications if necessary.\n *\n * @param {Event} e A mouse or touch event.\n */\n\n\nvar stop = isDomLevel2 ? function (e) {\n e.preventDefault();\n e.stopPropagation();\n e.cancelBubble = true;\n} : function (e) {\n e.returnValue = false;\n e.cancelBubble = true;\n};\n/**\n * This method only works for mouseup and mousedown. The functionality is restricted\n * for fault tolerance, See the `e.which` compatibility above.\n *\n * @param {MouseEvent} e\n * @return {boolean}\n */\n\nfunction isMiddleOrRightButtonOnMouseUpDown(e) {\n return e.which === 2 || e.which === 3;\n}\n/**\n * To be removed.\n * @deprecated\n */\n\n\nfunction notLeftMouse(e) {\n // If e.which is undefined, considered as left mouse event.\n return e.which > 1;\n} // For backward compatibility\n\n\nexports.clientToLocal = clientToLocal;\nexports.getNativeEvent = getNativeEvent;\nexports.normalizeEvent = normalizeEvent;\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.stop = stop;\nexports.isMiddleOrRightButtonOnMouseUpDown = isMiddleOrRightButtonOnMouseUpDown;\nexports.notLeftMouse = notLeftMouse;","var LRU = require(\"../core/LRU\");\n\nvar kCSSColorTable = {\n 'transparent': [0, 0, 0, 0],\n 'aliceblue': [240, 248, 255, 1],\n 'antiquewhite': [250, 235, 215, 1],\n 'aqua': [0, 255, 255, 1],\n 'aquamarine': [127, 255, 212, 1],\n 'azure': [240, 255, 255, 1],\n 'beige': [245, 245, 220, 1],\n 'bisque': [255, 228, 196, 1],\n 'black': [0, 0, 0, 1],\n 'blanchedalmond': [255, 235, 205, 1],\n 'blue': [0, 0, 255, 1],\n 'blueviolet': [138, 43, 226, 1],\n 'brown': [165, 42, 42, 1],\n 'burlywood': [222, 184, 135, 1],\n 'cadetblue': [95, 158, 160, 1],\n 'chartreuse': [127, 255, 0, 1],\n 'chocolate': [210, 105, 30, 1],\n 'coral': [255, 127, 80, 1],\n 'cornflowerblue': [100, 149, 237, 1],\n 'cornsilk': [255, 248, 220, 1],\n 'crimson': [220, 20, 60, 1],\n 'cyan': [0, 255, 255, 1],\n 'darkblue': [0, 0, 139, 1],\n 'darkcyan': [0, 139, 139, 1],\n 'darkgoldenrod': [184, 134, 11, 1],\n 'darkgray': [169, 169, 169, 1],\n 'darkgreen': [0, 100, 0, 1],\n 'darkgrey': [169, 169, 169, 1],\n 'darkkhaki': [189, 183, 107, 1],\n 'darkmagenta': [139, 0, 139, 1],\n 'darkolivegreen': [85, 107, 47, 1],\n 'darkorange': [255, 140, 0, 1],\n 'darkorchid': [153, 50, 204, 1],\n 'darkred': [139, 0, 0, 1],\n 'darksalmon': [233, 150, 122, 1],\n 'darkseagreen': [143, 188, 143, 1],\n 'darkslateblue': [72, 61, 139, 1],\n 'darkslategray': [47, 79, 79, 1],\n 'darkslategrey': [47, 79, 79, 1],\n 'darkturquoise': [0, 206, 209, 1],\n 'darkviolet': [148, 0, 211, 1],\n 'deeppink': [255, 20, 147, 1],\n 'deepskyblue': [0, 191, 255, 1],\n 'dimgray': [105, 105, 105, 1],\n 'dimgrey': [105, 105, 105, 1],\n 'dodgerblue': [30, 144, 255, 1],\n 'firebrick': [178, 34, 34, 1],\n 'floralwhite': [255, 250, 240, 1],\n 'forestgreen': [34, 139, 34, 1],\n 'fuchsia': [255, 0, 255, 1],\n 'gainsboro': [220, 220, 220, 1],\n 'ghostwhite': [248, 248, 255, 1],\n 'gold': [255, 215, 0, 1],\n 'goldenrod': [218, 165, 32, 1],\n 'gray': [128, 128, 128, 1],\n 'green': [0, 128, 0, 1],\n 'greenyellow': [173, 255, 47, 1],\n 'grey': [128, 128, 128, 1],\n 'honeydew': [240, 255, 240, 1],\n 'hotpink': [255, 105, 180, 1],\n 'indianred': [205, 92, 92, 1],\n 'indigo': [75, 0, 130, 1],\n 'ivory': [255, 255, 240, 1],\n 'khaki': [240, 230, 140, 1],\n 'lavender': [230, 230, 250, 1],\n 'lavenderblush': [255, 240, 245, 1],\n 'lawngreen': [124, 252, 0, 1],\n 'lemonchiffon': [255, 250, 205, 1],\n 'lightblue': [173, 216, 230, 1],\n 'lightcoral': [240, 128, 128, 1],\n 'lightcyan': [224, 255, 255, 1],\n 'lightgoldenrodyellow': [250, 250, 210, 1],\n 'lightgray': [211, 211, 211, 1],\n 'lightgreen': [144, 238, 144, 1],\n 'lightgrey': [211, 211, 211, 1],\n 'lightpink': [255, 182, 193, 1],\n 'lightsalmon': [255, 160, 122, 1],\n 'lightseagreen': [32, 178, 170, 1],\n 'lightskyblue': [135, 206, 250, 1],\n 'lightslategray': [119, 136, 153, 1],\n 'lightslategrey': [119, 136, 153, 1],\n 'lightsteelblue': [176, 196, 222, 1],\n 'lightyellow': [255, 255, 224, 1],\n 'lime': [0, 255, 0, 1],\n 'limegreen': [50, 205, 50, 1],\n 'linen': [250, 240, 230, 1],\n 'magenta': [255, 0, 255, 1],\n 'maroon': [128, 0, 0, 1],\n 'mediumaquamarine': [102, 205, 170, 1],\n 'mediumblue': [0, 0, 205, 1],\n 'mediumorchid': [186, 85, 211, 1],\n 'mediumpurple': [147, 112, 219, 1],\n 'mediumseagreen': [60, 179, 113, 1],\n 'mediumslateblue': [123, 104, 238, 1],\n 'mediumspringgreen': [0, 250, 154, 1],\n 'mediumturquoise': [72, 209, 204, 1],\n 'mediumvioletred': [199, 21, 133, 1],\n 'midnightblue': [25, 25, 112, 1],\n 'mintcream': [245, 255, 250, 1],\n 'mistyrose': [255, 228, 225, 1],\n 'moccasin': [255, 228, 181, 1],\n 'navajowhite': [255, 222, 173, 1],\n 'navy': [0, 0, 128, 1],\n 'oldlace': [253, 245, 230, 1],\n 'olive': [128, 128, 0, 1],\n 'olivedrab': [107, 142, 35, 1],\n 'orange': [255, 165, 0, 1],\n 'orangered': [255, 69, 0, 1],\n 'orchid': [218, 112, 214, 1],\n 'palegoldenrod': [238, 232, 170, 1],\n 'palegreen': [152, 251, 152, 1],\n 'paleturquoise': [175, 238, 238, 1],\n 'palevioletred': [219, 112, 147, 1],\n 'papayawhip': [255, 239, 213, 1],\n 'peachpuff': [255, 218, 185, 1],\n 'peru': [205, 133, 63, 1],\n 'pink': [255, 192, 203, 1],\n 'plum': [221, 160, 221, 1],\n 'powderblue': [176, 224, 230, 1],\n 'purple': [128, 0, 128, 1],\n 'red': [255, 0, 0, 1],\n 'rosybrown': [188, 143, 143, 1],\n 'royalblue': [65, 105, 225, 1],\n 'saddlebrown': [139, 69, 19, 1],\n 'salmon': [250, 128, 114, 1],\n 'sandybrown': [244, 164, 96, 1],\n 'seagreen': [46, 139, 87, 1],\n 'seashell': [255, 245, 238, 1],\n 'sienna': [160, 82, 45, 1],\n 'silver': [192, 192, 192, 1],\n 'skyblue': [135, 206, 235, 1],\n 'slateblue': [106, 90, 205, 1],\n 'slategray': [112, 128, 144, 1],\n 'slategrey': [112, 128, 144, 1],\n 'snow': [255, 250, 250, 1],\n 'springgreen': [0, 255, 127, 1],\n 'steelblue': [70, 130, 180, 1],\n 'tan': [210, 180, 140, 1],\n 'teal': [0, 128, 128, 1],\n 'thistle': [216, 191, 216, 1],\n 'tomato': [255, 99, 71, 1],\n 'turquoise': [64, 224, 208, 1],\n 'violet': [238, 130, 238, 1],\n 'wheat': [245, 222, 179, 1],\n 'white': [255, 255, 255, 1],\n 'whitesmoke': [245, 245, 245, 1],\n 'yellow': [255, 255, 0, 1],\n 'yellowgreen': [154, 205, 50, 1]\n};\n\nfunction clampCssByte(i) {\n // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clampCssAngle(i) {\n // Clamp to integer 0 .. 360.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n\n return i < 0 ? 0 : i > 360 ? 360 : i;\n}\n\nfunction clampCssFloat(f) {\n // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parseCssInt(str) {\n // int or percentage.\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssByte(parseFloat(str) / 100 * 255);\n }\n\n return clampCssByte(parseInt(str, 10));\n}\n\nfunction parseCssFloat(str) {\n // float or percentage.\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssFloat(parseFloat(str) / 100);\n }\n\n return clampCssFloat(parseFloat(str));\n}\n\nfunction cssHueToRgb(m1, m2, h) {\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n\n if (h * 6 < 1) {\n return m1 + (m2 - m1) * h * 6;\n }\n\n if (h * 2 < 1) {\n return m2;\n }\n\n if (h * 3 < 2) {\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n }\n\n return m1;\n}\n\nfunction lerpNumber(a, b, p) {\n return a + (b - a) * p;\n}\n\nfunction setRgba(out, r, g, b, a) {\n out[0] = r;\n out[1] = g;\n out[2] = b;\n out[3] = a;\n return out;\n}\n\nfunction copyRgba(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n\nvar colorCache = new LRU(20);\nvar lastRemovedArr = null;\n\nfunction putToCache(colorStr, rgbaArr) {\n // Reuse removed array\n if (lastRemovedArr) {\n copyRgba(lastRemovedArr, rgbaArr);\n }\n\n lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || rgbaArr.slice());\n}\n/**\n * @param {string} colorStr\n * @param {Array.} out\n * @return {Array.}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction parse(colorStr, rgbaArr) {\n if (!colorStr) {\n return;\n }\n\n rgbaArr = rgbaArr || [];\n var cached = colorCache.get(colorStr);\n\n if (cached) {\n return copyRgba(rgbaArr, cached);\n } // colorStr may be not string\n\n\n colorStr = colorStr + ''; // Remove all whitespace, not compliant, but should just be more accepting.\n\n var str = colorStr.replace(/ /g, '').toLowerCase(); // Color keywords (and transparent) lookup.\n\n if (str in kCSSColorTable) {\n copyRgba(rgbaArr, kCSSColorTable[str]);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n } // #abc and #abc123 syntax.\n\n\n if (str.charAt(0) === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n\n if (!(iv >= 0 && iv <= 0xfff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return; // Covers NaN.\n }\n\n setRgba(rgbaArr, (iv & 0xf00) >> 4 | (iv & 0xf00) >> 8, iv & 0xf0 | (iv & 0xf0) >> 4, iv & 0xf | (iv & 0xf) << 4, 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n\n if (!(iv >= 0 && iv <= 0xffffff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return; // Covers NaN.\n }\n\n setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n\n return;\n }\n\n var op = str.indexOf('(');\n var ep = str.indexOf(')');\n\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op + 1, ep - (op + 1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n alpha = parseCssFloat(params.pop());\n // jshint ignore:line\n // Fall through.\n\n case 'rgb':\n if (params.length !== 3) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), alpha);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n\n case 'hsla':\n if (params.length !== 4) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n params[3] = parseCssFloat(params[3]);\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n\n case 'hsl':\n if (params.length !== 3) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n\n default:\n return;\n }\n }\n\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n}\n/**\n * @param {Array.} hsla\n * @param {Array.} rgba\n * @return {Array.} rgba\n */\n\n\nfunction hsla2rgba(hsla, rgba) {\n var h = (parseFloat(hsla[0]) % 360 + 360) % 360 / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n\n var s = parseCssFloat(hsla[1]);\n var l = parseCssFloat(hsla[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n rgba = rgba || [];\n setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\n\n if (hsla.length === 4) {\n rgba[3] = hsla[3];\n }\n\n return rgba;\n}\n/**\n * @param {Array.} rgba\n * @return {Array.} hsla\n */\n\n\nfunction rgba2hsla(rgba) {\n if (!rgba) {\n return;\n } // RGB from 0 to 255\n\n\n var R = rgba[0] / 255;\n var G = rgba[1] / 255;\n var B = rgba[2] / 255;\n var vMin = Math.min(R, G, B); // Min. value of RGB\n\n var vMax = Math.max(R, G, B); // Max. value of RGB\n\n var delta = vMax - vMin; // Delta RGB value\n\n var L = (vMax + vMin) / 2;\n var H;\n var S; // HSL results from 0 to 1\n\n if (delta === 0) {\n H = 0;\n S = 0;\n } else {\n if (L < 0.5) {\n S = delta / (vMax + vMin);\n } else {\n S = delta / (2 - vMax - vMin);\n }\n\n var deltaR = ((vMax - R) / 6 + delta / 2) / delta;\n var deltaG = ((vMax - G) / 6 + delta / 2) / delta;\n var deltaB = ((vMax - B) / 6 + delta / 2) / delta;\n\n if (R === vMax) {\n H = deltaB - deltaG;\n } else if (G === vMax) {\n H = 1 / 3 + deltaR - deltaB;\n } else if (B === vMax) {\n H = 2 / 3 + deltaG - deltaR;\n }\n\n if (H < 0) {\n H += 1;\n }\n\n if (H > 1) {\n H -= 1;\n }\n }\n\n var hsla = [H * 360, S, L];\n\n if (rgba[3] != null) {\n hsla.push(rgba[3]);\n }\n\n return hsla;\n}\n/**\n * @param {string} color\n * @param {number} level\n * @return {string}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction lift(color, level) {\n var colorArr = parse(color);\n\n if (colorArr) {\n for (var i = 0; i < 3; i++) {\n if (level < 0) {\n colorArr[i] = colorArr[i] * (1 - level) | 0;\n } else {\n colorArr[i] = (255 - colorArr[i]) * level + colorArr[i] | 0;\n }\n\n if (colorArr[i] > 255) {\n colorArr[i] = 255;\n } else if (color[i] < 0) {\n colorArr[i] = 0;\n }\n }\n\n return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\n }\n}\n/**\n * @param {string} color\n * @return {string}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction toHex(color) {\n var colorArr = parse(color);\n\n if (colorArr) {\n return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + +colorArr[2]).toString(16).slice(1);\n }\n}\n/**\n * Map value to color. Faster than lerp methods because color is represented by rgba array.\n * @param {number} normalizedValue A float between 0 and 1.\n * @param {Array.>} colors List of rgba color array\n * @param {Array.} [out] Mapped gba color array\n * @return {Array.} will be null/undefined if input illegal.\n */\n\n\nfunction fastLerp(normalizedValue, colors, out) {\n if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n\n out = out || [];\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = colors[leftIndex];\n var rightColor = colors[rightIndex];\n var dv = value - leftIndex;\n out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));\n out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));\n out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));\n out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));\n return out;\n}\n/**\n * @deprecated\n */\n\n\nvar fastMapToColor = fastLerp;\n/**\n * @param {number} normalizedValue A float between 0 and 1.\n * @param {Array.} colors Color list.\n * @param {boolean=} fullOutput Default false.\n * @return {(string|Object)} Result color. If fullOutput,\n * return {color: ..., leftIndex: ..., rightIndex: ..., value: ...},\n * @memberOf module:zrender/util/color\n */\n\nfunction lerp(normalizedValue, colors, fullOutput) {\n if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = parse(colors[leftIndex]);\n var rightColor = parse(colors[rightIndex]);\n var dv = value - leftIndex;\n var color = stringify([clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)), clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)), clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)), clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))], 'rgba');\n return fullOutput ? {\n color: color,\n leftIndex: leftIndex,\n rightIndex: rightIndex,\n value: value\n } : color;\n}\n/**\n * @deprecated\n */\n\n\nvar mapToColor = lerp;\n/**\n * @param {string} color\n * @param {number=} h 0 ~ 360, ignore when null.\n * @param {number=} s 0 ~ 1, ignore when null.\n * @param {number=} l 0 ~ 1, ignore when null.\n * @return {string} Color string in rgba format.\n * @memberOf module:zrender/util/color\n */\n\nfunction modifyHSL(color, h, s, l) {\n color = parse(color);\n\n if (color) {\n color = rgba2hsla(color);\n h != null && (color[0] = clampCssAngle(h));\n s != null && (color[1] = parseCssFloat(s));\n l != null && (color[2] = parseCssFloat(l));\n return stringify(hsla2rgba(color), 'rgba');\n }\n}\n/**\n * @param {string} color\n * @param {number=} alpha 0 ~ 1\n * @return {string} Color string in rgba format.\n * @memberOf module:zrender/util/color\n */\n\n\nfunction modifyAlpha(color, alpha) {\n color = parse(color);\n\n if (color && alpha != null) {\n color[3] = clampCssFloat(alpha);\n return stringify(color, 'rgba');\n }\n}\n/**\n * @param {Array.} arrColor like [12,33,44,0.4]\n * @param {string} type 'rgba', 'hsva', ...\n * @return {string} Result color. (If input illegal, return undefined).\n */\n\n\nfunction stringify(arrColor, type) {\n if (!arrColor || !arrColor.length) {\n return;\n }\n\n var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\n\n if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\n colorStr += ',' + arrColor[3];\n }\n\n return type + '(' + colorStr + ')';\n}\n\nexports.parse = parse;\nexports.lift = lift;\nexports.toHex = toHex;\nexports.fastLerp = fastLerp;\nexports.fastMapToColor = fastMapToColor;\nexports.lerp = lerp;\nexports.mapToColor = mapToColor;\nexports.modifyHSL = modifyHSL;\nexports.modifyAlpha = modifyAlpha;\nexports.stringify = stringify;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar clazzUtil = require(\"../util/clazz\");\n\nvar modelUtil = require(\"../util/model\");\n\nvar graphicUtil = require(\"../util/graphic\");\n\nvar _task = require(\"../stream/task\");\n\nvar createTask = _task.createTask;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = modelUtil.makeInner();\nvar renderPlanner = createRenderPlanner();\n\nfunction Chart() {\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n this.group = new Group();\n /**\n * @type {string}\n * @readOnly\n */\n\n this.uid = componentUtil.getUID('viewChart');\n this.renderTask = createTask({\n plan: renderTaskPlan,\n reset: renderTaskReset\n });\n this.renderTask.context = {\n view: this\n };\n}\n\nChart.prototype = {\n type: 'chart',\n\n /**\n * Init the chart.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n init: function (ecModel, api) {},\n\n /**\n * Render the chart.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n render: function (seriesModel, ecModel, api, payload) {},\n\n /**\n * Highlight series or specified data item.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n highlight: function (seriesModel, ecModel, api, payload) {\n toggleHighlight(seriesModel.getData(), payload, 'emphasis');\n },\n\n /**\n * Downplay series or specified data item.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n downplay: function (seriesModel, ecModel, api, payload) {\n toggleHighlight(seriesModel.getData(), payload, 'normal');\n },\n\n /**\n * Remove self.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n remove: function (ecModel, api) {\n this.group.removeAll();\n },\n\n /**\n * Dispose self.\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n dispose: function () {},\n\n /**\n * Rendering preparation in progressive mode.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n incrementalPrepareRender: null,\n\n /**\n * Render in progressive mode.\n * @param {Object} params See taskParams in `stream/task.js`\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n incrementalRender: null,\n\n /**\n * Update transform directly.\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n * @return {Object} {update: true}\n */\n updateTransform: null,\n\n /**\n * The view contains the given point.\n * @interface\n * @param {Array.} point\n * @return {boolean}\n */\n // containPoint: function () {}\n\n /**\n * @param {string} eventType\n * @param {Object} query\n * @param {module:zrender/Element} targetEl\n * @param {Object} packedEvent\n * @return {boolen} Pass only when return `true`.\n */\n filterForExposedEvent: null\n};\nvar chartProto = Chart.prototype;\n\nchartProto.updateView = chartProto.updateLayout = chartProto.updateVisual = function (seriesModel, ecModel, api, payload) {\n this.render(seriesModel, ecModel, api, payload);\n};\n/**\n * Set state of single element\n * @param {module:zrender/Element} el\n * @param {string} state 'normal'|'emphasis'\n * @param {number} highlightDigit\n */\n\n\nfunction elSetState(el, state, highlightDigit) {\n if (el) {\n el.trigger(state, highlightDigit);\n\n if (el.isGroup // Simple optimize.\n && !graphicUtil.isHighDownDispatcher(el)) {\n for (var i = 0, len = el.childCount(); i < len; i++) {\n elSetState(el.childAt(i), state, highlightDigit);\n }\n }\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload\n * @param {string} state 'normal'|'emphasis'\n */\n\n\nfunction toggleHighlight(data, payload, state) {\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n var highlightDigit = payload && payload.highlightKey != null ? graphicUtil.getHighlightDigit(payload.highlightKey) : null;\n\n if (dataIndex != null) {\n each(modelUtil.normalizeToArray(dataIndex), function (dataIdx) {\n elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);\n });\n } else {\n data.eachItemGraphicEl(function (el) {\n elSetState(el, state, highlightDigit);\n });\n }\n} // Enable Chart.extend.\n\n\nclazzUtil.enableClassExtend(Chart, ['dispose']); // Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Chart, {\n registerWhenExtend: true\n});\n\nChart.markUpdateMethod = function (payload, methodName) {\n inner(payload).updateMethod = methodName;\n};\n\nfunction renderTaskPlan(context) {\n return renderPlanner(context.model);\n}\n\nfunction renderTaskReset(context) {\n var seriesModel = context.model;\n var ecModel = context.ecModel;\n var api = context.api;\n var payload = context.payload; // ???! remove updateView updateVisual\n\n var progressiveRender = seriesModel.pipelineContext.progressiveRender;\n var view = context.view;\n var updateMethod = payload && inner(payload).updateMethod;\n var methodName = progressiveRender ? 'incrementalPrepareRender' : updateMethod && view[updateMethod] ? updateMethod // `appendData` is also supported when data amount\n // is less than progressive threshold.\n : 'render';\n\n if (methodName !== 'render') {\n view[methodName](seriesModel, ecModel, api, payload);\n }\n\n return progressMethodMap[methodName];\n}\n\nvar progressMethodMap = {\n incrementalPrepareRender: {\n progress: function (params, context) {\n context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);\n }\n },\n render: {\n // Put view.render in `progress` to support appendData. But in this case\n // view.render should not be called in reset, otherwise it will be called\n // twise. Use `forceFirstProgress` to make sure that view.render is called\n // in any cases.\n forceFirstProgress: true,\n progress: function (params, context) {\n context.view.render(context.model, context.ecModel, context.api, context.payload);\n }\n }\n};\nvar _default = Chart;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar isString = _util.isString;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Note that it is too complicated to support 3d stack by value\n * (have to create two-dimension inverted index), so in 3d case\n * we just support that stacked by index.\n *\n * @param {module:echarts/model/Series} seriesModel\n * @param {Array.} dimensionInfoList The same as the input of .\n * The input dimensionInfoList will be modified.\n * @param {Object} [opt]\n * @param {boolean} [opt.stackedCoordDimension=''] Specify a coord dimension if needed.\n * @param {boolean} [opt.byIndex=false]\n * @return {Object} calculationInfo\n * {\n * stackedDimension: string\n * stackedByDimension: string\n * isStackedByIndex: boolean\n * stackedOverDimension: string\n * stackResultDimension: string\n * }\n */\nfunction enableDataStack(seriesModel, dimensionInfoList, opt) {\n opt = opt || {};\n var byIndex = opt.byIndex;\n var stackedCoordDimension = opt.stackedCoordDimension; // Compatibal: when `stack` is set as '', do not stack.\n\n var mayStack = !!(seriesModel && seriesModel.get('stack'));\n var stackedByDimInfo;\n var stackedDimInfo;\n var stackResultDimension;\n var stackedOverDimension;\n each(dimensionInfoList, function (dimensionInfo, index) {\n if (isString(dimensionInfo)) {\n dimensionInfoList[index] = dimensionInfo = {\n name: dimensionInfo\n };\n }\n\n if (mayStack && !dimensionInfo.isExtraCoord) {\n // Find the first ordinal dimension as the stackedByDimInfo.\n if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {\n stackedByDimInfo = dimensionInfo;\n } // Find the first stackable dimension as the stackedDimInfo.\n\n\n if (!stackedDimInfo && dimensionInfo.type !== 'ordinal' && dimensionInfo.type !== 'time' && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {\n stackedDimInfo = dimensionInfo;\n }\n }\n });\n\n if (stackedDimInfo && !byIndex && !stackedByDimInfo) {\n // Compatible with previous design, value axis (time axis) only stack by index.\n // It may make sense if the user provides elaborately constructed data.\n byIndex = true;\n } // Add stack dimension, they can be both calculated by coordinate system in `unionExtent`.\n // That put stack logic in List is for using conveniently in echarts extensions, but it\n // might not be a good way.\n\n\n if (stackedDimInfo) {\n // Use a weird name that not duplicated with other names.\n stackResultDimension = '__\\0ecstackresult';\n stackedOverDimension = '__\\0ecstackedover'; // Create inverted index to fast query index by value.\n\n if (stackedByDimInfo) {\n stackedByDimInfo.createInvertedIndices = true;\n }\n\n var stackedDimCoordDim = stackedDimInfo.coordDim;\n var stackedDimType = stackedDimInfo.type;\n var stackedDimCoordIndex = 0;\n each(dimensionInfoList, function (dimensionInfo) {\n if (dimensionInfo.coordDim === stackedDimCoordDim) {\n stackedDimCoordIndex++;\n }\n });\n dimensionInfoList.push({\n name: stackResultDimension,\n coordDim: stackedDimCoordDim,\n coordDimIndex: stackedDimCoordIndex,\n type: stackedDimType,\n isExtraCoord: true,\n isCalculationCoord: true\n });\n stackedDimCoordIndex++;\n dimensionInfoList.push({\n name: stackedOverDimension,\n // This dimension contains stack base (generally, 0), so do not set it as\n // `stackedDimCoordDim` to avoid extent calculation, consider log scale.\n coordDim: stackedOverDimension,\n coordDimIndex: stackedDimCoordIndex,\n type: stackedDimType,\n isExtraCoord: true,\n isCalculationCoord: true\n });\n }\n\n return {\n stackedDimension: stackedDimInfo && stackedDimInfo.name,\n stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,\n isStackedByIndex: byIndex,\n stackedOverDimension: stackedOverDimension,\n stackResultDimension: stackResultDimension\n };\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {string} stackedDim\n */\n\n\nfunction isDimensionStacked(data, stackedDim\n/*, stackedByDim*/\n) {\n // Each single series only maps to one pair of axis. So we do not need to\n // check stackByDim, whatever stacked by a dimension or stacked by index.\n return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension'); // && (\n // stackedByDim != null\n // ? stackedByDim === data.getCalculationInfo('stackedByDimension')\n // : data.getCalculationInfo('isStackedByIndex')\n // );\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {string} targetDim\n * @param {string} [stackedByDim] If not input this parameter, check whether\n * stacked by index.\n * @return {string} dimension\n */\n\n\nfunction getStackedDimension(data, targetDim) {\n return isDimensionStacked(data, targetDim) ? data.getCalculationInfo('stackResultDimension') : targetDim;\n}\n\nexports.enableDataStack = enableDataStack;\nexports.isDimensionStacked = isDimensionStacked;\nexports.getStackedDimension = getStackedDimension;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar TYPE_DELIMITER = '.';\nvar IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\n/**\n * Notice, parseClassType('') should returns {main: '', sub: ''}\n * @public\n */\n\nfunction parseClassType(componentType) {\n var ret = {\n main: '',\n sub: ''\n };\n\n if (componentType) {\n componentType = componentType.split(TYPE_DELIMITER);\n ret.main = componentType[0] || '';\n ret.sub = componentType[1] || '';\n }\n\n return ret;\n}\n/**\n * @public\n */\n\n\nfunction checkClassType(componentType) {\n zrUtil.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\n}\n/**\n * @public\n */\n\n\nfunction enableClassExtend(RootClass, mandatoryMethods) {\n RootClass.$constructor = RootClass;\n\n RootClass.extend = function (proto) {\n var superClass = this;\n\n var ExtendedClass = function () {\n if (!proto.$constructor) {\n superClass.apply(this, arguments);\n } else {\n proto.$constructor.apply(this, arguments);\n }\n };\n\n zrUtil.extend(ExtendedClass.prototype, proto);\n ExtendedClass.extend = this.extend;\n ExtendedClass.superCall = superCall;\n ExtendedClass.superApply = superApply;\n zrUtil.inherits(ExtendedClass, this);\n ExtendedClass.superClass = superClass;\n return ExtendedClass;\n };\n}\n\nvar classBase = 0;\n/**\n * Can not use instanceof, consider different scope by\n * cross domain or es module import in ec extensions.\n * Mount a method \"isInstance()\" to Clz.\n */\n\nfunction enableClassCheck(Clz) {\n var classAttr = ['__\\0is_clz', classBase++, Math.random().toFixed(3)].join('_');\n Clz.prototype[classAttr] = true;\n\n Clz.isInstance = function (obj) {\n return !!(obj && obj[classAttr]);\n };\n} // superCall should have class info, which can not be fetch from 'this'.\n// Consider this case:\n// class A has method f,\n// class B inherits class A, overrides method f, f call superApply('f'),\n// class C inherits class B, do not overrides method f,\n// then when method of class C is called, dead loop occured.\n\n\nfunction superCall(context, methodName) {\n var args = zrUtil.slice(arguments, 2);\n return this.superClass.prototype[methodName].apply(context, args);\n}\n\nfunction superApply(context, methodName, args) {\n return this.superClass.prototype[methodName].apply(context, args);\n}\n/**\n * @param {Object} entity\n * @param {Object} options\n * @param {boolean} [options.registerWhenExtend]\n * @public\n */\n\n\nfunction enableClassManagement(entity, options) {\n options = options || {};\n /**\n * Component model classes\n * key: componentType,\n * value:\n * componentClass, when componentType is 'xxx'\n * or Object., when componentType is 'xxx.yy'\n * @type {Object}\n */\n\n var storage = {};\n\n entity.registerClass = function (Clazz, componentType) {\n if (componentType) {\n checkClassType(componentType);\n componentType = parseClassType(componentType);\n\n if (!componentType.sub) {\n storage[componentType.main] = Clazz;\n } else if (componentType.sub !== IS_CONTAINER) {\n var container = makeContainer(componentType);\n container[componentType.sub] = Clazz;\n }\n }\n\n return Clazz;\n };\n\n entity.getClass = function (componentMainType, subType, throwWhenNotFound) {\n var Clazz = storage[componentMainType];\n\n if (Clazz && Clazz[IS_CONTAINER]) {\n Clazz = subType ? Clazz[subType] : null;\n }\n\n if (throwWhenNotFound && !Clazz) {\n throw new Error(!subType ? componentMainType + '.' + 'type should be specified.' : 'Component ' + componentMainType + '.' + (subType || '') + ' not exists. Load it first.');\n }\n\n return Clazz;\n };\n\n entity.getClassesByMainType = function (componentType) {\n componentType = parseClassType(componentType);\n var result = [];\n var obj = storage[componentType.main];\n\n if (obj && obj[IS_CONTAINER]) {\n zrUtil.each(obj, function (o, type) {\n type !== IS_CONTAINER && result.push(o);\n });\n } else {\n result.push(obj);\n }\n\n return result;\n };\n\n entity.hasClass = function (componentType) {\n // Just consider componentType.main.\n componentType = parseClassType(componentType);\n return !!storage[componentType.main];\n };\n /**\n * @return {Array.} Like ['aa', 'bb'], but can not be ['aa.xx']\n */\n\n\n entity.getAllClassMainTypes = function () {\n var types = [];\n zrUtil.each(storage, function (obj, type) {\n types.push(type);\n });\n return types;\n };\n /**\n * If a main type is container and has sub types\n * @param {string} mainType\n * @return {boolean}\n */\n\n\n entity.hasSubTypes = function (componentType) {\n componentType = parseClassType(componentType);\n var obj = storage[componentType.main];\n return obj && obj[IS_CONTAINER];\n };\n\n entity.parseClassType = parseClassType;\n\n function makeContainer(componentType) {\n var container = storage[componentType.main];\n\n if (!container || !container[IS_CONTAINER]) {\n container = storage[componentType.main] = {};\n container[IS_CONTAINER] = true;\n }\n\n return container;\n }\n\n if (options.registerWhenExtend) {\n var originalExtend = entity.extend;\n\n if (originalExtend) {\n entity.extend = function (proto) {\n var ExtendedClass = originalExtend.call(this, proto);\n return entity.registerClass(ExtendedClass, proto.type);\n };\n }\n }\n\n return entity;\n}\n/**\n * @param {string|Array.} properties\n */\n\n\nfunction setReadOnly(obj, properties) {// FIXME It seems broken in IE8 simulation of IE11\n // if (!zrUtil.isArray(properties)) {\n // properties = properties != null ? [properties] : [];\n // }\n // zrUtil.each(properties, function (prop) {\n // var value = obj[prop];\n // Object.defineProperty\n // && Object.defineProperty(obj, prop, {\n // value: value, writable: false\n // });\n // zrUtil.isArray(obj[prop])\n // && Object.freeze\n // && Object.freeze(obj[prop]);\n // });\n}\n\nexports.parseClassType = parseClassType;\nexports.enableClassExtend = enableClassExtend;\nexports.enableClassCheck = enableClassCheck;\nexports.enableClassManagement = enableClassManagement;\nexports.setReadOnly = setReadOnly;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\nvar getDataItemValue = _model.getDataItemValue;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar isString = _util.isString;\nvar isObject = _util.isObject;\nvar isTypedArray = _util.isTypedArray;\nvar isArrayLike = _util.isArrayLike;\nvar extend = _util.extend;\nvar assert = _util.assert;\n\nvar Source = require(\"../Source\");\n\nvar _sourceType = require(\"./sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SERIES_LAYOUT_BY_ROW = _sourceType.SERIES_LAYOUT_BY_ROW;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// The result of `guessOrdinal`.\nvar BE_ORDINAL = {\n Must: 1,\n // Encounter string but not '-' and not number-like.\n Might: 2,\n // Encounter string but number-like.\n Not: 3 // Other cases\n\n};\nvar inner = makeInner();\n/**\n * @see {module:echarts/data/Source}\n * @param {module:echarts/component/dataset/DatasetModel} datasetModel\n * @return {string} sourceFormat\n */\n\nfunction detectSourceFormat(datasetModel) {\n var data = datasetModel.option.source;\n var sourceFormat = SOURCE_FORMAT_UNKNOWN;\n\n if (isTypedArray(data)) {\n sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;\n } else if (isArray(data)) {\n // FIXME Whether tolerate null in top level array?\n if (data.length === 0) {\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n }\n\n for (var i = 0, len = data.length; i < len; i++) {\n var item = data[i];\n\n if (item == null) {\n continue;\n } else if (isArray(item)) {\n sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n break;\n } else if (isObject(item)) {\n sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;\n break;\n }\n }\n } else if (isObject(data)) {\n for (var key in data) {\n if (data.hasOwnProperty(key) && isArrayLike(data[key])) {\n sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;\n break;\n }\n }\n } else if (data != null) {\n throw new Error('Invalid data');\n }\n\n inner(datasetModel).sourceFormat = sourceFormat;\n}\n/**\n * [Scenarios]:\n * (1) Provide source data directly:\n * series: {\n * encode: {...},\n * dimensions: [...]\n * seriesLayoutBy: 'row',\n * data: [[...]]\n * }\n * (2) Refer to datasetModel.\n * series: [{\n * encode: {...}\n * // Ignore datasetIndex means `datasetIndex: 0`\n * // and the dimensions defination in dataset is used\n * }, {\n * encode: {...},\n * seriesLayoutBy: 'column',\n * datasetIndex: 1\n * }]\n *\n * Get data from series itself or datset.\n * @return {module:echarts/data/Source} source\n */\n\n\nfunction getSource(seriesModel) {\n return inner(seriesModel).source;\n}\n/**\n * MUST be called before mergeOption of all series.\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction resetSourceDefaulter(ecModel) {\n // `datasetMap` is used to make default encode.\n inner(ecModel).datasetMap = createHashMap();\n}\n/**\n * [Caution]:\n * MUST be called after series option merged and\n * before \"series.getInitailData()\" called.\n *\n * [The rule of making default encode]:\n * Category axis (if exists) alway map to the first dimension.\n * Each other axis occupies a subsequent dimension.\n *\n * [Why make default encode]:\n * Simplify the typing of encode in option, avoiding the case like that:\n * series: [{encode: {x: 0, y: 1}}, {encode: {x: 0, y: 2}}, {encode: {x: 0, y: 3}}],\n * where the \"y\" have to be manually typed as \"1, 2, 3, ...\".\n *\n * @param {module:echarts/model/Series} seriesModel\n */\n\n\nfunction prepareSource(seriesModel) {\n var seriesOption = seriesModel.option;\n var data = seriesOption.data;\n var sourceFormat = isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;\n var fromDataset = false;\n var seriesLayoutBy = seriesOption.seriesLayoutBy;\n var sourceHeader = seriesOption.sourceHeader;\n var dimensionsDefine = seriesOption.dimensions;\n var datasetModel = getDatasetModel(seriesModel);\n\n if (datasetModel) {\n var datasetOption = datasetModel.option;\n data = datasetOption.source;\n sourceFormat = inner(datasetModel).sourceFormat;\n fromDataset = true; // These settings from series has higher priority.\n\n seriesLayoutBy = seriesLayoutBy || datasetOption.seriesLayoutBy;\n sourceHeader == null && (sourceHeader = datasetOption.sourceHeader);\n dimensionsDefine = dimensionsDefine || datasetOption.dimensions;\n }\n\n var completeResult = completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine);\n inner(seriesModel).source = new Source({\n data: data,\n fromDataset: fromDataset,\n seriesLayoutBy: seriesLayoutBy,\n sourceFormat: sourceFormat,\n dimensionsDefine: completeResult.dimensionsDefine,\n startIndex: completeResult.startIndex,\n dimensionsDetectCount: completeResult.dimensionsDetectCount,\n // Note: dataset option does not have `encode`.\n encodeDefine: seriesOption.encode\n });\n} // return {startIndex, dimensionsDefine, dimensionsCount}\n\n\nfunction completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {\n if (!data) {\n return {\n dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine)\n };\n }\n\n var dimensionsDetectCount;\n var startIndex;\n\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n // Rule: Most of the first line are string: it is header.\n // Caution: consider a line with 5 string and 1 number,\n // it still can not be sure it is a head, because the\n // 5 string may be 5 values of category columns.\n if (sourceHeader === 'auto' || sourceHeader == null) {\n arrayRowsTravelFirst(function (val) {\n // '-' is regarded as null/undefined.\n if (val != null && val !== '-') {\n if (isString(val)) {\n startIndex == null && (startIndex = 1);\n } else {\n startIndex = 0;\n }\n } // 10 is an experience number, avoid long loop.\n\n }, seriesLayoutBy, data, 10);\n } else {\n startIndex = sourceHeader ? 1 : 0;\n }\n\n if (!dimensionsDefine && startIndex === 1) {\n dimensionsDefine = [];\n arrayRowsTravelFirst(function (val, index) {\n dimensionsDefine[index] = val != null ? val : '';\n }, seriesLayoutBy, data);\n }\n\n dimensionsDetectCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW ? data.length : data[0] ? data[0].length : null;\n } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n if (!dimensionsDefine) {\n dimensionsDefine = objectRowsCollectDimensions(data);\n }\n } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n if (!dimensionsDefine) {\n dimensionsDefine = [];\n each(data, function (colArr, key) {\n dimensionsDefine.push(key);\n });\n }\n } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var value0 = getDataItemValue(data[0]);\n dimensionsDetectCount = isArray(value0) && value0.length || 1;\n } else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {}\n\n return {\n startIndex: startIndex,\n dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine),\n dimensionsDetectCount: dimensionsDetectCount\n };\n} // Consider dimensions defined like ['A', 'price', 'B', 'price', 'C', 'price'],\n// which is reasonable. But dimension name is duplicated.\n// Returns undefined or an array contains only object without null/undefiend or string.\n\n\nfunction normalizeDimensionsDefine(dimensionsDefine) {\n if (!dimensionsDefine) {\n // The meaning of null/undefined is different from empty array.\n return;\n }\n\n var nameMap = createHashMap();\n return map(dimensionsDefine, function (item, index) {\n item = extend({}, isObject(item) ? item : {\n name: item\n }); // User can set null in dimensions.\n // We dont auto specify name, othewise a given name may\n // cause it be refered unexpectedly.\n\n if (item.name == null) {\n return item;\n } // Also consider number form like 2012.\n\n\n item.name += ''; // User may also specify displayName.\n // displayName will always exists except user not\n // specified or dim name is not specified or detected.\n // (A auto generated dim name will not be used as\n // displayName).\n\n if (item.displayName == null) {\n item.displayName = item.name;\n }\n\n var exist = nameMap.get(item.name);\n\n if (!exist) {\n nameMap.set(item.name, {\n count: 1\n });\n } else {\n item.name += '-' + exist.count++;\n }\n\n return item;\n });\n}\n\nfunction arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {\n maxLoop == null && (maxLoop = Infinity);\n\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n cb(data[i] ? data[i][0] : null, i);\n }\n } else {\n var value0 = data[0] || [];\n\n for (var i = 0; i < value0.length && i < maxLoop; i++) {\n cb(value0[i], i);\n }\n }\n}\n\nfunction objectRowsCollectDimensions(data) {\n var firstIndex = 0;\n var obj;\n\n while (firstIndex < data.length && !(obj = data[firstIndex++])) {} // jshint ignore: line\n\n\n if (obj) {\n var dimensions = [];\n each(obj, function (value, key) {\n dimensions.push(key);\n });\n return dimensions;\n }\n}\n/**\n * [The strategy of the arrengment of data dimensions for dataset]:\n * \"value way\": all axes are non-category axes. So series one by one take\n * several (the number is coordSysDims.length) dimensions from dataset.\n * The result of data arrengment of data dimensions like:\n * | ser0_x | ser0_y | ser1_x | ser1_y | ser2_x | ser2_y |\n * \"category way\": at least one axis is category axis. So the the first data\n * dimension is always mapped to the first category axis and shared by\n * all of the series. The other data dimensions are taken by series like\n * \"value way\" does.\n * The result of data arrengment of data dimensions like:\n * | ser_shared_x | ser0_y | ser1_y | ser2_y |\n *\n * @param {Array.} coordDimensions [{name: , type: , dimsDef: }, ...]\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {\n var encode = {};\n var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n if (!datasetModel || !coordDimensions) {\n return encode;\n }\n\n var encodeItemName = [];\n var encodeSeriesName = [];\n var ecModel = seriesModel.ecModel;\n var datasetMap = inner(ecModel).datasetMap;\n var key = datasetModel.uid + '_' + source.seriesLayoutBy;\n var baseCategoryDimIndex;\n var categoryWayValueDimStart;\n coordDimensions = coordDimensions.slice();\n each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n !isObject(coordDimInfo) && (coordDimensions[coordDimIdx] = {\n name: coordDimInfo\n });\n\n if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {\n baseCategoryDimIndex = coordDimIdx;\n categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimensions[coordDimIdx]);\n }\n\n encode[coordDimInfo.name] = [];\n });\n var datasetRecord = datasetMap.get(key) || datasetMap.set(key, {\n categoryWayDim: categoryWayValueDimStart,\n valueWayDim: 0\n }); // TODO\n // Auto detect first time axis and do arrangement.\n\n each(coordDimensions, function (coordDimInfo, coordDimIdx) {\n var coordDimName = coordDimInfo.name;\n var count = getDataDimCountOnCoordDim(coordDimInfo); // In value way.\n\n if (baseCategoryDimIndex == null) {\n var start = datasetRecord.valueWayDim;\n pushDim(encode[coordDimName], start, count);\n pushDim(encodeSeriesName, start, count);\n datasetRecord.valueWayDim += count; // ??? TODO give a better default series name rule?\n // especially when encode x y specified.\n // consider: when mutiple series share one dimension\n // category axis, series name should better use\n // the other dimsion name. On the other hand, use\n // both dimensions name.\n } // In category way, the first category axis.\n else if (baseCategoryDimIndex === coordDimIdx) {\n pushDim(encode[coordDimName], 0, count);\n pushDim(encodeItemName, 0, count);\n } // In category way, the other axis.\n else {\n var start = datasetRecord.categoryWayDim;\n pushDim(encode[coordDimName], start, count);\n pushDim(encodeSeriesName, start, count);\n datasetRecord.categoryWayDim += count;\n }\n });\n\n function pushDim(dimIdxArr, idxFrom, idxCount) {\n for (var i = 0; i < idxCount; i++) {\n dimIdxArr.push(idxFrom + i);\n }\n }\n\n function getDataDimCountOnCoordDim(coordDimInfo) {\n var dimsDef = coordDimInfo.dimsDef;\n return dimsDef ? dimsDef.length : 1;\n }\n\n encodeItemName.length && (encode.itemName = encodeItemName);\n encodeSeriesName.length && (encode.seriesName = encodeSeriesName);\n return encode;\n}\n/**\n * Work for data like [{name: ..., value: ...}, ...].\n *\n * @param {module:model/Series} seriesModel\n * @param {module:data/Source} source\n * @return {Object} encode Never be `null/undefined`.\n */\n\n\nfunction makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {\n var encode = {};\n var datasetModel = getDatasetModel(seriesModel); // Currently only make default when using dataset, util more reqirements occur.\n\n if (!datasetModel) {\n return encode;\n }\n\n var sourceFormat = source.sourceFormat;\n var dimensionsDefine = source.dimensionsDefine;\n var potentialNameDimIndex;\n\n if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n each(dimensionsDefine, function (dim, idx) {\n if ((isObject(dim) ? dim.name : dim) === 'name') {\n potentialNameDimIndex = idx;\n }\n });\n } // idxResult: {v, n}.\n\n\n var idxResult = function () {\n var idxRes0 = {};\n var idxRes1 = {};\n var guessRecords = []; // 5 is an experience value.\n\n for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {\n var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);\n guessRecords.push(guessResult);\n var isPureNumber = guessResult === BE_ORDINAL.Not; // [Strategy of idxRes0]: find the first BE_ORDINAL.Not as the value dim,\n // and then find a name dim with the priority:\n // \"BE_ORDINAL.Might|BE_ORDINAL.Must\" > \"other dim\" > \"the value dim itself\".\n\n if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {\n idxRes0.v = i;\n }\n\n if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not) {\n idxRes0.n = i;\n }\n\n if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {\n return idxRes0;\n } // [Strategy of idxRes1]: if idxRes0 not satisfied (that is, no BE_ORDINAL.Not),\n // find the first BE_ORDINAL.Might as the value dim,\n // and then find a name dim with the priority:\n // \"other dim\" > \"the value dim itself\".\n // That is for backward compat: number-like (e.g., `'3'`, `'55'`) can be\n // treated as number.\n\n\n if (!isPureNumber) {\n if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {\n idxRes1.v = i;\n }\n\n if (idxRes1.n == null || idxRes1.n === idxRes1.v) {\n idxRes1.n = i;\n }\n }\n }\n\n function fulfilled(idxResult) {\n return idxResult.v != null && idxResult.n != null;\n }\n\n return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;\n }();\n\n if (idxResult) {\n encode.value = idxResult.v; // `potentialNameDimIndex` has highest priority.\n\n var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n; // By default, label use itemName in charts.\n // So we dont set encodeLabel here.\n\n encode.itemName = [nameDimIndex];\n encode.seriesName = [nameDimIndex];\n }\n\n return encode;\n}\n/**\n * If return null/undefined, indicate that should not use datasetModel.\n */\n\n\nfunction getDatasetModel(seriesModel) {\n var option = seriesModel.option; // Caution: consider the scenario:\n // A dataset is declared and a series is not expected to use the dataset,\n // and at the beginning `setOption({series: { noData })` (just prepare other\n // option but no data), then `setOption({series: {data: [...]}); In this case,\n // the user should set an empty array to avoid that dataset is used by default.\n\n var thisData = option.data;\n\n if (!thisData) {\n return seriesModel.ecModel.getComponent('dataset', option.datasetIndex || 0);\n }\n}\n/**\n * The rule should not be complex, otherwise user might not\n * be able to known where the data is wrong.\n * The code is ugly, but how to make it neat?\n *\n * @param {module:echars/data/Source} source\n * @param {number} dimIndex\n * @return {BE_ORDINAL} guess result.\n */\n\n\nfunction guessOrdinal(source, dimIndex) {\n return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\n} // dimIndex may be overflow source data.\n// return {BE_ORDINAL}\n\n\nfunction doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {\n var result; // Experience value.\n\n var maxLoop = 5;\n\n if (isTypedArray(data)) {\n return BE_ORDINAL.Not;\n } // When sourceType is 'objectRows' or 'keyedColumns', dimensionsDefine\n // always exists in source.\n\n\n var dimName;\n var dimType;\n\n if (dimensionsDefine) {\n var dimDefItem = dimensionsDefine[dimIndex];\n\n if (isObject(dimDefItem)) {\n dimName = dimDefItem.name;\n dimType = dimDefItem.type;\n } else if (isString(dimDefItem)) {\n dimName = dimDefItem;\n }\n }\n\n if (dimType != null) {\n return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;\n }\n\n if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n var sample = data[dimIndex];\n\n for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {\n if ((result = detectValue(sample[startIndex + i])) != null) {\n return result;\n }\n }\n } else {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var row = data[startIndex + i];\n\n if (row && (result = detectValue(row[dimIndex])) != null) {\n return result;\n }\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n if (!dimName) {\n return BE_ORDINAL.Not;\n }\n\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var item = data[i];\n\n if (item && (result = detectValue(item[dimName])) != null) {\n return result;\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n if (!dimName) {\n return BE_ORDINAL.Not;\n }\n\n var sample = data[dimName];\n\n if (!sample || isTypedArray(sample)) {\n return BE_ORDINAL.Not;\n }\n\n for (var i = 0; i < sample.length && i < maxLoop; i++) {\n if ((result = detectValue(sample[i])) != null) {\n return result;\n }\n }\n } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n for (var i = 0; i < data.length && i < maxLoop; i++) {\n var item = data[i];\n var val = getDataItemValue(item);\n\n if (!isArray(val)) {\n return BE_ORDINAL.Not;\n }\n\n if ((result = detectValue(val[dimIndex])) != null) {\n return result;\n }\n }\n }\n\n function detectValue(val) {\n var beStr = isString(val); // Consider usage convenience, '1', '2' will be treated as \"number\".\n // `isFinit('')` get `true`.\n\n if (val != null && isFinite(val) && val !== '') {\n return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;\n } else if (beStr && val !== '-') {\n return BE_ORDINAL.Must;\n }\n }\n\n return BE_ORDINAL.Not;\n}\n\nexports.BE_ORDINAL = BE_ORDINAL;\nexports.detectSourceFormat = detectSourceFormat;\nexports.getSource = getSource;\nexports.resetSourceDefaulter = resetSourceDefaulter;\nexports.prepareSource = prepareSource;\nexports.makeSeriesEncodeForAxisCoordSys = makeSeriesEncodeForAxisCoordSys;\nexports.makeSeriesEncodeForNameBased = makeSeriesEncodeForNameBased;\nexports.guessOrdinal = guessOrdinal;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar _sourceType = require(\"../../data/helper/sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _model = require(\"../../util/model\");\n\nvar getDataItemValue = _model.getDataItemValue;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _referHelper = require(\"../../model/referHelper\");\n\nvar getCoordSysInfoBySeries = _referHelper.getCoordSysInfoBySeries;\n\nvar Source = require(\"../../data/Source\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar enableDataStack = _dataStackHelper.enableDataStack;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/data/Source|Array} source Or raw data.\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object} [opt]\n * @param {string} [opt.generateCoord]\n * @param {boolean} [opt.useEncodeDefaulter]\n */\nfunction createListFromArray(source, seriesModel, opt) {\n opt = opt || {};\n\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n var coordSysName = seriesModel.get('coordinateSystem');\n var registeredCoordSys = CoordinateSystem.get(coordSysName);\n var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\n var coordSysDimDefs;\n\n if (coordSysInfo) {\n coordSysDimDefs = zrUtil.map(coordSysInfo.coordSysDims, function (dim) {\n var dimInfo = {\n name: dim\n };\n var axisModel = coordSysInfo.axisMap.get(dim);\n\n if (axisModel) {\n var axisType = axisModel.get('type');\n dimInfo.type = getDimensionTypeByAxis(axisType); // dimInfo.stackable = isStackable(axisType);\n }\n\n return dimInfo;\n });\n }\n\n if (!coordSysDimDefs) {\n // Get dimensions from registered coordinate system\n coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ['x', 'y'];\n }\n\n var dimInfoList = createDimensions(source, {\n coordDimensions: coordSysDimDefs,\n generateCoord: opt.generateCoord,\n encodeDefaulter: opt.useEncodeDefaulter ? zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null\n });\n var firstCategoryDimIndex;\n var hasNameEncode;\n coordSysInfo && zrUtil.each(dimInfoList, function (dimInfo, dimIndex) {\n var coordDim = dimInfo.coordDim;\n var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\n\n if (categoryAxisModel) {\n if (firstCategoryDimIndex == null) {\n firstCategoryDimIndex = dimIndex;\n }\n\n dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\n }\n\n if (dimInfo.otherDims.itemName != null) {\n hasNameEncode = true;\n }\n });\n\n if (!hasNameEncode && firstCategoryDimIndex != null) {\n dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\n }\n\n var stackCalculationInfo = enableDataStack(seriesModel, dimInfoList);\n var list = new List(dimInfoList, seriesModel);\n list.setCalculationInfo(stackCalculationInfo);\n var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function (itemOpt, dimName, dataIndex, dimIndex) {\n // Use dataIndex as ordinal value in categoryAxis\n return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\n } : null;\n list.hasItemOption = false;\n list.initData(source, null, dimValueGetter);\n return list;\n}\n\nfunction isNeedCompleteOrdinalData(source) {\n if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n var sampleItem = firstDataNotNull(source.data || []);\n return sampleItem != null && !zrUtil.isArray(getDataItemValue(sampleItem));\n }\n}\n\nfunction firstDataNotNull(data) {\n var i = 0;\n\n while (i < data.length && data[i] == null) {\n i++;\n }\n\n return data[i];\n}\n\nvar _default = createListFromArray;\nmodule.exports = _default;","var _vector = require(\"./vector\");\n\nvar v2Create = _vector.create;\nvar v2DistSquare = _vector.distSquare;\n\n/**\n * 曲线辅助模块\n * @module zrender/core/curve\n * @author pissang(https://www.github.com/pissang)\n */\nvar mathPow = Math.pow;\nvar mathSqrt = Math.sqrt;\nvar EPSILON = 1e-8;\nvar EPSILON_NUMERIC = 1e-4;\nvar THREE_SQRT = mathSqrt(3);\nvar ONE_THIRD = 1 / 3; // 临时变量\n\nvar _v0 = v2Create();\n\nvar _v1 = v2Create();\n\nvar _v2 = v2Create();\n\nfunction isAroundZero(val) {\n return val > -EPSILON && val < EPSILON;\n}\n\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\n/**\n * 计算三次贝塞尔值\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @return {number}\n */\n\n\nfunction cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return onet * onet * (onet * p0 + 3 * t * p1) + t * t * (t * p3 + 3 * onet * p2);\n}\n/**\n * 计算三次贝塞尔导数值\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @return {number}\n */\n\n\nfunction cubicDerivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet + (p3 - p2) * t * t);\n}\n/**\n * 计算三次贝塞尔方程根,使用盛金公式\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} val\n * @param {Array.} roots\n * @return {number} 有效根数目\n */\n\n\nfunction cubicRootAt(p0, p1, p2, p3, val, roots) {\n // Evaluate roots of cubic functions\n var a = p3 + 3 * (p1 - p2) - p0;\n var b = 3 * (p2 - p1 * 2 + p0);\n var c = 3 * (p1 - p0);\n var d = p0 - val;\n var A = b * b - 3 * a * c;\n var B = b * c - 9 * a * d;\n var C = c * c - 3 * b * d;\n var n = 0;\n\n if (isAroundZero(A) && isAroundZero(B)) {\n if (isAroundZero(b)) {\n roots[0] = 0;\n } else {\n var t1 = -c / b; //t1, t2, t3, b is not zero\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n } else {\n var disc = B * B - 4 * A * C;\n\n if (isAroundZero(disc)) {\n var K = B / A;\n var t1 = -b / a + K; // t1, a is not zero\n\n var t2 = -K / 2; // t2, t3\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n } else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var Y1 = A * b + 1.5 * a * (-B + discSqrt);\n var Y2 = A * b + 1.5 * a * (-B - discSqrt);\n\n if (Y1 < 0) {\n Y1 = -mathPow(-Y1, ONE_THIRD);\n } else {\n Y1 = mathPow(Y1, ONE_THIRD);\n }\n\n if (Y2 < 0) {\n Y2 = -mathPow(-Y2, ONE_THIRD);\n } else {\n Y2 = mathPow(Y2, ONE_THIRD);\n }\n\n var t1 = (-b - (Y1 + Y2)) / (3 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n } else {\n var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\n var theta = Math.acos(T) / 3;\n var ASqrt = mathSqrt(A);\n var tmp = Math.cos(theta);\n var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\n var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\n var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n\n if (t3 >= 0 && t3 <= 1) {\n roots[n++] = t3;\n }\n }\n }\n\n return n;\n}\n/**\n * 计算三次贝塞尔方程极限值的位置\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {Array.} extrema\n * @return {number} 有效数目\n */\n\n\nfunction cubicExtrema(p0, p1, p2, p3, extrema) {\n var b = 6 * p2 - 12 * p1 + 6 * p0;\n var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\n var c = 3 * p1 - 3 * p0;\n var n = 0;\n\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n }\n } else {\n var disc = b * b - 4 * a * c;\n\n if (isAroundZero(disc)) {\n extrema[0] = -b / (2 * a);\n } else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n extrema[n++] = t2;\n }\n }\n }\n\n return n;\n}\n/**\n * 细分三次贝塞尔曲线\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} p3\n * @param {number} t\n * @param {Array.} out\n */\n\n\nfunction cubicSubdivide(p0, p1, p2, p3, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p23 = (p3 - p2) * t + p2;\n var p012 = (p12 - p01) * t + p01;\n var p123 = (p23 - p12) * t + p12;\n var p0123 = (p123 - p012) * t + p012; // Seg0\n\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p0123; // Seg1\n\n out[4] = p0123;\n out[5] = p123;\n out[6] = p23;\n out[7] = p3;\n}\n/**\n * 投射点到三次贝塞尔曲线上,返回投射距离。\n * 投射点有可能会有一个或者多个,这里只返回其中距离最短的一个。\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {number} x\n * @param {number} y\n * @param {Array.} [out] 投射点\n * @return {number}\n */\n\n\nfunction cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\n // http://pomax.github.io/bezierinfo/#projections\n var t;\n var interval = 0.005;\n var d = Infinity;\n var prev;\n var next;\n var d1;\n var d2;\n _v0[0] = x;\n _v0[1] = y; // 先粗略估计一下可能的最小距离的 t 值\n // PENDING\n\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = cubicAt(x0, x1, x2, x3, _t);\n _v1[1] = cubicAt(y0, y1, y2, y3, _t);\n d1 = v2DistSquare(_v0, _v1);\n\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n\n d = Infinity; // At most 32 iteration\n\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n\n prev = t - interval;\n next = t + interval; // t - interval\n\n _v1[0] = cubicAt(x0, x1, x2, x3, prev);\n _v1[1] = cubicAt(y0, y1, y2, y3, prev);\n d1 = v2DistSquare(_v1, _v0);\n\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n // t + interval\n _v2[0] = cubicAt(x0, x1, x2, x3, next);\n _v2[1] = cubicAt(y0, y1, y2, y3, next);\n d2 = v2DistSquare(_v2, _v0);\n\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n } // t\n\n\n if (out) {\n out[0] = cubicAt(x0, x1, x2, x3, t);\n out[1] = cubicAt(y0, y1, y2, y3, t);\n } // console.log(interval, i);\n\n\n return mathSqrt(d);\n}\n/**\n * 计算二次方贝塞尔值\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @return {number}\n */\n\n\nfunction quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\n}\n/**\n * 计算二次方贝塞尔导数值\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @return {number}\n */\n\n\nfunction quadraticDerivativeAt(p0, p1, p2, t) {\n return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\n}\n/**\n * 计算二次方贝塞尔方程根\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @param {Array.} roots\n * @return {number} 有效根数目\n */\n\n\nfunction quadraticRootAt(p0, p1, p2, val, roots) {\n var a = p0 - 2 * p1 + p2;\n var b = 2 * (p1 - p0);\n var c = p0 - val;\n var n = 0;\n\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n } else {\n var disc = b * b - 4 * a * c;\n\n if (isAroundZero(disc)) {\n var t1 = -b / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n } else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n }\n\n return n;\n}\n/**\n * 计算二次贝塞尔方程极限值\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @return {number}\n */\n\n\nfunction quadraticExtremum(p0, p1, p2) {\n var divider = p0 + p2 - 2 * p1;\n\n if (divider === 0) {\n // p1 is center of p0 and p2\n return 0.5;\n } else {\n return (p0 - p1) / divider;\n }\n}\n/**\n * 细分二次贝塞尔曲线\n * @memberOf module:zrender/core/curve\n * @param {number} p0\n * @param {number} p1\n * @param {number} p2\n * @param {number} t\n * @param {Array.} out\n */\n\n\nfunction quadraticSubdivide(p0, p1, p2, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p012 = (p12 - p01) * t + p01; // Seg0\n\n out[0] = p0;\n out[1] = p01;\n out[2] = p012; // Seg1\n\n out[3] = p012;\n out[4] = p12;\n out[5] = p2;\n}\n/**\n * 投射点到二次贝塞尔曲线上,返回投射距离。\n * 投射点有可能会有一个或者多个,这里只返回其中距离最短的一个。\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x\n * @param {number} y\n * @param {Array.} out 投射点\n * @return {number}\n */\n\n\nfunction quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\n // http://pomax.github.io/bezierinfo/#projections\n var t;\n var interval = 0.005;\n var d = Infinity;\n _v0[0] = x;\n _v0[1] = y; // 先粗略估计一下可能的最小距离的 t 值\n // PENDING\n\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = quadraticAt(x0, x1, x2, _t);\n _v1[1] = quadraticAt(y0, y1, y2, _t);\n var d1 = v2DistSquare(_v0, _v1);\n\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n\n d = Infinity; // At most 32 iteration\n\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n\n var prev = t - interval;\n var next = t + interval; // t - interval\n\n _v1[0] = quadraticAt(x0, x1, x2, prev);\n _v1[1] = quadraticAt(y0, y1, y2, prev);\n var d1 = v2DistSquare(_v1, _v0);\n\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n // t + interval\n _v2[0] = quadraticAt(x0, x1, x2, next);\n _v2[1] = quadraticAt(y0, y1, y2, next);\n var d2 = v2DistSquare(_v2, _v0);\n\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n } // t\n\n\n if (out) {\n out[0] = quadraticAt(x0, x1, x2, t);\n out[1] = quadraticAt(y0, y1, y2, t);\n } // console.log(interval, i);\n\n\n return mathSqrt(d);\n}\n\nexports.cubicAt = cubicAt;\nexports.cubicDerivativeAt = cubicDerivativeAt;\nexports.cubicRootAt = cubicRootAt;\nexports.cubicExtrema = cubicExtrema;\nexports.cubicSubdivide = cubicSubdivide;\nexports.cubicProjectPoint = cubicProjectPoint;\nexports.quadraticAt = quadraticAt;\nexports.quadraticDerivativeAt = quadraticDerivativeAt;\nexports.quadraticRootAt = quadraticRootAt;\nexports.quadraticExtremum = quadraticExtremum;\nexports.quadraticSubdivide = quadraticSubdivide;\nexports.quadraticProjectPoint = quadraticProjectPoint;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar ORIGIN_METHOD = '\\0__throttleOriginMethod';\nvar RATE = '\\0__throttleRate';\nvar THROTTLE_TYPE = '\\0__throttleType';\n/**\n * @public\n * @param {(Function)} fn\n * @param {number} [delay=0] Unit: ms.\n * @param {boolean} [debounce=false]\n * true: If call interval less than `delay`, only the last call works.\n * false: If call interval less than `delay, call works on fixed rate.\n * @return {(Function)} throttled fn.\n */\n\nfunction throttle(fn, delay, debounce) {\n var currCall;\n var lastCall = 0;\n var lastExec = 0;\n var timer = null;\n var diff;\n var scope;\n var args;\n var debounceNextCall;\n delay = delay || 0;\n\n function exec() {\n lastExec = new Date().getTime();\n timer = null;\n fn.apply(scope, args || []);\n }\n\n var cb = function () {\n currCall = new Date().getTime();\n scope = this;\n args = arguments;\n var thisDelay = debounceNextCall || delay;\n var thisDebounce = debounceNextCall || debounce;\n debounceNextCall = null;\n diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;\n clearTimeout(timer); // Here we should make sure that: the `exec` SHOULD NOT be called later\n // than a new call of `cb`, that is, preserving the command order. Consider\n // calculating \"scale rate\" when roaming as an example. When a call of `cb`\n // happens, either the `exec` is called dierectly, or the call is delayed.\n // But the delayed call should never be later than next call of `cb`. Under\n // this assurance, we can simply update view state each time `dispatchAction`\n // triggered by user roaming, but not need to add extra code to avoid the\n // state being \"rolled-back\".\n\n if (thisDebounce) {\n timer = setTimeout(exec, thisDelay);\n } else {\n if (diff >= 0) {\n exec();\n } else {\n timer = setTimeout(exec, -diff);\n }\n }\n\n lastCall = currCall;\n };\n /**\n * Clear throttle.\n * @public\n */\n\n\n cb.clear = function () {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n };\n /**\n * Enable debounce once.\n */\n\n\n cb.debounceNextCall = function (debounceDelay) {\n debounceNextCall = debounceDelay;\n };\n\n return cb;\n}\n/**\n * Create throttle method or update throttle rate.\n *\n * @example\n * ComponentView.prototype.render = function () {\n * ...\n * throttle.createOrUpdate(\n * this,\n * '_dispatchAction',\n * this.model.get('throttle'),\n * 'fixRate'\n * );\n * };\n * ComponentView.prototype.remove = function () {\n * throttle.clear(this, '_dispatchAction');\n * };\n * ComponentView.prototype.dispose = function () {\n * throttle.clear(this, '_dispatchAction');\n * };\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n * @param {number} [rate]\n * @param {string} [throttleType='fixRate'] 'fixRate' or 'debounce'\n * @return {Function} throttled function.\n */\n\n\nfunction createOrUpdate(obj, fnAttr, rate, throttleType) {\n var fn = obj[fnAttr];\n\n if (!fn) {\n return;\n }\n\n var originFn = fn[ORIGIN_METHOD] || fn;\n var lastThrottleType = fn[THROTTLE_TYPE];\n var lastRate = fn[RATE];\n\n if (lastRate !== rate || lastThrottleType !== throttleType) {\n if (rate == null || !throttleType) {\n return obj[fnAttr] = originFn;\n }\n\n fn = obj[fnAttr] = throttle(originFn, rate, throttleType === 'debounce');\n fn[ORIGIN_METHOD] = originFn;\n fn[THROTTLE_TYPE] = throttleType;\n fn[RATE] = rate;\n }\n\n return fn;\n}\n/**\n * Clear throttle. Example see throttle.createOrUpdate.\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n */\n\n\nfunction clear(obj, fnAttr) {\n var fn = obj[fnAttr];\n\n if (fn && fn[ORIGIN_METHOD]) {\n obj[fnAttr] = fn[ORIGIN_METHOD];\n }\n}\n\nexports.throttle = throttle;\nexports.createOrUpdate = createOrUpdate;\nexports.clear = clear;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Language: (Simplified) Chinese.\n */\nvar _default = {\n legend: {\n selector: {\n all: '全选',\n inverse: '反选'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: '矩形选择',\n polygon: '圈选',\n lineX: '横向选择',\n lineY: '纵向选择',\n keep: '保持选择',\n clear: '清除选择'\n }\n },\n dataView: {\n title: '数据视图',\n lang: ['数据视图', '关闭', '刷新']\n },\n dataZoom: {\n title: {\n zoom: '区域缩放',\n back: '区域缩放还原'\n }\n },\n magicType: {\n title: {\n line: '切换为折线图',\n bar: '切换为柱状图',\n stack: '切换为堆叠',\n tiled: '切换为平铺'\n }\n },\n restore: {\n title: '还原'\n },\n saveAsImage: {\n title: '保存为图片',\n lang: ['右键另存为图片']\n }\n },\n series: {\n typeNames: {\n pie: '饼图',\n bar: '柱状图',\n line: '折线图',\n scatter: '散点图',\n effectScatter: '涟漪散点图',\n radar: '雷达图',\n tree: '树图',\n treemap: '矩形树图',\n boxplot: '箱型图',\n candlestick: 'K线图',\n k: 'K线图',\n heatmap: '热力图',\n map: '地图',\n parallel: '平行坐标图',\n lines: '线图',\n graph: '关系图',\n sankey: '桑基图',\n funnel: '漏斗图',\n gauge: '仪表盘图',\n pictorialBar: '象形柱图',\n themeRiver: '主题河流图',\n sunburst: '旭日图'\n }\n },\n aria: {\n general: {\n withTitle: '这是一个关于“{title}”的图表。',\n withoutTitle: '这是一个图表,'\n },\n series: {\n single: {\n prefix: '',\n withName: '图表类型是{seriesType},表示{seriesName}。',\n withoutName: '图表类型是{seriesType}。'\n },\n multiple: {\n prefix: '它由{seriesCount}个图表系列组成。',\n withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType},',\n withoutName: '第{seriesId}个系列是一个{seriesType},',\n separator: {\n middle: ';',\n end: '。'\n }\n }\n },\n data: {\n allData: '其数据是——',\n partialData: '其中,前{displayCnt}项是——',\n withName: '{name}的数据是{value}',\n withoutName: '{value}',\n separator: {\n middle: ',',\n end: ''\n }\n }\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar map = _util.map;\n\nvar _number = require(\"../util/number\");\n\nvar linearMap = _number.linearMap;\nvar getPixelPrecision = _number.getPixelPrecision;\nvar round = _number.round;\n\nvar _axisTickLabelBuilder = require(\"./axisTickLabelBuilder\");\n\nvar createAxisTicks = _axisTickLabelBuilder.createAxisTicks;\nvar createAxisLabels = _axisTickLabelBuilder.createAxisLabels;\nvar calculateCategoryInterval = _axisTickLabelBuilder.calculateCategoryInterval;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar NORMALIZED_EXTENT = [0, 1];\n/**\n * Base class of Axis.\n * @constructor\n */\n\nvar Axis = function (dim, scale, extent) {\n /**\n * Axis dimension. Such as 'x', 'y', 'z', 'angle', 'radius'.\n * @type {string}\n */\n this.dim = dim;\n /**\n * Axis scale\n * @type {module:echarts/coord/scale/*}\n */\n\n this.scale = scale;\n /**\n * @type {Array.}\n * @private\n */\n\n this._extent = extent || [0, 0];\n /**\n * @type {boolean}\n */\n\n this.inverse = false;\n /**\n * Usually true when axis has a ordinal scale\n * @type {boolean}\n */\n\n this.onBand = false;\n};\n\nAxis.prototype = {\n constructor: Axis,\n\n /**\n * If axis extent contain given coord\n * @param {number} coord\n * @return {boolean}\n */\n contain: function (coord) {\n var extent = this._extent;\n var min = Math.min(extent[0], extent[1]);\n var max = Math.max(extent[0], extent[1]);\n return coord >= min && coord <= max;\n },\n\n /**\n * If axis extent contain given data\n * @param {number} data\n * @return {boolean}\n */\n containData: function (data) {\n return this.scale.contain(data);\n },\n\n /**\n * Get coord extent.\n * @return {Array.}\n */\n getExtent: function () {\n return this._extent.slice();\n },\n\n /**\n * Get precision used for formatting\n * @param {Array.} [dataExtent]\n * @return {number}\n */\n getPixelPrecision: function (dataExtent) {\n return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);\n },\n\n /**\n * Set coord extent\n * @param {number} start\n * @param {number} end\n */\n setExtent: function (start, end) {\n var extent = this._extent;\n extent[0] = start;\n extent[1] = end;\n },\n\n /**\n * Convert data to coord. Data is the rank if it has an ordinal scale\n * @param {number} data\n * @param {boolean} clamp\n * @return {number}\n */\n dataToCoord: function (data, clamp) {\n var extent = this._extent;\n var scale = this.scale;\n data = scale.normalize(data);\n\n if (this.onBand && scale.type === 'ordinal') {\n extent = extent.slice();\n fixExtentWithBands(extent, scale.count());\n }\n\n return linearMap(data, NORMALIZED_EXTENT, extent, clamp);\n },\n\n /**\n * Convert coord to data. Data is the rank if it has an ordinal scale\n * @param {number} coord\n * @param {boolean} clamp\n * @return {number}\n */\n coordToData: function (coord, clamp) {\n var extent = this._extent;\n var scale = this.scale;\n\n if (this.onBand && scale.type === 'ordinal') {\n extent = extent.slice();\n fixExtentWithBands(extent, scale.count());\n }\n\n var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp);\n return this.scale.scale(t);\n },\n\n /**\n * Convert pixel point to data in axis\n * @param {Array.} point\n * @param {boolean} clamp\n * @return {number} data\n */\n pointToData: function (point, clamp) {// Should be implemented in derived class if necessary.\n },\n\n /**\n * Different from `zrUtil.map(axis.getTicks(), axis.dataToCoord, axis)`,\n * `axis.getTicksCoords` considers `onBand`, which is used by\n * `boundaryGap:true` of category axis and splitLine and splitArea.\n * @param {Object} [opt]\n * @param {Model} [opt.tickModel=axis.model.getModel('axisTick')]\n * @param {boolean} [opt.clamp] If `true`, the first and the last\n * tick must be at the axis end points. Otherwise, clip ticks\n * that outside the axis extent.\n * @return {Array.} [{\n * coord: ...,\n * tickValue: ...\n * }, ...]\n */\n getTicksCoords: function (opt) {\n opt = opt || {};\n var tickModel = opt.tickModel || this.getTickModel();\n var result = createAxisTicks(this, tickModel);\n var ticks = result.ticks;\n var ticksCoords = map(ticks, function (tickValue) {\n return {\n coord: this.dataToCoord(tickValue),\n tickValue: tickValue\n };\n }, this);\n var alignWithLabel = tickModel.get('alignWithLabel');\n fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);\n return ticksCoords;\n },\n\n /**\n * @return {Array.>} [{ coord: ..., tickValue: ...}]\n */\n getMinorTicksCoords: function () {\n if (this.scale.type === 'ordinal') {\n // Category axis doesn't support minor ticks\n return [];\n }\n\n var minorTickModel = this.model.getModel('minorTick');\n var splitNumber = minorTickModel.get('splitNumber'); // Protection.\n\n if (!(splitNumber > 0 && splitNumber < 100)) {\n splitNumber = 5;\n }\n\n var minorTicks = this.scale.getMinorTicks(splitNumber);\n var minorTicksCoords = map(minorTicks, function (minorTicksGroup) {\n return map(minorTicksGroup, function (minorTick) {\n return {\n coord: this.dataToCoord(minorTick),\n tickValue: minorTick\n };\n }, this);\n }, this);\n return minorTicksCoords;\n },\n\n /**\n * @return {Array.} [{\n * formattedLabel: string,\n * rawLabel: axis.scale.getLabel(tickValue)\n * tickValue: number\n * }, ...]\n */\n getViewLabels: function () {\n return createAxisLabels(this).labels;\n },\n\n /**\n * @return {module:echarts/coord/model/Model}\n */\n getLabelModel: function () {\n return this.model.getModel('axisLabel');\n },\n\n /**\n * Notice here we only get the default tick model. For splitLine\n * or splitArea, we should pass the splitLineModel or splitAreaModel\n * manually when calling `getTicksCoords`.\n * In GL, this method may be overrided to:\n * `axisModel.getModel('axisTick', grid3DModel.getModel('axisTick'));`\n * @return {module:echarts/coord/model/Model}\n */\n getTickModel: function () {\n return this.model.getModel('axisTick');\n },\n\n /**\n * Get width of band\n * @return {number}\n */\n getBandWidth: function () {\n var axisExtent = this._extent;\n var dataExtent = this.scale.getExtent();\n var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0); // Fix #2728, avoid NaN when only one data.\n\n len === 0 && (len = 1);\n var size = Math.abs(axisExtent[1] - axisExtent[0]);\n return Math.abs(size) / len;\n },\n\n /**\n * @abstract\n * @return {boolean} Is horizontal\n */\n isHorizontal: null,\n\n /**\n * @abstract\n * @return {number} Get axis rotate, by degree.\n */\n getRotate: null,\n\n /**\n * Only be called in category axis.\n * Can be overrided, consider other axes like in 3D.\n * @return {number} Auto interval for cateogry axis tick and label\n */\n calculateCategoryInterval: function () {\n return calculateCategoryInterval(this);\n }\n};\n\nfunction fixExtentWithBands(extent, nTick) {\n var size = extent[1] - extent[0];\n var len = nTick;\n var margin = size / len / 2;\n extent[0] += margin;\n extent[1] -= margin;\n} // If axis has labels [1, 2, 3, 4]. Bands on the axis are\n// |---1---|---2---|---3---|---4---|.\n// So the displayed ticks and splitLine/splitArea should between\n// each data item, otherwise cause misleading (e.g., split tow bars\n// of a single data item when there are two bar series).\n// Also consider if tickCategoryInterval > 0 and onBand, ticks and\n// splitLine/spliteArea should layout appropriately corresponding\n// to displayed labels. (So we should not use `getBandWidth` in this\n// case).\n\n\nfunction fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) {\n var ticksLen = ticksCoords.length;\n\n if (!axis.onBand || alignWithLabel || !ticksLen) {\n return;\n }\n\n var axisExtent = axis.getExtent();\n var last;\n var diffSize;\n\n if (ticksLen === 1) {\n ticksCoords[0].coord = axisExtent[0];\n last = ticksCoords[1] = {\n coord: axisExtent[0]\n };\n } else {\n var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;\n var shift = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;\n each(ticksCoords, function (ticksItem) {\n ticksItem.coord -= shift / 2;\n });\n var dataExtent = axis.scale.getExtent();\n diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;\n last = {\n coord: ticksCoords[ticksLen - 1].coord + shift * diffSize\n };\n ticksCoords.push(last);\n }\n\n var inverse = axisExtent[0] > axisExtent[1]; // Handling clamp.\n\n if (littleThan(ticksCoords[0].coord, axisExtent[0])) {\n clamp ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift();\n }\n\n if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) {\n ticksCoords.unshift({\n coord: axisExtent[0]\n });\n }\n\n if (littleThan(axisExtent[1], last.coord)) {\n clamp ? last.coord = axisExtent[1] : ticksCoords.pop();\n }\n\n if (clamp && littleThan(last.coord, axisExtent[1])) {\n ticksCoords.push({\n coord: axisExtent[1]\n });\n }\n\n function littleThan(a, b) {\n // Avoid rounding error cause calculated tick coord different with extent.\n // It may cause an extra unecessary tick added.\n a = round(a);\n b = round(b);\n return inverse ? a > b : a < b;\n }\n}\n\nvar _default = Axis;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar retrieve = _util.retrieve;\nvar defaults = _util.defaults;\nvar extend = _util.extend;\nvar each = _util.each;\nvar map = _util.map;\n\nvar formatUtil = require(\"../../util/format\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Model = require(\"../../model/Model\");\n\nvar _number = require(\"../../util/number\");\n\nvar isRadianAroundZero = _number.isRadianAroundZero;\nvar remRadian = _number.remRadian;\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar matrixUtil = require(\"zrender/lib/core/matrix\");\n\nvar _vector = require(\"zrender/lib/core/vector\");\n\nvar v2ApplyTransform = _vector.applyTransform;\n\nvar _axisHelper = require(\"../../coord/axisHelper\");\n\nvar shouldShowAllLabels = _axisHelper.shouldShowAllLabels;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PI = Math.PI;\n/**\n * A final axis is translated and rotated from a \"standard axis\".\n * So opt.position and opt.rotation is required.\n *\n * A standard axis is and axis from [0, 0] to [0, axisExtent[1]],\n * for example: (0, 0) ------------> (0, 50)\n *\n * nameDirection or tickDirection or labelDirection is 1 means tick\n * or label is below the standard axis, whereas is -1 means above\n * the standard axis. labelOffset means offset between label and axis,\n * which is useful when 'onZero', where axisLabel is in the grid and\n * label in outside grid.\n *\n * Tips: like always,\n * positive rotation represents anticlockwise, and negative rotation\n * represents clockwise.\n * The direction of position coordinate is the same as the direction\n * of screen coordinate.\n *\n * Do not need to consider axis 'inverse', which is auto processed by\n * axis extent.\n *\n * @param {module:zrender/container/Group} group\n * @param {Object} axisModel\n * @param {Object} opt Standard axis parameters.\n * @param {Array.} opt.position [x, y]\n * @param {number} opt.rotation by radian\n * @param {number} [opt.nameDirection=1] 1 or -1 Used when nameLocation is 'middle' or 'center'.\n * @param {number} [opt.tickDirection=1] 1 or -1\n * @param {number} [opt.labelDirection=1] 1 or -1\n * @param {number} [opt.labelOffset=0] Usefull when onZero.\n * @param {string} [opt.axisLabelShow] default get from axisModel.\n * @param {string} [opt.axisName] default get from axisModel.\n * @param {number} [opt.axisNameAvailableWidth]\n * @param {number} [opt.labelRotate] by degree, default get from axisModel.\n * @param {number} [opt.strokeContainThreshold] Default label interval when label\n * @param {number} [opt.nameTruncateMaxWidth]\n */\n\nvar AxisBuilder = function (axisModel, opt) {\n /**\n * @readOnly\n */\n this.opt = opt;\n /**\n * @readOnly\n */\n\n this.axisModel = axisModel; // Default value\n\n defaults(opt, {\n labelOffset: 0,\n nameDirection: 1,\n tickDirection: 1,\n labelDirection: 1,\n silent: true\n });\n /**\n * @readOnly\n */\n\n this.group = new graphic.Group(); // FIXME Not use a seperate text group?\n\n var dumbGroup = new graphic.Group({\n position: opt.position.slice(),\n rotation: opt.rotation\n }); // this.group.add(dumbGroup);\n // this._dumbGroup = dumbGroup;\n\n dumbGroup.updateTransform();\n this._transform = dumbGroup.transform;\n this._dumbGroup = dumbGroup;\n};\n\nAxisBuilder.prototype = {\n constructor: AxisBuilder,\n hasBuilder: function (name) {\n return !!builders[name];\n },\n add: function (name) {\n builders[name].call(this);\n },\n getGroup: function () {\n return this.group;\n }\n};\nvar builders = {\n /**\n * @private\n */\n axisLine: function () {\n var opt = this.opt;\n var axisModel = this.axisModel;\n\n if (!axisModel.get('axisLine.show')) {\n return;\n }\n\n var extent = this.axisModel.axis.getExtent();\n var matrix = this._transform;\n var pt1 = [extent[0], 0];\n var pt2 = [extent[1], 0];\n\n if (matrix) {\n v2ApplyTransform(pt1, pt1, matrix);\n v2ApplyTransform(pt2, pt2, matrix);\n }\n\n var lineStyle = extend({\n lineCap: 'round'\n }, axisModel.getModel('axisLine.lineStyle').getLineStyle());\n this.group.add(new graphic.Line({\n // Id for animation\n anid: 'line',\n subPixelOptimize: true,\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: lineStyle,\n strokeContainThreshold: opt.strokeContainThreshold || 5,\n silent: true,\n z2: 1\n }));\n var arrows = axisModel.get('axisLine.symbol');\n var arrowSize = axisModel.get('axisLine.symbolSize');\n var arrowOffset = axisModel.get('axisLine.symbolOffset') || 0;\n\n if (typeof arrowOffset === 'number') {\n arrowOffset = [arrowOffset, arrowOffset];\n }\n\n if (arrows != null) {\n if (typeof arrows === 'string') {\n // Use the same arrow for start and end point\n arrows = [arrows, arrows];\n }\n\n if (typeof arrowSize === 'string' || typeof arrowSize === 'number') {\n // Use the same size for width and height\n arrowSize = [arrowSize, arrowSize];\n }\n\n var symbolWidth = arrowSize[0];\n var symbolHeight = arrowSize[1];\n each([{\n rotate: opt.rotation + Math.PI / 2,\n offset: arrowOffset[0],\n r: 0\n }, {\n rotate: opt.rotation - Math.PI / 2,\n offset: arrowOffset[1],\n r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0]) + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\n }], function (point, index) {\n if (arrows[index] !== 'none' && arrows[index] != null) {\n var symbol = createSymbol(arrows[index], -symbolWidth / 2, -symbolHeight / 2, symbolWidth, symbolHeight, lineStyle.stroke, true); // Calculate arrow position with offset\n\n var r = point.r + point.offset;\n var pos = [pt1[0] + r * Math.cos(opt.rotation), pt1[1] - r * Math.sin(opt.rotation)];\n symbol.attr({\n rotation: point.rotate,\n position: pos,\n silent: true,\n z2: 11\n });\n this.group.add(symbol);\n }\n }, this);\n }\n },\n\n /**\n * @private\n */\n axisTickLabel: function () {\n var axisModel = this.axisModel;\n var opt = this.opt;\n var ticksEls = buildAxisMajorTicks(this, axisModel, opt);\n var labelEls = buildAxisLabel(this, axisModel, opt);\n fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\n buildAxisMinorTicks(this, axisModel, opt);\n },\n\n /**\n * @private\n */\n axisName: function () {\n var opt = this.opt;\n var axisModel = this.axisModel;\n var name = retrieve(opt.axisName, axisModel.get('name'));\n\n if (!name) {\n return;\n }\n\n var nameLocation = axisModel.get('nameLocation');\n var nameDirection = opt.nameDirection;\n var textStyleModel = axisModel.getModel('nameTextStyle');\n var gap = axisModel.get('nameGap') || 0;\n var extent = this.axisModel.axis.getExtent();\n var gapSignal = extent[0] > extent[1] ? -1 : 1;\n var pos = [nameLocation === 'start' ? extent[0] - gapSignal * gap : nameLocation === 'end' ? extent[1] + gapSignal * gap : (extent[0] + extent[1]) / 2, // 'middle'\n // Reuse labelOffset.\n isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0];\n var labelLayout;\n var nameRotation = axisModel.get('nameRotate');\n\n if (nameRotation != null) {\n nameRotation = nameRotation * PI / 180; // To radian.\n }\n\n var axisNameAvailableWidth;\n\n if (isNameLocationCenter(nameLocation)) {\n labelLayout = innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.\n nameDirection);\n } else {\n labelLayout = endTextLayout(opt, nameLocation, nameRotation || 0, extent);\n axisNameAvailableWidth = opt.axisNameAvailableWidth;\n\n if (axisNameAvailableWidth != null) {\n axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\n !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\n }\n }\n\n var textFont = textStyleModel.getFont();\n var truncateOpt = axisModel.get('nameTruncate', true) || {};\n var ellipsis = truncateOpt.ellipsis;\n var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth); // FIXME\n // truncate rich text? (consider performance)\n\n var truncatedText = ellipsis != null && maxWidth != null ? formatUtil.truncateText(name, maxWidth, textFont, ellipsis, {\n minChar: 2,\n placeholder: truncateOpt.placeholder\n }) : name;\n var tooltipOpt = axisModel.get('tooltip', true);\n var mainType = axisModel.mainType;\n var formatterParams = {\n componentType: mainType,\n name: name,\n $vars: ['name']\n };\n formatterParams[mainType + 'Index'] = axisModel.componentIndex;\n var textEl = new graphic.Text({\n // Id for animation\n anid: 'name',\n __fullText: name,\n __truncatedText: truncatedText,\n position: pos,\n rotation: labelLayout.rotation,\n silent: isLabelSilent(axisModel),\n z2: 1,\n tooltip: tooltipOpt && tooltipOpt.show ? extend({\n content: name,\n formatter: function () {\n return name;\n },\n formatterParams: formatterParams\n }, tooltipOpt) : null\n });\n graphic.setTextStyle(textEl.style, textStyleModel, {\n text: truncatedText,\n textFont: textFont,\n textFill: textStyleModel.getTextColor() || axisModel.get('axisLine.lineStyle.color'),\n textAlign: textStyleModel.get('align') || labelLayout.textAlign,\n textVerticalAlign: textStyleModel.get('verticalAlign') || labelLayout.textVerticalAlign\n });\n\n if (axisModel.get('triggerEvent')) {\n textEl.eventData = makeAxisEventDataBase(axisModel);\n textEl.eventData.targetType = 'axisName';\n textEl.eventData.name = name;\n } // FIXME\n\n\n this._dumbGroup.add(textEl);\n\n textEl.updateTransform();\n this.group.add(textEl);\n textEl.decomposeTransform();\n }\n};\n\nvar makeAxisEventDataBase = AxisBuilder.makeAxisEventDataBase = function (axisModel) {\n var eventData = {\n componentType: axisModel.mainType,\n componentIndex: axisModel.componentIndex\n };\n eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\n return eventData;\n};\n/**\n * @public\n * @static\n * @param {Object} opt\n * @param {number} axisRotation in radian\n * @param {number} textRotation in radian\n * @param {number} direction\n * @return {Object} {\n * rotation, // according to axis\n * textAlign,\n * textVerticalAlign\n * }\n */\n\n\nvar innerTextLayout = AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\n var rotationDiff = remRadian(textRotation - axisRotation);\n var textAlign;\n var textVerticalAlign;\n\n if (isRadianAroundZero(rotationDiff)) {\n // Label is parallel with axis line.\n textVerticalAlign = direction > 0 ? 'top' : 'bottom';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI)) {\n // Label is inverse parallel with axis line.\n textVerticalAlign = direction > 0 ? 'bottom' : 'top';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff > 0 && rotationDiff < PI) {\n textAlign = direction > 0 ? 'right' : 'left';\n } else {\n textAlign = direction > 0 ? 'left' : 'right';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n};\n\nfunction endTextLayout(opt, textPosition, textRotate, extent) {\n var rotationDiff = remRadian(textRotate - opt.rotation);\n var textAlign;\n var textVerticalAlign;\n var inverse = extent[0] > extent[1];\n var onLeft = textPosition === 'start' && !inverse || textPosition !== 'start' && inverse;\n\n if (isRadianAroundZero(rotationDiff - PI / 2)) {\n textVerticalAlign = onLeft ? 'bottom' : 'top';\n textAlign = 'center';\n } else if (isRadianAroundZero(rotationDiff - PI * 1.5)) {\n textVerticalAlign = onLeft ? 'top' : 'bottom';\n textAlign = 'center';\n } else {\n textVerticalAlign = 'middle';\n\n if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) {\n textAlign = onLeft ? 'left' : 'right';\n } else {\n textAlign = onLeft ? 'right' : 'left';\n }\n }\n\n return {\n rotation: rotationDiff,\n textAlign: textAlign,\n textVerticalAlign: textVerticalAlign\n };\n}\n\nvar isLabelSilent = AxisBuilder.isLabelSilent = function (axisModel) {\n var tooltipOpt = axisModel.get('tooltip');\n return axisModel.get('silent') // Consider mouse cursor, add these restrictions.\n || !(axisModel.get('triggerEvent') || tooltipOpt && tooltipOpt.show);\n};\n\nfunction fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\n if (shouldShowAllLabels(axisModel.axis)) {\n return;\n } // If min or max are user set, we need to check\n // If the tick on min(max) are overlap on their neighbour tick\n // If they are overlapped, we need to hide the min(max) tick label\n\n\n var showMinLabel = axisModel.get('axisLabel.showMinLabel');\n var showMaxLabel = axisModel.get('axisLabel.showMaxLabel'); // FIXME\n // Have not consider onBand yet, where tick els is more than label els.\n\n labelEls = labelEls || [];\n tickEls = tickEls || [];\n var firstLabel = labelEls[0];\n var nextLabel = labelEls[1];\n var lastLabel = labelEls[labelEls.length - 1];\n var prevLabel = labelEls[labelEls.length - 2];\n var firstTick = tickEls[0];\n var nextTick = tickEls[1];\n var lastTick = tickEls[tickEls.length - 1];\n var prevTick = tickEls[tickEls.length - 2];\n\n if (showMinLabel === false) {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\n if (showMinLabel) {\n ignoreEl(nextLabel);\n ignoreEl(nextTick);\n } else {\n ignoreEl(firstLabel);\n ignoreEl(firstTick);\n }\n }\n\n if (showMaxLabel === false) {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\n if (showMaxLabel) {\n ignoreEl(prevLabel);\n ignoreEl(prevTick);\n } else {\n ignoreEl(lastLabel);\n ignoreEl(lastTick);\n }\n }\n}\n\nfunction ignoreEl(el) {\n el && (el.ignore = true);\n}\n\nfunction isTwoLabelOverlapped(current, next, labelLayout) {\n // current and next has the same rotation.\n var firstRect = current && current.getBoundingRect().clone();\n var nextRect = next && next.getBoundingRect().clone();\n\n if (!firstRect || !nextRect) {\n return;\n } // When checking intersect of two rotated labels, we use mRotationBack\n // to avoid that boundingRect is enlarge when using `boundingRect.applyTransform`.\n\n\n var mRotationBack = matrixUtil.identity([]);\n matrixUtil.rotate(mRotationBack, mRotationBack, -current.rotation);\n firstRect.applyTransform(matrixUtil.mul([], mRotationBack, current.getLocalTransform()));\n nextRect.applyTransform(matrixUtil.mul([], mRotationBack, next.getLocalTransform()));\n return firstRect.intersect(nextRect);\n}\n\nfunction isNameLocationCenter(nameLocation) {\n return nameLocation === 'middle' || nameLocation === 'center';\n}\n\nfunction createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, aniid) {\n var tickEls = [];\n var pt1 = [];\n var pt2 = [];\n\n for (var i = 0; i < ticksCoords.length; i++) {\n var tickCoord = ticksCoords[i].coord;\n pt1[0] = tickCoord;\n pt1[1] = 0;\n pt2[0] = tickCoord;\n pt2[1] = tickEndCoord;\n\n if (tickTransform) {\n v2ApplyTransform(pt1, pt1, tickTransform);\n v2ApplyTransform(pt2, pt2, tickTransform);\n } // Tick line, Not use group transform to have better line draw\n\n\n var tickEl = new graphic.Line({\n // Id for animation\n anid: aniid + '_' + ticksCoords[i].tickValue,\n subPixelOptimize: true,\n shape: {\n x1: pt1[0],\n y1: pt1[1],\n x2: pt2[0],\n y2: pt2[1]\n },\n style: tickLineStyle,\n z2: 2,\n silent: true\n });\n tickEls.push(tickEl);\n }\n\n return tickEls;\n}\n\nfunction buildAxisMajorTicks(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var tickModel = axisModel.getModel('axisTick');\n\n if (!tickModel.get('show') || axis.scale.isBlank()) {\n return;\n }\n\n var lineStyleModel = tickModel.getModel('lineStyle');\n var tickEndCoord = opt.tickDirection * tickModel.get('length');\n var ticksCoords = axis.getTicksCoords();\n var ticksEls = createTicks(ticksCoords, axisBuilder._transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\n stroke: axisModel.get('axisLine.lineStyle.color')\n }), 'ticks');\n\n for (var i = 0; i < ticksEls.length; i++) {\n axisBuilder.group.add(ticksEls[i]);\n }\n\n return ticksEls;\n}\n\nfunction buildAxisMinorTicks(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var minorTickModel = axisModel.getModel('minorTick');\n\n if (!minorTickModel.get('show') || axis.scale.isBlank()) {\n return;\n }\n\n var minorTicksCoords = axis.getMinorTicksCoords();\n\n if (!minorTicksCoords.length) {\n return;\n }\n\n var lineStyleModel = minorTickModel.getModel('lineStyle');\n var tickEndCoord = opt.tickDirection * minorTickModel.get('length');\n var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\n stroke: axisModel.get('axisLine.lineStyle.color')\n }));\n\n for (var i = 0; i < minorTicksCoords.length; i++) {\n var minorTicksEls = createTicks(minorTicksCoords[i], axisBuilder._transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\n\n for (var k = 0; k < minorTicksEls.length; k++) {\n axisBuilder.group.add(minorTicksEls[k]);\n }\n }\n}\n\nfunction buildAxisLabel(axisBuilder, axisModel, opt) {\n var axis = axisModel.axis;\n var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show'));\n\n if (!show || axis.scale.isBlank()) {\n return;\n }\n\n var labelModel = axisModel.getModel('axisLabel');\n var labelMargin = labelModel.get('margin');\n var labels = axis.getViewLabels(); // Special label rotate.\n\n var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI / 180;\n var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\n var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\n var labelEls = [];\n var silent = isLabelSilent(axisModel);\n var triggerEvent = axisModel.get('triggerEvent');\n each(labels, function (labelItem, index) {\n var tickValue = labelItem.tickValue;\n var formattedLabel = labelItem.formattedLabel;\n var rawLabel = labelItem.rawLabel;\n var itemLabelModel = labelModel;\n\n if (rawCategoryData && rawCategoryData[tickValue] && rawCategoryData[tickValue].textStyle) {\n itemLabelModel = new Model(rawCategoryData[tickValue].textStyle, labelModel, axisModel.ecModel);\n }\n\n var textColor = itemLabelModel.getTextColor() || axisModel.get('axisLine.lineStyle.color');\n var tickCoord = axis.dataToCoord(tickValue);\n var pos = [tickCoord, opt.labelOffset + opt.labelDirection * labelMargin];\n var textEl = new graphic.Text({\n // Id for animation\n anid: 'label_' + tickValue,\n position: pos,\n rotation: labelLayout.rotation,\n silent: silent,\n z2: 10\n });\n graphic.setTextStyle(textEl.style, itemLabelModel, {\n text: formattedLabel,\n textAlign: itemLabelModel.getShallow('align', true) || labelLayout.textAlign,\n textVerticalAlign: itemLabelModel.getShallow('verticalAlign', true) || itemLabelModel.getShallow('baseline', true) || labelLayout.textVerticalAlign,\n textFill: typeof textColor === 'function' ? textColor( // (1) In category axis with data zoom, tick is not the original\n // index of axis.data. So tick should not be exposed to user\n // in category axis.\n // (2) Compatible with previous version, which always use formatted label as\n // input. But in interval scale the formatted label is like '223,445', which\n // maked user repalce ','. So we modify it to return original val but remain\n // it as 'string' to avoid error in replacing.\n axis.type === 'category' ? rawLabel : axis.type === 'value' ? tickValue + '' : tickValue, index) : textColor\n }); // Pack data for mouse event\n\n if (triggerEvent) {\n textEl.eventData = makeAxisEventDataBase(axisModel);\n textEl.eventData.targetType = 'axisLabel';\n textEl.eventData.value = rawLabel;\n } // FIXME\n\n\n axisBuilder._dumbGroup.add(textEl);\n\n textEl.updateTransform();\n labelEls.push(textEl);\n axisBuilder.group.add(textEl);\n textEl.decomposeTransform();\n });\n return labelEls;\n}\n\nvar _default = AxisBuilder;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar features = {};\n\nfunction register(name, ctor) {\n features[name] = ctor;\n}\n\nfunction get(name) {\n return features[name];\n}\n\nexports.register = register;\nexports.get = get;","/**\n * Event Mixin\n * @module zrender/mixin/Eventful\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n * pissang (https://www.github.com/pissang)\n */\nvar arrySlice = Array.prototype.slice;\n/**\n * Event dispatcher.\n *\n * @alias module:zrender/mixin/Eventful\n * @constructor\n * @param {Object} [eventProcessor] The object eventProcessor is the scope when\n * `eventProcessor.xxx` called.\n * @param {Function} [eventProcessor.normalizeQuery]\n * param: {string|Object} Raw query.\n * return: {string|Object} Normalized query.\n * @param {Function} [eventProcessor.filter] Event will be dispatched only\n * if it returns `true`.\n * param: {string} eventType\n * param: {string|Object} query\n * return: {boolean}\n * @param {Function} [eventProcessor.afterTrigger] Called after all handlers called.\n * param: {string} eventType\n */\n\nvar Eventful = function (eventProcessor) {\n this._$handlers = {};\n this._$eventProcessor = eventProcessor;\n};\n\nEventful.prototype = {\n constructor: Eventful,\n\n /**\n * The handler can only be triggered once, then removed.\n *\n * @param {string} event The event name.\n * @param {string|Object} [query] Condition used on event filter.\n * @param {Function} handler The event handler.\n * @param {Object} context\n */\n one: function (event, query, handler, context) {\n return on(this, event, query, handler, context, true);\n },\n\n /**\n * Bind a handler.\n *\n * @param {string} event The event name.\n * @param {string|Object} [query] Condition used on event filter.\n * @param {Function} handler The event handler.\n * @param {Object} [context]\n */\n on: function (event, query, handler, context) {\n return on(this, event, query, handler, context, false);\n },\n\n /**\n * Whether any handler has bound.\n *\n * @param {string} event\n * @return {boolean}\n */\n isSilent: function (event) {\n var _h = this._$handlers;\n return !_h[event] || !_h[event].length;\n },\n\n /**\n * Unbind a event.\n *\n * @param {string} [event] The event name.\n * If no `event` input, \"off\" all listeners.\n * @param {Function} [handler] The event handler.\n * If no `handler` input, \"off\" all listeners of the `event`.\n */\n off: function (event, handler) {\n var _h = this._$handlers;\n\n if (!event) {\n this._$handlers = {};\n return this;\n }\n\n if (handler) {\n if (_h[event]) {\n var newList = [];\n\n for (var i = 0, l = _h[event].length; i < l; i++) {\n if (_h[event][i].h !== handler) {\n newList.push(_h[event][i]);\n }\n }\n\n _h[event] = newList;\n }\n\n if (_h[event] && _h[event].length === 0) {\n delete _h[event];\n }\n } else {\n delete _h[event];\n }\n\n return this;\n },\n\n /**\n * Dispatch a event.\n *\n * @param {string} type The event name.\n */\n trigger: function (type) {\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n\n if (_h) {\n var args = arguments;\n var argLen = args.length;\n\n if (argLen > 3) {\n args = arrySlice.call(args, 1);\n }\n\n var len = _h.length;\n\n for (var i = 0; i < len;) {\n var hItem = _h[i];\n\n if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) {\n i++;\n continue;\n } // Optimize advise from backbone\n\n\n switch (argLen) {\n case 1:\n hItem.h.call(hItem.ctx);\n break;\n\n case 2:\n hItem.h.call(hItem.ctx, args[1]);\n break;\n\n case 3:\n hItem.h.call(hItem.ctx, args[1], args[2]);\n break;\n\n default:\n // have more than 2 given arguments\n hItem.h.apply(hItem.ctx, args);\n break;\n }\n\n if (hItem.one) {\n _h.splice(i, 1);\n\n len--;\n } else {\n i++;\n }\n }\n }\n\n eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type);\n return this;\n },\n\n /**\n * Dispatch a event with context, which is specified at the last parameter.\n *\n * @param {string} type The event name.\n */\n triggerWithContext: function (type) {\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n\n if (_h) {\n var args = arguments;\n var argLen = args.length;\n\n if (argLen > 4) {\n args = arrySlice.call(args, 1, args.length - 1);\n }\n\n var ctx = args[args.length - 1];\n var len = _h.length;\n\n for (var i = 0; i < len;) {\n var hItem = _h[i];\n\n if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) {\n i++;\n continue;\n } // Optimize advise from backbone\n\n\n switch (argLen) {\n case 1:\n hItem.h.call(ctx);\n break;\n\n case 2:\n hItem.h.call(ctx, args[1]);\n break;\n\n case 3:\n hItem.h.call(ctx, args[1], args[2]);\n break;\n\n default:\n // have more than 2 given arguments\n hItem.h.apply(ctx, args);\n break;\n }\n\n if (hItem.one) {\n _h.splice(i, 1);\n\n len--;\n } else {\n i++;\n }\n }\n }\n\n eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type);\n return this;\n }\n};\n\nfunction normalizeQuery(host, query) {\n var eventProcessor = host._$eventProcessor;\n\n if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\n query = eventProcessor.normalizeQuery(query);\n }\n\n return query;\n}\n\nfunction on(eventful, event, query, handler, context, isOnce) {\n var _h = eventful._$handlers;\n\n if (typeof query === 'function') {\n context = handler;\n handler = query;\n query = null;\n }\n\n if (!handler || !event) {\n return eventful;\n }\n\n query = normalizeQuery(eventful, query);\n\n if (!_h[event]) {\n _h[event] = [];\n }\n\n for (var i = 0; i < _h[event].length; i++) {\n if (_h[event][i].h === handler) {\n return eventful;\n }\n }\n\n var wrap = {\n h: handler,\n one: isOnce,\n query: query,\n ctx: context || eventful,\n // FIXME\n // Do not publish this feature util it is proved that it makes sense.\n callAtLast: handler.zrEventfulCallAtLast\n };\n var lastIndex = _h[event].length - 1;\n var lastWrap = _h[event][lastIndex];\n lastWrap && lastWrap.callAtLast ? _h[event].splice(lastIndex, 0, wrap) : _h[event].push(wrap);\n return eventful;\n} // ----------------------\n// The events in zrender\n// ----------------------\n\n/**\n * @event module:zrender/mixin/Eventful#onclick\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseout\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousemove\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousewheel\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousedown\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseup\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrag\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragstart\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragend\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragenter\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragleave\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrop\n * @type {Function}\n * @default null\n */\n\n\nvar _default = Eventful;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar textContain = require(\"../contain/text\");\n\nvar textHelper = require(\"./helper/text\");\n\nvar _constant = require(\"./constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\n\n/**\n * @alias zrender/graphic/Text\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nvar Text = function (opts) {\n // jshint ignore:line\n Displayable.call(this, opts);\n};\n\nText.prototype = {\n constructor: Text,\n type: 'text',\n brush: function (ctx, prevEl) {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true); // Use props with prefix 'text'.\n\n style.fill = style.stroke = style.shadowBlur = style.shadowColor = style.shadowOffsetX = style.shadowOffsetY = null;\n var text = style.text; // Convert to string\n\n text != null && (text += ''); // Do not apply style.bind in Text node. Because the real bind job\n // is in textHelper.renderText, and performance of text render should\n // be considered.\n // style.bind(ctx, this, prevEl);\n\n if (!textHelper.needDrawText(text, style)) {\n // The current el.style is not applied\n // and should not be used as cache.\n ctx.__attrCachedBy = ContextCachedBy.NONE;\n return;\n }\n\n this.setTransform(ctx);\n textHelper.renderText(this, ctx, text, style, null, prevEl);\n this.restoreTransform(ctx);\n },\n getBoundingRect: function () {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true);\n\n if (!this._rect) {\n var text = style.text;\n text != null ? text += '' : text = '';\n var rect = textContain.getBoundingRect(style.text + '', style.font, style.textAlign, style.textVerticalAlign, style.textPadding, style.textLineHeight, style.rich);\n rect.x += style.x || 0;\n rect.y += style.y || 0;\n\n if (textHelper.getStroke(style.textStroke, style.textStrokeWidth)) {\n var w = style.textStrokeWidth;\n rect.x -= w / 2;\n rect.y -= w / 2;\n rect.width += w;\n rect.height += w;\n }\n\n this._rect = rect;\n }\n\n return this._rect;\n }\n};\nzrUtil.inherits(Text, Displayable);\nvar _default = Text;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isTypedArray = _util.isTypedArray;\nvar extend = _util.extend;\nvar assert = _util.assert;\nvar each = _util.each;\nvar isObject = _util.isObject;\n\nvar _model = require(\"../../util/model\");\n\nvar getDataItemValue = _model.getDataItemValue;\nvar isDataItemOption = _model.isDataItemOption;\n\nvar _number = require(\"../../util/number\");\n\nvar parseDate = _number.parseDate;\n\nvar Source = require(\"../Source\");\n\nvar _sourceType = require(\"./sourceType\");\n\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO\n// ??? refactor? check the outer usage of data provider.\n// merge with defaultDimValueGetter?\n\n/**\n * If normal array used, mutable chunk size is supported.\n * If typed array used, chunk size must be fixed.\n */\nfunction DefaultDataProvider(source, dimSize) {\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n this._source = source;\n var data = this._data = source.data;\n var sourceFormat = source.sourceFormat; // Typed array. TODO IE10+?\n\n if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\n this._offset = 0;\n this._dimSize = dimSize;\n this._data = data;\n }\n\n var methods = providerMethods[sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + '_' + source.seriesLayoutBy : sourceFormat];\n extend(this, methods);\n}\n\nvar providerProto = DefaultDataProvider.prototype; // If data is pure without style configuration\n\nproviderProto.pure = false; // If data is persistent and will not be released after use.\n\nproviderProto.persistent = true; // ???! FIXME legacy data provider do not has method getSource\n\nproviderProto.getSource = function () {\n return this._source;\n};\n\nvar providerMethods = {\n 'arrayRows_column': {\n pure: true,\n count: function () {\n return Math.max(0, this._data.length - this._source.startIndex);\n },\n getItem: function (idx) {\n return this._data[idx + this._source.startIndex];\n },\n appendData: appendDataSimply\n },\n 'arrayRows_row': {\n pure: true,\n count: function () {\n var row = this._data[0];\n return row ? Math.max(0, row.length - this._source.startIndex) : 0;\n },\n getItem: function (idx) {\n idx += this._source.startIndex;\n var item = [];\n var data = this._data;\n\n for (var i = 0; i < data.length; i++) {\n var row = data[i];\n item.push(row ? row[idx] : null);\n }\n\n return item;\n },\n appendData: function () {\n throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".');\n }\n },\n 'objectRows': {\n pure: true,\n count: countSimply,\n getItem: getItemSimply,\n appendData: appendDataSimply\n },\n 'keyedColumns': {\n pure: true,\n count: function () {\n var dimName = this._source.dimensionsDefine[0].name;\n var col = this._data[dimName];\n return col ? col.length : 0;\n },\n getItem: function (idx) {\n var item = [];\n var dims = this._source.dimensionsDefine;\n\n for (var i = 0; i < dims.length; i++) {\n var col = this._data[dims[i].name];\n item.push(col ? col[idx] : null);\n }\n\n return item;\n },\n appendData: function (newData) {\n var data = this._data;\n each(newData, function (newCol, key) {\n var oldCol = data[key] || (data[key] = []);\n\n for (var i = 0; i < (newCol || []).length; i++) {\n oldCol.push(newCol[i]);\n }\n });\n }\n },\n 'original': {\n count: countSimply,\n getItem: getItemSimply,\n appendData: appendDataSimply\n },\n 'typedArray': {\n persistent: false,\n pure: true,\n count: function () {\n return this._data ? this._data.length / this._dimSize : 0;\n },\n getItem: function (idx, out) {\n idx = idx - this._offset;\n out = out || [];\n var offset = this._dimSize * idx;\n\n for (var i = 0; i < this._dimSize; i++) {\n out[i] = this._data[offset + i];\n }\n\n return out;\n },\n appendData: function (newData) {\n this._data = newData;\n },\n // Clean self if data is already used.\n clean: function () {\n // PENDING\n this._offset += this.count();\n this._data = null;\n }\n }\n};\n\nfunction countSimply() {\n return this._data.length;\n}\n\nfunction getItemSimply(idx) {\n return this._data[idx];\n}\n\nfunction appendDataSimply(newData) {\n for (var i = 0; i < newData.length; i++) {\n this._data.push(newData[i]);\n }\n}\n\nvar rawValueGetters = {\n arrayRows: getRawValueSimply,\n objectRows: function (dataItem, dataIndex, dimIndex, dimName) {\n return dimIndex != null ? dataItem[dimName] : dataItem;\n },\n keyedColumns: getRawValueSimply,\n original: function (dataItem, dataIndex, dimIndex, dimName) {\n // FIXME\n // In some case (markpoint in geo (geo-map.html)), dataItem\n // is {coord: [...]}\n var value = getDataItemValue(dataItem);\n return dimIndex == null || !(value instanceof Array) ? value : value[dimIndex];\n },\n typedArray: getRawValueSimply\n};\n\nfunction getRawValueSimply(dataItem, dataIndex, dimIndex, dimName) {\n return dimIndex != null ? dataItem[dimIndex] : dataItem;\n}\n\nvar defaultDimValueGetters = {\n arrayRows: getDimValueSimply,\n objectRows: function (dataItem, dimName, dataIndex, dimIndex) {\n return converDataValue(dataItem[dimName], this._dimensionInfos[dimName]);\n },\n keyedColumns: getDimValueSimply,\n original: function (dataItem, dimName, dataIndex, dimIndex) {\n // Performance sensitive, do not use modelUtil.getDataItemValue.\n // If dataItem is an plain object with no value field, the var `value`\n // will be assigned with the object, but it will be tread correctly\n // in the `convertDataValue`.\n var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value); // If any dataItem is like { value: 10 }\n\n if (!this._rawData.pure && isDataItemOption(dataItem)) {\n this.hasItemOption = true;\n }\n\n return converDataValue(value instanceof Array ? value[dimIndex] // If value is a single number or something else not array.\n : value, this._dimensionInfos[dimName]);\n },\n typedArray: function (dataItem, dimName, dataIndex, dimIndex) {\n return dataItem[dimIndex];\n }\n};\n\nfunction getDimValueSimply(dataItem, dimName, dataIndex, dimIndex) {\n return converDataValue(dataItem[dimIndex], this._dimensionInfos[dimName]);\n}\n/**\n * This helper method convert value in data.\n * @param {string|number|Date} value\n * @param {Object|string} [dimInfo] If string (like 'x'), dimType defaults 'number'.\n * If \"dimInfo.ordinalParseAndSave\", ordinal value can be parsed.\n */\n\n\nfunction converDataValue(value, dimInfo) {\n // Performance sensitive.\n var dimType = dimInfo && dimInfo.type;\n\n if (dimType === 'ordinal') {\n // If given value is a category string\n var ordinalMeta = dimInfo && dimInfo.ordinalMeta;\n return ordinalMeta ? ordinalMeta.parseAndCollect(value) : value;\n }\n\n if (dimType === 'time' // spead up when using timestamp\n && typeof value !== 'number' && value != null && value !== '-') {\n value = +parseDate(value);\n } // dimType defaults 'number'.\n // If dimType is not ordinal and value is null or undefined or NaN or '-',\n // parse to NaN.\n\n\n return value == null || value === '' ? NaN // If string (like '-'), using '+' parse to NaN\n // If object, also parse to NaN\n : +value;\n} // ??? FIXME can these logic be more neat: getRawValue, getRawDataItem,\n// Consider persistent.\n// Caution: why use raw value to display on label or tooltip?\n// A reason is to avoid format. For example time value we do not know\n// how to format is expected. More over, if stack is used, calculated\n// value may be 0.91000000001, which have brings trouble to display.\n// TODO: consider how to treat null/undefined/NaN when display?\n\n/**\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string|number} [dim] dimName or dimIndex\n * @return {Array.|string|number} can be null/undefined.\n */\n\n\nfunction retrieveRawValue(data, dataIndex, dim) {\n if (!data) {\n return;\n } // Consider data may be not persistent.\n\n\n var dataItem = data.getRawDataItem(dataIndex);\n\n if (dataItem == null) {\n return;\n }\n\n var sourceFormat = data.getProvider().getSource().sourceFormat;\n var dimName;\n var dimIndex;\n var dimInfo = data.getDimensionInfo(dim);\n\n if (dimInfo) {\n dimName = dimInfo.name;\n dimIndex = dimInfo.index;\n }\n\n return rawValueGetters[sourceFormat](dataItem, dataIndex, dimIndex, dimName);\n}\n/**\n * Compatible with some cases (in pie, map) like:\n * data: [{name: 'xx', value: 5, selected: true}, ...]\n * where only sourceFormat is 'original' and 'objectRows' supported.\n *\n * ??? TODO\n * Supported detail options in data item when using 'arrayRows'.\n *\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string} attr like 'selected'\n */\n\n\nfunction retrieveRawAttr(data, dataIndex, attr) {\n if (!data) {\n return;\n }\n\n var sourceFormat = data.getProvider().getSource().sourceFormat;\n\n if (sourceFormat !== SOURCE_FORMAT_ORIGINAL && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {\n return;\n }\n\n var dataItem = data.getRawDataItem(dataIndex);\n\n if (sourceFormat === SOURCE_FORMAT_ORIGINAL && !isObject(dataItem)) {\n dataItem = null;\n }\n\n if (dataItem) {\n return dataItem[attr];\n }\n}\n\nexports.DefaultDataProvider = DefaultDataProvider;\nexports.defaultDimValueGetters = defaultDimValueGetters;\nexports.retrieveRawValue = retrieveRawValue;\nexports.retrieveRawAttr = retrieveRawAttr;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction defaultKeyGetter(item) {\n return item;\n}\n/**\n * @param {Array} oldArr\n * @param {Array} newArr\n * @param {Function} oldKeyGetter\n * @param {Function} newKeyGetter\n * @param {Object} [context] Can be visited by this.context in callback.\n */\n\n\nfunction DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context) {\n this._old = oldArr;\n this._new = newArr;\n this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\n this._newKeyGetter = newKeyGetter || defaultKeyGetter;\n this.context = context;\n}\n\nDataDiffer.prototype = {\n constructor: DataDiffer,\n\n /**\n * Callback function when add a data\n */\n add: function (func) {\n this._add = func;\n return this;\n },\n\n /**\n * Callback function when update a data\n */\n update: function (func) {\n this._update = func;\n return this;\n },\n\n /**\n * Callback function when remove a data\n */\n remove: function (func) {\n this._remove = func;\n return this;\n },\n execute: function () {\n var oldArr = this._old;\n var newArr = this._new;\n var oldDataIndexMap = {};\n var newDataIndexMap = {};\n var oldDataKeyArr = [];\n var newDataKeyArr = [];\n var i;\n initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter', this);\n initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter', this);\n\n for (i = 0; i < oldArr.length; i++) {\n var key = oldDataKeyArr[i];\n var idx = newDataIndexMap[key]; // idx can never be empty array here. see 'set null' logic below.\n\n if (idx != null) {\n // Consider there is duplicate key (for example, use dataItem.name as key).\n // We should make sure every item in newArr and oldArr can be visited.\n var len = idx.length;\n\n if (len) {\n len === 1 && (newDataIndexMap[key] = null);\n idx = idx.shift();\n } else {\n newDataIndexMap[key] = null;\n }\n\n this._update && this._update(idx, i);\n } else {\n this._remove && this._remove(i);\n }\n }\n\n for (var i = 0; i < newDataKeyArr.length; i++) {\n var key = newDataKeyArr[i];\n\n if (newDataIndexMap.hasOwnProperty(key)) {\n var idx = newDataIndexMap[key];\n\n if (idx == null) {\n continue;\n } // idx can never be empty array here. see 'set null' logic above.\n\n\n if (!idx.length) {\n this._add && this._add(idx);\n } else {\n for (var j = 0, len = idx.length; j < len; j++) {\n this._add && this._add(idx[j]);\n }\n }\n }\n }\n }\n};\n\nfunction initIndexMap(arr, map, keyArr, keyGetterName, dataDiffer) {\n for (var i = 0; i < arr.length; i++) {\n // Add prefix to avoid conflict with Object.prototype.\n var key = '_ec_' + dataDiffer[keyGetterName](arr[i], i);\n var existence = map[key];\n\n if (existence == null) {\n keyArr.push(key);\n map[key] = i;\n } else {\n if (!existence.length) {\n map[key] = existence = [existence];\n }\n\n existence.push(i);\n }\n }\n}\n\nvar _default = DataDiffer;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isFunction = _util.isFunction;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(seriesType, defaultSymbolType, legendSymbol) {\n // Encoding visual for all series include which is filtered for legend drawing\n return {\n seriesType: seriesType,\n // For legend.\n performRawSeries: true,\n reset: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var symbolType = seriesModel.get('symbol');\n var symbolSize = seriesModel.get('symbolSize');\n var keepAspect = seriesModel.get('symbolKeepAspect');\n var hasSymbolTypeCallback = isFunction(symbolType);\n var hasSymbolSizeCallback = isFunction(symbolSize);\n var hasCallback = hasSymbolTypeCallback || hasSymbolSizeCallback;\n var seriesSymbol = !hasSymbolTypeCallback && symbolType ? symbolType : defaultSymbolType;\n var seriesSymbolSize = !hasSymbolSizeCallback ? symbolSize : null;\n data.setVisual({\n legendSymbol: legendSymbol || seriesSymbol,\n // If seting callback functions on `symbol` or `symbolSize`, for simplicity and avoiding\n // to bring trouble, we do not pick a reuslt from one of its calling on data item here,\n // but just use the default value. Callback on `symbol` or `symbolSize` is convenient in\n // some cases but generally it is not recommanded.\n symbol: seriesSymbol,\n symbolSize: seriesSymbolSize,\n symbolKeepAspect: keepAspect\n }); // Only visible series has each data be visual encoded\n\n if (ecModel.isSeriesFiltered(seriesModel)) {\n return;\n }\n\n function dataEach(data, idx) {\n if (hasCallback) {\n var rawValue = seriesModel.getRawValue(idx);\n var params = seriesModel.getDataParams(idx);\n hasSymbolTypeCallback && data.setItemVisual(idx, 'symbol', symbolType(rawValue, params));\n hasSymbolSizeCallback && data.setItemVisual(idx, 'symbolSize', symbolSize(rawValue, params));\n }\n\n if (data.hasItemOption) {\n var itemModel = data.getItemModel(idx);\n var itemSymbolType = itemModel.getShallow('symbol', true);\n var itemSymbolSize = itemModel.getShallow('symbolSize', true);\n var itemSymbolKeepAspect = itemModel.getShallow('symbolKeepAspect', true); // If has item symbol\n\n if (itemSymbolType != null) {\n data.setItemVisual(idx, 'symbol', itemSymbolType);\n }\n\n if (itemSymbolSize != null) {\n // PENDING Transform symbolSize ?\n data.setItemVisual(idx, 'symbolSize', itemSymbolSize);\n }\n\n if (itemSymbolKeepAspect != null) {\n data.setItemVisual(idx, 'symbolKeepAspect', itemSymbolKeepAspect);\n }\n }\n }\n\n return {\n dataEach: data.hasItemOption || hasCallback ? dataEach : null\n };\n }\n };\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar axisPointerModelHelper = require(\"../axisPointer/modelHelper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Base class of AxisView.\n */\nvar AxisView = echarts.extendComponentView({\n type: 'axis',\n\n /**\n * @private\n */\n _axisPointer: null,\n\n /**\n * @protected\n * @type {string}\n */\n axisPointerClass: null,\n\n /**\n * @override\n */\n render: function (axisModel, ecModel, api, payload) {\n // FIXME\n // This process should proformed after coordinate systems updated\n // (axis scale updated), and should be performed each time update.\n // So put it here temporarily, although it is not appropriate to\n // put a model-writing procedure in `view`.\n this.axisPointerClass && axisPointerModelHelper.fixValue(axisModel);\n AxisView.superApply(this, 'render', arguments);\n updateAxisPointer(this, axisModel, ecModel, api, payload, true);\n },\n\n /**\n * Action handler.\n * @public\n * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} payload\n */\n updateAxisPointer: function (axisModel, ecModel, api, payload, force) {\n updateAxisPointer(this, axisModel, ecModel, api, payload, false);\n },\n\n /**\n * @override\n */\n remove: function (ecModel, api) {\n var axisPointer = this._axisPointer;\n axisPointer && axisPointer.remove(api);\n AxisView.superApply(this, 'remove', arguments);\n },\n\n /**\n * @override\n */\n dispose: function (ecModel, api) {\n disposeAxisPointer(this, api);\n AxisView.superApply(this, 'dispose', arguments);\n }\n});\n\nfunction updateAxisPointer(axisView, axisModel, ecModel, api, payload, forceRender) {\n var Clazz = AxisView.getAxisPointerClass(axisView.axisPointerClass);\n\n if (!Clazz) {\n return;\n }\n\n var axisPointerModel = axisPointerModelHelper.getAxisPointerModel(axisModel);\n axisPointerModel ? (axisView._axisPointer || (axisView._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : disposeAxisPointer(axisView, api);\n}\n\nfunction disposeAxisPointer(axisView, ecModel, api) {\n var axisPointer = axisView._axisPointer;\n axisPointer && axisPointer.dispose(ecModel, api);\n axisView._axisPointer = null;\n}\n\nvar axisPointerClazz = [];\n\nAxisView.registerAxisPointerClass = function (type, clazz) {\n axisPointerClazz[type] = clazz;\n};\n\nAxisView.getAxisPointerClass = function (type) {\n return type && axisPointerClazz[type];\n};\n\nvar _default = AxisView;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction retrieveTargetInfo(payload, validPayloadTypes, seriesModel) {\n if (payload && zrUtil.indexOf(validPayloadTypes, payload.type) >= 0) {\n var root = seriesModel.getData().tree.root;\n var targetNode = payload.targetNode;\n\n if (typeof targetNode === 'string') {\n targetNode = root.getNodeById(targetNode);\n }\n\n if (targetNode && root.contains(targetNode)) {\n return {\n node: targetNode\n };\n }\n\n var targetNodeId = payload.targetNodeId;\n\n if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) {\n return {\n node: targetNode\n };\n }\n }\n} // Not includes the given node at the last item.\n\n\nfunction getPathToRoot(node) {\n var path = [];\n\n while (node) {\n node = node.parentNode;\n node && path.push(node);\n }\n\n return path.reverse();\n}\n\nfunction aboveViewRoot(viewRoot, node) {\n var viewPath = getPathToRoot(viewRoot);\n return zrUtil.indexOf(viewPath, node) >= 0;\n} // From root to the input node (the input node will be included).\n\n\nfunction wrapTreePathInfo(node, seriesModel) {\n var treePathInfo = [];\n\n while (node) {\n var nodeDataIndex = node.dataIndex;\n treePathInfo.push({\n name: node.name,\n dataIndex: nodeDataIndex,\n value: seriesModel.getRawValue(nodeDataIndex)\n });\n node = node.parentNode;\n }\n\n treePathInfo.reverse();\n return treePathInfo;\n}\n\nexports.retrieveTargetInfo = retrieveTargetInfo;\nexports.getPathToRoot = getPathToRoot;\nexports.aboveViewRoot = aboveViewRoot;\nexports.wrapTreePathInfo = wrapTreePathInfo;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar zrColor = require(\"zrender/lib/tool/color\");\n\nvar _number = require(\"../util/number\");\n\nvar linearMap = _number.linearMap;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar CATEGORY_DEFAULT_VISUAL_INDEX = -1;\n/**\n * @param {Object} option\n * @param {string} [option.type] See visualHandlers.\n * @param {string} [option.mappingMethod] 'linear' or 'piecewise' or 'category' or 'fixed'\n * @param {Array.=} [option.dataExtent] [minExtent, maxExtent],\n * required when mappingMethod is 'linear'\n * @param {Array.=} [option.pieceList] [\n * {value: someValue},\n * {interval: [min1, max1], visual: {...}},\n * {interval: [min2, max2]}\n * ],\n * required when mappingMethod is 'piecewise'.\n * Visual for only each piece can be specified.\n * @param {Array.=} [option.categories] ['cate1', 'cate2']\n * required when mappingMethod is 'category'.\n * If no option.categories, categories is set\n * as [0, 1, 2, ...].\n * @param {boolean} [option.loop=false] Whether loop mapping when mappingMethod is 'category'.\n * @param {(Array|Object|*)} [option.visual] Visual data.\n * when mappingMethod is 'category',\n * visual data can be array or object\n * (like: {cate1: '#222', none: '#fff'})\n * or primary types (which represents\n * defualt category visual), otherwise visual\n * can be array or primary (which will be\n * normalized to array).\n *\n */\n\nvar VisualMapping = function (option) {\n var mappingMethod = option.mappingMethod;\n var visualType = option.type;\n /**\n * @readOnly\n * @type {Object}\n */\n\n var thisOption = this.option = zrUtil.clone(option);\n /**\n * @readOnly\n * @type {string}\n */\n\n this.type = visualType;\n /**\n * @readOnly\n * @type {string}\n */\n\n this.mappingMethod = mappingMethod;\n /**\n * @private\n * @type {Function}\n */\n\n this._normalizeData = normalizers[mappingMethod];\n var visualHandler = visualHandlers[visualType];\n /**\n * @public\n * @type {Function}\n */\n\n this.applyVisual = visualHandler.applyVisual;\n /**\n * @public\n * @type {Function}\n */\n\n this.getColorMapper = visualHandler.getColorMapper;\n /**\n * @private\n * @type {Function}\n */\n\n this._doMap = visualHandler._doMap[mappingMethod];\n\n if (mappingMethod === 'piecewise') {\n normalizeVisualRange(thisOption);\n preprocessForPiecewise(thisOption);\n } else if (mappingMethod === 'category') {\n thisOption.categories ? preprocessForSpecifiedCategory(thisOption) // categories is ordinal when thisOption.categories not specified,\n // which need no more preprocess except normalize visual.\n : normalizeVisualRange(thisOption, true);\n } else {\n // mappingMethod === 'linear' or 'fixed'\n zrUtil.assert(mappingMethod !== 'linear' || thisOption.dataExtent);\n normalizeVisualRange(thisOption);\n }\n};\n\nVisualMapping.prototype = {\n constructor: VisualMapping,\n mapValueToVisual: function (value) {\n var normalized = this._normalizeData(value);\n\n return this._doMap(normalized, value);\n },\n getNormalizer: function () {\n return zrUtil.bind(this._normalizeData, this);\n }\n};\nvar visualHandlers = VisualMapping.visualHandlers = {\n color: {\n applyVisual: makeApplyVisual('color'),\n\n /**\n * Create a mapper function\n * @return {Function}\n */\n getColorMapper: function () {\n var thisOption = this.option;\n return zrUtil.bind(thisOption.mappingMethod === 'category' ? function (value, isNormalized) {\n !isNormalized && (value = this._normalizeData(value));\n return doMapCategory.call(this, value);\n } : function (value, isNormalized, out) {\n // If output rgb array\n // which will be much faster and useful in pixel manipulation\n var returnRGBArray = !!out;\n !isNormalized && (value = this._normalizeData(value));\n out = zrColor.fastLerp(value, thisOption.parsedVisual, out);\n return returnRGBArray ? out : zrColor.stringify(out, 'rgba');\n }, this);\n },\n _doMap: {\n linear: function (normalized) {\n return zrColor.stringify(zrColor.fastLerp(normalized, this.option.parsedVisual), 'rgba');\n },\n category: doMapCategory,\n piecewise: function (normalized, value) {\n var result = getSpecifiedVisual.call(this, value);\n\n if (result == null) {\n result = zrColor.stringify(zrColor.fastLerp(normalized, this.option.parsedVisual), 'rgba');\n }\n\n return result;\n },\n fixed: doMapFixed\n }\n },\n colorHue: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyHSL(color, value);\n }),\n colorSaturation: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyHSL(color, null, value);\n }),\n colorLightness: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyHSL(color, null, null, value);\n }),\n colorAlpha: makePartialColorVisualHandler(function (color, value) {\n return zrColor.modifyAlpha(color, value);\n }),\n opacity: {\n applyVisual: makeApplyVisual('opacity'),\n _doMap: makeDoMap([0, 1])\n },\n liftZ: {\n applyVisual: makeApplyVisual('liftZ'),\n _doMap: {\n linear: doMapFixed,\n category: doMapFixed,\n piecewise: doMapFixed,\n fixed: doMapFixed\n }\n },\n symbol: {\n applyVisual: function (value, getter, setter) {\n var symbolCfg = this.mapValueToVisual(value);\n\n if (zrUtil.isString(symbolCfg)) {\n setter('symbol', symbolCfg);\n } else if (isObject(symbolCfg)) {\n for (var name in symbolCfg) {\n if (symbolCfg.hasOwnProperty(name)) {\n setter(name, symbolCfg[name]);\n }\n }\n }\n },\n _doMap: {\n linear: doMapToArray,\n category: doMapCategory,\n piecewise: function (normalized, value) {\n var result = getSpecifiedVisual.call(this, value);\n\n if (result == null) {\n result = doMapToArray.call(this, normalized);\n }\n\n return result;\n },\n fixed: doMapFixed\n }\n },\n symbolSize: {\n applyVisual: makeApplyVisual('symbolSize'),\n _doMap: makeDoMap([0, 1])\n }\n};\n\nfunction preprocessForPiecewise(thisOption) {\n var pieceList = thisOption.pieceList;\n thisOption.hasSpecialVisual = false;\n zrUtil.each(pieceList, function (piece, index) {\n piece.originIndex = index; // piece.visual is \"result visual value\" but not\n // a visual range, so it does not need to be normalized.\n\n if (piece.visual != null) {\n thisOption.hasSpecialVisual = true;\n }\n });\n}\n\nfunction preprocessForSpecifiedCategory(thisOption) {\n // Hash categories.\n var categories = thisOption.categories;\n var visual = thisOption.visual;\n var categoryMap = thisOption.categoryMap = {};\n each(categories, function (cate, index) {\n categoryMap[cate] = index;\n }); // Process visual map input.\n\n if (!zrUtil.isArray(visual)) {\n var visualArr = [];\n\n if (zrUtil.isObject(visual)) {\n each(visual, function (v, cate) {\n var index = categoryMap[cate];\n visualArr[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX] = v;\n });\n } else {\n // Is primary type, represents default visual.\n visualArr[CATEGORY_DEFAULT_VISUAL_INDEX] = visual;\n }\n\n visual = setVisualToOption(thisOption, visualArr);\n } // Remove categories that has no visual,\n // then we can mapping them to CATEGORY_DEFAULT_VISUAL_INDEX.\n\n\n for (var i = categories.length - 1; i >= 0; i--) {\n if (visual[i] == null) {\n delete categoryMap[categories[i]];\n categories.pop();\n }\n }\n}\n\nfunction normalizeVisualRange(thisOption, isCategory) {\n var visual = thisOption.visual;\n var visualArr = [];\n\n if (zrUtil.isObject(visual)) {\n each(visual, function (v) {\n visualArr.push(v);\n });\n } else if (visual != null) {\n visualArr.push(visual);\n }\n\n var doNotNeedPair = {\n color: 1,\n symbol: 1\n };\n\n if (!isCategory && visualArr.length === 1 && !doNotNeedPair.hasOwnProperty(thisOption.type)) {\n // Do not care visualArr.length === 0, which is illegal.\n visualArr[1] = visualArr[0];\n }\n\n setVisualToOption(thisOption, visualArr);\n}\n\nfunction makePartialColorVisualHandler(applyValue) {\n return {\n applyVisual: function (value, getter, setter) {\n value = this.mapValueToVisual(value); // Must not be array value\n\n setter('color', applyValue(getter('color'), value));\n },\n _doMap: makeDoMap([0, 1])\n };\n}\n\nfunction doMapToArray(normalized) {\n var visual = this.option.visual;\n return visual[Math.round(linearMap(normalized, [0, 1], [0, visual.length - 1], true))] || {};\n}\n\nfunction makeApplyVisual(visualType) {\n return function (value, getter, setter) {\n setter(visualType, this.mapValueToVisual(value));\n };\n}\n\nfunction doMapCategory(normalized) {\n var visual = this.option.visual;\n return visual[this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX ? normalized % visual.length : normalized];\n}\n\nfunction doMapFixed() {\n return this.option.visual[0];\n}\n\nfunction makeDoMap(sourceExtent) {\n return {\n linear: function (normalized) {\n return linearMap(normalized, sourceExtent, this.option.visual, true);\n },\n category: doMapCategory,\n piecewise: function (normalized, value) {\n var result = getSpecifiedVisual.call(this, value);\n\n if (result == null) {\n result = linearMap(normalized, sourceExtent, this.option.visual, true);\n }\n\n return result;\n },\n fixed: doMapFixed\n };\n}\n\nfunction getSpecifiedVisual(value) {\n var thisOption = this.option;\n var pieceList = thisOption.pieceList;\n\n if (thisOption.hasSpecialVisual) {\n var pieceIndex = VisualMapping.findPieceIndex(value, pieceList);\n var piece = pieceList[pieceIndex];\n\n if (piece && piece.visual) {\n return piece.visual[this.type];\n }\n }\n}\n\nfunction setVisualToOption(thisOption, visualArr) {\n thisOption.visual = visualArr;\n\n if (thisOption.type === 'color') {\n thisOption.parsedVisual = zrUtil.map(visualArr, function (item) {\n return zrColor.parse(item);\n });\n }\n\n return visualArr;\n}\n/**\n * Normalizers by mapping methods.\n */\n\n\nvar normalizers = {\n linear: function (value) {\n return linearMap(value, this.option.dataExtent, [0, 1], true);\n },\n piecewise: function (value) {\n var pieceList = this.option.pieceList;\n var pieceIndex = VisualMapping.findPieceIndex(value, pieceList, true);\n\n if (pieceIndex != null) {\n return linearMap(pieceIndex, [0, pieceList.length - 1], [0, 1], true);\n }\n },\n category: function (value) {\n var index = this.option.categories ? this.option.categoryMap[value] : value; // ordinal\n\n return index == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index;\n },\n fixed: zrUtil.noop\n};\n/**\n * List available visual types.\n *\n * @public\n * @return {Array.}\n */\n\nVisualMapping.listVisualTypes = function () {\n var visualTypes = [];\n zrUtil.each(visualHandlers, function (handler, key) {\n visualTypes.push(key);\n });\n return visualTypes;\n};\n/**\n * @public\n */\n\n\nVisualMapping.addVisualHandler = function (name, handler) {\n visualHandlers[name] = handler;\n};\n/**\n * @public\n */\n\n\nVisualMapping.isValidType = function (visualType) {\n return visualHandlers.hasOwnProperty(visualType);\n};\n/**\n * Convinent method.\n * Visual can be Object or Array or primary type.\n *\n * @public\n */\n\n\nVisualMapping.eachVisual = function (visual, callback, context) {\n if (zrUtil.isObject(visual)) {\n zrUtil.each(visual, callback, context);\n } else {\n callback.call(context, visual);\n }\n};\n\nVisualMapping.mapVisual = function (visual, callback, context) {\n var isPrimary;\n var newVisual = zrUtil.isArray(visual) ? [] : zrUtil.isObject(visual) ? {} : (isPrimary = true, null);\n VisualMapping.eachVisual(visual, function (v, key) {\n var newVal = callback.call(context, v, key);\n isPrimary ? newVisual = newVal : newVisual[key] = newVal;\n });\n return newVisual;\n};\n/**\n * @public\n * @param {Object} obj\n * @return {Object} new object containers visual values.\n * If no visuals, return null.\n */\n\n\nVisualMapping.retrieveVisuals = function (obj) {\n var ret = {};\n var hasVisual;\n obj && each(visualHandlers, function (h, visualType) {\n if (obj.hasOwnProperty(visualType)) {\n ret[visualType] = obj[visualType];\n hasVisual = true;\n }\n });\n return hasVisual ? ret : null;\n};\n/**\n * Give order to visual types, considering colorSaturation, colorAlpha depends on color.\n *\n * @public\n * @param {(Object|Array)} visualTypes If Object, like: {color: ..., colorSaturation: ...}\n * IF Array, like: ['color', 'symbol', 'colorSaturation']\n * @return {Array.} Sorted visual types.\n */\n\n\nVisualMapping.prepareVisualTypes = function (visualTypes) {\n if (isObject(visualTypes)) {\n var types = [];\n each(visualTypes, function (item, type) {\n types.push(type);\n });\n visualTypes = types;\n } else if (zrUtil.isArray(visualTypes)) {\n visualTypes = visualTypes.slice();\n } else {\n return [];\n }\n\n visualTypes.sort(function (type1, type2) {\n // color should be front of colorSaturation, colorAlpha, ...\n // symbol and symbolSize do not matter.\n return type2 === 'color' && type1 !== 'color' && type1.indexOf('color') === 0 ? 1 : -1;\n });\n return visualTypes;\n};\n/**\n * 'color', 'colorSaturation', 'colorAlpha', ... are depends on 'color'.\n * Other visuals are only depends on themself.\n *\n * @public\n * @param {string} visualType1\n * @param {string} visualType2\n * @return {boolean}\n */\n\n\nVisualMapping.dependsOn = function (visualType1, visualType2) {\n return visualType2 === 'color' ? !!(visualType1 && visualType1.indexOf(visualType2) === 0) : visualType1 === visualType2;\n};\n/**\n * @param {number} value\n * @param {Array.} pieceList [{value: ..., interval: [min, max]}, ...]\n * Always from small to big.\n * @param {boolean} [findClosestWhenOutside=false]\n * @return {number} index\n */\n\n\nVisualMapping.findPieceIndex = function (value, pieceList, findClosestWhenOutside) {\n var possibleI;\n var abs = Infinity; // value has the higher priority.\n\n for (var i = 0, len = pieceList.length; i < len; i++) {\n var pieceValue = pieceList[i].value;\n\n if (pieceValue != null) {\n if (pieceValue === value // FIXME\n // It is supposed to compare value according to value type of dimension,\n // but currently value type can exactly be string or number.\n // Compromise for numeric-like string (like '12'), especially\n // in the case that visualMap.categories is ['22', '33'].\n || typeof pieceValue === 'string' && pieceValue === value + '') {\n return i;\n }\n\n findClosestWhenOutside && updatePossible(pieceValue, i);\n }\n }\n\n for (var i = 0, len = pieceList.length; i < len; i++) {\n var piece = pieceList[i];\n var interval = piece.interval;\n var close = piece.close;\n\n if (interval) {\n if (interval[0] === -Infinity) {\n if (littleThan(close[1], value, interval[1])) {\n return i;\n }\n } else if (interval[1] === Infinity) {\n if (littleThan(close[0], interval[0], value)) {\n return i;\n }\n } else if (littleThan(close[0], interval[0], value) && littleThan(close[1], value, interval[1])) {\n return i;\n }\n\n findClosestWhenOutside && updatePossible(interval[0], i);\n findClosestWhenOutside && updatePossible(interval[1], i);\n }\n }\n\n if (findClosestWhenOutside) {\n return value === Infinity ? pieceList.length - 1 : value === -Infinity ? 0 : possibleI;\n }\n\n function updatePossible(val, index) {\n var newAbs = Math.abs(val - value);\n\n if (newAbs < abs) {\n abs = newAbs;\n possibleI = index;\n }\n }\n};\n\nfunction littleThan(close, a, b) {\n return close ? a <= b : a < b;\n}\n\nvar _default = VisualMapping;\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Element = require(\"../Element\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\n/**\n * Group是一个容器,可以插入子节点,Group的变换也会被应用到子节点上\n * @module zrender/graphic/Group\n * @example\n * var Group = require('zrender/container/Group');\n * var Circle = require('zrender/graphic/shape/Circle');\n * var g = new Group();\n * g.position[0] = 100;\n * g.position[1] = 100;\n * g.add(new Circle({\n * style: {\n * x: 100,\n * y: 100,\n * r: 20,\n * }\n * }));\n * zr.add(g);\n */\n\n/**\n * @alias module:zrender/graphic/Group\n * @constructor\n * @extends module:zrender/mixin/Transformable\n * @extends module:zrender/mixin/Eventful\n */\nvar Group = function (opts) {\n opts = opts || {};\n Element.call(this, opts);\n\n for (var key in opts) {\n if (opts.hasOwnProperty(key)) {\n this[key] = opts[key];\n }\n }\n\n this._children = [];\n this.__storage = null;\n this.__dirty = true;\n};\n\nGroup.prototype = {\n constructor: Group,\n isGroup: true,\n\n /**\n * @type {string}\n */\n type: 'group',\n\n /**\n * 所有子孙元素是否响应鼠标事件\n * @name module:/zrender/container/Group#silent\n * @type {boolean}\n * @default false\n */\n silent: false,\n\n /**\n * @return {Array.}\n */\n children: function () {\n return this._children.slice();\n },\n\n /**\n * 获取指定 index 的儿子节点\n * @param {number} idx\n * @return {module:zrender/Element}\n */\n childAt: function (idx) {\n return this._children[idx];\n },\n\n /**\n * 获取指定名字的儿子节点\n * @param {string} name\n * @return {module:zrender/Element}\n */\n childOfName: function (name) {\n var children = this._children;\n\n for (var i = 0; i < children.length; i++) {\n if (children[i].name === name) {\n return children[i];\n }\n }\n },\n\n /**\n * @return {number}\n */\n childCount: function () {\n return this._children.length;\n },\n\n /**\n * 添加子节点到最后\n * @param {module:zrender/Element} child\n */\n add: function (child) {\n if (child && child !== this && child.parent !== this) {\n this._children.push(child);\n\n this._doAdd(child);\n }\n\n return this;\n },\n\n /**\n * 添加子节点在 nextSibling 之前\n * @param {module:zrender/Element} child\n * @param {module:zrender/Element} nextSibling\n */\n addBefore: function (child, nextSibling) {\n if (child && child !== this && child.parent !== this && nextSibling && nextSibling.parent === this) {\n var children = this._children;\n var idx = children.indexOf(nextSibling);\n\n if (idx >= 0) {\n children.splice(idx, 0, child);\n\n this._doAdd(child);\n }\n }\n\n return this;\n },\n _doAdd: function (child) {\n if (child.parent) {\n child.parent.remove(child);\n }\n\n child.parent = this;\n var storage = this.__storage;\n var zr = this.__zr;\n\n if (storage && storage !== child.__storage) {\n storage.addToStorage(child);\n\n if (child instanceof Group) {\n child.addChildrenToStorage(storage);\n }\n }\n\n zr && zr.refresh();\n },\n\n /**\n * 移除子节点\n * @param {module:zrender/Element} child\n */\n remove: function (child) {\n var zr = this.__zr;\n var storage = this.__storage;\n var children = this._children;\n var idx = zrUtil.indexOf(children, child);\n\n if (idx < 0) {\n return this;\n }\n\n children.splice(idx, 1);\n child.parent = null;\n\n if (storage) {\n storage.delFromStorage(child);\n\n if (child instanceof Group) {\n child.delChildrenFromStorage(storage);\n }\n }\n\n zr && zr.refresh();\n return this;\n },\n\n /**\n * 移除所有子节点\n */\n removeAll: function () {\n var children = this._children;\n var storage = this.__storage;\n var child;\n var i;\n\n for (i = 0; i < children.length; i++) {\n child = children[i];\n\n if (storage) {\n storage.delFromStorage(child);\n\n if (child instanceof Group) {\n child.delChildrenFromStorage(storage);\n }\n }\n\n child.parent = null;\n }\n\n children.length = 0;\n return this;\n },\n\n /**\n * 遍历所有子节点\n * @param {Function} cb\n * @param {} context\n */\n eachChild: function (cb, context) {\n var children = this._children;\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n cb.call(context, child, i);\n }\n\n return this;\n },\n\n /**\n * 深度优先遍历所有子孙节点\n * @param {Function} cb\n * @param {} context\n */\n traverse: function (cb, context) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n cb.call(context, child);\n\n if (child.type === 'group') {\n child.traverse(cb, context);\n }\n }\n\n return this;\n },\n addChildrenToStorage: function (storage) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n storage.addToStorage(child);\n\n if (child instanceof Group) {\n child.addChildrenToStorage(storage);\n }\n }\n },\n delChildrenFromStorage: function (storage) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n storage.delFromStorage(child);\n\n if (child instanceof Group) {\n child.delChildrenFromStorage(storage);\n }\n }\n },\n dirty: function () {\n this.__dirty = true;\n this.__zr && this.__zr.refresh();\n return this;\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function (includeChildren) {\n // TODO Caching\n var rect = null;\n var tmpRect = new BoundingRect(0, 0, 0, 0);\n var children = includeChildren || this._children;\n var tmpMat = [];\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n\n if (child.ignore || child.invisible) {\n continue;\n }\n\n var childRect = child.getBoundingRect();\n var transform = child.getLocalTransform(tmpMat); // TODO\n // The boundingRect cacluated by transforming original\n // rect may be bigger than the actual bundingRect when rotation\n // is used. (Consider a circle rotated aginst its center, where\n // the actual boundingRect should be the same as that not be\n // rotated.) But we can not find better approach to calculate\n // actual boundingRect yet, considering performance.\n\n if (transform) {\n tmpRect.copy(childRect);\n tmpRect.applyTransform(transform);\n rect = rect || tmpRect.clone();\n rect.union(tmpRect);\n } else {\n rect = rect || childRect.clone();\n rect.union(childRect);\n }\n }\n\n return rect || tmpRect;\n }\n};\nzrUtil.inherits(Group, Element);\nvar _default = Group;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar imageHelper = require(\"./helper/image\");\n\n/**\n * @alias zrender/graphic/Image\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nfunction ZImage(opts) {\n Displayable.call(this, opts);\n}\n\nZImage.prototype = {\n constructor: ZImage,\n type: 'image',\n brush: function (ctx, prevEl) {\n var style = this.style;\n var src = style.image; // Must bind each time\n\n style.bind(ctx, this, prevEl);\n var image = this._image = imageHelper.createOrUpdateImage(src, this._image, this, this.onload);\n\n if (!image || !imageHelper.isImageReady(image)) {\n return;\n } // 图片已经加载完成\n // if (image.nodeName.toUpperCase() == 'IMG') {\n // if (!image.complete) {\n // return;\n // }\n // }\n // Else is canvas\n\n\n var x = style.x || 0;\n var y = style.y || 0;\n var width = style.width;\n var height = style.height;\n var aspect = image.width / image.height;\n\n if (width == null && height != null) {\n // Keep image/height ratio\n width = height * aspect;\n } else if (height == null && width != null) {\n height = width / aspect;\n } else if (width == null && height == null) {\n width = image.width;\n height = image.height;\n } // 设置transform\n\n\n this.setTransform(ctx);\n\n if (style.sWidth && style.sHeight) {\n var sx = style.sx || 0;\n var sy = style.sy || 0;\n ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\n } else if (style.sx && style.sy) {\n var sx = style.sx;\n var sy = style.sy;\n var sWidth = width - sx;\n var sHeight = height - sy;\n ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\n } else {\n ctx.drawImage(image, x, y, width, height);\n } // Draw rect text\n\n\n if (style.text != null) {\n // Only restore transform when needs draw text.\n this.restoreTransform(ctx);\n this.drawRectText(ctx, this.getBoundingRect());\n }\n },\n getBoundingRect: function () {\n var style = this.style;\n\n if (!this._rect) {\n this._rect = new BoundingRect(style.x || 0, style.y || 0, style.width || 0, style.height || 0);\n }\n\n return this._rect;\n }\n};\nzrUtil.inherits(ZImage, Displayable);\nvar _default = ZImage;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO Parse shadow style\n// TODO Only shallow path support\nfunction _default(properties) {\n // Normalize\n for (var i = 0; i < properties.length; i++) {\n if (!properties[i][1]) {\n properties[i][1] = properties[i][0];\n }\n }\n\n return function (model, excludes, includes) {\n var style = {};\n\n for (var i = 0; i < properties.length; i++) {\n var propName = properties[i][1];\n\n if (excludes && zrUtil.indexOf(excludes, propName) >= 0 || includes && zrUtil.indexOf(includes, propName) < 0) {\n continue;\n }\n\n var val = model.getShallow(propName);\n\n if (val != null) {\n style[properties[i][0]] = val;\n }\n }\n\n return style;\n };\n}\n\nmodule.exports = _default;","var curve = require(\"./curve\");\n\nvar vec2 = require(\"./vector\");\n\nvar bbox = require(\"./bbox\");\n\nvar BoundingRect = require(\"./BoundingRect\");\n\nvar _config = require(\"../config\");\n\nvar dpr = _config.devicePixelRatio;\n\n/**\n * Path 代理,可以在`buildPath`中用于替代`ctx`, 会保存每个path操作的命令到pathCommands属性中\n * 可以用于 isInsidePath 判断以及获取boundingRect\n *\n * @module zrender/core/PathProxy\n * @author Yi Shen (http://www.github.com/pissang)\n */\n// TODO getTotalLength, getPointAtLength\n\n/* global Float32Array */\nvar CMD = {\n M: 1,\n L: 2,\n C: 3,\n Q: 4,\n A: 5,\n Z: 6,\n // Rect\n R: 7\n}; // var CMD_MEM_SIZE = {\n// M: 3,\n// L: 3,\n// C: 7,\n// Q: 5,\n// A: 9,\n// R: 5,\n// Z: 1\n// };\n\nvar min = [];\nvar max = [];\nvar min2 = [];\nvar max2 = [];\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathCos = Math.cos;\nvar mathSin = Math.sin;\nvar mathSqrt = Math.sqrt;\nvar mathAbs = Math.abs;\nvar hasTypedArray = typeof Float32Array !== 'undefined';\n/**\n * @alias module:zrender/core/PathProxy\n * @constructor\n */\n\nvar PathProxy = function (notSaveData) {\n this._saveData = !(notSaveData || false);\n\n if (this._saveData) {\n /**\n * Path data. Stored as flat array\n * @type {Array.}\n */\n this.data = [];\n }\n\n this._ctx = null;\n};\n/**\n * 快速计算Path包围盒(并不是最小包围盒)\n * @return {Object}\n */\n\n\nPathProxy.prototype = {\n constructor: PathProxy,\n _xi: 0,\n _yi: 0,\n _x0: 0,\n _y0: 0,\n // Unit x, Unit y. Provide for avoiding drawing that too short line segment\n _ux: 0,\n _uy: 0,\n _len: 0,\n _lineDash: null,\n _dashOffset: 0,\n _dashIdx: 0,\n _dashSum: 0,\n\n /**\n * @readOnly\n */\n setScale: function (sx, sy, segmentIgnoreThreshold) {\n // Compat. Previously there is no segmentIgnoreThreshold.\n segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\n this._ux = mathAbs(segmentIgnoreThreshold / dpr / sx) || 0;\n this._uy = mathAbs(segmentIgnoreThreshold / dpr / sy) || 0;\n },\n getContext: function () {\n return this._ctx;\n },\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n beginPath: function (ctx) {\n this._ctx = ctx;\n ctx && ctx.beginPath();\n ctx && (this.dpr = ctx.dpr); // Reset\n\n if (this._saveData) {\n this._len = 0;\n }\n\n if (this._lineDash) {\n this._lineDash = null;\n this._dashOffset = 0;\n }\n\n return this;\n },\n\n /**\n * @param {number} x\n * @param {number} y\n * @return {module:zrender/core/PathProxy}\n */\n moveTo: function (x, y) {\n this.addData(CMD.M, x, y);\n this._ctx && this._ctx.moveTo(x, y); // x0, y0, xi, yi 是记录在 _dashedXXXXTo 方法中使用\n // xi, yi 记录当前点, x0, y0 在 closePath 的时候回到起始点。\n // 有可能在 beginPath 之后直接调用 lineTo,这时候 x0, y0 需要\n // 在 lineTo 方法中记录,这里先不考虑这种情况,dashed line 也只在 IE10- 中不支持\n\n this._x0 = x;\n this._y0 = y;\n this._xi = x;\n this._yi = y;\n return this;\n },\n\n /**\n * @param {number} x\n * @param {number} y\n * @return {module:zrender/core/PathProxy}\n */\n lineTo: function (x, y) {\n var exceedUnit = mathAbs(x - this._xi) > this._ux || mathAbs(y - this._yi) > this._uy // Force draw the first segment\n || this._len < 5;\n this.addData(CMD.L, x, y);\n\n if (this._ctx && exceedUnit) {\n this._needsDash() ? this._dashedLineTo(x, y) : this._ctx.lineTo(x, y);\n }\n\n if (exceedUnit) {\n this._xi = x;\n this._yi = y;\n }\n\n return this;\n },\n\n /**\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @return {module:zrender/core/PathProxy}\n */\n bezierCurveTo: function (x1, y1, x2, y2, x3, y3) {\n this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\n\n if (this._ctx) {\n this._needsDash() ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3) : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n }\n\n this._xi = x3;\n this._yi = y3;\n return this;\n },\n\n /**\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @return {module:zrender/core/PathProxy}\n */\n quadraticCurveTo: function (x1, y1, x2, y2) {\n this.addData(CMD.Q, x1, y1, x2, y2);\n\n if (this._ctx) {\n this._needsDash() ? this._dashedQuadraticTo(x1, y1, x2, y2) : this._ctx.quadraticCurveTo(x1, y1, x2, y2);\n }\n\n this._xi = x2;\n this._yi = y2;\n return this;\n },\n\n /**\n * @param {number} cx\n * @param {number} cy\n * @param {number} r\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {boolean} anticlockwise\n * @return {module:zrender/core/PathProxy}\n */\n arc: function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n this.addData(CMD.A, cx, cy, r, r, startAngle, endAngle - startAngle, 0, anticlockwise ? 0 : 1);\n this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n this._xi = mathCos(endAngle) * r + cx;\n this._yi = mathSin(endAngle) * r + cy;\n return this;\n },\n // TODO\n arcTo: function (x1, y1, x2, y2, radius) {\n if (this._ctx) {\n this._ctx.arcTo(x1, y1, x2, y2, radius);\n }\n\n return this;\n },\n // TODO\n rect: function (x, y, w, h) {\n this._ctx && this._ctx.rect(x, y, w, h);\n this.addData(CMD.R, x, y, w, h);\n return this;\n },\n\n /**\n * @return {module:zrender/core/PathProxy}\n */\n closePath: function () {\n this.addData(CMD.Z);\n var ctx = this._ctx;\n var x0 = this._x0;\n var y0 = this._y0;\n\n if (ctx) {\n this._needsDash() && this._dashedLineTo(x0, y0);\n ctx.closePath();\n }\n\n this._xi = x0;\n this._yi = y0;\n return this;\n },\n\n /**\n * Context 从外部传入,因为有可能是 rebuildPath 完之后再 fill。\n * stroke 同样\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n fill: function (ctx) {\n ctx && ctx.fill();\n this.toStatic();\n },\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n * @return {module:zrender/core/PathProxy}\n */\n stroke: function (ctx) {\n ctx && ctx.stroke();\n this.toStatic();\n },\n\n /**\n * 必须在其它绘制命令前调用\n * Must be invoked before all other path drawing methods\n * @return {module:zrender/core/PathProxy}\n */\n setLineDash: function (lineDash) {\n if (lineDash instanceof Array) {\n this._lineDash = lineDash;\n this._dashIdx = 0;\n var lineDashSum = 0;\n\n for (var i = 0; i < lineDash.length; i++) {\n lineDashSum += lineDash[i];\n }\n\n this._dashSum = lineDashSum;\n }\n\n return this;\n },\n\n /**\n * 必须在其它绘制命令前调用\n * Must be invoked before all other path drawing methods\n * @return {module:zrender/core/PathProxy}\n */\n setLineDashOffset: function (offset) {\n this._dashOffset = offset;\n return this;\n },\n\n /**\n *\n * @return {boolean}\n */\n len: function () {\n return this._len;\n },\n\n /**\n * 直接设置 Path 数据\n */\n setData: function (data) {\n var len = data.length;\n\n if (!(this.data && this.data.length === len) && hasTypedArray) {\n this.data = new Float32Array(len);\n }\n\n for (var i = 0; i < len; i++) {\n this.data[i] = data[i];\n }\n\n this._len = len;\n },\n\n /**\n * 添加子路径\n * @param {module:zrender/core/PathProxy|Array.} path\n */\n appendPath: function (path) {\n if (!(path instanceof Array)) {\n path = [path];\n }\n\n var len = path.length;\n var appendSize = 0;\n var offset = this._len;\n\n for (var i = 0; i < len; i++) {\n appendSize += path[i].len();\n }\n\n if (hasTypedArray && this.data instanceof Float32Array) {\n this.data = new Float32Array(offset + appendSize);\n }\n\n for (var i = 0; i < len; i++) {\n var appendPathData = path[i].data;\n\n for (var k = 0; k < appendPathData.length; k++) {\n this.data[offset++] = appendPathData[k];\n }\n }\n\n this._len = offset;\n },\n\n /**\n * 填充 Path 数据。\n * 尽量复用而不申明新的数组。大部分图形重绘的指令数据长度都是不变的。\n */\n addData: function (cmd) {\n if (!this._saveData) {\n return;\n }\n\n var data = this.data;\n\n if (this._len + arguments.length > data.length) {\n // 因为之前的数组已经转换成静态的 Float32Array\n // 所以不够用时需要扩展一个新的动态数组\n this._expandData();\n\n data = this.data;\n }\n\n for (var i = 0; i < arguments.length; i++) {\n data[this._len++] = arguments[i];\n }\n\n this._prevCmd = cmd;\n },\n _expandData: function () {\n // Only if data is Float32Array\n if (!(this.data instanceof Array)) {\n var newData = [];\n\n for (var i = 0; i < this._len; i++) {\n newData[i] = this.data[i];\n }\n\n this.data = newData;\n }\n },\n\n /**\n * If needs js implemented dashed line\n * @return {boolean}\n * @private\n */\n _needsDash: function () {\n return this._lineDash;\n },\n _dashedLineTo: function (x1, y1) {\n var dashSum = this._dashSum;\n var offset = this._dashOffset;\n var lineDash = this._lineDash;\n var ctx = this._ctx;\n var x0 = this._xi;\n var y0 = this._yi;\n var dx = x1 - x0;\n var dy = y1 - y0;\n var dist = mathSqrt(dx * dx + dy * dy);\n var x = x0;\n var y = y0;\n var dash;\n var nDash = lineDash.length;\n var idx;\n dx /= dist;\n dy /= dist;\n\n if (offset < 0) {\n // Convert to positive offset\n offset = dashSum + offset;\n }\n\n offset %= dashSum;\n x -= offset * dx;\n y -= offset * dy;\n\n while (dx > 0 && x <= x1 || dx < 0 && x >= x1 || dx === 0 && (dy > 0 && y <= y1 || dy < 0 && y >= y1)) {\n idx = this._dashIdx;\n dash = lineDash[idx];\n x += dx * dash;\n y += dy * dash;\n this._dashIdx = (idx + 1) % nDash; // Skip positive offset\n\n if (dx > 0 && x < x0 || dx < 0 && x > x0 || dy > 0 && y < y0 || dy < 0 && y > y0) {\n continue;\n }\n\n ctx[idx % 2 ? 'moveTo' : 'lineTo'](dx >= 0 ? mathMin(x, x1) : mathMax(x, x1), dy >= 0 ? mathMin(y, y1) : mathMax(y, y1));\n } // Offset for next lineTo\n\n\n dx = x - x1;\n dy = y - y1;\n this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n },\n // Not accurate dashed line to\n _dashedBezierTo: function (x1, y1, x2, y2, x3, y3) {\n var dashSum = this._dashSum;\n var offset = this._dashOffset;\n var lineDash = this._lineDash;\n var ctx = this._ctx;\n var x0 = this._xi;\n var y0 = this._yi;\n var t;\n var dx;\n var dy;\n var cubicAt = curve.cubicAt;\n var bezierLen = 0;\n var idx = this._dashIdx;\n var nDash = lineDash.length;\n var x;\n var y;\n var tmpLen = 0;\n\n if (offset < 0) {\n // Convert to positive offset\n offset = dashSum + offset;\n }\n\n offset %= dashSum; // Bezier approx length\n\n for (t = 0; t < 1; t += 0.1) {\n dx = cubicAt(x0, x1, x2, x3, t + 0.1) - cubicAt(x0, x1, x2, x3, t);\n dy = cubicAt(y0, y1, y2, y3, t + 0.1) - cubicAt(y0, y1, y2, y3, t);\n bezierLen += mathSqrt(dx * dx + dy * dy);\n } // Find idx after add offset\n\n\n for (; idx < nDash; idx++) {\n tmpLen += lineDash[idx];\n\n if (tmpLen > offset) {\n break;\n }\n }\n\n t = (tmpLen - offset) / bezierLen;\n\n while (t <= 1) {\n x = cubicAt(x0, x1, x2, x3, t);\n y = cubicAt(y0, y1, y2, y3, t); // Use line to approximate dashed bezier\n // Bad result if dash is long\n\n idx % 2 ? ctx.moveTo(x, y) : ctx.lineTo(x, y);\n t += lineDash[idx] / bezierLen;\n idx = (idx + 1) % nDash;\n } // Finish the last segment and calculate the new offset\n\n\n idx % 2 !== 0 && ctx.lineTo(x3, y3);\n dx = x3 - x;\n dy = y3 - y;\n this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n },\n _dashedQuadraticTo: function (x1, y1, x2, y2) {\n // Convert quadratic to cubic using degree elevation\n var x3 = x2;\n var y3 = y2;\n x2 = (x2 + 2 * x1) / 3;\n y2 = (y2 + 2 * y1) / 3;\n x1 = (this._xi + 2 * x1) / 3;\n y1 = (this._yi + 2 * y1) / 3;\n\n this._dashedBezierTo(x1, y1, x2, y2, x3, y3);\n },\n\n /**\n * 转成静态的 Float32Array 减少堆内存占用\n * Convert dynamic array to static Float32Array\n */\n toStatic: function () {\n var data = this.data;\n\n if (data instanceof Array) {\n data.length = this._len;\n\n if (hasTypedArray) {\n this.data = new Float32Array(data);\n }\n }\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function () {\n min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;\n max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\n var data = this.data;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n\n for (var i = 0; i < data.length;) {\n var cmd = data[i++];\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n // 在 closePath 的时候使用\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n min2[0] = x0;\n min2[1] = y0;\n max2[0] = x0;\n max2[1] = y0;\n break;\n\n case CMD.L:\n bbox.fromLine(xi, yi, data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.C:\n bbox.fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.Q:\n bbox.fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n\n case CMD.A:\n // TODO Arc 判断的开销比较大\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var endAngle = data[i++] + startAngle; // TODO Arc 旋转\n\n i += 1;\n var anticlockwise = 1 - data[i++];\n\n if (i === 1) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n\n bbox.fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++]; // Use fromLine\n\n bbox.fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\n break;\n\n case CMD.Z:\n xi = x0;\n yi = y0;\n break;\n } // Union\n\n\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n } // No data\n\n\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n\n return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n },\n\n /**\n * Rebuild path from current data\n * Rebuild path will not consider javascript implemented line dash.\n * @param {CanvasRenderingContext2D} ctx\n */\n rebuildPath: function (ctx) {\n var d = this.data;\n var x0;\n var y0;\n var xi;\n var yi;\n var x;\n var y;\n var ux = this._ux;\n var uy = this._uy;\n var len = this._len;\n\n for (var i = 0; i < len;) {\n var cmd = d[i++];\n\n if (i === 1) {\n // 如果第一个命令是 L, C, Q\n // 则 previous point 同绘制命令的第一个 point\n //\n // 第一个命令为 Arc 的情况下会在后面特殊处理\n xi = d[i];\n yi = d[i + 1];\n x0 = xi;\n y0 = yi;\n }\n\n switch (cmd) {\n case CMD.M:\n x0 = xi = d[i++];\n y0 = yi = d[i++];\n ctx.moveTo(xi, yi);\n break;\n\n case CMD.L:\n x = d[i++];\n y = d[i++]; // Not draw too small seg between\n\n if (mathAbs(x - xi) > ux || mathAbs(y - yi) > uy || i === len - 1) {\n ctx.lineTo(x, y);\n xi = x;\n yi = y;\n }\n\n break;\n\n case CMD.C:\n ctx.bezierCurveTo(d[i++], d[i++], d[i++], d[i++], d[i++], d[i++]);\n xi = d[i - 2];\n yi = d[i - 1];\n break;\n\n case CMD.Q:\n ctx.quadraticCurveTo(d[i++], d[i++], d[i++], d[i++]);\n xi = d[i - 2];\n yi = d[i - 1];\n break;\n\n case CMD.A:\n var cx = d[i++];\n var cy = d[i++];\n var rx = d[i++];\n var ry = d[i++];\n var theta = d[i++];\n var dTheta = d[i++];\n var psi = d[i++];\n var fs = d[i++];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n var isEllipse = Math.abs(rx - ry) > 1e-3;\n var endAngle = theta + dTheta;\n\n if (isEllipse) {\n ctx.translate(cx, cy);\n ctx.rotate(psi);\n ctx.scale(scaleX, scaleY);\n ctx.arc(0, 0, r, theta, endAngle, 1 - fs);\n ctx.scale(1 / scaleX, 1 / scaleY);\n ctx.rotate(-psi);\n ctx.translate(-cx, -cy);\n } else {\n ctx.arc(cx, cy, r, theta, endAngle, 1 - fs);\n }\n\n if (i === 1) {\n // 直接使用 arc 命令\n // 第一个命令起点还未定义\n x0 = mathCos(theta) * rx + cx;\n y0 = mathSin(theta) * ry + cy;\n }\n\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n\n case CMD.R:\n x0 = xi = d[i];\n y0 = yi = d[i + 1];\n ctx.rect(d[i++], d[i++], d[i++], d[i++]);\n break;\n\n case CMD.Z:\n ctx.closePath();\n xi = x0;\n yi = y0;\n }\n }\n }\n};\nPathProxy.CMD = CMD;\nvar _default = PathProxy;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @return {string} If large mode changed, return string 'reset';\n */\nfunction _default() {\n var inner = makeInner();\n return function (seriesModel) {\n var fields = inner(seriesModel);\n var pipelineContext = seriesModel.pipelineContext;\n var originalLarge = fields.large;\n var originalProgressive = fields.progressiveRender;\n var large = fields.large = pipelineContext.large;\n var progressive = fields.progressiveRender = pipelineContext.progressiveRender;\n return !!(originalLarge ^ large || originalProgressive ^ progressive) && 'reset';\n };\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar completeDimensions = require(\"./completeDimensions\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Substitute `completeDimensions`.\n * `completeDimensions` is to be deprecated.\n */\n\n/**\n * @param {module:echarts/data/Source|module:echarts/data/List} source or data.\n * @param {Object|Array} [opt]\n * @param {Array.} [opt.coordDimensions=[]]\n * @param {number} [opt.dimensionsCount]\n * @param {string} [opt.generateCoord]\n * @param {string} [opt.generateCoordCount]\n * @param {Array.} [opt.dimensionsDefine=source.dimensionsDefine] Overwrite source define.\n * @param {Object|HashMap} [opt.encodeDefine=source.encodeDefine] Overwrite source define.\n * @param {Function} [opt.encodeDefaulter] Make default encode if user not specified.\n * @return {Array.} dimensionsInfo\n */\nfunction _default(source, opt) {\n opt = opt || {};\n return completeDimensions(opt.coordDimensions || [], source, {\n dimsDef: opt.dimensionsDefine || source.dimensionsDefine,\n encodeDef: opt.encodeDefine || source.encodeDefine,\n dimCount: opt.dimensionsCount,\n encodeDefaulter: opt.encodeDefaulter,\n generateCoord: opt.generateCoord,\n generateCoordCount: opt.generateCoordCount\n });\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// import * as axisHelper from './axisHelper';\nvar _default = {\n /**\n * @param {boolean} origin\n * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN\n */\n getMin: function (origin) {\n var option = this.option;\n var min = !origin && option.rangeStart != null ? option.rangeStart : option.min;\n\n if (this.axis && min != null && min !== 'dataMin' && typeof min !== 'function' && !zrUtil.eqNaN(min)) {\n min = this.axis.scale.parse(min);\n }\n\n return min;\n },\n\n /**\n * @param {boolean} origin\n * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN\n */\n getMax: function (origin) {\n var option = this.option;\n var max = !origin && option.rangeEnd != null ? option.rangeEnd : option.max;\n\n if (this.axis && max != null && max !== 'dataMax' && typeof max !== 'function' && !zrUtil.eqNaN(max)) {\n max = this.axis.scale.parse(max);\n }\n\n return max;\n },\n\n /**\n * @return {boolean}\n */\n getNeedCrossZero: function () {\n var option = this.option;\n return option.rangeStart != null || option.rangeEnd != null ? false : !option.scale;\n },\n\n /**\n * Should be implemented by each axis model if necessary.\n * @return {module:echarts/model/Component} coordinate system model\n */\n getCoordSysModel: zrUtil.noop,\n\n /**\n * @param {number} rangeStart Can only be finite number or null/undefined or NaN.\n * @param {number} rangeEnd Can only be finite number or null/undefined or NaN.\n */\n setRange: function (rangeStart, rangeEnd) {\n this.option.rangeStart = rangeStart;\n this.option.rangeEnd = rangeEnd;\n },\n\n /**\n * Reset range\n */\n resetRange: function () {\n // rangeStart and rangeEnd is readonly.\n this.option.rangeStart = this.option.rangeEnd = null;\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar List = require(\"../../data/List\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar extend = _util.extend;\nvar isArray = _util.isArray;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * [Usage]:\n * (1)\n * createListSimply(seriesModel, ['value']);\n * (2)\n * createListSimply(seriesModel, {\n * coordDimensions: ['value'],\n * dimensionsCount: 5\n * });\n *\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object|Array.} opt opt or coordDimensions\n * The options in opt, see `echarts/data/helper/createDimensions`\n * @param {Array.} [nameList]\n * @return {module:echarts/data/List}\n */\nfunction _default(seriesModel, opt, nameList) {\n opt = isArray(opt) && {\n coordDimensions: opt\n } || extend({}, opt);\n var source = seriesModel.getSource();\n var dimensionsInfo = createDimensions(source, opt);\n var list = new List(dimensionsInfo, seriesModel);\n list.initData(source, nameList);\n return list;\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Calculate slider move result.\n * Usage:\n * (1) If both handle0 and handle1 are needed to be moved, set minSpan the same as\n * maxSpan and the same as `Math.abs(handleEnd[1] - handleEnds[0])`.\n * (2) If handle0 is forbidden to cross handle1, set minSpan as `0`.\n *\n * @param {number} delta Move length.\n * @param {Array.} handleEnds handleEnds[0] can be bigger then handleEnds[1].\n * handleEnds will be modified in this method.\n * @param {Array.} extent handleEnds is restricted by extent.\n * extent[0] should less or equals than extent[1].\n * @param {number|string} handleIndex Can be 'all', means that both move the two handleEnds.\n * @param {number} [minSpan] The range of dataZoom can not be smaller than that.\n * If not set, handle0 and cross handle1. If set as a non-negative\n * number (including `0`), handles will push each other when reaching\n * the minSpan.\n * @param {number} [maxSpan] The range of dataZoom can not be larger than that.\n * @return {Array.} The input handleEnds.\n */\nfunction _default(delta, handleEnds, extent, handleIndex, minSpan, maxSpan) {\n delta = delta || 0;\n var extentSpan = extent[1] - extent[0]; // Notice maxSpan and minSpan can be null/undefined.\n\n if (minSpan != null) {\n minSpan = restrict(minSpan, [0, extentSpan]);\n }\n\n if (maxSpan != null) {\n maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0);\n }\n\n if (handleIndex === 'all') {\n var handleSpan = Math.abs(handleEnds[1] - handleEnds[0]);\n handleSpan = restrict(handleSpan, [0, extentSpan]);\n minSpan = maxSpan = restrict(handleSpan, [minSpan, maxSpan]);\n handleIndex = 0;\n }\n\n handleEnds[0] = restrict(handleEnds[0], extent);\n handleEnds[1] = restrict(handleEnds[1], extent);\n var originalDistSign = getSpanSign(handleEnds, handleIndex);\n handleEnds[handleIndex] += delta; // Restrict in extent.\n\n var extentMinSpan = minSpan || 0;\n var realExtent = extent.slice();\n originalDistSign.sign < 0 ? realExtent[0] += extentMinSpan : realExtent[1] -= extentMinSpan;\n handleEnds[handleIndex] = restrict(handleEnds[handleIndex], realExtent); // Expand span.\n\n var currDistSign = getSpanSign(handleEnds, handleIndex);\n\n if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) {\n // If minSpan exists, 'cross' is forbidden.\n handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan;\n } // Shrink span.\n\n\n var currDistSign = getSpanSign(handleEnds, handleIndex);\n\n if (maxSpan != null && currDistSign.span > maxSpan) {\n handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan;\n }\n\n return handleEnds;\n}\n\nfunction getSpanSign(handleEnds, handleIndex) {\n var dist = handleEnds[handleIndex] - handleEnds[1 - handleIndex]; // If `handleEnds[0] === handleEnds[1]`, always believe that handleEnd[0]\n // is at left of handleEnds[1] for non-cross case.\n\n return {\n span: Math.abs(dist),\n sign: dist > 0 ? -1 : dist < 0 ? 1 : handleIndex ? -1 : 1\n };\n}\n\nfunction restrict(value, extend) {\n return Math.min(extend[1] != null ? extend[1] : Infinity, Math.max(extend[0] != null ? extend[0] : -Infinity, value));\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar helper = require(\"./helper\");\n\nvar AxisProxy = require(\"./AxisProxy\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar eachAxisDim = helper.eachAxisDim;\nvar DataZoomModel = echarts.extendComponentModel({\n type: 'dataZoom',\n dependencies: ['xAxis', 'yAxis', 'zAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'series'],\n\n /**\n * @protected\n */\n defaultOption: {\n zlevel: 0,\n z: 4,\n // Higher than normal component (z: 2).\n orient: null,\n // Default auto by axisIndex. Possible value: 'horizontal', 'vertical'.\n xAxisIndex: null,\n // Default the first horizontal category axis.\n yAxisIndex: null,\n // Default the first vertical category axis.\n filterMode: 'filter',\n // Possible values: 'filter' or 'empty' or 'weakFilter'.\n // 'filter': data items which are out of window will be removed. This option is\n // applicable when filtering outliers. For each data item, it will be\n // filtered if one of the relevant dimensions is out of the window.\n // 'weakFilter': data items which are out of window will be removed. This option\n // is applicable when filtering outliers. For each data item, it will be\n // filtered only if all of the relevant dimensions are out of the same\n // side of the window.\n // 'empty': data items which are out of window will be set to empty.\n // This option is applicable when user should not neglect\n // that there are some data items out of window.\n // 'none': Do not filter.\n // Taking line chart as an example, line will be broken in\n // the filtered points when filterModel is set to 'empty', but\n // be connected when set to 'filter'.\n throttle: null,\n // Dispatch action by the fixed rate, avoid frequency.\n // default 100. Do not throttle when use null/undefined.\n // If animation === true and animationDurationUpdate > 0,\n // default value is 100, otherwise 20.\n start: 0,\n // Start percent. 0 ~ 100\n end: 100,\n // End percent. 0 ~ 100\n startValue: null,\n // Start value. If startValue specified, start is ignored.\n endValue: null,\n // End value. If endValue specified, end is ignored.\n minSpan: null,\n // 0 ~ 100\n maxSpan: null,\n // 0 ~ 100\n minValueSpan: null,\n // The range of dataZoom can not be smaller than that.\n maxValueSpan: null,\n // The range of dataZoom can not be larger than that.\n rangeMode: null // Array, can be 'value' or 'percent'.\n\n },\n\n /**\n * @override\n */\n init: function (option, parentModel, ecModel) {\n /**\n * key like x_0, y_1\n * @private\n * @type {Object}\n */\n this._dataIntervalByAxis = {};\n /**\n * @private\n */\n\n this._dataInfo = {};\n /**\n * key like x_0, y_1\n * @private\n */\n\n this._axisProxies = {};\n /**\n * @readOnly\n */\n\n this.textStyleModel;\n /**\n * @private\n */\n\n this._autoThrottle = true;\n /**\n * It is `[rangeModeForMin, rangeModeForMax]`.\n * The optional values for `rangeMode`:\n * + `'value'` mode: the axis extent will always be determined by\n * `dataZoom.startValue` and `dataZoom.endValue`, despite\n * how data like and how `axis.min` and `axis.max` are.\n * + `'percent'` mode: `100` represents 100% of the `[dMin, dMax]`,\n * where `dMin` is `axis.min` if `axis.min` specified, otherwise `data.extent[0]`,\n * and `dMax` is `axis.max` if `axis.max` specified, otherwise `data.extent[1]`.\n * Axis extent will be determined by the result of the percent of `[dMin, dMax]`.\n *\n * For example, when users are using dynamic data (update data periodically via `setOption`),\n * if in `'value`' mode, the window will be kept in a fixed value range despite how\n * data are appended, while if in `'percent'` mode, whe window range will be changed alone with\n * the appended data (suppose `axis.min` and `axis.max` are not specified).\n *\n * @private\n */\n\n this._rangePropMode = ['percent', 'percent'];\n var inputRawOption = retrieveRawOption(option);\n /**\n * Suppose a \"main process\" start at the point that model prepared (that is,\n * model initialized or merged or method called in `action`).\n * We should keep the `main process` idempotent, that is, given a set of values\n * on `option`, we get the same result.\n *\n * But sometimes, values on `option` will be updated for providing users\n * a \"final calculated value\" (`dataZoomProcessor` will do that). Those value\n * should not be the base/input of the `main process`.\n *\n * So in that case we should save and keep the input of the `main process`\n * separately, called `settledOption`.\n *\n * For example, consider the case:\n * (Step_1) brush zoom the grid by `toolbox.dataZoom`,\n * where the original input `option.startValue`, `option.endValue` are earsed by\n * calculated value.\n * (Step)2) click the legend to hide and show a series,\n * where the new range is calculated by the earsed `startValue` and `endValue`,\n * which brings incorrect result.\n *\n * @readOnly\n */\n\n this.settledOption = inputRawOption;\n this.mergeDefaultAndTheme(option, ecModel);\n this.doInit(inputRawOption);\n },\n\n /**\n * @override\n */\n mergeOption: function (newOption) {\n var inputRawOption = retrieveRawOption(newOption); //FIX #2591\n\n zrUtil.merge(this.option, newOption, true);\n zrUtil.merge(this.settledOption, inputRawOption, true);\n this.doInit(inputRawOption);\n },\n\n /**\n * @protected\n */\n doInit: function (inputRawOption) {\n var thisOption = this.option; // Disable realtime view update if canvas is not supported.\n\n if (!env.canvasSupported) {\n thisOption.realtime = false;\n }\n\n this._setDefaultThrottle(inputRawOption);\n\n updateRangeUse(this, inputRawOption);\n var settledOption = this.settledOption;\n each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n // start/end has higher priority over startValue/endValue if they\n // both set, but we should make chart.setOption({endValue: 1000})\n // effective, rather than chart.setOption({endValue: 1000, end: null}).\n if (this._rangePropMode[index] === 'value') {\n thisOption[names[0]] = settledOption[names[0]] = null;\n } // Otherwise do nothing and use the merge result.\n\n }, this);\n this.textStyleModel = this.getModel('textStyle');\n\n this._resetTarget();\n\n this._giveAxisProxies();\n },\n\n /**\n * @private\n */\n _giveAxisProxies: function () {\n var axisProxies = this._axisProxies;\n this.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel, ecModel) {\n var axisModel = this.dependentModels[dimNames.axis][axisIndex]; // If exists, share axisProxy with other dataZoomModels.\n\n var axisProxy = axisModel.__dzAxisProxy || ( // Use the first dataZoomModel as the main model of axisProxy.\n axisModel.__dzAxisProxy = new AxisProxy(dimNames.name, axisIndex, this, ecModel)); // FIXME\n // dispose __dzAxisProxy\n\n axisProxies[dimNames.name + '_' + axisIndex] = axisProxy;\n }, this);\n },\n\n /**\n * @private\n */\n _resetTarget: function () {\n var thisOption = this.option;\n\n var autoMode = this._judgeAutoMode();\n\n eachAxisDim(function (dimNames) {\n var axisIndexName = dimNames.axisIndex;\n thisOption[axisIndexName] = modelUtil.normalizeToArray(thisOption[axisIndexName]);\n }, this);\n\n if (autoMode === 'axisIndex') {\n this._autoSetAxisIndex();\n } else if (autoMode === 'orient') {\n this._autoSetOrient();\n }\n },\n\n /**\n * @private\n */\n _judgeAutoMode: function () {\n // Auto set only works for setOption at the first time.\n // The following is user's reponsibility. So using merged\n // option is OK.\n var thisOption = this.option;\n var hasIndexSpecified = false;\n eachAxisDim(function (dimNames) {\n // When user set axisIndex as a empty array, we think that user specify axisIndex\n // but do not want use auto mode. Because empty array may be encountered when\n // some error occured.\n if (thisOption[dimNames.axisIndex] != null) {\n hasIndexSpecified = true;\n }\n }, this);\n var orient = thisOption.orient;\n\n if (orient == null && hasIndexSpecified) {\n return 'orient';\n } else if (!hasIndexSpecified) {\n if (orient == null) {\n thisOption.orient = 'horizontal';\n }\n\n return 'axisIndex';\n }\n },\n\n /**\n * @private\n */\n _autoSetAxisIndex: function () {\n var autoAxisIndex = true;\n var orient = this.get('orient', true);\n var thisOption = this.option;\n var dependentModels = this.dependentModels;\n\n if (autoAxisIndex) {\n // Find axis that parallel to dataZoom as default.\n var dimName = orient === 'vertical' ? 'y' : 'x';\n\n if (dependentModels[dimName + 'Axis'].length) {\n thisOption[dimName + 'AxisIndex'] = [0];\n autoAxisIndex = false;\n } else {\n each(dependentModels.singleAxis, function (singleAxisModel) {\n if (autoAxisIndex && singleAxisModel.get('orient', true) === orient) {\n thisOption.singleAxisIndex = [singleAxisModel.componentIndex];\n autoAxisIndex = false;\n }\n });\n }\n }\n\n if (autoAxisIndex) {\n // Find the first category axis as default. (consider polar)\n eachAxisDim(function (dimNames) {\n if (!autoAxisIndex) {\n return;\n }\n\n var axisIndices = [];\n var axisModels = this.dependentModels[dimNames.axis];\n\n if (axisModels.length && !axisIndices.length) {\n for (var i = 0, len = axisModels.length; i < len; i++) {\n if (axisModels[i].get('type') === 'category') {\n axisIndices.push(i);\n }\n }\n }\n\n thisOption[dimNames.axisIndex] = axisIndices;\n\n if (axisIndices.length) {\n autoAxisIndex = false;\n }\n }, this);\n }\n\n if (autoAxisIndex) {\n // FIXME\n // 这里是兼容ec2的写法(没指定xAxisIndex和yAxisIndex时把scatter和双数值轴折柱纳入dataZoom控制),\n // 但是实际是否需要Grid.js#getScaleByOption来判断(考虑time,log等axis type)?\n // If both dataZoom.xAxisIndex and dataZoom.yAxisIndex is not specified,\n // dataZoom component auto adopts series that reference to\n // both xAxis and yAxis which type is 'value'.\n this.ecModel.eachSeries(function (seriesModel) {\n if (this._isSeriesHasAllAxesTypeOf(seriesModel, 'value')) {\n eachAxisDim(function (dimNames) {\n var axisIndices = thisOption[dimNames.axisIndex];\n var axisIndex = seriesModel.get(dimNames.axisIndex);\n var axisId = seriesModel.get(dimNames.axisId);\n var axisModel = seriesModel.ecModel.queryComponents({\n mainType: dimNames.axis,\n index: axisIndex,\n id: axisId\n })[0];\n axisIndex = axisModel.componentIndex;\n\n if (zrUtil.indexOf(axisIndices, axisIndex) < 0) {\n axisIndices.push(axisIndex);\n }\n });\n }\n }, this);\n }\n },\n\n /**\n * @private\n */\n _autoSetOrient: function () {\n var dim; // Find the first axis\n\n this.eachTargetAxis(function (dimNames) {\n !dim && (dim = dimNames.name);\n }, this);\n this.option.orient = dim === 'y' ? 'vertical' : 'horizontal';\n },\n\n /**\n * @private\n */\n _isSeriesHasAllAxesTypeOf: function (seriesModel, axisType) {\n // FIXME\n // 需要series的xAxisIndex和yAxisIndex都首先自动设置上。\n // 例如series.type === scatter时。\n var is = true;\n eachAxisDim(function (dimNames) {\n var seriesAxisIndex = seriesModel.get(dimNames.axisIndex);\n var axisModel = this.dependentModels[dimNames.axis][seriesAxisIndex];\n\n if (!axisModel || axisModel.get('type') !== axisType) {\n is = false;\n }\n }, this);\n return is;\n },\n\n /**\n * @private\n */\n _setDefaultThrottle: function (inputRawOption) {\n // When first time user set throttle, auto throttle ends.\n if (inputRawOption.hasOwnProperty('throttle')) {\n this._autoThrottle = false;\n }\n\n if (this._autoThrottle) {\n var globalOption = this.ecModel.option;\n this.option.throttle = globalOption.animation && globalOption.animationDurationUpdate > 0 ? 100 : 20;\n }\n },\n\n /**\n * @public\n */\n getFirstTargetAxisModel: function () {\n var firstAxisModel;\n eachAxisDim(function (dimNames) {\n if (firstAxisModel == null) {\n var indices = this.get(dimNames.axisIndex);\n\n if (indices.length) {\n firstAxisModel = this.dependentModels[dimNames.axis][indices[0]];\n }\n }\n }, this);\n return firstAxisModel;\n },\n\n /**\n * @public\n * @param {Function} callback param: axisModel, dimNames, axisIndex, dataZoomModel, ecModel\n */\n eachTargetAxis: function (callback, context) {\n var ecModel = this.ecModel;\n eachAxisDim(function (dimNames) {\n each(this.get(dimNames.axisIndex), function (axisIndex) {\n callback.call(context, dimNames, axisIndex, this, ecModel);\n }, this);\n }, this);\n },\n\n /**\n * @param {string} dimName\n * @param {number} axisIndex\n * @return {module:echarts/component/dataZoom/AxisProxy} If not found, return null/undefined.\n */\n getAxisProxy: function (dimName, axisIndex) {\n return this._axisProxies[dimName + '_' + axisIndex];\n },\n\n /**\n * @param {string} dimName\n * @param {number} axisIndex\n * @return {module:echarts/model/Model} If not found, return null/undefined.\n */\n getAxisModel: function (dimName, axisIndex) {\n var axisProxy = this.getAxisProxy(dimName, axisIndex);\n return axisProxy && axisProxy.getAxisModel();\n },\n\n /**\n * If not specified, set to undefined.\n *\n * @public\n * @param {Object} opt\n * @param {number} [opt.start]\n * @param {number} [opt.end]\n * @param {number} [opt.startValue]\n * @param {number} [opt.endValue]\n */\n setRawRange: function (opt) {\n var thisOption = this.option;\n var settledOption = this.settledOption;\n each([['start', 'startValue'], ['end', 'endValue']], function (names) {\n // Consider the pair :\n // If one has value and the other one is `null/undefined`, we both set them\n // to `settledOption`. This strategy enables the feature to clear the original\n // value in `settledOption` to `null/undefined`.\n // But if both of them are `null/undefined`, we do not set them to `settledOption`\n // and keep `settledOption` with the original value. This strategy enables users to\n // only set but not set when calling\n // `dispatchAction`.\n // The pair is treated in the same way.\n if (opt[names[0]] != null || opt[names[1]] != null) {\n thisOption[names[0]] = settledOption[names[0]] = opt[names[0]];\n thisOption[names[1]] = settledOption[names[1]] = opt[names[1]];\n }\n }, this);\n updateRangeUse(this, opt);\n },\n\n /**\n * @public\n * @param {Object} opt\n * @param {number} [opt.start]\n * @param {number} [opt.end]\n * @param {number} [opt.startValue]\n * @param {number} [opt.endValue]\n */\n setCalculatedRange: function (opt) {\n var option = this.option;\n each(['start', 'startValue', 'end', 'endValue'], function (name) {\n option[name] = opt[name];\n });\n },\n\n /**\n * @public\n * @return {Array.} [startPercent, endPercent]\n */\n getPercentRange: function () {\n var axisProxy = this.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n return axisProxy.getDataPercentWindow();\n }\n },\n\n /**\n * @public\n * For example, chart.getModel().getComponent('dataZoom').getValueRange('y', 0);\n *\n * @param {string} [axisDimName]\n * @param {number} [axisIndex]\n * @return {Array.} [startValue, endValue] value can only be '-' or finite number.\n */\n getValueRange: function (axisDimName, axisIndex) {\n if (axisDimName == null && axisIndex == null) {\n var axisProxy = this.findRepresentativeAxisProxy();\n\n if (axisProxy) {\n return axisProxy.getDataValueWindow();\n }\n } else {\n return this.getAxisProxy(axisDimName, axisIndex).getDataValueWindow();\n }\n },\n\n /**\n * @public\n * @param {module:echarts/model/Model} [axisModel] If axisModel given, find axisProxy\n * corresponding to the axisModel\n * @return {module:echarts/component/dataZoom/AxisProxy}\n */\n findRepresentativeAxisProxy: function (axisModel) {\n if (axisModel) {\n return axisModel.__dzAxisProxy;\n } // Find the first hosted axisProxy\n\n\n var axisProxies = this._axisProxies;\n\n for (var key in axisProxies) {\n if (axisProxies.hasOwnProperty(key) && axisProxies[key].hostedBy(this)) {\n return axisProxies[key];\n }\n } // If no hosted axis find not hosted axisProxy.\n // Consider this case: dataZoomModel1 and dataZoomModel2 control the same axis,\n // and the option.start or option.end settings are different. The percentRange\n // should follow axisProxy.\n // (We encounter this problem in toolbox data zoom.)\n\n\n for (var key in axisProxies) {\n if (axisProxies.hasOwnProperty(key) && !axisProxies[key].hostedBy(this)) {\n return axisProxies[key];\n }\n }\n },\n\n /**\n * @return {Array.}\n */\n getRangePropMode: function () {\n return this._rangePropMode.slice();\n }\n});\n/**\n * Retrieve the those raw params from option, which will be cached separately.\n * becasue they will be overwritten by normalized/calculated values in the main\n * process.\n */\n\nfunction retrieveRawOption(option) {\n var ret = {};\n each(['start', 'end', 'startValue', 'endValue', 'throttle'], function (name) {\n option.hasOwnProperty(name) && (ret[name] = option[name]);\n });\n return ret;\n}\n\nfunction updateRangeUse(dataZoomModel, inputRawOption) {\n var rangePropMode = dataZoomModel._rangePropMode;\n var rangeModeInOption = dataZoomModel.get('rangeMode');\n each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n var percentSpecified = inputRawOption[names[0]] != null;\n var valueSpecified = inputRawOption[names[1]] != null;\n\n if (percentSpecified && !valueSpecified) {\n rangePropMode[index] = 'percent';\n } else if (!percentSpecified && valueSpecified) {\n rangePropMode[index] = 'value';\n } else if (rangeModeInOption) {\n rangePropMode[index] = rangeModeInOption[index];\n } else if (percentSpecified) {\n // percentSpecified && valueSpecified\n rangePropMode[index] = 'percent';\n } // else remain its original setting.\n\n });\n}\n\nvar _default = DataZoomModel;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar ComponentView = require(\"../../view/Component\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = ComponentView.extend({\n type: 'dataZoom',\n render: function (dataZoomModel, ecModel, api, payload) {\n this.dataZoomModel = dataZoomModel;\n this.ecModel = ecModel;\n this.api = api;\n },\n\n /**\n * Find the first target coordinate system.\n *\n * @protected\n * @return {Object} {\n * grid: [\n * {model: coord0, axisModels: [axis1, axis3], coordIndex: 1},\n * {model: coord1, axisModels: [axis0, axis2], coordIndex: 0},\n * ...\n * ], // cartesians must not be null/undefined.\n * polar: [\n * {model: coord0, axisModels: [axis4], coordIndex: 0},\n * ...\n * ], // polars must not be null/undefined.\n * singleAxis: [\n * {model: coord0, axisModels: [], coordIndex: 0}\n * ]\n */\n getTargetCoordInfo: function () {\n var dataZoomModel = this.dataZoomModel;\n var ecModel = this.ecModel;\n var coordSysLists = {};\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex) {\n var axisModel = ecModel.getComponent(dimNames.axis, axisIndex);\n\n if (axisModel) {\n var coordModel = axisModel.getCoordSysModel();\n coordModel && save(coordModel, axisModel, coordSysLists[coordModel.mainType] || (coordSysLists[coordModel.mainType] = []), coordModel.componentIndex);\n }\n }, this);\n\n function save(coordModel, axisModel, store, coordIndex) {\n var item;\n\n for (var i = 0; i < store.length; i++) {\n if (store[i].model === coordModel) {\n item = store[i];\n break;\n }\n }\n\n if (!item) {\n store.push(item = {\n model: coordModel,\n axisModels: [],\n coordIndex: coordIndex\n });\n }\n\n item.axisModels.push(axisModel);\n }\n\n return coordSysLists;\n }\n});\n\nmodule.exports = _default;","var _config = require(\"../config\");\n\nvar debugMode = _config.debugMode;\n\nvar logError = function () {};\n\nif (debugMode === 1) {\n logError = console.error;\n}\n\nvar _default = logError;\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Style = require(\"./Style\");\n\nvar Element = require(\"../Element\");\n\nvar RectText = require(\"./mixin/RectText\");\n\n/**\n * Base class of all displayable graphic objects\n * @module zrender/graphic/Displayable\n */\n\n/**\n * @alias module:zrender/graphic/Displayable\n * @extends module:zrender/Element\n * @extends module:zrender/graphic/mixin/RectText\n */\nfunction Displayable(opts) {\n opts = opts || {};\n Element.call(this, opts); // Extend properties\n\n for (var name in opts) {\n if (opts.hasOwnProperty(name) && name !== 'style') {\n this[name] = opts[name];\n }\n }\n /**\n * @type {module:zrender/graphic/Style}\n */\n\n\n this.style = new Style(opts.style, this);\n this._rect = null; // Shapes for cascade clipping.\n // Can only be `null`/`undefined` or an non-empty array, MUST NOT be an empty array.\n // because it is easy to only using null to check whether clipPaths changed.\n\n this.__clipPaths = null; // FIXME Stateful must be mixined after style is setted\n // Stateful.call(this, opts);\n}\n\nDisplayable.prototype = {\n constructor: Displayable,\n type: 'displayable',\n\n /**\n * Dirty flag. From which painter will determine if this displayable object needs brush.\n * @name module:zrender/graphic/Displayable#__dirty\n * @type {boolean}\n */\n __dirty: true,\n\n /**\n * Whether the displayable object is visible. when it is true, the displayable object\n * is not drawn, but the mouse event can still trigger the object.\n * @name module:/zrender/graphic/Displayable#invisible\n * @type {boolean}\n * @default false\n */\n invisible: false,\n\n /**\n * @name module:/zrender/graphic/Displayable#z\n * @type {number}\n * @default 0\n */\n z: 0,\n\n /**\n * @name module:/zrender/graphic/Displayable#z\n * @type {number}\n * @default 0\n */\n z2: 0,\n\n /**\n * The z level determines the displayable object can be drawn in which layer canvas.\n * @name module:/zrender/graphic/Displayable#zlevel\n * @type {number}\n * @default 0\n */\n zlevel: 0,\n\n /**\n * Whether it can be dragged.\n * @name module:/zrender/graphic/Displayable#draggable\n * @type {boolean}\n * @default false\n */\n draggable: false,\n\n /**\n * Whether is it dragging.\n * @name module:/zrender/graphic/Displayable#draggable\n * @type {boolean}\n * @default false\n */\n dragging: false,\n\n /**\n * Whether to respond to mouse events.\n * @name module:/zrender/graphic/Displayable#silent\n * @type {boolean}\n * @default false\n */\n silent: false,\n\n /**\n * If enable culling\n * @type {boolean}\n * @default false\n */\n culling: false,\n\n /**\n * Mouse cursor when hovered\n * @name module:/zrender/graphic/Displayable#cursor\n * @type {string}\n */\n cursor: 'pointer',\n\n /**\n * If hover area is bounding rect\n * @name module:/zrender/graphic/Displayable#rectHover\n * @type {string}\n */\n rectHover: false,\n\n /**\n * Render the element progressively when the value >= 0,\n * usefull for large data.\n * @type {boolean}\n */\n progressive: false,\n\n /**\n * @type {boolean}\n */\n incremental: false,\n\n /**\n * Scale ratio for global scale.\n * @type {boolean}\n */\n globalScaleRatio: 1,\n beforeBrush: function (ctx) {},\n afterBrush: function (ctx) {},\n\n /**\n * Graphic drawing method.\n * @param {CanvasRenderingContext2D} ctx\n */\n // Interface\n brush: function (ctx, prevEl) {},\n\n /**\n * Get the minimum bounding box.\n * @return {module:zrender/core/BoundingRect}\n */\n // Interface\n getBoundingRect: function () {},\n\n /**\n * If displayable element contain coord x, y\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\n contain: function (x, y) {\n return this.rectContain(x, y);\n },\n\n /**\n * @param {Function} cb\n * @param {} context\n */\n traverse: function (cb, context) {\n cb.call(context, this);\n },\n\n /**\n * If bounding rect of element contain coord x, y\n * @param {number} x\n * @param {number} y\n * @return {boolean}\n */\n rectContain: function (x, y) {\n var coord = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n return rect.contain(coord[0], coord[1]);\n },\n\n /**\n * Mark displayable element dirty and refresh next frame\n */\n dirty: function () {\n this.__dirty = this.__dirtyText = true;\n this._rect = null;\n this.__zr && this.__zr.refresh();\n },\n\n /**\n * If displayable object binded any event\n * @return {boolean}\n */\n // TODO, events bound by bind\n // isSilent: function () {\n // return !(\n // this.hoverable || this.draggable\n // || this.onmousemove || this.onmouseover || this.onmouseout\n // || this.onmousedown || this.onmouseup || this.onclick\n // || this.ondragenter || this.ondragover || this.ondragleave\n // || this.ondrop\n // );\n // },\n\n /**\n * Alias for animate('style')\n * @param {boolean} loop\n */\n animateStyle: function (loop) {\n return this.animate('style', loop);\n },\n attrKV: function (key, value) {\n if (key !== 'style') {\n Element.prototype.attrKV.call(this, key, value);\n } else {\n this.style.set(value);\n }\n },\n\n /**\n * @param {Object|string} key\n * @param {*} value\n */\n setStyle: function (key, value) {\n this.style.set(key, value);\n this.dirty(false);\n return this;\n },\n\n /**\n * Use given style object\n * @param {Object} obj\n */\n useStyle: function (obj) {\n this.style = new Style(obj, this);\n this.dirty(false);\n return this;\n },\n\n /**\n * The string value of `textPosition` needs to be calculated to a real postion.\n * For example, `'inside'` is calculated to `[rect.width/2, rect.height/2]`\n * by default. See `contain/text.js#calculateTextPosition` for more details.\n * But some coutom shapes like \"pin\", \"flag\" have center that is not exactly\n * `[width/2, height/2]`. So we provide this hook to customize the calculation\n * for those shapes. It will be called if the `style.textPosition` is a string.\n * @param {Obejct} [out] Prepared out object. If not provided, this method should\n * be responsible for creating one.\n * @param {module:zrender/graphic/Style} style\n * @param {Object} rect {x, y, width, height}\n * @return {Obejct} out The same as the input out.\n * {\n * x: number. mandatory.\n * y: number. mandatory.\n * textAlign: string. optional. use style.textAlign by default.\n * textVerticalAlign: string. optional. use style.textVerticalAlign by default.\n * }\n */\n calculateTextPosition: null\n};\nzrUtil.inherits(Displayable, Element);\nzrUtil.mixin(Displayable, RectText); // zrUtil.mixin(Displayable, Stateful);\n\nvar _default = Displayable;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _clazz = require(\"./clazz\");\n\nvar parseClassType = _clazz.parseClassType;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar base = 0;\n/**\n * @public\n * @param {string} type\n * @return {string}\n */\n\nfunction getUID(type) {\n // Considering the case of crossing js context,\n // use Math.random to make id as unique as possible.\n return [type || '', base++, Math.random().toFixed(5)].join('_');\n}\n/**\n * @inner\n */\n\n\nfunction enableSubTypeDefaulter(entity) {\n var subTypeDefaulters = {};\n\n entity.registerSubTypeDefaulter = function (componentType, defaulter) {\n componentType = parseClassType(componentType);\n subTypeDefaulters[componentType.main] = defaulter;\n };\n\n entity.determineSubType = function (componentType, option) {\n var type = option.type;\n\n if (!type) {\n var componentTypeMain = parseClassType(componentType).main;\n\n if (entity.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {\n type = subTypeDefaulters[componentTypeMain](option);\n }\n }\n\n return type;\n };\n\n return entity;\n}\n/**\n * Topological travel on Activity Network (Activity On Vertices).\n * Dependencies is defined in Model.prototype.dependencies, like ['xAxis', 'yAxis'].\n *\n * If 'xAxis' or 'yAxis' is absent in componentTypeList, just ignore it in topology.\n *\n * If there is circle dependencey, Error will be thrown.\n *\n */\n\n\nfunction enableTopologicalTravel(entity, dependencyGetter) {\n /**\n * @public\n * @param {Array.} targetNameList Target Component type list.\n * Can be ['aa', 'bb', 'aa.xx']\n * @param {Array.} fullNameList By which we can build dependency graph.\n * @param {Function} callback Params: componentType, dependencies.\n * @param {Object} context Scope of callback.\n */\n entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) {\n if (!targetNameList.length) {\n return;\n }\n\n var result = makeDepndencyGraph(fullNameList);\n var graph = result.graph;\n var stack = result.noEntryList;\n var targetNameSet = {};\n zrUtil.each(targetNameList, function (name) {\n targetNameSet[name] = true;\n });\n\n while (stack.length) {\n var currComponentType = stack.pop();\n var currVertex = graph[currComponentType];\n var isInTargetNameSet = !!targetNameSet[currComponentType];\n\n if (isInTargetNameSet) {\n callback.call(context, currComponentType, currVertex.originalDeps.slice());\n delete targetNameSet[currComponentType];\n }\n\n zrUtil.each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);\n }\n\n zrUtil.each(targetNameSet, function () {\n throw new Error('Circle dependency may exists');\n });\n\n function removeEdge(succComponentType) {\n graph[succComponentType].entryCount--;\n\n if (graph[succComponentType].entryCount === 0) {\n stack.push(succComponentType);\n }\n } // Consider this case: legend depends on series, and we call\n // chart.setOption({series: [...]}), where only series is in option.\n // If we do not have 'removeEdgeAndAdd', legendModel.mergeOption will\n // not be called, but only sereis.mergeOption is called. Thus legend\n // have no chance to update its local record about series (like which\n // name of series is available in legend).\n\n\n function removeEdgeAndAdd(succComponentType) {\n targetNameSet[succComponentType] = true;\n removeEdge(succComponentType);\n }\n };\n /**\n * DepndencyGraph: {Object}\n * key: conponentType,\n * value: {\n * successor: [conponentTypes...],\n * originalDeps: [conponentTypes...],\n * entryCount: {number}\n * }\n */\n\n\n function makeDepndencyGraph(fullNameList) {\n var graph = {};\n var noEntryList = [];\n zrUtil.each(fullNameList, function (name) {\n var thisItem = createDependencyGraphItem(graph, name);\n var originalDeps = thisItem.originalDeps = dependencyGetter(name);\n var availableDeps = getAvailableDependencies(originalDeps, fullNameList);\n thisItem.entryCount = availableDeps.length;\n\n if (thisItem.entryCount === 0) {\n noEntryList.push(name);\n }\n\n zrUtil.each(availableDeps, function (dependentName) {\n if (zrUtil.indexOf(thisItem.predecessor, dependentName) < 0) {\n thisItem.predecessor.push(dependentName);\n }\n\n var thatItem = createDependencyGraphItem(graph, dependentName);\n\n if (zrUtil.indexOf(thatItem.successor, dependentName) < 0) {\n thatItem.successor.push(name);\n }\n });\n });\n return {\n graph: graph,\n noEntryList: noEntryList\n };\n }\n\n function createDependencyGraphItem(graph, name) {\n if (!graph[name]) {\n graph[name] = {\n predecessor: [],\n successor: []\n };\n }\n\n return graph[name];\n }\n\n function getAvailableDependencies(originalDeps, fullNameList) {\n var availableDeps = [];\n zrUtil.each(originalDeps, function (dep) {\n zrUtil.indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);\n });\n return availableDeps;\n }\n}\n\nexports.getUID = getUID;\nexports.enableSubTypeDefaulter = enableSubTypeDefaulter;\nexports.enableTopologicalTravel = enableTopologicalTravel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isTypedArray = _util.isTypedArray;\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar _sourceType = require(\"./helper/sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * [sourceFormat]\n *\n * + \"original\":\n * This format is only used in series.data, where\n * itemStyle can be specified in data item.\n *\n * + \"arrayRows\":\n * [\n * ['product', 'score', 'amount'],\n * ['Matcha Latte', 89.3, 95.8],\n * ['Milk Tea', 92.1, 89.4],\n * ['Cheese Cocoa', 94.4, 91.2],\n * ['Walnut Brownie', 85.4, 76.9]\n * ]\n *\n * + \"objectRows\":\n * [\n * {product: 'Matcha Latte', score: 89.3, amount: 95.8},\n * {product: 'Milk Tea', score: 92.1, amount: 89.4},\n * {product: 'Cheese Cocoa', score: 94.4, amount: 91.2},\n * {product: 'Walnut Brownie', score: 85.4, amount: 76.9}\n * ]\n *\n * + \"keyedColumns\":\n * {\n * 'product': ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'],\n * 'count': [823, 235, 1042, 988],\n * 'score': [95.8, 81.4, 91.2, 76.9]\n * }\n *\n * + \"typedArray\"\n *\n * + \"unknown\"\n */\n\n/**\n * @constructor\n * @param {Object} fields\n * @param {string} fields.sourceFormat\n * @param {Array|Object} fields.fromDataset\n * @param {Array|Object} [fields.data]\n * @param {string} [seriesLayoutBy='column']\n * @param {Array.} [dimensionsDefine]\n * @param {Objet|HashMap} [encodeDefine]\n * @param {number} [startIndex=0]\n * @param {number} [dimensionsDetectCount]\n */\nfunction Source(fields) {\n /**\n * @type {boolean}\n */\n this.fromDataset = fields.fromDataset;\n /**\n * Not null/undefined.\n * @type {Array|Object}\n */\n\n this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);\n /**\n * See also \"detectSourceFormat\".\n * Not null/undefined.\n * @type {string}\n */\n\n this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;\n /**\n * 'row' or 'column'\n * Not null/undefined.\n * @type {string} seriesLayoutBy\n */\n\n this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;\n /**\n * dimensions definition in option.\n * can be null/undefined.\n * @type {Array.}\n */\n\n this.dimensionsDefine = fields.dimensionsDefine;\n /**\n * encode definition in option.\n * can be null/undefined.\n * @type {Objet|HashMap}\n */\n\n this.encodeDefine = fields.encodeDefine && createHashMap(fields.encodeDefine);\n /**\n * Not null/undefined, uint.\n * @type {number}\n */\n\n this.startIndex = fields.startIndex || 0;\n /**\n * Can be null/undefined (when unknown), uint.\n * @type {number}\n */\n\n this.dimensionsDetectCount = fields.dimensionsDetectCount;\n}\n/**\n * Wrap original series data for some compatibility cases.\n */\n\n\nSource.seriesDataToSource = function (data) {\n return new Source({\n data: data,\n sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL,\n fromDataset: false\n });\n};\n\nenableClassCheck(Source);\nvar _default = Source;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Avoid typo.\nvar SOURCE_FORMAT_ORIGINAL = 'original';\nvar SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows';\nvar SOURCE_FORMAT_OBJECT_ROWS = 'objectRows';\nvar SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns';\nvar SOURCE_FORMAT_UNKNOWN = 'unknown'; // ??? CHANGE A NAME\n\nvar SOURCE_FORMAT_TYPED_ARRAY = 'typedArray';\nvar SERIES_LAYOUT_BY_COLUMN = 'column';\nvar SERIES_LAYOUT_BY_ROW = 'row';\nexports.SOURCE_FORMAT_ORIGINAL = SOURCE_FORMAT_ORIGINAL;\nexports.SOURCE_FORMAT_ARRAY_ROWS = SOURCE_FORMAT_ARRAY_ROWS;\nexports.SOURCE_FORMAT_OBJECT_ROWS = SOURCE_FORMAT_OBJECT_ROWS;\nexports.SOURCE_FORMAT_KEYED_COLUMNS = SOURCE_FORMAT_KEYED_COLUMNS;\nexports.SOURCE_FORMAT_UNKNOWN = SOURCE_FORMAT_UNKNOWN;\nexports.SOURCE_FORMAT_TYPED_ARRAY = SOURCE_FORMAT_TYPED_ARRAY;\nexports.SERIES_LAYOUT_BY_COLUMN = SERIES_LAYOUT_BY_COLUMN;\nexports.SERIES_LAYOUT_BY_ROW = SERIES_LAYOUT_BY_ROW;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar OTHER_DIMENSIONS = createHashMap(['tooltip', 'label', 'itemName', 'itemId', 'seriesName']);\n\nfunction summarizeDimensions(data) {\n var summary = {};\n var encode = summary.encode = {};\n var notExtraCoordDimMap = createHashMap();\n var defaultedLabel = [];\n var defaultedTooltip = []; // See the comment of `List.js#userOutput`.\n\n var userOutput = summary.userOutput = {\n dimensionNames: data.dimensions.slice(),\n encode: {}\n };\n each(data.dimensions, function (dimName) {\n var dimItem = data.getDimensionInfo(dimName);\n var coordDim = dimItem.coordDim;\n\n if (coordDim) {\n var coordDimIndex = dimItem.coordDimIndex;\n getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;\n\n if (!dimItem.isExtraCoord) {\n notExtraCoordDimMap.set(coordDim, 1); // Use the last coord dim (and label friendly) as default label,\n // because when dataset is used, it is hard to guess which dimension\n // can be value dimension. If both show x, y on label is not look good,\n // and conventionally y axis is focused more.\n\n if (mayLabelDimType(dimItem.type)) {\n defaultedLabel[0] = dimName;\n } // User output encode do not contain generated coords.\n // And it only has index. User can use index to retrieve value from the raw item array.\n\n\n getOrCreateEncodeArr(userOutput.encode, coordDim)[coordDimIndex] = dimItem.index;\n }\n\n if (dimItem.defaultTooltip) {\n defaultedTooltip.push(dimName);\n }\n }\n\n OTHER_DIMENSIONS.each(function (v, otherDim) {\n var encodeArr = getOrCreateEncodeArr(encode, otherDim);\n var dimIndex = dimItem.otherDims[otherDim];\n\n if (dimIndex != null && dimIndex !== false) {\n encodeArr[dimIndex] = dimItem.name;\n }\n });\n });\n var dataDimsOnCoord = [];\n var encodeFirstDimNotExtra = {};\n notExtraCoordDimMap.each(function (v, coordDim) {\n var dimArr = encode[coordDim]; // ??? FIXME extra coord should not be set in dataDimsOnCoord.\n // But should fix the case that radar axes: simplify the logic\n // of `completeDimension`, remove `extraPrefix`.\n\n encodeFirstDimNotExtra[coordDim] = dimArr[0]; // Not necessary to remove duplicate, because a data\n // dim canot on more than one coordDim.\n\n dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);\n });\n summary.dataDimsOnCoord = dataDimsOnCoord;\n summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;\n var encodeLabel = encode.label; // FIXME `encode.label` is not recommanded, because formatter can not be set\n // in this way. Use label.formatter instead. May be remove this approach someday.\n\n if (encodeLabel && encodeLabel.length) {\n defaultedLabel = encodeLabel.slice();\n }\n\n var encodeTooltip = encode.tooltip;\n\n if (encodeTooltip && encodeTooltip.length) {\n defaultedTooltip = encodeTooltip.slice();\n } else if (!defaultedTooltip.length) {\n defaultedTooltip = defaultedLabel.slice();\n }\n\n encode.defaultedLabel = defaultedLabel;\n encode.defaultedTooltip = defaultedTooltip;\n return summary;\n}\n\nfunction getOrCreateEncodeArr(encode, dim) {\n if (!encode.hasOwnProperty(dim)) {\n encode[dim] = [];\n }\n\n return encode[dim];\n}\n\nfunction getDimensionTypeByAxis(axisType) {\n return axisType === 'category' ? 'ordinal' : axisType === 'time' ? 'time' : 'float';\n}\n\nfunction mayLabelDimType(dimType) {\n // In most cases, ordinal and time do not suitable for label.\n // Ordinal info can be displayed on axis. Time is too long.\n return !(dimType === 'ordinal' || dimType === 'time');\n} // function findTheLastDimMayLabel(data) {\n// // Get last value dim\n// var dimensions = data.dimensions.slice();\n// var valueType;\n// var valueDim;\n// while (dimensions.length && (\n// valueDim = dimensions.pop(),\n// valueType = data.getDimensionInfo(valueDim).type,\n// valueType === 'ordinal' || valueType === 'time'\n// )) {} // jshint ignore:line\n// return valueDim;\n// }\n\n\nexports.OTHER_DIMENSIONS = OTHER_DIMENSIONS;\nexports.summarizeDimensions = summarizeDimensions;\nexports.getDimensionTypeByAxis = getDimensionTypeByAxis;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar SymbolClz = require(\"./Symbol\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isObject = _util.isObject;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/SymbolDraw\n */\n\n/**\n * @constructor\n * @alias module:echarts/chart/helper/SymbolDraw\n * @param {module:zrender/graphic/Group} [symbolCtor]\n */\nfunction SymbolDraw(symbolCtor) {\n this.group = new graphic.Group();\n this._symbolCtor = symbolCtor || SymbolClz;\n}\n\nvar symbolDrawProto = SymbolDraw.prototype;\n\nfunction symbolNeedsDraw(data, point, idx, opt) {\n return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) // We do not set clipShape on group, because it will cut part of\n // the symbol element shape. We use the same clip shape here as\n // the line clip.\n && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, 'symbol') !== 'none';\n}\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} [opt] Or isIgnore\n * @param {Function} [opt.isIgnore]\n * @param {Object} [opt.clipShape]\n */\n\n\nsymbolDrawProto.updateData = function (data, opt) {\n opt = normalizeUpdateOpt(opt);\n var group = this.group;\n var seriesModel = data.hostModel;\n var oldData = this._data;\n var SymbolCtor = this._symbolCtor;\n var seriesScope = makeSeriesScope(data); // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!oldData) {\n group.removeAll();\n }\n\n data.diff(oldData).add(function (newIdx) {\n var point = data.getItemLayout(newIdx);\n\n if (symbolNeedsDraw(data, point, newIdx, opt)) {\n var symbolEl = new SymbolCtor(data, newIdx, seriesScope);\n symbolEl.attr('position', point);\n data.setItemGraphicEl(newIdx, symbolEl);\n group.add(symbolEl);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx);\n var point = data.getItemLayout(newIdx);\n\n if (!symbolNeedsDraw(data, point, newIdx, opt)) {\n group.remove(symbolEl);\n return;\n }\n\n if (!symbolEl) {\n symbolEl = new SymbolCtor(data, newIdx);\n symbolEl.attr('position', point);\n } else {\n symbolEl.updateData(data, newIdx, seriesScope);\n graphic.updateProps(symbolEl, {\n position: point\n }, seriesModel);\n } // Add back\n\n\n group.add(symbolEl);\n data.setItemGraphicEl(newIdx, symbolEl);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && el.fadeOut(function () {\n group.remove(el);\n });\n }).execute();\n this._data = data;\n};\n\nsymbolDrawProto.isPersistent = function () {\n return true;\n};\n\nsymbolDrawProto.updateLayout = function () {\n var data = this._data;\n\n if (data) {\n // Not use animation\n data.eachItemGraphicEl(function (el, idx) {\n var point = data.getItemLayout(idx);\n el.attr('position', point);\n });\n }\n};\n\nsymbolDrawProto.incrementalPrepareUpdate = function (data) {\n this._seriesScope = makeSeriesScope(data);\n this._data = null;\n this.group.removeAll();\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Object} [opt] Or isIgnore\n * @param {Function} [opt.isIgnore]\n * @param {Object} [opt.clipShape]\n */\n\n\nsymbolDrawProto.incrementalUpdate = function (taskParams, data, opt) {\n opt = normalizeUpdateOpt(opt);\n\n function updateIncrementalAndHover(el) {\n if (!el.isGroup) {\n el.incremental = el.useHoverLayer = true;\n }\n }\n\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var point = data.getItemLayout(idx);\n\n if (symbolNeedsDraw(data, point, idx, opt)) {\n var el = new this._symbolCtor(data, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n el.attr('position', point);\n this.group.add(el);\n data.setItemGraphicEl(idx, el);\n }\n }\n};\n\nfunction normalizeUpdateOpt(opt) {\n if (opt != null && !isObject(opt)) {\n opt = {\n isIgnore: opt\n };\n }\n\n return opt || {};\n}\n\nsymbolDrawProto.remove = function (enableAnimation) {\n var group = this.group;\n var data = this._data; // Incremental model do not have this._data.\n\n if (data && enableAnimation) {\n data.eachItemGraphicEl(function (el) {\n el.fadeOut(function () {\n group.remove(el);\n });\n });\n } else {\n group.removeAll();\n }\n};\n\nfunction makeSeriesScope(data) {\n var seriesModel = data.hostModel;\n return {\n itemStyle: seriesModel.getModel('itemStyle').getItemStyle(['color']),\n hoverItemStyle: seriesModel.getModel('emphasis.itemStyle').getItemStyle(),\n symbolRotate: seriesModel.get('symbolRotate'),\n symbolOffset: seriesModel.get('symbolOffset'),\n hoverAnimation: seriesModel.get('hoverAnimation'),\n labelModel: seriesModel.getModel('label'),\n hoverLabelModel: seriesModel.getModel('emphasis.label'),\n cursorStyle: seriesModel.get('cursor')\n };\n}\n\nvar _default = SymbolDraw;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar round = _number.round;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction createGridClipPath(cartesian, hasAnimation, seriesModel) {\n var rect = cartesian.getArea();\n var isHorizontal = cartesian.getBaseAxis().isHorizontal();\n var x = rect.x;\n var y = rect.y;\n var width = rect.width;\n var height = rect.height;\n var lineWidth = seriesModel.get('lineStyle.width') || 2; // Expand the clip path a bit to avoid the border is clipped and looks thinner\n\n x -= lineWidth / 2;\n y -= lineWidth / 2;\n width += lineWidth;\n height += lineWidth;\n var clipPath = new graphic.Rect({\n shape: {\n x: x,\n y: y,\n width: width,\n height: height\n }\n });\n\n if (hasAnimation) {\n clipPath.shape[isHorizontal ? 'width' : 'height'] = 0;\n graphic.initProps(clipPath, {\n shape: {\n width: width,\n height: height\n }\n }, seriesModel);\n }\n\n return clipPath;\n}\n\nfunction createPolarClipPath(polar, hasAnimation, seriesModel) {\n var sectorArea = polar.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n\n var clipPath = new graphic.Sector({\n shape: {\n cx: round(polar.cx, 1),\n cy: round(polar.cy, 1),\n r0: round(sectorArea.r0, 1),\n r: round(sectorArea.r, 1),\n startAngle: sectorArea.startAngle,\n endAngle: sectorArea.endAngle,\n clockwise: sectorArea.clockwise\n }\n });\n\n if (hasAnimation) {\n clipPath.shape.endAngle = sectorArea.startAngle;\n graphic.initProps(clipPath, {\n shape: {\n endAngle: sectorArea.endAngle\n }\n }, seriesModel);\n }\n\n return clipPath;\n}\n\nfunction createClipPath(coordSys, hasAnimation, seriesModel) {\n if (!coordSys) {\n return null;\n } else if (coordSys.type === 'polar') {\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n } else if (coordSys.type === 'cartesian2d') {\n return createGridClipPath(coordSys, hasAnimation, seriesModel);\n }\n\n return null;\n}\n\nexports.createGridClipPath = createGridClipPath;\nexports.createPolarClipPath = createPolarClipPath;\nexports.createClipPath = createClipPath;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar map = _util.map;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\n\nvar _dataStackHelper = require(\"../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nfunction _default(seriesType) {\n return {\n seriesType: seriesType,\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var data = seriesModel.getData();\n var coordSys = seriesModel.coordinateSystem;\n var pipelineContext = seriesModel.pipelineContext;\n var isLargeRender = pipelineContext.large;\n\n if (!coordSys) {\n return;\n }\n\n var dims = map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }).slice(0, 2);\n var dimLen = dims.length;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n if (isDimensionStacked(data, dims[0]\n /*, dims[1]*/\n )) {\n dims[0] = stackResultDim;\n }\n\n if (isDimensionStacked(data, dims[1]\n /*, dims[0]*/\n )) {\n dims[1] = stackResultDim;\n }\n\n function progress(params, data) {\n var segCount = params.end - params.start;\n var points = isLargeRender && new Float32Array(segCount * dimLen);\n\n for (var i = params.start, offset = 0, tmpIn = [], tmpOut = []; i < params.end; i++) {\n var point;\n\n if (dimLen === 1) {\n var x = data.get(dims[0], i);\n point = !isNaN(x) && coordSys.dataToPoint(x, null, tmpOut);\n } else {\n var x = tmpIn[0] = data.get(dims[0], i);\n var y = tmpIn[1] = data.get(dims[1], i); // Also {Array.}, not undefined to avoid if...else... statement\n\n point = !isNaN(x) && !isNaN(y) && coordSys.dataToPoint(tmpIn, null, tmpOut);\n }\n\n if (isLargeRender) {\n points[offset++] = point ? point[0] : NaN;\n points[offset++] = point ? point[1] : NaN;\n } else {\n data.setItemLayout(i, point && point.slice() || [NaN, NaN]);\n }\n }\n\n isLargeRender && data.setLayout('symbolPoints', points);\n }\n\n return dimLen && {\n progress: progress\n };\n }\n };\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../util/graphic\");\n\nrequire(\"../coord/cartesian/Grid\");\n\nrequire(\"./axis\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Grid view\necharts.extendComponentView({\n type: 'grid',\n render: function (gridModel, ecModel) {\n this.group.removeAll();\n\n if (gridModel.get('show')) {\n this.group.add(new graphic.Rect({\n shape: gridModel.coordinateSystem.getRect(),\n style: zrUtil.defaults({\n fill: gridModel.get('backgroundColor')\n }, gridModel.getItemStyle()),\n silent: true,\n z2: -1\n }));\n }\n }\n});\necharts.registerPreprocessor(function (option) {\n // Only create grid when need\n if (option.xAxis && option.yAxis && !option.grid) {\n option.grid = {};\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * LegendVisualProvider is an bridge that pick encoded color from data and\n * provide to the legend component.\n * @param {Function} getDataWithEncodedVisual Function to get data after filtered. It stores all the encoding info\n * @param {Function} getRawData Function to get raw data before filtered.\n */\nfunction LegendVisualProvider(getDataWithEncodedVisual, getRawData) {\n this.getAllNames = function () {\n var rawData = getRawData(); // We find the name from the raw data. In case it's filtered by the legend component.\n // Normally, the name can be found in rawData, but can't be found in filtered data will display as gray.\n\n return rawData.mapArray(rawData.getName);\n };\n\n this.containName = function (name) {\n var rawData = getRawData();\n return rawData.indexOfName(name) >= 0;\n };\n\n this.indexOfName = function (name) {\n // Only get data when necessary.\n // Because LegendVisualProvider constructor may be new in the stage that data is not prepared yet.\n // Invoking Series#getData immediately will throw an error.\n var dataWithEncodedVisual = getDataWithEncodedVisual();\n return dataWithEncodedVisual.indexOfName(name);\n };\n\n this.getItemVisual = function (dataIndex, key) {\n // Get encoded visual properties from final filtered data.\n var dataWithEncodedVisual = getDataWithEncodedVisual();\n return dataWithEncodedVisual.getItemVisual(dataIndex, key);\n };\n}\n\nvar _default = LegendVisualProvider;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(seriesType) {\n return {\n seriesType: seriesType,\n reset: function (seriesModel, ecModel) {\n var legendModels = ecModel.findComponents({\n mainType: 'legend'\n });\n\n if (!legendModels || !legendModels.length) {\n return;\n }\n\n var data = seriesModel.getData();\n data.filterSelf(function (idx) {\n var name = data.getName(idx); // If in any legend component the status is not selected.\n\n for (var i = 0; i < legendModels.length; i++) {\n if (!legendModels[i].isSelected(name)) {\n return false;\n }\n }\n\n return true;\n });\n }\n };\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Eventful = require(\"zrender/lib/mixin/Eventful\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar interactionMutex = require(\"./interactionMutex\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @alias module:echarts/component/helper/RoamController\n * @constructor\n * @mixin {module:zrender/mixin/Eventful}\n *\n * @param {module:zrender/zrender~ZRender} zr\n */\nfunction RoamController(zr) {\n /**\n * @type {Function}\n */\n this.pointerChecker;\n /**\n * @type {module:zrender}\n */\n\n this._zr = zr;\n /**\n * @type {Object}\n */\n\n this._opt = {}; // Avoid two roamController bind the same handler\n\n var bind = zrUtil.bind;\n var mousedownHandler = bind(mousedown, this);\n var mousemoveHandler = bind(mousemove, this);\n var mouseupHandler = bind(mouseup, this);\n var mousewheelHandler = bind(mousewheel, this);\n var pinchHandler = bind(pinch, this);\n Eventful.call(this);\n /**\n * @param {Function} pointerChecker\n * input: x, y\n * output: boolean\n */\n\n this.setPointerChecker = function (pointerChecker) {\n this.pointerChecker = pointerChecker;\n };\n /**\n * Notice: only enable needed types. For example, if 'zoom'\n * is not needed, 'zoom' should not be enabled, otherwise\n * default mousewheel behaviour (scroll page) will be disabled.\n *\n * @param {boolean|string} [controlType=true] Specify the control type,\n * which can be null/undefined or true/false\n * or 'pan/move' or 'zoom'/'scale'\n * @param {Object} [opt]\n * @param {Object} [opt.zoomOnMouseWheel=true] The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n * @param {Object} [opt.moveOnMouseMove=true] The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n * @param {Object} [opt.moveOnMouseWheel=false] The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n * @param {Object} [opt.preventDefaultMouseMove=true] When pan.\n */\n\n\n this.enable = function (controlType, opt) {\n // Disable previous first\n this.disable();\n this._opt = zrUtil.defaults(zrUtil.clone(opt) || {}, {\n zoomOnMouseWheel: true,\n moveOnMouseMove: true,\n // By default, wheel do not trigger move.\n moveOnMouseWheel: false,\n preventDefaultMouseMove: true\n });\n\n if (controlType == null) {\n controlType = true;\n }\n\n if (controlType === true || controlType === 'move' || controlType === 'pan') {\n zr.on('mousedown', mousedownHandler);\n zr.on('mousemove', mousemoveHandler);\n zr.on('mouseup', mouseupHandler);\n }\n\n if (controlType === true || controlType === 'scale' || controlType === 'zoom') {\n zr.on('mousewheel', mousewheelHandler);\n zr.on('pinch', pinchHandler);\n }\n };\n\n this.disable = function () {\n zr.off('mousedown', mousedownHandler);\n zr.off('mousemove', mousemoveHandler);\n zr.off('mouseup', mouseupHandler);\n zr.off('mousewheel', mousewheelHandler);\n zr.off('pinch', pinchHandler);\n };\n\n this.dispose = this.disable;\n\n this.isDragging = function () {\n return this._dragging;\n };\n\n this.isPinching = function () {\n return this._pinching;\n };\n}\n\nzrUtil.mixin(RoamController, Eventful);\n\nfunction mousedown(e) {\n if (eventTool.isMiddleOrRightButtonOnMouseUpDown(e) || e.target && e.target.draggable) {\n return;\n }\n\n var x = e.offsetX;\n var y = e.offsetY; // Only check on mosedown, but not mousemove.\n // Mouse can be out of target when mouse moving.\n\n if (this.pointerChecker && this.pointerChecker(e, x, y)) {\n this._x = x;\n this._y = y;\n this._dragging = true;\n }\n}\n\nfunction mousemove(e) {\n if (!this._dragging || !isAvailableBehavior('moveOnMouseMove', e, this._opt) || e.gestureEvent === 'pinch' || interactionMutex.isTaken(this._zr, 'globalPan')) {\n return;\n }\n\n var x = e.offsetX;\n var y = e.offsetY;\n var oldX = this._x;\n var oldY = this._y;\n var dx = x - oldX;\n var dy = y - oldY;\n this._x = x;\n this._y = y;\n this._opt.preventDefaultMouseMove && eventTool.stop(e.event);\n trigger(this, 'pan', 'moveOnMouseMove', e, {\n dx: dx,\n dy: dy,\n oldX: oldX,\n oldY: oldY,\n newX: x,\n newY: y\n });\n}\n\nfunction mouseup(e) {\n if (!eventTool.isMiddleOrRightButtonOnMouseUpDown(e)) {\n this._dragging = false;\n }\n}\n\nfunction mousewheel(e) {\n var shouldZoom = isAvailableBehavior('zoomOnMouseWheel', e, this._opt);\n var shouldMove = isAvailableBehavior('moveOnMouseWheel', e, this._opt);\n var wheelDelta = e.wheelDelta;\n var absWheelDeltaDelta = Math.abs(wheelDelta);\n var originX = e.offsetX;\n var originY = e.offsetY; // wheelDelta maybe -0 in chrome mac.\n\n if (wheelDelta === 0 || !shouldZoom && !shouldMove) {\n return;\n } // If both `shouldZoom` and `shouldMove` is true, trigger\n // their event both, and the final behavior is determined\n // by event listener themselves.\n\n\n if (shouldZoom) {\n // Convenience:\n // Mac and VM Windows on Mac: scroll up: zoom out.\n // Windows: scroll up: zoom in.\n // FIXME: Should do more test in different environment.\n // wheelDelta is too complicated in difference nvironment\n // (https://developer.mozilla.org/en-US/docs/Web/Events/mousewheel),\n // although it has been normallized by zrender.\n // wheelDelta of mouse wheel is bigger than touch pad.\n var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1;\n var scale = wheelDelta > 0 ? factor : 1 / factor;\n checkPointerAndTrigger(this, 'zoom', 'zoomOnMouseWheel', e, {\n scale: scale,\n originX: originX,\n originY: originY\n });\n }\n\n if (shouldMove) {\n // FIXME: Should do more test in different environment.\n var absDelta = Math.abs(wheelDelta); // wheelDelta of mouse wheel is bigger than touch pad.\n\n var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05);\n checkPointerAndTrigger(this, 'scrollMove', 'moveOnMouseWheel', e, {\n scrollDelta: scrollDelta,\n originX: originX,\n originY: originY\n });\n }\n}\n\nfunction pinch(e) {\n if (interactionMutex.isTaken(this._zr, 'globalPan')) {\n return;\n }\n\n var scale = e.pinchScale > 1 ? 1.1 : 1 / 1.1;\n checkPointerAndTrigger(this, 'zoom', null, e, {\n scale: scale,\n originX: e.pinchX,\n originY: e.pinchY\n });\n}\n\nfunction checkPointerAndTrigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\n if (controller.pointerChecker && controller.pointerChecker(e, contollerEvent.originX, contollerEvent.originY)) {\n // When mouse is out of roamController rect,\n // default befavoius should not be be disabled, otherwise\n // page sliding is disabled, contrary to expectation.\n eventTool.stop(e.event);\n trigger(controller, eventName, behaviorToCheck, e, contollerEvent);\n }\n}\n\nfunction trigger(controller, eventName, behaviorToCheck, e, contollerEvent) {\n // Also provide behavior checker for event listener, for some case that\n // multiple components share one listener.\n contollerEvent.isAvailableBehavior = zrUtil.bind(isAvailableBehavior, null, behaviorToCheck, e);\n controller.trigger(eventName, contollerEvent);\n} // settings: {\n// zoomOnMouseWheel\n// moveOnMouseMove\n// moveOnMouseWheel\n// }\n// The value can be: true / false / 'shift' / 'ctrl' / 'alt'.\n\n\nfunction isAvailableBehavior(behaviorToCheck, e, settings) {\n var setting = settings[behaviorToCheck];\n return !behaviorToCheck || setting && (!zrUtil.isString(setting) || e.event[setting + 'Key']);\n}\n\nvar _default = RoamController;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar axisPointerModelHelper = require(\"./axisPointer/modelHelper\");\n\nvar axisTrigger = require(\"./axisPointer/axisTrigger\");\n\nrequire(\"./axisPointer/AxisPointerModel\");\n\nrequire(\"./axisPointer/AxisPointerView\");\n\nrequire(\"./axisPointer/CartesianAxisPointer\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// CartesianAxisPointer is not supposed to be required here. But consider\n// echarts.simple.js and online build tooltip, which only require gridSimple,\n// CartesianAxisPointer should be able to required somewhere.\necharts.registerPreprocessor(function (option) {\n // Always has a global axisPointerModel for default setting.\n if (option) {\n (!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {});\n var link = option.axisPointer.link; // Normalize to array to avoid object mergin. But if link\n // is not set, remain null/undefined, otherwise it will\n // override existent link setting.\n\n if (link && !zrUtil.isArray(link)) {\n option.axisPointer.link = [link];\n }\n }\n}); // This process should proformed after coordinate systems created\n// and series data processed. So put it on statistic processing stage.\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {\n // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n // allAxesInfo should be updated when setOption performed.\n ecModel.getComponent('axisPointer').coordSysAxesInfo = axisPointerModelHelper.collect(ecModel, api);\n}); // Broadcast to all views.\n\necharts.registerAction({\n type: 'updateAxisPointer',\n event: 'updateAxisPointer',\n update: ':updateAxisPointer'\n}, axisTrigger);","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var guid = require(\"./core/guid\");\n\nvar env = require(\"./core/env\");\n\nvar zrUtil = require(\"./core/util\");\n\nvar Handler = require(\"./Handler\");\n\nvar Storage = require(\"./Storage\");\n\nvar Painter = require(\"./Painter\");\n\nvar Animation = require(\"./animation/Animation\");\n\nvar HandlerProxy = require(\"./dom/HandlerProxy\");\n\n/*!\n* ZRender, a high performance 2d drawing library.\n*\n* Copyright (c) 2013, Baidu Inc.\n* All rights reserved.\n*\n* LICENSE\n* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\n*/\nvar useVML = !env.canvasSupported;\nvar painterCtors = {\n canvas: Painter\n};\nvar instances = {}; // ZRender实例map索引\n\n/**\n * @type {string}\n */\n\nvar version = '4.2.0';\n/**\n * Initializing a zrender instance\n * @param {HTMLElement} dom\n * @param {Object} [opts]\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n * @return {module:zrender/ZRender}\n */\n\nfunction init(dom, opts) {\n var zr = new ZRender(guid(), dom, opts);\n instances[zr.id] = zr;\n return zr;\n}\n/**\n * Dispose zrender instance\n * @param {module:zrender/ZRender} zr\n */\n\n\nfunction dispose(zr) {\n if (zr) {\n zr.dispose();\n } else {\n for (var key in instances) {\n if (instances.hasOwnProperty(key)) {\n instances[key].dispose();\n }\n }\n\n instances = {};\n }\n\n return this;\n}\n/**\n * Get zrender instance by id\n * @param {string} id zrender instance id\n * @return {module:zrender/ZRender}\n */\n\n\nfunction getInstance(id) {\n return instances[id];\n}\n\nfunction registerPainter(name, Ctor) {\n painterCtors[name] = Ctor;\n}\n\nfunction delInstance(id) {\n delete instances[id];\n}\n/**\n * @module zrender/ZRender\n */\n\n/**\n * @constructor\n * @alias module:zrender/ZRender\n * @param {string} id\n * @param {HTMLElement} dom\n * @param {Object} opts\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n\n\nvar ZRender = function (id, dom, opts) {\n opts = opts || {};\n /**\n * @type {HTMLDomElement}\n */\n\n this.dom = dom;\n /**\n * @type {string}\n */\n\n this.id = id;\n var self = this;\n var storage = new Storage();\n var rendererType = opts.renderer; // TODO WebGL\n\n if (useVML) {\n if (!painterCtors.vml) {\n throw new Error('You need to require \\'zrender/vml/vml\\' to support IE8');\n }\n\n rendererType = 'vml';\n } else if (!rendererType || !painterCtors[rendererType]) {\n rendererType = 'canvas';\n }\n\n var painter = new painterCtors[rendererType](dom, storage, opts, id);\n this.storage = storage;\n this.painter = painter;\n var handerProxy = !env.node && !env.worker ? new HandlerProxy(painter.getViewportRoot(), painter.root) : null;\n this.handler = new Handler(storage, painter, handerProxy, painter.root);\n /**\n * @type {module:zrender/animation/Animation}\n */\n\n this.animation = new Animation({\n stage: {\n update: zrUtil.bind(this.flush, this)\n }\n });\n this.animation.start();\n /**\n * @type {boolean}\n * @private\n */\n\n this._needsRefresh; // 修改 storage.delFromStorage, 每次删除元素之前删除动画\n // FIXME 有点ugly\n\n var oldDelFromStorage = storage.delFromStorage;\n var oldAddToStorage = storage.addToStorage;\n\n storage.delFromStorage = function (el) {\n oldDelFromStorage.call(storage, el);\n el && el.removeSelfFromZr(self);\n };\n\n storage.addToStorage = function (el) {\n oldAddToStorage.call(storage, el);\n el.addSelfToZr(self);\n };\n};\n\nZRender.prototype = {\n constructor: ZRender,\n\n /**\n * 获取实例唯一标识\n * @return {string}\n */\n getId: function () {\n return this.id;\n },\n\n /**\n * 添加元素\n * @param {module:zrender/Element} el\n */\n add: function (el) {\n this.storage.addRoot(el);\n this._needsRefresh = true;\n },\n\n /**\n * 删除元素\n * @param {module:zrender/Element} el\n */\n remove: function (el) {\n this.storage.delRoot(el);\n this._needsRefresh = true;\n },\n\n /**\n * Change configuration of layer\n * @param {string} zLevel\n * @param {Object} config\n * @param {string} [config.clearColor=0] Clear color\n * @param {string} [config.motionBlur=false] If enable motion blur\n * @param {number} [config.lastFrameAlpha=0.7] Motion blur factor. Larger value cause longer trailer\n */\n configLayer: function (zLevel, config) {\n if (this.painter.configLayer) {\n this.painter.configLayer(zLevel, config);\n }\n\n this._needsRefresh = true;\n },\n\n /**\n * Set background color\n * @param {string} backgroundColor\n */\n setBackgroundColor: function (backgroundColor) {\n if (this.painter.setBackgroundColor) {\n this.painter.setBackgroundColor(backgroundColor);\n }\n\n this._needsRefresh = true;\n },\n\n /**\n * Repaint the canvas immediately\n */\n refreshImmediately: function () {\n // var start = new Date();\n // Clear needsRefresh ahead to avoid something wrong happens in refresh\n // Or it will cause zrender refreshes again and again.\n this._needsRefresh = this._needsRefreshHover = false;\n this.painter.refresh(); // Avoid trigger zr.refresh in Element#beforeUpdate hook\n\n this._needsRefresh = this._needsRefreshHover = false; // var end = new Date();\n // var log = document.getElementById('log');\n // if (log) {\n // log.innerHTML = log.innerHTML + '
' + (end - start);\n // }\n },\n\n /**\n * Mark and repaint the canvas in the next frame of browser\n */\n refresh: function () {\n this._needsRefresh = true;\n },\n\n /**\n * Perform all refresh\n */\n flush: function () {\n var triggerRendered;\n\n if (this._needsRefresh) {\n triggerRendered = true;\n this.refreshImmediately();\n }\n\n if (this._needsRefreshHover) {\n triggerRendered = true;\n this.refreshHoverImmediately();\n }\n\n triggerRendered && this.trigger('rendered');\n },\n\n /**\n * Add element to hover layer\n * @param {module:zrender/Element} el\n * @param {Object} style\n */\n addHover: function (el, style) {\n if (this.painter.addHover) {\n var elMirror = this.painter.addHover(el, style);\n this.refreshHover();\n return elMirror;\n }\n },\n\n /**\n * Add element from hover layer\n * @param {module:zrender/Element} el\n */\n removeHover: function (el) {\n if (this.painter.removeHover) {\n this.painter.removeHover(el);\n this.refreshHover();\n }\n },\n\n /**\n * Clear all hover elements in hover layer\n * @param {module:zrender/Element} el\n */\n clearHover: function () {\n if (this.painter.clearHover) {\n this.painter.clearHover();\n this.refreshHover();\n }\n },\n\n /**\n * Refresh hover in next frame\n */\n refreshHover: function () {\n this._needsRefreshHover = true;\n },\n\n /**\n * Refresh hover immediately\n */\n refreshHoverImmediately: function () {\n this._needsRefreshHover = false;\n this.painter.refreshHover && this.painter.refreshHover();\n },\n\n /**\n * Resize the canvas.\n * Should be invoked when container size is changed\n * @param {Object} [opts]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n resize: function (opts) {\n opts = opts || {};\n this.painter.resize(opts.width, opts.height);\n this.handler.resize();\n },\n\n /**\n * Stop and clear all animation immediately\n */\n clearAnimation: function () {\n this.animation.clear();\n },\n\n /**\n * Get container width\n */\n getWidth: function () {\n return this.painter.getWidth();\n },\n\n /**\n * Get container height\n */\n getHeight: function () {\n return this.painter.getHeight();\n },\n\n /**\n * Export the canvas as Base64 URL\n * @param {string} type\n * @param {string} [backgroundColor='#fff']\n * @return {string} Base64 URL\n */\n // toDataURL: function(type, backgroundColor) {\n // return this.painter.getRenderedCanvas({\n // backgroundColor: backgroundColor\n // }).toDataURL(type);\n // },\n\n /**\n * Converting a path to image.\n * It has much better performance of drawing image rather than drawing a vector path.\n * @param {module:zrender/graphic/Path} e\n * @param {number} width\n * @param {number} height\n */\n pathToImage: function (e, dpr) {\n return this.painter.pathToImage(e, dpr);\n },\n\n /**\n * Set default cursor\n * @param {string} [cursorStyle='default'] 例如 crosshair\n */\n setCursorStyle: function (cursorStyle) {\n this.handler.setCursorStyle(cursorStyle);\n },\n\n /**\n * Find hovered element\n * @param {number} x\n * @param {number} y\n * @return {Object} {target, topTarget}\n */\n findHover: function (x, y) {\n return this.handler.findHover(x, y);\n },\n\n /**\n * Bind event\n *\n * @param {string} eventName Event name\n * @param {Function} eventHandler Handler function\n * @param {Object} [context] Context object\n */\n on: function (eventName, eventHandler, context) {\n this.handler.on(eventName, eventHandler, context);\n },\n\n /**\n * Unbind event\n * @param {string} eventName Event name\n * @param {Function} [eventHandler] Handler function\n */\n off: function (eventName, eventHandler) {\n this.handler.off(eventName, eventHandler);\n },\n\n /**\n * Trigger event manually\n *\n * @param {string} eventName Event name\n * @param {event=} event Event object\n */\n trigger: function (eventName, event) {\n this.handler.trigger(eventName, event);\n },\n\n /**\n * Clear all objects and the canvas.\n */\n clear: function () {\n this.storage.delRoot();\n this.painter.clear();\n },\n\n /**\n * Dispose self.\n */\n dispose: function () {\n this.animation.stop();\n this.clear();\n this.storage.dispose();\n this.painter.dispose();\n this.handler.dispose();\n this.animation = this.storage = this.painter = this.handler = null;\n delInstance(this.id);\n }\n};\nexports.version = version;\nexports.init = init;\nexports.dispose = dispose;\nexports.getInstance = getInstance;\nexports.registerPainter = registerPainter;","var dpr = 1; // If in browser environment\n\nif (typeof window !== 'undefined') {\n dpr = Math.max(window.devicePixelRatio || 1, 1);\n}\n/**\n * config默认配置项\n * @exports zrender/config\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n */\n\n/**\n * Debug log mode:\n * 0: Do nothing, for release.\n * 1: console.error, for debug.\n */\n\n\nvar debugMode = 0; // retina 屏幕优化\n\nvar devicePixelRatio = dpr;\nexports.debugMode = debugMode;\nexports.devicePixelRatio = devicePixelRatio;","var ContextCachedBy = {\n NONE: 0,\n STYLE_BIND: 1,\n PLAIN_TEXT: 2\n}; // Avoid confused with 0/false.\n\nvar WILL_BE_RESTORED = 9;\nexports.ContextCachedBy = ContextCachedBy;\nexports.WILL_BE_RESTORED = WILL_BE_RESTORED;","var _util = require(\"../../core/util\");\n\nvar retrieve2 = _util.retrieve2;\nvar retrieve3 = _util.retrieve3;\nvar each = _util.each;\nvar normalizeCssArray = _util.normalizeCssArray;\nvar isString = _util.isString;\nvar isObject = _util.isObject;\n\nvar textContain = require(\"../../contain/text\");\n\nvar roundRectHelper = require(\"./roundRect\");\n\nvar imageHelper = require(\"./image\");\n\nvar fixShadow = require(\"./fixShadow\");\n\nvar _constant = require(\"../constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\nvar WILL_BE_RESTORED = _constant.WILL_BE_RESTORED;\nvar DEFAULT_FONT = textContain.DEFAULT_FONT; // TODO: Have not support 'start', 'end' yet.\n\nvar VALID_TEXT_ALIGN = {\n left: 1,\n right: 1,\n center: 1\n};\nvar VALID_TEXT_VERTICAL_ALIGN = {\n top: 1,\n bottom: 1,\n middle: 1\n}; // Different from `STYLE_COMMON_PROPS` of `graphic/Style`,\n// the default value of shadowColor is `'transparent'`.\n\nvar SHADOW_STYLE_COMMON_PROPS = [['textShadowBlur', 'shadowBlur', 0], ['textShadowOffsetX', 'shadowOffsetX', 0], ['textShadowOffsetY', 'shadowOffsetY', 0], ['textShadowColor', 'shadowColor', 'transparent']];\nvar _tmpTextPositionResult = {};\nvar _tmpBoxPositionResult = {};\n/**\n * @param {module:zrender/graphic/Style} style\n * @return {module:zrender/graphic/Style} The input style.\n */\n\nfunction normalizeTextStyle(style) {\n normalizeStyle(style);\n each(style.rich, normalizeStyle);\n return style;\n}\n\nfunction normalizeStyle(style) {\n if (style) {\n style.font = textContain.makeFont(style);\n var textAlign = style.textAlign;\n textAlign === 'middle' && (textAlign = 'center');\n style.textAlign = textAlign == null || VALID_TEXT_ALIGN[textAlign] ? textAlign : 'left'; // Compatible with textBaseline.\n\n var textVerticalAlign = style.textVerticalAlign || style.textBaseline;\n textVerticalAlign === 'center' && (textVerticalAlign = 'middle');\n style.textVerticalAlign = textVerticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[textVerticalAlign] ? textVerticalAlign : 'top';\n var textPadding = style.textPadding;\n\n if (textPadding) {\n style.textPadding = normalizeCssArray(style.textPadding);\n }\n }\n}\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {string} text\n * @param {module:zrender/graphic/Style} style\n * @param {Object|boolean} [rect] {x, y, width, height}\n * If set false, rect text is not used.\n * @param {Element|module:zrender/graphic/helper/constant.WILL_BE_RESTORED} [prevEl] For ctx prop cache.\n */\n\n\nfunction renderText(hostEl, ctx, text, style, rect, prevEl) {\n style.rich ? renderRichText(hostEl, ctx, text, style, rect, prevEl) : renderPlainText(hostEl, ctx, text, style, rect, prevEl);\n} // Avoid setting to ctx according to prevEl if possible for\n// performance in scenarios of large amount text.\n\n\nfunction renderPlainText(hostEl, ctx, text, style, rect, prevEl) {\n 'use strict';\n\n var needDrawBg = needDrawBackground(style);\n var prevStyle;\n var checkCache = false;\n var cachedByMe = ctx.__attrCachedBy === ContextCachedBy.PLAIN_TEXT; // Only take and check cache for `Text` el, but not RectText.\n\n if (prevEl !== WILL_BE_RESTORED) {\n if (prevEl) {\n prevStyle = prevEl.style;\n checkCache = !needDrawBg && cachedByMe && prevStyle;\n } // Prevent from using cache in `Style::bind`, because of the case:\n // ctx property is modified by other properties than `Style::bind`\n // used, and Style::bind is called next.\n\n\n ctx.__attrCachedBy = needDrawBg ? ContextCachedBy.NONE : ContextCachedBy.PLAIN_TEXT;\n } // Since this will be restored, prevent from using these props to check cache in the next\n // entering of this method. But do not need to clear other cache like `Style::bind`.\n else if (cachedByMe) {\n ctx.__attrCachedBy = ContextCachedBy.NONE;\n }\n\n var styleFont = style.font || DEFAULT_FONT; // PENDING\n // Only `Text` el set `font` and keep it (`RectText` will restore). So theoretically\n // we can make font cache on ctx, which can cache for text el that are discontinuous.\n // But layer save/restore needed to be considered.\n // if (styleFont !== ctx.__fontCache) {\n // ctx.font = styleFont;\n // if (prevEl !== WILL_BE_RESTORED) {\n // ctx.__fontCache = styleFont;\n // }\n // }\n\n if (!checkCache || styleFont !== (prevStyle.font || DEFAULT_FONT)) {\n ctx.font = styleFont;\n } // Use the final font from context-2d, because the final\n // font might not be the style.font when it is illegal.\n // But get `ctx.font` might be time consuming.\n\n\n var computedFont = hostEl.__computedFont;\n\n if (hostEl.__styleFont !== styleFont) {\n hostEl.__styleFont = styleFont;\n computedFont = hostEl.__computedFont = ctx.font;\n }\n\n var textPadding = style.textPadding;\n var textLineHeight = style.textLineHeight;\n var contentBlock = hostEl.__textCotentBlock;\n\n if (!contentBlock || hostEl.__dirtyText) {\n contentBlock = hostEl.__textCotentBlock = textContain.parsePlainText(text, computedFont, textPadding, textLineHeight, style.truncate);\n }\n\n var outerHeight = contentBlock.outerHeight;\n var textLines = contentBlock.lines;\n var lineHeight = contentBlock.lineHeight;\n var boxPos = getBoxPosition(_tmpBoxPositionResult, hostEl, style, rect);\n var baseX = boxPos.baseX;\n var baseY = boxPos.baseY;\n var textAlign = boxPos.textAlign || 'left';\n var textVerticalAlign = boxPos.textVerticalAlign; // Origin of textRotation should be the base point of text drawing.\n\n applyTextRotation(ctx, style, rect, baseX, baseY);\n var boxY = textContain.adjustTextY(baseY, outerHeight, textVerticalAlign);\n var textX = baseX;\n var textY = boxY;\n\n if (needDrawBg || textPadding) {\n // Consider performance, do not call getTextWidth util necessary.\n var textWidth = textContain.getWidth(text, computedFont);\n var outerWidth = textWidth;\n textPadding && (outerWidth += textPadding[1] + textPadding[3]);\n var boxX = textContain.adjustTextX(baseX, outerWidth, textAlign);\n needDrawBg && drawBackground(hostEl, ctx, style, boxX, boxY, outerWidth, outerHeight);\n\n if (textPadding) {\n textX = getTextXForPadding(baseX, textAlign, textPadding);\n textY += textPadding[0];\n }\n } // Always set textAlign and textBase line, because it is difficute to calculate\n // textAlign from prevEl, and we dont sure whether textAlign will be reset if\n // font set happened.\n\n\n ctx.textAlign = textAlign; // Force baseline to be \"middle\". Otherwise, if using \"top\", the\n // text will offset downward a little bit in font \"Microsoft YaHei\".\n\n ctx.textBaseline = 'middle'; // Set text opacity\n\n ctx.globalAlpha = style.opacity || 1; // Always set shadowBlur and shadowOffset to avoid leak from displayable.\n\n for (var i = 0; i < SHADOW_STYLE_COMMON_PROPS.length; i++) {\n var propItem = SHADOW_STYLE_COMMON_PROPS[i];\n var styleProp = propItem[0];\n var ctxProp = propItem[1];\n var val = style[styleProp];\n\n if (!checkCache || val !== prevStyle[styleProp]) {\n ctx[ctxProp] = fixShadow(ctx, ctxProp, val || propItem[2]);\n }\n } // `textBaseline` is set as 'middle'.\n\n\n textY += lineHeight / 2;\n var textStrokeWidth = style.textStrokeWidth;\n var textStrokeWidthPrev = checkCache ? prevStyle.textStrokeWidth : null;\n var strokeWidthChanged = !checkCache || textStrokeWidth !== textStrokeWidthPrev;\n var strokeChanged = !checkCache || strokeWidthChanged || style.textStroke !== prevStyle.textStroke;\n var textStroke = getStroke(style.textStroke, textStrokeWidth);\n var textFill = getFill(style.textFill);\n\n if (textStroke) {\n if (strokeWidthChanged) {\n ctx.lineWidth = textStrokeWidth;\n }\n\n if (strokeChanged) {\n ctx.strokeStyle = textStroke;\n }\n }\n\n if (textFill) {\n if (!checkCache || style.textFill !== prevStyle.textFill) {\n ctx.fillStyle = textFill;\n }\n } // Optimize simply, in most cases only one line exists.\n\n\n if (textLines.length === 1) {\n // Fill after stroke so the outline will not cover the main part.\n textStroke && ctx.strokeText(textLines[0], textX, textY);\n textFill && ctx.fillText(textLines[0], textX, textY);\n } else {\n for (var i = 0; i < textLines.length; i++) {\n // Fill after stroke so the outline will not cover the main part.\n textStroke && ctx.strokeText(textLines[i], textX, textY);\n textFill && ctx.fillText(textLines[i], textX, textY);\n textY += lineHeight;\n }\n }\n}\n\nfunction renderRichText(hostEl, ctx, text, style, rect, prevEl) {\n // Do not do cache for rich text because of the complexity.\n // But `RectText` this will be restored, do not need to clear other cache like `Style::bind`.\n if (prevEl !== WILL_BE_RESTORED) {\n ctx.__attrCachedBy = ContextCachedBy.NONE;\n }\n\n var contentBlock = hostEl.__textCotentBlock;\n\n if (!contentBlock || hostEl.__dirtyText) {\n contentBlock = hostEl.__textCotentBlock = textContain.parseRichText(text, style);\n }\n\n drawRichText(hostEl, ctx, contentBlock, style, rect);\n}\n\nfunction drawRichText(hostEl, ctx, contentBlock, style, rect) {\n var contentWidth = contentBlock.width;\n var outerWidth = contentBlock.outerWidth;\n var outerHeight = contentBlock.outerHeight;\n var textPadding = style.textPadding;\n var boxPos = getBoxPosition(_tmpBoxPositionResult, hostEl, style, rect);\n var baseX = boxPos.baseX;\n var baseY = boxPos.baseY;\n var textAlign = boxPos.textAlign;\n var textVerticalAlign = boxPos.textVerticalAlign; // Origin of textRotation should be the base point of text drawing.\n\n applyTextRotation(ctx, style, rect, baseX, baseY);\n var boxX = textContain.adjustTextX(baseX, outerWidth, textAlign);\n var boxY = textContain.adjustTextY(baseY, outerHeight, textVerticalAlign);\n var xLeft = boxX;\n var lineTop = boxY;\n\n if (textPadding) {\n xLeft += textPadding[3];\n lineTop += textPadding[0];\n }\n\n var xRight = xLeft + contentWidth;\n needDrawBackground(style) && drawBackground(hostEl, ctx, style, boxX, boxY, outerWidth, outerHeight);\n\n for (var i = 0; i < contentBlock.lines.length; i++) {\n var line = contentBlock.lines[i];\n var tokens = line.tokens;\n var tokenCount = tokens.length;\n var lineHeight = line.lineHeight;\n var usedWidth = line.width;\n var leftIndex = 0;\n var lineXLeft = xLeft;\n var lineXRight = xRight;\n var rightIndex = tokenCount - 1;\n var token;\n\n while (leftIndex < tokenCount && (token = tokens[leftIndex], !token.textAlign || token.textAlign === 'left')) {\n placeToken(hostEl, ctx, token, style, lineHeight, lineTop, lineXLeft, 'left');\n usedWidth -= token.width;\n lineXLeft += token.width;\n leftIndex++;\n }\n\n while (rightIndex >= 0 && (token = tokens[rightIndex], token.textAlign === 'right')) {\n placeToken(hostEl, ctx, token, style, lineHeight, lineTop, lineXRight, 'right');\n usedWidth -= token.width;\n lineXRight -= token.width;\n rightIndex--;\n } // The other tokens are placed as textAlign 'center' if there is enough space.\n\n\n lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - usedWidth) / 2;\n\n while (leftIndex <= rightIndex) {\n token = tokens[leftIndex]; // Consider width specified by user, use 'center' rather than 'left'.\n\n placeToken(hostEl, ctx, token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center');\n lineXLeft += token.width;\n leftIndex++;\n }\n\n lineTop += lineHeight;\n }\n}\n\nfunction applyTextRotation(ctx, style, rect, x, y) {\n // textRotation only apply in RectText.\n if (rect && style.textRotation) {\n var origin = style.textOrigin;\n\n if (origin === 'center') {\n x = rect.width / 2 + rect.x;\n y = rect.height / 2 + rect.y;\n } else if (origin) {\n x = origin[0] + rect.x;\n y = origin[1] + rect.y;\n }\n\n ctx.translate(x, y); // Positive: anticlockwise\n\n ctx.rotate(-style.textRotation);\n ctx.translate(-x, -y);\n }\n}\n\nfunction placeToken(hostEl, ctx, token, style, lineHeight, lineTop, x, textAlign) {\n var tokenStyle = style.rich[token.styleName] || {};\n tokenStyle.text = token.text; // 'ctx.textBaseline' is always set as 'middle', for sake of\n // the bias of \"Microsoft YaHei\".\n\n var textVerticalAlign = token.textVerticalAlign;\n var y = lineTop + lineHeight / 2;\n\n if (textVerticalAlign === 'top') {\n y = lineTop + token.height / 2;\n } else if (textVerticalAlign === 'bottom') {\n y = lineTop + lineHeight - token.height / 2;\n }\n\n !token.isLineHolder && needDrawBackground(tokenStyle) && drawBackground(hostEl, ctx, tokenStyle, textAlign === 'right' ? x - token.width : textAlign === 'center' ? x - token.width / 2 : x, y - token.height / 2, token.width, token.height);\n var textPadding = token.textPadding;\n\n if (textPadding) {\n x = getTextXForPadding(x, textAlign, textPadding);\n y -= token.height / 2 - textPadding[2] - token.textHeight / 2;\n }\n\n setCtx(ctx, 'shadowBlur', retrieve3(tokenStyle.textShadowBlur, style.textShadowBlur, 0));\n setCtx(ctx, 'shadowColor', tokenStyle.textShadowColor || style.textShadowColor || 'transparent');\n setCtx(ctx, 'shadowOffsetX', retrieve3(tokenStyle.textShadowOffsetX, style.textShadowOffsetX, 0));\n setCtx(ctx, 'shadowOffsetY', retrieve3(tokenStyle.textShadowOffsetY, style.textShadowOffsetY, 0));\n setCtx(ctx, 'textAlign', textAlign); // Force baseline to be \"middle\". Otherwise, if using \"top\", the\n // text will offset downward a little bit in font \"Microsoft YaHei\".\n\n setCtx(ctx, 'textBaseline', 'middle');\n setCtx(ctx, 'font', token.font || DEFAULT_FONT);\n var textStroke = getStroke(tokenStyle.textStroke || style.textStroke, textStrokeWidth);\n var textFill = getFill(tokenStyle.textFill || style.textFill);\n var textStrokeWidth = retrieve2(tokenStyle.textStrokeWidth, style.textStrokeWidth); // Fill after stroke so the outline will not cover the main part.\n\n if (textStroke) {\n setCtx(ctx, 'lineWidth', textStrokeWidth);\n setCtx(ctx, 'strokeStyle', textStroke);\n ctx.strokeText(token.text, x, y);\n }\n\n if (textFill) {\n setCtx(ctx, 'fillStyle', textFill);\n ctx.fillText(token.text, x, y);\n }\n}\n\nfunction needDrawBackground(style) {\n return !!(style.textBackgroundColor || style.textBorderWidth && style.textBorderColor);\n} // style: {textBackgroundColor, textBorderWidth, textBorderColor, textBorderRadius, text}\n// shape: {x, y, width, height}\n\n\nfunction drawBackground(hostEl, ctx, style, x, y, width, height) {\n var textBackgroundColor = style.textBackgroundColor;\n var textBorderWidth = style.textBorderWidth;\n var textBorderColor = style.textBorderColor;\n var isPlainBg = isString(textBackgroundColor);\n setCtx(ctx, 'shadowBlur', style.textBoxShadowBlur || 0);\n setCtx(ctx, 'shadowColor', style.textBoxShadowColor || 'transparent');\n setCtx(ctx, 'shadowOffsetX', style.textBoxShadowOffsetX || 0);\n setCtx(ctx, 'shadowOffsetY', style.textBoxShadowOffsetY || 0);\n\n if (isPlainBg || textBorderWidth && textBorderColor) {\n ctx.beginPath();\n var textBorderRadius = style.textBorderRadius;\n\n if (!textBorderRadius) {\n ctx.rect(x, y, width, height);\n } else {\n roundRectHelper.buildPath(ctx, {\n x: x,\n y: y,\n width: width,\n height: height,\n r: textBorderRadius\n });\n }\n\n ctx.closePath();\n }\n\n if (isPlainBg) {\n setCtx(ctx, 'fillStyle', textBackgroundColor);\n\n if (style.fillOpacity != null) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.fillOpacity * style.opacity;\n ctx.fill();\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n ctx.fill();\n }\n } else if (isObject(textBackgroundColor)) {\n var image = textBackgroundColor.image;\n image = imageHelper.createOrUpdateImage(image, null, hostEl, onBgImageLoaded, textBackgroundColor);\n\n if (image && imageHelper.isImageReady(image)) {\n ctx.drawImage(image, x, y, width, height);\n }\n }\n\n if (textBorderWidth && textBorderColor) {\n setCtx(ctx, 'lineWidth', textBorderWidth);\n setCtx(ctx, 'strokeStyle', textBorderColor);\n\n if (style.strokeOpacity != null) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.strokeOpacity * style.opacity;\n ctx.stroke();\n ctx.globalAlpha = originalGlobalAlpha;\n } else {\n ctx.stroke();\n }\n }\n}\n\nfunction onBgImageLoaded(image, textBackgroundColor) {\n // Replace image, so that `contain/text.js#parseRichText`\n // will get correct result in next tick.\n textBackgroundColor.image = image;\n}\n\nfunction getBoxPosition(out, hostEl, style, rect) {\n var baseX = style.x || 0;\n var baseY = style.y || 0;\n var textAlign = style.textAlign;\n var textVerticalAlign = style.textVerticalAlign; // Text position represented by coord\n\n if (rect) {\n var textPosition = style.textPosition;\n\n if (textPosition instanceof Array) {\n // Percent\n baseX = rect.x + parsePercent(textPosition[0], rect.width);\n baseY = rect.y + parsePercent(textPosition[1], rect.height);\n } else {\n var res = hostEl && hostEl.calculateTextPosition ? hostEl.calculateTextPosition(_tmpTextPositionResult, style, rect) : textContain.calculateTextPosition(_tmpTextPositionResult, style, rect);\n baseX = res.x;\n baseY = res.y; // Default align and baseline when has textPosition\n\n textAlign = textAlign || res.textAlign;\n textVerticalAlign = textVerticalAlign || res.textVerticalAlign;\n } // textOffset is only support in RectText, otherwise\n // we have to adjust boundingRect for textOffset.\n\n\n var textOffset = style.textOffset;\n\n if (textOffset) {\n baseX += textOffset[0];\n baseY += textOffset[1];\n }\n }\n\n out = out || {};\n out.baseX = baseX;\n out.baseY = baseY;\n out.textAlign = textAlign;\n out.textVerticalAlign = textVerticalAlign;\n return out;\n}\n\nfunction setCtx(ctx, prop, value) {\n ctx[prop] = fixShadow(ctx, prop, value);\n return ctx[prop];\n}\n/**\n * @param {string} [stroke] If specified, do not check style.textStroke.\n * @param {string} [lineWidth] If specified, do not check style.textStroke.\n * @param {number} style\n */\n\n\nfunction getStroke(stroke, lineWidth) {\n return stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none' ? null // TODO pattern and gradient?\n : stroke.image || stroke.colorStops ? '#000' : stroke;\n}\n\nfunction getFill(fill) {\n return fill == null || fill === 'none' ? null // TODO pattern and gradient?\n : fill.image || fill.colorStops ? '#000' : fill;\n}\n\nfunction parsePercent(value, maxValue) {\n if (typeof value === 'string') {\n if (value.lastIndexOf('%') >= 0) {\n return parseFloat(value) / 100 * maxValue;\n }\n\n return parseFloat(value);\n }\n\n return value;\n}\n\nfunction getTextXForPadding(x, textAlign, textPadding) {\n return textAlign === 'right' ? x - textPadding[1] : textAlign === 'center' ? x + textPadding[3] / 2 - textPadding[1] / 2 : x + textPadding[3];\n}\n/**\n * @param {string} text\n * @param {module:zrender/Style} style\n * @return {boolean}\n */\n\n\nfunction needDrawText(text, style) {\n return text != null && (text || style.textBackgroundColor || style.textBorderWidth && style.textBorderColor || style.textPadding);\n}\n\nexports.normalizeTextStyle = normalizeTextStyle;\nexports.renderText = renderText;\nexports.getBoxPosition = getBoxPosition;\nexports.getStroke = getStroke;\nexports.getFill = getFill;\nexports.parsePercent = parsePercent;\nexports.needDrawText = needDrawText;","var vec2 = require(\"./vector\");\n\nvar curve = require(\"./curve\");\n\n/**\n * @author Yi Shen(https://github.com/pissang)\n */\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI2 = Math.PI * 2;\nvar start = vec2.create();\nvar end = vec2.create();\nvar extremity = vec2.create();\n/**\n * 从顶点数组中计算出最小包围盒,写入`min`和`max`中\n * @module zrender/core/bbox\n * @param {Array} points 顶点数组\n * @param {number} min\n * @param {number} max\n */\n\nfunction fromPoints(points, min, max) {\n if (points.length === 0) {\n return;\n }\n\n var p = points[0];\n var left = p[0];\n var right = p[0];\n var top = p[1];\n var bottom = p[1];\n var i;\n\n for (i = 1; i < points.length; i++) {\n p = points[i];\n left = mathMin(left, p[0]);\n right = mathMax(right, p[0]);\n top = mathMin(top, p[1]);\n bottom = mathMax(bottom, p[1]);\n }\n\n min[0] = left;\n min[1] = top;\n max[0] = right;\n max[1] = bottom;\n}\n/**\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {Array.} min\n * @param {Array.} max\n */\n\n\nfunction fromLine(x0, y0, x1, y1, min, max) {\n min[0] = mathMin(x0, x1);\n min[1] = mathMin(y0, y1);\n max[0] = mathMax(x0, x1);\n max[1] = mathMax(y0, y1);\n}\n\nvar xDim = [];\nvar yDim = [];\n/**\n * 从三阶贝塞尔曲线(p0, p1, p2, p3)中计算出最小包围盒,写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {Array.} min\n * @param {Array.} max\n */\n\nfunction fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\n var cubicExtrema = curve.cubicExtrema;\n var cubicAt = curve.cubicAt;\n var i;\n var n = cubicExtrema(x0, x1, x2, x3, xDim);\n min[0] = Infinity;\n min[1] = Infinity;\n max[0] = -Infinity;\n max[1] = -Infinity;\n\n for (i = 0; i < n; i++) {\n var x = cubicAt(x0, x1, x2, x3, xDim[i]);\n min[0] = mathMin(x, min[0]);\n max[0] = mathMax(x, max[0]);\n }\n\n n = cubicExtrema(y0, y1, y2, y3, yDim);\n\n for (i = 0; i < n; i++) {\n var y = cubicAt(y0, y1, y2, y3, yDim[i]);\n min[1] = mathMin(y, min[1]);\n max[1] = mathMax(y, max[1]);\n }\n\n min[0] = mathMin(x0, min[0]);\n max[0] = mathMax(x0, max[0]);\n min[0] = mathMin(x3, min[0]);\n max[0] = mathMax(x3, max[0]);\n min[1] = mathMin(y0, min[1]);\n max[1] = mathMax(y0, max[1]);\n min[1] = mathMin(y3, min[1]);\n max[1] = mathMax(y3, max[1]);\n}\n/**\n * 从二阶贝塞尔曲线(p0, p1, p2)中计算出最小包围盒,写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {Array.} min\n * @param {Array.} max\n */\n\n\nfunction fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\n var quadraticExtremum = curve.quadraticExtremum;\n var quadraticAt = curve.quadraticAt; // Find extremities, where derivative in x dim or y dim is zero\n\n var tx = mathMax(mathMin(quadraticExtremum(x0, x1, x2), 1), 0);\n var ty = mathMax(mathMin(quadraticExtremum(y0, y1, y2), 1), 0);\n var x = quadraticAt(x0, x1, x2, tx);\n var y = quadraticAt(y0, y1, y2, ty);\n min[0] = mathMin(x0, x2, x);\n min[1] = mathMin(y0, y2, y);\n max[0] = mathMax(x0, x2, x);\n max[1] = mathMax(y0, y2, y);\n}\n/**\n * 从圆弧中计算出最小包围盒,写入`min`和`max`中\n * @method\n * @memberOf module:zrender/core/bbox\n * @param {number} x\n * @param {number} y\n * @param {number} rx\n * @param {number} ry\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {number} anticlockwise\n * @param {Array.} min\n * @param {Array.} max\n */\n\n\nfunction fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min, max) {\n var vec2Min = vec2.min;\n var vec2Max = vec2.max;\n var diff = Math.abs(startAngle - endAngle);\n\n if (diff % PI2 < 1e-4 && diff > 1e-4) {\n // Is a circle\n min[0] = x - rx;\n min[1] = y - ry;\n max[0] = x + rx;\n max[1] = y + ry;\n return;\n }\n\n start[0] = mathCos(startAngle) * rx + x;\n start[1] = mathSin(startAngle) * ry + y;\n end[0] = mathCos(endAngle) * rx + x;\n end[1] = mathSin(endAngle) * ry + y;\n vec2Min(min, start, end);\n vec2Max(max, start, end); // Thresh to [0, Math.PI * 2]\n\n startAngle = startAngle % PI2;\n\n if (startAngle < 0) {\n startAngle = startAngle + PI2;\n }\n\n endAngle = endAngle % PI2;\n\n if (endAngle < 0) {\n endAngle = endAngle + PI2;\n }\n\n if (startAngle > endAngle && !anticlockwise) {\n endAngle += PI2;\n } else if (startAngle < endAngle && anticlockwise) {\n startAngle += PI2;\n }\n\n if (anticlockwise) {\n var tmp = endAngle;\n endAngle = startAngle;\n startAngle = tmp;\n } // var number = 0;\n // var step = (anticlockwise ? -Math.PI : Math.PI) / 2;\n\n\n for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\n if (angle > startAngle) {\n extremity[0] = mathCos(angle) * rx + x;\n extremity[1] = mathSin(angle) * ry + y;\n vec2Min(min, extremity, min);\n vec2Max(max, extremity, max);\n }\n }\n}\n\nexports.fromPoints = fromPoints;\nexports.fromLine = fromLine;\nexports.fromCubic = fromCubic;\nexports.fromQuadratic = fromQuadratic;\nexports.fromArc = fromArc;","/**\n * @param {Array.} colorStops\n */\nvar Gradient = function (colorStops) {\n this.colorStops = colorStops || [];\n};\n\nGradient.prototype = {\n constructor: Gradient,\n addColorStop: function (offset, color) {\n this.colorStops.push({\n offset: offset,\n color: color\n });\n }\n};\nvar _default = Gradient;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar clazzUtil = require(\"../util/clazz\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar Component = function () {\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n this.group = new Group();\n /**\n * @type {string}\n * @readOnly\n */\n\n this.uid = componentUtil.getUID('viewComponent');\n};\n\nComponent.prototype = {\n constructor: Component,\n init: function (ecModel, api) {},\n render: function (componentModel, ecModel, api, payload) {},\n dispose: function () {},\n\n /**\n * @param {string} eventType\n * @param {Object} query\n * @param {module:zrender/Element} targetEl\n * @param {Object} packedEvent\n * @return {boolen} Pass only when return `true`.\n */\n filterForExposedEvent: null\n};\nvar componentProto = Component.prototype;\n\ncomponentProto.updateView = componentProto.updateLayout = componentProto.updateVisual = function (seriesModel, ecModel, api, payload) {// Do nothing;\n}; // Enable Component.extend.\n\n\nclazzUtil.enableClassExtend(Component); // Enable capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Component, {\n registerWhenExtend: true\n});\nvar _default = Component;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar clazzUtil = require(\"../util/clazz\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * // Scale class management\n * @module echarts/scale/Scale\n */\n\n/**\n * @param {Object} [setting]\n */\nfunction Scale(setting) {\n this._setting = setting || {};\n /**\n * Extent\n * @type {Array.}\n * @protected\n */\n\n this._extent = [Infinity, -Infinity];\n /**\n * Step is calculated in adjustExtent\n * @type {Array.}\n * @protected\n */\n\n this._interval = 0;\n this.init && this.init.apply(this, arguments);\n}\n/**\n * Parse input val to valid inner number.\n * @param {*} val\n * @return {number}\n */\n\n\nScale.prototype.parse = function (val) {\n // Notice: This would be a trap here, If the implementation\n // of this method depends on extent, and this method is used\n // before extent set (like in dataZoom), it would be wrong.\n // Nevertheless, parse does not depend on extent generally.\n return val;\n};\n\nScale.prototype.getSetting = function (name) {\n return this._setting[name];\n};\n\nScale.prototype.contain = function (val) {\n var extent = this._extent;\n return val >= extent[0] && val <= extent[1];\n};\n/**\n * Normalize value to linear [0, 1], return 0.5 if extent span is 0\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.normalize = function (val) {\n var extent = this._extent;\n\n if (extent[1] === extent[0]) {\n return 0.5;\n }\n\n return (val - extent[0]) / (extent[1] - extent[0]);\n};\n/**\n * Scale normalized value\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.scale = function (val) {\n var extent = this._extent;\n return val * (extent[1] - extent[0]) + extent[0];\n};\n/**\n * Set extent from data\n * @param {Array.} other\n */\n\n\nScale.prototype.unionExtent = function (other) {\n var extent = this._extent;\n other[0] < extent[0] && (extent[0] = other[0]);\n other[1] > extent[1] && (extent[1] = other[1]); // not setExtent because in log axis it may transformed to power\n // this.setExtent(extent[0], extent[1]);\n};\n/**\n * Set extent from data\n * @param {module:echarts/data/List} data\n * @param {string} dim\n */\n\n\nScale.prototype.unionExtentFromData = function (data, dim) {\n this.unionExtent(data.getApproximateExtent(dim));\n};\n/**\n * Get extent\n * @return {Array.}\n */\n\n\nScale.prototype.getExtent = function () {\n return this._extent.slice();\n};\n/**\n * Set extent\n * @param {number} start\n * @param {number} end\n */\n\n\nScale.prototype.setExtent = function (start, end) {\n var thisExtent = this._extent;\n\n if (!isNaN(start)) {\n thisExtent[0] = start;\n }\n\n if (!isNaN(end)) {\n thisExtent[1] = end;\n }\n};\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\n\n\nScale.prototype.isBlank = function () {\n return this._isBlank;\n},\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\nScale.prototype.setBlank = function (isBlank) {\n this._isBlank = isBlank;\n};\n/**\n * @abstract\n * @param {*} tick\n * @return {string} label of the tick.\n */\n\nScale.prototype.getLabel = null;\nclazzUtil.enableClassExtend(Scale);\nclazzUtil.enableClassManagement(Scale, {\n registerWhenExtend: true\n});\nvar _default = Scale;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar numberUtil = require(\"../util/number\");\n\nvar formatUtil = require(\"../util/format\");\n\nvar Scale = require(\"./Scale\");\n\nvar helper = require(\"./helper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Interval scale\n * @module echarts/scale/Interval\n */\nvar roundNumber = numberUtil.round;\n/**\n * @alias module:echarts/coord/scale/Interval\n * @constructor\n */\n\nvar IntervalScale = Scale.extend({\n type: 'interval',\n _interval: 0,\n _intervalPrecision: 2,\n setExtent: function (start, end) {\n var thisExtent = this._extent; //start,end may be a Number like '25',so...\n\n if (!isNaN(start)) {\n thisExtent[0] = parseFloat(start);\n }\n\n if (!isNaN(end)) {\n thisExtent[1] = parseFloat(end);\n }\n },\n unionExtent: function (other) {\n var extent = this._extent;\n other[0] < extent[0] && (extent[0] = other[0]);\n other[1] > extent[1] && (extent[1] = other[1]); // unionExtent may called by it's sub classes\n\n IntervalScale.prototype.setExtent.call(this, extent[0], extent[1]);\n },\n\n /**\n * Get interval\n */\n getInterval: function () {\n return this._interval;\n },\n\n /**\n * Set interval\n */\n setInterval: function (interval) {\n this._interval = interval; // Dropped auto calculated niceExtent and use user setted extent\n // We assume user wan't to set both interval, min, max to get a better result\n\n this._niceExtent = this._extent.slice();\n this._intervalPrecision = helper.getIntervalPrecision(interval);\n },\n\n /**\n * @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.\n * @return {Array.}\n */\n getTicks: function (expandToNicedExtent) {\n var interval = this._interval;\n var extent = this._extent;\n var niceTickExtent = this._niceExtent;\n var intervalPrecision = this._intervalPrecision;\n var ticks = []; // If interval is 0, return [];\n\n if (!interval) {\n return ticks;\n } // Consider this case: using dataZoom toolbox, zoom and zoom.\n\n\n var safeLimit = 10000;\n\n if (extent[0] < niceTickExtent[0]) {\n if (expandToNicedExtent) {\n ticks.push(roundNumber(niceTickExtent[0] - interval));\n } else {\n ticks.push(extent[0]);\n }\n }\n\n var tick = niceTickExtent[0];\n\n while (tick <= niceTickExtent[1]) {\n ticks.push(tick); // Avoid rounding error\n\n tick = roundNumber(tick + interval, intervalPrecision);\n\n if (tick === ticks[ticks.length - 1]) {\n // Consider out of safe float point, e.g.,\n // -3711126.9907707 + 2e-10 === -3711126.9907707\n break;\n }\n\n if (ticks.length > safeLimit) {\n return [];\n }\n } // Consider this case: the last item of ticks is smaller\n // than niceTickExtent[1] and niceTickExtent[1] === extent[1].\n\n\n var lastNiceTick = ticks.length ? ticks[ticks.length - 1] : niceTickExtent[1];\n\n if (extent[1] > lastNiceTick) {\n if (expandToNicedExtent) {\n ticks.push(lastNiceTick + interval);\n } else {\n ticks.push(extent[1]);\n }\n }\n\n return ticks;\n },\n\n /**\n * @param {number} [splitNumber=5]\n * @return {Array.>}\n */\n getMinorTicks: function (splitNumber) {\n var ticks = this.getTicks(true);\n var minorTicks = [];\n var extent = this.getExtent();\n\n for (var i = 1; i < ticks.length; i++) {\n var nextTick = ticks[i];\n var prevTick = ticks[i - 1];\n var count = 0;\n var minorTicksGroup = [];\n var interval = nextTick - prevTick;\n var minorInterval = interval / splitNumber;\n\n while (count < splitNumber - 1) {\n var minorTick = numberUtil.round(prevTick + (count + 1) * minorInterval); // For the first and last interval. The count may be less than splitNumber.\n\n if (minorTick > extent[0] && minorTick < extent[1]) {\n minorTicksGroup.push(minorTick);\n }\n\n count++;\n }\n\n minorTicks.push(minorTicksGroup);\n }\n\n return minorTicks;\n },\n\n /**\n * @param {number} data\n * @param {Object} [opt]\n * @param {number|string} [opt.precision] If 'auto', use nice presision.\n * @param {boolean} [opt.pad] returns 1.50 but not 1.5 if precision is 2.\n * @return {string}\n */\n getLabel: function (data, opt) {\n if (data == null) {\n return '';\n }\n\n var precision = opt && opt.precision;\n\n if (precision == null) {\n precision = numberUtil.getPrecisionSafe(data) || 0;\n } else if (precision === 'auto') {\n // Should be more precise then tick.\n precision = this._intervalPrecision;\n } // (1) If `precision` is set, 12.005 should be display as '12.00500'.\n // (2) Use roundNumber (toFixed) to avoid scientific notation like '3.5e-7'.\n\n\n data = roundNumber(data, precision, true);\n return formatUtil.addCommas(data);\n },\n\n /**\n * Update interval and extent of intervals for nice ticks\n *\n * @param {number} [splitNumber = 5] Desired number of ticks\n * @param {number} [minInterval]\n * @param {number} [maxInterval]\n */\n niceTicks: function (splitNumber, minInterval, maxInterval) {\n splitNumber = splitNumber || 5;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n\n if (!isFinite(span)) {\n return;\n } // User may set axis min 0 and data are all negative\n // FIXME If it needs to reverse ?\n\n\n if (span < 0) {\n span = -span;\n extent.reverse();\n }\n\n var result = helper.intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval);\n this._intervalPrecision = result.intervalPrecision;\n this._interval = result.interval;\n this._niceExtent = result.niceTickExtent;\n },\n\n /**\n * Nice extent.\n * @param {Object} opt\n * @param {number} [opt.splitNumber = 5] Given approx tick number\n * @param {boolean} [opt.fixMin=false]\n * @param {boolean} [opt.fixMax=false]\n * @param {boolean} [opt.minInterval]\n * @param {boolean} [opt.maxInterval]\n */\n niceExtent: function (opt) {\n var extent = this._extent; // If extent start and end are same, expand them\n\n if (extent[0] === extent[1]) {\n if (extent[0] !== 0) {\n // Expand extent\n var expandSize = extent[0]; // In the fowllowing case\n // Axis has been fixed max 100\n // Plus data are all 100 and axis extent are [100, 100].\n // Extend to the both side will cause expanded max is larger than fixed max.\n // So only expand to the smaller side.\n\n if (!opt.fixMax) {\n extent[1] += expandSize / 2;\n extent[0] -= expandSize / 2;\n } else {\n extent[0] -= expandSize / 2;\n }\n } else {\n extent[1] = 1;\n }\n }\n\n var span = extent[1] - extent[0]; // If there are no data and extent are [Infinity, -Infinity]\n\n if (!isFinite(span)) {\n extent[0] = 0;\n extent[1] = 1;\n }\n\n this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // var extent = this._extent;\n\n var interval = this._interval;\n\n if (!opt.fixMin) {\n extent[0] = roundNumber(Math.floor(extent[0] / interval) * interval);\n }\n\n if (!opt.fixMax) {\n extent[1] = roundNumber(Math.ceil(extent[1] / interval) * interval);\n }\n }\n});\n/**\n * @return {module:echarts/scale/Time}\n */\n\nIntervalScale.create = function () {\n return new IntervalScale();\n};\n\nvar _default = IntervalScale;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _number = require(\"../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _dataStackHelper = require(\"../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nvar STACK_PREFIX = '__ec_stack_';\nvar LARGE_BAR_MIN_WIDTH = 0.5;\nvar LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\n\nfunction getSeriesStackId(seriesModel) {\n return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(axis) {\n return axis.dim + axis.index;\n}\n/**\n * @param {Object} opt\n * @param {module:echarts/coord/Axis} opt.axis Only support category axis currently.\n * @param {number} opt.count Positive interger.\n * @param {number} [opt.barWidth]\n * @param {number} [opt.barMaxWidth]\n * @param {number} [opt.barMinWidth]\n * @param {number} [opt.barGap]\n * @param {number} [opt.barCategoryGap]\n * @return {Object} {width, offset, offsetCenter} If axis.type is not 'category', return undefined.\n */\n\n\nfunction getLayoutOnAxis(opt) {\n var params = [];\n var baseAxis = opt.axis;\n var axisKey = 'axis0';\n\n if (baseAxis.type !== 'category') {\n return;\n }\n\n var bandWidth = baseAxis.getBandWidth();\n\n for (var i = 0; i < opt.count || 0; i++) {\n params.push(zrUtil.defaults({\n bandWidth: bandWidth,\n axisKey: axisKey,\n stackId: STACK_PREFIX + i\n }, opt));\n }\n\n var widthAndOffsets = doCalBarWidthAndOffset(params);\n var result = [];\n\n for (var i = 0; i < opt.count; i++) {\n var item = widthAndOffsets[axisKey][STACK_PREFIX + i];\n item.offsetCenter = item.offset + item.width / 2;\n result.push(item);\n }\n\n return result;\n}\n\nfunction prepareLayoutBarSeries(seriesType, ecModel) {\n var seriesModels = [];\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n // Check series coordinate, do layout for cartesian2d only\n if (isOnCartesian(seriesModel) && !isInLargeMode(seriesModel)) {\n seriesModels.push(seriesModel);\n }\n });\n return seriesModels;\n}\n/**\n * Map from (baseAxis.dim + '_' + baseAxis.index) to min gap of two adjacent\n * values.\n * This works for time axes, value axes, and log axes.\n * For a single time axis, return value is in the form like\n * {'x_0': [1000000]}.\n * The value of 1000000 is in milliseconds.\n */\n\n\nfunction getValueAxesMinGaps(barSeries) {\n /**\n * Map from axis.index to values.\n * For a single time axis, axisValues is in the form like\n * {'x_0': [1495555200000, 1495641600000, 1495728000000]}.\n * Items in axisValues[x], e.g. 1495555200000, are time values of all\n * series.\n */\n var axisValues = {};\n zrUtil.each(barSeries, function (seriesModel) {\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n\n if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {\n return;\n }\n\n var data = seriesModel.getData();\n var key = baseAxis.dim + '_' + baseAxis.index;\n var dim = data.mapDimension(baseAxis.dim);\n\n for (var i = 0, cnt = data.count(); i < cnt; ++i) {\n var value = data.get(dim, i);\n\n if (!axisValues[key]) {\n // No previous data for the axis\n axisValues[key] = [value];\n } else {\n // No value in previous series\n axisValues[key].push(value);\n } // Ignore duplicated time values in the same axis\n\n }\n });\n var axisMinGaps = [];\n\n for (var key in axisValues) {\n if (axisValues.hasOwnProperty(key)) {\n var valuesInAxis = axisValues[key];\n\n if (valuesInAxis) {\n // Sort axis values into ascending order to calculate gaps\n valuesInAxis.sort(function (a, b) {\n return a - b;\n });\n var min = null;\n\n for (var j = 1; j < valuesInAxis.length; ++j) {\n var delta = valuesInAxis[j] - valuesInAxis[j - 1];\n\n if (delta > 0) {\n // Ignore 0 delta because they are of the same axis value\n min = min === null ? delta : Math.min(min, delta);\n }\n } // Set to null if only have one data\n\n\n axisMinGaps[key] = min;\n }\n }\n }\n\n return axisMinGaps;\n}\n\nfunction makeColumnLayout(barSeries) {\n var axisMinGaps = getValueAxesMinGaps(barSeries);\n var seriesInfoList = [];\n zrUtil.each(barSeries, function (seriesModel) {\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var axisExtent = baseAxis.getExtent();\n var bandWidth;\n\n if (baseAxis.type === 'category') {\n bandWidth = baseAxis.getBandWidth();\n } else if (baseAxis.type === 'value' || baseAxis.type === 'time') {\n var key = baseAxis.dim + '_' + baseAxis.index;\n var minGap = axisMinGaps[key];\n var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);\n var scale = baseAxis.scale.getExtent();\n var scaleSpan = Math.abs(scale[1] - scale[0]);\n bandWidth = minGap ? extentSpan / scaleSpan * minGap : extentSpan; // When there is only one data value\n } else {\n var data = seriesModel.getData();\n bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n }\n\n var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n var barMinWidth = parsePercent( // barMinWidth by default is 1 in cartesian. Because in value axis,\n // the auto-calculated bar width might be less than 1.\n seriesModel.get('barMinWidth') || 1, bandWidth);\n var barGap = seriesModel.get('barGap');\n var barCategoryGap = seriesModel.get('barCategoryGap');\n seriesInfoList.push({\n bandWidth: bandWidth,\n barWidth: barWidth,\n barMaxWidth: barMaxWidth,\n barMinWidth: barMinWidth,\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n axisKey: getAxisKey(baseAxis),\n stackId: getSeriesStackId(seriesModel)\n });\n });\n return doCalBarWidthAndOffset(seriesInfoList);\n}\n\nfunction doCalBarWidthAndOffset(seriesInfoList) {\n // Columns info on each category axis. Key is cartesian name\n var columnsMap = {};\n zrUtil.each(seriesInfoList, function (seriesInfo, idx) {\n var axisKey = seriesInfo.axisKey;\n var bandWidth = seriesInfo.bandWidth;\n var columnsOnAxis = columnsMap[axisKey] || {\n bandWidth: bandWidth,\n remainedWidth: bandWidth,\n autoWidthCount: 0,\n categoryGap: '20%',\n gap: '30%',\n stacks: {}\n };\n var stacks = columnsOnAxis.stacks;\n columnsMap[axisKey] = columnsOnAxis;\n var stackId = seriesInfo.stackId;\n\n if (!stacks[stackId]) {\n columnsOnAxis.autoWidthCount++;\n }\n\n stacks[stackId] = stacks[stackId] || {\n width: 0,\n maxWidth: 0\n }; // Caution: In a single coordinate system, these barGrid attributes\n // will be shared by series. Consider that they have default values,\n // only the attributes set on the last series will work.\n // Do not change this fact unless there will be a break change.\n\n var barWidth = seriesInfo.barWidth;\n\n if (barWidth && !stacks[stackId].width) {\n // See #6312, do not restrict width.\n stacks[stackId].width = barWidth;\n barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n columnsOnAxis.remainedWidth -= barWidth;\n }\n\n var barMaxWidth = seriesInfo.barMaxWidth;\n barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n var barMinWidth = seriesInfo.barMinWidth;\n barMinWidth && (stacks[stackId].minWidth = barMinWidth);\n var barGap = seriesInfo.barGap;\n barGap != null && (columnsOnAxis.gap = barGap);\n var barCategoryGap = seriesInfo.barCategoryGap;\n barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n });\n var result = {};\n zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n result[coordSysName] = {};\n var stacks = columnsOnAxis.stacks;\n var bandWidth = columnsOnAxis.bandWidth;\n var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n var remainedWidth = columnsOnAxis.remainedWidth;\n var autoWidthCount = columnsOnAxis.autoWidthCount;\n var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n zrUtil.each(stacks, function (column) {\n var maxWidth = column.maxWidth;\n var minWidth = column.minWidth;\n\n if (!column.width) {\n var finalWidth = autoWidth;\n\n if (maxWidth && maxWidth < finalWidth) {\n finalWidth = Math.min(maxWidth, remainedWidth);\n } // `minWidth` has higher priority. `minWidth` decide that wheter the\n // bar is able to be visible. So `minWidth` should not be restricted\n // by `maxWidth` or `remainedWidth` (which is from `bandWidth`). In\n // the extreme cases for `value` axis, bars are allowed to overlap\n // with each other if `minWidth` specified.\n\n\n if (minWidth && minWidth > finalWidth) {\n finalWidth = minWidth;\n }\n\n if (finalWidth !== autoWidth) {\n column.width = finalWidth;\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\n autoWidthCount--;\n }\n } else {\n // `barMinWidth/barMaxWidth` has higher priority than `barWidth`, as\n // CSS does. Becuase barWidth can be a percent value, where\n // `barMaxWidth` can be used to restrict the final width.\n var finalWidth = column.width;\n\n if (maxWidth) {\n finalWidth = Math.min(finalWidth, maxWidth);\n } // `minWidth` has higher priority, as described above\n\n\n if (minWidth) {\n finalWidth = Math.max(finalWidth, minWidth);\n }\n\n column.width = finalWidth;\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\n autoWidthCount--;\n }\n }); // Recalculate width again\n\n autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0);\n var widthSum = 0;\n var lastColumn;\n zrUtil.each(stacks, function (column, idx) {\n if (!column.width) {\n column.width = autoWidth;\n }\n\n lastColumn = column;\n widthSum += column.width * (1 + barGapPercent);\n });\n\n if (lastColumn) {\n widthSum -= lastColumn.width * barGapPercent;\n }\n\n var offset = -widthSum / 2;\n zrUtil.each(stacks, function (column, stackId) {\n result[coordSysName][stackId] = result[coordSysName][stackId] || {\n bandWidth: bandWidth,\n offset: offset,\n width: column.width\n };\n offset += column.width * (1 + barGapPercent);\n });\n });\n return result;\n}\n/**\n * @param {Object} barWidthAndOffset The result of makeColumnLayout\n * @param {module:echarts/coord/Axis} axis\n * @param {module:echarts/model/Series} [seriesModel] If not provided, return all.\n * @return {Object} {stackId: {offset, width}} or {offset, width} if seriesModel provided.\n */\n\n\nfunction retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {\n if (barWidthAndOffset && axis) {\n var result = barWidthAndOffset[getAxisKey(axis)];\n\n if (result != null && seriesModel != null) {\n result = result[getSeriesStackId(seriesModel)];\n }\n\n return result;\n }\n}\n/**\n * @param {string} seriesType\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction layout(seriesType, ecModel) {\n var seriesModels = prepareLayoutBarSeries(seriesType, ecModel);\n var barWidthAndOffset = makeColumnLayout(seriesModels);\n var lastStackCoords = {};\n var lastStackCoordsOrigin = {};\n zrUtil.each(seriesModels, function (seriesModel) {\n var data = seriesModel.getData();\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var stackId = getSeriesStackId(seriesModel);\n var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\n var columnOffset = columnLayoutInfo.offset;\n var columnWidth = columnLayoutInfo.width;\n var valueAxis = cartesian.getOtherAxis(baseAxis);\n var barMinHeight = seriesModel.get('barMinHeight') || 0;\n lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n lastStackCoordsOrigin[stackId] = lastStackCoordsOrigin[stackId] || []; // Fix #4243\n\n data.setLayout({\n bandWidth: columnLayoutInfo.bandWidth,\n offset: columnOffset,\n size: columnWidth\n });\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var stacked = isDimensionStacked(data, valueDim\n /*, baseDim*/\n );\n var isValueAxisH = valueAxis.isHorizontal();\n var valueAxisStart = getValueAxisStart(baseAxis, valueAxis, stacked);\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n var value = data.get(valueDim, idx);\n var baseValue = data.get(baseDim, idx); // If dataZoom in filteMode: 'empty', the baseValue can be set as NaN in \"axisProxy\".\n\n if (isNaN(value) || isNaN(baseValue)) {\n continue;\n }\n\n var sign = value >= 0 ? 'p' : 'n';\n var baseCoord = valueAxisStart; // Because of the barMinHeight, we can not use the value in\n // stackResultDimension directly.\n\n if (stacked) {\n // Only ordinal axis can be stacked.\n if (!lastStackCoords[stackId][baseValue]) {\n lastStackCoords[stackId][baseValue] = {\n p: valueAxisStart,\n // Positive stack\n n: valueAxisStart // Negative stack\n\n };\n } // Should also consider #4243\n\n\n baseCoord = lastStackCoords[stackId][baseValue][sign];\n }\n\n var x;\n var y;\n var width;\n var height;\n\n if (isValueAxisH) {\n var coord = cartesian.dataToPoint([value, baseValue]);\n x = baseCoord;\n y = coord[1] + columnOffset;\n width = coord[0] - valueAxisStart;\n height = columnWidth;\n\n if (Math.abs(width) < barMinHeight) {\n width = (width < 0 ? -1 : 1) * barMinHeight;\n }\n\n stacked && (lastStackCoords[stackId][baseValue][sign] += width);\n } else {\n var coord = cartesian.dataToPoint([baseValue, value]);\n x = coord[0] + columnOffset;\n y = baseCoord;\n width = columnWidth;\n height = coord[1] - valueAxisStart;\n\n if (Math.abs(height) < barMinHeight) {\n // Include zero to has a positive bar\n height = (height <= 0 ? -1 : 1) * barMinHeight;\n }\n\n stacked && (lastStackCoords[stackId][baseValue][sign] += height);\n }\n\n data.setItemLayout(idx, {\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, this);\n} // TODO: Do not support stack in large mode yet.\n\n\nvar largeLayout = {\n seriesType: 'bar',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n if (!isOnCartesian(seriesModel) || !isInLargeMode(seriesModel)) {\n return;\n }\n\n var data = seriesModel.getData();\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var valueAxis = cartesian.getOtherAxis(baseAxis);\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var valueAxisHorizontal = valueAxis.isHorizontal();\n var valueDimIdx = valueAxisHorizontal ? 0 : 1;\n var barWidth = retrieveColumnLayout(makeColumnLayout([seriesModel]), baseAxis, seriesModel).width;\n\n if (!(barWidth > LARGE_BAR_MIN_WIDTH)) {\n // jshint ignore:line\n barWidth = LARGE_BAR_MIN_WIDTH;\n }\n\n return {\n progress: progress\n };\n\n function progress(params, data) {\n var count = params.count;\n var largePoints = new LargeArr(count * 2);\n var largeDataIndices = new LargeArr(count);\n var dataIndex;\n var coord = [];\n var valuePair = [];\n var pointsOffset = 0;\n var idxOffset = 0;\n\n while ((dataIndex = params.next()) != null) {\n valuePair[valueDimIdx] = data.get(valueDim, dataIndex);\n valuePair[1 - valueDimIdx] = data.get(baseDim, dataIndex);\n coord = cartesian.dataToPoint(valuePair, null, coord); // Data index might not be in order, depends on `progressiveChunkMode`.\n\n largePoints[pointsOffset++] = coord[0];\n largePoints[pointsOffset++] = coord[1];\n largeDataIndices[idxOffset++] = dataIndex;\n }\n\n data.setLayout({\n largePoints: largePoints,\n largeDataIndices: largeDataIndices,\n barWidth: barWidth,\n valueAxisStart: getValueAxisStart(baseAxis, valueAxis, false),\n valueAxisHorizontal: valueAxisHorizontal\n });\n }\n }\n};\n\nfunction isOnCartesian(seriesModel) {\n return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\n}\n\nfunction isInLargeMode(seriesModel) {\n return seriesModel.pipelineContext && seriesModel.pipelineContext.large;\n} // See cases in `test/bar-start.html` and `#7412`, `#8747`.\n\n\nfunction getValueAxisStart(baseAxis, valueAxis, stacked) {\n return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0));\n}\n\nexports.getLayoutOnAxis = getLayoutOnAxis;\nexports.prepareLayoutBarSeries = prepareLayoutBarSeries;\nexports.makeColumnLayout = makeColumnLayout;\nexports.retrieveColumnLayout = retrieveColumnLayout;\nexports.layout = layout;\nexports.largeLayout = largeLayout;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _labelHelper = require(\"./labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/Symbol\n */\n\n/**\n * @constructor\n * @alias {module:echarts/chart/helper/Symbol}\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @extends {module:zrender/graphic/Group}\n */\nfunction SymbolClz(data, idx, seriesScope) {\n graphic.Group.call(this);\n this.updateData(data, idx, seriesScope);\n}\n\nvar symbolProto = SymbolClz.prototype;\n/**\n * @public\n * @static\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @return {Array.} [width, height]\n */\n\nvar getSymbolSize = SymbolClz.getSymbolSize = function (data, idx) {\n var symbolSize = data.getItemVisual(idx, 'symbolSize');\n return symbolSize instanceof Array ? symbolSize.slice() : [+symbolSize, +symbolSize];\n};\n\nfunction getScale(symbolSize) {\n return [symbolSize[0] / 2, symbolSize[1] / 2];\n}\n\nfunction driftSymbol(dx, dy) {\n this.parent.drift(dx, dy);\n}\n\nsymbolProto._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\n // Remove paths created before\n this.removeAll();\n var color = data.getItemVisual(idx, 'color'); // var symbolPath = createSymbol(\n // symbolType, -0.5, -0.5, 1, 1, color\n // );\n // If width/height are set too small (e.g., set to 1) on ios10\n // and macOS Sierra, a circle stroke become a rect, no matter what\n // the scale is set. So we set width/height as 2. See #4150.\n\n var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, color, keepAspect);\n symbolPath.attr({\n z2: 100,\n culling: true,\n scale: getScale(symbolSize)\n }); // Rewrite drift method\n\n symbolPath.drift = driftSymbol;\n this._symbolType = symbolType;\n this.add(symbolPath);\n};\n/**\n * Stop animation\n * @param {boolean} toLastFrame\n */\n\n\nsymbolProto.stopSymbolAnimation = function (toLastFrame) {\n this.childAt(0).stopAnimation(toLastFrame);\n};\n/**\n * FIXME:\n * Caution: This method breaks the encapsulation of this module,\n * but it indeed brings convenience. So do not use the method\n * unless you detailedly know all the implements of `Symbol`,\n * especially animation.\n *\n * Get symbol path element.\n */\n\n\nsymbolProto.getSymbolPath = function () {\n return this.childAt(0);\n};\n/**\n * Get scale(aka, current symbol size).\n * Including the change caused by animation\n */\n\n\nsymbolProto.getScale = function () {\n return this.childAt(0).scale;\n};\n/**\n * Highlight symbol\n */\n\n\nsymbolProto.highlight = function () {\n this.childAt(0).trigger('emphasis');\n};\n/**\n * Downplay symbol\n */\n\n\nsymbolProto.downplay = function () {\n this.childAt(0).trigger('normal');\n};\n/**\n * @param {number} zlevel\n * @param {number} z\n */\n\n\nsymbolProto.setZ = function (zlevel, z) {\n var symbolPath = this.childAt(0);\n symbolPath.zlevel = zlevel;\n symbolPath.z = z;\n};\n\nsymbolProto.setDraggable = function (draggable) {\n var symbolPath = this.childAt(0);\n symbolPath.draggable = draggable;\n symbolPath.cursor = draggable ? 'move' : symbolPath.cursor;\n};\n/**\n * Update symbol properties\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Object} [seriesScope]\n * @param {Object} [seriesScope.itemStyle]\n * @param {Object} [seriesScope.hoverItemStyle]\n * @param {Object} [seriesScope.symbolRotate]\n * @param {Object} [seriesScope.symbolOffset]\n * @param {module:echarts/model/Model} [seriesScope.labelModel]\n * @param {module:echarts/model/Model} [seriesScope.hoverLabelModel]\n * @param {boolean} [seriesScope.hoverAnimation]\n * @param {Object} [seriesScope.cursorStyle]\n * @param {module:echarts/model/Model} [seriesScope.itemModel]\n * @param {string} [seriesScope.symbolInnerColor]\n * @param {Object} [seriesScope.fadeIn=false]\n */\n\n\nsymbolProto.updateData = function (data, idx, seriesScope) {\n this.silent = false;\n var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n var seriesModel = data.hostModel;\n var symbolSize = getSymbolSize(data, idx);\n var isInit = symbolType !== this._symbolType;\n\n if (isInit) {\n var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\n\n this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\n } else {\n var symbolPath = this.childAt(0);\n symbolPath.silent = false;\n graphic.updateProps(symbolPath, {\n scale: getScale(symbolSize)\n }, seriesModel, idx);\n }\n\n this._updateCommon(data, idx, symbolSize, seriesScope);\n\n if (isInit) {\n var symbolPath = this.childAt(0);\n var fadeIn = seriesScope && seriesScope.fadeIn;\n var target = {\n scale: symbolPath.scale.slice()\n };\n fadeIn && (target.style = {\n opacity: symbolPath.style.opacity\n });\n symbolPath.scale = [0, 0];\n fadeIn && (symbolPath.style.opacity = 0);\n graphic.initProps(symbolPath, target, seriesModel, idx);\n }\n\n this._seriesModel = seriesModel;\n}; // Update common properties\n\n\nvar normalStyleAccessPath = ['itemStyle'];\nvar emphasisStyleAccessPath = ['emphasis', 'itemStyle'];\nvar normalLabelAccessPath = ['label'];\nvar emphasisLabelAccessPath = ['emphasis', 'label'];\n/**\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Array.} symbolSize\n * @param {Object} [seriesScope]\n */\n\nsymbolProto._updateCommon = function (data, idx, symbolSize, seriesScope) {\n var symbolPath = this.childAt(0);\n var seriesModel = data.hostModel;\n var color = data.getItemVisual(idx, 'color'); // Reset style\n\n if (symbolPath.type !== 'image') {\n symbolPath.useStyle({\n strokeNoScale: true\n });\n } else {\n symbolPath.setStyle({\n opacity: null,\n shadowBlur: null,\n shadowOffsetX: null,\n shadowOffsetY: null,\n shadowColor: null\n });\n }\n\n var itemStyle = seriesScope && seriesScope.itemStyle;\n var hoverItemStyle = seriesScope && seriesScope.hoverItemStyle;\n var symbolRotate = seriesScope && seriesScope.symbolRotate;\n var symbolOffset = seriesScope && seriesScope.symbolOffset;\n var labelModel = seriesScope && seriesScope.labelModel;\n var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel;\n var hoverAnimation = seriesScope && seriesScope.hoverAnimation;\n var cursorStyle = seriesScope && seriesScope.cursorStyle;\n\n if (!seriesScope || data.hasItemOption) {\n var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx); // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n itemStyle = itemModel.getModel(normalStyleAccessPath).getItemStyle(['color']);\n hoverItemStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle();\n symbolRotate = itemModel.getShallow('symbolRotate');\n symbolOffset = itemModel.getShallow('symbolOffset');\n labelModel = itemModel.getModel(normalLabelAccessPath);\n hoverLabelModel = itemModel.getModel(emphasisLabelAccessPath);\n hoverAnimation = itemModel.getShallow('hoverAnimation');\n cursorStyle = itemModel.getShallow('cursor');\n } else {\n hoverItemStyle = zrUtil.extend({}, hoverItemStyle);\n }\n\n var elStyle = symbolPath.style;\n symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\n\n if (symbolOffset) {\n symbolPath.attr('position', [parsePercent(symbolOffset[0], symbolSize[0]), parsePercent(symbolOffset[1], symbolSize[1])]);\n }\n\n cursorStyle && symbolPath.attr('cursor', cursorStyle); // PENDING setColor before setStyle!!!\n\n symbolPath.setColor(color, seriesScope && seriesScope.symbolInnerColor);\n symbolPath.setStyle(itemStyle);\n var opacity = data.getItemVisual(idx, 'opacity');\n\n if (opacity != null) {\n elStyle.opacity = opacity;\n }\n\n var liftZ = data.getItemVisual(idx, 'liftZ');\n var z2Origin = symbolPath.__z2Origin;\n\n if (liftZ != null) {\n if (z2Origin == null) {\n symbolPath.__z2Origin = symbolPath.z2;\n symbolPath.z2 += liftZ;\n }\n } else if (z2Origin != null) {\n symbolPath.z2 = z2Origin;\n symbolPath.__z2Origin = null;\n }\n\n var useNameLabel = seriesScope && seriesScope.useNameLabel;\n graphic.setLabelStyle(elStyle, hoverItemStyle, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: idx,\n defaultText: getLabelDefaultText,\n isRectText: true,\n autoColor: color\n }); // Do not execute util needed.\n\n function getLabelDefaultText(idx, opt) {\n return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\n }\n\n symbolPath.__symbolOriginalScale = getScale(symbolSize);\n symbolPath.hoverStyle = hoverItemStyle;\n symbolPath.highDownOnUpdate = hoverAnimation && seriesModel.isAnimationEnabled() ? highDownOnUpdate : null;\n graphic.setHoverStyle(symbolPath);\n};\n\nfunction highDownOnUpdate(fromState, toState) {\n // Do not support this hover animation util some scenario required.\n // Animation can only be supported in hover layer when using `el.incremetal`.\n if (this.incremental || this.useHoverLayer) {\n return;\n }\n\n if (toState === 'emphasis') {\n var scale = this.__symbolOriginalScale;\n var ratio = scale[1] / scale[0];\n var emphasisOpt = {\n scale: [Math.max(scale[0] * 1.1, scale[0] + 3), Math.max(scale[1] * 1.1, scale[1] + 3 * ratio)]\n }; // FIXME\n // modify it after support stop specified animation.\n // toState === fromState\n // ? (this.stopAnimation(), this.attr(emphasisOpt))\n\n this.animateTo(emphasisOpt, 400, 'elasticOut');\n } else if (toState === 'normal') {\n this.animateTo({\n scale: this.__symbolOriginalScale\n }, 400, 'elasticOut');\n }\n}\n/**\n * @param {Function} cb\n * @param {Object} [opt]\n * @param {Object} [opt.keepLabel=true]\n */\n\n\nsymbolProto.fadeOut = function (cb, opt) {\n var symbolPath = this.childAt(0); // Avoid mistaken hover when fading out\n\n this.silent = symbolPath.silent = true; // Not show text when animating\n\n !(opt && opt.keepLabel) && (symbolPath.style.text = null);\n graphic.updateProps(symbolPath, {\n style: {\n opacity: 0\n },\n scale: [0, 0]\n }, this._seriesModel, this.dataIndex, cb);\n};\n\nzrUtil.inherits(SymbolClz, graphic.Group);\nvar _default = SymbolClz;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar axisDefault = require(\"./axisDefault\");\n\nvar ComponentModel = require(\"../model/Component\");\n\nvar _layout = require(\"../util/layout\");\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\nvar OrdinalMeta = require(\"../data/OrdinalMeta\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// FIXME axisType is fixed ?\nvar AXIS_TYPES = ['value', 'category', 'time', 'log'];\n/**\n * Generate sub axis model class\n * @param {string} axisName 'x' 'y' 'radius' 'angle' 'parallel'\n * @param {module:echarts/model/Component} BaseAxisModelClass\n * @param {Function} axisTypeDefaulter\n * @param {Object} [extraDefaultOption]\n */\n\nfunction _default(axisName, BaseAxisModelClass, axisTypeDefaulter, extraDefaultOption) {\n zrUtil.each(AXIS_TYPES, function (axisType) {\n BaseAxisModelClass.extend({\n /**\n * @readOnly\n */\n type: axisName + 'Axis.' + axisType,\n mergeDefaultAndTheme: function (option, ecModel) {\n var layoutMode = this.layoutMode;\n var inputPositionParams = layoutMode ? getLayoutParams(option) : {};\n var themeModel = ecModel.getTheme();\n zrUtil.merge(option, themeModel.get(axisType + 'Axis'));\n zrUtil.merge(option, this.getDefaultOption());\n option.type = axisTypeDefaulter(axisName, option);\n\n if (layoutMode) {\n mergeLayoutParam(option, inputPositionParams, layoutMode);\n }\n },\n\n /**\n * @override\n */\n optionUpdated: function () {\n var thisOption = this.option;\n\n if (thisOption.type === 'category') {\n this.__ordinalMeta = OrdinalMeta.createByAxisModel(this);\n }\n },\n\n /**\n * Should not be called before all of 'getInitailData' finished.\n * Because categories are collected during initializing data.\n */\n getCategories: function (rawData) {\n var option = this.option; // FIXME\n // warning if called before all of 'getInitailData' finished.\n\n if (option.type === 'category') {\n if (rawData) {\n return option.data;\n }\n\n return this.__ordinalMeta.categories;\n }\n },\n getOrdinalMeta: function () {\n return this.__ordinalMeta;\n },\n defaultOption: zrUtil.mergeAll([{}, axisDefault[axisType + 'Axis'], extraDefaultOption], true)\n });\n });\n ComponentModel.registerSubTypeDefaulter(axisName + 'Axis', zrUtil.curry(axisTypeDefaulter, axisName));\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../../model/Model\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar curry = zrUtil.curry; // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n// allAxesInfo should be updated when setOption performed.\n\nfunction collect(ecModel, api) {\n var result = {\n /**\n * key: makeKey(axis.model)\n * value: {\n * axis,\n * coordSys,\n * axisPointerModel,\n * triggerTooltip,\n * involveSeries,\n * snap,\n * seriesModels,\n * seriesDataCount\n * }\n */\n axesInfo: {},\n seriesInvolved: false,\n\n /**\n * key: makeKey(coordSys.model)\n * value: Object: key makeKey(axis.model), value: axisInfo\n */\n coordSysAxesInfo: {},\n coordSysMap: {}\n };\n collectAxesInfo(result, ecModel, api); // Check seriesInvolved for performance, in case too many series in some chart.\n\n result.seriesInvolved && collectSeriesInfo(result, ecModel);\n return result;\n}\n\nfunction collectAxesInfo(result, ecModel, api) {\n var globalTooltipModel = ecModel.getComponent('tooltip');\n var globalAxisPointerModel = ecModel.getComponent('axisPointer'); // links can only be set on global.\n\n var linksOption = globalAxisPointerModel.get('link', true) || [];\n var linkGroups = []; // Collect axes info.\n\n each(api.getCoordinateSystems(), function (coordSys) {\n // Some coordinate system do not support axes, like geo.\n if (!coordSys.axisPointerEnabled) {\n return;\n }\n\n var coordSysKey = makeKey(coordSys.model);\n var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};\n result.coordSysMap[coordSysKey] = coordSys; // Set tooltip (like 'cross') is a convienent way to show axisPointer\n // for user. So we enable seting tooltip on coordSys model.\n\n var coordSysModel = coordSys.model;\n var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel);\n each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null)); // If axis tooltip used, choose tooltip axis for each coordSys.\n // Notice this case: coordSys is `grid` but not `cartesian2D` here.\n\n if (coordSys.getTooltipAxes && globalTooltipModel // If tooltip.showContent is set as false, tooltip will not\n // show but axisPointer will show as normal.\n && baseTooltipModel.get('show')) {\n // Compatible with previous logic. But series.tooltip.trigger: 'axis'\n // or series.data[n].tooltip.trigger: 'axis' are not support any more.\n var triggerAxis = baseTooltipModel.get('trigger') === 'axis';\n var cross = baseTooltipModel.get('axisPointer.type') === 'cross';\n var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get('axisPointer.axis'));\n\n if (triggerAxis || cross) {\n each(tooltipAxes.baseAxes, curry(saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis));\n }\n\n if (cross) {\n each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false));\n }\n } // fromTooltip: true | false | 'cross'\n // triggerTooltip: true | false | null\n\n\n function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {\n var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel);\n var axisPointerShow = axisPointerModel.get('show');\n\n if (!axisPointerShow || axisPointerShow === 'auto' && !fromTooltip && !isHandleTrigger(axisPointerModel)) {\n return;\n }\n\n if (triggerTooltip == null) {\n triggerTooltip = axisPointerModel.get('triggerTooltip');\n }\n\n axisPointerModel = fromTooltip ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) : axisPointerModel;\n var snap = axisPointerModel.get('snap');\n var key = makeKey(axis.model);\n var involveSeries = triggerTooltip || snap || axis.type === 'category'; // If result.axesInfo[key] exist, override it (tooltip has higher priority).\n\n var axisInfo = result.axesInfo[key] = {\n key: key,\n axis: axis,\n coordSys: coordSys,\n axisPointerModel: axisPointerModel,\n triggerTooltip: triggerTooltip,\n involveSeries: involveSeries,\n snap: snap,\n useHandle: isHandleTrigger(axisPointerModel),\n seriesModels: []\n };\n axesInfoInCoordSys[key] = axisInfo;\n result.seriesInvolved |= involveSeries;\n var groupIndex = getLinkGroupIndex(linksOption, axis);\n\n if (groupIndex != null) {\n var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = {\n axesInfo: {}\n });\n linkGroup.axesInfo[key] = axisInfo;\n linkGroup.mapper = linksOption[groupIndex].mapper;\n axisInfo.linkGroup = linkGroup;\n }\n }\n });\n}\n\nfunction makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) {\n var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');\n var volatileOption = {};\n each(['type', 'snap', 'lineStyle', 'shadowStyle', 'label', 'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'], function (field) {\n volatileOption[field] = zrUtil.clone(tooltipAxisPointerModel.get(field));\n }); // category axis do not auto snap, otherwise some tick that do not\n // has value can not be hovered. value/time/log axis default snap if\n // triggered from tooltip and trigger tooltip.\n\n volatileOption.snap = axis.type !== 'category' && !!triggerTooltip; // Compatibel with previous behavior, tooltip axis do not show label by default.\n // Only these properties can be overrided from tooltip to axisPointer.\n\n if (tooltipAxisPointerModel.get('type') === 'cross') {\n volatileOption.type = 'line';\n }\n\n var labelOption = volatileOption.label || (volatileOption.label = {}); // Follow the convention, do not show label when triggered by tooltip by default.\n\n labelOption.show == null && (labelOption.show = false);\n\n if (fromTooltip === 'cross') {\n // When 'cross', both axes show labels.\n var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get('label.show');\n labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true; // If triggerTooltip, this is a base axis, which should better not use cross style\n // (cross style is dashed by default)\n\n if (!triggerTooltip) {\n var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');\n crossStyle && zrUtil.defaults(labelOption, crossStyle.textStyle);\n }\n }\n\n return axis.model.getModel('axisPointer', new Model(volatileOption, globalAxisPointerModel, ecModel));\n}\n\nfunction collectSeriesInfo(result, ecModel) {\n // Prepare data for axis trigger\n ecModel.eachSeries(function (seriesModel) {\n // Notice this case: this coordSys is `cartesian2D` but not `grid`.\n var coordSys = seriesModel.coordinateSystem;\n var seriesTooltipTrigger = seriesModel.get('tooltip.trigger', true);\n var seriesTooltipShow = seriesModel.get('tooltip.show', true);\n\n if (!coordSys || seriesTooltipTrigger === 'none' || seriesTooltipTrigger === false || seriesTooltipTrigger === 'item' || seriesTooltipShow === false || seriesModel.get('axisPointer.show', true) === false) {\n return;\n }\n\n each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) {\n var axis = axisInfo.axis;\n\n if (coordSys.getAxis(axis.dim) === axis) {\n axisInfo.seriesModels.push(seriesModel);\n axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);\n axisInfo.seriesDataCount += seriesModel.getData().count();\n }\n });\n }, this);\n}\n/**\n * For example:\n * {\n * axisPointer: {\n * links: [{\n * xAxisIndex: [2, 4],\n * yAxisIndex: 'all'\n * }, {\n * xAxisId: ['a5', 'a7'],\n * xAxisName: 'xxx'\n * }]\n * }\n * }\n */\n\n\nfunction getLinkGroupIndex(linksOption, axis) {\n var axisModel = axis.model;\n var dim = axis.dim;\n\n for (var i = 0; i < linksOption.length; i++) {\n var linkOption = linksOption[i] || {};\n\n if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id) || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex) || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)) {\n return i;\n }\n }\n}\n\nfunction checkPropInLink(linkPropValue, axisPropValue) {\n return linkPropValue === 'all' || zrUtil.isArray(linkPropValue) && zrUtil.indexOf(linkPropValue, axisPropValue) >= 0 || linkPropValue === axisPropValue;\n}\n\nfunction fixValue(axisModel) {\n var axisInfo = getAxisInfo(axisModel);\n\n if (!axisInfo) {\n return;\n }\n\n var axisPointerModel = axisInfo.axisPointerModel;\n var scale = axisInfo.axis.scale;\n var option = axisPointerModel.option;\n var status = axisPointerModel.get('status');\n var value = axisPointerModel.get('value'); // Parse init value for category and time axis.\n\n if (value != null) {\n value = scale.parse(value);\n }\n\n var useHandle = isHandleTrigger(axisPointerModel); // If `handle` used, `axisPointer` will always be displayed, so value\n // and status should be initialized.\n\n if (status == null) {\n option.status = useHandle ? 'show' : 'hide';\n }\n\n var extent = scale.getExtent().slice();\n extent[0] > extent[1] && extent.reverse();\n\n if ( // Pick a value on axis when initializing.\n value == null // If both `handle` and `dataZoom` are used, value may be out of axis extent,\n // where we should re-pick a value to keep `handle` displaying normally.\n || value > extent[1]) {\n // Make handle displayed on the end of the axis when init, which looks better.\n value = extent[1];\n }\n\n if (value < extent[0]) {\n value = extent[0];\n }\n\n option.value = value;\n\n if (useHandle) {\n option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';\n }\n}\n\nfunction getAxisInfo(axisModel) {\n var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {}).coordSysAxesInfo;\n return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];\n}\n\nfunction getAxisPointerModel(axisModel) {\n var axisInfo = getAxisInfo(axisModel);\n return axisInfo && axisInfo.axisPointerModel;\n}\n\nfunction isHandleTrigger(axisPointerModel) {\n return !!axisPointerModel.get('handle.show');\n}\n/**\n * @param {module:echarts/model/Model} model\n * @return {string} unique key\n */\n\n\nfunction makeKey(model) {\n return model.type + '||' + model.id;\n}\n\nexports.collect = collect;\nexports.fixValue = fixValue;\nexports.getAxisInfo = getAxisInfo;\nexports.getAxisPointerModel = getAxisPointerModel;\nexports.makeKey = makeKey;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Pick color from palette for each data item.\n// Applicable for charts that require applying color palette\n// in data level (like pie, funnel, chord).\nfunction _default(seriesType) {\n return {\n getTargetSeries: function (ecModel) {\n // Pie and funnel may use diferrent scope\n var paletteScope = {};\n var seiresModelMap = createHashMap();\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n seriesModel.__paletteScope = paletteScope;\n seiresModelMap.set(seriesModel.uid, seriesModel);\n });\n return seiresModelMap;\n },\n reset: function (seriesModel, ecModel) {\n var dataAll = seriesModel.getRawData();\n var idxMap = {};\n var data = seriesModel.getData();\n data.each(function (idx) {\n var rawIdx = data.getRawIndex(idx);\n idxMap[rawIdx] = idx;\n });\n dataAll.each(function (rawIdx) {\n var filteredIdx = idxMap[rawIdx]; // If series.itemStyle.normal.color is a function. itemVisual may be encoded\n\n var singleDataColor = filteredIdx != null && data.getItemVisual(filteredIdx, 'color', true);\n var singleDataBorderColor = filteredIdx != null && data.getItemVisual(filteredIdx, 'borderColor', true);\n var itemModel;\n\n if (!singleDataColor || !singleDataBorderColor) {\n // FIXME Performance\n itemModel = dataAll.getItemModel(rawIdx);\n }\n\n if (!singleDataColor) {\n var color = itemModel.get('itemStyle.color') || seriesModel.getColorFromPalette(dataAll.getName(rawIdx) || rawIdx + '', seriesModel.__paletteScope, dataAll.count()); // Data is not filtered\n\n if (filteredIdx != null) {\n data.setItemVisual(filteredIdx, 'color', color);\n }\n }\n\n if (!singleDataBorderColor) {\n var borderColor = itemModel.get('itemStyle.borderColor'); // Data is not filtered\n\n if (filteredIdx != null) {\n data.setItemVisual(filteredIdx, 'borderColor', borderColor);\n }\n }\n });\n }\n };\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar createHashMap = _util.createHashMap;\n\nvar mapDataStorage = require(\"./mapDataStorage\");\n\nvar geoJSONLoader = require(\"./geoJSONLoader\");\n\nvar geoSVGLoader = require(\"./geoSVGLoader\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar loaders = {\n geoJSON: geoJSONLoader,\n svg: geoSVGLoader\n};\nvar _default = {\n /**\n * @param {string} mapName\n * @param {Object} nameMap\n * @return {Object} source {regions, regionsMap, nameCoordMap, boundingRect}\n */\n load: function (mapName, nameMap) {\n var regions = [];\n var regionsMap = createHashMap();\n var nameCoordMap = createHashMap();\n var boundingRect;\n var mapRecords = retrieveMap(mapName);\n each(mapRecords, function (record) {\n var singleSource = loaders[record.type].load(mapName, record);\n each(singleSource.regions, function (region) {\n var regionName = region.name; // Try use the alias in geoNameMap\n\n if (nameMap && nameMap.hasOwnProperty(regionName)) {\n region = region.cloneShallow(regionName = nameMap[regionName]);\n }\n\n regions.push(region);\n regionsMap.set(regionName, region);\n nameCoordMap.set(regionName, region.center);\n });\n var rect = singleSource.boundingRect;\n\n if (rect) {\n boundingRect ? boundingRect.union(rect) : boundingRect = rect.clone();\n }\n });\n return {\n regions: regions,\n regionsMap: regionsMap,\n nameCoordMap: nameCoordMap,\n // FIXME Always return new ?\n boundingRect: boundingRect || new BoundingRect(0, 0, 0, 0)\n };\n },\n\n /**\n * @param {string} mapName\n * @param {string} hostKey For cache.\n * @return {Array.} Roots.\n */\n makeGraphic: makeInvoker('makeGraphic'),\n\n /**\n * @param {string} mapName\n * @param {string} hostKey For cache.\n */\n removeGraphic: makeInvoker('removeGraphic')\n};\n\nfunction makeInvoker(methodName) {\n return function (mapName, hostKey) {\n var mapRecords = retrieveMap(mapName);\n var results = [];\n each(mapRecords, function (record) {\n var method = loaders[record.type][methodName];\n method && results.push(method(mapName, record, hostKey));\n });\n return results;\n };\n}\n\nfunction mapNotExistsError(mapName) {}\n\nfunction retrieveMap(mapName) {\n var mapRecords = mapDataStorage.retrieveMap(mapName) || [];\n return mapRecords;\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar IRRELEVANT_EXCLUDES = {\n 'axisPointer': 1,\n 'tooltip': 1,\n 'brush': 1\n};\n/**\n * Avoid that: mouse click on a elements that is over geo or graph,\n * but roam is triggered.\n */\n\nfunction onIrrelevantElement(e, api, targetCoordSysModel) {\n var model = api.getComponentByElement(e.topTarget); // If model is axisModel, it works only if it is injected with coordinateSystem.\n\n var coordSys = model && model.coordinateSystem;\n return model && model !== targetCoordSysModel && !IRRELEVANT_EXCLUDES[model.mainType] && coordSys && coordSys.model !== targetCoordSysModel;\n}\n\nexports.onIrrelevantElement = onIrrelevantElement;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar AxisBuilder = require(\"../axis/AxisBuilder\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/model/Model} axisPointerModel\n */\nfunction buildElStyle(axisPointerModel) {\n var axisPointerType = axisPointerModel.get('type');\n var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');\n var style;\n\n if (axisPointerType === 'line') {\n style = styleModel.getLineStyle();\n style.fill = null;\n } else if (axisPointerType === 'shadow') {\n style = styleModel.getAreaStyle();\n style.stroke = null;\n }\n\n return style;\n}\n/**\n * @param {Function} labelPos {align, verticalAlign, position}\n */\n\n\nfunction buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) {\n var value = axisPointerModel.get('value');\n var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get('seriesDataIndices'), {\n precision: axisPointerModel.get('label.precision'),\n formatter: axisPointerModel.get('label.formatter')\n });\n var labelModel = axisPointerModel.getModel('label');\n var paddings = formatUtil.normalizeCssArray(labelModel.get('padding') || 0);\n var font = labelModel.getFont();\n var textRect = textContain.getBoundingRect(text, font);\n var position = labelPos.position;\n var width = textRect.width + paddings[1] + paddings[3];\n var height = textRect.height + paddings[0] + paddings[2]; // Adjust by align.\n\n var align = labelPos.align;\n align === 'right' && (position[0] -= width);\n align === 'center' && (position[0] -= width / 2);\n var verticalAlign = labelPos.verticalAlign;\n verticalAlign === 'bottom' && (position[1] -= height);\n verticalAlign === 'middle' && (position[1] -= height / 2); // Not overflow ec container\n\n confineInContainer(position, width, height, api);\n var bgColor = labelModel.get('backgroundColor');\n\n if (!bgColor || bgColor === 'auto') {\n bgColor = axisModel.get('axisLine.lineStyle.color');\n }\n\n elOption.label = {\n shape: {\n x: 0,\n y: 0,\n width: width,\n height: height,\n r: labelModel.get('borderRadius')\n },\n position: position.slice(),\n // TODO: rich\n style: {\n text: text,\n textFont: font,\n textFill: labelModel.getTextColor(),\n textPosition: 'inside',\n textPadding: paddings,\n fill: bgColor,\n stroke: labelModel.get('borderColor') || 'transparent',\n lineWidth: labelModel.get('borderWidth') || 0,\n shadowBlur: labelModel.get('shadowBlur'),\n shadowColor: labelModel.get('shadowColor'),\n shadowOffsetX: labelModel.get('shadowOffsetX'),\n shadowOffsetY: labelModel.get('shadowOffsetY')\n },\n // Lable should be over axisPointer.\n z2: 10\n };\n} // Do not overflow ec container\n\n\nfunction confineInContainer(position, width, height, api) {\n var viewWidth = api.getWidth();\n var viewHeight = api.getHeight();\n position[0] = Math.min(position[0] + width, viewWidth) - width;\n position[1] = Math.min(position[1] + height, viewHeight) - height;\n position[0] = Math.max(position[0], 0);\n position[1] = Math.max(position[1], 0);\n}\n/**\n * @param {number} value\n * @param {module:echarts/coord/Axis} axis\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} opt\n * @param {Array.} seriesDataIndices\n * @param {number|string} opt.precision 'auto' or a number\n * @param {string|Function} opt.formatter label formatter\n */\n\n\nfunction getValueLabel(value, axis, ecModel, seriesDataIndices, opt) {\n value = axis.scale.parse(value);\n var text = axis.scale.getLabel( // If `precision` is set, width can be fixed (like '12.00500'), which\n // helps to debounce when when moving label.\n value, {\n precision: opt.precision\n });\n var formatter = opt.formatter;\n\n if (formatter) {\n var params = {\n value: axisHelper.getAxisRawValue(axis, value),\n axisDimension: axis.dim,\n axisIndex: axis.index,\n seriesData: []\n };\n zrUtil.each(seriesDataIndices, function (idxItem) {\n var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n var dataIndex = idxItem.dataIndexInside;\n var dataParams = series && series.getDataParams(dataIndex);\n dataParams && params.seriesData.push(dataParams);\n });\n\n if (zrUtil.isString(formatter)) {\n text = formatter.replace('{value}', text);\n } else if (zrUtil.isFunction(formatter)) {\n text = formatter(params);\n }\n }\n\n return text;\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @param {number} value\n * @param {Object} layoutInfo {\n * rotation, position, labelOffset, labelDirection, labelMargin\n * }\n */\n\n\nfunction getTransformedPosition(axis, value, layoutInfo) {\n var transform = matrix.create();\n matrix.rotate(transform, transform, layoutInfo.rotation);\n matrix.translate(transform, transform, layoutInfo.position);\n return graphic.applyTransform([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform);\n}\n\nfunction buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) {\n var textLayout = AxisBuilder.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection);\n layoutInfo.labelMargin = axisPointerModel.get('label.margin');\n buildLabelElOption(elOption, axisModel, axisPointerModel, api, {\n position: getTransformedPosition(axisModel.axis, value, layoutInfo),\n align: textLayout.textAlign,\n verticalAlign: textLayout.textVerticalAlign\n });\n}\n/**\n * @param {Array.} p1\n * @param {Array.} p2\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeLineShape(p1, p2, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x1: p1[xDimIndex],\n y1: p1[1 - xDimIndex],\n x2: p2[xDimIndex],\n y2: p2[1 - xDimIndex]\n };\n}\n/**\n * @param {Array.} xy\n * @param {Array.} wh\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeRectShape(xy, wh, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x: xy[xDimIndex],\n y: xy[1 - xDimIndex],\n width: wh[xDimIndex],\n height: wh[1 - xDimIndex]\n };\n}\n\nfunction makeSectorShape(cx, cy, r0, r, startAngle, endAngle) {\n return {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r,\n startAngle: startAngle,\n endAngle: endAngle,\n clockwise: true\n };\n}\n\nexports.buildElStyle = buildElStyle;\nexports.buildLabelElOption = buildLabelElOption;\nexports.getValueLabel = getValueLabel;\nexports.getTransformedPosition = getTransformedPosition;\nexports.buildCartesianSingleLabelElOption = buildCartesianSingleLabelElOption;\nexports.makeLineShape = makeLineShape;\nexports.makeRectShape = makeRectShape;\nexports.makeSectorShape = makeSectorShape;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar VisualMapping = require(\"./VisualMapping\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @file Visual solution, for consistent option specification.\n */\nvar each = zrUtil.each;\n\nfunction hasKeys(obj) {\n if (obj) {\n for (var name in obj) {\n if (obj.hasOwnProperty(name)) {\n return true;\n }\n }\n }\n}\n/**\n * @param {Object} option\n * @param {Array.} stateList\n * @param {Function} [supplementVisualOption]\n * @return {Object} visualMappings >\n */\n\n\nfunction createVisualMappings(option, stateList, supplementVisualOption) {\n var visualMappings = {};\n each(stateList, function (state) {\n var mappings = visualMappings[state] = createMappings();\n each(option[state], function (visualData, visualType) {\n if (!VisualMapping.isValidType(visualType)) {\n return;\n }\n\n var mappingOption = {\n type: visualType,\n visual: visualData\n };\n supplementVisualOption && supplementVisualOption(mappingOption, state);\n mappings[visualType] = new VisualMapping(mappingOption); // Prepare a alpha for opacity, for some case that opacity\n // is not supported, such as rendering using gradient color.\n\n if (visualType === 'opacity') {\n mappingOption = zrUtil.clone(mappingOption);\n mappingOption.type = 'colorAlpha';\n mappings.__hidden.__alphaForOpacity = new VisualMapping(mappingOption);\n }\n });\n });\n return visualMappings;\n\n function createMappings() {\n var Creater = function () {}; // Make sure hidden fields will not be visited by\n // object iteration (with hasOwnProperty checking).\n\n\n Creater.prototype.__hidden = Creater.prototype;\n var obj = new Creater();\n return obj;\n }\n}\n/**\n * @param {Object} thisOption\n * @param {Object} newOption\n * @param {Array.} keys\n */\n\n\nfunction replaceVisualOption(thisOption, newOption, keys) {\n // Visual attributes merge is not supported, otherwise it\n // brings overcomplicated merge logic. See #2853. So if\n // newOption has anyone of these keys, all of these keys\n // will be reset. Otherwise, all keys remain.\n var has;\n zrUtil.each(keys, function (key) {\n if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n has = true;\n }\n });\n has && zrUtil.each(keys, function (key) {\n if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n thisOption[key] = zrUtil.clone(newOption[key]);\n } else {\n delete thisOption[key];\n }\n });\n}\n/**\n * @param {Array.} stateList\n * @param {Object} visualMappings >\n * @param {module:echarts/data/List} list\n * @param {Function} getValueState param: valueOrIndex, return: state.\n * @param {object} [scope] Scope for getValueState\n * @param {string} [dimension] Concrete dimension, if used.\n */\n// ???! handle brush?\n\n\nfunction applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) {\n var visualTypesMap = {};\n zrUtil.each(stateList, function (state) {\n var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n visualTypesMap[state] = visualTypes;\n });\n var dataIndex;\n\n function getVisual(key) {\n return data.getItemVisual(dataIndex, key);\n }\n\n function setVisual(key, value) {\n data.setItemVisual(dataIndex, key, value);\n }\n\n if (dimension == null) {\n data.each(eachItem);\n } else {\n data.each([dimension], eachItem);\n }\n\n function eachItem(valueOrIndex, index) {\n dataIndex = dimension == null ? valueOrIndex : index;\n var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n\n if (rawDataItem && rawDataItem.visualMap === false) {\n return;\n }\n\n var valueState = getValueState.call(scope, valueOrIndex);\n var mappings = visualMappings[valueState];\n var visualTypes = visualTypesMap[valueState];\n\n for (var i = 0, len = visualTypes.length; i < len; i++) {\n var type = visualTypes[i];\n mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual);\n }\n }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Array.} stateList\n * @param {Object} visualMappings >\n * @param {Function} getValueState param: valueOrIndex, return: state.\n * @param {number} [dim] dimension or dimension index.\n */\n\n\nfunction incrementalApplyVisual(stateList, visualMappings, getValueState, dim) {\n var visualTypesMap = {};\n zrUtil.each(stateList, function (state) {\n var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n visualTypesMap[state] = visualTypes;\n });\n\n function progress(params, data) {\n if (dim != null) {\n dim = data.getDimension(dim);\n }\n\n function getVisual(key) {\n return data.getItemVisual(dataIndex, key);\n }\n\n function setVisual(key, value) {\n data.setItemVisual(dataIndex, key, value);\n }\n\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n\n if (rawDataItem && rawDataItem.visualMap === false) {\n continue;\n }\n\n var value = dim != null ? data.get(dim, dataIndex, true) : dataIndex;\n var valueState = getValueState(value);\n var mappings = visualMappings[valueState];\n var visualTypes = visualTypesMap[valueState];\n\n for (var i = 0, len = visualTypes.length; i < len; i++) {\n var type = visualTypes[i];\n mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual);\n }\n }\n }\n\n return {\n progress: progress\n };\n}\n\nexports.createVisualMappings = createVisualMappings;\nexports.replaceVisualOption = replaceVisualOption;\nexports.applyVisual = applyVisual;\nexports.incrementalApplyVisual = incrementalApplyVisual;","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _echarts = require(\"./lib/echarts\");\n\n(function () {\n for (var key in _echarts) {\n if (_echarts == null || !_echarts.hasOwnProperty(key) || key === 'default' || key === '__esModule') return;\n exports[key] = _echarts[key];\n }\n})();\n\nvar _export = require(\"./lib/export\");\n\n(function () {\n for (var key in _export) {\n if (_export == null || !_export.hasOwnProperty(key) || key === 'default' || key === '__esModule') return;\n exports[key] = _export[key];\n }\n})();\n\nrequire(\"./lib/component/dataset\");\n\nrequire(\"./lib/chart/line\");\n\nrequire(\"./lib/chart/bar\");\n\nrequire(\"./lib/chart/pie\");\n\nrequire(\"./lib/chart/scatter\");\n\nrequire(\"./lib/chart/radar\");\n\nrequire(\"./lib/chart/map\");\n\nrequire(\"./lib/chart/tree\");\n\nrequire(\"./lib/chart/treemap\");\n\nrequire(\"./lib/chart/graph\");\n\nrequire(\"./lib/chart/gauge\");\n\nrequire(\"./lib/chart/funnel\");\n\nrequire(\"./lib/chart/parallel\");\n\nrequire(\"./lib/chart/sankey\");\n\nrequire(\"./lib/chart/boxplot\");\n\nrequire(\"./lib/chart/candlestick\");\n\nrequire(\"./lib/chart/effectScatter\");\n\nrequire(\"./lib/chart/lines\");\n\nrequire(\"./lib/chart/heatmap\");\n\nrequire(\"./lib/chart/pictorialBar\");\n\nrequire(\"./lib/chart/themeRiver\");\n\nrequire(\"./lib/chart/sunburst\");\n\nrequire(\"./lib/chart/custom\");\n\nrequire(\"./lib/component/grid\");\n\nrequire(\"./lib/component/polar\");\n\nrequire(\"./lib/component/geo\");\n\nrequire(\"./lib/component/singleAxis\");\n\nrequire(\"./lib/component/parallel\");\n\nrequire(\"./lib/component/calendar\");\n\nrequire(\"./lib/component/graphic\");\n\nrequire(\"./lib/component/toolbox\");\n\nrequire(\"./lib/component/tooltip\");\n\nrequire(\"./lib/component/axisPointer\");\n\nrequire(\"./lib/component/brush\");\n\nrequire(\"./lib/component/title\");\n\nrequire(\"./lib/component/timeline\");\n\nrequire(\"./lib/component/markPoint\");\n\nrequire(\"./lib/component/markLine\");\n\nrequire(\"./lib/component/markArea\");\n\nrequire(\"./lib/component/legendScroll\");\n\nrequire(\"./lib/component/legend\");\n\nrequire(\"./lib/component/dataZoom\");\n\nrequire(\"./lib/component/dataZoomInside\");\n\nrequire(\"./lib/component/dataZoomSlider\");\n\nrequire(\"./lib/component/visualMap\");\n\nrequire(\"./lib/component/visualMapContinuous\");\n\nrequire(\"./lib/component/visualMapPiecewise\");\n\nrequire(\"zrender/lib/vml/vml\");\n\nrequire(\"zrender/lib/svg/svg\");","/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (acequire, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof acequirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _acequire = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && acequire.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar acequire = function(module, callback) {\n var packagedModule = _acequire(\"\", module, callback);\n if (packagedModule == undefined && acequire.original)\n return acequire.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin acequires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative acequires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _acequire(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.acequire || !root.acequire.packaged) {\n acequire.original = root.acequire;\n root.acequire = acequire;\n root.acequire.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\n var real = {\n exec: RegExp.prototype.exec,\n test: RegExp.prototype.test,\n match: String.prototype.match,\n replace: String.prototype.replace,\n split: String.prototype.split\n },\n compliantExecNpcg = real.exec.call(/()??/, \"\")[1] === undefined, // check `exec` handling of nonparticipating capturing groups\n compliantLastIndexIncrement = function () {\n var x = /^/g;\n real.test.call(x, \"\");\n return !x.lastIndex;\n }();\n\n if (compliantLastIndexIncrement && compliantExecNpcg)\n return;\n RegExp.prototype.exec = function (str) {\n var match = real.exec.apply(this, arguments),\n name, r2;\n if ( typeof(str) == 'string' && match) {\n if (!compliantExecNpcg && match.length > 1 && indexOf(match, \"\") > -1) {\n r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), \"g\", \"\"));\n real.replace.call(str.slice(match.index), r2, function () {\n for (var i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined)\n match[i] = undefined;\n }\n });\n }\n if (this._xregexp && this._xregexp.captureNames) {\n for (var i = 1; i < match.length; i++) {\n name = this._xregexp.captureNames[i - 1];\n if (name)\n match[name] = match[i];\n }\n }\n if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))\n this.lastIndex--;\n }\n return match;\n };\n if (!compliantLastIndexIncrement) {\n RegExp.prototype.test = function (str) {\n var match = real.exec.call(this, str);\n if (match && this.global && !match[0].length && (this.lastIndex > match.index))\n this.lastIndex--;\n return !!match;\n };\n }\n\n function getNativeFlags (regex) {\n return (regex.global ? \"g\" : \"\") +\n (regex.ignoreCase ? \"i\" : \"\") +\n (regex.multiline ? \"m\" : \"\") +\n (regex.extended ? \"x\" : \"\") + // Proposed for ES4; included in AS3\n (regex.sticky ? \"y\" : \"\");\n }\n\n function indexOf (array, item, from) {\n if (Array.prototype.indexOf) // Use the native array method if available\n return array.indexOf(item, from);\n for (var i = from || 0; i < array.length; i++) {\n if (array[i] === item)\n return i;\n }\n return -1;\n }\n\n});\n\nace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\nfunction Empty() {}\n\nif (!Function.prototype.bind) {\n Function.prototype.bind = function bind(that) { // .length is 1\n var target = this;\n if (typeof target != \"function\") {\n throw new TypeError(\"Function.prototype.bind called on incompatible \" + target);\n }\n var args = slice.call(arguments, 1); // for normal call\n var bound = function () {\n\n if (this instanceof bound) {\n\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n\n }\n\n };\n if(target.prototype) {\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n return bound;\n };\n}\nvar call = Function.prototype.call;\nvar prototypeOfArray = Array.prototype;\nvar prototypeOfObject = Object.prototype;\nvar slice = prototypeOfArray.slice;\nvar _toString = call.bind(prototypeOfObject.toString);\nvar owns = call.bind(prototypeOfObject.hasOwnProperty);\nvar defineGetter;\nvar defineSetter;\nvar lookupGetter;\nvar lookupSetter;\nvar supportsAccessors;\nif ((supportsAccessors = owns(prototypeOfObject, \"__defineGetter__\"))) {\n defineGetter = call.bind(prototypeOfObject.__defineGetter__);\n defineSetter = call.bind(prototypeOfObject.__defineSetter__);\n lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);\n lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);\n}\nif ([1,2].splice(0).length != 2) {\n if(function() { // test IE < 9 to splice bug - see issue #138\n function makeArray(l) {\n var a = new Array(l+2);\n a[0] = a[1] = 0;\n return a;\n }\n var array = [], lengthBefore;\n \n array.splice.apply(array, makeArray(20));\n array.splice.apply(array, makeArray(26));\n\n lengthBefore = array.length; //46\n array.splice(5, 0, \"XXX\"); // add one element\n\n lengthBefore + 1 == array.length\n\n if (lengthBefore + 1 == array.length) {\n return true;// has right splice implementation without bugs\n }\n }()) {//IE 6/7\n var array_splice = Array.prototype.splice;\n Array.prototype.splice = function(start, deleteCount) {\n if (!arguments.length) {\n return [];\n } else {\n return array_splice.apply(this, [\n start === void 0 ? 0 : start,\n deleteCount === void 0 ? (this.length - start) : deleteCount\n ].concat(slice.call(arguments, 2)))\n }\n };\n } else {//IE8\n Array.prototype.splice = function(pos, removeCount){\n var length = this.length;\n if (pos > 0) {\n if (pos > length)\n pos = length;\n } else if (pos == void 0) {\n pos = 0;\n } else if (pos < 0) {\n pos = Math.max(length + pos, 0);\n }\n\n if (!(pos+removeCount < length))\n removeCount = length - pos;\n\n var removed = this.slice(pos, pos+removeCount);\n var insert = slice.call(arguments, 2);\n var add = insert.length; \n if (pos === length) {\n if (add) {\n this.push.apply(this, insert);\n }\n } else {\n var remove = Math.min(removeCount, length - pos);\n var tailOldPos = pos + remove;\n var tailNewPos = tailOldPos + add - remove;\n var tailCount = length - tailOldPos;\n var lengthAfterRemove = length - remove;\n\n if (tailNewPos < tailOldPos) { // case A\n for (var i = 0; i < tailCount; ++i) {\n this[tailNewPos+i] = this[tailOldPos+i];\n }\n } else if (tailNewPos > tailOldPos) { // case B\n for (i = tailCount; i--; ) {\n this[tailNewPos+i] = this[tailOldPos+i];\n }\n } // else, add == remove (nothing to do)\n\n if (add && pos === lengthAfterRemove) {\n this.length = lengthAfterRemove; // truncate array\n this.push.apply(this, insert);\n } else {\n this.length = lengthAfterRemove + add; // reserves space\n for (i = 0; i < add; ++i) {\n this[pos+i] = insert[i];\n }\n }\n }\n return removed;\n };\n }\n}\nif (!Array.isArray) {\n Array.isArray = function isArray(obj) {\n return _toString(obj) == \"[object Array]\";\n };\n}\nvar boxedString = Object(\"a\"),\n splitString = boxedString[0] != \"a\" || !(0 in boxedString);\n\nif (!Array.prototype.forEach) {\n Array.prototype.forEach = function forEach(fun /*, thisp*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n thisp = arguments[1],\n i = -1,\n length = self.length >>> 0;\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(); // TODO message\n }\n\n while (++i < length) {\n if (i in self) {\n fun.call(thisp, self[i], i, object);\n }\n }\n };\n}\nif (!Array.prototype.map) {\n Array.prototype.map = function map(fun /*, thisp*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0,\n result = Array(length),\n thisp = arguments[1];\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self)\n result[i] = fun.call(thisp, self[i], i, object);\n }\n return result;\n };\n}\nif (!Array.prototype.filter) {\n Array.prototype.filter = function filter(fun /*, thisp */) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0,\n result = [],\n value,\n thisp = arguments[1];\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self) {\n value = self[i];\n if (fun.call(thisp, value, i, object)) {\n result.push(value);\n }\n }\n }\n return result;\n };\n}\nif (!Array.prototype.every) {\n Array.prototype.every = function every(fun /*, thisp */) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0,\n thisp = arguments[1];\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self && !fun.call(thisp, self[i], i, object)) {\n return false;\n }\n }\n return true;\n };\n}\nif (!Array.prototype.some) {\n Array.prototype.some = function some(fun /*, thisp */) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0,\n thisp = arguments[1];\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self && fun.call(thisp, self[i], i, object)) {\n return true;\n }\n }\n return false;\n };\n}\nif (!Array.prototype.reduce) {\n Array.prototype.reduce = function reduce(fun /*, initial*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0;\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n if (!length && arguments.length == 1) {\n throw new TypeError(\"reduce of empty array with no initial value\");\n }\n\n var i = 0;\n var result;\n if (arguments.length >= 2) {\n result = arguments[1];\n } else {\n do {\n if (i in self) {\n result = self[i++];\n break;\n }\n if (++i >= length) {\n throw new TypeError(\"reduce of empty array with no initial value\");\n }\n } while (true);\n }\n\n for (; i < length; i++) {\n if (i in self) {\n result = fun.call(void 0, result, self[i], i, object);\n }\n }\n\n return result;\n };\n}\nif (!Array.prototype.reduceRight) {\n Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0;\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n if (!length && arguments.length == 1) {\n throw new TypeError(\"reduceRight of empty array with no initial value\");\n }\n\n var result, i = length - 1;\n if (arguments.length >= 2) {\n result = arguments[1];\n } else {\n do {\n if (i in self) {\n result = self[i--];\n break;\n }\n if (--i < 0) {\n throw new TypeError(\"reduceRight of empty array with no initial value\");\n }\n } while (true);\n }\n\n do {\n if (i in this) {\n result = fun.call(void 0, result, self[i], i, object);\n }\n } while (i--);\n\n return result;\n };\n}\nif (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) {\n Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {\n var self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n toObject(this),\n length = self.length >>> 0;\n\n if (!length) {\n return -1;\n }\n\n var i = 0;\n if (arguments.length > 1) {\n i = toInteger(arguments[1]);\n }\n i = i >= 0 ? i : Math.max(0, length + i);\n for (; i < length; i++) {\n if (i in self && self[i] === sought) {\n return i;\n }\n }\n return -1;\n };\n}\nif (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) {\n Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {\n var self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n toObject(this),\n length = self.length >>> 0;\n\n if (!length) {\n return -1;\n }\n var i = length - 1;\n if (arguments.length > 1) {\n i = Math.min(i, toInteger(arguments[1]));\n }\n i = i >= 0 ? i : length - Math.abs(i);\n for (; i >= 0; i--) {\n if (i in self && sought === self[i]) {\n return i;\n }\n }\n return -1;\n };\n}\nif (!Object.getPrototypeOf) {\n Object.getPrototypeOf = function getPrototypeOf(object) {\n return object.__proto__ || (\n object.constructor ?\n object.constructor.prototype :\n prototypeOfObject\n );\n };\n}\nif (!Object.getOwnPropertyDescriptor) {\n var ERR_NON_OBJECT = \"Object.getOwnPropertyDescriptor called on a \" +\n \"non-object: \";\n Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {\n if ((typeof object != \"object\" && typeof object != \"function\") || object === null)\n throw new TypeError(ERR_NON_OBJECT + object);\n if (!owns(object, property))\n return;\n\n var descriptor, getter, setter;\n descriptor = { enumerable: true, configurable: true };\n if (supportsAccessors) {\n var prototype = object.__proto__;\n object.__proto__ = prototypeOfObject;\n\n var getter = lookupGetter(object, property);\n var setter = lookupSetter(object, property);\n object.__proto__ = prototype;\n\n if (getter || setter) {\n if (getter) descriptor.get = getter;\n if (setter) descriptor.set = setter;\n return descriptor;\n }\n }\n descriptor.value = object[property];\n return descriptor;\n };\n}\nif (!Object.getOwnPropertyNames) {\n Object.getOwnPropertyNames = function getOwnPropertyNames(object) {\n return Object.keys(object);\n };\n}\nif (!Object.create) {\n var createEmpty;\n if (Object.prototype.__proto__ === null) {\n createEmpty = function () {\n return { \"__proto__\": null };\n };\n } else {\n createEmpty = function () {\n var empty = {};\n for (var i in empty)\n empty[i] = null;\n empty.constructor =\n empty.hasOwnProperty =\n empty.propertyIsEnumerable =\n empty.isPrototypeOf =\n empty.toLocaleString =\n empty.toString =\n empty.valueOf =\n empty.__proto__ = null;\n return empty;\n }\n }\n\n Object.create = function create(prototype, properties) {\n var object;\n if (prototype === null) {\n object = createEmpty();\n } else {\n if (typeof prototype != \"object\")\n throw new TypeError(\"typeof prototype[\"+(typeof prototype)+\"] != 'object'\");\n var Type = function () {};\n Type.prototype = prototype;\n object = new Type();\n object.__proto__ = prototype;\n }\n if (properties !== void 0)\n Object.defineProperties(object, properties);\n return object;\n };\n}\n\nfunction doesDefinePropertyWork(object) {\n try {\n Object.defineProperty(object, \"sentinel\", {});\n return \"sentinel\" in object;\n } catch (exception) {\n }\n}\nif (Object.defineProperty) {\n var definePropertyWorksOnObject = doesDefinePropertyWork({});\n var definePropertyWorksOnDom = typeof document == \"undefined\" ||\n doesDefinePropertyWork(document.createElement(\"div\"));\n if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {\n var definePropertyFallback = Object.defineProperty;\n }\n}\n\nif (!Object.defineProperty || definePropertyFallback) {\n var ERR_NON_OBJECT_DESCRIPTOR = \"Property description must be an object: \";\n var ERR_NON_OBJECT_TARGET = \"Object.defineProperty called on non-object: \"\n var ERR_ACCESSORS_NOT_SUPPORTED = \"getters & setters can not be defined \" +\n \"on this javascript engine\";\n\n Object.defineProperty = function defineProperty(object, property, descriptor) {\n if ((typeof object != \"object\" && typeof object != \"function\") || object === null)\n throw new TypeError(ERR_NON_OBJECT_TARGET + object);\n if ((typeof descriptor != \"object\" && typeof descriptor != \"function\") || descriptor === null)\n throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);\n if (definePropertyFallback) {\n try {\n return definePropertyFallback.call(Object, object, property, descriptor);\n } catch (exception) {\n }\n }\n if (owns(descriptor, \"value\")) {\n\n if (supportsAccessors && (lookupGetter(object, property) ||\n lookupSetter(object, property)))\n {\n var prototype = object.__proto__;\n object.__proto__ = prototypeOfObject;\n delete object[property];\n object[property] = descriptor.value;\n object.__proto__ = prototype;\n } else {\n object[property] = descriptor.value;\n }\n } else {\n if (!supportsAccessors)\n throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);\n if (owns(descriptor, \"get\"))\n defineGetter(object, property, descriptor.get);\n if (owns(descriptor, \"set\"))\n defineSetter(object, property, descriptor.set);\n }\n\n return object;\n };\n}\nif (!Object.defineProperties) {\n Object.defineProperties = function defineProperties(object, properties) {\n for (var property in properties) {\n if (owns(properties, property))\n Object.defineProperty(object, property, properties[property]);\n }\n return object;\n };\n}\nif (!Object.seal) {\n Object.seal = function seal(object) {\n return object;\n };\n}\nif (!Object.freeze) {\n Object.freeze = function freeze(object) {\n return object;\n };\n}\ntry {\n Object.freeze(function () {});\n} catch (exception) {\n Object.freeze = (function freeze(freezeObject) {\n return function freeze(object) {\n if (typeof object == \"function\") {\n return object;\n } else {\n return freezeObject(object);\n }\n };\n })(Object.freeze);\n}\nif (!Object.preventExtensions) {\n Object.preventExtensions = function preventExtensions(object) {\n return object;\n };\n}\nif (!Object.isSealed) {\n Object.isSealed = function isSealed(object) {\n return false;\n };\n}\nif (!Object.isFrozen) {\n Object.isFrozen = function isFrozen(object) {\n return false;\n };\n}\nif (!Object.isExtensible) {\n Object.isExtensible = function isExtensible(object) {\n if (Object(object) === object) {\n throw new TypeError(); // TODO message\n }\n var name = '';\n while (owns(object, name)) {\n name += '?';\n }\n object[name] = true;\n var returnValue = owns(object, name);\n delete object[name];\n return returnValue;\n };\n}\nif (!Object.keys) {\n var hasDontEnumBug = true,\n dontEnums = [\n \"toString\",\n \"toLocaleString\",\n \"valueOf\",\n \"hasOwnProperty\",\n \"isPrototypeOf\",\n \"propertyIsEnumerable\",\n \"constructor\"\n ],\n dontEnumsLength = dontEnums.length;\n\n for (var key in {\"toString\": null}) {\n hasDontEnumBug = false;\n }\n\n Object.keys = function keys(object) {\n\n if (\n (typeof object != \"object\" && typeof object != \"function\") ||\n object === null\n ) {\n throw new TypeError(\"Object.keys called on a non-object\");\n }\n\n var keys = [];\n for (var name in object) {\n if (owns(object, name)) {\n keys.push(name);\n }\n }\n\n if (hasDontEnumBug) {\n for (var i = 0, ii = dontEnumsLength; i < ii; i++) {\n var dontEnum = dontEnums[i];\n if (owns(object, dontEnum)) {\n keys.push(dontEnum);\n }\n }\n }\n return keys;\n };\n\n}\nif (!Date.now) {\n Date.now = function now() {\n return new Date().getTime();\n };\n}\nvar ws = \"\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\" +\n \"\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\" +\n \"\\u2029\\uFEFF\";\nif (!String.prototype.trim || ws.trim()) {\n ws = \"[\" + ws + \"]\";\n var trimBeginRegexp = new RegExp(\"^\" + ws + ws + \"*\"),\n trimEndRegexp = new RegExp(ws + ws + \"*$\");\n String.prototype.trim = function trim() {\n return String(this).replace(trimBeginRegexp, \"\").replace(trimEndRegexp, \"\");\n };\n}\n\nfunction toInteger(n) {\n n = +n;\n if (n !== n) { // isNaN\n n = 0;\n } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) {\n n = (n > 0 || -1) * Math.floor(Math.abs(n));\n }\n return n;\n}\n\nfunction isPrimitive(input) {\n var type = typeof input;\n return (\n input === null ||\n type === \"undefined\" ||\n type === \"boolean\" ||\n type === \"number\" ||\n type === \"string\"\n );\n}\n\nfunction toPrimitive(input) {\n var val, valueOf, toString;\n if (isPrimitive(input)) {\n return input;\n }\n valueOf = input.valueOf;\n if (typeof valueOf === \"function\") {\n val = valueOf.call(input);\n if (isPrimitive(val)) {\n return val;\n }\n }\n toString = input.toString;\n if (typeof toString === \"function\") {\n val = toString.call(input);\n if (isPrimitive(val)) {\n return val;\n }\n }\n throw new TypeError();\n}\nvar toObject = function (o) {\n if (o == null) { // this matches both null and undefined\n throw new TypeError(\"can't convert \"+o+\" to object\");\n }\n return Object(o);\n};\n\n});\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"], function(acequire, exports, module) {\n\"use strict\";\n\nacequire(\"./regexp\");\nacequire(\"./es5-shim\");\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\n\nexports.getDocumentHead = function(doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\n\nexports.createElement = function(tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\n\nexports.hasCssClass = function(el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function(el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\n\nexports.toggleCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function(node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n } else {\n exports.removeCssClass(node, className);\n }\n};\n\nexports.hasCssString = function(id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n\n if (doc.createStyleSheet && (sheets = doc.styleSheets)) {\n while (index < sheets.length)\n if (sheets[index++].owningElement.id === id) return true;\n } else if ((sheets = doc.getElementsByTagName(\"style\"))) {\n while (index < sheets.length)\n if (sheets[index++].id === id) return true;\n }\n\n return false;\n};\n\nexports.importCssString = function importCssString(cssText, id, doc) {\n doc = doc || document;\n if (id && exports.hasCssString(id, doc))\n return null;\n \n var style;\n \n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n \n if (doc.createStyleSheet) {\n style = doc.createStyleSheet();\n style.cssText = cssText;\n if (id)\n style.owningElement.id = id;\n } else {\n style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n\n exports.getDocumentHead(doc).appendChild(style);\n }\n};\n\nexports.importCssStylsheet = function(uri, doc) {\n if (doc.createStyleSheet) {\n doc.createStyleSheet(uri);\n } else {\n var link = exports.createElement('link');\n link.rel = 'stylesheet';\n link.href = uri;\n\n exports.getDocumentHead(doc).appendChild(link);\n }\n};\n\nexports.getInnerWidth = function(element) {\n return (\n parseInt(exports.computedStyle(element, \"paddingLeft\"), 10) +\n parseInt(exports.computedStyle(element, \"paddingRight\"), 10) + \n element.clientWidth\n );\n};\n\nexports.getInnerHeight = function(element) {\n return (\n parseInt(exports.computedStyle(element, \"paddingTop\"), 10) +\n parseInt(exports.computedStyle(element, \"paddingBottom\"), 10) +\n element.clientHeight\n );\n};\n\nexports.scrollbarWidth = function(document) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n\n outer.appendChild(inner);\n\n var body = document.documentElement;\n body.appendChild(outer);\n\n var noScrollbar = inner.offsetWidth;\n\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n\n if (noScrollbar == withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n\n body.removeChild(outer);\n\n return noScrollbar-withScrollbar;\n};\n\nif (typeof document == \"undefined\") {\n exports.importCssString = function() {};\n return;\n}\n\nif (window.pageYOffset !== undefined) {\n exports.getPageScrollTop = function() {\n return window.pageYOffset;\n };\n\n exports.getPageScrollLeft = function() {\n return window.pageXOffset;\n };\n}\nelse {\n exports.getPageScrollTop = function() {\n return document.body.scrollTop;\n };\n\n exports.getPageScrollLeft = function() {\n return document.body.scrollLeft;\n };\n}\n\nif (window.getComputedStyle)\n exports.computedStyle = function(element, style) {\n if (style)\n return (window.getComputedStyle(element, \"\") || {})[style] || \"\";\n return window.getComputedStyle(element, \"\") || {};\n };\nelse\n exports.computedStyle = function(element, style) {\n if (style)\n return element.currentStyle[style];\n return element.currentStyle;\n };\nexports.setInnerHtml = function(el, innerHtml) {\n var element = el.cloneNode(false);//document.createElement(\"div\");\n element.innerHTML = innerHtml;\n el.parentNode.replaceChild(element, el);\n return element;\n};\n\nif (\"textContent\" in document.documentElement) {\n exports.setInnerText = function(el, innerText) {\n el.textContent = innerText;\n };\n\n exports.getInnerText = function(el) {\n return el.textContent;\n };\n}\nelse {\n exports.setInnerText = function(el, innerText) {\n el.innerText = innerText;\n };\n\n exports.getInnerText = function(el) {\n return el.innerText;\n };\n}\n\nexports.getParentWindow = function(document) {\n return document.defaultView || document.parentWindow;\n};\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nexports.inherits = function(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\n\nexports.mixin = function(obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\n\nexports.implement = function(proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\"], function(acequire, exports, module) {\n\"use strict\";\n\nacequire(\"./fixoldbrowsers\");\n\nvar oop = acequire(\"./oop\");\nvar Keys = (function() {\n var ret = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta'\n },\n\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\" : 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8\n },\n\n FUNCTION_KEYS : {\n 8 : \"Backspace\",\n 9 : \"Tab\",\n 13 : \"Return\",\n 19 : \"Pause\",\n 27 : \"Esc\",\n 32 : \"Space\",\n 33 : \"PageUp\",\n 34 : \"PageDown\",\n 35 : \"End\",\n 36 : \"Home\",\n 37 : \"Left\",\n 38 : \"Up\",\n 39 : \"Right\",\n 40 : \"Down\",\n 44 : \"Print\",\n 45 : \"Insert\",\n 46 : \"Delete\",\n 96 : \"Numpad0\",\n 97 : \"Numpad1\",\n 98 : \"Numpad2\",\n 99 : \"Numpad3\",\n 100: \"Numpad4\",\n 101: \"Numpad5\",\n 102: \"Numpad6\",\n 103: \"Numpad7\",\n 104: \"Numpad8\",\n 105: \"Numpad9\",\n '-13': \"NumpadEnter\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n\n PRINTABLE_KEYS: {\n 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\',221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n };\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret[\"return\"];\n ret.escape = ret.esc;\n ret.del = ret[\"delete\"];\n ret[173] = '-';\n \n (function() {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) { \n ret.KEY_MODS[i] = mods.filter(function(x) {\n return i & ret.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n })();\n\n ret.KEY_MODS[0] = \"\";\n ret.KEY_MODS[-1] = \"input-\";\n\n return ret;\n})();\noop.mixin(exports, Keys);\n\nexports.keyCodeToString = function(keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\nexports.OS = {\n LINUX: \"LINUX\",\n MAC: \"MAC\",\n WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function() {\n if (exports.isMac) {\n return exports.OS.MAC;\n } else if (exports.isLinux) {\n return exports.OS.LINUX;\n } else {\n return exports.OS.WINDOWS;\n }\n};\nif (typeof navigator != \"object\")\n return;\n\nvar os = (navigator.platform.match(/mac|win|linux/i) || [\"other\"])[0].toLowerCase();\nvar ua = navigator.userAgent;\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE = \n (navigator.appName == \"Microsoft Internet Explorer\" || navigator.appName.indexOf(\"MSAppHost\") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]); // for ie\n \nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = (window.Controllers || window.controllers) && window.navigator.product === \"Gecko\";\nexports.isOldGecko = exports.isGecko && parseInt((ua.match(/rv:(\\d+)/)||[])[1], 10) < 4;\nexports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\n\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\n\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\n\nexports.isIPad = ua.indexOf(\"iPad\") >= 0;\n\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\n\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\n\nif (exports.isIOS) exports.isMac = true;\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar keys = acequire(\"./keys\");\nvar useragent = acequire(\"./useragent\");\n\nvar pressedKeys = null;\nvar ts = 0;\n\nexports.addListener = function(elem, type, callback) {\n if (elem.addEventListener) {\n return elem.addEventListener(type, callback, false);\n }\n if (elem.attachEvent) {\n var wrapper = function() {\n callback.call(elem, window.event);\n };\n callback._wrapper = wrapper;\n elem.attachEvent(\"on\" + type, wrapper);\n }\n};\n\nexports.removeListener = function(elem, type, callback) {\n if (elem.removeEventListener) {\n return elem.removeEventListener(type, callback, false);\n }\n if (elem.detachEvent) {\n elem.detachEvent(\"on\" + type, callback._wrapper || callback);\n }\n};\nexports.stopEvent = function(e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\n\nexports.stopPropagation = function(e) {\n if (e.stopPropagation)\n e.stopPropagation();\n else\n e.cancelBubble = true;\n};\n\nexports.preventDefault = function(e) {\n if (e.preventDefault)\n e.preventDefault();\n else\n e.returnValue = false;\n};\nexports.getButton = function(e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n if (e.preventDefault) {\n return e.button;\n }\n else {\n return {1:0, 2:2, 4:1}[e.button];\n }\n};\n\nexports.capture = function(el, eventHandler, releaseCaptureHandler) {\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n\n exports.removeListener(document, \"mousemove\", eventHandler, true);\n exports.removeListener(document, \"mouseup\", onMouseUp, true);\n exports.removeListener(document, \"dragstart\", onMouseUp, true);\n }\n\n exports.addListener(document, \"mousemove\", eventHandler, true);\n exports.addListener(document, \"mouseup\", onMouseUp, true);\n exports.addListener(document, \"dragstart\", onMouseUp, true);\n \n return onMouseUp;\n};\n\nexports.addTouchMoveListener = function (el, callback) {\n var startx, starty;\n exports.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n var touchObj = touches[0];\n startx = touchObj.clientX;\n starty = touchObj.clientY;\n });\n exports.addListener(el, \"touchmove\", function (e) {\n var touches = e.touches;\n if (touches.length > 1) return;\n\n var touchObj = touches[0];\n\n e.wheelX = startx - touchObj.clientX;\n e.wheelY = starty - touchObj.clientY;\n\n startx = touchObj.clientX;\n starty = touchObj.clientY;\n\n callback(e);\n });\n};\n\nexports.addMouseWheelListener = function(el, callback) {\n if (\"onmousewheel\" in el) {\n exports.addListener(el, \"mousewheel\", function(e) {\n var factor = 8;\n if (e.wheelDeltaX !== undefined) {\n e.wheelX = -e.wheelDeltaX / factor;\n e.wheelY = -e.wheelDeltaY / factor;\n } else {\n e.wheelX = 0;\n e.wheelY = -e.wheelDelta / factor;\n }\n callback(e);\n });\n } else if (\"onwheel\" in el) {\n exports.addListener(el, \"wheel\", function(e) {\n var factor = 0.35;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = e.deltaX * factor || 0;\n e.wheelY = e.deltaY * factor || 0;\n break;\n case e.DOM_DELTA_LINE:\n case e.DOM_DELTA_PAGE:\n e.wheelX = (e.deltaX || 0) * 5;\n e.wheelY = (e.deltaY || 0) * 5;\n break;\n }\n \n callback(e);\n });\n } else {\n exports.addListener(el, \"DOMMouseScroll\", function(e) {\n if (e.axis && e.axis == e.HORIZONTAL_AXIS) {\n e.wheelX = (e.detail || 0) * 5;\n e.wheelY = 0;\n } else {\n e.wheelX = 0;\n e.wheelY = (e.detail || 0) * 5;\n }\n callback(e);\n });\n }\n};\n\nexports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName) {\n var clicks = 0;\n var startX, startY, timer; \n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n } else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n } else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600);\n\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n \n e._clicks = clicks;\n\n eventHandler[callbackName](\"mousedown\", e);\n\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n function onDblclick(e) {\n clicks = 2;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600);\n eventHandler[callbackName](\"mousedown\", e);\n eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function(el) {\n exports.addListener(el, \"mousedown\", onMousedown);\n if (useragent.isOldIE)\n exports.addListener(el, \"dblclick\", onDblclick);\n });\n};\n\nvar getModifierHash = useragent.isMac && useragent.isOpera && !(\"KeyboardEvent\" in window)\n ? function(e) {\n return 0 | (e.metaKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.ctrlKey ? 8 : 0);\n }\n : function(e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n };\n\nexports.getModifierString = function(e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\n\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n } else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n \n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n if (hashId & 8 && (keyCode >= 91 && keyCode <= 93)) {\n keyCode = -1;\n }\n \n if (!hashId && keyCode === 13) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n \n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n \n return callback(e, hashId, keyCode);\n}\n\n\nexports.addCommandKeyListener = function(el, callback) {\n var addListener = exports.addListener;\n if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, \"keydown\", function(e) {\n lastKeyDownKeyCode = e.keyCode;\n });\n addListener(el, \"keypress\", function(e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n });\n } else {\n var lastDefaultPrevented = null;\n\n addListener(el, \"keydown\", function(e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n });\n\n addListener(el, \"keypress\", function(e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n });\n\n addListener(el, \"keyup\", function(e) {\n pressedKeys[e.keyCode] = null;\n });\n\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\n\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function(callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + postMessageId;\n exports.addListener(win, \"message\", function listener(e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n exports.removeListener(win, \"message\", listener);\n callback();\n }\n });\n win.postMessage(messageName, \"*\");\n };\n}\n\n\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\n\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function(callback) {\n setTimeout(callback, 17);\n };\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nexports.last = function(a) {\n return a[a.length - 1];\n};\n\nexports.stringReverse = function(string) {\n return string.split(\"\").reverse().join(\"\");\n};\n\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n\n if (count >>= 1)\n string += string;\n }\n return result;\n};\n\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\n\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\n\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\n\nexports.copyObject = function(obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\n\nexports.copyArray = function(array){\n var copy = [];\n for (var i=0, l=array.length; i PLACEHOLDER.length)\n data = data.substr(9);\n else if (data.substr(0, 4) == PLACEHOLDER.substr(0, 4))\n data = data.substr(4, data.length - PLACEHOLDER.length + 1);\n else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0))\n data = data.slice(0, -1);\n if (data == PLACEHOLDER.charAt(0)) {\n } else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0))\n data = data.slice(0, -1);\n\n if (data)\n host.onTextInput(data);\n }\n if (copied) {\n copied = false;\n }\n if (afterContextMenu)\n afterContextMenu = false;\n };\n var onInput = function(e) {\n if (inComposition)\n return;\n var data = text.value;\n sendText(data);\n resetValue();\n };\n\n var handleClipboardData = function(e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n } else {\n return clipboardData.getData(mime);\n }\n } catch(e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n\n var doCopy = function(e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n\n if (handleClipboardData(e, data)) {\n if (useragent.isIOS) {\n cut = isCut;\n text.value = \"\\n aa\" + data + \"a a\\n\";\n text.setSelectionRange(4, 4 + data.length);\n copied = {\n value: data\n };\n }\n isCut ? host.onCut() : host.onCopy();\n if (!useragent.isIOS) event.preventDefault(e);\n } else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function(){\n copied = false;\n resetValue();\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n\n var onCut = function(e) {\n doCopy(e, true);\n };\n\n var onCopy = function(e) {\n doCopy(e, false);\n };\n\n var onPaste = function(e) {\n var data = handleClipboardData(e);\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n\n event.addCommandKeyListener(text, host.onCommandKey.bind(host));\n\n event.addListener(text, \"select\", onSelect);\n\n event.addListener(text, \"input\", onInput);\n\n event.addListener(text, \"cut\", onCut);\n event.addListener(text, \"copy\", onCopy);\n event.addListener(text, \"paste\", onPaste);\n var onCompositionStart = function(e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly)\n return;\n inComposition = {};\n inComposition.canUndo = host.session.$undoManager;\n host.onCompositionStart();\n setTimeout(onCompositionUpdate, 0);\n host.on(\"mousedown\", onCompositionEnd);\n if (inComposition.canUndo && !host.selection.isEmpty()) {\n host.insert(\"\");\n host.session.markUndoGroup();\n host.selection.clearSelection();\n }\n host.session.markUndoGroup();\n };\n\n var onCompositionUpdate = function() {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n var val = text.value.replace(/\\x01/g, \"\");\n if (inComposition.lastValue === val) return;\n\n host.onCompositionUpdate(val);\n if (inComposition.lastValue)\n host.undo();\n if (inComposition.canUndo)\n inComposition.lastValue = val;\n if (inComposition.lastValue) {\n var r = host.selection.getRange();\n host.insert(inComposition.lastValue);\n host.session.markUndoGroup();\n inComposition.range = host.selection.getRange();\n host.selection.setRange(r);\n host.selection.clearSelection();\n }\n };\n\n var onCompositionEnd = function(e) {\n if (!host.onCompositionEnd || host.$readOnly) return;\n var c = inComposition;\n inComposition = false;\n var timer = setTimeout(function() {\n timer = null;\n var str = text.value.replace(/\\x01/g, \"\");\n if (inComposition)\n return;\n else if (str == c.lastValue)\n resetValue();\n else if (!c.lastValue && str) {\n resetValue();\n sendText(str);\n }\n });\n inputHandler = function compositionInputHandler(str) {\n if (timer)\n clearTimeout(timer);\n str = str.replace(/\\x01/g, \"\");\n if (str == c.lastValue)\n return \"\";\n if (c.lastValue && timer)\n host.undo();\n return str;\n };\n host.onCompositionEnd();\n host.removeListener(\"mousedown\", onCompositionEnd);\n if (e.type == \"compositionend\" && c.range) {\n host.selection.setRange(c.range);\n }\n var needsOnInput =\n (!!useragent.isChrome && useragent.isChrome >= 53) ||\n (!!useragent.isWebKit && useragent.isWebKit >= 603);\n\n if (needsOnInput) {\n onInput();\n }\n };\n\n\n\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50);\n\n event.addListener(text, \"compositionstart\", onCompositionStart);\n if (useragent.isGecko) {\n event.addListener(text, \"text\", function(){syncComposition.schedule();});\n } else {\n event.addListener(text, \"keyup\", function(){syncComposition.schedule();});\n event.addListener(text, \"keydown\", function(){syncComposition.schedule();});\n }\n event.addListener(text, \"compositionend\", onCompositionEnd);\n\n this.getElement = function() {\n return text;\n };\n\n this.setReadOnly = function(readOnly) {\n text.readOnly = readOnly;\n };\n\n this.onContextMenu = function(e) {\n afterContextMenu = true;\n resetSelection(host.selection.isEmpty());\n host._emit(\"nativecontextmenu\", {target: host, domEvent: e});\n this.moveToMouse(e, true);\n };\n\n this.moveToMouse = function(e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + \"height:\" + text.style.height + \";\"\n + (useragent.isIE ? \"opacity:0.1;\" : \"\");\n\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight -2;\n var move = function(e) {\n text.style.left = e.clientX - left - 2 + \"px\";\n text.style.top = Math.min(e.clientY - top - 2, maxTop) + \"px\";\n };\n move(e);\n\n if (e.type != \"mousedown\")\n return;\n\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$keepTextAreaAtCursor = null;\n\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n if (host.renderer.$keepTextAreaAtCursor == null) {\n host.renderer.$keepTextAreaAtCursor = true;\n host.renderer.$moveTextAreaToCursor();\n }\n }, 0);\n }\n\n var onContextMenu = function(e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu);\n event.addListener(text, \"mousedown\", function(e) {\n e.preventDefault();\n onContextMenuClose();\n });\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu);\n event.addListener(text, \"contextmenu\", onContextMenu);\n\n if (useragent.isIOS) {\n var typingResetTimeout = null;\n var typing = false;\n\n parentNode.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout) clearTimeout(typingResetTimeout);\n typing = true;\n });\n\n parentNode.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n });\n var detectArrowKeys = function(e) {\n if (document.activeElement !== text) return;\n if (typing) return;\n\n if (cut) {\n return setTimeout(function () {\n cut = false;\n }, 100);\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n text.setSelectionRange(4, 5);\n if (selectionStart == selectionEnd) {\n switch (selectionStart) {\n case 0: host.onCommandKey(null, 0, KEYS.up); break;\n case 1: host.onCommandKey(null, 0, KEYS.home); break;\n case 2: host.onCommandKey(null, MODS.option, KEYS.left); break;\n case 4: host.onCommandKey(null, 0, KEYS.left); break;\n case 5: host.onCommandKey(null, 0, KEYS.right); break;\n case 7: host.onCommandKey(null, MODS.option, KEYS.right); break;\n case 8: host.onCommandKey(null, 0, KEYS.end); break;\n case 9: host.onCommandKey(null, 0, KEYS.down); break;\n }\n } else {\n switch (selectionEnd) {\n case 6: host.onCommandKey(null, MODS.shift, KEYS.right); break;\n case 7: host.onCommandKey(null, MODS.shift | MODS.option, KEYS.right); break;\n case 8: host.onCommandKey(null, MODS.shift, KEYS.end); break;\n case 9: host.onCommandKey(null, MODS.shift, KEYS.down); break;\n }\n switch (selectionStart) {\n case 0: host.onCommandKey(null, MODS.shift, KEYS.up); break;\n case 1: host.onCommandKey(null, MODS.shift, KEYS.home); break;\n case 2: host.onCommandKey(null, MODS.shift | MODS.option, KEYS.left); break;\n case 3: host.onCommandKey(null, MODS.shift, KEYS.left); break;\n }\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function() {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n};\n\nexports.TextInput = TextInput;\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/keyboard/textinput_ios\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar event = acequire(\"../lib/event\");\nvar useragent = acequire(\"../lib/useragent\");\nvar dom = acequire(\"../lib/dom\");\nvar lang = acequire(\"../lib/lang\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\n\nvar TextInputIOS = acequire(\"./textinput_ios\").TextInput;\nvar TextInput = function(parentNode, host) {\n if (useragent.isIOS)\n return TextInputIOS.call(this, parentNode, host);\n\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", false);\n\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n\n var PLACEHOLDER = \"\\u2028\\u2028\";\n\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var tempStyle = '';\n var isSelectionEmpty = true;\n try { var isFocused = document.activeElement === text; } catch(e) {}\n \n event.addListener(text, \"blur\", function(e) {\n host.onBlur(e);\n isFocused = false;\n });\n event.addListener(text, \"focus\", function(e) {\n isFocused = true;\n host.onFocus(e);\n resetSelection();\n });\n this.focus = function() {\n if (tempStyle) return text.focus();\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n text.focus();\n setTimeout(function() {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function() {\n text.blur();\n };\n this.isFocused = function() {\n return isFocused;\n };\n var syncSelection = lang.delayedCall(function() {\n isFocused && resetSelection(isSelectionEmpty);\n });\n var syncValue = lang.delayedCall(function() {\n if (!inComposition) {\n text.value = PLACEHOLDER;\n isFocused && resetSelection();\n }\n });\n\n function resetSelection(isEmpty) {\n if (inComposition)\n return;\n inComposition = true;\n \n if (inputHandler) {\n var selectionStart = 0;\n var selectionEnd = isEmpty ? 0 : text.value.length - 1;\n } else {\n var selectionStart = isEmpty ? 2 : 1;\n var selectionEnd = 2;\n }\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n } catch(e){}\n \n inComposition = false;\n }\n\n function resetValue() {\n if (inComposition)\n return;\n text.value = PLACEHOLDER;\n if (useragent.isWebKit)\n syncValue.schedule();\n }\n\n useragent.isWebKit || host.addEventListener('changeSelection', function() {\n if (host.selection.isEmpty() != isSelectionEmpty) {\n isSelectionEmpty = !isSelectionEmpty;\n syncSelection.schedule();\n }\n });\n\n resetValue();\n if (isFocused)\n host.onFocus();\n\n\n var isAllSelected = function(text) {\n return text.selectionStart === 0 && text.selectionEnd === text.value.length;\n };\n\n var onSelect = function(e) {\n if (copied) {\n copied = false;\n } else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n } else if (inputHandler) {\n resetSelection(host.selection.isEmpty());\n }\n };\n\n var inputHandler = null;\n this.setInputHandler = function(cb) {inputHandler = cb;};\n this.getInputHandler = function() {return inputHandler;};\n var afterContextMenu = false;\n \n var sendText = function(data) {\n if (inputHandler) {\n data = inputHandler(data);\n inputHandler = null;\n }\n if (pasted) {\n resetSelection();\n if (data)\n host.onPaste(data);\n pasted = false;\n } else if (data == PLACEHOLDER.charAt(0)) {\n if (afterContextMenu)\n host.execCommand(\"del\", {source: \"ace\"});\n else // some versions of android do not fire keydown when pressing backspace\n host.execCommand(\"backspace\", {source: \"ace\"});\n } else {\n if (data.substring(0, 2) == PLACEHOLDER)\n data = data.substr(2);\n else if (data.charAt(0) == PLACEHOLDER.charAt(0))\n data = data.substr(1);\n else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0))\n data = data.slice(0, -1);\n if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0))\n data = data.slice(0, -1);\n \n if (data)\n host.onTextInput(data);\n }\n if (afterContextMenu)\n afterContextMenu = false;\n };\n var onInput = function(e) {\n if (inComposition)\n return;\n var data = text.value;\n sendText(data);\n resetValue();\n };\n \n var handleClipboardData = function(e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n } else {\n return clipboardData.getData(mime);\n }\n } catch(e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n\n var doCopy = function(e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n\n if (handleClipboardData(e, data)) {\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n } else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function(){\n copied = false;\n resetValue();\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n \n var onCut = function(e) {\n doCopy(e, true);\n };\n \n var onCopy = function(e) {\n doCopy(e, false);\n };\n \n var onPaste = function(e) {\n var data = handleClipboardData(e);\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n\n event.addCommandKeyListener(text, host.onCommandKey.bind(host));\n\n event.addListener(text, \"select\", onSelect);\n\n event.addListener(text, \"input\", onInput);\n\n event.addListener(text, \"cut\", onCut);\n event.addListener(text, \"copy\", onCopy);\n event.addListener(text, \"paste\", onPaste);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function(e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n });\n }\n var onCompositionStart = function(e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly) \n return;\n inComposition = {};\n inComposition.canUndo = host.session.$undoManager;\n host.onCompositionStart();\n setTimeout(onCompositionUpdate, 0);\n host.on(\"mousedown\", onCompositionEnd);\n if (inComposition.canUndo && !host.selection.isEmpty()) {\n host.insert(\"\");\n host.session.markUndoGroup();\n host.selection.clearSelection();\n }\n host.session.markUndoGroup();\n };\n\n var onCompositionUpdate = function() {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n var val = text.value.replace(/\\u2028/g, \"\");\n if (inComposition.lastValue === val) return;\n \n host.onCompositionUpdate(val);\n if (inComposition.lastValue)\n host.undo();\n if (inComposition.canUndo)\n inComposition.lastValue = val;\n if (inComposition.lastValue) {\n var r = host.selection.getRange();\n host.insert(inComposition.lastValue);\n host.session.markUndoGroup();\n inComposition.range = host.selection.getRange();\n host.selection.setRange(r);\n host.selection.clearSelection();\n }\n };\n\n var onCompositionEnd = function(e) {\n if (!host.onCompositionEnd || host.$readOnly) return;\n var c = inComposition;\n inComposition = false;\n var timer = setTimeout(function() {\n timer = null;\n var str = text.value.replace(/\\u2028/g, \"\");\n if (inComposition)\n return;\n else if (str == c.lastValue)\n resetValue();\n else if (!c.lastValue && str) {\n resetValue();\n sendText(str);\n }\n });\n inputHandler = function compositionInputHandler(str) {\n if (timer)\n clearTimeout(timer);\n str = str.replace(/\\u2028/g, \"\");\n if (str == c.lastValue)\n return \"\";\n if (c.lastValue && timer)\n host.undo();\n return str;\n };\n host.onCompositionEnd();\n host.removeListener(\"mousedown\", onCompositionEnd);\n if (e.type == \"compositionend\" && c.range) {\n host.selection.setRange(c.range);\n }\n var needsOnInput =\n (!!useragent.isChrome && useragent.isChrome >= 53) ||\n (!!useragent.isWebKit && useragent.isWebKit >= 603);\n\n if (needsOnInput) {\n onInput();\n }\n };\n \n \n\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50);\n\n event.addListener(text, \"compositionstart\", onCompositionStart);\n if (useragent.isGecko) {\n event.addListener(text, \"text\", function(){syncComposition.schedule();});\n } else {\n event.addListener(text, \"keyup\", function(){syncComposition.schedule();});\n event.addListener(text, \"keydown\", function(){syncComposition.schedule();});\n }\n event.addListener(text, \"compositionend\", onCompositionEnd);\n\n this.getElement = function() {\n return text;\n };\n\n this.setReadOnly = function(readOnly) {\n text.readOnly = readOnly;\n };\n\n this.onContextMenu = function(e) {\n afterContextMenu = true;\n resetSelection(host.selection.isEmpty());\n host._emit(\"nativecontextmenu\", {target: host, domEvent: e});\n this.moveToMouse(e, true);\n };\n \n this.moveToMouse = function(e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + \"height:\" + text.style.height + \";\"\n + (useragent.isIE ? \"opacity:0.1;\" : \"\");\n\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight -2;\n var move = function(e) {\n text.style.left = e.clientX - left - 2 + \"px\";\n text.style.top = Math.min(e.clientY - top - 2, maxTop) + \"px\";\n }; \n move(e);\n\n if (e.type != \"mousedown\")\n return;\n\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$keepTextAreaAtCursor = null;\n\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n if (host.renderer.$keepTextAreaAtCursor == null) {\n host.renderer.$keepTextAreaAtCursor = true;\n host.renderer.$moveTextAreaToCursor();\n }\n }, 0);\n }\n\n var onContextMenu = function(e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu);\n event.addListener(text, \"mousedown\", function(e) {\n e.preventDefault();\n onContextMenuClose();\n });\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu);\n event.addListener(text, \"contextmenu\", onContextMenu);\n};\n\nexports.TextInput = TextInput;\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar dom = acequire(\"../lib/dom\");\nvar event = acequire(\"../lib/event\");\nvar useragent = acequire(\"../lib/useragent\");\n\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 250; // milliseconds\n\nfunction DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n editor.setDefaultHandler(\"touchmove\", this.onTouchMove.bind(mouseHandler));\n\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n\n exports.forEach(function(x) {\n mouseHandler[x] = this[x];\n }, this);\n\n mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n}\n\n(function() {\n\n this.onMouseDown = function(ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n editor.$blockScrolling++;\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n editor.$blockScrolling--;\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n\n this.startSelect = function(pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n editor.$blockScrolling++;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n if (editor.renderer.scroller.setCapture) {\n editor.renderer.scroller.setCapture();\n }\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n editor.$blockScrolling--;\n };\n\n this.select = function() {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n editor.$blockScrolling++;\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n } else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.$blockScrolling--;\n editor.renderer.scrollCursorIntoView();\n };\n\n this.extendSelectionBy = function(unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n editor.$blockScrolling++;\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n } else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n } else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.$blockScrolling--;\n editor.renderer.scrollCursorIntoView();\n };\n\n this.selectEnd =\n this.selectAllEnd =\n this.selectByWordsEnd =\n this.selectByLinesEnd = function() {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n if (this.editor.renderer.scroller.releaseCapture) {\n this.editor.renderer.scroller.releaseCapture();\n }\n };\n\n this.focusWait = function() {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n\n this.onDoubleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n } else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n\n this.onTripleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n } else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n\n this.onQuadClick = function(ev) {\n var editor = this.editor;\n\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n\n this.onMouseWheel = function(ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n \n var editor = this.editor;\n\n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n\n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = ev.wheelX / dt;\n var vy = ev.wheelY / dt;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n\n var direction = Math.abs(vx / vy);\n\n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n\n if (canScroll) {\n prevScroll.allowed = t;\n } else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.1 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.1 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n\n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n\n this.onTouchMove = function(ev) {\n this.editor._emit(\"mousewheel\", ev);\n };\n\n}).call(DefaultHandlers.prototype);\n\nexports.DefaultHandlers = DefaultHandlers;\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n\n if (cmp < 0)\n return {cursor: range.start, anchor: range.end};\n else\n return {cursor: range.end, anchor: range.start};\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar dom = acequire(\"./lib/dom\");\nfunction Tooltip (parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n}\n\n(function() {\n this.$init = function() {\n this.$element = dom.createElement(\"div\");\n this.$element.className = \"ace_tooltip\";\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n this.getElement = function() {\n return this.$element || this.$init();\n };\n this.setText = function(text) {\n dom.setInnerText(this.getElement(), text);\n };\n this.setHtml = function(html) {\n this.getElement().innerHTML = html;\n };\n this.setPosition = function(x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n this.setClassName = function(className) {\n dom.addCssClass(this.getElement(), className);\n };\n this.show = function(text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n\n this.hide = function() {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n }\n };\n this.getHeight = function() {\n return this.getElement().offsetHeight;\n };\n this.getWidth = function() {\n return this.getElement().offsetWidth;\n };\n\n this.destroy = function() {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n\n}).call(Tooltip.prototype);\n\nexports.Tooltip = Tooltip;\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event\",\"ace/tooltip\"], function(acequire, exports, module) {\n\"use strict\";\nvar dom = acequire(\"../lib/dom\");\nvar oop = acequire(\"../lib/oop\");\nvar event = acequire(\"../lib/event\");\nvar Tooltip = acequire(\"../tooltip\").Tooltip;\n\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor.container);\n\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function(e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n\n if (gutterRegion == \"foldWidgets\")\n return;\n\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n\n\n var tooltipTimeout, mouseEvent, tooltipAnnotation;\n\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var annotation = gutter.$annotations[row];\n if (!annotation)\n return hideTooltip();\n\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n\n if (tooltipAnnotation == annotation)\n return;\n tooltipAnnotation = annotation.text.join(\"
\");\n\n tooltip.setHtml(tooltipAnnotation);\n tooltip.show();\n editor._signal(\"showGutterTooltip\", tooltip);\n editor.on(\"mousewheel\", hideTooltip);\n\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n } else {\n var gutterElement = mouseEvent.domEvent.target;\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n }\n\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltipAnnotation) {\n tooltip.hide();\n tooltipAnnotation = null;\n editor._signal(\"hideGutterTooltip\", tooltip);\n editor.removeEventListener(\"mousewheel\", hideTooltip);\n }\n }\n\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function(e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n\n if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n\n event.addListener(editor.renderer.$gutter, \"mouseout\", function(e) {\n mouseEvent = null;\n if (!tooltipAnnotation || tooltipTimeout)\n return;\n\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n });\n \n editor.on(\"changeSession\", hideTooltip);\n}\n\nfunction GutterTooltip(parentNode) {\n Tooltip.call(this, parentNode);\n}\n\noop.inherits(GutterTooltip, Tooltip);\n\n(function(){\n this.setPosition = function(x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n\n}).call(GutterTooltip.prototype);\n\n\n\nexports.GutterHandler = GutterHandler;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar event = acequire(\"../lib/event\");\nvar useragent = acequire(\"../lib/useragent\");\nvar MouseEvent = exports.MouseEvent = function(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n \n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n\n this.$pos = null;\n this.$inSelection = null;\n \n this.propagationStopped = false;\n this.defaultPrevented = false;\n};\n\n(function() { \n \n this.stopPropagation = function() {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n \n this.preventDefault = function() {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n \n this.stop = function() {\n this.stopPropagation();\n this.preventDefault();\n };\n this.getDocumentPosition = function() {\n if (this.$pos)\n return this.$pos;\n \n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n this.inSelection = function() {\n if (this.$inSelection !== null)\n return this.$inSelection;\n \n var editor = this.editor;\n \n\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n\n return this.$inSelection;\n };\n this.getButton = function() {\n return event.getButton(this.domEvent);\n };\n this.getShiftKey = function() {\n return this.domEvent.shiftKey;\n };\n \n this.getAccelKey = useragent.isMac\n ? function() { return this.domEvent.metaKey; }\n : function() { return this.domEvent.ctrlKey; };\n \n}).call(MouseEvent.prototype);\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar dom = acequire(\"../lib/dom\");\nvar event = acequire(\"../lib/event\");\nvar useragent = acequire(\"../lib/useragent\");\n\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\n\nfunction DragdropHandler(mouseHandler) {\n\n var editor = mouseHandler.editor;\n\n var blankImage = dom.createElement(\"img\");\n blankImage.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (useragent.isOpera)\n blankImage.style.cssText = \"width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;\";\n\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n\n exports.forEach(function(x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.addEventListener(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n\n\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n\n this.onDragStart = function(e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function(){\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n if (useragent.isOpera) {\n editor.container.appendChild(blankImage);\n blankImage.scrollTop = 0;\n }\n dataTransfer.setDragImage && dataTransfer.setDragImage(blankImage, 0, 0);\n if (useragent.isOpera) {\n editor.container.removeChild(blankImage);\n }\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n\n isInternal = true;\n this.setState(\"drag\");\n };\n\n this.onDragEnd = function(e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.renderer.$cursorLayer.setBlinking(true);\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n\n this.onDragEnter = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragOver = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragLeave = function(e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n\n this.onDrop = function(e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n } else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n } else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler));\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler));\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler));\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler));\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler));\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler));\n\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.$blockScrolling += 1;\n editor.moveCursorToPosition(cursor);\n editor.$blockScrolling -= 1;\n cursorMovedTime = now;\n cursorPointOnCaretMoved = {x: x, y: y};\n } else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n } else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = {row: cursor.row, column: cursor.column};\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n } else {\n autoScrollStartTime = null;\n }\n }\n\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.$blockScrolling += 1;\n editor.selection.fromOrientedRange(range);\n editor.$blockScrolling -= 1;\n if (editor.isFocused() && !isInternal)\n editor.renderer.$cursorLayer.setBlinking(!editor.getReadOnly());\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function() {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function(type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n } catch (e) {}\n var dropEffect = \"none\";\n\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n\n return dropEffect;\n }\n}\n\n(function() {\n\n this.dragWait = function() {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n\n this.dragWaitEnd = function() {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n\n this.dragReadyEnd = function(e) {\n this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly());\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n\n this.startDrag = function(){\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n\n this.onMouseDrag = function(e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n\n this.onMouseDown = function(e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n } else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n\n}).call(DragdropHandler.prototype);\n\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(acequire, exports, module) {\n\"use strict\";\nvar dom = acequire(\"./dom\");\n\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\n\nexports.loadScript = function(path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n\n s.src = path;\n head.appendChild(s);\n\n s.onload = s.onreadystatechange = function(_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function(url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar EventEmitter = {};\nvar stopPropagation = function() { this.propagationStopped = true; };\nvar preventDefault = function() { this.defaultPrevented = true; };\n\nEventEmitter._emit =\nEventEmitter._dispatchEvent = function(eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n\n if (typeof e != \"object\" || !e)\n e = {};\n\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n\n listeners = listeners.slice();\n for (var i=0; i 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n } else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\n\nexports.setModuleUrl = function(name, subst) {\n return options.$moduleUrls[name] = subst;\n};\n\nexports.$loading = {};\nexports.loadModule = function(moduleName, onLoad) {\n var module, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n\n try {\n module = acequire(moduleName);\n } catch (e) {}\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n\n exports.$loading[moduleName].push(onLoad);\n\n if (exports.$loading[moduleName].length > 1)\n return;\n\n var afterLoad = function() {\n acequire([moduleName], function(module) {\n exports._emit(\"load.module\", {name: moduleName, module: module});\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function(onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n\n if (!exports.get(\"packaged\"))\n return afterLoad();\n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n options.packaged = packaged || acequire.packaged || module.packaged || (global.define && define.packaged);\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i 0){\n\t\t\tif (action == 0x10){\n\t\t\t\tfor(i = condPos; i < ix; i++){\n\t\t\t\t\tlevels[i] = 1;\n\t\t\t\t}\n\t\t\t\tcondPos = -1;\n\t\t\t} else {\n\t\t\t\tcondPos = -1;\n\t\t\t}\n\t\t}\n\t\tcond = impTab[newState][6];\n\t\tif (cond){\n\t\t\tif(condPos == -1){\n\t\t\t\tcondPos = ix;\n\t\t\t}\n\t\t}else{\n\t\t\tif (condPos > -1){\n\t\t\t\tfor(i = condPos; i < ix; i++){\n\t\t\t\t\tlevels[i] = newLevel;\n\t\t\t\t}\n\t\t\t\tcondPos = -1;\n\t\t\t}\n\t\t}\n\t\tif (charTypes[ix] == B){\n\t\t\tlevels[ix] = 0;\n\t\t}\n\t\thiLevel |= newLevel;\n\t}\n\tif (hasUBAT_S){\n\t\tfor(i = 0; i < len; i++){\n\t\t\tif(charTypes[i] == S){\n\t\t\t\tlevels[i] = dir;\n\t\t\t\tfor(var j = i - 1; j >= 0; j--){\n\t\t\t\t\tif(charTypes[j] == WS){\n\t\t\t\t\t\tlevels[j] = dir;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction _invertLevel(lev, levels, _array) {\n\tif (hiLevel < lev){\n\t\treturn;\n\t}\n\tif (lev == 1 && dir == RTL && !hasUBAT_B){\n\t\t_array.reverse();\n\t\treturn;\n\t}\n\tvar len = _array.length, start = 0, end, lo, hi, tmp;\n\twhile(start < len){\n\t\tif (levels[start] >= lev){\n\t\t\tend = start + 1;\n\t\twhile(end < len && levels[end] >= lev){\n\t\t\tend++;\n\t\t}\n\t\tfor(lo = start, hi = end - 1 ; lo < hi; lo++, hi--){\n\t\t\ttmp = _array[lo];\n\t\t\t_array[lo] = _array[hi];\n\t\t\t_array[hi] = tmp;\n\t\t}\n\t\tstart = end;\n\t}\n\tstart++;\n\t}\n}\n\nfunction _getCharClass(chars, types, classes, ix) {\n\tvar cType = types[ix], wType, nType, len, i;\n\tswitch(cType){\n\t\tcase L:\n\t\tcase R:\n\t\t\tlastArabic = false;\n\t\tcase ON:\n\t\tcase AN:\n\t\t\treturn cType;\n\t\tcase EN:\n\t\t\treturn lastArabic ? AN : EN;\n\t\tcase AL:\n\t\t\tlastArabic = true;\n\t\t\thasUBAT_AL = true;\n\t\t\treturn R;\n\t\tcase WS:\n\t\t\treturn ON;\n\t\tcase CS:\n\t\t\tif (ix < 1 || (ix + 1) >= types.length ||\n\t\t\t\t((wType = classes[ix - 1]) != EN && wType != AN) ||\n\t\t\t\t((nType = types[ix + 1]) != EN && nType != AN)){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\tif (lastArabic){nType = AN;}\n\t\t\treturn nType == wType ? nType : ON;\n\t\tcase ES:\n\t\t\twType = ix > 0 ? classes[ix - 1] : B;\n\t\t\tif (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\treturn ON;\n\t\tcase ET:\n\t\t\tif (ix > 0 && classes[ix - 1] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\tif (lastArabic){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\ti = ix + 1;\n\t\t\tlen = types.length;\n\t\t\twhile (i < len && types[i] == ET){\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < len && types[i] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\treturn ON;\n\t\tcase NSM:\n\t\t\tlen = types.length;\n\t\t\ti = ix + 1;\n\t\t\twhile (i < len && types[i] == NSM){\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < len){\n\t\t\t\tvar c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n\n\t\t\t\twType = types[i];\n\t\t\t\tif (rtlCandidate && (wType == R || wType == AL)){\n\t\t\t\t\treturn R;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ix < 1 || (wType = types[ix - 1]) == B){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\treturn classes[ix - 1];\n\t\tcase B:\n\t\t\tlastArabic = false;\n\t\t\thasUBAT_B = true;\n\t\t\treturn dir;\n\t\tcase S:\n\t\t\thasUBAT_S = true;\n\t\t\treturn ON;\n\t\tcase LRE:\n\t\tcase RLE:\n\t\tcase LRO:\n\t\tcase RLO:\n\t\tcase PDF:\n\t\t\tlastArabic = false;\n\t\tcase BN:\n\t\t\treturn ON;\n\t}\n}\n\nfunction _getCharacterType( ch ) {\n\tvar uc = ch.charCodeAt(0), hi = uc >> 8;\n\n\tif (hi == 0) {\n\t\treturn ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n\t} else if (hi == 5) {\n\t\treturn (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n\t} else if (hi == 6) {\n\t\tif (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n\t\t\treturn NSM;\n\t\telse if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n\t\t\treturn AN;\n\t\telse if (uc == 0x066A)\n\t\t\treturn ET;\n\t\telse if (/[\\u06f0-\\u06f9]/.test(ch))\n\t\t\treturn EN;\n\t\telse\n\t\t\treturn AL;\n\t} else if (hi == 0x20 && uc <= 0x205F) {\n\t\treturn UnicodeTBL20[uc & 0xFF];\n\t} else if (hi == 0xFE) {\n\t\treturn (uc >= 0xFE70 ? AL : ON);\n\t}\n\treturn ON;\n}\n\nfunction _isArabicDiacritics( ch ) {\n\treturn (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\n\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function(text, textCharTypes, isRtl) {\n\tif (text.length < 2)\n\t\treturn {};\n\n\tvar chars = text.split(\"\"), logicalFromVisual = new Array(chars.length),\n\t\tbidiLevels = new Array(chars.length), levels = [];\n\n\tdir = isRtl ? RTL : LTR;\n\n\t_computeLevels(chars, levels, chars.length, textCharTypes);\n\n\tfor (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++);\n\n\t_invertLevel(2, levels, logicalFromVisual);\n\t_invertLevel(1, levels, logicalFromVisual);\n\n\tfor (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n\t\tif (textCharTypes[i] === AN) {\n\t\t\tlevels[i] = exports.AN;\n\t\t} else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)\n\t\t\t|| textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n\t\t\tlevels[i] = exports.ON_R;\n\t\t} else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n\t\t\tlevels[i - 1] = levels[i] = exports.R_H;\n\t\t\ti++;\n\t\t}\n\t}\n\tif (chars[chars.length - 1] === exports.DOT)\n\t\tlevels[chars.length - 1] = exports.B;\n\n\tfor (var i = 0; i < logicalFromVisual.length; i++) {\n\t\tbidiLevels[i] = levels[logicalFromVisual[i]];\n\t}\n\n\treturn {'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels};\n};\nexports.hasBidiCharacters = function(text, textCharTypes){\n\tvar ret = false;\n\tfor (var i = 0; i < text.length; i++){\n\t\ttextCharTypes[i] = _getCharacterType(text.charAt(i));\n\t\tif (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL))\n\t\t\tret = true;\n\t}\n\treturn ret;\n};\nexports.getVisualFromLogicalIdx = function(logIdx, rowMap) {\n\tfor (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n\t\tif (rowMap.logicalFromVisual[i] == logIdx)\n\t\t\treturn i;\n\t}\n\treturn 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar bidiUtil = acequire(\"./lib/bidiutil\");\nvar lang = acequire(\"./lib/lang\");\nvar useragent = acequire(\"./lib/useragent\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\nvar BidiHandler = function(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.isLastRow = false;\n this.EOF = \"\\xB6\";\n this.seenBidi = false;\n};\n\n(function() {\n this.isBidiRow = function(screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n\n this.onChange = function(delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n }\n else {\n this.currentRow = null;\n }\n };\n\n this.getDocumentRow = function() {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n\n return docRow;\n };\n\n this.getSplitIndex = function() {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n\n prevIndex = currentIndex;\n splitIndex++;\n }\n }\n\n return splitIndex;\n };\n\n this.updateRowLine = function(docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n\n this.wrapIndent = 0;\n this.isLastRow = (docRow === this.session.getLength() - 1);\n this.line = this.session.getLine(docRow);\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n\n if(splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splits.length - 1]) :\n this.line.substring(splits[splits.length - 1]);\n } else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n }\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function(ch, i){\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n };\n\n this.updateBidiMap = function() {\n var textCharTypes = [], endOfLine = this.isLastRow ? this.EOF : this.EOL;\n var line = this.line + (this.showInvisibles ? endOfLine : bidiUtil.DOT);\n if (bidiUtil.hasBidiCharacters(line, textCharTypes)) {\n this.bidiMap = bidiUtil.doBidiReorder(line, textCharTypes, this.isRtlDir);\n } else {\n this.bidiMap = {};\n }\n };\n this.markAsDirty = function() {\n this.currentRow = null;\n };\n this.updateCharacterWidths = function(fontMetrics) {\n if (!this.seenBidi)\n return;\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = useragent.isChrome ? bidiCharWidth : bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = 0;\n\n this.currentRow = null;\n };\n\n this.getShowInvisibles = function() {\n return this.showInvisibles;\n };\n\n this.setShowInvisibles = function(showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n\n this.setEolChar = function(eolChar) {\n this.EOL = eolChar;\n };\n\n this.setTextDir = function(isRtlDir) {\n this.isRtlDir = isRtlDir;\n };\n this.getPosLeft = function(col) {\n col -= this.wrapIndent;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(col > 0 ? col - 1 : 0, this.bidiMap),\n levels = this.bidiMap.bidiLevels, left = 0;\n\n if (col === 0 && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n\n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n\n if (col !== 0 && levels[visualIdx] % 2 === 0)\n left += this.charWidths[levels[visualIdx]];\n\n if (this.wrapIndent)\n left += this.wrapIndent * this.charWidths[bidiUtil.L];\n\n return left;\n };\n this.getSelections = function(startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, offset = this.wrapIndent * this.charWidths[bidiUtil.L], selections = [],\n selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent,\n isSelected = false, isSelectedPrev = false, selectionStart = 0;\n\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n } else if (!isSelected && isSelectedPrev) {\n selections.push({left: selectionStart, width: offset - selectionStart});\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n\n if (isSelected && (visIdx === levels.length)) {\n selections.push({left: selectionStart, width: offset - selectionStart});\n }\n\n return selections;\n };\n this.offsetToCol = function(posX) {\n var logicalIdx = 0, posX = Math.max(posX, 0),\n offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels,\n charWidth = this.charWidths[levels[visualIdx]];\n\n if (this.wrapIndent) {\n posX -= this.wrapIndent * this.charWidths[bidiUtil.L];\n }\n\n while(posX > offset + charWidth/2) {\n offset += charWidth;\n if(visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)){\n if(posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n\n } else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)){\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n\n } else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))){\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n } else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n\n return (logicalIdx + this.wrapIndent);\n };\n\n}).call(BidiHandler.prototype);\n\nexports.BidiHandler = BidiHandler;\n});\n\nace.define(\"ace/range\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\nvar comparePoints = function(p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nvar Range = function(startRow, startColumn, endRow, endColumn) {\n this.start = {\n row: startRow,\n column: startColumn\n };\n\n this.end = {\n row: endRow,\n column: endColumn\n };\n};\n\n(function() {\n this.isEqual = function(range) {\n return this.start.row === range.start.row &&\n this.end.row === range.end.row &&\n this.start.column === range.start.column &&\n this.end.column === range.end.column;\n };\n this.toString = function() {\n return (\"Range: [\" + this.start.row + \"/\" + this.start.column +\n \"] -> [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n\n this.contains = function(row, column) {\n return this.compare(row, column) == 0;\n };\n this.compareRange = function(range) {\n var cmp,\n end = range.end,\n start = range.start;\n\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n } else if (cmp == 0) {\n return 1;\n } else {\n return 0;\n }\n } else if (cmp == -1) {\n return -2;\n } else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n } else if (cmp == 1) {\n return 42;\n } else {\n return 0;\n }\n }\n };\n this.comparePoint = function(p) {\n return this.compare(p.row, p.column);\n };\n this.containsRange = function(range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n this.intersects = function(range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n this.isEnd = function(row, column) {\n return this.end.row == row && this.end.column == column;\n };\n this.isStart = function(row, column) {\n return this.start.row == row && this.start.column == column;\n };\n this.setStart = function(row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n } else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n this.setEnd = function(row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n } else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n this.inside = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideStart = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideEnd = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.compare = function(row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n\n if (row < this.start.row)\n return -1;\n\n if (row > this.end.row)\n return 1;\n\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n\n return 0;\n };\n this.compareStart = function(row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareEnd = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareInside = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.clipRows = function(firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = {row: lastRow + 1, column: 0};\n else if (this.end.row < firstRow)\n var end = {row: firstRow, column: 0};\n\n if (this.start.row > lastRow)\n var start = {row: lastRow + 1, column: 0};\n else if (this.start.row < firstRow)\n var start = {row: firstRow, column: 0};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n this.extend = function(row, column) {\n var cmp = this.compare(row, column);\n\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = {row: row, column: column};\n else\n var end = {row: row, column: column};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n\n this.isEmpty = function() {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n this.isMultiLine = function() {\n return (this.start.row !== this.end.row);\n };\n this.clone = function() {\n return Range.fromPoints(this.start, this.end);\n };\n this.collapseRows = function() {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n this.toScreenRange = function(session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n\n return new Range(\n screenPosStart.row, screenPosStart.column,\n screenPosEnd.row, screenPosEnd.column\n );\n };\n this.moveBy = function(row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n\n}).call(Range.prototype);\nRange.fromPoints = function(start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\n\nRange.comparePoints = function(p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\n\n\nexports.Range = Range;\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar lang = acequire(\"./lib/lang\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar Range = acequire(\"./range\").Range;\nvar Selection = function(session) {\n this.session = session;\n this.doc = session.getDocument();\n\n this.clearSelection();\n this.lead = this.selectionLead = this.doc.createAnchor(0, 0);\n this.anchor = this.selectionAnchor = this.doc.createAnchor(0, 0);\n\n var self = this;\n this.lead.on(\"change\", function(e) {\n self._emit(\"changeCursor\");\n if (!self.$isEmpty)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n\n this.selectionAnchor.on(\"change\", function() {\n if (!self.$isEmpty)\n self._emit(\"changeSelection\");\n });\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.isEmpty = function() {\n return (this.$isEmpty || (\n this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column\n ));\n };\n this.isMultiLine = function() {\n if (this.isEmpty()) {\n return false;\n }\n\n return this.getRange().isMultiLine();\n };\n this.getCursor = function() {\n return this.lead.getPosition();\n };\n this.setSelectionAnchor = function(row, column) {\n this.anchor.setPosition(row, column);\n\n if (this.$isEmpty) {\n this.$isEmpty = false;\n this._emit(\"changeSelection\");\n }\n };\n this.getSelectionAnchor = function() {\n if (this.$isEmpty)\n return this.getSelectionLead();\n else\n return this.anchor.getPosition();\n };\n this.getSelectionLead = function() {\n return this.lead.getPosition();\n };\n this.shiftSelection = function(columns) {\n if (this.$isEmpty) {\n this.moveCursorTo(this.lead.row, this.lead.column + columns);\n return;\n }\n\n var anchor = this.getSelectionAnchor();\n var lead = this.getSelectionLead();\n\n var isBackwards = this.isBackwards();\n\n if (!isBackwards || anchor.column !== 0)\n this.setSelectionAnchor(anchor.row, anchor.column + columns);\n\n if (isBackwards || lead.column !== 0) {\n this.$moveSelection(function() {\n this.moveCursorTo(lead.row, lead.column + columns);\n });\n }\n };\n this.isBackwards = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n this.getRange = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n\n if (this.isEmpty())\n return Range.fromPoints(lead, lead);\n\n if (this.isBackwards()) {\n return Range.fromPoints(lead, anchor);\n }\n else {\n return Range.fromPoints(anchor, lead);\n }\n };\n this.clearSelection = function() {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n this.selectAll = function() {\n var lastRow = this.doc.getLength() - 1;\n this.setSelectionAnchor(0, 0);\n this.moveCursorTo(lastRow, this.doc.getLine(lastRow).length);\n };\n this.setRange =\n this.setSelectionRange = function(range, reverse) {\n if (reverse) {\n this.setSelectionAnchor(range.end.row, range.end.column);\n this.selectTo(range.start.row, range.start.column);\n } else {\n this.setSelectionAnchor(range.start.row, range.start.column);\n this.selectTo(range.end.row, range.end.column);\n }\n if (this.getRange().isEmpty())\n this.$isEmpty = true;\n this.$desiredColumn = null;\n };\n\n this.$moveSelection = function(mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n\n mover.call(this);\n };\n this.selectTo = function(row, column) {\n this.$moveSelection(function() {\n this.moveCursorTo(row, column);\n });\n };\n this.selectToPosition = function(pos) {\n this.$moveSelection(function() {\n this.moveCursorToPosition(pos);\n });\n };\n this.moveTo = function(row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n this.moveToPosition = function(pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n this.selectUp = function() {\n this.$moveSelection(this.moveCursorUp);\n };\n this.selectDown = function() {\n this.$moveSelection(this.moveCursorDown);\n };\n this.selectRight = function() {\n this.$moveSelection(this.moveCursorRight);\n };\n this.selectLeft = function() {\n this.$moveSelection(this.moveCursorLeft);\n };\n this.selectLineStart = function() {\n this.$moveSelection(this.moveCursorLineStart);\n };\n this.selectLineEnd = function() {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n this.selectFileEnd = function() {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n this.selectFileStart = function() {\n this.$moveSelection(this.moveCursorFileStart);\n };\n this.selectWordRight = function() {\n this.$moveSelection(this.moveCursorWordRight);\n };\n this.selectWordLeft = function() {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n this.getWordRange = function(row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n this.selectWord = function() {\n this.setSelectionRange(this.getWordRange());\n };\n this.selectAWord = function() {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n\n this.getLineRange = function(row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n } else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n this.selectLine = function() {\n this.setSelectionRange(this.getLineRange());\n };\n this.moveCursorUp = function() {\n this.moveCursorBy(-1, 0);\n };\n this.moveCursorDown = function() {\n this.moveCursorBy(1, 0);\n };\n this.wouldMoveIntoSoftTab = function(cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length-1 == tabSize;\n };\n this.moveCursorLeft = function() {\n var cursor = this.lead.getPosition(),\n fold;\n\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n } else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n } else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n this.moveCursorRight = function() {\n var cursor = this.lead.getPosition(),\n fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n } else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n this.moveCursorLineStart = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(\n row, null, firstColumnPosition.row,\n firstColumnPosition.column\n );\n\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n this.moveCursorLineEnd = function() {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n this.moveCursorFileEnd = function() {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n this.moveCursorFileStart = function() {\n this.moveCursorTo(0, 0);\n };\n this.moveCursorLongWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n var match;\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (match = this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (match = this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n this.moveCursorLongWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n\n var leftOfCursor = lang.stringReverse(str);\n var match;\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (match = this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (match = this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n\n this.$shortWordEndIndex = function(rightOfCursor) {\n var match, index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n\n tokenRe.lastIndex = 0;\n if (match = this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index ++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n\n return index;\n };\n\n this.moveCursorShortWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n\n var index = this.$shortWordEndIndex(rightOfCursor);\n\n this.moveCursorTo(row, column + index);\n };\n\n this.moveCursorShortWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n\n return this.moveCursorTo(row, column - index);\n };\n\n this.moveCursorWordRight = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n\n this.moveCursorWordLeft = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n this.moveCursorBy = function(rows, chars) {\n var screenPos = this.session.documentToScreenPosition(\n this.lead.row,\n this.lead.column\n );\n\n var offsetX;\n\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n } else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n\n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n \n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n if (this.session.lineWidgets && this.session.lineWidgets[docPos.row]) {\n if (docPos.row > 0 || rows > 0)\n docPos.row++;\n }\n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n this.moveCursorToPosition = function(position) {\n this.moveCursorTo(position.row, position.column);\n };\n this.moveCursorTo = function(row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n this.moveCursorToScreen = function(row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n this.detach = function() {\n this.lead.detach();\n this.anchor.detach();\n this.session = this.doc = null;\n };\n\n this.fromOrientedRange = function(range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n\n this.toOrientedRange = function(range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n } else {\n range = r;\n }\n\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n this.getRangeOfMovements = function(func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start,end);\n } catch(e) {\n return Range.fromPoints(start,start);\n } finally {\n this.moveCursorToPosition(start);\n }\n };\n\n this.toJSON = function() {\n if (this.rangeCount) {\n var data = this.ranges.map(function(r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n } else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n\n this.fromJSON = function(data) {\n if (data.start == undefined) {\n if (this.rangeList) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--; ) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n } else\n data = data[0];\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n\n this.isEqual = function(data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n\n for (var i = this.ranges.length; i--; ) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n\n}).call(Selection.prototype);\n\nexports.Selection = Selection;\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/config\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar config = acequire(\"./config\");\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = function(rules) {\n this.states = rules;\n\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = {defaultToken: \"text\"};\n var flag = \"g\";\n\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive)\n flag = \"gi\";\n if (rule.regex == null)\n continue;\n\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n } else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", { \n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n } else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n } else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function(match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n } else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n \n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n \n splitterRurles.forEach(function(rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n};\n\n(function() {\n this.$setMaxTokenCount = function(m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n \n this.$applyToken = function(str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{type: types, value: str}];\n\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n\n this.$arrayTokens = function(str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n\n this.removeCapturingGroups = function(src) {\n var r = src.replace(\n /\\[(?:\\\\.|[^\\]])*?\\]|\\\\.|\\(\\?[:=!]|(\\()/g,\n function(x, y) {return y ? \"(?:\" : x;}\n );\n return r;\n };\n\n this.createSplitterRegexp = function(src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function(\n m, esc, parenOpen, parenClose, square, index\n ) {\n if (inChClass) {\n inChClass = square != \"]\";\n } else if (square) {\n inChClass = true;\n } else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index+1;\n lastCapture.stack = -1;\n }\n stack--;\n } else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\") src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\") src += \"$\";\n \n return new RegExp(src, (flag||\"\").replace(\"g\", \"\"));\n };\n this.getLineTokens = function(line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n } else\n var stack = [];\n\n var currentState = startState || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n\n var token = {type: null, value: \"\"};\n\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: skipped};\n }\n }\n\n for (var i = 0; i < match.length-2; i++) {\n if (match[i + 1] === undefined)\n continue;\n\n rule = state[mapping[i]];\n\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n } else {\n currentState = rule.next(currentState, stack);\n }\n \n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: value};\n }\n } else if (type) {\n if (token.type)\n tokens.push(token);\n token = {type: null, value: \"\"};\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n\n if (lastIndex == line.length)\n break;\n\n lastIndex = index;\n\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 2000),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n\n if (token.type)\n tokens.push(token);\n \n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens : tokens,\n state : stack.length ? stack : currentState\n };\n };\n \n this.reportError = config.reportError;\n \n}).call(Tokenizer.prototype);\n\nexports.Tokenizer = Tokenizer;\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar lang = acequire(\"../lib/lang\");\n\nvar TextHighlightRules = function() {\n\n this.$rules = {\n \"start\" : [{\n token : \"empty_line\",\n regex : '^$'\n }, {\n defaultToken : \"text\"\n }]\n };\n};\n\n(function() {\n\n this.addRules = function(rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n\n this.getRules = function() {\n return this.$rules;\n };\n\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n } else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n\n this.addRules(embedRules, prefix);\n\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));\n }\n\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n\n this.getEmbeds = function() {\n return this.$embeds;\n };\n\n var pushState = function(currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function(currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n\n this.normalizeRules = function() {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n } else if (next == \"pop\") {\n rule.next = popState;\n }\n\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n } else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (Array.isArray(includeName))\n toInsert = includeName.map(function(x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function(x) {return !x.next;});\n state.splice.apply(state, args);\n i--;\n }\n \n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(\n rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive\n );\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n\n this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n Object.keys(map).forEach(function(className) {\n var a = map[className];\n if (ignoreCase)\n a = a.toLowerCase();\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--; )\n keywords[list[i]] = className;\n });\n if (Object.getPrototypeOf(keywords)) {\n keywords.__proto__ = null;\n }\n this.$keywordList = Object.keys(keywords);\n map = null;\n return ignoreCase\n ? function(value) {return keywords[value.toLowerCase()] || defaultToken; }\n : function(value) {return keywords[value] || defaultToken; };\n };\n\n this.getKeywords = function() {\n return this.$keywords;\n };\n\n}).call(TextHighlightRules.prototype);\n\nexports.TextHighlightRules = TextHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Behaviour = function() {\n this.$behaviours = {};\n};\n\n(function () {\n\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n \n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n \n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n \n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n } else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n \n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n } else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n\n}).call(Behaviour.prototype);\n\nexports.Behaviour = Behaviour;\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"./range\").Range;\nvar TokenIterator = function(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n};\n\n(function() { \n this.stepBackward = function() {\n this.$tokenIndex -= 1;\n \n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n \n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.stepForward = function() {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentTokenRow = function () {\n return this.$row;\n }; \n this.getCurrentTokenColumn = function() {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n \n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n \n return column; \n };\n this.getCurrentTokenPosition = function() {\n return {row: this.$row, column: this.getCurrentTokenColumn()};\n };\n this.getCurrentTokenRange = function() {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n\n}).call(TokenIterator.prototype);\n\nexports.TokenIterator = TokenIterator;\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\nvar lang = acequire(\"../../lib/lang\");\n\nvar SAFE_INSERT_IN_TOKENS =\n [\"text\", \"paren.rparen\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS =\n [\"text\", \"paren.rparen\", \"punctuation.operator\", \"comment\"];\n\nvar context;\nvar contextCache = {};\nvar defaultQuotes = {'\"' : '\"', \"'\" : \"'\"};\n\nvar initContext = function(editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = {rangeCount: editor.multiSelect.rangeCount};\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\n\nvar getWrapped = function(selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\n\nvar CstyleBehaviour = function(options) {\n this.add(\"braces\", \"insertion\", function(state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options && options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n } else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n } else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n } else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n } else if (closing) {\n var next_indent = this.$getIndent(line);\n } else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n } else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n\n this.add(\"braces\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n } else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n\n this.add(\"parens\", \"insertion\", function(state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n } else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"parens\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"brackets\", \"insertion\", function(state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n } else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"brackets\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"string_dquotes\", \"insertion\", function(state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1)\n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n } else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column-1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n\n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n\n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n\n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n } else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(leftChar);\n if (isWordBefore || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1,1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n};\n\n\nCstyleBehaviour.isSaneInsertion = function(editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\n\nCstyleBehaviour.$matchTokenType = function(token, types) {\n return types.indexOf(token.type || token) > -1;\n};\n\nCstyleBehaviour.recordAutoInsert = function(editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\n\nCstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isMaybeInsertedClosing(cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\n\nCstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\n\nCstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\n\nCstyleBehaviour.popAutoInsertedClosing = function() {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\n\nCstyleBehaviour.clearMaybeInsertedClosing = function() {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\n\n\n\noop.inherits(CstyleBehaviour, Behaviour);\n\nexports.CstyleBehaviour = CstyleBehaviour;\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\nexports.packages = {};\n\naddUnicodePackage({\n L: \"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",\n Ll: \"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A\",\n Lu: \"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A\",\n Lt: \"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC\",\n Lm: \"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F\",\n Lo: \"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",\n M: \"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26\",\n Mn: \"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26\",\n Mc: \"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC\",\n Me: \"0488048906DE20DD-20E020E2-20E4A670-A672\",\n N: \"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",\n Nd: \"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",\n Nl: \"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF\",\n No: \"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835\",\n P: \"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65\",\n Pd: \"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D\",\n Ps: \"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62\",\n Pe: \"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63\",\n Pi: \"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20\",\n Pf: \"00BB2019201D203A2E032E052E0A2E0D2E1D2E21\",\n Pc: \"005F203F20402054FE33FE34FE4D-FE4FFF3F\",\n Po: \"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65\",\n S: \"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD\",\n Sm: \"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC\",\n Sc: \"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6\",\n Sk: \"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3\",\n So: \"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD\",\n Z: \"002000A01680180E2000-200A20282029202F205F3000\",\n Zs: \"002000A01680180E2000-200A202F205F3000\",\n Zl: \"2028\",\n Zp: \"2029\",\n C: \"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF\",\n Cc: \"0000-001F007F-009F\",\n Cf: \"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB\",\n Co: \"E000-F8FF\",\n Cs: \"D800-DFFF\",\n Cn: \"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF\"\n});\n\nfunction addUnicodePackage (pack) {\n var codePoint = /\\w{4}/g;\n for (var name in pack)\n exports.packages[name] = pack[name].replace(codePoint, \"\\\\u$&\");\n}\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Tokenizer = acequire(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = acequire(\"../unicode\");\nvar lang = acequire(\"../lib/lang\");\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\nvar Range = acequire(\"../range\").Range;\n\nvar Mode = function() {\n this.HighlightRules = TextHighlightRules;\n};\n\n(function() {\n this.$defaultBehaviour = new CstyleBehaviour();\n\n this.tokenRe = new RegExp(\"^[\"\n + unicode.packages.L\n + unicode.packages.Mn + unicode.packages.Mc\n + unicode.packages.Nd\n + unicode.packages.Pc + \"\\\\$_]+\", \"g\"\n );\n\n this.nonTokenRe = new RegExp(\"^(?:[^\"\n + unicode.packages.L\n + unicode.packages.Mn + unicode.packages.Mc\n + unicode.packages.Nd\n + unicode.packages.Pc + \"\\\\$_]|\\\\s])+\", \"g\"\n );\n\n this.getTokenizer = function() {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n\n this.toggleCommentLines = function(state, session, startRow, endRow) {\n var doc = session.doc;\n\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n\n var comment = function(line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({row: i, column: line.length}, lineCommentEnd);\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n\n var uncomment = function(line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n\n var testRemove = function(line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n } else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n } else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n \n insertAtTabStop = session.getUseSoftTabs();\n\n var uncomment = function(line, i) {\n var m = line.match(regexpStart);\n if (!m) return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function(line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({row: i, column: minIndent}, commentWithSpace);\n else\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n var testRemove = function(line, i) {\n return regexpStart.test(line);\n };\n \n var shouldInsertSpace = function(line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n return true;\n };\n }\n\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n\n\n var minEmptyLength = Infinity;\n iter(function(line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n } else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n\n iter(shouldRemove ? uncomment : comment);\n };\n\n this.toggleBlockComment = function(state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n } else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.autoOutdent = function(state, doc, row) {\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n this.createWorker = function(session) {\n return null;\n };\n\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n this.$embeds.push(i);\n this.$modes[i] = new mapping[i]();\n }\n }\n\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\", \n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n\n for (var i = 0; i < delegations.length; i++) {\n (function(scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function() {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this));\n }\n };\n\n this.$delegator = function(method, args, defaultHandler) {\n var state = args[0];\n if (typeof state != \"string\")\n state = state[0];\n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]]) continue;\n\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n\n this.transformAction = function(state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n \n this.getKeywords = function(append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { \n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n \n this.$createKeywordList = function() {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function(word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nfunction throwDeltaError(delta, errorText){\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\n\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\n\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\n\nexports.applyDelta = function(docLines, delta, doNotValidate) {\n \n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n } else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n } else {\n docLines.splice(\n row, endRow - row + 1,\n line.substring(0, startColumn) + docLines[endRow].substring(endColumn)\n );\n }\n break;\n }\n};\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\n\nvar Anchor = exports.Anchor = function(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n \n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.getPosition = function() {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n this.getDocument = function() {\n return this.document;\n };\n this.$insertRight = false;\n this.onChange = function(delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n\n if (delta.start.row > this.row)\n return;\n \n var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n \n function $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n }\n \n function $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n \n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n }\n this.setPosition = function(row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n } else {\n pos = this.$clipPositionToDocument(row, column);\n }\n\n if (this.row == pos.row && this.column == pos.column)\n return;\n\n var old = {\n row: this.row,\n column: this.column\n };\n\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n this.detach = function() {\n this.document.removeEventListener(\"change\", this.$onChange);\n };\n this.attach = function(doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n this.$clipPositionToDocument = function(row, column) {\n var pos = {};\n\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n\n if (column < 0)\n pos.column = 0;\n\n return pos;\n };\n\n}).call(Anchor.prototype);\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar applyDelta = acequire(\"./apply_delta\").applyDelta;\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar Range = acequire(\"./range\").Range;\nvar Anchor = acequire(\"./anchor\").Anchor;\n\nvar Document = function(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n } else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({row: 0, column: 0}, textOrLines);\n } else {\n this.insert({row: 0, column:0}, textOrLines);\n }\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setValue = function(text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({row: 0, column: 0}, text);\n };\n this.getValue = function() {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n this.createAnchor = function(row, column) {\n return new Anchor(this, row, column);\n };\n if (\"aaa\".split(/a/).length === 0) {\n this.$split = function(text) {\n return text.replace(/\\r\\n|\\r/g, \"\\n\").split(\"\\n\");\n };\n } else {\n this.$split = function(text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n }\n\n\n this.$detectNewLine = function(text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n this.getNewLineCharacter = function() {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n\n this.$autoNewLine = \"\";\n this.$newLineMode = \"auto\";\n this.setNewLineMode = function(newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n this.getNewLineMode = function() {\n return this.$newLineMode;\n };\n this.isNewLine = function(text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n this.getLine = function(row) {\n return this.$lines[row] || \"\";\n };\n this.getLines = function(firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n this.getAllLines = function() {\n return this.getLines(0, this.getLength());\n };\n this.getLength = function() {\n return this.$lines.length;\n };\n this.getTextRange = function(range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n this.getLinesForRange = function(range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n } else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n this.insertLines = function(row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n this.removeLines = function(firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n this.insertNewLine = function(position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n this.insert = function(position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n \n return this.insertMergedLines(position, this.$split(text));\n };\n this.insertInLine = function(position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n \n return this.clonePos(end);\n };\n \n this.clippedPos = function(row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n } else if (row < 0) {\n row = 0;\n } else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return {row: row, column: column};\n };\n \n this.clonePos = function(pos) {\n return {row: pos.row, column: pos.column};\n };\n \n this.pos = function(row, column) {\n return {row: row, column: column};\n };\n \n this.$clipPosition = function(position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n } else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n this.insertFullLines = function(row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n } else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({row: row, column: column}, lines);\n }; \n this.insertMergedLines = function(position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n \n return this.clonePos(end);\n };\n this.remove = function(range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({start: start, end: end})\n });\n return this.clonePos(start);\n };\n this.removeInLine = function(row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({start: start, end: end})\n }, true);\n \n return this.clonePos(start);\n };\n this.removeFullLines = function(firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow );\n var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 );\n var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow );\n var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); \n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n \n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n this.removeNewLine = function(row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n this.replace = function(range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n \n return end;\n };\n this.applyDeltas = function(deltas) {\n for (var i=0; i=0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n this.applyDelta = function(delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n \n if (isInsert && delta.lines.length > 20000)\n this.$splitAndapplyLargeDelta(delta, 20000);\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n };\n \n this.$splitAndapplyLargeDelta = function(delta, MAX) {\n var lines = delta.lines;\n var l = lines.length;\n var row = delta.start.row; \n var column = delta.start.column;\n var from = 0, to = 0;\n do {\n from = to;\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n if (to > l) {\n delta.lines = chunk;\n delta.start.row = row + from;\n delta.start.column = column;\n break;\n }\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n } while(true);\n };\n this.revertDelta = function(delta) {\n this.applyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n this.indexToPosition = function(index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return {row: i, column: index + lines[i].length + newlineLength};\n }\n return {row: l-1, column: lines[l-1].length};\n };\n this.positionToIndex = function(pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n\n return index + pos.column;\n };\n\n}).call(Document.prototype);\n\nexports.Document = Document;\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\n\nvar BackgroundTokenizer = function(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n\n var self = this;\n\n this.$worker = function() {\n if (!self.running) { return; }\n\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n \n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines ++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) { \n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n \n if (endLine == -1)\n endLine = currentLine;\n\n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n this.setTokenizer = function(tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n\n this.start(0);\n };\n this.setDocument = function(doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n\n this.stop();\n };\n this.fireUpdateEvent = function(firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", {data: data});\n };\n this.start = function(startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n \n this.scheduleStart = function() {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n\n this.$updateOnChange = function(delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n this.lines[startRow] = null;\n } else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n\n this.stop();\n };\n this.stop = function() {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n this.getTokens = function(row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n this.getState = function(row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n\n this.$tokenizeRow = function(row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n\n var data = this.tokenizer.getLineTokens(line, state, row);\n\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n } else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n\n return this.lines[row] = data.tokens;\n };\n\n}).call(BackgroundTokenizer.prototype);\n\nexports.BackgroundTokenizer = BackgroundTokenizer;\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar lang = acequire(\"./lib/lang\");\nvar oop = acequire(\"./lib/oop\");\nvar Range = acequire(\"./range\").Range;\n\nvar SearchHighlight = function(regExp, clazz, type) {\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type || \"text\";\n};\n\n(function() {\n this.MAX_RANGES = 500;\n \n this.setRegexp = function(regExp) {\n if (this.regExp+\"\" == regExp+\"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n\n this.update = function(html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function(match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n\n for (var j = ranges.length; j --; ) {\n markerLayer.drawSingleLineMarker(\n html, ranges[j].toScreenRange(session), this.clazz, config);\n }\n }\n };\n\n}).call(SearchHighlight.prototype);\n\nexports.SearchHighlight = SearchHighlight;\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\nfunction FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n } else {\n folds = this.folds = [ folds ];\n }\n\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column,\n last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n\n this.folds.forEach(function(fold) {\n fold.setFoldLine(this);\n }, this);\n}\n\n(function() {\n this.shiftRow = function(shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function(fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n\n this.addFold = function(fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function(a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n } else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n } else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n\n this.containsRow = function(row) {\n return row >= this.start.row && row <= this.end.row;\n };\n\n this.walk = function(callback, endRow, endColumn) {\n var lastEnd = 0,\n folds = this.folds,\n fold,\n cmp, stop, isNewRow = true;\n\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n\n this.getNextFoldTo = function(row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n } else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n\n this.addRemoveChars = function(row, column, len) {\n var ret = this.getNextFoldTo(row, column),\n fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row)\n {\n window.console && window.console.log(row, column, fold);\n } else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n\n this.split = function(row, column) {\n var pos = this.getNextFoldTo(row, column);\n \n if (!pos || pos.kind == \"inside\")\n return null;\n \n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n \n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n\n this.merge = function(foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n\n this.toString = function() {\n var ret = [this.range.toString() + \": [\" ];\n\n this.folds.forEach(function(fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n\n this.idxToPosition = function(idx) {\n var lastFoldEndColumn = 0;\n\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n\n lastFoldEndColumn = fold.end.column;\n }\n\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n}).call(FoldLine.prototype);\n\nexports.FoldLine = FoldLine;\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\nvar Range = acequire(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\n\nvar RangeList = function() {\n this.ranges = [];\n};\n\n(function() {\n this.comparePoints = comparePoints;\n\n this.pointIndex = function(pos, excludeEdges, startIndex) {\n var list = this.ranges;\n\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i-2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n\n return -i-1;\n }\n return -i - 1;\n };\n\n this.add = function(range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n\n this.addList = function(list) {\n var removed = [];\n for (var i = list.length; i--; ) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n\n this.substractPoint = function(pos) {\n var i = this.pointIndex(pos);\n\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n this.merge = function() {\n var removed = [];\n var list = this.ranges;\n \n list = list.sort(function(a, b) {\n return comparePoints(a.start, b.start);\n });\n \n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n \n this.ranges = list;\n\n return removed;\n };\n\n this.contains = function(row, column) {\n return this.pointIndex({row: row, column: column}) >= 0;\n };\n\n this.containsPoint = function(pos) {\n return this.pointIndex(pos) >= 0;\n };\n\n this.rangeAtPoint = function(pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n\n\n this.clipRows = function(startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n\n var startIndex = this.pointIndex({row: startRow, column: 0});\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({row: endRow, column: 0}, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n\n this.removeAll = function() {\n return this.ranges.splice(0, this.ranges.length);\n };\n\n this.attach = function(session) {\n if (this.session)\n this.detach();\n\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n\n this.session.on('change', this.onChange);\n };\n\n this.detach = function() {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n\n this.$onChange = function(delta) {\n if (delta.action == \"insert\"){\n var start = delta.start;\n var end = delta.end;\n } else {\n var end = delta.start;\n var start = delta.end;\n }\n var startRow = start.row;\n var endRow = end.row;\n var lineDif = endRow - startRow;\n\n var colDiff = -start.column + end.column;\n var ranges = this.ranges;\n\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row < startRow)\n continue;\n if (r.start.row > startRow)\n break;\n\n if (r.start.row == startRow && r.start.column >= start.column ) {\n if (r.start.column == start.column && this.$insertRight) {\n } else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$insertRight) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) { \n if (r.end.column > r.start.column && r.end.column == ranges[i+1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n\n}).call(RangeList.prototype);\n\nexports.RangeList = RangeList;\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/range_list\",\"ace/lib/oop\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\nvar RangeList = acequire(\"../range_list\").RangeList;\nvar oop = acequire(\"../lib/oop\");\nvar Fold = exports.Fold = function(range, placeholder) {\n this.foldLine = null;\n this.placeholder = placeholder;\n this.range = range;\n this.start = range.start;\n this.end = range.end;\n\n this.sameRow = range.start.row == range.end.row;\n this.subFolds = this.ranges = [];\n};\n\noop.inherits(Fold, RangeList);\n\n(function() {\n\n this.toString = function() {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n\n this.setFoldLine = function(foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function(fold) {\n fold.setFoldLine(foldLine);\n });\n };\n\n this.clone = function() {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function(subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n\n this.addSubFold = function(fold) {\n if (this.range.isEqual(fold))\n return;\n\n if (!this.range.containsRange(fold))\n throw new Error(\"A fold can't intersect already existing fold\" + fold.range + this.range);\n consumeRange(fold, this.start);\n\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n\n if (cmp == 0)\n return afterStart.addSubFold(fold);\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterEnd = this.subFolds[j];\n\n if (cmp == 0)\n throw new Error(\"A fold can't intersect already existing fold\" + fold.range + this.range);\n\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n fold.setFoldLine(this.foldLine);\n\n return fold;\n };\n \n this.restoreRange = function(range) {\n return restoreRange(range, this.start);\n };\n\n}).call(Fold.prototype);\n\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\nvar FoldLine = acequire(\"./fold_line\").FoldLine;\nvar Fold = acequire(\"./fold\").Fold;\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\n\nfunction Folding() {\n this.getFoldAt = function(row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var fold = folds[i];\n if (fold.range.contains(row, column)) {\n if (side == 1 && fold.range.isEnd(row, column)) {\n continue;\n } else if (side == -1 && fold.range.isStart(row, column)) {\n continue;\n }\n return fold;\n }\n }\n };\n this.getFoldsInRange = function(range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n\n start.column += 1;\n end.column -= 1;\n\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n } else if (cmp == 2) {\n continue;\n } else\n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n\n return foundFolds;\n };\n\n this.getFoldsInRangeList = function(ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function(range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n } else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function() {\n var folds = [];\n var foldLines = this.$foldData;\n \n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n\n return folds;\n };\n this.getFoldStringAt = function(row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n\n this.getFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n } else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n\n this.getFoldedRowCount = function(first, last) {\n var foldData = this.$foldData, rowCount = last-first+1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i],\n end = foldLine.end.row,\n start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last-start;\n else\n rowCount = 0; // in one fold\n }\n break;\n } else if (end >= first){\n if (start >= first) // fold inside range\n rowCount -= end-start;\n else\n rowCount -= end-first+1;\n }\n }\n return rowCount;\n };\n\n this.$addFoldLine = function(foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function(a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function(placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n \n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n if (!(startRow < endRow || \n startRow == endRow && startColumn <= endColumn - 2))\n throw new Error(\"The range has to be at least 2 characters width\");\n\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n \n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n folds.forEach(function(subFold) {\n fold.addSubFold(subFold);\n });\n }\n\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n } else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n } else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n\n return fold;\n };\n\n this.addFolds = function(folds) {\n folds.forEach(function(fold) {\n this.addFold(fold);\n }, this);\n };\n\n this.removeFold = function(fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n } else\n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n } else\n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n } else\n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n } else\n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n\n this.removeFolds = function(folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n\n cloneFolds.forEach(function(fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n\n this.expandFold = function(fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function(subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row+1, fold.end.row, fold.collapseChildren-1);\n }\n fold.subFolds = [];\n };\n\n this.expandFolds = function(folds) {\n folds.forEach(function(fold) {\n this.expandFold(fold);\n }, this);\n };\n\n this.unfold = function(location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n expandInner = true;\n } else if (typeof location == \"number\")\n range = new Range(location, 0, location, this.getLine(location).length);\n else if (\"row\" in location)\n range = Range.fromPoints(location, location);\n else\n range = location;\n \n folds = this.getFoldsInRangeList(range);\n if (expandInner) {\n this.removeFolds(folds);\n } else {\n var subFolds = folds;\n while (subFolds.length) {\n this.expandFolds(subFolds);\n subFolds = this.getFoldsInRangeList(range);\n }\n }\n if (folds.length)\n return folds;\n };\n this.isRowFolded = function(docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n\n this.getRowFoldEnd = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n\n this.getRowFoldStart = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n\n this.getFoldDisplayLine = function(foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n\n if (placeholder != null) {\n textLine += placeholder;\n } else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n\n this.getDisplayLine = function(row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n } else {\n return this.getFoldDisplayLine(\n foldLine, row, endColumn, startRow, startColumn);\n }\n };\n\n this.$cloneFoldData = function() {\n var fd = [];\n fd = this.$foldData.map(function(foldLine) {\n var folds = foldLine.folds.map(function(fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n\n return fd;\n };\n\n this.toggleFold = function(tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n\n if (fold) {\n this.expandFold(fold);\n return;\n } else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n } else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n } else if (bracketPos = this.findMatchingBracket({row: cursor.row, column: cursor.column + 1})) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n\n range.start.column++;\n } else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n } else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n } else if (folds.length == 1 ) {\n fold = folds[0];\n }\n }\n\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n\n this.addFold(placeholder, range);\n };\n\n this.getCommentFoldRange = function(row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type));\n iterator.stepForward();\n }\n \n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + 2;\n\n iterator = new TokenIterator(this, row, column);\n \n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (!re.test(state))\n lastRow = iterator.$row;\n } else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type));\n token = iterator.stepBackward();\n } else\n token = iterator.getCurrentToken();\n\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2;\n return range;\n }\n };\n\n this.foldAll = function(startRow, endRow, depth) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow\n ) {\n row = range.end.row;\n try {\n var fold = this.addFold(\"...\", range);\n if (fold)\n fold.collapseChildren = depth;\n } catch(e) {}\n }\n }\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function(style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n \n if (this.$foldStyle == style)\n return;\n\n this.$foldStyle = style;\n \n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n\n this.$setFolding = function(foldMode) {\n if (this.$foldMode == foldMode)\n return;\n \n this.$foldMode = foldMode;\n \n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n \n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n \n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n \n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n\n this.onFoldWidgetClick = function(row, e) {\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n \n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n \n this.$toggleFoldWidget = function(row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n \n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n } else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n } else if (range) {\n if (options.all) \n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n \n return range;\n };\n \n \n \n this.toggleFoldWidget = function(toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n \n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n \n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n\n if (fold) {\n this.removeFold(fold);\n } else {\n this.addFold(\"...\", range);\n }\n }\n };\n\n this.updateFoldWidgets = function(delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n } else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function(e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\n\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\nvar Range = acequire(\"../range\").Range;\n\n\nfunction BracketMatch() {\n\n this.findMatchingBracket = function(position, chr) {\n if (position.column == 0) return null;\n\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column-1);\n if (charBeforeCursor == \"\") return null;\n\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n \n this.getBracketRange = function(pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n\n var chr = line.charAt(pos.column-1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = {row: pos.row, column: pos.column + 1};\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n } else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n \n return range;\n };\n\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\"\n };\n\n this.$findOpeningBracket = function(bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n \n if (!typeRe){\n typeRe = new RegExp(\n \"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n + \")+\"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n \n while (true) {\n \n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n \n value = token.value;\n valueIndex = value.length - 1;\n }\n \n return null;\n };\n\n this.$findClosingBracket = function(bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n\n if (!typeRe){\n typeRe = new RegExp(\n \"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n + \")+\"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n\n while (true) {\n\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n\n valueIndex = 0;\n }\n \n return null;\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar lang = acequire(\"./lib/lang\");\nvar BidiHandler = acequire(\"./bidihandler\").BidiHandler;\nvar config = acequire(\"./config\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar Selection = acequire(\"./selection\").Selection;\nvar TextMode = acequire(\"./mode/text\").Mode;\nvar Range = acequire(\"./range\").Range;\nvar Document = acequire(\"./document\").Document;\nvar BackgroundTokenizer = acequire(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = acequire(\"./search_highlight\").SearchHighlight;\n\nvar EditSession = function(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function() {\n return this.join(\"\\n\");\n };\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(text);\n\n this.$bidiHandler = new BidiHandler(this);\n this.setDocument(text);\n this.selection = new Selection(this);\n\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n};\n\n\nEditSession.$uid = 0;\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setDocument = function(doc) {\n if (this.doc)\n this.doc.removeListener(\"change\", this.$onChange);\n\n this.doc = doc;\n doc.on(\"change\", this.$onChange);\n\n if (this.bgTokenizer)\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.resetCaches();\n };\n this.getDocument = function() {\n return this.doc;\n };\n this.$resetRowCache = function(docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n\n this.$getRowCacheIndex = function(cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n\n return low -1;\n };\n\n this.resetCaches = function() {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (this.bgTokenizer)\n this.bgTokenizer.start(0);\n };\n\n this.onChangeFold = function(e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n\n this.onChange = function(delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager && !delta.ignore) {\n this.$deltasDoc.push(delta);\n if (removedFolds && removedFolds.length != 0) {\n this.$deltasFold.push({\n action: \"removeFolds\",\n folds: removedFolds\n });\n }\n\n this.$informUndoManager.schedule();\n }\n\n this.bgTokenizer && this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n this.setValue = function(text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n\n this.$resetRowCache(0);\n this.$deltas = [];\n this.$deltasDoc = [];\n this.$deltasFold = [];\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n this.getValue =\n this.toString = function() {\n return this.doc.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.getState = function(row) {\n return this.bgTokenizer.getState(row);\n };\n this.getTokens = function(row) {\n return this.bgTokenizer.getTokens(row);\n };\n this.getTokenAt = function(row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n } else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n this.setUndoManager = function(undoManager) {\n this.$undoManager = undoManager;\n this.$deltas = [];\n this.$deltasDoc = [];\n this.$deltasFold = [];\n\n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n\n if (undoManager) {\n var self = this;\n\n this.$syncInformUndoManager = function() {\n self.$informUndoManager.cancel();\n\n if (self.$deltasFold.length) {\n self.$deltas.push({\n group: \"fold\",\n deltas: self.$deltasFold\n });\n self.$deltasFold = [];\n }\n\n if (self.$deltasDoc.length) {\n self.$deltas.push({\n group: \"doc\",\n deltas: self.$deltasDoc\n });\n self.$deltasDoc = [];\n }\n\n if (self.$deltas.length > 0) {\n undoManager.execute({\n action: \"aceupdate\",\n args: [self.$deltas, self],\n merge: self.mergeUndoDeltas\n });\n }\n self.mergeUndoDeltas = false;\n self.$deltas = [];\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n }\n };\n this.markUndoGroup = function() {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n \n this.$defaultUndoManager = {\n undo: function() {},\n redo: function() {},\n reset: function() {}\n };\n this.getUndoManager = function() {\n return this.$undoManager || this.$defaultUndoManager;\n };\n this.getTabString = function() {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n } else {\n return \"\\t\";\n }\n };\n this.setUseSoftTabs = function(val) {\n this.setOption(\"useSoftTabs\", val);\n };\n this.getUseSoftTabs = function() {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n this.setTabSize = function(tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n this.getTabSize = function() {\n return this.$tabSize;\n };\n this.isTabStop = function(position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n this.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n this.getNavigateWithinSoftTabs = function() {\n return this.$navigateWithinSoftTabs;\n };\n\n this.$overwrite = false;\n this.setOverwrite = function(overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n this.getOverwrite = function() {\n return this.$overwrite;\n };\n this.toggleOverwrite = function() {\n this.setOverwrite(!this.$overwrite);\n };\n this.addGutterDecoration = function(row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n this.removeGutterDecoration = function(row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n this.getBreakpoints = function() {\n return this.$breakpoints;\n };\n this.setBreakpoints = function(rows) {\n this.$breakpoints = [];\n for (var i=0; i 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column-1, column+1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n\n var start = column;\n if (start > 0) {\n do {\n start--;\n }\n while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n\n return new Range(row, start, row, end);\n };\n this.getAWordRange = function(row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n this.setNewLineMode = function(newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n this.getNewLineMode = function() {\n return this.doc.getNewLineMode();\n };\n this.setUseWorker = function(useWorker) { this.setOption(\"useWorker\", useWorker); };\n this.getUseWorker = function() { return this.$useWorker; };\n this.onReloadTokenizer = function(e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n\n this.$modes = {};\n this.$mode = null;\n this.$modeId = null;\n this.setMode = function(mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n } else {\n path = mode || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function(m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n } else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n\n this.$onChangeMode = function(mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode) \n return;\n\n this.$mode = mode;\n\n this.$stopWorker();\n\n if (this.$useWorker)\n this.$startWorker();\n\n var tokenizer = mode.getTokenizer();\n\n if(tokenizer.addEventListener !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.addEventListener(\"update\", onReloadTokenizer);\n }\n\n if (!this.bgTokenizer) {\n this.bgTokenizer = new BackgroundTokenizer(tokenizer);\n var _self = this;\n this.bgTokenizer.addEventListener(\"update\", function(e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n } else {\n this.bgTokenizer.setTokenizer(tokenizer);\n }\n\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n\n \n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\");\n }\n };\n\n this.$stopWorker = function() {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n\n this.$startWorker = function() {\n try {\n this.$worker = this.$mode.createWorker(this);\n } catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n this.getMode = function() {\n return this.$mode;\n };\n\n this.$scrollTop = 0;\n this.setScrollTop = function(scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n this.getScrollTop = function() {\n return this.$scrollTop;\n };\n\n this.$scrollLeft = 0;\n this.setScrollLeft = function(scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n this.getScrollLeft = function() {\n return this.$scrollLeft;\n };\n this.getScreenWidth = function() {\n this.$computeWidth();\n if (this.lineWidgets) \n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n \n this.getLineWidgetMaxWidth = function() {\n if (this.lineWidgetsWidth != null) return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function(w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n\n this.$computeWidth = function(force) {\n if (this.$modified || force) {\n this.$modified = false;\n\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n this.getLine = function(row) {\n return this.doc.getLine(row);\n };\n this.getLines = function(firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n this.getLength = function() {\n return this.doc.getLength();\n };\n this.getTextRange = function(range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n this.insert = function(position, text) {\n return this.doc.insert(position, text);\n };\n this.remove = function(range) {\n return this.doc.remove(range);\n };\n this.removeFullLines = function(firstRow, lastRow){\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n this.undoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n var lastUndoRange = null;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.group == \"doc\") {\n this.doc.revertDeltas(delta.deltas);\n lastUndoRange =\n this.$getUndoSelection(delta.deltas, true, lastUndoRange);\n } else {\n delta.deltas.forEach(function(foldDelta) {\n this.addFolds(foldDelta.folds);\n }, this);\n }\n }\n this.$fromUndo = false;\n lastUndoRange &&\n this.$undoSelect &&\n !dontSelect &&\n this.selection.setSelectionRange(lastUndoRange);\n return lastUndoRange;\n };\n this.redoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n var lastUndoRange = null;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.group == \"doc\") {\n this.doc.applyDeltas(delta.deltas);\n lastUndoRange =\n this.$getUndoSelection(delta.deltas, false, lastUndoRange);\n }\n }\n this.$fromUndo = false;\n lastUndoRange &&\n this.$undoSelect &&\n !dontSelect &&\n this.selection.setSelectionRange(lastUndoRange);\n return lastUndoRange;\n };\n this.setUndoSelect = function(enable) {\n this.$undoSelect = enable;\n };\n\n this.$getUndoSelection = function(deltas, isUndo, lastUndoRange) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n\n var delta = deltas[0];\n var range, point;\n var lastDeltaIsInsert = false;\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n lastDeltaIsInsert = true;\n } else {\n range = Range.fromPoints(delta.start, delta.start);\n lastDeltaIsInsert = false;\n }\n\n for (var i = 1; i < deltas.length; i++) {\n delta = deltas[i];\n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n lastDeltaIsInsert = true;\n } else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n lastDeltaIsInsert = false;\n }\n }\n if (lastUndoRange != null) {\n if (Range.comparePoints(lastUndoRange.start, range.start) === 0) {\n lastUndoRange.start.column += range.end.column - range.start.column;\n lastUndoRange.end.column += range.end.column - range.start.column;\n }\n\n var cmp = lastUndoRange.compareRange(range);\n if (cmp == 1) {\n range.setStart(lastUndoRange.start);\n } else if (cmp == -1) {\n range.setEnd(lastUndoRange.end);\n }\n }\n\n return range;\n };\n this.replace = function(range, text) {\n return this.doc.replace(range, text);\n };\n this.moveText = function(fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function(x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n\n return toRange;\n };\n this.indentRows = function(startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row=startRow; row<=endRow; row++)\n this.doc.insertInLine({row: row, column: 0}, indentString);\n };\n this.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n } else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n\n this.$moveLines = function(firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0) return 0;\n var diff = row-firstRow;\n } else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength()-1) return 0;\n var diff = row-lastRow;\n } else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function(x){\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n \n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow+diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n this.moveLinesUp = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n this.moveLinesDown = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n this.duplicateLines = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n\n\n this.$clipRowToDocument = function(row) {\n return Math.max(0, Math.min(row, this.doc.getLength()-1));\n };\n\n this.$clipColumnToRow = function(row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n\n\n this.$clipPositionToDocument = function(row, column) {\n column = Math.max(0, column);\n\n if (row < 0) {\n row = 0;\n column = 0;\n } else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len-1).length;\n } else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n\n return {\n row: row,\n column: column\n };\n };\n\n this.$clipRangeToDocument = function(range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n } else {\n range.start.column = this.$clipColumnToRow(\n range.start.row,\n range.start.column\n );\n }\n\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n } else {\n range.end.column = this.$clipColumnToRow(\n range.end.row,\n range.end.column\n );\n }\n return range;\n };\n this.$wrapLimit = 80;\n this.$useWrapMode = false;\n this.$wrapLimitRange = {\n min : null,\n max : null\n };\n this.setUseWrapMode = function(useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n\n this._signal(\"changeWrapMode\");\n }\n };\n this.getUseWrapMode = function() {\n return this.$useWrapMode;\n };\n this.setWrapLimitRange = function(min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n this.adjustWrapLimit = function(desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = {min: $printMargin, max: $printMargin};\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n\n this.$constrainWrapLimit = function(wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n\n return wrapLimit;\n };\n this.getWrapLimit = function() {\n return this.$wrapLimit;\n };\n this.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n this.getWrapLimitRange = function() {\n return {\n min : this.$wrapLimitRange.min,\n max : this.$wrapLimitRange.max\n };\n };\n\n this.$updateInternalDataOnChange = function(delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n \n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n\n lastRow = firstRow;\n } else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n } else\n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n } else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n\n return removedFolds;\n };\n\n this.$updateRowLengthCache = function(firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n\n this.$updateWrapData = function(firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row ++;\n } else {\n tokens = [];\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(\n placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n } else {\n walkTokens = this.$getDisplayTokens(\n lines[row].substring(lastColumn, column),\n tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this),\n foldLine.end.row,\n lines[foldLine.end.row].length + 1\n );\n\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n var CHAR = 1,\n CHAR_EXT = 2,\n PLACEHOLDER_START = 3,\n PLACEHOLDER_BODY = 4,\n PUNCTUATION = 9,\n SPACE = 10,\n TAB = 11,\n TAB_SPACE = 12;\n\n\n this.$computeWrapSplits = function(tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n\n var isCode = this.$wrapAsCode;\n\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var displayed = tokens.slice(lastSplit, screenPos);\n var len = displayed.length;\n displayed.join(\"\")\n .replace(/12/g, function() {\n len -= 1;\n })\n .replace(/2/g, function() {\n len -= 1;\n });\n\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit -(wrapLimit>>2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split --;\n }\n } else {\n while (split > minSplit && tokens[split] < SPACE) {\n split --;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n this.$getDisplayTokens = function(str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n } else if((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n } else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n } else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n\n return [screenColumn, column];\n };\n\n this.lineWidgets = null;\n this.getRowLength = function(row) {\n if (this.lineWidgets)\n var h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else \n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n } else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n this.getRowLineCount = function(row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n } else {\n return this.$wrapData[row].length + 1;\n }\n };\n\n this.getRowWrapIndent = function(screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n } else {\n return 0;\n }\n };\n this.getScreenLastRowColumn = function(screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n this.getDocumentLastRowColumn = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n this.getDocumentLastRowColumnPosition = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n this.getRowSplitData = function(row) {\n if (!this.$useWrapMode) {\n return undefined;\n } else {\n return this.$wrapData[row];\n }\n };\n this.getScreenTabSize = function(screenColumn) {\n return this.$tabSize - screenColumn % this.$tabSize;\n };\n\n\n this.screenToDocumentRow = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n\n\n this.screenToDocumentColumn = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n this.screenToDocumentPosition = function(screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return {row: 0, column: 0};\n\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n } else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row+1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n } else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n } else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if(splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n\n return {row: docRow, column: docColumn};\n };\n this.documentToScreenPosition = function(docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n\n docRow = pos.row;\n docColumn = pos.column;\n\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n\n var rowEnd, row = 0;\n\n\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ?foldLine.start.row :Infinity;\n\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ?foldLine.start.row :Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n\n screenRow += this.getRowLength(row);\n row = rowEnd;\n\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n } else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow ++;\n screenRowOffset++;\n }\n textLine = textLine.substring(\n wrapRow[screenRowOffset - 1] || 0, textLine.length\n );\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n this.documentToScreenColumn = function(row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n this.documentToScreenRow = function(docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n this.getScreenLength = function() {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n } else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row :Infinity;\n\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row ++;\n if (row > foldStart) {\n row = fold.end.row+1;\n fold = this.$foldData[i++];\n foldStart = fold ?fold.start.row :Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n\n return screenRows;\n };\n this.$setFontMetrics = function(fm) {\n if (!this.$enableVarChar) return;\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n \n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n } else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n \n return [screenColumn, column];\n };\n };\n \n this.destroy = function() {\n if (this.bgTokenizer) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer = null;\n }\n this.$stopWorker();\n };\n\n this.isFullWidth = isFullWidth;\n function isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n }\n\n}).call(EditSession.prototype);\n\nacequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nacequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\n\n\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function(value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n } else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function() {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n }, \n wrapMethod: {\n set: function(val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$modified = true;\n this.$resetRowCache(0);\n this.$updateWrapData(0, this.getLength() - 1);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: { initialValue: true },\n firstLineNumber: {\n set: function() {this._signal(\"changeBreakpoint\");},\n initialValue: 1\n },\n useWorker: {\n set: function(useWorker) {\n this.$useWorker = useWorker;\n\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: {initialValue: true},\n tabSize: {\n set: function(tabSize) {\n if (isNaN(tabSize) || this.$tabSize === tabSize) return;\n\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: {initialValue: false},\n overwrite: {\n set: function(val) {this._signal(\"changeOverwrite\");},\n initialValue: false\n },\n newLineMode: {\n set: function(val) {this.doc.setNewLineMode(val);},\n get: function() {return this.doc.getNewLineMode();},\n handlesSet: true\n },\n mode: {\n set: function(val) { this.setMode(val); },\n get: function() { return this.$modeId; }\n }\n});\n\nexports.EditSession = EditSession;\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar lang = acequire(\"./lib/lang\");\nvar oop = acequire(\"./lib/oop\");\nvar Range = acequire(\"./range\").Range;\n\nvar Search = function() {\n this.$options = {};\n};\n\n(function() {\n this.set = function(options) {\n oop.mixin(this.$options, options);\n return this;\n };\n this.getOptions = function() {\n return lang.copyObject(this.$options);\n };\n this.setOptions = function(options) {\n this.$options = options;\n };\n this.find = function(session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n\n var firstRange = null;\n iterator.forEach(function(sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)\n ) {\n firstRange = null;\n return false;\n }\n\n return true;\n });\n\n return firstRange;\n };\n this.findAll = function(session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n \n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n \n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex\n ) {\n continue;\n }\n ranges.push(prevRange = new Range(\n row, startIndex, row + len - 1, endIndex\n ));\n if (len > 2)\n row = row + len - 2;\n }\n } else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.start.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row)\n i++;\n\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row)\n j--;\n \n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n\n return ranges;\n };\n this.replace = function(input, replacement) {\n var options = this.$options;\n\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n\n if (!re)\n return;\n\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n \n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--; ) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n \n return replacement;\n };\n\n this.$assembleRegExp = function(options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n\n var needle = options.needle;\n\n if (!options.needle)\n return options.re = false;\n\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n\n try {\n var re = new RegExp(needle, modifier);\n } catch(e) {\n re = false;\n }\n return options.re = re;\n };\n\n this.$assembleMultilineRegExp = function(needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++) try {\n re.push(new RegExp(parts[i], modifier));\n } catch(e) {\n return false;\n }\n return re;\n };\n\n this.$matchIterator = function(session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n \n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n\n if (backwards) {\n var forEach = function(callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function(callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n \n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function(row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0) return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1) return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset) return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function(row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length) break;\n re.lastIndex = last += 1;\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function(row, startIndex, callback) {\n var line = session.getLine(row);\n var m;\n var last = startIndex;\n re.lastIndex = startIndex;\n while((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row,last + length))\n return true;\n if (!length) {\n re.lastIndex = last += 1;\n if (last >= line.length) return false;\n }\n }\n };\n }\n return {forEach: forEach};\n };\n\n}).call(Search.prototype);\n\nfunction addWordBoundary(needle, options) {\n function wordBoundary(c) {\n if (/\\w/.test(c) || options.regExp) return \"\\\\b\";\n return \"\";\n }\n return wordBoundary(needle[0]) + needle\n + wordBoundary(needle[needle.length - 1]);\n}\n\nexports.Search = Search;\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar keyUtil = acequire(\"../lib/keys\");\nvar useragent = acequire(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\n\nfunction HashHandler(config, platform) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = true;\n}\n\nfunction MultiHashHandler(config, platform) {\n HashHandler.call(this, config, platform);\n this.$singleCommand = false;\n}\n\nMultiHashHandler.prototype = HashHandler.prototype;\n\n(function() {\n \n\n this.addCommand = function(command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n\n this.commands[command.name] = command;\n\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n\n this.removeCommand = function(command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n } else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n\n this.bindKey = function(key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({exec: command, bindKey: key, name: command.name || key});\n \n key.split(\"|\").forEach(function(keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function(keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n \n function getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position\n || (command.isDefault ? -100 : 0);\n }\n this._addCommandToBinding = function(keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n } else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n } else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n } else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n\n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n\n this.addCommands = function(commands) {\n commands && Object.keys(commands).forEach(function(name) {\n var command = commands[name];\n if (!command)\n return;\n \n if (typeof command === \"string\")\n return this.bindKey(command, name);\n\n if (typeof command === \"function\")\n command = { exec: command };\n\n if (typeof command !== \"object\")\n return;\n\n if (!command.name)\n command.name = name;\n\n this.addCommand(command);\n }, this);\n };\n\n this.removeCommands = function(commands) {\n Object.keys(commands).forEach(function(name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n\n this.bindKeys = function(keyList) {\n Object.keys(keyList).forEach(function(key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n\n this._buildKeyHash = function(command) {\n this.bindKey(command.bindKey, command);\n };\n this.parseKeys = function(keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(x){return x;});\n var key = parts.pop();\n\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return {key: key, hashId: -1};\n else if (parts.length == 1 && parts[0] == \"shift\")\n return {key: key.toUpperCase(), hashId: -1};\n\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return {key: key, hashId: hashId};\n };\n\n this.findKeyCommand = function findKeyCommand(hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n\n this.handleKeyboard = function(data, hashId, keyString, keyCode) {\n if (keyCode < 0) return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n \n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return {command: \"null\"};\n }\n }\n \n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return {command: command};\n };\n \n this.getStatusText = function(editor, data) {\n return data.$keyChain || \"\";\n };\n\n}).call(HashHandler.prototype);\n\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar MultiHashHandler = acequire(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\n\nvar CommandManager = function(platform, commands) {\n MultiHashHandler.call(this, commands, platform);\n this.byName = this.commands;\n this.setDefaultHandler(\"exec\", function(e) {\n return e.command.exec(e.editor, e.args || {});\n });\n};\n\noop.inherits(CommandManager, MultiHashHandler);\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.exec = function(command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--; ) {\n if (this.exec(command[i], editor, args)) return true;\n }\n return false;\n }\n\n if (typeof command === \"string\")\n command = this.commands[command];\n\n if (!command)\n return false;\n\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n\n if (command.isAvailable && !command.isAvailable(editor))\n return false;\n\n var e = {editor: editor, command: command, args: args};\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n\n return e.returnValue === false ? false : true;\n };\n\n this.toggleRecording = function(editor) {\n if (this.$inReplay)\n return;\n\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.removeEventListener(\"exec\", this.$addCommandToMacro);\n\n if (!this.macro.length)\n this.macro = this.oldMacro;\n\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function(e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n\n this.replay = function(editor) {\n if (this.$inReplay || !this.macro)\n return;\n\n if (this.recording)\n return this.toggleRecording(editor);\n\n try {\n this.$inReplay = true;\n this.macro.forEach(function(x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n } finally {\n this.$inReplay = false;\n }\n };\n\n this.trimMacro = function(m) {\n return m.map(function(x){\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n\n}).call(CommandManager.prototype);\n\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar lang = acequire(\"../lib/lang\");\nvar config = acequire(\"../config\");\nvar Range = acequire(\"../range\").Range;\n\nfunction bindKey(win, mac) {\n return {win: win, mac: mac};\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/settings_menu\", function(module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n}, {\n name: \"goToNextError\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/error_marker\", function(module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"goToPreviousError\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/error_marker\", function(module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"selectall\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function(editor) { editor.selectAll(); },\n readOnly: true\n}, {\n name: \"centerselection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function(editor) { editor.centerSelection(); },\n readOnly: true\n}, {\n name: \"gotoline\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function(editor) {\n var line = parseInt(prompt(\"Enter line number:\"), 10);\n if (!isNaN(line)) {\n editor.gotoLine(line);\n }\n },\n readOnly: true\n}, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function(editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function(editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"toggleFoldWidget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function(editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"toggleParentFoldWidget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function(editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldall\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function(editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldOther\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function(editor) { \n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"unfoldall\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function(editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"findnext\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function(editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"findprevious\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function(editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"selectOrFindNext\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function(editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext(); \n },\n readOnly: true\n}, {\n name: \"selectOrFindPrevious\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function(editor) { \n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n}, {\n name: \"find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor);});\n },\n readOnly: true\n}, {\n name: \"overwrite\",\n bindKey: \"Insert\",\n exec: function(editor) { editor.toggleOverwrite(); },\n readOnly: true\n}, {\n name: \"selecttostart\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function(editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"gotostart\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function(editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"selectup\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function(editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"golineup\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function(editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttoend\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function(editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"gotoend\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function(editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"selectdown\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function(editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"golinedown\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function(editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectwordleft\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function(editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotowordleft\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function(editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttolinestart\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotolinestart\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function(editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectleft\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function(editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotoleft\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function(editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectwordright\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function(editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotowordright\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function(editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttolineend\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotolineend\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function(editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectright\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function(editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotoright\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function(editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectpagedown\",\n bindKey: \"Shift-PageDown\",\n exec: function(editor) { editor.selectPageDown(); },\n readOnly: true\n}, {\n name: \"pagedown\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function(editor) { editor.scrollPageDown(); },\n readOnly: true\n}, {\n name: \"gotopagedown\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function(editor) { editor.gotoPageDown(); },\n readOnly: true\n}, {\n name: \"selectpageup\",\n bindKey: \"Shift-PageUp\",\n exec: function(editor) { editor.selectPageUp(); },\n readOnly: true\n}, {\n name: \"pageup\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function(editor) { editor.scrollPageUp(); },\n readOnly: true\n}, {\n name: \"gotopageup\",\n bindKey: \"PageUp\",\n exec: function(editor) { editor.gotoPageUp(); },\n readOnly: true\n}, {\n name: \"scrollup\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: \"scrolldown\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: \"selectlinestart\",\n bindKey: \"Shift-Home\",\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectlineend\",\n bindKey: \"Shift-End\",\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"togglerecording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function(editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n}, {\n name: \"replaymacro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function(editor) { editor.commands.replay(editor); },\n readOnly: true\n}, {\n name: \"jumptomatching\",\n bindKey: bindKey(\"Ctrl-P\", \"Ctrl-P\"),\n exec: function(editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"selecttomatching\",\n bindKey: bindKey(\"Ctrl-Shift-P\", \"Ctrl-Shift-P\"),\n exec: function(editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"expandToMatching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function(editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"passKeysToBrowser\",\n bindKey: bindKey(null, null),\n exec: function() {},\n passEvent: true,\n readOnly: true\n}, {\n name: \"copy\",\n exec: function(editor) {\n },\n readOnly: true\n},\n{\n name: \"cut\",\n exec: function(editor) {\n var range = editor.getSelectionRange();\n editor._emit(\"cut\", range);\n\n if (!editor.selection.isEmpty()) {\n editor.session.remove(range);\n editor.clearSelection();\n }\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"paste\",\n exec: function(editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n}, {\n name: \"removeline\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function(editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n}, {\n name: \"duplicateSelection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function(editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"sortlines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function(editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n}, {\n name: \"togglecomment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function(editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"toggleBlockComment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function(editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"modifyNumberUp\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function(editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"modifyNumberDown\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function(editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor, true);});\n }\n}, {\n name: \"undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function(editor) { editor.undo(); }\n}, {\n name: \"redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function(editor) { editor.redo(); }\n}, {\n name: \"copylinesup\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function(editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"movelinesup\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function(editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"copylinesdown\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function(editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"movelinesdown\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function(editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"del\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function(editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"backspace\",\n bindKey: bindKey(\n \"Shift-Backspace|Backspace\",\n \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"\n ),\n exec: function(editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"cut_or_delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function(editor) { \n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n } else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolinestart\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function(editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolineend\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function(editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolinestarthard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function(editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolineendhard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function(editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removewordleft\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function(editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removewordright\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function(editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function(editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"blockoutdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"blockindent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function(editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"insertstring\",\n exec: function(editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"inserttext\",\n exec: function(editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"splitline\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function(editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"transposeletters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function(editor) { editor.transposeLetters(); },\n multiSelectAction: function(editor) {editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"touppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function(editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"tolowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function(editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"expandtoline\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function(editor) {\n var range = editor.selection.getRange();\n\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"joinlines\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n } else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n}, {\n name: \"invertSelection\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n } else {\n newRanges.push(new Range(ranges[i-1].end.row, ranges[i-1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n\n editor.exitMultiSelectMode();\n editor.clearSelection();\n\n for(var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n}];\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nacequire(\"./lib/fixoldbrowsers\");\n\nvar oop = acequire(\"./lib/oop\");\nvar dom = acequire(\"./lib/dom\");\nvar lang = acequire(\"./lib/lang\");\nvar useragent = acequire(\"./lib/useragent\");\nvar TextInput = acequire(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = acequire(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = acequire(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = acequire(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = acequire(\"./edit_session\").EditSession;\nvar Search = acequire(\"./search\").Search;\nvar Range = acequire(\"./range\").Range;\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = acequire(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = acequire(\"./commands/default_commands\").commands;\nvar config = acequire(\"./config\");\nvar TokenIterator = acequire(\"./token_iterator\").TokenIterator;\nvar Editor = function(renderer, session) {\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n\n this.keyBinding = new KeyBinding(this);\n\n this.$blockScrolling = 0;\n this.$search = new Search().set({\n wrap: true\n });\n\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n\n this.$initOperationListeners();\n \n this._$emitInputEvent = lang.delayedCall(function() {\n this._signal(\"input\", {});\n if (this.session && this.session.bgTokenizer)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n \n this.on(\"change\", function(_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n\n this.setSession(session || new EditSession(\"\"));\n config.resetOptions(this);\n config._signal(\"editor\", this);\n};\n\nEditor.$uid = 0;\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$initOperationListeners = function() {\n function last(a) {return a[a.length - 1];}\n\n this.selections = [];\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this));\n\n this.on(\"change\", function() {\n this.curOp || this.startOperation();\n this.curOp.docChanged = true;\n }.bind(this), true);\n\n this.on(\"changeSelection\", function() {\n this.curOp || this.startOperation();\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n\n this.curOp = null;\n this.prevOp = {};\n this.startOperation = function(commadEvent) {\n if (this.curOp) {\n if (!commadEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commadEvent) {\n this.previousCommand = null;\n commadEvent = {};\n }\n\n this.$opResetTimer.schedule();\n this.curOp = {\n command: commadEvent.command || {},\n args: commadEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n if (this.curOp.command.name && this.curOp.command.scrollIntoView !== undefined)\n this.$blockScrolling++;\n };\n\n this.endOperation = function(e) {\n if (this.curOp) {\n if (e && e.returnValue === false)\n return this.curOp = null;\n this._signal(\"beforeEndOperation\");\n var command = this.curOp.command;\n if (command.name && this.$blockScrolling > 0)\n this.$blockScrolling--;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n \n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n this.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\n this.$historyTracker = function(e) {\n if (!this.$mergeUndoDeltas)\n return;\n\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n\n this.mergeNextCommand = true;\n } else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n\n if (\n this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000\n ) {\n shouldMerge = false; // the sequence is too long\n }\n\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n this.setKeyboardHandler = function(keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function(module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n } else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n this.getKeyboardHandler = function() {\n return this.keyBinding.getKeyboardHandler();\n };\n this.setSession = function(session) {\n if (this.session == session)\n return;\n if (this.curOp) this.endOperation();\n this.curOp = {};\n\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n \n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n \n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n \n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n \n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n \n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n \n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n \n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n \n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n \n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n \n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n \n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n \n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n \n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n \n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n \n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n \n this.onChangeMode();\n \n this.$blockScrolling += 1;\n this.onCursorChange();\n this.$blockScrolling -= 1;\n \n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n } else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n \n this.curOp = null;\n \n oldSession && oldSession._signal(\"changeEditor\", {oldEditor: this});\n session && session._signal(\"changeEditor\", {editor: this});\n\n if (session && session.bgTokenizer)\n session.bgTokenizer.scheduleStart();\n };\n this.getSession = function() {\n return this.session;\n };\n this.setValue = function(val, cursorPos) {\n this.session.doc.setValue(val);\n\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n\n return val;\n };\n this.getValue = function() {\n return this.session.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.resize = function(force) {\n this.renderer.onResize(force);\n };\n this.setTheme = function(theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n this.getTheme = function() {\n return this.renderer.getTheme();\n };\n this.setStyle = function(style) {\n this.renderer.setStyle(style);\n };\n this.unsetStyle = function(style) {\n this.renderer.unsetStyle(style);\n };\n this.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container, \"fontSize\");\n };\n this.setFontSize = function(size) {\n this.setOption(\"fontSize\", size);\n };\n\n this.$highlightBrackets = function() {\n if (this.session.$bracketHighlight) {\n this.session.removeMarker(this.session.$bracketHighlight);\n this.session.$bracketHighlight = null;\n }\n\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function() {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n var pos = session.findMatchingBracket(self.getCursorPosition());\n if (pos) {\n var range = new Range(pos.row, pos.column, pos.row, pos.column + 1);\n } else if (session.$mode.getMatching) {\n var range = session.$mode.getMatching(self.session);\n }\n if (range)\n session.$bracketHighlight = session.addMarker(range, \"ace_bracket\", \"text\");\n }, 50);\n };\n this.$highlightTags = function() {\n if (this.$highlightTagPending)\n return;\n var self = this;\n this.$highlightTagPending = true;\n setTimeout(function() {\n self.$highlightTagPending = false;\n \n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n \n var pos = self.getCursorPosition();\n var iterator = new TokenIterator(self.session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n \n if (!token || !/\\b(?:tag-open|tag-name)/.test(token.type)) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n return;\n }\n \n if (token.type.indexOf(\"tag-open\") != -1) {\n token = iterator.stepForward();\n if (!token)\n return;\n }\n \n var tag = token.value;\n var depth = 0;\n var prevToken = iterator.stepBackward();\n \n if (prevToken.value == '<'){\n do {\n prevToken = token;\n token = iterator.stepForward();\n \n if (token && token.value === tag && token.type.indexOf('tag-name') !== -1) {\n if (prevToken.value === '<'){\n depth++;\n } else if (prevToken.value === '= 0);\n } else {\n do {\n token = prevToken;\n prevToken = iterator.stepBackward();\n \n if (token && token.value === tag && token.type.indexOf('tag-name') !== -1) {\n if (prevToken.value === '<') {\n depth++;\n } else if (prevToken.value === ' 1))\n highlight = false;\n }\n\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n } else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n } else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n\n this.onSelectionChange = function(e) {\n var session = this.session;\n\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n } else {\n this.$updateHighlightActiveLine();\n }\n\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n\n this._signal(\"changeSelection\");\n };\n\n this.$getSelectionHighLightRegexp = function() {\n var session = this.session;\n\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n\n var startOuter = selection.start.column - 1;\n var endOuter = selection.end.column + 1;\n var line = session.getLine(selection.start.row);\n var lineCols = line.length;\n var needle = line.substring(Math.max(startOuter, 0),\n Math.min(endOuter, lineCols));\n if ((startOuter >= 0 && /^[\\w\\d]/.test(needle)) ||\n (endOuter <= lineCols && /[\\w\\d]$/.test(needle)))\n return;\n\n needle = line.substring(selection.start.column, selection.end.column);\n if (!/^[\\w\\d]+$/.test(needle))\n return;\n\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n\n return re;\n };\n\n\n this.onChangeFrontMarker = function() {\n this.renderer.updateFrontMarkers();\n };\n\n this.onChangeBackMarker = function() {\n this.renderer.updateBackMarkers();\n };\n\n\n this.onChangeBreakpoint = function() {\n this.renderer.updateBreakpoints();\n };\n\n this.onChangeAnnotation = function() {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n\n\n this.onChangeMode = function(e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n\n\n this.onChangeWrapLimit = function() {\n this.renderer.updateFull();\n };\n\n this.onChangeWrapMode = function() {\n this.renderer.onResize(true);\n };\n\n\n this.onChangeFold = function() {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n this.getSelectedText = function() {\n return this.session.getTextRange(this.getSelectionRange());\n };\n this.getCopyText = function() {\n var text = this.getSelectedText();\n this._signal(\"copy\", text);\n return text;\n };\n this.onCopy = function() {\n this.commands.exec(\"copy\", this);\n };\n this.onCut = function() {\n this.commands.exec(\"cut\", this);\n };\n this.onPaste = function(text, event) {\n var e = {text: text, event: event};\n this.commands.exec(\"paste\", this, e);\n };\n \n this.$handlePaste = function(e) {\n if (typeof e == \"string\") \n e = {text: e};\n this._signal(\"paste\", e);\n var text = e.text;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n this.insert(text);\n } else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n \n if (lines.length > ranges.length || lines.length < 2 || !lines[1])\n return this.commands.exec(\"insertstring\", this, text);\n \n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n this.session.remove(range);\n \n this.session.insert(range.start, lines[i]);\n }\n }\n };\n\n this.execCommand = function(command, args) {\n return this.commands.exec(command, this, args);\n };\n this.insert = function(text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n this.session.mergeUndoDeltas = false;\n this.$mergeNextCommand = false;\n }\n text = transform.text;\n\n }\n }\n \n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n var end = session.insert(cursor, text);\n\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(\n new Range(cursor.row, start + transform.selection[0],\n cursor.row, start + transform.selection[1]));\n } else { // Transform relative to the current row.\n this.selection.setSelectionRange(\n new Range(cursor.row + transform.selection[0],\n transform.selection[1],\n cursor.row + transform.selection[2],\n transform.selection[3]));\n }\n }\n\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n\n session.insert({row: cursor.row+1, column: 0}, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n };\n\n this.onTextInput = function(text) {\n this.keyBinding.onTextInput(text);\n };\n\n this.onCommandKey = function(e, hashId, keyCode) {\n this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n this.setOverwrite = function(overwrite) {\n this.session.setOverwrite(overwrite);\n };\n this.getOverwrite = function() {\n return this.session.getOverwrite();\n };\n this.toggleOverwrite = function() {\n this.session.toggleOverwrite();\n };\n this.setScrollSpeed = function(speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n this.getScrollSpeed = function() {\n return this.getOption(\"scrollSpeed\");\n };\n this.setDragDelay = function(dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n this.getDragDelay = function() {\n return this.getOption(\"dragDelay\");\n };\n this.setSelectionStyle = function(val) {\n this.setOption(\"selectionStyle\", val);\n };\n this.getSelectionStyle = function() {\n return this.getOption(\"selectionStyle\");\n };\n this.setHighlightActiveLine = function(shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n this.getHighlightActiveLine = function() {\n return this.getOption(\"highlightActiveLine\");\n };\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption(\"highlightGutterLine\");\n };\n this.setHighlightSelectedWord = function(shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n this.getHighlightSelectedWord = function() {\n return this.$highlightSelectedWord;\n };\n\n this.setAnimatedScroll = function(shouldAnimate){\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n\n this.getAnimatedScroll = function(){\n return this.renderer.getAnimatedScroll();\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.renderer.getShowInvisibles();\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n\n this.getDisplayIndentGuides = function() {\n return this.renderer.getDisplayIndentGuides();\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.renderer.getShowPrintMargin();\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.renderer.getPrintMarginColumn();\n };\n this.setReadOnly = function(readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n this.getReadOnly = function() {\n return this.getOption(\"readOnly\");\n };\n this.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n this.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n this.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n this.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n this.setShowFoldWidgets = function(show) {\n this.setOption(\"showFoldWidgets\", show);\n\n };\n this.getShowFoldWidgets = function() {\n return this.getOption(\"showFoldWidgets\");\n };\n\n this.setFadeFoldWidgets = function(fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n\n this.getFadeFoldWidgets = function() {\n return this.getOption(\"fadeFoldWidgets\");\n };\n this.remove = function(dir) {\n if (this.selection.isEmpty()){\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.removeWordRight = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeWordLeft = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineStart = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineEnd = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.splitLine = function() {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n this.transposeLetters = function() {\n if (!this.selection.isEmpty()) {\n return;\n }\n\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column-1);\n range = new Range(cursor.row, column-1, cursor.row, column+1);\n }\n else {\n swap = line.charAt(column-1) + line.charAt(column-2);\n range = new Range(cursor.row, column-2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n this.toLowerCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.toUpperCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.indent = function() {\n var session = this.session;\n var range = this.getSelectionRange();\n\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n } else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n \n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n } else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n this.blockIndent = function() {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n this.blockOutdent = function() {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n this.sortLines = function() {\n var rows = this.$getSelectedRows();\n var session = this.session;\n\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n\n lines.sort(function(a, b) {\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n if (a.toLowerCase() > b.toLowerCase()) return 1;\n return 0;\n });\n\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i-rows.first]);\n }\n };\n this.toggleCommentLines = function() {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n\n this.toggleBlockComment = function() {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n this.getNumberAt = function(row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if(m.index <= column && m.index+m[0].length >= column){\n var number = {\n value: m[0],\n start: m.index,\n end: m.index+m[0].length\n };\n return number;\n }\n }\n return null;\n };\n this.modifyNumber = function(amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column-1, row, column);\n\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n\n\n if(fp !== nr.end && column < fp){\n amount *= Math.pow(10, nr.end - column - 1);\n } else {\n amount *= Math.pow(10, nr.end - column);\n }\n\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start +1, column + nnr.length - nr.value.length));\n\n }\n }\n };\n this.removeLines = function() {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n\n this.duplicateSelection = function() {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n } else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n\n sel.setSelectionRange(range, reverse);\n }\n };\n this.moveLinesDown = function() {\n this.$moveLines(1, false);\n };\n this.moveLinesUp = function() {\n this.$moveLines(-1, false);\n };\n this.moveText = function(range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n this.copyLinesUp = function() {\n this.$moveLines(-1, true);\n };\n this.copyLinesDown = function() {\n this.$moveLines(1, true);\n };\n this.$moveLines = function(dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1) moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n } else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n \n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff) ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1) rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy) diff = 0;\n totalDiff += diff;\n }\n \n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n this.$getSelectedRows = function(range) {\n range = (range || this.getSelectionRange()).collapseRows();\n\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n\n this.onCompositionStart = function(text) {\n this.renderer.showComposition(this.getCursorPosition());\n };\n\n this.onCompositionUpdate = function(text) {\n this.renderer.setCompositionText(text);\n };\n\n this.onCompositionEnd = function() {\n this.renderer.hideComposition();\n };\n this.getFirstVisibleRow = function() {\n return this.renderer.getFirstVisibleRow();\n };\n this.getLastVisibleRow = function() {\n return this.renderer.getLastVisibleRow();\n };\n this.isRowVisible = function(row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n this.isRowFullyVisible = function(row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n this.$getVisibleRowCount = function() {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n\n this.$moveByPage = function(dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n\n this.$blockScrolling++;\n if (select === true) {\n this.selection.$moveSelection(function(){\n this.moveCursorBy(rows, 0);\n });\n } else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n this.$blockScrolling--;\n\n var scrollTop = renderer.scrollTop;\n\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n\n renderer.animateScrolling(scrollTop);\n };\n this.selectPageDown = function() {\n this.$moveByPage(1, true);\n };\n this.selectPageUp = function() {\n this.$moveByPage(-1, true);\n };\n this.gotoPageDown = function() {\n this.$moveByPage(1, false);\n };\n this.gotoPageUp = function() {\n this.$moveByPage(-1, false);\n };\n this.scrollPageDown = function() {\n this.$moveByPage(1);\n };\n this.scrollPageUp = function() {\n this.$moveByPage(-1);\n };\n this.scrollToRow = function(row) {\n this.renderer.scrollToRow(row);\n };\n this.scrollToLine = function(line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n this.centerSelection = function() {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n this.getCursorPosition = function() {\n return this.selection.getCursor();\n };\n this.getCursorPositionScreen = function() {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n this.getSelectionRange = function() {\n return this.selection.getRange();\n };\n this.selectAll = function() {\n this.$blockScrolling += 1;\n this.selection.selectAll();\n this.$blockScrolling -= 1;\n };\n this.clearSelection = function() {\n this.selection.clearSelection();\n };\n this.moveCursorTo = function(row, column) {\n this.selection.moveCursorTo(row, column);\n };\n this.moveCursorToPosition = function(pos) {\n this.selection.moveCursorToPosition(pos);\n };\n this.jumpToMatching = function(select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var token = prevToken || iterator.stepForward();\n\n if (!token) return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n \n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token && token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n \n if (prevToken.value === '<') {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if(this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n\n this.selection.setSelectionRange(selection);\n this.$blockScrolling -= 1;\n\n return replaced;\n };\n\n this.$tryReplace = function(range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n } else {\n return null;\n }\n };\n this.getLastSearchOptions = function() {\n return this.$search.getOptions();\n };\n this.find = function(needle, options, animate) {\n if (!options)\n options = {};\n\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({needle: needle});\n }\n\n this.$search.set(options);\n if (!options.start)\n this.$search.set({start: range});\n\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n this.findNext = function(options, animate) {\n this.find({skipCurrent: true, backwards: false}, options, animate);\n };\n this.findPrevious = function(options, animate) {\n this.find(options, {skipCurrent: true, backwards: true}, animate);\n };\n\n this.revealRange = function(range, animate) {\n this.$blockScrolling += 1;\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n this.$blockScrolling -= 1;\n\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n this.undo = function() {\n this.$blockScrolling++;\n this.session.getUndoManager().undo();\n this.$blockScrolling--;\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.redo = function() {\n this.$blockScrolling++;\n this.session.getUndoManager().redo();\n this.$blockScrolling--;\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.destroy = function() {\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session) {\n this.session.destroy();\n }\n };\n this.setAutoScrollEditorIntoView = function(enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function() {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function() {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function() {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())\n ) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n } else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n } else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function(enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n\n\n this.$resetCursorStyle = function() {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n\n}).call(Editor.prototype);\n\n\n\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function(style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", {data: style});\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function() {this.$updateHighlightActiveLine();},\n initialValue: true\n },\n highlightSelectedWord: {\n set: function(shouldHighlight) {this.$onSelectionChange();},\n initialValue: true\n },\n readOnly: {\n set: function(readOnly) {\n this.$resetCursorStyle(); \n },\n initialValue: false\n },\n cursorStyle: {\n set: function(val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: {initialValue: true},\n wrapBehavioursEnabled: {initialValue: true},\n autoScrollEditorIntoView: {\n set: function(val) {this.setAutoScrollEditorIntoView(val);}\n },\n keyboardHandler: {\n set: function(val) { this.setKeyboardHandler(val); },\n get: function() { return this.keybindingId; },\n handlesSet: true\n },\n\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n showLineNumbers: \"renderer\",\n showGutter: \"renderer\",\n displayIndentGuides: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\n\nexports.Editor = Editor;\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\nvar UndoManager = function() {\n this.reset();\n};\n\n(function() {\n this.execute = function(options) {\n var deltaSets = options.args[0];\n this.$doc = options.args[1];\n if (options.merge && this.hasUndo()){\n this.dirtyCounter--;\n deltaSets = this.$undoStack.pop().concat(deltaSets);\n }\n this.$undoStack.push(deltaSets);\n this.$redoStack = [];\n if (this.dirtyCounter < 0) {\n this.dirtyCounter = NaN;\n }\n this.dirtyCounter++;\n };\n this.undo = function(dontSelect) {\n var deltaSets = this.$undoStack.pop();\n var undoSelectionRange = null;\n if (deltaSets) {\n undoSelectionRange = this.$doc.undoChanges(deltaSets, dontSelect);\n this.$redoStack.push(deltaSets);\n this.dirtyCounter--;\n }\n\n return undoSelectionRange;\n };\n this.redo = function(dontSelect) {\n var deltaSets = this.$redoStack.pop();\n var redoSelectionRange = null;\n if (deltaSets) {\n redoSelectionRange =\n this.$doc.redoChanges(this.$deserializeDeltas(deltaSets), dontSelect);\n this.$undoStack.push(deltaSets);\n this.dirtyCounter++;\n }\n return redoSelectionRange;\n };\n this.reset = function() {\n this.$undoStack = [];\n this.$redoStack = [];\n this.dirtyCounter = 0;\n };\n this.hasUndo = function() {\n return this.$undoStack.length > 0;\n };\n this.hasRedo = function() {\n return this.$redoStack.length > 0;\n };\n this.markClean = function() {\n this.dirtyCounter = 0;\n };\n this.isClean = function() {\n return this.dirtyCounter === 0;\n };\n this.$serializeDeltas = function(deltaSets) {\n return cloneDeltaSetsObj(deltaSets, $serializeDelta);\n };\n this.$deserializeDeltas = function(deltaSets) {\n return cloneDeltaSetsObj(deltaSets, $deserializeDelta);\n };\n \n function $serializeDelta(delta){\n return {\n action: delta.action,\n start: delta.start,\n end: delta.end,\n lines: delta.lines.length == 1 ? null : delta.lines,\n text: delta.lines.length == 1 ? delta.lines[0] : null\n };\n }\n \n function $deserializeDelta(delta) {\n return {\n action: delta.action,\n start: delta.start,\n end: delta.end,\n lines: delta.lines || [delta.text]\n };\n }\n \n function cloneDeltaSetsObj(deltaSets_old, fnGetModifiedDelta) {\n var deltaSets_new = new Array(deltaSets_old.length);\n for (var i = 0; i < deltaSets_old.length; i++) {\n var deltaSet_old = deltaSets_old[i];\n var deltaSet_new = { group: deltaSet_old.group, deltas: new Array(deltaSet_old.length)};\n \n for (var j = 0; j < deltaSet_old.deltas.length; j++) {\n var delta_old = deltaSet_old.deltas[j];\n deltaSet_new.deltas[j] = fnGetModifiedDelta(delta_old);\n }\n \n deltaSets_new[i] = deltaSet_new;\n }\n return deltaSets_new;\n }\n \n}).call(UndoManager.prototype);\n\nexports.UndoManager = UndoManager;\n});\n\nace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar dom = acequire(\"../lib/dom\");\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\n\nvar Gutter = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_gutter-layer\";\n parentEl.appendChild(this.element);\n this.setShowFoldWidgets(this.$showFoldWidgets);\n \n this.gutterWidth = 0;\n\n this.$annotations = [];\n this.$updateAnnotations = this.$updateAnnotations.bind(this);\n\n this.$cells = [];\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.setSession = function(session) {\n if (this.session)\n this.session.removeEventListener(\"change\", this.$updateAnnotations);\n this.session = session;\n if (session)\n session.on(\"change\", this.$updateAnnotations);\n };\n\n this.addGutterDecoration = function(row, className){\n if (window.console)\n console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\n this.session.addGutterDecoration(row, className);\n };\n\n this.removeGutterDecoration = function(row, className){\n if (window.console)\n console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\n this.session.removeGutterDecoration(row, className);\n };\n\n this.setAnnotations = function(annotations) {\n this.$annotations = [];\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[i];\n var row = annotation.row;\n var rowInfo = this.$annotations[row];\n if (!rowInfo)\n rowInfo = this.$annotations[row] = {text: []};\n \n var annoText = annotation.text;\n annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\n\n if (rowInfo.text.indexOf(annoText) === -1)\n rowInfo.text.push(annoText);\n\n var type = annotation.type;\n if (type == \"error\")\n rowInfo.className = \" ace_error\";\n else if (type == \"warning\" && rowInfo.className != \" ace_error\")\n rowInfo.className = \" ace_warning\";\n else if (type == \"info\" && (!rowInfo.className))\n rowInfo.className = \" ace_info\";\n }\n };\n\n this.$updateAnnotations = function (delta) {\n if (!this.$annotations.length)\n return;\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n } else if (delta.action == 'remove') {\n this.$annotations.splice(firstRow, len + 1, null);\n } else {\n var args = new Array(len + 1);\n args.unshift(firstRow, 1);\n this.$annotations.splice.apply(this.$annotations, args);\n }\n };\n\n this.update = function(config) {\n var session = this.session;\n var firstRow = config.firstRow;\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n session.getLength() - 1);\n var fold = session.getNextFoldLine(firstRow);\n var foldStart = fold ? fold.start.row : Infinity;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var firstLineNumber = session.$firstLineNumber;\n var lastLineNumber = 0;\n \n var gutterRenderer = session.gutterRenderer || this.$renderer;\n\n var cell = null;\n var index = -1;\n var row = firstRow;\n while (true) {\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$cells.length > index + 1) {\n cell = this.$cells.pop();\n this.element.removeChild(cell.element);\n }\n break;\n }\n\n cell = this.$cells[++index];\n if (!cell) {\n cell = {element: null, textNode: null, foldWidget: null};\n cell.element = dom.createElement(\"div\");\n cell.textNode = document.createTextNode('');\n cell.element.appendChild(cell.textNode);\n this.element.appendChild(cell.element);\n this.$cells[index] = cell;\n }\n\n var className = \"ace_gutter-cell \";\n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row])\n className += this.$annotations[row].className;\n if (cell.element.className != className)\n cell.element.className = className;\n\n var height = session.getRowLength(row) * config.lineHeight + \"px\";\n if (height != cell.element.style.height)\n cell.element.style.height = height;\n\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n\n if (c) {\n if (!cell.foldWidget) {\n cell.foldWidget = dom.createElement(\"span\");\n cell.element.appendChild(cell.foldWidget);\n }\n var className = \"ace_fold-widget ace_\" + c;\n if (c == \"start\" && row == foldStart && row < fold.end.row)\n className += \" ace_closed\";\n else\n className += \" ace_open\";\n if (cell.foldWidget.className != className)\n cell.foldWidget.className = className;\n\n var height = config.lineHeight + \"px\";\n if (cell.foldWidget.style.height != height)\n cell.foldWidget.style.height = height;\n } else {\n if (cell.foldWidget) {\n cell.element.removeChild(cell.foldWidget);\n cell.foldWidget = null;\n }\n }\n \n var text = lastLineNumber = gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber;\n if (text !== cell.textNode.data)\n cell.textNode.data = text;\n\n row++;\n }\n\n this.element.style.height = config.minHeight + \"px\";\n\n if (this.$fixedWidth || session.$useWrapMode)\n lastLineNumber = session.getLength() + firstLineNumber;\n\n var gutterWidth = gutterRenderer \n ? gutterRenderer.getWidth(session, lastLineNumber, config)\n : lastLineNumber.toString().length * config.characterWidth;\n \n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._emit(\"changeGutterWidth\", gutterWidth);\n }\n };\n\n this.$fixedWidth = false;\n \n this.$showLineNumbers = true;\n this.$renderer = \"\";\n this.setShowLineNumbers = function(show) {\n this.$renderer = !show && {\n getWidth: function() {return \"\";},\n getText: function() {return \"\";}\n };\n };\n \n this.getShowLineNumbers = function() {\n return this.$showLineNumbers;\n };\n \n this.$showFoldWidgets = true;\n this.setShowFoldWidgets = function(show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n \n this.getShowFoldWidgets = function() {\n return this.$showFoldWidgets;\n };\n\n this.$computePadding = function() {\n if (!this.element.firstChild)\n return {left: 0, right: 0};\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = parseInt(style.paddingLeft) + 1 || 0;\n this.$padding.right = parseInt(style.paddingRight) || 0;\n return this.$padding;\n };\n\n this.getRegion = function(point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n\n}).call(Gutter.prototype);\n\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\nvar dom = acequire(\"../lib/dom\");\n\nvar Marker = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n};\n\n(function() {\n\n this.$padding = 0;\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n this.setSession = function(session) {\n this.session = session;\n };\n \n this.setMarkers = function(markers) {\n this.markers = markers;\n };\n\n this.update = function(config) {\n if (!config) return;\n\n this.config = config;\n\n\n var html = [];\n for (var key in this.markers) {\n var marker = this.markers[key];\n\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty()) continue;\n\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + (this.session.$bidiHandler.isBidiRow(range.start.row)\n ? this.session.$bidiHandler.getPosLeft(range.start.column)\n : range.start.column * config.characterWidth);\n marker.renderer(html, range, left, top, config);\n } else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n } else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n } else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n } else {\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n this.drawBidiSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n } else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n }\n this.element.innerHTML = html.join(\"\");\n };\n\n this.$getTop = function(row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n\n function getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n }\n this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0; \n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var clazzModified = null;\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n clazzModified = clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end);\n\n if (this.session.$bidiHandler.isBidiRow(row)) {\n this.drawBidiSingleLineMarker(stringBuilder, lineRange, clazzModified,\n layerConfig, row == end ? 0 : 1, extraStyle);\n } else {\n this.drawSingleLineMarker(stringBuilder, lineRange, clazzModified,\n layerConfig, row == end ? 0 : 1, extraStyle);\n }\n }\n };\n this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height, top, left;\n extraStyle = extraStyle || \"\";\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n } else {\n height = config.lineHeight;\n top = this.$getTop(range.start.row, config);\n left = padding + range.start.column * config.characterWidth;\n stringBuilder.push(\n \"
\"\n );\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n } else {\n var width = range.end.column * config.characterWidth;\n height = config.lineHeight;\n top = this.$getTop(range.end.row, config);\n stringBuilder.push(\n \"
\"\n );\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n \n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n\n stringBuilder.push(\n \"
\"\n );\n };\n this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n\n stringBuilder.push(\n \"
\"\n );\n };\n this.drawBidiSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n\n selections.forEach(function(selection) {\n stringBuilder.push(\n \"
\"\n );\n });\n };\n\n this.drawFullLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n\n stringBuilder.push(\n \"
\"\n );\n };\n \n this.drawScreenLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n\n stringBuilder.push(\n \"
\"\n );\n };\n\n}).call(Marker.prototype);\n\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar dom = acequire(\"../lib/dom\");\nvar lang = acequire(\"../lib/lang\");\nvar useragent = acequire(\"../lib/useragent\");\nvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\n\nvar Text = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.EOF_CHAR = \"\\xB6\";\n this.EOL_CHAR_LF = \"\\xAC\";\n this.EOL_CHAR_CRLF = \"\\xa4\";\n this.EOL_CHAR = this.EOL_CHAR_LF;\n this.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\n this.SPACE_CHAR = \"\\xB7\";\n this.$padding = 0;\n\n this.$updateEolChar = function() {\n var EOL_CHAR = this.session.doc.getNewLineCharacter() == \"\\n\"\n ? this.EOL_CHAR_LF\n : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.element.style.padding = \"0 \" + padding + \"px\";\n };\n\n this.getLineHeight = function() {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n\n this.getCharacterWidth = function() {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n \n this.$setFontMetrics = function(measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", function(e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n\n this.checkForSizeChanges = function() {\n this.$fontMetrics.checkForSizeChanges();\n };\n this.$pollSizeChanges = function() {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n this.setSession = function(session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n\n this.showInvisibles = false;\n this.setShowInvisibles = function(showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n\n this.showInvisibles = showInvisibles;\n this.$computeTabString();\n return true;\n };\n\n this.displayIndentGuides = true;\n this.setDisplayIndentGuides = function(display) {\n if (this.displayIndentGuides == display)\n return false;\n\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n\n this.$tabStrings = [];\n this.onChangeTabSize =\n this.$computeTabString = function() {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showInvisibles) {\n tabStr.push(\"\"\n + lang.stringRepeat(this.TAB_CHAR, i)\n + \"\");\n } else {\n tabStr.push(lang.stringRepeat(\" \", i));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = \"\";\n var tabClass = \"\";\n if (this.showInvisibles) {\n className += \" ace_invisible\";\n spaceClass = \" ace_invisible_space\";\n tabClass = \" ace_invisible_tab\";\n var spaceContent = lang.stringRepeat(this.SPACE_CHAR, this.tabSize);\n var tabContent = lang.stringRepeat(this.TAB_CHAR, this.tabSize);\n } else{\n var spaceContent = lang.stringRepeat(\" \", this.tabSize);\n var tabContent = spaceContent;\n }\n\n this.$tabStrings[\" \"] = \"\" + spaceContent + \"\";\n this.$tabStrings[\"\\t\"] = \"\" + tabContent + \"\";\n }\n };\n\n this.updateLines = function(config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n this.scrollLines(config);\n }\n this.config = config;\n\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n } else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx ++;\n }\n\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row :Infinity;\n }\n if (row > last)\n break;\n\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n var html = [];\n this.$renderLine(\n html, row, !this.$useLineGroups(), row == foldStart ? foldLine : false\n );\n lineElement.style.height = config.lineHeight * this.session.getRowLength(row) + \"px\";\n lineElement.innerHTML = html.join(\"\");\n }\n row++;\n }\n };\n\n this.scrollLines = function(config) {\n var oldConfig = this.config;\n this.config = config;\n\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n\n var el = this.element;\n if (oldConfig.firstRow < config.firstRow)\n for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)\n el.removeChild(el.firstChild);\n\n if (oldConfig.lastRow > config.lastRow)\n for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--)\n el.removeChild(el.lastChild);\n\n if (config.firstRow < oldConfig.firstRow) {\n var fragment = this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1);\n if (el.firstChild)\n el.insertBefore(fragment, el.firstChild);\n else\n el.appendChild(fragment);\n }\n\n if (config.lastRow > oldConfig.lastRow) {\n var fragment = this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow);\n el.appendChild(fragment);\n }\n };\n\n this.$renderLinesFragment = function(config, firstRow, lastRow) {\n var fragment = this.element.ownerDocument.createDocumentFragment();\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n\n var container = dom.createElement(\"div\");\n\n var html = [];\n this.$renderLine(html, row, false, row == foldStart ? foldLine : false);\n container.innerHTML = html.join(\"\");\n if (this.$useLineGroups()) {\n container.className = 'ace_line_group';\n fragment.appendChild(container);\n container.style.height = config.lineHeight * this.session.getRowLength(row) + \"px\";\n\n } else {\n while(container.firstChild)\n fragment.appendChild(container.firstChild);\n }\n\n row++;\n }\n return fragment;\n };\n\n this.update = function(config) {\n this.config = config;\n\n var html = [];\n var firstRow = config.firstRow, lastRow = config.lastRow;\n\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row :Infinity;\n }\n if (row > lastRow)\n break;\n\n if (this.$useLineGroups())\n html.push(\"
\");\n\n this.$renderLine(html, row, false, row == foldStart ? foldLine : false);\n\n if (this.$useLineGroups())\n html.push(\"
\"); // end the line group\n\n row++;\n }\n this.element.innerHTML = html.join(\"\");\n };\n\n this.$textToken = {\n \"text\": true,\n \"rparen\": true,\n \"lparen\": true\n };\n\n this.$renderToken = function(stringBuilder, screenColumn, token, value) {\n var self = this;\n var replaceReg = /\\t|&|<|>|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF\\uFFF9-\\uFFFC])|[\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3000-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var replaceFunc = function(c, a, b, tabIdx, idx4) {\n if (a) {\n return self.showInvisibles\n ? \"\" + lang.stringRepeat(self.SPACE_CHAR, c.length) + \"\"\n : c;\n } else if (c == \"&\") {\n return \"&\";\n } else if (c == \"<\") {\n return \"<\";\n } else if (c == \">\") {\n return \">\";\n } else if (c == \"\\t\") {\n var tabSize = self.session.getScreenTabSize(screenColumn + tabIdx);\n screenColumn += tabSize - 1;\n return self.$tabStrings[tabSize];\n } else if (c == \"\\u3000\") {\n var classToUse = self.showInvisibles ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n var space = self.showInvisibles ? self.SPACE_CHAR : \"\";\n screenColumn += 1;\n return \"\" + space + \"\";\n } else if (b) {\n return \"\" + self.SPACE_CHAR + \"\";\n } else {\n screenColumn += 1;\n return \"\" + c + \"\";\n }\n };\n\n var output = value.replace(replaceReg, replaceFunc);\n\n if (!this.$textToken[token.type]) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var style = \"\";\n if (token.type == \"fold\")\n style = \" style='width:\" + (token.value.length * this.config.characterWidth) + \"px;' \";\n stringBuilder.push(\"\", output, \"\");\n }\n else {\n stringBuilder.push(output);\n }\n return screenColumn + value.length;\n };\n\n this.renderIndentGuide = function(stringBuilder, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n stringBuilder.push(lang.stringRepeat(this.$tabStrings[\" \"], cols/this.tabSize));\n return value.substr(cols);\n } else if (value[0] == \"\\t\") {\n stringBuilder.push(lang.stringRepeat(this.$tabStrings[\"\\t\"], cols));\n return value.substr(cols);\n }\n return value;\n };\n\n this.$renderWrappedLine = function(stringBuilder, tokens, splits, onlyContents) {\n var chars = 0;\n var split = 0;\n var splitChars = splits[0];\n var screenColumn = 0;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n chars = value.length;\n value = this.renderIndentGuide(stringBuilder, value, splitChars);\n if (!value)\n continue;\n chars -= value.length;\n }\n\n if (chars + value.length < splitChars) {\n screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);\n chars += value.length;\n } else {\n while (chars + value.length >= splitChars) {\n screenColumn = this.$renderToken(\n stringBuilder, screenColumn,\n token, value.substring(0, splitChars - chars)\n );\n value = value.substring(splitChars - chars);\n chars = splitChars;\n\n if (!onlyContents) {\n stringBuilder.push(\"\",\n \"
\"\n );\n }\n\n stringBuilder.push(lang.stringRepeat(\"\\xa0\", splits.indent));\n\n split ++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(\n stringBuilder, screenColumn, token, value\n );\n }\n }\n }\n };\n\n this.$renderSimpleLine = function(stringBuilder, tokens) {\n var screenColumn = 0;\n var token = tokens[0];\n var value = token.value;\n if (this.displayIndentGuides)\n value = this.renderIndentGuide(stringBuilder, value);\n if (value)\n screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);\n for (var i = 1; i < tokens.length; i++) {\n token = tokens[i];\n value = token.value;\n screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);\n }\n };\n this.$renderLine = function(stringBuilder, row, onlyContents, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n\n\n if (!onlyContents) {\n stringBuilder.push(\n \"
\"\n );\n }\n\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length)\n this.$renderWrappedLine(stringBuilder, tokens, splits, onlyContents);\n else\n this.$renderSimpleLine(stringBuilder, tokens);\n }\n\n if (this.showInvisibles) {\n if (foldLine)\n row = foldLine.end.row;\n\n stringBuilder.push(\n \"\",\n row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR,\n \"\"\n );\n }\n if (!onlyContents)\n stringBuilder.push(\"
\");\n };\n\n this.$getFoldLineTokens = function(row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n\n col = from + value.length;\n idx += 1;\n }\n\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n } else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n\n var tokens = session.getTokens(row);\n foldLine.walk(function(placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n } else {\n if (isNewRow)\n tokens = session.getTokens(row);\n\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n\n return renderTokens;\n };\n\n this.$useLineGroups = function() {\n return this.session.getUseWrapMode();\n };\n\n this.destroy = function() {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$measureNode)\n this.$measureNode.parentNode.removeChild(this.$measureNode);\n delete this.$measureNode;\n };\n\n}).call(Text.prototype);\n\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar dom = acequire(\"../lib/dom\");\nvar isIE8;\n\nvar Cursor = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n \n if (isIE8 === undefined)\n isIE8 = !(\"opacity\" in this.element.style);\n\n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = (isIE8\n ? this.$updateVisibility\n : this.$updateOpacity).bind(this);\n};\n\n(function() {\n \n this.$updateVisibility = function(val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n cursors[i].style.visibility = val ? \"\" : \"hidden\";\n };\n this.$updateOpacity = function(val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n cursors[i].style.opacity = val ? \"\" : \"0\";\n };\n \n\n this.$padding = 0;\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n\n this.setSession = function(session) {\n this.session = session;\n };\n\n this.setBlinking = function(blinking) {\n if (blinking != this.isBlinking){\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n\n this.setBlinkInterval = function(blinkInterval) {\n if (blinkInterval != this.blinkInterval){\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n\n this.setSmoothBlinking = function(smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking && !isIE8) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.$updateCursors = (this.$updateOpacity).bind(this);\n this.restartTimer();\n }\n };\n\n this.addCursor = function() {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n\n this.removeCursor = function() {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n\n this.hideCursor = function() {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n\n this.showCursor = function() {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n\n this.restartTimer = function() {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n if (this.smoothBlinking) {\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n \n update(true);\n\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible)\n return;\n\n if (this.smoothBlinking) {\n setTimeout(function(){\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }.bind(this));\n }\n \n var blink = function(){\n this.timeoutId = setTimeout(function() {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n\n this.intervalId = setInterval(function() {\n update(true);\n blink();\n }, this.blinkInterval);\n\n blink();\n };\n\n this.getPixelPosition = function(position, onScreen) {\n if (!this.config || !this.session)\n return {left : 0, top : 0};\n\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n\n return {left : cursorLeft, top : cursorTop};\n };\n\n this.update = function(config) {\n this.config = config;\n\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n\n if (selections === undefined || selections.length === 0){\n selections = [{cursor: null}];\n }\n\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n\n var style = (this.cursors[cursorIndex++] || this.addCursor()).style;\n \n if (!this.drawCursor) {\n style.left = pixelPos.left + \"px\";\n style.top = pixelPos.top + \"px\";\n style.width = config.characterWidth + \"px\";\n style.height = config.lineHeight + \"px\";\n } else {\n this.drawCursor(style, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n \n this.drawCursor = null;\n\n this.$setOverwrite = function(overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n\n this.destroy = function() {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n\n}).call(Cursor.prototype);\n\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar dom = acequire(\"./lib/dom\");\nvar event = acequire(\"./lib/event\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar ScrollBar = function(parent) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + this.classSuffix;\n\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.element.appendChild(this.inner);\n\n parent.appendChild(this.element);\n\n this.setVisible(false);\n this.skipEvent = false;\n\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n};\n\n(function() {\n oop.implement(this, EventEmitter);\n\n this.setVisible = function(isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n}).call(ScrollBar.prototype);\nvar VScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollTop = 0;\n this.scrollHeight = 0;\n renderer.$scrollbarWidth = \n this.width = dom.scrollbarWidth(parent.ownerDocument);\n this.inner.style.width =\n this.element.style.width = (this.width || 15) + 5 + \"px\";\n this.$minWidth = 0;\n};\n\noop.inherits(VScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = '-v';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", {data: this.scrollTop});\n }\n this.skipEvent = false;\n };\n this.getWidth = function() {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n this.setHeight = function(height) {\n this.element.style.height = height + \"px\";\n };\n this.setInnerHeight =\n this.setScrollHeight = function(height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n } else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n this.setScrollTop = function(scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n\n}).call(VScrollBar.prototype);\nvar HScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollLeft = 0;\n this.height = renderer.$scrollbarWidth;\n this.inner.style.height =\n this.element.style.height = (this.height || 15) + 5 + \"px\";\n};\n\noop.inherits(HScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = '-h';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", {data: this.scrollLeft});\n }\n this.skipEvent = false;\n };\n this.getHeight = function() {\n return this.isVisible ? this.height : 0;\n };\n this.setWidth = function(width) {\n this.element.style.width = width + \"px\";\n };\n this.setInnerWidth = function(width) {\n this.inner.style.width = width + \"px\";\n };\n this.setScrollWidth = function(width) {\n this.inner.style.width = width + \"px\";\n };\n this.setScrollLeft = function(scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n\n}).call(HScrollBar.prototype);\n\n\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\n\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar event = acequire(\"./lib/event\");\n\n\nvar RenderLoop = function(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.window = win || window;\n};\n\n(function() {\n\n\n this.schedule = function(change) {\n this.changes = this.changes | change;\n if (!this.pending && this.changes) {\n this.pending = true;\n var _self = this;\n event.nextFrame(function() {\n _self.pending = false;\n var changes;\n while (changes = _self.changes) {\n _self.changes = 0;\n _self.onRender(changes);\n }\n }, this.window);\n }\n };\n\n}).call(RenderLoop.prototype);\n\nexports.RenderLoop = RenderLoop;\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\nvar oop = acequire(\"../lib/oop\");\nvar dom = acequire(\"../lib/dom\");\nvar lang = acequire(\"../lib/lang\");\nvar useragent = acequire(\"../lib/useragent\");\nvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\n\nvar CHAR_COUNT = 0;\n\nvar FontMetrics = exports.FontMetrics = function(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n \n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n \n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n \n \n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n \n if (!CHAR_COUNT)\n this.$testFractionalRect();\n this.$measureNode.innerHTML = lang.stringRepeat(\"X\", CHAR_COUNT);\n \n this.$characterSize = {width: 0, height: 0};\n this.checkForSizeChanges();\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n \n this.$characterSize = {width: 0, height: 0};\n \n this.$testFractionalRect = function() {\n var el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(el.style);\n el.style.width = \"0.2px\";\n document.documentElement.appendChild(el);\n var w = el.getBoundingClientRect().width;\n if (w > 0 && w < 1)\n CHAR_COUNT = 50;\n else\n CHAR_COUNT = 100;\n el.parentNode.removeChild(el);\n };\n \n this.$setMeasureNodeStyles = function(style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n } else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n\n this.checkForSizeChanges = function() {\n var size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", {data: size});\n }\n };\n\n this.$pollSizeChanges = function() {\n if (this.$pollSizeChangesTimer)\n return this.$pollSizeChangesTimer;\n var self = this;\n return this.$pollSizeChangesTimer = setInterval(function() {\n self.checkForSizeChanges();\n }, 500);\n };\n \n this.setPolling = function(val) {\n if (val) {\n this.$pollSizeChanges();\n } else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n\n this.$measureSizes = function() {\n if (CHAR_COUNT === 50) {\n var rect = null;\n try { \n rect = this.$measureNode.getBoundingClientRect();\n } catch(e) {\n rect = {width: 0, height:0 };\n }\n var size = {\n height: rect.height,\n width: rect.width / CHAR_COUNT\n };\n } else {\n var size = {\n height: this.$measureNode.clientHeight,\n width: this.$measureNode.clientWidth / CHAR_COUNT\n };\n }\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n\n this.$measureCharWidth = function(ch) {\n this.$main.innerHTML = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n \n this.getCharacterWidth = function(ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n\n this.destroy = function() {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n\n}).call(FontMetrics.prototype);\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/config\",\"ace/lib/useragent\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar dom = acequire(\"./lib/dom\");\nvar config = acequire(\"./config\");\nvar useragent = acequire(\"./lib/useragent\");\nvar GutterLayer = acequire(\"./layer/gutter\").Gutter;\nvar MarkerLayer = acequire(\"./layer/marker\").Marker;\nvar TextLayer = acequire(\"./layer/text\").Text;\nvar CursorLayer = acequire(\"./layer/cursor\").Cursor;\nvar HScrollBar = acequire(\"./scrollbar\").HScrollBar;\nvar VScrollBar = acequire(\"./scrollbar\").VScrollBar;\nvar RenderLoop = acequire(\"./renderloop\").RenderLoop;\nvar FontMetrics = acequire(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = \".ace_editor {\\\nposition: relative;\\\noverflow: hidden;\\\nfont: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\\\ndirection: ltr;\\\ntext-align: left;\\\n-webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\\n}\\\n.ace_scroller {\\\nposition: absolute;\\\noverflow: hidden;\\\ntop: 0;\\\nbottom: 0;\\\nbackground-color: inherit;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\ncursor: text;\\\n}\\\n.ace_content {\\\nposition: absolute;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\nmin-width: 100%;\\\n}\\\n.ace_dragging .ace_scroller:before{\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\nbottom: 0;\\\ncontent: '';\\\nbackground: rgba(250, 250, 250, 0.01);\\\nz-index: 1000;\\\n}\\\n.ace_dragging.ace_dark .ace_scroller:before{\\\nbackground: rgba(0, 0, 0, 0.01);\\\n}\\\n.ace_selecting, .ace_selecting * {\\\ncursor: text !important;\\\n}\\\n.ace_gutter {\\\nposition: absolute;\\\noverflow : hidden;\\\nwidth: auto;\\\ntop: 0;\\\nbottom: 0;\\\nleft: 0;\\\ncursor: default;\\\nz-index: 4;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\n}\\\n.ace_gutter-active-line {\\\nposition: absolute;\\\nleft: 0;\\\nright: 0;\\\n}\\\n.ace_scroller.ace_scroll-left {\\\nbox-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\\\n}\\\n.ace_gutter-cell {\\\npadding-left: 19px;\\\npadding-right: 6px;\\\nbackground-repeat: no-repeat;\\\n}\\\n.ace_gutter-cell.ace_error {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==\\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_warning {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==\\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_info {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=\\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_dark .ace_gutter-cell.ace_info {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_scrollbar {\\\nposition: absolute;\\\nright: 0;\\\nbottom: 0;\\\nz-index: 6;\\\n}\\\n.ace_scrollbar-inner {\\\nposition: absolute;\\\ncursor: text;\\\nleft: 0;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-v{\\\noverflow-x: hidden;\\\noverflow-y: scroll;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-h {\\\noverflow-x: scroll;\\\noverflow-y: hidden;\\\nleft: 0;\\\n}\\\n.ace_print-margin {\\\nposition: absolute;\\\nheight: 100%;\\\n}\\\n.ace_text-input {\\\nposition: absolute;\\\nz-index: 0;\\\nwidth: 0.5em;\\\nheight: 1em;\\\nopacity: 0;\\\nbackground: transparent;\\\n-moz-appearance: none;\\\nappearance: none;\\\nborder: none;\\\nresize: none;\\\noutline: none;\\\noverflow: hidden;\\\nfont: inherit;\\\npadding: 0 1px;\\\nmargin: 0 -1px;\\\ntext-indent: -1em;\\\n-ms-user-select: text;\\\n-moz-user-select: text;\\\n-webkit-user-select: text;\\\nuser-select: text;\\\nwhite-space: pre!important;\\\n}\\\n.ace_text-input.ace_composition {\\\nbackground: inherit;\\\ncolor: inherit;\\\nz-index: 1000;\\\nopacity: 1;\\\ntext-indent: 0;\\\n}\\\n.ace_layer {\\\nz-index: 1;\\\nposition: absolute;\\\noverflow: hidden;\\\nword-wrap: normal;\\\nwhite-space: pre;\\\nheight: 100%;\\\nwidth: 100%;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\npointer-events: none;\\\n}\\\n.ace_gutter-layer {\\\nposition: relative;\\\nwidth: auto;\\\ntext-align: right;\\\npointer-events: auto;\\\n}\\\n.ace_text-layer {\\\nfont: inherit !important;\\\n}\\\n.ace_cjk {\\\ndisplay: inline-block;\\\ntext-align: center;\\\n}\\\n.ace_cursor-layer {\\\nz-index: 4;\\\n}\\\n.ace_cursor {\\\nz-index: 4;\\\nposition: absolute;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\nborder-left: 2px solid;\\\ntransform: translatez(0);\\\n}\\\n.ace_multiselect .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_slim-cursors .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_overwrite-cursors .ace_cursor {\\\nborder-left-width: 0;\\\nborder-bottom: 1px solid;\\\n}\\\n.ace_hidden-cursors .ace_cursor {\\\nopacity: 0.2;\\\n}\\\n.ace_smooth-blinking .ace_cursor {\\\n-webkit-transition: opacity 0.18s;\\\ntransition: opacity 0.18s;\\\n}\\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\\nposition: absolute;\\\nz-index: 3;\\\n}\\\n.ace_marker-layer .ace_selection {\\\nposition: absolute;\\\nz-index: 5;\\\n}\\\n.ace_marker-layer .ace_bracket {\\\nposition: absolute;\\\nz-index: 6;\\\n}\\\n.ace_marker-layer .ace_active-line {\\\nposition: absolute;\\\nz-index: 2;\\\n}\\\n.ace_marker-layer .ace_selected-word {\\\nposition: absolute;\\\nz-index: 4;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\n}\\\n.ace_line .ace_fold {\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\ndisplay: inline-block;\\\nheight: 11px;\\\nmargin-top: -2px;\\\nvertical-align: middle;\\\nbackground-image:\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\\nbackground-repeat: no-repeat, repeat-x;\\\nbackground-position: center center, top left;\\\ncolor: transparent;\\\nborder: 1px solid black;\\\nborder-radius: 2px;\\\ncursor: pointer;\\\npointer-events: auto;\\\n}\\\n.ace_dark .ace_fold {\\\n}\\\n.ace_fold:hover{\\\nbackground-image:\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_tooltip {\\\nbackground-color: #FFF;\\\nbackground-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));\\\nbackground-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\\\nborder: 1px solid gray;\\\nborder-radius: 1px;\\\nbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\\ncolor: black;\\\nmax-width: 100%;\\\npadding: 3px 4px;\\\nposition: fixed;\\\nz-index: 999999;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\ncursor: default;\\\nwhite-space: pre;\\\nword-wrap: break-word;\\\nline-height: normal;\\\nfont-style: normal;\\\nfont-weight: normal;\\\nletter-spacing: normal;\\\npointer-events: none;\\\n}\\\n.ace_folding-enabled > .ace_gutter-cell {\\\npadding-right: 13px;\\\n}\\\n.ace_fold-widget {\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\nmargin: 0 -12px 0 1px;\\\ndisplay: none;\\\nwidth: 11px;\\\nvertical-align: top;\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: center;\\\nborder-radius: 3px;\\\nborder: 1px solid transparent;\\\ncursor: pointer;\\\n}\\\n.ace_folding-enabled .ace_fold-widget {\\\ndisplay: inline-block; \\\n}\\\n.ace_fold-widget.ace_end {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_fold-widget.ace_closed {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\\n}\\\n.ace_fold-widget:hover {\\\nborder: 1px solid rgba(0, 0, 0, 0.3);\\\nbackground-color: rgba(255, 255, 255, 0.2);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\\n}\\\n.ace_fold-widget:active {\\\nborder: 1px solid rgba(0, 0, 0, 0.4);\\\nbackground-color: rgba(0, 0, 0, 0.05);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\\n}\\\n.ace_dark .ace_fold-widget {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_end {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_closed {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_dark .ace_fold-widget:hover {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\nbackground-color: rgba(255, 255, 255, 0.1);\\\n}\\\n.ace_dark .ace_fold-widget:active {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\n}\\\n.ace_fold-widget.ace_invalid {\\\nbackground-color: #FFB4B4;\\\nborder-color: #DE5555;\\\n}\\\n.ace_fade-fold-widgets .ace_fold-widget {\\\n-webkit-transition: opacity 0.4s ease 0.05s;\\\ntransition: opacity 0.4s ease 0.05s;\\\nopacity: 0;\\\n}\\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\\n-webkit-transition: opacity 0.05s ease 0.05s;\\\ntransition: opacity 0.05s ease 0.05s;\\\nopacity:1;\\\n}\\\n.ace_underline {\\\ntext-decoration: underline;\\\n}\\\n.ace_bold {\\\nfont-weight: bold;\\\n}\\\n.ace_nobold .ace_bold {\\\nfont-weight: normal;\\\n}\\\n.ace_italic {\\\nfont-style: italic;\\\n}\\\n.ace_error-marker {\\\nbackground-color: rgba(255, 0, 0,0.2);\\\nposition: absolute;\\\nz-index: 9;\\\n}\\\n.ace_highlight-marker {\\\nbackground-color: rgba(255, 255, 0,0.2);\\\nposition: absolute;\\\nz-index: 8;\\\n}\\\n.ace_br1 {border-top-left-radius : 3px;}\\\n.ace_br2 {border-top-right-radius : 3px;}\\\n.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\\\n.ace_br4 {border-bottom-right-radius: 3px;}\\\n.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\\\n.ace_br8 {border-bottom-left-radius : 3px;}\\\n.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_text-input-ios {\\\nposition: absolute !important;\\\ntop: -100000px !important;\\\nleft: -100000px !important;\\\n}\\\n\";\n\ndom.importCssString(editorCss, \"ace_editor.css\");\n\nvar VirtualRenderer = function(container, theme) {\n var _self = this;\n\n this.container = container || dom.createElement(\"div\");\n this.$keepTextAreaAtCursor = !useragent.isOldIE;\n\n dom.addCssClass(this.container, \"ace_editor\");\n\n this.setTheme(theme);\n\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", true);\n\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n this.container.appendChild(this.scroller);\n\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n\n this.$markerBack = new MarkerLayer(this.content);\n\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n\n this.$markerFront = new MarkerLayer(this.content);\n\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n\n this.scrollBar = \n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.addEventListener(\"scroll\", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n\n this.scrollTop = 0;\n this.scrollLeft = 0;\n\n this.cursorPos = {\n row : 0,\n column : 0\n };\n\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.addEventListener(\"changeCharacterSize\", function(e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n\n this.layerConfig = {\n width : 1,\n padding : 0,\n firstRow : 0,\n firstRowScreen: 0,\n lastRow : 0,\n lineHeight : 0,\n characterWidth : 0,\n minHeight : 1,\n maxHeight : 1,\n offset : 0,\n height : 1,\n gutterOffset: 1\n };\n \n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n\n this.$loop = new RenderLoop(\n this.$renderChanges.bind(this),\n this.container.ownerDocument.defaultView\n );\n this.$loop.schedule(this.CHANGE_FULL);\n\n this.updateCharacterSize();\n this.setPadding(4);\n config.resetOptions(this);\n config._emit(\"renderer\", this);\n};\n\n(function() {\n\n this.CHANGE_CURSOR = 1;\n this.CHANGE_MARKER = 2;\n this.CHANGE_GUTTER = 4;\n this.CHANGE_SCROLL = 8;\n this.CHANGE_LINES = 16;\n this.CHANGE_TEXT = 32;\n this.CHANGE_SIZE = 64;\n this.CHANGE_MARKER_BACK = 128;\n this.CHANGE_MARKER_FRONT = 256;\n this.CHANGE_FULL = 512;\n this.CHANGE_H_SCROLL = 1024;\n\n oop.implement(this, EventEmitter);\n\n this.updateCharacterSize = function() {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n };\n this.setSession = function(session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n \n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n \n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n \n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n this.updateLines = function(firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n\n this.onChangeNewLineMode = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n \n this.onChangeTabSize = function() {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n this.updateText = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n this.updateFull = function(force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n this.updateFontSize = function() {\n this.$textLayer.checkForSizeChanges();\n };\n\n this.$changes = 0;\n this.$updateSizeAsync = function() {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n this.onResize = function(force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n\n \n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n\n if (force)\n this.$gutterLayer.$padding = null;\n\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarV.scrollLeft = this.scrollBarV.scrollTop = null;\n };\n \n this.$updateCachedSize = function(force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n\n changes = changes | this.CHANGE_SCROLL;\n }\n\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n \n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n \n this.gutterWidth = gutterWidth;\n \n this.scrollBarH.element.style.left = \n this.scroller.style.left = gutterWidth + \"px\";\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth()); \n \n this.scrollBarH.element.style.right = \n this.scroller.style.right = this.scrollBarV.getWidth() + \"px\";\n this.scroller.style.bottom = this.scrollBarH.getHeight() + \"px\";\n\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force)\n changes |= this.CHANGE_FULL;\n }\n \n size.$dirty = !width || !height;\n\n if (changes)\n this._signal(\"resize\", oldSize);\n\n return changes;\n };\n\n this.onGutterResize = function() {\n var gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else {\n this.$computeLayerConfig();\n this.$loop.schedule(this.CHANGE_MARKER);\n }\n };\n this.adjustWrapLimit = function() {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n this.setAnimatedScroll = function(shouldAnimate){\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n this.getAnimatedScroll = function() {\n return this.$animatedScroll;\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.getOption(\"showInvisibles\");\n };\n this.getDisplayIndentGuides = function() {\n return this.getOption(\"displayIndentGuides\");\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.getOption(\"showPrintMargin\");\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.setOption(\"printMarginColumn\", showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.getOption(\"printMarginColumn\");\n };\n this.getShowGutter = function(){\n return this.getOption(\"showGutter\");\n };\n this.setShowGutter = function(show){\n return this.setOption(\"showGutter\", show);\n };\n\n this.getFadeFoldWidgets = function(){\n return this.getOption(\"fadeFoldWidgets\");\n };\n\n this.setFadeFoldWidgets = function(show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption(\"highlightGutterLine\");\n };\n\n this.$updateGutterLineHighlight = function() {\n var pos = this.$cursorLayer.$pixelPos;\n var height = this.layerConfig.lineHeight;\n if (this.session.getUseWrapMode()) {\n var cursor = this.session.selection.getCursor();\n cursor.column = 0;\n pos = this.$cursorLayer.getPixelPosition(cursor, true);\n height *= this.session.getRowLength(cursor.row);\n }\n this.$gutterLineHighlight.style.top = pos.top - this.layerConfig.offset + \"px\";\n this.$gutterLineHighlight.style.height = height + \"px\";\n };\n\n this.$updatePrintMargin = function() {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n\n var style = this.$printMarginEl.style;\n style.left = ((this.characterWidth * this.$printMarginColumn) + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n \n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n this.getContainerElement = function() {\n return this.container;\n };\n this.getMouseEventTarget = function() {\n return this.scroller;\n };\n this.getTextAreaContainer = function() {\n return this.container;\n };\n this.$moveTextAreaToCursor = function() {\n if (!this.$keepTextAreaAtCursor)\n return;\n var config = this.layerConfig;\n var posTop = this.$cursorLayer.$pixelPos.top;\n var posLeft = this.$cursorLayer.$pixelPos.left;\n posTop -= config.offset;\n\n var style = this.textarea.style;\n var h = this.lineHeight;\n if (posTop < 0 || posTop > config.height - h) {\n style.top = style.left = \"0\";\n return;\n }\n\n var w = this.characterWidth;\n if (this.$composition) {\n var val = this.textarea.value.replace(/^\\x01+/, \"\");\n w *= (this.session.$getStringScreenWidth(val)[0]+2);\n h += 2;\n }\n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n\n posLeft += this.gutterWidth;\n style.height = h + \"px\";\n style.width = w + \"px\";\n style.left = Math.min(posLeft, this.$size.scrollerWidth - w) + \"px\";\n style.top = Math.min(posTop, this.$size.height - h) + \"px\";\n };\n this.getFirstVisibleRow = function() {\n return this.layerConfig.firstRow;\n };\n this.getFirstFullyVisibleRow = function() {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n this.getLastFullyVisibleRow = function() {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n this.getLastVisibleRow = function() {\n return this.layerConfig.lastRow;\n };\n\n this.$padding = null;\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n \n this.setScrollMargin = function(top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top|0;\n sm.bottom = bottom|0;\n sm.right = right|0;\n sm.left = left|0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n this.getHScrollBarAlwaysVisible = function() {\n return this.$hScrollBarAlwaysVisible;\n };\n this.setHScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n this.getVScrollBarAlwaysVisible = function() {\n return this.$vScrollBarAlwaysVisible;\n };\n this.setVScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n\n this.$updateScrollBarV = function() {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n this.$updateScrollBarH = function() {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n \n this.$frozen = false;\n this.freeze = function() {\n this.$frozen = true;\n };\n \n this.unfreeze = function() {\n this.$frozen = false;\n };\n\n this.$renderChanges = function(changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return; \n } \n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n \n this._signal(\"beforeRender\");\n\n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL\n ) {\n changes |= this.$computeLayerConfig();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - this.layerConfig.firstRow) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n this.$gutterLayer.element.style.marginTop = (-config.offset) + \"px\";\n this.content.style.marginTop = (-config.offset) + \"px\";\n this.content.style.width = config.width + 2 * this.$padding + \"px\";\n this.content.style.height = config.minHeight + \"px\";\n }\n if (changes & this.CHANGE_H_SCROLL) {\n this.content.style.marginLeft = -this.scrollLeft + \"px\";\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller\" : \"ace_scroller ace_scroll-left\";\n }\n if (changes & this.CHANGE_FULL) {\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this.$highlightGutterLine && this.$updateGutterLineHighlight();\n this._signal(\"afterRender\");\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$highlightGutterLine && this.$updateGutterLineHighlight();\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\");\n return;\n }\n\n if (changes & this.CHANGE_TEXT) {\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this.$highlightGutterLine && this.$updateGutterLineHighlight();\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n\n this._signal(\"afterRender\");\n };\n\n \n this.$autosize = function() {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight,\n Math.max((this.$minLines || 1) * this.lineHeight, height)\n ) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n var vScroll = height > maxHeight;\n \n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n \n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n \n this._signal(\"autosize\");\n }\n };\n \n this.$computeLayerConfig = function() {\n var session = this.session;\n var size = this.$size;\n \n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n\n var longestLine = this.$getLongestLine();\n \n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n\n var offset = this.scrollTop % this.lineHeight;\n var minHeight = size.scrollerHeight + this.lineHeight;\n \n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n \n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top,\n Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, \n longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n \n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n\n offset = this.scrollTop - firstRowScreen * lineHeight;\n\n var changes = 0;\n if (this.layerConfig.width != longestLine) \n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes = this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n \n this.layerConfig = {\n width : longestLine,\n padding : this.$padding,\n firstRow : firstRow,\n firstRowScreen: firstRowScreen,\n lastRow : lastRow,\n lineHeight : lineHeight,\n characterWidth : this.characterWidth,\n minHeight : minHeight,\n maxHeight : maxHeight,\n offset : offset,\n gutterOffset : lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height : this.$size.scrollerHeight\n };\n\n return changes;\n };\n\n this.$updateLines = function() {\n if (!this.$changedLines) return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n\n var layerConfig = this.layerConfig;\n\n if (firstRow > layerConfig.lastRow + 1) { return; }\n if (lastRow < layerConfig.firstRow) { return; }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n\n this.$getLongestLine = function() {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n this.updateFrontMarkers = function() {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n this.updateBackMarkers = function() {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n this.addGutterDecoration = function(row, className){\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n this.removeGutterDecoration = function(row, className){\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n this.updateBreakpoints = function(rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.setAnnotations = function(annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.updateCursor = function() {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n this.hideCursor = function() {\n this.$cursorLayer.hideCursor();\n };\n this.showCursor = function() {\n this.$cursorLayer.showCursor();\n };\n\n this.scrollSelectionIntoView = function(anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n this.scrollCursorIntoView = function(cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n\n var left = pos.left;\n var top = pos.top;\n \n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n \n var scrollTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n \n if (scrollTop + topMargin > top) {\n if (offset && scrollTop + topMargin > top + this.lineHeight)\n top -= offset * this.$size.scrollerHeight;\n if (top === 0)\n top = -this.scrollMargin.top;\n this.session.setScrollTop(top);\n } else if (scrollTop + this.$size.scrollerHeight - bottomMargin < top + this.lineHeight) {\n if (offset && scrollTop + this.$size.scrollerHeight - bottomMargin < top - this.lineHeight)\n top += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(top + this.lineHeight - this.$size.scrollerHeight);\n }\n\n var scrollLeft = this.scrollLeft;\n\n if (scrollLeft > left) {\n if (left < this.$padding + 2 * this.layerConfig.characterWidth)\n left = -this.scrollMargin.left;\n this.session.setScrollLeft(left);\n } else if (scrollLeft + this.$size.scrollerWidth < left + this.characterWidth) {\n this.session.setScrollLeft(Math.round(left + this.characterWidth - this.$size.scrollerWidth));\n } else if (scrollLeft <= this.$padding && left - scrollLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n };\n this.getScrollTop = function() {\n return this.session.getScrollTop();\n };\n this.getScrollLeft = function() {\n return this.session.getScrollLeft();\n };\n this.getScrollTopRow = function() {\n return this.scrollTop / this.lineHeight;\n };\n this.getScrollBottomRow = function() {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n this.scrollToRow = function(row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n\n this.alignCursor = function(cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = {row: cursor, column: 0};\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n\n this.session.setScrollTop(offset);\n return offset;\n };\n\n this.STEPS = 8;\n this.$calcSteps = function(fromValue, toValue){\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n\n var func = function(t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n\n return steps;\n };\n this.scrollToLine = function(line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0});\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n\n this.animateScrolling = function(fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n \n if (fromValue == toValue)\n return;\n \n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n \n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = {from: fromValue, to: toValue, steps: steps};\n\n clearInterval(this.$timer);\n\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n this.$timer = setInterval(function() {\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n } else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n } else {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n callback && callback();\n }\n }, 10);\n };\n this.scrollToY = function(scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n this.scrollToX = function(scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n this.scrollTo = function(x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(y);\n };\n this.scrollBy = function(deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n this.isScrollableBy = function(deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n\n this.pixelToScreenCoordinates = function(x, y) {\n var canvasPos = this.scroller.getBoundingClientRect();\n\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = Math.round(offset);\n\n return {row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX};\n };\n\n this.screenToTextCoordinates = function(x, y) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n\n var col = Math.round(offsetX / this.characterWidth);\n\n var row = (y + this.scrollTop - canvasPos.top) / this.lineHeight;\n\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n this.textToScreenCoordinates = function(row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n\n var y = pos.row * this.lineHeight;\n\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n this.visualizeFocus = function() {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n this.visualizeBlur = function() {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n this.showComposition = function(position) {\n if (!this.$composition)\n this.$composition = {\n keepTextAreaAtCursor: this.$keepTextAreaAtCursor,\n cssText: this.textarea.style.cssText\n };\n\n this.$keepTextAreaAtCursor = true;\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n };\n this.setCompositionText = function(text) {\n this.$moveTextAreaToCursor();\n };\n this.hideComposition = function() {\n if (!this.$composition)\n return;\n\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.$keepTextAreaAtCursor = this.$composition.keepTextAreaAtCursor;\n this.textarea.style.cssText = this.$composition.cssText;\n this.$composition = null;\n };\n this.setTheme = function(theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange',{theme:theme});\n\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n } else {\n afterLoad(theme);\n }\n\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n dom.importCssString(\n module.cssText,\n module.cssClass,\n _self.container.ownerDocument\n );\n\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n\n var padding = \"padding\" in module ? module.padding \n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n\n _self._dispatchEvent('themeLoaded', {theme:module});\n cb && cb();\n }\n };\n this.getTheme = function() {\n return this.$themeId;\n };\n this.setStyle = function(style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n this.unsetStyle = function(style) {\n dom.removeCssClass(this.container, style);\n };\n \n this.setCursorStyle = function(style) {\n if (this.scroller.style.cursor != style)\n this.scroller.style.cursor = style;\n };\n this.setMouseCursor = function(cursorStyle) {\n this.scroller.style.cursor = cursorStyle;\n };\n this.destroy = function() {\n this.$textLayer.destroy();\n this.$cursorLayer.destroy();\n };\n\n}).call(VirtualRenderer.prototype);\n\n\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n animatedScroll: {initialValue: false},\n showInvisibles: {\n set: function(value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function(val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function() {\n return this.$showPrintMargin && this.$printMarginColumn; \n }\n },\n showGutter: {\n set: function(show){\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n fadeFoldWidgets: {\n set: function(show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function(show) {this.$gutterLayer.setShowFoldWidgets(show);},\n initialValue: true\n },\n showLineNumbers: {\n set: function(show) {\n this.$gutterLayer.setShowLineNumbers(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function(show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function(shouldHighlight) {\n if (!this.$gutterLineHighlight) {\n this.$gutterLineHighlight = dom.createElement(\"div\");\n this.$gutterLineHighlight.className = \"ace_gutter-active-line\";\n this.$gutter.appendChild(this.$gutterLineHighlight);\n return;\n }\n\n this.$gutterLineHighlight.style.display = shouldHighlight ? \"\" : \"none\";\n if (this.$cursorLayer.$pixelPos)\n this.$updateGutterLineHighlight();\n },\n initialValue: false,\n value: true\n },\n hScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function(size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function(name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function(val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function(val) {\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function(val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function(val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function(val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n theme: {\n set: function(val) { this.setTheme(val); },\n get: function() { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n }\n});\n\nexports.VirtualRenderer = VirtualRenderer;\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar net = acequire(\"../lib/net\");\nvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\nvar config = acequire(\"../config\");\n\nfunction $workerBlob(workerUrl, mod) {\n var script = mod.src;\"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl, mod) {\n var blob = $workerBlob(workerUrl, mod);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n}\n\nvar WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n if (acequire.nameToUrl && !acequire.toUrl)\n acequire.toUrl = acequire.nameToUrl;\n \n if (config.get(\"packaged\") || !acequire.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod.id, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(acequire.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(acequire.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl, mod);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod.id,\n classname : classname\n });\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.callbackId = 1;\n this.callbacks = {};\n this.messageBuffer = [];\n\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n var _self = this;\n\n this.$worker = {};\n this.$worker.terminate = function() {};\n this.$worker.postMessage = function(e) {\n _self.messageBuffer.push(e);\n if (main) {\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n };\n this.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = _self.messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n _self.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (_self.messageBuffer.length)\n processNext();\n });\n};\n\nUIWorkerClient.prototype = WorkerClient.prototype;\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"./range\").Range;\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar oop = acequire(\"./lib/oop\");\n\nvar PlaceHolder = function(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate);\n this.$others = others;\n \n this.$onCursorChange = function() {\n setTimeout(function() {\n _self.onCursorChange();\n });\n };\n \n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || {length: -1};\n this.$undoStackDepth = undoStack.length;\n this.setup();\n\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setup = function() {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n \n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function(other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n this.showOtherMarkers = function() {\n if (this.othersActive) return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function(anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column+_self.length), _self.othersClass, null, false);\n });\n };\n this.hideOtherMarkers = function() {\n if (!this.othersActive) return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n this.onUpdate = function(delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n \n var range = delta;\n if (range.start.row !== range.end.row) return;\n if (range.start.row !== this.pos.row) return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n \n this.updateAnchors(delta);\n \n if (inMainRange)\n this.length += lengthDiff;\n\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n } else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n \n this.$updating = false;\n this.updateMarkers();\n };\n \n this.updateAnchors = function(delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n \n this.updateMarkers = function() {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function(pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column+_self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n\n this.onCursorChange = function(event) {\n if (this.$updating || !this.session) return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n } else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n }; \n this.detach = function() {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.removeEventListener(\"change\", this.$onUpdate);\n this.session.selection.removeEventListener(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n this.cancel = function() {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n}).call(PlaceHolder.prototype);\n\n\nexports.PlaceHolder = PlaceHolder;\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\nvar event = acequire(\"../lib/event\");\nvar useragent = acequire(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\n\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n \n if (ctrl && useragent.isMac)\n button = ev.button;\n\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n \n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n \n if (button !== 0)\n return;\n\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function(e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n \n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n \n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n } else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n } else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n \n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n \n \n editor.$blockScrolling++;\n editor.inVirtualSelectionMode = true;\n \n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function() {\n var tmpSel = selection.toOrientedRange();\n\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n } else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.$blockScrolling--;\n editor.inVirtualSelectionMode = false;\n });\n\n } else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true; \n var initialRange;\n var rectSel = [];\n var blockSelect = function() {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n \n editor.$blockScrolling++;\n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n editor.$blockScrolling--;\n };\n editor.$blockScrolling++;\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n } else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n \n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead); \n else\n selection.moveToPosition(pos);\n editor.$blockScrolling--;\n \n screenCursor = {row: -1, column: -1};\n\n var onMouseSelectionEnd = function(e) {\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n editor.$blockScrolling++;\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n editor.$blockScrolling--;\n };\n\n var onSelectionInterval = blockSelect;\n\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function() {onSelectionInterval();}, 20);\n\n return e.preventDefault();\n }\n}\n\n\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(acequire, exports, module) {\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n exec: function(editor) { editor.selectMoreLines(-1); },\n bindKey: {win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorBelow\",\n exec: function(editor) { editor.selectMoreLines(1); },\n bindKey: {win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorAboveSkipCurrent\",\n exec: function(editor) { editor.selectMoreLines(-1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorBelowSkipCurrent\",\n exec: function(editor) { editor.selectMoreLines(1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectMoreBefore\",\n exec: function(editor) { editor.selectMore(-1); },\n bindKey: {win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectMoreAfter\",\n exec: function(editor) { editor.selectMore(1); },\n bindKey: {win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectNextBefore\",\n exec: function(editor) { editor.selectMore(-1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectNextAfter\",\n exec: function(editor) { editor.selectMore(1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"splitIntoLines\",\n exec: function(editor) { editor.multiSelect.splitIntoLines(); },\n bindKey: {win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\"},\n readOnly: true\n}, {\n name: \"alignCursors\",\n exec: function(editor) { editor.alignCursors(); },\n bindKey: {win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\"},\n scrollIntoView: \"cursor\"\n}, {\n name: \"findAll\",\n exec: function(editor) { editor.findAll(); },\n bindKey: {win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n bindKey: \"esc\",\n exec: function(editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function(editor) {return editor && editor.inMultiSelectMode;}\n}];\n\nvar HashHandler = acequire(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(acequire, exports, module) {\n\nvar RangeList = acequire(\"./range_list\").RangeList;\nvar Range = acequire(\"./range\").Range;\nvar Selection = acequire(\"./selection\").Selection;\nvar onMouseDown = acequire(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = acequire(\"./lib/event\");\nvar lang = acequire(\"./lib/lang\");\nvar commands = acequire(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = acequire(\"./search\").Search;\nvar search = new Search();\n\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = acequire(\"./edit_session\").EditSession;\n(function() {\n this.getSelectionMarkers = function() {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function() {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function(range, $blockChangeEvents) {\n if (!range)\n return;\n\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n\n if (!range.cursor)\n range.cursor = range.end;\n\n var removed = this.rangeList.add(range);\n\n this.$onAddRange(range);\n\n if (removed.length)\n this.$onRemoveRange(removed);\n\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n\n this.toSingleRange = function(range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function(pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function() {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n else if(this.ranges[0])\n this.fromOrientedRange(this.ranges[0]);\n };\n\n this.$onAddRange = function(range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", {range: range});\n };\n\n this.$onRemoveRange = function(removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n\n for (var i = removed.length; i--; ) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n\n this._signal(\"removeRange\", {ranges: removed});\n\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function() {\n if (this.rangeList)\n return;\n\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function() {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n\n this.splitIntoLines = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n } else {\n var range = this.getRange();\n var isBackwards = this.isBackwards();\n var startRow = range.start.row;\n var endRow = range.end.row;\n if (startRow == endRow) {\n if (isBackwards)\n var start = range.end, end = range.start;\n else\n var start = range.start, end = range.end;\n \n this.addRange(Range.fromPoints(end, end));\n this.addRange(Range.fromPoints(start, start));\n return;\n }\n\n var rectSel = [];\n var r = this.getLineRange(startRow, true);\n r.start.column = range.start.column;\n rectSel.push(r);\n\n for (var i = startRow + 1; i < endRow; i++)\n rectSel.push(this.getLineRange(i, true));\n\n r = this.getLineRange(endRow, true);\n r.end.column = range.end.column;\n rectSel.push(r);\n\n rectSel.forEach(this.addRange, this);\n }\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n } else {\n var cursor = this.session.documentToScreenPosition(this.selectionLead);\n var anchor = this.session.documentToScreenPosition(this.selectionAnchor);\n\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function(screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n } else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n } else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n\n if (startRow == endRow)\n includeEmptyLines = true;\n\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(\n this.session.screenToDocumentPosition(row, startColumn, startOffsetX),\n this.session.screenToDocumentPosition(row, endColumn, endOffsetX)\n );\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n var docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n\n if (yBackwards)\n rectSel.reverse();\n\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = acequire(\"./editor\").Editor;\n(function() {\n this.updateSelectionMarkers = function() {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function(orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function(range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n\n this.removeSelectionMarkers = function(ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--; ) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n\n this.$onAddRange = function(e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onRemoveRange = function(e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onMultiSelect = function(e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onSingleSelect = function(e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n\n this.$onMultiSelectExec = function(e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n } else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n } else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n } else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n } else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n }; \n this.forEachSelection = function(cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n \n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n \n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n \n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n \n return result;\n };\n this.exitMultiSelectMode = function() {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n\n this.getSelectedText = function() {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n } else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n \n this.$checkMultiselectChange = function(e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row \n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n }\n };\n this.findAll = function(needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n } \n this.$search.set(options);\n \n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n\n this.$blockScrolling += 1;\n var selection = this.multiSelect;\n\n if (!additive)\n selection.toSingleRange(ranges[0]);\n\n for (var i = ranges.length; i--; )\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n \n this.$blockScrolling -= 1;\n\n return ranges.length;\n };\n this.selectMoreLines = function(dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n } else {\n var anchor = lead;\n }\n\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n } else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n } else {\n if (skip)\n var toRemove = range.cursor;\n }\n\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function(dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n\n var words = [];\n for (var i = all.length; i--; ) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n };\n this.selectMore = function(dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.$blockScrolling += 1;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.$blockScrolling -= 1;\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function() {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function(r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n \n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n \n if (fr < 0) fr = 0;\n if (lr >= max) lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({row: fr, column: 0}, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n } else {\n sameRowRanges.forEach(function(r) {\n sel.substractPoint(r.cursor);\n });\n\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function(r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function(r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n\n this.$reAlignText = function(lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n\n return lines.map(function(line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW, \" \")\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\n\n\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function(e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n\n addAltCursorListeners(editor);\n}\n\nfunction addAltCursorListeners(editor){\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function(e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n } else if (altCursor) {\n reset();\n }\n });\n\n event.addListener(el, \"keyup\", reset);\n event.addListener(el, \"blur\", reset);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\n\nexports.MultiSelect = MultiSelect;\n\n\nacequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function(val) {\n MultiSelect(this);\n if (val) {\n this.on(\"changeSession\", this.$multiselectOnSessionChange);\n this.on(\"mousedown\", onMouseDown);\n } else {\n this.off(\"changeSession\", this.$multiselectOnSessionChange);\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function(val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\n\n(function() {\n\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n return null;\n };\n\n this.indentationBlock = function(session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n\n if (level == -1)\n continue;\n\n if (level <= startLevel)\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n\n this.openingBracketBlock = function(session, bracket, row, column, typeRe) {\n var start = {row: row, column: column + 1};\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n\n if (fw == \"start\" && end.row > start.row) {\n end.row --;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n\n this.closingBracketBlock = function(session, bracket, row, column, typeRe) {\n var end = {row: row, column: column};\n var start = session.$findOpeningBracket(bracket, end);\n\n if (!start)\n return;\n\n start.column++;\n end.column--;\n\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(acequire, exports, module) {\n\"use strict\";\n\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = \".ace-tm .ace_gutter {\\\nbackground: #f0f0f0;\\\ncolor: #333;\\\n}\\\n.ace-tm .ace_print-margin {\\\nwidth: 1px;\\\nbackground: #e8e8e8;\\\n}\\\n.ace-tm .ace_fold {\\\nbackground-color: #6B72E6;\\\n}\\\n.ace-tm {\\\nbackground-color: #FFFFFF;\\\ncolor: black;\\\n}\\\n.ace-tm .ace_cursor {\\\ncolor: black;\\\n}\\\n.ace-tm .ace_invisible {\\\ncolor: rgb(191, 191, 191);\\\n}\\\n.ace-tm .ace_storage,\\\n.ace-tm .ace_keyword {\\\ncolor: blue;\\\n}\\\n.ace-tm .ace_constant {\\\ncolor: rgb(197, 6, 11);\\\n}\\\n.ace-tm .ace_constant.ace_buildin {\\\ncolor: rgb(88, 72, 246);\\\n}\\\n.ace-tm .ace_constant.ace_language {\\\ncolor: rgb(88, 92, 246);\\\n}\\\n.ace-tm .ace_constant.ace_library {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_invalid {\\\nbackground-color: rgba(255, 0, 0, 0.1);\\\ncolor: red;\\\n}\\\n.ace-tm .ace_support.ace_function {\\\ncolor: rgb(60, 76, 114);\\\n}\\\n.ace-tm .ace_support.ace_constant {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_support.ace_type,\\\n.ace-tm .ace_support.ace_class {\\\ncolor: rgb(109, 121, 222);\\\n}\\\n.ace-tm .ace_keyword.ace_operator {\\\ncolor: rgb(104, 118, 135);\\\n}\\\n.ace-tm .ace_string {\\\ncolor: rgb(3, 106, 7);\\\n}\\\n.ace-tm .ace_comment {\\\ncolor: rgb(76, 136, 107);\\\n}\\\n.ace-tm .ace_comment.ace_doc {\\\ncolor: rgb(0, 102, 255);\\\n}\\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\\ncolor: rgb(128, 159, 191);\\\n}\\\n.ace-tm .ace_constant.ace_numeric {\\\ncolor: rgb(0, 0, 205);\\\n}\\\n.ace-tm .ace_variable {\\\ncolor: rgb(49, 132, 149);\\\n}\\\n.ace-tm .ace_xml-pe {\\\ncolor: rgb(104, 104, 91);\\\n}\\\n.ace-tm .ace_entity.ace_name.ace_function {\\\ncolor: #0000A2;\\\n}\\\n.ace-tm .ace_heading {\\\ncolor: rgb(12, 7, 255);\\\n}\\\n.ace-tm .ace_list {\\\ncolor:rgb(185, 6, 144);\\\n}\\\n.ace-tm .ace_meta.ace_tag {\\\ncolor:rgb(0, 22, 142);\\\n}\\\n.ace-tm .ace_string.ace_regex {\\\ncolor: rgb(255, 0, 0)\\\n}\\\n.ace-tm .ace_marker-layer .ace_selection {\\\nbackground: rgb(181, 213, 255);\\\n}\\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\\nbox-shadow: 0 0 3px 0px white;\\\n}\\\n.ace-tm .ace_marker-layer .ace_step {\\\nbackground: rgb(252, 255, 0);\\\n}\\\n.ace-tm .ace_marker-layer .ace_stack {\\\nbackground: rgb(164, 229, 101);\\\n}\\\n.ace-tm .ace_marker-layer .ace_bracket {\\\nmargin: -1px 0 0 -1px;\\\nborder: 1px solid rgb(192, 192, 192);\\\n}\\\n.ace-tm .ace_marker-layer .ace_active-line {\\\nbackground: rgba(0, 0, 0, 0.07);\\\n}\\\n.ace-tm .ace_gutter-active-line {\\\nbackground-color : #dcdcdc;\\\n}\\\n.ace-tm .ace_marker-layer .ace_selected-word {\\\nbackground: rgb(250, 250, 255);\\\nborder: 1px solid rgb(200, 200, 250);\\\n}\\\n.ace-tm .ace_indent-guide {\\\nbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\\n}\\\n\";\n\nvar dom = acequire(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass);\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar dom = acequire(\"./lib/dom\");\nvar Range = acequire(\"./range\").Range;\n\n\nfunction LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n \n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n}\n\n(function() {\n this.getRowLength = function(row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else \n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n } else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n\n this.$getWidgetScreenLength = function() {\n var screenRows = 0;\n this.lineWidgets.forEach(function(w){\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n }; \n \n this.$onChangeEditor = function(e) {\n this.attach(e.editor);\n };\n \n this.attach = function(editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n\n if (this.editor == editor)\n return;\n\n this.detach();\n this.editor = editor;\n \n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n this.detach = function(e) {\n var editor = this.editor;\n if (!editor)\n return;\n \n this.editor = null;\n editor.widgetManager = null;\n \n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function(w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n\n this.updateOnFold = function(e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n } else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n \n this.updateOnChange = function(delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n \n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n } else if (delta.action == 'remove') {\n var removed = lineWidgets.splice(startRow + 1, len);\n removed.forEach(function(w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n } else {\n var args = new Array(len);\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n \n this.$updateRows = function() {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n var noWidgets = true;\n lineWidgets.forEach(function(w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n\n this.addLineWidget = function(w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n \n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n \n this.session.lineWidgets[w.row] = w;\n \n w.session = this.session;\n \n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n }\n \n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n \n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n \n this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\n \n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n \n this.removeLineWidget = function(w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy) try {\n w.editor.destroy();\n } catch(e){}\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n } else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\n this.$updateRows();\n };\n \n this.getWidgetsAtRow = function(row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n \n this.onWidgetChanged = function(w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n \n this.measureWidgets = function(e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n \n if (!changedWidgets || !changedWidgets.length) return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el) continue;\n if (w.session != this.session) continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n \n w.h = w.el.offsetHeight;\n \n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n \n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", {data:{start:{row: min}}});\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n \n this.renderWidgets = function(e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n \n while (first > 0 && !lineWidgets[first])\n first--;\n \n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el) continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({row: i, column:0}, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n \n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n \n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n \n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n } else {\n w.el.style.right = \"\";\n }\n }\n };\n \n}).call(LineWidgets.prototype);\n\n\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\nvar LineWidgets = acequire(\"../line_widgets\").LineWidgets;\nvar dom = acequire(\"../lib/dom\");\nvar Range = acequire(\"../range\").Range;\n\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\n\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n \n var i = binarySearch(annotations, {row: row, column: -1}, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n \n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n \n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n \n \n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\n\nexports.showErrorMarker = function(editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n \n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function(w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n } else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n } else if (oldWidget) {\n return;\n } else {\n gutterAnno = {\n text: [\"Looks good!\"],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n \n var w = {\n row: pos.row, \n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n \n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n \n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join(\"
\");\n \n el.appendChild(dom.createElement(\"div\"));\n \n var kb = function(_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return {command: \"null\"};\n }\n };\n \n w.destroy = function() {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n \n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n \n editor.session.widgetManager.addLineWidget(w);\n \n w.el.onmousedown = editor.focus.bind(editor);\n \n editor.renderer.scrollCursorIntoView(null, 0.5, {bottom: w.el.offsetHeight});\n};\n\n\ndom.importCssString(\"\\\n .error_widget_wrapper {\\\n background: inherit;\\\n color: inherit;\\\n border:none\\\n }\\\n .error_widget {\\\n border-top: solid 2px;\\\n border-bottom: solid 2px;\\\n margin: 5px 0;\\\n padding: 10px 40px;\\\n white-space: pre-wrap;\\\n }\\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\\n border-color: #ff5a5a\\\n }\\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\\n border-color: #F1D817\\\n }\\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\\n border-color: #5a5a5a\\\n }\\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\\n border-color: #5aaa5a\\\n }\\\n .error_widget_arrow {\\\n position: absolute;\\\n border: solid 5px;\\\n border-top-color: transparent!important;\\\n border-right-color: transparent!important;\\\n border-left-color: transparent!important;\\\n top: -5px;\\\n }\\\n\", \"\");\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\"], function(acequire, exports, module) {\n\"use strict\";\n\nacequire(\"./lib/fixoldbrowsers\");\n\nvar dom = acequire(\"./lib/dom\");\nvar event = acequire(\"./lib/event\");\n\nvar Editor = acequire(\"./editor\").Editor;\nvar EditSession = acequire(\"./edit_session\").EditSession;\nvar UndoManager = acequire(\"./undomanager\").UndoManager;\nvar Renderer = acequire(\"./virtual_renderer\").VirtualRenderer;\nacequire(\"./worker/worker_client\");\nacequire(\"./keyboard/hash_handler\");\nacequire(\"./placeholder\");\nacequire(\"./multi_select\");\nacequire(\"./mode/folding/fold_mode\");\nacequire(\"./theme/textmate\");\nacequire(\"./ext/error_marker\");\n\nexports.config = acequire(\"./config\");\nexports.acequire = acequire;\n\nif (typeof define === \"function\")\n exports.define = define;\nexports.edit = function(el) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n } else if (el) {\n value = dom.getInnerText(el);\n el.innerHTML = \"\";\n }\n\n var doc = exports.createEditSession(value);\n\n var editor = new Editor(new Renderer(el));\n editor.setSession(doc);\n\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode) env.textarea = oldNode;\n event.addListener(window, \"resize\", env.onResize);\n editor.on(\"destroy\", function() {\n event.removeListener(window, \"resize\", env.onResize);\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function(text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.version = \"1.2.9\";\n});\n (function() {\n ace.acequire([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n if (!window.ace)\n window.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n window.ace[key] = a[key];\n });\n })();\n \nmodule.exports = window.ace.acequire(\"ace/ace\");","var matrix = require(\"../core/matrix\");\n\nvar vector = require(\"../core/vector\");\n\n/**\n * 提供变换扩展\n * @module zrender/mixin/Transformable\n * @author pissang (https://www.github.com/pissang)\n */\nvar mIdentity = matrix.identity;\nvar EPSILON = 5e-5;\n\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\n/**\n * @alias module:zrender/mixin/Transformable\n * @constructor\n */\n\n\nvar Transformable = function (opts) {\n opts = opts || {}; // If there are no given position, rotation, scale\n\n if (!opts.position) {\n /**\n * 平移\n * @type {Array.}\n * @default [0, 0]\n */\n this.position = [0, 0];\n }\n\n if (opts.rotation == null) {\n /**\n * 旋转\n * @type {Array.}\n * @default 0\n */\n this.rotation = 0;\n }\n\n if (!opts.scale) {\n /**\n * 缩放\n * @type {Array.}\n * @default [1, 1]\n */\n this.scale = [1, 1];\n }\n /**\n * 旋转和缩放的原点\n * @type {Array.}\n * @default null\n */\n\n\n this.origin = this.origin || null;\n};\n\nvar transformableProto = Transformable.prototype;\ntransformableProto.transform = null;\n/**\n * 判断是否需要有坐标变换\n * 如果有坐标变换, 则从position, rotation, scale以及父节点的transform计算出自身的transform矩阵\n */\n\ntransformableProto.needLocalTransform = function () {\n return isNotAroundZero(this.rotation) || isNotAroundZero(this.position[0]) || isNotAroundZero(this.position[1]) || isNotAroundZero(this.scale[0] - 1) || isNotAroundZero(this.scale[1] - 1);\n};\n\nvar scaleTmp = [];\n\ntransformableProto.updateTransform = function () {\n var parent = this.parent;\n var parentHasTransform = parent && parent.transform;\n var needLocalTransform = this.needLocalTransform();\n var m = this.transform;\n\n if (!(needLocalTransform || parentHasTransform)) {\n m && mIdentity(m);\n return;\n }\n\n m = m || matrix.create();\n\n if (needLocalTransform) {\n this.getLocalTransform(m);\n } else {\n mIdentity(m);\n } // 应用父节点变换\n\n\n if (parentHasTransform) {\n if (needLocalTransform) {\n matrix.mul(m, parent.transform, m);\n } else {\n matrix.copy(m, parent.transform);\n }\n } // 保存这个变换矩阵\n\n\n this.transform = m;\n var globalScaleRatio = this.globalScaleRatio;\n\n if (globalScaleRatio != null && globalScaleRatio !== 1) {\n this.getGlobalScale(scaleTmp);\n var relX = scaleTmp[0] < 0 ? -1 : 1;\n var relY = scaleTmp[1] < 0 ? -1 : 1;\n var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\n var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\n m[0] *= sx;\n m[1] *= sx;\n m[2] *= sy;\n m[3] *= sy;\n }\n\n this.invTransform = this.invTransform || matrix.create();\n matrix.invert(this.invTransform, m);\n};\n\ntransformableProto.getLocalTransform = function (m) {\n return Transformable.getLocalTransform(this, m);\n};\n/**\n * 将自己的transform应用到context上\n * @param {CanvasRenderingContext2D} ctx\n */\n\n\ntransformableProto.setTransform = function (ctx) {\n var m = this.transform;\n var dpr = ctx.dpr || 1;\n\n if (m) {\n ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\n } else {\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n};\n\ntransformableProto.restoreTransform = function (ctx) {\n var dpr = ctx.dpr || 1;\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n};\n\nvar tmpTransform = [];\nvar originTransform = matrix.create();\n\ntransformableProto.setLocalTransform = function (m) {\n if (!m) {\n // TODO return or set identity?\n return;\n }\n\n var sx = m[0] * m[0] + m[1] * m[1];\n var sy = m[2] * m[2] + m[3] * m[3];\n var position = this.position;\n var scale = this.scale;\n\n if (isNotAroundZero(sx - 1)) {\n sx = Math.sqrt(sx);\n }\n\n if (isNotAroundZero(sy - 1)) {\n sy = Math.sqrt(sy);\n }\n\n if (m[0] < 0) {\n sx = -sx;\n }\n\n if (m[3] < 0) {\n sy = -sy;\n }\n\n position[0] = m[4];\n position[1] = m[5];\n scale[0] = sx;\n scale[1] = sy;\n this.rotation = Math.atan2(-m[1] / sy, m[0] / sx);\n};\n/**\n * 分解`transform`矩阵到`position`, `rotation`, `scale`\n */\n\n\ntransformableProto.decomposeTransform = function () {\n if (!this.transform) {\n return;\n }\n\n var parent = this.parent;\n var m = this.transform;\n\n if (parent && parent.transform) {\n // Get local transform and decompose them to position, scale, rotation\n matrix.mul(tmpTransform, parent.invTransform, m);\n m = tmpTransform;\n }\n\n var origin = this.origin;\n\n if (origin && (origin[0] || origin[1])) {\n originTransform[4] = origin[0];\n originTransform[5] = origin[1];\n matrix.mul(tmpTransform, m, originTransform);\n tmpTransform[4] -= origin[0];\n tmpTransform[5] -= origin[1];\n m = tmpTransform;\n }\n\n this.setLocalTransform(m);\n};\n/**\n * Get global scale\n * @return {Array.}\n */\n\n\ntransformableProto.getGlobalScale = function (out) {\n var m = this.transform;\n out = out || [];\n\n if (!m) {\n out[0] = 1;\n out[1] = 1;\n return out;\n }\n\n out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\n out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\n\n if (m[0] < 0) {\n out[0] = -out[0];\n }\n\n if (m[3] < 0) {\n out[1] = -out[1];\n }\n\n return out;\n};\n/**\n * 变换坐标位置到 shape 的局部坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.}\n */\n\n\ntransformableProto.transformCoordToLocal = function (x, y) {\n var v2 = [x, y];\n var invTransform = this.invTransform;\n\n if (invTransform) {\n vector.applyTransform(v2, v2, invTransform);\n }\n\n return v2;\n};\n/**\n * 变换局部坐标位置到全局坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.}\n */\n\n\ntransformableProto.transformCoordToGlobal = function (x, y) {\n var v2 = [x, y];\n var transform = this.transform;\n\n if (transform) {\n vector.applyTransform(v2, v2, transform);\n }\n\n return v2;\n};\n/**\n * @static\n * @param {Object} target\n * @param {Array.} target.origin\n * @param {number} target.rotation\n * @param {Array.} target.position\n * @param {Array.} [m]\n */\n\n\nTransformable.getLocalTransform = function (target, m) {\n m = m || [];\n mIdentity(m);\n var origin = target.origin;\n var scale = target.scale || [1, 1];\n var rotation = target.rotation || 0;\n var position = target.position || [0, 0];\n\n if (origin) {\n // Translate to origin\n m[4] -= origin[0];\n m[5] -= origin[1];\n }\n\n matrix.scale(m, m, scale);\n\n if (rotation) {\n matrix.rotate(m, m, rotation);\n }\n\n if (origin) {\n // Translate back from origin\n m[4] += origin[0];\n m[5] += origin[1];\n }\n\n m[4] += position[0];\n m[5] += position[1];\n return m;\n};\n\nvar _default = Transformable;\nmodule.exports = _default;","// https://github.com/mziccard/node-timsort\nvar DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nvar DEFAULT_TMP_STORAGE_LENGTH = 256;\n\nfunction minRunLength(n) {\n var r = 0;\n\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n\n return n + r;\n}\n\nfunction makeAscendingRun(array, lo, hi, compare) {\n var runHi = lo + 1;\n\n if (runHi === hi) {\n return 1;\n }\n\n if (compare(array[runHi++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi++;\n }\n\n reverseRun(array, lo, runHi);\n } else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n\n return runHi - lo;\n}\n\nfunction reverseRun(array, lo, hi) {\n hi--;\n\n while (lo < hi) {\n var t = array[lo];\n array[lo++] = array[hi];\n array[hi--] = t;\n }\n}\n\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n if (start === lo) {\n start++;\n }\n\n for (; start < hi; start++) {\n var pivot = array[start];\n var left = lo;\n var right = start;\n var mid;\n\n while (left < right) {\n mid = left + right >>> 1;\n\n if (compare(pivot, array[mid]) < 0) {\n right = mid;\n } else {\n left = mid + 1;\n }\n }\n\n var n = start - left;\n\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2];\n\n case 2:\n array[left + 2] = array[left + 1];\n\n case 1:\n array[left + 1] = array[left];\n break;\n\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1];\n n--;\n }\n\n }\n\n array[left] = pivot;\n }\n}\n\nfunction gallopLeft(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n } else {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1;\n } else {\n offset = m;\n }\n }\n\n return offset;\n}\n\nfunction gallopRight(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n } else {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) < 0) {\n offset = m;\n } else {\n lastOffset = m + 1;\n }\n }\n\n return offset;\n}\n\nfunction TimSort(array, compare) {\n var minGallop = DEFAULT_MIN_GALLOPING;\n var length = 0;\n var tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n var stackLength = 0;\n var runStart;\n var runLength;\n var stackSize = 0;\n length = array.length;\n\n if (length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n tmpStorageLength = length >>> 1;\n }\n\n var tmp = [];\n stackLength = length < 120 ? 5 : length < 1542 ? 10 : length < 119151 ? 19 : 40;\n runStart = [];\n runLength = [];\n\n function pushRun(_runStart, _runLength) {\n runStart[stackSize] = _runStart;\n runLength[stackSize] = _runLength;\n stackSize += 1;\n }\n\n function mergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1] || n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1]) {\n if (runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n } else if (runLength[n] > runLength[n + 1]) {\n break;\n }\n\n mergeAt(n);\n }\n }\n\n function forceMergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n\n mergeAt(n);\n }\n }\n\n function mergeAt(i) {\n var start1 = runStart[i];\n var length1 = runLength[i];\n var start2 = runStart[i + 1];\n var length2 = runLength[i + 1];\n runLength[i] = length1 + length2;\n\n if (i === stackSize - 3) {\n runStart[i + 1] = runStart[i + 2];\n runLength[i + 1] = runLength[i + 2];\n }\n\n stackSize--;\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n\n if (length1 === 0) {\n return;\n }\n\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n\n if (length2 === 0) {\n return;\n }\n\n if (length1 <= length2) {\n mergeLow(start1, length1, start2, length2);\n } else {\n mergeHigh(start1, length1, start2, length2);\n }\n }\n\n function mergeLow(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length1; i++) {\n tmp[i] = array[start1 + i];\n }\n\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n return;\n }\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n return;\n }\n\n var _minGallop = minGallop;\n var count1;\n var count2;\n var exit;\n\n while (1) {\n count1 = 0;\n count2 = 0;\n exit = false;\n\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest++] = array[cursor2++];\n count2++;\n count1 = 0;\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = tmp[cursor1++];\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n minGallop < 1 && (minGallop = 1);\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n } else if (length1 === 0) {\n throw new Error(); // throw new Error('mergeLow preconditions were not respected');\n } else {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n }\n }\n\n function mergeHigh(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length2; i++) {\n tmp[i] = array[start2 + i];\n }\n\n var cursor1 = start1 + length1 - 1;\n var cursor2 = length2 - 1;\n var dest = start2 + length2 - 1;\n var customCursor = 0;\n var customDest = 0;\n array[dest--] = array[cursor1--];\n\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n\n return;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n return;\n }\n\n var _minGallop = minGallop;\n\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest--] = array[cursor1--];\n count1++;\n count2 = 0;\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = count1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = tmp[cursor2--];\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n\n for (i = 0; i < count2; i++) {\n array[customDest + i] = tmp[customCursor + i];\n }\n\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = array[cursor1--];\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n\n if (minGallop < 1) {\n minGallop = 1;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n } else if (length2 === 0) {\n throw new Error(); // throw new Error('mergeHigh preconditions were not respected');\n } else {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n }\n }\n\n this.mergeRuns = mergeRuns;\n this.forceMergeRuns = forceMergeRuns;\n this.pushRun = pushRun;\n}\n\nfunction sort(array, compare, lo, hi) {\n if (!lo) {\n lo = 0;\n }\n\n if (!hi) {\n hi = array.length;\n }\n\n var remaining = hi - lo;\n\n if (remaining < 2) {\n return;\n }\n\n var runLength = 0;\n\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare);\n binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n return;\n }\n\n var ts = new TimSort(array, compare);\n var minRun = minRunLength(remaining);\n\n do {\n runLength = makeAscendingRun(array, lo, hi, compare);\n\n if (runLength < minRun) {\n var force = remaining;\n\n if (force > minRun) {\n force = minRun;\n }\n\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n\n ts.forceMergeRuns();\n}\n\nmodule.exports = sort;","var fixShadow = require(\"./helper/fixShadow\");\n\nvar _constant = require(\"./constant\");\n\nvar ContextCachedBy = _constant.ContextCachedBy;\nvar STYLE_COMMON_PROPS = [['shadowBlur', 0], ['shadowOffsetX', 0], ['shadowOffsetY', 0], ['shadowColor', '#000'], ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]]; // var SHADOW_PROPS = STYLE_COMMON_PROPS.slice(0, 4);\n// var LINE_PROPS = STYLE_COMMON_PROPS.slice(4);\n\nvar Style = function (opts) {\n this.extendFrom(opts, false);\n};\n\nfunction createLinearGradient(ctx, obj, rect) {\n var x = obj.x == null ? 0 : obj.x;\n var x2 = obj.x2 == null ? 1 : obj.x2;\n var y = obj.y == null ? 0 : obj.y;\n var y2 = obj.y2 == null ? 0 : obj.y2;\n\n if (!obj.global) {\n x = x * rect.width + rect.x;\n x2 = x2 * rect.width + rect.x;\n y = y * rect.height + rect.y;\n y2 = y2 * rect.height + rect.y;\n } // Fix NaN when rect is Infinity\n\n\n x = isNaN(x) ? 0 : x;\n x2 = isNaN(x2) ? 1 : x2;\n y = isNaN(y) ? 0 : y;\n y2 = isNaN(y2) ? 0 : y2;\n var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\n return canvasGradient;\n}\n\nfunction createRadialGradient(ctx, obj, rect) {\n var width = rect.width;\n var height = rect.height;\n var min = Math.min(width, height);\n var x = obj.x == null ? 0.5 : obj.x;\n var y = obj.y == null ? 0.5 : obj.y;\n var r = obj.r == null ? 0.5 : obj.r;\n\n if (!obj.global) {\n x = x * width + rect.x;\n y = y * height + rect.y;\n r = r * min;\n }\n\n var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\n return canvasGradient;\n}\n\nStyle.prototype = {\n constructor: Style,\n\n /**\n * @type {string}\n */\n fill: '#000',\n\n /**\n * @type {string}\n */\n stroke: null,\n\n /**\n * @type {number}\n */\n opacity: 1,\n\n /**\n * @type {number}\n */\n fillOpacity: null,\n\n /**\n * @type {number}\n */\n strokeOpacity: null,\n\n /**\n * `true` is not supported.\n * `false`/`null`/`undefined` are the same.\n * `false` is used to remove lineDash in some\n * case that `null`/`undefined` can not be set.\n * (e.g., emphasis.lineStyle in echarts)\n * @type {Array.|boolean}\n */\n lineDash: null,\n\n /**\n * @type {number}\n */\n lineDashOffset: 0,\n\n /**\n * @type {number}\n */\n shadowBlur: 0,\n\n /**\n * @type {number}\n */\n shadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n shadowOffsetY: 0,\n\n /**\n * @type {number}\n */\n lineWidth: 1,\n\n /**\n * If stroke ignore scale\n * @type {Boolean}\n */\n strokeNoScale: false,\n // Bounding rect text configuration\n // Not affected by element transform\n\n /**\n * @type {string}\n */\n text: null,\n\n /**\n * If `fontSize` or `fontFamily` exists, `font` will be reset by\n * `fontSize`, `fontStyle`, `fontWeight`, `fontFamily`.\n * So do not visit it directly in upper application (like echarts),\n * but use `contain/text#makeFont` instead.\n * @type {string}\n */\n font: null,\n\n /**\n * The same as font. Use font please.\n * @deprecated\n * @type {string}\n */\n textFont: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontStyle: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontWeight: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * Should be 12 but not '12px'.\n * @type {number}\n */\n fontSize: null,\n\n /**\n * It helps merging respectively, rather than parsing an entire font string.\n * @type {string}\n */\n fontFamily: null,\n\n /**\n * Reserved for special functinality, like 'hr'.\n * @type {string}\n */\n textTag: null,\n\n /**\n * @type {string}\n */\n textFill: '#000',\n\n /**\n * @type {string}\n */\n textStroke: null,\n\n /**\n * @type {number}\n */\n textWidth: null,\n\n /**\n * Only for textBackground.\n * @type {number}\n */\n textHeight: null,\n\n /**\n * textStroke may be set as some color as a default\n * value in upper applicaion, where the default value\n * of textStrokeWidth should be 0 to make sure that\n * user can choose to do not use text stroke.\n * @type {number}\n */\n textStrokeWidth: 0,\n\n /**\n * @type {number}\n */\n textLineHeight: null,\n\n /**\n * 'inside', 'left', 'right', 'top', 'bottom'\n * [x, y]\n * Based on x, y of rect.\n * @type {string|Array.}\n * @default 'inside'\n */\n textPosition: 'inside',\n\n /**\n * If not specified, use the boundingRect of a `displayable`.\n * @type {Object}\n */\n textRect: null,\n\n /**\n * [x, y]\n * @type {Array.}\n */\n textOffset: null,\n\n /**\n * @type {string}\n */\n textAlign: null,\n\n /**\n * @type {string}\n */\n textVerticalAlign: null,\n\n /**\n * @type {number}\n */\n textDistance: 5,\n\n /**\n * @type {string}\n */\n textShadowColor: 'transparent',\n\n /**\n * @type {number}\n */\n textShadowBlur: 0,\n\n /**\n * @type {number}\n */\n textShadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n textShadowOffsetY: 0,\n\n /**\n * @type {string}\n */\n textBoxShadowColor: 'transparent',\n\n /**\n * @type {number}\n */\n textBoxShadowBlur: 0,\n\n /**\n * @type {number}\n */\n textBoxShadowOffsetX: 0,\n\n /**\n * @type {number}\n */\n textBoxShadowOffsetY: 0,\n\n /**\n * Whether transform text.\n * Only available in Path and Image element,\n * where the text is called as `RectText`.\n * @type {boolean}\n */\n transformText: false,\n\n /**\n * Text rotate around position of Path or Image.\n * The origin of the rotation can be specified by `textOrigin`.\n * Only available in Path and Image element,\n * where the text is called as `RectText`.\n */\n textRotation: 0,\n\n /**\n * Text origin of text rotation.\n * Useful in the case like label rotation of circular symbol.\n * Only available in Path and Image element, where the text is called\n * as `RectText` and the element is called as \"host element\".\n * The value can be:\n * + If specified as a coordinate like `[10, 40]`, it is the `[x, y]`\n * base on the left-top corner of the rect of its host element.\n * + If specified as a string `center`, it is the center of the rect of\n * its host element.\n * + By default, this origin is the `textPosition`.\n * @type {string|Array.}\n */\n textOrigin: null,\n\n /**\n * @type {string}\n */\n textBackgroundColor: null,\n\n /**\n * @type {string}\n */\n textBorderColor: null,\n\n /**\n * @type {number}\n */\n textBorderWidth: 0,\n\n /**\n * @type {number}\n */\n textBorderRadius: 0,\n\n /**\n * Can be `2` or `[2, 4]` or `[2, 3, 4, 5]`\n * @type {number|Array.}\n */\n textPadding: null,\n\n /**\n * Text styles for rich text.\n * @type {Object}\n */\n rich: null,\n\n /**\n * {outerWidth, outerHeight, ellipsis, placeholder}\n * @type {Object}\n */\n truncate: null,\n\n /**\n * https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n * @type {string}\n */\n blend: null,\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n */\n bind: function (ctx, el, prevEl) {\n var style = this;\n var prevStyle = prevEl && prevEl.style; // If no prevStyle, it means first draw.\n // Only apply cache if the last time cachced by this function.\n\n var notCheckCache = !prevStyle || ctx.__attrCachedBy !== ContextCachedBy.STYLE_BIND;\n ctx.__attrCachedBy = ContextCachedBy.STYLE_BIND;\n\n for (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n var prop = STYLE_COMMON_PROPS[i];\n var styleName = prop[0];\n\n if (notCheckCache || style[styleName] !== prevStyle[styleName]) {\n // FIXME Invalid property value will cause style leak from previous element.\n ctx[styleName] = fixShadow(ctx, styleName, style[styleName] || prop[1]);\n }\n }\n\n if (notCheckCache || style.fill !== prevStyle.fill) {\n ctx.fillStyle = style.fill;\n }\n\n if (notCheckCache || style.stroke !== prevStyle.stroke) {\n ctx.strokeStyle = style.stroke;\n }\n\n if (notCheckCache || style.opacity !== prevStyle.opacity) {\n ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\n }\n\n if (notCheckCache || style.blend !== prevStyle.blend) {\n ctx.globalCompositeOperation = style.blend || 'source-over';\n }\n\n if (this.hasStroke()) {\n var lineWidth = style.lineWidth;\n ctx.lineWidth = lineWidth / (this.strokeNoScale && el && el.getLineScale ? el.getLineScale() : 1);\n }\n },\n hasFill: function () {\n var fill = this.fill;\n return fill != null && fill !== 'none';\n },\n hasStroke: function () {\n var stroke = this.stroke;\n return stroke != null && stroke !== 'none' && this.lineWidth > 0;\n },\n\n /**\n * Extend from other style\n * @param {zrender/graphic/Style} otherStyle\n * @param {boolean} overwrite true: overwrirte any way.\n * false: overwrite only when !target.hasOwnProperty\n * others: overwrite when property is not null/undefined.\n */\n extendFrom: function (otherStyle, overwrite) {\n if (otherStyle) {\n for (var name in otherStyle) {\n if (otherStyle.hasOwnProperty(name) && (overwrite === true || (overwrite === false ? !this.hasOwnProperty(name) : otherStyle[name] != null))) {\n this[name] = otherStyle[name];\n }\n }\n }\n },\n\n /**\n * Batch setting style with a given object\n * @param {Object|string} obj\n * @param {*} [obj]\n */\n set: function (obj, value) {\n if (typeof obj === 'string') {\n this[obj] = value;\n } else {\n this.extendFrom(obj, true);\n }\n },\n\n /**\n * Clone\n * @return {zrender/graphic/Style} [description]\n */\n clone: function () {\n var newStyle = new this.constructor();\n newStyle.extendFrom(this, true);\n return newStyle;\n },\n getGradient: function (ctx, obj, rect) {\n var method = obj.type === 'radial' ? createRadialGradient : createLinearGradient;\n var canvasGradient = method(ctx, obj, rect);\n var colorStops = obj.colorStops;\n\n for (var i = 0; i < colorStops.length; i++) {\n canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\n }\n\n return canvasGradient;\n }\n};\nvar styleProto = Style.prototype;\n\nfor (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n var prop = STYLE_COMMON_PROPS[i];\n\n if (!(prop[0] in styleProto)) {\n styleProto[prop[0]] = prop[1];\n }\n} // Provide for others\n\n\nStyle.getGradient = styleProto.getGradient;\nvar _default = Style;\nmodule.exports = _default;","var LRU = require(\"../../core/LRU\");\n\nvar globalImageCache = new LRU(50);\n/**\n * @param {string|HTMLImageElement|HTMLCanvasElement|Canvas} newImageOrSrc\n * @return {HTMLImageElement|HTMLCanvasElement|Canvas} image\n */\n\nfunction findExistImage(newImageOrSrc) {\n if (typeof newImageOrSrc === 'string') {\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n return cachedImgObj && cachedImgObj.image;\n } else {\n return newImageOrSrc;\n }\n}\n/**\n * Caution: User should cache loaded images, but not just count on LRU.\n * Consider if required images more than LRU size, will dead loop occur?\n *\n * @param {string|HTMLImageElement|HTMLCanvasElement|Canvas} newImageOrSrc\n * @param {HTMLImageElement|HTMLCanvasElement|Canvas} image Existent image.\n * @param {module:zrender/Element} [hostEl] For calling `dirty`.\n * @param {Function} [cb] params: (image, cbPayload)\n * @param {Object} [cbPayload] Payload on cb calling.\n * @return {HTMLImageElement|HTMLCanvasElement|Canvas} image\n */\n\n\nfunction createOrUpdateImage(newImageOrSrc, image, hostEl, cb, cbPayload) {\n if (!newImageOrSrc) {\n return image;\n } else if (typeof newImageOrSrc === 'string') {\n // Image should not be loaded repeatly.\n if (image && image.__zrImageSrc === newImageOrSrc || !hostEl) {\n return image;\n } // Only when there is no existent image or existent image src\n // is different, this method is responsible for load.\n\n\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n var pendingWrap = {\n hostEl: hostEl,\n cb: cb,\n cbPayload: cbPayload\n };\n\n if (cachedImgObj) {\n image = cachedImgObj.image;\n !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\n } else {\n image = new Image();\n image.onload = image.onerror = imageOnLoad;\n globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\n image: image,\n pending: [pendingWrap]\n });\n image.src = image.__zrImageSrc = newImageOrSrc;\n }\n\n return image;\n } // newImageOrSrc is an HTMLImageElement or HTMLCanvasElement or Canvas\n else {\n return newImageOrSrc;\n }\n}\n\nfunction imageOnLoad() {\n var cachedImgObj = this.__cachedImgObj;\n this.onload = this.onerror = this.__cachedImgObj = null;\n\n for (var i = 0; i < cachedImgObj.pending.length; i++) {\n var pendingWrap = cachedImgObj.pending[i];\n var cb = pendingWrap.cb;\n cb && cb(this, pendingWrap.cbPayload);\n pendingWrap.hostEl.dirty();\n }\n\n cachedImgObj.pending.length = 0;\n}\n\nfunction isImageReady(image) {\n return image && image.width && image.height;\n}\n\nexports.findExistImage = findExistImage;\nexports.createOrUpdateImage = createOrUpdateImage;\nexports.isImageReady = isImageReady;","var Path = require(\"../Path\");\n\nvar roundRectHelper = require(\"../helper/roundRect\");\n\nvar _subPixelOptimize = require(\"../helper/subPixelOptimize\");\n\nvar subPixelOptimizeRect = _subPixelOptimize.subPixelOptimizeRect;\n\n/**\n * 矩形\n * @module zrender/graphic/shape/Rect\n */\n// Avoid create repeatly.\nvar subPixelOptimizeOutputShape = {};\n\nvar _default = Path.extend({\n type: 'rect',\n shape: {\n // 左上、右上、右下、左下角的半径依次为r1、r2、r3、r4\n // r缩写为1 相当于 [1, 1, 1, 1]\n // r缩写为[1] 相当于 [1, 1, 1, 1]\n // r缩写为[1, 2] 相当于 [1, 2, 1, 2]\n // r缩写为[1, 2, 3] 相当于 [1, 2, 3, 2]\n r: 0,\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n buildPath: function (ctx, shape) {\n var x;\n var y;\n var width;\n var height;\n\n if (this.subPixelOptimize) {\n subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);\n x = subPixelOptimizeOutputShape.x;\n y = subPixelOptimizeOutputShape.y;\n width = subPixelOptimizeOutputShape.width;\n height = subPixelOptimizeOutputShape.height;\n subPixelOptimizeOutputShape.r = shape.r;\n shape = subPixelOptimizeOutputShape;\n } else {\n x = shape.x;\n y = shape.y;\n width = shape.width;\n height = shape.height;\n }\n\n if (!shape.r) {\n ctx.rect(x, y, width, height);\n } else {\n roundRectHelper.buildPath(ctx, shape);\n }\n\n ctx.closePath();\n return;\n }\n});\n\nmodule.exports = _default;","/**\n * Sub-pixel optimize for canvas rendering, prevent from blur\n * when rendering a thin vertical/horizontal line.\n */\nvar round = Math.round;\n/**\n * Sub pixel optimize line for canvas\n *\n * @param {Object} outputShape The modification will be performed on `outputShape`.\n * `outputShape` and `inputShape` can be the same object.\n * `outputShape` object can be used repeatly, because all of\n * the `x1`, `x2`, `y1`, `y2` will be assigned in this method.\n * @param {Object} [inputShape]\n * @param {number} [inputShape.x1]\n * @param {number} [inputShape.y1]\n * @param {number} [inputShape.x2]\n * @param {number} [inputShape.y2]\n * @param {Object} [style]\n * @param {number} [style.lineWidth]\n */\n\nfunction subPixelOptimizeLine(outputShape, inputShape, style) {\n var lineWidth = style && style.lineWidth;\n\n if (!inputShape || !lineWidth) {\n return;\n }\n\n var x1 = inputShape.x1;\n var x2 = inputShape.x2;\n var y1 = inputShape.y1;\n var y2 = inputShape.y2;\n\n if (round(x1 * 2) === round(x2 * 2)) {\n outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);\n } else {\n outputShape.x1 = x1;\n outputShape.x2 = x2;\n }\n\n if (round(y1 * 2) === round(y2 * 2)) {\n outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);\n } else {\n outputShape.y1 = y1;\n outputShape.y2 = y2;\n }\n}\n/**\n * Sub pixel optimize rect for canvas\n *\n * @param {Object} outputShape The modification will be performed on `outputShape`.\n * `outputShape` and `inputShape` can be the same object.\n * `outputShape` object can be used repeatly, because all of\n * the `x`, `y`, `width`, `height` will be assigned in this method.\n * @param {Object} [inputShape]\n * @param {number} [inputShape.x]\n * @param {number} [inputShape.y]\n * @param {number} [inputShape.width]\n * @param {number} [inputShape.height]\n * @param {Object} [style]\n * @param {number} [style.lineWidth]\n */\n\n\nfunction subPixelOptimizeRect(outputShape, inputShape, style) {\n var lineWidth = style && style.lineWidth;\n\n if (!inputShape || !lineWidth) {\n return;\n }\n\n var originX = inputShape.x;\n var originY = inputShape.y;\n var originWidth = inputShape.width;\n var originHeight = inputShape.height;\n outputShape.x = subPixelOptimize(originX, lineWidth, true);\n outputShape.y = subPixelOptimize(originY, lineWidth, true);\n outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);\n outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);\n}\n/**\n * Sub pixel optimize for canvas\n *\n * @param {number} position Coordinate, such as x, y\n * @param {number} lineWidth Should be nonnegative integer.\n * @param {boolean=} positiveOrNegative Default false (negative).\n * @return {number} Optimized position.\n */\n\n\nfunction subPixelOptimize(position, lineWidth, positiveOrNegative) {\n // Assure that (position + lineWidth / 2) is near integer edge,\n // otherwise line will be fuzzy in canvas.\n var doubledPosition = round(position * 2);\n return (doubledPosition + round(lineWidth)) % 2 === 0 ? doubledPosition / 2 : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;\n}\n\nexports.subPixelOptimizeLine = subPixelOptimizeLine;\nexports.subPixelOptimizeRect = subPixelOptimizeRect;\nexports.subPixelOptimize = subPixelOptimize;","var zrUtil = require(\"../core/util\");\n\nvar Gradient = require(\"./Gradient\");\n\n/**\n * x, y, x2, y2 are all percent from 0 to 1\n * @param {number} [x=0]\n * @param {number} [y=0]\n * @param {number} [x2=1]\n * @param {number} [y2=0]\n * @param {Array.} colorStops\n * @param {boolean} [globalCoord=false]\n */\nvar LinearGradient = function (x, y, x2, y2, colorStops, globalCoord) {\n // Should do nothing more in this constructor. Because gradient can be\n // declard by `color: {type: 'linear', colorStops: ...}`, where\n // this constructor will not be called.\n this.x = x == null ? 0 : x;\n this.y = y == null ? 0 : y;\n this.x2 = x2 == null ? 1 : x2;\n this.y2 = y2 == null ? 0 : y2; // Can be cloned\n\n this.type = 'linear'; // If use global coord\n\n this.global = globalCoord || false;\n Gradient.call(this, colorStops);\n};\n\nLinearGradient.prototype = {\n constructor: LinearGradient\n};\nzrUtil.inherits(LinearGradient, Gradient);\nvar _default = LinearGradient;\nmodule.exports = _default;","var _util = require(\"../core/util\");\n\nvar inherits = _util.inherits;\n\nvar Displayble = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\n/**\n * Displayable for incremental rendering. It will be rendered in a separate layer\n * IncrementalDisplay have two main methods. `clearDisplayables` and `addDisplayables`\n * addDisplayables will render the added displayables incremetally.\n *\n * It use a not clearFlag to tell the painter don't clear the layer if it's the first element.\n */\n// TODO Style override ?\nfunction IncrementalDisplayble(opts) {\n Displayble.call(this, opts);\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.notClear = true;\n}\n\nIncrementalDisplayble.prototype.incremental = true;\n\nIncrementalDisplayble.prototype.clearDisplaybles = function () {\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.dirty();\n this.notClear = false;\n};\n\nIncrementalDisplayble.prototype.addDisplayable = function (displayable, notPersistent) {\n if (notPersistent) {\n this._temporaryDisplayables.push(displayable);\n } else {\n this._displayables.push(displayable);\n }\n\n this.dirty();\n};\n\nIncrementalDisplayble.prototype.addDisplayables = function (displayables, notPersistent) {\n notPersistent = notPersistent || false;\n\n for (var i = 0; i < displayables.length; i++) {\n this.addDisplayable(displayables[i], notPersistent);\n }\n};\n\nIncrementalDisplayble.prototype.eachPendingDisplayable = function (cb) {\n for (var i = this._cursor; i < this._displayables.length; i++) {\n cb && cb(this._displayables[i]);\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n cb && cb(this._temporaryDisplayables[i]);\n }\n};\n\nIncrementalDisplayble.prototype.update = function () {\n this.updateTransform();\n\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i]; // PENDING\n\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n};\n\nIncrementalDisplayble.prototype.brush = function (ctx, prevEl) {\n // Render persistant displayables.\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === this._cursor ? null : this._displayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._cursor = i; // Render temporary displayables.\n\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i];\n displayable.beforeBrush && displayable.beforeBrush(ctx);\n displayable.brush(ctx, i === 0 ? null : this._temporaryDisplayables[i - 1]);\n displayable.afterBrush && displayable.afterBrush(ctx);\n }\n\n this._temporaryDisplayables = [];\n this.notClear = true;\n};\n\nvar m = [];\n\nIncrementalDisplayble.prototype.getBoundingRect = function () {\n if (!this._rect) {\n var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\n\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n var childRect = displayable.getBoundingRect().clone();\n\n if (displayable.needLocalTransform()) {\n childRect.applyTransform(displayable.getLocalTransform(m));\n }\n\n rect.union(childRect);\n }\n\n this._rect = rect;\n }\n\n return this._rect;\n};\n\nIncrementalDisplayble.prototype.contain = function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n\n if (rect.contain(localPos[0], localPos[1])) {\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n\n if (displayable.contain(x, y)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\ninherits(IncrementalDisplayble, Displayble);\nvar _default = IncrementalDisplayble;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\nvar _format = require(\"../../util/format\");\n\nvar getTooltipMarker = _format.getTooltipMarker;\nvar formatTpl = _format.formatTpl;\n\nvar _model = require(\"../../util/model\");\n\nvar getTooltipRenderMode = _model.getTooltipRenderMode;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g; // PENDING A little ugly\n\nvar _default = {\n /**\n * Get params for formatter\n * @param {number} dataIndex\n * @param {string} [dataType]\n * @return {Object}\n */\n getDataParams: function (dataIndex, dataType) {\n var data = this.getData(dataType);\n var rawValue = this.getRawValue(dataIndex, dataType);\n var rawDataIndex = data.getRawIndex(dataIndex);\n var name = data.getName(dataIndex);\n var itemOpt = data.getRawDataItem(dataIndex);\n var color = data.getItemVisual(dataIndex, 'color');\n var borderColor = data.getItemVisual(dataIndex, 'borderColor');\n var tooltipModel = this.ecModel.getComponent('tooltip');\n var renderModeOption = tooltipModel && tooltipModel.get('renderMode');\n var renderMode = getTooltipRenderMode(renderModeOption);\n var mainType = this.mainType;\n var isSeries = mainType === 'series';\n var userOutput = data.userOutput;\n return {\n componentType: mainType,\n componentSubType: this.subType,\n componentIndex: this.componentIndex,\n seriesType: isSeries ? this.subType : null,\n seriesIndex: this.seriesIndex,\n seriesId: isSeries ? this.id : null,\n seriesName: isSeries ? this.name : null,\n name: name,\n dataIndex: rawDataIndex,\n data: itemOpt,\n dataType: dataType,\n value: rawValue,\n color: color,\n borderColor: borderColor,\n dimensionNames: userOutput ? userOutput.dimensionNames : null,\n encode: userOutput ? userOutput.encode : null,\n marker: getTooltipMarker({\n color: color,\n renderMode: renderMode\n }),\n // Param name list for mapping `a`, `b`, `c`, `d`, `e`\n $vars: ['seriesName', 'name', 'value']\n };\n },\n\n /**\n * Format label\n * @param {number} dataIndex\n * @param {string} [status='normal'] 'normal' or 'emphasis'\n * @param {string} [dataType]\n * @param {number} [dimIndex] Only used in some chart that\n * use formatter in different dimensions, like radar.\n * @param {string} [labelProp='label']\n * @return {string} If not formatter, return null/undefined\n */\n getFormattedLabel: function (dataIndex, status, dataType, dimIndex, labelProp) {\n status = status || 'normal';\n var data = this.getData(dataType);\n var itemModel = data.getItemModel(dataIndex);\n var params = this.getDataParams(dataIndex, dataType);\n\n if (dimIndex != null && params.value instanceof Array) {\n params.value = params.value[dimIndex];\n }\n\n var formatter = itemModel.get(status === 'normal' ? [labelProp || 'label', 'formatter'] : [status, labelProp || 'label', 'formatter']);\n\n if (typeof formatter === 'function') {\n params.status = status;\n params.dimensionIndex = dimIndex;\n return formatter(params);\n } else if (typeof formatter === 'string') {\n var str = formatTpl(formatter, params); // Support 'aaa{@[3]}bbb{@product}ccc'.\n // Do not support '}' in dim name util have to.\n\n return str.replace(DIMENSION_LABEL_REG, function (origin, dim) {\n var len = dim.length;\n\n if (dim.charAt(0) === '[' && dim.charAt(len - 1) === ']') {\n dim = +dim.slice(1, len - 1); // Also: '[]' => 0\n }\n\n return retrieveRawValue(data, dataIndex, dim);\n });\n }\n },\n\n /**\n * Get raw value in option\n * @param {number} idx\n * @param {string} [dataType]\n * @return {Array|number|string}\n */\n getRawValue: function (idx, dataType) {\n return retrieveRawValue(this.getData(dataType), idx);\n },\n\n /**\n * Should be implemented.\n * @param {number} dataIndex\n * @param {boolean} [multipleSeries=false]\n * @param {number} [dataType]\n * @return {string} tooltip string\n */\n formatTooltip: function () {// Empty function\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar assert = _util.assert;\nvar isArray = _util.isArray;\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} define\n * @return See the return of `createTask`.\n */\nfunction createTask(define) {\n return new Task(define);\n}\n/**\n * @constructor\n * @param {Object} define\n * @param {Function} define.reset Custom reset\n * @param {Function} [define.plan] Returns 'reset' indicate reset immediately.\n * @param {Function} [define.count] count is used to determin data task.\n * @param {Function} [define.onDirty] count is used to determin data task.\n */\n\n\nfunction Task(define) {\n define = define || {};\n this._reset = define.reset;\n this._plan = define.plan;\n this._count = define.count;\n this._onDirty = define.onDirty;\n this._dirty = true; // Context must be specified implicitly, to\n // avoid miss update context when model changed.\n\n this.context;\n}\n\nvar taskProto = Task.prototype;\n/**\n * @param {Object} performArgs\n * @param {number} [performArgs.step] Specified step.\n * @param {number} [performArgs.skip] Skip customer perform call.\n * @param {number} [performArgs.modBy] Sampling window size.\n * @param {number} [performArgs.modDataCount] Sampling count.\n */\n\ntaskProto.perform = function (performArgs) {\n var upTask = this._upstream;\n var skip = performArgs && performArgs.skip; // TODO some refactor.\n // Pull data. Must pull data each time, because context.data\n // may be updated by Series.setData.\n\n if (this._dirty && upTask) {\n var context = this.context;\n context.data = context.outputData = upTask.context.outputData;\n }\n\n if (this.__pipeline) {\n this.__pipeline.currentTask = this;\n }\n\n var planResult;\n\n if (this._plan && !skip) {\n planResult = this._plan(this.context);\n } // Support sharding by mod, which changes the render sequence and makes the rendered graphic\n // elements uniformed distributed when progress, especially when moving or zooming.\n\n\n var lastModBy = normalizeModBy(this._modBy);\n var lastModDataCount = this._modDataCount || 0;\n var modBy = normalizeModBy(performArgs && performArgs.modBy);\n var modDataCount = performArgs && performArgs.modDataCount || 0;\n\n if (lastModBy !== modBy || lastModDataCount !== modDataCount) {\n planResult = 'reset';\n }\n\n function normalizeModBy(val) {\n !(val >= 1) && (val = 1); // jshint ignore:line\n\n return val;\n }\n\n var forceFirstProgress;\n\n if (this._dirty || planResult === 'reset') {\n this._dirty = false;\n forceFirstProgress = reset(this, skip);\n }\n\n this._modBy = modBy;\n this._modDataCount = modDataCount;\n var step = performArgs && performArgs.step;\n\n if (upTask) {\n this._dueEnd = upTask._outputDueEnd;\n } // DataTask or overallTask\n else {\n this._dueEnd = this._count ? this._count(this.context) : Infinity;\n } // Note: Stubs, that its host overall task let it has progress, has progress.\n // If no progress, pass index from upstream to downstream each time plan called.\n\n\n if (this._progress) {\n var start = this._dueIndex;\n var end = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);\n\n if (!skip && (forceFirstProgress || start < end)) {\n var progress = this._progress;\n\n if (isArray(progress)) {\n for (var i = 0; i < progress.length; i++) {\n doProgress(this, progress[i], start, end, modBy, modDataCount);\n }\n } else {\n doProgress(this, progress, start, end, modBy, modDataCount);\n }\n }\n\n this._dueIndex = end; // If no `outputDueEnd`, assume that output data and\n // input data is the same, so use `dueIndex` as `outputDueEnd`.\n\n var outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : end;\n this._outputDueEnd = outputDueEnd;\n } else {\n // (1) Some overall task has no progress.\n // (2) Stubs, that its host overall task do not let it has progress, has no progress.\n // This should always be performed so it can be passed to downstream.\n this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd;\n }\n\n return this.unfinished();\n};\n\nvar iterator = function () {\n var end;\n var current;\n var modBy;\n var modDataCount;\n var winCount;\n var it = {\n reset: function (s, e, sStep, sCount) {\n current = s;\n end = e;\n modBy = sStep;\n modDataCount = sCount;\n winCount = Math.ceil(modDataCount / modBy);\n it.next = modBy > 1 && modDataCount > 0 ? modNext : sequentialNext;\n }\n };\n return it;\n\n function sequentialNext() {\n return current < end ? current++ : null;\n }\n\n function modNext() {\n var dataIndex = current % winCount * modBy + Math.ceil(current / winCount);\n var result = current >= end ? null : dataIndex < modDataCount ? dataIndex // If modDataCount is smaller than data.count() (consider `appendData` case),\n // Use normal linear rendering mode.\n : current;\n current++;\n return result;\n }\n}();\n\ntaskProto.dirty = function () {\n this._dirty = true;\n this._onDirty && this._onDirty(this.context);\n};\n\nfunction doProgress(taskIns, progress, start, end, modBy, modDataCount) {\n iterator.reset(start, end, modBy, modDataCount);\n taskIns._callingProgress = progress;\n\n taskIns._callingProgress({\n start: start,\n end: end,\n count: end - start,\n next: iterator.next\n }, taskIns.context);\n}\n\nfunction reset(taskIns, skip) {\n taskIns._dueIndex = taskIns._outputDueEnd = taskIns._dueEnd = 0;\n taskIns._settedOutputEnd = null;\n var progress;\n var forceFirstProgress;\n\n if (!skip && taskIns._reset) {\n progress = taskIns._reset(taskIns.context);\n\n if (progress && progress.progress) {\n forceFirstProgress = progress.forceFirstProgress;\n progress = progress.progress;\n } // To simplify no progress checking, array must has item.\n\n\n if (isArray(progress) && !progress.length) {\n progress = null;\n }\n }\n\n taskIns._progress = progress;\n taskIns._modBy = taskIns._modDataCount = null;\n var downstream = taskIns._downstream;\n downstream && downstream.dirty();\n return forceFirstProgress;\n}\n/**\n * @return {boolean}\n */\n\n\ntaskProto.unfinished = function () {\n return this._progress && this._dueIndex < this._dueEnd;\n};\n/**\n * @param {Object} downTask The downstream task.\n * @return {Object} The downstream task.\n */\n\n\ntaskProto.pipe = function (downTask) {\n // If already downstream, do not dirty downTask.\n if (this._downstream !== downTask || this._dirty) {\n this._downstream = downTask;\n downTask._upstream = this;\n downTask.dirty();\n }\n};\n\ntaskProto.dispose = function () {\n if (this._disposed) {\n return;\n }\n\n this._upstream && (this._upstream._downstream = null);\n this._downstream && (this._downstream._upstream = null);\n this._dirty = false;\n this._disposed = true;\n};\n\ntaskProto.getUpstream = function () {\n return this._upstream;\n};\n\ntaskProto.getDownstream = function () {\n return this._downstream;\n};\n\ntaskProto.setOutputEnd = function (end) {\n // This only happend in dataTask, dataZoom, map, currently.\n // where dataZoom do not set end each time, but only set\n // when reset. So we should record the setted end, in case\n // that the stub of dataZoom perform again and earse the\n // setted end by upstream.\n this._outputDueEnd = this._settedOutputEnd = end;\n}; ///////////////////////////////////////////////////////////\n// For stream debug (Should be commented out after used!)\n// Usage: printTask(this, 'begin');\n// Usage: printTask(this, null, {someExtraProp});\n// function printTask(task, prefix, extra) {\n// window.ecTaskUID == null && (window.ecTaskUID = 0);\n// task.uidDebug == null && (task.uidDebug = `task_${window.ecTaskUID++}`);\n// task.agent && task.agent.uidDebug == null && (task.agent.uidDebug = `task_${window.ecTaskUID++}`);\n// var props = [];\n// if (task.__pipeline) {\n// var val = `${task.__idxInPipeline}/${task.__pipeline.tail.__idxInPipeline} ${task.agent ? '(stub)' : ''}`;\n// props.push({text: 'idx', value: val});\n// } else {\n// var stubCount = 0;\n// task.agentStubMap.each(() => stubCount++);\n// props.push({text: 'idx', value: `overall (stubs: ${stubCount})`});\n// }\n// props.push({text: 'uid', value: task.uidDebug});\n// if (task.__pipeline) {\n// props.push({text: 'pid', value: task.__pipeline.id});\n// task.agent && props.push(\n// {text: 'stubFor', value: task.agent.uidDebug}\n// );\n// }\n// props.push(\n// {text: 'dirty', value: task._dirty},\n// {text: 'dueIndex', value: task._dueIndex},\n// {text: 'dueEnd', value: task._dueEnd},\n// {text: 'outputDueEnd', value: task._outputDueEnd}\n// );\n// if (extra) {\n// Object.keys(extra).forEach(key => {\n// props.push({text: key, value: extra[key]});\n// });\n// }\n// var args = ['color: blue'];\n// var msg = `%c[${prefix || 'T'}] %c` + props.map(item => (\n// args.push('color: black', 'color: red'),\n// `${item.text}: %c${item.value}`\n// )).join('%c, ');\n// console.log.apply(console, [msg].concat(args));\n// // console.log(this);\n// }\n\n\nexports.createTask = createTask;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isString = _util.isString;\nvar isArray = _util.isArray;\nvar each = _util.each;\nvar assert = _util.assert;\n\nvar _parseSVG = require(\"zrender/lib/tool/parseSVG\");\n\nvar parseXML = _parseSVG.parseXML;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar storage = createHashMap(); // For minimize the code size of common echarts package,\n// do not put too much logic in this module.\n\nvar _default = {\n // The format of record: see `echarts.registerMap`.\n // Compatible with previous `echarts.registerMap`.\n registerMap: function (mapName, rawGeoJson, rawSpecialAreas) {\n var records;\n\n if (isArray(rawGeoJson)) {\n records = rawGeoJson;\n } else if (rawGeoJson.svg) {\n records = [{\n type: 'svg',\n source: rawGeoJson.svg,\n specialAreas: rawGeoJson.specialAreas\n }];\n } else {\n // Backward compatibility.\n if (rawGeoJson.geoJson && !rawGeoJson.features) {\n rawSpecialAreas = rawGeoJson.specialAreas;\n rawGeoJson = rawGeoJson.geoJson;\n }\n\n records = [{\n type: 'geoJSON',\n source: rawGeoJson,\n specialAreas: rawSpecialAreas\n }];\n }\n\n each(records, function (record) {\n var type = record.type;\n type === 'geoJson' && (type = record.type = 'geoJSON');\n var parse = parsers[type];\n parse(record);\n });\n return storage.set(mapName, records);\n },\n retrieveMap: function (mapName) {\n return storage.get(mapName);\n }\n};\nvar parsers = {\n geoJSON: function (record) {\n var source = record.source;\n record.geoJSON = !isString(source) ? source : typeof JSON !== 'undefined' && JSON.parse ? JSON.parse(source) : new Function('return (' + source + ');')();\n },\n // Only perform parse to XML object here, which might be time\n // consiming for large SVG.\n // Although convert XML to zrender element is also time consiming,\n // if we do it here, the clone of zrender elements has to be\n // required. So we do it once for each geo instance, util real\n // performance issues call for optimizing it.\n svg: function (record) {\n record.svgXML = parseXML(record.source);\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @return {string} label string. Not null/undefined\n */\nfunction getDefaultLabel(data, dataIndex) {\n var labelDims = data.mapDimension('defaultedLabel', true);\n var len = labelDims.length; // Simple optimization (in lots of cases, label dims length is 1)\n\n if (len === 1) {\n return retrieveRawValue(data, dataIndex, labelDims[0]);\n } else if (len) {\n var vals = [];\n\n for (var i = 0; i < labelDims.length; i++) {\n var val = retrieveRawValue(data, dataIndex, labelDims[i]);\n vals.push(val);\n }\n\n return vals.join(' ');\n }\n}\n\nexports.getDefaultLabel = getDefaultLabel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isObject = _util.isObject;\nvar each = _util.each;\nvar map = _util.map;\nvar indexOf = _util.indexOf;\nvar retrieve = _util.retrieve;\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar _axisHelper = require(\"../../coord/axisHelper\");\n\nvar createScaleByModel = _axisHelper.createScaleByModel;\nvar ifAxisCrossZero = _axisHelper.ifAxisCrossZero;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\nvar estimateLabelUnionRect = _axisHelper.estimateLabelUnionRect;\n\nvar Cartesian2D = require(\"./Cartesian2D\");\n\nvar Axis2D = require(\"./Axis2D\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\nrequire(\"./GridModel\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Grid is a region which contains at most 4 cartesian systems\n *\n * TODO Default cartesian\n */\n// Depends on GridModel, AxisModel, which performs preprocess.\n\n/**\n * Check if the axis is used in the specified grid\n * @inner\n */\nfunction isAxisUsedInTheGrid(axisModel, gridModel, ecModel) {\n return axisModel.getCoordSysModel() === gridModel;\n}\n\nfunction Grid(gridModel, ecModel, api) {\n /**\n * @type {Object.}\n * @private\n */\n this._coordsMap = {};\n /**\n * @type {Array.}\n * @private\n */\n\n this._coordsList = [];\n /**\n * @type {Object.>}\n * @private\n */\n\n this._axesMap = {};\n /**\n * @type {Array.}\n * @private\n */\n\n this._axesList = [];\n\n this._initCartesian(gridModel, ecModel, api);\n\n this.model = gridModel;\n}\n\nvar gridProto = Grid.prototype;\ngridProto.type = 'grid';\ngridProto.axisPointerEnabled = true;\n\ngridProto.getRect = function () {\n return this._rect;\n};\n\ngridProto.update = function (ecModel, api) {\n var axesMap = this._axesMap;\n\n this._updateScale(ecModel, this.model);\n\n each(axesMap.x, function (xAxis) {\n niceScaleExtent(xAxis.scale, xAxis.model);\n });\n each(axesMap.y, function (yAxis) {\n niceScaleExtent(yAxis.scale, yAxis.model);\n }); // Key: axisDim_axisIndex, value: boolean, whether onZero target.\n\n var onZeroRecords = {};\n each(axesMap.x, function (xAxis) {\n fixAxisOnZero(axesMap, 'y', xAxis, onZeroRecords);\n });\n each(axesMap.y, function (yAxis) {\n fixAxisOnZero(axesMap, 'x', yAxis, onZeroRecords);\n }); // Resize again if containLabel is enabled\n // FIXME It may cause getting wrong grid size in data processing stage\n\n this.resize(this.model, api);\n};\n\nfunction fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) {\n axis.getAxesOnZeroOf = function () {\n // TODO: onZero of multiple axes.\n return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : [];\n }; // onZero can not be enabled in these two situations:\n // 1. When any other axis is a category axis.\n // 2. When no axis is cross 0 point.\n\n\n var otherAxes = axesMap[otherAxisDim];\n var otherAxisOnZeroOf;\n var axisModel = axis.model;\n var onZero = axisModel.get('axisLine.onZero');\n var onZeroAxisIndex = axisModel.get('axisLine.onZeroAxisIndex');\n\n if (!onZero) {\n return;\n } // If target axis is specified.\n\n\n if (onZeroAxisIndex != null) {\n if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) {\n otherAxisOnZeroOf = otherAxes[onZeroAxisIndex];\n }\n } else {\n // Find the first available other axis.\n for (var idx in otherAxes) {\n if (otherAxes.hasOwnProperty(idx) && canOnZeroToAxis(otherAxes[idx]) // Consider that two Y axes on one value axis,\n // if both onZero, the two Y axes overlap.\n && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) {\n otherAxisOnZeroOf = otherAxes[idx];\n break;\n }\n }\n }\n\n if (otherAxisOnZeroOf) {\n onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true;\n }\n\n function getOnZeroRecordKey(axis) {\n return axis.dim + '_' + axis.index;\n }\n}\n\nfunction canOnZeroToAxis(axis) {\n return axis && axis.type !== 'category' && axis.type !== 'time' && ifAxisCrossZero(axis);\n}\n/**\n * Resize the grid\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\ngridProto.resize = function (gridModel, api, ignoreContainLabel) {\n var gridRect = getLayoutRect(gridModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n this._rect = gridRect;\n var axesList = this._axesList;\n adjustAxes(); // Minus label size\n\n if (!ignoreContainLabel && gridModel.get('containLabel')) {\n each(axesList, function (axis) {\n if (!axis.model.get('axisLabel.inside')) {\n var labelUnionRect = estimateLabelUnionRect(axis);\n\n if (labelUnionRect) {\n var dim = axis.isHorizontal() ? 'height' : 'width';\n var margin = axis.model.get('axisLabel.margin');\n gridRect[dim] -= labelUnionRect[dim] + margin;\n\n if (axis.position === 'top') {\n gridRect.y += labelUnionRect.height + margin;\n } else if (axis.position === 'left') {\n gridRect.x += labelUnionRect.width + margin;\n }\n }\n }\n });\n adjustAxes();\n }\n\n function adjustAxes() {\n each(axesList, function (axis) {\n var isHorizontal = axis.isHorizontal();\n var extent = isHorizontal ? [0, gridRect.width] : [0, gridRect.height];\n var idx = axis.inverse ? 1 : 0;\n axis.setExtent(extent[idx], extent[1 - idx]);\n updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y);\n });\n }\n};\n/**\n * @param {string} axisType\n * @param {number} [axisIndex]\n */\n\n\ngridProto.getAxis = function (axisType, axisIndex) {\n var axesMapOnDim = this._axesMap[axisType];\n\n if (axesMapOnDim != null) {\n if (axisIndex == null) {\n // Find first axis\n for (var name in axesMapOnDim) {\n if (axesMapOnDim.hasOwnProperty(name)) {\n return axesMapOnDim[name];\n }\n }\n }\n\n return axesMapOnDim[axisIndex];\n }\n};\n/**\n * @return {Array.}\n */\n\n\ngridProto.getAxes = function () {\n return this._axesList.slice();\n};\n/**\n * Usage:\n * grid.getCartesian(xAxisIndex, yAxisIndex);\n * grid.getCartesian(xAxisIndex);\n * grid.getCartesian(null, yAxisIndex);\n * grid.getCartesian({xAxisIndex: ..., yAxisIndex: ...});\n *\n * @param {number|Object} [xAxisIndex]\n * @param {number} [yAxisIndex]\n */\n\n\ngridProto.getCartesian = function (xAxisIndex, yAxisIndex) {\n if (xAxisIndex != null && yAxisIndex != null) {\n var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n return this._coordsMap[key];\n }\n\n if (isObject(xAxisIndex)) {\n yAxisIndex = xAxisIndex.yAxisIndex;\n xAxisIndex = xAxisIndex.xAxisIndex;\n } // When only xAxisIndex or yAxisIndex given, find its first cartesian.\n\n\n for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {\n if (coordList[i].getAxis('x').index === xAxisIndex || coordList[i].getAxis('y').index === yAxisIndex) {\n return coordList[i];\n }\n }\n};\n\ngridProto.getCartesians = function () {\n return this._coordsList.slice();\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.convertToPixel = function (ecModel, finder, value) {\n var target = this._findConvertTarget(ecModel, finder);\n\n return target.cartesian ? target.cartesian.dataToPoint(value) : target.axis ? target.axis.toGlobalCoord(target.axis.dataToCoord(value)) : null;\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.convertFromPixel = function (ecModel, finder, value) {\n var target = this._findConvertTarget(ecModel, finder);\n\n return target.cartesian ? target.cartesian.pointToData(value) : target.axis ? target.axis.coordToData(target.axis.toLocalCoord(value)) : null;\n};\n/**\n * @inner\n */\n\n\ngridProto._findConvertTarget = function (ecModel, finder) {\n var seriesModel = finder.seriesModel;\n var xAxisModel = finder.xAxisModel || seriesModel && seriesModel.getReferringComponents('xAxis')[0];\n var yAxisModel = finder.yAxisModel || seriesModel && seriesModel.getReferringComponents('yAxis')[0];\n var gridModel = finder.gridModel;\n var coordsList = this._coordsList;\n var cartesian;\n var axis;\n\n if (seriesModel) {\n cartesian = seriesModel.coordinateSystem;\n indexOf(coordsList, cartesian) < 0 && (cartesian = null);\n } else if (xAxisModel && yAxisModel) {\n cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n } else if (xAxisModel) {\n axis = this.getAxis('x', xAxisModel.componentIndex);\n } else if (yAxisModel) {\n axis = this.getAxis('y', yAxisModel.componentIndex);\n } // Lowest priority.\n else if (gridModel) {\n var grid = gridModel.coordinateSystem;\n\n if (grid === this) {\n cartesian = this._coordsList[0];\n }\n }\n\n return {\n cartesian: cartesian,\n axis: axis\n };\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.containPoint = function (point) {\n var coord = this._coordsList[0];\n\n if (coord) {\n return coord.containPoint(point);\n }\n};\n/**\n * Initialize cartesian coordinate systems\n * @private\n */\n\n\ngridProto._initCartesian = function (gridModel, ecModel, api) {\n var axisPositionUsed = {\n left: false,\n right: false,\n top: false,\n bottom: false\n };\n var axesMap = {\n x: {},\n y: {}\n };\n var axesCount = {\n x: 0,\n y: 0\n }; /// Create axis\n\n ecModel.eachComponent('xAxis', createAxisCreator('x'), this);\n ecModel.eachComponent('yAxis', createAxisCreator('y'), this);\n\n if (!axesCount.x || !axesCount.y) {\n // Roll back when there no either x or y axis\n this._axesMap = {};\n this._axesList = [];\n return;\n }\n\n this._axesMap = axesMap; /// Create cartesian2d\n\n each(axesMap.x, function (xAxis, xAxisIndex) {\n each(axesMap.y, function (yAxis, yAxisIndex) {\n var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n var cartesian = new Cartesian2D(key);\n cartesian.grid = this;\n cartesian.model = gridModel;\n this._coordsMap[key] = cartesian;\n\n this._coordsList.push(cartesian);\n\n cartesian.addAxis(xAxis);\n cartesian.addAxis(yAxis);\n }, this);\n }, this);\n\n function createAxisCreator(axisType) {\n return function (axisModel, idx) {\n if (!isAxisUsedInTheGrid(axisModel, gridModel, ecModel)) {\n return;\n }\n\n var axisPosition = axisModel.get('position');\n\n if (axisType === 'x') {\n // Fix position\n if (axisPosition !== 'top' && axisPosition !== 'bottom') {\n // Default bottom of X\n axisPosition = axisPositionUsed.bottom ? 'top' : 'bottom';\n }\n } else {\n // Fix position\n if (axisPosition !== 'left' && axisPosition !== 'right') {\n // Default left of Y\n axisPosition = axisPositionUsed.left ? 'right' : 'left';\n }\n }\n\n axisPositionUsed[axisPosition] = true;\n var axis = new Axis2D(axisType, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisPosition);\n var isCategory = axis.type === 'category';\n axis.onBand = isCategory && axisModel.get('boundaryGap');\n axis.inverse = axisModel.get('inverse'); // Inject axis into axisModel\n\n axisModel.axis = axis; // Inject axisModel into axis\n\n axis.model = axisModel; // Inject grid info axis\n\n axis.grid = this; // Index of axis, can be used as key\n\n axis.index = idx;\n\n this._axesList.push(axis);\n\n axesMap[axisType][idx] = axis;\n axesCount[axisType]++;\n };\n }\n};\n/**\n * Update cartesian properties from series\n * @param {module:echarts/model/Option} option\n * @private\n */\n\n\ngridProto._updateScale = function (ecModel, gridModel) {\n // Reset scale\n each(this._axesList, function (axis) {\n axis.scale.setExtent(Infinity, -Infinity);\n });\n ecModel.eachSeries(function (seriesModel) {\n if (isCartesian2D(seriesModel)) {\n var axesModels = findAxesModels(seriesModel, ecModel);\n var xAxisModel = axesModels[0];\n var yAxisModel = axesModels[1];\n\n if (!isAxisUsedInTheGrid(xAxisModel, gridModel, ecModel) || !isAxisUsedInTheGrid(yAxisModel, gridModel, ecModel)) {\n return;\n }\n\n var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n var data = seriesModel.getData();\n var xAxis = cartesian.getAxis('x');\n var yAxis = cartesian.getAxis('y');\n\n if (data.type === 'list') {\n unionExtent(data, xAxis, seriesModel);\n unionExtent(data, yAxis, seriesModel);\n }\n }\n }, this);\n\n function unionExtent(data, axis, seriesModel) {\n each(data.mapDimension(axis.dim, true), function (dim) {\n axis.scale.unionExtentFromData( // For example, the extent of the orginal dimension\n // is [0.1, 0.5], the extent of the `stackResultDimension`\n // is [7, 9], the final extent should not include [0.1, 0.5].\n data, getStackedDimension(data, dim));\n });\n }\n};\n/**\n * @param {string} [dim] 'x' or 'y' or 'auto' or null/undefined\n * @return {Object} {baseAxes: [], otherAxes: []}\n */\n\n\ngridProto.getTooltipAxes = function (dim) {\n var baseAxes = [];\n var otherAxes = [];\n each(this.getCartesians(), function (cartesian) {\n var baseAxis = dim != null && dim !== 'auto' ? cartesian.getAxis(dim) : cartesian.getBaseAxis();\n var otherAxis = cartesian.getOtherAxis(baseAxis);\n indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);\n indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);\n });\n return {\n baseAxes: baseAxes,\n otherAxes: otherAxes\n };\n};\n/**\n * @inner\n */\n\n\nfunction updateAxisTransform(axis, coordBase) {\n var axisExtent = axis.getExtent();\n var axisExtentSum = axisExtent[0] + axisExtent[1]; // Fast transform\n\n axis.toGlobalCoord = axis.dim === 'x' ? function (coord) {\n return coord + coordBase;\n } : function (coord) {\n return axisExtentSum - coord + coordBase;\n };\n axis.toLocalCoord = axis.dim === 'x' ? function (coord) {\n return coord - coordBase;\n } : function (coord) {\n return axisExtentSum - coord + coordBase;\n };\n}\n\nvar axesTypes = ['xAxis', 'yAxis'];\n/**\n * @inner\n */\n\nfunction findAxesModels(seriesModel, ecModel) {\n return map(axesTypes, function (axisType) {\n var axisModel = seriesModel.getReferringComponents(axisType)[0];\n return axisModel;\n });\n}\n/**\n * @inner\n */\n\n\nfunction isCartesian2D(seriesModel) {\n return seriesModel.get('coordinateSystem') === 'cartesian2d';\n}\n\nGrid.create = function (ecModel, api) {\n var grids = [];\n ecModel.eachComponent('grid', function (gridModel, idx) {\n var grid = new Grid(gridModel, ecModel, api);\n grid.name = 'grid_' + idx; // dataSampling requires axis extent, so resize\n // should be performed in create stage.\n\n grid.resize(gridModel, api, true);\n gridModel.coordinateSystem = grid;\n grids.push(grid);\n }); // Inject the coordinateSystems into seriesModel\n\n ecModel.eachSeries(function (seriesModel) {\n if (!isCartesian2D(seriesModel)) {\n return;\n }\n\n var axesModels = findAxesModels(seriesModel, ecModel);\n var xAxisModel = axesModels[0];\n var yAxisModel = axesModels[1];\n var gridModel = xAxisModel.getCoordSysModel();\n var grid = gridModel.coordinateSystem;\n seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n });\n return grids;\n}; // For deciding which dimensions to use when creating list data\n\n\nGrid.dimensions = Grid.prototype.dimensions = Cartesian2D.prototype.dimensions;\nCoordinateSystem.register('cartesian2d', Grid);\nvar _default = Grid;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Data selectable mixin for chart series.\n * To eanble data select, option of series must have `selectedMode`.\n * And each data item will use `selected` to toggle itself selected status\n */\nvar _default = {\n /**\n * @param {Array.} targetList [{name, value, selected}, ...]\n * If targetList is an array, it should like [{name: ..., value: ...}, ...].\n * If targetList is a \"List\", it must have coordDim: 'value' dimension and name.\n */\n updateSelectedMap: function (targetList) {\n this._targetList = zrUtil.isArray(targetList) ? targetList.slice() : [];\n this._selectTargetMap = zrUtil.reduce(targetList || [], function (targetMap, target) {\n targetMap.set(target.name, target);\n return targetMap;\n }, zrUtil.createHashMap());\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n // PENGING If selectedMode is null ?\n select: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n var selectedMode = this.get('selectedMode');\n\n if (selectedMode === 'single') {\n this._selectTargetMap.each(function (target) {\n target.selected = false;\n });\n }\n\n target && (target.selected = true);\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n unSelect: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name); // var selectedMode = this.get('selectedMode');\n // selectedMode !== 'single' && target && (target.selected = false);\n\n target && (target.selected = false);\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n toggleSelected: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n\n if (target != null) {\n this[target.selected ? 'unSelect' : 'select'](name, id);\n return target.selected;\n }\n },\n\n /**\n * Either name or id should be passed as input here.\n * If both of them are defined, id is used.\n *\n * @param {string|undefined} name name of data\n * @param {number|undefined} id dataIndex of data\n */\n isSelected: function (name, id) {\n var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n return target && target.selected;\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * For geo and graph.\n *\n * @param {Object} controllerHost\n * @param {module:zrender/Element} controllerHost.target\n */\nfunction updateViewOnPan(controllerHost, dx, dy) {\n var target = controllerHost.target;\n var pos = target.position;\n pos[0] += dx;\n pos[1] += dy;\n target.dirty();\n}\n/**\n * For geo and graph.\n *\n * @param {Object} controllerHost\n * @param {module:zrender/Element} controllerHost.target\n * @param {number} controllerHost.zoom\n * @param {number} controllerHost.zoomLimit like: {min: 1, max: 2}\n */\n\n\nfunction updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) {\n var target = controllerHost.target;\n var zoomLimit = controllerHost.zoomLimit;\n var pos = target.position;\n var scale = target.scale;\n var newZoom = controllerHost.zoom = controllerHost.zoom || 1;\n newZoom *= zoomDelta;\n\n if (zoomLimit) {\n var zoomMin = zoomLimit.min || 0;\n var zoomMax = zoomLimit.max || Infinity;\n newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin);\n }\n\n var zoomScale = newZoom / controllerHost.zoom;\n controllerHost.zoom = newZoom; // Keep the mouse center when scaling\n\n pos[0] -= (zoomX - pos[0]) * (zoomScale - 1);\n pos[1] -= (zoomY - pos[1]) * (zoomScale - 1);\n scale[0] *= zoomScale;\n scale[1] *= zoomScale;\n target.dirty();\n}\n\nexports.updateViewOnPan = updateViewOnPan;\nexports.updateViewOnZoom = updateViewOnZoom;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/coord/View} view\n * @param {Object} payload\n * @param {Object} [zoomLimit]\n */\nfunction updateCenterAndZoom(view, payload, zoomLimit) {\n var previousZoom = view.getZoom();\n var center = view.getCenter();\n var zoom = payload.zoom;\n var point = view.dataToPoint(center);\n\n if (payload.dx != null && payload.dy != null) {\n point[0] -= payload.dx;\n point[1] -= payload.dy;\n var center = view.pointToData(point);\n view.setCenter(center);\n }\n\n if (zoom != null) {\n if (zoomLimit) {\n var zoomMin = zoomLimit.min || 0;\n var zoomMax = zoomLimit.max || Infinity;\n zoom = Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom;\n } // Zoom on given point(originX, originY)\n\n\n view.scale[0] *= zoom;\n view.scale[1] *= zoom;\n var position = view.position;\n var fixX = (payload.originX - position[0]) * (zoom - 1);\n var fixY = (payload.originY - position[1]) * (zoom - 1);\n position[0] -= fixX;\n position[1] -= fixY;\n view.updateTransform(); // Get the new center\n\n var center = view.pointToData(point);\n view.setCenter(center);\n view.setZoom(zoom * previousZoom);\n }\n\n return {\n center: view.getCenter(),\n zoom: view.getZoom()\n };\n}\n\nexports.updateCenterAndZoom = updateCenterAndZoom;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Geo = require(\"./Geo\");\n\nvar layout = require(\"../../util/layout\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar geoSourceManager = require(\"./geoSourceManager\");\n\nvar mapDataStorage = require(\"./mapDataStorage\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Resize method bound to the geo\n * @param {module:echarts/coord/geo/GeoModel|module:echarts/chart/map/MapModel} geoModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction resizeGeo(geoModel, api) {\n var boundingCoords = geoModel.get('boundingCoords');\n\n if (boundingCoords != null) {\n var leftTop = boundingCoords[0];\n var rightBottom = boundingCoords[1];\n\n if (isNaN(leftTop[0]) || isNaN(leftTop[1]) || isNaN(rightBottom[0]) || isNaN(rightBottom[1])) {} else {\n this.setBoundingRect(leftTop[0], leftTop[1], rightBottom[0] - leftTop[0], rightBottom[1] - leftTop[1]);\n }\n }\n\n var rect = this.getBoundingRect();\n var boxLayoutOption;\n var center = geoModel.get('layoutCenter');\n var size = geoModel.get('layoutSize');\n var viewWidth = api.getWidth();\n var viewHeight = api.getHeight();\n var aspect = rect.width / rect.height * this.aspectScale;\n var useCenterAndSize = false;\n\n if (center && size) {\n center = [numberUtil.parsePercent(center[0], viewWidth), numberUtil.parsePercent(center[1], viewHeight)];\n size = numberUtil.parsePercent(size, Math.min(viewWidth, viewHeight));\n\n if (!isNaN(center[0]) && !isNaN(center[1]) && !isNaN(size)) {\n useCenterAndSize = true;\n } else {}\n }\n\n var viewRect;\n\n if (useCenterAndSize) {\n var viewRect = {};\n\n if (aspect > 1) {\n // Width is same with size\n viewRect.width = size;\n viewRect.height = size / aspect;\n } else {\n viewRect.height = size;\n viewRect.width = size * aspect;\n }\n\n viewRect.y = center[1] - viewRect.height / 2;\n viewRect.x = center[0] - viewRect.width / 2;\n } else {\n // Use left/top/width/height\n boxLayoutOption = geoModel.getBoxLayoutParams(); // 0.75 rate\n\n boxLayoutOption.aspect = aspect;\n viewRect = layout.getLayoutRect(boxLayoutOption, {\n width: viewWidth,\n height: viewHeight\n });\n }\n\n this.setViewRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height);\n this.setCenter(geoModel.get('center'));\n this.setZoom(geoModel.get('zoom'));\n}\n/**\n * @param {module:echarts/coord/Geo} geo\n * @param {module:echarts/model/Model} model\n * @inner\n */\n\n\nfunction setGeoCoords(geo, model) {\n zrUtil.each(model.get('geoCoord'), function (geoCoord, name) {\n geo.addGeoCoord(name, geoCoord);\n });\n}\n\nvar geoCreator = {\n // For deciding which dimensions to use when creating list data\n dimensions: Geo.prototype.dimensions,\n create: function (ecModel, api) {\n var geoList = []; // FIXME Create each time may be slow\n\n ecModel.eachComponent('geo', function (geoModel, idx) {\n var name = geoModel.get('map');\n var aspectScale = geoModel.get('aspectScale');\n var invertLongitute = true;\n var mapRecords = mapDataStorage.retrieveMap(name);\n\n if (mapRecords && mapRecords[0] && mapRecords[0].type === 'svg') {\n aspectScale == null && (aspectScale = 1);\n invertLongitute = false;\n } else {\n aspectScale == null && (aspectScale = 0.75);\n }\n\n var geo = new Geo(name + idx, name, geoModel.get('nameMap'), invertLongitute);\n geo.aspectScale = aspectScale;\n geo.zoomLimit = geoModel.get('scaleLimit');\n geoList.push(geo);\n setGeoCoords(geo, geoModel);\n geoModel.coordinateSystem = geo;\n geo.model = geoModel; // Inject resize method\n\n geo.resize = resizeGeo;\n geo.resize(geoModel, api);\n });\n ecModel.eachSeries(function (seriesModel) {\n var coordSys = seriesModel.get('coordinateSystem');\n\n if (coordSys === 'geo') {\n var geoIndex = seriesModel.get('geoIndex') || 0;\n seriesModel.coordinateSystem = geoList[geoIndex];\n }\n }); // If has map series\n\n var mapModelGroupBySeries = {};\n ecModel.eachSeriesByType('map', function (seriesModel) {\n if (!seriesModel.getHostGeoModel()) {\n var mapType = seriesModel.getMapType();\n mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || [];\n mapModelGroupBySeries[mapType].push(seriesModel);\n }\n });\n zrUtil.each(mapModelGroupBySeries, function (mapSeries, mapType) {\n var nameMapList = zrUtil.map(mapSeries, function (singleMapSeries) {\n return singleMapSeries.get('nameMap');\n });\n var geo = new Geo(mapType, mapType, zrUtil.mergeAll(nameMapList));\n geo.zoomLimit = zrUtil.retrieve.apply(null, zrUtil.map(mapSeries, function (singleMapSeries) {\n return singleMapSeries.get('scaleLimit');\n }));\n geoList.push(geo); // Inject resize method\n\n geo.resize = resizeGeo;\n geo.aspectScale = mapSeries[0].get('aspectScale');\n geo.resize(mapSeries[0], api);\n zrUtil.each(mapSeries, function (singleMapSeries) {\n singleMapSeries.coordinateSystem = geo;\n setGeoCoords(geo, singleMapSeries);\n });\n });\n return geoList;\n },\n\n /**\n * Fill given regions array\n * @param {Array.} originRegionArr\n * @param {string} mapName\n * @param {Object} [nameMap]\n * @return {Array}\n */\n getFilledRegions: function (originRegionArr, mapName, nameMap) {\n // Not use the original\n var regionsArr = (originRegionArr || []).slice();\n var dataNameMap = zrUtil.createHashMap();\n\n for (var i = 0; i < regionsArr.length; i++) {\n dataNameMap.set(regionsArr[i].name, regionsArr[i]);\n }\n\n var source = geoSourceManager.load(mapName, nameMap);\n zrUtil.each(source.regions, function (region) {\n var name = region.name;\n !dataNameMap.get(name) && regionsArr.push({\n name: name\n });\n });\n return regionsArr;\n }\n};\necharts.registerCoordinateSystem('geo', geoCreator);\nvar _default = geoCreator;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar Transformable = require(\"zrender/lib/mixin/Transformable\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Simple view coordinate system\n * Mapping given x, y to transformd view x, y\n */\nvar v2ApplyTransform = vector.applyTransform; // Dummy transform node\n\nfunction TransformDummy() {\n Transformable.call(this);\n}\n\nzrUtil.mixin(TransformDummy, Transformable);\n\nfunction View(name) {\n /**\n * @type {string}\n */\n this.name = name;\n /**\n * @type {Object}\n */\n\n this.zoomLimit;\n Transformable.call(this);\n this._roamTransformable = new TransformDummy();\n this._rawTransformable = new TransformDummy();\n this._center;\n this._zoom;\n}\n\nView.prototype = {\n constructor: View,\n type: 'view',\n\n /**\n * @param {Array.}\n * @readOnly\n */\n dimensions: ['x', 'y'],\n\n /**\n * Set bounding rect\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n */\n // PENDING to getRect\n setBoundingRect: function (x, y, width, height) {\n this._rect = new BoundingRect(x, y, width, height);\n return this._rect;\n },\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n // PENDING to getRect\n getBoundingRect: function () {\n return this._rect;\n },\n\n /**\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n */\n setViewRect: function (x, y, width, height) {\n this.transformTo(x, y, width, height);\n this._viewRect = new BoundingRect(x, y, width, height);\n },\n\n /**\n * Transformed to particular position and size\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n */\n transformTo: function (x, y, width, height) {\n var rect = this.getBoundingRect();\n var rawTransform = this._rawTransformable;\n rawTransform.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\n rawTransform.decomposeTransform();\n\n this._updateTransform();\n },\n\n /**\n * Set center of view\n * @param {Array.} [centerCoord]\n */\n setCenter: function (centerCoord) {\n if (!centerCoord) {\n return;\n }\n\n this._center = centerCoord;\n\n this._updateCenterAndZoom();\n },\n\n /**\n * @param {number} zoom\n */\n setZoom: function (zoom) {\n zoom = zoom || 1;\n var zoomLimit = this.zoomLimit;\n\n if (zoomLimit) {\n if (zoomLimit.max != null) {\n zoom = Math.min(zoomLimit.max, zoom);\n }\n\n if (zoomLimit.min != null) {\n zoom = Math.max(zoomLimit.min, zoom);\n }\n }\n\n this._zoom = zoom;\n\n this._updateCenterAndZoom();\n },\n\n /**\n * Get default center without roam\n */\n getDefaultCenter: function () {\n // Rect before any transform\n var rawRect = this.getBoundingRect();\n var cx = rawRect.x + rawRect.width / 2;\n var cy = rawRect.y + rawRect.height / 2;\n return [cx, cy];\n },\n getCenter: function () {\n return this._center || this.getDefaultCenter();\n },\n getZoom: function () {\n return this._zoom || 1;\n },\n\n /**\n * @return {Array.} data\n * @param {boolean} noRoam\n * @param {Array.} [out]\n * @return {Array.}\n */\n dataToPoint: function (data, noRoam, out) {\n var transform = noRoam ? this._rawTransform : this.transform;\n out = out || [];\n return transform ? v2ApplyTransform(out, data, transform) : vector.copy(out, data);\n },\n\n /**\n * Convert a (x, y) point to (lon, lat) data\n * @param {Array.} point\n * @return {Array.}\n */\n pointToData: function (point) {\n var invTransform = this.invTransform;\n return invTransform ? v2ApplyTransform([], point, invTransform) : [point[0], point[1]];\n },\n\n /**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),\n\n /**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n convertFromPixel: zrUtil.curry(doConvert, 'pointToData'),\n\n /**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n containPoint: function (point) {\n return this.getViewRectAfterRoam().contain(point[0], point[1]);\n }\n /**\n * @return {number}\n */\n // getScalarScale: function () {\n // // Use determinant square root of transform to mutiply scalar\n // var m = this.transform;\n // var det = Math.sqrt(Math.abs(m[0] * m[3] - m[2] * m[1]));\n // return det;\n // }\n\n};\nzrUtil.mixin(View, Transformable);\n\nfunction doConvert(methodName, ecModel, finder, value) {\n var seriesModel = finder.seriesModel;\n var coordSys = seriesModel ? seriesModel.coordinateSystem : null; // e.g., graph.\n\n return coordSys === this ? coordSys[methodName](value) : null;\n}\n\nvar _default = View;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../model/Model\");\n\nvar linkList = require(\"./helper/linkList\");\n\nvar List = require(\"./List\");\n\nvar createDimensions = require(\"./helper/createDimensions\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Tree data structure\n *\n * @module echarts/data/Tree\n */\n\n/**\n * @constructor module:echarts/data/Tree~TreeNode\n * @param {string} name\n * @param {module:echarts/data/Tree} hostTree\n */\nvar TreeNode = function (name, hostTree) {\n /**\n * @type {string}\n */\n this.name = name || '';\n /**\n * Depth of node\n *\n * @type {number}\n * @readOnly\n */\n\n this.depth = 0;\n /**\n * Height of the subtree rooted at this node.\n * @type {number}\n * @readOnly\n */\n\n this.height = 0;\n /**\n * @type {module:echarts/data/Tree~TreeNode}\n * @readOnly\n */\n\n this.parentNode = null;\n /**\n * Reference to list item.\n * Do not persistent dataIndex outside,\n * besause it may be changed by list.\n * If dataIndex -1,\n * this node is logical deleted (filtered) in list.\n *\n * @type {Object}\n * @readOnly\n */\n\n this.dataIndex = -1;\n /**\n * @type {Array.}\n * @readOnly\n */\n\n this.children = [];\n /**\n * @type {Array.}\n * @pubilc\n */\n\n this.viewChildren = [];\n /**\n * @type {moduel:echarts/data/Tree}\n * @readOnly\n */\n\n this.hostTree = hostTree;\n};\n\nTreeNode.prototype = {\n constructor: TreeNode,\n\n /**\n * The node is removed.\n * @return {boolean} is removed.\n */\n isRemoved: function () {\n return this.dataIndex < 0;\n },\n\n /**\n * Travel this subtree (include this node).\n * Usage:\n * node.eachNode(function () { ... }); // preorder\n * node.eachNode('preorder', function () { ... }); // preorder\n * node.eachNode('postorder', function () { ... }); // postorder\n * node.eachNode(\n * {order: 'postorder', attr: 'viewChildren'},\n * function () { ... }\n * ); // postorder\n *\n * @param {(Object|string)} options If string, means order.\n * @param {string=} options.order 'preorder' or 'postorder'\n * @param {string=} options.attr 'children' or 'viewChildren'\n * @param {Function} cb If in preorder and return false,\n * its subtree will not be visited.\n * @param {Object} [context]\n */\n eachNode: function (options, cb, context) {\n if (typeof options === 'function') {\n context = cb;\n cb = options;\n options = null;\n }\n\n options = options || {};\n\n if (zrUtil.isString(options)) {\n options = {\n order: options\n };\n }\n\n var order = options.order || 'preorder';\n var children = this[options.attr || 'children'];\n var suppressVisitSub;\n order === 'preorder' && (suppressVisitSub = cb.call(context, this));\n\n for (var i = 0; !suppressVisitSub && i < children.length; i++) {\n children[i].eachNode(options, cb, context);\n }\n\n order === 'postorder' && cb.call(context, this);\n },\n\n /**\n * Update depth and height of this subtree.\n *\n * @param {number} depth\n */\n updateDepthAndHeight: function (depth) {\n var height = 0;\n this.depth = depth;\n\n for (var i = 0; i < this.children.length; i++) {\n var child = this.children[i];\n child.updateDepthAndHeight(depth + 1);\n\n if (child.height > height) {\n height = child.height;\n }\n }\n\n this.height = height + 1;\n },\n\n /**\n * @param {string} id\n * @return {module:echarts/data/Tree~TreeNode}\n */\n getNodeById: function (id) {\n if (this.getId() === id) {\n return this;\n }\n\n for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n var res = children[i].getNodeById(id);\n\n if (res) {\n return res;\n }\n }\n },\n\n /**\n * @param {module:echarts/data/Tree~TreeNode} node\n * @return {boolean}\n */\n contains: function (node) {\n if (node === this) {\n return true;\n }\n\n for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n var res = children[i].contains(node);\n\n if (res) {\n return res;\n }\n }\n },\n\n /**\n * @param {boolean} includeSelf Default false.\n * @return {Array.} order: [root, child, grandchild, ...]\n */\n getAncestors: function (includeSelf) {\n var ancestors = [];\n var node = includeSelf ? this : this.parentNode;\n\n while (node) {\n ancestors.push(node);\n node = node.parentNode;\n }\n\n ancestors.reverse();\n return ancestors;\n },\n\n /**\n * @param {string|Array=} [dimension='value'] Default 'value'. can be 0, 1, 2, 3\n * @return {number} Value.\n */\n getValue: function (dimension) {\n var data = this.hostTree.data;\n return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\n },\n\n /**\n * @param {Object} layout\n * @param {boolean=} [merge=false]\n */\n setLayout: function (layout, merge) {\n this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, layout, merge);\n },\n\n /**\n * @return {Object} layout\n */\n getLayout: function () {\n return this.hostTree.data.getItemLayout(this.dataIndex);\n },\n\n /**\n * @param {string} [path]\n * @return {module:echarts/model/Model}\n */\n getModel: function (path) {\n if (this.dataIndex < 0) {\n return;\n }\n\n var hostTree = this.hostTree;\n var itemModel = hostTree.data.getItemModel(this.dataIndex);\n var levelModel = this.getLevelModel();\n var leavesModel;\n\n if (!levelModel && (this.children.length === 0 || this.children.length !== 0 && this.isExpand === false)) {\n leavesModel = this.getLeavesModel();\n }\n\n return itemModel.getModel(path, (levelModel || leavesModel || hostTree.hostModel).getModel(path));\n },\n\n /**\n * @return {module:echarts/model/Model}\n */\n getLevelModel: function () {\n return (this.hostTree.levelModels || [])[this.depth];\n },\n\n /**\n * @return {module:echarts/model/Model}\n */\n getLeavesModel: function () {\n return this.hostTree.leavesModel;\n },\n\n /**\n * @example\n * setItemVisual('color', color);\n * setItemVisual({\n * 'color': color\n * });\n */\n setVisual: function (key, value) {\n this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, key, value);\n },\n\n /**\n * Get item visual\n */\n getVisual: function (key, ignoreParent) {\n return this.hostTree.data.getItemVisual(this.dataIndex, key, ignoreParent);\n },\n\n /**\n * @public\n * @return {number}\n */\n getRawIndex: function () {\n return this.hostTree.data.getRawIndex(this.dataIndex);\n },\n\n /**\n * @public\n * @return {string}\n */\n getId: function () {\n return this.hostTree.data.getId(this.dataIndex);\n },\n\n /**\n * if this is an ancestor of another node\n *\n * @public\n * @param {TreeNode} node another node\n * @return {boolean} if is ancestor\n */\n isAncestorOf: function (node) {\n var parent = node.parentNode;\n\n while (parent) {\n if (parent === this) {\n return true;\n }\n\n parent = parent.parentNode;\n }\n\n return false;\n },\n\n /**\n * if this is an descendant of another node\n *\n * @public\n * @param {TreeNode} node another node\n * @return {boolean} if is descendant\n */\n isDescendantOf: function (node) {\n return node !== this && node.isAncestorOf(this);\n }\n};\n/**\n * @constructor\n * @alias module:echarts/data/Tree\n * @param {module:echarts/model/Model} hostModel\n * @param {Array.} levelOptions\n * @param {Object} leavesOption\n */\n\nfunction Tree(hostModel, levelOptions, leavesOption) {\n /**\n * @type {module:echarts/data/Tree~TreeNode}\n * @readOnly\n */\n this.root;\n /**\n * @type {module:echarts/data/List}\n * @readOnly\n */\n\n this.data;\n /**\n * Index of each item is the same as the raw index of coresponding list item.\n * @private\n * @type {Array.} treeOptions.levels\n * @param {Array.} treeOptions.leaves\n * @return module:echarts/data/Tree\n */\n\nTree.createTree = function (dataRoot, hostModel, treeOptions, beforeLink) {\n var tree = new Tree(hostModel, treeOptions.levels, treeOptions.leaves);\n var listData = [];\n var dimMax = 1;\n buildHierarchy(dataRoot);\n\n function buildHierarchy(dataNode, parentNode) {\n var value = dataNode.value;\n dimMax = Math.max(dimMax, zrUtil.isArray(value) ? value.length : 1);\n listData.push(dataNode);\n var node = new TreeNode(dataNode.name, tree);\n parentNode ? addChild(node, parentNode) : tree.root = node;\n\n tree._nodes.push(node);\n\n var children = dataNode.children;\n\n if (children) {\n for (var i = 0; i < children.length; i++) {\n buildHierarchy(children[i], node);\n }\n }\n }\n\n tree.root.updateDepthAndHeight(0);\n var dimensionsInfo = createDimensions(listData, {\n coordDimensions: ['value'],\n dimensionsCount: dimMax\n });\n var list = new List(dimensionsInfo, hostModel);\n list.initData(listData);\n linkList({\n mainData: list,\n struct: tree,\n structAttr: 'tree'\n });\n tree.update();\n beforeLink && beforeLink(list);\n return tree;\n};\n/**\n * It is needed to consider the mess of 'list', 'hostModel' when creating a TreeNote,\n * so this function is not ready and not necessary to be public.\n *\n * @param {(module:echarts/data/Tree~TreeNode|Object)} child\n */\n\n\nfunction addChild(child, node) {\n var children = node.children;\n\n if (child.parentNode === node) {\n return;\n }\n\n children.push(child);\n child.parentNode = node;\n}\n\nvar _default = Tree;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar LineGroup = require(\"./Line\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/LineDraw\n */\n// import IncrementalDisplayable from 'zrender/src/graphic/IncrementalDisplayable';\n\n/**\n * @alias module:echarts/component/marker/LineDraw\n * @constructor\n */\nfunction LineDraw(ctor) {\n this._ctor = ctor || LineGroup;\n this.group = new graphic.Group();\n}\n\nvar lineDrawProto = LineDraw.prototype;\n\nlineDrawProto.isPersistent = function () {\n return true;\n};\n/**\n * @param {module:echarts/data/List} lineData\n */\n\n\nlineDrawProto.updateData = function (lineData) {\n var lineDraw = this;\n var group = lineDraw.group;\n var oldLineData = lineDraw._lineData;\n lineDraw._lineData = lineData; // There is no oldLineData only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!oldLineData) {\n group.removeAll();\n }\n\n var seriesScope = makeSeriesScope(lineData);\n lineData.diff(oldLineData).add(function (idx) {\n doAdd(lineDraw, lineData, idx, seriesScope);\n }).update(function (newIdx, oldIdx) {\n doUpdate(lineDraw, oldLineData, lineData, oldIdx, newIdx, seriesScope);\n }).remove(function (idx) {\n group.remove(oldLineData.getItemGraphicEl(idx));\n }).execute();\n};\n\nfunction doAdd(lineDraw, lineData, idx, seriesScope) {\n var itemLayout = lineData.getItemLayout(idx);\n\n if (!lineNeedsDraw(itemLayout)) {\n return;\n }\n\n var el = new lineDraw._ctor(lineData, idx, seriesScope);\n lineData.setItemGraphicEl(idx, el);\n lineDraw.group.add(el);\n}\n\nfunction doUpdate(lineDraw, oldLineData, newLineData, oldIdx, newIdx, seriesScope) {\n var itemEl = oldLineData.getItemGraphicEl(oldIdx);\n\n if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {\n lineDraw.group.remove(itemEl);\n return;\n }\n\n if (!itemEl) {\n itemEl = new lineDraw._ctor(newLineData, newIdx, seriesScope);\n } else {\n itemEl.updateData(newLineData, newIdx, seriesScope);\n }\n\n newLineData.setItemGraphicEl(newIdx, itemEl);\n lineDraw.group.add(itemEl);\n}\n\nlineDrawProto.updateLayout = function () {\n var lineData = this._lineData; // Do not support update layout in incremental mode.\n\n if (!lineData) {\n return;\n }\n\n lineData.eachItemGraphicEl(function (el, idx) {\n el.updateLayout(lineData, idx);\n }, this);\n};\n\nlineDrawProto.incrementalPrepareUpdate = function (lineData) {\n this._seriesScope = makeSeriesScope(lineData);\n this._lineData = null;\n this.group.removeAll();\n};\n\nlineDrawProto.incrementalUpdate = function (taskParams, lineData) {\n function updateIncrementalAndHover(el) {\n if (!el.isGroup) {\n el.incremental = el.useHoverLayer = true;\n }\n }\n\n for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n var itemLayout = lineData.getItemLayout(idx);\n\n if (lineNeedsDraw(itemLayout)) {\n var el = new this._ctor(lineData, idx, this._seriesScope);\n el.traverse(updateIncrementalAndHover);\n this.group.add(el);\n lineData.setItemGraphicEl(idx, el);\n }\n }\n};\n\nfunction makeSeriesScope(lineData) {\n var hostModel = lineData.hostModel;\n return {\n lineStyle: hostModel.getModel('lineStyle').getLineStyle(),\n hoverLineStyle: hostModel.getModel('emphasis.lineStyle').getLineStyle(),\n labelModel: hostModel.getModel('label'),\n hoverLabelModel: hostModel.getModel('emphasis.label')\n };\n}\n\nlineDrawProto.remove = function () {\n this._clearIncremental();\n\n this._incremental = null;\n this.group.removeAll();\n};\n\nlineDrawProto._clearIncremental = function () {\n var incremental = this._incremental;\n\n if (incremental) {\n incremental.clearDisplaybles();\n }\n};\n\nfunction isPointNaN(pt) {\n return isNaN(pt[0]) || isNaN(pt[1]);\n}\n\nfunction lineNeedsDraw(pts) {\n return !isPointNaN(pts[0]) && !isPointNaN(pts[1]);\n}\n\nvar _default = LineDraw;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nvar symbolUtil = require(\"../../util/symbol\");\n\nvar LinePath = require(\"./LinePath\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar round = _number.round;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/Line\n */\nvar SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol'];\n\nfunction makeSymbolTypeKey(symbolCategory) {\n return '_' + symbolCategory + 'Type';\n}\n/**\n * @inner\n */\n\n\nfunction createSymbol(name, lineData, idx) {\n var color = lineData.getItemVisual(idx, 'color');\n var symbolType = lineData.getItemVisual(idx, name);\n var symbolSize = lineData.getItemVisual(idx, name + 'Size');\n\n if (!symbolType || symbolType === 'none') {\n return;\n }\n\n if (!zrUtil.isArray(symbolSize)) {\n symbolSize = [symbolSize, symbolSize];\n }\n\n var symbolPath = symbolUtil.createSymbol(symbolType, -symbolSize[0] / 2, -symbolSize[1] / 2, symbolSize[0], symbolSize[1], color);\n symbolPath.name = name;\n return symbolPath;\n}\n\nfunction createLine(points) {\n var line = new LinePath({\n name: 'line',\n subPixelOptimize: true\n });\n setLinePoints(line.shape, points);\n return line;\n}\n\nfunction setLinePoints(targetShape, points) {\n targetShape.x1 = points[0][0];\n targetShape.y1 = points[0][1];\n targetShape.x2 = points[1][0];\n targetShape.y2 = points[1][1];\n targetShape.percent = 1;\n var cp1 = points[2];\n\n if (cp1) {\n targetShape.cpx1 = cp1[0];\n targetShape.cpy1 = cp1[1];\n } else {\n targetShape.cpx1 = NaN;\n targetShape.cpy1 = NaN;\n }\n}\n\nfunction updateSymbolAndLabelBeforeLineUpdate() {\n var lineGroup = this;\n var symbolFrom = lineGroup.childOfName('fromSymbol');\n var symbolTo = lineGroup.childOfName('toSymbol');\n var label = lineGroup.childOfName('label'); // Quick reject\n\n if (!symbolFrom && !symbolTo && label.ignore) {\n return;\n }\n\n var invScale = 1;\n var parentNode = this.parent;\n\n while (parentNode) {\n if (parentNode.scale) {\n invScale /= parentNode.scale[0];\n }\n\n parentNode = parentNode.parent;\n }\n\n var line = lineGroup.childOfName('line'); // If line not changed\n // FIXME Parent scale changed\n\n if (!this.__dirty && !line.__dirty) {\n return;\n }\n\n var percent = line.shape.percent;\n var fromPos = line.pointAt(0);\n var toPos = line.pointAt(percent);\n var d = vector.sub([], toPos, fromPos);\n vector.normalize(d, d);\n\n if (symbolFrom) {\n symbolFrom.attr('position', fromPos);\n var tangent = line.tangentAt(0);\n symbolFrom.attr('rotation', Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n symbolFrom.attr('scale', [invScale * percent, invScale * percent]);\n }\n\n if (symbolTo) {\n symbolTo.attr('position', toPos);\n var tangent = line.tangentAt(1);\n symbolTo.attr('rotation', -Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n symbolTo.attr('scale', [invScale * percent, invScale * percent]);\n }\n\n if (!label.ignore) {\n label.attr('position', toPos);\n var textPosition;\n var textAlign;\n var textVerticalAlign;\n var distance = 5 * invScale; // End\n\n if (label.__position === 'end') {\n textPosition = [d[0] * distance + toPos[0], d[1] * distance + toPos[1]];\n textAlign = d[0] > 0.8 ? 'left' : d[0] < -0.8 ? 'right' : 'center';\n textVerticalAlign = d[1] > 0.8 ? 'top' : d[1] < -0.8 ? 'bottom' : 'middle';\n } // Middle\n else if (label.__position === 'middle') {\n var halfPercent = percent / 2;\n var tangent = line.tangentAt(halfPercent);\n var n = [tangent[1], -tangent[0]];\n var cp = line.pointAt(halfPercent);\n\n if (n[1] > 0) {\n n[0] = -n[0];\n n[1] = -n[1];\n }\n\n textPosition = [cp[0] + n[0] * distance, cp[1] + n[1] * distance];\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n var rotation = -Math.atan2(tangent[1], tangent[0]);\n\n if (toPos[0] < fromPos[0]) {\n rotation = Math.PI + rotation;\n }\n\n label.attr('rotation', rotation);\n } // Start\n else {\n textPosition = [-d[0] * distance + fromPos[0], -d[1] * distance + fromPos[1]];\n textAlign = d[0] > 0.8 ? 'right' : d[0] < -0.8 ? 'left' : 'center';\n textVerticalAlign = d[1] > 0.8 ? 'bottom' : d[1] < -0.8 ? 'top' : 'middle';\n }\n\n label.attr({\n style: {\n // Use the user specified text align and baseline first\n textVerticalAlign: label.__verticalAlign || textVerticalAlign,\n textAlign: label.__textAlign || textAlign\n },\n position: textPosition,\n scale: [invScale, invScale]\n });\n }\n}\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Line}\n */\n\n\nfunction Line(lineData, idx, seriesScope) {\n graphic.Group.call(this);\n\n this._createLine(lineData, idx, seriesScope);\n}\n\nvar lineProto = Line.prototype; // Update symbol position and rotation\n\nlineProto.beforeUpdate = updateSymbolAndLabelBeforeLineUpdate;\n\nlineProto._createLine = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var linePoints = lineData.getItemLayout(idx);\n var line = createLine(linePoints);\n line.shape.percent = 0;\n graphic.initProps(line, {\n shape: {\n percent: 1\n }\n }, seriesModel, idx);\n this.add(line);\n var label = new graphic.Text({\n name: 'label',\n // FIXME\n // Temporary solution for `focusNodeAdjacency`.\n // line label do not use the opacity of lineStyle.\n lineLabelOriginalOpacity: 1\n });\n this.add(label);\n zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbol = createSymbol(symbolCategory, lineData, idx); // symbols must added after line to make sure\n // it will be updated after line#update.\n // Or symbol position and rotation update in line#beforeUpdate will be one frame slow\n\n this.add(symbol);\n this[makeSymbolTypeKey(symbolCategory)] = lineData.getItemVisual(idx, symbolCategory);\n }, this);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\nlineProto.updateData = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childOfName('line');\n var linePoints = lineData.getItemLayout(idx);\n var target = {\n shape: {}\n };\n setLinePoints(target.shape, linePoints);\n graphic.updateProps(line, target, seriesModel, idx);\n zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbolType = lineData.getItemVisual(idx, symbolCategory);\n var key = makeSymbolTypeKey(symbolCategory); // Symbol changed\n\n if (this[key] !== symbolType) {\n this.remove(this.childOfName(symbolCategory));\n var symbol = createSymbol(symbolCategory, lineData, idx);\n this.add(symbol);\n }\n\n this[key] = symbolType;\n }, this);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\nlineProto._updateCommonStl = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childOfName('line');\n var lineStyle = seriesScope && seriesScope.lineStyle;\n var hoverLineStyle = seriesScope && seriesScope.hoverLineStyle;\n var labelModel = seriesScope && seriesScope.labelModel;\n var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel; // Optimization for large dataset\n\n if (!seriesScope || lineData.hasItemOption) {\n var itemModel = lineData.getItemModel(idx);\n lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n hoverLineStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n labelModel = itemModel.getModel('label');\n hoverLabelModel = itemModel.getModel('emphasis.label');\n }\n\n var visualColor = lineData.getItemVisual(idx, 'color');\n var visualOpacity = zrUtil.retrieve3(lineData.getItemVisual(idx, 'opacity'), lineStyle.opacity, 1);\n line.useStyle(zrUtil.defaults({\n strokeNoScale: true,\n fill: 'none',\n stroke: visualColor,\n opacity: visualOpacity\n }, lineStyle));\n line.hoverStyle = hoverLineStyle; // Update symbol\n\n zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n var symbol = this.childOfName(symbolCategory);\n\n if (symbol) {\n symbol.setColor(visualColor);\n symbol.setStyle({\n opacity: visualOpacity\n });\n }\n }, this);\n var showLabel = labelModel.getShallow('show');\n var hoverShowLabel = hoverLabelModel.getShallow('show');\n var label = this.childOfName('label');\n var defaultLabelColor;\n var baseText; // FIXME: the logic below probably should be merged to `graphic.setLabelStyle`.\n\n if (showLabel || hoverShowLabel) {\n defaultLabelColor = visualColor || '#000';\n baseText = seriesModel.getFormattedLabel(idx, 'normal', lineData.dataType);\n\n if (baseText == null) {\n var rawVal = seriesModel.getRawValue(idx);\n baseText = rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round(rawVal) : rawVal;\n }\n }\n\n var normalText = showLabel ? baseText : null;\n var emphasisText = hoverShowLabel ? zrUtil.retrieve2(seriesModel.getFormattedLabel(idx, 'emphasis', lineData.dataType), baseText) : null;\n var labelStyle = label.style; // Always set `textStyle` even if `normalStyle.text` is null, because default\n // values have to be set on `normalStyle`.\n\n if (normalText != null || emphasisText != null) {\n graphic.setTextStyle(label.style, labelModel, {\n text: normalText\n }, {\n autoColor: defaultLabelColor\n });\n label.__textAlign = labelStyle.textAlign;\n label.__verticalAlign = labelStyle.textVerticalAlign; // 'start', 'middle', 'end'\n\n label.__position = labelModel.get('position') || 'middle';\n }\n\n if (emphasisText != null) {\n // Only these properties supported in this emphasis style here.\n label.hoverStyle = {\n text: emphasisText,\n textFill: hoverLabelModel.getTextColor(true),\n // For merging hover style to normal style, do not use\n // `hoverLabelModel.getFont()` here.\n fontStyle: hoverLabelModel.getShallow('fontStyle'),\n fontWeight: hoverLabelModel.getShallow('fontWeight'),\n fontSize: hoverLabelModel.getShallow('fontSize'),\n fontFamily: hoverLabelModel.getShallow('fontFamily')\n };\n } else {\n label.hoverStyle = {\n text: null\n };\n }\n\n label.ignore = !showLabel && !hoverShowLabel;\n graphic.setHoverStyle(this);\n};\n\nlineProto.highlight = function () {\n this.trigger('emphasis');\n};\n\nlineProto.downplay = function () {\n this.trigger('normal');\n};\n\nlineProto.updateLayout = function (lineData, idx) {\n this.setLinePoints(lineData.getItemLayout(idx));\n};\n\nlineProto.setLinePoints = function (points) {\n var linePath = this.childOfName('line');\n setLinePoints(linePath.shape, points);\n linePath.dirty();\n};\n\nzrUtil.inherits(Line, graphic.Group);\nvar _default = Line;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction getNodeGlobalScale(seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys.type !== 'view') {\n return 1;\n }\n\n var nodeScaleRatio = seriesModel.option.nodeScaleRatio;\n var groupScale = coordSys.scale;\n var groupZoom = groupScale && groupScale[0] || 1; // Scale node when zoom changes\n\n var roamZoom = coordSys.getZoom();\n var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;\n return nodeScale / groupZoom;\n}\n\nfunction getSymbolSize(node) {\n var symbolSize = node.getVisual('symbolSize');\n\n if (symbolSize instanceof Array) {\n symbolSize = (symbolSize[0] + symbolSize[1]) / 2;\n }\n\n return +symbolSize;\n}\n\nexports.getNodeGlobalScale = getNodeGlobalScale;\nexports.getSymbolSize = getSymbolSize;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Eventful = require(\"zrender/lib/mixin/Eventful\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar interactionMutex = require(\"./interactionMutex\");\n\nvar DataDiffer = require(\"../../data/DataDiffer\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar curry = zrUtil.curry;\nvar each = zrUtil.each;\nvar map = zrUtil.map;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathPow = Math.pow;\nvar COVER_Z = 10000;\nvar UNSELECT_THRESHOLD = 6;\nvar MIN_RESIZE_LINE_WIDTH = 6;\nvar MUTEX_RESOURCE_KEY = 'globalPan';\nvar DIRECTION_MAP = {\n w: [0, 0],\n e: [0, 1],\n n: [1, 0],\n s: [1, 1]\n};\nvar CURSOR_MAP = {\n w: 'ew',\n e: 'ew',\n n: 'ns',\n s: 'ns',\n ne: 'nesw',\n sw: 'nesw',\n nw: 'nwse',\n se: 'nwse'\n};\nvar DEFAULT_BRUSH_OPT = {\n brushStyle: {\n lineWidth: 2,\n stroke: 'rgba(0,0,0,0.3)',\n fill: 'rgba(0,0,0,0.1)'\n },\n transformable: true,\n brushMode: 'single',\n removeOnClick: false\n};\nvar baseUID = 0;\n/**\n * @alias module:echarts/component/helper/BrushController\n * @constructor\n * @mixin {module:zrender/mixin/Eventful}\n * @event module:echarts/component/helper/BrushController#brush\n * params:\n * areas: Array., coord relates to container group,\n * If no container specified, to global.\n * opt {\n * isEnd: boolean,\n * removeOnClick: boolean\n * }\n *\n * @param {module:zrender/zrender~ZRender} zr\n */\n\nfunction BrushController(zr) {\n Eventful.call(this);\n /**\n * @type {module:zrender/zrender~ZRender}\n * @private\n */\n\n this._zr = zr;\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n\n this.group = new graphic.Group();\n /**\n * Only for drawing (after enabledBrush).\n * 'line', 'rect', 'polygon' or false\n * If passing false/null/undefined, disable brush.\n * If passing 'auto', determined by panel.defaultBrushType\n * @private\n * @type {string}\n */\n\n this._brushType;\n /**\n * Only for drawing (after enabledBrush).\n *\n * @private\n * @type {Object}\n */\n\n this._brushOption;\n /**\n * @private\n * @type {Object}\n */\n\n this._panels;\n /**\n * @private\n * @type {Array.}\n */\n\n this._track = [];\n /**\n * @private\n * @type {boolean}\n */\n\n this._dragging;\n /**\n * @private\n * @type {Array}\n */\n\n this._covers = [];\n /**\n * @private\n * @type {moudule:zrender/container/Group}\n */\n\n this._creatingCover;\n /**\n * `true` means global panel\n * @private\n * @type {module:zrender/container/Group|boolean}\n */\n\n this._creatingPanel;\n /**\n * @private\n * @type {boolean}\n */\n\n this._enableGlobalPan;\n /**\n * @private\n * @type {boolean}\n */\n\n /**\n * @private\n * @type {string}\n */\n this._uid = 'brushController_' + baseUID++;\n /**\n * @private\n * @type {Object}\n */\n\n this._handlers = {};\n each(pointerHandlers, function (handler, eventName) {\n this._handlers[eventName] = zrUtil.bind(handler, this);\n }, this);\n}\n\nBrushController.prototype = {\n constructor: BrushController,\n\n /**\n * If set to null/undefined/false, select disabled.\n * @param {Object} brushOption\n * @param {string|boolean} brushOption.brushType 'line', 'rect', 'polygon' or false\n * If passing false/null/undefined, disable brush.\n * If passing 'auto', determined by panel.defaultBrushType.\n * ('auto' can not be used in global panel)\n * @param {number} [brushOption.brushMode='single'] 'single' or 'multiple'\n * @param {boolean} [brushOption.transformable=true]\n * @param {boolean} [brushOption.removeOnClick=false]\n * @param {Object} [brushOption.brushStyle]\n * @param {number} [brushOption.brushStyle.width]\n * @param {number} [brushOption.brushStyle.lineWidth]\n * @param {string} [brushOption.brushStyle.stroke]\n * @param {string} [brushOption.brushStyle.fill]\n * @param {number} [brushOption.z]\n */\n enableBrush: function (brushOption) {\n this._brushType && doDisableBrush(this);\n brushOption.brushType && doEnableBrush(this, brushOption);\n return this;\n },\n\n /**\n * @param {Array.} panelOpts If not pass, it is global brush.\n * Each items: {\n * panelId, // mandatory.\n * clipPath, // mandatory. function.\n * isTargetByCursor, // mandatory. function.\n * defaultBrushType, // optional, only used when brushType is 'auto'.\n * getLinearBrushOtherExtent, // optional. function.\n * }\n */\n setPanels: function (panelOpts) {\n if (panelOpts && panelOpts.length) {\n var panels = this._panels = {};\n zrUtil.each(panelOpts, function (panelOpts) {\n panels[panelOpts.panelId] = zrUtil.clone(panelOpts);\n });\n } else {\n this._panels = null;\n }\n\n return this;\n },\n\n /**\n * @param {Object} [opt]\n * @return {boolean} [opt.enableGlobalPan=false]\n */\n mount: function (opt) {\n opt = opt || {};\n this._enableGlobalPan = opt.enableGlobalPan;\n var thisGroup = this.group;\n\n this._zr.add(thisGroup);\n\n thisGroup.attr({\n position: opt.position || [0, 0],\n rotation: opt.rotation || 0,\n scale: opt.scale || [1, 1]\n });\n this._transform = thisGroup.getLocalTransform();\n return this;\n },\n eachCover: function (cb, context) {\n each(this._covers, cb, context);\n },\n\n /**\n * Update covers.\n * @param {Array.} brushOptionList Like:\n * [\n * {id: 'xx', brushType: 'line', range: [23, 44], brushStyle, transformable},\n * {id: 'yy', brushType: 'rect', range: [[23, 44], [23, 54]]},\n * ...\n * ]\n * `brushType` is required in each cover info. (can not be 'auto')\n * `id` is not mandatory.\n * `brushStyle`, `transformable` is not mandatory, use DEFAULT_BRUSH_OPT by default.\n * If brushOptionList is null/undefined, all covers removed.\n */\n updateCovers: function (brushOptionList) {\n brushOptionList = zrUtil.map(brushOptionList, function (brushOption) {\n return zrUtil.merge(zrUtil.clone(DEFAULT_BRUSH_OPT), brushOption, true);\n });\n var tmpIdPrefix = '\\0-brush-index-';\n var oldCovers = this._covers;\n var newCovers = this._covers = [];\n var controller = this;\n var creatingCover = this._creatingCover;\n new DataDiffer(oldCovers, brushOptionList, oldGetKey, getKey).add(addOrUpdate).update(addOrUpdate).remove(remove).execute();\n return this;\n\n function getKey(brushOption, index) {\n return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index) + '-' + brushOption.brushType;\n }\n\n function oldGetKey(cover, index) {\n return getKey(cover.__brushOption, index);\n }\n\n function addOrUpdate(newIndex, oldIndex) {\n var newBrushOption = brushOptionList[newIndex]; // Consider setOption in event listener of brushSelect,\n // where updating cover when creating should be forbiden.\n\n if (oldIndex != null && oldCovers[oldIndex] === creatingCover) {\n newCovers[newIndex] = oldCovers[oldIndex];\n } else {\n var cover = newCovers[newIndex] = oldIndex != null ? (oldCovers[oldIndex].__brushOption = newBrushOption, oldCovers[oldIndex]) : endCreating(controller, createCover(controller, newBrushOption));\n updateCoverAfterCreation(controller, cover);\n }\n }\n\n function remove(oldIndex) {\n if (oldCovers[oldIndex] !== creatingCover) {\n controller.group.remove(oldCovers[oldIndex]);\n }\n }\n },\n unmount: function () {\n this.enableBrush(false); // container may 'removeAll' outside.\n\n clearCovers(this);\n\n this._zr.remove(this.group);\n\n return this;\n },\n dispose: function () {\n this.unmount();\n this.off();\n }\n};\nzrUtil.mixin(BrushController, Eventful);\n\nfunction doEnableBrush(controller, brushOption) {\n var zr = controller._zr; // Consider roam, which takes globalPan too.\n\n if (!controller._enableGlobalPan) {\n interactionMutex.take(zr, MUTEX_RESOURCE_KEY, controller._uid);\n }\n\n mountHandlers(zr, controller._handlers);\n controller._brushType = brushOption.brushType;\n controller._brushOption = zrUtil.merge(zrUtil.clone(DEFAULT_BRUSH_OPT), brushOption, true);\n}\n\nfunction doDisableBrush(controller) {\n var zr = controller._zr;\n interactionMutex.release(zr, MUTEX_RESOURCE_KEY, controller._uid);\n unmountHandlers(zr, controller._handlers);\n controller._brushType = controller._brushOption = null;\n}\n\nfunction mountHandlers(zr, handlers) {\n each(handlers, function (handler, eventName) {\n zr.on(eventName, handler);\n });\n}\n\nfunction unmountHandlers(zr, handlers) {\n each(handlers, function (handler, eventName) {\n zr.off(eventName, handler);\n });\n}\n\nfunction createCover(controller, brushOption) {\n var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption);\n cover.__brushOption = brushOption;\n updateZ(cover, brushOption);\n controller.group.add(cover);\n return cover;\n}\n\nfunction endCreating(controller, creatingCover) {\n var coverRenderer = getCoverRenderer(creatingCover);\n\n if (coverRenderer.endCreating) {\n coverRenderer.endCreating(controller, creatingCover);\n updateZ(creatingCover, creatingCover.__brushOption);\n }\n\n return creatingCover;\n}\n\nfunction updateCoverShape(controller, cover) {\n var brushOption = cover.__brushOption;\n getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption);\n}\n\nfunction updateZ(cover, brushOption) {\n var z = brushOption.z;\n z == null && (z = COVER_Z);\n cover.traverse(function (el) {\n el.z = z;\n el.z2 = z; // Consider in given container.\n });\n}\n\nfunction updateCoverAfterCreation(controller, cover) {\n getCoverRenderer(cover).updateCommon(controller, cover);\n updateCoverShape(controller, cover);\n}\n\nfunction getCoverRenderer(cover) {\n return coverRenderers[cover.__brushOption.brushType];\n} // return target panel or `true` (means global panel)\n\n\nfunction getPanelByPoint(controller, e, localCursorPoint) {\n var panels = controller._panels;\n\n if (!panels) {\n return true; // Global panel\n }\n\n var panel;\n var transform = controller._transform;\n each(panels, function (pn) {\n pn.isTargetByCursor(e, localCursorPoint, transform) && (panel = pn);\n });\n return panel;\n} // Return a panel or true\n\n\nfunction getPanelByCover(controller, cover) {\n var panels = controller._panels;\n\n if (!panels) {\n return true; // Global panel\n }\n\n var panelId = cover.__brushOption.panelId; // User may give cover without coord sys info,\n // which is then treated as global panel.\n\n return panelId != null ? panels[panelId] : true;\n}\n\nfunction clearCovers(controller) {\n var covers = controller._covers;\n var originalLength = covers.length;\n each(covers, function (cover) {\n controller.group.remove(cover);\n }, controller);\n covers.length = 0;\n return !!originalLength;\n}\n\nfunction trigger(controller, opt) {\n var areas = map(controller._covers, function (cover) {\n var brushOption = cover.__brushOption;\n var range = zrUtil.clone(brushOption.range);\n return {\n brushType: brushOption.brushType,\n panelId: brushOption.panelId,\n range: range\n };\n });\n controller.trigger('brush', areas, {\n isEnd: !!opt.isEnd,\n removeOnClick: !!opt.removeOnClick\n });\n}\n\nfunction shouldShowCover(controller) {\n var track = controller._track;\n\n if (!track.length) {\n return false;\n }\n\n var p2 = track[track.length - 1];\n var p1 = track[0];\n var dx = p2[0] - p1[0];\n var dy = p2[1] - p1[1];\n var dist = mathPow(dx * dx + dy * dy, 0.5);\n return dist > UNSELECT_THRESHOLD;\n}\n\nfunction getTrackEnds(track) {\n var tail = track.length - 1;\n tail < 0 && (tail = 0);\n return [track[0], track[tail]];\n}\n\nfunction createBaseRectCover(doDrift, controller, brushOption, edgeNames) {\n var cover = new graphic.Group();\n cover.add(new graphic.Rect({\n name: 'main',\n style: makeStyle(brushOption),\n silent: true,\n draggable: true,\n cursor: 'move',\n drift: curry(doDrift, controller, cover, 'nswe'),\n ondragend: curry(trigger, controller, {\n isEnd: true\n })\n }));\n each(edgeNames, function (name) {\n cover.add(new graphic.Rect({\n name: name,\n style: {\n opacity: 0\n },\n draggable: true,\n silent: true,\n invisible: true,\n drift: curry(doDrift, controller, cover, name),\n ondragend: curry(trigger, controller, {\n isEnd: true\n })\n }));\n });\n return cover;\n}\n\nfunction updateBaseRect(controller, cover, localRange, brushOption) {\n var lineWidth = brushOption.brushStyle.lineWidth || 0;\n var handleSize = mathMax(lineWidth, MIN_RESIZE_LINE_WIDTH);\n var x = localRange[0][0];\n var y = localRange[1][0];\n var xa = x - lineWidth / 2;\n var ya = y - lineWidth / 2;\n var x2 = localRange[0][1];\n var y2 = localRange[1][1];\n var x2a = x2 - handleSize + lineWidth / 2;\n var y2a = y2 - handleSize + lineWidth / 2;\n var width = x2 - x;\n var height = y2 - y;\n var widtha = width + lineWidth;\n var heighta = height + lineWidth;\n updateRectShape(controller, cover, 'main', x, y, width, height);\n\n if (brushOption.transformable) {\n updateRectShape(controller, cover, 'w', xa, ya, handleSize, heighta);\n updateRectShape(controller, cover, 'e', x2a, ya, handleSize, heighta);\n updateRectShape(controller, cover, 'n', xa, ya, widtha, handleSize);\n updateRectShape(controller, cover, 's', xa, y2a, widtha, handleSize);\n updateRectShape(controller, cover, 'nw', xa, ya, handleSize, handleSize);\n updateRectShape(controller, cover, 'ne', x2a, ya, handleSize, handleSize);\n updateRectShape(controller, cover, 'sw', xa, y2a, handleSize, handleSize);\n updateRectShape(controller, cover, 'se', x2a, y2a, handleSize, handleSize);\n }\n}\n\nfunction updateCommon(controller, cover) {\n var brushOption = cover.__brushOption;\n var transformable = brushOption.transformable;\n var mainEl = cover.childAt(0);\n mainEl.useStyle(makeStyle(brushOption));\n mainEl.attr({\n silent: !transformable,\n cursor: transformable ? 'move' : 'default'\n });\n each(['w', 'e', 'n', 's', 'se', 'sw', 'ne', 'nw'], function (name) {\n var el = cover.childOfName(name);\n var globalDir = getGlobalDirection(controller, name);\n el && el.attr({\n silent: !transformable,\n invisible: !transformable,\n cursor: transformable ? CURSOR_MAP[globalDir] + '-resize' : null\n });\n });\n}\n\nfunction updateRectShape(controller, cover, name, x, y, w, h) {\n var el = cover.childOfName(name);\n el && el.setShape(pointsToRect(clipByPanel(controller, cover, [[x, y], [x + w, y + h]])));\n}\n\nfunction makeStyle(brushOption) {\n return zrUtil.defaults({\n strokeNoScale: true\n }, brushOption.brushStyle);\n}\n\nfunction formatRectRange(x, y, x2, y2) {\n var min = [mathMin(x, x2), mathMin(y, y2)];\n var max = [mathMax(x, x2), mathMax(y, y2)];\n return [[min[0], max[0]], // x range\n [min[1], max[1]] // y range\n ];\n}\n\nfunction getTransform(controller) {\n return graphic.getTransform(controller.group);\n}\n\nfunction getGlobalDirection(controller, localDirection) {\n if (localDirection.length > 1) {\n localDirection = localDirection.split('');\n var globalDir = [getGlobalDirection(controller, localDirection[0]), getGlobalDirection(controller, localDirection[1])];\n (globalDir[0] === 'e' || globalDir[0] === 'w') && globalDir.reverse();\n return globalDir.join('');\n } else {\n var map = {\n w: 'left',\n e: 'right',\n n: 'top',\n s: 'bottom'\n };\n var inverseMap = {\n left: 'w',\n right: 'e',\n top: 'n',\n bottom: 's'\n };\n var globalDir = graphic.transformDirection(map[localDirection], getTransform(controller));\n return inverseMap[globalDir];\n }\n}\n\nfunction driftRect(toRectRange, fromRectRange, controller, cover, name, dx, dy, e) {\n var brushOption = cover.__brushOption;\n var rectRange = toRectRange(brushOption.range);\n var localDelta = toLocalDelta(controller, dx, dy);\n each(name.split(''), function (namePart) {\n var ind = DIRECTION_MAP[namePart];\n rectRange[ind[0]][ind[1]] += localDelta[ind[0]];\n });\n brushOption.range = fromRectRange(formatRectRange(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1]));\n updateCoverAfterCreation(controller, cover);\n trigger(controller, {\n isEnd: false\n });\n}\n\nfunction driftPolygon(controller, cover, dx, dy, e) {\n var range = cover.__brushOption.range;\n var localDelta = toLocalDelta(controller, dx, dy);\n each(range, function (point) {\n point[0] += localDelta[0];\n point[1] += localDelta[1];\n });\n updateCoverAfterCreation(controller, cover);\n trigger(controller, {\n isEnd: false\n });\n}\n\nfunction toLocalDelta(controller, dx, dy) {\n var thisGroup = controller.group;\n var localD = thisGroup.transformCoordToLocal(dx, dy);\n var localZero = thisGroup.transformCoordToLocal(0, 0);\n return [localD[0] - localZero[0], localD[1] - localZero[1]];\n}\n\nfunction clipByPanel(controller, cover, data) {\n var panel = getPanelByCover(controller, cover);\n return panel && panel !== true ? panel.clipPath(data, controller._transform) : zrUtil.clone(data);\n}\n\nfunction pointsToRect(points) {\n var xmin = mathMin(points[0][0], points[1][0]);\n var ymin = mathMin(points[0][1], points[1][1]);\n var xmax = mathMax(points[0][0], points[1][0]);\n var ymax = mathMax(points[0][1], points[1][1]);\n return {\n x: xmin,\n y: ymin,\n width: xmax - xmin,\n height: ymax - ymin\n };\n}\n\nfunction resetCursor(controller, e, localCursorPoint) {\n if ( // Check active\n !controller._brushType // resetCursor should be always called when mouse is in zr area,\n // but not called when mouse is out of zr area to avoid bad influence\n // if `mousemove`, `mouseup` are triggered from `document` event.\n || isOutsideZrArea(controller, e)) {\n return;\n }\n\n var zr = controller._zr;\n var covers = controller._covers;\n var currPanel = getPanelByPoint(controller, e, localCursorPoint); // Check whether in covers.\n\n if (!controller._dragging) {\n for (var i = 0; i < covers.length; i++) {\n var brushOption = covers[i].__brushOption;\n\n if (currPanel && (currPanel === true || brushOption.panelId === currPanel.panelId) && coverRenderers[brushOption.brushType].contain(covers[i], localCursorPoint[0], localCursorPoint[1])) {\n // Use cursor style set on cover.\n return;\n }\n }\n }\n\n currPanel && zr.setCursorStyle('crosshair');\n}\n\nfunction preventDefault(e) {\n var rawE = e.event;\n rawE.preventDefault && rawE.preventDefault();\n}\n\nfunction mainShapeContain(cover, x, y) {\n return cover.childOfName('main').contain(x, y);\n}\n\nfunction updateCoverByMouse(controller, e, localCursorPoint, isEnd) {\n var creatingCover = controller._creatingCover;\n var panel = controller._creatingPanel;\n var thisBrushOption = controller._brushOption;\n var eventParams;\n\n controller._track.push(localCursorPoint.slice());\n\n if (shouldShowCover(controller) || creatingCover) {\n if (panel && !creatingCover) {\n thisBrushOption.brushMode === 'single' && clearCovers(controller);\n var brushOption = zrUtil.clone(thisBrushOption);\n brushOption.brushType = determineBrushType(brushOption.brushType, panel);\n brushOption.panelId = panel === true ? null : panel.panelId;\n creatingCover = controller._creatingCover = createCover(controller, brushOption);\n\n controller._covers.push(creatingCover);\n }\n\n if (creatingCover) {\n var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)];\n var coverBrushOption = creatingCover.__brushOption;\n coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel(controller, creatingCover, controller._track));\n\n if (isEnd) {\n endCreating(controller, creatingCover);\n coverRenderer.updateCommon(controller, creatingCover);\n }\n\n updateCoverShape(controller, creatingCover);\n eventParams = {\n isEnd: isEnd\n };\n }\n } else if (isEnd && thisBrushOption.brushMode === 'single' && thisBrushOption.removeOnClick) {\n // Help user to remove covers easily, only by a tiny drag, in 'single' mode.\n // But a single click do not clear covers, because user may have casual\n // clicks (for example, click on other component and do not expect covers\n // disappear).\n // Only some cover removed, trigger action, but not every click trigger action.\n if (getPanelByPoint(controller, e, localCursorPoint) && clearCovers(controller)) {\n eventParams = {\n isEnd: isEnd,\n removeOnClick: true\n };\n }\n }\n\n return eventParams;\n}\n\nfunction determineBrushType(brushType, panel) {\n if (brushType === 'auto') {\n return panel.defaultBrushType;\n }\n\n return brushType;\n}\n\nvar pointerHandlers = {\n mousedown: function (e) {\n if (this._dragging) {\n // In case some browser do not support globalOut,\n // and release mose out side the browser.\n handleDragEnd(this, e);\n } else if (!e.target || !e.target.draggable) {\n preventDefault(e);\n var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY);\n this._creatingCover = null;\n var panel = this._creatingPanel = getPanelByPoint(this, e, localCursorPoint);\n\n if (panel) {\n this._dragging = true;\n this._track = [localCursorPoint.slice()];\n }\n }\n },\n mousemove: function (e) {\n var x = e.offsetX;\n var y = e.offsetY;\n var localCursorPoint = this.group.transformCoordToLocal(x, y);\n resetCursor(this, e, localCursorPoint);\n\n if (this._dragging) {\n preventDefault(e);\n var eventParams = updateCoverByMouse(this, e, localCursorPoint, false);\n eventParams && trigger(this, eventParams);\n }\n },\n mouseup: function (e) {\n handleDragEnd(this, e);\n }\n};\n\nfunction handleDragEnd(controller, e) {\n if (controller._dragging) {\n preventDefault(e);\n var x = e.offsetX;\n var y = e.offsetY;\n var localCursorPoint = controller.group.transformCoordToLocal(x, y);\n var eventParams = updateCoverByMouse(controller, e, localCursorPoint, true);\n controller._dragging = false;\n controller._track = [];\n controller._creatingCover = null; // trigger event shoule be at final, after procedure will be nested.\n\n eventParams && trigger(controller, eventParams);\n }\n}\n\nfunction isOutsideZrArea(controller, x, y) {\n var zr = controller._zr;\n return x < 0 || x > zr.getWidth() || y < 0 || y > zr.getHeight();\n}\n/**\n * key: brushType\n * @type {Object}\n */\n\n\nvar coverRenderers = {\n lineX: getLineRenderer(0),\n lineY: getLineRenderer(1),\n rect: {\n createCover: function (controller, brushOption) {\n return createBaseRectCover(curry(driftRect, function (range) {\n return range;\n }, function (range) {\n return range;\n }), controller, brushOption, ['w', 'e', 'n', 's', 'se', 'sw', 'ne', 'nw']);\n },\n getCreatingRange: function (localTrack) {\n var ends = getTrackEnds(localTrack);\n return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]);\n },\n updateCoverShape: function (controller, cover, localRange, brushOption) {\n updateBaseRect(controller, cover, localRange, brushOption);\n },\n updateCommon: updateCommon,\n contain: mainShapeContain\n },\n polygon: {\n createCover: function (controller, brushOption) {\n var cover = new graphic.Group(); // Do not use graphic.Polygon because graphic.Polyline do not close the\n // border of the shape when drawing, which is a better experience for user.\n\n cover.add(new graphic.Polyline({\n name: 'main',\n style: makeStyle(brushOption),\n silent: true\n }));\n return cover;\n },\n getCreatingRange: function (localTrack) {\n return localTrack;\n },\n endCreating: function (controller, cover) {\n cover.remove(cover.childAt(0)); // Use graphic.Polygon close the shape.\n\n cover.add(new graphic.Polygon({\n name: 'main',\n draggable: true,\n drift: curry(driftPolygon, controller, cover),\n ondragend: curry(trigger, controller, {\n isEnd: true\n })\n }));\n },\n updateCoverShape: function (controller, cover, localRange, brushOption) {\n cover.childAt(0).setShape({\n points: clipByPanel(controller, cover, localRange)\n });\n },\n updateCommon: updateCommon,\n contain: mainShapeContain\n }\n};\n\nfunction getLineRenderer(xyIndex) {\n return {\n createCover: function (controller, brushOption) {\n return createBaseRectCover(curry(driftRect, function (range) {\n var rectRange = [range, [0, 100]];\n xyIndex && rectRange.reverse();\n return rectRange;\n }, function (rectRange) {\n return rectRange[xyIndex];\n }), controller, brushOption, [['w', 'e'], ['n', 's']][xyIndex]);\n },\n getCreatingRange: function (localTrack) {\n var ends = getTrackEnds(localTrack);\n var min = mathMin(ends[0][xyIndex], ends[1][xyIndex]);\n var max = mathMax(ends[0][xyIndex], ends[1][xyIndex]);\n return [min, max];\n },\n updateCoverShape: function (controller, cover, localRange, brushOption) {\n var otherExtent; // If brushWidth not specified, fit the panel.\n\n var panel = getPanelByCover(controller, cover);\n\n if (panel !== true && panel.getLinearBrushOtherExtent) {\n otherExtent = panel.getLinearBrushOtherExtent(xyIndex, controller._transform);\n } else {\n var zr = controller._zr;\n otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]];\n }\n\n var rectRange = [localRange, otherExtent];\n xyIndex && rectRange.reverse();\n updateBaseRect(controller, cover, rectRange, brushOption);\n },\n updateCommon: updateCommon,\n contain: mainShapeContain\n };\n}\n\nvar _default = BrushController;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar clazzUtil = require(\"../../util/clazz\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar axisPointerModelHelper = require(\"./modelHelper\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar throttleUtil = require(\"../../util/throttle\");\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\nvar clone = zrUtil.clone;\nvar bind = zrUtil.bind;\n/**\n * Base axis pointer class in 2D.\n * Implemenents {module:echarts/component/axis/IAxisPointer}.\n */\n\nfunction BaseAxisPointer() {}\n\nBaseAxisPointer.prototype = {\n /**\n * @private\n */\n _group: null,\n\n /**\n * @private\n */\n _lastGraphicKey: null,\n\n /**\n * @private\n */\n _handle: null,\n\n /**\n * @private\n */\n _dragging: false,\n\n /**\n * @private\n */\n _lastValue: null,\n\n /**\n * @private\n */\n _lastStatus: null,\n\n /**\n * @private\n */\n _payloadInfo: null,\n\n /**\n * In px, arbitrary value. Do not set too small,\n * no animation is ok for most cases.\n * @protected\n */\n animationThreshold: 15,\n\n /**\n * @implement\n */\n render: function (axisModel, axisPointerModel, api, forceRender) {\n var value = axisPointerModel.get('value');\n var status = axisPointerModel.get('status'); // Bind them to `this`, not in closure, otherwise they will not\n // be replaced when user calling setOption in not merge mode.\n\n this._axisModel = axisModel;\n this._axisPointerModel = axisPointerModel;\n this._api = api; // Optimize: `render` will be called repeatly during mouse move.\n // So it is power consuming if performing `render` each time,\n // especially on mobile device.\n\n if (!forceRender && this._lastValue === value && this._lastStatus === status) {\n return;\n }\n\n this._lastValue = value;\n this._lastStatus = status;\n var group = this._group;\n var handle = this._handle;\n\n if (!status || status === 'hide') {\n // Do not clear here, for animation better.\n group && group.hide();\n handle && handle.hide();\n return;\n }\n\n group && group.show();\n handle && handle.show(); // Otherwise status is 'show'\n\n var elOption = {};\n this.makeElOption(elOption, value, axisModel, axisPointerModel, api); // Enable change axis pointer type.\n\n var graphicKey = elOption.graphicKey;\n\n if (graphicKey !== this._lastGraphicKey) {\n this.clear(api);\n }\n\n this._lastGraphicKey = graphicKey;\n var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel);\n\n if (!group) {\n group = this._group = new graphic.Group();\n this.createPointerEl(group, elOption, axisModel, axisPointerModel);\n this.createLabelEl(group, elOption, axisModel, axisPointerModel);\n api.getZr().add(group);\n } else {\n var doUpdateProps = zrUtil.curry(updateProps, axisPointerModel, moveAnimation);\n this.updatePointerEl(group, elOption, doUpdateProps, axisPointerModel);\n this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);\n }\n\n updateMandatoryProps(group, axisPointerModel, true);\n\n this._renderHandle(value);\n },\n\n /**\n * @implement\n */\n remove: function (api) {\n this.clear(api);\n },\n\n /**\n * @implement\n */\n dispose: function (api) {\n this.clear(api);\n },\n\n /**\n * @protected\n */\n determineAnimation: function (axisModel, axisPointerModel) {\n var animation = axisPointerModel.get('animation');\n var axis = axisModel.axis;\n var isCategoryAxis = axis.type === 'category';\n var useSnap = axisPointerModel.get('snap'); // Value axis without snap always do not snap.\n\n if (!useSnap && !isCategoryAxis) {\n return false;\n }\n\n if (animation === 'auto' || animation == null) {\n var animationThreshold = this.animationThreshold;\n\n if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {\n return true;\n } // It is important to auto animation when snap used. Consider if there is\n // a dataZoom, animation will be disabled when too many points exist, while\n // it will be enabled for better visual effect when little points exist.\n\n\n if (useSnap) {\n var seriesDataCount = axisPointerModelHelper.getAxisInfo(axisModel).seriesDataCount;\n var axisExtent = axis.getExtent(); // Approximate band width\n\n return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;\n }\n\n return false;\n }\n\n return animation === true;\n },\n\n /**\n * add {pointer, label, graphicKey} to elOption\n * @protected\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {// Shoule be implemenented by sub-class.\n },\n\n /**\n * @protected\n */\n createPointerEl: function (group, elOption, axisModel, axisPointerModel) {\n var pointerOption = elOption.pointer;\n\n if (pointerOption) {\n var pointerEl = inner(group).pointerEl = new graphic[pointerOption.type](clone(elOption.pointer));\n group.add(pointerEl);\n }\n },\n\n /**\n * @protected\n */\n createLabelEl: function (group, elOption, axisModel, axisPointerModel) {\n if (elOption.label) {\n var labelEl = inner(group).labelEl = new graphic.Rect(clone(elOption.label));\n group.add(labelEl);\n updateLabelShowHide(labelEl, axisPointerModel);\n }\n },\n\n /**\n * @protected\n */\n updatePointerEl: function (group, elOption, updateProps) {\n var pointerEl = inner(group).pointerEl;\n\n if (pointerEl && elOption.pointer) {\n pointerEl.setStyle(elOption.pointer.style);\n updateProps(pointerEl, {\n shape: elOption.pointer.shape\n });\n }\n },\n\n /**\n * @protected\n */\n updateLabelEl: function (group, elOption, updateProps, axisPointerModel) {\n var labelEl = inner(group).labelEl;\n\n if (labelEl) {\n labelEl.setStyle(elOption.label.style);\n updateProps(labelEl, {\n // Consider text length change in vertical axis, animation should\n // be used on shape, otherwise the effect will be weird.\n shape: elOption.label.shape,\n position: elOption.label.position\n });\n updateLabelShowHide(labelEl, axisPointerModel);\n }\n },\n\n /**\n * @private\n */\n _renderHandle: function (value) {\n if (this._dragging || !this.updateHandleTransform) {\n return;\n }\n\n var axisPointerModel = this._axisPointerModel;\n\n var zr = this._api.getZr();\n\n var handle = this._handle;\n var handleModel = axisPointerModel.getModel('handle');\n var status = axisPointerModel.get('status');\n\n if (!handleModel.get('show') || !status || status === 'hide') {\n handle && zr.remove(handle);\n this._handle = null;\n return;\n }\n\n var isInit;\n\n if (!this._handle) {\n isInit = true;\n handle = this._handle = graphic.createIcon(handleModel.get('icon'), {\n cursor: 'move',\n draggable: true,\n onmousemove: function (e) {\n // Fot mobile devicem, prevent screen slider on the button.\n eventTool.stop(e.event);\n },\n onmousedown: bind(this._onHandleDragMove, this, 0, 0),\n drift: bind(this._onHandleDragMove, this),\n ondragend: bind(this._onHandleDragEnd, this)\n });\n zr.add(handle);\n }\n\n updateMandatoryProps(handle, axisPointerModel, false); // update style\n\n var includeStyles = ['color', 'borderColor', 'borderWidth', 'opacity', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\n handle.setStyle(handleModel.getItemStyle(null, includeStyles)); // update position\n\n var handleSize = handleModel.get('size');\n\n if (!zrUtil.isArray(handleSize)) {\n handleSize = [handleSize, handleSize];\n }\n\n handle.attr('scale', [handleSize[0] / 2, handleSize[1] / 2]);\n throttleUtil.createOrUpdate(this, '_doDispatchAxisPointer', handleModel.get('throttle') || 0, 'fixRate');\n\n this._moveHandleToValue(value, isInit);\n },\n\n /**\n * @private\n */\n _moveHandleToValue: function (value, isInit) {\n updateProps(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel)));\n },\n\n /**\n * @private\n */\n _onHandleDragMove: function (dx, dy) {\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n this._dragging = true; // Persistent for throttle.\n\n var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel);\n this._payloadInfo = trans;\n handle.stopAnimation();\n handle.attr(getHandleTransProps(trans));\n inner(handle).lastProp = null;\n\n this._doDispatchAxisPointer();\n },\n\n /**\n * Throttled method.\n * @private\n */\n _doDispatchAxisPointer: function () {\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n var payloadInfo = this._payloadInfo;\n var axisModel = this._axisModel;\n\n this._api.dispatchAction({\n type: 'updateAxisPointer',\n x: payloadInfo.cursorPoint[0],\n y: payloadInfo.cursorPoint[1],\n tooltipOption: payloadInfo.tooltipOption,\n axesInfo: [{\n axisDim: axisModel.axis.dim,\n axisIndex: axisModel.componentIndex\n }]\n });\n },\n\n /**\n * @private\n */\n _onHandleDragEnd: function (moveAnimation) {\n this._dragging = false;\n var handle = this._handle;\n\n if (!handle) {\n return;\n }\n\n var value = this._axisPointerModel.get('value'); // Consider snap or categroy axis, handle may be not consistent with\n // axisPointer. So move handle to align the exact value position when\n // drag ended.\n\n\n this._moveHandleToValue(value); // For the effect: tooltip will be shown when finger holding on handle\n // button, and will be hidden after finger left handle button.\n\n\n this._api.dispatchAction({\n type: 'hideTip'\n });\n },\n\n /**\n * Should be implemenented by sub-class if support `handle`.\n * @protected\n * @param {number} value\n * @param {module:echarts/model/Model} axisModel\n * @param {module:echarts/model/Model} axisPointerModel\n * @return {Object} {position: [x, y], rotation: 0}\n */\n getHandleTransform: null,\n\n /**\n * * Should be implemenented by sub-class if support `handle`.\n * @protected\n * @param {Object} transform {position, rotation}\n * @param {Array.} delta [dx, dy]\n * @param {module:echarts/model/Model} axisModel\n * @param {module:echarts/model/Model} axisPointerModel\n * @return {Object} {position: [x, y], rotation: 0, cursorPoint: [x, y]}\n */\n updateHandleTransform: null,\n\n /**\n * @private\n */\n clear: function (api) {\n this._lastValue = null;\n this._lastStatus = null;\n var zr = api.getZr();\n var group = this._group;\n var handle = this._handle;\n\n if (zr && group) {\n this._lastGraphicKey = null;\n group && zr.remove(group);\n handle && zr.remove(handle);\n this._group = null;\n this._handle = null;\n this._payloadInfo = null;\n }\n },\n\n /**\n * @protected\n */\n doClear: function () {// Implemented by sub-class if necessary.\n },\n\n /**\n * @protected\n * @param {Array.} xy\n * @param {Array.} wh\n * @param {number} [xDimIndex=0] or 1\n */\n buildLabel: function (xy, wh, xDimIndex) {\n xDimIndex = xDimIndex || 0;\n return {\n x: xy[xDimIndex],\n y: xy[1 - xDimIndex],\n width: wh[xDimIndex],\n height: wh[1 - xDimIndex]\n };\n }\n};\nBaseAxisPointer.prototype.constructor = BaseAxisPointer;\n\nfunction updateProps(animationModel, moveAnimation, el, props) {\n // Animation optimize.\n if (!propsEqual(inner(el).lastProp, props)) {\n inner(el).lastProp = props;\n moveAnimation ? graphic.updateProps(el, props, animationModel) : (el.stopAnimation(), el.attr(props));\n }\n}\n\nfunction propsEqual(lastProps, newProps) {\n if (zrUtil.isObject(lastProps) && zrUtil.isObject(newProps)) {\n var equals = true;\n zrUtil.each(newProps, function (item, key) {\n equals = equals && propsEqual(lastProps[key], item);\n });\n return !!equals;\n } else {\n return lastProps === newProps;\n }\n}\n\nfunction updateLabelShowHide(labelEl, axisPointerModel) {\n labelEl[axisPointerModel.get('label.show') ? 'show' : 'hide']();\n}\n\nfunction getHandleTransProps(trans) {\n return {\n position: trans.position.slice(),\n rotation: trans.rotation || 0\n };\n}\n\nfunction updateMandatoryProps(group, axisPointerModel, silent) {\n var z = axisPointerModel.get('z');\n var zlevel = axisPointerModel.get('zlevel');\n group && group.traverse(function (el) {\n if (el.type !== 'group') {\n z != null && (el.z = z);\n zlevel != null && (el.zlevel = zlevel);\n el.silent = silent;\n }\n });\n}\n\nclazzUtil.enableClassExtend(BaseAxisPointer);\nvar _default = BaseAxisPointer;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Polar = require(\"./Polar\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _axisHelper = require(\"../../coord/axisHelper\");\n\nvar createScaleByModel = _axisHelper.createScaleByModel;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar getStackedDimension = _dataStackHelper.getStackedDimension;\n\nrequire(\"./PolarModel\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// TODO Axis scale\n\n/**\n * Resize method bound to the polar\n * @param {module:echarts/coord/polar/PolarModel} polarModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction resizePolar(polar, polarModel, api) {\n var center = polarModel.get('center');\n var width = api.getWidth();\n var height = api.getHeight();\n polar.cx = parsePercent(center[0], width);\n polar.cy = parsePercent(center[1], height);\n var radiusAxis = polar.getRadiusAxis();\n var size = Math.min(width, height) / 2;\n var radius = polarModel.get('radius');\n\n if (radius == null) {\n radius = [0, '100%'];\n } else if (!zrUtil.isArray(radius)) {\n // r0 = 0\n radius = [0, radius];\n }\n\n radius = [parsePercent(radius[0], size), parsePercent(radius[1], size)];\n radiusAxis.inverse ? radiusAxis.setExtent(radius[1], radius[0]) : radiusAxis.setExtent(radius[0], radius[1]);\n}\n/**\n * Update polar\n */\n\n\nfunction updatePolarScale(ecModel, api) {\n var polar = this;\n var angleAxis = polar.getAngleAxis();\n var radiusAxis = polar.getRadiusAxis(); // Reset scale\n\n angleAxis.scale.setExtent(Infinity, -Infinity);\n radiusAxis.scale.setExtent(Infinity, -Infinity);\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.coordinateSystem === polar) {\n var data = seriesModel.getData();\n zrUtil.each(data.mapDimension('radius', true), function (dim) {\n radiusAxis.scale.unionExtentFromData(data, getStackedDimension(data, dim));\n });\n zrUtil.each(data.mapDimension('angle', true), function (dim) {\n angleAxis.scale.unionExtentFromData(data, getStackedDimension(data, dim));\n });\n }\n });\n niceScaleExtent(angleAxis.scale, angleAxis.model);\n niceScaleExtent(radiusAxis.scale, radiusAxis.model); // Fix extent of category angle axis\n\n if (angleAxis.type === 'category' && !angleAxis.onBand) {\n var extent = angleAxis.getExtent();\n var diff = 360 / angleAxis.scale.count();\n angleAxis.inverse ? extent[1] += diff : extent[1] -= diff;\n angleAxis.setExtent(extent[0], extent[1]);\n }\n}\n/**\n * Set common axis properties\n * @param {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n * @param {module:echarts/coord/polar/AxisModel}\n * @inner\n */\n\n\nfunction setAxis(axis, axisModel) {\n axis.type = axisModel.get('type');\n axis.scale = createScaleByModel(axisModel);\n axis.onBand = axisModel.get('boundaryGap') && axis.type === 'category';\n axis.inverse = axisModel.get('inverse');\n\n if (axisModel.mainType === 'angleAxis') {\n axis.inverse ^= axisModel.get('clockwise');\n var startAngle = axisModel.get('startAngle');\n axis.setExtent(startAngle, startAngle + (axis.inverse ? -360 : 360));\n } // Inject axis instance\n\n\n axisModel.axis = axis;\n axis.model = axisModel;\n}\n\nvar polarCreator = {\n dimensions: Polar.prototype.dimensions,\n create: function (ecModel, api) {\n var polarList = [];\n ecModel.eachComponent('polar', function (polarModel, idx) {\n var polar = new Polar(idx); // Inject resize and update method\n\n polar.update = updatePolarScale;\n var radiusAxis = polar.getRadiusAxis();\n var angleAxis = polar.getAngleAxis();\n var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n var angleAxisModel = polarModel.findAxisModel('angleAxis');\n setAxis(radiusAxis, radiusAxisModel);\n setAxis(angleAxis, angleAxisModel);\n resizePolar(polar, polarModel, api);\n polarList.push(polar);\n polarModel.coordinateSystem = polar;\n polar.model = polarModel;\n }); // Inject coordinateSystem to series\n\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.get('coordinateSystem') === 'polar') {\n var polarModel = ecModel.queryComponents({\n mainType: 'polar',\n index: seriesModel.get('polarIndex'),\n id: seriesModel.get('polarId')\n })[0];\n seriesModel.coordinateSystem = polarModel.coordinateSystem;\n }\n });\n return polarList;\n }\n};\nCoordinateSystem.register('polar', polarCreator);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Component = require(\"../../model/Component\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nComponent.registerSubTypeDefaulter('dataZoom', function () {\n // Default 'slider' when no type specified.\n return 'slider';\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar formatUtil = require(\"../../util/format\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AXIS_DIMS = ['x', 'y', 'z', 'radius', 'angle', 'single']; // Supported coords.\n\nvar COORDS = ['cartesian2d', 'polar', 'singleAxis'];\n/**\n * @param {string} coordType\n * @return {boolean}\n */\n\nfunction isCoordSupported(coordType) {\n return zrUtil.indexOf(COORDS, coordType) >= 0;\n}\n/**\n * Create \"each\" method to iterate names.\n *\n * @pubilc\n * @param {Array.} names\n * @param {Array.=} attrs\n * @return {Function}\n */\n\n\nfunction createNameEach(names, attrs) {\n names = names.slice();\n var capitalNames = zrUtil.map(names, formatUtil.capitalFirst);\n attrs = (attrs || []).slice();\n var capitalAttrs = zrUtil.map(attrs, formatUtil.capitalFirst);\n return function (callback, context) {\n zrUtil.each(names, function (name, index) {\n var nameObj = {\n name: name,\n capital: capitalNames[index]\n };\n\n for (var j = 0; j < attrs.length; j++) {\n nameObj[attrs[j]] = name + capitalAttrs[j];\n }\n\n callback.call(context, nameObj);\n });\n };\n}\n/**\n * Iterate each dimension name.\n *\n * @public\n * @param {Function} callback The parameter is like:\n * {\n * name: 'angle',\n * capital: 'Angle',\n * axis: 'angleAxis',\n * axisIndex: 'angleAixs',\n * index: 'angleIndex'\n * }\n * @param {Object} context\n */\n\n\nvar eachAxisDim = createNameEach(AXIS_DIMS, ['axisIndex', 'axis', 'index', 'id']);\n/**\n * If tow dataZoomModels has the same axis controlled, we say that they are 'linked'.\n * dataZoomModels and 'links' make up one or more graphics.\n * This function finds the graphic where the source dataZoomModel is in.\n *\n * @public\n * @param {Function} forEachNode Node iterator.\n * @param {Function} forEachEdgeType edgeType iterator\n * @param {Function} edgeIdGetter Giving node and edgeType, return an array of edge id.\n * @return {Function} Input: sourceNode, Output: Like {nodes: [], dims: {}}\n */\n\nfunction createLinkedNodesFinder(forEachNode, forEachEdgeType, edgeIdGetter) {\n return function (sourceNode) {\n var result = {\n nodes: [],\n records: {} // key: edgeType.name, value: Object (key: edge id, value: boolean).\n\n };\n forEachEdgeType(function (edgeType) {\n result.records[edgeType.name] = {};\n });\n\n if (!sourceNode) {\n return result;\n }\n\n absorb(sourceNode, result);\n var existsLink;\n\n do {\n existsLink = false;\n forEachNode(processSingleNode);\n } while (existsLink);\n\n function processSingleNode(node) {\n if (!isNodeAbsorded(node, result) && isLinked(node, result)) {\n absorb(node, result);\n existsLink = true;\n }\n }\n\n return result;\n };\n\n function isNodeAbsorded(node, result) {\n return zrUtil.indexOf(result.nodes, node) >= 0;\n }\n\n function isLinked(node, result) {\n var hasLink = false;\n forEachEdgeType(function (edgeType) {\n zrUtil.each(edgeIdGetter(node, edgeType) || [], function (edgeId) {\n result.records[edgeType.name][edgeId] && (hasLink = true);\n });\n });\n return hasLink;\n }\n\n function absorb(node, result) {\n result.nodes.push(node);\n forEachEdgeType(function (edgeType) {\n zrUtil.each(edgeIdGetter(node, edgeType) || [], function (edgeId) {\n result.records[edgeType.name][edgeId] = true;\n });\n });\n }\n}\n\nexports.isCoordSupported = isCoordSupported;\nexports.createNameEach = createNameEach;\nexports.eachAxisDim = eachAxisDim;\nexports.createLinkedNodesFinder = createLinkedNodesFinder;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerProcessor({\n // `dataZoomProcessor` will only be performed in needed series. Consider if\n // there is a line series and a pie series, it is better not to update the\n // line series if only pie series is needed to be updated.\n getTargetSeries: function (ecModel) {\n var seriesModelMap = createHashMap();\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n var axisProxy = dataZoomModel.getAxisProxy(dimNames.name, axisIndex);\n each(axisProxy.getTargetSeriesModels(), function (seriesModel) {\n seriesModelMap.set(seriesModel.uid, seriesModel);\n });\n });\n });\n return seriesModelMap;\n },\n modifyOutputEnd: true,\n // Consider appendData, where filter should be performed. Because data process is\n // in block mode currently, it is not need to worry about that the overallProgress\n // execute every frame.\n overallReset: function (ecModel, api) {\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n // We calculate window and reset axis here but not in model\n // init stage and not after action dispatch handler, because\n // reset should be called after seriesData.restoreData.\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n dataZoomModel.getAxisProxy(dimNames.name, axisIndex).reset(dataZoomModel, api);\n }); // Caution: data zoom filtering is order sensitive when using\n // percent range and no min/max/scale set on axis.\n // For example, we have dataZoom definition:\n // [\n // {xAxisIndex: 0, start: 30, end: 70},\n // {yAxisIndex: 0, start: 20, end: 80}\n // ]\n // In this case, [20, 80] of y-dataZoom should be based on data\n // that have filtered by x-dataZoom using range of [30, 70],\n // but should not be based on full raw data. Thus sliding\n // x-dataZoom will change both ranges of xAxis and yAxis,\n // while sliding y-dataZoom will only change the range of yAxis.\n // So we should filter x-axis after reset x-axis immediately,\n // and then reset y-axis and filter y-axis.\n\n dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n dataZoomModel.getAxisProxy(dimNames.name, axisIndex).filterData(dataZoomModel, api);\n });\n });\n ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n // Fullfill all of the range props so that user\n // is able to get them from chart.getOption().\n var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n var percentRange = axisProxy.getDataPercentWindow();\n var valueRange = axisProxy.getDataValueWindow();\n dataZoomModel.setCalculatedRange({\n start: percentRange[0],\n end: percentRange[1],\n startValue: valueRange[0],\n endValue: valueRange[1]\n });\n });\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar helper = require(\"./helper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerAction('dataZoom', function (payload, ecModel) {\n var linkedNodesFinder = helper.createLinkedNodesFinder(zrUtil.bind(ecModel.eachComponent, ecModel, 'dataZoom'), helper.eachAxisDim, function (model, dimNames) {\n return model.get(dimNames.axisIndex);\n });\n var effectedModels = [];\n ecModel.eachComponent({\n mainType: 'dataZoom',\n query: payload\n }, function (model, index) {\n effectedModels.push.apply(effectedModels, linkedNodesFinder(model).nodes);\n });\n zrUtil.each(effectedModels, function (dataZoomModel, index) {\n dataZoomModel.setRawRange({\n start: payload.start,\n end: payload.end,\n startValue: payload.startValue,\n endValue: payload.endValue\n });\n });\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar dataFormatMixin = require(\"../../model/mixin/dataFormat\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar addCommas = formatUtil.addCommas;\nvar encodeHTML = formatUtil.encodeHTML;\n\nfunction fillLabel(opt) {\n modelUtil.defaultEmphasis(opt, 'label', ['show']);\n}\n\nvar MarkerModel = echarts.extendComponentModel({\n type: 'marker',\n dependencies: ['series', 'grid', 'polar', 'geo'],\n\n /**\n * @overrite\n */\n init: function (option, parentModel, ecModel) {\n this.mergeDefaultAndTheme(option, ecModel);\n\n this._mergeOption(option, ecModel, false, true);\n },\n\n /**\n * @return {boolean}\n */\n isAnimationEnabled: function () {\n if (env.node) {\n return false;\n }\n\n var hostSeries = this.__hostSeries;\n return this.getShallow('animation') && hostSeries && hostSeries.isAnimationEnabled();\n },\n\n /**\n * @overrite\n */\n mergeOption: function (newOpt, ecModel) {\n this._mergeOption(newOpt, ecModel, false, false);\n },\n _mergeOption: function (newOpt, ecModel, createdBySelf, isInit) {\n var MarkerModel = this.constructor;\n var modelPropName = this.mainType + 'Model';\n\n if (!createdBySelf) {\n ecModel.eachSeries(function (seriesModel) {\n var markerOpt = seriesModel.get(this.mainType, true);\n var markerModel = seriesModel[modelPropName];\n\n if (!markerOpt || !markerOpt.data) {\n seriesModel[modelPropName] = null;\n return;\n }\n\n if (!markerModel) {\n if (isInit) {\n // Default label emphasis `position` and `show`\n fillLabel(markerOpt);\n }\n\n zrUtil.each(markerOpt.data, function (item) {\n // FIXME Overwrite fillLabel method ?\n if (item instanceof Array) {\n fillLabel(item[0]);\n fillLabel(item[1]);\n } else {\n fillLabel(item);\n }\n });\n markerModel = new MarkerModel(markerOpt, this, ecModel);\n zrUtil.extend(markerModel, {\n mainType: this.mainType,\n // Use the same series index and name\n seriesIndex: seriesModel.seriesIndex,\n name: seriesModel.name,\n createdBySelf: true\n });\n markerModel.__hostSeries = seriesModel;\n } else {\n markerModel._mergeOption(markerOpt, ecModel, true);\n }\n\n seriesModel[modelPropName] = markerModel;\n }, this);\n }\n },\n formatTooltip: function (dataIndex) {\n var data = this.getData();\n var value = this.getRawValue(dataIndex);\n var formattedValue = zrUtil.isArray(value) ? zrUtil.map(value, addCommas).join(', ') : addCommas(value);\n var name = data.getName(dataIndex);\n var html = encodeHTML(this.name);\n\n if (value != null || name) {\n html += '
';\n }\n\n if (name) {\n html += encodeHTML(name);\n\n if (value != null) {\n html += ' : ';\n }\n }\n\n if (value != null) {\n html += encodeHTML(formattedValue);\n }\n\n return html;\n },\n getData: function () {\n return this._data;\n },\n setData: function (data) {\n this._data = data;\n }\n});\nzrUtil.mixin(MarkerModel, dataFormatMixin);\nvar _default = MarkerModel;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar indexOf = zrUtil.indexOf;\n\nfunction hasXOrY(item) {\n return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y)));\n}\n\nfunction hasXAndY(item) {\n return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y));\n} // Make it simple, do not visit all stacked value to count precision.\n// function getPrecision(data, valueAxisDim, dataIndex) {\n// var precision = -1;\n// var stackedDim = data.mapDimension(valueAxisDim);\n// do {\n// precision = Math.max(\n// numberUtil.getPrecision(data.get(stackedDim, dataIndex)),\n// precision\n// );\n// var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\n// if (stackedOnSeries) {\n// var byValue = data.get(data.getCalculationInfo('stackedByDimension'), dataIndex);\n// data = stackedOnSeries.getData();\n// dataIndex = data.indexOf(data.getCalculationInfo('stackedByDimension'), byValue);\n// stackedDim = data.getCalculationInfo('stackedDimension');\n// }\n// else {\n// data = null;\n// }\n// } while (data);\n// return precision;\n// }\n\n\nfunction markerTypeCalculatorWithExtent(mlType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) {\n var coordArr = [];\n var stacked = isDimensionStacked(data, targetDataDim\n /*, otherDataDim*/\n );\n var calcDataDim = stacked ? data.getCalculationInfo('stackResultDimension') : targetDataDim;\n var value = numCalculate(data, calcDataDim, mlType);\n var dataIndex = data.indicesOfNearest(calcDataDim, value)[0];\n coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex);\n coordArr[targetCoordIndex] = data.get(targetDataDim, dataIndex); // Make it simple, do not visit all stacked value to count precision.\n\n var precision = numberUtil.getPrecision(data.get(targetDataDim, dataIndex));\n precision = Math.min(precision, 20);\n\n if (precision >= 0) {\n coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision);\n }\n\n return coordArr;\n}\n\nvar curry = zrUtil.curry; // TODO Specified percent\n\nvar markerTypeCalculator = {\n /**\n * @method\n * @param {module:echarts/data/List} data\n * @param {string} baseAxisDim\n * @param {string} valueAxisDim\n */\n min: curry(markerTypeCalculatorWithExtent, 'min'),\n\n /**\n * @method\n * @param {module:echarts/data/List} data\n * @param {string} baseAxisDim\n * @param {string} valueAxisDim\n */\n max: curry(markerTypeCalculatorWithExtent, 'max'),\n\n /**\n * @method\n * @param {module:echarts/data/List} data\n * @param {string} baseAxisDim\n * @param {string} valueAxisDim\n */\n average: curry(markerTypeCalculatorWithExtent, 'average')\n};\n/**\n * Transform markPoint data item to format used in List by do the following\n * 1. Calculate statistic like `max`, `min`, `average`\n * 2. Convert `item.xAxis`, `item.yAxis` to `item.coord` array\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/coord/*} [coordSys]\n * @param {Object} item\n * @return {Object}\n */\n\nfunction dataTransform(seriesModel, item) {\n var data = seriesModel.getData();\n var coordSys = seriesModel.coordinateSystem; // 1. If not specify the position with pixel directly\n // 2. If `coord` is not a data array. Which uses `xAxis`,\n // `yAxis` to specify the coord on each dimension\n // parseFloat first because item.x and item.y can be percent string like '20%'\n\n if (item && !hasXAndY(item) && !zrUtil.isArray(item.coord) && coordSys) {\n var dims = coordSys.dimensions;\n var axisInfo = getAxisInfo(item, data, coordSys, seriesModel); // Clone the option\n // Transform the properties xAxis, yAxis, radiusAxis, angleAxis, geoCoord to value\n\n item = zrUtil.clone(item);\n\n if (item.type && markerTypeCalculator[item.type] && axisInfo.baseAxis && axisInfo.valueAxis) {\n var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim);\n var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim);\n item.coord = markerTypeCalculator[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex); // Force to use the value of calculated value.\n\n item.value = item.coord[targetCoordIndex];\n } else {\n // FIXME Only has one of xAxis and yAxis.\n var coord = [item.xAxis != null ? item.xAxis : item.radiusAxis, item.yAxis != null ? item.yAxis : item.angleAxis]; // Each coord support max, min, average\n\n for (var i = 0; i < 2; i++) {\n if (markerTypeCalculator[coord[i]]) {\n coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i]);\n }\n }\n\n item.coord = coord;\n }\n }\n\n return item;\n}\n\nfunction getAxisInfo(item, data, coordSys, seriesModel) {\n var ret = {};\n\n if (item.valueIndex != null || item.valueDim != null) {\n ret.valueDataDim = item.valueIndex != null ? data.getDimension(item.valueIndex) : item.valueDim;\n ret.valueAxis = coordSys.getAxis(dataDimToCoordDim(seriesModel, ret.valueDataDim));\n ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis);\n ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\n } else {\n ret.baseAxis = seriesModel.getBaseAxis();\n ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis);\n ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\n ret.valueDataDim = data.mapDimension(ret.valueAxis.dim);\n }\n\n return ret;\n}\n\nfunction dataDimToCoordDim(seriesModel, dataDim) {\n var data = seriesModel.getData();\n var dimensions = data.dimensions;\n dataDim = data.getDimension(dataDim);\n\n for (var i = 0; i < dimensions.length; i++) {\n var dimItem = data.getDimensionInfo(dimensions[i]);\n\n if (dimItem.name === dataDim) {\n return dimItem.coordDim;\n }\n }\n}\n/**\n * Filter data which is out of coordinateSystem range\n * [dataFilter description]\n * @param {module:echarts/coord/*} [coordSys]\n * @param {Object} item\n * @return {boolean}\n */\n\n\nfunction dataFilter(coordSys, item) {\n // Alwalys return true if there is no coordSys\n return coordSys && coordSys.containData && item.coord && !hasXOrY(item) ? coordSys.containData(item.coord) : true;\n}\n\nfunction dimValueGetter(item, dimName, dataIndex, dimIndex) {\n // x, y, radius, angle\n if (dimIndex < 2) {\n return item.coord && item.coord[dimIndex];\n }\n\n return item.value;\n}\n\nfunction numCalculate(data, valueDataDim, type) {\n if (type === 'average') {\n var sum = 0;\n var count = 0;\n data.each(valueDataDim, function (val, idx) {\n if (!isNaN(val)) {\n sum += val;\n count++;\n }\n });\n return sum / count;\n } else if (type === 'median') {\n return data.getMedian(valueDataDim);\n } else {\n // max & min\n return data.getDataExtent(valueDataDim, true)[type === 'max' ? 1 : 0];\n }\n}\n\nexports.dataTransform = dataTransform;\nexports.getAxisInfo = getAxisInfo;\nexports.dataFilter = dataFilter;\nexports.dimValueGetter = dimValueGetter;\nexports.numCalculate = numCalculate;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentView({\n type: 'marker',\n init: function () {\n /**\n * Markline grouped by series\n * @private\n * @type {module:zrender/core/util.HashMap}\n */\n this.markerGroupMap = zrUtil.createHashMap();\n },\n render: function (markerModel, ecModel, api) {\n var markerGroupMap = this.markerGroupMap;\n markerGroupMap.each(function (item) {\n item.__keep = false;\n });\n var markerModelKey = this.type + 'Model';\n ecModel.eachSeries(function (seriesModel) {\n var markerModel = seriesModel[markerModelKey];\n markerModel && this.renderSeries(seriesModel, markerModel, ecModel, api);\n }, this);\n markerGroupMap.each(function (item) {\n !item.__keep && this.group.remove(item.group);\n }, this);\n },\n renderSeries: function () {}\n});\n\nmodule.exports = _default;","var _core = require(\"./core\");\n\nvar createElement = _core.createElement;\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\nvar matrix = require(\"../core/matrix\");\n\nvar textContain = require(\"../contain/text\");\n\nvar textHelper = require(\"../graphic/helper/text\");\n\nvar Text = require(\"../graphic/Text\");\n\n// TODO\n// 1. shadow\n// 2. Image: sx, sy, sw, sh\nvar CMD = PathProxy.CMD;\nvar arrayJoin = Array.prototype.join;\nvar NONE = 'none';\nvar mathRound = Math.round;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\nvar PI2 = Math.PI * 2;\nvar degree = 180 / PI;\nvar EPSILON = 1e-4;\n\nfunction round4(val) {\n return mathRound(val * 1e4) / 1e4;\n}\n\nfunction isAroundZero(val) {\n return val < EPSILON && val > -EPSILON;\n}\n\nfunction pathHasFill(style, isText) {\n var fill = isText ? style.textFill : style.fill;\n return fill != null && fill !== NONE;\n}\n\nfunction pathHasStroke(style, isText) {\n var stroke = isText ? style.textStroke : style.stroke;\n return stroke != null && stroke !== NONE;\n}\n\nfunction setTransform(svgEl, m) {\n if (m) {\n attr(svgEl, 'transform', 'matrix(' + arrayJoin.call(m, ',') + ')');\n }\n}\n\nfunction attr(el, key, val) {\n if (!val || val.type !== 'linear' && val.type !== 'radial') {\n // Don't set attribute for gradient, since it need new dom nodes\n el.setAttribute(key, val);\n }\n}\n\nfunction attrXLink(el, key, val) {\n el.setAttributeNS('http://www.w3.org/1999/xlink', key, val);\n}\n\nfunction bindStyle(svgEl, style, isText, el) {\n if (pathHasFill(style, isText)) {\n var fill = isText ? style.textFill : style.fill;\n fill = fill === 'transparent' ? NONE : fill;\n attr(svgEl, 'fill', fill);\n attr(svgEl, 'fill-opacity', style.fillOpacity != null ? style.fillOpacity * style.opacity : style.opacity);\n } else {\n attr(svgEl, 'fill', NONE);\n }\n\n if (pathHasStroke(style, isText)) {\n var stroke = isText ? style.textStroke : style.stroke;\n stroke = stroke === 'transparent' ? NONE : stroke;\n attr(svgEl, 'stroke', stroke);\n var strokeWidth = isText ? style.textStrokeWidth : style.lineWidth;\n var strokeScale = !isText && style.strokeNoScale ? el.getLineScale() : 1;\n attr(svgEl, 'stroke-width', strokeWidth / strokeScale); // stroke then fill for text; fill then stroke for others\n\n attr(svgEl, 'paint-order', isText ? 'stroke' : 'fill');\n attr(svgEl, 'stroke-opacity', style.strokeOpacity != null ? style.strokeOpacity : style.opacity);\n var lineDash = style.lineDash;\n\n if (lineDash) {\n attr(svgEl, 'stroke-dasharray', style.lineDash.join(','));\n attr(svgEl, 'stroke-dashoffset', mathRound(style.lineDashOffset || 0));\n } else {\n attr(svgEl, 'stroke-dasharray', '');\n } // PENDING\n\n\n style.lineCap && attr(svgEl, 'stroke-linecap', style.lineCap);\n style.lineJoin && attr(svgEl, 'stroke-linejoin', style.lineJoin);\n style.miterLimit && attr(svgEl, 'stroke-miterlimit', style.miterLimit);\n } else {\n attr(svgEl, 'stroke', NONE);\n }\n}\n/***************************************************\n * PATH\n **************************************************/\n\n\nfunction pathDataToString(path) {\n var str = [];\n var data = path.data;\n var dataLength = path.len();\n\n for (var i = 0; i < dataLength;) {\n var cmd = data[i++];\n var cmdStr = '';\n var nData = 0;\n\n switch (cmd) {\n case CMD.M:\n cmdStr = 'M';\n nData = 2;\n break;\n\n case CMD.L:\n cmdStr = 'L';\n nData = 2;\n break;\n\n case CMD.Q:\n cmdStr = 'Q';\n nData = 4;\n break;\n\n case CMD.C:\n cmdStr = 'C';\n nData = 6;\n break;\n\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var theta = data[i++];\n var dTheta = data[i++];\n var psi = data[i++];\n var clockwise = data[i++];\n var dThetaPositive = Math.abs(dTheta);\n var isCircle = isAroundZero(dThetaPositive - PI2) || (clockwise ? dTheta >= PI2 : -dTheta >= PI2); // Mapping to 0~2PI\n\n var unifiedTheta = dTheta > 0 ? dTheta % PI2 : dTheta % PI2 + PI2;\n var large = false;\n\n if (isCircle) {\n large = true;\n } else if (isAroundZero(dThetaPositive)) {\n large = false;\n } else {\n large = unifiedTheta >= PI === !!clockwise;\n }\n\n var x0 = round4(cx + rx * mathCos(theta));\n var y0 = round4(cy + ry * mathSin(theta)); // It will not draw if start point and end point are exactly the same\n // We need to shift the end point with a small value\n // FIXME A better way to draw circle ?\n\n if (isCircle) {\n if (clockwise) {\n dTheta = PI2 - 1e-4;\n } else {\n dTheta = -PI2 + 1e-4;\n }\n\n large = true;\n\n if (i === 9) {\n // Move to (x0, y0) only when CMD.A comes at the\n // first position of a shape.\n // For instance, when drawing a ring, CMD.A comes\n // after CMD.M, so it's unnecessary to move to\n // (x0, y0).\n str.push('M', x0, y0);\n }\n }\n\n var x = round4(cx + rx * mathCos(theta + dTheta));\n var y = round4(cy + ry * mathSin(theta + dTheta)); // FIXME Ellipse\n\n str.push('A', round4(rx), round4(ry), mathRound(psi * degree), +large, +clockwise, x, y);\n break;\n\n case CMD.Z:\n cmdStr = 'Z';\n break;\n\n case CMD.R:\n var x = round4(data[i++]);\n var y = round4(data[i++]);\n var w = round4(data[i++]);\n var h = round4(data[i++]);\n str.push('M', x, y, 'L', x + w, y, 'L', x + w, y + h, 'L', x, y + h, 'L', x, y);\n break;\n }\n\n cmdStr && str.push(cmdStr);\n\n for (var j = 0; j < nData; j++) {\n // PENDING With scale\n str.push(round4(data[i++]));\n }\n }\n\n return str.join(' ');\n}\n\nvar svgPath = {};\n\nsvgPath.brush = function (el) {\n var style = el.style;\n var svgEl = el.__svgEl;\n\n if (!svgEl) {\n svgEl = createElement('path');\n el.__svgEl = svgEl;\n }\n\n if (!el.path) {\n el.createPathProxy();\n }\n\n var path = el.path;\n\n if (el.__dirtyPath) {\n path.beginPath();\n path.subPixelOptimize = false;\n el.buildPath(path, el.shape);\n el.__dirtyPath = false;\n var pathStr = pathDataToString(path);\n\n if (pathStr.indexOf('NaN') < 0) {\n // Ignore illegal path, which may happen such in out-of-range\n // data in Calendar series.\n attr(svgEl, 'd', pathStr);\n }\n }\n\n bindStyle(svgEl, style, false, el);\n setTransform(svgEl, el.transform);\n\n if (style.text != null) {\n svgTextDrawRectText(el, el.getBoundingRect());\n } else {\n removeOldTextNode(el);\n }\n};\n/***************************************************\n * IMAGE\n **************************************************/\n\n\nvar svgImage = {};\n\nsvgImage.brush = function (el) {\n var style = el.style;\n var image = style.image;\n\n if (image instanceof HTMLImageElement) {\n var src = image.src;\n image = src;\n }\n\n if (!image) {\n return;\n }\n\n var x = style.x || 0;\n var y = style.y || 0;\n var dw = style.width;\n var dh = style.height;\n var svgEl = el.__svgEl;\n\n if (!svgEl) {\n svgEl = createElement('image');\n el.__svgEl = svgEl;\n }\n\n if (image !== el.__imageSrc) {\n attrXLink(svgEl, 'href', image); // Caching image src\n\n el.__imageSrc = image;\n }\n\n attr(svgEl, 'width', dw);\n attr(svgEl, 'height', dh);\n attr(svgEl, 'x', x);\n attr(svgEl, 'y', y);\n setTransform(svgEl, el.transform);\n\n if (style.text != null) {\n svgTextDrawRectText(el, el.getBoundingRect());\n } else {\n removeOldTextNode(el);\n }\n};\n/***************************************************\n * TEXT\n **************************************************/\n\n\nvar svgText = {};\n\nvar _tmpTextHostRect = new BoundingRect();\n\nvar _tmpTextBoxPos = {};\nvar _tmpTextTransform = [];\nvar TEXT_ALIGN_TO_ANCHRO = {\n left: 'start',\n right: 'end',\n center: 'middle',\n middle: 'middle'\n};\n/**\n * @param {module:zrender/Element} el\n * @param {Object|boolean} [hostRect] {x, y, width, height}\n * If set false, rect text is not used.\n */\n\nvar svgTextDrawRectText = function (el, hostRect) {\n var style = el.style;\n var elTransform = el.transform;\n var needTransformTextByHostEl = el instanceof Text || style.transformText;\n el.__dirty && textHelper.normalizeTextStyle(style, true);\n var text = style.text; // Convert to string\n\n text != null && (text += '');\n\n if (!textHelper.needDrawText(text, style)) {\n return;\n } // render empty text for svg if no text but need draw text.\n\n\n text == null && (text = ''); // Follow the setting in the canvas renderer, if not transform the\n // text, transform the hostRect, by which the text is located.\n\n if (!needTransformTextByHostEl && elTransform) {\n _tmpTextHostRect.copy(hostRect);\n\n _tmpTextHostRect.applyTransform(elTransform);\n\n hostRect = _tmpTextHostRect;\n }\n\n var textSvgEl = el.__textSvgEl;\n\n if (!textSvgEl) {\n textSvgEl = createElement('text');\n el.__textSvgEl = textSvgEl;\n } // style.font has been normalized by `normalizeTextStyle`.\n\n\n var textSvgElStyle = textSvgEl.style;\n var font = style.font || textContain.DEFAULT_FONT;\n var computedFont = textSvgEl.__computedFont;\n\n if (font !== textSvgEl.__styleFont) {\n textSvgElStyle.font = textSvgEl.__styleFont = font; // The computedFont might not be the orginal font if it is illegal font.\n\n computedFont = textSvgEl.__computedFont = textSvgElStyle.font;\n }\n\n var textPadding = style.textPadding;\n var textLineHeight = style.textLineHeight;\n var contentBlock = el.__textCotentBlock;\n\n if (!contentBlock || el.__dirtyText) {\n contentBlock = el.__textCotentBlock = textContain.parsePlainText(text, computedFont, textPadding, textLineHeight, style.truncate);\n }\n\n var outerHeight = contentBlock.outerHeight;\n var lineHeight = contentBlock.lineHeight;\n textHelper.getBoxPosition(_tmpTextBoxPos, el, style, hostRect);\n var baseX = _tmpTextBoxPos.baseX;\n var baseY = _tmpTextBoxPos.baseY;\n var textAlign = _tmpTextBoxPos.textAlign || 'left';\n var textVerticalAlign = _tmpTextBoxPos.textVerticalAlign;\n setTextTransform(textSvgEl, needTransformTextByHostEl, elTransform, style, hostRect, baseX, baseY);\n var boxY = textContain.adjustTextY(baseY, outerHeight, textVerticalAlign);\n var textX = baseX;\n var textY = boxY; // TODO needDrawBg\n\n if (textPadding) {\n textX = getTextXForPadding(baseX, textAlign, textPadding);\n textY += textPadding[0];\n } // `textBaseline` is set as 'middle'.\n\n\n textY += lineHeight / 2;\n bindStyle(textSvgEl, style, true, el); // FIXME\n // Add a in svg, where nodeName is 'style',\n // CSS classes is defined globally wherever the style tags are declared.\n\n if (nodeName === 'defs') {\n // define flag\n this._isDefine = true;\n } else if (nodeName === 'text') {\n this._isText = true;\n }\n\n var el;\n\n if (this._isDefine) {\n var parser = defineParsers[nodeName];\n\n if (parser) {\n var def = parser.call(this, xmlNode);\n var id = xmlNode.getAttribute('id');\n\n if (id) {\n this._defs[id] = def;\n }\n }\n } else {\n var parser = nodeParsers[nodeName];\n\n if (parser) {\n el = parser.call(this, xmlNode, parentGroup);\n parentGroup.add(el);\n }\n }\n\n var child = xmlNode.firstChild;\n\n while (child) {\n if (child.nodeType === 1) {\n this._parseNode(child, el);\n } // Is text\n\n\n if (child.nodeType === 3 && this._isText) {\n this._parseText(child, el);\n }\n\n child = child.nextSibling;\n } // Quit define\n\n\n if (nodeName === 'defs') {\n this._isDefine = false;\n } else if (nodeName === 'text') {\n this._isText = false;\n }\n};\n\nSVGParser.prototype._parseText = function (xmlNode, parentGroup) {\n if (xmlNode.nodeType === 1) {\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX += parseFloat(dx);\n this._textY += parseFloat(dy);\n }\n\n var text = new Text({\n style: {\n text: xmlNode.textContent,\n transformText: true\n },\n position: [this._textX || 0, this._textY || 0]\n });\n inheritStyle(parentGroup, text);\n parseAttributes(xmlNode, text, this._defs);\n var fontSize = text.style.fontSize;\n\n if (fontSize && fontSize < 9) {\n // PENDING\n text.style.fontSize = 9;\n text.scale = text.scale || [1, 1];\n text.scale[0] *= fontSize / 9;\n text.scale[1] *= fontSize / 9;\n }\n\n var rect = text.getBoundingRect();\n this._textX += rect.width;\n parentGroup.add(text);\n return text;\n};\n\nvar nodeParsers = {\n 'g': function (xmlNode, parentGroup) {\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'rect': function (xmlNode, parentGroup) {\n var rect = new Rect();\n inheritStyle(parentGroup, rect);\n parseAttributes(xmlNode, rect, this._defs);\n rect.setShape({\n x: parseFloat(xmlNode.getAttribute('x') || 0),\n y: parseFloat(xmlNode.getAttribute('y') || 0),\n width: parseFloat(xmlNode.getAttribute('width') || 0),\n height: parseFloat(xmlNode.getAttribute('height') || 0)\n }); // console.log(xmlNode.getAttribute('transform'));\n // console.log(rect.transform);\n\n return rect;\n },\n 'circle': function (xmlNode, parentGroup) {\n var circle = new Circle();\n inheritStyle(parentGroup, circle);\n parseAttributes(xmlNode, circle, this._defs);\n circle.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n r: parseFloat(xmlNode.getAttribute('r') || 0)\n });\n return circle;\n },\n 'line': function (xmlNode, parentGroup) {\n var line = new Line();\n inheritStyle(parentGroup, line);\n parseAttributes(xmlNode, line, this._defs);\n line.setShape({\n x1: parseFloat(xmlNode.getAttribute('x1') || 0),\n y1: parseFloat(xmlNode.getAttribute('y1') || 0),\n x2: parseFloat(xmlNode.getAttribute('x2') || 0),\n y2: parseFloat(xmlNode.getAttribute('y2') || 0)\n });\n return line;\n },\n 'ellipse': function (xmlNode, parentGroup) {\n var ellipse = new Ellipse();\n inheritStyle(parentGroup, ellipse);\n parseAttributes(xmlNode, ellipse, this._defs);\n ellipse.setShape({\n cx: parseFloat(xmlNode.getAttribute('cx') || 0),\n cy: parseFloat(xmlNode.getAttribute('cy') || 0),\n rx: parseFloat(xmlNode.getAttribute('rx') || 0),\n ry: parseFloat(xmlNode.getAttribute('ry') || 0)\n });\n return ellipse;\n },\n 'polygon': function (xmlNode, parentGroup) {\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polygon = new Polygon({\n shape: {\n points: points || []\n }\n });\n inheritStyle(parentGroup, polygon);\n parseAttributes(xmlNode, polygon, this._defs);\n return polygon;\n },\n 'polyline': function (xmlNode, parentGroup) {\n var path = new Path();\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n var points = xmlNode.getAttribute('points');\n\n if (points) {\n points = parsePoints(points);\n }\n\n var polyline = new Polyline({\n shape: {\n points: points || []\n }\n });\n return polyline;\n },\n 'image': function (xmlNode, parentGroup) {\n var img = new ZImage();\n inheritStyle(parentGroup, img);\n parseAttributes(xmlNode, img, this._defs);\n img.setStyle({\n image: xmlNode.getAttribute('xlink:href'),\n x: xmlNode.getAttribute('x'),\n y: xmlNode.getAttribute('y'),\n width: xmlNode.getAttribute('width'),\n height: xmlNode.getAttribute('height')\n });\n return img;\n },\n 'text': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x') || 0;\n var y = xmlNode.getAttribute('y') || 0;\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n this._textX = parseFloat(x) + parseFloat(dx);\n this._textY = parseFloat(y) + parseFloat(dy);\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n return g;\n },\n 'tspan': function (xmlNode, parentGroup) {\n var x = xmlNode.getAttribute('x');\n var y = xmlNode.getAttribute('y');\n\n if (x != null) {\n // new offset x\n this._textX = parseFloat(x);\n }\n\n if (y != null) {\n // new offset y\n this._textY = parseFloat(y);\n }\n\n var dx = xmlNode.getAttribute('dx') || 0;\n var dy = xmlNode.getAttribute('dy') || 0;\n var g = new Group();\n inheritStyle(parentGroup, g);\n parseAttributes(xmlNode, g, this._defs);\n this._textX += dx;\n this._textY += dy;\n return g;\n },\n 'path': function (xmlNode, parentGroup) {\n // TODO svg fill rule\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule\n // path.style.globalCompositeOperation = 'xor';\n var d = xmlNode.getAttribute('d') || ''; // Performance sensitive.\n\n var path = createFromString(d);\n inheritStyle(parentGroup, path);\n parseAttributes(xmlNode, path, this._defs);\n return path;\n }\n};\nvar defineParsers = {\n 'lineargradient': function (xmlNode) {\n var x1 = parseInt(xmlNode.getAttribute('x1') || 0, 10);\n var y1 = parseInt(xmlNode.getAttribute('y1') || 0, 10);\n var x2 = parseInt(xmlNode.getAttribute('x2') || 10, 10);\n var y2 = parseInt(xmlNode.getAttribute('y2') || 0, 10);\n var gradient = new LinearGradient(x1, y1, x2, y2);\n\n _parseGradientColorStops(xmlNode, gradient);\n\n return gradient;\n },\n 'radialgradient': function (xmlNode) {}\n};\n\nfunction _parseGradientColorStops(xmlNode, gradient) {\n var stop = xmlNode.firstChild;\n\n while (stop) {\n if (stop.nodeType === 1) {\n var offset = stop.getAttribute('offset');\n\n if (offset.indexOf('%') > 0) {\n // percentage\n offset = parseInt(offset, 10) / 100;\n } else if (offset) {\n // number from 0 to 1\n offset = parseFloat(offset);\n } else {\n offset = 0;\n }\n\n var stopColor = stop.getAttribute('stop-color') || '#000000';\n gradient.addColorStop(offset, stopColor);\n }\n\n stop = stop.nextSibling;\n }\n}\n\nfunction inheritStyle(parent, child) {\n if (parent && parent.__inheritedStyle) {\n if (!child.__inheritedStyle) {\n child.__inheritedStyle = {};\n }\n\n defaults(child.__inheritedStyle, parent.__inheritedStyle);\n }\n}\n\nfunction parsePoints(pointsString) {\n var list = trim(pointsString).split(DILIMITER_REG);\n var points = [];\n\n for (var i = 0; i < list.length; i += 2) {\n var x = parseFloat(list[i]);\n var y = parseFloat(list[i + 1]);\n points.push([x, y]);\n }\n\n return points;\n}\n\nvar attributesMap = {\n 'fill': 'fill',\n 'stroke': 'stroke',\n 'stroke-width': 'lineWidth',\n 'opacity': 'opacity',\n 'fill-opacity': 'fillOpacity',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-dasharray': 'lineDash',\n 'stroke-dashoffset': 'lineDashOffset',\n 'stroke-linecap': 'lineCap',\n 'stroke-linejoin': 'lineJoin',\n 'stroke-miterlimit': 'miterLimit',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'text-align': 'textAlign',\n 'alignment-baseline': 'textBaseline'\n};\n\nfunction parseAttributes(xmlNode, el, defs, onlyInlineStyle) {\n var zrStyle = el.__inheritedStyle || {};\n var isTextEl = el.type === 'text'; // TODO Shadow\n\n if (xmlNode.nodeType === 1) {\n parseTransformAttribute(xmlNode, el);\n extend(zrStyle, parseStyleAttribute(xmlNode));\n\n if (!onlyInlineStyle) {\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName)) {\n var attrValue = xmlNode.getAttribute(svgAttrName);\n\n if (attrValue != null) {\n zrStyle[attributesMap[svgAttrName]] = attrValue;\n }\n }\n }\n }\n }\n\n var elFillProp = isTextEl ? 'textFill' : 'fill';\n var elStrokeProp = isTextEl ? 'textStroke' : 'stroke';\n el.style = el.style || new Style();\n var elStyle = el.style;\n zrStyle.fill != null && elStyle.set(elFillProp, getPaint(zrStyle.fill, defs));\n zrStyle.stroke != null && elStyle.set(elStrokeProp, getPaint(zrStyle.stroke, defs));\n each(['lineWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'miterLimit', 'fontSize'], function (propName) {\n var elPropName = propName === 'lineWidth' && isTextEl ? 'textStrokeWidth' : propName;\n zrStyle[propName] != null && elStyle.set(elPropName, parseFloat(zrStyle[propName]));\n });\n\n if (!zrStyle.textBaseline || zrStyle.textBaseline === 'auto') {\n zrStyle.textBaseline = 'alphabetic';\n }\n\n if (zrStyle.textBaseline === 'alphabetic') {\n zrStyle.textBaseline = 'bottom';\n }\n\n if (zrStyle.textAlign === 'start') {\n zrStyle.textAlign = 'left';\n }\n\n if (zrStyle.textAlign === 'end') {\n zrStyle.textAlign = 'right';\n }\n\n each(['lineDashOffset', 'lineCap', 'lineJoin', 'fontWeight', 'fontFamily', 'fontStyle', 'textAlign', 'textBaseline'], function (propName) {\n zrStyle[propName] != null && elStyle.set(propName, zrStyle[propName]);\n });\n\n if (zrStyle.lineDash) {\n el.style.lineDash = trim(zrStyle.lineDash).split(DILIMITER_REG);\n }\n\n if (elStyle[elStrokeProp] && elStyle[elStrokeProp] !== 'none') {\n // enable stroke\n el[elStrokeProp] = true;\n }\n\n el.__inheritedStyle = zrStyle;\n}\n\nvar urlRegex = /url\\(\\s*#(.*?)\\)/;\n\nfunction getPaint(str, defs) {\n // if (str === 'none') {\n // return;\n // }\n var urlMatch = defs && str && str.match(urlRegex);\n\n if (urlMatch) {\n var url = trim(urlMatch[1]);\n var def = defs[url];\n return def;\n }\n\n return str;\n}\n\nvar transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\\(([\\-\\s0-9\\.e,]*)\\)/g;\n\nfunction parseTransformAttribute(xmlNode, node) {\n var transform = xmlNode.getAttribute('transform');\n\n if (transform) {\n transform = transform.replace(/,/g, ' ');\n var m = null;\n var transformOps = [];\n transform.replace(transformRegex, function (str, type, value) {\n transformOps.push(type, value);\n });\n\n for (var i = transformOps.length - 1; i > 0; i -= 2) {\n var value = transformOps[i];\n var type = transformOps[i - 1];\n m = m || matrix.create();\n\n switch (type) {\n case 'translate':\n value = trim(value).split(DILIMITER_REG);\n matrix.translate(m, m, [parseFloat(value[0]), parseFloat(value[1] || 0)]);\n break;\n\n case 'scale':\n value = trim(value).split(DILIMITER_REG);\n matrix.scale(m, m, [parseFloat(value[0]), parseFloat(value[1] || value[0])]);\n break;\n\n case 'rotate':\n value = trim(value).split(DILIMITER_REG);\n matrix.rotate(m, m, parseFloat(value[0]));\n break;\n\n case 'skew':\n value = trim(value).split(DILIMITER_REG);\n console.warn('Skew transform is not supported yet');\n break;\n\n case 'matrix':\n var value = trim(value).split(DILIMITER_REG);\n m[0] = parseFloat(value[0]);\n m[1] = parseFloat(value[1]);\n m[2] = parseFloat(value[2]);\n m[3] = parseFloat(value[3]);\n m[4] = parseFloat(value[4]);\n m[5] = parseFloat(value[5]);\n break;\n }\n }\n\n node.setLocalTransform(m);\n }\n} // Value may contain space.\n\n\nvar styleRegex = /([^\\s:;]+)\\s*:\\s*([^:;]+)/g;\n\nfunction parseStyleAttribute(xmlNode) {\n var style = xmlNode.getAttribute('style');\n var result = {};\n\n if (!style) {\n return result;\n }\n\n var styleList = {};\n styleRegex.lastIndex = 0;\n var styleRegResult;\n\n while ((styleRegResult = styleRegex.exec(style)) != null) {\n styleList[styleRegResult[1]] = styleRegResult[2];\n }\n\n for (var svgAttrName in attributesMap) {\n if (attributesMap.hasOwnProperty(svgAttrName) && styleList[svgAttrName] != null) {\n result[attributesMap[svgAttrName]] = styleList[svgAttrName];\n }\n }\n\n return result;\n}\n/**\n * @param {Array.} viewBoxRect\n * @param {number} width\n * @param {number} height\n * @return {Object} {scale, position}\n */\n\n\nfunction makeViewBoxTransform(viewBoxRect, width, height) {\n var scaleX = width / viewBoxRect.width;\n var scaleY = height / viewBoxRect.height;\n var scale = Math.min(scaleX, scaleY); // preserveAspectRatio 'xMidYMid'\n\n var viewBoxScale = [scale, scale];\n var viewBoxPosition = [-(viewBoxRect.x + viewBoxRect.width / 2) * scale + width / 2, -(viewBoxRect.y + viewBoxRect.height / 2) * scale + height / 2];\n return {\n scale: viewBoxScale,\n position: viewBoxPosition\n };\n}\n/**\n * @param {string|XMLElement} xml\n * @param {Object} [opt]\n * @param {number} [opt.width] Default width if svg width not specified or is a percent value.\n * @param {number} [opt.height] Default height if svg height not specified or is a percent value.\n * @param {boolean} [opt.ignoreViewBox]\n * @param {boolean} [opt.ignoreRootClip]\n * @return {Object} result:\n * {\n * root: Group, The root of the the result tree of zrender shapes,\n * width: number, the viewport width of the SVG,\n * height: number, the viewport height of the SVG,\n * viewBoxRect: {x, y, width, height}, the declared viewBox rect of the SVG, if exists,\n * viewBoxTransform: the {scale, position} calculated by viewBox and viewport, is exists.\n * }\n */\n\n\nfunction parseSVG(xml, opt) {\n var parser = new SVGParser();\n return parser.parse(xml, opt);\n}\n\nexports.parseXML = parseXML;\nexports.makeViewBoxTransform = makeViewBoxTransform;\nexports.parseSVG = parseSVG;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrender = require(\"zrender/lib/zrender\");\n\nexports.zrender = zrender;\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nexports.matrix = matrix;\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nexports.vector = vector;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nexports.color = colorTool;\n\nvar graphicUtil = require(\"./util/graphic\");\n\nvar numberUtil = require(\"./util/number\");\n\nexports.number = numberUtil;\n\nvar formatUtil = require(\"./util/format\");\n\nexports.format = formatUtil;\n\nvar _throttle = require(\"./util/throttle\");\n\nvar throttle = _throttle.throttle;\nexports.throttle = _throttle.throttle;\n\nvar ecHelper = require(\"./helper\");\n\nexports.helper = ecHelper;\n\nvar parseGeoJSON = require(\"./coord/geo/parseGeoJson\");\n\nexports.parseGeoJSON = parseGeoJSON;\n\nvar _List = require(\"./data/List\");\n\nexports.List = _List;\n\nvar _Model = require(\"./model/Model\");\n\nexports.Model = _Model;\n\nvar _Axis = require(\"./coord/Axis\");\n\nexports.Axis = _Axis;\n\nvar _env = require(\"zrender/lib/core/env\");\n\nexports.env = _env;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Do not mount those modules on 'src/echarts' for better tree shaking.\n */\nvar parseGeoJson = parseGeoJSON;\nvar ecUtil = {};\nzrUtil.each(['map', 'each', 'filter', 'indexOf', 'inherits', 'reduce', 'filter', 'bind', 'curry', 'isArray', 'isString', 'isObject', 'isFunction', 'extend', 'defaults', 'clone', 'merge'], function (name) {\n ecUtil[name] = zrUtil[name];\n});\nvar graphic = {};\nzrUtil.each(['extendShape', 'extendPath', 'makePath', 'makeImage', 'mergePath', 'resizePath', 'createIcon', 'setHoverStyle', 'setLabelStyle', 'setTextStyle', 'setText', 'getFont', 'updateProps', 'initProps', 'getTransform', 'clipPointsByRect', 'clipRectByRect', 'registerShape', 'getShapeClass', 'Group', 'Image', 'Text', 'Circle', 'Sector', 'Ring', 'Polygon', 'Polyline', 'Rect', 'Line', 'BezierCurve', 'Arc', 'IncrementalDisplayable', 'CompoundPath', 'LinearGradient', 'RadialGradient', 'BoundingRect'], function (name) {\n graphic[name] = graphicUtil[name];\n});\nexports.parseGeoJson = parseGeoJson;\nexports.util = ecUtil;\nexports.graphic = graphic;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @class\n * @param {Object|DataDimensionInfo} [opt] All of the fields will be shallow copied.\n */\nfunction DataDimensionInfo(opt) {\n if (opt != null) {\n zrUtil.extend(this, opt);\n }\n /**\n * Dimension name.\n * Mandatory.\n * @type {string}\n */\n // this.name;\n\n /**\n * The origin name in dimsDef, see source helper.\n * If displayName given, the tooltip will displayed vertically.\n * Optional.\n * @type {string}\n */\n // this.displayName;\n\n /**\n * Which coordSys dimension this dimension mapped to.\n * A `coordDim` can be a \"coordSysDim\" that the coordSys required\n * (for example, an item in `coordSysDims` of `model/referHelper#CoordSysInfo`),\n * or an generated \"extra coord name\" if does not mapped to any \"coordSysDim\"\n * (That is determined by whether `isExtraCoord` is `true`).\n * Mandatory.\n * @type {string}\n */\n // this.coordDim;\n\n /**\n * The index of this dimension in `series.encode[coordDim]`.\n * Mandatory.\n * @type {number}\n */\n // this.coordDimIndex;\n\n /**\n * Dimension type. The enumerable values are the key of\n * `dataCtors` of `data/List`.\n * Optional.\n * @type {string}\n */\n // this.type;\n\n /**\n * This index of this dimension info in `data/List#_dimensionInfos`.\n * Mandatory after added to `data/List`.\n * @type {number}\n */\n // this.index;\n\n /**\n * The format of `otherDims` is:\n * ```js\n * {\n * tooltip: number optional,\n * label: number optional,\n * itemName: number optional,\n * seriesName: number optional,\n * }\n * ```\n *\n * A `series.encode` can specified these fields:\n * ```js\n * encode: {\n * // \"3, 1, 5\" is the index of data dimension.\n * tooltip: [3, 1, 5],\n * label: [0, 3],\n * ...\n * }\n * ```\n * `otherDims` is the parse result of the `series.encode` above, like:\n * ```js\n * // Suppose the index of this data dimension is `3`.\n * this.otherDims = {\n * // `3` is at the index `0` of the `encode.tooltip`\n * tooltip: 0,\n * // `3` is at the index `1` of the `encode.tooltip`\n * label: 1\n * };\n * ```\n *\n * This prop should never be `null`/`undefined` after initialized.\n * @type {Object}\n */\n\n\n this.otherDims = {};\n /**\n * Be `true` if this dimension is not mapped to any \"coordSysDim\" that the\n * \"coordSys\" required.\n * Mandatory.\n * @type {boolean}\n */\n // this.isExtraCoord;\n\n /**\n * @type {module:data/OrdinalMeta}\n */\n // this.ordinalMeta;\n\n /**\n * Whether to create inverted indices.\n * @type {boolean}\n */\n // this.createInvertedIndices;\n}\n\n;\nvar _default = DataDimensionInfo;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\nvar isString = _util.isString;\nvar defaults = _util.defaults;\nvar extend = _util.extend;\nvar isObject = _util.isObject;\nvar clone = _util.clone;\n\nvar _model = require(\"../../util/model\");\n\nvar normalizeToArray = _model.normalizeToArray;\n\nvar _sourceHelper = require(\"./sourceHelper\");\n\nvar guessOrdinal = _sourceHelper.guessOrdinal;\nvar BE_ORDINAL = _sourceHelper.BE_ORDINAL;\n\nvar Source = require(\"../Source\");\n\nvar _dimensionHelper = require(\"./dimensionHelper\");\n\nvar OTHER_DIMENSIONS = _dimensionHelper.OTHER_DIMENSIONS;\n\nvar DataDimensionInfo = require(\"../DataDimensionInfo\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @deprecated\n * Use `echarts/data/helper/createDimensions` instead.\n */\n\n/**\n * @see {module:echarts/test/ut/spec/data/completeDimensions}\n *\n * This method builds the relationship between:\n * + \"what the coord sys or series requires (see `sysDims`)\",\n * + \"what the user defines (in `encode` and `dimensions`, see `opt.dimsDef` and `opt.encodeDef`)\"\n * + \"what the data source provids (see `source`)\".\n *\n * Some guess strategy will be adapted if user does not define something.\n * If no 'value' dimension specified, the first no-named dimension will be\n * named as 'value'.\n *\n * @param {Array.} sysDims Necessary dimensions, like ['x', 'y'], which\n * provides not only dim template, but also default order.\n * properties: 'name', 'type', 'displayName'.\n * `name` of each item provides default coord name.\n * [{dimsDef: [string|Object, ...]}, ...] dimsDef of sysDim item provides default dim name, and\n * provide dims count that the sysDim required.\n * [{ordinalMeta}] can be specified.\n * @param {module:echarts/data/Source|Array|Object} source or data (for compatibal with pervious)\n * @param {Object} [opt]\n * @param {Array.} [opt.dimsDef] option.series.dimensions User defined dimensions\n * For example: ['asdf', {name, type}, ...].\n * @param {Object|HashMap} [opt.encodeDef] option.series.encode {x: 2, y: [3, 1], tooltip: [1, 2], label: 3}\n * @param {Function} [opt.encodeDefaulter] Called if no `opt.encodeDef` exists.\n * If not specified, auto find the next available data dim.\n * param source {module:data/Source}\n * param dimCount {number}\n * return {Object} encode Never be `null/undefined`.\n * @param {string} [opt.generateCoord] Generate coord dim with the given name.\n * If not specified, extra dim names will be:\n * 'value', 'value0', 'value1', ...\n * @param {number} [opt.generateCoordCount] By default, the generated dim name is `generateCoord`.\n * If `generateCoordCount` specified, the generated dim names will be:\n * `generateCoord` + 0, `generateCoord` + 1, ...\n * can be Infinity, indicate that use all of the remain columns.\n * @param {number} [opt.dimCount] If not specified, guess by the first data item.\n * @return {Array.}\n */\nfunction completeDimensions(sysDims, source, opt) {\n if (!Source.isInstance(source)) {\n source = Source.seriesDataToSource(source);\n }\n\n opt = opt || {};\n sysDims = (sysDims || []).slice();\n var dimsDef = (opt.dimsDef || []).slice();\n var dataDimNameMap = createHashMap();\n var coordDimNameMap = createHashMap(); // var valueCandidate;\n\n var result = [];\n var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimCount); // Apply user defined dims (`name` and `type`) and init result.\n\n for (var i = 0; i < dimCount; i++) {\n var dimDefItem = dimsDef[i] = extend({}, isObject(dimsDef[i]) ? dimsDef[i] : {\n name: dimsDef[i]\n });\n var userDimName = dimDefItem.name;\n var resultItem = result[i] = new DataDimensionInfo(); // Name will be applied later for avoiding duplication.\n\n if (userDimName != null && dataDimNameMap.get(userDimName) == null) {\n // Only if `series.dimensions` is defined in option\n // displayName, will be set, and dimension will be diplayed vertically in\n // tooltip by default.\n resultItem.name = resultItem.displayName = userDimName;\n dataDimNameMap.set(userDimName, i);\n }\n\n dimDefItem.type != null && (resultItem.type = dimDefItem.type);\n dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);\n }\n\n var encodeDef = opt.encodeDef;\n\n if (!encodeDef && opt.encodeDefaulter) {\n encodeDef = opt.encodeDefaulter(source, dimCount);\n }\n\n encodeDef = createHashMap(encodeDef); // Set `coordDim` and `coordDimIndex` by `encodeDef` and normalize `encodeDef`.\n\n encodeDef.each(function (dataDims, coordDim) {\n dataDims = normalizeToArray(dataDims).slice(); // Note: It is allowed that `dataDims.length` is `0`, e.g., options is\n // `{encode: {x: -1, y: 1}}`. Should not filter anything in\n // this case.\n\n if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {\n encodeDef.set(coordDim, false);\n return;\n }\n\n var validDataDims = encodeDef.set(coordDim, []);\n each(dataDims, function (resultDimIdx, idx) {\n // The input resultDimIdx can be dim name or index.\n isString(resultDimIdx) && (resultDimIdx = dataDimNameMap.get(resultDimIdx));\n\n if (resultDimIdx != null && resultDimIdx < dimCount) {\n validDataDims[idx] = resultDimIdx;\n applyDim(result[resultDimIdx], coordDim, idx);\n }\n });\n }); // Apply templetes and default order from `sysDims`.\n\n var availDimIdx = 0;\n each(sysDims, function (sysDimItem, sysDimIndex) {\n var coordDim;\n var sysDimItem;\n var sysDimItemDimsDef;\n var sysDimItemOtherDims;\n\n if (isString(sysDimItem)) {\n coordDim = sysDimItem;\n sysDimItem = {};\n } else {\n coordDim = sysDimItem.name;\n var ordinalMeta = sysDimItem.ordinalMeta;\n sysDimItem.ordinalMeta = null;\n sysDimItem = clone(sysDimItem);\n sysDimItem.ordinalMeta = ordinalMeta; // `coordDimIndex` should not be set directly.\n\n sysDimItemDimsDef = sysDimItem.dimsDef;\n sysDimItemOtherDims = sysDimItem.otherDims;\n sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null;\n }\n\n var dataDims = encodeDef.get(coordDim); // negative resultDimIdx means no need to mapping.\n\n if (dataDims === false) {\n return;\n }\n\n var dataDims = normalizeToArray(dataDims); // dimensions provides default dim sequences.\n\n if (!dataDims.length) {\n for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) {\n while (availDimIdx < result.length && result[availDimIdx].coordDim != null) {\n availDimIdx++;\n }\n\n availDimIdx < result.length && dataDims.push(availDimIdx++);\n }\n } // Apply templates.\n\n\n each(dataDims, function (resultDimIdx, coordDimIndex) {\n var resultItem = result[resultDimIdx];\n applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex);\n\n if (resultItem.name == null && sysDimItemDimsDef) {\n var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];\n !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = {\n name: sysDimItemDimsDefItem\n });\n resultItem.name = resultItem.displayName = sysDimItemDimsDefItem.name;\n resultItem.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;\n } // FIXME refactor, currently only used in case: {otherDims: {tooltip: false}}\n\n\n sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims);\n });\n });\n\n function applyDim(resultItem, coordDim, coordDimIndex) {\n if (OTHER_DIMENSIONS.get(coordDim) != null) {\n resultItem.otherDims[coordDim] = coordDimIndex;\n } else {\n resultItem.coordDim = coordDim;\n resultItem.coordDimIndex = coordDimIndex;\n coordDimNameMap.set(coordDim, true);\n }\n } // Make sure the first extra dim is 'value'.\n\n\n var generateCoord = opt.generateCoord;\n var generateCoordCount = opt.generateCoordCount;\n var fromZero = generateCoordCount != null;\n generateCoordCount = generateCoord ? generateCoordCount || 1 : 0;\n var extra = generateCoord || 'value'; // Set dim `name` and other `coordDim` and other props.\n\n for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {\n var resultItem = result[resultDimIdx] = result[resultDimIdx] || new DataDimensionInfo();\n var coordDim = resultItem.coordDim;\n\n if (coordDim == null) {\n resultItem.coordDim = genName(extra, coordDimNameMap, fromZero);\n resultItem.coordDimIndex = 0;\n\n if (!generateCoord || generateCoordCount <= 0) {\n resultItem.isExtraCoord = true;\n }\n\n generateCoordCount--;\n }\n\n resultItem.name == null && (resultItem.name = genName(resultItem.coordDim, dataDimNameMap));\n\n if (resultItem.type == null && (guessOrdinal(source, resultDimIdx, resultItem.name) === BE_ORDINAL.Must // Consider the case:\n // {\n // dataset: {source: [\n // ['2001', 123],\n // ['2002', 456],\n // ...\n // ['The others', 987],\n // ]},\n // series: {type: 'pie'}\n // }\n // The first colum should better be treated as a \"ordinal\" although it\n // might not able to be detected as an \"ordinal\" by `guessOrdinal`.\n || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) {\n resultItem.type = 'ordinal';\n }\n }\n\n return result;\n} // ??? TODO\n// Originally detect dimCount by data[0]. Should we\n// optimize it to only by sysDims and dimensions and encode.\n// So only necessary dims will be initialized.\n// But\n// (1) custom series should be considered. where other dims\n// may be visited.\n// (2) sometimes user need to calcualte bubble size or use visualMap\n// on other dimensions besides coordSys needed.\n// So, dims that is not used by system, should be shared in storage?\n\n\nfunction getDimCount(source, sysDims, dimsDef, optDimCount) {\n // Note that the result dimCount should not small than columns count\n // of data, otherwise `dataDimNameMap` checking will be incorrect.\n var dimCount = Math.max(source.dimensionsDetectCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);\n each(sysDims, function (sysDimItem) {\n var sysDimItemDimsDef = sysDimItem.dimsDef;\n sysDimItemDimsDef && (dimCount = Math.max(dimCount, sysDimItemDimsDef.length));\n });\n return dimCount;\n}\n\nfunction genName(name, map, fromZero) {\n if (fromZero || map.get(name) != null) {\n var i = 0;\n\n while (map.get(name + i) != null) {\n i++;\n }\n\n name += i;\n }\n\n map.set(name, true);\n return name;\n}\n\nvar _default = completeDimensions;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isObject = _util.isObject;\nvar map = _util.map;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @constructor\n * @param {Object} [opt]\n * @param {Object} [opt.categories=[]]\n * @param {Object} [opt.needCollect=false]\n * @param {Object} [opt.deduplication=false]\n */\nfunction OrdinalMeta(opt) {\n /**\n * @readOnly\n * @type {Array.}\n */\n this.categories = opt.categories || [];\n /**\n * @private\n * @type {boolean}\n */\n\n this._needCollect = opt.needCollect;\n /**\n * @private\n * @type {boolean}\n */\n\n this._deduplication = opt.deduplication;\n /**\n * @private\n * @type {boolean}\n */\n\n this._map;\n}\n/**\n * @param {module:echarts/model/Model} axisModel\n * @return {module:echarts/data/OrdinalMeta}\n */\n\n\nOrdinalMeta.createByAxisModel = function (axisModel) {\n var option = axisModel.option;\n var data = option.data;\n var categories = data && map(data, getName);\n return new OrdinalMeta({\n categories: categories,\n needCollect: !categories,\n // deduplication is default in axis.\n deduplication: option.dedplication !== false\n });\n};\n\nvar proto = OrdinalMeta.prototype;\n/**\n * @param {string} category\n * @return {number} ordinal\n */\n\nproto.getOrdinal = function (category) {\n return getOrCreateMap(this).get(category);\n};\n/**\n * @param {*} category\n * @return {number} The ordinal. If not found, return NaN.\n */\n\n\nproto.parseAndCollect = function (category) {\n var index;\n var needCollect = this._needCollect; // The value of category dim can be the index of the given category set.\n // This feature is only supported when !needCollect, because we should\n // consider a common case: a value is 2017, which is a number but is\n // expected to be tread as a category. This case usually happen in dataset,\n // where it happent to be no need of the index feature.\n\n if (typeof category !== 'string' && !needCollect) {\n return category;\n } // Optimize for the scenario:\n // category is ['2012-01-01', '2012-01-02', ...], where the input\n // data has been ensured not duplicate and is large data.\n // Notice, if a dataset dimension provide categroies, usually echarts\n // should remove duplication except user tell echarts dont do that\n // (set axis.deduplication = false), because echarts do not know whether\n // the values in the category dimension has duplication (consider the\n // parallel-aqi example)\n\n\n if (needCollect && !this._deduplication) {\n index = this.categories.length;\n this.categories[index] = category;\n return index;\n }\n\n var map = getOrCreateMap(this);\n index = map.get(category);\n\n if (index == null) {\n if (needCollect) {\n index = this.categories.length;\n this.categories[index] = category;\n map.set(category, index);\n } else {\n index = NaN;\n }\n }\n\n return index;\n}; // Consider big data, do not create map until needed.\n\n\nfunction getOrCreateMap(ordinalMeta) {\n return ordinalMeta._map || (ordinalMeta._map = createHashMap(ordinalMeta.categories));\n}\n\nfunction getName(obj) {\n if (isObject(obj) && obj.value != null) {\n return obj.value;\n } else {\n return obj + '';\n }\n}\n\nvar _default = OrdinalMeta;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar numberUtil = require(\"../util/number\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * For testable.\n */\nvar roundNumber = numberUtil.round;\n/**\n * @param {Array.} extent Both extent[0] and extent[1] should be valid number.\n * Should be extent[0] < extent[1].\n * @param {number} splitNumber splitNumber should be >= 1.\n * @param {number} [minInterval]\n * @param {number} [maxInterval]\n * @return {Object} {interval, intervalPrecision, niceTickExtent}\n */\n\nfunction intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) {\n var result = {};\n var span = extent[1] - extent[0];\n var interval = result.interval = numberUtil.nice(span / splitNumber, true);\n\n if (minInterval != null && interval < minInterval) {\n interval = result.interval = minInterval;\n }\n\n if (maxInterval != null && interval > maxInterval) {\n interval = result.interval = maxInterval;\n } // Tow more digital for tick.\n\n\n var precision = result.intervalPrecision = getIntervalPrecision(interval); // Niced extent inside original extent\n\n var niceTickExtent = result.niceTickExtent = [roundNumber(Math.ceil(extent[0] / interval) * interval, precision), roundNumber(Math.floor(extent[1] / interval) * interval, precision)];\n fixExtent(niceTickExtent, extent);\n return result;\n}\n/**\n * @param {number} interval\n * @return {number} interval precision\n */\n\n\nfunction getIntervalPrecision(interval) {\n // Tow more digital for tick.\n return numberUtil.getPrecisionSafe(interval) + 2;\n}\n\nfunction clamp(niceTickExtent, idx, extent) {\n niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\n} // In some cases (e.g., splitNumber is 1), niceTickExtent may be out of extent.\n\n\nfunction fixExtent(niceTickExtent, extent) {\n !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]);\n !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]);\n clamp(niceTickExtent, 0, extent);\n clamp(niceTickExtent, 1, extent);\n\n if (niceTickExtent[0] > niceTickExtent[1]) {\n niceTickExtent[0] = niceTickExtent[1];\n }\n}\n\nexports.intervalScaleNiceTicks = intervalScaleNiceTicks;\nexports.getIntervalPrecision = getIntervalPrecision;\nexports.fixExtent = fixExtent;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Scale = require(\"./Scale\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar IntervalScale = require(\"./Interval\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Log scale\n * @module echarts/scale/Log\n */\n// Use some method of IntervalScale\nvar scaleProto = Scale.prototype;\nvar intervalScaleProto = IntervalScale.prototype;\nvar getPrecisionSafe = numberUtil.getPrecisionSafe;\nvar roundingErrorFix = numberUtil.round;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar mathPow = Math.pow;\nvar mathLog = Math.log;\nvar LogScale = Scale.extend({\n type: 'log',\n base: 10,\n $constructor: function () {\n Scale.apply(this, arguments);\n this._originalScale = new IntervalScale();\n },\n\n /**\n * @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.\n * @return {Array.}\n */\n getTicks: function (expandToNicedExtent) {\n var originalScale = this._originalScale;\n var extent = this._extent;\n var originalExtent = originalScale.getExtent();\n return zrUtil.map(intervalScaleProto.getTicks.call(this, expandToNicedExtent), function (val) {\n var powVal = numberUtil.round(mathPow(this.base, val)); // Fix #4158\n\n powVal = val === extent[0] && originalScale.__fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal;\n powVal = val === extent[1] && originalScale.__fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal;\n return powVal;\n }, this);\n },\n\n /**\n * @param {number} splitNumber\n * @return {Array.>}\n */\n getMinorTicks: intervalScaleProto.getMinorTicks,\n\n /**\n * @param {number} val\n * @return {string}\n */\n getLabel: intervalScaleProto.getLabel,\n\n /**\n * @param {number} val\n * @return {number}\n */\n scale: function (val) {\n val = scaleProto.scale.call(this, val);\n return mathPow(this.base, val);\n },\n\n /**\n * @param {number} start\n * @param {number} end\n */\n setExtent: function (start, end) {\n var base = this.base;\n start = mathLog(start) / mathLog(base);\n end = mathLog(end) / mathLog(base);\n intervalScaleProto.setExtent.call(this, start, end);\n },\n\n /**\n * @return {number} end\n */\n getExtent: function () {\n var base = this.base;\n var extent = scaleProto.getExtent.call(this);\n extent[0] = mathPow(base, extent[0]);\n extent[1] = mathPow(base, extent[1]); // Fix #4158\n\n var originalScale = this._originalScale;\n var originalExtent = originalScale.getExtent();\n originalScale.__fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\n originalScale.__fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\n return extent;\n },\n\n /**\n * @param {Array.} extent\n */\n unionExtent: function (extent) {\n this._originalScale.unionExtent(extent);\n\n var base = this.base;\n extent[0] = mathLog(extent[0]) / mathLog(base);\n extent[1] = mathLog(extent[1]) / mathLog(base);\n scaleProto.unionExtent.call(this, extent);\n },\n\n /**\n * @override\n */\n unionExtentFromData: function (data, dim) {\n // TODO\n // filter value that <= 0\n this.unionExtent(data.getApproximateExtent(dim));\n },\n\n /**\n * Update interval and extent of intervals for nice ticks\n * @param {number} [approxTickNum = 10] Given approx tick number\n */\n niceTicks: function (approxTickNum) {\n approxTickNum = approxTickNum || 10;\n var extent = this._extent;\n var span = extent[1] - extent[0];\n\n if (span === Infinity || span <= 0) {\n return;\n }\n\n var interval = numberUtil.quantity(span);\n var err = approxTickNum / span * interval; // Filter ticks to get closer to the desired count.\n\n if (err <= 0.5) {\n interval *= 10;\n } // Interval should be integer\n\n\n while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {\n interval *= 10;\n }\n\n var niceExtent = [numberUtil.round(mathCeil(extent[0] / interval) * interval), numberUtil.round(mathFloor(extent[1] / interval) * interval)];\n this._interval = interval;\n this._niceExtent = niceExtent;\n },\n\n /**\n * Nice extent.\n * @override\n */\n niceExtent: function (opt) {\n intervalScaleProto.niceExtent.call(this, opt);\n var originalScale = this._originalScale;\n originalScale.__fixMin = opt.fixMin;\n originalScale.__fixMax = opt.fixMax;\n }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n LogScale.prototype[methodName] = function (val) {\n val = mathLog(val) / mathLog(this.base);\n return scaleProto[methodName].call(this, val);\n };\n});\n\nLogScale.create = function () {\n return new LogScale();\n};\n\nfunction fixRoundingError(val, originalVal) {\n return roundingErrorFix(val, getPrecisionSafe(originalVal));\n}\n\nvar _default = LogScale;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Region = require(\"./Region\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Parse and decode geo json\n * @module echarts/coord/geo/parseGeoJson\n */\nfunction decode(json) {\n if (!json.UTF8Encoding) {\n return json;\n }\n\n var encodeScale = json.UTF8Scale;\n\n if (encodeScale == null) {\n encodeScale = 1024;\n }\n\n var features = json.features;\n\n for (var f = 0; f < features.length; f++) {\n var feature = features[f];\n var geometry = feature.geometry;\n var coordinates = geometry.coordinates;\n var encodeOffsets = geometry.encodeOffsets;\n\n for (var c = 0; c < coordinates.length; c++) {\n var coordinate = coordinates[c];\n\n if (geometry.type === 'Polygon') {\n coordinates[c] = decodePolygon(coordinate, encodeOffsets[c], encodeScale);\n } else if (geometry.type === 'MultiPolygon') {\n for (var c2 = 0; c2 < coordinate.length; c2++) {\n var polygon = coordinate[c2];\n coordinate[c2] = decodePolygon(polygon, encodeOffsets[c][c2], encodeScale);\n }\n }\n }\n } // Has been decoded\n\n\n json.UTF8Encoding = false;\n return json;\n}\n\nfunction decodePolygon(coordinate, encodeOffsets, encodeScale) {\n var result = [];\n var prevX = encodeOffsets[0];\n var prevY = encodeOffsets[1];\n\n for (var i = 0; i < coordinate.length; i += 2) {\n var x = coordinate.charCodeAt(i) - 64;\n var y = coordinate.charCodeAt(i + 1) - 64; // ZigZag decoding\n\n x = x >> 1 ^ -(x & 1);\n y = y >> 1 ^ -(y & 1); // Delta deocding\n\n x += prevX;\n y += prevY;\n prevX = x;\n prevY = y; // Dequantize\n\n result.push([x / encodeScale, y / encodeScale]);\n }\n\n return result;\n}\n/**\n * @alias module:echarts/coord/geo/parseGeoJson\n * @param {Object} geoJson\n * @return {module:zrender/container/Group}\n */\n\n\nfunction _default(geoJson) {\n decode(geoJson);\n return zrUtil.map(zrUtil.filter(geoJson.features, function (featureObj) {\n // Output of mapshaper may have geometry null\n return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0;\n }), function (featureObj) {\n var properties = featureObj.properties;\n var geo = featureObj.geometry;\n var coordinates = geo.coordinates;\n var geometries = [];\n\n if (geo.type === 'Polygon') {\n geometries.push({\n type: 'polygon',\n // According to the GeoJSON specification.\n // First must be exterior, and the rest are all interior(holes).\n exterior: coordinates[0],\n interiors: coordinates.slice(1)\n });\n }\n\n if (geo.type === 'MultiPolygon') {\n zrUtil.each(coordinates, function (item) {\n if (item[0]) {\n geometries.push({\n type: 'polygon',\n exterior: item[0],\n interiors: item.slice(1)\n });\n }\n });\n }\n\n var region = new Region(properties.name, geometries, properties.cp);\n region.properties = properties;\n return region;\n });\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar bbox = require(\"zrender/lib/core/bbox\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar polygonContain = require(\"zrender/lib/contain/polygon\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/coord/geo/Region\n */\n\n/**\n * @param {string|Region} name\n * @param {Array} geometries\n * @param {Array.} cp\n */\nfunction Region(name, geometries, cp) {\n /**\n * @type {string}\n * @readOnly\n */\n this.name = name;\n /**\n * @type {Array.}\n * @readOnly\n */\n\n this.geometries = geometries;\n\n if (!cp) {\n var rect = this.getBoundingRect();\n cp = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n } else {\n cp = [cp[0], cp[1]];\n }\n /**\n * @type {Array.}\n */\n\n\n this.center = cp;\n}\n\nRegion.prototype = {\n constructor: Region,\n properties: null,\n\n /**\n * @return {module:zrender/core/BoundingRect}\n */\n getBoundingRect: function () {\n var rect = this._rect;\n\n if (rect) {\n return rect;\n }\n\n var MAX_NUMBER = Number.MAX_VALUE;\n var min = [MAX_NUMBER, MAX_NUMBER];\n var max = [-MAX_NUMBER, -MAX_NUMBER];\n var min2 = [];\n var max2 = [];\n var geometries = this.geometries;\n\n for (var i = 0; i < geometries.length; i++) {\n // Only support polygon\n if (geometries[i].type !== 'polygon') {\n continue;\n } // Doesn't consider hole\n\n\n var exterior = geometries[i].exterior;\n bbox.fromPoints(exterior, min2, max2);\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n } // No data\n\n\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n\n return this._rect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n },\n\n /**\n * @param {} coord\n * @return {boolean}\n */\n contain: function (coord) {\n var rect = this.getBoundingRect();\n var geometries = this.geometries;\n\n if (!rect.contain(coord[0], coord[1])) {\n return false;\n }\n\n loopGeo: for (var i = 0, len = geometries.length; i < len; i++) {\n // Only support polygon.\n if (geometries[i].type !== 'polygon') {\n continue;\n }\n\n var exterior = geometries[i].exterior;\n var interiors = geometries[i].interiors;\n\n if (polygonContain.contain(exterior, coord[0], coord[1])) {\n // Not in the region if point is in the hole.\n for (var k = 0; k < (interiors ? interiors.length : 0); k++) {\n if (polygonContain.contain(interiors[k])) {\n continue loopGeo;\n }\n }\n\n return true;\n }\n }\n\n return false;\n },\n transformTo: function (x, y, width, height) {\n var rect = this.getBoundingRect();\n var aspect = rect.width / rect.height;\n\n if (!width) {\n width = aspect * height;\n } else if (!height) {\n height = width / aspect;\n }\n\n var target = new BoundingRect(x, y, width, height);\n var transform = rect.calculateTransform(target);\n var geometries = this.geometries;\n\n for (var i = 0; i < geometries.length; i++) {\n // Only support polygon.\n if (geometries[i].type !== 'polygon') {\n continue;\n }\n\n var exterior = geometries[i].exterior;\n var interiors = geometries[i].interiors;\n\n for (var p = 0; p < exterior.length; p++) {\n vec2.applyTransform(exterior[p], exterior[p], transform);\n }\n\n for (var h = 0; h < (interiors ? interiors.length : 0); h++) {\n for (var p = 0; p < interiors[h].length; p++) {\n vec2.applyTransform(interiors[h][p], interiors[h][p], transform);\n }\n }\n }\n\n rect = this._rect;\n rect.copy(target); // Update center\n\n this.center = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n },\n cloneShallow: function (name) {\n name == null && (name = this.name);\n var newRegion = new Region(name, this.geometries, this.center);\n newRegion._rect = this._rect;\n newRegion.transformTo = null; // Simply avoid to be called.\n\n return newRegion;\n }\n};\nvar _default = Region;\nmodule.exports = _default;","var windingLine = require(\"./windingLine\");\n\nvar EPSILON = 1e-8;\n\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n}\n\nfunction contain(points, x, y) {\n var w = 0;\n var p = points[0];\n\n if (!p) {\n return false;\n }\n\n for (var i = 1; i < points.length; i++) {\n var p2 = points[i];\n w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\n p = p2;\n } // Close polygon\n\n\n var p0 = points[0];\n\n if (!isAroundEqual(p[0], p0[0]) || !isAroundEqual(p[1], p0[1])) {\n w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\n }\n\n return w !== 0;\n}\n\nexports.contain = contain;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar map = _util.map;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} coordSys\n * @param {module:echarts/data/List} data\n * @param {string} valueOrigin lineSeries.option.areaStyle.origin\n */\nfunction prepareDataCoordInfo(coordSys, data, valueOrigin) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var valueStart = getValueStart(valueAxis, valueOrigin);\n var baseAxisDim = baseAxis.dim;\n var valueAxisDim = valueAxis.dim;\n var valueDim = data.mapDimension(valueAxisDim);\n var baseDim = data.mapDimension(baseAxisDim);\n var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\n var dims = map(coordSys.dimensions, function (coordDim) {\n return data.mapDimension(coordDim);\n });\n var stacked;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n if (stacked |= isDimensionStacked(data, dims[0]\n /*, dims[1]*/\n )) {\n // jshint ignore:line\n dims[0] = stackResultDim;\n }\n\n if (stacked |= isDimensionStacked(data, dims[1]\n /*, dims[0]*/\n )) {\n // jshint ignore:line\n dims[1] = stackResultDim;\n }\n\n return {\n dataDimsForPoint: dims,\n valueStart: valueStart,\n valueAxisDim: valueAxisDim,\n baseAxisDim: baseAxisDim,\n stacked: !!stacked,\n valueDim: valueDim,\n baseDim: baseDim,\n baseDataOffset: baseDataOffset,\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\n };\n}\n\nfunction getValueStart(valueAxis, valueOrigin) {\n var valueStart = 0;\n var extent = valueAxis.scale.getExtent();\n\n if (valueOrigin === 'start') {\n valueStart = extent[0];\n } else if (valueOrigin === 'end') {\n valueStart = extent[1];\n } // auto\n else {\n // Both positive\n if (extent[0] > 0) {\n valueStart = extent[0];\n } // Both negative\n else if (extent[1] < 0) {\n valueStart = extent[1];\n } // If is one positive, and one negative, onZero shall be true\n\n }\n\n return valueStart;\n}\n\nfunction getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\n var value = NaN;\n\n if (dataCoordInfo.stacked) {\n value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\n }\n\n if (isNaN(value)) {\n value = dataCoordInfo.valueStart;\n }\n\n var baseDataOffset = dataCoordInfo.baseDataOffset;\n var stackedData = [];\n stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\n stackedData[1 - baseDataOffset] = value;\n return coordSys.dataToPoint(stackedData);\n}\n\nexports.prepareDataCoordInfo = prepareDataCoordInfo;\nexports.getStackedOnPoint = getStackedOnPoint;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar fixClipWithShadow = require(\"zrender/lib/graphic/helper/fixClipWithShadow\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Poly path support NaN point\nvar vec2Min = vec2.min;\nvar vec2Max = vec2.max;\nvar scaleAndAdd = vec2.scaleAndAdd;\nvar v2Copy = vec2.copy; // Temporary variable\n\nvar v = [];\nvar cp0 = [];\nvar cp1 = [];\n\nfunction isPointNull(p) {\n return isNaN(p[0]) || isNaN(p[1]);\n}\n\nfunction drawSegment(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n // if (smoothMonotone == null) {\n // if (isMono(points, 'x')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'x', connectNulls);\n // }\n // else if (isMono(points, 'y')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'y', connectNulls);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n // }\n // else if (smoothMonotone !== 'none' && isMono(points, smoothMonotone)) {\n // return drawMono.apply(this, arguments);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n if (smoothMonotone === 'none' || !smoothMonotone) {\n return drawNonMono.apply(this, arguments);\n } else {\n return drawMono.apply(this, arguments);\n }\n}\n/**\n * Check if points is in monotone.\n *\n * @param {number[][]} points Array of points which is in [x, y] form\n * @param {string} smoothMonotone 'x', 'y', or 'none', stating for which\n * dimension that is checking.\n * If is 'none', `drawNonMono` should be\n * called.\n * If is undefined, either being monotone\n * in 'x' or 'y' will call `drawMono`.\n */\n// function isMono(points, smoothMonotone) {\n// if (points.length <= 1) {\n// return true;\n// }\n// var dim = smoothMonotone === 'x' ? 0 : 1;\n// var last = points[0][dim];\n// var lastDiff = 0;\n// for (var i = 1; i < points.length; ++i) {\n// var diff = points[i][dim] - last;\n// if (!isNaN(diff) && !isNaN(lastDiff)\n// && diff !== 0 && lastDiff !== 0\n// && ((diff >= 0) !== (lastDiff >= 0))\n// ) {\n// return false;\n// }\n// if (!isNaN(diff) && diff !== 0) {\n// lastDiff = diff;\n// last = points[i][dim];\n// }\n// }\n// return true;\n// }\n\n/**\n * Draw smoothed line in monotone, in which only vertical or horizontal bezier\n * control points will be used. This should be used when points are monotone\n * either in x or y dimension.\n */\n\n\nfunction drawMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n } else {\n if (smooth > 0) {\n var prevP = points[prevIdx];\n var dim = smoothMonotone === 'y' ? 1 : 0; // Length of control point to p, either in x or y, but not both\n\n var ctrlLen = (p[dim] - prevP[dim]) * smooth;\n v2Copy(cp0, prevP);\n cp0[dim] = prevP[dim] + ctrlLen;\n v2Copy(cp1, p);\n cp1[dim] = p[dim] - ctrlLen;\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n/**\n * Draw smoothed line in non-monotone, in may cause undesired curve in extreme\n * situations. This should be used when points are non-monotone neither in x or\n * y dimension.\n */\n\n\nfunction drawNonMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n v2Copy(cp0, p);\n } else {\n if (smooth > 0) {\n var nextIdx = idx + dir;\n var nextP = points[nextIdx];\n\n if (connectNulls) {\n // Find next point not null\n while (nextP && isPointNull(points[nextIdx])) {\n nextIdx += dir;\n nextP = points[nextIdx];\n }\n }\n\n var ratioNextSeg = 0.5;\n var prevP = points[prevIdx];\n var nextP = points[nextIdx]; // Last point\n\n if (!nextP || isPointNull(nextP)) {\n v2Copy(cp1, p);\n } else {\n // If next data is null in not connect case\n if (isPointNull(nextP) && !connectNulls) {\n nextP = p;\n }\n\n vec2.sub(v, nextP, prevP);\n var lenPrevSeg;\n var lenNextSeg;\n\n if (smoothMonotone === 'x' || smoothMonotone === 'y') {\n var dim = smoothMonotone === 'x' ? 0 : 1;\n lenPrevSeg = Math.abs(p[dim] - prevP[dim]);\n lenNextSeg = Math.abs(p[dim] - nextP[dim]);\n } else {\n lenPrevSeg = vec2.dist(p, prevP);\n lenNextSeg = vec2.dist(p, nextP);\n } // Use ratio of seg length\n\n\n ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\n scaleAndAdd(cp1, p, v, -smooth * (1 - ratioNextSeg));\n } // Smooth constraint\n\n\n vec2Min(cp0, cp0, smoothMax);\n vec2Max(cp0, cp0, smoothMin);\n vec2Min(cp1, cp1, smoothMax);\n vec2Max(cp1, cp1, smoothMin);\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]); // cp0 of next segment\n\n scaleAndAdd(cp0, p, v, smooth * ratioNextSeg);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n\nfunction getBoundingBox(points, smoothConstraint) {\n var ptMin = [Infinity, Infinity];\n var ptMax = [-Infinity, -Infinity];\n\n if (smoothConstraint) {\n for (var i = 0; i < points.length; i++) {\n var pt = points[i];\n\n if (pt[0] < ptMin[0]) {\n ptMin[0] = pt[0];\n }\n\n if (pt[1] < ptMin[1]) {\n ptMin[1] = pt[1];\n }\n\n if (pt[0] > ptMax[0]) {\n ptMax[0] = pt[0];\n }\n\n if (pt[1] > ptMax[1]) {\n ptMax[1] = pt[1];\n }\n }\n }\n\n return {\n min: smoothConstraint ? ptMin : ptMax,\n max: smoothConstraint ? ptMax : ptMin\n };\n}\n\nvar Polyline = Path.extend({\n type: 'ec-polyline',\n shape: {\n points: [],\n smooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n style: {\n fill: null,\n stroke: '#000'\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var i = 0;\n var len = points.length;\n var result = getBoundingBox(points, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n i += drawSegment(ctx, points, i, len, len, 1, result.min, result.max, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\n }\n }\n});\nvar Polygon = Path.extend({\n type: 'ec-polygon',\n shape: {\n points: [],\n // Offset between stacked base points and points\n stackedOnPoints: [],\n smooth: 0,\n stackedOnSmooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var stackedOnPoints = shape.stackedOnPoints;\n var i = 0;\n var len = points.length;\n var smoothMonotone = shape.smoothMonotone;\n var bbox = getBoundingBox(points, shape.smoothConstraint);\n var stackedOnBBox = getBoundingBox(stackedOnPoints, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n var k = drawSegment(ctx, points, i, len, len, 1, bbox.min, bbox.max, shape.smooth, smoothMonotone, shape.connectNulls);\n drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, stackedOnBBox.min, stackedOnBBox.max, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\n i += k + 1;\n ctx.closePath();\n }\n }\n});\nexports.Polyline = Polyline;\nexports.Polygon = Polygon;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar ComponentModel = require(\"../../model/Component\");\n\nvar axisModelCreator = require(\"../axisModelCreator\");\n\nvar axisModelCommonMixin = require(\"../axisModelCommonMixin\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar AxisModel = ComponentModel.extend({\n type: 'cartesian2dAxis',\n\n /**\n * @type {module:echarts/coord/cartesian/Axis2D}\n */\n axis: null,\n\n /**\n * @override\n */\n init: function () {\n AxisModel.superApply(this, 'init', arguments);\n this.resetRange();\n },\n\n /**\n * @override\n */\n mergeOption: function () {\n AxisModel.superApply(this, 'mergeOption', arguments);\n this.resetRange();\n },\n\n /**\n * @override\n */\n restoreData: function () {\n AxisModel.superApply(this, 'restoreData', arguments);\n this.resetRange();\n },\n\n /**\n * @override\n * @return {module:echarts/model/Component}\n */\n getCoordSysModel: function () {\n return this.ecModel.queryComponents({\n mainType: 'grid',\n index: this.option.gridIndex,\n id: this.option.gridId\n })[0];\n }\n});\n\nfunction getAxisType(axisDim, option) {\n // Default axis with data is category axis\n return option.type || (option.data ? 'category' : 'value');\n}\n\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\nvar extraOption = {\n // gridIndex: 0,\n // gridId: '',\n // Offset is for multiple axis on the same position\n offset: 0\n};\naxisModelCreator('x', AxisModel, getAxisType, extraOption);\naxisModelCreator('y', AxisModel, getAxisType, extraOption);\nvar _default = AxisModel;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar defaultOption = {\n show: true,\n zlevel: 0,\n z: 0,\n // Inverse the axis.\n inverse: false,\n // Axis name displayed.\n name: '',\n // 'start' | 'middle' | 'end'\n nameLocation: 'end',\n // By degree. By defualt auto rotate by nameLocation.\n nameRotate: null,\n nameTruncate: {\n maxWidth: null,\n ellipsis: '...',\n placeholder: '.'\n },\n // Use global text style by default.\n nameTextStyle: {},\n // The gap between axisName and axisLine.\n nameGap: 15,\n // Default `false` to support tooltip.\n silent: false,\n // Default `false` to avoid legacy user event listener fail.\n triggerEvent: false,\n tooltip: {\n show: false\n },\n axisPointer: {},\n axisLine: {\n show: true,\n onZero: true,\n onZeroAxisIndex: null,\n lineStyle: {\n color: '#333',\n width: 1,\n type: 'solid'\n },\n // The arrow at both ends the the axis.\n symbol: ['none', 'none'],\n symbolSize: [10, 15]\n },\n axisTick: {\n show: true,\n // Whether axisTick is inside the grid or outside the grid.\n inside: false,\n // The length of axisTick.\n length: 5,\n lineStyle: {\n width: 1\n }\n },\n axisLabel: {\n show: true,\n // Whether axisLabel is inside the grid or outside the grid.\n inside: false,\n rotate: 0,\n // true | false | null/undefined (auto)\n showMinLabel: null,\n // true | false | null/undefined (auto)\n showMaxLabel: null,\n margin: 8,\n // formatter: null,\n fontSize: 12\n },\n splitLine: {\n show: true,\n lineStyle: {\n color: ['#ccc'],\n width: 1,\n type: 'solid'\n }\n },\n splitArea: {\n show: false,\n areaStyle: {\n color: ['rgba(250,250,250,0.3)', 'rgba(200,200,200,0.3)']\n }\n }\n};\nvar axisDefault = {};\naxisDefault.categoryAxis = zrUtil.merge({\n // The gap at both ends of the axis. For categoryAxis, boolean.\n boundaryGap: true,\n // Set false to faster category collection.\n // Only usefull in the case like: category is\n // ['2012-01-01', '2012-01-02', ...], where the input\n // data has been ensured not duplicate and is large data.\n // null means \"auto\":\n // if axis.data provided, do not deduplication,\n // else do deduplication.\n deduplication: null,\n // splitArea: {\n // show: false\n // },\n splitLine: {\n show: false\n },\n axisTick: {\n // If tick is align with label when boundaryGap is true\n alignWithLabel: false,\n interval: 'auto'\n },\n axisLabel: {\n interval: 'auto'\n }\n}, defaultOption);\naxisDefault.valueAxis = zrUtil.merge({\n // The gap at both ends of the axis. For value axis, [GAP, GAP], where\n // `GAP` can be an absolute pixel number (like `35`), or percent (like `'30%'`)\n boundaryGap: [0, 0],\n // TODO\n // min/max: [30, datamin, 60] or [20, datamin] or [datamin, 60]\n // Min value of the axis. can be:\n // + a number\n // + 'dataMin': use the min value in data.\n // + null/undefined: auto decide min value (consider pretty look and boundaryGap).\n // min: null,\n // Max value of the axis. can be:\n // + a number\n // + 'dataMax': use the max value in data.\n // + null/undefined: auto decide max value (consider pretty look and boundaryGap).\n // max: null,\n // Readonly prop, specifies start value of the range when using data zoom.\n // rangeStart: null\n // Readonly prop, specifies end value of the range when using data zoom.\n // rangeEnd: null\n // Optional value can be:\n // + `false`: always include value 0.\n // + `true`: the extent do not consider value 0.\n // scale: false,\n // AxisTick and axisLabel and splitLine are caculated based on splitNumber.\n splitNumber: 5,\n // Interval specifies the span of the ticks is mandatorily.\n // interval: null\n // Specify min interval when auto calculate tick interval.\n // minInterval: null\n // Specify max interval when auto calculate tick interval.\n // maxInterval: null\n minorTick: {\n // Minor tick, not available for cateogry axis.\n show: false,\n // Split number of minor ticks. The value should be in range of (0, 100)\n splitNumber: 5,\n // Lenght of minor tick\n length: 3,\n // Same inside with axisTick\n // Line style\n lineStyle: {// Default to be same with axisTick\n }\n },\n minorSplitLine: {\n show: false,\n lineStyle: {\n color: '#eee',\n width: 1\n }\n }\n}, defaultOption);\naxisDefault.timeAxis = zrUtil.defaults({\n scale: true,\n min: 'dataMin',\n max: 'dataMax'\n}, axisDefault.valueAxis);\naxisDefault.logAxis = zrUtil.defaults({\n scale: true,\n logBase: 10\n}, axisDefault.valueAxis);\nvar _default = axisDefault;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Can only be called after coordinate system creation stage.\n * (Can be called before coordinate system update stage).\n *\n * @param {Object} opt {labelInside}\n * @return {Object} {\n * position, rotation, labelDirection, labelOffset,\n * tickDirection, labelRotate, z2\n * }\n */\nfunction layout(gridModel, axisModel, opt) {\n opt = opt || {};\n var grid = gridModel.coordinateSystem;\n var axis = axisModel.axis;\n var layout = {};\n var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];\n var rawAxisPosition = axis.position;\n var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition;\n var axisDim = axis.dim;\n var rect = grid.getRect();\n var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n var idx = {\n left: 0,\n right: 1,\n top: 0,\n bottom: 1,\n onZero: 2\n };\n var axisOffset = axisModel.get('offset') || 0;\n var posBound = axisDim === 'x' ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];\n\n if (otherAxisOnZeroOf) {\n var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));\n posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);\n } // Axis position\n\n\n layout.position = [axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0], axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]]; // Axis rotation\n\n layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1); // Tick and label direction, x y is axisDim\n\n var dirMap = {\n top: -1,\n bottom: 1,\n left: -1,\n right: 1\n };\n layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];\n layout.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;\n\n if (axisModel.get('axisTick.inside')) {\n layout.tickDirection = -layout.tickDirection;\n }\n\n if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {\n layout.labelDirection = -layout.labelDirection;\n } // Special label rotation\n\n\n var labelRotate = axisModel.get('axisLabel.rotate');\n layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate; // Over splitLine and splitArea\n\n layout.z2 = 1;\n return layout;\n}\n\nexports.layout = layout;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.__base_bar__',\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n getMarkerPosition: function (value) {\n var coordSys = this.coordinateSystem;\n\n if (coordSys) {\n // PENDING if clamp ?\n var pt = coordSys.dataToPoint(coordSys.clampData(value));\n var data = this.getData();\n var offset = data.getLayout('offset');\n var size = data.getLayout('size');\n var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;\n pt[offsetIndex] += offset + size / 2;\n return pt;\n }\n\n return [NaN, NaN];\n },\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n // stack: null\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // 最小高度改为0\n barMinHeight: 0,\n // 最小角度为0,仅对极坐标系下的柱状图有效\n barMinAngle: 0,\n // cursor: null,\n large: false,\n largeThreshold: 400,\n progressive: 3e3,\n progressiveChunkMode: 'mod',\n // barMaxWidth: null,\n // In cartesian, the default value is 1. Otherwise null.\n // barMinWidth: null,\n // 默认自适应\n // barWidth: null,\n // 柱间距离,默认为柱形宽度的30%,可设固定值\n // barGap: '30%',\n // 类目间柱形距离,默认为类目间距的20%,可设固定值\n // barCategoryGap: '20%',\n // label: {\n // show: false\n // },\n itemStyle: {},\n emphasis: {}\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _labelHelper = require(\"../helper/labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction setLabel(normalStyle, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside) {\n var labelModel = itemModel.getModel('label');\n var hoverLabelModel = itemModel.getModel('emphasis.label');\n graphic.setLabelStyle(normalStyle, hoverStyle, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: dataIndex,\n defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\n isRectText: true,\n autoColor: color\n });\n fixPosition(normalStyle);\n fixPosition(hoverStyle);\n}\n\nfunction fixPosition(style, labelPositionOutside) {\n if (style.textPosition === 'outside') {\n style.textPosition = labelPositionOutside;\n }\n}\n\nexports.setLabel = setLabel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(seriesType, actionInfos) {\n zrUtil.each(actionInfos, function (actionInfo) {\n actionInfo.update = 'updateView';\n /**\n * @payload\n * @property {string} seriesName\n * @property {string} name\n */\n\n echarts.registerAction(actionInfo, function (payload, ecModel) {\n var selected = {};\n ecModel.eachComponent({\n mainType: 'series',\n subType: seriesType,\n query: payload\n }, function (seriesModel) {\n if (seriesModel[actionInfo.method]) {\n seriesModel[actionInfo.method](payload.name, payload.dataIndex);\n }\n\n var data = seriesModel.getData(); // Create selected map\n\n data.each(function (idx) {\n var name = data.getName(idx);\n selected[name] = seriesModel.isSelected(name) || false;\n });\n });\n return {\n name: payload.name,\n selected: selected,\n seriesId: payload.seriesId\n };\n });\n });\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar RoamController = require(\"./RoamController\");\n\nvar roamHelper = require(\"../../component/helper/roamHelper\");\n\nvar _cursorHelper = require(\"../../component/helper/cursorHelper\");\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar geoSourceManager = require(\"../../coord/geo/geoSourceManager\");\n\nvar _component = require(\"../../util/component\");\n\nvar getUID = _component.getUID;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction getFixedItemStyle(model) {\n var itemStyle = model.getItemStyle();\n var areaColor = model.get('areaColor'); // If user want the color not to be changed when hover,\n // they should both set areaColor and color to be null.\n\n if (areaColor != null) {\n itemStyle.fill = areaColor;\n }\n\n return itemStyle;\n}\n\nfunction updateMapSelectHandler(mapDraw, mapOrGeoModel, regionsGroup, api, fromView) {\n regionsGroup.off('click');\n regionsGroup.off('mousedown');\n\n if (mapOrGeoModel.get('selectedMode')) {\n regionsGroup.on('mousedown', function () {\n mapDraw._mouseDownFlag = true;\n });\n regionsGroup.on('click', function (e) {\n if (!mapDraw._mouseDownFlag) {\n return;\n }\n\n mapDraw._mouseDownFlag = false;\n var el = e.target;\n\n while (!el.__regions) {\n el = el.parent;\n }\n\n if (!el) {\n return;\n }\n\n var action = {\n type: (mapOrGeoModel.mainType === 'geo' ? 'geo' : 'map') + 'ToggleSelect',\n batch: zrUtil.map(el.__regions, function (region) {\n return {\n name: region.name,\n from: fromView.uid\n };\n })\n };\n action[mapOrGeoModel.mainType + 'Id'] = mapOrGeoModel.id;\n api.dispatchAction(action);\n updateMapSelected(mapOrGeoModel, regionsGroup);\n });\n }\n}\n\nfunction updateMapSelected(mapOrGeoModel, regionsGroup) {\n // FIXME\n regionsGroup.eachChild(function (otherRegionEl) {\n zrUtil.each(otherRegionEl.__regions, function (region) {\n otherRegionEl.trigger(mapOrGeoModel.isSelected(region.name) ? 'emphasis' : 'normal');\n });\n });\n}\n/**\n * @alias module:echarts/component/helper/MapDraw\n * @param {module:echarts/ExtensionAPI} api\n * @param {boolean} updateGroup\n */\n\n\nfunction MapDraw(api, updateGroup) {\n var group = new graphic.Group();\n /**\n * @type {string}\n * @private\n */\n\n this.uid = getUID('ec_map_draw');\n /**\n * @type {module:echarts/component/helper/RoamController}\n * @private\n */\n\n this._controller = new RoamController(api.getZr());\n /**\n * @type {Object} {target, zoom, zoomLimit}\n * @private\n */\n\n this._controllerHost = {\n target: updateGroup ? group : null\n };\n /**\n * @type {module:zrender/container/Group}\n * @readOnly\n */\n\n this.group = group;\n /**\n * @type {boolean}\n * @private\n */\n\n this._updateGroup = updateGroup;\n /**\n * This flag is used to make sure that only one among\n * `pan`, `zoom`, `click` can occurs, otherwise 'selected'\n * action may be triggered when `pan`, which is unexpected.\n * @type {booelan}\n */\n\n this._mouseDownFlag;\n /**\n * @type {string}\n */\n\n this._mapName;\n /**\n * @type {boolean}\n */\n\n this._initialized;\n /**\n * @type {module:zrender/container/Group}\n */\n\n group.add(this._regionsGroup = new graphic.Group());\n /**\n * @type {module:zrender/container/Group}\n */\n\n group.add(this._backgroundGroup = new graphic.Group());\n}\n\nMapDraw.prototype = {\n constructor: MapDraw,\n draw: function (mapOrGeoModel, ecModel, api, fromView, payload) {\n var isGeo = mapOrGeoModel.mainType === 'geo'; // Map series has data. GEO model that controlled by map series\n // will be assigned with map data. Other GEO model has no data.\n\n var data = mapOrGeoModel.getData && mapOrGeoModel.getData();\n isGeo && ecModel.eachComponent({\n mainType: 'series',\n subType: 'map'\n }, function (mapSeries) {\n if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) {\n data = mapSeries.getData();\n }\n });\n var geo = mapOrGeoModel.coordinateSystem;\n\n this._updateBackground(geo);\n\n var regionsGroup = this._regionsGroup;\n var group = this.group;\n\n if (geo._roamTransformable.transform) {\n group.transform = geo._roamTransformable.transform.slice();\n group.decomposeTransform();\n }\n\n var scale = geo._rawTransformable.scale;\n var position = geo._rawTransformable.position;\n regionsGroup.removeAll();\n var itemStyleAccessPath = ['itemStyle'];\n var hoverItemStyleAccessPath = ['emphasis', 'itemStyle'];\n var labelAccessPath = ['label'];\n var hoverLabelAccessPath = ['emphasis', 'label'];\n var nameMap = zrUtil.createHashMap();\n zrUtil.each(geo.regions, function (region) {\n // Consider in GeoJson properties.name may be duplicated, for example,\n // there is multiple region named \"United Kindom\" or \"France\" (so many\n // colonies). And it is not appropriate to merge them in geo, which\n // will make them share the same label and bring trouble in label\n // location calculation.\n var regionGroup = nameMap.get(region.name) || nameMap.set(region.name, new graphic.Group());\n var compoundPath = new graphic.CompoundPath({\n segmentIgnoreThreshold: 1,\n shape: {\n paths: []\n }\n });\n regionGroup.add(compoundPath);\n var regionModel = mapOrGeoModel.getRegionModel(region.name) || mapOrGeoModel;\n var itemStyleModel = regionModel.getModel(itemStyleAccessPath);\n var hoverItemStyleModel = regionModel.getModel(hoverItemStyleAccessPath);\n var itemStyle = getFixedItemStyle(itemStyleModel);\n var hoverItemStyle = getFixedItemStyle(hoverItemStyleModel);\n var labelModel = regionModel.getModel(labelAccessPath);\n var hoverLabelModel = regionModel.getModel(hoverLabelAccessPath);\n var dataIdx; // Use the itemStyle in data if has data\n\n if (data) {\n dataIdx = data.indexOfName(region.name); // Only visual color of each item will be used. It can be encoded by dataRange\n // But visual color of series is used in symbol drawing\n //\n // Visual color for each series is for the symbol draw\n\n var visualColor = data.getItemVisual(dataIdx, 'color', true);\n\n if (visualColor) {\n itemStyle.fill = visualColor;\n }\n }\n\n var transformPoint = function (point) {\n return [point[0] * scale[0] + position[0], point[1] * scale[1] + position[1]];\n };\n\n zrUtil.each(region.geometries, function (geometry) {\n if (geometry.type !== 'polygon') {\n return;\n }\n\n var points = [];\n\n for (var i = 0; i < geometry.exterior.length; ++i) {\n points.push(transformPoint(geometry.exterior[i]));\n }\n\n compoundPath.shape.paths.push(new graphic.Polygon({\n segmentIgnoreThreshold: 1,\n shape: {\n points: points\n }\n }));\n\n for (var i = 0; i < (geometry.interiors ? geometry.interiors.length : 0); ++i) {\n var interior = geometry.interiors[i];\n var points = [];\n\n for (var j = 0; j < interior.length; ++j) {\n points.push(transformPoint(interior[j]));\n }\n\n compoundPath.shape.paths.push(new graphic.Polygon({\n segmentIgnoreThreshold: 1,\n shape: {\n points: points\n }\n }));\n }\n });\n compoundPath.setStyle(itemStyle);\n compoundPath.style.strokeNoScale = true;\n compoundPath.culling = true; // Label\n\n var showLabel = labelModel.get('show');\n var hoverShowLabel = hoverLabelModel.get('show');\n var isDataNaN = data && isNaN(data.get(data.mapDimension('value'), dataIdx));\n var itemLayout = data && data.getItemLayout(dataIdx); // In the following cases label will be drawn\n // 1. In map series and data value is NaN\n // 2. In geo component\n // 4. Region has no series legendSymbol, which will be add a showLabel flag in mapSymbolLayout\n\n if (isGeo || isDataNaN && (showLabel || hoverShowLabel) || itemLayout && itemLayout.showLabel) {\n var query = !isGeo ? dataIdx : region.name;\n var labelFetcher; // Consider dataIdx not found.\n\n if (!data || dataIdx >= 0) {\n labelFetcher = mapOrGeoModel;\n }\n\n var textEl = new graphic.Text({\n position: transformPoint(region.center.slice()),\n // FIXME\n // label rotation is not support yet in geo or regions of series-map\n // that has no data. The rotation will be effected by this `scale`.\n // So needed to change to RectText?\n scale: [1 / group.scale[0], 1 / group.scale[1]],\n z2: 10,\n silent: true\n });\n graphic.setLabelStyle(textEl.style, textEl.hoverStyle = {}, labelModel, hoverLabelModel, {\n labelFetcher: labelFetcher,\n labelDataIndex: query,\n defaultText: region.name,\n useInsideStyle: false\n }, {\n textAlign: 'center',\n textVerticalAlign: 'middle'\n });\n regionGroup.add(textEl);\n } // setItemGraphicEl, setHoverStyle after all polygons and labels\n // are added to the rigionGroup\n\n\n if (data) {\n data.setItemGraphicEl(dataIdx, regionGroup);\n } else {\n var regionModel = mapOrGeoModel.getRegionModel(region.name); // Package custom mouse event for geo component\n\n compoundPath.eventData = {\n componentType: 'geo',\n componentIndex: mapOrGeoModel.componentIndex,\n geoIndex: mapOrGeoModel.componentIndex,\n name: region.name,\n region: regionModel && regionModel.option || {}\n };\n }\n\n var groupRegions = regionGroup.__regions || (regionGroup.__regions = []);\n groupRegions.push(region);\n regionGroup.highDownSilentOnTouch = !!mapOrGeoModel.get('selectedMode');\n graphic.setHoverStyle(regionGroup, hoverItemStyle);\n regionsGroup.add(regionGroup);\n });\n\n this._updateController(mapOrGeoModel, ecModel, api);\n\n updateMapSelectHandler(this, mapOrGeoModel, regionsGroup, api, fromView);\n updateMapSelected(mapOrGeoModel, regionsGroup);\n },\n remove: function () {\n this._regionsGroup.removeAll();\n\n this._backgroundGroup.removeAll();\n\n this._controller.dispose();\n\n this._mapName && geoSourceManager.removeGraphic(this._mapName, this.uid);\n this._mapName = null;\n this._controllerHost = {};\n },\n _updateBackground: function (geo) {\n var mapName = geo.map;\n\n if (this._mapName !== mapName) {\n zrUtil.each(geoSourceManager.makeGraphic(mapName, this.uid), function (root) {\n this._backgroundGroup.add(root);\n }, this);\n }\n\n this._mapName = mapName;\n },\n _updateController: function (mapOrGeoModel, ecModel, api) {\n var geo = mapOrGeoModel.coordinateSystem;\n var controller = this._controller;\n var controllerHost = this._controllerHost;\n controllerHost.zoomLimit = mapOrGeoModel.get('scaleLimit');\n controllerHost.zoom = geo.getZoom(); // roamType is will be set default true if it is null\n\n controller.enable(mapOrGeoModel.get('roam') || false);\n var mainType = mapOrGeoModel.mainType;\n\n function makeActionBase() {\n var action = {\n type: 'geoRoam',\n componentType: mainType\n };\n action[mainType + 'Id'] = mapOrGeoModel.id;\n return action;\n }\n\n controller.off('pan').on('pan', function (e) {\n this._mouseDownFlag = false;\n roamHelper.updateViewOnPan(controllerHost, e.dx, e.dy);\n api.dispatchAction(zrUtil.extend(makeActionBase(), {\n dx: e.dx,\n dy: e.dy\n }));\n }, this);\n controller.off('zoom').on('zoom', function (e) {\n this._mouseDownFlag = false;\n roamHelper.updateViewOnZoom(controllerHost, e.scale, e.originX, e.originY);\n api.dispatchAction(zrUtil.extend(makeActionBase(), {\n zoom: e.scale,\n originX: e.originX,\n originY: e.originY\n }));\n\n if (this._updateGroup) {\n var scale = this.group.scale;\n\n this._regionsGroup.traverse(function (el) {\n if (el.type === 'text') {\n el.attr('scale', [1 / scale[0], 1 / scale[1]]);\n }\n });\n }\n }, this);\n controller.setPointerChecker(function (e, x, y) {\n return geo.getViewRectAfterRoam().contain(x, y) && !onIrrelevantElement(e, api, mapOrGeoModel);\n });\n }\n};\nvar _default = MapDraw;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar ATTR = '\\0_ec_interaction_mutex';\n\nfunction take(zr, resourceKey, userKey) {\n var store = getStore(zr);\n store[resourceKey] = userKey;\n}\n\nfunction release(zr, resourceKey, userKey) {\n var store = getStore(zr);\n var uKey = store[resourceKey];\n\n if (uKey === userKey) {\n store[resourceKey] = null;\n }\n}\n\nfunction isTaken(zr, resourceKey) {\n return !!getStore(zr)[resourceKey];\n}\n\nfunction getStore(zr) {\n return zr[ATTR] || (zr[ATTR] = {});\n}\n/**\n * payload: {\n * type: 'takeGlobalCursor',\n * key: 'dataZoomSelect', or 'brush', or ...,\n * If no userKey, release global cursor.\n * }\n */\n\n\necharts.registerAction({\n type: 'takeGlobalCursor',\n event: 'globalCursorTaken',\n update: 'update'\n}, function () {});\nexports.take = take;\nexports.release = release;\nexports.isTaken = isTaken;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _roamHelper = require(\"./roamHelper\");\n\nvar updateCenterAndZoom = _roamHelper.updateCenterAndZoom;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @payload\n * @property {string} [componentType=series]\n * @property {number} [dx]\n * @property {number} [dy]\n * @property {number} [zoom]\n * @property {number} [originX]\n * @property {number} [originY]\n */\necharts.registerAction({\n type: 'geoRoam',\n event: 'geoRoam',\n update: 'updateTransform'\n}, function (payload, ecModel) {\n var componentType = payload.componentType || 'series';\n ecModel.eachComponent({\n mainType: componentType,\n query: payload\n }, function (componentModel) {\n var geo = componentModel.coordinateSystem;\n\n if (geo.type !== 'geo') {\n return;\n }\n\n var res = updateCenterAndZoom(geo, payload, componentModel.get('scaleLimit'));\n componentModel.setCenter && componentModel.setCenter(res.center);\n componentModel.setZoom && componentModel.setZoom(res.zoom); // All map series with same `map` use the same geo coordinate system\n // So the center and zoom must be in sync. Include the series not selected by legend\n\n if (componentType === 'series') {\n zrUtil.each(componentModel.seriesGroup, function (seriesModel) {\n seriesModel.setCenter(res.center);\n seriesModel.setZoom(res.zoom);\n });\n }\n });\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Link lists and struct (graph or tree)\n */\nvar each = zrUtil.each;\nvar DATAS = '\\0__link_datas';\nvar MAIN_DATA = '\\0__link_mainData'; // Caution:\n// In most case, either list or its shallow clones (see list.cloneShallow)\n// is active in echarts process. So considering heap memory consumption,\n// we do not clone tree or graph, but share them among list and its shallow clones.\n// But in some rare case, we have to keep old list (like do animation in chart). So\n// please take care that both the old list and the new list share the same tree/graph.\n\n/**\n * @param {Object} opt\n * @param {module:echarts/data/List} opt.mainData\n * @param {Object} [opt.struct] For example, instance of Graph or Tree.\n * @param {string} [opt.structAttr] designation: list[structAttr] = struct;\n * @param {Object} [opt.datas] {dataType: data},\n * like: {node: nodeList, edge: edgeList}.\n * Should contain mainData.\n * @param {Object} [opt.datasAttr] {dataType: attr},\n * designation: struct[datasAttr[dataType]] = list;\n */\n\nfunction linkList(opt) {\n var mainData = opt.mainData;\n var datas = opt.datas;\n\n if (!datas) {\n datas = {\n main: mainData\n };\n opt.datasAttr = {\n main: 'data'\n };\n }\n\n opt.datas = opt.mainData = null;\n linkAll(mainData, datas, opt); // Porxy data original methods.\n\n each(datas, function (data) {\n each(mainData.TRANSFERABLE_METHODS, function (methodName) {\n data.wrapMethod(methodName, zrUtil.curry(transferInjection, opt));\n });\n }); // Beyond transfer, additional features should be added to `cloneShallow`.\n\n mainData.wrapMethod('cloneShallow', zrUtil.curry(cloneShallowInjection, opt)); // Only mainData trigger change, because struct.update may trigger\n // another changable methods, which may bring about dead lock.\n\n each(mainData.CHANGABLE_METHODS, function (methodName) {\n mainData.wrapMethod(methodName, zrUtil.curry(changeInjection, opt));\n }); // Make sure datas contains mainData.\n\n zrUtil.assert(datas[mainData.dataType] === mainData);\n}\n\nfunction transferInjection(opt, res) {\n if (isMainData(this)) {\n // Transfer datas to new main data.\n var datas = zrUtil.extend({}, this[DATAS]);\n datas[this.dataType] = res;\n linkAll(res, datas, opt);\n } else {\n // Modify the reference in main data to point newData.\n linkSingle(res, this.dataType, this[MAIN_DATA], opt);\n }\n\n return res;\n}\n\nfunction changeInjection(opt, res) {\n opt.struct && opt.struct.update(this);\n return res;\n}\n\nfunction cloneShallowInjection(opt, res) {\n // cloneShallow, which brings about some fragilities, may be inappropriate\n // to be exposed as an API. So for implementation simplicity we can make\n // the restriction that cloneShallow of not-mainData should not be invoked\n // outside, but only be invoked here.\n each(res[DATAS], function (data, dataType) {\n data !== res && linkSingle(data.cloneShallow(), dataType, res, opt);\n });\n return res;\n}\n/**\n * Supplement method to List.\n *\n * @public\n * @param {string} [dataType] If not specified, return mainData.\n * @return {module:echarts/data/List}\n */\n\n\nfunction getLinkedData(dataType) {\n var mainData = this[MAIN_DATA];\n return dataType == null || mainData == null ? mainData : mainData[DATAS][dataType];\n}\n\nfunction isMainData(data) {\n return data[MAIN_DATA] === data;\n}\n\nfunction linkAll(mainData, datas, opt) {\n mainData[DATAS] = {};\n each(datas, function (data, dataType) {\n linkSingle(data, dataType, mainData, opt);\n });\n}\n\nfunction linkSingle(data, dataType, mainData, opt) {\n mainData[DATAS][dataType] = data;\n data[MAIN_DATA] = mainData;\n data.dataType = dataType;\n\n if (opt.struct) {\n data[opt.structAttr] = opt.struct;\n opt.struct[opt.datasAttr[dataType]] = data;\n } // Supplement method.\n\n\n data.getLinkedData = getLinkedData;\n}\n\nvar _default = linkList;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar layout = require(\"../../util/layout\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* A third-party license is embeded for some of the code in this file:\n* The tree layoutHelper implementation was originally copied from\n* \"d3.js\"(https://github.com/d3/d3-hierarchy) with\n* some modifications made for this project.\n* (see more details in the comment of the specific method below.)\n* The use of the source code of this file is also subject to the terms\n* and consitions of the licence of \"d3.js\" (BSD-3Clause, see\n* ).\n*/\n\n/**\n * @file The layout algorithm of node-link tree diagrams. Here we using Reingold-Tilford algorithm to drawing\n * the tree.\n */\n\n/**\n * Initialize all computational message for following algorithm.\n *\n * @param {module:echarts/data/Tree~TreeNode} root The virtual root of the tree.\n */\nfunction init(root) {\n root.hierNode = {\n defaultAncestor: null,\n ancestor: root,\n prelim: 0,\n modifier: 0,\n change: 0,\n shift: 0,\n i: 0,\n thread: null\n };\n var nodes = [root];\n var node;\n var children;\n\n while (node = nodes.pop()) {\n // jshint ignore:line\n children = node.children;\n\n if (node.isExpand && children.length) {\n var n = children.length;\n\n for (var i = n - 1; i >= 0; i--) {\n var child = children[i];\n child.hierNode = {\n defaultAncestor: null,\n ancestor: child,\n prelim: 0,\n modifier: 0,\n change: 0,\n shift: 0,\n i: i,\n thread: null\n };\n nodes.push(child);\n }\n }\n }\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * Computes a preliminary x coordinate for node. Before that, this function is\n * applied recursively to the children of node, as well as the function\n * apportion(). After spacing out the children by calling executeShifts(), the\n * node is placed to the midpoint of its outermost children.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n * @param {Function} separation\n */\n\n\nfunction firstWalk(node, separation) {\n var children = node.isExpand ? node.children : [];\n var siblings = node.parentNode.children;\n var subtreeW = node.hierNode.i ? siblings[node.hierNode.i - 1] : null;\n\n if (children.length) {\n executeShifts(node);\n var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2;\n\n if (subtreeW) {\n node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\n node.hierNode.modifier = node.hierNode.prelim - midPoint;\n } else {\n node.hierNode.prelim = midPoint;\n }\n } else if (subtreeW) {\n node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\n }\n\n node.parentNode.hierNode.defaultAncestor = apportion(node, subtreeW, node.parentNode.hierNode.defaultAncestor || siblings[0], separation);\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * Computes all real x-coordinates by summing up the modifiers recursively.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n */\n\n\nfunction secondWalk(node) {\n var nodeX = node.hierNode.prelim + node.parentNode.hierNode.modifier;\n node.setLayout({\n x: nodeX\n }, true);\n node.hierNode.modifier += node.parentNode.hierNode.modifier;\n}\n\nfunction separation(cb) {\n return arguments.length ? cb : defaultSeparation;\n}\n/**\n * Transform the common coordinate to radial coordinate.\n *\n * @param {number} x\n * @param {number} y\n * @return {Object}\n */\n\n\nfunction radialCoordinate(x, y) {\n var radialCoor = {};\n x -= Math.PI / 2;\n radialCoor.x = y * Math.cos(x);\n radialCoor.y = y * Math.sin(x);\n return radialCoor;\n}\n/**\n * Get the layout position of the whole view.\n *\n * @param {module:echarts/model/Series} seriesModel the model object of sankey series\n * @param {module:echarts/ExtensionAPI} api provide the API list that the developer can call\n * @return {module:zrender/core/BoundingRect} size of rect to draw the sankey view\n */\n\n\nfunction getViewRect(seriesModel, api) {\n return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n}\n/**\n * All other shifts, applied to the smaller subtrees between w- and w+, are\n * performed by this function.\n *\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n */\n\n\nfunction executeShifts(node) {\n var children = node.children;\n var n = children.length;\n var shift = 0;\n var change = 0;\n\n while (--n >= 0) {\n var child = children[n];\n child.hierNode.prelim += shift;\n child.hierNode.modifier += shift;\n change += child.hierNode.change;\n shift += child.hierNode.shift + change;\n }\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * The core of the algorithm. Here, a new subtree is combined with the\n * previous subtrees. Threads are used to traverse the inside and outside\n * contours of the left and right subtree up to the highest common level.\n * Whenever two nodes of the inside contours conflict, we compute the left\n * one of the greatest uncommon ancestors using the function nextAncestor()\n * and call moveSubtree() to shift the subtree and prepare the shifts of\n * smaller subtrees. Finally, we add a new thread (if necessary).\n *\n * @param {module:echarts/data/Tree~TreeNode} subtreeV\n * @param {module:echarts/data/Tree~TreeNode} subtreeW\n * @param {module:echarts/data/Tree~TreeNode} ancestor\n * @param {Function} separation\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction apportion(subtreeV, subtreeW, ancestor, separation) {\n if (subtreeW) {\n var nodeOutRight = subtreeV;\n var nodeInRight = subtreeV;\n var nodeOutLeft = nodeInRight.parentNode.children[0];\n var nodeInLeft = subtreeW;\n var sumOutRight = nodeOutRight.hierNode.modifier;\n var sumInRight = nodeInRight.hierNode.modifier;\n var sumOutLeft = nodeOutLeft.hierNode.modifier;\n var sumInLeft = nodeInLeft.hierNode.modifier;\n\n while (nodeInLeft = nextRight(nodeInLeft), nodeInRight = nextLeft(nodeInRight), nodeInLeft && nodeInRight) {\n nodeOutRight = nextRight(nodeOutRight);\n nodeOutLeft = nextLeft(nodeOutLeft);\n nodeOutRight.hierNode.ancestor = subtreeV;\n var shift = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim - sumInRight + separation(nodeInLeft, nodeInRight);\n\n if (shift > 0) {\n moveSubtree(nextAncestor(nodeInLeft, subtreeV, ancestor), subtreeV, shift);\n sumInRight += shift;\n sumOutRight += shift;\n }\n\n sumInLeft += nodeInLeft.hierNode.modifier;\n sumInRight += nodeInRight.hierNode.modifier;\n sumOutRight += nodeOutRight.hierNode.modifier;\n sumOutLeft += nodeOutLeft.hierNode.modifier;\n }\n\n if (nodeInLeft && !nextRight(nodeOutRight)) {\n nodeOutRight.hierNode.thread = nodeInLeft;\n nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight;\n }\n\n if (nodeInRight && !nextLeft(nodeOutLeft)) {\n nodeOutLeft.hierNode.thread = nodeInRight;\n nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft;\n ancestor = subtreeV;\n }\n }\n\n return ancestor;\n}\n/**\n * This function is used to traverse the right contour of a subtree.\n * It returns the rightmost child of node or the thread of node. The function\n * returns null if and only if node is on the highest depth of its subtree.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextRight(node) {\n var children = node.children;\n return children.length && node.isExpand ? children[children.length - 1] : node.hierNode.thread;\n}\n/**\n * This function is used to traverse the left contour of a subtree (or a subforest).\n * It returns the leftmost child of node or the thread of node. The function\n * returns null if and only if node is on the highest depth of its subtree.\n *\n * @param {module:echarts/data/Tree~TreeNode} node\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextLeft(node) {\n var children = node.children;\n return children.length && node.isExpand ? children[0] : node.hierNode.thread;\n}\n/**\n * If nodeInLeft’s ancestor is a sibling of node, returns nodeInLeft’s ancestor.\n * Otherwise, returns the specified ancestor.\n *\n * @param {module:echarts/data/Tree~TreeNode} nodeInLeft\n * @param {module:echarts/data/Tree~TreeNode} node\n * @param {module:echarts/data/Tree~TreeNode} ancestor\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextAncestor(nodeInLeft, node, ancestor) {\n return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode ? nodeInLeft.hierNode.ancestor : ancestor;\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n *\n * Shifts the current subtree rooted at wr.\n * This is done by increasing prelim(w+) and modifier(w+) by shift.\n *\n * @param {module:echarts/data/Tree~TreeNode} wl\n * @param {module:echarts/data/Tree~TreeNode} wr\n * @param {number} shift [description]\n */\n\n\nfunction moveSubtree(wl, wr, shift) {\n var change = shift / (wr.hierNode.i - wl.hierNode.i);\n wr.hierNode.change -= change;\n wr.hierNode.shift += shift;\n wr.hierNode.modifier += shift;\n wr.hierNode.prelim += shift;\n wl.hierNode.change += change;\n}\n/**\n * The implementation of this function was originally copied from \"d3.js\"\n * \n * with some modifications made for this program.\n * See the license statement at the head of this file.\n */\n\n\nfunction defaultSeparation(node1, node2) {\n return node1.parentNode === node2.parentNode ? 1 : 2;\n}\n\nexports.init = init;\nexports.firstWalk = firstWalk;\nexports.secondWalk = secondWalk;\nexports.separation = separation;\nexports.radialCoordinate = radialCoordinate;\nexports.getViewRect = getViewRect;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar Graph = require(\"../../data/Graph\");\n\nvar linkList = require(\"../../data/helper/linkList\");\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar createListFromArray = require(\"./createListFromArray\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(nodes, edges, seriesModel, directed, beforeLink) {\n // ??? TODO\n // support dataset?\n var graph = new Graph(directed);\n\n for (var i = 0; i < nodes.length; i++) {\n graph.addNode(zrUtil.retrieve( // Id, name, dataIndex\n nodes[i].id, nodes[i].name, i), i);\n }\n\n var linkNameList = [];\n var validEdges = [];\n var linkCount = 0;\n\n for (var i = 0; i < edges.length; i++) {\n var link = edges[i];\n var source = link.source;\n var target = link.target; // addEdge may fail when source or target not exists\n\n if (graph.addEdge(source, target, linkCount)) {\n validEdges.push(link);\n linkNameList.push(zrUtil.retrieve(link.id, source + ' > ' + target));\n linkCount++;\n }\n }\n\n var coordSys = seriesModel.get('coordinateSystem');\n var nodeData;\n\n if (coordSys === 'cartesian2d' || coordSys === 'polar') {\n nodeData = createListFromArray(nodes, seriesModel);\n } else {\n var coordSysCtor = CoordinateSystem.get(coordSys);\n var coordDimensions = coordSysCtor && coordSysCtor.type !== 'view' ? coordSysCtor.dimensions || [] : []; // FIXME: Some geo do not need `value` dimenson, whereas `calendar` needs\n // `value` dimension, but graph need `value` dimension. It's better to\n // uniform this behavior.\n\n if (zrUtil.indexOf(coordDimensions, 'value') < 0) {\n coordDimensions.concat(['value']);\n }\n\n var dimensionNames = createDimensions(nodes, {\n coordDimensions: coordDimensions\n });\n nodeData = new List(dimensionNames, seriesModel);\n nodeData.initData(nodes);\n }\n\n var edgeData = new List(['value'], seriesModel);\n edgeData.initData(validEdges, linkNameList);\n beforeLink && beforeLink(nodeData, edgeData);\n linkList({\n mainData: nodeData,\n struct: graph,\n structAttr: 'graph',\n datas: {\n node: nodeData,\n edge: edgeData\n },\n datasAttr: {\n node: 'data',\n edge: 'edgeData'\n }\n }); // Update dataIndex of nodes and edges because invalid edge may be removed\n\n graph.update();\n return graph;\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @payload\n * @property {number} [seriesIndex]\n * @property {string} [seriesId]\n * @property {string} [seriesName]\n * @property {number} [dataIndex]\n */\necharts.registerAction({\n type: 'focusNodeAdjacency',\n event: 'focusNodeAdjacency',\n update: 'series:focusNodeAdjacency'\n}, function () {});\n/**\n * @payload\n * @property {number} [seriesIndex]\n * @property {string} [seriesId]\n * @property {string} [seriesName]\n */\n\necharts.registerAction({\n type: 'unfocusNodeAdjacency',\n event: 'unfocusNodeAdjacency',\n update: 'series:unfocusNodeAdjacency'\n}, function () {});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction simpleLayout(seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n return;\n }\n\n var graph = seriesModel.getGraph();\n graph.eachNode(function (node) {\n var model = node.getModel();\n node.setLayout([+model.get('x'), +model.get('y')]);\n });\n simpleLayoutEdge(graph);\n}\n\nfunction simpleLayoutEdge(graph) {\n graph.eachEdge(function (edge) {\n var curveness = edge.getModel().get('lineStyle.curveness') || 0;\n var p1 = vec2.clone(edge.node1.getLayout());\n var p2 = vec2.clone(edge.node2.getLayout());\n var points = [p1, p2];\n\n if (+curveness) {\n points.push([(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness]);\n }\n\n edge.setLayout(points);\n });\n}\n\nexports.simpleLayout = simpleLayout;\nexports.simpleLayoutEdge = simpleLayoutEdge;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar _graphHelper = require(\"./graphHelper\");\n\nvar getSymbolSize = _graphHelper.getSymbolSize;\nvar getNodeGlobalScale = _graphHelper.getNodeGlobalScale;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PI = Math.PI;\nvar _symbolRadiansHalf = [];\n/**\n * `basedOn` can be:\n * 'value':\n * This layout is not accurate and have same bad case. For example,\n * if the min value is very smaller than the max value, the nodes\n * with the min value probably overlap even though there is enough\n * space to layout them. So we only use this approach in the as the\n * init layout of the force layout.\n * FIXME\n * Probably we do not need this method any more but use\n * `basedOn: 'symbolSize'` in force layout if\n * delay its init operations to GraphView.\n * 'symbolSize':\n * This approach work only if all of the symbol size calculated.\n * That is, the progressive rendering is not applied to graph.\n * FIXME\n * If progressive rendering is applied to graph some day,\n * probably we have to use `basedOn: 'value'`.\n *\n * @param {module:echarts/src/model/Series} seriesModel\n * @param {string} basedOn 'value' or 'symbolSize'\n */\n\nfunction circularLayout(seriesModel, basedOn) {\n var coordSys = seriesModel.coordinateSystem;\n\n if (coordSys && coordSys.type !== 'view') {\n return;\n }\n\n var rect = coordSys.getBoundingRect();\n var nodeData = seriesModel.getData();\n var graph = nodeData.graph;\n var cx = rect.width / 2 + rect.x;\n var cy = rect.height / 2 + rect.y;\n var r = Math.min(rect.width, rect.height) / 2;\n var count = nodeData.count();\n nodeData.setLayout({\n cx: cx,\n cy: cy\n });\n\n if (!count) {\n return;\n }\n\n _layoutNodesBasedOn[basedOn](seriesModel, coordSys, graph, nodeData, r, cx, cy, count);\n\n graph.eachEdge(function (edge) {\n var curveness = edge.getModel().get('lineStyle.curveness') || 0;\n var p1 = vec2.clone(edge.node1.getLayout());\n var p2 = vec2.clone(edge.node2.getLayout());\n var cp1;\n var x12 = (p1[0] + p2[0]) / 2;\n var y12 = (p1[1] + p2[1]) / 2;\n\n if (+curveness) {\n curveness *= 3;\n cp1 = [cx * curveness + x12 * (1 - curveness), cy * curveness + y12 * (1 - curveness)];\n }\n\n edge.setLayout([p1, p2, cp1]);\n });\n}\n\nvar _layoutNodesBasedOn = {\n value: function (seriesModel, coordSys, graph, nodeData, r, cx, cy, count) {\n var angle = 0;\n var sum = nodeData.getSum('value');\n var unitAngle = Math.PI * 2 / (sum || count);\n graph.eachNode(function (node) {\n var value = node.getValue('value');\n var radianHalf = unitAngle * (sum ? value : 1) / 2;\n angle += radianHalf;\n node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);\n angle += radianHalf;\n });\n },\n symbolSize: function (seriesModel, coordSys, graph, nodeData, r, cx, cy, count) {\n var sumRadian = 0;\n _symbolRadiansHalf.length = count;\n var nodeScale = getNodeGlobalScale(seriesModel);\n graph.eachNode(function (node) {\n var symbolSize = getSymbolSize(node); // Normally this case will not happen, but we still add\n // some the defensive code (2px is an arbitrary value).\n\n isNaN(symbolSize) && (symbolSize = 2);\n symbolSize < 0 && (symbolSize = 0);\n symbolSize *= nodeScale;\n var symbolRadianHalf = Math.asin(symbolSize / 2 / r); // when `symbolSize / 2` is bigger than `r`.\n\n isNaN(symbolRadianHalf) && (symbolRadianHalf = PI / 2);\n _symbolRadiansHalf[node.dataIndex] = symbolRadianHalf;\n sumRadian += symbolRadianHalf * 2;\n });\n var halfRemainRadian = (2 * PI - sumRadian) / count / 2;\n var angle = 0;\n graph.eachNode(function (node) {\n var radianHalf = halfRemainRadian + _symbolRadiansHalf[node.dataIndex];\n angle += radianHalf;\n node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);\n angle += radianHalf;\n });\n }\n};\nexports.circularLayout = circularLayout;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar throttleUtil = require(\"../util/throttle\");\n\nvar parallelPreprocessor = require(\"../coord/parallel/parallelPreprocessor\");\n\nrequire(\"../coord/parallel/parallelCreator\");\n\nrequire(\"../coord/parallel/ParallelModel\");\n\nrequire(\"./parallelAxis\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CLICK_THRESHOLD = 5; // > 4\n// Parallel view\n\necharts.extendComponentView({\n type: 'parallel',\n render: function (parallelModel, ecModel, api) {\n this._model = parallelModel;\n this._api = api;\n\n if (!this._handlers) {\n this._handlers = {};\n zrUtil.each(handlers, function (handler, eventName) {\n api.getZr().on(eventName, this._handlers[eventName] = zrUtil.bind(handler, this));\n }, this);\n }\n\n throttleUtil.createOrUpdate(this, '_throttledDispatchExpand', parallelModel.get('axisExpandRate'), 'fixRate');\n },\n dispose: function (ecModel, api) {\n zrUtil.each(this._handlers, function (handler, eventName) {\n api.getZr().off(eventName, handler);\n });\n this._handlers = null;\n },\n\n /**\n * @param {Object} [opt] If null, cancle the last action triggering for debounce.\n */\n _throttledDispatchExpand: function (opt) {\n this._dispatchExpand(opt);\n },\n _dispatchExpand: function (opt) {\n opt && this._api.dispatchAction(zrUtil.extend({\n type: 'parallelAxisExpand'\n }, opt));\n }\n});\nvar handlers = {\n mousedown: function (e) {\n if (checkTrigger(this, 'click')) {\n this._mouseDownPoint = [e.offsetX, e.offsetY];\n }\n },\n mouseup: function (e) {\n var mouseDownPoint = this._mouseDownPoint;\n\n if (checkTrigger(this, 'click') && mouseDownPoint) {\n var point = [e.offsetX, e.offsetY];\n var dist = Math.pow(mouseDownPoint[0] - point[0], 2) + Math.pow(mouseDownPoint[1] - point[1], 2);\n\n if (dist > CLICK_THRESHOLD) {\n return;\n }\n\n var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\n\n result.behavior !== 'none' && this._dispatchExpand({\n axisExpandWindow: result.axisExpandWindow\n });\n }\n\n this._mouseDownPoint = null;\n },\n mousemove: function (e) {\n // Should do nothing when brushing.\n if (this._mouseDownPoint || !checkTrigger(this, 'mousemove')) {\n return;\n }\n\n var model = this._model;\n var result = model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\n var behavior = result.behavior;\n behavior === 'jump' && this._throttledDispatchExpand.debounceNextCall(model.get('axisExpandDebounce'));\n\n this._throttledDispatchExpand(behavior === 'none' ? null // Cancle the last trigger, in case that mouse slide out of the area quickly.\n : {\n axisExpandWindow: result.axisExpandWindow,\n // Jumping uses animation, and sliding suppresses animation.\n animation: behavior === 'jump' ? null : false\n });\n }\n};\n\nfunction checkTrigger(view, triggerOn) {\n var model = view._model;\n return model.get('axisExpandable') && model.get('axisExpandTriggerOn') === triggerOn;\n}\n\necharts.registerPreprocessor(parallelPreprocessor);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Parallel = require(\"./Parallel\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Parallel coordinate system creater.\n */\nfunction create(ecModel, api) {\n var coordSysList = [];\n ecModel.eachComponent('parallel', function (parallelModel, idx) {\n var coordSys = new Parallel(parallelModel, ecModel, api);\n coordSys.name = 'parallel_' + idx;\n coordSys.resize(parallelModel, api);\n parallelModel.coordinateSystem = coordSys;\n coordSys.model = parallelModel;\n coordSysList.push(coordSys);\n }); // Inject the coordinateSystems into seriesModel\n\n ecModel.eachSeries(function (seriesModel) {\n if (seriesModel.get('coordinateSystem') === 'parallel') {\n var parallelModel = ecModel.queryComponents({\n mainType: 'parallel',\n index: seriesModel.get('parallelIndex'),\n id: seriesModel.get('parallelId')\n })[0];\n seriesModel.coordinateSystem = parallelModel.coordinateSystem;\n }\n });\n return coordSysList;\n}\n\nCoordinateSystem.register('parallel', {\n create: create\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _cursorHelper = require(\"./cursorHelper\");\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphicUtil = require(\"../../util/graphic\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction makeRectPanelClipPath(rect) {\n rect = normalizeRect(rect);\n return function (localPoints, transform) {\n return graphicUtil.clipPointsByRect(localPoints, rect);\n };\n}\n\nfunction makeLinearBrushOtherExtent(rect, specifiedXYIndex) {\n rect = normalizeRect(rect);\n return function (xyIndex) {\n var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex;\n var brushWidth = idx ? rect.width : rect.height;\n var base = idx ? rect.x : rect.y;\n return [base, base + (brushWidth || 0)];\n };\n}\n\nfunction makeRectIsTargetByCursor(rect, api, targetModel) {\n rect = normalizeRect(rect);\n return function (e, localCursorPoint, transform) {\n return rect.contain(localCursorPoint[0], localCursorPoint[1]) && !onIrrelevantElement(e, api, targetModel);\n };\n} // Consider width/height is negative.\n\n\nfunction normalizeRect(rect) {\n return BoundingRect.create(rect);\n}\n\nexports.makeRectPanelClipPath = makeRectPanelClipPath;\nexports.makeLinearBrushOtherExtent = makeLinearBrushOtherExtent;\nexports.makeRectIsTargetByCursor = makeRectIsTargetByCursor;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createListSimply = require(\"../helper/createListSimply\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForAxisCoordSys = _sourceHelper.makeSeriesEncodeForAxisCoordSys;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar seriesModelMixin = {\n /**\n * @private\n * @type {string}\n */\n _baseAxisDim: null,\n\n /**\n * @override\n */\n getInitialData: function (option, ecModel) {\n // When both types of xAxis and yAxis are 'value', layout is\n // needed to be specified by user. Otherwise, layout can be\n // judged by which axis is category.\n var ordinalMeta;\n var xAxisModel = ecModel.getComponent('xAxis', this.get('xAxisIndex'));\n var yAxisModel = ecModel.getComponent('yAxis', this.get('yAxisIndex'));\n var xAxisType = xAxisModel.get('type');\n var yAxisType = yAxisModel.get('type');\n var addOrdinal; // FIXME\n // Consider time axis.\n\n if (xAxisType === 'category') {\n option.layout = 'horizontal';\n ordinalMeta = xAxisModel.getOrdinalMeta();\n addOrdinal = true;\n } else if (yAxisType === 'category') {\n option.layout = 'vertical';\n ordinalMeta = yAxisModel.getOrdinalMeta();\n addOrdinal = true;\n } else {\n option.layout = option.layout || 'horizontal';\n }\n\n var coordDims = ['x', 'y'];\n var baseAxisDimIndex = option.layout === 'horizontal' ? 0 : 1;\n var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex];\n var otherAxisDim = coordDims[1 - baseAxisDimIndex];\n var axisModels = [xAxisModel, yAxisModel];\n var baseAxisType = axisModels[baseAxisDimIndex].get('type');\n var otherAxisType = axisModels[1 - baseAxisDimIndex].get('type');\n var data = option.data; // ??? FIXME make a stage to perform data transfrom.\n // MUST create a new data, consider setOption({}) again.\n\n if (data && addOrdinal) {\n var newOptionData = [];\n zrUtil.each(data, function (item, index) {\n var newItem;\n\n if (item.value && zrUtil.isArray(item.value)) {\n newItem = item.value.slice();\n item.value.unshift(index);\n } else if (zrUtil.isArray(item)) {\n newItem = item.slice();\n item.unshift(index);\n } else {\n newItem = item;\n }\n\n newOptionData.push(newItem);\n });\n option.data = newOptionData;\n }\n\n var defaultValueDimensions = this.defaultValueDimensions;\n var coordDimensions = [{\n name: baseAxisDim,\n type: getDimensionTypeByAxis(baseAxisType),\n ordinalMeta: ordinalMeta,\n otherDims: {\n tooltip: false,\n itemName: 0\n },\n dimsDef: ['base']\n }, {\n name: otherAxisDim,\n type: getDimensionTypeByAxis(otherAxisType),\n dimsDef: defaultValueDimensions.slice()\n }];\n return createListSimply(this, {\n coordDimensions: coordDimensions,\n dimensionsCount: defaultValueDimensions.length + 1,\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForAxisCoordSys, coordDimensions, this)\n });\n },\n\n /**\n * If horizontal, base axis is x, otherwise y.\n * @override\n */\n getBaseAxis: function () {\n var dim = this._baseAxisDim;\n return this.ecModel.getComponent(dim + 'Axis', this.get(dim + 'AxisIndex')).axis;\n }\n};\nexports.seriesModelMixin = seriesModelMixin;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Line = require(\"./Line\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar curveUtil = require(\"zrender/lib/core/curve\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Provide effect for line\n * @module echarts/chart/helper/EffectLine\n */\n\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Line}\n */\nfunction EffectLine(lineData, idx, seriesScope) {\n graphic.Group.call(this);\n this.add(this.createLine(lineData, idx, seriesScope));\n\n this._updateEffectSymbol(lineData, idx);\n}\n\nvar effectLineProto = EffectLine.prototype;\n\neffectLineProto.createLine = function (lineData, idx, seriesScope) {\n return new Line(lineData, idx, seriesScope);\n};\n\neffectLineProto._updateEffectSymbol = function (lineData, idx) {\n var itemModel = lineData.getItemModel(idx);\n var effectModel = itemModel.getModel('effect');\n var size = effectModel.get('symbolSize');\n var symbolType = effectModel.get('symbol');\n\n if (!zrUtil.isArray(size)) {\n size = [size, size];\n }\n\n var color = effectModel.get('color') || lineData.getItemVisual(idx, 'color');\n var symbol = this.childAt(1);\n\n if (this._symbolType !== symbolType) {\n // Remove previous\n this.remove(symbol);\n symbol = createSymbol(symbolType, -0.5, -0.5, 1, 1, color);\n symbol.z2 = 100;\n symbol.culling = true;\n this.add(symbol);\n } // Symbol may be removed if loop is false\n\n\n if (!symbol) {\n return;\n } // Shadow color is same with color in default\n\n\n symbol.setStyle('shadowColor', color);\n symbol.setStyle(effectModel.getItemStyle(['color']));\n symbol.attr('scale', size);\n symbol.setColor(color);\n symbol.attr('scale', size);\n this._symbolType = symbolType;\n\n this._updateEffectAnimation(lineData, effectModel, idx);\n};\n\neffectLineProto._updateEffectAnimation = function (lineData, effectModel, idx) {\n var symbol = this.childAt(1);\n\n if (!symbol) {\n return;\n }\n\n var self = this;\n var points = lineData.getItemLayout(idx);\n var period = effectModel.get('period') * 1000;\n var loop = effectModel.get('loop');\n var constantSpeed = effectModel.get('constantSpeed');\n var delayExpr = zrUtil.retrieve(effectModel.get('delay'), function (idx) {\n return idx / lineData.count() * period / 3;\n });\n var isDelayFunc = typeof delayExpr === 'function'; // Ignore when updating\n\n symbol.ignore = true;\n this.updateAnimationPoints(symbol, points);\n\n if (constantSpeed > 0) {\n period = this.getLineLength(symbol) / constantSpeed * 1000;\n }\n\n if (period !== this._period || loop !== this._loop) {\n symbol.stopAnimation();\n var delay = delayExpr;\n\n if (isDelayFunc) {\n delay = delayExpr(idx);\n }\n\n if (symbol.__t > 0) {\n delay = -period * symbol.__t;\n }\n\n symbol.__t = 0;\n var animator = symbol.animate('', loop).when(period, {\n __t: 1\n }).delay(delay).during(function () {\n self.updateSymbolPosition(symbol);\n });\n\n if (!loop) {\n animator.done(function () {\n self.remove(symbol);\n });\n }\n\n animator.start();\n }\n\n this._period = period;\n this._loop = loop;\n};\n\neffectLineProto.getLineLength = function (symbol) {\n // Not so accurate\n return vec2.dist(symbol.__p1, symbol.__cp1) + vec2.dist(symbol.__cp1, symbol.__p2);\n};\n\neffectLineProto.updateAnimationPoints = function (symbol, points) {\n symbol.__p1 = points[0];\n symbol.__p2 = points[1];\n symbol.__cp1 = points[2] || [(points[0][0] + points[1][0]) / 2, (points[0][1] + points[1][1]) / 2];\n};\n\neffectLineProto.updateData = function (lineData, idx, seriesScope) {\n this.childAt(0).updateData(lineData, idx, seriesScope);\n\n this._updateEffectSymbol(lineData, idx);\n};\n\neffectLineProto.updateSymbolPosition = function (symbol) {\n var p1 = symbol.__p1;\n var p2 = symbol.__p2;\n var cp1 = symbol.__cp1;\n var t = symbol.__t;\n var pos = symbol.position;\n var quadraticAt = curveUtil.quadraticAt;\n var quadraticDerivativeAt = curveUtil.quadraticDerivativeAt;\n pos[0] = quadraticAt(p1[0], cp1[0], p2[0], t);\n pos[1] = quadraticAt(p1[1], cp1[1], p2[1], t); // Tangent\n\n var tx = quadraticDerivativeAt(p1[0], cp1[0], p2[0], t);\n var ty = quadraticDerivativeAt(p1[1], cp1[1], p2[1], t);\n symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;\n symbol.ignore = false;\n};\n\neffectLineProto.updateLayout = function (lineData, idx) {\n this.childAt(0).updateLayout(lineData, idx);\n var effectModel = lineData.getItemModel(idx).getModel('effect');\n\n this._updateEffectAnimation(lineData, effectModel, idx);\n};\n\nzrUtil.inherits(EffectLine, graphic.Group);\nvar _default = EffectLine;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @module echarts/chart/helper/Line\n */\n\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Polyline}\n */\nfunction Polyline(lineData, idx, seriesScope) {\n graphic.Group.call(this);\n\n this._createPolyline(lineData, idx, seriesScope);\n}\n\nvar polylineProto = Polyline.prototype;\n\npolylineProto._createPolyline = function (lineData, idx, seriesScope) {\n // var seriesModel = lineData.hostModel;\n var points = lineData.getItemLayout(idx);\n var line = new graphic.Polyline({\n shape: {\n points: points\n }\n });\n this.add(line);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\npolylineProto.updateData = function (lineData, idx, seriesScope) {\n var seriesModel = lineData.hostModel;\n var line = this.childAt(0);\n var target = {\n shape: {\n points: lineData.getItemLayout(idx)\n }\n };\n graphic.updateProps(line, target, seriesModel, idx);\n\n this._updateCommonStl(lineData, idx, seriesScope);\n};\n\npolylineProto._updateCommonStl = function (lineData, idx, seriesScope) {\n var line = this.childAt(0);\n var itemModel = lineData.getItemModel(idx);\n var visualColor = lineData.getItemVisual(idx, 'color');\n var lineStyle = seriesScope && seriesScope.lineStyle;\n var hoverLineStyle = seriesScope && seriesScope.hoverLineStyle;\n\n if (!seriesScope || lineData.hasItemOption) {\n lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n hoverLineStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n }\n\n line.useStyle(zrUtil.defaults({\n strokeNoScale: true,\n fill: 'none',\n stroke: visualColor\n }, lineStyle));\n line.hoverStyle = hoverLineStyle;\n graphic.setHoverStyle(this);\n};\n\npolylineProto.updateLayout = function (lineData, idx) {\n var polyline = this.childAt(0);\n polyline.setShape('points', lineData.getItemLayout(idx));\n};\n\nzrUtil.inherits(Polyline, graphic.Group);\nvar _default = Polyline;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createRenderPlanner = require(\"../helper/createRenderPlanner\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nvar _default = {\n seriesType: 'lines',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var isPolyline = seriesModel.get('polyline');\n var isLarge = seriesModel.pipelineContext.large;\n\n function progress(params, lineData) {\n var lineCoords = [];\n\n if (isLarge) {\n var points;\n var segCount = params.end - params.start;\n\n if (isPolyline) {\n var totalCoordsCount = 0;\n\n for (var i = params.start; i < params.end; i++) {\n totalCoordsCount += seriesModel.getLineCoordsCount(i);\n }\n\n points = new Float32Array(segCount + totalCoordsCount * 2);\n } else {\n points = new Float32Array(segCount * 4);\n }\n\n var offset = 0;\n var pt = [];\n\n for (var i = params.start; i < params.end; i++) {\n var len = seriesModel.getLineCoords(i, lineCoords);\n\n if (isPolyline) {\n points[offset++] = len;\n }\n\n for (var k = 0; k < len; k++) {\n pt = coordSys.dataToPoint(lineCoords[k], false, pt);\n points[offset++] = pt[0];\n points[offset++] = pt[1];\n }\n }\n\n lineData.setLayout('linesPoints', points);\n } else {\n for (var i = params.start; i < params.end; i++) {\n var itemModel = lineData.getItemModel(i);\n var len = seriesModel.getLineCoords(i, lineCoords);\n var pts = [];\n\n if (isPolyline) {\n for (var j = 0; j < len; j++) {\n pts.push(coordSys.dataToPoint(lineCoords[j]));\n }\n } else {\n pts[0] = coordSys.dataToPoint(lineCoords[0]);\n pts[1] = coordSys.dataToPoint(lineCoords[1]);\n var curveness = itemModel.get('lineStyle.curveness');\n\n if (+curveness) {\n pts[2] = [(pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness, (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness];\n }\n }\n\n lineData.setItemLayout(i, pts);\n }\n }\n }\n\n return {\n progress: progress\n };\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nrequire(\"../coord/single/singleCreator\");\n\nrequire(\"./axis/SingleAxisView\");\n\nrequire(\"../coord/single/AxisModel\");\n\nrequire(\"./axisPointer\");\n\nrequire(\"./axisPointer/SingleAxisPointer\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.extendComponentView({\n type: 'single'\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} opt {labelInside}\n * @return {Object} {\n * position, rotation, labelDirection, labelOffset,\n * tickDirection, labelRotate, z2\n * }\n */\nfunction layout(axisModel, opt) {\n opt = opt || {};\n var single = axisModel.coordinateSystem;\n var axis = axisModel.axis;\n var layout = {};\n var axisPosition = axis.position;\n var orient = axis.orient;\n var rect = single.getRect();\n var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n var positionMap = {\n horizontal: {\n top: rectBound[2],\n bottom: rectBound[3]\n },\n vertical: {\n left: rectBound[0],\n right: rectBound[1]\n }\n };\n layout.position = [orient === 'vertical' ? positionMap.vertical[axisPosition] : rectBound[0], orient === 'horizontal' ? positionMap.horizontal[axisPosition] : rectBound[3]];\n var r = {\n horizontal: 0,\n vertical: 1\n };\n layout.rotation = Math.PI / 2 * r[orient];\n var directionMap = {\n top: -1,\n bottom: 1,\n right: 1,\n left: -1\n };\n layout.labelDirection = layout.tickDirection = layout.nameDirection = directionMap[axisPosition];\n\n if (axisModel.get('axisTick.inside')) {\n layout.tickDirection = -layout.tickDirection;\n }\n\n if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {\n layout.labelDirection = -layout.labelDirection;\n }\n\n var labelRotation = opt.rotate;\n labelRotation == null && (labelRotation = axisModel.get('axisLabel.rotate'));\n layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation;\n layout.z2 = 1;\n return layout;\n}\n\nexports.layout = layout;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../../util/model\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {Object} finder contains {seriesIndex, dataIndex, dataIndexInside}\n * @param {module:echarts/model/Global} ecModel\n * @return {Object} {point: [x, y], el: ...} point Will not be null.\n */\nfunction _default(finder, ecModel) {\n var point = [];\n var seriesIndex = finder.seriesIndex;\n var seriesModel;\n\n if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {\n return {\n point: []\n };\n }\n\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, finder);\n\n if (dataIndex == null || dataIndex < 0 || zrUtil.isArray(dataIndex)) {\n return {\n point: []\n };\n }\n\n var el = data.getItemGraphicEl(dataIndex);\n var coordSys = seriesModel.coordinateSystem;\n\n if (seriesModel.getTooltipPosition) {\n point = seriesModel.getTooltipPosition(dataIndex) || [];\n } else if (coordSys && coordSys.dataToPoint) {\n point = coordSys.dataToPoint(data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }), dataIndex, true)) || [];\n } else if (el) {\n // Use graphic bounding rect\n var rect = el.getBoundingRect().clone();\n rect.applyTransform(el.transform);\n point = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n }\n\n return {\n point: point,\n el: el\n };\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar inner = makeInner();\nvar each = zrUtil.each;\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n * @param {Function} handler\n * param: {string} currTrigger\n * param: {Array.} point\n */\n\nfunction register(key, api, handler) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n inner(zr).records || (inner(zr).records = {});\n initGlobalListeners(zr, api);\n var record = inner(zr).records[key] || (inner(zr).records[key] = {});\n record.handler = handler;\n}\n\nfunction initGlobalListeners(zr, api) {\n if (inner(zr).initialized) {\n return;\n }\n\n inner(zr).initialized = true;\n useHandler('click', zrUtil.curry(doEnter, 'click'));\n useHandler('mousemove', zrUtil.curry(doEnter, 'mousemove')); // useHandler('mouseout', onLeave);\n\n useHandler('globalout', onLeave);\n\n function useHandler(eventType, cb) {\n zr.on(eventType, function (e) {\n var dis = makeDispatchAction(api);\n each(inner(zr).records, function (record) {\n record && cb(record, e, dis.dispatchAction);\n });\n dispatchTooltipFinally(dis.pendings, api);\n });\n }\n}\n\nfunction dispatchTooltipFinally(pendings, api) {\n var showLen = pendings.showTip.length;\n var hideLen = pendings.hideTip.length;\n var actuallyPayload;\n\n if (showLen) {\n actuallyPayload = pendings.showTip[showLen - 1];\n } else if (hideLen) {\n actuallyPayload = pendings.hideTip[hideLen - 1];\n }\n\n if (actuallyPayload) {\n actuallyPayload.dispatchAction = null;\n api.dispatchAction(actuallyPayload);\n }\n}\n\nfunction onLeave(record, e, dispatchAction) {\n record.handler('leave', null, dispatchAction);\n}\n\nfunction doEnter(currTrigger, record, e, dispatchAction) {\n record.handler(currTrigger, e, dispatchAction);\n}\n\nfunction makeDispatchAction(api) {\n var pendings = {\n showTip: [],\n hideTip: []\n }; // FIXME\n // better approach?\n // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip,\n // which may be conflict, (axisPointer call showTip but tooltip call hideTip);\n // So we have to add \"final stage\" to merge those dispatched actions.\n\n var dispatchAction = function (payload) {\n var pendingList = pendings[payload.type];\n\n if (pendingList) {\n pendingList.push(payload);\n } else {\n payload.dispatchAction = dispatchAction;\n api.dispatchAction(payload);\n }\n };\n\n return {\n dispatchAction: dispatchAction,\n pendings: pendings\n };\n}\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction unregister(key, api) {\n if (env.node) {\n return;\n }\n\n var zr = api.getZr();\n var record = (inner(zr).records || {})[key];\n\n if (record) {\n inner(zr).records[key] = null;\n }\n}\n\nexports.register = register;\nexports.unregister = unregister;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BaseAxisPointer = require(\"./BaseAxisPointer\");\n\nvar viewHelper = require(\"./viewHelper\");\n\nvar cartesianAxisHelper = require(\"../../coord/cartesian/cartesianAxisHelper\");\n\nvar AxisView = require(\"../axis/AxisView\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CartesianAxisPointer = BaseAxisPointer.extend({\n /**\n * @override\n */\n makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisPointerType = axisPointerModel.get('type');\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));\n\n if (axisPointerType && axisPointerType !== 'none') {\n var elStyle = viewHelper.buildElStyle(axisPointerModel);\n var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);\n pointerOption.style = elStyle;\n elOption.graphicKey = pointerOption.type;\n elOption.pointer = pointerOption;\n }\n\n var layoutInfo = cartesianAxisHelper.layout(grid.model, axisModel);\n viewHelper.buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n },\n\n /**\n * @override\n */\n getHandleTransform: function (value, axisModel, axisPointerModel) {\n var layoutInfo = cartesianAxisHelper.layout(axisModel.axis.grid.model, axisModel, {\n labelInside: false\n });\n layoutInfo.labelMargin = axisPointerModel.get('handle.margin');\n return {\n position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),\n rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n };\n },\n\n /**\n * @override\n */\n updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {\n var axis = axisModel.axis;\n var grid = axis.grid;\n var axisExtent = axis.getGlobalExtent(true);\n var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n var dimIndex = axis.dim === 'x' ? 0 : 1;\n var currPosition = transform.position;\n currPosition[dimIndex] += delta[dimIndex];\n currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n var cursorPoint = [cursorOtherValue, cursorOtherValue];\n cursorPoint[dimIndex] = currPosition[dimIndex]; // Make tooltip do not overlap axisPointer and in the middle of the grid.\n\n var tooltipOptions = [{\n verticalAlign: 'middle'\n }, {\n align: 'center'\n }];\n return {\n position: currPosition,\n rotation: transform.rotation,\n cursorPoint: cursorPoint,\n tooltipOption: tooltipOptions[dimIndex]\n };\n }\n});\n\nfunction getCartesian(grid, axis) {\n var opt = {};\n opt[axis.dim + 'AxisIndex'] = axis.index;\n return grid.getCartesian(opt);\n}\n\nvar pointerShapeBuilder = {\n line: function (axis, pixelValue, otherExtent) {\n var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));\n return {\n type: 'Line',\n subPixelOptimize: true,\n shape: targetShape\n };\n },\n shadow: function (axis, pixelValue, otherExtent) {\n var bandWidth = Math.max(1, axis.getBandWidth());\n var span = otherExtent[1] - otherExtent[0];\n return {\n type: 'Rect',\n shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))\n };\n }\n};\n\nfunction getAxisDimIndex(axis) {\n return axis.dim === 'x' ? 0 : 1;\n}\n\nAxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer);\nvar _default = CartesianAxisPointer;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\nvar layoutBox = _layout.box;\nvar positionElement = _layout.positionElement;\n\nvar formatUtil = require(\"../../util/format\");\n\nvar graphic = require(\"../../util/graphic\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * Layout list like component.\n * It will box layout each items in group of component and then position the whole group in the viewport\n * @param {module:zrender/group/Group} group\n * @param {module:echarts/model/Component} componentModel\n * @param {module:echarts/ExtensionAPI}\n */\nfunction layout(group, componentModel, api) {\n var boxLayoutParams = componentModel.getBoxLayoutParams();\n var padding = componentModel.get('padding');\n var viewportSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var rect = getLayoutRect(boxLayoutParams, viewportSize, padding);\n layoutBox(componentModel.get('orient'), group, componentModel.get('itemGap'), rect.width, rect.height);\n positionElement(group, boxLayoutParams, viewportSize, padding);\n}\n\nfunction makeBackground(rect, componentModel) {\n var padding = formatUtil.normalizeCssArray(componentModel.get('padding'));\n var style = componentModel.getItemStyle(['color', 'opacity']);\n style.fill = componentModel.get('backgroundColor');\n var rect = new graphic.Rect({\n shape: {\n x: rect.x - padding[3],\n y: rect.y - padding[0],\n width: rect.width + padding[1] + padding[3],\n height: rect.height + padding[0] + padding[2],\n r: componentModel.get('borderRadius')\n },\n style: style,\n silent: true,\n z2: -1\n }); // FIXME\n // `subPixelOptimizeRect` may bring some gap between edge of viewpart\n // and background rect when setting like `left: 0`, `top: 0`.\n // graphic.subPixelOptimizeRect(rect);\n\n return rect;\n}\n\nexports.layout = layout;\nexports.makeBackground = makeBackground;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar brushHelper = require(\"./brushHelper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar indexOf = zrUtil.indexOf;\nvar curry = zrUtil.curry;\nvar COORD_CONVERTS = ['dataToPoint', 'pointToData']; // FIXME\n// how to genarialize to more coordinate systems.\n\nvar INCLUDE_FINDER_MAIN_TYPES = ['grid', 'xAxis', 'yAxis', 'geo', 'graph', 'polar', 'radiusAxis', 'angleAxis', 'bmap'];\n/**\n * [option in constructor]:\n * {\n * Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder.\n * }\n *\n *\n * [targetInfo]:\n *\n * There can be multiple axes in a single targetInfo. Consider the case\n * of `grid` component, a targetInfo represents a grid which contains one or more\n * cartesian and one or more axes. And consider the case of parallel system,\n * which has multiple axes in a coordinate system.\n * Can be {\n * panelId: ...,\n * coordSys: ,\n * coordSyses: all cartesians.\n * gridModel: \n * xAxes: correspond to coordSyses on index\n * yAxes: correspond to coordSyses on index\n * }\n * or {\n * panelId: ...,\n * coordSys: \n * coordSyses: []\n * geoModel: \n * }\n *\n *\n * [panelOpt]:\n *\n * Make from targetInfo. Input to BrushController.\n * {\n * panelId: ...,\n * rect: ...\n * }\n *\n *\n * [area]:\n *\n * Generated by BrushController or user input.\n * {\n * panelId: Used to locate coordInfo directly. If user inpput, no panelId.\n * brushType: determine how to convert to/from coord('rect' or 'polygon' or 'lineX/Y').\n * Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder.\n * range: pixel range.\n * coordRange: representitive coord range (the first one of coordRanges).\n * coordRanges: coord ranges, used in multiple cartesian in one grid.\n * }\n */\n\n/**\n * @param {Object} option contains Index/Id/Name of xAxis/yAxis/geo/grid\n * Each can be {number|Array.}. like: {xAxisIndex: [3, 4]}\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} [opt]\n * @param {Array.} [opt.include] include coordinate system types.\n */\n\nfunction BrushTargetManager(option, ecModel, opt) {\n /**\n * @private\n * @type {Array.}\n */\n var targetInfoList = this._targetInfoList = [];\n var info = {};\n var foundCpts = parseFinder(ecModel, option);\n each(targetInfoBuilders, function (builder, type) {\n if (!opt || !opt.include || indexOf(opt.include, type) >= 0) {\n builder(foundCpts, targetInfoList, info);\n }\n });\n}\n\nvar proto = BrushTargetManager.prototype;\n\nproto.setOutputRanges = function (areas, ecModel) {\n this.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\n (area.coordRanges || (area.coordRanges = [])).push(coordRange); // area.coordRange is the first of area.coordRanges\n\n if (!area.coordRange) {\n area.coordRange = coordRange; // In 'category' axis, coord to pixel is not reversible, so we can not\n // rebuild range by coordRange accrately, which may bring trouble when\n // brushing only one item. So we use __rangeOffset to rebuilding range\n // by coordRange. And this it only used in brush component so it is no\n // need to be adapted to coordRanges.\n\n var result = coordConvert[area.brushType](0, coordSys, coordRange);\n area.__rangeOffset = {\n offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]),\n xyMinMax: result.xyMinMax\n };\n }\n });\n};\n\nproto.matchOutputRanges = function (areas, ecModel, cb) {\n each(areas, function (area) {\n var targetInfo = this.findTargetInfo(area, ecModel);\n\n if (targetInfo && targetInfo !== true) {\n zrUtil.each(targetInfo.coordSyses, function (coordSys) {\n var result = coordConvert[area.brushType](1, coordSys, area.range);\n cb(area, result.values, coordSys, ecModel);\n });\n }\n }, this);\n};\n\nproto.setInputRanges = function (areas, ecModel) {\n each(areas, function (area) {\n var targetInfo = this.findTargetInfo(area, ecModel);\n area.range = area.range || []; // convert coordRange to global range and set panelId.\n\n if (targetInfo && targetInfo !== true) {\n area.panelId = targetInfo.panelId; // (1) area.range shoule always be calculate from coordRange but does\n // not keep its original value, for the sake of the dataZoom scenario,\n // where area.coordRange remains unchanged but area.range may be changed.\n // (2) Only support converting one coordRange to pixel range in brush\n // component. So do not consider `coordRanges`.\n // (3) About __rangeOffset, see comment above.\n\n var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange);\n var rangeOffset = area.__rangeOffset;\n area.range = rangeOffset ? diffProcessor[area.brushType](result.values, rangeOffset.offset, getScales(result.xyMinMax, rangeOffset.xyMinMax)) : result.values;\n }\n }, this);\n};\n\nproto.makePanelOpts = function (api, getDefaultBrushType) {\n return zrUtil.map(this._targetInfoList, function (targetInfo) {\n var rect = targetInfo.getPanelRect();\n return {\n panelId: targetInfo.panelId,\n defaultBrushType: getDefaultBrushType && getDefaultBrushType(targetInfo),\n clipPath: brushHelper.makeRectPanelClipPath(rect),\n isTargetByCursor: brushHelper.makeRectIsTargetByCursor(rect, api, targetInfo.coordSysModel),\n getLinearBrushOtherExtent: brushHelper.makeLinearBrushOtherExtent(rect)\n };\n });\n};\n\nproto.controlSeries = function (area, seriesModel, ecModel) {\n // Check whether area is bound in coord, and series do not belong to that coord.\n // If do not do this check, some brush (like lineX) will controll all axes.\n var targetInfo = this.findTargetInfo(area, ecModel);\n return targetInfo === true || targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0;\n};\n/**\n * If return Object, a coord found.\n * If reutrn true, global found.\n * Otherwise nothing found.\n *\n * @param {Object} area\n * @param {Array} targetInfoList\n * @return {Object|boolean}\n */\n\n\nproto.findTargetInfo = function (area, ecModel) {\n var targetInfoList = this._targetInfoList;\n var foundCpts = parseFinder(ecModel, area);\n\n for (var i = 0; i < targetInfoList.length; i++) {\n var targetInfo = targetInfoList[i];\n var areaPanelId = area.panelId;\n\n if (areaPanelId) {\n if (targetInfo.panelId === areaPanelId) {\n return targetInfo;\n }\n } else {\n for (var i = 0; i < targetInfoMatchers.length; i++) {\n if (targetInfoMatchers[i](foundCpts, targetInfo)) {\n return targetInfo;\n }\n }\n }\n }\n\n return true;\n};\n\nfunction formatMinMax(minMax) {\n minMax[0] > minMax[1] && minMax.reverse();\n return minMax;\n}\n\nfunction parseFinder(ecModel, option) {\n return modelUtil.parseFinder(ecModel, option, {\n includeMainTypes: INCLUDE_FINDER_MAIN_TYPES\n });\n}\n\nvar targetInfoBuilders = {\n grid: function (foundCpts, targetInfoList) {\n var xAxisModels = foundCpts.xAxisModels;\n var yAxisModels = foundCpts.yAxisModels;\n var gridModels = foundCpts.gridModels; // Remove duplicated.\n\n var gridModelMap = zrUtil.createHashMap();\n var xAxesHas = {};\n var yAxesHas = {};\n\n if (!xAxisModels && !yAxisModels && !gridModels) {\n return;\n }\n\n each(xAxisModels, function (axisModel) {\n var gridModel = axisModel.axis.grid.model;\n gridModelMap.set(gridModel.id, gridModel);\n xAxesHas[gridModel.id] = true;\n });\n each(yAxisModels, function (axisModel) {\n var gridModel = axisModel.axis.grid.model;\n gridModelMap.set(gridModel.id, gridModel);\n yAxesHas[gridModel.id] = true;\n });\n each(gridModels, function (gridModel) {\n gridModelMap.set(gridModel.id, gridModel);\n xAxesHas[gridModel.id] = true;\n yAxesHas[gridModel.id] = true;\n });\n gridModelMap.each(function (gridModel) {\n var grid = gridModel.coordinateSystem;\n var cartesians = [];\n each(grid.getCartesians(), function (cartesian, index) {\n if (indexOf(xAxisModels, cartesian.getAxis('x').model) >= 0 || indexOf(yAxisModels, cartesian.getAxis('y').model) >= 0) {\n cartesians.push(cartesian);\n }\n });\n targetInfoList.push({\n panelId: 'grid--' + gridModel.id,\n gridModel: gridModel,\n coordSysModel: gridModel,\n // Use the first one as the representitive coordSys.\n coordSys: cartesians[0],\n coordSyses: cartesians,\n getPanelRect: panelRectBuilder.grid,\n xAxisDeclared: xAxesHas[gridModel.id],\n yAxisDeclared: yAxesHas[gridModel.id]\n });\n });\n },\n geo: function (foundCpts, targetInfoList) {\n each(foundCpts.geoModels, function (geoModel) {\n var coordSys = geoModel.coordinateSystem;\n targetInfoList.push({\n panelId: 'geo--' + geoModel.id,\n geoModel: geoModel,\n coordSysModel: geoModel,\n coordSys: coordSys,\n coordSyses: [coordSys],\n getPanelRect: panelRectBuilder.geo\n });\n });\n }\n};\nvar targetInfoMatchers = [// grid\nfunction (foundCpts, targetInfo) {\n var xAxisModel = foundCpts.xAxisModel;\n var yAxisModel = foundCpts.yAxisModel;\n var gridModel = foundCpts.gridModel;\n !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model);\n !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model);\n return gridModel && gridModel === targetInfo.gridModel;\n}, // geo\nfunction (foundCpts, targetInfo) {\n var geoModel = foundCpts.geoModel;\n return geoModel && geoModel === targetInfo.geoModel;\n}];\nvar panelRectBuilder = {\n grid: function () {\n // grid is not Transformable.\n return this.coordSys.grid.getRect().clone();\n },\n geo: function () {\n var coordSys = this.coordSys;\n var rect = coordSys.getBoundingRect().clone(); // geo roam and zoom transform\n\n rect.applyTransform(graphic.getTransform(coordSys));\n return rect;\n }\n};\nvar coordConvert = {\n lineX: curry(axisConvert, 0),\n lineY: curry(axisConvert, 1),\n rect: function (to, coordSys, rangeOrCoordRange) {\n var xminymin = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]]);\n var xmaxymax = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]]);\n var values = [formatMinMax([xminymin[0], xmaxymax[0]]), formatMinMax([xminymin[1], xmaxymax[1]])];\n return {\n values: values,\n xyMinMax: values\n };\n },\n polygon: function (to, coordSys, rangeOrCoordRange) {\n var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]];\n var values = zrUtil.map(rangeOrCoordRange, function (item) {\n var p = coordSys[COORD_CONVERTS[to]](item);\n xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]);\n xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]);\n xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]);\n xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]);\n return p;\n });\n return {\n values: values,\n xyMinMax: xyMinMax\n };\n }\n};\n\nfunction axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) {\n var axis = coordSys.getAxis(['x', 'y'][axisNameIndex]);\n var values = formatMinMax(zrUtil.map([0, 1], function (i) {\n return to ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i])) : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i]));\n }));\n var xyMinMax = [];\n xyMinMax[axisNameIndex] = values;\n xyMinMax[1 - axisNameIndex] = [NaN, NaN];\n return {\n values: values,\n xyMinMax: xyMinMax\n };\n}\n\nvar diffProcessor = {\n lineX: curry(axisDiffProcessor, 0),\n lineY: curry(axisDiffProcessor, 1),\n rect: function (values, refer, scales) {\n return [[values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]], [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]];\n },\n polygon: function (values, refer, scales) {\n return zrUtil.map(values, function (item, idx) {\n return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]];\n });\n }\n};\n\nfunction axisDiffProcessor(axisNameIndex, values, refer, scales) {\n return [values[0] - scales[axisNameIndex] * refer[0], values[1] - scales[axisNameIndex] * refer[1]];\n} // We have to process scale caused by dataZoom manually,\n// although it might be not accurate.\n\n\nfunction getScales(xyMinMaxCurr, xyMinMaxOrigin) {\n var sizeCurr = getSize(xyMinMaxCurr);\n var sizeOrigin = getSize(xyMinMaxOrigin);\n var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]];\n isNaN(scales[0]) && (scales[0] = 1);\n isNaN(scales[1]) && (scales[1] = 1);\n return scales;\n}\n\nfunction getSize(xyMinMax) {\n return xyMinMax ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]] : [NaN, NaN];\n}\n\nvar _default = BrushTargetManager;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\nvar ATTR = '\\0_ec_hist_store';\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} newSnapshot {dataZoomId, batch: [payloadInfo, ...]}\n */\n\nfunction push(ecModel, newSnapshot) {\n var store = giveStore(ecModel); // If previous dataZoom can not be found,\n // complete an range with current range.\n\n each(newSnapshot, function (batchItem, dataZoomId) {\n var i = store.length - 1;\n\n for (; i >= 0; i--) {\n var snapshot = store[i];\n\n if (snapshot[dataZoomId]) {\n break;\n }\n }\n\n if (i < 0) {\n // No origin range set, create one by current range.\n var dataZoomModel = ecModel.queryComponents({\n mainType: 'dataZoom',\n subType: 'select',\n id: dataZoomId\n })[0];\n\n if (dataZoomModel) {\n var percentRange = dataZoomModel.getPercentRange();\n store[0][dataZoomId] = {\n dataZoomId: dataZoomId,\n start: percentRange[0],\n end: percentRange[1]\n };\n }\n }\n });\n store.push(newSnapshot);\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n * @return {Object} snapshot\n */\n\n\nfunction pop(ecModel) {\n var store = giveStore(ecModel);\n var head = store[store.length - 1];\n store.length > 1 && store.pop(); // Find top for all dataZoom.\n\n var snapshot = {};\n each(head, function (batchItem, dataZoomId) {\n for (var i = store.length - 1; i >= 0; i--) {\n var batchItem = store[i][dataZoomId];\n\n if (batchItem) {\n snapshot[dataZoomId] = batchItem;\n break;\n }\n }\n });\n return snapshot;\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction clear(ecModel) {\n ecModel[ATTR] = null;\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n * @return {number} records. always >= 1.\n */\n\n\nfunction count(ecModel) {\n return giveStore(ecModel).length;\n}\n/**\n * [{key: dataZoomId, value: {dataZoomId, range}}, ...]\n * History length of each dataZoom may be different.\n * this._history[0] is used to store origin range.\n * @type {Array.}\n */\n\n\nfunction giveStore(ecModel) {\n var store = ecModel[ATTR];\n\n if (!store) {\n store = ecModel[ATTR] = [{}];\n }\n\n return store;\n}\n\nexports.push = push;\nexports.pop = pop;\nexports.clear = clear;\nexports.count = count;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nrequire(\"./legend/LegendModel\");\n\nrequire(\"./legend/legendAction\");\n\nrequire(\"./legend/LegendView\");\n\nvar legendFilter = require(\"./legend/legendFilter\");\n\nvar Component = require(\"../model/Component\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Do not contain scrollable legend, for sake of file size.\n// Series Filter\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter);\nComponent.registerSubTypeDefaulter('legend', function () {\n // Default 'plain' when no type specified.\n return 'plain';\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../../model/Model\");\n\nvar _model = require(\"../../util/model\");\n\nvar isNameSpecified = _model.isNameSpecified;\n\nvar lang = require(\"../../lang\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar langSelector = lang.legend.selector;\nvar defaultSelectorOption = {\n all: {\n type: 'all',\n title: zrUtil.clone(langSelector.all)\n },\n inverse: {\n type: 'inverse',\n title: zrUtil.clone(langSelector.inverse)\n }\n};\nvar LegendModel = echarts.extendComponentModel({\n type: 'legend.plain',\n dependencies: ['series'],\n layoutMode: {\n type: 'box',\n // legend.width/height are maxWidth/maxHeight actually,\n // whereas realy width/height is calculated by its content.\n // (Setting {left: 10, right: 10} does not make sense).\n // So consider the case:\n // `setOption({legend: {left: 10});`\n // then `setOption({legend: {right: 10});`\n // The previous `left` should be cleared by setting `ignoreSize`.\n ignoreSize: true\n },\n init: function (option, parentModel, ecModel) {\n this.mergeDefaultAndTheme(option, ecModel);\n option.selected = option.selected || {};\n\n this._updateSelector(option);\n },\n mergeOption: function (option) {\n LegendModel.superCall(this, 'mergeOption', option);\n\n this._updateSelector(option);\n },\n _updateSelector: function (option) {\n var selector = option.selector;\n\n if (selector === true) {\n selector = option.selector = ['all', 'inverse'];\n }\n\n if (zrUtil.isArray(selector)) {\n zrUtil.each(selector, function (item, index) {\n zrUtil.isString(item) && (item = {\n type: item\n });\n selector[index] = zrUtil.merge(item, defaultSelectorOption[item.type]);\n });\n }\n },\n optionUpdated: function () {\n this._updateData(this.ecModel);\n\n var legendData = this._data; // If selectedMode is single, try to select one\n\n if (legendData[0] && this.get('selectedMode') === 'single') {\n var hasSelected = false; // If has any selected in option.selected\n\n for (var i = 0; i < legendData.length; i++) {\n var name = legendData[i].get('name');\n\n if (this.isSelected(name)) {\n // Force to unselect others\n this.select(name);\n hasSelected = true;\n break;\n }\n } // Try select the first if selectedMode is single\n\n\n !hasSelected && this.select(legendData[0].get('name'));\n }\n },\n _updateData: function (ecModel) {\n var potentialData = [];\n var availableNames = [];\n ecModel.eachRawSeries(function (seriesModel) {\n var seriesName = seriesModel.name;\n availableNames.push(seriesName);\n var isPotential;\n\n if (seriesModel.legendVisualProvider) {\n var provider = seriesModel.legendVisualProvider;\n var names = provider.getAllNames();\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n availableNames = availableNames.concat(names);\n }\n\n if (names.length) {\n potentialData = potentialData.concat(names);\n } else {\n isPotential = true;\n }\n } else {\n isPotential = true;\n }\n\n if (isPotential && isNameSpecified(seriesModel)) {\n potentialData.push(seriesModel.name);\n }\n });\n /**\n * @type {Array.}\n * @private\n */\n\n this._availableNames = availableNames; // If legend.data not specified in option, use availableNames as data,\n // which is convinient for user preparing option.\n\n var rawData = this.get('data') || potentialData;\n var legendData = zrUtil.map(rawData, function (dataItem) {\n // Can be string or number\n if (typeof dataItem === 'string' || typeof dataItem === 'number') {\n dataItem = {\n name: dataItem\n };\n }\n\n return new Model(dataItem, this, this.ecModel);\n }, this);\n /**\n * @type {Array.}\n * @private\n */\n\n this._data = legendData;\n },\n\n /**\n * @return {Array.}\n */\n getData: function () {\n return this._data;\n },\n\n /**\n * @param {string} name\n */\n select: function (name) {\n var selected = this.option.selected;\n var selectedMode = this.get('selectedMode');\n\n if (selectedMode === 'single') {\n var data = this._data;\n zrUtil.each(data, function (dataItem) {\n selected[dataItem.get('name')] = false;\n });\n }\n\n selected[name] = true;\n },\n\n /**\n * @param {string} name\n */\n unSelect: function (name) {\n if (this.get('selectedMode') !== 'single') {\n this.option.selected[name] = false;\n }\n },\n\n /**\n * @param {string} name\n */\n toggleSelected: function (name) {\n var selected = this.option.selected; // Default is true\n\n if (!selected.hasOwnProperty(name)) {\n selected[name] = true;\n }\n\n this[selected[name] ? 'unSelect' : 'select'](name);\n },\n allSelect: function () {\n var data = this._data;\n var selected = this.option.selected;\n zrUtil.each(data, function (dataItem) {\n selected[dataItem.get('name', true)] = true;\n });\n },\n inverseSelect: function () {\n var data = this._data;\n var selected = this.option.selected;\n zrUtil.each(data, function (dataItem) {\n var name = dataItem.get('name', true); // Initially, default value is true\n\n if (!selected.hasOwnProperty(name)) {\n selected[name] = true;\n }\n\n selected[name] = !selected[name];\n });\n },\n\n /**\n * @param {string} name\n */\n isSelected: function (name) {\n var selected = this.option.selected;\n return !(selected.hasOwnProperty(name) && !selected[name]) && zrUtil.indexOf(this._availableNames, name) >= 0;\n },\n getOrient: function () {\n return this.get('orient') === 'vertical' ? {\n index: 1,\n name: 'vertical'\n } : {\n index: 0,\n name: 'horizontal'\n };\n },\n defaultOption: {\n // 一级层叠\n zlevel: 0,\n // 二级层叠\n z: 4,\n show: true,\n // 布局方式,默认为水平布局,可选为:\n // 'horizontal' | 'vertical'\n orient: 'horizontal',\n left: 'center',\n // right: 'center',\n top: 0,\n // bottom: null,\n // 水平对齐\n // 'auto' | 'left' | 'right'\n // 默认为 'auto', 根据 x 的位置判断是左对齐还是右对齐\n align: 'auto',\n backgroundColor: 'rgba(0,0,0,0)',\n // 图例边框颜色\n borderColor: '#ccc',\n borderRadius: 0,\n // 图例边框线宽,单位px,默认为0(无边框)\n borderWidth: 0,\n // 图例内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n padding: 5,\n // 各个item之间的间隔,单位px,默认为10,\n // 横向布局时为水平间隔,纵向布局时为纵向间隔\n itemGap: 10,\n // the width of legend symbol\n itemWidth: 25,\n // the height of legend symbol\n itemHeight: 14,\n // the color of unselected legend symbol\n inactiveColor: '#ccc',\n // the borderColor of unselected legend symbol\n inactiveBorderColor: '#ccc',\n itemStyle: {\n // the default borderWidth of legend symbol\n borderWidth: 0\n },\n textStyle: {\n // 图例文字颜色\n color: '#333'\n },\n // formatter: '',\n // 选择模式,默认开启图例开关\n selectedMode: true,\n // 配置默认选中状态,可配合LEGEND.SELECTED事件做动态数据载入\n // selected: null,\n // 图例内容(详见legend.data,数组中每一项代表一个item\n // data: [],\n // Usage:\n // selector: [{type: 'all or inverse', title: xxx}]\n // or\n // selector: true\n // or\n // selector: ['all', 'inverse']\n selector: false,\n selectorLabel: {\n show: true,\n borderRadius: 10,\n padding: [3, 5, 3, 5],\n fontSize: 12,\n fontFamily: ' sans-serif',\n color: '#666',\n borderWidth: 1,\n borderColor: '#666'\n },\n emphasis: {\n selectorLabel: {\n show: true,\n color: '#eee',\n backgroundColor: '#666'\n }\n },\n // Value can be 'start' or 'end'\n selectorPosition: 'auto',\n selectorItemGap: 7,\n selectorButtonGap: 10,\n // Tooltip 相关配置\n tooltip: {\n show: false\n }\n }\n});\nvar _default = LegendModel;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _listComponent = require(\"../helper/listComponent\");\n\nvar makeBackground = _listComponent.makeBackground;\n\nvar layoutUtil = require(\"../../util/layout\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar curry = zrUtil.curry;\nvar each = zrUtil.each;\nvar Group = graphic.Group;\n\nvar _default = echarts.extendComponentView({\n type: 'legend.plain',\n newlineDisabled: false,\n\n /**\n * @override\n */\n init: function () {\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n this.group.add(this._contentGroup = new Group());\n /**\n * @private\n * @type {module:zrender/Element}\n */\n\n this._backgroundEl;\n /**\n * @private\n * @type {module:zrender/container/Group}\n */\n\n this.group.add(this._selectorGroup = new Group());\n /**\n * If first rendering, `contentGroup.position` is [0, 0], which\n * does not make sense and may cause unexepcted animation if adopted.\n * @private\n * @type {boolean}\n */\n\n this._isFirstRender = true;\n },\n\n /**\n * @protected\n */\n getContentGroup: function () {\n return this._contentGroup;\n },\n\n /**\n * @protected\n */\n getSelectorGroup: function () {\n return this._selectorGroup;\n },\n\n /**\n * @override\n */\n render: function (legendModel, ecModel, api) {\n var isFirstRender = this._isFirstRender;\n this._isFirstRender = false;\n this.resetInner();\n\n if (!legendModel.get('show', true)) {\n return;\n }\n\n var itemAlign = legendModel.get('align');\n var orient = legendModel.get('orient');\n\n if (!itemAlign || itemAlign === 'auto') {\n itemAlign = legendModel.get('left') === 'right' && orient === 'vertical' ? 'right' : 'left';\n }\n\n var selector = legendModel.get('selector', true);\n var selectorPosition = legendModel.get('selectorPosition', true);\n\n if (selector && (!selectorPosition || selectorPosition === 'auto')) {\n selectorPosition = orient === 'horizontal' ? 'end' : 'start';\n }\n\n this.renderInner(itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition); // Perform layout.\n\n var positionInfo = legendModel.getBoxLayoutParams();\n var viewportSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var padding = legendModel.get('padding');\n var maxSize = layoutUtil.getLayoutRect(positionInfo, viewportSize, padding);\n var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition); // Place mainGroup, based on the calculated `mainRect`.\n\n var layoutRect = layoutUtil.getLayoutRect(zrUtil.defaults({\n width: mainRect.width,\n height: mainRect.height\n }, positionInfo), viewportSize, padding);\n this.group.attr('position', [layoutRect.x - mainRect.x, layoutRect.y - mainRect.y]); // Render background after group is layout.\n\n this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel));\n },\n\n /**\n * @protected\n */\n resetInner: function () {\n this.getContentGroup().removeAll();\n this._backgroundEl && this.group.remove(this._backgroundEl);\n this.getSelectorGroup().removeAll();\n },\n\n /**\n * @protected\n */\n renderInner: function (itemAlign, legendModel, ecModel, api, selector, orient, selectorPosition) {\n var contentGroup = this.getContentGroup();\n var legendDrawnMap = zrUtil.createHashMap();\n var selectMode = legendModel.get('selectedMode');\n var excludeSeriesId = [];\n ecModel.eachRawSeries(function (seriesModel) {\n !seriesModel.get('legendHoverLink') && excludeSeriesId.push(seriesModel.id);\n });\n each(legendModel.getData(), function (itemModel, dataIndex) {\n var name = itemModel.get('name'); // Use empty string or \\n as a newline string\n\n if (!this.newlineDisabled && (name === '' || name === '\\n')) {\n contentGroup.add(new Group({\n newline: true\n }));\n return;\n } // Representitive series.\n\n\n var seriesModel = ecModel.getSeriesByName(name)[0];\n\n if (legendDrawnMap.get(name)) {\n // Have been drawed\n return;\n } // Legend to control series.\n\n\n if (seriesModel) {\n var data = seriesModel.getData();\n var color = data.getVisual('color');\n var borderColor = data.getVisual('borderColor'); // If color is a callback function\n\n if (typeof color === 'function') {\n // Use the first data\n color = color(seriesModel.getDataParams(0));\n } // If borderColor is a callback function\n\n\n if (typeof borderColor === 'function') {\n // Use the first data\n borderColor = borderColor(seriesModel.getDataParams(0));\n } // Using rect symbol defaultly\n\n\n var legendSymbolType = data.getVisual('legendSymbol') || 'roundRect';\n var symbolType = data.getVisual('symbol');\n\n var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, selectMode);\n\n itemGroup.on('click', curry(dispatchSelectAction, name, null, api, excludeSeriesId)).on('mouseover', curry(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId));\n legendDrawnMap.set(name, true);\n } else {\n // Legend to control data. In pie and funnel.\n ecModel.eachRawSeries(function (seriesModel) {\n // In case multiple series has same data name\n if (legendDrawnMap.get(name)) {\n return;\n }\n\n if (seriesModel.legendVisualProvider) {\n var provider = seriesModel.legendVisualProvider;\n\n if (!provider.containName(name)) {\n return;\n }\n\n var idx = provider.indexOfName(name);\n var color = provider.getItemVisual(idx, 'color');\n var borderColor = provider.getItemVisual(idx, 'borderColor');\n var legendSymbolType = 'roundRect';\n\n var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, null, itemAlign, color, borderColor, selectMode); // FIXME: consider different series has items with the same name.\n\n\n itemGroup.on('click', curry(dispatchSelectAction, null, name, api, excludeSeriesId)) // Should not specify the series name, consider legend controls\n // more than one pie series.\n .on('mouseover', curry(dispatchHighlightAction, null, name, api, excludeSeriesId)).on('mouseout', curry(dispatchDownplayAction, null, name, api, excludeSeriesId));\n legendDrawnMap.set(name, true);\n }\n }, this);\n }\n }, this);\n\n if (selector) {\n this._createSelector(selector, legendModel, api, orient, selectorPosition);\n }\n },\n _createSelector: function (selector, legendModel, api, orient, selectorPosition) {\n var selectorGroup = this.getSelectorGroup();\n each(selector, function (selectorItem) {\n createSelectorButton(selectorItem);\n });\n\n function createSelectorButton(selectorItem) {\n var type = selectorItem.type;\n var labelText = new graphic.Text({\n style: {\n x: 0,\n y: 0,\n align: 'center',\n verticalAlign: 'middle'\n },\n onclick: function () {\n api.dispatchAction({\n type: type === 'all' ? 'legendAllSelect' : 'legendInverseSelect'\n });\n }\n });\n selectorGroup.add(labelText);\n var labelModel = legendModel.getModel('selectorLabel');\n var emphasisLabelModel = legendModel.getModel('emphasis.selectorLabel');\n graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, emphasisLabelModel, {\n defaultText: selectorItem.title,\n isRectText: false\n });\n graphic.setHoverStyle(labelText);\n }\n },\n _createItem: function (name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, borderColor, selectMode) {\n var itemWidth = legendModel.get('itemWidth');\n var itemHeight = legendModel.get('itemHeight');\n var inactiveColor = legendModel.get('inactiveColor');\n var inactiveBorderColor = legendModel.get('inactiveBorderColor');\n var symbolKeepAspect = legendModel.get('symbolKeepAspect');\n var legendModelItemStyle = legendModel.getModel('itemStyle');\n var isSelected = legendModel.isSelected(name);\n var itemGroup = new Group();\n var textStyleModel = itemModel.getModel('textStyle');\n var itemIcon = itemModel.get('icon');\n var tooltipModel = itemModel.getModel('tooltip');\n var legendGlobalTooltipModel = tooltipModel.parentModel; // Use user given icon first\n\n legendSymbolType = itemIcon || legendSymbolType;\n var legendSymbol = createSymbol(legendSymbolType, 0, 0, itemWidth, itemHeight, isSelected ? color : inactiveColor, // symbolKeepAspect default true for legend\n symbolKeepAspect == null ? true : symbolKeepAspect);\n itemGroup.add(setSymbolStyle(legendSymbol, legendSymbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected)); // Compose symbols\n // PENDING\n\n if (!itemIcon && symbolType // At least show one symbol, can't be all none\n && (symbolType !== legendSymbolType || symbolType === 'none')) {\n var size = itemHeight * 0.8;\n\n if (symbolType === 'none') {\n symbolType = 'circle';\n }\n\n var legendSymbolCenter = createSymbol(symbolType, (itemWidth - size) / 2, (itemHeight - size) / 2, size, size, isSelected ? color : inactiveColor, // symbolKeepAspect default true for legend\n symbolKeepAspect == null ? true : symbolKeepAspect); // Put symbol in the center\n\n itemGroup.add(setSymbolStyle(legendSymbolCenter, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected));\n }\n\n var textX = itemAlign === 'left' ? itemWidth + 5 : -5;\n var textAlign = itemAlign;\n var formatter = legendModel.get('formatter');\n var content = name;\n\n if (typeof formatter === 'string' && formatter) {\n content = formatter.replace('{name}', name != null ? name : '');\n } else if (typeof formatter === 'function') {\n content = formatter(name);\n }\n\n itemGroup.add(new graphic.Text({\n style: graphic.setTextStyle({}, textStyleModel, {\n text: content,\n x: textX,\n y: itemHeight / 2,\n textFill: isSelected ? textStyleModel.getTextColor() : inactiveColor,\n textAlign: textAlign,\n textVerticalAlign: 'middle'\n })\n })); // Add a invisible rect to increase the area of mouse hover\n\n var hitRect = new graphic.Rect({\n shape: itemGroup.getBoundingRect(),\n invisible: true,\n tooltip: tooltipModel.get('show') ? zrUtil.extend({\n content: name,\n // Defaul formatter\n formatter: legendGlobalTooltipModel.get('formatter', true) || function () {\n return name;\n },\n formatterParams: {\n componentType: 'legend',\n legendIndex: legendModel.componentIndex,\n name: name,\n $vars: ['name']\n }\n }, tooltipModel.option) : null\n });\n itemGroup.add(hitRect);\n itemGroup.eachChild(function (child) {\n child.silent = true;\n });\n hitRect.silent = !selectMode;\n this.getContentGroup().add(itemGroup);\n graphic.setHoverStyle(itemGroup);\n itemGroup.__legendDataIndex = dataIndex;\n return itemGroup;\n },\n\n /**\n * @protected\n */\n layoutInner: function (legendModel, itemAlign, maxSize, isFirstRender, selector, selectorPosition) {\n var contentGroup = this.getContentGroup();\n var selectorGroup = this.getSelectorGroup(); // Place items in contentGroup.\n\n layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), maxSize.width, maxSize.height);\n var contentRect = contentGroup.getBoundingRect();\n var contentPos = [-contentRect.x, -contentRect.y];\n\n if (selector) {\n // Place buttons in selectorGroup\n layoutUtil.box( // Buttons in selectorGroup always layout horizontally\n 'horizontal', selectorGroup, legendModel.get('selectorItemGap', true));\n var selectorRect = selectorGroup.getBoundingRect();\n var selectorPos = [-selectorRect.x, -selectorRect.y];\n var selectorButtonGap = legendModel.get('selectorButtonGap', true);\n var orientIdx = legendModel.getOrient().index;\n var wh = orientIdx === 0 ? 'width' : 'height';\n var hw = orientIdx === 0 ? 'height' : 'width';\n var yx = orientIdx === 0 ? 'y' : 'x';\n\n if (selectorPosition === 'end') {\n selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap;\n } else {\n contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap;\n } //Always align selector to content as 'middle'\n\n\n selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2;\n selectorGroup.attr('position', selectorPos);\n contentGroup.attr('position', contentPos);\n var mainRect = {\n x: 0,\n y: 0\n };\n mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh];\n mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]);\n mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]);\n return mainRect;\n } else {\n contentGroup.attr('position', contentPos);\n return this.group.getBoundingRect();\n }\n },\n\n /**\n * @protected\n */\n remove: function () {\n this.getContentGroup().removeAll();\n this._isFirstRender = true;\n }\n});\n\nfunction setSymbolStyle(symbol, symbolType, legendModelItemStyle, borderColor, inactiveBorderColor, isSelected) {\n var itemStyle;\n\n if (symbolType !== 'line' && symbolType.indexOf('empty') < 0) {\n itemStyle = legendModelItemStyle.getItemStyle();\n symbol.style.stroke = borderColor;\n\n if (!isSelected) {\n itemStyle.stroke = inactiveBorderColor;\n }\n } else {\n itemStyle = legendModelItemStyle.getItemStyle(['borderWidth', 'borderColor']);\n }\n\n return symbol.setStyle(itemStyle);\n}\n\nfunction dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) {\n // downplay before unselect\n dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId);\n api.dispatchAction({\n type: 'legendToggleSelect',\n name: seriesName != null ? seriesName : dataName\n }); // highlight after select\n\n dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId);\n}\n\nfunction dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) {\n // If element hover will move to a hoverLayer.\n var el = api.getZr().storage.getDisplayList()[0];\n\n if (!(el && el.useHoverLayer)) {\n api.dispatchAction({\n type: 'highlight',\n seriesName: seriesName,\n name: dataName,\n excludeSeriesId: excludeSeriesId\n });\n }\n}\n\nfunction dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) {\n // If element hover will move to a hoverLayer.\n var el = api.getZr().storage.getDisplayList()[0];\n\n if (!(el && el.useHoverLayer)) {\n api.dispatchAction({\n type: 'downplay',\n seriesName: seriesName,\n name: dataName,\n excludeSeriesId: excludeSeriesId\n });\n }\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nrequire(\"./dataZoom/typeDefaulter\");\n\nrequire(\"./dataZoom/DataZoomModel\");\n\nrequire(\"./dataZoom/DataZoomView\");\n\nrequire(\"./dataZoom/SliderZoomModel\");\n\nrequire(\"./dataZoom/SliderZoomView\");\n\nrequire(\"./dataZoom/dataZoomProcessor\");\n\nrequire(\"./dataZoom/dataZoomAction\");","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nrequire(\"./dataZoom/typeDefaulter\");\n\nrequire(\"./dataZoom/DataZoomModel\");\n\nrequire(\"./dataZoom/DataZoomView\");\n\nrequire(\"./dataZoom/InsideZoomModel\");\n\nrequire(\"./dataZoom/InsideZoomView\");\n\nrequire(\"./dataZoom/dataZoomProcessor\");\n\nrequire(\"./dataZoom/dataZoomAction\");","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar preprocessor = require(\"./visualMap/preprocessor\");\n\nrequire(\"./visualMap/typeDefaulter\");\n\nrequire(\"./visualMap/visualEncoding\");\n\nrequire(\"./visualMap/ContinuousModel\");\n\nrequire(\"./visualMap/ContinuousView\");\n\nrequire(\"./visualMap/visualMapAction\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\n\nfunction _default(option) {\n var visualMap = option && option.visualMap;\n\n if (!zrUtil.isArray(visualMap)) {\n visualMap = visualMap ? [visualMap] : [];\n }\n\n each(visualMap, function (opt) {\n if (!opt) {\n return;\n } // rename splitList to pieces\n\n\n if (has(opt, 'splitList') && !has(opt, 'pieces')) {\n opt.pieces = opt.splitList;\n delete opt.splitList;\n }\n\n var pieces = opt.pieces;\n\n if (pieces && zrUtil.isArray(pieces)) {\n each(pieces, function (piece) {\n if (zrUtil.isObject(piece)) {\n if (has(piece, 'start') && !has(piece, 'min')) {\n piece.min = piece.start;\n }\n\n if (has(piece, 'end') && !has(piece, 'max')) {\n piece.max = piece.end;\n }\n }\n });\n }\n });\n}\n\nfunction has(obj, name) {\n return obj && obj.hasOwnProperty && obj.hasOwnProperty(name);\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar Component = require(\"../../model/Component\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nComponent.registerSubTypeDefaulter('visualMap', function (option) {\n // Compatible with ec2, when splitNumber === 0, continuous visualMap will be used.\n return !option.categories && (!(option.pieces ? option.pieces.length > 0 : option.splitNumber > 0) || option.calculable) ? 'continuous' : 'piecewise';\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar VISUAL_PRIORITY = echarts.PRIORITY.VISUAL.COMPONENT;\necharts.registerVisual(VISUAL_PRIORITY, {\n createOnAllSeries: true,\n reset: function (seriesModel, ecModel) {\n var resetDefines = [];\n ecModel.eachComponent('visualMap', function (visualMapModel) {\n var pipelineContext = seriesModel.pipelineContext;\n\n if (!visualMapModel.isTargetSeries(seriesModel) || pipelineContext && pipelineContext.large) {\n return;\n }\n\n resetDefines.push(visualSolution.incrementalApplyVisual(visualMapModel.stateList, visualMapModel.targetVisuals, zrUtil.bind(visualMapModel.getValueState, visualMapModel), visualMapModel.getDataDimension(seriesModel.getData())));\n });\n return resetDefines;\n }\n}); // Only support color.\n\necharts.registerVisual(VISUAL_PRIORITY, {\n createOnAllSeries: true,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n var visualMetaList = [];\n ecModel.eachComponent('visualMap', function (visualMapModel) {\n if (visualMapModel.isTargetSeries(seriesModel)) {\n var visualMeta = visualMapModel.getVisualMeta(zrUtil.bind(getColorVisual, null, seriesModel, visualMapModel)) || {\n stops: [],\n outerColors: []\n };\n var concreteDim = visualMapModel.getDataDimension(data);\n var dimInfo = data.getDimensionInfo(concreteDim);\n\n if (dimInfo != null) {\n // visualMeta.dimension should be dimension index, but not concrete dimension.\n visualMeta.dimension = dimInfo.index;\n visualMetaList.push(visualMeta);\n }\n }\n }); // console.log(JSON.stringify(visualMetaList.map(a => a.stops)));\n\n seriesModel.getData().setVisual('visualMeta', visualMetaList);\n }\n}); // FIXME\n// performance and export for heatmap?\n// value can be Infinity or -Infinity\n\nfunction getColorVisual(seriesModel, visualMapModel, value, valueState) {\n var mappings = visualMapModel.targetVisuals[valueState];\n var visualTypes = VisualMapping.prepareVisualTypes(mappings);\n var resultVisual = {\n color: seriesModel.getData().getVisual('color') // default color.\n\n };\n\n for (var i = 0, len = visualTypes.length; i < len; i++) {\n var type = visualTypes[i];\n var mapping = mappings[type === 'opacity' ? '__alphaForOpacity' : type];\n mapping && mapping.applyVisual(value, getVisual, setVisual);\n }\n\n return resultVisual.color;\n\n function getVisual(key) {\n return resultVisual[key];\n }\n\n function setVisual(key, value) {\n resultVisual[key] = value;\n }\n}","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar visualDefault = require(\"../../visual/visualDefault\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar numberUtil = require(\"../../util/number\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar mapVisual = VisualMapping.mapVisual;\nvar eachVisual = VisualMapping.eachVisual;\nvar isArray = zrUtil.isArray;\nvar each = zrUtil.each;\nvar asc = numberUtil.asc;\nvar linearMap = numberUtil.linearMap;\nvar noop = zrUtil.noop;\nvar VisualMapModel = echarts.extendComponentModel({\n type: 'visualMap',\n dependencies: ['series'],\n\n /**\n * @readOnly\n * @type {Array.}\n */\n stateList: ['inRange', 'outOfRange'],\n\n /**\n * @readOnly\n * @type {Array.}\n */\n replacableOptionKeys: ['inRange', 'outOfRange', 'target', 'controller', 'color'],\n\n /**\n * [lowerBound, upperBound]\n *\n * @readOnly\n * @type {Array.}\n */\n dataBound: [-Infinity, Infinity],\n\n /**\n * @readOnly\n * @type {string|Object}\n */\n layoutMode: {\n type: 'box',\n ignoreSize: true\n },\n\n /**\n * @protected\n */\n defaultOption: {\n show: true,\n zlevel: 0,\n z: 4,\n seriesIndex: 'all',\n // 'all' or null/undefined: all series.\n // A number or an array of number: the specified series.\n // set min: 0, max: 200, only for campatible with ec2.\n // In fact min max should not have default value.\n min: 0,\n // min value, must specified if pieces is not specified.\n max: 200,\n // max value, must specified if pieces is not specified.\n dimension: null,\n inRange: null,\n // 'color', 'colorHue', 'colorSaturation', 'colorLightness', 'colorAlpha',\n // 'symbol', 'symbolSize'\n outOfRange: null,\n // 'color', 'colorHue', 'colorSaturation',\n // 'colorLightness', 'colorAlpha',\n // 'symbol', 'symbolSize'\n left: 0,\n // 'center' ¦ 'left' ¦ 'right' ¦ {number} (px)\n right: null,\n // The same as left.\n top: null,\n // 'top' ¦ 'bottom' ¦ 'center' ¦ {number} (px)\n bottom: 0,\n // The same as top.\n itemWidth: null,\n itemHeight: null,\n inverse: false,\n orient: 'vertical',\n // 'horizontal' ¦ 'vertical'\n backgroundColor: 'rgba(0,0,0,0)',\n borderColor: '#ccc',\n // 值域边框颜色\n contentColor: '#5793f3',\n inactiveColor: '#aaa',\n borderWidth: 0,\n // 值域边框线宽,单位px,默认为0(无边框)\n padding: 5,\n // 值域内边距,单位px,默认各方向内边距为5,\n // 接受数组分别设定上右下左边距,同css\n textGap: 10,\n //\n precision: 0,\n // 小数精度,默认为0,无小数点\n color: null,\n //颜色(deprecated,兼容ec2,顺序同pieces,不同于inRange/outOfRange)\n formatter: null,\n text: null,\n // 文本,如['高', '低'],兼容ec2,text[0]对应高值,text[1]对应低值\n textStyle: {\n color: '#333' // 值域文字颜色\n\n }\n },\n\n /**\n * @protected\n */\n init: function (option, parentModel, ecModel) {\n /**\n * @private\n * @type {Array.}\n */\n this._dataExtent;\n /**\n * @readOnly\n */\n\n this.targetVisuals = {};\n /**\n * @readOnly\n */\n\n this.controllerVisuals = {};\n /**\n * @readOnly\n */\n\n this.textStyleModel;\n /**\n * [width, height]\n * @readOnly\n * @type {Array.}\n */\n\n this.itemSize;\n this.mergeDefaultAndTheme(option, ecModel);\n },\n\n /**\n * @protected\n */\n optionUpdated: function (newOption, isInit) {\n var thisOption = this.option; // FIXME\n // necessary?\n // Disable realtime view update if canvas is not supported.\n\n if (!env.canvasSupported) {\n thisOption.realtime = false;\n }\n\n !isInit && visualSolution.replaceVisualOption(thisOption, newOption, this.replacableOptionKeys);\n this.textStyleModel = this.getModel('textStyle');\n this.resetItemSize();\n this.completeVisualOption();\n },\n\n /**\n * @protected\n */\n resetVisual: function (supplementVisualOption) {\n var stateList = this.stateList;\n supplementVisualOption = zrUtil.bind(supplementVisualOption, this);\n this.controllerVisuals = visualSolution.createVisualMappings(this.option.controller, stateList, supplementVisualOption);\n this.targetVisuals = visualSolution.createVisualMappings(this.option.target, stateList, supplementVisualOption);\n },\n\n /**\n * @protected\n * @return {Array.} An array of series indices.\n */\n getTargetSeriesIndices: function () {\n var optionSeriesIndex = this.option.seriesIndex;\n var seriesIndices = [];\n\n if (optionSeriesIndex == null || optionSeriesIndex === 'all') {\n this.ecModel.eachSeries(function (seriesModel, index) {\n seriesIndices.push(index);\n });\n } else {\n seriesIndices = modelUtil.normalizeToArray(optionSeriesIndex);\n }\n\n return seriesIndices;\n },\n\n /**\n * @public\n */\n eachTargetSeries: function (callback, context) {\n zrUtil.each(this.getTargetSeriesIndices(), function (seriesIndex) {\n callback.call(context, this.ecModel.getSeriesByIndex(seriesIndex));\n }, this);\n },\n\n /**\n * @pubilc\n */\n isTargetSeries: function (seriesModel) {\n var is = false;\n this.eachTargetSeries(function (model) {\n model === seriesModel && (is = true);\n });\n return is;\n },\n\n /**\n * @example\n * this.formatValueText(someVal); // format single numeric value to text.\n * this.formatValueText(someVal, true); // format single category value to text.\n * this.formatValueText([min, max]); // format numeric min-max to text.\n * this.formatValueText([this.dataBound[0], max]); // using data lower bound.\n * this.formatValueText([min, this.dataBound[1]]); // using data upper bound.\n *\n * @param {number|Array.} value Real value, or this.dataBound[0 or 1].\n * @param {boolean} [isCategory=false] Only available when value is number.\n * @param {Array.} edgeSymbols Open-close symbol when value is interval.\n * @return {string}\n * @protected\n */\n formatValueText: function (value, isCategory, edgeSymbols) {\n var option = this.option;\n var precision = option.precision;\n var dataBound = this.dataBound;\n var formatter = option.formatter;\n var isMinMax;\n var textValue;\n edgeSymbols = edgeSymbols || ['<', '>'];\n\n if (zrUtil.isArray(value)) {\n value = value.slice();\n isMinMax = true;\n }\n\n textValue = isCategory ? value : isMinMax ? [toFixed(value[0]), toFixed(value[1])] : toFixed(value);\n\n if (zrUtil.isString(formatter)) {\n return formatter.replace('{value}', isMinMax ? textValue[0] : textValue).replace('{value2}', isMinMax ? textValue[1] : textValue);\n } else if (zrUtil.isFunction(formatter)) {\n return isMinMax ? formatter(value[0], value[1]) : formatter(value);\n }\n\n if (isMinMax) {\n if (value[0] === dataBound[0]) {\n return edgeSymbols[0] + ' ' + textValue[1];\n } else if (value[1] === dataBound[1]) {\n return edgeSymbols[1] + ' ' + textValue[0];\n } else {\n return textValue[0] + ' - ' + textValue[1];\n }\n } else {\n // Format single value (includes category case).\n return textValue;\n }\n\n function toFixed(val) {\n return val === dataBound[0] ? 'min' : val === dataBound[1] ? 'max' : (+val).toFixed(Math.min(precision, 20));\n }\n },\n\n /**\n * @protected\n */\n resetExtent: function () {\n var thisOption = this.option; // Can not calculate data extent by data here.\n // Because series and data may be modified in processing stage.\n // So we do not support the feature \"auto min/max\".\n\n var extent = asc([thisOption.min, thisOption.max]);\n this._dataExtent = extent;\n },\n\n /**\n * @public\n * @param {module:echarts/data/List} list\n * @return {string} Concrete dimention. If return null/undefined,\n * no dimension used.\n */\n getDataDimension: function (list) {\n var optDim = this.option.dimension;\n var listDimensions = list.dimensions;\n\n if (optDim == null && !listDimensions.length) {\n return;\n }\n\n if (optDim != null) {\n return list.getDimension(optDim);\n }\n\n var dimNames = list.dimensions;\n\n for (var i = dimNames.length - 1; i >= 0; i--) {\n var dimName = dimNames[i];\n var dimInfo = list.getDimensionInfo(dimName);\n\n if (!dimInfo.isCalculationCoord) {\n return dimName;\n }\n }\n },\n\n /**\n * @public\n * @override\n */\n getExtent: function () {\n return this._dataExtent.slice();\n },\n\n /**\n * @protected\n */\n completeVisualOption: function () {\n var ecModel = this.ecModel;\n var thisOption = this.option;\n var base = {\n inRange: thisOption.inRange,\n outOfRange: thisOption.outOfRange\n };\n var target = thisOption.target || (thisOption.target = {});\n var controller = thisOption.controller || (thisOption.controller = {});\n zrUtil.merge(target, base); // Do not override\n\n zrUtil.merge(controller, base); // Do not override\n\n var isCategory = this.isCategory();\n completeSingle.call(this, target);\n completeSingle.call(this, controller);\n completeInactive.call(this, target, 'inRange', 'outOfRange'); // completeInactive.call(this, target, 'outOfRange', 'inRange');\n\n completeController.call(this, controller);\n\n function completeSingle(base) {\n // Compatible with ec2 dataRange.color.\n // The mapping order of dataRange.color is: [high value, ..., low value]\n // whereas inRange.color and outOfRange.color is [low value, ..., high value]\n // Notice: ec2 has no inverse.\n if (isArray(thisOption.color) // If there has been inRange: {symbol: ...}, adding color is a mistake.\n // So adding color only when no inRange defined.\n && !base.inRange) {\n base.inRange = {\n color: thisOption.color.slice().reverse()\n };\n } // Compatible with previous logic, always give a defautl color, otherwise\n // simple config with no inRange and outOfRange will not work.\n // Originally we use visualMap.color as the default color, but setOption at\n // the second time the default color will be erased. So we change to use\n // constant DEFAULT_COLOR.\n // If user do not want the defualt color, set inRange: {color: null}.\n\n\n base.inRange = base.inRange || {\n color: ecModel.get('gradientColor')\n }; // If using shortcut like: {inRange: 'symbol'}, complete default value.\n\n each(this.stateList, function (state) {\n var visualType = base[state];\n\n if (zrUtil.isString(visualType)) {\n var defa = visualDefault.get(visualType, 'active', isCategory);\n\n if (defa) {\n base[state] = {};\n base[state][visualType] = defa;\n } else {\n // Mark as not specified.\n delete base[state];\n }\n }\n }, this);\n }\n\n function completeInactive(base, stateExist, stateAbsent) {\n var optExist = base[stateExist];\n var optAbsent = base[stateAbsent];\n\n if (optExist && !optAbsent) {\n optAbsent = base[stateAbsent] = {};\n each(optExist, function (visualData, visualType) {\n if (!VisualMapping.isValidType(visualType)) {\n return;\n }\n\n var defa = visualDefault.get(visualType, 'inactive', isCategory);\n\n if (defa != null) {\n optAbsent[visualType] = defa; // Compatibable with ec2:\n // Only inactive color to rgba(0,0,0,0) can not\n // make label transparent, so use opacity also.\n\n if (visualType === 'color' && !optAbsent.hasOwnProperty('opacity') && !optAbsent.hasOwnProperty('colorAlpha')) {\n optAbsent.opacity = [0, 0];\n }\n }\n });\n }\n }\n\n function completeController(controller) {\n var symbolExists = (controller.inRange || {}).symbol || (controller.outOfRange || {}).symbol;\n var symbolSizeExists = (controller.inRange || {}).symbolSize || (controller.outOfRange || {}).symbolSize;\n var inactiveColor = this.get('inactiveColor');\n each(this.stateList, function (state) {\n var itemSize = this.itemSize;\n var visuals = controller[state]; // Set inactive color for controller if no other color\n // attr (like colorAlpha) specified.\n\n if (!visuals) {\n visuals = controller[state] = {\n color: isCategory ? inactiveColor : [inactiveColor]\n };\n } // Consistent symbol and symbolSize if not specified.\n\n\n if (visuals.symbol == null) {\n visuals.symbol = symbolExists && zrUtil.clone(symbolExists) || (isCategory ? 'roundRect' : ['roundRect']);\n }\n\n if (visuals.symbolSize == null) {\n visuals.symbolSize = symbolSizeExists && zrUtil.clone(symbolSizeExists) || (isCategory ? itemSize[0] : [itemSize[0], itemSize[0]]);\n } // Filter square and none.\n\n\n visuals.symbol = mapVisual(visuals.symbol, function (symbol) {\n return symbol === 'none' || symbol === 'square' ? 'roundRect' : symbol;\n }); // Normalize symbolSize\n\n var symbolSize = visuals.symbolSize;\n\n if (symbolSize != null) {\n var max = -Infinity; // symbolSize can be object when categories defined.\n\n eachVisual(symbolSize, function (value) {\n value > max && (max = value);\n });\n visuals.symbolSize = mapVisual(symbolSize, function (value) {\n return linearMap(value, [0, max], [0, itemSize[0]], true);\n });\n }\n }, this);\n }\n },\n\n /**\n * @protected\n */\n resetItemSize: function () {\n this.itemSize = [parseFloat(this.get('itemWidth')), parseFloat(this.get('itemHeight'))];\n },\n\n /**\n * @public\n */\n isCategory: function () {\n return !!this.option.categories;\n },\n\n /**\n * @public\n * @abstract\n */\n setSelected: noop,\n\n /**\n * @public\n * @abstract\n * @param {*|module:echarts/data/List} valueOrData\n * @param {number} dataIndex\n * @return {string} state See this.stateList\n */\n getValueState: noop,\n\n /**\n * FIXME\n * Do not publish to thirt-part-dev temporarily\n * util the interface is stable. (Should it return\n * a function but not visual meta?)\n *\n * @pubilc\n * @abstract\n * @param {Function} getColorVisual\n * params: value, valueState\n * return: color\n * @return {Object} visualMeta\n * should includes {stops, outerColors}\n * outerColor means [colorBeyondMinValue, colorBeyondMaxValue]\n */\n getVisualMeta: noop\n});\nvar _default = VisualMapModel;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @file Visual mapping.\n */\nvar visualDefault = {\n /**\n * @public\n */\n get: function (visualType, key, isCategory) {\n var value = zrUtil.clone((defaultOption[visualType] || {})[key]);\n return isCategory ? zrUtil.isArray(value) ? value[value.length - 1] : value : value;\n }\n};\nvar defaultOption = {\n color: {\n active: ['#006edd', '#e0ffff'],\n inactive: ['rgba(0,0,0,0)']\n },\n colorHue: {\n active: [0, 360],\n inactive: [0, 0]\n },\n colorSaturation: {\n active: [0.3, 1],\n inactive: [0, 0]\n },\n colorLightness: {\n active: [0.9, 0.5],\n inactive: [0, 0]\n },\n colorAlpha: {\n active: [0.3, 1],\n inactive: [0, 0]\n },\n opacity: {\n active: [0.3, 1],\n inactive: [0, 0]\n },\n symbol: {\n active: ['circle', 'roundRect', 'diamond'],\n inactive: ['none']\n },\n symbolSize: {\n active: [10, 50],\n inactive: [0, 0]\n }\n};\nvar _default = visualDefault;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar layout = require(\"../../util/layout\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = echarts.extendComponentView({\n type: 'visualMap',\n\n /**\n * @readOnly\n * @type {Object}\n */\n autoPositionValues: {\n left: 1,\n right: 1,\n top: 1,\n bottom: 1\n },\n init: function (ecModel, api) {\n /**\n * @readOnly\n * @type {module:echarts/model/Global}\n */\n this.ecModel = ecModel;\n /**\n * @readOnly\n * @type {module:echarts/ExtensionAPI}\n */\n\n this.api = api;\n /**\n * @readOnly\n * @type {module:echarts/component/visualMap/visualMapModel}\n */\n\n this.visualMapModel;\n },\n\n /**\n * @protected\n */\n render: function (visualMapModel, ecModel, api, payload) {\n this.visualMapModel = visualMapModel;\n\n if (visualMapModel.get('show') === false) {\n this.group.removeAll();\n return;\n }\n\n this.doRender.apply(this, arguments);\n },\n\n /**\n * @protected\n */\n renderBackground: function (group) {\n var visualMapModel = this.visualMapModel;\n var padding = formatUtil.normalizeCssArray(visualMapModel.get('padding') || 0);\n var rect = group.getBoundingRect();\n group.add(new graphic.Rect({\n z2: -1,\n // Lay background rect on the lowest layer.\n silent: true,\n shape: {\n x: rect.x - padding[3],\n y: rect.y - padding[0],\n width: rect.width + padding[3] + padding[1],\n height: rect.height + padding[0] + padding[2]\n },\n style: {\n fill: visualMapModel.get('backgroundColor'),\n stroke: visualMapModel.get('borderColor'),\n lineWidth: visualMapModel.get('borderWidth')\n }\n }));\n },\n\n /**\n * @protected\n * @param {number} targetValue can be Infinity or -Infinity\n * @param {string=} visualCluster Only can be 'color' 'opacity' 'symbol' 'symbolSize'\n * @param {Object} [opts]\n * @param {string=} [opts.forceState] Specify state, instead of using getValueState method.\n * @param {string=} [opts.convertOpacityToAlpha=false] For color gradient in controller widget.\n * @return {*} Visual value.\n */\n getControllerVisual: function (targetValue, visualCluster, opts) {\n opts = opts || {};\n var forceState = opts.forceState;\n var visualMapModel = this.visualMapModel;\n var visualObj = {}; // Default values.\n\n if (visualCluster === 'symbol') {\n visualObj.symbol = visualMapModel.get('itemSymbol');\n }\n\n if (visualCluster === 'color') {\n var defaultColor = visualMapModel.get('contentColor');\n visualObj.color = defaultColor;\n }\n\n function getter(key) {\n return visualObj[key];\n }\n\n function setter(key, value) {\n visualObj[key] = value;\n }\n\n var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)];\n var visualTypes = VisualMapping.prepareVisualTypes(mappings);\n zrUtil.each(visualTypes, function (type) {\n var visualMapping = mappings[type];\n\n if (opts.convertOpacityToAlpha && type === 'opacity') {\n type = 'colorAlpha';\n visualMapping = mappings.__alphaForOpacity;\n }\n\n if (VisualMapping.dependsOn(type, visualCluster)) {\n visualMapping && visualMapping.applyVisual(targetValue, getter, setter);\n }\n });\n return visualObj[visualCluster];\n },\n\n /**\n * @protected\n */\n positionGroup: function (group) {\n var model = this.visualMapModel;\n var api = this.api;\n layout.positionElement(group, model.getBoxLayoutParams(), {\n width: api.getWidth(),\n height: api.getHeight()\n });\n },\n\n /**\n * @protected\n * @abstract\n */\n doRender: zrUtil.noop\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * @param {module:echarts/component/visualMap/VisualMapModel} visualMapModel\\\n * @param {module:echarts/ExtensionAPI} api\n * @param {Array.} itemSize always [short, long]\n * @return {string} 'left' or 'right' or 'top' or 'bottom'\n */\nfunction getItemAlign(visualMapModel, api, itemSize) {\n var modelOption = visualMapModel.option;\n var itemAlign = modelOption.align;\n\n if (itemAlign != null && itemAlign !== 'auto') {\n return itemAlign;\n } // Auto decision align.\n\n\n var ecSize = {\n width: api.getWidth(),\n height: api.getHeight()\n };\n var realIndex = modelOption.orient === 'horizontal' ? 1 : 0;\n var paramsSet = [['left', 'right', 'width'], ['top', 'bottom', 'height']];\n var reals = paramsSet[realIndex];\n var fakeValue = [0, null, 10];\n var layoutInput = {};\n\n for (var i = 0; i < 3; i++) {\n layoutInput[paramsSet[1 - realIndex][i]] = fakeValue[i];\n layoutInput[reals[i]] = i === 2 ? itemSize[0] : modelOption[reals[i]];\n }\n\n var rParam = [['x', 'width', 3], ['y', 'height', 0]][realIndex];\n var rect = getLayoutRect(layoutInput, ecSize, modelOption.padding);\n return reals[(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5 < ecSize[rParam[1]] * 0.5 ? 0 : 1];\n}\n/**\n * Prepare dataIndex for outside usage, where dataIndex means rawIndex, and\n * dataIndexInside means filtered index.\n */\n\n\nfunction makeHighDownBatch(batch, visualMapModel) {\n zrUtil.each(batch || [], function (batchItem) {\n if (batchItem.dataIndex != null) {\n batchItem.dataIndexInside = batchItem.dataIndex;\n batchItem.dataIndex = null;\n }\n\n batchItem.highlightKey = 'visualMap' + (visualMapModel ? visualMapModel.componentIndex : '');\n });\n return batch;\n}\n\nexports.getItemAlign = getItemAlign;\nexports.makeHighDownBatch = makeHighDownBatch;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar actionInfo = {\n type: 'selectDataRange',\n event: 'dataRangeSelected',\n // FIXME use updateView appears wrong\n update: 'update'\n};\necharts.registerAction(actionInfo, function (payload, ecModel) {\n ecModel.eachComponent({\n mainType: 'visualMap',\n query: payload\n }, function (model) {\n model.setSelected(payload.selected);\n });\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar preprocessor = require(\"./visualMap/preprocessor\");\n\nrequire(\"./visualMap/typeDefaulter\");\n\nrequire(\"./visualMap/visualEncoding\");\n\nrequire(\"./visualMap/PiecewiseModel\");\n\nrequire(\"./visualMap/PiecewiseView\");\n\nrequire(\"./visualMap/visualMapAction\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/**\n * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);","var env = require(\"../core/env\");\n\nvar urn = 'urn:schemas-microsoft-com:vml';\nvar win = typeof window === 'undefined' ? null : window;\nvar vmlInited = false;\nvar doc = win && win.document;\n\nfunction createNode(tagName) {\n return doCreateNode(tagName);\n} // Avoid assign to an exported variable, for transforming to cjs.\n\n\nvar doCreateNode;\n\nif (doc && !env.canvasSupported) {\n try {\n !doc.namespaces.zrvml && doc.namespaces.add('zrvml', urn);\n\n doCreateNode = function (tagName) {\n return doc.createElement('');\n };\n } catch (e) {\n doCreateNode = function (tagName) {\n return doc.createElement('<' + tagName + ' xmlns=\"' + urn + '\" class=\"zrvml\">');\n };\n }\n} // From raphael\n\n\nfunction initVML() {\n if (vmlInited || !doc) {\n return;\n }\n\n vmlInited = true;\n var styleSheets = doc.styleSheets;\n\n if (styleSheets.length < 31) {\n doc.createStyleSheet().addRule('.zrvml', 'behavior:url(#default#VML)');\n } else {\n // http://msdn.microsoft.com/en-us/library/ms531194%28VS.85%29.aspx\n styleSheets[0].addRule('.zrvml', 'behavior:url(#default#VML)');\n }\n}\n\nexports.doc = doc;\nexports.createNode = createNode;\nexports.initVML = initVML;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"split\", {\n enumerable: true,\n get: function get() {\n return _split[\"default\"];\n }\n});\nObject.defineProperty(exports, \"diff\", {\n enumerable: true,\n get: function get() {\n return _diff[\"default\"];\n }\n});\nexports[\"default\"] = void 0;\n\nvar _ace = _interopRequireDefault(require(\"./ace.js\"));\n\nvar _split = _interopRequireDefault(require(\"./split.js\"));\n\nvar _diff = _interopRequireDefault(require(\"./diff.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _ace[\"default\"];\nexports[\"default\"] = _default;","/* flatpickr v4.6.3, @license MIT */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.flatpickr = factory());\n}(this, function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n ];\n var defaults = {\n _disable: [],\n _enable: [],\n allowInput: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enable: [],\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false\n };\n\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false\n };\n\n var pad = function (number) { return (\"0\" + number).slice(-2); };\n var int = function (bool) { return (bool === true ? 1 : 0); };\n /* istanbul ignore next */\n function debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n var timeout;\n return function () {\n var context = this, args = arguments;\n timeout !== null && clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n timeout = null;\n if (!immediate)\n func.apply(context, args);\n }, wait);\n if (immediate && !timeout)\n func.apply(context, args);\n };\n }\n var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n };\n\n function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n }\n function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n }\n function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n }\n function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n function getEventTarget(event) {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n\n var doNothing = function () { return undefined; };\n var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n }\n };\n var tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\"\n };\n var formats = {\n // get the date in UTC\n Z: function (date) { return date.toISOString(); },\n // weekday name, short, e.g. Thu\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function (date) { return pad(date.getHours()); },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n // AM/PM\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function (date) { return pad(date.getSeconds()); },\n // unix timestamp\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016\n Y: function (date) { return date.getFullYear(); },\n // day in month, padded (01-30)\n d: function (date) { return pad(date.getDate()); },\n // hour from 1-12 (am/pm)\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n // minutes, padded with leading zero e.g. 09\n i: function (date) { return pad(date.getMinutes()); },\n // day in month (1-30)\n j: function (date) { return date.getDate(); },\n // weekday name, full, e.g. Thursday\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function (date) { return pad(date.getMonth() + 1); },\n // the month number (1-12)\n n: function (date) { return date.getMonth() + 1; },\n // seconds 0-59\n s: function (date) { return date.getSeconds(); },\n // Unix Milliseconds\n u: function (date) { return date.getTime(); },\n // number of the day of the week\n w: function (date) { return date.getDay(); },\n // last two digits of year e.g. 16 for 2016\n y: function (date) { return String(date.getFullYear()).substring(2); }\n };\n\n var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n };\n var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined // timestamp\n )\n // create a copy\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr) // datestrings w/ timezone\n )\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token_1 = format[i];\n var isBackSlash = token_1 === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex]\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\"; // don't really care\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n }\n var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n var duration = {\n DAY: 86400000\n };\n\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n }\n\n var DEBOUNCED_CHANGE_MS = 300;\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign({}, defaults, flatpickr.defaultConfig),\n l10n: english\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n }\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar\n ? self.latestSelectedDateObj || self.config.minDate\n : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n self.showTimeInput =\n self.selectedDates.length > 0 || self.config.noCalendar;\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n \n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n \n However, most browsers are not Safari and positioning is expensive when used\n in scale. https://github.com/chmln/flatpickr/issues/1096\n */\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1)\n return;\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n /**\n * The handler for all events targeting the time inputs\n */\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours())\n minutes = Math.max(minutes, minTime.getMinutes());\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date)\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n function setDefaultHours() {\n var hours = self.config.defaultHour;\n var minutes = self.config.defaultMinute;\n var seconds = self.config.defaultSeconds;\n if (self.config.minDate !== undefined) {\n var minHr = self.config.minDate.getHours();\n var minMinutes = self.config.minDate.getMinutes();\n hours = Math.max(hours, minHr);\n if (hours === minHr)\n minutes = Math.max(minMinutes, minutes);\n if (hours === minHr && minutes === minMinutes)\n seconds = self.config.minDate.getSeconds();\n }\n if (self.config.maxDate !== undefined) {\n var maxHr = self.config.maxDate.getHours();\n var maxMinutes = self.config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = self.config.maxDate.getSeconds();\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Sets the hours, minutes, and optionally seconds\n * of the latest selected date object and the\n * corresponding time inputs\n * @param {Number} hours the hour. whether its military\n * or am-pm gets inferred from config\n * @param {Number} minutes the minutes\n * @param {Number} seconds the seconds (optional)\n */\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n /**\n * Handles the year input and incrementing events\n * @param {Event} event the keyup or increment event\n */\n function onYearInput(event) {\n var year = parseInt(event.target.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n /**\n * Essentially addEventListener + tracking\n * @param {Element} element the element to addEventListener to\n * @param {String} event the event name\n * @param {Function} handler the event handler\n */\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n element: element,\n event: event,\n handler: handler,\n options: options\n });\n }\n /**\n * A mousedown handler which mimics click.\n * Minimizes latency, since we don't need to wait for mouseup in most cases.\n * Also, avoids handling right clicks.\n *\n * @param {Function} handler the event handler\n */\n function onClick(handler) {\n return function (evt) {\n evt.which === 1 && handler(evt);\n };\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\n */\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(e.target);\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", onClick(documentClick));\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"mousedown\", onClick(self.open));\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"mousedown\", onClick(onMonthNavClick));\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"mousedown\", onClick(selectDate));\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return e.target.select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"mousedown\", onClick(timeIncrement));\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"mousedown\", onClick(function (e) {\n updateTime(e);\n triggerChange();\n }));\n }\n }\n }\n /**\n * Set the calendar view to a particular date.\n * @param {Date} jumpDate the date to set the view to\n * @param {boolean} triggerChange if change events should be triggered\n */\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n function timeIncrement(e) {\n if (~e.target.className.indexOf(\"arrow\"))\n incrementNumInput(e, e.target.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n /**\n * Increments/decrements the value of input associ-\n * ated with the up/down arrow by dispatching an\n * \"increment\" event on the input.\n *\n * @param {Event} e the click event\n * @param {Number} delta the diff (usually 1 or -1)\n * @param {Element} inputElem the input element\n */\n function incrementNumInput(e, delta, inputElem) {\n var target = e && e.target;\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined)\n return self._input.focus();\n if (!dayFocused)\n return focusOnDayElem(startElem);\n getNextAvailableDay(startElem, offset);\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12);\n var daysInMonth = self.utils.getDaysInMonth(month), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n // prepend days from the ending of previous month\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n // append days from the next month\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n //updateNavigationCurrentMonth();\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n // TODO: week numbers for each month\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = e.target;\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n }\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n }\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? self.config.defaultHour\n : military2ampm(self.config.defaultHour));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : self.config.defaultMinute);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : self.config.defaultSeconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n // add self.amPM if appropriate\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = self.l10n.weekdays.shorthand.slice();\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n /* istanbul ignore next */\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n self.showTimeInput = false;\n if (self.config.enableTime === true) {\n setDefaultHours();\n }\n self.redraw();\n if (triggerChangeEvent)\n // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n var h = self._handlers[i];\n h.element.removeEventListener(h.event, h.handler, h.options);\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n self.input.value = \"\";\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n // web components\n // e.path is not present in all browsers. circumventing typechecks\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (self.config.enable.length === 0 && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck) // disabled by function\n )\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n // disabled by date\n return bool;\n else if (typeof d === \"string\" && dateToCheck !== undefined) {\n // disabled by date string\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (\n // disabled by range\n typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onKeyDown(e) {\n // e.key e.keyCode\n // \"Backspace\" 8\n // \"Tab\" 9\n // \"Enter\" 13\n // \"Escape\" (IE \"Esc\") 27\n // \"ArrowLeft\" (IE \"Left\") 37\n // \"ArrowUp\" (IE \"Up\") 38\n // \"ArrowRight\" (IE \"Right\") 39\n // \"ArrowDown\" (IE \"Down\") 40\n // \"Delete\" (IE \"Del\") 46\n var isInput = e.target === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return e.target.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(e.target) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(e.target);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27: // escape\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer && e.target.$i !== undefined) ||\n e.target === self.input ||\n e.target === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (e.target === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(e.target);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(e.target) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && e.target === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(e.target)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n var _loop_1 = function (i, l) {\n var dayElem = month.children[i], date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return \"continue\";\n }\n else if (containsDisabled && !outOfRange)\n return \"continue\";\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n };\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function setDefaultTime() {\n self.setDate(self.config.minDate !== undefined\n ? new Date(self.config.minDate.getTime())\n : new Date(), true);\n setDefaultHours();\n updateValue();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n e.target && e.target.blur();\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n if (self._input.disabled || self.config.inline)\n return;\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n }\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n }\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n self.input.className + \" \" + self.config.altInputClass;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\")\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\")\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable.length &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n triggerEvent(\"onParseConfig\");\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign({}, flatpickr.l10ns[\"default\"], (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset +\n inputBounds.left -\n (configPosHorizontal != null && configPosHorizontal === \"center\"\n ? (calendarWidth - inputBounds.width) / 2\n : 0);\n var right = window.document.body.offsetWidth - (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = document.styleSheets[0];\n // some testing environments don't have css support\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(e.target, isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n // unless selecting same date twice, sort ascendingly\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (self.config.enableTime)\n setTimeout(function () { return (self.showTimeInput = true); }, 50);\n // maintain focus\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate]\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(false);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.showTimeInput = self.selectedDates.length > 0;\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate();\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined)\n };\n return rule;\n })\n .filter(function (x) { return x; }); // remove falsy values\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n // Workaround IE11 setting placeholder as the input's value\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n Object.defineProperty(self, \"showTimeInput\", {\n get: function () { return self._showTimeInput; },\n set: function (bool) {\n self._showTimeInput = bool;\n if (self.calendarContainer)\n toggleClass(self.calendarContainer, \"showTimeInput\", bool);\n self.isOpen && positionCalendar();\n }\n });\n }\n function setupInputs() {\n self.input = self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n /* istanbul ignore next */\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n // hack: store previous type to restore it after destroy()\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n // replicate self.element\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.step = self.input.getAttribute(\"step\") || \"any\";\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(e.target.value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n // many front-end frameworks bind to the input event\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var isPrevMonth = self.prevMonthNav.contains(e.target);\n var isNextMonth = self.nextMonthNav.contains(e.target);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(e.target) >= 0) {\n e.target.select();\n }\n else if (e.target.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (e.target.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", input = e.target;\n if (self.amPM !== undefined && e.target === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n }\n /* istanbul ignore next */\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n if (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n var flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n flatpickr.defaultConfig = {};\n flatpickr.l10ns = {\n en: __assign({}, english),\n \"default\": __assign({}, english)\n };\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns[\"default\"] = __assign({}, flatpickr.l10ns[\"default\"], l10n);\n };\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);\n };\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n }\n // eslint-disable-next-line @typescript-eslint/camelcase\n Date.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n };\n if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n\n return flatpickr;\n\n}));\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _addClass.default)(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _removeClass.default)(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, className);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n\n var enterClassName = _this.getClassNames('enter').doneClassName;\n\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n addClass(node, doneClassName);\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n addClass(node, className);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, doneClassName);\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n\n _proto.render = function render() {\n var props = _extends({}, this.props);\n\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * \n *
I appear first
\n *
I replace the above
\n *
\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n\n var child = _react.default.Children.toArray(children)[idx];\n\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) _react.Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.isequal\"));\n\nvar _editorOptions = require(\"./editorOptions.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ace = (0, _editorOptions.getAceInstance)();\n\nvar _ace$acequire = ace.acequire(\"ace/range\"),\n Range = _ace$acequire.Range;\n\nvar ReactAce =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ReactAce, _Component);\n\n function ReactAce(props) {\n var _this;\n\n _classCallCheck(this, ReactAce);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ReactAce).call(this, props));\n\n _editorOptions.editorEvents.forEach(function (method) {\n _this[method] = _this[method].bind(_assertThisInitialized(_this));\n });\n\n _this.debounce = _editorOptions.debounce;\n return _this;\n }\n\n _createClass(ReactAce, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n var _this$props = this.props,\n className = _this$props.className,\n onBeforeLoad = _this$props.onBeforeLoad,\n onValidate = _this$props.onValidate,\n mode = _this$props.mode,\n focus = _this$props.focus,\n theme = _this$props.theme,\n fontSize = _this$props.fontSize,\n value = _this$props.value,\n defaultValue = _this$props.defaultValue,\n cursorStart = _this$props.cursorStart,\n showGutter = _this$props.showGutter,\n wrapEnabled = _this$props.wrapEnabled,\n showPrintMargin = _this$props.showPrintMargin,\n _this$props$scrollMar = _this$props.scrollMargin,\n scrollMargin = _this$props$scrollMar === void 0 ? [0, 0, 0, 0] : _this$props$scrollMar,\n keyboardHandler = _this$props.keyboardHandler,\n onLoad = _this$props.onLoad,\n commands = _this$props.commands,\n annotations = _this$props.annotations,\n markers = _this$props.markers,\n placeholder = _this$props.placeholder;\n this.editor = ace.edit(this.refEditor);\n\n if (onBeforeLoad) {\n onBeforeLoad(ace);\n }\n\n var editorProps = Object.keys(this.props.editorProps);\n\n for (var i = 0; i < editorProps.length; i++) {\n this.editor[editorProps[i]] = this.props.editorProps[editorProps[i]];\n }\n\n if (this.props.debounceChangePeriod) {\n this.onChange = this.debounce(this.onChange, this.props.debounceChangePeriod);\n }\n\n this.editor.renderer.setScrollMargin(scrollMargin[0], scrollMargin[1], scrollMargin[2], scrollMargin[3]);\n this.editor.getSession().setMode(\"ace/mode/\".concat(mode));\n this.editor.setTheme(\"ace/theme/\".concat(theme));\n this.editor.setFontSize(fontSize);\n this.editor.getSession().setValue(!defaultValue ? value : defaultValue, cursorStart);\n\n if (this.props.navigateToFileEnd) {\n this.editor.navigateFileEnd();\n }\n\n this.editor.renderer.setShowGutter(showGutter);\n this.editor.getSession().setUseWrapMode(wrapEnabled);\n this.editor.setShowPrintMargin(showPrintMargin);\n this.editor.on(\"focus\", this.onFocus);\n this.editor.on(\"blur\", this.onBlur);\n this.editor.on(\"copy\", this.onCopy);\n this.editor.on(\"paste\", this.onPaste);\n this.editor.on(\"change\", this.onChange);\n this.editor.on(\"input\", this.onInput);\n\n if (placeholder) {\n this.updatePlaceholder(this.editor, placeholder);\n }\n\n this.editor.getSession().selection.on(\"changeSelection\", this.onSelectionChange);\n this.editor.getSession().selection.on(\"changeCursor\", this.onCursorChange);\n\n if (onValidate) {\n this.editor.getSession().on(\"changeAnnotation\", function () {\n var annotations = _this2.editor.getSession().getAnnotations();\n\n _this2.props.onValidate(annotations);\n });\n }\n\n this.editor.session.on(\"changeScrollTop\", this.onScroll);\n this.editor.getSession().setAnnotations(annotations || []);\n\n if (markers && markers.length > 0) {\n this.handleMarkers(markers);\n } // get a list of possible options to avoid 'misspelled option errors'\n\n\n var availableOptions = this.editor.$options;\n\n for (var _i = 0; _i < _editorOptions.editorOptions.length; _i++) {\n var option = _editorOptions.editorOptions[_i];\n\n if (availableOptions.hasOwnProperty(option)) {\n this.editor.setOption(option, this.props[option]);\n } else if (this.props[option]) {\n console.warn(\"ReactAce: editor option \".concat(option, \" was activated but not found. Did you need to import a related tool or did you possibly mispell the option?\"));\n }\n }\n\n this.handleOptions(this.props);\n\n if (Array.isArray(commands)) {\n commands.forEach(function (command) {\n if (typeof command.exec == \"string\") {\n _this2.editor.commands.bindKey(command.bindKey, command.exec);\n } else {\n _this2.editor.commands.addCommand(command);\n }\n });\n }\n\n if (keyboardHandler) {\n this.editor.setKeyboardHandler(\"ace/keyboard/\" + keyboardHandler);\n }\n\n if (className) {\n this.refEditor.className += \" \" + className;\n }\n\n if (onLoad) {\n onLoad(this.editor);\n }\n\n this.editor.resize();\n\n if (focus) {\n this.editor.focus();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var oldProps = prevProps;\n var nextProps = this.props;\n\n for (var i = 0; i < _editorOptions.editorOptions.length; i++) {\n var option = _editorOptions.editorOptions[i];\n\n if (nextProps[option] !== oldProps[option]) {\n this.editor.setOption(option, nextProps[option]);\n }\n }\n\n if (nextProps.className !== oldProps.className) {\n var appliedClasses = this.refEditor.className;\n var appliedClassesArray = appliedClasses.trim().split(\" \");\n var oldClassesArray = oldProps.className.trim().split(\" \");\n oldClassesArray.forEach(function (oldClass) {\n var index = appliedClassesArray.indexOf(oldClass);\n appliedClassesArray.splice(index, 1);\n });\n this.refEditor.className = \" \" + nextProps.className + \" \" + appliedClassesArray.join(\" \");\n } // First process editor value, as it may create a new session (see issue #300)\n\n\n if (this.editor && this.editor.getValue() !== nextProps.value) {\n // editor.setValue is a synchronous function call, change event is emitted before setValue return.\n this.silent = true;\n var pos = this.editor.session.selection.toJSON();\n this.editor.setValue(nextProps.value, nextProps.cursorStart);\n this.editor.session.selection.fromJSON(pos);\n this.silent = false;\n }\n\n if (nextProps.placeholder !== oldProps.placeholder) {\n this.updatePlaceholder();\n }\n\n if (nextProps.mode !== oldProps.mode) {\n this.editor.getSession().setMode(\"ace/mode/\" + nextProps.mode);\n }\n\n if (nextProps.theme !== oldProps.theme) {\n this.editor.setTheme(\"ace/theme/\" + nextProps.theme);\n }\n\n if (nextProps.keyboardHandler !== oldProps.keyboardHandler) {\n if (nextProps.keyboardHandler) {\n this.editor.setKeyboardHandler(\"ace/keyboard/\" + nextProps.keyboardHandler);\n } else {\n this.editor.setKeyboardHandler(null);\n }\n }\n\n if (nextProps.fontSize !== oldProps.fontSize) {\n this.editor.setFontSize(nextProps.fontSize);\n }\n\n if (nextProps.wrapEnabled !== oldProps.wrapEnabled) {\n this.editor.getSession().setUseWrapMode(nextProps.wrapEnabled);\n }\n\n if (nextProps.showPrintMargin !== oldProps.showPrintMargin) {\n this.editor.setShowPrintMargin(nextProps.showPrintMargin);\n }\n\n if (nextProps.showGutter !== oldProps.showGutter) {\n this.editor.renderer.setShowGutter(nextProps.showGutter);\n }\n\n if (!(0, _lodash[\"default\"])(nextProps.setOptions, oldProps.setOptions)) {\n this.handleOptions(nextProps);\n }\n\n if (!(0, _lodash[\"default\"])(nextProps.annotations, oldProps.annotations)) {\n this.editor.getSession().setAnnotations(nextProps.annotations || []);\n }\n\n if (!(0, _lodash[\"default\"])(nextProps.markers, oldProps.markers) && Array.isArray(nextProps.markers)) {\n this.handleMarkers(nextProps.markers);\n } // this doesn't look like it works at all....\n\n\n if (!(0, _lodash[\"default\"])(nextProps.scrollMargin, oldProps.scrollMargin)) {\n this.handleScrollMargins(nextProps.scrollMargin);\n }\n\n if (prevProps.height !== this.props.height || prevProps.width !== this.props.width) {\n this.editor.resize();\n }\n\n if (this.props.focus && !prevProps.focus) {\n this.editor.focus();\n }\n }\n }, {\n key: \"handleScrollMargins\",\n value: function handleScrollMargins() {\n var margins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [0, 0, 0, 0];\n this.editor.renderer.setScrollMargins(margins[0], margins[1], margins[2], margins[3]);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.editor.destroy();\n this.editor = null;\n }\n }, {\n key: \"onChange\",\n value: function onChange(event) {\n if (this.props.onChange && !this.silent) {\n var value = this.editor.getValue();\n this.props.onChange(value, event);\n }\n }\n }, {\n key: \"onSelectionChange\",\n value: function onSelectionChange(event) {\n if (this.props.onSelectionChange) {\n var value = this.editor.getSelection();\n this.props.onSelectionChange(value, event);\n }\n }\n }, {\n key: \"onCursorChange\",\n value: function onCursorChange(event) {\n if (this.props.onCursorChange) {\n var value = this.editor.getSelection();\n this.props.onCursorChange(value, event);\n }\n }\n }, {\n key: \"onInput\",\n value: function onInput(event) {\n if (this.props.onInput) {\n this.props.onInput(event);\n }\n\n if (this.props.placeholder) {\n this.updatePlaceholder();\n }\n }\n }, {\n key: \"onFocus\",\n value: function onFocus(event) {\n if (this.props.onFocus) {\n this.props.onFocus(event, this.editor);\n }\n }\n }, {\n key: \"onBlur\",\n value: function onBlur(event) {\n if (this.props.onBlur) {\n this.props.onBlur(event, this.editor);\n }\n }\n }, {\n key: \"onCopy\",\n value: function onCopy(text) {\n if (this.props.onCopy) {\n this.props.onCopy(text);\n }\n }\n }, {\n key: \"onPaste\",\n value: function onPaste(text) {\n if (this.props.onPaste) {\n this.props.onPaste(text);\n }\n }\n }, {\n key: \"onScroll\",\n value: function onScroll() {\n if (this.props.onScroll) {\n this.props.onScroll(this.editor);\n }\n }\n }, {\n key: \"handleOptions\",\n value: function handleOptions(props) {\n var setOptions = Object.keys(props.setOptions);\n\n for (var y = 0; y < setOptions.length; y++) {\n this.editor.setOption(setOptions[y], props.setOptions[setOptions[y]]);\n }\n }\n }, {\n key: \"handleMarkers\",\n value: function handleMarkers(markers) {\n var _this3 = this;\n\n // remove foreground markers\n var currentMarkers = this.editor.getSession().getMarkers(true);\n\n for (var i in currentMarkers) {\n if (currentMarkers.hasOwnProperty(i)) {\n this.editor.getSession().removeMarker(currentMarkers[i].id);\n }\n } // remove background markers except active line marker and selected word marker\n\n\n currentMarkers = this.editor.getSession().getMarkers(false);\n\n for (var _i2 in currentMarkers) {\n if (currentMarkers.hasOwnProperty(_i2) && currentMarkers[_i2].clazz !== \"ace_active-line\" && currentMarkers[_i2].clazz !== \"ace_selected-word\") {\n this.editor.getSession().removeMarker(currentMarkers[_i2].id);\n }\n } // add new markers\n\n\n markers.forEach(function (_ref) {\n var startRow = _ref.startRow,\n startCol = _ref.startCol,\n endRow = _ref.endRow,\n endCol = _ref.endCol,\n className = _ref.className,\n type = _ref.type,\n _ref$inFront = _ref.inFront,\n inFront = _ref$inFront === void 0 ? false : _ref$inFront;\n var range = new Range(startRow, startCol, endRow, endCol);\n\n _this3.editor.getSession().addMarker(range, className, type, inFront);\n });\n }\n }, {\n key: \"updatePlaceholder\",\n value: function updatePlaceholder() {\n // Adapted from https://stackoverflow.com/questions/26695708/how-can-i-add-placeholder-text-when-the-editor-is-empty\n var editor = this.editor;\n var placeholder = this.props.placeholder;\n var showPlaceholder = !editor.session.getValue().length;\n var node = editor.renderer.placeholderNode;\n\n if (!showPlaceholder && node) {\n editor.renderer.scroller.removeChild(editor.renderer.placeholderNode);\n editor.renderer.placeholderNode = null;\n } else if (showPlaceholder && !node) {\n node = editor.renderer.placeholderNode = document.createElement(\"div\");\n node.textContent = placeholder || \"\";\n node.className = \"ace_comment ace_placeholder\";\n node.style.padding = \"0 9px\";\n node.style.position = \"absolute\";\n node.style.zIndex = \"3\";\n editor.renderer.scroller.appendChild(node);\n } else if (showPlaceholder && node) {\n node.textContent = placeholder;\n }\n }\n }, {\n key: \"updateRef\",\n value: function updateRef(item) {\n this.refEditor = item;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n name = _this$props2.name,\n width = _this$props2.width,\n height = _this$props2.height,\n style = _this$props2.style;\n\n var divStyle = _objectSpread({\n width: width,\n height: height\n }, style);\n\n return _react[\"default\"].createElement(\"div\", {\n ref: this.updateRef,\n id: name,\n style: divStyle\n });\n }\n }]);\n\n return ReactAce;\n}(_react.Component);\n\nexports[\"default\"] = ReactAce;\nReactAce.propTypes = {\n mode: _propTypes[\"default\"].string,\n focus: _propTypes[\"default\"].bool,\n theme: _propTypes[\"default\"].string,\n name: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string,\n height: _propTypes[\"default\"].string,\n width: _propTypes[\"default\"].string,\n fontSize: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].number, _propTypes[\"default\"].string]),\n showGutter: _propTypes[\"default\"].bool,\n onChange: _propTypes[\"default\"].func,\n onCopy: _propTypes[\"default\"].func,\n onPaste: _propTypes[\"default\"].func,\n onFocus: _propTypes[\"default\"].func,\n onInput: _propTypes[\"default\"].func,\n onBlur: _propTypes[\"default\"].func,\n onScroll: _propTypes[\"default\"].func,\n value: _propTypes[\"default\"].string,\n defaultValue: _propTypes[\"default\"].string,\n onLoad: _propTypes[\"default\"].func,\n onSelectionChange: _propTypes[\"default\"].func,\n onCursorChange: _propTypes[\"default\"].func,\n onBeforeLoad: _propTypes[\"default\"].func,\n onValidate: _propTypes[\"default\"].func,\n minLines: _propTypes[\"default\"].number,\n maxLines: _propTypes[\"default\"].number,\n readOnly: _propTypes[\"default\"].bool,\n highlightActiveLine: _propTypes[\"default\"].bool,\n tabSize: _propTypes[\"default\"].number,\n showPrintMargin: _propTypes[\"default\"].bool,\n cursorStart: _propTypes[\"default\"].number,\n debounceChangePeriod: _propTypes[\"default\"].number,\n editorProps: _propTypes[\"default\"].object,\n setOptions: _propTypes[\"default\"].object,\n style: _propTypes[\"default\"].object,\n scrollMargin: _propTypes[\"default\"].array,\n annotations: _propTypes[\"default\"].array,\n markers: _propTypes[\"default\"].array,\n keyboardHandler: _propTypes[\"default\"].string,\n wrapEnabled: _propTypes[\"default\"].bool,\n enableBasicAutocompletion: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].bool, _propTypes[\"default\"].array]),\n enableLiveAutocompletion: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].bool, _propTypes[\"default\"].array]),\n navigateToFileEnd: _propTypes[\"default\"].bool,\n commands: _propTypes[\"default\"].array,\n placeholder: _propTypes[\"default\"].string\n};\nReactAce.defaultProps = {\n name: \"brace-editor\",\n focus: false,\n mode: \"\",\n theme: \"\",\n height: \"500px\",\n width: \"500px\",\n value: \"\",\n fontSize: 12,\n showGutter: true,\n onChange: null,\n onPaste: null,\n onLoad: null,\n onScroll: null,\n minLines: null,\n maxLines: null,\n readOnly: false,\n highlightActiveLine: true,\n showPrintMargin: true,\n tabSize: 4,\n cursorStart: 1,\n editorProps: {},\n style: {},\n scrollMargin: [0, 0, 0, 0],\n setOptions: {},\n wrapEnabled: false,\n enableBasicAutocompletion: false,\n enableLiveAutocompletion: false,\n placeholder: null,\n navigateToFileEnd: true\n};","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","ace.define(\"ace/split\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/editor\",\"ace/virtual_renderer\",\"ace/edit_session\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar lang = acequire(\"./lib/lang\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\n\nvar Editor = acequire(\"./editor\").Editor;\nvar Renderer = acequire(\"./virtual_renderer\").VirtualRenderer;\nvar EditSession = acequire(\"./edit_session\").EditSession;\n\n\nvar Split = function(container, theme, splits) {\n this.BELOW = 1;\n this.BESIDE = 0;\n\n this.$container = container;\n this.$theme = theme;\n this.$splits = 0;\n this.$editorCSS = \"\";\n this.$editors = [];\n this.$orientation = this.BESIDE;\n\n this.setSplits(splits || 1);\n this.$cEditor = this.$editors[0];\n\n\n this.on(\"focus\", function(editor) {\n this.$cEditor = editor;\n }.bind(this));\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createEditor = function() {\n var el = document.createElement(\"div\");\n el.className = this.$editorCSS;\n el.style.cssText = \"position: absolute; top:0px; bottom:0px\";\n this.$container.appendChild(el);\n var editor = new Editor(new Renderer(el, this.$theme));\n\n editor.on(\"focus\", function() {\n this._emit(\"focus\", editor);\n }.bind(this));\n\n this.$editors.push(editor);\n editor.setFontSize(this.$fontSize);\n return editor;\n };\n\n this.setSplits = function(splits) {\n var editor;\n if (splits < 1) {\n throw \"The number of splits have to be > 0!\";\n }\n\n if (splits == this.$splits) {\n return;\n } else if (splits > this.$splits) {\n while (this.$splits < this.$editors.length && this.$splits < splits) {\n editor = this.$editors[this.$splits];\n this.$container.appendChild(editor.container);\n editor.setFontSize(this.$fontSize);\n this.$splits ++;\n }\n while (this.$splits < splits) {\n this.$createEditor();\n this.$splits ++;\n }\n } else {\n while (this.$splits > splits) {\n editor = this.$editors[this.$splits - 1];\n this.$container.removeChild(editor.container);\n this.$splits --;\n }\n }\n this.resize();\n };\n this.getSplits = function() {\n return this.$splits;\n };\n this.getEditor = function(idx) {\n return this.$editors[idx];\n };\n this.getCurrentEditor = function() {\n return this.$cEditor;\n };\n this.focus = function() {\n this.$cEditor.focus();\n };\n this.blur = function() {\n this.$cEditor.blur();\n };\n this.setTheme = function(theme) {\n this.$editors.forEach(function(editor) {\n editor.setTheme(theme);\n });\n };\n this.setKeyboardHandler = function(keybinding) {\n this.$editors.forEach(function(editor) {\n editor.setKeyboardHandler(keybinding);\n });\n };\n this.forEach = function(callback, scope) {\n this.$editors.forEach(callback, scope);\n };\n\n\n this.$fontSize = \"\";\n this.setFontSize = function(size) {\n this.$fontSize = size;\n this.forEach(function(editor) {\n editor.setFontSize(size);\n });\n };\n\n this.$cloneSession = function(session) {\n var s = new EditSession(session.getDocument(), session.getMode());\n\n var undoManager = session.getUndoManager();\n if (undoManager) {\n var undoManagerProxy = new UndoManagerProxy(undoManager, s);\n s.setUndoManager(undoManagerProxy);\n }\n s.$informUndoManager = lang.delayedCall(function() { s.$deltas = []; });\n s.setTabSize(session.getTabSize());\n s.setUseSoftTabs(session.getUseSoftTabs());\n s.setOverwrite(session.getOverwrite());\n s.setBreakpoints(session.getBreakpoints());\n s.setUseWrapMode(session.getUseWrapMode());\n s.setUseWorker(session.getUseWorker());\n s.setWrapLimitRange(session.$wrapLimitRange.min,\n session.$wrapLimitRange.max);\n s.$foldData = session.$cloneFoldData();\n\n return s;\n };\n this.setSession = function(session, idx) {\n var editor;\n if (idx == null) {\n editor = this.$cEditor;\n } else {\n editor = this.$editors[idx];\n }\n var isUsed = this.$editors.some(function(editor) {\n return editor.session === session;\n });\n\n if (isUsed) {\n session = this.$cloneSession(session);\n }\n editor.setSession(session);\n return session;\n };\n this.getOrientation = function() {\n return this.$orientation;\n };\n this.setOrientation = function(orientation) {\n if (this.$orientation == orientation) {\n return;\n }\n this.$orientation = orientation;\n this.resize();\n };\n this.resize = function() {\n var width = this.$container.clientWidth;\n var height = this.$container.clientHeight;\n var editor;\n\n if (this.$orientation == this.BESIDE) {\n var editorWidth = width / this.$splits;\n for (var i = 0; i < this.$splits; i++) {\n editor = this.$editors[i];\n editor.container.style.width = editorWidth + \"px\";\n editor.container.style.top = \"0px\";\n editor.container.style.left = i * editorWidth + \"px\";\n editor.container.style.height = height + \"px\";\n editor.resize();\n }\n } else {\n var editorHeight = height / this.$splits;\n for (var i = 0; i < this.$splits; i++) {\n editor = this.$editors[i];\n editor.container.style.width = width + \"px\";\n editor.container.style.top = i * editorHeight + \"px\";\n editor.container.style.left = \"0px\";\n editor.container.style.height = editorHeight + \"px\";\n editor.resize();\n }\n }\n };\n\n}).call(Split.prototype);\n\n \nfunction UndoManagerProxy(undoManager, session) {\n this.$u = undoManager;\n this.$doc = session;\n}\n\n(function() {\n this.execute = function(options) {\n this.$u.execute(options);\n };\n\n this.undo = function() {\n var selectionRange = this.$u.undo(true);\n if (selectionRange) {\n this.$doc.selection.setSelectionRange(selectionRange);\n }\n };\n\n this.redo = function() {\n var selectionRange = this.$u.redo(true);\n if (selectionRange) {\n this.$doc.selection.setSelectionRange(selectionRange);\n }\n };\n\n this.reset = function() {\n this.$u.reset();\n };\n\n this.hasUndo = function() {\n return this.$u.hasUndo();\n };\n\n this.hasRedo = function() {\n return this.$u.hasRedo();\n };\n}).call(UndoManagerProxy.prototype);\n\nexports.Split = Split;\n});\n\nace.define(\"ace/ext/split\",[\"require\",\"exports\",\"module\",\"ace/split\"], function(acequire, exports, module) {\n\"use strict\";\nmodule.exports = acequire(\"../split\");\n\n});\n (function() {\n ace.acequire([\"ace/ext/split\"], function() {});\n })();\n ","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _split = _interopRequireDefault(require(\"./split.js\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _diffMatchPatch = _interopRequireDefault(require(\"diff-match-patch\"));\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar DiffComponent =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(DiffComponent, _Component);\n\n function DiffComponent(props) {\n var _this;\n\n _classCallCheck(this, DiffComponent);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(DiffComponent).call(this, props));\n _this.state = {\n value: _this.props.value\n };\n _this.onChange = _this.onChange.bind(_assertThisInitialized(_this));\n _this.diff = _this.diff.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(DiffComponent, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var value = this.props.value;\n\n if (value !== this.state.value) {\n this.setState({\n value: value\n });\n }\n }\n }, {\n key: \"onChange\",\n value: function onChange(value) {\n this.setState({\n value: value\n });\n\n if (this.props.onChange) {\n this.props.onChange(value);\n }\n }\n }, {\n key: \"diff\",\n value: function diff() {\n var dmp = new _diffMatchPatch[\"default\"]();\n var lhString = this.state.value[0];\n var rhString = this.state.value[1];\n\n if (lhString.length === 0 && rhString.length === 0) {\n return [];\n }\n\n var diff = dmp.diff_main(lhString, rhString);\n dmp.diff_cleanupSemantic(diff);\n var diffedLines = this.generateDiffedLines(diff);\n var codeEditorSettings = this.setCodeMarkers(diffedLines);\n return codeEditorSettings;\n }\n }, {\n key: \"generateDiffedLines\",\n value: function generateDiffedLines(diff) {\n var C = {\n DIFF_EQUAL: 0,\n DIFF_DELETE: -1,\n DIFF_INSERT: 1\n };\n var diffedLines = {\n left: [],\n right: []\n };\n var cursor = {\n left: 1,\n right: 1\n };\n diff.forEach(function (chunk) {\n var chunkType = chunk[0];\n var text = chunk[1];\n var lines = text.split('\\n').length - 1; // diff-match-patch sometimes returns empty strings at random\n\n if (text.length === 0) {\n return;\n }\n\n var firstChar = text[0];\n var lastChar = text[text.length - 1];\n var linesToHighlight = 0;\n\n switch (chunkType) {\n case C.DIFF_EQUAL:\n cursor.left += lines;\n cursor.right += lines;\n break;\n\n case C.DIFF_DELETE:\n // If the deletion starts with a newline, push the cursor down to that line\n if (firstChar === '\\n') {\n cursor.left++;\n lines--;\n }\n\n linesToHighlight = lines; // If the deletion does not include a newline, highlight the same line on the right\n\n if (linesToHighlight === 0) {\n diffedLines.right.push({\n startLine: cursor.right,\n endLine: cursor.right\n });\n } // If the last character is a newline, we don't want to highlight that line\n\n\n if (lastChar === '\\n') {\n linesToHighlight -= 1;\n }\n\n diffedLines.left.push({\n startLine: cursor.left,\n endLine: cursor.left + linesToHighlight\n });\n cursor.left += lines;\n break;\n\n case C.DIFF_INSERT:\n // If the insertion starts with a newline, push the cursor down to that line\n if (firstChar === '\\n') {\n cursor.right++;\n lines--;\n }\n\n linesToHighlight = lines; // If the insertion does not include a newline, highlight the same line on the left\n\n if (linesToHighlight === 0) {\n diffedLines.left.push({\n startLine: cursor.left,\n endLine: cursor.left\n });\n } // If the last character is a newline, we don't want to highlight that line\n\n\n if (lastChar === '\\n') {\n linesToHighlight -= 1;\n }\n\n diffedLines.right.push({\n startLine: cursor.right,\n endLine: cursor.right + linesToHighlight\n });\n cursor.right += lines;\n break;\n\n default:\n throw new Error('Diff type was not defined.');\n }\n });\n return diffedLines;\n } // Receives a collection of line numbers and iterates through them to highlight appropriately\n // Returns an object that tells the render() method how to display the code editors\n\n }, {\n key: \"setCodeMarkers\",\n value: function setCodeMarkers() {\n var diffedLines = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n left: [],\n right: []\n };\n var codeEditorSettings = [];\n var newMarkerSet = {\n left: [],\n right: []\n };\n\n for (var i = 0; i < diffedLines.left.length; i++) {\n var markerObj = {\n startRow: diffedLines.left[i].startLine - 1,\n endRow: diffedLines.left[i].endLine,\n type: 'text',\n className: 'codeMarker'\n };\n newMarkerSet.left.push(markerObj);\n }\n\n for (var _i = 0; _i < diffedLines.right.length; _i++) {\n var _markerObj = {\n startRow: diffedLines.right[_i].startLine - 1,\n endRow: diffedLines.right[_i].endLine,\n type: 'text',\n className: 'codeMarker'\n };\n newMarkerSet.right.push(_markerObj);\n }\n\n codeEditorSettings[0] = newMarkerSet.left;\n codeEditorSettings[1] = newMarkerSet.right;\n return codeEditorSettings;\n }\n }, {\n key: \"render\",\n value: function render() {\n var markers = this.diff();\n return _react[\"default\"].createElement(_split[\"default\"], {\n name: this.props.name,\n className: this.props.className,\n focus: this.props.focus,\n orientation: this.props.orientation,\n splits: this.props.splits,\n mode: this.props.mode,\n theme: this.props.theme,\n height: this.props.height,\n width: this.props.width,\n fontSize: this.props.fontSize,\n showGutter: this.props.showGutter,\n onChange: this.onChange,\n onPaste: this.props.onPaste,\n onLoad: this.props.onLoad,\n onScroll: this.props.onScroll,\n minLines: this.props.minLines,\n maxLines: this.props.maxLines,\n readOnly: this.props.readOnly,\n highlightActiveLine: this.props.highlightActiveLine,\n showPrintMargin: this.props.showPrintMargin,\n tabSize: this.props.tabSize,\n cursorStart: this.props.cursorStart,\n editorProps: this.props.editorProps,\n style: this.props.style,\n scrollMargin: this.props.scrollMargin,\n setOptions: this.props.setOptions,\n wrapEnabled: this.props.wrapEnabled,\n enableBasicAutocompletion: this.props.enableBasicAutocompletion,\n enableLiveAutocompletion: this.props.enableLiveAutocompletion,\n value: this.state.value,\n markers: markers\n });\n }\n }]);\n\n return DiffComponent;\n}(_react.Component);\n\nexports[\"default\"] = DiffComponent;\nDiffComponent.propTypes = {\n cursorStart: _propTypes[\"default\"].number,\n editorProps: _propTypes[\"default\"].object,\n enableBasicAutocompletion: _propTypes[\"default\"].bool,\n enableLiveAutocompletion: _propTypes[\"default\"].bool,\n focus: _propTypes[\"default\"].bool,\n fontSize: _propTypes[\"default\"].number,\n height: _propTypes[\"default\"].string,\n highlightActiveLine: _propTypes[\"default\"].bool,\n maxLines: _propTypes[\"default\"].func,\n minLines: _propTypes[\"default\"].func,\n mode: _propTypes[\"default\"].string,\n name: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string,\n onLoad: _propTypes[\"default\"].func,\n onPaste: _propTypes[\"default\"].func,\n onScroll: _propTypes[\"default\"].func,\n onChange: _propTypes[\"default\"].func,\n orientation: _propTypes[\"default\"].string,\n readOnly: _propTypes[\"default\"].bool,\n scrollMargin: _propTypes[\"default\"].array,\n setOptions: _propTypes[\"default\"].object,\n showGutter: _propTypes[\"default\"].bool,\n showPrintMargin: _propTypes[\"default\"].bool,\n splits: _propTypes[\"default\"].number,\n style: _propTypes[\"default\"].object,\n tabSize: _propTypes[\"default\"].number,\n theme: _propTypes[\"default\"].string,\n value: _propTypes[\"default\"].array,\n width: _propTypes[\"default\"].string,\n wrapEnabled: _propTypes[\"default\"].bool\n};\nDiffComponent.defaultProps = {\n cursorStart: 1,\n editorProps: {},\n enableBasicAutocompletion: false,\n enableLiveAutocompletion: false,\n focus: false,\n fontSize: 12,\n height: '500px',\n highlightActiveLine: true,\n maxLines: null,\n minLines: null,\n mode: '',\n name: 'brace-editor',\n onLoad: null,\n onScroll: null,\n onPaste: null,\n onChange: null,\n orientation: 'beside',\n readOnly: false,\n scrollMargin: [0, 0, 0, 0],\n setOptions: {},\n showGutter: true,\n showPrintMargin: true,\n splits: 2,\n style: {},\n tabSize: 4,\n theme: 'github',\n value: ['', ''],\n width: '500px',\n wrapEnabled: true\n};","/**\n * Diff Match and Patch\n * Copyright 2018 The diff-match-patch Authors.\n * https://github.com/google/diff-match-patch\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Computes the difference between two texts to create a patch.\n * Applies the patch onto another text, allowing for errors.\n * @author fraser@google.com (Neil Fraser)\n */\n\n/**\n * Class containing the diff, match and patch methods.\n * @constructor\n */\nfunction diff_match_patch() {\n\n // Defaults.\n // Redefine these in your program to override the defaults.\n\n // Number of seconds to map a diff before giving up (0 for infinity).\n this.Diff_Timeout = 1.0;\n // Cost of an empty edit operation in terms of edit characters.\n this.Diff_EditCost = 4;\n // At what point is no match declared (0.0 = perfection, 1.0 = very loose).\n this.Match_Threshold = 0.5;\n // How far to search for a match (0 = exact location, 1000+ = broad match).\n // A match this many characters away from the expected location will add\n // 1.0 to the score (0.0 is a perfect match).\n this.Match_Distance = 1000;\n // When deleting a large block of text (over ~64 characters), how close do\n // the contents have to be to match the expected contents. (0.0 = perfection,\n // 1.0 = very loose). Note that Match_Threshold controls how closely the\n // end points of a delete need to match.\n this.Patch_DeleteThreshold = 0.5;\n // Chunk size for context length.\n this.Patch_Margin = 4;\n\n // The number of bits in an int.\n this.Match_MaxBits = 32;\n}\n\n\n// DIFF FUNCTIONS\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n/** @typedef {{0: number, 1: string}} */\ndiff_match_patch.Diff;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean=} opt_checklines Optional speedup flag. If present and false,\n * then don't run a line-level diff first to identify the changed areas.\n * Defaults to true, which does a faster, slightly less optimal diff.\n * @param {number} opt_deadline Optional time when the diff should be complete\n * by. Used internally for recursive calls. Users should set DiffTimeout\n * instead.\n * @return {!Array.} Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_main = function(text1, text2, opt_checklines,\n opt_deadline) {\n // Set a deadline by which time the diff must be complete.\n if (typeof opt_deadline == 'undefined') {\n if (this.Diff_Timeout <= 0) {\n opt_deadline = Number.MAX_VALUE;\n } else {\n opt_deadline = (new Date).getTime() + this.Diff_Timeout * 1000;\n }\n }\n var deadline = opt_deadline;\n\n // Check for null inputs.\n if (text1 == null || text2 == null) {\n throw new Error('Null input. (diff_main)');\n }\n\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n if (typeof opt_checklines == 'undefined') {\n opt_checklines = true;\n }\n var checklines = opt_checklines;\n\n // Trim off common prefix (speedup).\n var commonlength = this.diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = this.diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = this.diff_compute_(text1, text2, checklines, deadline);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n this.diff_cleanupMerge(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean} checklines Speedup flag. If false, then don't run a\n * line-level diff first to identify the changed areas.\n * If true, then run a faster, slightly less optimal diff.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_compute_ = function(text1, text2, checklines,\n deadline) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = this.diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline);\n var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n if (checklines && text1.length > 100 && text2.length > 100) {\n return this.diff_lineMode_(text1, text2, deadline);\n }\n\n return this.diff_bisect_(text1, text2, deadline);\n};\n\n\n/**\n * Do a quick line-level diff on both strings, then rediff the parts for\n * greater accuracy.\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_lineMode_ = function(text1, text2, deadline) {\n // Scan the text on a line-by-line basis first.\n var a = this.diff_linesToChars_(text1, text2);\n text1 = a.chars1;\n text2 = a.chars2;\n var linearray = a.lineArray;\n\n var diffs = this.diff_main(text1, text2, false, deadline);\n\n // Convert the diff back to original text.\n this.diff_charsToLines_(diffs, linearray);\n // Eliminate freak matches (e.g. blank lines)\n this.diff_cleanupSemantic(diffs);\n\n // Rediff any replacement blocks, this time character-by-character.\n // Add a dummy entry at the end.\n diffs.push([DIFF_EQUAL, '']);\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete >= 1 && count_insert >= 1) {\n // Delete the offending records and add the merged ones.\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert);\n pointer = pointer - count_delete - count_insert;\n var a = this.diff_main(text_delete, text_insert, false, deadline);\n for (var j = a.length - 1; j >= 0; j--) {\n diffs.splice(pointer, 0, a[j]);\n }\n pointer = pointer + a.length;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n pointer++;\n }\n diffs.pop(); // Remove the dummy entry at the end.\n\n return diffs;\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisect_ = function(text1, text2, deadline) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Bail out if deadline is reached.\n if ((new Date()).getTime() > deadline) {\n break;\n }\n\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisectSplit_ = function(text1, text2, x, y,\n deadline) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = this.diff_main(text1a, text2a, false, deadline);\n var diffsb = this.diff_main(text1b, text2b, false, deadline);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Split two texts into an array of strings. Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {{chars1: string, chars2: string, lineArray: !Array.}}\n * An object containing the encoded text1, the encoded text2 and\n * the array of unique strings.\n * The zeroth element of the array of unique strings is intentionally blank.\n * @private\n */\ndiff_match_patch.prototype.diff_linesToChars_ = function(text1, text2) {\n var lineArray = []; // e.g. lineArray[4] == 'Hello\\n'\n var lineHash = {}; // e.g. lineHash['Hello\\n'] == 4\n\n // '\\x00' is a valid character, but various debuggers don't like it.\n // So we'll insert a junk entry to avoid generating a null character.\n lineArray[0] = '';\n\n /**\n * Split a text into an array of strings. Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * Modifies linearray and linehash through being a closure.\n * @param {string} text String to encode.\n * @return {string} Encoded string.\n * @private\n */\n function diff_linesToCharsMunge_(text) {\n var chars = '';\n // Walk the text, pulling out a substring for each line.\n // text.split('\\n') would would temporarily double our memory footprint.\n // Modifying text would create many large strings to garbage collect.\n var lineStart = 0;\n var lineEnd = -1;\n // Keeping our own length variable is faster than looking it up.\n var lineArrayLength = lineArray.length;\n while (lineEnd < text.length - 1) {\n lineEnd = text.indexOf('\\n', lineStart);\n if (lineEnd == -1) {\n lineEnd = text.length - 1;\n }\n var line = text.substring(lineStart, lineEnd + 1);\n lineStart = lineEnd + 1;\n\n if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) :\n (lineHash[line] !== undefined)) {\n chars += String.fromCharCode(lineHash[line]);\n } else {\n chars += String.fromCharCode(lineArrayLength);\n lineHash[line] = lineArrayLength;\n lineArray[lineArrayLength++] = line;\n }\n }\n return chars;\n }\n\n var chars1 = diff_linesToCharsMunge_(text1);\n var chars2 = diff_linesToCharsMunge_(text2);\n return {chars1: chars1, chars2: chars2, lineArray: lineArray};\n};\n\n\n/**\n * Rehydrate the text in a diff from a string of line hashes to real lines of\n * text.\n * @param {!Array.} diffs Array of diff tuples.\n * @param {!Array.} lineArray Array of unique strings.\n * @private\n */\ndiff_match_patch.prototype.diff_charsToLines_ = function(diffs, lineArray) {\n for (var x = 0; x < diffs.length; x++) {\n var chars = diffs[x][1];\n var text = [];\n for (var y = 0; y < chars.length; y++) {\n text[y] = lineArray[chars.charCodeAt(y)];\n }\n diffs[x][1] = text.join('');\n }\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\ndiff_match_patch.prototype.diff_commonPrefix = function(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\ndiff_match_patch.prototype.diff_commonSuffix = function(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine if the suffix of one string is the prefix of another.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of the first\n * string and the start of the second string.\n * @private\n */\ndiff_match_patch.prototype.diff_commonOverlap_ = function(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n // Eliminate the null case.\n if (text1_length == 0 || text2_length == 0) {\n return 0;\n }\n // Truncate the longer string.\n if (text1_length > text2_length) {\n text1 = text1.substring(text1_length - text2_length);\n } else if (text1_length < text2_length) {\n text2 = text2.substring(0, text1_length);\n }\n var text_length = Math.min(text1_length, text2_length);\n // Quick check for the worst case.\n if (text1 == text2) {\n return text_length;\n }\n\n // Start by looking for a single character match\n // and increase length until no match is found.\n // Performance analysis: http://neil.fraser.name/news/2010/11/04/\n var best = 0;\n var length = 1;\n while (true) {\n var pattern = text1.substring(text_length - length);\n var found = text2.indexOf(pattern);\n if (found == -1) {\n return best;\n }\n length += found;\n if (found == 0 || text1.substring(text_length - length) ==\n text2.substring(0, length)) {\n best = length;\n length++;\n }\n }\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n * @private\n */\ndiff_match_patch.prototype.diff_halfMatch_ = function(text1, text2) {\n if (this.Diff_Timeout <= 0) {\n // Don't risk returning a non-optimal diff if we have unlimited time.\n return null;\n }\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n var dmp = this; // 'this' becomes 'window' in a closure.\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = dmp.diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reduce the number of edits by eliminating semantically trivial equalities.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemantic = function(diffs) {\n var changes = false;\n var equalities = []; // Stack of indices where equalities are found.\n var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n /** @type {?string} */\n var lastequality = null;\n // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n var pointer = 0; // Index of current position.\n // Number of characters that changed prior to the equality.\n var length_insertions1 = 0;\n var length_deletions1 = 0;\n // Number of characters that changed after the equality.\n var length_insertions2 = 0;\n var length_deletions2 = 0;\n while (pointer < diffs.length) {\n if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found.\n equalities[equalitiesLength++] = pointer;\n length_insertions1 = length_insertions2;\n length_deletions1 = length_deletions2;\n length_insertions2 = 0;\n length_deletions2 = 0;\n lastequality = diffs[pointer][1];\n } else { // An insertion or deletion.\n if (diffs[pointer][0] == DIFF_INSERT) {\n length_insertions2 += diffs[pointer][1].length;\n } else {\n length_deletions2 += diffs[pointer][1].length;\n }\n // Eliminate an equality that is smaller or equal to the edits on both\n // sides of it.\n if (lastequality && (lastequality.length <=\n Math.max(length_insertions1, length_deletions1)) &&\n (lastequality.length <= Math.max(length_insertions2,\n length_deletions2))) {\n // Duplicate record.\n diffs.splice(equalities[equalitiesLength - 1], 0,\n [DIFF_DELETE, lastequality]);\n // Change second copy to insert.\n diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n // Throw away the equality we just deleted.\n equalitiesLength--;\n // Throw away the previous equality (it needs to be reevaluated).\n equalitiesLength--;\n pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n length_insertions1 = 0; // Reset the counters.\n length_deletions1 = 0;\n length_insertions2 = 0;\n length_deletions2 = 0;\n lastequality = null;\n changes = true;\n }\n }\n pointer++;\n }\n\n // Normalize the diff.\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n this.diff_cleanupSemanticLossless(diffs);\n\n // Find any overlaps between deletions and insertions.\n // e.g: abcxxxxxxdef\n // -> abcxxxdef\n // e.g: xxxabcdefxxx\n // -> defxxxabc\n // Only extract an overlap if it is as big as the edit ahead or behind it.\n pointer = 1;\n while (pointer < diffs.length) {\n if (diffs[pointer - 1][0] == DIFF_DELETE &&\n diffs[pointer][0] == DIFF_INSERT) {\n var deletion = diffs[pointer - 1][1];\n var insertion = diffs[pointer][1];\n var overlap_length1 = this.diff_commonOverlap_(deletion, insertion);\n var overlap_length2 = this.diff_commonOverlap_(insertion, deletion);\n if (overlap_length1 >= overlap_length2) {\n if (overlap_length1 >= deletion.length / 2 ||\n overlap_length1 >= insertion.length / 2) {\n // Overlap found. Insert an equality and trim the surrounding edits.\n diffs.splice(pointer, 0,\n [DIFF_EQUAL, insertion.substring(0, overlap_length1)]);\n diffs[pointer - 1][1] =\n deletion.substring(0, deletion.length - overlap_length1);\n diffs[pointer + 1][1] = insertion.substring(overlap_length1);\n pointer++;\n }\n } else {\n if (overlap_length2 >= deletion.length / 2 ||\n overlap_length2 >= insertion.length / 2) {\n // Reverse overlap found.\n // Insert an equality and swap and trim the surrounding edits.\n diffs.splice(pointer, 0,\n [DIFF_EQUAL, deletion.substring(0, overlap_length2)]);\n diffs[pointer - 1][0] = DIFF_INSERT;\n diffs[pointer - 1][1] =\n insertion.substring(0, insertion.length - overlap_length2);\n diffs[pointer + 1][0] = DIFF_DELETE;\n diffs[pointer + 1][1] =\n deletion.substring(overlap_length2);\n pointer++;\n }\n }\n pointer++;\n }\n pointer++;\n }\n};\n\n\n/**\n * Look for single edits surrounded on both sides by equalities\n * which can be shifted sideways to align the edit to a word boundary.\n * e.g: The cat came. -> The cat came.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemanticLossless = function(diffs) {\n /**\n * Given two strings, compute a score representing whether the internal\n * boundary falls on logical boundaries.\n * Scores range from 6 (best) to 0 (worst).\n * Closure, but does not reference any external variables.\n * @param {string} one First string.\n * @param {string} two Second string.\n * @return {number} The score.\n * @private\n */\n function diff_cleanupSemanticScore_(one, two) {\n if (!one || !two) {\n // Edges are the best.\n return 6;\n }\n\n // Each port of this function behaves slightly differently due to\n // subtle differences in each language's definition of things like\n // 'whitespace'. Since this function's purpose is largely cosmetic,\n // the choice has been made to use each language's native features\n // rather than force total conformity.\n var char1 = one.charAt(one.length - 1);\n var char2 = two.charAt(0);\n var nonAlphaNumeric1 = char1.match(diff_match_patch.nonAlphaNumericRegex_);\n var nonAlphaNumeric2 = char2.match(diff_match_patch.nonAlphaNumericRegex_);\n var whitespace1 = nonAlphaNumeric1 &&\n char1.match(diff_match_patch.whitespaceRegex_);\n var whitespace2 = nonAlphaNumeric2 &&\n char2.match(diff_match_patch.whitespaceRegex_);\n var lineBreak1 = whitespace1 &&\n char1.match(diff_match_patch.linebreakRegex_);\n var lineBreak2 = whitespace2 &&\n char2.match(diff_match_patch.linebreakRegex_);\n var blankLine1 = lineBreak1 &&\n one.match(diff_match_patch.blanklineEndRegex_);\n var blankLine2 = lineBreak2 &&\n two.match(diff_match_patch.blanklineStartRegex_);\n\n if (blankLine1 || blankLine2) {\n // Five points for blank lines.\n return 5;\n } else if (lineBreak1 || lineBreak2) {\n // Four points for line breaks.\n return 4;\n } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n // Three points for end of sentences.\n return 3;\n } else if (whitespace1 || whitespace2) {\n // Two points for whitespace.\n return 2;\n } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n // One point for non-alphanumeric.\n return 1;\n }\n return 0;\n }\n\n var pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n var equality1 = diffs[pointer - 1][1];\n var edit = diffs[pointer][1];\n var equality2 = diffs[pointer + 1][1];\n\n // First, shift the edit as far left as possible.\n var commonOffset = this.diff_commonSuffix(equality1, edit);\n if (commonOffset) {\n var commonString = edit.substring(edit.length - commonOffset);\n equality1 = equality1.substring(0, equality1.length - commonOffset);\n edit = commonString + edit.substring(0, edit.length - commonOffset);\n equality2 = commonString + equality2;\n }\n\n // Second, step character by character right, looking for the best fit.\n var bestEquality1 = equality1;\n var bestEdit = edit;\n var bestEquality2 = equality2;\n var bestScore = diff_cleanupSemanticScore_(equality1, edit) +\n diff_cleanupSemanticScore_(edit, equality2);\n while (edit.charAt(0) === equality2.charAt(0)) {\n equality1 += edit.charAt(0);\n edit = edit.substring(1) + equality2.charAt(0);\n equality2 = equality2.substring(1);\n var score = diff_cleanupSemanticScore_(equality1, edit) +\n diff_cleanupSemanticScore_(edit, equality2);\n // The >= encourages trailing rather than leading whitespace on edits.\n if (score >= bestScore) {\n bestScore = score;\n bestEquality1 = equality1;\n bestEdit = edit;\n bestEquality2 = equality2;\n }\n }\n\n if (diffs[pointer - 1][1] != bestEquality1) {\n // We have an improvement, save it back to the diff.\n if (bestEquality1) {\n diffs[pointer - 1][1] = bestEquality1;\n } else {\n diffs.splice(pointer - 1, 1);\n pointer--;\n }\n diffs[pointer][1] = bestEdit;\n if (bestEquality2) {\n diffs[pointer + 1][1] = bestEquality2;\n } else {\n diffs.splice(pointer + 1, 1);\n pointer--;\n }\n }\n }\n pointer++;\n }\n};\n\n// Define some regex patterns for matching boundaries.\ndiff_match_patch.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;\ndiff_match_patch.whitespaceRegex_ = /\\s/;\ndiff_match_patch.linebreakRegex_ = /[\\r\\n]/;\ndiff_match_patch.blanklineEndRegex_ = /\\n\\r?\\n$/;\ndiff_match_patch.blanklineStartRegex_ = /^\\r?\\n\\r?\\n/;\n\n/**\n * Reduce the number of edits by eliminating operationally trivial equalities.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupEfficiency = function(diffs) {\n var changes = false;\n var equalities = []; // Stack of indices where equalities are found.\n var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n /** @type {?string} */\n var lastequality = null;\n // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n var pointer = 0; // Index of current position.\n // Is there an insertion operation before the last equality.\n var pre_ins = false;\n // Is there a deletion operation before the last equality.\n var pre_del = false;\n // Is there an insertion operation after the last equality.\n var post_ins = false;\n // Is there a deletion operation after the last equality.\n var post_del = false;\n while (pointer < diffs.length) {\n if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found.\n if (diffs[pointer][1].length < this.Diff_EditCost &&\n (post_ins || post_del)) {\n // Candidate found.\n equalities[equalitiesLength++] = pointer;\n pre_ins = post_ins;\n pre_del = post_del;\n lastequality = diffs[pointer][1];\n } else {\n // Not a candidate, and can never become one.\n equalitiesLength = 0;\n lastequality = null;\n }\n post_ins = post_del = false;\n } else { // An insertion or deletion.\n if (diffs[pointer][0] == DIFF_DELETE) {\n post_del = true;\n } else {\n post_ins = true;\n }\n /*\n * Five types to be split:\n * ABXYCD\n * AXCD\n * ABXC\n * AXCD\n * ABXC\n */\n if (lastequality && ((pre_ins && pre_del && post_ins && post_del) ||\n ((lastequality.length < this.Diff_EditCost / 2) &&\n (pre_ins + pre_del + post_ins + post_del) == 3))) {\n // Duplicate record.\n diffs.splice(equalities[equalitiesLength - 1], 0,\n [DIFF_DELETE, lastequality]);\n // Change second copy to insert.\n diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n equalitiesLength--; // Throw away the equality we just deleted;\n lastequality = null;\n if (pre_ins && pre_del) {\n // No changes made which could affect previous entry, keep going.\n post_ins = post_del = true;\n equalitiesLength = 0;\n } else {\n equalitiesLength--; // Throw away the previous equality.\n pointer = equalitiesLength > 0 ?\n equalities[equalitiesLength - 1] : -1;\n post_ins = post_del = false;\n }\n changes = true;\n }\n }\n pointer++;\n }\n\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupMerge = function(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = this.diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = this.diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n};\n\n\n/**\n * loc is a location in text1, compute and return the equivalent location in\n * text2.\n * e.g. 'The cat' vs 'The big cat', 1->1, 5->8\n * @param {!Array.} diffs Array of diff tuples.\n * @param {number} loc Location within text1.\n * @return {number} Location within text2.\n */\ndiff_match_patch.prototype.diff_xIndex = function(diffs, loc) {\n var chars1 = 0;\n var chars2 = 0;\n var last_chars1 = 0;\n var last_chars2 = 0;\n var x;\n for (x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_INSERT) { // Equality or deletion.\n chars1 += diffs[x][1].length;\n }\n if (diffs[x][0] !== DIFF_DELETE) { // Equality or insertion.\n chars2 += diffs[x][1].length;\n }\n if (chars1 > loc) { // Overshot the location.\n break;\n }\n last_chars1 = chars1;\n last_chars2 = chars2;\n }\n // Was the location was deleted?\n if (diffs.length != x && diffs[x][0] === DIFF_DELETE) {\n return last_chars2;\n }\n // Add the remaining character length.\n return last_chars2 + (loc - last_chars1);\n};\n\n\n/**\n * Convert a diff array into a pretty HTML report.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} HTML representation.\n */\ndiff_match_patch.prototype.diff_prettyHtml = function(diffs) {\n var html = [];\n var pattern_amp = /&/g;\n var pattern_lt = //g;\n var pattern_para = /\\n/g;\n for (var x = 0; x < diffs.length; x++) {\n var op = diffs[x][0]; // Operation (insert, delete, equal)\n var data = diffs[x][1]; // Text of change.\n var text = data.replace(pattern_amp, '&').replace(pattern_lt, '<')\n .replace(pattern_gt, '>').replace(pattern_para, '¶
');\n switch (op) {\n case DIFF_INSERT:\n html[x] = '' + text + '';\n break;\n case DIFF_DELETE:\n html[x] = '' + text + '';\n break;\n case DIFF_EQUAL:\n html[x] = '' + text + '';\n break;\n }\n }\n return html.join('');\n};\n\n\n/**\n * Compute and return the source text (all equalities and deletions).\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Source text.\n */\ndiff_match_patch.prototype.diff_text1 = function(diffs) {\n var text = [];\n for (var x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_INSERT) {\n text[x] = diffs[x][1];\n }\n }\n return text.join('');\n};\n\n\n/**\n * Compute and return the destination text (all equalities and insertions).\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Destination text.\n */\ndiff_match_patch.prototype.diff_text2 = function(diffs) {\n var text = [];\n for (var x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_DELETE) {\n text[x] = diffs[x][1];\n }\n }\n return text.join('');\n};\n\n\n/**\n * Compute the Levenshtein distance; the number of inserted, deleted or\n * substituted characters.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {number} Number of changes.\n */\ndiff_match_patch.prototype.diff_levenshtein = function(diffs) {\n var levenshtein = 0;\n var insertions = 0;\n var deletions = 0;\n for (var x = 0; x < diffs.length; x++) {\n var op = diffs[x][0];\n var data = diffs[x][1];\n switch (op) {\n case DIFF_INSERT:\n insertions += data.length;\n break;\n case DIFF_DELETE:\n deletions += data.length;\n break;\n case DIFF_EQUAL:\n // A deletion and an insertion is one substitution.\n levenshtein += Math.max(insertions, deletions);\n insertions = 0;\n deletions = 0;\n break;\n }\n }\n levenshtein += Math.max(insertions, deletions);\n return levenshtein;\n};\n\n\n/**\n * Crush the diff into an encoded string which describes the operations\n * required to transform text1 into text2.\n * E.g. =3\\t-2\\t+ing -> Keep 3 chars, delete 2 chars, insert 'ing'.\n * Operations are tab-separated. Inserted text is escaped using %xx notation.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Delta text.\n */\ndiff_match_patch.prototype.diff_toDelta = function(diffs) {\n var text = [];\n for (var x = 0; x < diffs.length; x++) {\n switch (diffs[x][0]) {\n case DIFF_INSERT:\n text[x] = '+' + encodeURI(diffs[x][1]);\n break;\n case DIFF_DELETE:\n text[x] = '-' + diffs[x][1].length;\n break;\n case DIFF_EQUAL:\n text[x] = '=' + diffs[x][1].length;\n break;\n }\n }\n return text.join('\\t').replace(/%20/g, ' ');\n};\n\n\n/**\n * Given the original text1, and an encoded string which describes the\n * operations required to transform text1 into text2, compute the full diff.\n * @param {string} text1 Source string for the diff.\n * @param {string} delta Delta text.\n * @return {!Array.} Array of diff tuples.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.diff_fromDelta = function(text1, delta) {\n var diffs = [];\n var diffsLength = 0; // Keeping our own length var is faster in JS.\n var pointer = 0; // Cursor in text1\n var tokens = delta.split(/\\t/g);\n for (var x = 0; x < tokens.length; x++) {\n // Each token begins with a one character parameter which specifies the\n // operation of this token (delete, insert, equality).\n var param = tokens[x].substring(1);\n switch (tokens[x].charAt(0)) {\n case '+':\n try {\n diffs[diffsLength++] = [DIFF_INSERT, decodeURI(param)];\n } catch (ex) {\n // Malformed URI sequence.\n throw new Error('Illegal escape in diff_fromDelta: ' + param);\n }\n break;\n case '-':\n // Fall through.\n case '=':\n var n = parseInt(param, 10);\n if (isNaN(n) || n < 0) {\n throw new Error('Invalid number in diff_fromDelta: ' + param);\n }\n var text = text1.substring(pointer, pointer += n);\n if (tokens[x].charAt(0) == '=') {\n diffs[diffsLength++] = [DIFF_EQUAL, text];\n } else {\n diffs[diffsLength++] = [DIFF_DELETE, text];\n }\n break;\n default:\n // Blank tokens are ok (from a trailing \\t).\n // Anything else is an error.\n if (tokens[x]) {\n throw new Error('Invalid diff operation in diff_fromDelta: ' +\n tokens[x]);\n }\n }\n }\n if (pointer != text1.length) {\n throw new Error('Delta length (' + pointer +\n ') does not equal source text length (' + text1.length + ').');\n }\n return diffs;\n};\n\n\n// MATCH FUNCTIONS\n\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc'.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n */\ndiff_match_patch.prototype.match_main = function(text, pattern, loc) {\n // Check for null inputs.\n if (text == null || pattern == null || loc == null) {\n throw new Error('Null input. (match_main)');\n }\n\n loc = Math.max(0, Math.min(loc, text.length));\n if (text == pattern) {\n // Shortcut (potentially not guaranteed by the algorithm)\n return 0;\n } else if (!text.length) {\n // Nothing to match.\n return -1;\n } else if (text.substring(loc, loc + pattern.length) == pattern) {\n // Perfect match at the perfect spot! (Includes case of null pattern)\n return loc;\n } else {\n // Do a fuzzy compare.\n return this.match_bitap_(text, pattern, loc);\n }\n};\n\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc' using the\n * Bitap algorithm.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n * @private\n */\ndiff_match_patch.prototype.match_bitap_ = function(text, pattern, loc) {\n if (pattern.length > this.Match_MaxBits) {\n throw new Error('Pattern too long for this browser.');\n }\n\n // Initialise the alphabet.\n var s = this.match_alphabet_(pattern);\n\n var dmp = this; // 'this' becomes 'window' in a closure.\n\n /**\n * Compute and return the score for a match with e errors and x location.\n * Accesses loc and pattern through being a closure.\n * @param {number} e Number of errors in match.\n * @param {number} x Location of match.\n * @return {number} Overall score for match (0.0 = good, 1.0 = bad).\n * @private\n */\n function match_bitapScore_(e, x) {\n var accuracy = e / pattern.length;\n var proximity = Math.abs(loc - x);\n if (!dmp.Match_Distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy;\n }\n return accuracy + (proximity / dmp.Match_Distance);\n }\n\n // Highest score beyond which we give up.\n var score_threshold = this.Match_Threshold;\n // Is there a nearby exact match? (speedup)\n var best_loc = text.indexOf(pattern, loc);\n if (best_loc != -1) {\n score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);\n // What about in the other direction? (speedup)\n best_loc = text.lastIndexOf(pattern, loc + pattern.length);\n if (best_loc != -1) {\n score_threshold =\n Math.min(match_bitapScore_(0, best_loc), score_threshold);\n }\n }\n\n // Initialise the bit arrays.\n var matchmask = 1 << (pattern.length - 1);\n best_loc = -1;\n\n var bin_min, bin_mid;\n var bin_max = pattern.length + text.length;\n var last_rd;\n for (var d = 0; d < pattern.length; d++) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from 'loc' we can stray at this\n // error level.\n bin_min = 0;\n bin_mid = bin_max;\n while (bin_min < bin_mid) {\n if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {\n bin_min = bin_mid;\n } else {\n bin_max = bin_mid;\n }\n bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);\n }\n // Use the result from this iteration as the maximum for the next.\n bin_max = bin_mid;\n var start = Math.max(1, loc - bin_mid + 1);\n var finish = Math.min(loc + bin_mid, text.length) + pattern.length;\n\n var rd = Array(finish + 2);\n rd[finish + 1] = (1 << d) - 1;\n for (var j = finish; j >= start; j--) {\n // The alphabet (s) is a sparse hash, so the following line generates\n // warnings.\n var charMatch = s[text.charAt(j - 1)];\n if (d === 0) { // First pass: exact match.\n rd[j] = ((rd[j + 1] << 1) | 1) & charMatch;\n } else { // Subsequent passes: fuzzy match.\n rd[j] = (((rd[j + 1] << 1) | 1) & charMatch) |\n (((last_rd[j + 1] | last_rd[j]) << 1) | 1) |\n last_rd[j + 1];\n }\n if (rd[j] & matchmask) {\n var score = match_bitapScore_(d, j - 1);\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (score <= score_threshold) {\n // Told you so.\n score_threshold = score;\n best_loc = j - 1;\n if (best_loc > loc) {\n // When passing loc, don't exceed our current distance from loc.\n start = Math.max(1, 2 * loc - best_loc);\n } else {\n // Already passed loc, downhill from here on in.\n break;\n }\n }\n }\n }\n // No hope for a (better) match at greater error levels.\n if (match_bitapScore_(d + 1, loc) > score_threshold) {\n break;\n }\n last_rd = rd;\n }\n return best_loc;\n};\n\n\n/**\n * Initialise the alphabet for the Bitap algorithm.\n * @param {string} pattern The text to encode.\n * @return {!Object} Hash of character locations.\n * @private\n */\ndiff_match_patch.prototype.match_alphabet_ = function(pattern) {\n var s = {};\n for (var i = 0; i < pattern.length; i++) {\n s[pattern.charAt(i)] = 0;\n }\n for (var i = 0; i < pattern.length; i++) {\n s[pattern.charAt(i)] |= 1 << (pattern.length - i - 1);\n }\n return s;\n};\n\n\n// PATCH FUNCTIONS\n\n\n/**\n * Increase the context until it is unique,\n * but don't let the pattern expand beyond Match_MaxBits.\n * @param {!diff_match_patch.patch_obj} patch The patch to grow.\n * @param {string} text Source text.\n * @private\n */\ndiff_match_patch.prototype.patch_addContext_ = function(patch, text) {\n if (text.length == 0) {\n return;\n }\n var pattern = text.substring(patch.start2, patch.start2 + patch.length1);\n var padding = 0;\n\n // Look for the first and last matches of pattern in text. If two different\n // matches are found, increase the pattern length.\n while (text.indexOf(pattern) != text.lastIndexOf(pattern) &&\n pattern.length < this.Match_MaxBits - this.Patch_Margin -\n this.Patch_Margin) {\n padding += this.Patch_Margin;\n pattern = text.substring(patch.start2 - padding,\n patch.start2 + patch.length1 + padding);\n }\n // Add one chunk for good luck.\n padding += this.Patch_Margin;\n\n // Add the prefix.\n var prefix = text.substring(patch.start2 - padding, patch.start2);\n if (prefix) {\n patch.diffs.unshift([DIFF_EQUAL, prefix]);\n }\n // Add the suffix.\n var suffix = text.substring(patch.start2 + patch.length1,\n patch.start2 + patch.length1 + padding);\n if (suffix) {\n patch.diffs.push([DIFF_EQUAL, suffix]);\n }\n\n // Roll back the start points.\n patch.start1 -= prefix.length;\n patch.start2 -= prefix.length;\n // Extend the lengths.\n patch.length1 += prefix.length + suffix.length;\n patch.length2 += prefix.length + suffix.length;\n};\n\n\n/**\n * Compute a list of patches to turn text1 into text2.\n * Use diffs if provided, otherwise compute it ourselves.\n * There are four ways to call this function, depending on what data is\n * available to the caller:\n * Method 1:\n * a = text1, b = text2\n * Method 2:\n * a = diffs\n * Method 3 (optimal):\n * a = text1, b = diffs\n * Method 4 (deprecated, use method 3):\n * a = text1, b = text2, c = diffs\n *\n * @param {string|!Array.} a text1 (methods 1,3,4) or\n * Array of diff tuples for text1 to text2 (method 2).\n * @param {string|!Array.} opt_b text2 (methods 1,4) or\n * Array of diff tuples for text1 to text2 (method 3) or undefined (method 2).\n * @param {string|!Array.} opt_c Array of diff tuples\n * for text1 to text2 (method 4) or undefined (methods 1,2,3).\n * @return {!Array.} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_make = function(a, opt_b, opt_c) {\n var text1, diffs;\n if (typeof a == 'string' && typeof opt_b == 'string' &&\n typeof opt_c == 'undefined') {\n // Method 1: text1, text2\n // Compute diffs from text1 and text2.\n text1 = /** @type {string} */(a);\n diffs = this.diff_main(text1, /** @type {string} */(opt_b), true);\n if (diffs.length > 2) {\n this.diff_cleanupSemantic(diffs);\n this.diff_cleanupEfficiency(diffs);\n }\n } else if (a && typeof a == 'object' && typeof opt_b == 'undefined' &&\n typeof opt_c == 'undefined') {\n // Method 2: diffs\n // Compute text1 from diffs.\n diffs = /** @type {!Array.} */(a);\n text1 = this.diff_text1(diffs);\n } else if (typeof a == 'string' && opt_b && typeof opt_b == 'object' &&\n typeof opt_c == 'undefined') {\n // Method 3: text1, diffs\n text1 = /** @type {string} */(a);\n diffs = /** @type {!Array.} */(opt_b);\n } else if (typeof a == 'string' && typeof opt_b == 'string' &&\n opt_c && typeof opt_c == 'object') {\n // Method 4: text1, text2, diffs\n // text2 is not used.\n text1 = /** @type {string} */(a);\n diffs = /** @type {!Array.} */(opt_c);\n } else {\n throw new Error('Unknown call format to patch_make.');\n }\n\n if (diffs.length === 0) {\n return []; // Get rid of the null case.\n }\n var patches = [];\n var patch = new diff_match_patch.patch_obj();\n var patchDiffLength = 0; // Keeping our own length var is faster in JS.\n var char_count1 = 0; // Number of characters into the text1 string.\n var char_count2 = 0; // Number of characters into the text2 string.\n // Start with text1 (prepatch_text) and apply the diffs until we arrive at\n // text2 (postpatch_text). We recreate the patches one by one to determine\n // context info.\n var prepatch_text = text1;\n var postpatch_text = text1;\n for (var x = 0; x < diffs.length; x++) {\n var diff_type = diffs[x][0];\n var diff_text = diffs[x][1];\n\n if (!patchDiffLength && diff_type !== DIFF_EQUAL) {\n // A new patch starts here.\n patch.start1 = char_count1;\n patch.start2 = char_count2;\n }\n\n switch (diff_type) {\n case DIFF_INSERT:\n patch.diffs[patchDiffLength++] = diffs[x];\n patch.length2 += diff_text.length;\n postpatch_text = postpatch_text.substring(0, char_count2) + diff_text +\n postpatch_text.substring(char_count2);\n break;\n case DIFF_DELETE:\n patch.length1 += diff_text.length;\n patch.diffs[patchDiffLength++] = diffs[x];\n postpatch_text = postpatch_text.substring(0, char_count2) +\n postpatch_text.substring(char_count2 +\n diff_text.length);\n break;\n case DIFF_EQUAL:\n if (diff_text.length <= 2 * this.Patch_Margin &&\n patchDiffLength && diffs.length != x + 1) {\n // Small equality inside a patch.\n patch.diffs[patchDiffLength++] = diffs[x];\n patch.length1 += diff_text.length;\n patch.length2 += diff_text.length;\n } else if (diff_text.length >= 2 * this.Patch_Margin) {\n // Time for a new patch.\n if (patchDiffLength) {\n this.patch_addContext_(patch, prepatch_text);\n patches.push(patch);\n patch = new diff_match_patch.patch_obj();\n patchDiffLength = 0;\n // Unlike Unidiff, our patch lists have a rolling context.\n // http://code.google.com/p/google-diff-match-patch/wiki/Unidiff\n // Update prepatch text & pos to reflect the application of the\n // just completed patch.\n prepatch_text = postpatch_text;\n char_count1 = char_count2;\n }\n }\n break;\n }\n\n // Update the current character count.\n if (diff_type !== DIFF_INSERT) {\n char_count1 += diff_text.length;\n }\n if (diff_type !== DIFF_DELETE) {\n char_count2 += diff_text.length;\n }\n }\n // Pick up the leftover patch if not empty.\n if (patchDiffLength) {\n this.patch_addContext_(patch, prepatch_text);\n patches.push(patch);\n }\n\n return patches;\n};\n\n\n/**\n * Given an array of patches, return another array that is identical.\n * @param {!Array.} patches Array of Patch objects.\n * @return {!Array.} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_deepCopy = function(patches) {\n // Making deep copies is hard in JavaScript.\n var patchesCopy = [];\n for (var x = 0; x < patches.length; x++) {\n var patch = patches[x];\n var patchCopy = new diff_match_patch.patch_obj();\n patchCopy.diffs = [];\n for (var y = 0; y < patch.diffs.length; y++) {\n patchCopy.diffs[y] = patch.diffs[y].slice();\n }\n patchCopy.start1 = patch.start1;\n patchCopy.start2 = patch.start2;\n patchCopy.length1 = patch.length1;\n patchCopy.length2 = patch.length2;\n patchesCopy[x] = patchCopy;\n }\n return patchesCopy;\n};\n\n\n/**\n * Merge a set of patches onto the text. Return a patched text, as well\n * as a list of true/false values indicating which patches were applied.\n * @param {!Array.} patches Array of Patch objects.\n * @param {string} text Old text.\n * @return {!Array.>} Two element Array, containing the\n * new text and an array of boolean values.\n */\ndiff_match_patch.prototype.patch_apply = function(patches, text) {\n if (patches.length == 0) {\n return [text, []];\n }\n\n // Deep copy the patches so that no changes are made to originals.\n patches = this.patch_deepCopy(patches);\n\n var nullPadding = this.patch_addPadding(patches);\n text = nullPadding + text + nullPadding;\n\n this.patch_splitMax(patches);\n // delta keeps track of the offset between the expected and actual location\n // of the previous patch. If there are patches expected at positions 10 and\n // 20, but the first patch was found at 12, delta is 2 and the second patch\n // has an effective expected position of 22.\n var delta = 0;\n var results = [];\n for (var x = 0; x < patches.length; x++) {\n var expected_loc = patches[x].start2 + delta;\n var text1 = this.diff_text1(patches[x].diffs);\n var start_loc;\n var end_loc = -1;\n if (text1.length > this.Match_MaxBits) {\n // patch_splitMax will only provide an oversized pattern in the case of\n // a monster delete.\n start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits),\n expected_loc);\n if (start_loc != -1) {\n end_loc = this.match_main(text,\n text1.substring(text1.length - this.Match_MaxBits),\n expected_loc + text1.length - this.Match_MaxBits);\n if (end_loc == -1 || start_loc >= end_loc) {\n // Can't find valid trailing context. Drop this patch.\n start_loc = -1;\n }\n }\n } else {\n start_loc = this.match_main(text, text1, expected_loc);\n }\n if (start_loc == -1) {\n // No match found. :(\n results[x] = false;\n // Subtract the delta for this failed patch from subsequent patches.\n delta -= patches[x].length2 - patches[x].length1;\n } else {\n // Found a match. :)\n results[x] = true;\n delta = start_loc - expected_loc;\n var text2;\n if (end_loc == -1) {\n text2 = text.substring(start_loc, start_loc + text1.length);\n } else {\n text2 = text.substring(start_loc, end_loc + this.Match_MaxBits);\n }\n if (text1 == text2) {\n // Perfect match, just shove the replacement text in.\n text = text.substring(0, start_loc) +\n this.diff_text2(patches[x].diffs) +\n text.substring(start_loc + text1.length);\n } else {\n // Imperfect match. Run a diff to get a framework of equivalent\n // indices.\n var diffs = this.diff_main(text1, text2, false);\n if (text1.length > this.Match_MaxBits &&\n this.diff_levenshtein(diffs) / text1.length >\n this.Patch_DeleteThreshold) {\n // The end points match, but the content is unacceptably bad.\n results[x] = false;\n } else {\n this.diff_cleanupSemanticLossless(diffs);\n var index1 = 0;\n var index2;\n for (var y = 0; y < patches[x].diffs.length; y++) {\n var mod = patches[x].diffs[y];\n if (mod[0] !== DIFF_EQUAL) {\n index2 = this.diff_xIndex(diffs, index1);\n }\n if (mod[0] === DIFF_INSERT) { // Insertion\n text = text.substring(0, start_loc + index2) + mod[1] +\n text.substring(start_loc + index2);\n } else if (mod[0] === DIFF_DELETE) { // Deletion\n text = text.substring(0, start_loc + index2) +\n text.substring(start_loc + this.diff_xIndex(diffs,\n index1 + mod[1].length));\n }\n if (mod[0] !== DIFF_DELETE) {\n index1 += mod[1].length;\n }\n }\n }\n }\n }\n }\n // Strip the padding off.\n text = text.substring(nullPadding.length, text.length - nullPadding.length);\n return [text, results];\n};\n\n\n/**\n * Add some padding on text start and end so that edges can match something.\n * Intended to be called only from within patch_apply.\n * @param {!Array.} patches Array of Patch objects.\n * @return {string} The padding string added to each side.\n */\ndiff_match_patch.prototype.patch_addPadding = function(patches) {\n var paddingLength = this.Patch_Margin;\n var nullPadding = '';\n for (var x = 1; x <= paddingLength; x++) {\n nullPadding += String.fromCharCode(x);\n }\n\n // Bump all the patches forward.\n for (var x = 0; x < patches.length; x++) {\n patches[x].start1 += paddingLength;\n patches[x].start2 += paddingLength;\n }\n\n // Add some padding on start of first diff.\n var patch = patches[0];\n var diffs = patch.diffs;\n if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) {\n // Add nullPadding equality.\n diffs.unshift([DIFF_EQUAL, nullPadding]);\n patch.start1 -= paddingLength; // Should be 0.\n patch.start2 -= paddingLength; // Should be 0.\n patch.length1 += paddingLength;\n patch.length2 += paddingLength;\n } else if (paddingLength > diffs[0][1].length) {\n // Grow first equality.\n var extraLength = paddingLength - diffs[0][1].length;\n diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1];\n patch.start1 -= extraLength;\n patch.start2 -= extraLength;\n patch.length1 += extraLength;\n patch.length2 += extraLength;\n }\n\n // Add some padding on end of last diff.\n patch = patches[patches.length - 1];\n diffs = patch.diffs;\n if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) {\n // Add nullPadding equality.\n diffs.push([DIFF_EQUAL, nullPadding]);\n patch.length1 += paddingLength;\n patch.length2 += paddingLength;\n } else if (paddingLength > diffs[diffs.length - 1][1].length) {\n // Grow last equality.\n var extraLength = paddingLength - diffs[diffs.length - 1][1].length;\n diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength);\n patch.length1 += extraLength;\n patch.length2 += extraLength;\n }\n\n return nullPadding;\n};\n\n\n/**\n * Look through the patches and break up any which are longer than the maximum\n * limit of the match algorithm.\n * Intended to be called only from within patch_apply.\n * @param {!Array.} patches Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_splitMax = function(patches) {\n var patch_size = this.Match_MaxBits;\n for (var x = 0; x < patches.length; x++) {\n if (patches[x].length1 <= patch_size) {\n continue;\n }\n var bigpatch = patches[x];\n // Remove the big old patch.\n patches.splice(x--, 1);\n var start1 = bigpatch.start1;\n var start2 = bigpatch.start2;\n var precontext = '';\n while (bigpatch.diffs.length !== 0) {\n // Create one of several smaller patches.\n var patch = new diff_match_patch.patch_obj();\n var empty = true;\n patch.start1 = start1 - precontext.length;\n patch.start2 = start2 - precontext.length;\n if (precontext !== '') {\n patch.length1 = patch.length2 = precontext.length;\n patch.diffs.push([DIFF_EQUAL, precontext]);\n }\n while (bigpatch.diffs.length !== 0 &&\n patch.length1 < patch_size - this.Patch_Margin) {\n var diff_type = bigpatch.diffs[0][0];\n var diff_text = bigpatch.diffs[0][1];\n if (diff_type === DIFF_INSERT) {\n // Insertions are harmless.\n patch.length2 += diff_text.length;\n start2 += diff_text.length;\n patch.diffs.push(bigpatch.diffs.shift());\n empty = false;\n } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 &&\n patch.diffs[0][0] == DIFF_EQUAL &&\n diff_text.length > 2 * patch_size) {\n // This is a large deletion. Let it pass in one chunk.\n patch.length1 += diff_text.length;\n start1 += diff_text.length;\n empty = false;\n patch.diffs.push([diff_type, diff_text]);\n bigpatch.diffs.shift();\n } else {\n // Deletion or equality. Only take as much as we can stomach.\n diff_text = diff_text.substring(0,\n patch_size - patch.length1 - this.Patch_Margin);\n patch.length1 += diff_text.length;\n start1 += diff_text.length;\n if (diff_type === DIFF_EQUAL) {\n patch.length2 += diff_text.length;\n start2 += diff_text.length;\n } else {\n empty = false;\n }\n patch.diffs.push([diff_type, diff_text]);\n if (diff_text == bigpatch.diffs[0][1]) {\n bigpatch.diffs.shift();\n } else {\n bigpatch.diffs[0][1] =\n bigpatch.diffs[0][1].substring(diff_text.length);\n }\n }\n }\n // Compute the head context for the next patch.\n precontext = this.diff_text2(patch.diffs);\n precontext =\n precontext.substring(precontext.length - this.Patch_Margin);\n // Append the end context for this patch.\n var postcontext = this.diff_text1(bigpatch.diffs)\n .substring(0, this.Patch_Margin);\n if (postcontext !== '') {\n patch.length1 += postcontext.length;\n patch.length2 += postcontext.length;\n if (patch.diffs.length !== 0 &&\n patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) {\n patch.diffs[patch.diffs.length - 1][1] += postcontext;\n } else {\n patch.diffs.push([DIFF_EQUAL, postcontext]);\n }\n }\n if (!empty) {\n patches.splice(++x, 0, patch);\n }\n }\n }\n};\n\n\n/**\n * Take a list of patches and return a textual representation.\n * @param {!Array.} patches Array of Patch objects.\n * @return {string} Text representation of patches.\n */\ndiff_match_patch.prototype.patch_toText = function(patches) {\n var text = [];\n for (var x = 0; x < patches.length; x++) {\n text[x] = patches[x];\n }\n return text.join('');\n};\n\n\n/**\n * Parse a textual representation of patches and return a list of Patch objects.\n * @param {string} textline Text representation of patches.\n * @return {!Array.} Array of Patch objects.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.patch_fromText = function(textline) {\n var patches = [];\n if (!textline) {\n return patches;\n }\n var text = textline.split('\\n');\n var textPointer = 0;\n var patchHeader = /^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;\n while (textPointer < text.length) {\n var m = text[textPointer].match(patchHeader);\n if (!m) {\n throw new Error('Invalid patch string: ' + text[textPointer]);\n }\n var patch = new diff_match_patch.patch_obj();\n patches.push(patch);\n patch.start1 = parseInt(m[1], 10);\n if (m[2] === '') {\n patch.start1--;\n patch.length1 = 1;\n } else if (m[2] == '0') {\n patch.length1 = 0;\n } else {\n patch.start1--;\n patch.length1 = parseInt(m[2], 10);\n }\n\n patch.start2 = parseInt(m[3], 10);\n if (m[4] === '') {\n patch.start2--;\n patch.length2 = 1;\n } else if (m[4] == '0') {\n patch.length2 = 0;\n } else {\n patch.start2--;\n patch.length2 = parseInt(m[4], 10);\n }\n textPointer++;\n\n while (textPointer < text.length) {\n var sign = text[textPointer].charAt(0);\n try {\n var line = decodeURI(text[textPointer].substring(1));\n } catch (ex) {\n // Malformed URI sequence.\n throw new Error('Illegal escape in patch_fromText: ' + line);\n }\n if (sign == '-') {\n // Deletion.\n patch.diffs.push([DIFF_DELETE, line]);\n } else if (sign == '+') {\n // Insertion.\n patch.diffs.push([DIFF_INSERT, line]);\n } else if (sign == ' ') {\n // Minor equality.\n patch.diffs.push([DIFF_EQUAL, line]);\n } else if (sign == '@') {\n // Start of next patch.\n break;\n } else if (sign === '') {\n // Blank line? Whatever.\n } else {\n // WTF?\n throw new Error('Invalid patch mode \"' + sign + '\" in: ' + line);\n }\n textPointer++;\n }\n }\n return patches;\n};\n\n\n/**\n * Class representing one patch operation.\n * @constructor\n */\ndiff_match_patch.patch_obj = function() {\n /** @type {!Array.} */\n this.diffs = [];\n /** @type {?number} */\n this.start1 = null;\n /** @type {?number} */\n this.start2 = null;\n /** @type {number} */\n this.length1 = 0;\n /** @type {number} */\n this.length2 = 0;\n};\n\n\n/**\n * Emmulate GNU diff's format.\n * Header: @@ -382,8 +481,9 @@\n * Indicies are printed as 1-based, not 0-based.\n * @return {string} The GNU diff string.\n */\ndiff_match_patch.patch_obj.prototype.toString = function() {\n var coords1, coords2;\n if (this.length1 === 0) {\n coords1 = this.start1 + ',0';\n } else if (this.length1 == 1) {\n coords1 = this.start1 + 1;\n } else {\n coords1 = (this.start1 + 1) + ',' + this.length1;\n }\n if (this.length2 === 0) {\n coords2 = this.start2 + ',0';\n } else if (this.length2 == 1) {\n coords2 = this.start2 + 1;\n } else {\n coords2 = (this.start2 + 1) + ',' + this.length2;\n }\n var text = ['@@ -' + coords1 + ' +' + coords2 + ' @@\\n'];\n var op;\n // Escape the body of the patch with %xx notation.\n for (var x = 0; x < this.diffs.length; x++) {\n switch (this.diffs[x][0]) {\n case DIFF_INSERT:\n op = '+';\n break;\n case DIFF_DELETE:\n op = '-';\n break;\n case DIFF_EQUAL:\n op = ' ';\n break;\n }\n text[x + 1] = op + encodeURI(this.diffs[x][1]) + '\\n';\n }\n return text.join('').replace(/%20/g, ' ');\n};\n\n\n// The following export code was added by @ForbesLindesay\nmodule.exports = diff_match_patch;\nmodule.exports['diff_match_patch'] = diff_match_patch;\nmodule.exports['DIFF_DELETE'] = DIFF_DELETE;\nmodule.exports['DIFF_INSERT'] = DIFF_INSERT;\nmodule.exports['DIFF_EQUAL'] = DIFF_EQUAL;","ace.define(\"ace/mode/doc_comment_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar DocCommentHighlightRules = function() {\n this.$rules = {\n \"start\" : [ {\n token : \"comment.doc.tag\",\n regex : \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n }, \n DocCommentHighlightRules.getTagRule(),\n {\n defaultToken : \"comment.doc\",\n caseInsensitive: true\n }]\n };\n};\n\noop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\nDocCommentHighlightRules.getTagRule = function(start) {\n return {\n token : \"comment.doc.tag.storage.type\",\n regex : \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n};\n\nDocCommentHighlightRules.getStartRule = function(start) {\n return {\n token : \"comment.doc\", // doc comment\n regex : \"\\\\/\\\\*(?=\\\\*)\",\n next : start\n };\n};\n\nDocCommentHighlightRules.getEndRule = function (start) {\n return {\n token : \"comment.doc\", // closing comment\n regex : \"\\\\*\\\\/\",\n next : start\n };\n};\n\n\nexports.DocCommentHighlightRules = DocCommentHighlightRules;\n\n});\n\nace.define(\"ace/mode/javascript_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/doc_comment_highlight_rules\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar identifierRe = \"[a-zA-Z\\\\$_\\u00a1-\\uffff][a-zA-Z\\\\d\\\\$_\\u00a1-\\uffff]*\";\n\nvar JavaScriptHighlightRules = function(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\":\n \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" +\n \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" +\n \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" +\n \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" +\n \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\" , // Pseudo\n \"keyword\":\n \"const|yield|import|get|set|async|await|\" +\n \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" +\n \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" +\n \"__parent__|__count__|escape|unescape|with|__proto__|\" +\n \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\":\n \"const|let|var|function\",\n \"constant.language\":\n \"null|Infinity|NaN|undefined\",\n \"support.function\":\n \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n\n this.$rules = {\n \"no_regex\" : [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"no_regex\"),\n {\n token : \"string\",\n regex : \"'(?=.)\",\n next : \"qstring\"\n }, {\n token : \"string\",\n regex : '\"(?=.)',\n next : \"qqstring\"\n }, {\n token : \"constant.numeric\", // hexadecimal, octal and binary\n regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token : \"constant.numeric\", // decimal integers and floats\n regex : /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"support.function\",\n \"punctuation.operator\", \"entity.name.function\", \"text\",\"keyword.operator\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\",\n \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"entity.name.function\", \"text\", \"punctuation.operator\",\n \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : [\n \"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"\n ],\n regex : \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"keyword\",\n regex : \"from(?=\\\\s*('|\\\"))\"\n }, {\n token : \"keyword\",\n regex : \"(?:\" + kwBeforeRe + \")\\\\b\",\n next : \"start\"\n }, {\n token : [\"support.constant\"],\n regex : /that\\b/\n }, {\n token : [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex : /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token : keywordMapper,\n regex : identifierRe\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/,\n next : \"property\"\n }, {\n token : \"storage.type\",\n regex : /=>/\n }, {\n token : \"keyword.operator\",\n regex : /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next : \"start\"\n }, {\n token : \"punctuation.operator\",\n regex : /[?:,;.]/,\n next : \"start\"\n }, {\n token : \"paren.lparen\",\n regex : /[\\[({]/,\n next : \"start\"\n }, {\n token : \"paren.rparen\",\n regex : /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }\n ],\n property: [{\n token : \"text\",\n regex : \"\\\\s+\"\n }, {\n token : [\n \"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\",\n \"keyword.operator\", \"text\",\n \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"\n ],\n regex : \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe +\")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token : \"punctuation.operator\",\n regex : /[.](?![.])/\n }, {\n token : \"support.function\",\n regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token : \"support.function.dom\",\n regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token : \"support.constant\",\n regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token : \"identifier\",\n regex : identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }\n ],\n \"start\": [\n DocCommentHighlightRules.getStartRule(\"doc-start\"),\n comments(\"start\"),\n {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token : \"text\",\n regex : \"\\\\s+|^$\",\n next : \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"regex\": [\n {\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token : \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token : \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token : \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }\n ],\n \"regex_character_class\": [\n {\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }\n ],\n \"function_arguments\": [\n {\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }\n ],\n \"qqstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : '\"|$',\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ],\n \"qstring\" : [\n {\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"string\",\n regex : \"\\\\\\\\$\",\n consumeLineEnd : true\n }, {\n token : \"string\",\n regex : \"'|$\",\n next : \"no_regex\"\n }, {\n defaultToken: \"string\"\n }\n ]\n };\n\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\", onMatch: function(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n }\n else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1)\n return \"paren.quasi.end\";\n }\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token : \"string.quasi.start\",\n regex : /`/,\n push : [{\n token : \"constant.language.escape\",\n regex : escapedRe\n }, {\n token : \"paren.quasi.start\",\n regex : /\\${/,\n push : \"start\"\n }, {\n token : \"string.quasi.end\",\n regex : /`/,\n next : \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n\n if (!options || options.jsx != false)\n JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\",\n [ DocCommentHighlightRules.getEndRule(\"no_regex\") ]);\n\n this.normalizeRules();\n};\n\noop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\nfunction JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch : function(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n if (offset == 1) {\n if (state != this.nextState)\n stack.unshift(this.next, this.nextState, 0);\n else\n stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex : \"\",\n onMatch : function(value, currentState, stack) {\n if (currentState == stack[0])\n stack.shift();\n if (value.length == 2) {\n if (stack[0] == this.nextState)\n stack[1]--;\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n this.next = stack[0] || \"start\";\n return [{type: this.token, value: value}];\n },\n nextState: \"jsx\"\n },\n jsxJsRule,\n comments(\"jsxAttributes\"),\n {\n token : \"entity.other.attribute-name.xml\",\n regex : tagRegex\n }, {\n token : \"keyword.operator.attribute-equals.xml\",\n regex : \"=\"\n }, {\n token : \"text.tag-whitespace.xml\",\n regex : \"\\\\s+\"\n }, {\n token : \"string.attribute-value.xml\",\n regex : \"'\",\n stateName : \"jsx_attr_q\",\n push : [\n {token : \"string.attribute-value.xml\", regex: \"'\", next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n }, {\n token : \"string.attribute-value.xml\",\n regex : '\"',\n stateName : \"jsx_attr_qq\",\n push : [\n {token : \"string.attribute-value.xml\", regex: '\"', next: \"pop\"},\n {include : \"reference\"},\n {defaultToken : \"string.attribute-value.xml\"}\n ]\n },\n jsxTag\n ];\n this.$rules.reference = [{\n token : \"constant.language.escape.reference.xml\",\n regex : \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n}\n\nfunction comments(next) {\n return [\n {\n token : \"comment\", // multi line comment\n regex : /\\/\\*/,\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"\\\\*\\\\/\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }, {\n token : \"comment\",\n regex : \"\\\\/\\\\/\",\n next: [\n DocCommentHighlightRules.getTagRule(),\n {token : \"comment\", regex : \"$|^\", next : next || \"pop\"},\n {defaultToken : \"comment\", caseInsensitive: true}\n ]\n }\n ];\n}\nexports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/javascript\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/javascript_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/behaviour/cstyle\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = JavaScriptHighlightRules;\n \n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.lineCommentStart = \"//\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n this.$quotes = {'\"': '\"', \"'\": \"'\", \"`\": \"`\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n var match = line.match(/^\\s*(\\/?)\\*/);\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(results) {\n session.setAnnotations(results.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","module.exports.id = 'ace/mode/javascript_worker';\nmodule.exports.src = \"\\\"no use strict\\\";!function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\\\"\\\";testPath;){var alias=paths[testPath];if(\\\"string\\\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\\\/*$/,\\\"/\\\")+(tail||alias.main||alias.name);if(alias===!1)return\\\"\\\";var i=testPath.lastIndexOf(\\\"/\\\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\\\"log\\\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\\\"error\\\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\\\"!\\\")){var chunks=moduleName.split(\\\"!\\\");return window.normalizeModule(parentId,chunks[0])+\\\"!\\\"+window.normalizeModule(parentId,chunks[1])}if(\\\".\\\"==moduleName.charAt(0)){var base=parentId.split(\\\"/\\\").slice(0,-1).join(\\\"/\\\");for(moduleName=(base?base+\\\"/\\\":\\\"\\\")+moduleName;-1!==moduleName.indexOf(\\\".\\\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\\\.\\\\//,\\\"\\\").replace(/\\\\/\\\\.\\\\//,\\\"/\\\").replace(/[^\\\\/]+\\\\/\\\\.\\\\.\\\\//,\\\"\\\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\\\"worker.js acequire() accepts only (parentId, id) as arguments\\\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\\\"unable to load \\\"+id);var path=resolveModuleId(id,window.acequire.tlns);return\\\".js\\\"!=path.slice(-3)&&(path+=\\\".js\\\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\\\"string\\\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\\\"function\\\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\\\"require\\\",\\\"exports\\\",\\\"module\\\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\\\"require\\\":return req;case\\\"exports\\\":return module.exports;case\\\"module\\\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\\\"ace/lib/event_emitter\\\").EventEmitter,oop=window.acequire(\\\"ace/lib/oop\\\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\\\"call\\\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\\\"event\\\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\\\"Unknown command:\\\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\\\"ace/lib/es5-shim\\\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}}(this),ace.define(\\\"ace/lib/oop\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\\\"ace/range\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\\\"Range: [\\\"+this.start.row+\\\"/\\\"+this.start.column+\\\"] -> [\\\"+this.end.row+\\\"/\\\"+this.end.column+\\\"]\\\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\\\"object\\\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\\\"object\\\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\\\"ace/apply_delta\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\\\"\\\";switch(delta.action){case\\\"insert\\\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\\\"remove\\\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\\\"ace/lib/event_emitter\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\\\"object\\\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\\\"unshift\\\":\\\"push\\\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\\\"ace/anchor\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/lib/event_emitter\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"./lib/oop\\\"),EventEmitter=acequire(\\\"./lib/event_emitter\\\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\\\"change\\\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\\\"change\\\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\\\"change\\\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\\\"ace/document\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/apply_delta\\\",\\\"ace/lib/event_emitter\\\",\\\"ace/range\\\",\\\"ace/anchor\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"./lib/oop\\\"),applyDelta=acequire(\\\"./apply_delta\\\").applyDelta,EventEmitter=acequire(\\\"./lib/event_emitter\\\").EventEmitter,Range=acequire(\\\"./range\\\").Range,Anchor=acequire(\\\"./anchor\\\").Anchor,Document=function(textOrLines){this.$lines=[\\\"\\\"],0===textOrLines.length?this.$lines=[\\\"\\\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\\\"aaa\\\".split(/a/).length?function(text){return text.replace(/\\\\r\\\\n|\\\\r/g,\\\"\\\\n\\\").split(\\\"\\\\n\\\")}:function(text){return text.split(/\\\\r\\\\n|\\\\r|\\\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\\\r\\\\n|\\\\r|\\\\n)/m);this.$autoNewLine=match?match[1]:\\\"\\\\n\\\",this._signal(\\\"changeNewLineMode\\\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\\\"windows\\\":return\\\"\\\\r\\\\n\\\";case\\\"unix\\\":return\\\"\\\\n\\\";default:return this.$autoNewLine||\\\"\\\\n\\\"}},this.$autoNewLine=\\\"\\\",this.$newLineMode=\\\"auto\\\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\\\"changeNewLineMode\\\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\\\"\\\\r\\\\n\\\"==text||\\\"\\\\r\\\"==text||\\\"\\\\n\\\"==text},this.getLine=function(row){return this.$lines[row]||\\\"\\\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\\\"\\\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\\\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\\\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\\\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\\\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\\\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\\\"),this.insertMergedLines(position,[\\\"\\\",\\\"\\\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\\\"insert\\\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\\\"\\\"]),column=0):(lines=[\\\"\\\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\\\"insert\\\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\\\"remove\\\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\\\"remove\\\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\\\"remove\\\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\\\"remove\\\",lines:[\\\"\\\",\\\"\\\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\\\"insert\\\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\\\"change\\\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\\\"\\\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\\\"insert\\\"==delta.action?\\\"remove\\\":\\\"insert\\\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\\\"ace/lib/lang\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\\\"\\\").reverse().join(\\\"\\\")},exports.stringRepeat=function(string,count){for(var result=\\\"\\\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\\\s\\\\s*/,trimEndRegexp=/\\\\s\\\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\\\"\\\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\\\"\\\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\\\"object\\\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\\\"object\\\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if(\\\"[object Object]\\\"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\\\]\\\\/\\\\\\\\])/g,\\\"\\\\\\\\$1\\\")},exports.escapeHTML=function(str){return str.replace(/&/g,\\\"&\\\").replace(/\\\"/g,\\\""\\\").replace(/'/g,\\\"'\\\").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:\\\"insert\\\",start:data[i],lines:data[i+1]};else var d={action:\\\"remove\\\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\\\"ace/mode/javascript/jshint\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports,module){module.exports=function outer(modules,cache,entry){function newRequire(name,jumped){if(!cache[name]){if(!modules[name]){var currentRequire=\\\"function\\\"==typeof acequire&&acequire;if(!jumped&¤tRequire)return currentRequire(name,!0);if(previousRequire)return previousRequire(name,!0);var err=Error(\\\"Cannot find module '\\\"+name+\\\"'\\\");throw err.code=\\\"MODULE_NOT_FOUND\\\",err}var m=cache[name]={exports:{}};modules[name][0].call(m.exports,function(x){var id=modules[name][1][x];return newRequire(id?id:x)},m,m.exports,outer,modules,cache,entry)}return cache[name].exports}for(var previousRequire=\\\"function\\\"==typeof acequire&&acequire,i=0;entry.length>i;i++)newRequire(entry[i]);return newRequire(entry[0])}({\\\"/node_modules/browserify/node_modules/events/events.js\\\":[function(_dereq_,module){function EventEmitter(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function isFunction(arg){return\\\"function\\\"==typeof arg}function isNumber(arg){return\\\"number\\\"==typeof arg}function isObject(arg){return\\\"object\\\"==typeof arg&&null!==arg}function isUndefined(arg){return void 0===arg}module.exports=EventEmitter,EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._maxListeners=void 0,EventEmitter.defaultMaxListeners=10,EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||0>n||isNaN(n))throw TypeError(\\\"n must be a positive number\\\");return this._maxListeners=n,this},EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(this._events||(this._events={}),\\\"error\\\"===type&&(!this._events.error||isObject(this._events.error)&&!this._events.error.length)){if(er=arguments[1],er instanceof Error)throw er;throw TypeError('Uncaught, unspecified \\\"error\\\" event.')}if(handler=this._events[type],isUndefined(handler))return!1;if(isFunction(handler))switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:for(len=arguments.length,args=Array(len-1),i=1;len>i;i++)args[i-1]=arguments[i];handler.apply(this,args)}else if(isObject(handler)){for(len=arguments.length,args=Array(len-1),i=1;len>i;i++)args[i-1]=arguments[i];for(listeners=handler.slice(),len=listeners.length,i=0;len>i;i++)listeners[i].apply(this,args)}return!0},EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError(\\\"listener must be a function\\\");if(this._events||(this._events={}),this._events.newListener&&this.emit(\\\"newListener\\\",type,isFunction(listener.listener)?listener.listener:listener),this._events[type]?isObject(this._events[type])?this._events[type].push(listener):this._events[type]=[this._events[type],listener]:this._events[type]=listener,isObject(this._events[type])&&!this._events[type].warned){var m;m=isUndefined(this._maxListeners)?EventEmitter.defaultMaxListeners:this._maxListeners,m&&m>0&&this._events[type].length>m&&(this._events[type].warned=!0,console.error(\\\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\\\",this._events[type].length),\\\"function\\\"==typeof console.trace&&console.trace())}return this},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.once=function(type,listener){function g(){this.removeListener(type,g),fired||(fired=!0,listener.apply(this,arguments))}if(!isFunction(listener))throw TypeError(\\\"listener must be a function\\\");var fired=!1;return g.listener=listener,this.on(type,g),this},EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError(\\\"listener must be a function\\\");if(!this._events||!this._events[type])return this;if(list=this._events[type],length=list.length,position=-1,list===listener||isFunction(list.listener)&&list.listener===listener)delete this._events[type],this._events.removeListener&&this.emit(\\\"removeListener\\\",type,listener);else if(isObject(list)){for(i=length;i-->0;)if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}if(0>position)return this;1===list.length?(list.length=0,delete this._events[type]):list.splice(position,1),this._events.removeListener&&this.emit(\\\"removeListener\\\",type,listener)}return this},EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[type]&&delete this._events[type],this;if(0===arguments.length){for(key in this._events)\\\"removeListener\\\"!==key&&this.removeAllListeners(key);return this.removeAllListeners(\\\"removeListener\\\"),this._events={},this\\n}if(listeners=this._events[type],isFunction(listeners))this.removeListener(type,listeners);else for(;listeners.length;)this.removeListener(type,listeners[listeners.length-1]);return delete this._events[type],this},EventEmitter.prototype.listeners=function(type){var ret;return ret=this._events&&this._events[type]?isFunction(this._events[type])?[this._events[type]]:this._events[type].slice():[]},EventEmitter.listenerCount=function(emitter,type){var ret;return ret=emitter._events&&emitter._events[type]?isFunction(emitter._events[type])?1:emitter._events[type].length:0}},{}],\\\"/node_modules/jshint/data/ascii-identifier-data.js\\\":[function(_dereq_,module){for(var identifierStartTable=[],i=0;128>i;i++)identifierStartTable[i]=36===i||i>=65&&90>=i||95===i||i>=97&&122>=i;for(var identifierPartTable=[],i=0;128>i;i++)identifierPartTable[i]=identifierStartTable[i]||i>=48&&57>=i;module.exports={asciiIdentifierStartTable:identifierStartTable,asciiIdentifierPartTable:identifierPartTable}},{}],\\\"/node_modules/jshint/lodash.js\\\":[function(_dereq_,module,exports){(function(global){(function(){function baseFindIndex(array,predicate,fromRight){for(var length=array.length,index=fromRight?length:-1;fromRight?index--:length>++index;)if(predicate(array[index],index,array))return index;return-1}function baseIndexOf(array,value,fromIndex){if(value!==value)return indexOfNaN(array,fromIndex);for(var index=fromIndex-1,length=array.length;length>++index;)if(array[index]===value)return index;return-1}function baseIsFunction(value){return\\\"function\\\"==typeof value||!1}function baseToString(value){return\\\"string\\\"==typeof value?value:null==value?\\\"\\\":value+\\\"\\\"}function indexOfNaN(array,fromIndex,fromRight){for(var length=array.length,index=fromIndex+(fromRight?0:-1);fromRight?index--:length>++index;){var other=array[index];if(other!==other)return index}return-1}function isObjectLike(value){return!!value&&\\\"object\\\"==typeof value}function lodash(){}function arrayCopy(source,array){var index=-1,length=source.length;for(array||(array=Array(length));length>++index;)array[index]=source[index];return array}function arrayEach(array,iteratee){for(var index=-1,length=array.length;length>++index&&iteratee(array[index],index,array)!==!1;);return array}function arrayFilter(array,predicate){for(var index=-1,length=array.length,resIndex=-1,result=[];length>++index;){var value=array[index];predicate(value,index,array)&&(result[++resIndex]=value)}return result}function arrayMap(array,iteratee){for(var index=-1,length=array.length,result=Array(length);length>++index;)result[index]=iteratee(array[index],index,array);return result}function arrayMax(array){for(var index=-1,length=array.length,result=NEGATIVE_INFINITY;length>++index;){var value=array[index];value>result&&(result=value)}return result}function arraySome(array,predicate){for(var index=-1,length=array.length;length>++index;)if(predicate(array[index],index,array))return!0;return!1}function assignWith(object,source,customizer){var props=keys(source);push.apply(props,getSymbols(source));for(var index=-1,length=props.length;length>++index;){var key=props[index],value=object[key],result=customizer(value,source[key],key,object,source);(result===result?result===value:value!==value)&&(value!==undefined||key in object)||(object[key]=result)}return object}function baseCopy(source,props,object){object||(object={});for(var index=-1,length=props.length;length>++index;){var key=props[index];object[key]=source[key]}return object}function baseCallback(func,thisArg,argCount){var type=typeof func;return\\\"function\\\"==type?thisArg===undefined?func:bindCallback(func,thisArg,argCount):null==func?identity:\\\"object\\\"==type?baseMatches(func):thisArg===undefined?property(func):baseMatchesProperty(func,thisArg)}function baseClone(value,isDeep,customizer,key,object,stackA,stackB){var result;if(customizer&&(result=object?customizer(value,key,object):customizer(value)),result!==undefined)return result;if(!isObject(value))return value;var isArr=isArray(value);if(isArr){if(result=initCloneArray(value),!isDeep)return arrayCopy(value,result)}else{var tag=objToString.call(value),isFunc=tag==funcTag;if(tag!=objectTag&&tag!=argsTag&&(!isFunc||object))return cloneableTags[tag]?initCloneByTag(value,tag,isDeep):object?value:{};if(result=initCloneObject(isFunc?{}:value),!isDeep)return baseAssign(result,value)}stackA||(stackA=[]),stackB||(stackB=[]);for(var length=stackA.length;length--;)if(stackA[length]==value)return stackB[length];return stackA.push(value),stackB.push(result),(isArr?arrayEach:baseForOwn)(value,function(subValue,key){result[key]=baseClone(subValue,isDeep,customizer,key,value,stackA,stackB)}),result}function baseFilter(collection,predicate){var result=[];return baseEach(collection,function(value,index,collection){predicate(value,index,collection)&&result.push(value)}),result}function baseForIn(object,iteratee){return baseFor(object,iteratee,keysIn)}function baseForOwn(object,iteratee){return baseFor(object,iteratee,keys)}function baseGet(object,path,pathKey){if(null!=object){pathKey!==undefined&&pathKey in toObject(object)&&(path=[pathKey]);for(var index=-1,length=path.length;null!=object&&length>++index;)var result=object=object[path[index]];return result}}function baseIsEqual(value,other,customizer,isLoose,stackA,stackB){if(value===other)return 0!==value||1/value==1/other;var valType=typeof value,othType=typeof other;return\\\"function\\\"!=valType&&\\\"object\\\"!=valType&&\\\"function\\\"!=othType&&\\\"object\\\"!=othType||null==value||null==other?value!==value&&other!==other:baseIsEqualDeep(value,other,baseIsEqual,customizer,isLoose,stackA,stackB)}function baseIsEqualDeep(object,other,equalFunc,customizer,isLoose,stackA,stackB){var objIsArr=isArray(object),othIsArr=isArray(other),objTag=arrayTag,othTag=arrayTag;objIsArr||(objTag=objToString.call(object),objTag==argsTag?objTag=objectTag:objTag!=objectTag&&(objIsArr=isTypedArray(object))),othIsArr||(othTag=objToString.call(other),othTag==argsTag?othTag=objectTag:othTag!=objectTag&&(othIsArr=isTypedArray(other)));var objIsObj=objTag==objectTag,othIsObj=othTag==objectTag,isSameTag=objTag==othTag;if(isSameTag&&!objIsArr&&!objIsObj)return equalByTag(object,other,objTag);if(!isLoose){var valWrapped=objIsObj&&hasOwnProperty.call(object,\\\"__wrapped__\\\"),othWrapped=othIsObj&&hasOwnProperty.call(other,\\\"__wrapped__\\\");if(valWrapped||othWrapped)return equalFunc(valWrapped?object.value():object,othWrapped?other.value():other,customizer,isLoose,stackA,stackB)}if(!isSameTag)return!1;stackA||(stackA=[]),stackB||(stackB=[]);for(var length=stackA.length;length--;)if(stackA[length]==object)return stackB[length]==other;stackA.push(object),stackB.push(other);var result=(objIsArr?equalArrays:equalObjects)(object,other,equalFunc,customizer,isLoose,stackA,stackB);return stackA.pop(),stackB.pop(),result}function baseIsMatch(object,props,values,strictCompareFlags,customizer){for(var index=-1,length=props.length,noCustomizer=!customizer;length>++index;)if(noCustomizer&&strictCompareFlags[index]?values[index]!==object[props[index]]:!(props[index]in object))return!1;for(index=-1;length>++index;){var key=props[index],objValue=object[key],srcValue=values[index];if(noCustomizer&&strictCompareFlags[index])var result=objValue!==undefined||key in object;else result=customizer?customizer(objValue,srcValue,key):undefined,result===undefined&&(result=baseIsEqual(srcValue,objValue,customizer,!0));if(!result)return!1}return!0}function baseMatches(source){var props=keys(source),length=props.length;if(!length)return constant(!0);if(1==length){var key=props[0],value=source[key];if(isStrictComparable(value))return function(object){return null==object?!1:object[key]===value&&(value!==undefined||key in toObject(object))}}for(var values=Array(length),strictCompareFlags=Array(length);length--;)value=source[props[length]],values[length]=value,strictCompareFlags[length]=isStrictComparable(value);return function(object){return null!=object&&baseIsMatch(toObject(object),props,values,strictCompareFlags)}}function baseMatchesProperty(path,value){var isArr=isArray(path),isCommon=isKey(path)&&isStrictComparable(value),pathKey=path+\\\"\\\";return path=toPath(path),function(object){if(null==object)return!1;var key=pathKey;if(object=toObject(object),!(!isArr&&isCommon||key in object)){if(object=1==path.length?object:baseGet(object,baseSlice(path,0,-1)),null==object)return!1;key=last(path),object=toObject(object)}return object[key]===value?value!==undefined||key in object:baseIsEqual(value,object[key],null,!0)}}function baseMerge(object,source,customizer,stackA,stackB){if(!isObject(object))return object;var isSrcArr=isLength(source.length)&&(isArray(source)||isTypedArray(source));if(!isSrcArr){var props=keys(source);push.apply(props,getSymbols(source))}return arrayEach(props||source,function(srcValue,key){if(props&&(key=srcValue,srcValue=source[key]),isObjectLike(srcValue))stackA||(stackA=[]),stackB||(stackB=[]),baseMergeDeep(object,source,key,baseMerge,customizer,stackA,stackB);else{var value=object[key],result=customizer?customizer(value,srcValue,key,object,source):undefined,isCommon=result===undefined;isCommon&&(result=srcValue),!isSrcArr&&result===undefined||!isCommon&&(result===result?result===value:value!==value)||(object[key]=result)}}),object}function baseMergeDeep(object,source,key,mergeFunc,customizer,stackA,stackB){for(var length=stackA.length,srcValue=source[key];length--;)if(stackA[length]==srcValue)return object[key]=stackB[length],undefined;var value=object[key],result=customizer?customizer(value,srcValue,key,object,source):undefined,isCommon=result===undefined;isCommon&&(result=srcValue,isLength(srcValue.length)&&(isArray(srcValue)||isTypedArray(srcValue))?result=isArray(value)?value:getLength(value)?arrayCopy(value):[]:isPlainObject(srcValue)||isArguments(srcValue)?result=isArguments(value)?toPlainObject(value):isPlainObject(value)?value:{}:isCommon=!1),stackA.push(srcValue),stackB.push(result),isCommon?object[key]=mergeFunc(result,srcValue,customizer,stackA,stackB):(result===result?result!==value:value===value)&&(object[key]=result)}function baseProperty(key){return function(object){return null==object?undefined:object[key]}}function basePropertyDeep(path){var pathKey=path+\\\"\\\";return path=toPath(path),function(object){return baseGet(object,path,pathKey)}}function baseSlice(array,start,end){var index=-1,length=array.length;start=null==start?0:+start||0,0>start&&(start=-start>length?0:length+start),end=end===undefined||end>length?length:+end||0,0>end&&(end+=length),length=start>end?0:end-start>>>0,start>>>=0;for(var result=Array(length);length>++index;)result[index]=array[index+start];return result}function baseSome(collection,predicate){var result;return baseEach(collection,function(value,index,collection){return result=predicate(value,index,collection),!result}),!!result}function baseValues(object,props){for(var index=-1,length=props.length,result=Array(length);length>++index;)result[index]=object[props[index]];return result}function binaryIndex(array,value,retHighest){var low=0,high=array?array.length:low;if(\\\"number\\\"==typeof value&&value===value&&HALF_MAX_ARRAY_LENGTH>=high){for(;high>low;){var mid=low+high>>>1,computed=array[mid];(retHighest?value>=computed:value>computed)?low=mid+1:high=mid}return high}return binaryIndexBy(array,value,identity,retHighest)}function binaryIndexBy(array,value,iteratee,retHighest){value=iteratee(value);for(var low=0,high=array?array.length:0,valIsNaN=value!==value,valIsUndef=value===undefined;high>low;){var mid=floor((low+high)/2),computed=iteratee(array[mid]),isReflexive=computed===computed;if(valIsNaN)var setLow=isReflexive||retHighest;else setLow=valIsUndef?isReflexive&&(retHighest||computed!==undefined):retHighest?value>=computed:value>computed;setLow?low=mid+1:high=mid}return nativeMin(high,MAX_ARRAY_INDEX)}function bindCallback(func,thisArg,argCount){if(\\\"function\\\"!=typeof func)return identity;if(thisArg===undefined)return func;switch(argCount){case 1:return function(value){return func.call(thisArg,value)};case 3:return function(value,index,collection){return func.call(thisArg,value,index,collection)};case 4:return function(accumulator,value,index,collection){return func.call(thisArg,accumulator,value,index,collection)};case 5:return function(value,other,key,object,source){return func.call(thisArg,value,other,key,object,source)}}return function(){return func.apply(thisArg,arguments)}}function bufferClone(buffer){return bufferSlice.call(buffer,0)}function createAssigner(assigner){return restParam(function(object,sources){var index=-1,length=null==object?0:sources.length,customizer=length>2&&sources[length-2],guard=length>2&&sources[2],thisArg=length>1&&sources[length-1];for(\\\"function\\\"==typeof customizer?(customizer=bindCallback(customizer,thisArg,5),length-=2):(customizer=\\\"function\\\"==typeof thisArg?thisArg:null,length-=customizer?1:0),guard&&isIterateeCall(sources[0],sources[1],guard)&&(customizer=3>length?null:customizer,length=1);length>++index;){var source=sources[index];source&&assigner(object,source,customizer)}return object})}function createBaseEach(eachFunc,fromRight){return function(collection,iteratee){var length=collection?getLength(collection):0;if(!isLength(length))return eachFunc(collection,iteratee);for(var index=fromRight?length:-1,iterable=toObject(collection);(fromRight?index--:length>++index)&&iteratee(iterable[index],index,iterable)!==!1;);return collection}}function createBaseFor(fromRight){return function(object,iteratee,keysFunc){for(var iterable=toObject(object),props=keysFunc(object),length=props.length,index=fromRight?length:-1;fromRight?index--:length>++index;){var key=props[index];if(iteratee(iterable[key],key,iterable)===!1)break}return object}}function createFindIndex(fromRight){return function(array,predicate,thisArg){return array&&array.length?(predicate=getCallback(predicate,thisArg,3),baseFindIndex(array,predicate,fromRight)):-1}}function createForEach(arrayFunc,eachFunc){return function(collection,iteratee,thisArg){return\\\"function\\\"==typeof iteratee&&thisArg===undefined&&isArray(collection)?arrayFunc(collection,iteratee):eachFunc(collection,bindCallback(iteratee,thisArg,3))}}function equalArrays(array,other,equalFunc,customizer,isLoose,stackA,stackB){var index=-1,arrLength=array.length,othLength=other.length,result=!0;if(arrLength!=othLength&&!(isLoose&&othLength>arrLength))return!1;for(;result&&arrLength>++index;){var arrValue=array[index],othValue=other[index];if(result=undefined,customizer&&(result=isLoose?customizer(othValue,arrValue,index):customizer(arrValue,othValue,index)),result===undefined)if(isLoose)for(var othIndex=othLength;othIndex--&&(othValue=other[othIndex],!(result=arrValue&&arrValue===othValue||equalFunc(arrValue,othValue,customizer,isLoose,stackA,stackB))););else result=arrValue&&arrValue===othValue||equalFunc(arrValue,othValue,customizer,isLoose,stackA,stackB)}return!!result}function equalByTag(object,other,tag){switch(tag){case boolTag:case dateTag:return+object==+other;case errorTag:return object.name==other.name&&object.message==other.message;case numberTag:return object!=+object?other!=+other:0==object?1/object==1/other:object==+other;case regexpTag:case stringTag:return object==other+\\\"\\\"}return!1}function equalObjects(object,other,equalFunc,customizer,isLoose,stackA,stackB){var objProps=keys(object),objLength=objProps.length,othProps=keys(other),othLength=othProps.length;if(objLength!=othLength&&!isLoose)return!1;for(var skipCtor=isLoose,index=-1;objLength>++index;){var key=objProps[index],result=isLoose?key in other:hasOwnProperty.call(other,key);if(result){var objValue=object[key],othValue=other[key];result=undefined,customizer&&(result=isLoose?customizer(othValue,objValue,key):customizer(objValue,othValue,key)),result===undefined&&(result=objValue&&objValue===othValue||equalFunc(objValue,othValue,customizer,isLoose,stackA,stackB))}if(!result)return!1;skipCtor||(skipCtor=\\\"constructor\\\"==key)}if(!skipCtor){var objCtor=object.constructor,othCtor=other.constructor;if(objCtor!=othCtor&&\\\"constructor\\\"in object&&\\\"constructor\\\"in other&&!(\\\"function\\\"==typeof objCtor&&objCtor instanceof objCtor&&\\\"function\\\"==typeof othCtor&&othCtor instanceof othCtor))return!1}return!0}function getCallback(func,thisArg,argCount){var result=lodash.callback||callback;return result=result===callback?baseCallback:result,argCount?result(func,thisArg,argCount):result}function getIndexOf(collection,target,fromIndex){var result=lodash.indexOf||indexOf;return result=result===indexOf?baseIndexOf:result,collection?result(collection,target,fromIndex):result}function initCloneArray(array){var length=array.length,result=new array.constructor(length);return length&&\\\"string\\\"==typeof array[0]&&hasOwnProperty.call(array,\\\"index\\\")&&(result.index=array.index,result.input=array.input),result}function initCloneObject(object){var Ctor=object.constructor;return\\\"function\\\"==typeof Ctor&&Ctor instanceof Ctor||(Ctor=Object),new Ctor}function initCloneByTag(object,tag,isDeep){var Ctor=object.constructor;switch(tag){case arrayBufferTag:return bufferClone(object);case boolTag:case dateTag:return new Ctor(+object);case float32Tag:case float64Tag:case int8Tag:case int16Tag:case int32Tag:case uint8Tag:case uint8ClampedTag:case uint16Tag:case uint32Tag:var buffer=object.buffer;return new Ctor(isDeep?bufferClone(buffer):buffer,object.byteOffset,object.length);case numberTag:case stringTag:return new Ctor(object);case regexpTag:var result=new Ctor(object.source,reFlags.exec(object));result.lastIndex=object.lastIndex}return result}function isIndex(value,length){return value=+value,length=null==length?MAX_SAFE_INTEGER:length,value>-1&&0==value%1&&length>value}function isIterateeCall(value,index,object){if(!isObject(object))return!1;var type=typeof index;if(\\\"number\\\"==type)var length=getLength(object),prereq=isLength(length)&&isIndex(index,length);else prereq=\\\"string\\\"==type&&index in object;if(prereq){var other=object[index];return value===value?value===other:other!==other}return!1}function isKey(value,object){var type=typeof value;if(\\\"string\\\"==type&&reIsPlainProp.test(value)||\\\"number\\\"==type)return!0;if(isArray(value))return!1;var result=!reIsDeepProp.test(value);return result||null!=object&&value in toObject(object)}function isLength(value){return\\\"number\\\"==typeof value&&value>-1&&0==value%1&&MAX_SAFE_INTEGER>=value}function isStrictComparable(value){return value===value&&(0===value?1/value>0:!isObject(value))}function shimIsPlainObject(value){var Ctor;if(lodash.support,!isObjectLike(value)||objToString.call(value)!=objectTag||!hasOwnProperty.call(value,\\\"constructor\\\")&&(Ctor=value.constructor,\\\"function\\\"==typeof Ctor&&!(Ctor instanceof Ctor)))return!1;var result;return baseForIn(value,function(subValue,key){result=key}),result===undefined||hasOwnProperty.call(value,result)}function shimKeys(object){for(var props=keysIn(object),propsLength=props.length,length=propsLength&&object.length,support=lodash.support,allowIndexes=length&&isLength(length)&&(isArray(object)||support.nonEnumArgs&&isArguments(object)),index=-1,result=[];propsLength>++index;){var key=props[index];(allowIndexes&&isIndex(key,length)||hasOwnProperty.call(object,key))&&result.push(key)}return result}function toObject(value){return isObject(value)?value:Object(value)}function toPath(value){if(isArray(value))return value;var result=[];return baseToString(value).replace(rePropName,function(match,number,quote,string){result.push(quote?string.replace(reEscapeChar,\\\"$1\\\"):number||match)}),result}function indexOf(array,value,fromIndex){var length=array?array.length:0;if(!length)return-1;if(\\\"number\\\"==typeof fromIndex)fromIndex=0>fromIndex?nativeMax(length+fromIndex,0):fromIndex;else if(fromIndex){var index=binaryIndex(array,value),other=array[index];return(value===value?value===other:other!==other)?index:-1}return baseIndexOf(array,value,fromIndex||0)}function last(array){var length=array?array.length:0;return length?array[length-1]:undefined}function slice(array,start,end){var length=array?array.length:0;return length?(end&&\\\"number\\\"!=typeof end&&isIterateeCall(array,start,end)&&(start=0,end=length),baseSlice(array,start,end)):[]}function unzip(array){for(var index=-1,length=(array&&array.length&&arrayMax(arrayMap(array,getLength)))>>>0,result=Array(length);length>++index;)result[index]=arrayMap(array,baseProperty(index));return result}function includes(collection,target,fromIndex,guard){var length=collection?getLength(collection):0;return isLength(length)||(collection=values(collection),length=collection.length),length?(fromIndex=\\\"number\\\"!=typeof fromIndex||guard&&isIterateeCall(target,fromIndex,guard)?0:0>fromIndex?nativeMax(length+fromIndex,0):fromIndex||0,\\\"string\\\"==typeof collection||!isArray(collection)&&isString(collection)?length>fromIndex&&collection.indexOf(target,fromIndex)>-1:getIndexOf(collection,target,fromIndex)>-1):!1}function reject(collection,predicate,thisArg){var func=isArray(collection)?arrayFilter:baseFilter;return predicate=getCallback(predicate,thisArg,3),func(collection,function(value,index,collection){return!predicate(value,index,collection)})}function some(collection,predicate,thisArg){var func=isArray(collection)?arraySome:baseSome;return thisArg&&isIterateeCall(collection,predicate,thisArg)&&(predicate=null),(\\\"function\\\"!=typeof predicate||thisArg!==undefined)&&(predicate=getCallback(predicate,thisArg,3)),func(collection,predicate)}function restParam(func,start){if(\\\"function\\\"!=typeof func)throw new TypeError(FUNC_ERROR_TEXT);return start=nativeMax(start===undefined?func.length-1:+start||0,0),function(){for(var args=arguments,index=-1,length=nativeMax(args.length-start,0),rest=Array(length);length>++index;)rest[index]=args[start+index];switch(start){case 0:return func.call(this,rest);case 1:return func.call(this,args[0],rest);case 2:return func.call(this,args[0],args[1],rest)}var otherArgs=Array(start+1);for(index=-1;start>++index;)otherArgs[index]=args[index];return otherArgs[start]=rest,func.apply(this,otherArgs)}}function clone(value,isDeep,customizer,thisArg){return isDeep&&\\\"boolean\\\"!=typeof isDeep&&isIterateeCall(value,isDeep,customizer)?isDeep=!1:\\\"function\\\"==typeof isDeep&&(thisArg=customizer,customizer=isDeep,isDeep=!1),customizer=\\\"function\\\"==typeof customizer&&bindCallback(customizer,thisArg,1),baseClone(value,isDeep,customizer)}function isArguments(value){var length=isObjectLike(value)?value.length:undefined;return isLength(length)&&objToString.call(value)==argsTag}function isEmpty(value){if(null==value)return!0;var length=getLength(value);return isLength(length)&&(isArray(value)||isString(value)||isArguments(value)||isObjectLike(value)&&isFunction(value.splice))?!length:!keys(value).length}function isObject(value){var type=typeof value;return\\\"function\\\"==type||!!value&&\\\"object\\\"==type}function isNative(value){return null==value?!1:objToString.call(value)==funcTag?reIsNative.test(fnToString.call(value)):isObjectLike(value)&&reIsHostCtor.test(value)}function isNumber(value){return\\\"number\\\"==typeof value||isObjectLike(value)&&objToString.call(value)==numberTag}function isString(value){return\\\"string\\\"==typeof value||isObjectLike(value)&&objToString.call(value)==stringTag}function isTypedArray(value){return isObjectLike(value)&&isLength(value.length)&&!!typedArrayTags[objToString.call(value)]}function toPlainObject(value){return baseCopy(value,keysIn(value))}function has(object,path){if(null==object)return!1;var result=hasOwnProperty.call(object,path);return result||isKey(path)||(path=toPath(path),object=1==path.length?object:baseGet(object,baseSlice(path,0,-1)),path=last(path),result=null!=object&&hasOwnProperty.call(object,path)),result}function keysIn(object){if(null==object)return[];isObject(object)||(object=Object(object));var length=object.length;length=length&&isLength(length)&&(isArray(object)||support.nonEnumArgs&&isArguments(object))&&length||0;for(var Ctor=object.constructor,index=-1,isProto=\\\"function\\\"==typeof Ctor&&Ctor.prototype===object,result=Array(length),skipIndexes=length>0;length>++index;)result[index]=index+\\\"\\\";for(var key in object)skipIndexes&&isIndex(key,length)||\\\"constructor\\\"==key&&(isProto||!hasOwnProperty.call(object,key))||result.push(key);return result}function values(object){return baseValues(object,keys(object))}function escapeRegExp(string){return string=baseToString(string),string&&reHasRegExpChars.test(string)?string.replace(reRegExpChars,\\\"\\\\\\\\$&\\\"):string}function callback(func,thisArg,guard){return guard&&isIterateeCall(func,thisArg,guard)&&(thisArg=null),baseCallback(func,thisArg)}function constant(value){return function(){return value}}function identity(value){return value}function property(path){return isKey(path)?baseProperty(path):basePropertyDeep(path)}var undefined,VERSION=\\\"3.7.0\\\",FUNC_ERROR_TEXT=\\\"Expected a function\\\",argsTag=\\\"[object Arguments]\\\",arrayTag=\\\"[object Array]\\\",boolTag=\\\"[object Boolean]\\\",dateTag=\\\"[object Date]\\\",errorTag=\\\"[object Error]\\\",funcTag=\\\"[object Function]\\\",mapTag=\\\"[object Map]\\\",numberTag=\\\"[object Number]\\\",objectTag=\\\"[object Object]\\\",regexpTag=\\\"[object RegExp]\\\",setTag=\\\"[object Set]\\\",stringTag=\\\"[object String]\\\",weakMapTag=\\\"[object WeakMap]\\\",arrayBufferTag=\\\"[object ArrayBuffer]\\\",float32Tag=\\\"[object Float32Array]\\\",float64Tag=\\\"[object Float64Array]\\\",int8Tag=\\\"[object Int8Array]\\\",int16Tag=\\\"[object Int16Array]\\\",int32Tag=\\\"[object Int32Array]\\\",uint8Tag=\\\"[object Uint8Array]\\\",uint8ClampedTag=\\\"[object Uint8ClampedArray]\\\",uint16Tag=\\\"[object Uint16Array]\\\",uint32Tag=\\\"[object Uint32Array]\\\",reIsDeepProp=/\\\\.|\\\\[(?:[^[\\\\]]+|([\\\"'])(?:(?!\\\\1)[^\\\\n\\\\\\\\]|\\\\\\\\.)*?)\\\\1\\\\]/,reIsPlainProp=/^\\\\w*$/,rePropName=/[^.[\\\\]]+|\\\\[(?:(-?\\\\d+(?:\\\\.\\\\d+)?)|([\\\"'])((?:(?!\\\\2)[^\\\\n\\\\\\\\]|\\\\\\\\.)*?)\\\\2)\\\\]/g,reRegExpChars=/[.*+?^${}()|[\\\\]\\\\/\\\\\\\\]/g,reHasRegExpChars=RegExp(reRegExpChars.source),reEscapeChar=/\\\\\\\\(\\\\\\\\)?/g,reFlags=/\\\\w*$/,reIsHostCtor=/^\\\\[object .+?Constructor\\\\]$/,typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1;var cloneableTags={};cloneableTags[argsTag]=cloneableTags[arrayTag]=cloneableTags[arrayBufferTag]=cloneableTags[boolTag]=cloneableTags[dateTag]=cloneableTags[float32Tag]=cloneableTags[float64Tag]=cloneableTags[int8Tag]=cloneableTags[int16Tag]=cloneableTags[int32Tag]=cloneableTags[numberTag]=cloneableTags[objectTag]=cloneableTags[regexpTag]=cloneableTags[stringTag]=cloneableTags[uint8Tag]=cloneableTags[uint8ClampedTag]=cloneableTags[uint16Tag]=cloneableTags[uint32Tag]=!0,cloneableTags[errorTag]=cloneableTags[funcTag]=cloneableTags[mapTag]=cloneableTags[setTag]=cloneableTags[weakMapTag]=!1;var objectTypes={\\\"function\\\":!0,object:!0},freeExports=objectTypes[typeof exports]&&exports&&!exports.nodeType&&exports,freeModule=objectTypes[typeof module]&&module&&!module.nodeType&&module,freeGlobal=freeExports&&freeModule&&\\\"object\\\"==typeof global&&global&&global.Object&&global,freeSelf=objectTypes[typeof self]&&self&&self.Object&&self,freeWindow=objectTypes[typeof window]&&window&&window.Object&&window,moduleExports=freeModule&&freeModule.exports===freeExports&&freeExports,root=freeGlobal||freeWindow!==(this&&this.window)&&freeWindow||freeSelf||this,arrayProto=Array.prototype,objectProto=Object.prototype,fnToString=Function.prototype.toString,hasOwnProperty=objectProto.hasOwnProperty,objToString=objectProto.toString,reIsNative=RegExp(\\\"^\\\"+escapeRegExp(objToString).replace(/toString|(function).*?(?=\\\\\\\\\\\\()| for .+?(?=\\\\\\\\\\\\])/g,\\\"$1.*?\\\")+\\\"$\\\"),ArrayBuffer=isNative(ArrayBuffer=root.ArrayBuffer)&&ArrayBuffer,bufferSlice=isNative(bufferSlice=ArrayBuffer&&new ArrayBuffer(0).slice)&&bufferSlice,floor=Math.floor,getOwnPropertySymbols=isNative(getOwnPropertySymbols=Object.getOwnPropertySymbols)&&getOwnPropertySymbols,getPrototypeOf=isNative(getPrototypeOf=Object.getPrototypeOf)&&getPrototypeOf,push=arrayProto.push,preventExtensions=isNative(Object.preventExtensions=Object.preventExtensions)&&preventExtensions,propertyIsEnumerable=objectProto.propertyIsEnumerable,Uint8Array=isNative(Uint8Array=root.Uint8Array)&&Uint8Array,Float64Array=function(){try{var func=isNative(func=root.Float64Array)&&func,result=new func(new ArrayBuffer(10),0,1)&&func}catch(e){}return result}(),nativeAssign=function(){var object={1:0},func=preventExtensions&&isNative(func=Object.assign)&&func;try{func(preventExtensions(object),\\\"xo\\\")}catch(e){}return!object[1]&&func}(),nativeIsArray=isNative(nativeIsArray=Array.isArray)&&nativeIsArray,nativeKeys=isNative(nativeKeys=Object.keys)&&nativeKeys,nativeMax=Math.max,nativeMin=Math.min,NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY,MAX_ARRAY_LENGTH=Math.pow(2,32)-1,MAX_ARRAY_INDEX=MAX_ARRAY_LENGTH-1,HALF_MAX_ARRAY_LENGTH=MAX_ARRAY_LENGTH>>>1,FLOAT64_BYTES_PER_ELEMENT=Float64Array?Float64Array.BYTES_PER_ELEMENT:0,MAX_SAFE_INTEGER=Math.pow(2,53)-1,support=lodash.support={};(function(x){var Ctor=function(){this.x=x},props=[];Ctor.prototype={valueOf:x,y:x};for(var key in new Ctor)props.push(key);support.funcDecomp=/\\\\bthis\\\\b/.test(function(){return this}),support.funcNames=\\\"string\\\"==typeof Function.name;try{support.nonEnumArgs=!propertyIsEnumerable.call(arguments,1)}catch(e){support.nonEnumArgs=!0}})(1,0);var baseAssign=nativeAssign||function(object,source){return null==source?object:baseCopy(source,getSymbols(source),baseCopy(source,keys(source),object))},baseEach=createBaseEach(baseForOwn),baseFor=createBaseFor();bufferSlice||(bufferClone=ArrayBuffer&&Uint8Array?function(buffer){var byteLength=buffer.byteLength,floatLength=Float64Array?floor(byteLength/FLOAT64_BYTES_PER_ELEMENT):0,offset=floatLength*FLOAT64_BYTES_PER_ELEMENT,result=new ArrayBuffer(byteLength);if(floatLength){var view=new Float64Array(result,0,floatLength);view.set(new Float64Array(buffer,0,floatLength))}return byteLength!=offset&&(view=new Uint8Array(result,offset),view.set(new Uint8Array(buffer,offset))),result}:constant(null));var getLength=baseProperty(\\\"length\\\"),getSymbols=getOwnPropertySymbols?function(object){return getOwnPropertySymbols(toObject(object))}:constant([]),findLastIndex=createFindIndex(!0),zip=restParam(unzip),forEach=createForEach(arrayEach,baseEach),isArray=nativeIsArray||function(value){return isObjectLike(value)&&isLength(value.length)&&objToString.call(value)==arrayTag},isFunction=baseIsFunction(/x/)||Uint8Array&&!baseIsFunction(Uint8Array)?function(value){return objToString.call(value)==funcTag}:baseIsFunction,isPlainObject=getPrototypeOf?function(value){if(!value||objToString.call(value)!=objectTag)return!1;var valueOf=value.valueOf,objProto=isNative(valueOf)&&(objProto=getPrototypeOf(valueOf))&&getPrototypeOf(objProto);return objProto?value==objProto||getPrototypeOf(value)==objProto:shimIsPlainObject(value)}:shimIsPlainObject,assign=createAssigner(function(object,source,customizer){return customizer?assignWith(object,source,customizer):baseAssign(object,source)}),keys=nativeKeys?function(object){if(object)var Ctor=object.constructor,length=object.length;return\\\"function\\\"==typeof Ctor&&Ctor.prototype===object||\\\"function\\\"!=typeof object&&isLength(length)?shimKeys(object):isObject(object)?nativeKeys(object):[]}:shimKeys,merge=createAssigner(baseMerge);lodash.assign=assign,lodash.callback=callback,lodash.constant=constant,lodash.forEach=forEach,lodash.keys=keys,lodash.keysIn=keysIn,lodash.merge=merge,lodash.property=property,lodash.reject=reject,lodash.restParam=restParam,lodash.slice=slice,lodash.toPlainObject=toPlainObject,lodash.unzip=unzip,lodash.values=values,lodash.zip=zip,lodash.each=forEach,lodash.extend=assign,lodash.iteratee=callback,lodash.clone=clone,lodash.escapeRegExp=escapeRegExp,lodash.findLastIndex=findLastIndex,lodash.has=has,lodash.identity=identity,lodash.includes=includes,lodash.indexOf=indexOf,lodash.isArguments=isArguments,lodash.isArray=isArray,lodash.isEmpty=isEmpty,lodash.isFunction=isFunction,lodash.isNative=isNative,lodash.isNumber=isNumber,lodash.isObject=isObject,lodash.isPlainObject=isPlainObject,lodash.isString=isString,lodash.isTypedArray=isTypedArray,lodash.last=last,lodash.some=some,lodash.any=some,lodash.contains=includes,lodash.include=includes,lodash.VERSION=VERSION,freeExports&&freeModule?moduleExports?(freeModule.exports=lodash)._=lodash:freeExports._=lodash:root._=lodash\\n}).call(this)}).call(this,\\\"undefined\\\"!=typeof global?global:\\\"undefined\\\"!=typeof self?self:\\\"undefined\\\"!=typeof window?window:{})},{}],\\\"/node_modules/jshint/src/jshint.js\\\":[function(_dereq_,module,exports){var _=_dereq_(\\\"../lodash\\\"),events=_dereq_(\\\"events\\\"),vars=_dereq_(\\\"./vars.js\\\"),messages=_dereq_(\\\"./messages.js\\\"),Lexer=_dereq_(\\\"./lex.js\\\").Lexer,reg=_dereq_(\\\"./reg.js\\\"),state=_dereq_(\\\"./state.js\\\").state,style=_dereq_(\\\"./style.js\\\"),options=_dereq_(\\\"./options.js\\\"),scopeManager=_dereq_(\\\"./scope-manager.js\\\"),JSHINT=function(){\\\"use strict\\\";function checkOption(name,t){return name=name.trim(),/^[+-]W\\\\d{3}$/g.test(name)?!0:-1!==options.validNames.indexOf(name)||\\\"jslint\\\"===t.type||_.has(options.removed,name)?!0:(error(\\\"E001\\\",t,name),!1)}function isString(obj){return\\\"[object String]\\\"===Object.prototype.toString.call(obj)}function isIdentifier(tkn,value){return tkn?tkn.identifier&&tkn.value===value?!0:!1:!1}function isReserved(token){if(!token.reserved)return!1;var meta=token.meta;if(meta&&meta.isFutureReservedWord&&state.inES5()){if(!meta.es5)return!1;if(meta.strictOnly&&!state.option.strict&&!state.isStrict())return!1;if(token.isProperty)return!1}return!0}function supplant(str,data){return str.replace(/\\\\{([^{}]*)\\\\}/g,function(a,b){var r=data[b];return\\\"string\\\"==typeof r||\\\"number\\\"==typeof r?r:a})}function combine(dest,src){Object.keys(src).forEach(function(name){_.has(JSHINT.blacklist,name)||(dest[name]=src[name])})}function processenforceall(){if(state.option.enforceall){for(var enforceopt in options.bool.enforcing)void 0!==state.option[enforceopt]||options.noenforceall[enforceopt]||(state.option[enforceopt]=!0);for(var relaxopt in options.bool.relaxing)void 0===state.option[relaxopt]&&(state.option[relaxopt]=!1)}}function assume(){processenforceall(),state.option.esversion||state.option.moz||(state.option.esversion=state.option.es3?3:state.option.esnext?6:5),state.inES5()&&combine(predefined,vars.ecmaIdentifiers[5]),state.inES6()&&combine(predefined,vars.ecmaIdentifiers[6]),state.option.module&&(state.option.strict===!0&&(state.option.strict=\\\"global\\\"),state.inES6()||warning(\\\"W134\\\",state.tokens.next,\\\"module\\\",6)),state.option.couch&&combine(predefined,vars.couch),state.option.qunit&&combine(predefined,vars.qunit),state.option.rhino&&combine(predefined,vars.rhino),state.option.shelljs&&(combine(predefined,vars.shelljs),combine(predefined,vars.node)),state.option.typed&&combine(predefined,vars.typed),state.option.phantom&&(combine(predefined,vars.phantom),state.option.strict===!0&&(state.option.strict=\\\"global\\\")),state.option.prototypejs&&combine(predefined,vars.prototypejs),state.option.node&&(combine(predefined,vars.node),combine(predefined,vars.typed),state.option.strict===!0&&(state.option.strict=\\\"global\\\")),state.option.devel&&combine(predefined,vars.devel),state.option.dojo&&combine(predefined,vars.dojo),state.option.browser&&(combine(predefined,vars.browser),combine(predefined,vars.typed)),state.option.browserify&&(combine(predefined,vars.browser),combine(predefined,vars.typed),combine(predefined,vars.browserify),state.option.strict===!0&&(state.option.strict=\\\"global\\\")),state.option.nonstandard&&combine(predefined,vars.nonstandard),state.option.jasmine&&combine(predefined,vars.jasmine),state.option.jquery&&combine(predefined,vars.jquery),state.option.mootools&&combine(predefined,vars.mootools),state.option.worker&&combine(predefined,vars.worker),state.option.wsh&&combine(predefined,vars.wsh),state.option.globalstrict&&state.option.strict!==!1&&(state.option.strict=\\\"global\\\"),state.option.yui&&combine(predefined,vars.yui),state.option.mocha&&combine(predefined,vars.mocha)}function quit(code,line,chr){var percentage=Math.floor(100*(line/state.lines.length)),message=messages.errors[code].desc;throw{name:\\\"JSHintError\\\",line:line,character:chr,message:message+\\\" (\\\"+percentage+\\\"% scanned).\\\",raw:message,code:code}}function removeIgnoredMessages(){var ignored=state.ignoredLines;_.isEmpty(ignored)||(JSHINT.errors=_.reject(JSHINT.errors,function(err){return ignored[err.line]}))}function warning(code,t,a,b,c,d){var ch,l,w,msg;if(/^W\\\\d{3}$/.test(code)){if(state.ignored[code])return;msg=messages.warnings[code]}else/E\\\\d{3}/.test(code)?msg=messages.errors[code]:/I\\\\d{3}/.test(code)&&(msg=messages.info[code]);return t=t||state.tokens.next||{},\\\"(end)\\\"===t.id&&(t=state.tokens.curr),l=t.line||0,ch=t.from||0,w={id:\\\"(error)\\\",raw:msg.desc,code:msg.code,evidence:state.lines[l-1]||\\\"\\\",line:l,character:ch,scope:JSHINT.scope,a:a,b:b,c:c,d:d},w.reason=supplant(msg.desc,w),JSHINT.errors.push(w),removeIgnoredMessages(),JSHINT.errors.length>=state.option.maxerr&&quit(\\\"E043\\\",l,ch),w}function warningAt(m,l,ch,a,b,c,d){return warning(m,{line:l,from:ch},a,b,c,d)}function error(m,t,a,b,c,d){warning(m,t,a,b,c,d)}function errorAt(m,l,ch,a,b,c,d){return error(m,{line:l,from:ch},a,b,c,d)}function addInternalSrc(elem,src){var i;return i={id:\\\"(internal)\\\",elem:elem,value:src},JSHINT.internals.push(i),i}function doOption(){var nt=state.tokens.next,body=nt.body.match(/(-\\\\s+)?[^\\\\s,:]+(?:\\\\s*:\\\\s*(-\\\\s+)?[^\\\\s,]+)?/g)||[],predef={};if(\\\"globals\\\"===nt.type){body.forEach(function(g,idx){g=g.split(\\\":\\\");var key=(g[0]||\\\"\\\").trim(),val=(g[1]||\\\"\\\").trim();if(\\\"-\\\"===key||!key.length){if(idx>0&&idx===body.length-1)return;return error(\\\"E002\\\",nt),void 0}\\\"-\\\"===key.charAt(0)?(key=key.slice(1),val=!1,JSHINT.blacklist[key]=key,delete predefined[key]):predef[key]=\\\"true\\\"===val}),combine(predefined,predef);for(var key in predef)_.has(predef,key)&&(declared[key]=nt)}\\\"exported\\\"===nt.type&&body.forEach(function(e,idx){if(!e.length){if(idx>0&&idx===body.length-1)return;return error(\\\"E002\\\",nt),void 0}state.funct[\\\"(scope)\\\"].addExported(e)}),\\\"members\\\"===nt.type&&(membersOnly=membersOnly||{},body.forEach(function(m){var ch1=m.charAt(0),ch2=m.charAt(m.length-1);ch1!==ch2||'\\\"'!==ch1&&\\\"'\\\"!==ch1||(m=m.substr(1,m.length-2).replace('\\\\\\\\\\\"','\\\"')),membersOnly[m]=!1}));var numvals=[\\\"maxstatements\\\",\\\"maxparams\\\",\\\"maxdepth\\\",\\\"maxcomplexity\\\",\\\"maxerr\\\",\\\"maxlen\\\",\\\"indent\\\"];(\\\"jshint\\\"===nt.type||\\\"jslint\\\"===nt.type)&&(body.forEach(function(g){g=g.split(\\\":\\\");var key=(g[0]||\\\"\\\").trim(),val=(g[1]||\\\"\\\").trim();if(checkOption(key,nt))if(numvals.indexOf(key)>=0)if(\\\"false\\\"!==val){if(val=+val,\\\"number\\\"!=typeof val||!isFinite(val)||0>=val||Math.floor(val)!==val)return error(\\\"E032\\\",nt,g[1].trim()),void 0;state.option[key]=val}else state.option[key]=\\\"indent\\\"===key?4:!1;else{if(\\\"validthis\\\"===key)return state.funct[\\\"(global)\\\"]?void error(\\\"E009\\\"):\\\"true\\\"!==val&&\\\"false\\\"!==val?void error(\\\"E002\\\",nt):(state.option.validthis=\\\"true\\\"===val,void 0);if(\\\"quotmark\\\"!==key)if(\\\"shadow\\\"!==key)if(\\\"unused\\\"!==key)if(\\\"latedef\\\"!==key)if(\\\"ignore\\\"!==key)if(\\\"strict\\\"!==key){\\\"module\\\"===key&&(hasParsedCode(state.funct)||error(\\\"E055\\\",state.tokens.next,\\\"module\\\"));var esversions={es3:3,es5:5,esnext:6};if(!_.has(esversions,key)){if(\\\"esversion\\\"===key){switch(val){case\\\"5\\\":state.inES5(!0)&&warning(\\\"I003\\\");case\\\"3\\\":case\\\"6\\\":state.option.moz=!1,state.option.esversion=+val;break;case\\\"2015\\\":state.option.moz=!1,state.option.esversion=6;break;default:error(\\\"E002\\\",nt)}return hasParsedCode(state.funct)||error(\\\"E055\\\",state.tokens.next,\\\"esversion\\\"),void 0}var match=/^([+-])(W\\\\d{3})$/g.exec(key);if(match)return state.ignored[match[2]]=\\\"-\\\"===match[1],void 0;var tn;return\\\"true\\\"===val||\\\"false\\\"===val?(\\\"jslint\\\"===nt.type?(tn=options.renamed[key]||key,state.option[tn]=\\\"true\\\"===val,void 0!==options.inverted[tn]&&(state.option[tn]=!state.option[tn])):state.option[key]=\\\"true\\\"===val,\\\"newcap\\\"===key&&(state.option[\\\"(explicitNewcap)\\\"]=!0),void 0):(error(\\\"E002\\\",nt),void 0)}switch(val){case\\\"true\\\":state.option.moz=!1,state.option.esversion=esversions[key];break;case\\\"false\\\":state.option.moz||(state.option.esversion=5);break;default:error(\\\"E002\\\",nt)}}else switch(val){case\\\"true\\\":state.option.strict=!0;break;case\\\"false\\\":state.option.strict=!1;break;case\\\"func\\\":case\\\"global\\\":case\\\"implied\\\":state.option.strict=val;break;default:error(\\\"E002\\\",nt)}else switch(val){case\\\"line\\\":state.ignoredLines[nt.line]=!0,removeIgnoredMessages();break;default:error(\\\"E002\\\",nt)}else switch(val){case\\\"true\\\":state.option.latedef=!0;break;case\\\"false\\\":state.option.latedef=!1;break;case\\\"nofunc\\\":state.option.latedef=\\\"nofunc\\\";break;default:error(\\\"E002\\\",nt)}else switch(val){case\\\"true\\\":state.option.unused=!0;break;case\\\"false\\\":state.option.unused=!1;break;case\\\"vars\\\":case\\\"strict\\\":state.option.unused=val;break;default:error(\\\"E002\\\",nt)}else switch(val){case\\\"true\\\":state.option.shadow=!0;break;case\\\"outer\\\":state.option.shadow=\\\"outer\\\";break;case\\\"false\\\":case\\\"inner\\\":state.option.shadow=\\\"inner\\\";break;default:error(\\\"E002\\\",nt)}else switch(val){case\\\"true\\\":case\\\"false\\\":state.option.quotmark=\\\"true\\\"===val;break;case\\\"double\\\":case\\\"single\\\":state.option.quotmark=val;break;default:error(\\\"E002\\\",nt)}}}),assume())}function peek(p){var t,i=p||0,j=lookahead.length;if(j>i)return lookahead[i];for(;i>=j;)t=lookahead[j],t||(t=lookahead[j]=lex.token()),j+=1;return t||\\\"(end)\\\"!==state.tokens.next.id?t:state.tokens.next}function peekIgnoreEOL(){var t,i=0;do t=peek(i++);while(\\\"(endline)\\\"===t.id);return t}function advance(id,t){switch(state.tokens.curr.id){case\\\"(number)\\\":\\\".\\\"===state.tokens.next.id&&warning(\\\"W005\\\",state.tokens.curr);break;case\\\"-\\\":(\\\"-\\\"===state.tokens.next.id||\\\"--\\\"===state.tokens.next.id)&&warning(\\\"W006\\\");break;case\\\"+\\\":(\\\"+\\\"===state.tokens.next.id||\\\"++\\\"===state.tokens.next.id)&&warning(\\\"W007\\\")}for(id&&state.tokens.next.id!==id&&(t?\\\"(end)\\\"===state.tokens.next.id?error(\\\"E019\\\",t,t.id):error(\\\"E020\\\",state.tokens.next,id,t.id,t.line,state.tokens.next.value):(\\\"(identifier)\\\"!==state.tokens.next.type||state.tokens.next.value!==id)&&warning(\\\"W116\\\",state.tokens.next,id,state.tokens.next.value)),state.tokens.prev=state.tokens.curr,state.tokens.curr=state.tokens.next;;){if(state.tokens.next=lookahead.shift()||lex.token(),state.tokens.next||quit(\\\"E041\\\",state.tokens.curr.line),\\\"(end)\\\"===state.tokens.next.id||\\\"(error)\\\"===state.tokens.next.id)return;if(state.tokens.next.check&&state.tokens.next.check(),state.tokens.next.isSpecial)\\\"falls through\\\"===state.tokens.next.type?state.tokens.curr.caseFallsThrough=!0:doOption();else if(\\\"(endline)\\\"!==state.tokens.next.id)break}}function isInfix(token){return token.infix||!token.identifier&&!token.template&&!!token.led}function isEndOfExpr(){var curr=state.tokens.curr,next=state.tokens.next;return\\\";\\\"===next.id||\\\"}\\\"===next.id||\\\":\\\"===next.id?!0:isInfix(next)===isInfix(curr)||\\\"yield\\\"===curr.id&&state.inMoz()?curr.line!==startLine(next):!1}function isBeginOfExpr(prev){return!prev.left&&\\\"unary\\\"!==prev.arity}function expression(rbp,initial){var left,isArray=!1,isObject=!1,isLetExpr=!1;state.nameStack.push(),initial||\\\"let\\\"!==state.tokens.next.value||\\\"(\\\"!==peek(0).value||(state.inMoz()||warning(\\\"W118\\\",state.tokens.next,\\\"let expressions\\\"),isLetExpr=!0,state.funct[\\\"(scope)\\\"].stack(),advance(\\\"let\\\"),advance(\\\"(\\\"),state.tokens.prev.fud(),advance(\\\")\\\")),\\\"(end)\\\"===state.tokens.next.id&&error(\\\"E006\\\",state.tokens.curr);var isDangerous=state.option.asi&&state.tokens.prev.line!==startLine(state.tokens.curr)&&_.contains([\\\"]\\\",\\\")\\\"],state.tokens.prev.id)&&_.contains([\\\"[\\\",\\\"(\\\"],state.tokens.curr.id);if(isDangerous&&warning(\\\"W014\\\",state.tokens.curr,state.tokens.curr.id),advance(),initial&&(state.funct[\\\"(verb)\\\"]=state.tokens.curr.value,state.tokens.curr.beginsStmt=!0),initial===!0&&state.tokens.curr.fud)left=state.tokens.curr.fud();else for(state.tokens.curr.nud?left=state.tokens.curr.nud():error(\\\"E030\\\",state.tokens.curr,state.tokens.curr.id);(state.tokens.next.lbp>rbp||\\\"(template)\\\"===state.tokens.next.type)&&!isEndOfExpr();)isArray=\\\"Array\\\"===state.tokens.curr.value,isObject=\\\"Object\\\"===state.tokens.curr.value,left&&(left.value||left.first&&left.first.value)&&(\\\"new\\\"!==left.value||left.first&&left.first.value&&\\\".\\\"===left.first.value)&&(isArray=!1,left.value!==state.tokens.curr.value&&(isObject=!1)),advance(),isArray&&\\\"(\\\"===state.tokens.curr.id&&\\\")\\\"===state.tokens.next.id&&warning(\\\"W009\\\",state.tokens.curr),isObject&&\\\"(\\\"===state.tokens.curr.id&&\\\")\\\"===state.tokens.next.id&&warning(\\\"W010\\\",state.tokens.curr),left&&state.tokens.curr.led?left=state.tokens.curr.led(left):error(\\\"E033\\\",state.tokens.curr,state.tokens.curr.id);return isLetExpr&&state.funct[\\\"(scope)\\\"].unstack(),state.nameStack.pop(),left}function startLine(token){return token.startLine||token.line}function nobreaknonadjacent(left,right){left=left||state.tokens.curr,right=right||state.tokens.next,state.option.laxbreak||left.line===startLine(right)||warning(\\\"W014\\\",right,right.value)}function nolinebreak(t){t=t||state.tokens.curr,t.line!==startLine(state.tokens.next)&&warning(\\\"E022\\\",t,t.value)}function nobreakcomma(left,right){left.line!==startLine(right)&&(state.option.laxcomma||(comma.first&&(warning(\\\"I001\\\"),comma.first=!1),warning(\\\"W014\\\",left,right.value)))}function comma(opts){if(opts=opts||{},opts.peek?nobreakcomma(state.tokens.prev,state.tokens.curr):(nobreakcomma(state.tokens.curr,state.tokens.next),advance(\\\",\\\")),state.tokens.next.identifier&&(!opts.property||!state.inES5()))switch(state.tokens.next.value){case\\\"break\\\":case\\\"case\\\":case\\\"catch\\\":case\\\"continue\\\":case\\\"default\\\":case\\\"do\\\":case\\\"else\\\":case\\\"finally\\\":case\\\"for\\\":case\\\"if\\\":case\\\"in\\\":case\\\"instanceof\\\":case\\\"return\\\":case\\\"switch\\\":case\\\"throw\\\":case\\\"try\\\":case\\\"var\\\":case\\\"let\\\":case\\\"while\\\":case\\\"with\\\":return error(\\\"E024\\\",state.tokens.next,state.tokens.next.value),!1}if(\\\"(punctuator)\\\"===state.tokens.next.type)switch(state.tokens.next.value){case\\\"}\\\":case\\\"]\\\":case\\\",\\\":if(opts.allowTrailing)return!0;case\\\")\\\":return error(\\\"E024\\\",state.tokens.next,state.tokens.next.value),!1}return!0}function symbol(s,p){var x=state.syntax[s];return x&&\\\"object\\\"==typeof x||(state.syntax[s]=x={id:s,lbp:p,value:s}),x}function delim(s){var x=symbol(s,0);return x.delim=!0,x}function stmt(s,f){var x=delim(s);return x.identifier=x.reserved=!0,x.fud=f,x}function blockstmt(s,f){var x=stmt(s,f);return x.block=!0,x}function reserveName(x){var c=x.id.charAt(0);return(c>=\\\"a\\\"&&\\\"z\\\">=c||c>=\\\"A\\\"&&\\\"Z\\\">=c)&&(x.identifier=x.reserved=!0),x}function prefix(s,f){var x=symbol(s,150);return reserveName(x),x.nud=\\\"function\\\"==typeof f?f:function(){return this.arity=\\\"unary\\\",this.right=expression(150),(\\\"++\\\"===this.id||\\\"--\\\"===this.id)&&(state.option.plusplus?warning(\\\"W016\\\",this,this.id):!this.right||this.right.identifier&&!isReserved(this.right)||\\\".\\\"===this.right.id||\\\"[\\\"===this.right.id||warning(\\\"W017\\\",this),this.right&&this.right.isMetaProperty?error(\\\"E031\\\",this):this.right&&this.right.identifier&&state.funct[\\\"(scope)\\\"].block.modify(this.right.value,this)),this},x}function type(s,f){var x=delim(s);return x.type=s,x.nud=f,x}function reserve(name,func){var x=type(name,func);return x.identifier=!0,x.reserved=!0,x}function FutureReservedWord(name,meta){var x=type(name,meta&&meta.nud||function(){return this});return meta=meta||{},meta.isFutureReservedWord=!0,x.value=name,x.identifier=!0,x.reserved=!0,x.meta=meta,x}function reservevar(s,v){return reserve(s,function(){return\\\"function\\\"==typeof v&&v(this),this})}function infix(s,f,p,w){var x=symbol(s,p);return reserveName(x),x.infix=!0,x.led=function(left){return w||nobreaknonadjacent(state.tokens.prev,state.tokens.curr),\\\"in\\\"!==s&&\\\"instanceof\\\"!==s||\\\"!\\\"!==left.id||warning(\\\"W018\\\",left,\\\"!\\\"),\\\"function\\\"==typeof f?f(left,this):(this.left=left,this.right=expression(p),this)},x}function application(s){var x=symbol(s,42);return x.led=function(left){return nobreaknonadjacent(state.tokens.prev,state.tokens.curr),this.left=left,this.right=doFunction({type:\\\"arrow\\\",loneArg:left}),this},x}function relation(s,f){var x=symbol(s,100);return x.led=function(left){nobreaknonadjacent(state.tokens.prev,state.tokens.curr),this.left=left;var right=this.right=expression(100);return isIdentifier(left,\\\"NaN\\\")||isIdentifier(right,\\\"NaN\\\")?warning(\\\"W019\\\",this):f&&f.apply(this,[left,right]),left&&right||quit(\\\"E041\\\",state.tokens.curr.line),\\\"!\\\"===left.id&&warning(\\\"W018\\\",left,\\\"!\\\"),\\\"!\\\"===right.id&&warning(\\\"W018\\\",right,\\\"!\\\"),this},x}function isPoorRelation(node){return node&&(\\\"(number)\\\"===node.type&&0===+node.value||\\\"(string)\\\"===node.type&&\\\"\\\"===node.value||\\\"null\\\"===node.type&&!state.option.eqnull||\\\"true\\\"===node.type||\\\"false\\\"===node.type||\\\"undefined\\\"===node.type)}function isTypoTypeof(left,right,state){var values;return state.option.notypeof?!1:left&&right?(values=state.inES6()?typeofValues.es6:typeofValues.es3,\\\"(identifier)\\\"===right.type&&\\\"typeof\\\"===right.value&&\\\"(string)\\\"===left.type?!_.contains(values,left.value):!1):!1}function isGlobalEval(left,state){var isGlobal=!1;return\\\"this\\\"===left.type&&null===state.funct[\\\"(context)\\\"]?isGlobal=!0:\\\"(identifier)\\\"===left.type&&(state.option.node&&\\\"global\\\"===left.value?isGlobal=!0:!state.option.browser||\\\"window\\\"!==left.value&&\\\"document\\\"!==left.value||(isGlobal=!0)),isGlobal}function findNativePrototype(left){function walkPrototype(obj){return\\\"object\\\"==typeof obj?\\\"prototype\\\"===obj.right?obj:walkPrototype(obj.left):void 0}function walkNative(obj){for(;!obj.identifier&&\\\"object\\\"==typeof obj.left;)obj=obj.left;return obj.identifier&&natives.indexOf(obj.value)>=0?obj.value:void 0}var natives=[\\\"Array\\\",\\\"ArrayBuffer\\\",\\\"Boolean\\\",\\\"Collator\\\",\\\"DataView\\\",\\\"Date\\\",\\\"DateTimeFormat\\\",\\\"Error\\\",\\\"EvalError\\\",\\\"Float32Array\\\",\\\"Float64Array\\\",\\\"Function\\\",\\\"Infinity\\\",\\\"Intl\\\",\\\"Int16Array\\\",\\\"Int32Array\\\",\\\"Int8Array\\\",\\\"Iterator\\\",\\\"Number\\\",\\\"NumberFormat\\\",\\\"Object\\\",\\\"RangeError\\\",\\\"ReferenceError\\\",\\\"RegExp\\\",\\\"StopIteration\\\",\\\"String\\\",\\\"SyntaxError\\\",\\\"TypeError\\\",\\\"Uint16Array\\\",\\\"Uint32Array\\\",\\\"Uint8Array\\\",\\\"Uint8ClampedArray\\\",\\\"URIError\\\"],prototype=walkPrototype(left);return prototype?walkNative(prototype):void 0}function checkLeftSideAssign(left,assignToken,options){var allowDestructuring=options&&options.allowDestructuring;if(assignToken=assignToken||left,state.option.freeze){var nativeObject=findNativePrototype(left);nativeObject&&warning(\\\"W121\\\",left,nativeObject)}return left.identifier&&!left.isMetaProperty&&state.funct[\\\"(scope)\\\"].block.reassign(left.value,left),\\\".\\\"===left.id?((!left.left||\\\"arguments\\\"===left.left.value&&!state.isStrict())&&warning(\\\"E031\\\",assignToken),state.nameStack.set(state.tokens.prev),!0):\\\"{\\\"===left.id||\\\"[\\\"===left.id?(allowDestructuring&&state.tokens.curr.left.destructAssign?state.tokens.curr.left.destructAssign.forEach(function(t){t.id&&state.funct[\\\"(scope)\\\"].block.modify(t.id,t.token)}):\\\"{\\\"!==left.id&&left.left?\\\"arguments\\\"!==left.left.value||state.isStrict()||warning(\\\"E031\\\",assignToken):warning(\\\"E031\\\",assignToken),\\\"[\\\"===left.id&&state.nameStack.set(left.right),!0):left.isMetaProperty?(error(\\\"E031\\\",assignToken),!0):left.identifier&&!isReserved(left)?(\\\"exception\\\"===state.funct[\\\"(scope)\\\"].labeltype(left.value)&&warning(\\\"W022\\\",left),state.nameStack.set(left),!0):(left===state.syntax[\\\"function\\\"]&&warning(\\\"W023\\\",state.tokens.curr),!1)}function assignop(s,f,p){var x=infix(s,\\\"function\\\"==typeof f?f:function(left,that){return that.left=left,left&&checkLeftSideAssign(left,that,{allowDestructuring:!0})?(that.right=expression(10),that):(error(\\\"E031\\\",that),void 0)},p);return x.exps=!0,x.assign=!0,x}function bitwise(s,f,p){var x=symbol(s,p);return reserveName(x),x.led=\\\"function\\\"==typeof f?f:function(left){return state.option.bitwise&&warning(\\\"W016\\\",this,this.id),this.left=left,this.right=expression(p),this},x}function bitwiseassignop(s){return assignop(s,function(left,that){return state.option.bitwise&&warning(\\\"W016\\\",that,that.id),left&&checkLeftSideAssign(left,that)?(that.right=expression(10),that):(error(\\\"E031\\\",that),void 0)},20)}function suffix(s){var x=symbol(s,150);return x.led=function(left){return state.option.plusplus?warning(\\\"W016\\\",this,this.id):left.identifier&&!isReserved(left)||\\\".\\\"===left.id||\\\"[\\\"===left.id||warning(\\\"W017\\\",this),left.isMetaProperty?error(\\\"E031\\\",this):left&&left.identifier&&state.funct[\\\"(scope)\\\"].block.modify(left.value,left),this.left=left,this},x}function optionalidentifier(fnparam,prop,preserve){if(state.tokens.next.identifier){preserve||advance();var curr=state.tokens.curr,val=state.tokens.curr.value;return isReserved(curr)?prop&&state.inES5()?val:fnparam&&\\\"undefined\\\"===val?val:(warning(\\\"W024\\\",state.tokens.curr,state.tokens.curr.id),val):val}}function identifier(fnparam,prop){var i=optionalidentifier(fnparam,prop,!1);if(i)return i;if(\\\"...\\\"===state.tokens.next.value){if(state.inES6(!0)||warning(\\\"W119\\\",state.tokens.next,\\\"spread/rest operator\\\",\\\"6\\\"),advance(),checkPunctuator(state.tokens.next,\\\"...\\\"))for(warning(\\\"E024\\\",state.tokens.next,\\\"...\\\");checkPunctuator(state.tokens.next,\\\"...\\\");)advance();return state.tokens.next.identifier?identifier(fnparam,prop):(warning(\\\"E024\\\",state.tokens.curr,\\\"...\\\"),void 0)}error(\\\"E030\\\",state.tokens.next,state.tokens.next.value),\\\";\\\"!==state.tokens.next.id&&advance()}function reachable(controlToken){var t,i=0;if(\\\";\\\"===state.tokens.next.id&&!controlToken.inBracelessBlock)for(;;){do t=peek(i),i+=1;while(\\\"(end)\\\"!==t.id&&\\\"(comment)\\\"===t.id);if(t.reach)return;if(\\\"(endline)\\\"!==t.id){if(\\\"function\\\"===t.id){state.option.latedef===!0&&warning(\\\"W026\\\",t);break}warning(\\\"W027\\\",t,t.value,controlToken.value);break}}}function parseFinalSemicolon(){if(\\\";\\\"!==state.tokens.next.id){if(state.tokens.next.isUnclosed)return advance();var sameLine=startLine(state.tokens.next)===state.tokens.curr.line&&\\\"(end)\\\"!==state.tokens.next.id,blockEnd=checkPunctuator(state.tokens.next,\\\"}\\\");sameLine&&!blockEnd?errorAt(\\\"E058\\\",state.tokens.curr.line,state.tokens.curr.character):state.option.asi||(blockEnd&&!state.option.lastsemic||!sameLine)&&warningAt(\\\"W033\\\",state.tokens.curr.line,state.tokens.curr.character)}else advance(\\\";\\\")}function statement(){var r,i=indent,t=state.tokens.next,hasOwnScope=!1;if(\\\";\\\"===t.id)return advance(\\\";\\\"),void 0;var res=isReserved(t);if(res&&t.meta&&t.meta.isFutureReservedWord&&\\\":\\\"===peek().id&&(warning(\\\"W024\\\",t,t.id),res=!1),t.identifier&&!res&&\\\":\\\"===peek().id&&(advance(),advance(\\\":\\\"),hasOwnScope=!0,state.funct[\\\"(scope)\\\"].stack(),state.funct[\\\"(scope)\\\"].block.addBreakLabel(t.value,{token:state.tokens.curr}),state.tokens.next.labelled||\\\"{\\\"===state.tokens.next.value||warning(\\\"W028\\\",state.tokens.next,t.value,state.tokens.next.value),state.tokens.next.label=t.value,t=state.tokens.next),\\\"{\\\"===t.id){var iscase=\\\"case\\\"===state.funct[\\\"(verb)\\\"]&&\\\":\\\"===state.tokens.curr.value;return block(!0,!0,!1,!1,iscase),void 0}return r=expression(0,!0),!r||r.identifier&&\\\"function\\\"===r.value||\\\"(punctuator)\\\"===r.type&&r.left&&r.left.identifier&&\\\"function\\\"===r.left.value||state.isStrict()||\\\"global\\\"!==state.option.strict||warning(\\\"E007\\\"),t.block||(state.option.expr||r&&r.exps?state.option.nonew&&r&&r.left&&\\\"(\\\"===r.id&&\\\"new\\\"===r.left.id&&warning(\\\"W031\\\",t):warning(\\\"W030\\\",state.tokens.curr),parseFinalSemicolon()),indent=i,hasOwnScope&&state.funct[\\\"(scope)\\\"].unstack(),r}function statements(){for(var p,a=[];!state.tokens.next.reach&&\\\"(end)\\\"!==state.tokens.next.id;)\\\";\\\"===state.tokens.next.id?(p=peek(),(!p||\\\"(\\\"!==p.id&&\\\"[\\\"!==p.id)&&warning(\\\"W032\\\"),advance(\\\";\\\")):a.push(statement());return a}function directives(){for(var i,p,pn;\\\"(string)\\\"===state.tokens.next.id;){if(p=peek(0),\\\"(endline)\\\"===p.id){i=1;do pn=peek(i++);while(\\\"(endline)\\\"===pn.id);if(\\\";\\\"===pn.id)p=pn;else{if(\\\"[\\\"===pn.value||\\\".\\\"===pn.value)break;state.option.asi&&\\\"(\\\"!==pn.value||warning(\\\"W033\\\",state.tokens.next)}}else{if(\\\".\\\"===p.id||\\\"[\\\"===p.id)break;\\\";\\\"!==p.id&&warning(\\\"W033\\\",p)}advance();var directive=state.tokens.curr.value;(state.directive[directive]||\\\"use strict\\\"===directive&&\\\"implied\\\"===state.option.strict)&&warning(\\\"W034\\\",state.tokens.curr,directive),state.directive[directive]=!0,\\\";\\\"===p.id&&advance(\\\";\\\")}state.isStrict()&&(state.option[\\\"(explicitNewcap)\\\"]||(state.option.newcap=!0),state.option.undef=!0)}function block(ordinary,stmt,isfunc,isfatarrow,iscase){var a,m,t,line,d,b=inblock,old_indent=indent;inblock=ordinary,t=state.tokens.next;var metrics=state.funct[\\\"(metrics)\\\"];if(metrics.nestedBlockDepth+=1,metrics.verifyMaxNestedBlockDepthPerFunction(),\\\"{\\\"===state.tokens.next.id){if(advance(\\\"{\\\"),state.funct[\\\"(scope)\\\"].stack(),line=state.tokens.curr.line,\\\"}\\\"!==state.tokens.next.id){for(indent+=state.option.indent;!ordinary&&state.tokens.next.from>indent;)indent+=state.option.indent;if(isfunc){m={};for(d in state.directive)_.has(state.directive,d)&&(m[d]=state.directive[d]);directives(),state.option.strict&&state.funct[\\\"(context)\\\"][\\\"(global)\\\"]&&(m[\\\"use strict\\\"]||state.isStrict()||warning(\\\"E007\\\"))}a=statements(),metrics.statementCount+=a.length,indent-=state.option.indent}advance(\\\"}\\\",t),isfunc&&(state.funct[\\\"(scope)\\\"].validateParams(),m&&(state.directive=m)),state.funct[\\\"(scope)\\\"].unstack(),indent=old_indent}else if(ordinary)state.funct[\\\"(noblockscopedvar)\\\"]=\\\"for\\\"!==state.tokens.next.id,state.funct[\\\"(scope)\\\"].stack(),(!stmt||state.option.curly)&&warning(\\\"W116\\\",state.tokens.next,\\\"{\\\",state.tokens.next.value),state.tokens.next.inBracelessBlock=!0,indent+=state.option.indent,a=[statement()],indent-=state.option.indent,state.funct[\\\"(scope)\\\"].unstack(),delete state.funct[\\\"(noblockscopedvar)\\\"];else if(isfunc){if(state.funct[\\\"(scope)\\\"].stack(),m={},!stmt||isfatarrow||state.inMoz()||error(\\\"W118\\\",state.tokens.curr,\\\"function closure expressions\\\"),!stmt)for(d in state.directive)_.has(state.directive,d)&&(m[d]=state.directive[d]);expression(10),state.option.strict&&state.funct[\\\"(context)\\\"][\\\"(global)\\\"]&&(m[\\\"use strict\\\"]||state.isStrict()||warning(\\\"E007\\\")),state.funct[\\\"(scope)\\\"].unstack()}else error(\\\"E021\\\",state.tokens.next,\\\"{\\\",state.tokens.next.value);switch(state.funct[\\\"(verb)\\\"]){case\\\"break\\\":case\\\"continue\\\":case\\\"return\\\":case\\\"throw\\\":if(iscase)break;default:state.funct[\\\"(verb)\\\"]=null}return inblock=b,!ordinary||!state.option.noempty||a&&0!==a.length||warning(\\\"W035\\\",state.tokens.prev),metrics.nestedBlockDepth-=1,a}function countMember(m){membersOnly&&\\\"boolean\\\"!=typeof membersOnly[m]&&warning(\\\"W036\\\",state.tokens.curr,m),\\\"number\\\"==typeof member[m]?member[m]+=1:member[m]=1}function comprehensiveArrayExpression(){var res={};res.exps=!0,state.funct[\\\"(comparray)\\\"].stack();var reversed=!1;return\\\"for\\\"!==state.tokens.next.value&&(reversed=!0,state.inMoz()||warning(\\\"W116\\\",state.tokens.next,\\\"for\\\",state.tokens.next.value),state.funct[\\\"(comparray)\\\"].setState(\\\"use\\\"),res.right=expression(10)),advance(\\\"for\\\"),\\\"each\\\"===state.tokens.next.value&&(advance(\\\"each\\\"),state.inMoz()||warning(\\\"W118\\\",state.tokens.curr,\\\"for each\\\")),advance(\\\"(\\\"),state.funct[\\\"(comparray)\\\"].setState(\\\"define\\\"),res.left=expression(130),_.contains([\\\"in\\\",\\\"of\\\"],state.tokens.next.value)?advance():error(\\\"E045\\\",state.tokens.curr),state.funct[\\\"(comparray)\\\"].setState(\\\"generate\\\"),expression(10),advance(\\\")\\\"),\\\"if\\\"===state.tokens.next.value&&(advance(\\\"if\\\"),advance(\\\"(\\\"),state.funct[\\\"(comparray)\\\"].setState(\\\"filter\\\"),res.filter=expression(10),advance(\\\")\\\")),reversed||(state.funct[\\\"(comparray)\\\"].setState(\\\"use\\\"),res.right=expression(10)),advance(\\\"]\\\"),state.funct[\\\"(comparray)\\\"].unstack(),res}function isMethod(){return state.funct[\\\"(statement)\\\"]&&\\\"class\\\"===state.funct[\\\"(statement)\\\"].type||state.funct[\\\"(context)\\\"]&&\\\"class\\\"===state.funct[\\\"(context)\\\"][\\\"(verb)\\\"]}function isPropertyName(token){return token.identifier||\\\"(string)\\\"===token.id||\\\"(number)\\\"===token.id}function propertyName(preserveOrToken){var id,preserve=!0;return\\\"object\\\"==typeof preserveOrToken?id=preserveOrToken:(preserve=preserveOrToken,id=optionalidentifier(!1,!0,preserve)),id?\\\"object\\\"==typeof id&&(\\\"(string)\\\"===id.id||\\\"(identifier)\\\"===id.id?id=id.value:\\\"(number)\\\"===id.id&&(id=\\\"\\\"+id.value)):\\\"(string)\\\"===state.tokens.next.id?(id=state.tokens.next.value,preserve||advance()):\\\"(number)\\\"===state.tokens.next.id&&(id=\\\"\\\"+state.tokens.next.value,preserve||advance()),\\\"hasOwnProperty\\\"===id&&warning(\\\"W001\\\"),id}function functionparams(options){function addParam(addParamArgs){state.funct[\\\"(scope)\\\"].addParam.apply(state.funct[\\\"(scope)\\\"],addParamArgs)}var next,ident,t,paramsIds=[],tokens=[],pastDefault=!1,pastRest=!1,arity=0,loneArg=options&&options.loneArg;if(loneArg&&loneArg.identifier===!0)return state.funct[\\\"(scope)\\\"].addParam(loneArg.value,loneArg),{arity:1,params:[loneArg.value]};if(next=state.tokens.next,options&&options.parsedOpening||advance(\\\"(\\\"),\\\")\\\"===state.tokens.next.id)return advance(\\\")\\\"),void 0;for(;;){arity++;var currentParams=[];if(_.contains([\\\"{\\\",\\\"[\\\"],state.tokens.next.id)){tokens=destructuringPattern();for(t in tokens)t=tokens[t],t.id&&(paramsIds.push(t.id),currentParams.push([t.id,t.token]))}else if(checkPunctuator(state.tokens.next,\\\"...\\\")&&(pastRest=!0),ident=identifier(!0))paramsIds.push(ident),currentParams.push([ident,state.tokens.curr]);else for(;!checkPunctuators(state.tokens.next,[\\\",\\\",\\\")\\\"]);)advance();if(pastDefault&&\\\"=\\\"!==state.tokens.next.id&&error(\\\"W138\\\",state.tokens.current),\\\"=\\\"===state.tokens.next.id&&(state.inES6()||warning(\\\"W119\\\",state.tokens.next,\\\"default parameters\\\",\\\"6\\\"),advance(\\\"=\\\"),pastDefault=!0,expression(10)),currentParams.forEach(addParam),\\\",\\\"!==state.tokens.next.id)return advance(\\\")\\\",next),{arity:arity,params:paramsIds};pastRest&&warning(\\\"W131\\\",state.tokens.next),comma()}}function functor(name,token,overwrites){var funct={\\\"(name)\\\":name,\\\"(breakage)\\\":0,\\\"(loopage)\\\":0,\\\"(tokens)\\\":{},\\\"(properties)\\\":{},\\\"(catch)\\\":!1,\\\"(global)\\\":!1,\\\"(line)\\\":null,\\\"(character)\\\":null,\\\"(metrics)\\\":null,\\\"(statement)\\\":null,\\\"(context)\\\":null,\\\"(scope)\\\":null,\\\"(comparray)\\\":null,\\\"(generator)\\\":null,\\\"(arrow)\\\":null,\\\"(params)\\\":null};return token&&_.extend(funct,{\\\"(line)\\\":token.line,\\\"(character)\\\":token.character,\\\"(metrics)\\\":createMetrics(token)}),_.extend(funct,overwrites),funct[\\\"(context)\\\"]&&(funct[\\\"(scope)\\\"]=funct[\\\"(context)\\\"][\\\"(scope)\\\"],funct[\\\"(comparray)\\\"]=funct[\\\"(context)\\\"][\\\"(comparray)\\\"]),funct}function isFunctor(token){return\\\"(scope)\\\"in token}function hasParsedCode(funct){return funct[\\\"(global)\\\"]&&!funct[\\\"(verb)\\\"]}function doTemplateLiteral(left){function end(){if(state.tokens.curr.template&&state.tokens.curr.tail&&state.tokens.curr.context===ctx)return!0;var complete=state.tokens.next.template&&state.tokens.next.tail&&state.tokens.next.context===ctx;return complete&&advance(),complete||state.tokens.next.isUnclosed}var ctx=this.context,noSubst=this.noSubst,depth=this.depth;if(!noSubst)for(;!end();)!state.tokens.next.template||state.tokens.next.depth>depth?expression(0):advance();return{id:\\\"(template)\\\",type:\\\"(template)\\\",tag:left}}function doFunction(options){var f,token,name,statement,classExprBinding,isGenerator,isArrow,ignoreLoopFunc,oldOption=state.option,oldIgnored=state.ignored;options&&(name=options.name,statement=options.statement,classExprBinding=options.classExprBinding,isGenerator=\\\"generator\\\"===options.type,isArrow=\\\"arrow\\\"===options.type,ignoreLoopFunc=options.ignoreLoopFunc),state.option=Object.create(state.option),state.ignored=Object.create(state.ignored),state.funct=functor(name||state.nameStack.infer(),state.tokens.next,{\\\"(statement)\\\":statement,\\\"(context)\\\":state.funct,\\\"(arrow)\\\":isArrow,\\\"(generator)\\\":isGenerator}),f=state.funct,token=state.tokens.curr,token.funct=state.funct,functions.push(state.funct),state.funct[\\\"(scope)\\\"].stack(\\\"functionouter\\\");var internallyAccessibleName=name||classExprBinding;internallyAccessibleName&&state.funct[\\\"(scope)\\\"].block.add(internallyAccessibleName,classExprBinding?\\\"class\\\":\\\"function\\\",state.tokens.curr,!1),state.funct[\\\"(scope)\\\"].stack(\\\"functionparams\\\");var paramsInfo=functionparams(options);return paramsInfo?(state.funct[\\\"(params)\\\"]=paramsInfo.params,state.funct[\\\"(metrics)\\\"].arity=paramsInfo.arity,state.funct[\\\"(metrics)\\\"].verifyMaxParametersPerFunction()):state.funct[\\\"(metrics)\\\"].arity=0,isArrow&&(state.inES6(!0)||warning(\\\"W119\\\",state.tokens.curr,\\\"arrow function syntax (=>)\\\",\\\"6\\\"),options.loneArg||advance(\\\"=>\\\")),block(!1,!0,!0,isArrow),!state.option.noyield&&isGenerator&&\\\"yielded\\\"!==state.funct[\\\"(generator)\\\"]&&warning(\\\"W124\\\",state.tokens.curr),state.funct[\\\"(metrics)\\\"].verifyMaxStatementsPerFunction(),state.funct[\\\"(metrics)\\\"].verifyMaxComplexityPerFunction(),state.funct[\\\"(unusedOption)\\\"]=state.option.unused,state.option=oldOption,state.ignored=oldIgnored,state.funct[\\\"(last)\\\"]=state.tokens.curr.line,state.funct[\\\"(lastcharacter)\\\"]=state.tokens.curr.character,state.funct[\\\"(scope)\\\"].unstack(),state.funct[\\\"(scope)\\\"].unstack(),state.funct=state.funct[\\\"(context)\\\"],ignoreLoopFunc||state.option.loopfunc||!state.funct[\\\"(loopage)\\\"]||f[\\\"(isCapturing)\\\"]&&warning(\\\"W083\\\",token),f}function createMetrics(functionStartToken){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,arity:0,verifyMaxStatementsPerFunction:function(){state.option.maxstatements&&this.statementCount>state.option.maxstatements&&warning(\\\"W071\\\",functionStartToken,this.statementCount)\\n},verifyMaxParametersPerFunction:function(){_.isNumber(state.option.maxparams)&&this.arity>state.option.maxparams&&warning(\\\"W072\\\",functionStartToken,this.arity)},verifyMaxNestedBlockDepthPerFunction:function(){state.option.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===state.option.maxdepth+1&&warning(\\\"W073\\\",null,this.nestedBlockDepth)},verifyMaxComplexityPerFunction:function(){var max=state.option.maxcomplexity,cc=this.ComplexityCount;max&&cc>max&&warning(\\\"W074\\\",functionStartToken,cc)}}}function increaseComplexityCount(){state.funct[\\\"(metrics)\\\"].ComplexityCount+=1}function checkCondAssignment(expr){var id,paren;switch(expr&&(id=expr.id,paren=expr.paren,\\\",\\\"===id&&(expr=expr.exprs[expr.exprs.length-1])&&(id=expr.id,paren=paren||expr.paren)),id){case\\\"=\\\":case\\\"+=\\\":case\\\"-=\\\":case\\\"*=\\\":case\\\"%=\\\":case\\\"&=\\\":case\\\"|=\\\":case\\\"^=\\\":case\\\"/=\\\":paren||state.option.boss||warning(\\\"W084\\\")}}function checkProperties(props){if(state.inES5())for(var name in props)props[name]&&props[name].setterToken&&!props[name].getterToken&&warning(\\\"W078\\\",props[name].setterToken)}function metaProperty(name,c){if(checkPunctuator(state.tokens.next,\\\".\\\")){var left=state.tokens.curr.id;advance(\\\".\\\");var id=identifier();return state.tokens.curr.isMetaProperty=!0,name!==id?error(\\\"E057\\\",state.tokens.prev,left,id):c(),state.tokens.curr}}function destructuringPattern(options){var isAssignment=options&&options.assignment;return state.inES6()||warning(\\\"W104\\\",state.tokens.curr,isAssignment?\\\"destructuring assignment\\\":\\\"destructuring binding\\\",\\\"6\\\"),destructuringPatternRecursive(options)}function destructuringPatternRecursive(options){var ids,identifiers=[],openingParsed=options&&options.openingParsed,isAssignment=options&&options.assignment,recursiveOptions=isAssignment?{assignment:isAssignment}:null,firstToken=openingParsed?state.tokens.curr:state.tokens.next,nextInnerDE=function(){var ident;if(checkPunctuators(state.tokens.next,[\\\"[\\\",\\\"{\\\"])){ids=destructuringPatternRecursive(recursiveOptions);for(var id in ids)id=ids[id],identifiers.push({id:id.id,token:id.token})}else if(checkPunctuator(state.tokens.next,\\\",\\\"))identifiers.push({id:null,token:state.tokens.curr});else{if(!checkPunctuator(state.tokens.next,\\\"(\\\")){var is_rest=checkPunctuator(state.tokens.next,\\\"...\\\");if(isAssignment){var identifierToken=is_rest?peek(0):state.tokens.next;identifierToken.identifier||warning(\\\"E030\\\",identifierToken,identifierToken.value);var assignTarget=expression(155);assignTarget&&(checkLeftSideAssign(assignTarget),assignTarget.identifier&&(ident=assignTarget.value))}else ident=identifier();return ident&&identifiers.push({id:ident,token:state.tokens.curr}),is_rest}advance(\\\"(\\\"),nextInnerDE(),advance(\\\")\\\")}return!1},assignmentProperty=function(){var id;checkPunctuator(state.tokens.next,\\\"[\\\")?(advance(\\\"[\\\"),expression(10),advance(\\\"]\\\"),advance(\\\":\\\"),nextInnerDE()):\\\"(string)\\\"===state.tokens.next.id||\\\"(number)\\\"===state.tokens.next.id?(advance(),advance(\\\":\\\"),nextInnerDE()):(id=identifier(),checkPunctuator(state.tokens.next,\\\":\\\")?(advance(\\\":\\\"),nextInnerDE()):id&&(isAssignment&&checkLeftSideAssign(state.tokens.curr),identifiers.push({id:id,token:state.tokens.curr})))};if(checkPunctuator(firstToken,\\\"[\\\")){openingParsed||advance(\\\"[\\\"),checkPunctuator(state.tokens.next,\\\"]\\\")&&warning(\\\"W137\\\",state.tokens.curr);for(var element_after_rest=!1;!checkPunctuator(state.tokens.next,\\\"]\\\");)nextInnerDE()&&!element_after_rest&&checkPunctuator(state.tokens.next,\\\",\\\")&&(warning(\\\"W130\\\",state.tokens.next),element_after_rest=!0),checkPunctuator(state.tokens.next,\\\"=\\\")&&(checkPunctuator(state.tokens.prev,\\\"...\\\")?advance(\\\"]\\\"):advance(\\\"=\\\"),\\\"undefined\\\"===state.tokens.next.id&&warning(\\\"W080\\\",state.tokens.prev,state.tokens.prev.value),expression(10)),checkPunctuator(state.tokens.next,\\\"]\\\")||advance(\\\",\\\");advance(\\\"]\\\")}else if(checkPunctuator(firstToken,\\\"{\\\")){for(openingParsed||advance(\\\"{\\\"),checkPunctuator(state.tokens.next,\\\"}\\\")&&warning(\\\"W137\\\",state.tokens.curr);!checkPunctuator(state.tokens.next,\\\"}\\\")&&(assignmentProperty(),checkPunctuator(state.tokens.next,\\\"=\\\")&&(advance(\\\"=\\\"),\\\"undefined\\\"===state.tokens.next.id&&warning(\\\"W080\\\",state.tokens.prev,state.tokens.prev.value),expression(10)),checkPunctuator(state.tokens.next,\\\"}\\\")||(advance(\\\",\\\"),!checkPunctuator(state.tokens.next,\\\"}\\\"))););advance(\\\"}\\\")}return identifiers}function destructuringPatternMatch(tokens,value){var first=value.first;first&&_.zip(tokens,Array.isArray(first)?first:[first]).forEach(function(val){var token=val[0],value=val[1];token&&value?token.first=value:token&&token.first&&!value&&warning(\\\"W080\\\",token.first,token.first.value)})}function blockVariableStatement(type,statement,context){var tokens,lone,value,letblock,prefix=context&&context.prefix,inexport=context&&context.inexport,isLet=\\\"let\\\"===type,isConst=\\\"const\\\"===type;for(state.inES6()||warning(\\\"W104\\\",state.tokens.curr,type,\\\"6\\\"),isLet&&\\\"(\\\"===state.tokens.next.value?(state.inMoz()||warning(\\\"W118\\\",state.tokens.next,\\\"let block\\\"),advance(\\\"(\\\"),state.funct[\\\"(scope)\\\"].stack(),letblock=!0):state.funct[\\\"(noblockscopedvar)\\\"]&&error(\\\"E048\\\",state.tokens.curr,isConst?\\\"Const\\\":\\\"Let\\\"),statement.first=[];;){var names=[];_.contains([\\\"{\\\",\\\"[\\\"],state.tokens.next.value)?(tokens=destructuringPattern(),lone=!1):(tokens=[{id:identifier(),token:state.tokens.curr}],lone=!0),!prefix&&isConst&&\\\"=\\\"!==state.tokens.next.id&&warning(\\\"E012\\\",state.tokens.curr,state.tokens.curr.value);for(var t in tokens)tokens.hasOwnProperty(t)&&(t=tokens[t],state.funct[\\\"(scope)\\\"].block.isGlobal()&&predefined[t.id]===!1&&warning(\\\"W079\\\",t.token,t.id),t.id&&!state.funct[\\\"(noblockscopedvar)\\\"]&&(state.funct[\\\"(scope)\\\"].addlabel(t.id,{type:type,token:t.token}),names.push(t.token),lone&&inexport&&state.funct[\\\"(scope)\\\"].setExported(t.token.value,t.token)));if(\\\"=\\\"===state.tokens.next.id&&(advance(\\\"=\\\"),prefix||\\\"undefined\\\"!==state.tokens.next.id||warning(\\\"W080\\\",state.tokens.prev,state.tokens.prev.value),!prefix&&\\\"=\\\"===peek(0).id&&state.tokens.next.identifier&&warning(\\\"W120\\\",state.tokens.next,state.tokens.next.value),value=expression(prefix?120:10),lone?tokens[0].first=value:destructuringPatternMatch(names,value)),statement.first=statement.first.concat(names),\\\",\\\"!==state.tokens.next.id)break;comma()}return letblock&&(advance(\\\")\\\"),block(!0,!0),statement.block=!0,state.funct[\\\"(scope)\\\"].unstack()),statement}function classdef(isStatement){return state.inES6()||warning(\\\"W104\\\",state.tokens.curr,\\\"class\\\",\\\"6\\\"),isStatement?(this.name=identifier(),state.funct[\\\"(scope)\\\"].addlabel(this.name,{type:\\\"class\\\",token:state.tokens.curr})):state.tokens.next.identifier&&\\\"extends\\\"!==state.tokens.next.value?(this.name=identifier(),this.namedExpr=!0):this.name=state.nameStack.infer(),classtail(this),this}function classtail(c){var wasInClassBody=state.inClassBody;\\\"extends\\\"===state.tokens.next.value&&(advance(\\\"extends\\\"),c.heritage=expression(10)),state.inClassBody=!0,advance(\\\"{\\\"),c.body=classbody(c),advance(\\\"}\\\"),state.inClassBody=wasInClassBody}function classbody(c){for(var name,isStatic,isGenerator,getset,computed,props=Object.create(null),staticProps=Object.create(null),i=0;\\\"}\\\"!==state.tokens.next.id;++i)if(name=state.tokens.next,isStatic=!1,isGenerator=!1,getset=null,\\\";\\\"!==name.id){if(\\\"*\\\"===name.id&&(isGenerator=!0,advance(\\\"*\\\"),name=state.tokens.next),\\\"[\\\"===name.id)name=computedPropertyName(),computed=!0;else{if(!isPropertyName(name)){warning(\\\"W052\\\",state.tokens.next,state.tokens.next.value||state.tokens.next.type),advance();continue}advance(),computed=!1,name.identifier&&\\\"static\\\"===name.value&&(checkPunctuator(state.tokens.next,\\\"*\\\")&&(isGenerator=!0,advance(\\\"*\\\")),(isPropertyName(state.tokens.next)||\\\"[\\\"===state.tokens.next.id)&&(computed=\\\"[\\\"===state.tokens.next.id,isStatic=!0,name=state.tokens.next,\\\"[\\\"===state.tokens.next.id?name=computedPropertyName():advance())),!name.identifier||\\\"get\\\"!==name.value&&\\\"set\\\"!==name.value||(isPropertyName(state.tokens.next)||\\\"[\\\"===state.tokens.next.id)&&(computed=\\\"[\\\"===state.tokens.next.id,getset=name,name=state.tokens.next,\\\"[\\\"===state.tokens.next.id?name=computedPropertyName():advance())}if(!checkPunctuator(state.tokens.next,\\\"(\\\")){for(error(\\\"E054\\\",state.tokens.next,state.tokens.next.value);\\\"}\\\"!==state.tokens.next.id&&!checkPunctuator(state.tokens.next,\\\"(\\\");)advance();\\\"(\\\"!==state.tokens.next.value&&doFunction({statement:c})}if(computed||(getset?saveAccessor(getset.value,isStatic?staticProps:props,name.value,name,!0,isStatic):(\\\"constructor\\\"===name.value?state.nameStack.set(c):state.nameStack.set(name),saveProperty(isStatic?staticProps:props,name.value,name,!0,isStatic))),getset&&\\\"constructor\\\"===name.value){var propDesc=\\\"get\\\"===getset.value?\\\"class getter method\\\":\\\"class setter method\\\";error(\\\"E049\\\",name,propDesc,\\\"constructor\\\")}else\\\"prototype\\\"===name.value&&error(\\\"E049\\\",name,\\\"class method\\\",\\\"prototype\\\");propertyName(name),doFunction({statement:c,type:isGenerator?\\\"generator\\\":null,classExprBinding:c.namedExpr?c.name:null})}else warning(\\\"W032\\\"),advance(\\\";\\\");checkProperties(props)}function saveProperty(props,name,tkn,isClass,isStatic){var msg=[\\\"key\\\",\\\"class method\\\",\\\"static class method\\\"];msg=msg[(isClass||!1)+(isStatic||!1)],tkn.identifier&&(name=tkn.value),props[name]&&\\\"__proto__\\\"!==name?warning(\\\"W075\\\",state.tokens.next,msg,name):props[name]=Object.create(null),props[name].basic=!0,props[name].basictkn=tkn}function saveAccessor(accessorType,props,name,tkn,isClass,isStatic){var flagName=\\\"get\\\"===accessorType?\\\"getterToken\\\":\\\"setterToken\\\",msg=\\\"\\\";isClass?(isStatic&&(msg+=\\\"static \\\"),msg+=accessorType+\\\"ter method\\\"):msg=\\\"key\\\",state.tokens.curr.accessorType=accessorType,state.nameStack.set(tkn),props[name]?(props[name].basic||props[name][flagName])&&\\\"__proto__\\\"!==name&&warning(\\\"W075\\\",state.tokens.next,msg,name):props[name]=Object.create(null),props[name][flagName]=tkn}function computedPropertyName(){advance(\\\"[\\\"),state.inES6()||warning(\\\"W119\\\",state.tokens.curr,\\\"computed property names\\\",\\\"6\\\");var value=expression(10);return advance(\\\"]\\\"),value}function checkPunctuators(token,values){return\\\"(punctuator)\\\"===token.type?_.contains(values,token.value):!1}function checkPunctuator(token,value){return\\\"(punctuator)\\\"===token.type&&token.value===value}function destructuringAssignOrJsonValue(){var block=lookupBlockType();block.notJson?(!state.inES6()&&block.isDestAssign&&warning(\\\"W104\\\",state.tokens.curr,\\\"destructuring assignment\\\",\\\"6\\\"),statements()):(state.option.laxbreak=!0,state.jsonMode=!0,jsonValue())}function jsonValue(){function jsonObject(){var o={},t=state.tokens.next;if(advance(\\\"{\\\"),\\\"}\\\"!==state.tokens.next.id)for(;;){if(\\\"(end)\\\"===state.tokens.next.id)error(\\\"E026\\\",state.tokens.next,t.line);else{if(\\\"}\\\"===state.tokens.next.id){warning(\\\"W094\\\",state.tokens.curr);break}\\\",\\\"===state.tokens.next.id?error(\\\"E028\\\",state.tokens.next):\\\"(string)\\\"!==state.tokens.next.id&&warning(\\\"W095\\\",state.tokens.next,state.tokens.next.value)}if(o[state.tokens.next.value]===!0?warning(\\\"W075\\\",state.tokens.next,\\\"key\\\",state.tokens.next.value):\\\"__proto__\\\"===state.tokens.next.value&&!state.option.proto||\\\"__iterator__\\\"===state.tokens.next.value&&!state.option.iterator?warning(\\\"W096\\\",state.tokens.next,state.tokens.next.value):o[state.tokens.next.value]=!0,advance(),advance(\\\":\\\"),jsonValue(),\\\",\\\"!==state.tokens.next.id)break;advance(\\\",\\\")}advance(\\\"}\\\")}function jsonArray(){var t=state.tokens.next;if(advance(\\\"[\\\"),\\\"]\\\"!==state.tokens.next.id)for(;;){if(\\\"(end)\\\"===state.tokens.next.id)error(\\\"E027\\\",state.tokens.next,t.line);else{if(\\\"]\\\"===state.tokens.next.id){warning(\\\"W094\\\",state.tokens.curr);break}\\\",\\\"===state.tokens.next.id&&error(\\\"E028\\\",state.tokens.next)}if(jsonValue(),\\\",\\\"!==state.tokens.next.id)break;advance(\\\",\\\")}advance(\\\"]\\\")}switch(state.tokens.next.id){case\\\"{\\\":jsonObject();break;case\\\"[\\\":jsonArray();break;case\\\"true\\\":case\\\"false\\\":case\\\"null\\\":case\\\"(number)\\\":case\\\"(string)\\\":advance();break;case\\\"-\\\":advance(\\\"-\\\"),advance(\\\"(number)\\\");break;default:error(\\\"E003\\\",state.tokens.next)}}var api,declared,functions,inblock,indent,lookahead,lex,member,membersOnly,predefined,stack,urls,bang={\\\"<\\\":!0,\\\"<=\\\":!0,\\\"==\\\":!0,\\\"===\\\":!0,\\\"!==\\\":!0,\\\"!=\\\":!0,\\\">\\\":!0,\\\">=\\\":!0,\\\"+\\\":!0,\\\"-\\\":!0,\\\"*\\\":!0,\\\"/\\\":!0,\\\"%\\\":!0},functionicity=[\\\"closure\\\",\\\"exception\\\",\\\"global\\\",\\\"label\\\",\\\"outer\\\",\\\"unused\\\",\\\"var\\\"],extraModules=[],emitter=new events.EventEmitter,typeofValues={};typeofValues.legacy=[\\\"xml\\\",\\\"unknown\\\"],typeofValues.es3=[\\\"undefined\\\",\\\"boolean\\\",\\\"number\\\",\\\"string\\\",\\\"function\\\",\\\"object\\\"],typeofValues.es3=typeofValues.es3.concat(typeofValues.legacy),typeofValues.es6=typeofValues.es3.concat(\\\"symbol\\\"),type(\\\"(number)\\\",function(){return this}),type(\\\"(string)\\\",function(){return this}),state.syntax[\\\"(identifier)\\\"]={type:\\\"(identifier)\\\",lbp:0,identifier:!0,nud:function(){var v=this.value;return\\\"=>\\\"===state.tokens.next.id?this:(state.funct[\\\"(comparray)\\\"].check(v)||state.funct[\\\"(scope)\\\"].block.use(v,state.tokens.curr),this)},led:function(){error(\\\"E033\\\",state.tokens.next,state.tokens.next.value)}};var baseTemplateSyntax={lbp:0,identifier:!1,template:!0};state.syntax[\\\"(template)\\\"]=_.extend({type:\\\"(template)\\\",nud:doTemplateLiteral,led:doTemplateLiteral,noSubst:!1},baseTemplateSyntax),state.syntax[\\\"(template middle)\\\"]=_.extend({type:\\\"(template middle)\\\",middle:!0,noSubst:!1},baseTemplateSyntax),state.syntax[\\\"(template tail)\\\"]=_.extend({type:\\\"(template tail)\\\",tail:!0,noSubst:!1},baseTemplateSyntax),state.syntax[\\\"(no subst template)\\\"]=_.extend({type:\\\"(template)\\\",nud:doTemplateLiteral,led:doTemplateLiteral,noSubst:!0,tail:!0},baseTemplateSyntax),type(\\\"(regexp)\\\",function(){return this}),delim(\\\"(endline)\\\"),delim(\\\"(begin)\\\"),delim(\\\"(end)\\\").reach=!0,delim(\\\"(error)\\\").reach=!0,delim(\\\"}\\\").reach=!0,delim(\\\")\\\"),delim(\\\"]\\\"),delim('\\\"').reach=!0,delim(\\\"'\\\").reach=!0,delim(\\\";\\\"),delim(\\\":\\\").reach=!0,delim(\\\"#\\\"),reserve(\\\"else\\\"),reserve(\\\"case\\\").reach=!0,reserve(\\\"catch\\\"),reserve(\\\"default\\\").reach=!0,reserve(\\\"finally\\\"),reservevar(\\\"arguments\\\",function(x){state.isStrict()&&state.funct[\\\"(global)\\\"]&&warning(\\\"E008\\\",x)}),reservevar(\\\"eval\\\"),reservevar(\\\"false\\\"),reservevar(\\\"Infinity\\\"),reservevar(\\\"null\\\"),reservevar(\\\"this\\\",function(x){state.isStrict()&&!isMethod()&&!state.option.validthis&&(state.funct[\\\"(statement)\\\"]&&state.funct[\\\"(name)\\\"].charAt(0)>\\\"Z\\\"||state.funct[\\\"(global)\\\"])&&warning(\\\"W040\\\",x)}),reservevar(\\\"true\\\"),reservevar(\\\"undefined\\\"),assignop(\\\"=\\\",\\\"assign\\\",20),assignop(\\\"+=\\\",\\\"assignadd\\\",20),assignop(\\\"-=\\\",\\\"assignsub\\\",20),assignop(\\\"*=\\\",\\\"assignmult\\\",20),assignop(\\\"/=\\\",\\\"assigndiv\\\",20).nud=function(){error(\\\"E014\\\")},assignop(\\\"%=\\\",\\\"assignmod\\\",20),bitwiseassignop(\\\"&=\\\"),bitwiseassignop(\\\"|=\\\"),bitwiseassignop(\\\"^=\\\"),bitwiseassignop(\\\"<<=\\\"),bitwiseassignop(\\\">>=\\\"),bitwiseassignop(\\\">>>=\\\"),infix(\\\",\\\",function(left,that){var expr;if(that.exprs=[left],state.option.nocomma&&warning(\\\"W127\\\"),!comma({peek:!0}))return that;for(;;){if(!(expr=expression(10)))break;if(that.exprs.push(expr),\\\",\\\"!==state.tokens.next.value||!comma())break}return that},10,!0),infix(\\\"?\\\",function(left,that){return increaseComplexityCount(),that.left=left,that.right=expression(10),advance(\\\":\\\"),that[\\\"else\\\"]=expression(10),that},30);var orPrecendence=40;infix(\\\"||\\\",function(left,that){return increaseComplexityCount(),that.left=left,that.right=expression(orPrecendence),that},orPrecendence),infix(\\\"&&\\\",\\\"and\\\",50),bitwise(\\\"|\\\",\\\"bitor\\\",70),bitwise(\\\"^\\\",\\\"bitxor\\\",80),bitwise(\\\"&\\\",\\\"bitand\\\",90),relation(\\\"==\\\",function(left,right){var eqnull=state.option.eqnull&&(\\\"null\\\"===(left&&left.value)||\\\"null\\\"===(right&&right.value));switch(!0){case!eqnull&&state.option.eqeqeq:this.from=this.character,warning(\\\"W116\\\",this,\\\"===\\\",\\\"==\\\");break;case isPoorRelation(left):warning(\\\"W041\\\",this,\\\"===\\\",left.value);break;case isPoorRelation(right):warning(\\\"W041\\\",this,\\\"===\\\",right.value);break;case isTypoTypeof(right,left,state):warning(\\\"W122\\\",this,right.value);break;case isTypoTypeof(left,right,state):warning(\\\"W122\\\",this,left.value)}return this}),relation(\\\"===\\\",function(left,right){return isTypoTypeof(right,left,state)?warning(\\\"W122\\\",this,right.value):isTypoTypeof(left,right,state)&&warning(\\\"W122\\\",this,left.value),this}),relation(\\\"!=\\\",function(left,right){var eqnull=state.option.eqnull&&(\\\"null\\\"===(left&&left.value)||\\\"null\\\"===(right&&right.value));return!eqnull&&state.option.eqeqeq?(this.from=this.character,warning(\\\"W116\\\",this,\\\"!==\\\",\\\"!=\\\")):isPoorRelation(left)?warning(\\\"W041\\\",this,\\\"!==\\\",left.value):isPoorRelation(right)?warning(\\\"W041\\\",this,\\\"!==\\\",right.value):isTypoTypeof(right,left,state)?warning(\\\"W122\\\",this,right.value):isTypoTypeof(left,right,state)&&warning(\\\"W122\\\",this,left.value),this}),relation(\\\"!==\\\",function(left,right){return isTypoTypeof(right,left,state)?warning(\\\"W122\\\",this,right.value):isTypoTypeof(left,right,state)&&warning(\\\"W122\\\",this,left.value),this}),relation(\\\"<\\\"),relation(\\\">\\\"),relation(\\\"<=\\\"),relation(\\\">=\\\"),bitwise(\\\"<<\\\",\\\"shiftleft\\\",120),bitwise(\\\">>\\\",\\\"shiftright\\\",120),bitwise(\\\">>>\\\",\\\"shiftrightunsigned\\\",120),infix(\\\"in\\\",\\\"in\\\",120),infix(\\\"instanceof\\\",\\\"instanceof\\\",120),infix(\\\"+\\\",function(left,that){var right;return that.left=left,that.right=right=expression(130),left&&right&&\\\"(string)\\\"===left.id&&\\\"(string)\\\"===right.id?(left.value+=right.value,left.character=right.character,!state.option.scripturl&®.javascriptURL.test(left.value)&&warning(\\\"W050\\\",left),left):that},130),prefix(\\\"+\\\",\\\"num\\\"),prefix(\\\"+++\\\",function(){return warning(\\\"W007\\\"),this.arity=\\\"unary\\\",this.right=expression(150),this}),infix(\\\"+++\\\",function(left){return warning(\\\"W007\\\"),this.left=left,this.right=expression(130),this},130),infix(\\\"-\\\",\\\"sub\\\",130),prefix(\\\"-\\\",\\\"neg\\\"),prefix(\\\"---\\\",function(){return warning(\\\"W006\\\"),this.arity=\\\"unary\\\",this.right=expression(150),this}),infix(\\\"---\\\",function(left){return warning(\\\"W006\\\"),this.left=left,this.right=expression(130),this},130),infix(\\\"*\\\",\\\"mult\\\",140),infix(\\\"/\\\",\\\"div\\\",140),infix(\\\"%\\\",\\\"mod\\\",140),suffix(\\\"++\\\"),prefix(\\\"++\\\",\\\"preinc\\\"),state.syntax[\\\"++\\\"].exps=!0,suffix(\\\"--\\\"),prefix(\\\"--\\\",\\\"predec\\\"),state.syntax[\\\"--\\\"].exps=!0,prefix(\\\"delete\\\",function(){var p=expression(10);return p?(\\\".\\\"!==p.id&&\\\"[\\\"!==p.id&&warning(\\\"W051\\\"),this.first=p,p.identifier&&!state.isStrict()&&(p.forgiveUndef=!0),this):this}).exps=!0,prefix(\\\"~\\\",function(){return state.option.bitwise&&warning(\\\"W016\\\",this,\\\"~\\\"),this.arity=\\\"unary\\\",this.right=expression(150),this}),prefix(\\\"...\\\",function(){return state.inES6(!0)||warning(\\\"W119\\\",this,\\\"spread/rest operator\\\",\\\"6\\\"),state.tokens.next.identifier||\\\"(string)\\\"===state.tokens.next.type||checkPunctuators(state.tokens.next,[\\\"[\\\",\\\"(\\\"])||error(\\\"E030\\\",state.tokens.next,state.tokens.next.value),expression(150),this}),prefix(\\\"!\\\",function(){return this.arity=\\\"unary\\\",this.right=expression(150),this.right||quit(\\\"E041\\\",this.line||0),bang[this.right.id]===!0&&warning(\\\"W018\\\",this,\\\"!\\\"),this}),prefix(\\\"typeof\\\",function(){var p=expression(150);return this.first=this.right=p,p||quit(\\\"E041\\\",this.line||0,this.character||0),p.identifier&&(p.forgiveUndef=!0),this}),prefix(\\\"new\\\",function(){var mp=metaProperty(\\\"target\\\",function(){state.inES6(!0)||warning(\\\"W119\\\",state.tokens.prev,\\\"new.target\\\",\\\"6\\\");for(var inFunction,c=state.funct;c&&(inFunction=!c[\\\"(global)\\\"],c[\\\"(arrow)\\\"]);)c=c[\\\"(context)\\\"];inFunction||warning(\\\"W136\\\",state.tokens.prev,\\\"new.target\\\")});if(mp)return mp;var i,c=expression(155);if(c&&\\\"function\\\"!==c.id)if(c.identifier)switch(c[\\\"new\\\"]=!0,c.value){case\\\"Number\\\":case\\\"String\\\":case\\\"Boolean\\\":case\\\"Math\\\":case\\\"JSON\\\":warning(\\\"W053\\\",state.tokens.prev,c.value);break;case\\\"Symbol\\\":state.inES6()&&warning(\\\"W053\\\",state.tokens.prev,c.value);break;case\\\"Function\\\":state.option.evil||warning(\\\"W054\\\");break;case\\\"Date\\\":case\\\"RegExp\\\":case\\\"this\\\":break;default:\\\"function\\\"!==c.id&&(i=c.value.substr(0,1),state.option.newcap&&(\\\"A\\\">i||i>\\\"Z\\\")&&!state.funct[\\\"(scope)\\\"].isPredefined(c.value)&&warning(\\\"W055\\\",state.tokens.curr))}else\\\".\\\"!==c.id&&\\\"[\\\"!==c.id&&\\\"(\\\"!==c.id&&warning(\\\"W056\\\",state.tokens.curr);else state.option.supernew||warning(\\\"W057\\\",this);return\\\"(\\\"===state.tokens.next.id||state.option.supernew||warning(\\\"W058\\\",state.tokens.curr,state.tokens.curr.value),this.first=this.right=c,this}),state.syntax[\\\"new\\\"].exps=!0,prefix(\\\"void\\\").exps=!0,infix(\\\".\\\",function(left,that){var m=identifier(!1,!0);return\\\"string\\\"==typeof m&&countMember(m),that.left=left,that.right=m,m&&\\\"hasOwnProperty\\\"===m&&\\\"=\\\"===state.tokens.next.value&&warning(\\\"W001\\\"),!left||\\\"arguments\\\"!==left.value||\\\"callee\\\"!==m&&\\\"caller\\\"!==m?state.option.evil||!left||\\\"document\\\"!==left.value||\\\"write\\\"!==m&&\\\"writeln\\\"!==m||warning(\\\"W060\\\",left):state.option.noarg?warning(\\\"W059\\\",left,m):state.isStrict()&&error(\\\"E008\\\"),state.option.evil||\\\"eval\\\"!==m&&\\\"execScript\\\"!==m||isGlobalEval(left,state)&&warning(\\\"W061\\\"),that},160,!0),infix(\\\"(\\\",function(left,that){state.option.immed&&left&&!left.immed&&\\\"function\\\"===left.id&&warning(\\\"W062\\\");var n=0,p=[];if(left&&\\\"(identifier)\\\"===left.type&&left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&-1===\\\"Array Number String Boolean Date Object Error Symbol\\\".indexOf(left.value)&&(\\\"Math\\\"===left.value?warning(\\\"W063\\\",left):state.option.newcap&&warning(\\\"W064\\\",left)),\\\")\\\"!==state.tokens.next.id)for(;p[p.length]=expression(10),n+=1,\\\",\\\"===state.tokens.next.id;)comma();return advance(\\\")\\\"),\\\"object\\\"==typeof left&&(state.inES5()||\\\"parseInt\\\"!==left.value||1!==n||warning(\\\"W065\\\",state.tokens.curr),state.option.evil||(\\\"eval\\\"===left.value||\\\"Function\\\"===left.value||\\\"execScript\\\"===left.value?(warning(\\\"W061\\\",left),p[0]&&\\\"(string)\\\"===[0].id&&addInternalSrc(left,p[0].value)):!p[0]||\\\"(string)\\\"!==p[0].id||\\\"setTimeout\\\"!==left.value&&\\\"setInterval\\\"!==left.value?!p[0]||\\\"(string)\\\"!==p[0].id||\\\".\\\"!==left.value||\\\"window\\\"!==left.left.value||\\\"setTimeout\\\"!==left.right&&\\\"setInterval\\\"!==left.right||(warning(\\\"W066\\\",left),addInternalSrc(left,p[0].value)):(warning(\\\"W066\\\",left),addInternalSrc(left,p[0].value))),left.identifier||\\\".\\\"===left.id||\\\"[\\\"===left.id||\\\"=>\\\"===left.id||\\\"(\\\"===left.id||\\\"&&\\\"===left.id||\\\"||\\\"===left.id||\\\"?\\\"===left.id||state.inES6()&&left[\\\"(name)\\\"]||warning(\\\"W067\\\",that)),that.left=left,that},155,!0).exps=!0,prefix(\\\"(\\\",function(){var pn1,ret,triggerFnExpr,first,last,pn=state.tokens.next,i=-1,parens=1,opening=state.tokens.curr,preceeding=state.tokens.prev,isNecessary=!state.option.singleGroups;do\\\"(\\\"===pn.value?parens+=1:\\\")\\\"===pn.value&&(parens-=1),i+=1,pn1=pn,pn=peek(i);while((0!==parens||\\\")\\\"!==pn1.value)&&\\\";\\\"!==pn.value&&\\\"(end)\\\"!==pn.type);if(\\\"function\\\"===state.tokens.next.id&&(triggerFnExpr=state.tokens.next.immed=!0),\\\"=>\\\"===pn.value)return doFunction({type:\\\"arrow\\\",parsedOpening:!0});var exprs=[];if(\\\")\\\"!==state.tokens.next.id)for(;exprs.push(expression(10)),\\\",\\\"===state.tokens.next.id;)state.option.nocomma&&warning(\\\"W127\\\"),comma();return advance(\\\")\\\",this),state.option.immed&&exprs[0]&&\\\"function\\\"===exprs[0].id&&\\\"(\\\"!==state.tokens.next.id&&\\\".\\\"!==state.tokens.next.id&&\\\"[\\\"!==state.tokens.next.id&&warning(\\\"W068\\\",this),exprs.length?(exprs.length>1?(ret=Object.create(state.syntax[\\\",\\\"]),ret.exprs=exprs,first=exprs[0],last=exprs[exprs.length-1],isNecessary||(isNecessary=preceeding.assign||preceeding.delim)):(ret=first=last=exprs[0],isNecessary||(isNecessary=opening.beginsStmt&&(\\\"{\\\"===ret.id||triggerFnExpr||isFunctor(ret))||triggerFnExpr&&(!isEndOfExpr()||\\\"}\\\"!==state.tokens.prev.id)||isFunctor(ret)&&!isEndOfExpr()||\\\"{\\\"===ret.id&&\\\"=>\\\"===preceeding.id||\\\"(number)\\\"===ret.type&&checkPunctuator(pn,\\\".\\\")&&/^\\\\d+$/.test(ret.value))),ret&&(!isNecessary&&(first.left||first.right||ret.exprs)&&(isNecessary=!isBeginOfExpr(preceeding)&&first.lbp<=preceeding.lbp||!isEndOfExpr()&&last.lbp\\\"),infix(\\\"[\\\",function(left,that){var s,e=expression(10);return e&&\\\"(string)\\\"===e.type&&(state.option.evil||\\\"eval\\\"!==e.value&&\\\"execScript\\\"!==e.value||isGlobalEval(left,state)&&warning(\\\"W061\\\"),countMember(e.value),!state.option.sub&®.identifier.test(e.value)&&(s=state.syntax[e.value],s&&isReserved(s)||warning(\\\"W069\\\",state.tokens.prev,e.value))),advance(\\\"]\\\",that),e&&\\\"hasOwnProperty\\\"===e.value&&\\\"=\\\"===state.tokens.next.value&&warning(\\\"W001\\\"),that.left=left,that.right=e,that},160,!0),prefix(\\\"[\\\",function(){var blocktype=lookupBlockType();if(blocktype.isCompArray)return state.option.esnext||state.inMoz()||warning(\\\"W118\\\",state.tokens.curr,\\\"array comprehension\\\"),comprehensiveArrayExpression();if(blocktype.isDestAssign)return this.destructAssign=destructuringPattern({openingParsed:!0,assignment:!0}),this;var b=state.tokens.curr.line!==startLine(state.tokens.next);for(this.first=[],b&&(indent+=state.option.indent,state.tokens.next.from===indent+state.option.indent&&(indent+=state.option.indent));\\\"(end)\\\"!==state.tokens.next.id;){for(;\\\",\\\"===state.tokens.next.id;){if(!state.option.elision){if(state.inES5()){warning(\\\"W128\\\");do advance(\\\",\\\");while(\\\",\\\"===state.tokens.next.id);continue}warning(\\\"W070\\\")}advance(\\\",\\\")}if(\\\"]\\\"===state.tokens.next.id)break;if(this.first.push(expression(10)),\\\",\\\"!==state.tokens.next.id)break;if(comma({allowTrailing:!0}),\\\"]\\\"===state.tokens.next.id&&!state.inES5()){warning(\\\"W070\\\",state.tokens.curr);break}}return b&&(indent-=state.option.indent),advance(\\\"]\\\",this),this}),function(x){x.nud=function(){var b,f,i,p,t,nextVal,isGeneratorMethod=!1,props=Object.create(null);b=state.tokens.curr.line!==startLine(state.tokens.next),b&&(indent+=state.option.indent,state.tokens.next.from===indent+state.option.indent&&(indent+=state.option.indent));var blocktype=lookupBlockType();if(blocktype.isDestAssign)return this.destructAssign=destructuringPattern({openingParsed:!0,assignment:!0}),this;for(;\\\"}\\\"!==state.tokens.next.id;){if(nextVal=state.tokens.next.value,!state.tokens.next.identifier||\\\",\\\"!==peekIgnoreEOL().id&&\\\"}\\\"!==peekIgnoreEOL().id)if(\\\":\\\"===peek().id||\\\"get\\\"!==nextVal&&\\\"set\\\"!==nextVal){if(\\\"*\\\"===state.tokens.next.value&&\\\"(punctuator)\\\"===state.tokens.next.type?(state.inES6()||warning(\\\"W104\\\",state.tokens.next,\\\"generator functions\\\",\\\"6\\\"),advance(\\\"*\\\"),isGeneratorMethod=!0):isGeneratorMethod=!1,\\\"[\\\"===state.tokens.next.id)i=computedPropertyName(),state.nameStack.set(i);else if(state.nameStack.set(state.tokens.next),i=propertyName(),saveProperty(props,i,state.tokens.next),\\\"string\\\"!=typeof i)break;\\\"(\\\"===state.tokens.next.value?(state.inES6()||warning(\\\"W104\\\",state.tokens.curr,\\\"concise methods\\\",\\\"6\\\"),doFunction({type:isGeneratorMethod?\\\"generator\\\":null})):(advance(\\\":\\\"),expression(10))}else advance(nextVal),state.inES5()||error(\\\"E034\\\"),i=propertyName(),i||state.inES6()||error(\\\"E035\\\"),i&&saveAccessor(nextVal,props,i,state.tokens.curr),t=state.tokens.next,f=doFunction(),p=f[\\\"(params)\\\"],\\\"get\\\"===nextVal&&i&&p?warning(\\\"W076\\\",t,p[0],i):\\\"set\\\"!==nextVal||!i||p&&1===p.length||warning(\\\"W077\\\",t,i);else state.inES6()||warning(\\\"W104\\\",state.tokens.next,\\\"object short notation\\\",\\\"6\\\"),i=propertyName(!0),saveProperty(props,i,state.tokens.next),expression(10);if(countMember(i),\\\",\\\"!==state.tokens.next.id)break;comma({allowTrailing:!0,property:!0}),\\\",\\\"===state.tokens.next.id?warning(\\\"W070\\\",state.tokens.curr):\\\"}\\\"!==state.tokens.next.id||state.inES5()||warning(\\\"W070\\\",state.tokens.curr)}return b&&(indent-=state.option.indent),advance(\\\"}\\\",this),checkProperties(props),this},x.fud=function(){error(\\\"E036\\\",state.tokens.curr)}}(delim(\\\"{\\\"));var conststatement=stmt(\\\"const\\\",function(context){return blockVariableStatement(\\\"const\\\",this,context)});conststatement.exps=!0;var letstatement=stmt(\\\"let\\\",function(context){return blockVariableStatement(\\\"let\\\",this,context)});letstatement.exps=!0;var varstatement=stmt(\\\"var\\\",function(context){var tokens,lone,value,prefix=context&&context.prefix,inexport=context&&context.inexport,implied=context&&context.implied,report=!(context&&context.ignore);for(this.first=[];;){var names=[];_.contains([\\\"{\\\",\\\"[\\\"],state.tokens.next.value)?(tokens=destructuringPattern(),lone=!1):(tokens=[{id:identifier(),token:state.tokens.curr}],lone=!0),prefix&&implied||!report||!state.option.varstmt||warning(\\\"W132\\\",this),this.first=this.first.concat(names);for(var t in tokens)tokens.hasOwnProperty(t)&&(t=tokens[t],!implied&&state.funct[\\\"(global)\\\"]&&(predefined[t.id]===!1?warning(\\\"W079\\\",t.token,t.id):state.option.futurehostile===!1&&(!state.inES5()&&vars.ecmaIdentifiers[5][t.id]===!1||!state.inES6()&&vars.ecmaIdentifiers[6][t.id]===!1)&&warning(\\\"W129\\\",t.token,t.id)),t.id&&(\\\"for\\\"===implied?(state.funct[\\\"(scope)\\\"].has(t.id)||report&&warning(\\\"W088\\\",t.token,t.id),state.funct[\\\"(scope)\\\"].block.use(t.id,t.token)):(state.funct[\\\"(scope)\\\"].addlabel(t.id,{type:\\\"var\\\",token:t.token}),lone&&inexport&&state.funct[\\\"(scope)\\\"].setExported(t.id,t.token)),names.push(t.token)));if(\\\"=\\\"===state.tokens.next.id&&(state.nameStack.set(state.tokens.curr),advance(\\\"=\\\"),prefix||!report||state.funct[\\\"(loopage)\\\"]||\\\"undefined\\\"!==state.tokens.next.id||warning(\\\"W080\\\",state.tokens.prev,state.tokens.prev.value),\\\"=\\\"===peek(0).id&&state.tokens.next.identifier&&(!prefix&&report&&!state.funct[\\\"(params)\\\"]||-1===state.funct[\\\"(params)\\\"].indexOf(state.tokens.next.value))&&warning(\\\"W120\\\",state.tokens.next,state.tokens.next.value),value=expression(prefix?120:10),lone?tokens[0].first=value:destructuringPatternMatch(names,value)),\\\",\\\"!==state.tokens.next.id)break;comma()}return this});varstatement.exps=!0,blockstmt(\\\"class\\\",function(){return classdef.call(this,!0)}),blockstmt(\\\"function\\\",function(context){var inexport=context&&context.inexport,generator=!1;\\\"*\\\"===state.tokens.next.value&&(advance(\\\"*\\\"),state.inES6({strict:!0})?generator=!0:warning(\\\"W119\\\",state.tokens.curr,\\\"function*\\\",\\\"6\\\")),inblock&&warning(\\\"W082\\\",state.tokens.curr);var i=optionalidentifier();return state.funct[\\\"(scope)\\\"].addlabel(i,{type:\\\"function\\\",token:state.tokens.curr}),void 0===i?warning(\\\"W025\\\"):inexport&&state.funct[\\\"(scope)\\\"].setExported(i,state.tokens.prev),doFunction({name:i,statement:this,type:generator?\\\"generator\\\":null,ignoreLoopFunc:inblock}),\\\"(\\\"===state.tokens.next.id&&state.tokens.next.line===state.tokens.curr.line&&error(\\\"E039\\\"),this}),prefix(\\\"function\\\",function(){var generator=!1;\\\"*\\\"===state.tokens.next.value&&(state.inES6()||warning(\\\"W119\\\",state.tokens.curr,\\\"function*\\\",\\\"6\\\"),advance(\\\"*\\\"),generator=!0);var i=optionalidentifier();return doFunction({name:i,type:generator?\\\"generator\\\":null}),this}),blockstmt(\\\"if\\\",function(){var t=state.tokens.next;increaseComplexityCount(),state.condition=!0,advance(\\\"(\\\");var expr=expression(0);checkCondAssignment(expr);var forinifcheck=null;state.option.forin&&state.forinifcheckneeded&&(state.forinifcheckneeded=!1,forinifcheck=state.forinifchecks[state.forinifchecks.length-1],forinifcheck.type=\\\"(punctuator)\\\"===expr.type&&\\\"!\\\"===expr.value?\\\"(negative)\\\":\\\"(positive)\\\"),advance(\\\")\\\",t),state.condition=!1;var s=block(!0,!0);return forinifcheck&&\\\"(negative)\\\"===forinifcheck.type&&s&&s[0]&&\\\"(identifier)\\\"===s[0].type&&\\\"continue\\\"===s[0].value&&(forinifcheck.type=\\\"(negative-with-continue)\\\"),\\\"else\\\"===state.tokens.next.id&&(advance(\\\"else\\\"),\\\"if\\\"===state.tokens.next.id||\\\"switch\\\"===state.tokens.next.id?statement():block(!0,!0)),this}),blockstmt(\\\"try\\\",function(){function doCatch(){if(advance(\\\"catch\\\"),advance(\\\"(\\\"),state.funct[\\\"(scope)\\\"].stack(\\\"catchparams\\\"),checkPunctuators(state.tokens.next,[\\\"[\\\",\\\"{\\\"])){var tokens=destructuringPattern();_.each(tokens,function(token){token.id&&state.funct[\\\"(scope)\\\"].addParam(token.id,token,\\\"exception\\\")})}else\\\"(identifier)\\\"!==state.tokens.next.type?warning(\\\"E030\\\",state.tokens.next,state.tokens.next.value):state.funct[\\\"(scope)\\\"].addParam(identifier(),state.tokens.curr,\\\"exception\\\");\\\"if\\\"===state.tokens.next.value&&(state.inMoz()||warning(\\\"W118\\\",state.tokens.curr,\\\"catch filter\\\"),advance(\\\"if\\\"),expression(0)),advance(\\\")\\\"),block(!1),state.funct[\\\"(scope)\\\"].unstack()}var b;for(block(!0);\\\"catch\\\"===state.tokens.next.id;)increaseComplexityCount(),b&&!state.inMoz()&&warning(\\\"W118\\\",state.tokens.next,\\\"multiple catch blocks\\\"),doCatch(),b=!0;return\\\"finally\\\"===state.tokens.next.id?(advance(\\\"finally\\\"),block(!0),void 0):(b||error(\\\"E021\\\",state.tokens.next,\\\"catch\\\",state.tokens.next.value),this)}),blockstmt(\\\"while\\\",function(){var t=state.tokens.next;return state.funct[\\\"(breakage)\\\"]+=1,state.funct[\\\"(loopage)\\\"]+=1,increaseComplexityCount(),advance(\\\"(\\\"),checkCondAssignment(expression(0)),advance(\\\")\\\",t),block(!0,!0),state.funct[\\\"(breakage)\\\"]-=1,state.funct[\\\"(loopage)\\\"]-=1,this}).labelled=!0,blockstmt(\\\"with\\\",function(){var t=state.tokens.next;return state.isStrict()?error(\\\"E010\\\",state.tokens.curr):state.option.withstmt||warning(\\\"W085\\\",state.tokens.curr),advance(\\\"(\\\"),expression(0),advance(\\\")\\\",t),block(!0,!0),this}),blockstmt(\\\"switch\\\",function(){var t=state.tokens.next,g=!1,noindent=!1;\\nfor(state.funct[\\\"(breakage)\\\"]+=1,advance(\\\"(\\\"),checkCondAssignment(expression(0)),advance(\\\")\\\",t),t=state.tokens.next,advance(\\\"{\\\"),state.tokens.next.from===indent&&(noindent=!0),noindent||(indent+=state.option.indent),this.cases=[];;)switch(state.tokens.next.id){case\\\"case\\\":switch(state.funct[\\\"(verb)\\\"]){case\\\"yield\\\":case\\\"break\\\":case\\\"case\\\":case\\\"continue\\\":case\\\"return\\\":case\\\"switch\\\":case\\\"throw\\\":break;default:state.tokens.curr.caseFallsThrough||warning(\\\"W086\\\",state.tokens.curr,\\\"case\\\")}advance(\\\"case\\\"),this.cases.push(expression(0)),increaseComplexityCount(),g=!0,advance(\\\":\\\"),state.funct[\\\"(verb)\\\"]=\\\"case\\\";break;case\\\"default\\\":switch(state.funct[\\\"(verb)\\\"]){case\\\"yield\\\":case\\\"break\\\":case\\\"continue\\\":case\\\"return\\\":case\\\"throw\\\":break;default:this.cases.length&&(state.tokens.curr.caseFallsThrough||warning(\\\"W086\\\",state.tokens.curr,\\\"default\\\"))}advance(\\\"default\\\"),g=!0,advance(\\\":\\\");break;case\\\"}\\\":return noindent||(indent-=state.option.indent),advance(\\\"}\\\",t),state.funct[\\\"(breakage)\\\"]-=1,state.funct[\\\"(verb)\\\"]=void 0,void 0;case\\\"(end)\\\":return error(\\\"E023\\\",state.tokens.next,\\\"}\\\"),void 0;default:if(indent+=state.option.indent,g)switch(state.tokens.curr.id){case\\\",\\\":return error(\\\"E040\\\"),void 0;case\\\":\\\":g=!1,statements();break;default:return error(\\\"E025\\\",state.tokens.curr),void 0}else{if(\\\":\\\"!==state.tokens.curr.id)return error(\\\"E021\\\",state.tokens.next,\\\"case\\\",state.tokens.next.value),void 0;advance(\\\":\\\"),error(\\\"E024\\\",state.tokens.curr,\\\":\\\"),statements()}indent-=state.option.indent}return this}).labelled=!0,stmt(\\\"debugger\\\",function(){return state.option.debug||warning(\\\"W087\\\",this),this}).exps=!0,function(){var x=stmt(\\\"do\\\",function(){state.funct[\\\"(breakage)\\\"]+=1,state.funct[\\\"(loopage)\\\"]+=1,increaseComplexityCount(),this.first=block(!0,!0),advance(\\\"while\\\");var t=state.tokens.next;return advance(\\\"(\\\"),checkCondAssignment(expression(0)),advance(\\\")\\\",t),state.funct[\\\"(breakage)\\\"]-=1,state.funct[\\\"(loopage)\\\"]-=1,this});x.labelled=!0,x.exps=!0}(),blockstmt(\\\"for\\\",function(){var s,t=state.tokens.next,letscope=!1,foreachtok=null;\\\"each\\\"===t.value&&(foreachtok=t,advance(\\\"each\\\"),state.inMoz()||warning(\\\"W118\\\",state.tokens.curr,\\\"for each\\\")),increaseComplexityCount(),advance(\\\"(\\\");var nextop,comma,initializer,i=0,inof=[\\\"in\\\",\\\"of\\\"],level=0;checkPunctuators(state.tokens.next,[\\\"{\\\",\\\"[\\\"])&&++level;do{if(nextop=peek(i),++i,checkPunctuators(nextop,[\\\"{\\\",\\\"[\\\"])?++level:checkPunctuators(nextop,[\\\"}\\\",\\\"]\\\"])&&--level,0>level)break;0===level&&(!comma&&checkPunctuator(nextop,\\\",\\\")?comma=nextop:!initializer&&checkPunctuator(nextop,\\\"=\\\")&&(initializer=nextop))}while(level>0||!_.contains(inof,nextop.value)&&\\\";\\\"!==nextop.value&&\\\"(end)\\\"!==nextop.type);if(_.contains(inof,nextop.value)){state.inES6()||\\\"of\\\"!==nextop.value||warning(\\\"W104\\\",nextop,\\\"for of\\\",\\\"6\\\");var ok=!(initializer||comma);if(initializer&&error(\\\"W133\\\",comma,nextop.value,\\\"initializer is forbidden\\\"),comma&&error(\\\"W133\\\",comma,nextop.value,\\\"more than one ForBinding\\\"),\\\"var\\\"===state.tokens.next.id?(advance(\\\"var\\\"),state.tokens.curr.fud({prefix:!0})):\\\"let\\\"===state.tokens.next.id||\\\"const\\\"===state.tokens.next.id?(advance(state.tokens.next.id),letscope=!0,state.funct[\\\"(scope)\\\"].stack(),state.tokens.curr.fud({prefix:!0})):Object.create(varstatement).fud({prefix:!0,implied:\\\"for\\\",ignore:!ok}),advance(nextop.value),expression(20),advance(\\\")\\\",t),\\\"in\\\"===nextop.value&&state.option.forin&&(state.forinifcheckneeded=!0,void 0===state.forinifchecks&&(state.forinifchecks=[]),state.forinifchecks.push({type:\\\"(none)\\\"})),state.funct[\\\"(breakage)\\\"]+=1,state.funct[\\\"(loopage)\\\"]+=1,s=block(!0,!0),\\\"in\\\"===nextop.value&&state.option.forin){if(state.forinifchecks&&state.forinifchecks.length>0){var check=state.forinifchecks.pop();(s&&s.length>0&&(\\\"object\\\"!=typeof s[0]||\\\"if\\\"!==s[0].value)||\\\"(positive)\\\"===check.type&&s.length>1||\\\"(negative)\\\"===check.type)&&warning(\\\"W089\\\",this)}state.forinifcheckneeded=!1}state.funct[\\\"(breakage)\\\"]-=1,state.funct[\\\"(loopage)\\\"]-=1}else{if(foreachtok&&error(\\\"E045\\\",foreachtok),\\\";\\\"!==state.tokens.next.id)if(\\\"var\\\"===state.tokens.next.id)advance(\\\"var\\\"),state.tokens.curr.fud();else if(\\\"let\\\"===state.tokens.next.id)advance(\\\"let\\\"),letscope=!0,state.funct[\\\"(scope)\\\"].stack(),state.tokens.curr.fud();else for(;expression(0,\\\"for\\\"),\\\",\\\"===state.tokens.next.id;)comma();if(nolinebreak(state.tokens.curr),advance(\\\";\\\"),state.funct[\\\"(loopage)\\\"]+=1,\\\";\\\"!==state.tokens.next.id&&checkCondAssignment(expression(0)),nolinebreak(state.tokens.curr),advance(\\\";\\\"),\\\";\\\"===state.tokens.next.id&&error(\\\"E021\\\",state.tokens.next,\\\")\\\",\\\";\\\"),\\\")\\\"!==state.tokens.next.id)for(;expression(0,\\\"for\\\"),\\\",\\\"===state.tokens.next.id;)comma();advance(\\\")\\\",t),state.funct[\\\"(breakage)\\\"]+=1,block(!0,!0),state.funct[\\\"(breakage)\\\"]-=1,state.funct[\\\"(loopage)\\\"]-=1}return letscope&&state.funct[\\\"(scope)\\\"].unstack(),this}).labelled=!0,stmt(\\\"break\\\",function(){var v=state.tokens.next.value;return state.option.asi||nolinebreak(this),\\\";\\\"===state.tokens.next.id||state.tokens.next.reach||state.tokens.curr.line!==startLine(state.tokens.next)?0===state.funct[\\\"(breakage)\\\"]&&warning(\\\"W052\\\",state.tokens.next,this.value):(state.funct[\\\"(scope)\\\"].funct.hasBreakLabel(v)||warning(\\\"W090\\\",state.tokens.next,v),this.first=state.tokens.next,advance()),reachable(this),this}).exps=!0,stmt(\\\"continue\\\",function(){var v=state.tokens.next.value;return 0===state.funct[\\\"(breakage)\\\"]&&warning(\\\"W052\\\",state.tokens.next,this.value),state.funct[\\\"(loopage)\\\"]||warning(\\\"W052\\\",state.tokens.next,this.value),state.option.asi||nolinebreak(this),\\\";\\\"===state.tokens.next.id||state.tokens.next.reach||state.tokens.curr.line===startLine(state.tokens.next)&&(state.funct[\\\"(scope)\\\"].funct.hasBreakLabel(v)||warning(\\\"W090\\\",state.tokens.next,v),this.first=state.tokens.next,advance()),reachable(this),this}).exps=!0,stmt(\\\"return\\\",function(){return this.line===startLine(state.tokens.next)?\\\";\\\"===state.tokens.next.id||state.tokens.next.reach||(this.first=expression(0),!this.first||\\\"(punctuator)\\\"!==this.first.type||\\\"=\\\"!==this.first.value||this.first.paren||state.option.boss||warningAt(\\\"W093\\\",this.first.line,this.first.character)):\\\"(punctuator)\\\"===state.tokens.next.type&&[\\\"[\\\",\\\"{\\\",\\\"+\\\",\\\"-\\\"].indexOf(state.tokens.next.value)>-1&&nolinebreak(this),reachable(this),this}).exps=!0,function(x){x.exps=!0,x.lbp=25}(prefix(\\\"yield\\\",function(){var prev=state.tokens.prev;state.inES6(!0)&&!state.funct[\\\"(generator)\\\"]?\\\"(catch)\\\"===state.funct[\\\"(name)\\\"]&&state.funct[\\\"(context)\\\"][\\\"(generator)\\\"]||error(\\\"E046\\\",state.tokens.curr,\\\"yield\\\"):state.inES6()||warning(\\\"W104\\\",state.tokens.curr,\\\"yield\\\",\\\"6\\\"),state.funct[\\\"(generator)\\\"]=\\\"yielded\\\";var delegatingYield=!1;return\\\"*\\\"===state.tokens.next.value&&(delegatingYield=!0,advance(\\\"*\\\")),this.line!==startLine(state.tokens.next)&&state.inMoz()?state.option.asi||nolinebreak(this):((delegatingYield||\\\";\\\"!==state.tokens.next.id&&!state.option.asi&&!state.tokens.next.reach&&state.tokens.next.nud)&&(nobreaknonadjacent(state.tokens.curr,state.tokens.next),this.first=expression(10),\\\"(punctuator)\\\"!==this.first.type||\\\"=\\\"!==this.first.value||this.first.paren||state.option.boss||warningAt(\\\"W093\\\",this.first.line,this.first.character)),state.inMoz()&&\\\")\\\"!==state.tokens.next.id&&(prev.lbp>30||!prev.assign&&!isEndOfExpr()||\\\"yield\\\"===prev.id)&&error(\\\"E050\\\",this)),this})),stmt(\\\"throw\\\",function(){return nolinebreak(this),this.first=expression(20),reachable(this),this}).exps=!0,stmt(\\\"import\\\",function(){if(state.inES6()||warning(\\\"W119\\\",state.tokens.curr,\\\"import\\\",\\\"6\\\"),\\\"(string)\\\"===state.tokens.next.type)return advance(\\\"(string)\\\"),this;if(state.tokens.next.identifier){if(this.name=identifier(),state.funct[\\\"(scope)\\\"].addlabel(this.name,{type:\\\"const\\\",token:state.tokens.curr}),\\\",\\\"!==state.tokens.next.value)return advance(\\\"from\\\"),advance(\\\"(string)\\\"),this;advance(\\\",\\\")}if(\\\"*\\\"===state.tokens.next.id)advance(\\\"*\\\"),advance(\\\"as\\\"),state.tokens.next.identifier&&(this.name=identifier(),state.funct[\\\"(scope)\\\"].addlabel(this.name,{type:\\\"const\\\",token:state.tokens.curr}));else for(advance(\\\"{\\\");;){if(\\\"}\\\"===state.tokens.next.value){advance(\\\"}\\\");break}var importName;if(\\\"default\\\"===state.tokens.next.type?(importName=\\\"default\\\",advance(\\\"default\\\")):importName=identifier(),\\\"as\\\"===state.tokens.next.value&&(advance(\\\"as\\\"),importName=identifier()),state.funct[\\\"(scope)\\\"].addlabel(importName,{type:\\\"const\\\",token:state.tokens.curr}),\\\",\\\"!==state.tokens.next.value){if(\\\"}\\\"===state.tokens.next.value){advance(\\\"}\\\");break}error(\\\"E024\\\",state.tokens.next,state.tokens.next.value);break}advance(\\\",\\\")}return advance(\\\"from\\\"),advance(\\\"(string)\\\"),this}).exps=!0,stmt(\\\"export\\\",function(){var token,identifier,ok=!0;if(state.inES6()||(warning(\\\"W119\\\",state.tokens.curr,\\\"export\\\",\\\"6\\\"),ok=!1),state.funct[\\\"(scope)\\\"].block.isGlobal()||(error(\\\"E053\\\",state.tokens.curr),ok=!1),\\\"*\\\"===state.tokens.next.value)return advance(\\\"*\\\"),advance(\\\"from\\\"),advance(\\\"(string)\\\"),this;if(\\\"default\\\"===state.tokens.next.type){state.nameStack.set(state.tokens.next),advance(\\\"default\\\");var exportType=state.tokens.next.id;return(\\\"function\\\"===exportType||\\\"class\\\"===exportType)&&(this.block=!0),token=peek(),expression(10),identifier=token.value,this.block&&(state.funct[\\\"(scope)\\\"].addlabel(identifier,{type:exportType,token:token}),state.funct[\\\"(scope)\\\"].setExported(identifier,token)),this}if(\\\"{\\\"===state.tokens.next.value){advance(\\\"{\\\");for(var exportedTokens=[];;){if(state.tokens.next.identifier||error(\\\"E030\\\",state.tokens.next,state.tokens.next.value),advance(),exportedTokens.push(state.tokens.curr),\\\"as\\\"===state.tokens.next.value&&(advance(\\\"as\\\"),state.tokens.next.identifier||error(\\\"E030\\\",state.tokens.next,state.tokens.next.value),advance()),\\\",\\\"!==state.tokens.next.value){if(\\\"}\\\"===state.tokens.next.value){advance(\\\"}\\\");break}error(\\\"E024\\\",state.tokens.next,state.tokens.next.value);break}advance(\\\",\\\")}return\\\"from\\\"===state.tokens.next.value?(advance(\\\"from\\\"),advance(\\\"(string)\\\")):ok&&exportedTokens.forEach(function(token){state.funct[\\\"(scope)\\\"].setExported(token.value,token)}),this}if(\\\"var\\\"===state.tokens.next.id)advance(\\\"var\\\"),state.tokens.curr.fud({inexport:!0});else if(\\\"let\\\"===state.tokens.next.id)advance(\\\"let\\\"),state.tokens.curr.fud({inexport:!0});else if(\\\"const\\\"===state.tokens.next.id)advance(\\\"const\\\"),state.tokens.curr.fud({inexport:!0});else if(\\\"function\\\"===state.tokens.next.id)this.block=!0,advance(\\\"function\\\"),state.syntax[\\\"function\\\"].fud({inexport:!0});else if(\\\"class\\\"===state.tokens.next.id){this.block=!0,advance(\\\"class\\\");var classNameToken=state.tokens.next;state.syntax[\\\"class\\\"].fud(),state.funct[\\\"(scope)\\\"].setExported(classNameToken.value,classNameToken)}else error(\\\"E024\\\",state.tokens.next,state.tokens.next.value);return this}).exps=!0,FutureReservedWord(\\\"abstract\\\"),FutureReservedWord(\\\"boolean\\\"),FutureReservedWord(\\\"byte\\\"),FutureReservedWord(\\\"char\\\"),FutureReservedWord(\\\"class\\\",{es5:!0,nud:classdef}),FutureReservedWord(\\\"double\\\"),FutureReservedWord(\\\"enum\\\",{es5:!0}),FutureReservedWord(\\\"export\\\",{es5:!0}),FutureReservedWord(\\\"extends\\\",{es5:!0}),FutureReservedWord(\\\"final\\\"),FutureReservedWord(\\\"float\\\"),FutureReservedWord(\\\"goto\\\"),FutureReservedWord(\\\"implements\\\",{es5:!0,strictOnly:!0}),FutureReservedWord(\\\"import\\\",{es5:!0}),FutureReservedWord(\\\"int\\\"),FutureReservedWord(\\\"interface\\\",{es5:!0,strictOnly:!0}),FutureReservedWord(\\\"long\\\"),FutureReservedWord(\\\"native\\\"),FutureReservedWord(\\\"package\\\",{es5:!0,strictOnly:!0}),FutureReservedWord(\\\"private\\\",{es5:!0,strictOnly:!0}),FutureReservedWord(\\\"protected\\\",{es5:!0,strictOnly:!0}),FutureReservedWord(\\\"public\\\",{es5:!0,strictOnly:!0}),FutureReservedWord(\\\"short\\\"),FutureReservedWord(\\\"static\\\",{es5:!0,strictOnly:!0}),FutureReservedWord(\\\"super\\\",{es5:!0}),FutureReservedWord(\\\"synchronized\\\"),FutureReservedWord(\\\"transient\\\"),FutureReservedWord(\\\"volatile\\\");var lookupBlockType=function(){var pn,pn1,prev,i=-1,bracketStack=0,ret={};checkPunctuators(state.tokens.curr,[\\\"[\\\",\\\"{\\\"])&&(bracketStack+=1);do{if(prev=-1===i?state.tokens.curr:pn,pn=-1===i?state.tokens.next:peek(i),pn1=peek(i+1),i+=1,checkPunctuators(pn,[\\\"[\\\",\\\"{\\\"])?bracketStack+=1:checkPunctuators(pn,[\\\"]\\\",\\\"}\\\"])&&(bracketStack-=1),1===bracketStack&&pn.identifier&&\\\"for\\\"===pn.value&&!checkPunctuator(prev,\\\".\\\")){ret.isCompArray=!0,ret.notJson=!0;break}if(0===bracketStack&&checkPunctuators(pn,[\\\"}\\\",\\\"]\\\"])){if(\\\"=\\\"===pn1.value){ret.isDestAssign=!0,ret.notJson=!0;break}if(\\\".\\\"===pn1.value){ret.notJson=!0;break}}checkPunctuator(pn,\\\";\\\")&&(ret.isBlock=!0,ret.notJson=!0)}while(bracketStack>0&&\\\"(end)\\\"!==pn.id);return ret},arrayComprehension=function(){function declare(v){var l=_current.variables.filter(function(elt){return elt.value===v?(elt.undef=!1,v):void 0}).length;return 0!==l}function use(v){var l=_current.variables.filter(function(elt){return elt.value!==v||elt.undef?void 0:(elt.unused===!0&&(elt.unused=!1),v)}).length;return 0===l}var _current,CompArray=function(){this.mode=\\\"use\\\",this.variables=[]},_carrays=[];return{stack:function(){_current=new CompArray,_carrays.push(_current)},unstack:function(){_current.variables.filter(function(v){v.unused&&warning(\\\"W098\\\",v.token,v.raw_text||v.value),v.undef&&state.funct[\\\"(scope)\\\"].block.use(v.value,v.token)}),_carrays.splice(-1,1),_current=_carrays[_carrays.length-1]},setState:function(s){_.contains([\\\"use\\\",\\\"define\\\",\\\"generate\\\",\\\"filter\\\"],s)&&(_current.mode=s)},check:function(v){return _current?_current&&\\\"use\\\"===_current.mode?(use(v)&&_current.variables.push({funct:state.funct,token:state.tokens.curr,value:v,undef:!0,unused:!1}),!0):_current&&\\\"define\\\"===_current.mode?(declare(v)||_current.variables.push({funct:state.funct,token:state.tokens.curr,value:v,undef:!1,unused:!0}),!0):_current&&\\\"generate\\\"===_current.mode?(state.funct[\\\"(scope)\\\"].block.use(v,state.tokens.curr),!0):_current&&\\\"filter\\\"===_current.mode?(use(v)&&state.funct[\\\"(scope)\\\"].block.use(v,state.tokens.curr),!0):!1:void 0}}},escapeRegex=function(str){return str.replace(/[-\\\\/\\\\\\\\^$*+?.()|[\\\\]{}]/g,\\\"\\\\\\\\$&\\\")},itself=function(s,o,g){function each(obj,cb){obj&&(Array.isArray(obj)||\\\"object\\\"!=typeof obj||(obj=Object.keys(obj)),obj.forEach(cb))}var i,k,x,reIgnoreStr,reIgnore,optionKeys,newOptionObj={},newIgnoredObj={};o=_.clone(o),state.reset(),o&&o.scope?JSHINT.scope=o.scope:(JSHINT.errors=[],JSHINT.undefs=[],JSHINT.internals=[],JSHINT.blacklist={},JSHINT.scope=\\\"(main)\\\"),predefined=Object.create(null),combine(predefined,vars.ecmaIdentifiers[3]),combine(predefined,vars.reservedVars),combine(predefined,g||{}),declared=Object.create(null);var exported=Object.create(null);if(o)for(each(o.predef||null,function(item){var slice,prop;\\\"-\\\"===item[0]?(slice=item.slice(1),JSHINT.blacklist[slice]=slice,delete predefined[slice]):(prop=Object.getOwnPropertyDescriptor(o.predef,item),predefined[item]=prop?prop.value:!1)}),each(o.exported||null,function(item){exported[item]=!0}),delete o.predef,delete o.exported,optionKeys=Object.keys(o),x=0;optionKeys.length>x;x++)if(/^-W\\\\d{3}$/g.test(optionKeys[x]))newIgnoredObj[optionKeys[x].slice(1)]=!0;else{var optionKey=optionKeys[x];newOptionObj[optionKey]=o[optionKey],(\\\"esversion\\\"===optionKey&&5===o[optionKey]||\\\"es5\\\"===optionKey&&o[optionKey])&&warning(\\\"I003\\\"),\\\"newcap\\\"===optionKeys[x]&&o[optionKey]===!1&&(newOptionObj[\\\"(explicitNewcap)\\\"]=!0)}state.option=newOptionObj,state.ignored=newIgnoredObj,state.option.indent=state.option.indent||4,state.option.maxerr=state.option.maxerr||50,indent=1;var scopeManagerInst=scopeManager(state,predefined,exported,declared);if(scopeManagerInst.on(\\\"warning\\\",function(ev){warning.apply(null,[ev.code,ev.token].concat(ev.data))}),scopeManagerInst.on(\\\"error\\\",function(ev){error.apply(null,[ev.code,ev.token].concat(ev.data))}),state.funct=functor(\\\"(global)\\\",null,{\\\"(global)\\\":!0,\\\"(scope)\\\":scopeManagerInst,\\\"(comparray)\\\":arrayComprehension(),\\\"(metrics)\\\":createMetrics(state.tokens.next)}),functions=[state.funct],urls=[],stack=null,member={},membersOnly=null,inblock=!1,lookahead=[],!isString(s)&&!Array.isArray(s))return errorAt(\\\"E004\\\",0),!1;api={get isJSON(){return state.jsonMode},getOption:function(name){return state.option[name]||null},getCache:function(name){return state.cache[name]},setCache:function(name,value){state.cache[name]=value},warn:function(code,data){warningAt.apply(null,[code,data.line,data.char].concat(data.data))},on:function(names,listener){names.split(\\\" \\\").forEach(function(name){emitter.on(name,listener)}.bind(this))}},emitter.removeAllListeners(),(extraModules||[]).forEach(function(func){func(api)}),state.tokens.prev=state.tokens.curr=state.tokens.next=state.syntax[\\\"(begin)\\\"],o&&o.ignoreDelimiters&&(Array.isArray(o.ignoreDelimiters)||(o.ignoreDelimiters=[o.ignoreDelimiters]),o.ignoreDelimiters.forEach(function(delimiterPair){delimiterPair.start&&delimiterPair.end&&(reIgnoreStr=escapeRegex(delimiterPair.start)+\\\"[\\\\\\\\s\\\\\\\\S]*?\\\"+escapeRegex(delimiterPair.end),reIgnore=RegExp(reIgnoreStr,\\\"ig\\\"),s=s.replace(reIgnore,function(match){return match.replace(/./g,\\\" \\\")}))})),lex=new Lexer(s),lex.on(\\\"warning\\\",function(ev){warningAt.apply(null,[ev.code,ev.line,ev.character].concat(ev.data))}),lex.on(\\\"error\\\",function(ev){errorAt.apply(null,[ev.code,ev.line,ev.character].concat(ev.data))}),lex.on(\\\"fatal\\\",function(ev){quit(\\\"E041\\\",ev.line,ev.from)}),lex.on(\\\"Identifier\\\",function(ev){emitter.emit(\\\"Identifier\\\",ev)}),lex.on(\\\"String\\\",function(ev){emitter.emit(\\\"String\\\",ev)}),lex.on(\\\"Number\\\",function(ev){emitter.emit(\\\"Number\\\",ev)}),lex.start();for(var name in o)_.has(o,name)&&checkOption(name,state.tokens.curr);assume(),combine(predefined,g||{}),comma.first=!0;try{switch(advance(),state.tokens.next.id){case\\\"{\\\":case\\\"[\\\":destructuringAssignOrJsonValue();break;default:directives(),state.directive[\\\"use strict\\\"]&&\\\"global\\\"!==state.option.strict&&warning(\\\"W097\\\",state.tokens.prev),statements()}\\\"(end)\\\"!==state.tokens.next.id&&quit(\\\"E041\\\",state.tokens.curr.line),state.funct[\\\"(scope)\\\"].unstack()}catch(err){if(!err||\\\"JSHintError\\\"!==err.name)throw err;var nt=state.tokens.next||{};JSHINT.errors.push({scope:\\\"(main)\\\",raw:err.raw,code:err.code,reason:err.message,line:err.line||nt.line,character:err.character||nt.from},null)}if(\\\"(main)\\\"===JSHINT.scope)for(o=o||{},i=0;JSHINT.internals.length>i;i+=1)k=JSHINT.internals[i],o.scope=k.elem,itself(k.value,o,g);return 0===JSHINT.errors.length};return itself.addModule=function(func){extraModules.push(func)},itself.addModule(style.register),itself.data=function(){var fu,f,i,j,n,globals,data={functions:[],options:state.option};itself.errors.length&&(data.errors=itself.errors),state.jsonMode&&(data.json=!0);var impliedGlobals=state.funct[\\\"(scope)\\\"].getImpliedGlobals();for(impliedGlobals.length>0&&(data.implieds=impliedGlobals),urls.length>0&&(data.urls=urls),globals=state.funct[\\\"(scope)\\\"].getUsedOrDefinedGlobals(),globals.length>0&&(data.globals=globals),i=1;functions.length>i;i+=1){for(f=functions[i],fu={},j=0;functionicity.length>j;j+=1)fu[functionicity[j]]=[];for(j=0;functionicity.length>j;j+=1)0===fu[functionicity[j]].length&&delete fu[functionicity[j]];fu.name=f[\\\"(name)\\\"],fu.param=f[\\\"(params)\\\"],fu.line=f[\\\"(line)\\\"],fu.character=f[\\\"(character)\\\"],fu.last=f[\\\"(last)\\\"],fu.lastcharacter=f[\\\"(lastcharacter)\\\"],fu.metrics={complexity:f[\\\"(metrics)\\\"].ComplexityCount,parameters:f[\\\"(metrics)\\\"].arity,statements:f[\\\"(metrics)\\\"].statementCount},data.functions.push(fu)}var unuseds=state.funct[\\\"(scope)\\\"].getUnuseds();unuseds.length>0&&(data.unused=unuseds);for(n in member)if(\\\"number\\\"==typeof member[n]){data.member=member;break}return data},itself.jshint=itself,itself}();\\\"object\\\"==typeof exports&&exports&&(exports.JSHINT=JSHINT)},{\\\"../lodash\\\":\\\"/node_modules/jshint/lodash.js\\\",\\\"./lex.js\\\":\\\"/node_modules/jshint/src/lex.js\\\",\\\"./messages.js\\\":\\\"/node_modules/jshint/src/messages.js\\\",\\\"./options.js\\\":\\\"/node_modules/jshint/src/options.js\\\",\\\"./reg.js\\\":\\\"/node_modules/jshint/src/reg.js\\\",\\\"./scope-manager.js\\\":\\\"/node_modules/jshint/src/scope-manager.js\\\",\\\"./state.js\\\":\\\"/node_modules/jshint/src/state.js\\\",\\\"./style.js\\\":\\\"/node_modules/jshint/src/style.js\\\",\\\"./vars.js\\\":\\\"/node_modules/jshint/src/vars.js\\\",events:\\\"/node_modules/browserify/node_modules/events/events.js\\\"}],\\\"/node_modules/jshint/src/lex.js\\\":[function(_dereq_,module,exports){\\\"use strict\\\";function asyncTrigger(){var _checks=[];return{push:function(fn){_checks.push(fn)},check:function(){for(var check=0;_checks.length>check;++check)_checks[check]();_checks.splice(0,_checks.length)}}}function Lexer(source){var lines=source;\\\"string\\\"==typeof lines&&(lines=lines.replace(/\\\\r\\\\n/g,\\\"\\\\n\\\").replace(/\\\\r/g,\\\"\\\\n\\\").split(\\\"\\\\n\\\")),lines[0]&&\\\"#!\\\"===lines[0].substr(0,2)&&(-1!==lines[0].indexOf(\\\"node\\\")&&(state.option.node=!0),lines[0]=\\\"\\\"),this.emitter=new events.EventEmitter,this.source=source,this.setLines(lines),this.prereg=!0,this.line=0,this.char=1,this.from=1,this.input=\\\"\\\",this.inComment=!1,this.context=[],this.templateStarts=[];for(var i=0;state.option.indent>i;i+=1)state.tab+=\\\" \\\";this.ignoreLinterErrors=!1}var _=_dereq_(\\\"../lodash\\\"),events=_dereq_(\\\"events\\\"),reg=_dereq_(\\\"./reg.js\\\"),state=_dereq_(\\\"./state.js\\\").state,unicodeData=_dereq_(\\\"../data/ascii-identifier-data.js\\\"),asciiIdentifierStartTable=unicodeData.asciiIdentifierStartTable,asciiIdentifierPartTable=unicodeData.asciiIdentifierPartTable,Token={Identifier:1,Punctuator:2,NumericLiteral:3,StringLiteral:4,Comment:5,Keyword:6,NullLiteral:7,BooleanLiteral:8,RegExp:9,TemplateHead:10,TemplateMiddle:11,TemplateTail:12,NoSubstTemplate:13},Context={Block:1,Template:2};Lexer.prototype={_lines:[],inContext:function(ctxType){return this.context.length>0&&this.context[this.context.length-1].type===ctxType},pushContext:function(ctxType){this.context.push({type:ctxType})},popContext:function(){return this.context.pop()},isContext:function(context){return this.context.length>0&&this.context[this.context.length-1]===context},currentContext:function(){return this.context.length>0&&this.context[this.context.length-1]},getLines:function(){return this._lines=state.lines,this._lines},setLines:function(val){this._lines=val,state.lines=this._lines},peek:function(i){return this.input.charAt(i||0)},skip:function(i){i=i||1,this.char+=i,this.input=this.input.slice(i)},on:function(names,listener){names.split(\\\" \\\").forEach(function(name){this.emitter.on(name,listener)}.bind(this))},trigger:function(){this.emitter.emit.apply(this.emitter,Array.prototype.slice.call(arguments))},triggerAsync:function(type,args,checks,fn){checks.push(function(){fn()&&this.trigger(type,args)}.bind(this))},scanPunctuator:function(){var ch2,ch3,ch4,ch1=this.peek();switch(ch1){case\\\".\\\":if(/^[0-9]$/.test(this.peek(1)))return null;if(\\\".\\\"===this.peek(1)&&\\\".\\\"===this.peek(2))return{type:Token.Punctuator,value:\\\"...\\\"};case\\\"(\\\":case\\\")\\\":case\\\";\\\":case\\\",\\\":case\\\"[\\\":case\\\"]\\\":case\\\":\\\":case\\\"~\\\":case\\\"?\\\":return{type:Token.Punctuator,value:ch1};case\\\"{\\\":return this.pushContext(Context.Block),{type:Token.Punctuator,value:ch1};case\\\"}\\\":return this.inContext(Context.Block)&&this.popContext(),{type:Token.Punctuator,value:ch1};case\\\"#\\\":return{type:Token.Punctuator,value:ch1};case\\\"\\\":return null}return ch2=this.peek(1),ch3=this.peek(2),ch4=this.peek(3),\\\">\\\"===ch1&&\\\">\\\"===ch2&&\\\">\\\"===ch3&&\\\"=\\\"===ch4?{type:Token.Punctuator,value:\\\">>>=\\\"}:\\\"=\\\"===ch1&&\\\"=\\\"===ch2&&\\\"=\\\"===ch3?{type:Token.Punctuator,value:\\\"===\\\"}:\\\"!\\\"===ch1&&\\\"=\\\"===ch2&&\\\"=\\\"===ch3?{type:Token.Punctuator,value:\\\"!==\\\"}:\\\">\\\"===ch1&&\\\">\\\"===ch2&&\\\">\\\"===ch3?{type:Token.Punctuator,value:\\\">>>\\\"}:\\\"<\\\"===ch1&&\\\"<\\\"===ch2&&\\\"=\\\"===ch3?{type:Token.Punctuator,value:\\\"<<=\\\"}:\\\">\\\"===ch1&&\\\">\\\"===ch2&&\\\"=\\\"===ch3?{type:Token.Punctuator,value:\\\">>=\\\"}:\\\"=\\\"===ch1&&\\\">\\\"===ch2?{type:Token.Punctuator,value:ch1+ch2}:ch1===ch2&&\\\"+-<>&|\\\".indexOf(ch1)>=0?{type:Token.Punctuator,value:ch1+ch2}:\\\"<>=!+-*%&|^\\\".indexOf(ch1)>=0?\\\"=\\\"===ch2?{type:Token.Punctuator,value:ch1+ch2}:{type:Token.Punctuator,value:ch1}:\\\"/\\\"===ch1?\\\"=\\\"===ch2?{type:Token.Punctuator,value:\\\"/=\\\"}:{type:Token.Punctuator,value:\\\"/\\\"}:null},scanComments:function(){function commentToken(label,body,opt){var special=[\\\"jshint\\\",\\\"jslint\\\",\\\"members\\\",\\\"member\\\",\\\"globals\\\",\\\"global\\\",\\\"exported\\\"],isSpecial=!1,value=label+body,commentType=\\\"plain\\\";return opt=opt||{},opt.isMultiline&&(value+=\\\"*/\\\"),body=body.replace(/\\\\n/g,\\\" \\\"),\\\"/*\\\"===label&®.fallsThrough.test(body)&&(isSpecial=!0,commentType=\\\"falls through\\\"),special.forEach(function(str){if(!isSpecial&&(\\\"//\\\"!==label||\\\"jshint\\\"===str)&&(\\\" \\\"===body.charAt(str.length)&&body.substr(0,str.length)===str&&(isSpecial=!0,label+=str,body=body.substr(str.length)),isSpecial||\\\" \\\"!==body.charAt(0)||\\\" \\\"!==body.charAt(str.length+1)||body.substr(1,str.length)!==str||(isSpecial=!0,label=label+\\\" \\\"+str,body=body.substr(str.length+1)),isSpecial))switch(str){case\\\"member\\\":commentType=\\\"members\\\";break;case\\\"global\\\":commentType=\\\"globals\\\";break;default:var options=body.split(\\\":\\\").map(function(v){return v.replace(/^\\\\s+/,\\\"\\\").replace(/\\\\s+$/,\\\"\\\")});if(2===options.length)switch(options[0]){case\\\"ignore\\\":switch(options[1]){case\\\"start\\\":self.ignoringLinterErrors=!0,isSpecial=!1;break;case\\\"end\\\":self.ignoringLinterErrors=!1,isSpecial=!1}}commentType=str}}),{type:Token.Comment,commentType:commentType,value:value,body:body,isSpecial:isSpecial,isMultiline:opt.isMultiline||!1,isMalformed:opt.isMalformed||!1}}var ch1=this.peek(),ch2=this.peek(1),rest=this.input.substr(2),startLine=this.line,startChar=this.char,self=this;if(\\\"*\\\"===ch1&&\\\"/\\\"===ch2)return this.trigger(\\\"error\\\",{code:\\\"E018\\\",line:startLine,character:startChar}),this.skip(2),null;if(\\\"/\\\"!==ch1||\\\"*\\\"!==ch2&&\\\"/\\\"!==ch2)return null;if(\\\"/\\\"===ch2)return this.skip(this.input.length),commentToken(\\\"//\\\",rest);var body=\\\"\\\";if(\\\"*\\\"===ch2){for(this.inComment=!0,this.skip(2);\\\"*\\\"!==this.peek()||\\\"/\\\"!==this.peek(1);)if(\\\"\\\"===this.peek()){if(body+=\\\"\\\\n\\\",!this.nextLine())return this.trigger(\\\"error\\\",{code:\\\"E017\\\",line:startLine,character:startChar}),this.inComment=!1,commentToken(\\\"/*\\\",body,{isMultiline:!0,isMalformed:!0})}else body+=this.peek(),this.skip();return this.skip(2),this.inComment=!1,commentToken(\\\"/*\\\",body,{isMultiline:!0})}},scanKeyword:function(){var result=/^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input),keywords=[\\\"if\\\",\\\"in\\\",\\\"do\\\",\\\"var\\\",\\\"for\\\",\\\"new\\\",\\\"try\\\",\\\"let\\\",\\\"this\\\",\\\"else\\\",\\\"case\\\",\\\"void\\\",\\\"with\\\",\\\"enum\\\",\\\"while\\\",\\\"break\\\",\\\"catch\\\",\\\"throw\\\",\\\"const\\\",\\\"yield\\\",\\\"class\\\",\\\"super\\\",\\\"return\\\",\\\"typeof\\\",\\\"delete\\\",\\\"switch\\\",\\\"export\\\",\\\"import\\\",\\\"default\\\",\\\"finally\\\",\\\"extends\\\",\\\"function\\\",\\\"continue\\\",\\\"debugger\\\",\\\"instanceof\\\"];return result&&keywords.indexOf(result[0])>=0?{type:Token.Keyword,value:result[0]}:null},scanIdentifier:function(){function isNonAsciiIdentifierStart(code){return code>256}function isNonAsciiIdentifierPart(code){return code>256}function isHexDigit(str){return/^[0-9a-fA-F]$/.test(str)}function removeEscapeSequences(id){return id.replace(/\\\\\\\\u([0-9a-fA-F]{4})/g,function(m0,codepoint){return String.fromCharCode(parseInt(codepoint,16))})}var type,char,id=\\\"\\\",index=0,readUnicodeEscapeSequence=function(){if(index+=1,\\\"u\\\"!==this.peek(index))return null;var code,ch1=this.peek(index+1),ch2=this.peek(index+2),ch3=this.peek(index+3),ch4=this.peek(index+4);return isHexDigit(ch1)&&isHexDigit(ch2)&&isHexDigit(ch3)&&isHexDigit(ch4)?(code=parseInt(ch1+ch2+ch3+ch4,16),asciiIdentifierPartTable[code]||isNonAsciiIdentifierPart(code)?(index+=5,\\\"\\\\\\\\u\\\"+ch1+ch2+ch3+ch4):null):null}.bind(this),getIdentifierStart=function(){var chr=this.peek(index),code=chr.charCodeAt(0);return 92===code?readUnicodeEscapeSequence():128>code?asciiIdentifierStartTable[code]?(index+=1,chr):null:isNonAsciiIdentifierStart(code)?(index+=1,chr):null}.bind(this),getIdentifierPart=function(){var chr=this.peek(index),code=chr.charCodeAt(0);return 92===code?readUnicodeEscapeSequence():128>code?asciiIdentifierPartTable[code]?(index+=1,chr):null:isNonAsciiIdentifierPart(code)?(index+=1,chr):null}.bind(this);if(char=getIdentifierStart(),null===char)return null;for(id=char;char=getIdentifierPart(),null!==char;)id+=char;switch(id){case\\\"true\\\":case\\\"false\\\":type=Token.BooleanLiteral;break;case\\\"null\\\":type=Token.NullLiteral;break;default:type=Token.Identifier}return{type:type,value:removeEscapeSequences(id),text:id,tokenLength:id.length}},scanNumericLiteral:function(){function isDecimalDigit(str){return/^[0-9]$/.test(str)}function isOctalDigit(str){return/^[0-7]$/.test(str)}function isBinaryDigit(str){return/^[01]$/.test(str)}function isHexDigit(str){return/^[0-9a-fA-F]$/.test(str)}function isIdentifierStart(ch){return\\\"$\\\"===ch||\\\"_\\\"===ch||\\\"\\\\\\\\\\\"===ch||ch>=\\\"a\\\"&&\\\"z\\\">=ch||ch>=\\\"A\\\"&&\\\"Z\\\">=ch}var bad,index=0,value=\\\"\\\",length=this.input.length,char=this.peek(index),isAllowedDigit=isDecimalDigit,base=10,isLegacy=!1;if(\\\".\\\"!==char&&!isDecimalDigit(char))return null;if(\\\".\\\"!==char){for(value=this.peek(index),index+=1,char=this.peek(index),\\\"0\\\"===value&&((\\\"x\\\"===char||\\\"X\\\"===char)&&(isAllowedDigit=isHexDigit,base=16,index+=1,value+=char),(\\\"o\\\"===char||\\\"O\\\"===char)&&(isAllowedDigit=isOctalDigit,base=8,state.inES6(!0)||this.trigger(\\\"warning\\\",{code:\\\"W119\\\",line:this.line,character:this.char,data:[\\\"Octal integer literal\\\",\\\"6\\\"]}),index+=1,value+=char),(\\\"b\\\"===char||\\\"B\\\"===char)&&(isAllowedDigit=isBinaryDigit,base=2,state.inES6(!0)||this.trigger(\\\"warning\\\",{code:\\\"W119\\\",line:this.line,character:this.char,data:[\\\"Binary integer literal\\\",\\\"6\\\"]}),index+=1,value+=char),isOctalDigit(char)&&(isAllowedDigit=isOctalDigit,base=8,isLegacy=!0,bad=!1,index+=1,value+=char),!isOctalDigit(char)&&isDecimalDigit(char)&&(index+=1,value+=char));length>index;){if(char=this.peek(index),isLegacy&&isDecimalDigit(char))bad=!0;else if(!isAllowedDigit(char))break;value+=char,index+=1}if(isAllowedDigit!==isDecimalDigit)return!isLegacy&&2>=value.length?{type:Token.NumericLiteral,value:value,isMalformed:!0}:length>index&&(char=this.peek(index),isIdentifierStart(char))?null:{type:Token.NumericLiteral,value:value,base:base,isLegacy:isLegacy,isMalformed:!1}}if(\\\".\\\"===char)for(value+=char,index+=1;length>index&&(char=this.peek(index),isDecimalDigit(char));)value+=char,index+=1;if(\\\"e\\\"===char||\\\"E\\\"===char){if(value+=char,index+=1,char=this.peek(index),(\\\"+\\\"===char||\\\"-\\\"===char)&&(value+=this.peek(index),index+=1),char=this.peek(index),!isDecimalDigit(char))return null;for(value+=char,index+=1;length>index&&(char=this.peek(index),isDecimalDigit(char));)value+=char,index+=1}return length>index&&(char=this.peek(index),isIdentifierStart(char))?null:{type:Token.NumericLiteral,value:value,base:base,isMalformed:!isFinite(value)}},scanEscapeSequence:function(checks){var allowNewLine=!1,jump=1;this.skip();var char=this.peek();switch(char){case\\\"'\\\":this.triggerAsync(\\\"warning\\\",{code:\\\"W114\\\",line:this.line,character:this.char,data:[\\\"\\\\\\\\'\\\"]},checks,function(){return state.jsonMode});break;case\\\"b\\\":char=\\\"\\\\\\\\b\\\";break;case\\\"f\\\":char=\\\"\\\\\\\\f\\\";break;case\\\"n\\\":char=\\\"\\\\\\\\n\\\";break;case\\\"r\\\":char=\\\"\\\\\\\\r\\\";break;case\\\"t\\\":char=\\\"\\\\\\\\t\\\";break;case\\\"0\\\":char=\\\"\\\\\\\\0\\\";var n=parseInt(this.peek(1),10);this.triggerAsync(\\\"warning\\\",{code:\\\"W115\\\",line:this.line,character:this.char},checks,function(){return n>=0&&7>=n&&state.isStrict()});break;case\\\"u\\\":var hexCode=this.input.substr(1,4),code=parseInt(hexCode,16);isNaN(code)&&this.trigger(\\\"warning\\\",{code:\\\"W052\\\",line:this.line,character:this.char,data:[\\\"u\\\"+hexCode]}),char=String.fromCharCode(code),jump=5;break;case\\\"v\\\":this.triggerAsync(\\\"warning\\\",{code:\\\"W114\\\",line:this.line,character:this.char,data:[\\\"\\\\\\\\v\\\"]},checks,function(){return state.jsonMode}),char=\\\"\\u000b\\\";break;case\\\"x\\\":var x=parseInt(this.input.substr(1,2),16);this.triggerAsync(\\\"warning\\\",{code:\\\"W114\\\",line:this.line,character:this.char,data:[\\\"\\\\\\\\x-\\\"]},checks,function(){return state.jsonMode}),char=String.fromCharCode(x),jump=3;break;case\\\"\\\\\\\\\\\":char=\\\"\\\\\\\\\\\\\\\\\\\";break;case'\\\"':char='\\\\\\\\\\\"';break;case\\\"/\\\":break;case\\\"\\\":allowNewLine=!0,char=\\\"\\\"}return{\\\"char\\\":char,jump:jump,allowNewLine:allowNewLine}},scanTemplateLiteral:function(checks){var tokenType,ch,value=\\\"\\\",startLine=this.line,startChar=this.char,depth=this.templateStarts.length;if(!state.inES6(!0))return null;if(\\\"`\\\"===this.peek())tokenType=Token.TemplateHead,this.templateStarts.push({line:this.line,\\\"char\\\":this.char}),depth=this.templateStarts.length,this.skip(1),this.pushContext(Context.Template);else{if(!this.inContext(Context.Template)||\\\"}\\\"!==this.peek())return null;tokenType=Token.TemplateMiddle}for(;\\\"`\\\"!==this.peek();){for(;\\\"\\\"===(ch=this.peek());)if(value+=\\\"\\\\n\\\",!this.nextLine()){var startPos=this.templateStarts.pop();return this.trigger(\\\"error\\\",{code:\\\"E052\\\",line:startPos.line,character:startPos.char}),{type:tokenType,value:value,startLine:startLine,startChar:startChar,isUnclosed:!0,depth:depth,context:this.popContext()}}if(\\\"$\\\"===ch&&\\\"{\\\"===this.peek(1))return value+=\\\"${\\\",this.skip(2),{type:tokenType,value:value,startLine:startLine,startChar:startChar,isUnclosed:!1,depth:depth,context:this.currentContext()};\\nif(\\\"\\\\\\\\\\\"===ch){var escape=this.scanEscapeSequence(checks);value+=escape.char,this.skip(escape.jump)}else\\\"`\\\"!==ch&&(value+=ch,this.skip(1))}return tokenType=tokenType===Token.TemplateHead?Token.NoSubstTemplate:Token.TemplateTail,this.skip(1),this.templateStarts.pop(),{type:tokenType,value:value,startLine:startLine,startChar:startChar,isUnclosed:!1,depth:depth,context:this.popContext()}},scanStringLiteral:function(checks){var quote=this.peek();if('\\\"'!==quote&&\\\"'\\\"!==quote)return null;this.triggerAsync(\\\"warning\\\",{code:\\\"W108\\\",line:this.line,character:this.char},checks,function(){return state.jsonMode&&'\\\"'!==quote});var value=\\\"\\\",startLine=this.line,startChar=this.char,allowNewLine=!1;for(this.skip();this.peek()!==quote;)if(\\\"\\\"===this.peek()){if(allowNewLine?(allowNewLine=!1,this.triggerAsync(\\\"warning\\\",{code:\\\"W043\\\",line:this.line,character:this.char},checks,function(){return!state.option.multistr}),this.triggerAsync(\\\"warning\\\",{code:\\\"W042\\\",line:this.line,character:this.char},checks,function(){return state.jsonMode&&state.option.multistr})):this.trigger(\\\"warning\\\",{code:\\\"W112\\\",line:this.line,character:this.char}),!this.nextLine())return this.trigger(\\\"error\\\",{code:\\\"E029\\\",line:startLine,character:startChar}),{type:Token.StringLiteral,value:value,startLine:startLine,startChar:startChar,isUnclosed:!0,quote:quote}}else{allowNewLine=!1;var char=this.peek(),jump=1;if(\\\" \\\">char&&this.trigger(\\\"warning\\\",{code:\\\"W113\\\",line:this.line,character:this.char,data:[\\\"\\\"]}),\\\"\\\\\\\\\\\"===char){var parsed=this.scanEscapeSequence(checks);char=parsed.char,jump=parsed.jump,allowNewLine=parsed.allowNewLine}value+=char,this.skip(jump)}return this.skip(),{type:Token.StringLiteral,value:value,startLine:startLine,startChar:startChar,isUnclosed:!1,quote:quote}},scanRegExp:function(){var terminated,index=0,length=this.input.length,char=this.peek(),value=char,body=\\\"\\\",flags=[],malformed=!1,isCharSet=!1,scanUnexpectedChars=function(){\\\" \\\">char&&(malformed=!0,this.trigger(\\\"warning\\\",{code:\\\"W048\\\",line:this.line,character:this.char})),\\\"<\\\"===char&&(malformed=!0,this.trigger(\\\"warning\\\",{code:\\\"W049\\\",line:this.line,character:this.char,data:[char]}))}.bind(this);if(!this.prereg||\\\"/\\\"!==char)return null;for(index+=1,terminated=!1;length>index;)if(char=this.peek(index),value+=char,body+=char,isCharSet)\\\"]\\\"===char&&(\\\"\\\\\\\\\\\"!==this.peek(index-1)||\\\"\\\\\\\\\\\"===this.peek(index-2))&&(isCharSet=!1),\\\"\\\\\\\\\\\"===char&&(index+=1,char=this.peek(index),body+=char,value+=char,scanUnexpectedChars()),index+=1;else{if(\\\"\\\\\\\\\\\"===char){if(index+=1,char=this.peek(index),body+=char,value+=char,scanUnexpectedChars(),\\\"/\\\"===char){index+=1;continue}if(\\\"[\\\"===char){index+=1;continue}}if(\\\"[\\\"!==char){if(\\\"/\\\"===char){body=body.substr(0,body.length-1),terminated=!0,index+=1;break}index+=1}else isCharSet=!0,index+=1}if(!terminated)return this.trigger(\\\"error\\\",{code:\\\"E015\\\",line:this.line,character:this.from}),void this.trigger(\\\"fatal\\\",{line:this.line,from:this.from});for(;length>index&&(char=this.peek(index),/[gim]/.test(char));)flags.push(char),value+=char,index+=1;try{RegExp(body,flags.join(\\\"\\\"))}catch(err){malformed=!0,this.trigger(\\\"error\\\",{code:\\\"E016\\\",line:this.line,character:this.char,data:[err.message]})}return{type:Token.RegExp,value:value,flags:flags,isMalformed:malformed}},scanNonBreakingSpaces:function(){return state.option.nonbsp?this.input.search(/(\\\\u00A0)/):-1},scanUnsafeChars:function(){return this.input.search(reg.unsafeChars)},next:function(checks){this.from=this.char;var start;if(/\\\\s/.test(this.peek()))for(start=this.char;/\\\\s/.test(this.peek());)this.from+=1,this.skip();var match=this.scanComments()||this.scanStringLiteral(checks)||this.scanTemplateLiteral(checks);return match?match:(match=this.scanRegExp()||this.scanPunctuator()||this.scanKeyword()||this.scanIdentifier()||this.scanNumericLiteral(),match?(this.skip(match.tokenLength||match.value.length),match):null)},nextLine:function(){var char;if(this.line>=this.getLines().length)return!1;this.input=this.getLines()[this.line],this.line+=1,this.char=1,this.from=1;var inputTrimmed=this.input.trim(),startsWith=function(){return _.some(arguments,function(prefix){return 0===inputTrimmed.indexOf(prefix)})},endsWith=function(){return _.some(arguments,function(suffix){return-1!==inputTrimmed.indexOf(suffix,inputTrimmed.length-suffix.length)})};if(this.ignoringLinterErrors===!0&&(startsWith(\\\"/*\\\",\\\"//\\\")||this.inComment&&endsWith(\\\"*/\\\")||(this.input=\\\"\\\")),char=this.scanNonBreakingSpaces(),char>=0&&this.trigger(\\\"warning\\\",{code:\\\"W125\\\",line:this.line,character:char+1}),this.input=this.input.replace(/\\\\t/g,state.tab),char=this.scanUnsafeChars(),char>=0&&this.trigger(\\\"warning\\\",{code:\\\"W100\\\",line:this.line,character:char}),!this.ignoringLinterErrors&&state.option.maxlen&&state.option.maxlen=0;--i){var scopeLabels=_scopeStack[i][\\\"(labels)\\\"];if(scopeLabels[labelName])return scopeLabels}}function usedSoFarInCurrentFunction(labelName){for(var i=_scopeStack.length-1;i>=0;i--){var current=_scopeStack[i];if(current[\\\"(usages)\\\"][labelName])return current[\\\"(usages)\\\"][labelName];if(current===_currentFunctBody)break}return!1}function _checkOuterShadow(labelName,token){if(\\\"outer\\\"===state.option.shadow)for(var isGlobal=\\\"global\\\"===_currentFunctBody[\\\"(type)\\\"],isNewFunction=\\\"functionparams\\\"===_current[\\\"(type)\\\"],outsideCurrentFunction=!isGlobal,i=0;_scopeStack.length>i;i++){var stackItem=_scopeStack[i];isNewFunction||_scopeStack[i+1]!==_currentFunctBody||(outsideCurrentFunction=!1),outsideCurrentFunction&&stackItem[\\\"(labels)\\\"][labelName]&&warning(\\\"W123\\\",token,labelName),stackItem[\\\"(breakLabels)\\\"][labelName]&&warning(\\\"W123\\\",token,labelName)}}function _latedefWarning(type,labelName,token){state.option.latedef&&(state.option.latedef===!0&&\\\"function\\\"===type||\\\"function\\\"!==type)&&warning(\\\"W003\\\",token,labelName)}var _current,_scopeStack=[];_newScope(\\\"global\\\"),_current[\\\"(predefined)\\\"]=predefined;var _currentFunctBody=_current,usedPredefinedAndGlobals=Object.create(null),impliedGlobals=Object.create(null),unuseds=[],emitter=new events.EventEmitter,_getUnusedOption=function(unused_opt){return void 0===unused_opt&&(unused_opt=state.option.unused),unused_opt===!0&&(unused_opt=\\\"last-param\\\"),unused_opt},_warnUnused=function(name,tkn,type,unused_opt){var line=tkn.line,chr=tkn.from,raw_name=tkn.raw_text||name;unused_opt=_getUnusedOption(unused_opt);var warnable_types={vars:[\\\"var\\\"],\\\"last-param\\\":[\\\"var\\\",\\\"param\\\"],strict:[\\\"var\\\",\\\"param\\\",\\\"last-param\\\"]};unused_opt&&warnable_types[unused_opt]&&-1!==warnable_types[unused_opt].indexOf(type)&&warning(\\\"W098\\\",{line:line,from:chr},raw_name),(unused_opt||\\\"var\\\"===type)&&unuseds.push({name:name,line:line,character:chr})},scopeManagerInst={on:function(names,listener){names.split(\\\" \\\").forEach(function(name){emitter.on(name,listener)})},isPredefined:function(labelName){return!this.has(labelName)&&_.has(_scopeStack[0][\\\"(predefined)\\\"],labelName)},stack:function(type){var previousScope=_current;_newScope(type),type||\\\"functionparams\\\"!==previousScope[\\\"(type)\\\"]||(_current[\\\"(isFuncBody)\\\"]=!0,_current[\\\"(context)\\\"]=_currentFunctBody,_currentFunctBody=_current)},unstack:function(){var i,j,subScope=_scopeStack.length>1?_scopeStack[_scopeStack.length-2]:null,isUnstackingFunctionBody=_current===_currentFunctBody,isUnstackingFunctionParams=\\\"functionparams\\\"===_current[\\\"(type)\\\"],isUnstackingFunctionOuter=\\\"functionouter\\\"===_current[\\\"(type)\\\"],currentUsages=_current[\\\"(usages)\\\"],currentLabels=_current[\\\"(labels)\\\"],usedLabelNameList=Object.keys(currentUsages);for(currentUsages.__proto__&&-1===usedLabelNameList.indexOf(\\\"__proto__\\\")&&usedLabelNameList.push(\\\"__proto__\\\"),i=0;usedLabelNameList.length>i;i++){var usedLabelName=usedLabelNameList[i],usage=currentUsages[usedLabelName],usedLabel=currentLabels[usedLabelName];if(usedLabel){var usedLabelType=usedLabel[\\\"(type)\\\"];if(usedLabel[\\\"(useOutsideOfScope)\\\"]&&!state.option.funcscope){var usedTokens=usage[\\\"(tokens)\\\"];if(usedTokens)for(j=0;usedTokens.length>j;j++)usedLabel[\\\"(function)\\\"]===usedTokens[j][\\\"(function)\\\"]&&error(\\\"W038\\\",usedTokens[j],usedLabelName)}if(_current[\\\"(labels)\\\"][usedLabelName][\\\"(unused)\\\"]=!1,\\\"const\\\"===usedLabelType&&usage[\\\"(modified)\\\"])for(j=0;usage[\\\"(modified)\\\"].length>j;j++)error(\\\"E013\\\",usage[\\\"(modified)\\\"][j],usedLabelName);if((\\\"function\\\"===usedLabelType||\\\"class\\\"===usedLabelType)&&usage[\\\"(reassigned)\\\"])for(j=0;usage[\\\"(reassigned)\\\"].length>j;j++)error(\\\"W021\\\",usage[\\\"(reassigned)\\\"][j],usedLabelName,usedLabelType)}else if(isUnstackingFunctionOuter&&(state.funct[\\\"(isCapturing)\\\"]=!0),subScope)if(subScope[\\\"(usages)\\\"][usedLabelName]){var subScopeUsage=subScope[\\\"(usages)\\\"][usedLabelName];subScopeUsage[\\\"(modified)\\\"]=subScopeUsage[\\\"(modified)\\\"].concat(usage[\\\"(modified)\\\"]),subScopeUsage[\\\"(tokens)\\\"]=subScopeUsage[\\\"(tokens)\\\"].concat(usage[\\\"(tokens)\\\"]),subScopeUsage[\\\"(reassigned)\\\"]=subScopeUsage[\\\"(reassigned)\\\"].concat(usage[\\\"(reassigned)\\\"]),subScopeUsage[\\\"(onlyUsedSubFunction)\\\"]=!1}else subScope[\\\"(usages)\\\"][usedLabelName]=usage,isUnstackingFunctionBody&&(subScope[\\\"(usages)\\\"][usedLabelName][\\\"(onlyUsedSubFunction)\\\"]=!0);else if(\\\"boolean\\\"==typeof _current[\\\"(predefined)\\\"][usedLabelName]){if(delete declared[usedLabelName],usedPredefinedAndGlobals[usedLabelName]=marker,_current[\\\"(predefined)\\\"][usedLabelName]===!1&&usage[\\\"(reassigned)\\\"])for(j=0;usage[\\\"(reassigned)\\\"].length>j;j++)warning(\\\"W020\\\",usage[\\\"(reassigned)\\\"][j])}else if(usage[\\\"(tokens)\\\"])for(j=0;usage[\\\"(tokens)\\\"].length>j;j++){var undefinedToken=usage[\\\"(tokens)\\\"][j];undefinedToken.forgiveUndef||(state.option.undef&&!undefinedToken.ignoreUndef&&warning(\\\"W117\\\",undefinedToken,usedLabelName),impliedGlobals[usedLabelName]?impliedGlobals[usedLabelName].line.push(undefinedToken.line):impliedGlobals[usedLabelName]={name:usedLabelName,line:[undefinedToken.line]})}}if(subScope||Object.keys(declared).forEach(function(labelNotUsed){_warnUnused(labelNotUsed,declared[labelNotUsed],\\\"var\\\")}),subScope&&!isUnstackingFunctionBody&&!isUnstackingFunctionParams&&!isUnstackingFunctionOuter){var labelNames=Object.keys(currentLabels);for(i=0;labelNames.length>i;i++){var defLabelName=labelNames[i];currentLabels[defLabelName][\\\"(blockscoped)\\\"]||\\\"exception\\\"===currentLabels[defLabelName][\\\"(type)\\\"]||this.funct.has(defLabelName,{excludeCurrent:!0})||(subScope[\\\"(labels)\\\"][defLabelName]=currentLabels[defLabelName],\\\"global\\\"!==_currentFunctBody[\\\"(type)\\\"]&&(subScope[\\\"(labels)\\\"][defLabelName][\\\"(useOutsideOfScope)\\\"]=!0),delete currentLabels[defLabelName])}}_checkForUnused(),_scopeStack.pop(),isUnstackingFunctionBody&&(_currentFunctBody=_scopeStack[_.findLastIndex(_scopeStack,function(scope){return scope[\\\"(isFuncBody)\\\"]||\\\"global\\\"===scope[\\\"(type)\\\"]})]),_current=subScope},addParam:function(labelName,token,type){if(type=type||\\\"param\\\",\\\"exception\\\"===type){var previouslyDefinedLabelType=this.funct.labeltype(labelName);previouslyDefinedLabelType&&\\\"exception\\\"!==previouslyDefinedLabelType&&(state.option.node||warning(\\\"W002\\\",state.tokens.next,labelName))}if(_.has(_current[\\\"(labels)\\\"],labelName)?_current[\\\"(labels)\\\"][labelName].duplicated=!0:(_checkOuterShadow(labelName,token,type),_current[\\\"(labels)\\\"][labelName]={\\\"(type)\\\":type,\\\"(token)\\\":token,\\\"(unused)\\\":!0},_current[\\\"(params)\\\"].push(labelName)),_.has(_current[\\\"(usages)\\\"],labelName)){var usage=_current[\\\"(usages)\\\"][labelName];usage[\\\"(onlyUsedSubFunction)\\\"]?_latedefWarning(type,labelName,token):warning(\\\"E056\\\",token,labelName,type)}},validateParams:function(){if(\\\"global\\\"!==_currentFunctBody[\\\"(type)\\\"]){var isStrict=state.isStrict(),currentFunctParamScope=_currentFunctBody[\\\"(parent)\\\"];currentFunctParamScope[\\\"(params)\\\"]&¤tFunctParamScope[\\\"(params)\\\"].forEach(function(labelName){var label=currentFunctParamScope[\\\"(labels)\\\"][labelName];label&&label.duplicated&&(isStrict?warning(\\\"E011\\\",label[\\\"(token)\\\"],labelName):state.option.shadow!==!0&&warning(\\\"W004\\\",label[\\\"(token)\\\"],labelName))})}},getUsedOrDefinedGlobals:function(){var list=Object.keys(usedPredefinedAndGlobals);return usedPredefinedAndGlobals.__proto__===marker&&-1===list.indexOf(\\\"__proto__\\\")&&list.push(\\\"__proto__\\\"),list},getImpliedGlobals:function(){var values=_.values(impliedGlobals),hasProto=!1;return impliedGlobals.__proto__&&(hasProto=values.some(function(value){return\\\"__proto__\\\"===value.name}),hasProto||values.push(impliedGlobals.__proto__)),values},getUnuseds:function(){return unuseds},has:function(labelName){return Boolean(_getLabel(labelName))},labeltype:function(labelName){var scopeLabels=_getLabel(labelName);return scopeLabels?scopeLabels[labelName][\\\"(type)\\\"]:null},addExported:function(labelName){var globalLabels=_scopeStack[0][\\\"(labels)\\\"];if(_.has(declared,labelName))delete declared[labelName];else if(_.has(globalLabels,labelName))globalLabels[labelName][\\\"(unused)\\\"]=!1;else{for(var i=1;_scopeStack.length>i;i++){var scope=_scopeStack[i];if(scope[\\\"(type)\\\"])break;if(_.has(scope[\\\"(labels)\\\"],labelName)&&!scope[\\\"(labels)\\\"][labelName][\\\"(blockscoped)\\\"])return scope[\\\"(labels)\\\"][labelName][\\\"(unused)\\\"]=!1,void 0}exported[labelName]=!0}},setExported:function(labelName,token){this.block.use(labelName,token)\\n},addlabel:function(labelName,opts){var type=opts.type,token=opts.token,isblockscoped=\\\"let\\\"===type||\\\"const\\\"===type||\\\"class\\\"===type,isexported=\\\"global\\\"===(isblockscoped?_current:_currentFunctBody)[\\\"(type)\\\"]&&_.has(exported,labelName);if(_checkOuterShadow(labelName,token,type),isblockscoped){var declaredInCurrentScope=_current[\\\"(labels)\\\"][labelName];if(declaredInCurrentScope||_current!==_currentFunctBody||\\\"global\\\"===_current[\\\"(type)\\\"]||(declaredInCurrentScope=!!_currentFunctBody[\\\"(parent)\\\"][\\\"(labels)\\\"][labelName]),!declaredInCurrentScope&&_current[\\\"(usages)\\\"][labelName]){var usage=_current[\\\"(usages)\\\"][labelName];usage[\\\"(onlyUsedSubFunction)\\\"]?_latedefWarning(type,labelName,token):warning(\\\"E056\\\",token,labelName,type)}declaredInCurrentScope?warning(\\\"E011\\\",token,labelName):\\\"outer\\\"===state.option.shadow&&scopeManagerInst.funct.has(labelName)&&warning(\\\"W004\\\",token,labelName),scopeManagerInst.block.add(labelName,type,token,!isexported)}else{var declaredInCurrentFunctionScope=scopeManagerInst.funct.has(labelName);!declaredInCurrentFunctionScope&&usedSoFarInCurrentFunction(labelName)&&_latedefWarning(type,labelName,token),scopeManagerInst.funct.has(labelName,{onlyBlockscoped:!0})?warning(\\\"E011\\\",token,labelName):state.option.shadow!==!0&&declaredInCurrentFunctionScope&&\\\"__proto__\\\"!==labelName&&\\\"global\\\"!==_currentFunctBody[\\\"(type)\\\"]&&warning(\\\"W004\\\",token,labelName),scopeManagerInst.funct.add(labelName,type,token,!isexported),\\\"global\\\"===_currentFunctBody[\\\"(type)\\\"]&&(usedPredefinedAndGlobals[labelName]=marker)}},funct:{labeltype:function(labelName,options){for(var onlyBlockscoped=options&&options.onlyBlockscoped,excludeParams=options&&options.excludeParams,currentScopeIndex=_scopeStack.length-(options&&options.excludeCurrent?2:1),i=currentScopeIndex;i>=0;i--){var current=_scopeStack[i];if(current[\\\"(labels)\\\"][labelName]&&(!onlyBlockscoped||current[\\\"(labels)\\\"][labelName][\\\"(blockscoped)\\\"]))return current[\\\"(labels)\\\"][labelName][\\\"(type)\\\"];var scopeCheck=excludeParams?_scopeStack[i-1]:current;if(scopeCheck&&\\\"functionparams\\\"===scopeCheck[\\\"(type)\\\"])return null}return null},hasBreakLabel:function(labelName){for(var i=_scopeStack.length-1;i>=0;i--){var current=_scopeStack[i];if(current[\\\"(breakLabels)\\\"][labelName])return!0;if(\\\"functionparams\\\"===current[\\\"(type)\\\"])return!1}return!1},has:function(labelName,options){return Boolean(this.labeltype(labelName,options))},add:function(labelName,type,tok,unused){_current[\\\"(labels)\\\"][labelName]={\\\"(type)\\\":type,\\\"(token)\\\":tok,\\\"(blockscoped)\\\":!1,\\\"(function)\\\":_currentFunctBody,\\\"(unused)\\\":unused}}},block:{isGlobal:function(){return\\\"global\\\"===_current[\\\"(type)\\\"]},use:function(labelName,token){var paramScope=_currentFunctBody[\\\"(parent)\\\"];paramScope&¶mScope[\\\"(labels)\\\"][labelName]&&\\\"param\\\"===paramScope[\\\"(labels)\\\"][labelName][\\\"(type)\\\"]&&(scopeManagerInst.funct.has(labelName,{excludeParams:!0,onlyBlockscoped:!0})||(paramScope[\\\"(labels)\\\"][labelName][\\\"(unused)\\\"]=!1)),token&&(state.ignored.W117||state.option.undef===!1)&&(token.ignoreUndef=!0),_setupUsages(labelName),token&&(token[\\\"(function)\\\"]=_currentFunctBody,_current[\\\"(usages)\\\"][labelName][\\\"(tokens)\\\"].push(token))},reassign:function(labelName,token){this.modify(labelName,token),_current[\\\"(usages)\\\"][labelName][\\\"(reassigned)\\\"].push(token)},modify:function(labelName,token){_setupUsages(labelName),_current[\\\"(usages)\\\"][labelName][\\\"(modified)\\\"].push(token)},add:function(labelName,type,tok,unused){_current[\\\"(labels)\\\"][labelName]={\\\"(type)\\\":type,\\\"(token)\\\":tok,\\\"(blockscoped)\\\":!0,\\\"(unused)\\\":unused}},addBreakLabel:function(labelName,opts){var token=opts.token;scopeManagerInst.funct.hasBreakLabel(labelName)?warning(\\\"E011\\\",token,labelName):\\\"outer\\\"===state.option.shadow&&(scopeManagerInst.funct.has(labelName)?warning(\\\"W004\\\",token,labelName):_checkOuterShadow(labelName,token)),_current[\\\"(breakLabels)\\\"][labelName]=token}}};return scopeManagerInst};module.exports=scopeManager},{\\\"../lodash\\\":\\\"/node_modules/jshint/lodash.js\\\",events:\\\"/node_modules/browserify/node_modules/events/events.js\\\"}],\\\"/node_modules/jshint/src/state.js\\\":[function(_dereq_,module,exports){\\\"use strict\\\";var NameStack=_dereq_(\\\"./name-stack.js\\\"),state={syntax:{},isStrict:function(){return this.directive[\\\"use strict\\\"]||this.inClassBody||this.option.module||\\\"implied\\\"===this.option.strict},inMoz:function(){return this.option.moz},inES6:function(){return this.option.moz||this.option.esversion>=6},inES5:function(strict){return strict?!(this.option.esversion&&5!==this.option.esversion||this.option.moz):!this.option.esversion||this.option.esversion>=5||this.option.moz},reset:function(){this.tokens={prev:null,next:null,curr:null},this.option={},this.funct=null,this.ignored={},this.directive={},this.jsonMode=!1,this.jsonWarnings=[],this.lines=[],this.tab=\\\"\\\",this.cache={},this.ignoredLines={},this.forinifcheckneeded=!1,this.nameStack=new NameStack,this.inClassBody=!1}};exports.state=state},{\\\"./name-stack.js\\\":\\\"/node_modules/jshint/src/name-stack.js\\\"}],\\\"/node_modules/jshint/src/style.js\\\":[function(_dereq_,module,exports){\\\"use strict\\\";exports.register=function(linter){linter.on(\\\"Identifier\\\",function(data){linter.getOption(\\\"proto\\\")||\\\"__proto__\\\"===data.name&&linter.warn(\\\"W103\\\",{line:data.line,\\\"char\\\":data.char,data:[data.name,\\\"6\\\"]})}),linter.on(\\\"Identifier\\\",function(data){linter.getOption(\\\"iterator\\\")||\\\"__iterator__\\\"===data.name&&linter.warn(\\\"W103\\\",{line:data.line,\\\"char\\\":data.char,data:[data.name]})}),linter.on(\\\"Identifier\\\",function(data){linter.getOption(\\\"camelcase\\\")&&data.name.replace(/^_+|_+$/g,\\\"\\\").indexOf(\\\"_\\\")>-1&&!data.name.match(/^[A-Z0-9_]*$/)&&linter.warn(\\\"W106\\\",{line:data.line,\\\"char\\\":data.from,data:[data.name]})}),linter.on(\\\"String\\\",function(data){var code,quotmark=linter.getOption(\\\"quotmark\\\");quotmark&&(\\\"single\\\"===quotmark&&\\\"'\\\"!==data.quote&&(code=\\\"W109\\\"),\\\"double\\\"===quotmark&&'\\\"'!==data.quote&&(code=\\\"W108\\\"),quotmark===!0&&(linter.getCache(\\\"quotmark\\\")||linter.setCache(\\\"quotmark\\\",data.quote),linter.getCache(\\\"quotmark\\\")!==data.quote&&(code=\\\"W110\\\")),code&&linter.warn(code,{line:data.line,\\\"char\\\":data.char}))}),linter.on(\\\"Number\\\",function(data){\\\".\\\"===data.value.charAt(0)&&linter.warn(\\\"W008\\\",{line:data.line,\\\"char\\\":data.char,data:[data.value]}),\\\".\\\"===data.value.substr(data.value.length-1)&&linter.warn(\\\"W047\\\",{line:data.line,\\\"char\\\":data.char,data:[data.value]}),/^00+/.test(data.value)&&linter.warn(\\\"W046\\\",{line:data.line,\\\"char\\\":data.char,data:[data.value]})}),linter.on(\\\"String\\\",function(data){var re=/^(?:javascript|jscript|ecmascript|vbscript|livescript)\\\\s*:/i;linter.getOption(\\\"scripturl\\\")||re.test(data.value)&&linter.warn(\\\"W107\\\",{line:data.line,\\\"char\\\":data.char})})}},{}],\\\"/node_modules/jshint/src/vars.js\\\":[function(_dereq_,module,exports){\\\"use strict\\\";exports.reservedVars={arguments:!1,NaN:!1},exports.ecmaIdentifiers={3:{Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,Math:!1,Number:!1,Object:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1},5:{JSON:!1},6:{Map:!1,Promise:!1,Proxy:!1,Reflect:!1,Set:!1,Symbol:!1,WeakMap:!1,WeakSet:!1}},exports.browser={Audio:!1,Blob:!1,addEventListener:!1,applicationCache:!1,atob:!1,blur:!1,btoa:!1,cancelAnimationFrame:!1,CanvasGradient:!1,CanvasPattern:!1,CanvasRenderingContext2D:!1,CSS:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,Comment:!1,CustomEvent:!1,DOMParser:!1,defaultStatus:!1,Document:!1,document:!1,DocumentFragment:!1,Element:!1,ElementTimeControl:!1,Event:!1,event:!1,fetch:!1,FileReader:!1,FormData:!1,focus:!1,frames:!1,getComputedStyle:!1,HTMLElement:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLCollection:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTemplateElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,history:!1,Image:!1,Intl:!1,length:!1,localStorage:!1,location:!1,matchMedia:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,MouseEvent:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,Node:!1,NodeFilter:!1,NodeList:!1,Notification:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,performance:!1,print:!1,Range:!1,requestAnimationFrame:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,status:!1,SVGAElement:!1,SVGAltGlyphDefElement:!1,SVGAltGlyphElement:!1,SVGAltGlyphItemElement:!1,SVGAngle:!1,SVGAnimateColorElement:!1,SVGAnimateElement:!1,SVGAnimateMotionElement:!1,SVGAnimateTransformElement:!1,SVGAnimatedAngle:!1,SVGAnimatedBoolean:!1,SVGAnimatedEnumeration:!1,SVGAnimatedInteger:!1,SVGAnimatedLength:!1,SVGAnimatedLengthList:!1,SVGAnimatedNumber:!1,SVGAnimatedNumberList:!1,SVGAnimatedPathData:!1,SVGAnimatedPoints:!1,SVGAnimatedPreserveAspectRatio:!1,SVGAnimatedRect:!1,SVGAnimatedString:!1,SVGAnimatedTransformList:!1,SVGAnimationElement:!1,SVGCSSRule:!1,SVGCircleElement:!1,SVGClipPathElement:!1,SVGColor:!1,SVGColorProfileElement:!1,SVGColorProfileRule:!1,SVGComponentTransferFunctionElement:!1,SVGCursorElement:!1,SVGDefsElement:!1,SVGDescElement:!1,SVGDocument:!1,SVGElement:!1,SVGElementInstance:!1,SVGElementInstanceList:!1,SVGEllipseElement:!1,SVGExternalResourcesRequired:!1,SVGFEBlendElement:!1,SVGFEColorMatrixElement:!1,SVGFEComponentTransferElement:!1,SVGFECompositeElement:!1,SVGFEConvolveMatrixElement:!1,SVGFEDiffuseLightingElement:!1,SVGFEDisplacementMapElement:!1,SVGFEDistantLightElement:!1,SVGFEFloodElement:!1,SVGFEFuncAElement:!1,SVGFEFuncBElement:!1,SVGFEFuncGElement:!1,SVGFEFuncRElement:!1,SVGFEGaussianBlurElement:!1,SVGFEImageElement:!1,SVGFEMergeElement:!1,SVGFEMergeNodeElement:!1,SVGFEMorphologyElement:!1,SVGFEOffsetElement:!1,SVGFEPointLightElement:!1,SVGFESpecularLightingElement:!1,SVGFESpotLightElement:!1,SVGFETileElement:!1,SVGFETurbulenceElement:!1,SVGFilterElement:!1,SVGFilterPrimitiveStandardAttributes:!1,SVGFitToViewBox:!1,SVGFontElement:!1,SVGFontFaceElement:!1,SVGFontFaceFormatElement:!1,SVGFontFaceNameElement:!1,SVGFontFaceSrcElement:!1,SVGFontFaceUriElement:!1,SVGForeignObjectElement:!1,SVGGElement:!1,SVGGlyphElement:!1,SVGGlyphRefElement:!1,SVGGradientElement:!1,SVGHKernElement:!1,SVGICCColor:!1,SVGImageElement:!1,SVGLangSpace:!1,SVGLength:!1,SVGLengthList:!1,SVGLineElement:!1,SVGLinearGradientElement:!1,SVGLocatable:!1,SVGMPathElement:!1,SVGMarkerElement:!1,SVGMaskElement:!1,SVGMatrix:!1,SVGMetadataElement:!1,SVGMissingGlyphElement:!1,SVGNumber:!1,SVGNumberList:!1,SVGPaint:!1,SVGPathElement:!1,SVGPathSeg:!1,SVGPathSegArcAbs:!1,SVGPathSegArcRel:!1,SVGPathSegClosePath:!1,SVGPathSegCurvetoCubicAbs:!1,SVGPathSegCurvetoCubicRel:!1,SVGPathSegCurvetoCubicSmoothAbs:!1,SVGPathSegCurvetoCubicSmoothRel:!1,SVGPathSegCurvetoQuadraticAbs:!1,SVGPathSegCurvetoQuadraticRel:!1,SVGPathSegCurvetoQuadraticSmoothAbs:!1,SVGPathSegCurvetoQuadraticSmoothRel:!1,SVGPathSegLinetoAbs:!1,SVGPathSegLinetoHorizontalAbs:!1,SVGPathSegLinetoHorizontalRel:!1,SVGPathSegLinetoRel:!1,SVGPathSegLinetoVerticalAbs:!1,SVGPathSegLinetoVerticalRel:!1,SVGPathSegList:!1,SVGPathSegMovetoAbs:!1,SVGPathSegMovetoRel:!1,SVGPatternElement:!1,SVGPoint:!1,SVGPointList:!1,SVGPolygonElement:!1,SVGPolylineElement:!1,SVGPreserveAspectRatio:!1,SVGRadialGradientElement:!1,SVGRect:!1,SVGRectElement:!1,SVGRenderingIntent:!1,SVGSVGElement:!1,SVGScriptElement:!1,SVGSetElement:!1,SVGStopElement:!1,SVGStringList:!1,SVGStylable:!1,SVGStyleElement:!1,SVGSwitchElement:!1,SVGSymbolElement:!1,SVGTRefElement:!1,SVGTSpanElement:!1,SVGTests:!1,SVGTextContentElement:!1,SVGTextElement:!1,SVGTextPathElement:!1,SVGTextPositioningElement:!1,SVGTitleElement:!1,SVGTransform:!1,SVGTransformList:!1,SVGTransformable:!1,SVGURIReference:!1,SVGUnitTypes:!1,SVGUseElement:!1,SVGVKernElement:!1,SVGViewElement:!1,SVGViewSpec:!1,SVGZoomAndPan:!1,Text:!1,TextDecoder:!1,TextEncoder:!1,TimeEvent:!1,top:!1,URL:!1,WebGLActiveInfo:!1,WebGLBuffer:!1,WebGLContextEvent:!1,WebGLFramebuffer:!1,WebGLProgram:!1,WebGLRenderbuffer:!1,WebGLRenderingContext:!1,WebGLShader:!1,WebGLShaderPrecisionFormat:!1,WebGLTexture:!1,WebGLUniformLocation:!1,WebSocket:!1,window:!1,Window:!1,Worker:!1,XDomainRequest:!1,XMLHttpRequest:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1},exports.devel={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},exports.worker={importScripts:!0,postMessage:!0,self:!0,FileReaderSync:!0},exports.nonstandard={escape:!1,unescape:!1},exports.couch={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1,provides:!1},exports.node={__filename:!1,__dirname:!1,GLOBAL:!1,global:!1,module:!1,acequire:!1,Buffer:!0,console:!0,exports:!0,process:!0,setTimeout:!0,clearTimeout:!0,setInterval:!0,clearInterval:!0,setImmediate:!0,clearImmediate:!0},exports.browserify={__filename:!1,__dirname:!1,global:!1,module:!1,acequire:!1,Buffer:!0,exports:!0,process:!0},exports.phantom={phantom:!0,acequire:!0,WebPage:!0,console:!0,exports:!0},exports.qunit={asyncTest:!1,deepEqual:!1,equal:!1,expect:!1,module:!1,notDeepEqual:!1,notEqual:!1,notPropEqual:!1,notStrictEqual:!1,ok:!1,propEqual:!1,QUnit:!1,raises:!1,start:!1,stop:!1,strictEqual:!1,test:!1,\\\"throws\\\":!1},exports.rhino={defineClass:!1,deserialize:!1,gc:!1,help:!1,importClass:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,Packages:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},exports.shelljs={target:!1,echo:!1,exit:!1,cd:!1,pwd:!1,ls:!1,find:!1,cp:!1,rm:!1,mv:!1,mkdir:!1,test:!1,cat:!1,sed:!1,grep:!1,which:!1,dirs:!1,pushd:!1,popd:!1,env:!1,exec:!1,chmod:!1,config:!1,error:!1,tempdir:!1},exports.typed={ArrayBuffer:!1,ArrayBufferView:!1,DataView:!1,Float32Array:!1,Float64Array:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1},exports.wsh={ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WSH:!0,WScript:!0,XDomainRequest:!0},exports.dojo={dojo:!1,dijit:!1,dojox:!1,define:!1,require:!1},exports.jquery={$:!1,jQuery:!1},exports.mootools={$:!1,$$:!1,Asset:!1,Browser:!1,Chain:!1,Class:!1,Color:!1,Cookie:!1,Core:!1,Document:!1,DomReady:!1,DOMEvent:!1,DOMReady:!1,Drag:!1,Element:!1,Elements:!1,Event:!1,Events:!1,Fx:!1,Group:!1,Hash:!1,HtmlTable:!1,IFrame:!1,IframeShim:!1,InputValidator:!1,instanceOf:!1,Keyboard:!1,Locale:!1,Mask:!1,MooTools:!1,Native:!1,Options:!1,OverText:!1,Request:!1,Scroller:!1,Slick:!1,Slider:!1,Sortables:!1,Spinner:!1,Swiff:!1,Tips:!1,Type:!1,typeOf:!1,URI:!1,Window:!1},exports.prototypejs={$:!1,$$:!1,$A:!1,$F:!1,$H:!1,$R:!1,$break:!1,$continue:!1,$w:!1,Abstract:!1,Ajax:!1,Class:!1,Enumerable:!1,Element:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Selector:!1,Template:!1,Toggle:!1,Try:!1,Autocompleter:!1,Builder:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Scriptaculous:!1},exports.yui={YUI:!1,Y:!1,YUI_config:!1},exports.mocha={mocha:!1,describe:!1,xdescribe:!1,it:!1,xit:!1,context:!1,xcontext:!1,before:!1,after:!1,beforeEach:!1,afterEach:!1,suite:!1,test:!1,setup:!1,teardown:!1,suiteSetup:!1,suiteTeardown:!1},exports.jasmine={jasmine:!1,describe:!1,xdescribe:!1,it:!1,xit:!1,beforeEach:!1,afterEach:!1,setFixtures:!1,loadFixtures:!1,spyOn:!1,expect:!1,runs:!1,waitsFor:!1,waits:!1,beforeAll:!1,afterAll:!1,fail:!1,fdescribe:!1,fit:!1,pending:!1}},{}]},{},[\\\"/node_modules/jshint/src/jshint.js\\\"])}),ace.define(\\\"ace/mode/javascript_worker\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/worker/mirror\\\",\\\"ace/mode/javascript/jshint\\\"],function(acequire,exports,module){\\\"use strict\\\";function startRegex(arr){return RegExp(\\\"^(\\\"+arr.join(\\\"|\\\")+\\\")\\\")}var oop=acequire(\\\"../lib/oop\\\"),Mirror=acequire(\\\"../worker/mirror\\\").Mirror,lint=acequire(\\\"./javascript/jshint\\\").JSHINT,disabledWarningsRe=startRegex([\\\"Bad for in variable '(.+)'.\\\",'Missing \\\"use strict\\\"']),errorsRe=startRegex([\\\"Unexpected\\\",\\\"Expected \\\",\\\"Confusing (plus|minus)\\\",\\\"\\\\\\\\{a\\\\\\\\} unterminated regular expression\\\",\\\"Unclosed \\\",\\\"Unmatched \\\",\\\"Unbegun comment\\\",\\\"Bad invocation\\\",\\\"Missing space after\\\",\\\"Missing operator at\\\"]),infoRe=startRegex([\\\"Expected an assignment\\\",\\\"Bad escapement of EOL\\\",\\\"Unexpected comma\\\",\\\"Unexpected space\\\",\\\"Missing radix parameter.\\\",\\\"A leading decimal point can\\\",\\\"\\\\\\\\['{a}'\\\\\\\\] is better written in dot notation.\\\",\\\"'{a}' used out of scope\\\"]),JavaScriptWorker=exports.JavaScriptWorker=function(sender){Mirror.call(this,sender),this.setTimeout(500),this.setOptions()};oop.inherits(JavaScriptWorker,Mirror),function(){this.setOptions=function(options){this.options=options||{esnext:!0,moz:!0,devel:!0,browser:!0,node:!0,laxcomma:!0,laxbreak:!0,lastsemic:!0,onevar:!1,passfail:!1,maxerr:100,expr:!0,multistr:!0,globalstrict:!0},this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.changeOptions=function(newOptions){oop.mixin(this.options,newOptions),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.isValidJS=function(str){try{eval(\\\"throw 0;\\\"+str)}catch(e){if(0===e)return!0}return!1},this.onUpdate=function(){var value=this.doc.getValue();if(value=value.replace(/^#!.*\\\\n/,\\\"\\\\n\\\"),!value)return this.sender.emit(\\\"annotate\\\",[]);var errors=[],maxErrorLevel=this.isValidJS(value)?\\\"warning\\\":\\\"error\\\";lint(value,this.options,this.options.globals);for(var results=lint.errors,errorAdded=!1,i=0;results.length>i;i++){var error=results[i];if(error){var raw=error.raw,type=\\\"warning\\\";if(\\\"Missing semicolon.\\\"==raw){var str=error.evidence.substr(error.character);str=str.charAt(str.search(/\\\\S/)),\\\"error\\\"==maxErrorLevel&&str&&/[\\\\w\\\\d{(['\\\"]/.test(str)?(error.reason='Missing \\\";\\\" before statement',type=\\\"error\\\"):type=\\\"info\\\"}else{if(disabledWarningsRe.test(raw))continue;infoRe.test(raw)?type=\\\"info\\\":errorsRe.test(raw)?(errorAdded=!0,type=maxErrorLevel):\\\"'{a}' is not defined.\\\"==raw?type=\\\"warning\\\":\\\"'{a}' is defined but never used.\\\"==raw&&(type=\\\"info\\\")}errors.push({row:error.line-1,column:error.character-1,text:error.reason,type:type,raw:raw})}}this.sender.emit(\\\"annotate\\\",errors)}}.call(JavaScriptWorker.prototype)}),ace.define(\\\"ace/lib/es5-shim\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\\\"sentinel\\\",{}),\\\"sentinel\\\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\\\"function\\\"!=typeof target)throw new TypeError(\\\"Function.prototype.bind called on incompatible \\\"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\\\"__defineGetter__\\\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\\\"XXX\\\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\\\"[object Array]\\\"==_toString(obj)});var boxedString=Object(\\\"a\\\"),splitString=\\\"a\\\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0;if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");if(!length&&1==arguments.length)throw new TypeError(\\\"reduce of empty array with no initial value\\\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\\\"reduce of empty array with no initial value\\\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0;if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");if(!length&&1==arguments.length)throw new TypeError(\\\"reduceRight of empty array with no initial value\\\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\\\"reduceRight of empty array with no initial value\\\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\\\"Object.getOwnPropertyDescriptor called on a non-object: \\\";Object.getOwnPropertyDescriptor=function(object,property){if(\\\"object\\\"!=typeof object&&\\\"function\\\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\\\"object\\\"!=typeof prototype)throw new TypeError(\\\"typeof prototype[\\\"+typeof prototype+\\\"] != 'object'\\\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\\\"undefined\\\"==typeof document||doesDefinePropertyWork(document.createElement(\\\"div\\\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\\\"Property description must be an object: \\\",ERR_NON_OBJECT_TARGET=\\\"Object.defineProperty called on non-object: \\\",ERR_ACCESSORS_NOT_SUPPORTED=\\\"getters & setters can not be defined on this javascript engine\\\";Object.defineProperty=function(object,property,descriptor){if(\\\"object\\\"!=typeof object&&\\\"function\\\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\\\"object\\\"!=typeof descriptor&&\\\"function\\\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\\\"value\\\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\\\"get\\\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\\\"set\\\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\\\"function\\\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\\\"\\\";owns(object,name);)name+=\\\"?\\\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\\\"toString\\\",\\\"toLocaleString\\\",\\\"valueOf\\\",\\\"hasOwnProperty\\\",\\\"isPrototypeOf\\\",\\\"propertyIsEnumerable\\\",\\\"constructor\\\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\\\"object\\\"!=typeof object&&\\\"function\\\"!=typeof object||null===object)throw new TypeError(\\\"Object.keys called on a non-object\\\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\\\"\\t\\\\n\\u000b\\\\f\\\\r   ᠎              \\\\u2028\\\\u2029\\\";if(!String.prototype.trim||ws.trim()){ws=\\\"[\\\"+ws+\\\"]\\\";var trimBeginRegexp=RegExp(\\\"^\\\"+ws+ws+\\\"*\\\"),trimEndRegexp=RegExp(ws+ws+\\\"*$\\\");String.prototype.trim=function(){return(this+\\\"\\\").replace(trimBeginRegexp,\\\"\\\").replace(trimEndRegexp,\\\"\\\")}}var toObject=function(o){if(null==o)throw new TypeError(\\\"can't convert \\\"+o+\\\" to object\\\");return Object(o)}});\";","ace.define(\"ace/mode/css_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\nvar supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\nvar supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\nvar supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\nvar supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n\nvar numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\nvar pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\nvar pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\nvar CssHighlightRules = function() {\n\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n\n this.$rules = {\n \"start\" : [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n\n \"media\": [{\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\"\n + \"|page|font|keyframes|viewport|counter-style|font-feature-values\"\n + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n\n \"comments\" : [{\n token: \"comment\", // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token : \"comment\",\n regex : \"\\\\*\\\\/\",\n next : \"pop\"\n }, {\n defaultToken : \"comment\"\n }]\n }],\n\n \"ruleset\" : [{\n regex : \"-(webkit|ms|moz|o)-\",\n token : \"text\"\n }, {\n token : \"paren.rparen\",\n regex : \"\\\\}\",\n next : \"start\"\n }, {\n include : [\"strings\", \"url\", \"comments\"]\n }, {\n token : [\"constant.numeric\", \"keyword\"],\n regex : \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token : \"constant.numeric\",\n regex : numRe\n }, {\n token : \"constant.numeric\", // hex6 color\n regex : \"#[a-f0-9]{6}\"\n }, {\n token : \"constant.numeric\", // hex3 color\n regex : \"#[a-f0-9]{3}\"\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex : pseudoElements\n }, {\n token : [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex : pseudoClasses\n }, {\n include: \"url\"\n }, {\n token : keywordMapper,\n regex : \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n\n url: [{\n token : \"support.function\",\n regex : \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token : \"support.function\",\n regex : \"\\\\)\",\n next : \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n\n strings: [{\n token : \"string.start\",\n regex : \"'\",\n push : [{\n token : \"string.end\",\n regex : \"'|$\",\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token : \"string.start\",\n regex : '\"',\n push : [{\n token : \"string.end\",\n regex : '\"|$',\n next: \"pop\"\n }, {\n include : \"escapes\"\n }, {\n token : \"constant.language.escape\",\n regex : /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token : \"constant.language.escape\",\n regex : /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n\n };\n\n this.normalizeRules();\n};\n\noop.inherits(CssHighlightRules, TextHighlightRules);\n\nexports.CssHighlightRules = CssHighlightRules;\n\n});\n\nace.define(\"ace/mode/matching_brace_outdent\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\n\nvar MatchingBraceOutdent = function() {};\n\n(function() {\n\n this.checkOutdent = function(line, input) {\n if (! /^\\s+$/.test(line))\n return false;\n\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function(doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n\n if (!match) return 0;\n\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({row: row, column: column});\n\n if (!openBracePos || openBracePos.row == row) return 0;\n\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column-1), indent);\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n}).call(MatchingBraceOutdent.prototype);\n\nexports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\n\nace.define(\"ace/mode/css_completions\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar propertyMap = {\n \"background\": {\"#$0\": 1},\n \"background-color\": {\"#$0\": 1, \"transparent\": 1, \"fixed\": 1},\n \"background-image\": {\"url('/$0')\": 1},\n \"background-repeat\": {\"repeat\": 1, \"repeat-x\": 1, \"repeat-y\": 1, \"no-repeat\": 1, \"inherit\": 1},\n \"background-position\": {\"bottom\":2, \"center\":2, \"left\":2, \"right\":2, \"top\":2, \"inherit\":2},\n \"background-attachment\": {\"scroll\": 1, \"fixed\": 1},\n \"background-size\": {\"cover\": 1, \"contain\": 1},\n \"background-clip\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"background-origin\": {\"border-box\": 1, \"padding-box\": 1, \"content-box\": 1},\n \"border\": {\"solid $0\": 1, \"dashed $0\": 1, \"dotted $0\": 1, \"#$0\": 1},\n \"border-color\": {\"#$0\": 1},\n \"border-style\": {\"solid\":2, \"dashed\":2, \"dotted\":2, \"double\":2, \"groove\":2, \"hidden\":2, \"inherit\":2, \"inset\":2, \"none\":2, \"outset\":2, \"ridged\":2},\n \"border-collapse\": {\"collapse\": 1, \"separate\": 1},\n \"bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"clear\": {\"left\": 1, \"right\": 1, \"both\": 1, \"none\": 1},\n \"color\": {\"#$0\": 1, \"rgb(#$00,0,0)\": 1},\n \"cursor\": {\"default\": 1, \"pointer\": 1, \"move\": 1, \"text\": 1, \"wait\": 1, \"help\": 1, \"progress\": 1, \"n-resize\": 1, \"ne-resize\": 1, \"e-resize\": 1, \"se-resize\": 1, \"s-resize\": 1, \"sw-resize\": 1, \"w-resize\": 1, \"nw-resize\": 1},\n \"display\": {\"none\": 1, \"block\": 1, \"inline\": 1, \"inline-block\": 1, \"table-cell\": 1},\n \"empty-cells\": {\"show\": 1, \"hide\": 1},\n \"float\": {\"left\": 1, \"right\": 1, \"none\": 1},\n \"font-family\": {\"Arial\":2,\"Comic Sans MS\":2,\"Consolas\":2,\"Courier New\":2,\"Courier\":2,\"Georgia\":2,\"Monospace\":2,\"Sans-Serif\":2, \"Segoe UI\":2,\"Tahoma\":2,\"Times New Roman\":2,\"Trebuchet MS\":2,\"Verdana\": 1},\n \"font-size\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"font-weight\": {\"bold\": 1, \"normal\": 1},\n \"font-style\": {\"italic\": 1, \"normal\": 1},\n \"font-variant\": {\"normal\": 1, \"small-caps\": 1},\n \"height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"letter-spacing\": {\"normal\": 1},\n \"line-height\": {\"normal\": 1},\n \"list-style-type\": {\"none\": 1, \"disc\": 1, \"circle\": 1, \"square\": 1, \"decimal\": 1, \"decimal-leading-zero\": 1, \"lower-roman\": 1, \"upper-roman\": 1, \"lower-greek\": 1, \"lower-latin\": 1, \"upper-latin\": 1, \"georgian\": 1, \"lower-alpha\": 1, \"upper-alpha\": 1},\n \"margin\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"margin-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"max-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-height\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"min-width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"overflow\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-x\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"overflow-y\": {\"hidden\": 1, \"visible\": 1, \"auto\": 1, \"scroll\": 1},\n \"padding\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-bottom\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"padding-left\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"page-break-after\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"page-break-before\": {\"auto\": 1, \"always\": 1, \"avoid\": 1, \"left\": 1, \"right\": 1},\n \"position\": {\"absolute\": 1, \"relative\": 1, \"fixed\": 1, \"static\": 1},\n \"right\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"table-layout\": {\"fixed\": 1, \"auto\": 1},\n \"text-decoration\": {\"none\": 1, \"underline\": 1, \"line-through\": 1, \"blink\": 1},\n \"text-align\": {\"left\": 1, \"right\": 1, \"center\": 1, \"justify\": 1},\n \"text-transform\": {\"capitalize\": 1, \"uppercase\": 1, \"lowercase\": 1, \"none\": 1},\n \"top\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"vertical-align\": {\"top\": 1, \"bottom\": 1},\n \"visibility\": {\"hidden\": 1, \"visible\": 1},\n \"white-space\": {\"nowrap\": 1, \"normal\": 1, \"pre\": 1, \"pre-line\": 1, \"pre-wrap\": 1},\n \"width\": {\"px\": 1, \"em\": 1, \"%\": 1},\n \"word-spacing\": {\"normal\": 1},\n \"filter\": {\"alpha(opacity=$0100)\": 1},\n\n \"text-shadow\": {\"$02px 2px 2px #777\": 1},\n \"text-overflow\": {\"ellipsis-word\": 1, \"clip\": 1, \"ellipsis\": 1},\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-moz-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1},\n \"-webkit-transform\": {\"rotate($00deg)\": 1, \"skew($00deg)\": 1 }\n};\n\nvar CssCompletions = function() {\n\n};\n\n(function() {\n\n this.completionsDefined = false;\n\n this.defineCompletions = function() {\n if (document) {\n var style = document.createElement('c').style;\n\n for (var i in style) {\n if (typeof style[i] !== 'string')\n continue;\n\n var name = i.replace(/[A-Z]/g, function(x) {\n return '-' + x.toLowerCase();\n });\n\n if (!propertyMap.hasOwnProperty(name))\n propertyMap[name] = 1;\n }\n }\n\n this.completionsDefined = true;\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n\n var token = session.getTokenAt(pos.row, pos.column);\n\n if (!token)\n return [];\n if (state==='ruleset'){\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n } else {\n return this.getPropertyCompletions(state, session, pos, prefix);\n }\n }\n\n return [];\n };\n\n this.getPropertyCompletions = function(state, session, pos, prefix) {\n var properties = Object.keys(propertyMap);\n return properties.map(function(property){\n return {\n caption: property,\n snippet: property + ': $0;',\n meta: \"property\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getPropertyValueCompletions = function(state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n\n if (!property)\n return [];\n var values = [];\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n return values.map(function(value){\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n}).call(CssCompletions.prototype);\n\nexports.CssCompletions = CssCompletions;\n});\n\nace.define(\"ace/mode/behaviour/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/mode/behaviour/cstyle\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar CstyleBehaviour = acequire(\"./cstyle\").CstyleBehaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\nvar CssBehaviour = function () {\n\n this.inherit(CstyleBehaviour);\n\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n if (!line.substring(cursor.column).match(/^\\s*;/)) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar === ';') {\n range.end.column ++;\n return range;\n }\n }\n }\n });\n\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';') {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n\n};\noop.inherits(CssBehaviour, CstyleBehaviour);\n\nexports.CssBehaviour = CssBehaviour;\n});\n\nace.define(\"ace/mode/folding/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/range\",\"ace/mode/folding/fold_mode\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Range = acequire(\"../../range\").Range;\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\nvar FoldMode = exports.FoldMode = function(commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(\n this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start)\n );\n this.foldingStopMarker = new RegExp(\n this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end)\n );\n }\n};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n \n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe= /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n \n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))\n return \"\";\n }\n \n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n \n if (!fw && this.startRegionRe.test(line))\n return \"start\"; // lineCommentRegionStart\n \n return fw;\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n \n if (this.startRegionRe.test(line))\n return this.getCommentRegionBlock(session, line, row);\n \n var match = line.match(this.foldingStartMarker);\n if (match) {\n var i = match.index;\n\n if (match[1])\n return this.openingBracketBlock(session, match[1], row, i);\n \n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n \n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\")\n range = null;\n }\n \n return range;\n }\n\n if (foldStyle === \"markbegin\")\n return;\n\n var match = line.match(this.foldingStopMarker);\n if (match) {\n var i = match.index + match[0].length;\n\n if (match[1])\n return this.closingBracketBlock(session, match[1], row, i);\n\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n \n this.getSectionRange = function(session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1)\n continue;\n if (startIndent > indent)\n break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n \n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n endRow = row;\n }\n \n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n this.getCommentRegionBlock = function(session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n \n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;\n else depth++;\n\n if (!depth) break;\n }\n\n var endRow = row;\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/css\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/css_highlight_rules\",\"ace/mode/matching_brace_outdent\",\"ace/worker/worker_client\",\"ace/mode/css_completions\",\"ace/mode/behaviour/css\",\"ace/mode/folding/cstyle\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\nvar MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\nvar WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\nvar CssCompletions = acequire(\"./css_completions\").CssCompletions;\nvar CssBehaviour = acequire(\"./behaviour/css\").CssBehaviour;\nvar CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n\n this.foldingRules = \"cStyle\";\n this.blockComment = {start: \"/*\", end: \"*/\"};\n\n this.getNextLineIndent = function(state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n if (tokens.length && tokens[tokens.length-1].type == \"comment\") {\n return indent;\n }\n\n var match = line.match(/^.*\\{\\s*$/);\n if (match) {\n indent += tab;\n }\n\n return indent;\n };\n\n this.checkOutdent = function(state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function(state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function(session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/css\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n\n worker.on(\"annotate\", function(e) {\n session.setAnnotations(e.data);\n });\n\n worker.on(\"terminate\", function() {\n session.clearAnnotations();\n });\n\n return worker;\n };\n\n this.$id = \"ace/mode/css\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n\n});\n","module.exports.id = 'ace/mode/css_worker';\nmodule.exports.src = \"\\\"no use strict\\\";!function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\\\"\\\";testPath;){var alias=paths[testPath];if(\\\"string\\\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\\\/*$/,\\\"/\\\")+(tail||alias.main||alias.name);if(alias===!1)return\\\"\\\";var i=testPath.lastIndexOf(\\\"/\\\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\\\"log\\\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\\\"error\\\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\\\"!\\\")){var chunks=moduleName.split(\\\"!\\\");return window.normalizeModule(parentId,chunks[0])+\\\"!\\\"+window.normalizeModule(parentId,chunks[1])}if(\\\".\\\"==moduleName.charAt(0)){var base=parentId.split(\\\"/\\\").slice(0,-1).join(\\\"/\\\");for(moduleName=(base?base+\\\"/\\\":\\\"\\\")+moduleName;-1!==moduleName.indexOf(\\\".\\\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\\\.\\\\//,\\\"\\\").replace(/\\\\/\\\\.\\\\//,\\\"/\\\").replace(/[^\\\\/]+\\\\/\\\\.\\\\.\\\\//,\\\"\\\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\\\"worker.js acequire() accepts only (parentId, id) as arguments\\\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\\\"unable to load \\\"+id);var path=resolveModuleId(id,window.acequire.tlns);return\\\".js\\\"!=path.slice(-3)&&(path+=\\\".js\\\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\\\"string\\\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\\\"function\\\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\\\"require\\\",\\\"exports\\\",\\\"module\\\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\\\"require\\\":return req;case\\\"exports\\\":return module.exports;case\\\"module\\\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\\\"ace/lib/event_emitter\\\").EventEmitter,oop=window.acequire(\\\"ace/lib/oop\\\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\\\"call\\\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\\\"event\\\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\\\"Unknown command:\\\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\\\"ace/lib/es5-shim\\\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}}(this),ace.define(\\\"ace/lib/oop\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\\\"ace/lib/lang\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\\\"\\\").reverse().join(\\\"\\\")},exports.stringRepeat=function(string,count){for(var result=\\\"\\\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\\\s\\\\s*/,trimEndRegexp=/\\\\s\\\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\\\"\\\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\\\"\\\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\\\"object\\\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\\\"object\\\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if(\\\"[object Object]\\\"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\\\]\\\\/\\\\\\\\])/g,\\\"\\\\\\\\$1\\\")},exports.escapeHTML=function(str){return str.replace(/&/g,\\\"&\\\").replace(/\\\"/g,\\\""\\\").replace(/'/g,\\\"'\\\").replace(/ [\\\"+this.end.row+\\\"/\\\"+this.end.column+\\\"]\\\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\\\"object\\\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\\\"object\\\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\\\"ace/apply_delta\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\\\"\\\";switch(delta.action){case\\\"insert\\\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\\\"remove\\\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\\\"ace/lib/event_emitter\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\\\"object\\\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\\\"unshift\\\":\\\"push\\\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\\\"ace/anchor\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/lib/event_emitter\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"./lib/oop\\\"),EventEmitter=acequire(\\\"./lib/event_emitter\\\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\\\"change\\\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\\\"change\\\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\\\"change\\\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\\\"ace/document\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/apply_delta\\\",\\\"ace/lib/event_emitter\\\",\\\"ace/range\\\",\\\"ace/anchor\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"./lib/oop\\\"),applyDelta=acequire(\\\"./apply_delta\\\").applyDelta,EventEmitter=acequire(\\\"./lib/event_emitter\\\").EventEmitter,Range=acequire(\\\"./range\\\").Range,Anchor=acequire(\\\"./anchor\\\").Anchor,Document=function(textOrLines){this.$lines=[\\\"\\\"],0===textOrLines.length?this.$lines=[\\\"\\\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\\\"aaa\\\".split(/a/).length?function(text){return text.replace(/\\\\r\\\\n|\\\\r/g,\\\"\\\\n\\\").split(\\\"\\\\n\\\")}:function(text){return text.split(/\\\\r\\\\n|\\\\r|\\\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\\\r\\\\n|\\\\r|\\\\n)/m);this.$autoNewLine=match?match[1]:\\\"\\\\n\\\",this._signal(\\\"changeNewLineMode\\\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\\\"windows\\\":return\\\"\\\\r\\\\n\\\";case\\\"unix\\\":return\\\"\\\\n\\\";default:return this.$autoNewLine||\\\"\\\\n\\\"}},this.$autoNewLine=\\\"\\\",this.$newLineMode=\\\"auto\\\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\\\"changeNewLineMode\\\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\\\"\\\\r\\\\n\\\"==text||\\\"\\\\r\\\"==text||\\\"\\\\n\\\"==text},this.getLine=function(row){return this.$lines[row]||\\\"\\\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\\\"\\\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\\\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\\\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\\\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\\\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\\\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\\\"),this.insertMergedLines(position,[\\\"\\\",\\\"\\\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\\\"insert\\\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\\\"\\\"]),column=0):(lines=[\\\"\\\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\\\"insert\\\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\\\"remove\\\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\\\"remove\\\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\\\"remove\\\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\\\"remove\\\",lines:[\\\"\\\",\\\"\\\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\\\"insert\\\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\\\"change\\\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\\\"\\\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\\\"insert\\\"==delta.action?\\\"remove\\\":\\\"insert\\\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\\\"ace/worker/mirror\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/range\\\",\\\"ace/document\\\",\\\"ace/lib/lang\\\"],function(acequire,exports){\\\"use strict\\\";acequire(\\\"../range\\\").Range;var Document=acequire(\\\"../document\\\").Document,lang=acequire(\\\"../lib/lang\\\"),Mirror=exports.Mirror=function(sender){this.sender=sender;var doc=this.doc=new Document(\\\"\\\"),deferredUpdate=this.deferredUpdate=lang.delayedCall(this.onUpdate.bind(this)),_self=this;sender.on(\\\"change\\\",function(e){var data=e.data;if(data[0].start)doc.applyDeltas(data);else for(var i=0;data.length>i;i+=2){if(Array.isArray(data[i+1]))var d={action:\\\"insert\\\",start:data[i],lines:data[i+1]};else var d={action:\\\"remove\\\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\\\"ace/mode/css/csslint\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports,module){function objectToString(o){return Object.prototype.toString.call(o)}function clone(parent,circular,depth,prototype){function _clone(parent,depth){if(null===parent)return null;if(0==depth)return parent;var child;if(\\\"object\\\"!=typeof parent)return parent;if(util.isArray(parent))child=[];else if(util.isRegExp(parent))child=RegExp(parent.source,util.getRegExpFlags(parent)),parent.lastIndex&&(child.lastIndex=parent.lastIndex);else if(util.isDate(parent))child=new Date(parent.getTime());else{if(useBuffer&&Buffer.isBuffer(parent))return child=new Buffer(parent.length),parent.copy(child),child;child=prototype===void 0?Object.create(Object.getPrototypeOf(parent)):Object.create(prototype)}if(circular){var index=allParents.indexOf(parent);if(-1!=index)return allChildren[index];allParents.push(parent),allChildren.push(child)}for(var i in parent)child[i]=_clone(parent[i],depth-1);return child}var allParents=[],allChildren=[],useBuffer=\\\"undefined\\\"!=typeof Buffer;return circular===void 0&&(circular=!0),depth===void 0&&(depth=1/0),_clone(parent,depth)}function Reporter(lines,ruleset){this.messages=[],this.stats=[],this.lines=lines,this.ruleset=ruleset}var parserlib={};(function(){function EventTarget(){this._listeners={}}function StringReader(text){this._input=text.replace(/\\\\n\\\\r?/g,\\\"\\\\n\\\"),this._line=1,this._col=1,this._cursor=0}function SyntaxError(message,line,col){this.col=col,this.line=line,this.message=message}function SyntaxUnit(text,line,col,type){this.col=col,this.line=line,this.text=text,this.type=type}function TokenStreamBase(input,tokenData){this._reader=input?new StringReader(\\\"\\\"+input):null,this._token=null,this._tokenData=tokenData,this._lt=[],this._ltIndex=0,this._ltIndexCache=[]}EventTarget.prototype={constructor:EventTarget,addListener:function(type,listener){this._listeners[type]||(this._listeners[type]=[]),this._listeners[type].push(listener)},fire:function(event){if(\\\"string\\\"==typeof event&&(event={type:event}),event.target!==void 0&&(event.target=this),event.type===void 0)throw Error(\\\"Event object missing 'type' property.\\\");if(this._listeners[event.type])for(var listeners=this._listeners[event.type].concat(),i=0,len=listeners.length;len>i;i++)listeners[i].call(this,event)},removeListener:function(type,listener){if(this._listeners[type])for(var listeners=this._listeners[type],i=0,len=listeners.length;len>i;i++)if(listeners[i]===listener){listeners.splice(i,1);break}}},StringReader.prototype={constructor:StringReader,getCol:function(){return this._col},getLine:function(){return this._line},eof:function(){return this._cursor==this._input.length},peek:function(count){var c=null;return count=count===void 0?1:count,this._cursori;i++)nameMap.push(tokenData[i].name),tokenData[tokenData[i].name]=i,tokenData[i].text&&(typeMap[tokenData[i].text]=i);return tokenData.name=function(tt){return nameMap[tt]},tokenData.type=function(c){return typeMap[c]},tokenData},TokenStreamBase.prototype={constructor:TokenStreamBase,match:function(tokenTypes,channel){tokenTypes instanceof Array||(tokenTypes=[tokenTypes]);\\nfor(var tt=this.get(channel),i=0,len=tokenTypes.length;len>i;)if(tt==tokenTypes[i++])return!0;return this.unget(),!1},mustMatch:function(tokenTypes){var token;if(tokenTypes instanceof Array||(tokenTypes=[tokenTypes]),!this.match.apply(this,arguments))throw token=this.LT(1),new SyntaxError(\\\"Expected \\\"+this._tokenData[tokenTypes[0]].name+\\\" at line \\\"+token.startLine+\\\", col \\\"+token.startCol+\\\".\\\",token.startLine,token.startCol)},advance:function(tokenTypes,channel){for(;0!==this.LA(0)&&!this.match(tokenTypes,channel);)this.get();return this.LA(0)},get:function(channel){var token,info,tokenInfo=this._tokenData,i=(this._reader,0);if(tokenInfo.length,this._lt.length&&this._ltIndex>=0&&this._ltIndex-1&&!tokenInfo[token.type].hide&&(token.channel=tokenInfo[token.type].channel,this._token=token,this._lt.push(token),this._ltIndexCache.push(this._lt.length-this._ltIndex+i),this._lt.length>5&&this._lt.shift(),this._ltIndexCache.length>5&&this._ltIndexCache.shift(),this._ltIndex=this._lt.length),info=tokenInfo[token.type],info&&(info.hide||void 0!==info.channel&&channel!==info.channel)?this.get(channel):token.type},LA:function(index){var tt,total=index;if(index>0){if(index>5)throw Error(\\\"Too much lookahead.\\\");for(;total;)tt=this.get(),total--;for(;index>total;)this.unget(),total++}else if(0>index){if(!this._lt[this._ltIndex+index])throw Error(\\\"Too much lookbehind.\\\");tt=this._lt[this._ltIndex+index].type}else tt=this._token.type;return tt},LT:function(index){return this.LA(index),this._lt[this._ltIndex+index-1]},peek:function(){return this.LA(1)},token:function(){return this._token},tokenName:function(tokenType){return 0>tokenType||tokenType>this._tokenData.length?\\\"UNKNOWN_TOKEN\\\":this._tokenData[tokenType].name},tokenType:function(tokenName){return this._tokenData[tokenName]||-1},unget:function(){if(!this._ltIndexCache.length)throw Error(\\\"Too much lookahead.\\\");this._ltIndex-=this._ltIndexCache.pop(),this._token=this._lt[this._ltIndex-1]}},parserlib.util={StringReader:StringReader,SyntaxError:SyntaxError,SyntaxUnit:SyntaxUnit,EventTarget:EventTarget,TokenStreamBase:TokenStreamBase}})(),function(){function Combinator(text,line,col){SyntaxUnit.call(this,text,line,col,Parser.COMBINATOR_TYPE),this.type=\\\"unknown\\\",/^\\\\s+$/.test(text)?this.type=\\\"descendant\\\":\\\">\\\"==text?this.type=\\\"child\\\":\\\"+\\\"==text?this.type=\\\"adjacent-sibling\\\":\\\"~\\\"==text&&(this.type=\\\"sibling\\\")}function MediaFeature(name,value){SyntaxUnit.call(this,\\\"(\\\"+name+(null!==value?\\\":\\\"+value:\\\"\\\")+\\\")\\\",name.startLine,name.startCol,Parser.MEDIA_FEATURE_TYPE),this.name=name,this.value=value}function MediaQuery(modifier,mediaType,features,line,col){SyntaxUnit.call(this,(modifier?modifier+\\\" \\\":\\\"\\\")+(mediaType?mediaType:\\\"\\\")+(mediaType&&features.length>0?\\\" and \\\":\\\"\\\")+features.join(\\\" and \\\"),line,col,Parser.MEDIA_QUERY_TYPE),this.modifier=modifier,this.mediaType=mediaType,this.features=features}function Parser(options){EventTarget.call(this),this.options=options||{},this._tokenStream=null}function PropertyName(text,hack,line,col){SyntaxUnit.call(this,text,line,col,Parser.PROPERTY_NAME_TYPE),this.hack=hack}function PropertyValue(parts,line,col){SyntaxUnit.call(this,parts.join(\\\" \\\"),line,col,Parser.PROPERTY_VALUE_TYPE),this.parts=parts}function PropertyValueIterator(value){this._i=0,this._parts=value.parts,this._marks=[],this.value=value}function PropertyValuePart(text,line,col){SyntaxUnit.call(this,text,line,col,Parser.PROPERTY_VALUE_PART_TYPE),this.type=\\\"unknown\\\";var temp;if(/^([+\\\\-]?[\\\\d\\\\.]+)([a-z]+)$/i.test(text))switch(this.type=\\\"dimension\\\",this.value=+RegExp.$1,this.units=RegExp.$2,this.units.toLowerCase()){case\\\"em\\\":case\\\"rem\\\":case\\\"ex\\\":case\\\"px\\\":case\\\"cm\\\":case\\\"mm\\\":case\\\"in\\\":case\\\"pt\\\":case\\\"pc\\\":case\\\"ch\\\":case\\\"vh\\\":case\\\"vw\\\":case\\\"vmax\\\":case\\\"vmin\\\":this.type=\\\"length\\\";break;case\\\"deg\\\":case\\\"rad\\\":case\\\"grad\\\":this.type=\\\"angle\\\";break;case\\\"ms\\\":case\\\"s\\\":this.type=\\\"time\\\";break;case\\\"hz\\\":case\\\"khz\\\":this.type=\\\"frequency\\\";break;case\\\"dpi\\\":case\\\"dpcm\\\":this.type=\\\"resolution\\\"}else/^([+\\\\-]?[\\\\d\\\\.]+)%$/i.test(text)?(this.type=\\\"percentage\\\",this.value=+RegExp.$1):/^([+\\\\-]?\\\\d+)$/i.test(text)?(this.type=\\\"integer\\\",this.value=+RegExp.$1):/^([+\\\\-]?[\\\\d\\\\.]+)$/i.test(text)?(this.type=\\\"number\\\",this.value=+RegExp.$1):/^#([a-f0-9]{3,6})/i.test(text)?(this.type=\\\"color\\\",temp=RegExp.$1,3==temp.length?(this.red=parseInt(temp.charAt(0)+temp.charAt(0),16),this.green=parseInt(temp.charAt(1)+temp.charAt(1),16),this.blue=parseInt(temp.charAt(2)+temp.charAt(2),16)):(this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16))):/^rgb\\\\(\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*\\\\)/i.test(text)?(this.type=\\\"color\\\",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3):/^rgb\\\\(\\\\s*(\\\\d+)%\\\\s*,\\\\s*(\\\\d+)%\\\\s*,\\\\s*(\\\\d+)%\\\\s*\\\\)/i.test(text)?(this.type=\\\"color\\\",this.red=255*+RegExp.$1/100,this.green=255*+RegExp.$2/100,this.blue=255*+RegExp.$3/100):/^rgba\\\\(\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*([\\\\d\\\\.]+)\\\\s*\\\\)/i.test(text)?(this.type=\\\"color\\\",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3,this.alpha=+RegExp.$4):/^rgba\\\\(\\\\s*(\\\\d+)%\\\\s*,\\\\s*(\\\\d+)%\\\\s*,\\\\s*(\\\\d+)%\\\\s*,\\\\s*([\\\\d\\\\.]+)\\\\s*\\\\)/i.test(text)?(this.type=\\\"color\\\",this.red=255*+RegExp.$1/100,this.green=255*+RegExp.$2/100,this.blue=255*+RegExp.$3/100,this.alpha=+RegExp.$4):/^hsl\\\\(\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)%\\\\s*,\\\\s*(\\\\d+)%\\\\s*\\\\)/i.test(text)?(this.type=\\\"color\\\",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100):/^hsla\\\\(\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)%\\\\s*,\\\\s*(\\\\d+)%\\\\s*,\\\\s*([\\\\d\\\\.]+)\\\\s*\\\\)/i.test(text)?(this.type=\\\"color\\\",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100,this.alpha=+RegExp.$4):/^url\\\\([\\\"']?([^\\\\)\\\"']+)[\\\"']?\\\\)/i.test(text)?(this.type=\\\"uri\\\",this.uri=RegExp.$1):/^([^\\\\(]+)\\\\(/i.test(text)?(this.type=\\\"function\\\",this.name=RegExp.$1,this.value=text):/^[\\\"'][^\\\"']*[\\\"']/.test(text)?(this.type=\\\"string\\\",this.value=eval(text)):Colors[text.toLowerCase()]?(this.type=\\\"color\\\",temp=Colors[text.toLowerCase()].substring(1),this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16)):/^[\\\\,\\\\/]$/.test(text)?(this.type=\\\"operator\\\",this.value=text):/^[a-z\\\\-_\\\\u0080-\\\\uFFFF][a-z0-9\\\\-_\\\\u0080-\\\\uFFFF]*$/i.test(text)&&(this.type=\\\"identifier\\\",this.value=text)}function Selector(parts,line,col){SyntaxUnit.call(this,parts.join(\\\" \\\"),line,col,Parser.SELECTOR_TYPE),this.parts=parts,this.specificity=Specificity.calculate(this)}function SelectorPart(elementName,modifiers,text,line,col){SyntaxUnit.call(this,text,line,col,Parser.SELECTOR_PART_TYPE),this.elementName=elementName,this.modifiers=modifiers}function SelectorSubPart(text,type,line,col){SyntaxUnit.call(this,text,line,col,Parser.SELECTOR_SUB_PART_TYPE),this.type=type,this.args=[]}function Specificity(a,b,c,d){this.a=a,this.b=b,this.c=c,this.d=d}function isHexDigit(c){return null!==c&&h.test(c)}function isDigit(c){return null!==c&&/\\\\d/.test(c)}function isWhitespace(c){return null!==c&&/\\\\s/.test(c)}function isNewLine(c){return null!==c&&nl.test(c)}function isNameStart(c){return null!==c&&/[a-z_\\\\u0080-\\\\uFFFF\\\\\\\\]/i.test(c)}function isNameChar(c){return null!==c&&(isNameStart(c)||/[0-9\\\\-\\\\\\\\]/.test(c))}function isIdentStart(c){return null!==c&&(isNameStart(c)||/\\\\-\\\\\\\\/.test(c))}function mix(receiver,supplier){for(var prop in supplier)supplier.hasOwnProperty(prop)&&(receiver[prop]=supplier[prop]);return receiver}function TokenStream(input){TokenStreamBase.call(this,input,Tokens)}function ValidationError(message,line,col){this.col=col,this.line=line,this.message=message}var EventTarget=parserlib.util.EventTarget,TokenStreamBase=parserlib.util.TokenStreamBase,StringReader=parserlib.util.StringReader,SyntaxError=parserlib.util.SyntaxError,SyntaxUnit=parserlib.util.SyntaxUnit,Colors={aliceblue:\\\"#f0f8ff\\\",antiquewhite:\\\"#faebd7\\\",aqua:\\\"#00ffff\\\",aquamarine:\\\"#7fffd4\\\",azure:\\\"#f0ffff\\\",beige:\\\"#f5f5dc\\\",bisque:\\\"#ffe4c4\\\",black:\\\"#000000\\\",blanchedalmond:\\\"#ffebcd\\\",blue:\\\"#0000ff\\\",blueviolet:\\\"#8a2be2\\\",brown:\\\"#a52a2a\\\",burlywood:\\\"#deb887\\\",cadetblue:\\\"#5f9ea0\\\",chartreuse:\\\"#7fff00\\\",chocolate:\\\"#d2691e\\\",coral:\\\"#ff7f50\\\",cornflowerblue:\\\"#6495ed\\\",cornsilk:\\\"#fff8dc\\\",crimson:\\\"#dc143c\\\",cyan:\\\"#00ffff\\\",darkblue:\\\"#00008b\\\",darkcyan:\\\"#008b8b\\\",darkgoldenrod:\\\"#b8860b\\\",darkgray:\\\"#a9a9a9\\\",darkgrey:\\\"#a9a9a9\\\",darkgreen:\\\"#006400\\\",darkkhaki:\\\"#bdb76b\\\",darkmagenta:\\\"#8b008b\\\",darkolivegreen:\\\"#556b2f\\\",darkorange:\\\"#ff8c00\\\",darkorchid:\\\"#9932cc\\\",darkred:\\\"#8b0000\\\",darksalmon:\\\"#e9967a\\\",darkseagreen:\\\"#8fbc8f\\\",darkslateblue:\\\"#483d8b\\\",darkslategray:\\\"#2f4f4f\\\",darkslategrey:\\\"#2f4f4f\\\",darkturquoise:\\\"#00ced1\\\",darkviolet:\\\"#9400d3\\\",deeppink:\\\"#ff1493\\\",deepskyblue:\\\"#00bfff\\\",dimgray:\\\"#696969\\\",dimgrey:\\\"#696969\\\",dodgerblue:\\\"#1e90ff\\\",firebrick:\\\"#b22222\\\",floralwhite:\\\"#fffaf0\\\",forestgreen:\\\"#228b22\\\",fuchsia:\\\"#ff00ff\\\",gainsboro:\\\"#dcdcdc\\\",ghostwhite:\\\"#f8f8ff\\\",gold:\\\"#ffd700\\\",goldenrod:\\\"#daa520\\\",gray:\\\"#808080\\\",grey:\\\"#808080\\\",green:\\\"#008000\\\",greenyellow:\\\"#adff2f\\\",honeydew:\\\"#f0fff0\\\",hotpink:\\\"#ff69b4\\\",indianred:\\\"#cd5c5c\\\",indigo:\\\"#4b0082\\\",ivory:\\\"#fffff0\\\",khaki:\\\"#f0e68c\\\",lavender:\\\"#e6e6fa\\\",lavenderblush:\\\"#fff0f5\\\",lawngreen:\\\"#7cfc00\\\",lemonchiffon:\\\"#fffacd\\\",lightblue:\\\"#add8e6\\\",lightcoral:\\\"#f08080\\\",lightcyan:\\\"#e0ffff\\\",lightgoldenrodyellow:\\\"#fafad2\\\",lightgray:\\\"#d3d3d3\\\",lightgrey:\\\"#d3d3d3\\\",lightgreen:\\\"#90ee90\\\",lightpink:\\\"#ffb6c1\\\",lightsalmon:\\\"#ffa07a\\\",lightseagreen:\\\"#20b2aa\\\",lightskyblue:\\\"#87cefa\\\",lightslategray:\\\"#778899\\\",lightslategrey:\\\"#778899\\\",lightsteelblue:\\\"#b0c4de\\\",lightyellow:\\\"#ffffe0\\\",lime:\\\"#00ff00\\\",limegreen:\\\"#32cd32\\\",linen:\\\"#faf0e6\\\",magenta:\\\"#ff00ff\\\",maroon:\\\"#800000\\\",mediumaquamarine:\\\"#66cdaa\\\",mediumblue:\\\"#0000cd\\\",mediumorchid:\\\"#ba55d3\\\",mediumpurple:\\\"#9370d8\\\",mediumseagreen:\\\"#3cb371\\\",mediumslateblue:\\\"#7b68ee\\\",mediumspringgreen:\\\"#00fa9a\\\",mediumturquoise:\\\"#48d1cc\\\",mediumvioletred:\\\"#c71585\\\",midnightblue:\\\"#191970\\\",mintcream:\\\"#f5fffa\\\",mistyrose:\\\"#ffe4e1\\\",moccasin:\\\"#ffe4b5\\\",navajowhite:\\\"#ffdead\\\",navy:\\\"#000080\\\",oldlace:\\\"#fdf5e6\\\",olive:\\\"#808000\\\",olivedrab:\\\"#6b8e23\\\",orange:\\\"#ffa500\\\",orangered:\\\"#ff4500\\\",orchid:\\\"#da70d6\\\",palegoldenrod:\\\"#eee8aa\\\",palegreen:\\\"#98fb98\\\",paleturquoise:\\\"#afeeee\\\",palevioletred:\\\"#d87093\\\",papayawhip:\\\"#ffefd5\\\",peachpuff:\\\"#ffdab9\\\",peru:\\\"#cd853f\\\",pink:\\\"#ffc0cb\\\",plum:\\\"#dda0dd\\\",powderblue:\\\"#b0e0e6\\\",purple:\\\"#800080\\\",red:\\\"#ff0000\\\",rosybrown:\\\"#bc8f8f\\\",royalblue:\\\"#4169e1\\\",saddlebrown:\\\"#8b4513\\\",salmon:\\\"#fa8072\\\",sandybrown:\\\"#f4a460\\\",seagreen:\\\"#2e8b57\\\",seashell:\\\"#fff5ee\\\",sienna:\\\"#a0522d\\\",silver:\\\"#c0c0c0\\\",skyblue:\\\"#87ceeb\\\",slateblue:\\\"#6a5acd\\\",slategray:\\\"#708090\\\",slategrey:\\\"#708090\\\",snow:\\\"#fffafa\\\",springgreen:\\\"#00ff7f\\\",steelblue:\\\"#4682b4\\\",tan:\\\"#d2b48c\\\",teal:\\\"#008080\\\",thistle:\\\"#d8bfd8\\\",tomato:\\\"#ff6347\\\",turquoise:\\\"#40e0d0\\\",violet:\\\"#ee82ee\\\",wheat:\\\"#f5deb3\\\",white:\\\"#ffffff\\\",whitesmoke:\\\"#f5f5f5\\\",yellow:\\\"#ffff00\\\",yellowgreen:\\\"#9acd32\\\",activeBorder:\\\"Active window border.\\\",activecaption:\\\"Active window caption.\\\",appworkspace:\\\"Background color of multiple document interface.\\\",background:\\\"Desktop background.\\\",buttonface:\\\"The face background color for 3-D elements that appear 3-D due to one layer of surrounding border.\\\",buttonhighlight:\\\"The color of the border facing the light source for 3-D elements that appear 3-D due to one layer of surrounding border.\\\",buttonshadow:\\\"The color of the border away from the light source for 3-D elements that appear 3-D due to one layer of surrounding border.\\\",buttontext:\\\"Text on push buttons.\\\",captiontext:\\\"Text in caption, size box, and scrollbar arrow box.\\\",graytext:\\\"Grayed (disabled) text. This color is set to #000 if the current display driver does not support a solid gray color.\\\",greytext:\\\"Greyed (disabled) text. This color is set to #000 if the current display driver does not support a solid grey color.\\\",highlight:\\\"Item(s) selected in a control.\\\",highlighttext:\\\"Text of item(s) selected in a control.\\\",inactiveborder:\\\"Inactive window border.\\\",inactivecaption:\\\"Inactive window caption.\\\",inactivecaptiontext:\\\"Color of text in an inactive caption.\\\",infobackground:\\\"Background color for tooltip controls.\\\",infotext:\\\"Text color for tooltip controls.\\\",menu:\\\"Menu background.\\\",menutext:\\\"Text in menus.\\\",scrollbar:\\\"Scroll bar gray area.\\\",threeddarkshadow:\\\"The color of the darker (generally outer) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.\\\",threedface:\\\"The face background color for 3-D elements that appear 3-D due to two concentric layers of surrounding border.\\\",threedhighlight:\\\"The color of the lighter (generally outer) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.\\\",threedlightshadow:\\\"The color of the darker (generally inner) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.\\\",threedshadow:\\\"The color of the lighter (generally inner) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.\\\",window:\\\"Window background.\\\",windowframe:\\\"Window frame.\\\",windowtext:\\\"Text in windows.\\\"};Combinator.prototype=new SyntaxUnit,Combinator.prototype.constructor=Combinator,MediaFeature.prototype=new SyntaxUnit,MediaFeature.prototype.constructor=MediaFeature,MediaQuery.prototype=new SyntaxUnit,MediaQuery.prototype.constructor=MediaQuery,Parser.DEFAULT_TYPE=0,Parser.COMBINATOR_TYPE=1,Parser.MEDIA_FEATURE_TYPE=2,Parser.MEDIA_QUERY_TYPE=3,Parser.PROPERTY_NAME_TYPE=4,Parser.PROPERTY_VALUE_TYPE=5,Parser.PROPERTY_VALUE_PART_TYPE=6,Parser.SELECTOR_TYPE=7,Parser.SELECTOR_PART_TYPE=8,Parser.SELECTOR_SUB_PART_TYPE=9,Parser.prototype=function(){var prop,proto=new EventTarget,additions={constructor:Parser,DEFAULT_TYPE:0,COMBINATOR_TYPE:1,MEDIA_FEATURE_TYPE:2,MEDIA_QUERY_TYPE:3,PROPERTY_NAME_TYPE:4,PROPERTY_VALUE_TYPE:5,PROPERTY_VALUE_PART_TYPE:6,SELECTOR_TYPE:7,SELECTOR_PART_TYPE:8,SELECTOR_SUB_PART_TYPE:9,_stylesheet:function(){var count,token,tt,tokenStream=this._tokenStream;for(this.fire(\\\"startstylesheet\\\"),this._charset(),this._skipCruft();tokenStream.peek()==Tokens.IMPORT_SYM;)this._import(),this._skipCruft();for(;tokenStream.peek()==Tokens.NAMESPACE_SYM;)this._namespace(),this._skipCruft();for(tt=tokenStream.peek();tt>Tokens.EOF;){try{switch(tt){case Tokens.MEDIA_SYM:this._media(),this._skipCruft();break;case Tokens.PAGE_SYM:this._page(),this._skipCruft();break;case Tokens.FONT_FACE_SYM:this._font_face(),this._skipCruft();break;case Tokens.KEYFRAMES_SYM:this._keyframes(),this._skipCruft();break;case Tokens.VIEWPORT_SYM:this._viewport(),this._skipCruft();break;case Tokens.UNKNOWN_SYM:if(tokenStream.get(),this.options.strict)throw new SyntaxError(\\\"Unknown @ rule.\\\",tokenStream.LT(0).startLine,tokenStream.LT(0).startCol);for(this.fire({type:\\\"error\\\",error:null,message:\\\"Unknown @ rule: \\\"+tokenStream.LT(0).value+\\\".\\\",line:tokenStream.LT(0).startLine,col:tokenStream.LT(0).startCol}),count=0;tokenStream.advance([Tokens.LBRACE,Tokens.RBRACE])==Tokens.LBRACE;)count++;for(;count;)tokenStream.advance([Tokens.RBRACE]),count--;break;case Tokens.S:this._readWhitespace();break;default:if(!this._ruleset())switch(tt){case Tokens.CHARSET_SYM:throw token=tokenStream.LT(1),this._charset(!1),new SyntaxError(\\\"@charset not allowed here.\\\",token.startLine,token.startCol);case Tokens.IMPORT_SYM:throw token=tokenStream.LT(1),this._import(!1),new SyntaxError(\\\"@import not allowed here.\\\",token.startLine,token.startCol);case Tokens.NAMESPACE_SYM:throw token=tokenStream.LT(1),this._namespace(!1),new SyntaxError(\\\"@namespace not allowed here.\\\",token.startLine,token.startCol);default:tokenStream.get(),this._unexpectedToken(tokenStream.token())}}}catch(ex){if(!(ex instanceof SyntaxError)||this.options.strict)throw ex;this.fire({type:\\\"error\\\",error:ex,message:ex.message,line:ex.line,col:ex.col})}tt=tokenStream.peek()}tt!=Tokens.EOF&&this._unexpectedToken(tokenStream.token()),this.fire(\\\"endstylesheet\\\")},_charset:function(emit){var charset,token,line,col,tokenStream=this._tokenStream;tokenStream.match(Tokens.CHARSET_SYM)&&(line=tokenStream.token().startLine,col=tokenStream.token().startCol,this._readWhitespace(),tokenStream.mustMatch(Tokens.STRING),token=tokenStream.token(),charset=token.value,this._readWhitespace(),tokenStream.mustMatch(Tokens.SEMICOLON),emit!==!1&&this.fire({type:\\\"charset\\\",charset:charset,line:line,col:col}))},_import:function(emit){var uri,importToken,tokenStream=this._tokenStream,mediaList=[];tokenStream.mustMatch(Tokens.IMPORT_SYM),importToken=tokenStream.token(),this._readWhitespace(),tokenStream.mustMatch([Tokens.STRING,Tokens.URI]),uri=tokenStream.token().value.replace(/^(?:url\\\\()?[\\\"']?([^\\\"']+?)[\\\"']?\\\\)?$/,\\\"$1\\\"),this._readWhitespace(),mediaList=this._media_query_list(),tokenStream.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),emit!==!1&&this.fire({type:\\\"import\\\",uri:uri,media:mediaList,line:importToken.startLine,col:importToken.startCol})},_namespace:function(emit){var line,col,prefix,uri,tokenStream=this._tokenStream;tokenStream.mustMatch(Tokens.NAMESPACE_SYM),line=tokenStream.token().startLine,col=tokenStream.token().startCol,this._readWhitespace(),tokenStream.match(Tokens.IDENT)&&(prefix=tokenStream.token().value,this._readWhitespace()),tokenStream.mustMatch([Tokens.STRING,Tokens.URI]),uri=tokenStream.token().value.replace(/(?:url\\\\()?[\\\"']([^\\\"']+)[\\\"']\\\\)?/,\\\"$1\\\"),this._readWhitespace(),tokenStream.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),emit!==!1&&this.fire({type:\\\"namespace\\\",prefix:prefix,uri:uri,line:line,col:col})},_media:function(){var line,col,mediaList,tokenStream=this._tokenStream;for(tokenStream.mustMatch(Tokens.MEDIA_SYM),line=tokenStream.token().startLine,col=tokenStream.token().startCol,this._readWhitespace(),mediaList=this._media_query_list(),tokenStream.mustMatch(Tokens.LBRACE),this._readWhitespace(),this.fire({type:\\\"startmedia\\\",media:mediaList,line:line,col:col});;)if(tokenStream.peek()==Tokens.PAGE_SYM)this._page();else if(tokenStream.peek()==Tokens.FONT_FACE_SYM)this._font_face();else if(tokenStream.peek()==Tokens.VIEWPORT_SYM)this._viewport();else if(!this._ruleset())break;tokenStream.mustMatch(Tokens.RBRACE),this._readWhitespace(),this.fire({type:\\\"endmedia\\\",media:mediaList,line:line,col:col})},_media_query_list:function(){var tokenStream=this._tokenStream,mediaList=[];for(this._readWhitespace(),(tokenStream.peek()==Tokens.IDENT||tokenStream.peek()==Tokens.LPAREN)&&mediaList.push(this._media_query());tokenStream.match(Tokens.COMMA);)this._readWhitespace(),mediaList.push(this._media_query());return mediaList},_media_query:function(){var tokenStream=this._tokenStream,type=null,ident=null,token=null,expressions=[];if(tokenStream.match(Tokens.IDENT)&&(ident=tokenStream.token().value.toLowerCase(),\\\"only\\\"!=ident&&\\\"not\\\"!=ident?(tokenStream.unget(),ident=null):token=tokenStream.token()),this._readWhitespace(),tokenStream.peek()==Tokens.IDENT?(type=this._media_type(),null===token&&(token=tokenStream.token())):tokenStream.peek()==Tokens.LPAREN&&(null===token&&(token=tokenStream.LT(1)),expressions.push(this._media_expression())),null===type&&0===expressions.length)return null;for(this._readWhitespace();tokenStream.match(Tokens.IDENT);)\\\"and\\\"!=tokenStream.token().value.toLowerCase()&&this._unexpectedToken(tokenStream.token()),this._readWhitespace(),expressions.push(this._media_expression());return new MediaQuery(ident,type,expressions,token.startLine,token.startCol)},_media_type:function(){return this._media_feature()},_media_expression:function(){var token,tokenStream=this._tokenStream,feature=null,expression=null;return tokenStream.mustMatch(Tokens.LPAREN),this._readWhitespace(),feature=this._media_feature(),this._readWhitespace(),tokenStream.match(Tokens.COLON)&&(this._readWhitespace(),token=tokenStream.LT(1),expression=this._expression()),tokenStream.mustMatch(Tokens.RPAREN),this._readWhitespace(),new MediaFeature(feature,expression?new SyntaxUnit(expression,token.startLine,token.startCol):null)},_media_feature:function(){var tokenStream=this._tokenStream;return tokenStream.mustMatch(Tokens.IDENT),SyntaxUnit.fromToken(tokenStream.token())},_page:function(){var line,col,tokenStream=this._tokenStream,identifier=null,pseudoPage=null;tokenStream.mustMatch(Tokens.PAGE_SYM),line=tokenStream.token().startLine,col=tokenStream.token().startCol,this._readWhitespace(),tokenStream.match(Tokens.IDENT)&&(identifier=tokenStream.token().value,\\\"auto\\\"===identifier.toLowerCase()&&this._unexpectedToken(tokenStream.token())),tokenStream.peek()==Tokens.COLON&&(pseudoPage=this._pseudo_page()),this._readWhitespace(),this.fire({type:\\\"startpage\\\",id:identifier,pseudo:pseudoPage,line:line,col:col}),this._readDeclarations(!0,!0),this.fire({type:\\\"endpage\\\",id:identifier,pseudo:pseudoPage,line:line,col:col})},_margin:function(){var line,col,tokenStream=this._tokenStream,marginSym=this._margin_sym();return marginSym?(line=tokenStream.token().startLine,col=tokenStream.token().startCol,this.fire({type:\\\"startpagemargin\\\",margin:marginSym,line:line,col:col}),this._readDeclarations(!0),this.fire({type:\\\"endpagemargin\\\",margin:marginSym,line:line,col:col}),!0):!1},_margin_sym:function(){var tokenStream=this._tokenStream;return tokenStream.match([Tokens.TOPLEFTCORNER_SYM,Tokens.TOPLEFT_SYM,Tokens.TOPCENTER_SYM,Tokens.TOPRIGHT_SYM,Tokens.TOPRIGHTCORNER_SYM,Tokens.BOTTOMLEFTCORNER_SYM,Tokens.BOTTOMLEFT_SYM,Tokens.BOTTOMCENTER_SYM,Tokens.BOTTOMRIGHT_SYM,Tokens.BOTTOMRIGHTCORNER_SYM,Tokens.LEFTTOP_SYM,Tokens.LEFTMIDDLE_SYM,Tokens.LEFTBOTTOM_SYM,Tokens.RIGHTTOP_SYM,Tokens.RIGHTMIDDLE_SYM,Tokens.RIGHTBOTTOM_SYM])?SyntaxUnit.fromToken(tokenStream.token()):null},_pseudo_page:function(){var tokenStream=this._tokenStream;return tokenStream.mustMatch(Tokens.COLON),tokenStream.mustMatch(Tokens.IDENT),tokenStream.token().value},_font_face:function(){var line,col,tokenStream=this._tokenStream;tokenStream.mustMatch(Tokens.FONT_FACE_SYM),line=tokenStream.token().startLine,col=tokenStream.token().startCol,this._readWhitespace(),this.fire({type:\\\"startfontface\\\",line:line,col:col}),this._readDeclarations(!0),this.fire({type:\\\"endfontface\\\",line:line,col:col})},_viewport:function(){var line,col,tokenStream=this._tokenStream;tokenStream.mustMatch(Tokens.VIEWPORT_SYM),line=tokenStream.token().startLine,col=tokenStream.token().startCol,this._readWhitespace(),this.fire({type:\\\"startviewport\\\",line:line,col:col}),this._readDeclarations(!0),this.fire({type:\\\"endviewport\\\",line:line,col:col})},_operator:function(inFunction){var tokenStream=this._tokenStream,token=null;return(tokenStream.match([Tokens.SLASH,Tokens.COMMA])||inFunction&&tokenStream.match([Tokens.PLUS,Tokens.STAR,Tokens.MINUS]))&&(token=tokenStream.token(),this._readWhitespace()),token?PropertyValuePart.fromToken(token):null},_combinator:function(){var token,tokenStream=this._tokenStream,value=null;return tokenStream.match([Tokens.PLUS,Tokens.GREATER,Tokens.TILDE])&&(token=tokenStream.token(),value=new Combinator(token.value,token.startLine,token.startCol),this._readWhitespace()),value},_unary_operator:function(){var tokenStream=this._tokenStream;return tokenStream.match([Tokens.MINUS,Tokens.PLUS])?tokenStream.token().value:null},_property:function(){var tokenValue,token,line,col,tokenStream=this._tokenStream,value=null,hack=null;return tokenStream.peek()==Tokens.STAR&&this.options.starHack&&(tokenStream.get(),token=tokenStream.token(),hack=token.value,line=token.startLine,col=token.startCol),tokenStream.match(Tokens.IDENT)&&(token=tokenStream.token(),tokenValue=token.value,\\\"_\\\"==tokenValue.charAt(0)&&this.options.underscoreHack&&(hack=\\\"_\\\",tokenValue=tokenValue.substring(1)),value=new PropertyName(tokenValue,hack,line||token.startLine,col||token.startCol),this._readWhitespace()),value},_ruleset:function(){var tt,selectors,tokenStream=this._tokenStream;try{selectors=this._selectors_group()}catch(ex){if(!(ex instanceof SyntaxError)||this.options.strict)throw ex;if(this.fire({type:\\\"error\\\",error:ex,message:ex.message,line:ex.line,col:ex.col}),tt=tokenStream.advance([Tokens.RBRACE]),tt!=Tokens.RBRACE)throw ex;return!0}return selectors&&(this.fire({type:\\\"startrule\\\",selectors:selectors,line:selectors[0].line,col:selectors[0].col}),this._readDeclarations(!0),this.fire({type:\\\"endrule\\\",selectors:selectors,line:selectors[0].line,col:selectors[0].col})),selectors},_selectors_group:function(){var selector,tokenStream=this._tokenStream,selectors=[];if(selector=this._selector(),null!==selector)for(selectors.push(selector);tokenStream.match(Tokens.COMMA);)this._readWhitespace(),selector=this._selector(),null!==selector?selectors.push(selector):this._unexpectedToken(tokenStream.LT(1));return selectors.length?selectors:null},_selector:function(){var tokenStream=this._tokenStream,selector=[],nextSelector=null,combinator=null,ws=null;if(nextSelector=this._simple_selector_sequence(),null===nextSelector)return null;for(selector.push(nextSelector);;)if(combinator=this._combinator(),null!==combinator)selector.push(combinator),nextSelector=this._simple_selector_sequence(),null===nextSelector?this._unexpectedToken(tokenStream.LT(1)):selector.push(nextSelector);else{if(!this._readWhitespace())break;ws=new Combinator(tokenStream.token().value,tokenStream.token().startLine,tokenStream.token().startCol),combinator=this._combinator(),nextSelector=this._simple_selector_sequence(),null===nextSelector?null!==combinator&&this._unexpectedToken(tokenStream.LT(1)):(null!==combinator?selector.push(combinator):selector.push(ws),selector.push(nextSelector))}return new Selector(selector,selector[0].line,selector[0].col)},_simple_selector_sequence:function(){var line,col,tokenStream=this._tokenStream,elementName=null,modifiers=[],selectorText=\\\"\\\",components=[function(){return tokenStream.match(Tokens.HASH)?new SelectorSubPart(tokenStream.token().value,\\\"id\\\",tokenStream.token().startLine,tokenStream.token().startCol):null},this._class,this._attrib,this._pseudo,this._negation],i=0,len=components.length,component=null;for(line=tokenStream.LT(1).startLine,col=tokenStream.LT(1).startCol,elementName=this._type_selector(),elementName||(elementName=this._universal()),null!==elementName&&(selectorText+=elementName);;){if(tokenStream.peek()===Tokens.S)break;for(;len>i&&null===component;)component=components[i++].call(this);if(null===component){if(\\\"\\\"===selectorText)return null;break}i=0,modifiers.push(component),selectorText+=\\\"\\\"+component,component=null}return\\\"\\\"!==selectorText?new SelectorPart(elementName,modifiers,selectorText,line,col):null},_type_selector:function(){var tokenStream=this._tokenStream,ns=this._namespace_prefix(),elementName=this._element_name();return elementName?(ns&&(elementName.text=ns+elementName.text,elementName.col-=ns.length),elementName):(ns&&(tokenStream.unget(),ns.length>1&&tokenStream.unget()),null)},_class:function(){var token,tokenStream=this._tokenStream;return tokenStream.match(Tokens.DOT)?(tokenStream.mustMatch(Tokens.IDENT),token=tokenStream.token(),new SelectorSubPart(\\\".\\\"+token.value,\\\"class\\\",token.startLine,token.startCol-1)):null},_element_name:function(){var token,tokenStream=this._tokenStream;return tokenStream.match(Tokens.IDENT)?(token=tokenStream.token(),new SelectorSubPart(token.value,\\\"elementName\\\",token.startLine,token.startCol)):null},_namespace_prefix:function(){var tokenStream=this._tokenStream,value=\\\"\\\";return(tokenStream.LA(1)===Tokens.PIPE||tokenStream.LA(2)===Tokens.PIPE)&&(tokenStream.match([Tokens.IDENT,Tokens.STAR])&&(value+=tokenStream.token().value),tokenStream.mustMatch(Tokens.PIPE),value+=\\\"|\\\"),value.length?value:null},_universal:function(){var ns,tokenStream=this._tokenStream,value=\\\"\\\";return ns=this._namespace_prefix(),ns&&(value+=ns),tokenStream.match(Tokens.STAR)&&(value+=\\\"*\\\"),value.length?value:null},_attrib:function(){var ns,token,tokenStream=this._tokenStream,value=null;return tokenStream.match(Tokens.LBRACKET)?(token=tokenStream.token(),value=token.value,value+=this._readWhitespace(),ns=this._namespace_prefix(),ns&&(value+=ns),tokenStream.mustMatch(Tokens.IDENT),value+=tokenStream.token().value,value+=this._readWhitespace(),tokenStream.match([Tokens.PREFIXMATCH,Tokens.SUFFIXMATCH,Tokens.SUBSTRINGMATCH,Tokens.EQUALS,Tokens.INCLUDES,Tokens.DASHMATCH])&&(value+=tokenStream.token().value,value+=this._readWhitespace(),tokenStream.mustMatch([Tokens.IDENT,Tokens.STRING]),value+=tokenStream.token().value,value+=this._readWhitespace()),tokenStream.mustMatch(Tokens.RBRACKET),new SelectorSubPart(value+\\\"]\\\",\\\"attribute\\\",token.startLine,token.startCol)):null},_pseudo:function(){var line,col,tokenStream=this._tokenStream,pseudo=null,colons=\\\":\\\";return tokenStream.match(Tokens.COLON)&&(tokenStream.match(Tokens.COLON)&&(colons+=\\\":\\\"),tokenStream.match(Tokens.IDENT)?(pseudo=tokenStream.token().value,line=tokenStream.token().startLine,col=tokenStream.token().startCol-colons.length):tokenStream.peek()==Tokens.FUNCTION&&(line=tokenStream.LT(1).startLine,col=tokenStream.LT(1).startCol-colons.length,pseudo=this._functional_pseudo()),pseudo&&(pseudo=new SelectorSubPart(colons+pseudo,\\\"pseudo\\\",line,col))),pseudo},_functional_pseudo:function(){var tokenStream=this._tokenStream,value=null;return tokenStream.match(Tokens.FUNCTION)&&(value=tokenStream.token().value,value+=this._readWhitespace(),value+=this._expression(),tokenStream.mustMatch(Tokens.RPAREN),value+=\\\")\\\"),value},_expression:function(){for(var tokenStream=this._tokenStream,value=\\\"\\\";tokenStream.match([Tokens.PLUS,Tokens.MINUS,Tokens.DIMENSION,Tokens.NUMBER,Tokens.STRING,Tokens.IDENT,Tokens.LENGTH,Tokens.FREQ,Tokens.ANGLE,Tokens.TIME,Tokens.RESOLUTION,Tokens.SLASH]);)value+=tokenStream.token().value,value+=this._readWhitespace();return value.length?value:null},_negation:function(){var line,col,arg,tokenStream=this._tokenStream,value=\\\"\\\",subpart=null;return tokenStream.match(Tokens.NOT)&&(value=tokenStream.token().value,line=tokenStream.token().startLine,col=tokenStream.token().startCol,value+=this._readWhitespace(),arg=this._negation_arg(),value+=arg,value+=this._readWhitespace(),tokenStream.match(Tokens.RPAREN),value+=tokenStream.token().value,subpart=new SelectorSubPart(value,\\\"not\\\",line,col),subpart.args.push(arg)),subpart},_negation_arg:function(){var line,col,part,tokenStream=this._tokenStream,args=[this._type_selector,this._universal,function(){return tokenStream.match(Tokens.HASH)?new SelectorSubPart(tokenStream.token().value,\\\"id\\\",tokenStream.token().startLine,tokenStream.token().startCol):null},this._class,this._attrib,this._pseudo],arg=null,i=0,len=args.length;for(line=tokenStream.LT(1).startLine,col=tokenStream.LT(1).startCol;len>i&&null===arg;)arg=args[i].call(this),i++;return null===arg&&this._unexpectedToken(tokenStream.LT(1)),part=\\\"elementName\\\"==arg.type?new SelectorPart(arg,[],\\\"\\\"+arg,line,col):new SelectorPart(null,[arg],\\\"\\\"+arg,line,col)},_declaration:function(){var tokenStream=this._tokenStream,property=null,expr=null,prio=null,invalid=null,propertyName=\\\"\\\";if(property=this._property(),null!==property){tokenStream.mustMatch(Tokens.COLON),this._readWhitespace(),expr=this._expr(),expr&&0!==expr.length||this._unexpectedToken(tokenStream.LT(1)),prio=this._prio(),propertyName=\\\"\\\"+property,(this.options.starHack&&\\\"*\\\"==property.hack||this.options.underscoreHack&&\\\"_\\\"==property.hack)&&(propertyName=property.text);try{this._validateProperty(propertyName,expr)}catch(ex){invalid=ex}return this.fire({type:\\\"property\\\",property:property,value:expr,important:prio,line:property.line,col:property.col,invalid:invalid}),!0}return!1},_prio:function(){var tokenStream=this._tokenStream,result=tokenStream.match(Tokens.IMPORTANT_SYM);return this._readWhitespace(),result},_expr:function(inFunction){var values=(this._tokenStream,[]),value=null,operator=null;if(value=this._term(inFunction),null!==value)for(values.push(value);;){if(operator=this._operator(inFunction),operator&&values.push(operator),value=this._term(inFunction),null===value)break;\\nvalues.push(value)}return values.length>0?new PropertyValue(values,values[0].line,values[0].col):null},_term:function(inFunction){var token,line,col,tokenStream=this._tokenStream,unary=null,value=null,endChar=null;return unary=this._unary_operator(),null!==unary&&(line=tokenStream.token().startLine,col=tokenStream.token().startCol),tokenStream.peek()==Tokens.IE_FUNCTION&&this.options.ieFilters?(value=this._ie_function(),null===unary&&(line=tokenStream.token().startLine,col=tokenStream.token().startCol)):inFunction&&tokenStream.match([Tokens.LPAREN,Tokens.LBRACE,Tokens.LBRACKET])?(token=tokenStream.token(),endChar=token.endChar,value=token.value+this._expr(inFunction).text,null===unary&&(line=tokenStream.token().startLine,col=tokenStream.token().startCol),tokenStream.mustMatch(Tokens.type(endChar)),value+=endChar,this._readWhitespace()):tokenStream.match([Tokens.NUMBER,Tokens.PERCENTAGE,Tokens.LENGTH,Tokens.ANGLE,Tokens.TIME,Tokens.FREQ,Tokens.STRING,Tokens.IDENT,Tokens.URI,Tokens.UNICODE_RANGE])?(value=tokenStream.token().value,null===unary&&(line=tokenStream.token().startLine,col=tokenStream.token().startCol),this._readWhitespace()):(token=this._hexcolor(),null===token?(null===unary&&(line=tokenStream.LT(1).startLine,col=tokenStream.LT(1).startCol),null===value&&(value=tokenStream.LA(3)==Tokens.EQUALS&&this.options.ieFilters?this._ie_function():this._function())):(value=token.value,null===unary&&(line=token.startLine,col=token.startCol))),null!==value?new PropertyValuePart(null!==unary?unary+value:value,line,col):null},_function:function(){var lt,tokenStream=this._tokenStream,functionText=null,expr=null;if(tokenStream.match(Tokens.FUNCTION)){if(functionText=tokenStream.token().value,this._readWhitespace(),expr=this._expr(!0),functionText+=expr,this.options.ieFilters&&tokenStream.peek()==Tokens.EQUALS)do for(this._readWhitespace()&&(functionText+=tokenStream.token().value),tokenStream.LA(0)==Tokens.COMMA&&(functionText+=tokenStream.token().value),tokenStream.match(Tokens.IDENT),functionText+=tokenStream.token().value,tokenStream.match(Tokens.EQUALS),functionText+=tokenStream.token().value,lt=tokenStream.peek();lt!=Tokens.COMMA&<!=Tokens.S&<!=Tokens.RPAREN;)tokenStream.get(),functionText+=tokenStream.token().value,lt=tokenStream.peek();while(tokenStream.match([Tokens.COMMA,Tokens.S]));tokenStream.match(Tokens.RPAREN),functionText+=\\\")\\\",this._readWhitespace()}return functionText},_ie_function:function(){var lt,tokenStream=this._tokenStream,functionText=null;if(tokenStream.match([Tokens.IE_FUNCTION,Tokens.FUNCTION])){functionText=tokenStream.token().value;do for(this._readWhitespace()&&(functionText+=tokenStream.token().value),tokenStream.LA(0)==Tokens.COMMA&&(functionText+=tokenStream.token().value),tokenStream.match(Tokens.IDENT),functionText+=tokenStream.token().value,tokenStream.match(Tokens.EQUALS),functionText+=tokenStream.token().value,lt=tokenStream.peek();lt!=Tokens.COMMA&<!=Tokens.S&<!=Tokens.RPAREN;)tokenStream.get(),functionText+=tokenStream.token().value,lt=tokenStream.peek();while(tokenStream.match([Tokens.COMMA,Tokens.S]));tokenStream.match(Tokens.RPAREN),functionText+=\\\")\\\",this._readWhitespace()}return functionText},_hexcolor:function(){var color,tokenStream=this._tokenStream,token=null;if(tokenStream.match(Tokens.HASH)){if(token=tokenStream.token(),color=token.value,!/#[a-f0-9]{3,6}/i.test(color))throw new SyntaxError(\\\"Expected a hex color but found '\\\"+color+\\\"' at line \\\"+token.startLine+\\\", col \\\"+token.startCol+\\\".\\\",token.startLine,token.startCol);this._readWhitespace()}return token},_keyframes:function(){var token,tt,name,tokenStream=this._tokenStream,prefix=\\\"\\\";for(tokenStream.mustMatch(Tokens.KEYFRAMES_SYM),token=tokenStream.token(),/^@\\\\-([^\\\\-]+)\\\\-/.test(token.value)&&(prefix=RegExp.$1),this._readWhitespace(),name=this._keyframe_name(),this._readWhitespace(),tokenStream.mustMatch(Tokens.LBRACE),this.fire({type:\\\"startkeyframes\\\",name:name,prefix:prefix,line:token.startLine,col:token.startCol}),this._readWhitespace(),tt=tokenStream.peek();tt==Tokens.IDENT||tt==Tokens.PERCENTAGE;)this._keyframe_rule(),this._readWhitespace(),tt=tokenStream.peek();this.fire({type:\\\"endkeyframes\\\",name:name,prefix:prefix,line:token.startLine,col:token.startCol}),this._readWhitespace(),tokenStream.mustMatch(Tokens.RBRACE)},_keyframe_name:function(){var tokenStream=this._tokenStream;return tokenStream.mustMatch([Tokens.IDENT,Tokens.STRING]),SyntaxUnit.fromToken(tokenStream.token())},_keyframe_rule:function(){var keyList=(this._tokenStream,this._key_list());this.fire({type:\\\"startkeyframerule\\\",keys:keyList,line:keyList[0].line,col:keyList[0].col}),this._readDeclarations(!0),this.fire({type:\\\"endkeyframerule\\\",keys:keyList,line:keyList[0].line,col:keyList[0].col})},_key_list:function(){var tokenStream=this._tokenStream,keyList=[];for(keyList.push(this._key()),this._readWhitespace();tokenStream.match(Tokens.COMMA);)this._readWhitespace(),keyList.push(this._key()),this._readWhitespace();return keyList},_key:function(){var token,tokenStream=this._tokenStream;if(tokenStream.match(Tokens.PERCENTAGE))return SyntaxUnit.fromToken(tokenStream.token());if(tokenStream.match(Tokens.IDENT)){if(token=tokenStream.token(),/from|to/i.test(token.value))return SyntaxUnit.fromToken(token);tokenStream.unget()}this._unexpectedToken(tokenStream.LT(1))},_skipCruft:function(){for(;this._tokenStream.match([Tokens.S,Tokens.CDO,Tokens.CDC]););},_readDeclarations:function(checkStart,readMargins){var tt,tokenStream=this._tokenStream;this._readWhitespace(),checkStart&&tokenStream.mustMatch(Tokens.LBRACE),this._readWhitespace();try{for(;;){if(tokenStream.match(Tokens.SEMICOLON)||readMargins&&this._margin());else{if(!this._declaration())break;if(!tokenStream.match(Tokens.SEMICOLON))break}this._readWhitespace()}tokenStream.mustMatch(Tokens.RBRACE),this._readWhitespace()}catch(ex){if(!(ex instanceof SyntaxError)||this.options.strict)throw ex;if(this.fire({type:\\\"error\\\",error:ex,message:ex.message,line:ex.line,col:ex.col}),tt=tokenStream.advance([Tokens.SEMICOLON,Tokens.RBRACE]),tt==Tokens.SEMICOLON)this._readDeclarations(!1,readMargins);else if(tt!=Tokens.RBRACE)throw ex}},_readWhitespace:function(){for(var tokenStream=this._tokenStream,ws=\\\"\\\";tokenStream.match(Tokens.S);)ws+=tokenStream.token().value;return ws},_unexpectedToken:function(token){throw new SyntaxError(\\\"Unexpected token '\\\"+token.value+\\\"' at line \\\"+token.startLine+\\\", col \\\"+token.startCol+\\\".\\\",token.startLine,token.startCol)},_verifyEnd:function(){this._tokenStream.LA(1)!=Tokens.EOF&&this._unexpectedToken(this._tokenStream.LT(1))},_validateProperty:function(property,value){Validation.validate(property,value)},parse:function(input){this._tokenStream=new TokenStream(input,Tokens),this._stylesheet()},parseStyleSheet:function(input){return this.parse(input)},parseMediaQuery:function(input){this._tokenStream=new TokenStream(input,Tokens);var result=this._media_query();return this._verifyEnd(),result},parsePropertyValue:function(input){this._tokenStream=new TokenStream(input,Tokens),this._readWhitespace();var result=this._expr();return this._readWhitespace(),this._verifyEnd(),result},parseRule:function(input){this._tokenStream=new TokenStream(input,Tokens),this._readWhitespace();var result=this._ruleset();return this._readWhitespace(),this._verifyEnd(),result},parseSelector:function(input){this._tokenStream=new TokenStream(input,Tokens),this._readWhitespace();var result=this._selector();return this._readWhitespace(),this._verifyEnd(),result},parseStyleAttribute:function(input){input+=\\\"}\\\",this._tokenStream=new TokenStream(input,Tokens),this._readDeclarations()}};for(prop in additions)additions.hasOwnProperty(prop)&&(proto[prop]=additions[prop]);return proto}();var Properties={\\\"align-items\\\":\\\"flex-start | flex-end | center | baseline | stretch\\\",\\\"align-content\\\":\\\"flex-start | flex-end | center | space-between | space-around | stretch\\\",\\\"align-self\\\":\\\"auto | flex-start | flex-end | center | baseline | stretch\\\",\\\"-webkit-align-items\\\":\\\"flex-start | flex-end | center | baseline | stretch\\\",\\\"-webkit-align-content\\\":\\\"flex-start | flex-end | center | space-between | space-around | stretch\\\",\\\"-webkit-align-self\\\":\\\"auto | flex-start | flex-end | center | baseline | stretch\\\",\\\"alignment-adjust\\\":\\\"auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | | \\\",\\\"alignment-baseline\\\":\\\"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical\\\",animation:1,\\\"animation-delay\\\":{multi:\\\"