{"version":3,"sources":["kendo.dataviz.chart.polar.js"],"names":["f","define","defined","value","UNDEFINED","round","precision","power","pow","math","p","limitValue","min","max","rad","degrees","DEG_TO_RAD","deg","radians","isNumber","val","isNaN","valueOrDefault","defaultValue","sqr","objectKey","object","key","parts","push","sort","join","hashKey","str","i","hash","length","charCodeAt","hashObject","arrayLimits","arr","MAX_NUM","MIN_NUM","arrayMin","arrayMax","sparseArrayMin","sparseArrayLimits","sparseArrayMax","n","isFinite","undefined","last","array","append","first","second","apply","renderTemplate","text","kendo","template","useWithBlock","paramName","renderAttr","name","renderAllAttr","attrs","output","renderStyle","renderSize","size","renderPos","pos","result","toHyphens","split","isTransparent","color","arabicToRoman","literals",1,10,100,2,20,200,3,30,300,4,40,400,5,50,500,6,60,600,7,70,700,8,80,800,9,90,900,1000,"values","roman","shift","romanToArabic","r","digits","prev","v","toLowerCase","x","l","c","d","m","charAt","memoize","cache","Object","create","id","arguments","this","ucs2decode","string","extra","counter","ucs2encode","map","String","fromCharCode","Math","window","deepExtend","PI","Number","MAX_VALUE","now","Date","getTime","util","drawing","dataviz","amd","a1","a2","a3","$","zeroSize","width","height","baseline","measureText","style","measureBox","TextMetrics","current","measure","loadFonts","fonts","callback","promises","document","font","load","e","logToConsole","Promise","all","then","doc","Class","LRUCache","extend","init","_size","_length","_map","put","lru","entry","_head","_tail","newer","older","get","defaultMeasureBox","options","_cache","_initOptions","baselineMarkerSize","box","styleKey","cacheKey","cachedResult","baselineMarker","_baselineMarker","cloneNode","appendChild","body","offsetWidth","offsetHeight","offsetTop","parentNode","removeChild","jQuery","encodeBase64","input","chr1","chr2","chr3","enc1","enc2","enc3","enc4","encodeUTF8","KEY_STR","inArray","ObserversMixin","observers","_observers","addObserver","element","removeObserver","index","splice","trigger","methodName","event","observer","idx","_suspended","optionsChange","geometryChange","suspend","resume","_observerField","field","mixins","xComparer","a","b","angularDistance","abs","RadarNumericAxisMixin","RadarNumericAxis","RadarLogarithmicAxis","PolarAxis","RadarClusterLayout","RadarStackLayout","RadarSegment","RadarBarChart","RadarLineChart","RadarAreaSegment","SplineRadarAreaSegment","RadarAreaChart","PolarScatterChart","PolarLineChart","PolarAreaSegment","SplinePolarAreaSegment","PolarAreaChart","PolarPlotAreaBase","RadarPlotArea","PolarPlotArea","draw","geom","geometry","AreaSegment","Axis","AxisGroupRangeTracker","BarChart","Box2D","CategoryAxis","CategoricalChart","CategoricalPlotArea","ChartElement","CurveProcessor","DonutSegment","LineChart","LineSegment","LogarithmicAxis","NumericAxis","PlotAreaBase","PlotAreaFactory","Point2D","Ring","ScatterChart","ScatterLineChart","SeriesBinder","ShapeBuilder","SplineSegment","SplineAreaSegment","eventTargetElement","getSpacing","filterSeriesByType","ARC","BLACK","COORD_PRECISION","DEFAULT_PADDING","GAP","INTERPOLATE","LOGARITHMIC","PLOT_AREA_CLICK","POLAR_AREA","POLAR_LINE","POLAR_SCATTER","RADAR_AREA","RADAR_COLUMN","RADAR_LINE","SMOOTH","X","Y","ZERO","POLAR_CHARTS","RADAR_CHARTS","GridLinesMixin","createGridLines","altAxis","majorAngles","minorAngles","axis","radius","center","y","lineBox","y1","skipMajor","gridLines","majorGridLines","visible","majorGridLineAngles","renderMajorGridLines","minorGridLines","minorGridLineAngles","renderMinorGridLines","angles","renderGridLines","radiusCallback","line","stroke","dashType","circle","Circle","container","gridLinesVisual","Path","moveTo","lineTo","pointAt","children","gridLineAngles","skip","step","skipAngles","divs","intervals","altAxisVisible","alpha","intervalAngle","RadarCategoryAxis","startAngle","labels","margin","justified","range","categories","reflow","reflowLabels","labelBox","labelOptions","getSlot","adjacentBox","angle","divCount","divAngle","reverse","majorIntervals","minorIntervals","interval","proxy","createLine","minorAngle","minorRadius","type","cos","createPlotBands","band","slot","singleSlot","head","tail","ring","plotBands","group","_plotbandGroup","Group","zIndex","plotBandSlot","from","floor","ceil","to","createRing","fill","opacity","appendVisual","slots","slotStart","totalDivs","slotAngle","endAngle","Arc","radiusX","radiusY","pointCategoryIndex","point","containsPoint","fn","bandStyle","shape","plotArea","polarAxis","y2","fromPoints","plotBandPoints","close","innerPoints","outerPoints","innerCircle","ir","outerCircle","concat","minorTicks","majorTicks","radarMajorGridLinePositions","radarMinorGridLinePositions","ticks","tickRadius","tickIx","angleIx","getValue","dx","dy","theta","midAngle","gamma","beta","distanceTo","distance","atan2","sin","axisType","call","x1","getTickPositions","majorUnit","minorSkipStep","minorUnit","positions","traverseMajorTicksPositions","position","traverseMinorTicksPositions","getDivisions","stepValue","divisions","tmp","start","labelsCount","createAxisLabel","gap","spacing","sector","slotSector","cluster","count","clone","childSector","stack","isReversed","childrenCount","overlay","gradient","pointType","clusterType","stackType","categorySlot","categoryAxis","categoryIx","pointSlot","valueSlot","reflowPoint","clip","animation","createAnimation","toRect","valueRadius","onCircle","middle","createSegment","linePoints","currentSeries","seriesIx","segment","data","closed","points","stackPoints","closeFill","noop","prevSegment","chart","isStacked","slice","seriesMissingValues","series","missingValues","slotX","slotY","parent","unshift","fillPath","_polarAxisCenter","strokeSegments","curveProcessor","segments","_strokeSegments","process","pop","createMissingValue","missingValue","hasValue","_hasMissingValuesGap","sortPoints","valueAxisRangeTracker","render","addToLegend","createPolarAxis","createCharts","createValueAxis","alignAxes","valueAxis","crossingValue","axisBox","translate","axisDefaultRange","tracker","defaultRange","query","axisOptions","valueAxisOptions","roundToMajorUnit","appendAxis","reflowAxes","heightDiff","defaultPadding","padding","unpad","valueAxisBox","shrink","top","backgroundBox","aggregateCategories","defaults","_hasBarCharts","_isStacked100","format","appendChart","aggregateSeries","panes","filterSeries","filterVisibleSeries","pane","createAreaChart","createLineChart","createBarChart","chartOptions","filteredSeries","firstSeries","isStacked100","areaChart","lineChart","barChart","seriesCategoryAxis","click","category","coords","_eventCoordinates","getCategory","createCrosshairs","xAxis","yAxis","axisX","axisY","update","yAxisRanges","createScatterChart","scatterChart","xValue","yValue","register","DefaultAggregates"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;CAwBC,SAAUA,EAAGC,QACVA,OAAO,aAAc,cAAeD,IACtC,WA8UE,MA7UC,YAGG,QAASE,GAAQC,GACb,aAAcA,KAAUC,EAE5B,QAASC,GAAMF,EAAOG,GAClB,GAAIC,GAAQC,EAAIF,EAChB,OAAOG,GAAKJ,MAAMF,EAAQI,GAASA,EAEvC,QAASC,GAAIE,GACT,MAAIA,GACOD,EAAKD,IAAI,GAAIE,GAEb,EAGf,QAASC,GAAWR,EAAOS,EAAKC,GAC5B,MAAOJ,GAAKI,IAAIJ,EAAKG,IAAIT,EAAOU,GAAMD,GAE1C,QAASE,GAAIC,GACT,MAAOA,GAAUC,EAErB,QAASC,GAAIC,GACT,MAAOA,GAAUF,EAErB,QAASG,GAASC,GACd,MAAsB,gBAARA,KAAqBC,MAAMD,GAE7C,QAASE,GAAenB,EAAOoB,GAC3B,MAAOrB,GAAQC,GAASA,EAAQoB,EAEpC,QAASC,GAAIrB,GACT,MAAOA,GAAQA,EAEnB,QAASsB,GAAUC,GAAnB,GAEaC,GADLC,IACJ,KAASD,IAAOD,GACZE,EAAMC,KAAKF,EAAMD,EAAOC,GAE5B,OAAOC,GAAME,OAAOC,KAAK,IAE7B,QAASC,GAAQC,GAAjB,GAEaC,GADLC,EAAO,UACX,KAASD,EAAI,EAAOD,EAAIG,OAARF,IAAkBA,EAC9BC,IAASA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IACzEA,GAAQF,EAAII,WAAWH,EAE3B,OAAOC,KAAS,EAEpB,QAASG,GAAWZ,GAChB,MAAOM,GAAQP,EAAUC,IAQ7B,QAASa,GAAYC,GACjB,GAAyBN,GAArBE,EAASI,EAAIJ,OAAWxB,EAAM6B,EAAS5B,EAAM6B,CACjD,KAAKR,EAAI,EAAOE,EAAJF,EAAYA,IACpBrB,EAAMJ,EAAKI,IAAIA,EAAK2B,EAAIN,IACxBtB,EAAMH,EAAKG,IAAIA,EAAK4B,EAAIN,GAE5B,QACItB,IAAKA,EACLC,IAAKA,GAGb,QAAS8B,GAASH,GACd,MAAOD,GAAYC,GAAK5B,IAE5B,QAASgC,GAASJ,GACd,MAAOD,GAAYC,GAAK3B,IAE5B,QAASgC,GAAeL,GACpB,MAAOM,GAAkBN,GAAK5B,IAElC,QAASmC,GAAeP,GACpB,MAAOM,GAAkBN,GAAK3B,IAElC,QAASiC,GAAkBN,GAA3B,GAEaN,GAAOE,EACRY,EAFJpC,EAAM6B,EAAS5B,EAAM6B,CACzB,KAASR,EAAI,EAAGE,EAASI,EAAIJ,OAAYA,EAAJF,EAAYA,IACzCc,EAAIR,EAAIN,GACF,OAANc,GAAcC,SAASD,KACvBpC,EAAMH,EAAKG,IAAIA,EAAKoC,GACpBnC,EAAMJ,EAAKI,IAAIA,EAAKmC,GAG5B,QACIpC,IAAKA,IAAQ6B,EAAUS,OAAYtC,EACnCC,IAAKA,IAAQ6B,EAAUQ,OAAYrC,GAG3C,QAASsC,GAAKC,GACV,MAAIA,GACOA,EAAMA,EAAMhB,OAAS,GADhC,OAIJ,QAASiB,GAAOC,EAAOC,GAEnB,MADAD,GAAMzB,KAAK2B,MAAMF,EAAOC,GACjBD,EAEX,QAASG,GAAeC,GACpB,MAAOC,GAAMC,SAASF,GAClBG,cAAc,EACdC,UAAW,MAGnB,QAASC,GAAWC,EAAM7D,GACtB,MAAOD,GAAQC,IAAoB,OAAVA,EAAiB,IAAM6D,EAAO,KAAQ7D,EAAQ,KAAQ,GAEnF,QAAS8D,GAAcC,GAAvB,GAEahC,GADLiC,EAAS,EACb,KAASjC,EAAI,EAAOgC,EAAM9B,OAAVF,EAAkBA,IAC9BiC,GAAUJ,EAAWG,EAAMhC,GAAG,GAAIgC,EAAMhC,GAAG,GAE/C,OAAOiC,GAEX,QAASC,GAAYF,GAArB,GAEahC,GACD/B,EAFJgE,EAAS,EACb,KAASjC,EAAI,EAAOgC,EAAM9B,OAAVF,EAAkBA,IAC1B/B,EAAQ+D,EAAMhC,GAAG,GACjBhC,EAAQC,KACRgE,GAAUD,EAAMhC,GAAG,GAAK,IAAM/B,EAAQ,IAG9C,OAAe,KAAXgE,EACOA,EADX,OAIJ,QAASE,GAAWC,GAIhB,MAHoB,gBAATA,KACPA,GAAQ,MAELA,EAEX,QAASC,GAAUC,GAAnB,GAGY5C,GACKM,EAHTuC,IACJ,IAAID,EAEA,IADI5C,EAAQ+B,EAAMe,UAAUF,GAAKG,MAAM,KAC9BzC,EAAI,EAAON,EAAMQ,OAAVF,EAAkBA,IAC9BuC,EAAO5C,KAAK,SAAWD,EAAMM,GAGrC,OAAOuC,GAAO1C,KAAK,KAEvB,QAAS6C,GAAcC,GACnB,MAAiB,KAAVA,GAA0B,OAAVA,GAA4B,SAAVA,GAA8B,gBAAVA,IAA4B3E,EAAQ2E,GAErG,QAASC,GAAc9B,GA8DnB,IA9DJ,GACQ+B,IACAC,EAAG,IACHC,GAAI,IACJC,IAAK,IACLC,EAAG,KACHC,GAAI,KACJC,IAAK,KACLC,EAAG,MACHC,GAAI,MACJC,IAAK,MACLC,EAAG,KACHC,GAAI,KACJC,IAAK,KACLC,EAAG,IACHC,GAAI,IACJC,IAAK,IACLC,EAAG,KACHC,GAAI,KACJC,IAAK,KACLC,EAAG,MACHC,GAAI,MACJC,IAAK,MACLC,EAAG,OACHC,GAAI,OACJC,IAAK,OACLC,EAAG,KACHC,GAAI,KACJC,IAAK,KACLC,IAAM,KAENC,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEAC,EAAQ,GACL7D,EAAI,GACC4D,EAAO,GAAX5D,EACA4D,EAAOE,SAEPD,GAAS9B,EAAS6B,EAAO,IACzB5D,GAAK4D,EAAO,GAGpB,OAAOC,GAEX,QAASE,GAAcC,GAAvB,GAEQC,GASA9G,EAAW+G,EACNhF,EACDiF,CADR,KAXAH,EAAIA,EAAEI,cACFH,GACA/E,EAAG,EACHiF,EAAG,EACHE,EAAG,GACHC,EAAG,GACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEHtH,EAAQ,EAAG+G,EAAO,EACbhF,EAAI,EAAO8E,EAAE5E,OAANF,IAAgBA,EAAG,CAE/B,GADIiF,EAAIF,EAAOD,EAAEU,OAAOxF,KACnBiF,EACD,MAAO,KAEXhH,IAASgH,EACLA,EAAID,IACJ/G,GAAS,EAAI+G,GAEjBA,EAAOC,EAEX,MAAOhH,GAEX,QAASwH,GAAQ3H,GACb,GAAI4H,GAAQC,OAAOC,OAAO,KAC1B,OAAO,YAAA,GAEM5F,GADL6F,EAAK,EACT,KAAS7F,EAAI8F,UAAU5F,SAAUF,GAAK,GAClC6F,GAAM,IAAMC,UAAU9F,EAE1B,OAAI6F,KAAMH,GACCA,EAAMG,GAEV/H,EAAEwD,MAAMyE,KAAMD,YAG7B,QAASE,GAAWC,GAEhB,IADA,GAAsDhI,GAAOiI,EAAzDjE,KAAakE,EAAU,EAAGjG,EAAS+F,EAAO/F,OAC7BA,EAAViG,GACHlI,EAAQgI,EAAO9F,WAAWgG,KACtBlI,GAAS,OAAkB,OAATA,GAA4BiC,EAAViG,GACpCD,EAAQD,EAAO9F,WAAWgG,KACH,QAAV,MAARD,GACDjE,EAAOtC,OAAe,KAAR1B,IAAiB,KAAe,KAARiI,GAAgB,QAEtDjE,EAAOtC,KAAK1B,GACZkI,MAGJlE,EAAOtC,KAAK1B,EAGpB,OAAOgE,GAEX,QAASmE,GAAWlF,GAChB,MAAOA,GAAMmF,IAAI,SAAUpI,GACvB,GAAIgE,GAAS,EAOb,OANIhE,GAAQ,QACRA,GAAS,MACTgE,GAAUqE,OAAOC,aAAatI,IAAU,GAAK,KAAO,OACpDA,EAAQ,MAAgB,KAARA,GAEpBgE,GAAUqE,OAAOC,aAAatI,KAE/B4B,KAAK,IAlSf,GACOtB,GAAOiI,KAAM/E,EAAQgF,OAAOhF,MAAOiF,EAAajF,EAAMiF,WACtD5H,EAAaP,EAAKoI,GAAK,IAAKpG,EAAUqG,OAAOC,UAAWrG,GAAWoG,OAAOC,UAAW3I,EAAY,YAmDjG4I,EAAMC,KAAKD,GACVA,KACDA,EAAM,WACF,OAAO,GAAIC,OAAOC,YA4O1BN,EAAWjF,GACPwF,MACI1G,QAASA,EACTC,QAASA,EACTW,OAAQA,EACRd,YAAaA,EACbI,SAAUA,EACVC,SAAUA,EACV1C,QAASA,EACTe,IAAKA,EACLe,QAASA,EACTM,WAAYA,EACZnB,SAAUA,EACVyD,cAAeA,EACfzB,KAAMA,EACNxC,WAAYA,EACZqI,IAAKA,EACLvH,UAAWA,EACXpB,MAAOA,EACPS,IAAKA,EACLiD,WAAYA,EACZE,cAAeA,EACfM,UAAWA,EACXF,WAAYA,EACZD,YAAaA,EACbX,eAAgBA,EAChBX,kBAAmBA,EACnBD,eAAgBA,EAChBE,eAAgBA,EAChBvB,IAAKA,EACLF,eAAgBA,EAChByF,cAAeA,EACfjC,cAAeA,EACf6C,QAASA,EACTW,WAAYA,EACZJ,WAAYA,KAGpBvE,EAAMyF,QAAQD,KAAOxF,EAAMwF,KAC3BxF,EAAM0F,QAAQF,KAAOxF,EAAMwF,QAExBR,OAAOhF,OACE,kBAAV1D,SAAwBA,OAAOqJ,IAAMrJ,OAAS,SAAUsJ,EAAIC,EAAIC,IACrEA,GAAMD,OAEV,SAAUxJ,EAAGC,QACVA,OAAO,qBACH,aACA,aACDD,IACL,YACG,SAAU0J,GAmDP,QAASC,KACL,OACIC,MAAO,EACPC,OAAQ,EACRC,SAAU,GA6ClB,QAASC,GAAYrG,EAAMsG,EAAOC,GAC9B,MAAOC,GAAYC,QAAQC,QAAQ1G,EAAMsG,EAAOC,GAEpD,QAASI,GAAUC,EAAOC,GACtB,GAAIC,KACJ,IAAIF,EAAMlI,OAAS,GAAKqI,SAASH,MAAO,CACpC,IACIE,EAAWF,EAAM/B,IAAI,SAAUmC,GAC3B,MAAOD,UAASH,MAAMK,KAAKD,KAEjC,MAAOE,GACLjH,EAAMkH,aAAaD,GAEvBE,QAAQC,IAAIP,GAAUQ,KAAKT,EAAUA,OAErCA,KAnHX,GACOU,GAAMR,SAAU9G,EAAQgF,OAAOhF,MAAOuH,EAAQvH,EAAMuH,MAAO/B,EAAOxF,EAAMwF,KAAMjJ,EAAUiJ,EAAKjJ,QAC7FiL,EAAWD,EAAME,QACjBC,KAAM,SAAU/G,GACZ2D,KAAKqD,MAAQhH,EACb2D,KAAKsD,QAAU,EACftD,KAAKuD,SAETC,IAAK,SAAU9J,EAAKxB,GAChB,GAAIuL,GAAMzD,KAAMM,EAAMmD,EAAIF,KAAMG,GACxBhK,IAAKA,EACLxB,MAAOA,EAEfoI,GAAI5G,GAAOgK,EACND,EAAIE,OAGLF,EAAIG,MAAMC,MAAQH,EAClBA,EAAMI,MAAQL,EAAIG,MAClBH,EAAIG,MAAQF,GAJZD,EAAIE,MAAQF,EAAIG,MAAQF,EAMxBD,EAAIH,SAAWG,EAAIJ,OACnB/C,EAAImD,EAAIE,MAAMjK,KAAO,KACrB+J,EAAIE,MAAQF,EAAIE,MAAME,MACtBJ,EAAIE,MAAMG,MAAQ,MAElBL,EAAIH,WAGZS,IAAK,SAAUrK,GACX,GAAI+J,GAAMzD,KAAM0D,EAAQD,EAAIF,KAAK7J,EACjC,OAAIgK,IACIA,IAAUD,EAAIE,OAASD,IAAUD,EAAIG,QACrCH,EAAIE,MAAQD,EAAMG,MAClBJ,EAAIE,MAAMG,MAAQ,MAElBJ,IAAUD,EAAIG,QACVF,EAAMI,QACNJ,EAAMI,MAAMD,MAAQH,EAAMG,MAC1BH,EAAMG,MAAMC,MAAQJ,EAAMI,OAE9BJ,EAAMI,MAAQL,EAAIG,MAClBF,EAAMG,MAAQ,KACdJ,EAAIG,MAAMC,MAAQH,EAClBD,EAAIG,MAAQF,GAETA,EAAMxL,OAfjB,UAmBJ8L,EAAoBvC,EAAE,2RAAuS,GAQ7TQ,EAAcgB,EAAME,QACpBC,KAAM,SAAUa,GACZjE,KAAKkE,OAAS,GAAIhB,GAAS,KAC3BlD,KAAKmE,aAAaF,IAEtBA,SAAWG,mBAAoB,GAC/BjC,QAAS,SAAU1G,EAAMsG,EAAOsC,GAAvB,GAIDC,GAAkCC,EAA0CC,EAI5EnI,EACA2F,EACAyC,EACK/K,EACDxB,CAXR,KAAKuD,EACD,MAAOiG,IAGX,IADI4C,EAAWpD,EAAK1H,UAAUuI,GAAQwC,EAAWrD,EAAKnH,QAAQ0B,EAAO6I,GAAWE,EAAexE,KAAKkE,OAAOH,IAAIQ,GAC3GC,EACA,MAAOA,EAEPnI,GAAOqF,IACPM,EAAaqC,EAAMA,EAAML,EACzBS,EAAiBzE,KAAK0E,kBAAkBC,WAAU,EACtD,KAASjL,IAAOqI,GACR7J,EAAQ6J,EAAMrI,GACdzB,EAAQC,KACR8J,EAAWD,MAAMrI,GAAOxB,EAehC,OAZAuJ,GAAEO,GAAYvG,KAAKA,GACnBuG,EAAW4C,YAAYH,GACvBzB,EAAI6B,KAAKD,YAAY5C,IAChBvG,EAAO,IAAItB,SACZkC,EAAKsF,MAAQK,EAAW8C,YAAc9E,KAAKiE,QAAQG,mBACnD/H,EAAKuF,OAASI,EAAW+C,aACzB1I,EAAKwF,SAAW4C,EAAeO,UAAYhF,KAAKiE,QAAQG,oBAExD/H,EAAKsF,MAAQ,GAAKtF,EAAKuF,OAAS,GAChC5B,KAAKkE,OAAOV,IAAIe,EAAUlI,GAE9B2F,EAAWiD,WAAWC,YAAYlD,GAC3B3F,GAEXqI,gBAAiB,WACb,MAAOjD,GAAE,gGAA+GzB,KAAKiE,QAAQG,mBAAqB,eAAiBpE,KAAKiE,QAAQG,mBAAqB,4BAAkC,KAGvPnC,GAAYC,QAAU,GAAID,GAmB1BvG,EAAMwF,KAAKe,YAAcA,EACzBvG,EAAMwF,KAAKgC,SAAWA,EACtBxH,EAAMwF,KAAKkB,UAAYA,EACvB1G,EAAMwF,KAAKY,YAAcA,GAC3BpB,OAAOhF,MAAMyJ,SACC,kBAAVnN,SAAwBA,OAAOqJ,IAAMrJ,OAAS,SAAUsJ,EAAIC,EAAIC,IACrEA,GAAMD,OAEV,SAAUxJ,EAAGC,QACVA,OAAO,eAAgB,aAAcD,IACvC,WAgDE,MA/CC,YAGG,QAASqN,GAAaC,GAAtB,GAEQC,GAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,EADpC1J,EAAS,GAETjC,EAAI,CAER,KADAoL,EAAQQ,EAAWR,GACRA,EAAMlL,OAAVF,GACHqL,EAAOD,EAAMjL,WAAWH,KACxBsL,EAAOF,EAAMjL,WAAWH,KACxBuL,EAAOH,EAAMjL,WAAWH,KACxBwL,EAAOH,GAAQ,EACfI,GAAe,EAAPJ,IAAa,EAAIC,GAAQ,EACjCI,GAAe,GAAPJ,IAAc,EAAIC,GAAQ,EAClCI,EAAc,GAAPJ,EACHpM,MAAMmM,GACNI,EAAOC,EAAO,GACPxM,MAAMoM,KACbI,EAAO,IAEX1J,EAASA,EAAS4J,EAAQrG,OAAOgG,GAAQK,EAAQrG,OAAOiG,GAAQI,EAAQrG,OAAOkG,GAAQG,EAAQrG,OAAOmG,EAE1G,OAAO1J,GAEX,QAAS2J,GAAWR,GAApB,GAEapL,GACDqF,EAFJpD,EAAS,EACb,KAASjC,EAAI,EAAOoL,EAAMlL,OAAVF,EAAkBA,IAC1BqF,EAAI+F,EAAMjL,WAAWH,GACjB,IAAJqF,EACApD,GAAUsE,EAAalB,GACZ,KAAJA,GACPpD,GAAUsE,EAAa,IAAMlB,IAAM,GACnCpD,GAAUsE,EAAa,IAAU,GAAJlB,IAClB,MAAJA,IACPpD,GAAUsE,EAAa,IAAMlB,IAAM,IACnCpD,GAAUsE,EAAa,IAAMlB,IAAM,EAAI,IACvCpD,GAAUsE,EAAa,IAAU,GAAJlB,GAGrC,OAAOpD,GAxCd,GACOR,GAAQgF,OAAOhF,MAAOiF,EAAajF,EAAMiF,WAAYH,EAAeD,OAAOC,aAC3EsF,EAAU,mEAwCdnF,GAAWjF,EAAMwF,MACbkE,aAAcA,EACdS,WAAYA,OAGbnF,OAAOhF,OACE,kBAAV1D,SAAwBA,OAAOqJ,IAAMrJ,OAAS,SAAUsJ,EAAIC,EAAIC,IACrEA,GAAMD,OAEV,SAAUxJ,EAAGC,QACVA,OAAO,oBAAqB,cAAeD,IAC7C,WAgEE,MA/DC,UAAU0J,GAAV,GACOjJ,GAAOiI,KAAM/E,EAAQgF,OAAOhF,MAAOiF,EAAajF,EAAMiF,WAAYoF,EAAUtE,EAAEsE,QAC9EC,GACAC,UAAW,WAEP,MADAjG,MAAKkG,WAAalG,KAAKkG,gBAG3BC,YAAa,SAAUC,GAMnB,MALKpG,MAAKkG,WAGNlG,KAAKkG,WAAWtM,KAAKwM,GAFrBpG,KAAKkG,YAAcE,GAIhBpG,MAEXqG,eAAgB,SAAUD,GAAV,GACRH,GAAYjG,KAAKiG,YACjBK,EAAQP,EAAQK,EAASH,EAI7B,OAHa,IAATK,GACAL,EAAUM,OAAOD,EAAO,GAErBtG,MAEXwG,QAAS,SAAUC,EAAYC,GAAtB,GAEDC,GACAC,EAFAX,EAAYjG,KAAKkG,UAGrB,IAAID,IAAcjG,KAAK6G,WACnB,IAAKD,EAAM,EAASX,EAAU9L,OAAhByM,EAAwBA,IAClCD,EAAWV,EAAUW,GACjBD,EAASF,IACTE,EAASF,GAAYC,EAIjC,OAAO1G,OAEX8G,cAAe,SAAUnE,GACrBA,EAAIA,MACJA,EAAEyD,QAAUpG,KACZA,KAAKwG,QAAQ,gBAAiB7D,IAElCoE,eAAgB,WACZ/G,KAAKwG,QAAQ,kBAAoBJ,QAASpG,QAE9CgH,QAAS,WAEL,MADAhH,MAAK6G,YAAc7G,KAAK6G,YAAc,GAAK,EACpC7G,MAEXiH,OAAQ,WAEJ,MADAjH,MAAK6G,WAAarO,EAAKI,KAAKoH,KAAK6G,YAAc,GAAK,EAAG,GAChD7G,MAEXkH,eAAgB,SAAUC,EAAOjP,GACzB8H,KAAKmH,IACLnH,KAAKmH,GAAOd,eAAerG,MAE/BA,KAAKmH,GAASjP,EACdA,EAAMiO,YAAYnG,OAG1BW,GAAWjF,GAAS0L,QAAUpB,eAAgBA,MAChDtF,OAAOhF,MAAMyJ,QACRzE,OAAOhF,OACE,kBAAV1D,SAAwBA,OAAOqJ,IAAMrJ,OAAS,SAAUsJ,EAAIC,EAAIC,IACrEA,GAAMD,OAEV,SAAUxJ,EAAGC,QACVA,OAAO,6BACH,sBACA,iBACDD,IACL,WA09BE,MAl9BC,UAAU0J,EAAGxG,GAg7BV,QAASoM,GAAUC,EAAGC,GAClB,MAAOD,GAAEpP,MAAMkH,EAAImI,EAAErP,MAAMkH,EAE/B,QAASoI,GAAgBF,EAAGC,GACxB,MAAO,KAAM/O,EAAKiP,IAAIjP,EAAKiP,IAAIH,EAAIC,GAAK,KAp7B/C,GA8NOG,GAkGAC,EAgBAC,EAoBAC,EA8IAC,EAoBAC,EAWAC,EASAC,EAiCAC,EAoBAC,EAKAC,EACAC,EAmBAC,EAOAC,EAIAC,EAcAC,EAoBAC,EAmDAC,EA8DAC,EAoGAC,EAz2BArQ,EAAOiI,KAAM/E,EAAQgF,OAAOhF,MAAOiF,EAAajF,EAAMiF,WAAYO,EAAOxF,EAAMwF,KAAM9F,EAAS8F,EAAK9F,OAAQ0N,EAAOpN,EAAMyF,QAAS4H,EAAOrN,EAAMsN,SAAU5H,EAAU1F,EAAM0F,QAAS6H,EAAc7H,EAAQ6H,YAAaC,EAAO9H,EAAQ8H,KAAMC,EAAwB/H,EAAQ+H,sBAAuBC,EAAWhI,EAAQgI,SAAUC,EAAQjI,EAAQiI,MAAOC,EAAelI,EAAQkI,aAAcC,EAAmBnI,EAAQmI,iBAAkBC,EAAsBpI,EAAQoI,oBAAqBC,EAAerI,EAAQqI,aAAcC,EAAiBtI,EAAQsI,eAAgBC,EAAevI,EAAQuI,aAAcC,EAAYxI,EAAQwI,UAAWC,EAAczI,EAAQyI,YAAaC,EAAkB1I,EAAQ0I,gBAAiBC,EAAc3I,EAAQ2I,YAAaC,EAAe5I,EAAQ4I,aAAcC,EAAkB7I,EAAQ6I,gBAAiBC,EAAU9I,EAAQ8I,QAASC,EAAO/I,EAAQ+I,KAAMC,EAAehJ,EAAQgJ,aAAcC,EAAmBjJ,EAAQiJ,iBAAkBC,EAAelJ,EAAQkJ,aAAcC,GAAenJ,EAAQmJ,aAAcC,GAAgBpJ,EAAQoJ,cAAeC,GAAoBrJ,EAAQqJ,kBAAmBC,GAAqBtJ,EAAQsJ,mBAAoBC,GAAavJ,EAAQuJ,WAAYC,GAAqBxJ,EAAQwJ,mBAAoBlS,GAAawI,EAAKxI,WAAYN,GAAQgJ,EAAQhJ,MAC/vCyS,GAAM,MAAOC,GAAQ,OAAQC,GAAkB3J,EAAQ2J,gBAAiBC,GAAkB,IAAMjS,GAAaP,EAAKoI,GAAK,IAAKqK,GAAM,MAAOC,GAAc,cAAeC,GAAc,MAAOC,GAAkB,gBAAiBC,GAAa,YAAaC,GAAa,YAAaC,GAAgB,eAAgBC,GAAa,YAAaC,GAAe,cAAeC,GAAa,YAAaC,GAAS,SAAUC,GAAI,IAAKC,GAAI,IAAKC,GAAO,OAAQC,IACpbV,GACAC,GACAC,IACDS,IACCR,GACAC,GACAC,IAEJO,IACAC,gBAAiB,SAAUC,GACvB,GAAwGC,GAAaC,EAAjHC,EAAOtM,KAAMiE,EAAUqI,EAAKrI,QAASsI,EAAS/T,EAAKiP,IAAI6E,EAAKjI,IAAImI,SAASC,EAAIN,EAAQO,UAAUC,IAA+BC,GAAY,EAAOC,IAUrJ,OATI5I,GAAQ6I,eAAeC,UACvBX,EAAcE,EAAKU,oBAAoBb,GACvCS,GAAY,EACZC,EAAYP,EAAKW,qBAAqBb,EAAaG,EAAQtI,EAAQ6I,iBAEnE7I,EAAQiJ,eAAeH,UACvBV,EAAcC,EAAKa,oBAAoBhB,EAASS,GAChDxR,EAAOyR,EAAWP,EAAKc,qBAAqBf,EAAaE,EAAQtI,EAAQiJ,eAAgBf,EAASS,KAE/FC,GAEXI,qBAAsB,SAAUI,EAAQd,EAAQtI,GAC5C,MAAOjE,MAAKsN,gBAAgBD,EAAQd,EAAQtI,IAEhDmJ,qBAAsB,SAAUC,EAAQd,EAAQtI,EAASkI,EAASS,GAC9D,GAAIW,GAAiBvN,KAAKuN,gBAAkBvN,KAAKuN,eAAehB,EAAQJ,EAASS,EACjF,OAAO5M,MAAKsN,gBAAgBD,EAAQd,EAAQtI,EAASsJ,IAEzDD,gBAAiB,SAAUD,EAAQd,EAAQtI,EAASsJ,GAAnC,GAcJtT,GACDuT,EAdJzL,GACA0L,QACI9L,MAAOsC,EAAQtC,MACf/E,MAAOqH,EAAQrH,MACf8Q,SAAUzJ,EAAQyJ,WAGtBlB,EAASxM,KAAKqE,IAAImI,SAClBmB,EAAS,GAAI5E,GAAK6E,QAClBpB,EAAOpN,EACPoN,EAAOC,GACRF,GACCsB,EAAY7N,KAAK8N,iBACrB,KAAS7T,EAAI,EAAOoT,EAAOlT,OAAXF,EAAmBA,IAC3BuT,EAAO,GAAI1E,GAAKiF,KAAKhM,GACrBwL,IACAI,EAAOpB,OAASgB,EAAeF,EAAOpT,KAE1CuT,EAAKQ,OAAOL,EAAOnB,QAAQyB,OAAON,EAAOO,QAAQb,EAAOpT,KACxD4T,EAAUzS,OAAOoS,EAErB,OAAOK,GAAUM,UAErBC,eAAgB,SAAUjC,EAAS9P,EAAMgS,EAAMC,EAAMC,GACjD,GAAIjC,GAAOtM,KAAMwO,EAAOlC,EAAKmC,UAAUpS,EAAMgS,EAAMC,EAAMC,GAAatK,EAAUkI,EAAQlI,QAASyK,EAAiBzK,EAAQ8I,UAAY9I,EAAQuJ,UAAYT,WAAY,CACtK,OAAOtL,GAAEnB,IAAIkO,EAAM,SAAUjP,GACzB,GAAIoP,GAAQrC,EAAKsC,cAAcrP,EAC/B,OAAKmP,IAA4B,KAAVC,EAAvB,EACWA,MAKnBE,GAAoBvF,EAAanG,QACjCc,SACI6K,WAAY,GACZC,QAAUC,OAAQrE,GAAW,KAC7BmC,gBAAkBC,SAAS,GAC3BkC,WAAW,GAEfC,MAAO,WACH,OACIvW,IAAK,EACLC,IAAKoH,KAAKiE,QAAQkL,WAAWhV,SAGrCiV,OAAQ,SAAU/K,GACdrE,KAAKqE,IAAMA,EACXrE,KAAKqP,gBAET3C,QAAS,WACL,MAAO1M,MAAKqE,KAEhBgL,aAAc,WACV,GAAmKC,GAAUrV,EAAzKqS,EAAOtM,KAAMuP,EAAejD,EAAKrI,QAAQ8K,OAAQV,EAAOkB,EAAalB,MAAQ,EAAGC,EAAOiB,EAAajB,MAAQ,EAAGtM,EAAa,GAAIqH,GAAS0F,EAASzC,EAAKyC,MAC3J,KAAK9U,EAAI,EAAO8U,EAAO5U,OAAXF,EAAmBA,IAC3B8U,EAAO9U,GAAGmV,OAAOpN,GACjBsN,EAAWP,EAAO9U,GAAGoK,IACrB0K,EAAO9U,GAAGmV,OAAO9C,EAAKkD,QAAQnB,EAAOpU,EAAIqU,GAAMmB,YAAY,EAAGH,EAAS3N,QAAS2N,EAAS1N,YAGjG6M,UAAW,SAAUpS,EAAMgS,EAAMC,EAAMC,GACnC,GAAqKtU,GAAjKqS,EAAOtM,KAAMiE,EAAUqI,EAAKrI,QAASkL,EAAalL,EAAQkL,WAAWhV,OAAQuV,EAAQ,EAAGC,EAAWR,EAAa9S,GAAQ,EAAGuT,EAAW,IAAMD,EAAUnB,IAG1J,KAFAH,EAAOA,GAAQ,EACfC,EAAOA,GAAQ,EACVrU,EAAIoU,EAAUsB,EAAJ1V,EAAcA,GAAKqU,EAE1BoB,EADAzL,EAAQ4L,QACA,IAAM5V,EAAI2V,EAEV3V,EAAI2V,EAEhBF,EAAQtX,GAAMsX,EAAO3E,IAAmB,IAClCwD,GAAcnN,EAAQ2E,QAAQ2J,EAAOnB,IACvCC,EAAK5U,KAAK8V,EAGlB,OAAOlB,IAEXsB,eAAgB,WACZ,MAAO9P,MAAKyO,UAAU,IAE1BsB,eAAgB,WACZ,MAAO/P,MAAKyO,UAAU,KAE1BG,cAAe,SAAUoB,GACrB,OAAQ,IAAMA,EAAWhQ,KAAKiE,QAAQ6K,YAAc,KAExD1C,YAAa,WACT,MAAO3K,GAAEnB,IAAIN,KAAK8P,iBAAkBrO,EAAEwO,MAAMjQ,KAAK4O,cAAe5O,QAEpEkQ,WAAY,WACR,UAEJlD,oBAAqB,SAAUb,GAC3B,GAAIW,GAAiB9M,KAAKiE,QAAQ6I,cAClC,OAAO9M,MAAKoO,eAAejC,EAAS,EAAGW,EAAeuB,KAAMvB,EAAewB,OAE/EnB,oBAAqB,SAAUhB,EAASS,GAAnB,GACb3I,GAAUjE,KAAKiE,QACfiJ,EAAiBjJ,EAAQiJ,eACzBJ,EAAiB7I,EAAQ6I,eACzBE,EAAsBJ,EAAY5M,KAAKyO,UAAU,EAAG3B,EAAeuB,KAAMvB,EAAewB,MAAQ,IACpG,OAAOtO,MAAKoO,eAAejC,EAAS,GAAKe,EAAemB,KAAMnB,EAAeoB,KAAMtB,IAEvFO,eAAgB,SAAUhB,EAAQJ,EAASS,GAA3B,GAEJuD,GACAC,EACAhE,EACAmB,CAJR,OAAIpB,GAAQlI,QAAQoM,OAASxF,IACrBsF,EAAa,KAAwC,EAAjCnQ,KAAKiE,QAAQkL,WAAWhV,QAC5CiW,EAAc5X,EAAK8X,IAAIH,EAAapX,IAAcwT,EAClDH,EAAcpM,KAAKoM,cACnBmB,EAAiB,SAAUmC,GAC3B,OAAK9C,GAAaxL,EAAQ2E,QAAQ2J,EAAOtD,GAC9BG,EAEA6D,IARnB,GAcJG,gBAAiB,WAAA,GACiEtW,GAAGuW,EAAMC,EAAMC,EAAYC,EAAMC,EAUvGC,EAVJvE,EAAOtM,KAAMiE,EAAUqI,EAAKrI,QAAS6M,EAAY7M,EAAQ6M,cACzDC,EAAQ/Q,KAAKgR,eAAiB,GAAIlI,GAAKmI,OAAQC,OAAQ,IAC3D,KAAKjX,EAAI,EAAO6W,EAAU3W,OAAdF,EAAsBA,IAC9BuW,EAAOM,EAAU7W,GACjBwW,EAAOnE,EAAK6E,aAAaX,GACzBE,EAAapE,EAAKkD,QAAQgB,EAAKY,MAC/BT,EAAOH,EAAKY,KAAO5Y,EAAK6Y,MAAMb,EAAKY,MACnCX,EAAK3B,YAAc6B,EAAOD,EAAWhB,MACrCkB,EAAOpY,EAAK8Y,KAAKd,EAAKe,IAAMf,EAAKe,GACjCd,EAAKf,QAAUkB,EAAOD,GAAQD,EAAWhB,MACrCmB,EAAOtG,GAAarI,QAAQsP,WAAWf,GACvCgB,MACI7U,MAAO4T,EAAK5T,MACZ8U,QAASlB,EAAKkB,SAElBjE,QAAUiE,QAASlB,EAAKkB,WAE5BX,EAAM3V,OAAOyV,EAEjBvE,GAAKqF,aAAaZ,IAEtBI,aAAc,SAAUX,GACpB,MAAOxQ,MAAKwP,QAAQgB,EAAKY,KAAMZ,EAAKe,GAAK,IAE7C/B,QAAS,SAAU4B,EAAMG,GACrB,GAA4IK,GAAoCC,EAAWnC,EAAvLpD,EAAOtM,KAAMiE,EAAUqI,EAAKrI,QAASgL,EAAYhL,EAAQgL,UAAW5K,EAAMiI,EAAKjI,IAAKmK,EAAOlC,EAAKF,cAAe0F,EAAYtD,EAAKrU,OAAe4X,EAAY,IAAMD,CAerK,OAdI7N,GAAQ4L,UAAYZ,IACpBmC,GAAQA,EAAO,GAAKU,GAExBV,EAAO1Y,GAAWF,EAAK6Y,MAAMD,GAAO,EAAGU,EAAY,GACnDD,EAAYrD,EAAK4C,GACbnC,IACA4C,GAAwBE,EAAY,EACpB,EAAZF,IACAA,GAAa,MAGrBN,EAAK7Y,GAAWF,EAAK8Y,KAAKC,GAAMH,GAAOA,EAAMU,EAAY,GACzDF,EAAQL,EAAKH,EAAO,EACpB1B,EAAQqC,EAAYH,EACb,GAAIzH,GAAK9F,EAAImI,SAAU,EAAGnI,EAAIzC,SAAW,EAAGiQ,EAAWnC,IAElEe,KAAM,SAAUW,EAAMG,GAAhB,GACEd,GAAOzQ,KAAKwP,QAAQ4B,EAAMG,GAC1BzC,EAAa2B,EAAK3B,WAAa,IAC/BkD,EAAWlD,EAAa2B,EAAKf,KACjC,OAAO,IAAI3G,GAAKkJ,KACZxB,EAAKnR,EAAEF,EACPqR,EAAKnR,EAAEmN,IAEPqC,WAAYA,EACZkD,SAAUA,EACVE,QAASzB,EAAK1R,EACdoT,QAAS1B,EAAK1R,KAGtBqT,mBAAoB,SAAUC,GAC1B,GAA+BpY,GAA4CwW,EAAvEnE,EAAOtM,KAAMsG,EAAQ,KAASnM,EAASmS,EAAKrI,QAAQkL,WAAWhV,MACnE,KAAKF,EAAI,EAAOE,EAAJF,EAAYA,IAEpB,GADAwW,EAAOnE,EAAKkD,QAAQvV,GAChBwW,EAAK6B,cAAcD,GAAQ,CAC3B/L,EAAQrM,CACR,OAGR,MAAOqM,KAGf3F,GAAWkO,GAAkB0D,GAAItG,IAC7BvE,GACAzD,SAAW6I,gBAAkBC,SAAS,IACtCwD,gBAAiB,WAAA,GAC4MtW,GAAGuW,EAAMgC,EAAW/B,EAAMI,EAa3O4B,EAbJnG,EAAOtM,KAAMiE,EAAUqI,EAAKrI,QAAS6M,EAAY7M,EAAQ6M,cAAiBT,EAAOpM,EAAQ6I,eAAeuD,KAAMlE,EAAUG,EAAKoG,SAASC,UAAWvG,EAAcD,EAAQC,cAAeI,EAASL,EAAQ9H,IAAImI,SAC3MuE,EAAQ/Q,KAAKgR,eAAiB,GAAIlI,GAAKmI,OAAQC,OAAQ,IAC3D,KAAKjX,EAAI,EAAO6W,EAAU3W,OAAdF,EAAsBA,IAC9BuW,EAAOM,EAAU7W,GACjBuY,GACIf,MACI7U,MAAO4T,EAAK5T,MACZ8U,QAASlB,EAAKkB,SAElBjE,QAAUiE,QAASlB,EAAKkB,UAE5BjB,EAAOnE,EAAKkD,QAAQgB,EAAKY,KAAMZ,EAAKe,IAAI,GACxCV,EAAO,GAAI1G,GAAKqC,EAAQA,EAAOC,EAAIgE,EAAKmC,GAAIpG,EAAOC,EAAIgE,EAAK9D,GAAI,EAAG,KAG/D8F,EADApC,IAASxF,GACDN,GAAarI,QAAQsP,WAAWX,EAAM2B,GAEtC1J,EAAKiF,KAAK8E,WAAWvG,EAAKwG,eAAejC,EAAMzE,GAAcoG,GAAWO,QAEpFhC,EAAM3V,OAAOqX,EAEjBnG,GAAKqF,aAAaZ,IAEtB+B,eAAgB,SAAUjC,EAAMxD,GAAhB,GAQHpT,GAPL+Y,KAAkBC,KAClBzG,GACAqE,EAAKvR,EAAEF,EACPyR,EAAKvR,EAAEmN,GAEPyG,EAAc,GAAInK,GAAK6E,OAAOpB,EAAQqE,EAAKsC,IAC3CC,EAAc,GAAIrK,GAAK6E,OAAOpB,EAAQqE,EAAK9R,EAC/C,KAAS9E,EAAI,EAAOoT,EAAOlT,OAAXF,EAAmBA,IAC/B+Y,EAAYpZ,KAAKsZ,EAAYhF,QAAQb,EAAOpT,KAC5CgZ,EAAYrZ,KAAKwZ,EAAYlF,QAAQb,EAAOpT,IAKhD,OAHA+Y,GAAYnD,UACZmD,EAAYpZ,KAAKoZ,EAAY,IAC7BC,EAAYrZ,KAAKqZ,EAAY,IACtBA,EAAYI,OAAOL,IAE9B9G,gBAAiB,SAAUC,GACvB,GAA+HmH,GAA3HhH,EAAOtM,KAAMiE,EAAUqI,EAAKrI,QAASsP,EAAajH,EAAKkH,8BAA+BpH,EAAcD,EAAQC,cAA2BI,EAASL,EAAQ9H,IAAImI,SAAUK,IAQ1K,OAPI5I,GAAQ6I,eAAeC,UACvBF,EAAYP,EAAKgB,gBAAgBd,EAAQ+G,EAAYnH,EAAanI,EAAQ6I,iBAE1E7I,EAAQiJ,eAAeH,UACvBuG,EAAahH,EAAKmH,8BAClBrY,EAAOyR,EAAWP,EAAKgB,gBAAgBd,EAAQ8G,EAAYlH,EAAanI,EAAQiJ,kBAE7EL,GAEXS,gBAAiB,SAAUd,EAAQkH,EAAOrG,EAAQpJ,GAAjC,GACT0P,GAAYC,EAAQC,EAYZlG,EAOIH,EAlBZzL,GACA0L,QACI9L,MAAOsC,EAAQtC,MACf/E,MAAOqH,EAAQrH,MACf8Q,SAAUzJ,EAAQyJ,WAGtBG,EAAY7N,KAAK8N,iBACrB,KAAK8F,EAAS,EAAYF,EAAMvZ,OAAfyZ,EAAuBA,IAEpC,GADAD,EAAanH,EAAOC,EAAIiH,EAAME,GAC1BD,EAAa,EAKb,GAJIhG,EAAS,GAAI5E,GAAK6E,QAClBpB,EAAOpN,EACPoN,EAAOC,GACRkH,GACC1P,EAAQoM,OAASxF,GACjBgD,EAAUzS,OAAO,GAAI0N,GAAK8E,OAAOD,EAAQ5L,QACtC,CAEH,IADIyL,EAAO,GAAI1E,GAAKiF,KAAKhM,GACpB8R,EAAU,EAAaxG,EAAOlT,OAAjB0Z,EAAyBA,IACvCrG,EAAKS,OAAON,EAAOO,QAAQb,EAAOwG,IAEtCrG,GAAKuF,QACLlF,EAAUzS,OAAOoS,GAI7B,MAAOK,GAAUM,UAErB2F,SAAU,SAAUzB,GAAV,GAGE0B,GAAyBC,EAAyBC,EAIlDC,EAAgEvF,EAAgDwF,EAAuBC,EAN3I9H,EAAOtM,KAAMiE,EAAUqI,EAAKrI,QAASyI,EAAUJ,EAAKI,UAAWP,EAAUG,EAAKoG,SAASC,UAAWvG,EAAcD,EAAQC,cAAeI,EAASL,EAAQ9H,IAAImI,SAAUzN,EAAIsT,EAAMgC,WAAW7H,GAAS8H,EAAWvV,CASnN,OARIkF,GAAQ6I,eAAeuD,OAASxF,IAAOuB,EAAYjS,OAAS,IACxD4Z,EAAK1B,EAAMjT,EAAIoN,EAAOpN,EAAG4U,EAAK3B,EAAM5F,EAAID,EAAOC,EAAGwH,GAASzb,EAAK+b,MAAMP,EAAID,GAAMhb,GAAa,KAAO,IACxGqT,EAAYvS,KAAK,SAAUyN,EAAGC,GAC1B,MAAOC,GAAgBF,EAAG2M,GAASzM,EAAgBD,EAAG0M,KAEtDC,EAAW1M,EAAgB4E,EAAY,GAAIA,EAAY,IAAM,EAAGuC,EAAQnH,EAAgByM,EAAO7H,EAAY,IAAK+H,EAAQ,GAAKD,EAAUE,EAAO,IAAMzF,EAAQwF,EAChKG,EAAWvV,GAAKvG,EAAKgc,IAAIJ,EAAOrb,IAAcP,EAAKgc,IAAIL,EAAQpb,MAE5DuT,EAAKmI,WAAWlC,GAAGuB,SAASY,KAAKpI,EAAM,GAAIpC,GAAQwC,EAAQiI,GAAIjI,EAAQkG,GAAK0B,MAGvF3M,EAAmBoC,EAAY5G,QAC/BqQ,4BAA6B,WACzB,MAAOxT,MAAK4U,iBAAiB5U,KAAKiE,QAAQ4Q,YAE9CpB,4BAA6B,WACzB,GAAInH,GAAOtM,KAAMiE,EAAUqI,EAAKrI,QAAS6Q,EAAgB,CAIzD,OAHI7Q,GAAQ6I,eAAeC,UACvB+H,EAAgB7Q,EAAQ4Q,WAErBvI,EAAKsI,iBAAiB3Q,EAAQ8Q,UAAWD,IAEpDL,SAAU,WACN,MAAO1K,MAGfpJ,EAAWgH,EAAiB4K,GAAI7K,GAC5BE,EAAuBkC,EAAgB3G,QACvCqQ,4BAA6B,WACzB,GAAIlH,GAAOtM,KAAMgV,IAIjB,OAHA1I,GAAK2I,4BAA4B,SAAUC,GACvCF,EAAUpb,KAAKsb,IAChB5I,EAAKrI,QAAQ6I,gBACTkI,GAEXvB,4BAA6B,WACzB,GAAInH,GAAOtM,KAAMgV,IAIjB,OAHA1I,GAAK6I,4BAA4B,SAAUD,GACvCF,EAAUpb,KAAKsb,IAChB5I,EAAKrI,QAAQiJ,gBACT8H,GAEXP,SAAU,WACN,MAAO3K,MAGfnJ,EAAWiH,EAAqB2K,GAAI7K,GAChCG,EAAYqB,EAAK/F,QACjBC,KAAM,SAAUa,GACZ,GAAIqI,GAAOtM,IACXkJ,GAAKqJ,GAAGnP,KAAKsR,KAAKpI,EAAMrI,GACxBA,EAAUqI,EAAKrI,QACfA,EAAQ8Q,UAAY9Q,EAAQ8Q,WAAazI,EAAKrI,QAAQ4Q,UAAY,GAEtE5Q,SACIoM,KAAM,QACNvB,WAAY,EACZe,SAAS,EACTgF,UAAW,GACXlc,IAAK,EACLC,IAAK,IACLmW,QAAUC,OAAQrE,GAAW,KAC7BmC,gBACIlQ,MAAOkO,GACPiC,SAAS,EACTpL,MAAO,GAEXuL,gBAAkBtQ,MAAO,SAE7BwY,aAAc,SAAUC,GACpB,MAAOtL,GAAYwI,GAAG6C,aAAaV,KAAK1U,KAAMqV,GAAa,GAE/DjG,OAAQ,SAAU/K,GACdrE,KAAKqE,IAAMA,EACXrE,KAAKqP,gBAETA,aAAc,WACV,GAA4OC,GAAUrV,EAAlPqS,EAAOtM,KAAMiE,EAAUqI,EAAKrI,QAASsL,EAAetL,EAAQ8K,OAAQV,EAAOkB,EAAalB,MAAQ,EAAGC,EAAOiB,EAAajB,MAAQ,EAAGtM,EAAa,GAAIqH,GAASmF,EAAOlC,EAAKmC,UAAUxK,EAAQ4Q,UAAWxG,EAAMC,GAAOS,EAASzC,EAAKyC,MACpO,KAAK9U,EAAI,EAAO8U,EAAO5U,OAAXF,EAAmBA,IAC3B8U,EAAO9U,GAAGmV,OAAOpN,GACjBsN,EAAWP,EAAO9U,GAAGoK,IACrB0K,EAAO9U,GAAGmV,OAAO9C,EAAKkD,QAAQhB,EAAKvU,IAAIwV,YAAY,EAAGH,EAAS3N,QAAS2N,EAAS1N,YAGzF8K,QAAS,WACL,MAAO1M,MAAKqE,KAEhBoK,UAAW,SAAUpS,EAAMgS,EAAMC,EAAMC,GACnC,GAAiGrM,GAAoBjI,EAAjHqS,EAAOtM,KAAMiE,EAAUqI,EAAKrI,QAASqR,EAAYhJ,EAAK8I,aAAa/Y,GAAO1D,EAAMsL,EAAQtL,IAAc6V,IAG1G,KAFAH,EAAOA,GAAQ,EACfC,EAAOA,GAAQ,EACVrU,EAAIoU,EAAUiH,EAAJrb,EAAeA,GAAKqU,EAC/BpM,GAAW,IAAMvJ,EAAMsB,EAAIoC,GAAQ,IAC7BkS,GAAcnN,EAAQ2E,QAAQ7D,EAASqM,IACzCC,EAAK5U,KAAKsI,EAGlB,OAAOsM,IAEXsB,eAAgB,WACZ,MAAO9P,MAAKyO,UAAUzO,KAAKiE,QAAQ4Q,YAEvC9E,eAAgB,WACZ,MAAO/P,MAAKyO,UAAUzO,KAAKiE,QAAQ8Q,YAEvCnG,cAAe,SAAU3U,GACrB,OAAQ,IAAMA,EAAI+F,KAAKiE,QAAQ6K,YAAc,KAEjD1C,YAAayC,GAAkB0D,GAAGnG,YAClC8D,WAAY,WACR,UAEJlD,oBAAqB,SAAUb,GAC3B,GAAIW,GAAiB9M,KAAKiE,QAAQ6I,cAClC,OAAO9M,MAAKoO,eAAejC,EAASnM,KAAKiE,QAAQ4Q,UAAW/H,EAAeuB,KAAMvB,EAAewB,OAEpGnB,oBAAqB,SAAUhB,EAASS,GAAnB,GACb3I,GAAUjE,KAAKiE,QACfiJ,EAAiBjJ,EAAQiJ,eACzBJ,EAAiB7I,EAAQ6I,eACzBE,EAAsBJ,EAAY5M,KAAKyO,UAAUxK,EAAQ4Q,UAAW/H,EAAeuB,KAAMvB,EAAewB,MAAQ,IACpH,OAAOtO,MAAKoO,eAAejC,EAASnM,KAAKiE,QAAQ8Q,UAAW7H,EAAemB,KAAMnB,EAAeoB,KAAMtB,IAE1GuD,gBAAiB1B,GAAkB0D,GAAGhC,gBACtCY,aAAc,SAAUX,GACpB,MAAOxQ,MAAKwP,QAAQgB,EAAKY,KAAMZ,EAAKe,KAExC/B,QAAS,SAAUlI,EAAGC,GAClB,GAAqFgO,GAAjFjJ,EAAOtM,KAAMiE,EAAUqI,EAAKrI,QAASuR,EAAQvR,EAAQ6K,WAAYzK,EAAMiI,EAAKjI,GAchF,OAbAiD,GAAI5O,GAAW4O,EAAGrD,EAAQtL,IAAKsL,EAAQrL,KACvC2O,EAAI7O,GAAW6O,GAAKD,EAAGA,EAAGrD,EAAQrL,KAC9BqL,EAAQ4L,UACRvI,GAAK,GACLC,GAAK,IAETD,GAAK,IAAMA,EAAIkO,GAAS,IACxBjO,GAAK,IAAMA,EAAIiO,GAAS,IAChBlO,EAAJC,IACAgO,EAAMjO,EACNA,EAAIC,EACJA,EAAIgO,GAED,GAAIpL,GAAK9F,EAAImI,SAAU,EAAGnI,EAAIzC,SAAW,EAAG0F,EAAGC,EAAID,IAE9DmJ,KAAM,SAAUW,EAAMG,GAAhB,GAIEzC,GACAkD,EACArZ,EACAC,EANAqL,EAAUjE,KAAKiE,QACfuR,EAAQ,IAAMvR,EAAQ6K,WACtB2B,EAAOzQ,KAAKwP,QAAQ4B,EAAMG,EAmB9B,OAdKnQ,GAAQF,KAAKjJ,QAAQsZ,KACtBA,EAAKH,GAETzY,EAAMH,EAAKG,IAAIyY,EAAMG,GACrB3Y,EAAMJ,EAAKI,IAAIwY,EAAMG,GACjBtN,EAAQ4L,SACRf,EAAanW,EACbqZ,EAAWpZ,IAEXkW,EAAa,IAAMlW,EACnBoZ,EAAW,IAAMrZ,GAErBmW,GAAcA,EAAa0G,GAAS,IACpCxD,GAAYA,EAAWwD,GAAS,IACzB,GAAIzM,GAAKkJ,KACZxB,EAAKnR,EAAEF,EACPqR,EAAKnR,EAAEmN,IAEPqC,WAAYA,EACZkD,SAAUA,EACVE,QAASzB,EAAK1R,EACdoT,QAAS1B,EAAK1R,KAGtB+U,SAAU,SAAUzB,GAChB,GAAI/F,GAAOtM,KAAMiE,EAAUqI,EAAKrI,QAASuI,EAASF,EAAKjI,IAAImI,SAAUuH,EAAK1B,EAAMjT,EAAIoN,EAAOpN,EAAG4U,EAAK3B,EAAM5F,EAAID,EAAOC,EAAGwH,EAAQzb,EAAKJ,MAAMI,EAAK+b,MAAMP,EAAID,GAAMhb,IAAayc,EAAQvR,EAAQ6K,UAK5L,OAJK7K,GAAQ4L,UACToE,GAAS,GACTuB,GAAS,KAELvB,EAAQuB,EAAQ,KAAO,KAEnCtG,MAAOnF,EAAYwI,GAAGrD,MACtBuG,YAAa1L,EAAYwI,GAAGkD,YAC5BC,gBAAiB3L,EAAYwI,GAAGmD,kBAEpC/U,EAAWkH,EAAU0K,GAAItG,IACrBnE,EAAqB2B,EAAatG,QAClCc,SACI0R,IAAK,EACLC,QAAS,GAEbxG,OAAQ,SAAUyG,GACd,GAAkOC,GAA+D7b,EAA7R8b,EAAU/V,KAAMiE,EAAU8R,EAAQ9R,QAASkK,EAAW4H,EAAQ5H,SAAUwH,EAAM1R,EAAQ0R,IAAKC,EAAU3R,EAAQ2R,QAASI,EAAQ7H,EAAShU,OAAQyX,EAAQoE,EAAQL,EAAMC,GAAWI,EAAQ,GAAIjE,EAAY8D,EAAOnG,MAAQkC,EAAmBlC,EAAQmG,EAAO/G,WAAaiD,GAAa4D,EAAM,EAC7R,KAAK1b,EAAI,EAAO+b,EAAJ/b,EAAWA,IACnB6b,EAAaD,EAAOI,QACpBH,EAAWhH,WAAaY,EACxBoG,EAAWpG,MAAQqC,EACf5D,EAASlU,GAAG4b,SACZC,EAAW/W,EAAIoP,EAASlU,GAAG4b,OAAO9W,GAEtCoP,EAASlU,GAAGmV,OAAO0G,GACnB3H,EAASlU,GAAG4b,OAASC,EACrBpG,GAASqC,EAAYA,EAAY6D,KAIzC7N,EAAmB0B,EAAatG,QAChCiM,OAAQ,SAAUyG,GACd,GAAkHK,GAAajc,EAA3Hkc,EAAQnW,KAAM6P,EAAUsG,EAAMlS,QAAQmS,WAAYjI,EAAWgI,EAAMhI,SAAUkI,EAAgBlI,EAAShU,OAAwBkB,EAAQwU,EAAUwG,EAAgB,EAAI,EAAG/H,EAAOuB,EAAU,GAAK,CAEjM,KADAsG,EAAM9R,IAAM,GAAIgF,GACXpP,EAAIoB,EAAOpB,GAAK,GAASoc,EAAJpc,EAAmBA,GAAKqU,EAC9C4H,EAAc/H,EAASlU,GAAG4b,OAC1BK,EAAYpH,WAAa+G,EAAO/G,WAChCoH,EAAYxG,MAAQmG,EAAOnG,SAInC1H,EAAe2B,EAAaxG,QAC5BC,KAAM,SAAUlL,EAAO+L,GACnB0F,EAAa4I,GAAGnP,KAAKsR,KAAK1U,KAAM9H,EAAO,KAAM+L,IAEjDA,SACIqS,SAAWC,SAAU,MACrBxH,QAAUuF,SAAU,OAGxBrM,EAAgBmB,EAASjG,QACzBqT,UAAW,WACP,MAAOxO,IAEXyO,YAAa,WACT,MAAO3O,IAEX4O,UAAW,WACP,MAAO3O,IAEX4O,aAAc,SAAUC,EAAcC,GAClC,MAAOD,GAAapH,QAAQqH,IAEhCC,UAAW,SAAUH,EAAcI,GAC/B,GAAItG,GAAOkG,EAAaV,QAASxJ,EAAIkK,EAAarX,EAAEmN,CAGpD,OAFAgE,GAAK1R,EAAI0N,EAAIsK,EAAUpK,GACvB8D,EAAK0C,GAAK1G,EAAIsK,EAAUnE,GACjBnC,GAEXrB,OAAQ7F,EAAiBgJ,GAAGnD,OAC5B4H,YAAa,SAAU3E,EAAOyE,GAC1BzE,EAAMwD,OAASiB,EACfzE,EAAMjD,UAEVnL,SACIgT,MAAM,EACNC,WAAa7G,KAAM,QAEvB8G,gBAAiB,WACbnX,KAAKiE,QAAQiT,UAAU1K,OAASxM,KAAKqE,IAAI+S,SAAS5K,SAClDpD,EAASmJ,GAAG4E,gBAAgBzC,KAAK1U,SAGrCkI,EAAiB0B,EAAUzG,QAC3Bc,SAAWgT,MAAM,GACjBH,UAAW,SAAUH,EAAcI,GAC/B,GAAIM,GAAcV,EAAarX,EAAEmN,EAAIsK,EAAUpK,GAAI8D,EAAOvG,EAAQoN,SAASX,EAAarX,EAAGqX,EAAaY,SAAUF,EAClH,OAAO,IAAIhO,GAAMoH,EAAKrR,EAAGqR,EAAKhE,EAAGgE,EAAKrR,EAAGqR,EAAKhE,IAElD+K,cAAe,SAAUC,EAAYC,EAAeC,GAChD,GAAIC,GAASpB,EAAWzU,EAAQ2V,EAAc3V,KAU9C,OARIyU,GADAzU,GAAS4J,GACGnB,GAEAX,EAEhB+N,EAAU,GAAIpB,GAAUiB,EAAYC,EAAeC,GAC/CF,EAAWtd,SAAWud,EAAcG,KAAK1d,SACzCyd,EAAQ3T,QAAQ6T,QAAS,GAEtBF,KAGXzP,EAAmBc,EAAY9F,QAC/B4U,OAAQ,WACJ,MAAOlO,GAAY0I,GAAGwF,OAAOrD,KAAK1U,KAAMA,KAAKgY,gBAGjD5P,EAAyBqC,GAAkBtH,QAAS8U,UAAWxW,EAAEyW,OACjE7P,EAAiBH,EAAe/E,QAChCqU,cAAe,SAAUC,EAAYC,EAAeC,EAAUQ,GAC1D,GAA0EH,GAAaJ,EAAnFQ,EAAQpY,KAAMiE,EAAUmU,EAAMnU,QAASoU,EAAYpU,EAAQoU,UAAiCtW,GAAS2V,EAAclK,UAAYzL,KAWnI,OAVIA,KAAU4J,IACViM,EAAU,GAAIxP,GAAuBqP,EAAYU,EAAaE,EAAWX,EAAeC,GACxFC,EAAQ3T,QAAQ6T,QAAS,IAErBO,GAAaV,EAAW,GAAKQ,IAC7BH,EAAcG,EAAYV,WAAWa,MAAM,GAAGzI,WAElD4H,EAAW7d,KAAK6d,EAAW,IAC3BG,EAAU,GAAIzP,GAAiBsP,EAAYO,EAAaN,EAAeC,IAEpEC,GAEXW,oBAAqB,SAAUC,GAC3B,MAAOA,GAAOC,eAAiB3M,MAGnCxD,EAAoB8B,EAAajH,QACjC2T,UAAW,SAAU4B,EAAOC,GACxB,GAAItB,GAAcqB,EAAMpZ,EAAEmN,EAAIkM,EAAMhM,GAAI8D,EAAOvG,EAAQoN,SAASoB,EAAMpZ,EAAGoZ,EAAM5J,WAAYuI,EAC3F,OAAO,IAAIhO,GAAMoH,EAAKrR,EAAGqR,EAAKhE,EAAGgE,EAAKrR,EAAGqR,EAAKhE,IAElDxI,SAAWgT,MAAM,KAEjB1O,EAAiB8B,EAAiBlH,QAClC2T,UAAWxO,EAAkBiK,GAAGuE,UAChC7S,SAAWgT,MAAM,KAEjBzO,EAAmBS,EAAY9F,QAC/B4U,OAAQ,WACJ,GAAIH,GAAU5X,KAAMoY,EAAQR,EAAQgB,OAAQlG,EAAW0F,EAAM1F,SAAUC,EAAYD,EAASC,UAAWnG,EAASmG,EAAUtO,IAAImI,SAAUwL,EAAcJ,EAAQI,YAAaD,EAASlO,EAAY0I,GAAGwF,OAAOrD,KAAKkD,EAASI,EASxN,OARAD,GAAOc,SACHrM,EAAOpN,EACPoN,EAAOC,IAEXsL,EAAOne,MACH4S,EAAOpN,EACPoN,EAAOC,IAEJsL,KAGXtP,EAAyBgC,GAAkBtH,QAC3C8U,UAAW,SAAUa,GACjB,GAAItM,GAASxM,KAAK+Y,kBAClBD,GAAS7K,OAAOzB,EAAOpN,EAAGoN,EAAOC,IAErCsM,iBAAkB,WACd,GAAIX,GAAQpY,KAAK4Y,OAAQlG,EAAW0F,EAAM1F,SAAUC,EAAYD,EAASC,UAAWnG,EAASmG,EAAUtO,IAAImI,QAC3G,OAAOA,IAEXwM,eAAgB,WAAA,GAGJxM,GAAkCyM,EAA4CxB,EAFlFyB,EAAWlZ,KAAKmZ,eAOpB,OANKD,KACG1M,EAASxM,KAAK+Y,mBAAoBE,EAAiB,GAAIvP,IAAe,GAAQ+N,EAAa5N,EAAY0I,GAAGwF,OAAOrD,KAAK1U,MAC1HyX,EAAW7d,KAAK4S,GAChB0M,EAAWlZ,KAAKmZ,gBAAkBF,EAAeG,QAAQ3B,GACzDyB,EAASG,OAENH,KAGXxQ,EAAiBH,EAAepF,QAChCqU,cAAe,SAAUC,EAAYC,EAAeC,GAChD,GAAIC,GAAS7V,GAAS2V,EAAclK,UAAYzL,KAMhD,OAJI6V,GADA7V,GAAS4J,GACC,GAAIlD,GAAuBgP,EAAY,MAAM,EAAOC,EAAeC,GAEnE,GAAInP,GAAiBiP,KAAgBC,EAAeC,IAItE2B,mBAAoB,SAAUphB,EAAOugB,GACjC,GAAIc,EAUJ,OATInY,GAAQoY,SAASthB,EAAMkH,IAAMqZ,GAAiBvN,KAC9CqO,GACIna,EAAGlH,EAAMkH,EACTqN,EAAGvU,EAAMuU,GAETgM,GAAiB3M,KACjByN,EAAa9M,EAAI,IAGlB8M,GAEXhB,oBAAqB,SAAUC,GAC3B,MAAOA,GAAOC,eAAiB3M,IAEnC2N,qBAAsB,WAAA,GAET7S,GADL4R,EAASxY,KAAKiE,QAAQuU,MAC1B,KAAS5R,EAAM,EAAS4R,EAAOre,OAAbyM,EAAqBA,IACnC,GAAI5G,KAAKuY,oBAAoBC,EAAO5R,MAAUqE,GAC1C,OAAO,GAInByO,WAAY,SAAU3B,GAAV,GACJ7f,GAAOma,EAGEzL,CADb,IADAmR,EAAOle,KAAKwN,GACRrH,KAAKyZ,uBACL,IAAS7S,EAAM,EAASmR,EAAO5d,OAAbyM,EAAqBA,IACnCyL,EAAQ0F,EAAOnR,GACXyL,IACAna,EAAQma,EAAMna,MACTkJ,EAAQoY,SAASthB,EAAMuU,IAAMzM,KAAKuY,oBAAoBlG,EAAMmG,UAAYvN,UAClE8M,GAAOnR,GAK9B,OAAOmR,MAGXpP,EAAoBqB,EAAa7G,QACjCC,KAAM,SAAUoV,EAAQvU,GACpB,GAAIyO,GAAW1S,IACf0S,GAASiH,sBAAwB,GAAIxQ,GACrCa,EAAauI,GAAGnP,KAAKsR,KAAKhC,EAAU8F,EAAQvU,IAEhD2V,OAAQ,WACJ,GAAIlH,GAAW1S,IACf0S,GAASmH,YAAYnH,EAAS8F,QAC9B9F,EAASoH,kBACTpH,EAASqH,eACTrH,EAASsH,mBAEbC,UAAW,WAAA,GACH3N,GAAOtM,KAAKka,UACZhL,EAAQ5C,EAAK4C,QACbiL,EAAgB7N,EAAKrI,QAAQ4L,QAAUX,EAAMtW,IAAMsW,EAAMvW,IACzD8X,EAAOnE,EAAKkD,QAAQ2K,GACpB3N,EAASxM,KAAK2S,UAAUnD,QAAQ,GAAGlQ,EACnC8a,EAAU9N,EAAKjI,IAAIgW,UAAU7N,EAAOpN,EAAIqR,EAAKkE,GAAInI,EAAOC,EAAIgE,EAAK9D,GACrEL,GAAK8C,OAAOgL,IAEhBJ,gBAAiB,WACb,GAA+F9K,GAAOgL,EAG9FzF,EAAU6F,EAHd5H,EAAW1S,KAAMua,EAAU7H,EAASiH,sBAAuBa,EAAeD,EAAQE,QAA2BC,EAAchI,EAASiI,kBAChIC,kBAAkB,EAClB1J,OAAQ,IAEZwJ,GAAYrK,OAASlF,IACrBsJ,EAAW7M,EACX0S,GACI3hB,IAAK,GACLC,IAAK,KAGT6b,EAAW9M,EACX2S,GACI3hB,IAAK,EACLC,IAAK,IAGbsW,EAAQqL,EAAQE,MAAM1e,OAASye,GAAgBF,EAC3CpL,GAASsL,IACTtL,EAAMvW,IAAMH,EAAKG,IAAIuW,EAAMvW,IAAK6hB,EAAa7hB,KAC7CuW,EAAMtW,IAAMJ,EAAKI,IAAIsW,EAAMtW,IAAK4hB,EAAa5hB,MAEjDshB,EAAY,GAAIzF,GAASvF,EAAMvW,IAAKuW,EAAMtW,IAAK8hB,GAC/ChI,EAASwH,UAAYA,EACrBxH,EAASmI,WAAWX,IAExBY,WAAY,WAAA,GAIJC,GAHArI,EAAW1S,KAAMiE,EAAUyO,EAASzO,QAAQyO,SAAUwH,EAAYxH,EAASwH,UAAWvH,EAAYD,EAASC,UAAWtO,EAAMqO,EAASrO,IAAK2W,EAAiBxiB,EAAKG,IAAI0L,EAAI1C,QAAS0C,EAAIzC,UAAYoJ,GAAiBiQ,EAAUtQ,GAAW1G,EAAQgX,YAAeD,GAAiBZ,EAAU/V,EAAI4R,QAAQiF,MAAMD,GAAUE,EAAef,EAAQnE,QAAQmF,OAAO,EAAGhB,EAAQxY,SAAW,EACrX+Q,GAAUvD,OAAOgL,GACjBF,EAAU9K,OAAO+L,GACbJ,EAAab,EAAUxN,UAAU9K,SAAWsY,EAAU7V,IAAIzC,SAC9DsY,EAAU9K,OAAO8K,EAAU7V,IAAI6W,OAAQG,IAAKN,KAC5CrI,EAAS0H,QAAUA,EACnB1H,EAASuH,UAAUG,IAEvBkB,cAAe,WACX,MAAOtb,MAAKqE,OAGhBuE,EAAgBD,EAAkBxF,QAClCc,SACI2S,cAAgBzH,eAChB+K,cAEJJ,gBAAiB,WACb,GAAqBlD,GAAjBlE,EAAW1S,IACf4W,GAAe,GAAI/H,IAAkB6D,EAASzO,QAAQ2S,cACtDlE,EAASC,UAAYiE,EACrBlE,EAASkE,aAAeA,EACxBlE,EAASmI,WAAWjE,GACpBlE,EAAS6I,uBAEbZ,iBAAkB,SAAUa,GACxB,GAAI9I,GAAW1S,IAaf,OAZI0S,GAAS+I,eACT9a,EAAW6a,GACP1O,gBAAkBuD,KAAMxF,IACxBqC,gBAAkBmD,KAAMxF,MAG5B6H,EAASgJ,eACT/a,EAAW6a,GACPZ,kBAAkB,EAClB7L,QAAU4M,OAAQ,QAGnBhb,EAAW6a,EAAU9I,EAASzO,QAAQiW,YAEjD0B,YAAapS,EAAoB+I,GAAGqJ,YACpCC,gBAAiBrS,EAAoB+I,GAAGsJ,gBACxCN,oBAAqB,WACjB/R,EAAoB+I,GAAGgJ,oBAAoB7G,KAAK1U,KAAMA,KAAK8b,QAE/DC,aAAc,SAAUrE,GACpB,MAAOA,IAEXqC,aAAc,WACV,GAAIrH,GAAW1S,KAAMwY,EAAS9F,EAASsJ,oBAAoBtJ,EAAS8F,QAASyD,EAAOvJ,EAASoJ,MAAM,EACnGpJ,GAASwJ,gBAAgBtR,GAAmB4N,GAAShN,KAAcyQ,GACnEvJ,EAASyJ,gBAAgBvR,GAAmB4N,GAAS9M,KAAcuQ,GACnEvJ,EAAS0J,eAAexR,GAAmB4N,GAAS/M,KAAgBwQ,IAExEI,aAAc,SAAU7D,GAAV,GAIF8D,GACAnG,EAJJlS,GAAYuU,OAAQA,GACpB+D,EAAc/D,EAAO,EAUzB,OATI+D,KACID,EAAiBtc,KAAKgc,oBAAoBxD,GAC1CrC,EAAQoG,EAAYpG,MACxBlS,EAAQoU,UAAYlC,GAASmG,EAAeniB,OAAS,EACrD8J,EAAQuY,aAAerG,GAAwB,SAAfA,EAAM9F,MAAmBiM,EAAeniB,OAAS,EAC7E8J,EAAQuY,eACRxc,KAAK0b,eAAgB,IAGtBzX,GAEXiY,gBAAiB,SAAU1D,EAAQyD,GAC/B,GAAsB,IAAlBzD,EAAOre,OAAX,CAGA,GAAIsiB,GAAY,GAAIpU,GAAerI,KAAMA,KAAKqc,aAAa7D,GAC3DxY,MAAK4b,YAAYa,EAAWR,KAEhCE,gBAAiB,SAAU3D,EAAQyD,GAC/B,GAAsB,IAAlBzD,EAAOre,OAAX,CAGA,GAAIuiB,GAAY,GAAIxU,GAAelI,KAAMA,KAAKqc,aAAa7D,GAC3DxY,MAAK4b,YAAYc,EAAWT,KAEhCG,eAAgB,SAAU5D,EAAQyD,GAAlB,GAIRM,GACAtY,EAGA0Y,CAPkB,KAAlBnE,EAAOre,SAGPoiB,EAAc/D,EAAO,GACrBvU,EAAUjE,KAAKqc,aAAa7D,GAChCvU,EAAQ0R,IAAM4G,EAAY5G,IAC1B1R,EAAQ2R,QAAU2G,EAAY3G,QAC1B+G,EAAW,GAAI1U,GAAcjI,KAAMiE,GACvCjE,KAAK4b,YAAYe,EAAUV,GAC3Bjc,KAAKyb,eAAgB,IAEzBmB,mBAAoB,WAChB,MAAO5c,MAAK4W,cAEhBiG,MAAO,SAAUzE,EAAOzV,GACpB,GAAmGma,GAAU5kB,EAAzGwa,EAAW1S,KAAM+c,EAAS3E,EAAM4E,kBAAkBra,GAAI0P,EAAQ,GAAInI,GAAQ6S,EAAO3d,EAAG2d,EAAOtQ,EAC/FqQ,GAAWpK,EAASkE,aAAaqG,YAAY5K,GAC7Cna,EAAQwa,EAASwH,UAAUpG,SAASzB,GACnB,OAAbyK,GAA+B,OAAV5kB,GACrBkgB,EAAM5R,QAAQ4E,IACVhF,QAASsE,GAAmB/H,GAC5Bma,SAAUA,EACV5kB,MAAOA,KAInBglB,iBAAkBzb,EAAEyW,OAEpBrP,EAAgBF,EAAkBxF,QAClCc,SACIkZ,SACAC,UAEJtD,gBAAiB,WACb,GAAqBnH,GAAjBD,EAAW1S,IACf2S,GAAY,GAAI9K,GAAU6K,EAASzO,QAAQkZ,OAC3CzK,EAASC,UAAYA,EACrBD,EAAS2K,MAAQ1K,EACjBD,EAASmI,WAAWlI,IAExBgI,iBAAkB,SAAUa,GACxB,GAAI9I,GAAW1S,IACf,OAAOW,GAAW6a,GACd1O,gBAAkBuD,KAAMxF,IACxBqC,gBAAkBmD,KAAMxF,KACzB6H,EAASzO,QAAQmZ,QAExBpD,gBAAiB,WACb,GAAItH,GAAW1S,IACf2I,GAAkB4J,GAAGyH,gBAAgBtF,KAAKhC,GAC1CA,EAAS4K,MAAQ5K,EAASwH,WAE9B0B,YAAa,SAAUxD,EAAO6D,GAC1B,GAAIvJ,GAAW1S,IACf0S,GAASiH,sBAAsB4D,OAAOnF,EAAMoF,aAC5CxT,EAAauI,GAAGqJ,YAAYlH,KAAKhC,EAAU0F,EAAO6D,IAEtDlC,aAAc,WACV,GAAIrH,GAAW1S,KAAMwY,EAAS9F,EAASsJ,oBAAoBtJ,EAAS8F,QAASyD,EAAOvJ,EAASoJ,MAAM,EACnGpJ,GAASyJ,gBAAgBvR,GAAmB4N,GAASlN,KAAc2Q,GACnEvJ,EAAS+K,mBAAmB7S,GAAmB4N,GAASjN,KAAiB0Q,GACzEvJ,EAASwJ,gBAAgBtR,GAAmB4N,GAASnN,KAAc4Q,IAEvEE,gBAAiB,SAAU3D,EAAQyD,GAC/B,GAAsB,IAAlBzD,EAAOre,OAAX,CAGA,GAAIuY,GAAW1S,KAAM0c,EAAY,GAAInU,GAAemK,GAAY8F,OAAQA,GACxE9F,GAASkJ,YAAYc,EAAWT,KAEpCwB,mBAAoB,SAAUjF,EAAQyD,GAClC,GAAsB,IAAlBzD,EAAOre,OAAX,CAGA,GAAIuY,GAAW1S,KAAM0d,EAAe,GAAIpV,GAAkBoK,GAAY8F,OAAQA,GAC9E9F,GAASkJ,YAAY8B,EAAczB,KAEvCC,gBAAiB,SAAU1D,EAAQyD,GAC/B,GAAsB,IAAlBzD,EAAOre,OAAX,CAGA,GAAIuY,GAAW1S,KAAMyc,EAAY,GAAI/T,GAAegK,GAAY8F,OAAQA,GACxE9F,GAASkJ,YAAYa,EAAWR,KAEpCY,MAAO,SAAUzE,EAAOzV,GACpB,GAAmGgb,GAAQC,EAAvGlL,EAAW1S,KAAM+c,EAAS3E,EAAM4E,kBAAkBra,GAAI0P,EAAQ,GAAInI,GAAQ6S,EAAO3d,EAAG2d,EAAOtQ,EAC/FkR,GAASjL,EAAS2K,MAAMvJ,SAASzB,GACjCuL,EAASlL,EAAS4K,MAAMxJ,SAASzB,GAClB,OAAXsL,GAA8B,OAAXC,GACnBxF,EAAM5R,QAAQ4E,IACVhF,QAASsE,GAAmB/H,GAC5BvD,EAAGue,EACHlR,EAAGmR,KAIfV,iBAAkBzb,EAAEyW,OAQxBjO,EAAgB/H,QAAQ2b,SAAShV,EAAekD,IAChD9B,EAAgB/H,QAAQ2b,SAASjV,EAAeoD,IAChD1B,EAAapI,QAAQ2b,SAAS9R,IAC1BH,GACAC,KACA,UACJvB,EAAapI,QAAQ2b,SAAS7R,IAAe,UAAW,UACxD5K,EAAQ0c,kBAAkB5b,QAAQ2b,SAAS7R,IACvC9T,MAAO,MACP0E,MAAO,UAEX+D,EAAWS,GACPsH,eAAgBA,EAChBb,UAAWA,EACXU,eAAgBA,EAChBM,cAAeA,EACfR,eAAgBA,EAChBJ,cAAeA,EACf4G,kBAAmBA,GACnB/G,mBAAoBA,EACpBI,eAAgBA,EAChBP,iBAAkBA,EAClBiB,cAAeA,EACfH,uBAAwBA,EACxBL,uBAAwBA,EACxBL,iBAAkBA,KAExBrH,OAAOhF,MAAMyJ,QACRzE,OAAOhF,OACE,kBAAV1D,SAAwBA,OAAOqJ,IAAMrJ,OAAS,SAAUsJ,EAAIC,EAAIC,IACrEA,GAAMD","file":"kendo.dataviz.chart.polar.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('util/main', ['kendo.core'], f);\n}(function () {\n (function () {\n var math = Math, kendo = window.kendo, deepExtend = kendo.deepExtend;\n var DEG_TO_RAD = math.PI / 180, MAX_NUM = Number.MAX_VALUE, MIN_NUM = -Number.MAX_VALUE, UNDEFINED = 'undefined';\n function defined(value) {\n return typeof value !== UNDEFINED;\n }\n function round(value, precision) {\n var power = pow(precision);\n return math.round(value * power) / power;\n }\n function pow(p) {\n if (p) {\n return math.pow(10, p);\n } else {\n return 1;\n }\n }\n function limitValue(value, min, max) {\n return math.max(math.min(value, max), min);\n }\n function rad(degrees) {\n return degrees * DEG_TO_RAD;\n }\n function deg(radians) {\n return radians / DEG_TO_RAD;\n }\n function isNumber(val) {\n return typeof val === 'number' && !isNaN(val);\n }\n function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n }\n function sqr(value) {\n return value * value;\n }\n function objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n return parts.sort().join('');\n }\n function hashKey(str) {\n var hash = 2166136261;\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n return hash >>> 0;\n }\n function hashObject(object) {\n return hashKey(objectKey(object));\n }\n var now = Date.now;\n if (!now) {\n now = function () {\n return new Date().getTime();\n };\n }\n function arrayLimits(arr) {\n var length = arr.length, i, min = MAX_NUM, max = MIN_NUM;\n for (i = 0; i < length; i++) {\n max = math.max(max, arr[i]);\n min = math.min(min, arr[i]);\n }\n return {\n min: min,\n max: max\n };\n }\n function arrayMin(arr) {\n return arrayLimits(arr).min;\n }\n function arrayMax(arr) {\n return arrayLimits(arr).max;\n }\n function sparseArrayMin(arr) {\n return sparseArrayLimits(arr).min;\n }\n function sparseArrayMax(arr) {\n return sparseArrayLimits(arr).max;\n }\n function sparseArrayLimits(arr) {\n var min = MAX_NUM, max = MIN_NUM;\n for (var i = 0, length = arr.length; i < length; i++) {\n var n = arr[i];\n if (n !== null && isFinite(n)) {\n min = math.min(min, n);\n max = math.max(max, n);\n }\n }\n return {\n min: min === MAX_NUM ? undefined : min,\n max: max === MIN_NUM ? undefined : max\n };\n }\n function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n }\n function append(first, second) {\n first.push.apply(first, second);\n return first;\n }\n function renderTemplate(text) {\n return kendo.template(text, {\n useWithBlock: false,\n paramName: 'd'\n });\n }\n function renderAttr(name, value) {\n return defined(value) && value !== null ? ' ' + name + '=\\'' + value + '\\' ' : '';\n }\n function renderAllAttr(attrs) {\n var output = '';\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n return output;\n }\n function renderStyle(attrs) {\n var output = '';\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + ':' + value + ';';\n }\n }\n if (output !== '') {\n return output;\n }\n }\n function renderSize(size) {\n if (typeof size !== 'string') {\n size += 'px';\n }\n return size;\n }\n function renderPos(pos) {\n var result = [];\n if (pos) {\n var parts = kendo.toHyphens(pos).split('-');\n for (var i = 0; i < parts.length; i++) {\n result.push('k-pos-' + parts[i]);\n }\n }\n return result.join(' ');\n }\n function isTransparent(color) {\n return color === '' || color === null || color === 'none' || color === 'transparent' || !defined(color);\n }\n function arabicToRoman(n) {\n var literals = {\n 1: 'i',\n 10: 'x',\n 100: 'c',\n 2: 'ii',\n 20: 'xx',\n 200: 'cc',\n 3: 'iii',\n 30: 'xxx',\n 300: 'ccc',\n 4: 'iv',\n 40: 'xl',\n 400: 'cd',\n 5: 'v',\n 50: 'l',\n 500: 'd',\n 6: 'vi',\n 60: 'lx',\n 600: 'dc',\n 7: 'vii',\n 70: 'lxx',\n 700: 'dcc',\n 8: 'viii',\n 80: 'lxxx',\n 800: 'dccc',\n 9: 'ix',\n 90: 'xc',\n 900: 'cm',\n 1000: 'm'\n };\n var values = [\n 1000,\n 900,\n 800,\n 700,\n 600,\n 500,\n 400,\n 300,\n 200,\n 100,\n 90,\n 80,\n 70,\n 60,\n 50,\n 40,\n 30,\n 20,\n 10,\n 9,\n 8,\n 7,\n 6,\n 5,\n 4,\n 3,\n 2,\n 1\n ];\n var roman = '';\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n }\n function romanToArabic(r) {\n r = r.toLowerCase();\n var digits = {\n i: 1,\n v: 5,\n x: 10,\n l: 50,\n c: 100,\n d: 500,\n m: 1000\n };\n var value = 0, prev = 0;\n for (var i = 0; i < r.length; ++i) {\n var v = digits[r.charAt(i)];\n if (!v) {\n return null;\n }\n value += v;\n if (v > prev) {\n value -= 2 * prev;\n }\n prev = v;\n }\n return value;\n }\n function memoize(f) {\n var cache = Object.create(null);\n return function () {\n var id = '';\n for (var i = arguments.length; --i >= 0;) {\n id += ':' + arguments[i];\n }\n if (id in cache) {\n return cache[id];\n }\n return f.apply(this, arguments);\n };\n }\n function ucs2decode(string) {\n var output = [], counter = 0, length = string.length, value, extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 55296 && value <= 56319 && counter < length) {\n extra = string.charCodeAt(counter++);\n if ((extra & 64512) == 56320) {\n output.push(((value & 1023) << 10) + (extra & 1023) + 65536);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n }\n function ucs2encode(array) {\n return array.map(function (value) {\n var output = '';\n if (value > 65535) {\n value -= 65536;\n output += String.fromCharCode(value >>> 10 & 1023 | 55296);\n value = 56320 | value & 1023;\n }\n output += String.fromCharCode(value);\n return output;\n }).join('');\n }\n deepExtend(kendo, {\n util: {\n MAX_NUM: MAX_NUM,\n MIN_NUM: MIN_NUM,\n append: append,\n arrayLimits: arrayLimits,\n arrayMin: arrayMin,\n arrayMax: arrayMax,\n defined: defined,\n deg: deg,\n hashKey: hashKey,\n hashObject: hashObject,\n isNumber: isNumber,\n isTransparent: isTransparent,\n last: last,\n limitValue: limitValue,\n now: now,\n objectKey: objectKey,\n round: round,\n rad: rad,\n renderAttr: renderAttr,\n renderAllAttr: renderAllAttr,\n renderPos: renderPos,\n renderSize: renderSize,\n renderStyle: renderStyle,\n renderTemplate: renderTemplate,\n sparseArrayLimits: sparseArrayLimits,\n sparseArrayMin: sparseArrayMin,\n sparseArrayMax: sparseArrayMax,\n sqr: sqr,\n valueOrDefault: valueOrDefault,\n romanToArabic: romanToArabic,\n arabicToRoman: arabicToRoman,\n memoize: memoize,\n ucs2encode: ucs2encode,\n ucs2decode: ucs2decode\n }\n });\n kendo.drawing.util = kendo.util;\n kendo.dataviz.util = kendo.util;\n }());\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('util/text-metrics', [\n 'kendo.core',\n 'util/main'\n ], f);\n}(function () {\n (function ($) {\n var doc = document, kendo = window.kendo, Class = kendo.Class, util = kendo.util, defined = util.defined;\n var LRUCache = Class.extend({\n init: function (size) {\n this._size = size;\n this._length = 0;\n this._map = {};\n },\n put: function (key, value) {\n var lru = this, map = lru._map, entry = {\n key: key,\n value: value\n };\n map[key] = entry;\n if (!lru._head) {\n lru._head = lru._tail = entry;\n } else {\n lru._tail.newer = entry;\n entry.older = lru._tail;\n lru._tail = entry;\n }\n if (lru._length >= lru._size) {\n map[lru._head.key] = null;\n lru._head = lru._head.newer;\n lru._head.older = null;\n } else {\n lru._length++;\n }\n },\n get: function (key) {\n var lru = this, entry = lru._map[key];\n if (entry) {\n if (entry === lru._head && entry !== lru._tail) {\n lru._head = entry.newer;\n lru._head.older = null;\n }\n if (entry !== lru._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n entry.older = lru._tail;\n entry.newer = null;\n lru._tail.newer = entry;\n lru._tail = entry;\n }\n return entry.value;\n }\n }\n });\n var defaultMeasureBox = $('
')[0];\n function zeroSize() {\n return {\n width: 0,\n height: 0,\n baseline: 0\n };\n }\n var TextMetrics = Class.extend({\n init: function (options) {\n this._cache = new LRUCache(1000);\n this._initOptions(options);\n },\n options: { baselineMarkerSize: 1 },\n measure: function (text, style, box) {\n if (!text) {\n return zeroSize();\n }\n var styleKey = util.objectKey(style), cacheKey = util.hashKey(text + styleKey), cachedResult = this._cache.get(cacheKey);\n if (cachedResult) {\n return cachedResult;\n }\n var size = zeroSize();\n var measureBox = box ? box : defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n for (var key in style) {\n var value = style[key];\n if (defined(value)) {\n measureBox.style[key] = value;\n }\n }\n $(measureBox).text(text);\n measureBox.appendChild(baselineMarker);\n doc.body.appendChild(measureBox);\n if ((text + '').length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n measureBox.parentNode.removeChild(measureBox);\n return size;\n },\n _baselineMarker: function () {\n return $('')[0];\n }\n });\n TextMetrics.current = new TextMetrics();\n function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n }\n function loadFonts(fonts, callback) {\n var promises = [];\n if (fonts.length > 0 && document.fonts) {\n try {\n promises = fonts.map(function (font) {\n return document.fonts.load(font);\n });\n } catch (e) {\n kendo.logToConsole(e);\n }\n Promise.all(promises).then(callback, callback);\n } else {\n callback();\n }\n }\n kendo.util.TextMetrics = TextMetrics;\n kendo.util.LRUCache = LRUCache;\n kendo.util.loadFonts = loadFonts;\n kendo.util.measureText = measureText;\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('util/base64', ['util/main'], f);\n}(function () {\n (function () {\n var kendo = window.kendo, deepExtend = kendo.deepExtend, fromCharCode = String.fromCharCode;\n var KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n function encodeBase64(input) {\n var output = '';\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0;\n input = encodeUTF8(input);\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n enc4 = chr3 & 63;\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n output = output + KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) + KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n return output;\n }\n function encodeUTF8(input) {\n var output = '';\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n if (c < 128) {\n output += fromCharCode(c);\n } else if (c < 2048) {\n output += fromCharCode(192 | c >>> 6);\n output += fromCharCode(128 | c & 63);\n } else if (c < 65536) {\n output += fromCharCode(224 | c >>> 12);\n output += fromCharCode(128 | c >>> 6 & 63);\n output += fromCharCode(128 | c & 63);\n }\n }\n return output;\n }\n deepExtend(kendo.util, {\n encodeBase64: encodeBase64,\n encodeUTF8: encodeUTF8\n });\n }());\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('mixins/observers', ['kendo.core'], f);\n}(function () {\n (function ($) {\n var math = Math, kendo = window.kendo, deepExtend = kendo.deepExtend, inArray = $.inArray;\n var ObserversMixin = {\n observers: function () {\n this._observers = this._observers || [];\n return this._observers;\n },\n addObserver: function (element) {\n if (!this._observers) {\n this._observers = [element];\n } else {\n this._observers.push(element);\n }\n return this;\n },\n removeObserver: function (element) {\n var observers = this.observers();\n var index = inArray(element, observers);\n if (index != -1) {\n observers.splice(index, 1);\n }\n return this;\n },\n trigger: function (methodName, event) {\n var observers = this._observers;\n var observer;\n var idx;\n if (observers && !this._suspended) {\n for (idx = 0; idx < observers.length; idx++) {\n observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n },\n optionsChange: function (e) {\n e = e || {};\n e.element = this;\n this.trigger('optionsChange', e);\n },\n geometryChange: function () {\n this.trigger('geometryChange', { element: this });\n },\n suspend: function () {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n },\n resume: function () {\n this._suspended = math.max((this._suspended || 0) - 1, 0);\n return this;\n },\n _observerField: function (field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n }\n };\n deepExtend(kendo, { mixins: { ObserversMixin: ObserversMixin } });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.dataviz.chart.polar', [\n 'kendo.dataviz.chart',\n 'kendo.drawing'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'dataviz.chart.polar',\n name: 'Polar Charts',\n category: 'dataviz',\n depends: ['dataviz.chart'],\n hidden: true\n };\n (function ($, undefined) {\n var math = Math, kendo = window.kendo, deepExtend = kendo.deepExtend, util = kendo.util, append = util.append, draw = kendo.drawing, geom = kendo.geometry, dataviz = kendo.dataviz, AreaSegment = dataviz.AreaSegment, Axis = dataviz.Axis, AxisGroupRangeTracker = dataviz.AxisGroupRangeTracker, BarChart = dataviz.BarChart, Box2D = dataviz.Box2D, CategoryAxis = dataviz.CategoryAxis, CategoricalChart = dataviz.CategoricalChart, CategoricalPlotArea = dataviz.CategoricalPlotArea, ChartElement = dataviz.ChartElement, CurveProcessor = dataviz.CurveProcessor, DonutSegment = dataviz.DonutSegment, LineChart = dataviz.LineChart, LineSegment = dataviz.LineSegment, LogarithmicAxis = dataviz.LogarithmicAxis, NumericAxis = dataviz.NumericAxis, PlotAreaBase = dataviz.PlotAreaBase, PlotAreaFactory = dataviz.PlotAreaFactory, Point2D = dataviz.Point2D, Ring = dataviz.Ring, ScatterChart = dataviz.ScatterChart, ScatterLineChart = dataviz.ScatterLineChart, SeriesBinder = dataviz.SeriesBinder, ShapeBuilder = dataviz.ShapeBuilder, SplineSegment = dataviz.SplineSegment, SplineAreaSegment = dataviz.SplineAreaSegment, eventTargetElement = dataviz.eventTargetElement, getSpacing = dataviz.getSpacing, filterSeriesByType = dataviz.filterSeriesByType, limitValue = util.limitValue, round = dataviz.round;\n var ARC = 'arc', BLACK = '#000', COORD_PRECISION = dataviz.COORD_PRECISION, DEFAULT_PADDING = 0.15, DEG_TO_RAD = math.PI / 180, GAP = 'gap', INTERPOLATE = 'interpolate', LOGARITHMIC = 'log', PLOT_AREA_CLICK = 'plotAreaClick', POLAR_AREA = 'polarArea', POLAR_LINE = 'polarLine', POLAR_SCATTER = 'polarScatter', RADAR_AREA = 'radarArea', RADAR_COLUMN = 'radarColumn', RADAR_LINE = 'radarLine', SMOOTH = 'smooth', X = 'x', Y = 'y', ZERO = 'zero', POLAR_CHARTS = [\n POLAR_AREA,\n POLAR_LINE,\n POLAR_SCATTER\n ], RADAR_CHARTS = [\n RADAR_AREA,\n RADAR_COLUMN,\n RADAR_LINE\n ];\n var GridLinesMixin = {\n createGridLines: function (altAxis) {\n var axis = this, options = axis.options, radius = math.abs(axis.box.center().y - altAxis.lineBox().y1), majorAngles, minorAngles, skipMajor = false, gridLines = [];\n if (options.majorGridLines.visible) {\n majorAngles = axis.majorGridLineAngles(altAxis);\n skipMajor = true;\n gridLines = axis.renderMajorGridLines(majorAngles, radius, options.majorGridLines);\n }\n if (options.minorGridLines.visible) {\n minorAngles = axis.minorGridLineAngles(altAxis, skipMajor);\n append(gridLines, axis.renderMinorGridLines(minorAngles, radius, options.minorGridLines, altAxis, skipMajor));\n }\n return gridLines;\n },\n renderMajorGridLines: function (angles, radius, options) {\n return this.renderGridLines(angles, radius, options);\n },\n renderMinorGridLines: function (angles, radius, options, altAxis, skipMajor) {\n var radiusCallback = this.radiusCallback && this.radiusCallback(radius, altAxis, skipMajor);\n return this.renderGridLines(angles, radius, options, radiusCallback);\n },\n renderGridLines: function (angles, radius, options, radiusCallback) {\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n var center = this.box.center();\n var circle = new geom.Circle([\n center.x,\n center.y\n ], radius);\n var container = this.gridLinesVisual();\n for (var i = 0; i < angles.length; i++) {\n var line = new draw.Path(style);\n if (radiusCallback) {\n circle.radius = radiusCallback(angles[i]);\n }\n line.moveTo(circle.center).lineTo(circle.pointAt(angles[i]));\n container.append(line);\n }\n return container.children;\n },\n gridLineAngles: function (altAxis, size, skip, step, skipAngles) {\n var axis = this, divs = axis.intervals(size, skip, step, skipAngles), options = altAxis.options, altAxisVisible = options.visible && (options.line || {}).visible !== false;\n return $.map(divs, function (d) {\n var alpha = axis.intervalAngle(d);\n if (!altAxisVisible || alpha !== 90) {\n return alpha;\n }\n });\n }\n };\n var RadarCategoryAxis = CategoryAxis.extend({\n options: {\n startAngle: 90,\n labels: { margin: getSpacing(10) },\n majorGridLines: { visible: true },\n justified: true\n },\n range: function () {\n return {\n min: 0,\n max: this.options.categories.length\n };\n },\n reflow: function (box) {\n this.box = box;\n this.reflowLabels();\n },\n lineBox: function () {\n return this.box;\n },\n reflowLabels: function () {\n var axis = this, labelOptions = axis.options.labels, skip = labelOptions.skip || 0, step = labelOptions.step || 1, measureBox = new Box2D(), labels = axis.labels, labelBox, i;\n for (i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n labelBox = labels[i].box;\n labels[i].reflow(axis.getSlot(skip + i * step).adjacentBox(0, labelBox.width(), labelBox.height()));\n }\n },\n intervals: function (size, skip, step, skipAngles) {\n var axis = this, options = axis.options, categories = options.categories.length, angle = 0, divCount = categories / size || 1, divAngle = 360 / divCount, divs = [], i;\n skip = skip || 0;\n step = step || 1;\n for (i = skip; i < divCount; i += step) {\n if (options.reverse) {\n angle = 360 - i * divAngle;\n } else {\n angle = i * divAngle;\n }\n angle = round(angle, COORD_PRECISION) % 360;\n if (!(skipAngles && dataviz.inArray(angle, skipAngles))) {\n divs.push(angle);\n }\n }\n return divs;\n },\n majorIntervals: function () {\n return this.intervals(1);\n },\n minorIntervals: function () {\n return this.intervals(0.5);\n },\n intervalAngle: function (interval) {\n return (360 + interval + this.options.startAngle) % 360;\n },\n majorAngles: function () {\n return $.map(this.majorIntervals(), $.proxy(this.intervalAngle, this));\n },\n createLine: function () {\n return [];\n },\n majorGridLineAngles: function (altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, 1, majorGridLines.skip, majorGridLines.step);\n },\n minorGridLineAngles: function (altAxis, skipMajor) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(1, majorGridLines.skip, majorGridLines.step) : null;\n return this.gridLineAngles(altAxis, 0.5, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n },\n radiusCallback: function (radius, altAxis, skipMajor) {\n if (altAxis.options.type !== ARC) {\n var minorAngle = 360 / (this.options.categories.length * 2);\n var minorRadius = math.cos(minorAngle * DEG_TO_RAD) * radius;\n var majorAngles = this.majorAngles();\n var radiusCallback = function (angle) {\n if (!skipMajor && dataviz.inArray(angle, majorAngles)) {\n return radius;\n } else {\n return minorRadius;\n }\n };\n return radiusCallback;\n }\n },\n createPlotBands: function () {\n var axis = this, options = axis.options, plotBands = options.plotBands || [], i, band, slot, singleSlot, head, tail;\n var group = this._plotbandGroup = new draw.Group({ zIndex: -1 });\n for (i = 0; i < plotBands.length; i++) {\n band = plotBands[i];\n slot = axis.plotBandSlot(band);\n singleSlot = axis.getSlot(band.from);\n head = band.from - math.floor(band.from);\n slot.startAngle += head * singleSlot.angle;\n tail = math.ceil(band.to) - band.to;\n slot.angle -= (tail + head) * singleSlot.angle;\n var ring = ShapeBuilder.current.createRing(slot, {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: { opacity: band.opacity }\n });\n group.append(ring);\n }\n axis.appendVisual(group);\n },\n plotBandSlot: function (band) {\n return this.getSlot(band.from, band.to - 1);\n },\n getSlot: function (from, to) {\n var axis = this, options = axis.options, justified = options.justified, box = axis.box, divs = axis.majorAngles(), totalDivs = divs.length, slots, slotAngle = 360 / totalDivs, slotStart, angle;\n if (options.reverse && !justified) {\n from = (from + 1) % totalDivs;\n }\n from = limitValue(math.floor(from), 0, totalDivs - 1);\n slotStart = divs[from];\n if (justified) {\n slotStart = slotStart - slotAngle / 2;\n if (slotStart < 0) {\n slotStart += 360;\n }\n }\n to = limitValue(math.ceil(to || from), from, totalDivs - 1);\n slots = to - from + 1;\n angle = slotAngle * slots;\n return new Ring(box.center(), 0, box.height() / 2, slotStart, angle);\n },\n slot: function (from, to) {\n var slot = this.getSlot(from, to);\n var startAngle = slot.startAngle + 180;\n var endAngle = startAngle + slot.angle;\n return new geom.Arc([\n slot.c.x,\n slot.c.y\n ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.r,\n radiusY: slot.r\n });\n },\n pointCategoryIndex: function (point) {\n var axis = this, index = null, i, length = axis.options.categories.length, slot;\n for (i = 0; i < length; i++) {\n slot = axis.getSlot(i);\n if (slot.containsPoint(point)) {\n index = i;\n break;\n }\n }\n return index;\n }\n });\n deepExtend(RadarCategoryAxis.fn, GridLinesMixin);\n var RadarNumericAxisMixin = {\n options: { majorGridLines: { visible: true } },\n createPlotBands: function () {\n var axis = this, options = axis.options, plotBands = options.plotBands || [], type = options.majorGridLines.type, altAxis = axis.plotArea.polarAxis, majorAngles = altAxis.majorAngles(), center = altAxis.box.center(), i, band, bandStyle, slot, ring;\n var group = this._plotbandGroup = new draw.Group({ zIndex: -1 });\n for (i = 0; i < plotBands.length; i++) {\n band = plotBands[i];\n bandStyle = {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: { opacity: band.opacity }\n };\n slot = axis.getSlot(band.from, band.to, true);\n ring = new Ring(center, center.y - slot.y2, center.y - slot.y1, 0, 360);\n var shape;\n if (type === ARC) {\n shape = ShapeBuilder.current.createRing(ring, bandStyle);\n } else {\n shape = draw.Path.fromPoints(axis.plotBandPoints(ring, majorAngles), bandStyle).close();\n }\n group.append(shape);\n }\n axis.appendVisual(group);\n },\n plotBandPoints: function (ring, angles) {\n var innerPoints = [], outerPoints = [];\n var center = [\n ring.c.x,\n ring.c.y\n ];\n var innerCircle = new geom.Circle(center, ring.ir);\n var outerCircle = new geom.Circle(center, ring.r);\n for (var i = 0; i < angles.length; i++) {\n innerPoints.push(innerCircle.pointAt(angles[i]));\n outerPoints.push(outerCircle.pointAt(angles[i]));\n }\n innerPoints.reverse();\n innerPoints.push(innerPoints[0]);\n outerPoints.push(outerPoints[0]);\n return outerPoints.concat(innerPoints);\n },\n createGridLines: function (altAxis) {\n var axis = this, options = axis.options, majorTicks = axis.radarMajorGridLinePositions(), majorAngles = altAxis.majorAngles(), minorTicks, center = altAxis.box.center(), gridLines = [];\n if (options.majorGridLines.visible) {\n gridLines = axis.renderGridLines(center, majorTicks, majorAngles, options.majorGridLines);\n }\n if (options.minorGridLines.visible) {\n minorTicks = axis.radarMinorGridLinePositions();\n append(gridLines, axis.renderGridLines(center, minorTicks, majorAngles, options.minorGridLines));\n }\n return gridLines;\n },\n renderGridLines: function (center, ticks, angles, options) {\n var tickRadius, tickIx, angleIx;\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n var container = this.gridLinesVisual();\n for (tickIx = 0; tickIx < ticks.length; tickIx++) {\n tickRadius = center.y - ticks[tickIx];\n if (tickRadius > 0) {\n var circle = new geom.Circle([\n center.x,\n center.y\n ], tickRadius);\n if (options.type === ARC) {\n container.append(new draw.Circle(circle, style));\n } else {\n var line = new draw.Path(style);\n for (angleIx = 0; angleIx < angles.length; angleIx++) {\n line.lineTo(circle.pointAt(angles[angleIx]));\n }\n line.close();\n container.append(line);\n }\n }\n }\n return container.children;\n },\n getValue: function (point) {\n var axis = this, options = axis.options, lineBox = axis.lineBox(), altAxis = axis.plotArea.polarAxis, majorAngles = altAxis.majorAngles(), center = altAxis.box.center(), r = point.distanceTo(center), distance = r;\n if (options.majorGridLines.type !== ARC && majorAngles.length > 1) {\n var dx = point.x - center.x, dy = point.y - center.y, theta = (math.atan2(dy, dx) / DEG_TO_RAD + 540) % 360;\n majorAngles.sort(function (a, b) {\n return angularDistance(a, theta) - angularDistance(b, theta);\n });\n var midAngle = angularDistance(majorAngles[0], majorAngles[1]) / 2, alpha = angularDistance(theta, majorAngles[0]), gamma = 90 - midAngle, beta = 180 - alpha - gamma;\n distance = r * (math.sin(beta * DEG_TO_RAD) / math.sin(gamma * DEG_TO_RAD));\n }\n return axis.axisType().fn.getValue.call(axis, new Point2D(lineBox.x1, lineBox.y2 - distance));\n }\n };\n var RadarNumericAxis = NumericAxis.extend({\n radarMajorGridLinePositions: function () {\n return this.getTickPositions(this.options.majorUnit);\n },\n radarMinorGridLinePositions: function () {\n var axis = this, options = axis.options, minorSkipStep = 0;\n if (options.majorGridLines.visible) {\n minorSkipStep = options.majorUnit;\n }\n return axis.getTickPositions(options.minorUnit, minorSkipStep);\n },\n axisType: function () {\n return NumericAxis;\n }\n });\n deepExtend(RadarNumericAxis.fn, RadarNumericAxisMixin);\n var RadarLogarithmicAxis = LogarithmicAxis.extend({\n radarMajorGridLinePositions: function () {\n var axis = this, positions = [];\n axis.traverseMajorTicksPositions(function (position) {\n positions.push(position);\n }, axis.options.majorGridLines);\n return positions;\n },\n radarMinorGridLinePositions: function () {\n var axis = this, positions = [];\n axis.traverseMinorTicksPositions(function (position) {\n positions.push(position);\n }, axis.options.minorGridLines);\n return positions;\n },\n axisType: function () {\n return LogarithmicAxis;\n }\n });\n deepExtend(RadarLogarithmicAxis.fn, RadarNumericAxisMixin);\n var PolarAxis = Axis.extend({\n init: function (options) {\n var axis = this;\n Axis.fn.init.call(axis, options);\n options = axis.options;\n options.minorUnit = options.minorUnit || axis.options.majorUnit / 2;\n },\n options: {\n type: 'polar',\n startAngle: 0,\n reverse: false,\n majorUnit: 60,\n min: 0,\n max: 360,\n labels: { margin: getSpacing(10) },\n majorGridLines: {\n color: BLACK,\n visible: true,\n width: 1\n },\n minorGridLines: { color: '#aaa' }\n },\n getDivisions: function (stepValue) {\n return NumericAxis.fn.getDivisions.call(this, stepValue) - 1;\n },\n reflow: function (box) {\n this.box = box;\n this.reflowLabels();\n },\n reflowLabels: function () {\n var axis = this, options = axis.options, labelOptions = options.labels, skip = labelOptions.skip || 0, step = labelOptions.step || 1, measureBox = new Box2D(), divs = axis.intervals(options.majorUnit, skip, step), labels = axis.labels, labelBox, i;\n for (i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n labelBox = labels[i].box;\n labels[i].reflow(axis.getSlot(divs[i]).adjacentBox(0, labelBox.width(), labelBox.height()));\n }\n },\n lineBox: function () {\n return this.box;\n },\n intervals: function (size, skip, step, skipAngles) {\n var axis = this, options = axis.options, divisions = axis.getDivisions(size), min = options.min, current, divs = [], i;\n skip = skip || 0;\n step = step || 1;\n for (i = skip; i < divisions; i += step) {\n current = (360 + min + i * size) % 360;\n if (!(skipAngles && dataviz.inArray(current, skipAngles))) {\n divs.push(current);\n }\n }\n return divs;\n },\n majorIntervals: function () {\n return this.intervals(this.options.majorUnit);\n },\n minorIntervals: function () {\n return this.intervals(this.options.minorUnit);\n },\n intervalAngle: function (i) {\n return (540 - i - this.options.startAngle) % 360;\n },\n majorAngles: RadarCategoryAxis.fn.majorAngles,\n createLine: function () {\n return [];\n },\n majorGridLineAngles: function (altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, this.options.majorUnit, majorGridLines.skip, majorGridLines.step);\n },\n minorGridLineAngles: function (altAxis, skipMajor) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(options.majorUnit, majorGridLines.skip, majorGridLines.step) : null;\n return this.gridLineAngles(altAxis, this.options.minorUnit, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n },\n createPlotBands: RadarCategoryAxis.fn.createPlotBands,\n plotBandSlot: function (band) {\n return this.getSlot(band.from, band.to);\n },\n getSlot: function (a, b) {\n var axis = this, options = axis.options, start = options.startAngle, box = axis.box, tmp;\n a = limitValue(a, options.min, options.max);\n b = limitValue(b || a, a, options.max);\n if (options.reverse) {\n a *= -1;\n b *= -1;\n }\n a = (540 - a - start) % 360;\n b = (540 - b - start) % 360;\n if (b < a) {\n tmp = a;\n a = b;\n b = tmp;\n }\n return new Ring(box.center(), 0, box.height() / 2, a, b - a);\n },\n slot: function (from, to) {\n var options = this.options;\n var start = 360 - options.startAngle;\n var slot = this.getSlot(from, to);\n var startAngle;\n var endAngle;\n var min;\n var max;\n if (!dataviz.util.defined(to)) {\n to = from;\n }\n min = math.min(from, to);\n max = math.max(from, to);\n if (options.reverse) {\n startAngle = min;\n endAngle = max;\n } else {\n startAngle = 360 - max;\n endAngle = 360 - min;\n }\n startAngle = (startAngle + start) % 360;\n endAngle = (endAngle + start) % 360;\n return new geom.Arc([\n slot.c.x,\n slot.c.y\n ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.r,\n radiusY: slot.r\n });\n },\n getValue: function (point) {\n var axis = this, options = axis.options, center = axis.box.center(), dx = point.x - center.x, dy = point.y - center.y, theta = math.round(math.atan2(dy, dx) / DEG_TO_RAD), start = options.startAngle;\n if (!options.reverse) {\n theta *= -1;\n start *= -1;\n }\n return (theta + start + 360) % 360;\n },\n range: NumericAxis.fn.range,\n labelsCount: NumericAxis.fn.labelsCount,\n createAxisLabel: NumericAxis.fn.createAxisLabel\n });\n deepExtend(PolarAxis.fn, GridLinesMixin);\n var RadarClusterLayout = ChartElement.extend({\n options: {\n gap: 1,\n spacing: 0\n },\n reflow: function (sector) {\n var cluster = this, options = cluster.options, children = cluster.children, gap = options.gap, spacing = options.spacing, count = children.length, slots = count + gap + spacing * (count - 1), slotAngle = sector.angle / slots, slotSector, angle = sector.startAngle + slotAngle * (gap / 2), i;\n for (i = 0; i < count; i++) {\n slotSector = sector.clone();\n slotSector.startAngle = angle;\n slotSector.angle = slotAngle;\n if (children[i].sector) {\n slotSector.r = children[i].sector.r;\n }\n children[i].reflow(slotSector);\n children[i].sector = slotSector;\n angle += slotAngle + slotAngle * spacing;\n }\n }\n });\n var RadarStackLayout = ChartElement.extend({\n reflow: function (sector) {\n var stack = this, reverse = stack.options.isReversed, children = stack.children, childrenCount = children.length, childSector, i, first = reverse ? childrenCount - 1 : 0, step = reverse ? -1 : 1;\n stack.box = new Box2D();\n for (i = first; i >= 0 && i < childrenCount; i += step) {\n childSector = children[i].sector;\n childSector.startAngle = sector.startAngle;\n childSector.angle = sector.angle;\n }\n }\n });\n var RadarSegment = DonutSegment.extend({\n init: function (value, options) {\n DonutSegment.fn.init.call(this, value, null, options);\n },\n options: {\n overlay: { gradient: null },\n labels: { distance: 10 }\n }\n });\n var RadarBarChart = BarChart.extend({\n pointType: function () {\n return RadarSegment;\n },\n clusterType: function () {\n return RadarClusterLayout;\n },\n stackType: function () {\n return RadarStackLayout;\n },\n categorySlot: function (categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n },\n pointSlot: function (categorySlot, valueSlot) {\n var slot = categorySlot.clone(), y = categorySlot.c.y;\n slot.r = y - valueSlot.y1;\n slot.ir = y - valueSlot.y2;\n return slot;\n },\n reflow: CategoricalChart.fn.reflow,\n reflowPoint: function (point, pointSlot) {\n point.sector = pointSlot;\n point.reflow();\n },\n options: {\n clip: false,\n animation: { type: 'pie' }\n },\n createAnimation: function () {\n this.options.animation.center = this.box.toRect().center();\n BarChart.fn.createAnimation.call(this);\n }\n });\n var RadarLineChart = LineChart.extend({\n options: { clip: false },\n pointSlot: function (categorySlot, valueSlot) {\n var valueRadius = categorySlot.c.y - valueSlot.y1, slot = Point2D.onCircle(categorySlot.c, categorySlot.middle(), valueRadius);\n return new Box2D(slot.x, slot.y, slot.x, slot.y);\n },\n createSegment: function (linePoints, currentSeries, seriesIx) {\n var segment, pointType, style = currentSeries.style;\n if (style == SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n segment = new pointType(linePoints, currentSeries, seriesIx);\n if (linePoints.length === currentSeries.data.length) {\n segment.options.closed = true;\n }\n return segment;\n }\n });\n var RadarAreaSegment = AreaSegment.extend({\n points: function () {\n return LineSegment.fn.points.call(this, this.stackPoints);\n }\n });\n var SplineRadarAreaSegment = SplineAreaSegment.extend({ closeFill: $.noop });\n var RadarAreaChart = RadarLineChart.extend({\n createSegment: function (linePoints, currentSeries, seriesIx, prevSegment) {\n var chart = this, options = chart.options, isStacked = options.isStacked, stackPoints, segment, style = (currentSeries.line || {}).style;\n if (style === SMOOTH) {\n segment = new SplineRadarAreaSegment(linePoints, prevSegment, isStacked, currentSeries, seriesIx);\n segment.options.closed = true;\n } else {\n if (isStacked && seriesIx > 0 && prevSegment) {\n stackPoints = prevSegment.linePoints.slice(0).reverse();\n }\n linePoints.push(linePoints[0]);\n segment = new RadarAreaSegment(linePoints, stackPoints, currentSeries, seriesIx);\n }\n return segment;\n },\n seriesMissingValues: function (series) {\n return series.missingValues || ZERO;\n }\n });\n var PolarScatterChart = ScatterChart.extend({\n pointSlot: function (slotX, slotY) {\n var valueRadius = slotX.c.y - slotY.y1, slot = Point2D.onCircle(slotX.c, slotX.startAngle, valueRadius);\n return new Box2D(slot.x, slot.y, slot.x, slot.y);\n },\n options: { clip: false }\n });\n var PolarLineChart = ScatterLineChart.extend({\n pointSlot: PolarScatterChart.fn.pointSlot,\n options: { clip: false }\n });\n var PolarAreaSegment = AreaSegment.extend({\n points: function () {\n var segment = this, chart = segment.parent, plotArea = chart.plotArea, polarAxis = plotArea.polarAxis, center = polarAxis.box.center(), stackPoints = segment.stackPoints, points = LineSegment.fn.points.call(segment, stackPoints);\n points.unshift([\n center.x,\n center.y\n ]);\n points.push([\n center.x,\n center.y\n ]);\n return points;\n }\n });\n var SplinePolarAreaSegment = SplineAreaSegment.extend({\n closeFill: function (fillPath) {\n var center = this._polarAxisCenter();\n fillPath.lineTo(center.x, center.y);\n },\n _polarAxisCenter: function () {\n var chart = this.parent, plotArea = chart.plotArea, polarAxis = plotArea.polarAxis, center = polarAxis.box.center();\n return center;\n },\n strokeSegments: function () {\n var segments = this._strokeSegments;\n if (!segments) {\n var center = this._polarAxisCenter(), curveProcessor = new CurveProcessor(false), linePoints = LineSegment.fn.points.call(this);\n linePoints.push(center);\n segments = this._strokeSegments = curveProcessor.process(linePoints);\n segments.pop();\n }\n return segments;\n }\n });\n var PolarAreaChart = PolarLineChart.extend({\n createSegment: function (linePoints, currentSeries, seriesIx) {\n var segment, style = (currentSeries.line || {}).style;\n if (style == SMOOTH) {\n segment = new SplinePolarAreaSegment(linePoints, null, false, currentSeries, seriesIx);\n } else {\n segment = new PolarAreaSegment(linePoints, [], currentSeries, seriesIx);\n }\n return segment;\n },\n createMissingValue: function (value, missingValues) {\n var missingValue;\n if (dataviz.hasValue(value.x) && missingValues != INTERPOLATE) {\n missingValue = {\n x: value.x,\n y: value.y\n };\n if (missingValues == ZERO) {\n missingValue.y = 0;\n }\n }\n return missingValue;\n },\n seriesMissingValues: function (series) {\n return series.missingValues || ZERO;\n },\n _hasMissingValuesGap: function () {\n var series = this.options.series;\n for (var idx = 0; idx < series.length; idx++) {\n if (this.seriesMissingValues(series[idx]) === GAP) {\n return true;\n }\n }\n },\n sortPoints: function (points) {\n var value, point;\n points.sort(xComparer);\n if (this._hasMissingValuesGap()) {\n for (var idx = 0; idx < points.length; idx++) {\n point = points[idx];\n if (point) {\n value = point.value;\n if (!dataviz.hasValue(value.y) && this.seriesMissingValues(point.series) === GAP) {\n delete points[idx];\n }\n }\n }\n }\n return points;\n }\n });\n var PolarPlotAreaBase = PlotAreaBase.extend({\n init: function (series, options) {\n var plotArea = this;\n plotArea.valueAxisRangeTracker = new AxisGroupRangeTracker();\n PlotAreaBase.fn.init.call(plotArea, series, options);\n },\n render: function () {\n var plotArea = this;\n plotArea.addToLegend(plotArea.series);\n plotArea.createPolarAxis();\n plotArea.createCharts();\n plotArea.createValueAxis();\n },\n alignAxes: function () {\n var axis = this.valueAxis;\n var range = axis.range();\n var crossingValue = axis.options.reverse ? range.max : range.min;\n var slot = axis.getSlot(crossingValue);\n var center = this.polarAxis.getSlot(0).c;\n var axisBox = axis.box.translate(center.x - slot.x1, center.y - slot.y1);\n axis.reflow(axisBox);\n },\n createValueAxis: function () {\n var plotArea = this, tracker = plotArea.valueAxisRangeTracker, defaultRange = tracker.query(), range, valueAxis, axisOptions = plotArea.valueAxisOptions({\n roundToMajorUnit: false,\n zIndex: -1\n }), axisType, axisDefaultRange;\n if (axisOptions.type === LOGARITHMIC) {\n axisType = RadarLogarithmicAxis;\n axisDefaultRange = {\n min: 0.1,\n max: 1\n };\n } else {\n axisType = RadarNumericAxis;\n axisDefaultRange = {\n min: 0,\n max: 1\n };\n }\n range = tracker.query(name) || defaultRange || axisDefaultRange;\n if (range && defaultRange) {\n range.min = math.min(range.min, defaultRange.min);\n range.max = math.max(range.max, defaultRange.max);\n }\n valueAxis = new axisType(range.min, range.max, axisOptions);\n plotArea.valueAxis = valueAxis;\n plotArea.appendAxis(valueAxis);\n },\n reflowAxes: function () {\n var plotArea = this, options = plotArea.options.plotArea, valueAxis = plotArea.valueAxis, polarAxis = plotArea.polarAxis, box = plotArea.box, defaultPadding = math.min(box.width(), box.height()) * DEFAULT_PADDING, padding = getSpacing(options.padding || {}, defaultPadding), axisBox = box.clone().unpad(padding), valueAxisBox = axisBox.clone().shrink(0, axisBox.height() / 2);\n polarAxis.reflow(axisBox);\n valueAxis.reflow(valueAxisBox);\n var heightDiff = valueAxis.lineBox().height() - valueAxis.box.height();\n valueAxis.reflow(valueAxis.box.unpad({ top: heightDiff }));\n plotArea.axisBox = axisBox;\n plotArea.alignAxes(axisBox);\n },\n backgroundBox: function () {\n return this.box;\n }\n });\n var RadarPlotArea = PolarPlotAreaBase.extend({\n options: {\n categoryAxis: { categories: [] },\n valueAxis: {}\n },\n createPolarAxis: function () {\n var plotArea = this, categoryAxis;\n categoryAxis = new RadarCategoryAxis(plotArea.options.categoryAxis);\n plotArea.polarAxis = categoryAxis;\n plotArea.categoryAxis = categoryAxis;\n plotArea.appendAxis(categoryAxis);\n plotArea.aggregateCategories();\n },\n valueAxisOptions: function (defaults) {\n var plotArea = this;\n if (plotArea._hasBarCharts) {\n deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n });\n }\n if (plotArea._isStacked100) {\n deepExtend(defaults, {\n roundToMajorUnit: false,\n labels: { format: 'P0' }\n });\n }\n return deepExtend(defaults, plotArea.options.valueAxis);\n },\n appendChart: CategoricalPlotArea.fn.appendChart,\n aggregateSeries: CategoricalPlotArea.fn.aggregateSeries,\n aggregateCategories: function () {\n CategoricalPlotArea.fn.aggregateCategories.call(this, this.panes);\n },\n filterSeries: function (currentSeries) {\n return currentSeries;\n },\n createCharts: function () {\n var plotArea = this, series = plotArea.filterVisibleSeries(plotArea.series), pane = plotArea.panes[0];\n plotArea.createAreaChart(filterSeriesByType(series, [RADAR_AREA]), pane);\n plotArea.createLineChart(filterSeriesByType(series, [RADAR_LINE]), pane);\n plotArea.createBarChart(filterSeriesByType(series, [RADAR_COLUMN]), pane);\n },\n chartOptions: function (series) {\n var options = { series: series };\n var firstSeries = series[0];\n if (firstSeries) {\n var filteredSeries = this.filterVisibleSeries(series);\n var stack = firstSeries.stack;\n options.isStacked = stack && filteredSeries.length > 1;\n options.isStacked100 = stack && stack.type === '100%' && filteredSeries.length > 1;\n if (options.isStacked100) {\n this._isStacked100 = true;\n }\n }\n return options;\n },\n createAreaChart: function (series, pane) {\n if (series.length === 0) {\n return;\n }\n var areaChart = new RadarAreaChart(this, this.chartOptions(series));\n this.appendChart(areaChart, pane);\n },\n createLineChart: function (series, pane) {\n if (series.length === 0) {\n return;\n }\n var lineChart = new RadarLineChart(this, this.chartOptions(series));\n this.appendChart(lineChart, pane);\n },\n createBarChart: function (series, pane) {\n if (series.length === 0) {\n return;\n }\n var firstSeries = series[0];\n var options = this.chartOptions(series);\n options.gap = firstSeries.gap;\n options.spacing = firstSeries.spacing;\n var barChart = new RadarBarChart(this, options);\n this.appendChart(barChart, pane);\n this._hasBarCharts = true;\n },\n seriesCategoryAxis: function () {\n return this.categoryAxis;\n },\n click: function (chart, e) {\n var plotArea = this, coords = chart._eventCoordinates(e), point = new Point2D(coords.x, coords.y), category, value;\n category = plotArea.categoryAxis.getCategory(point);\n value = plotArea.valueAxis.getValue(point);\n if (category !== null && value !== null) {\n chart.trigger(PLOT_AREA_CLICK, {\n element: eventTargetElement(e),\n category: category,\n value: value\n });\n }\n },\n createCrosshairs: $.noop\n });\n var PolarPlotArea = PolarPlotAreaBase.extend({\n options: {\n xAxis: {},\n yAxis: {}\n },\n createPolarAxis: function () {\n var plotArea = this, polarAxis;\n polarAxis = new PolarAxis(plotArea.options.xAxis);\n plotArea.polarAxis = polarAxis;\n plotArea.axisX = polarAxis;\n plotArea.appendAxis(polarAxis);\n },\n valueAxisOptions: function (defaults) {\n var plotArea = this;\n return deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n }, plotArea.options.yAxis);\n },\n createValueAxis: function () {\n var plotArea = this;\n PolarPlotAreaBase.fn.createValueAxis.call(plotArea);\n plotArea.axisY = plotArea.valueAxis;\n },\n appendChart: function (chart, pane) {\n var plotArea = this;\n plotArea.valueAxisRangeTracker.update(chart.yAxisRanges);\n PlotAreaBase.fn.appendChart.call(plotArea, chart, pane);\n },\n createCharts: function () {\n var plotArea = this, series = plotArea.filterVisibleSeries(plotArea.series), pane = plotArea.panes[0];\n plotArea.createLineChart(filterSeriesByType(series, [POLAR_LINE]), pane);\n plotArea.createScatterChart(filterSeriesByType(series, [POLAR_SCATTER]), pane);\n plotArea.createAreaChart(filterSeriesByType(series, [POLAR_AREA]), pane);\n },\n createLineChart: function (series, pane) {\n if (series.length === 0) {\n return;\n }\n var plotArea = this, lineChart = new PolarLineChart(plotArea, { series: series });\n plotArea.appendChart(lineChart, pane);\n },\n createScatterChart: function (series, pane) {\n if (series.length === 0) {\n return;\n }\n var plotArea = this, scatterChart = new PolarScatterChart(plotArea, { series: series });\n plotArea.appendChart(scatterChart, pane);\n },\n createAreaChart: function (series, pane) {\n if (series.length === 0) {\n return;\n }\n var plotArea = this, areaChart = new PolarAreaChart(plotArea, { series: series });\n plotArea.appendChart(areaChart, pane);\n },\n click: function (chart, e) {\n var plotArea = this, coords = chart._eventCoordinates(e), point = new Point2D(coords.x, coords.y), xValue, yValue;\n xValue = plotArea.axisX.getValue(point);\n yValue = plotArea.axisY.getValue(point);\n if (xValue !== null && yValue !== null) {\n chart.trigger(PLOT_AREA_CLICK, {\n element: eventTargetElement(e),\n x: xValue,\n y: yValue\n });\n }\n },\n createCrosshairs: $.noop\n });\n function xComparer(a, b) {\n return a.value.x - b.value.x;\n }\n function angularDistance(a, b) {\n return 180 - math.abs(math.abs(a - b) - 180);\n }\n PlotAreaFactory.current.register(PolarPlotArea, POLAR_CHARTS);\n PlotAreaFactory.current.register(RadarPlotArea, RADAR_CHARTS);\n SeriesBinder.current.register(POLAR_CHARTS, [\n X,\n Y\n ], ['color']);\n SeriesBinder.current.register(RADAR_CHARTS, ['value'], ['color']);\n dataviz.DefaultAggregates.current.register(RADAR_CHARTS, {\n value: 'max',\n color: 'first'\n });\n deepExtend(dataviz, {\n PolarAreaChart: PolarAreaChart,\n PolarAxis: PolarAxis,\n PolarLineChart: PolarLineChart,\n PolarPlotArea: PolarPlotArea,\n RadarAreaChart: RadarAreaChart,\n RadarBarChart: RadarBarChart,\n RadarCategoryAxis: RadarCategoryAxis,\n RadarClusterLayout: RadarClusterLayout,\n RadarLineChart: RadarLineChart,\n RadarNumericAxis: RadarNumericAxis,\n RadarPlotArea: RadarPlotArea,\n SplinePolarAreaSegment: SplinePolarAreaSegment,\n SplineRadarAreaSegment: SplineRadarAreaSegment,\n RadarStackLayout: RadarStackLayout\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"],"sourceRoot":"/source/"}