{"version":3,"sources":["webpack://echartsExample/webpack/bootstrap","webpack://echartsExample/src/editor/CodeAce.vue","webpack://echartsExample/src/editor/CodeMonaco.vue","webpack://echartsExample/src/editor/Editor.vue","webpack://echartsExample/src/editor/Preview.vue","webpack://echartsExample/src/editor/View.vue","webpack://echartsExample/src/explore/ExampleCard.vue","webpack://echartsExample/src/explore/Explore.vue","webpack://echartsExample/./node_modules/lodash/_Symbol.js","webpack://echartsExample/./node_modules/lodash/_baseGetTag.js","webpack://echartsExample/./node_modules/lodash/_freeGlobal.js","webpack://echartsExample/./node_modules/lodash/_getRawTag.js","webpack://echartsExample/./node_modules/lodash/_objectToString.js","webpack://echartsExample/./node_modules/lodash/_root.js","webpack://echartsExample/./node_modules/lodash/debounce.js","webpack://echartsExample/./node_modules/lodash/isObject.js","webpack://echartsExample/./node_modules/lodash/isObjectLike.js","webpack://echartsExample/./node_modules/lodash/isSymbol.js","webpack://echartsExample/./node_modules/lodash/now.js","webpack://echartsExample/./node_modules/lodash/toNumber.js","webpack://echartsExample/./src/editor/CodeAce.vue?a2ca","webpack://echartsExample/./src/editor/CodeMonaco.vue?059e","webpack://echartsExample/./src/editor/Editor.vue?7a86","webpack://echartsExample/./src/editor/Preview.vue?1f0a","webpack://echartsExample/./src/explore/ExampleCard.vue?d97b","webpack://echartsExample/./src/explore/Explore.vue?3912","webpack://echartsExample/./node_modules/resize-detector/esm/index.js","webpack://echartsExample/./node_modules/scroll-into-view/scrollIntoView.js","webpack://echartsExample/./node_modules/vanilla-lazyload/dist/lazyload.esm.js","webpack://echartsExample/./node_modules/vue-i18n/dist/vue-i18n.esm.js","webpack://echartsExample/./src/editor/CodeAce.vue?b413","webpack://echartsExample/./src/editor/CodeMonaco.vue?b73a","webpack://echartsExample/./src/editor/Editor.vue?a6de","webpack://echartsExample/./src/editor/Preview.vue?1e91","webpack://echartsExample/./src/editor/View.vue?ea0e","webpack://echartsExample/./src/explore/ExampleCard.vue?3884","webpack://echartsExample/./src/explore/Explore.vue?7f63","webpack://echartsExample/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://echartsExample/./node_modules/vue-scrollactive/dist/vue-scrollactive.min.js","webpack://echartsExample/(webpack)/buildin/global.js","webpack://echartsExample/./src/asset/placeholder.jpg","webpack://echartsExample/./src/common/config.js","webpack://echartsExample/./src/common/helper.js","webpack://echartsExample/./src/common/i18n.js","webpack://echartsExample/./src/common/store.js","webpack://echartsExample/./src/data/chart-list-data-gl.js","webpack://echartsExample/./src/data/chart-list-data.js","webpack://echartsExample/./src/data/option-keywords.js","webpack://echartsExample/./src/dep/showDebugDirtyRect.js","webpack://echartsExample/./src/editor/CodeAce.vue","webpack://echartsExample/./src/editor/CodeAce.vue?03d9","webpack://echartsExample/./src/editor/CodeAce.vue?a765","webpack://echartsExample/./src/editor/CodeAce.vue?4fab","webpack://echartsExample/./src/editor/CodeMonaco.vue","webpack://echartsExample/./src/editor/CodeMonaco.vue?439c","webpack://echartsExample/./src/editor/CodeMonaco.vue?5a6f","webpack://echartsExample/./src/editor/CodeMonaco.vue?8bdb","webpack://echartsExample/./src/editor/Editor.vue","webpack://echartsExample/./src/editor/Editor.vue?f741","webpack://echartsExample/./src/editor/Editor.vue?5042","webpack://echartsExample/./src/editor/Editor.vue?421b","webpack://echartsExample/./src/editor/Preview.vue","webpack://echartsExample/./src/editor/Preview.vue?495e","webpack://echartsExample/./src/editor/Preview.vue?8a8e","webpack://echartsExample/./src/editor/Preview.vue?670b","webpack://echartsExample/./src/editor/View.vue","webpack://echartsExample/./src/editor/View.vue?aaee","webpack://echartsExample/./src/editor/View.vue?51ec","webpack://echartsExample/./src/editor/downloadExample.js","webpack://echartsExample/./src/editor/sandbox.js","webpack://echartsExample/./src/explore/ExampleCard.vue","webpack://echartsExample/./src/explore/ExampleCard.vue?ec6a","webpack://echartsExample/./src/explore/ExampleCard.vue?9ab5","webpack://echartsExample/./src/explore/ExampleCard.vue?62f4","webpack://echartsExample/./src/explore/Explore.vue","webpack://echartsExample/./src/explore/Explore.vue?3d60","webpack://echartsExample/./src/explore/Explore.vue?d857","webpack://echartsExample/./src/explore/Explore.vue?21ba","webpack://echartsExample/./src/main.js","webpack://echartsExample/external \"Vue\""],"names":["EXAMPLE_CATEGORIES","THEMES","dark","BLACK_MAP","list","map","i","length","location","href","indexOf","URL_PARAMS","search","substr","split","forEach","item","kv","SUPPORT_WEBP","elem","document","createElement","width","height","getContext","toDataURL","SCRIPT_URLS","localEChartsMinJS","echartsMinJS","echartsDir","echartsStatMinJS","echartsGLMinJS","datGUIMinJS","monacoDir","aceDir","promisesCache","loadScriptsAsync","scripts","Promise","all","scriptUrl","url","type","match","promise","resolve","reject","script","src","async","onload","onerror","body","appendChild","link","rel","en","editor","run","errorInEditor","chartOK","darkMode","enableDecal","renderCfgTitle","renderer","useDirtyRect","download","edit","monacoMode","chartTypes","line","bar","pie","scatter","candlestick","radar","boxplot","heatmap","graph","lines","tree","treemap","sunburst","parallel","sankey","funnel","gauge","pictorialBar","themeRiver","calendar","custom","dataset","dataZoom","drag","rich","globe","bar3D","scatter3D","surface","map3D","lines3D","line3D","scatterGL","linesGL","flowGL","graphGL","zh","store","cdnRoot","version","locale","theme","typeCheck","code","runCode","sourceCode","isMobile","window","innerWidth","editorStatus","message","loadExampleCode","dataRoot","gl","$","ajax","c","dataType","success","data","parseSourceCode","replace","trim","keywords","fullKeywordsList","DebugRect","style","dom","className","Object","assign","backgroundColor","border","cssText","key","hasOwnProperty","prototype","update","rect","domStyle","left","x","top","y","hide","opacity","show","_this","clearTimeout","_hideTimeout","setTimeout","zr","opts","painter","getLayers","Error","isSingleCanvas","debugViewRoot","debugRects","computedStyle","getComputedStyle","position","on","idx_1","eachBuiltinLayer","layer","debugGetPaintRects","paintRects","hasRootPath","rootPathCode","file","Blob","encoding","a","URL","createObjectURL","click","createSandbox","optionUpdated","appEnv","gui","_intervalIdList","_timeoutIdList","_oldSetTimeout","_oldSetInterval","setInterval","func","delay","id","push","gap","_clearTimeTickers","clearInterval","_events","_wrapOnMethods","chart","oldOn","oldSetOption","setOption","eventName","res","apply","arguments","_clearChartEvents","off","chartInstance","resize","dispose","getDataURL","pixelRatio","excludeComponents","el","echarts","init","showDebugDirtyRect","getZr","autoHideDelay","e","console","error","config","compiledCode","Function","option","updateTime","startTime","Date","endTime","domElement","remove","destroy","dat","GUI","autoPlace","css","right","zIndex","append","configParameters","name","value","isColor","controller","options","add","min","max","obj","colorArr","color","parse","stringify","onChange","onFinishChange","Vue","use","VueScrollactive","i18n","VueI18n","fallbackLocale","messages","querySelector","container","render","h","EditorPage","explore","ExplorePage","view","ViewPage","page"],"mappings":";;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;;;;;;;;;;AC5EA;AACA;AACA;AACA;;AAEA;AACA;AACA,oFACA,6EADA,EAEA,4FAFA,GAGA,IAHA,CAGA;AACA;;AAEA;;AACA;AACA;AACA,sBADA;AAEA,oBAFA;AAGA,oFAHA;AAIA;AAJA;AAMA;;AAEA;AACA;AACA;AACA;AAHA;AAKA,KArBA;AAsBA;;AACA;AACA;;AAEA;AAEA,wBAFA;AAIA,MAJA,kBAIA;AACA;AACA,iEADA;AAEA;AAFA;AAIA,GATA;AAWA,SAXA,qBAWA;AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCADA;AAEA,4BAFA;AAGA;AAHA;AAMA;AAEA;AACA,yEACA,+EADA;AAEA,OAHA;;AAKA;AACA;AACA;AACA,KApBA;AAqBA,GAlCA;AAoCA;AACA,kBADA,0BACA,IADA,EACA;AACA;AACA;;AACA;AACA;AACA,kBADA;AAEA;AAFA,WADA;AAIA;AACA,kBADA;AAEA;AAFA;AAJA;AASA;AACA;AAdA,GApCA;AAqDA;AACA,eADA,uBACA,MADA,EACA;AACA;AACA;AAHA;AArDA,G;;;;;;;;;;;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCADA;AAEA;AAFA,SAFA,CAOA;;AACA;AACA,4DADA;AAEA,kCAFA;AAGA;AAHA;;AAMA;AACA;AACA,mEACA,WADA,EAEA;AACA,oDAHA;AAKA;;AAEA,wtBA0BA,sBA1BA;AA4BA;AACA,KApDA;AAqDA,GAtDA;AAuDA;;AAEA;AACA;AACA;AACA,sFACA,mFADA,EAEA;AACA,wGAHA,GAIA,IAJA,CAIA;AACA;AAAA;AAAA;AAAA;AAAA;;AACA;AACA,0BACA,uBADA,GAEA;AACA;AACA;AACA,aAFA;AAGA,WANA;AAOA,SARA;AASA,OAfA;AAgBA;;AACA;AACA,GArBA,CAuBA;;;AACA;AACA;;AAEA;AAEA,wBAFA;AAIA,MAJA,kBAIA;AACA;AACA,iEADA;AAEA;AAFA;AAIA,GATA;AAWA,SAXA,qBAWA;AAAA;;AACA;AACA;AACA;AACA,4CACA,uBADA,EAEA,YAFA,EAGA;AACA,yCAJA;AAMA;AACA,oBADA;AAEA,gGAFA;AAGA;AACA;AADA,SAHA;AAMA;AANA;AASA;;AAEA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA,OAHA;AAIA,KA3BA;AA4BA,GAzCA;AA2CA,WA3CA,uBA2CA;AACA;AACA;;AACA;AACA;AACA,GAhDA;AAkDA;AACA,kBADA,0BACA,IADA,EACA;AACA;AACA;AACA;AACA;AALA,GAlDA;AA0DA;AACA,eADA,uBACA,MADA,EACA;AACA;AACA;AAHA;AA1DA,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA,iEADA;AAEA,uEAFA;AAGA;AAHA,GADA;AAOA,MAPA,kBAOA;AACA;AACA,sBADA;AAEA,2BAFA;AAGA,uBAHA;AAIA,iEAJA;AAKA;AALA;AAOA,GAfA;AAiBA;AACA,eADA,yBACA;AACA;AACA;AAEA;AACA;AACA;;AACA;AACA;;AACA;AACA;AACA;AACA;;AACA;AACA;AAfA,GAjBA;AAmCA,SAnCA,qBAmCA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAHA;AAIA,KANA,MAOA;AACA;AACA;AACA;AACA,OAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA,OANA;AAQA;AACA;AACA,OAFA;AAGA;AACA,GA9DA;AAgEA;AACA,uBADA,iCACA;AACA;AACA,KAHA;AAIA,iBAJA,2BAIA;AACA;AACA;AANA,GAhEA;AAyEA;AACA,sBADA,2BACA,eADA,EACA;AACA;AACA;AACA;AAJA;AAzEA,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAEA,+DAFA,CAIA;;AACA;AACA;AACA;AACA;;AAEA,oFACA,sEADA,EAEA,uEACA,4EADA,GACA,uEAHA,EAIA,qGAJA,EAKA,0FALA,EAMA,0FANA,EAOA,2EAPA,4BAQA,+IARA,sBASA,WACA,0GADA,EAEA,iGAFA,IAGA,EAZA,IAaA,IAbA,CAaA;AACA;AACA,KAfA;AAgBA;;AACA;AACA;;AAGA;AACA;AACA;AACA;;AACA;AACA;AACA;;AAGA;AAAA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA,OAFA,MAGA;AACA;AACA;AACA,KARA;AASA;;AAEA;AACA;AAEA,uDAHA,CAKA;;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA,GAnBA,CAoBA;AACA;AACA;AACA;AACA;;AAGA;AAEA,qBAFA;AAIA,MAJA,kBAIA;AACA;AACA,iEADA;AAEA,8BAFA;AAGA,yBAHA;AAIA,mBAJA;AAKA;AALA;AAOA,GAZA;AAcA,SAdA,qBAcA;AAAA;;AACA;AACA;AACA;;AACA;AACA;AACA;AACA,KALA;AAOA;AACA;AACA;AACA;AACA,KAJA;AAKA,GA5BA;AA8BA;AACA,YADA,sBACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AAVA,GA9BA;AA2CA;AACA,oBADA,yBACA,GADA,EACA;AACA;AACA;AACA;AACA;AACA,SAHA,MAIA;AACA;AACA;AACA;AACA,KAXA;AAYA,qBAZA,4BAYA;AACA;AACA,KAdA;AAeA,qBAfA,4BAeA;AACA;AACA,KAjBA;AAkBA,wBAlBA,+BAkBA;AACA;AACA,KApBA;AAqBA,yBArBA,gCAqBA;AACA;AACA;AAvBA,GA3CA;AAqEA;AACA,YADA;AAEA;AACA;AACA,cAJA,wBAIA;AACA;AACA;AACA,KAPA;AAQA,WARA,qBAQA;AACA;AACA;AACA;AACA,KAZA;AAaA,mBAbA,6BAaA;AACA;AACA,KAfA;AAgBA,cAhBA,wBAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBADA;AAEA;AAFA;AAIA;AACA;AACA,KA7BA,CA8BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAtCA;AArEA,G;;;;;;;;;;;;;;;;;;;AChKA;AACA;AAEA;AACA;AACA;AADA,GADA;AAKA,SALA,qBAKA;AACA;AACA;AACA,KAFA;AAGA;AATA,G;;;;;;;;;;;;;;;;;;;;;;;;;ACGA;AACA;AAEA;AACA,oBADA;AAGA;AAEA,SAFA,mBAEA;AACA,kIACA,kBADA,IACA,EADA;AAEA,KALA;AAOA,gBAPA,0BAOA;AACA;AACA,KATA;AAWA,YAXA,sBAWA;AACA;AACA,KAbA;AAeA,gBAfA,0BAeA;AACA;AACA;AACA,KAlBA;AAoBA,eApBA,yBAoBA;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA,KArCA;AAuCA,iBAvCA,2BAuCA;AACA;AACA;AACA;AACA;AACA;AACA;AA7CA;AAHA,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC0CA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AADA,GAFA;AAMA,MANA,kBAMA;AACA;;AAEA;AACA,4BADA,CAEA;;AACA;AACA;;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AAEA;;AACA;AACA;AACA;;AACA;AACA;AACA,qCADA;AAEA;AAFA;AAIA;AACA;;AACA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OA/BA,QA+BA,oCA/BA,EAHA,CAkCA;;AACA;;AAEA;AACA;AAEA;AACA,iEADA;AAGA,2FAHA;AAIA;AACA;AACA;AACA;AACA;AACA;AATA;AAWA,GA5DA;AA8DA;AACA,qBADA,4BACA;AACA;;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AATA,GA9DA;AA0EA;AACA,eADA,yBACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA,8BADA;AAEA;AAFA;AAIA;AACA;;AACA;AACA;AAdA,GA1EA;AA2FA,SA3FA,qBA2FA;AACA;AACA;AACA;AACA,yCAHA;AAIA,qBAJA;AAKA;AALA;AAOA,GAnGA;AAqGA;AACA,sBADA,8BACA,KADA,EACA,WADA,EACA,cADA,EACA,CACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAbA;AArGA,G;;;;;;;;;;;ACnEA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;;ACLA,aAAa,mBAAO,CAAC,mDAAW;AAChC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3BA;AACA;;AAEA;;;;;;;;;;;;;ACHA,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7CA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACRA,eAAe,mBAAO,CAAC,qDAAY;AACnC,UAAU,mBAAO,CAAC,2CAAO;AACzB,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO,YAAY;AAC9B,WAAW,QAAQ;AACnB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,QAAQ;AACnB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,8CAA8C,kBAAkB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtBA,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjEA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,2CAA2C;AAC3C;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,kBAAkB,UAAU,oBAAoB,iGAAiG,aAAa,kBAAkB,MAAM,OAAO,YAAY,WAAW,gBAAgB,gDAAgD,gBAAgB,cAAc,gCAAgC,WAAW,YAAY;;AAErY;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,4BAA4B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,WAAW,qBAAqB;AAChC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO,gBAAgB;AACvB,OAAO,4BAA4B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO,qBAAqB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,gCAAgC;;AAEvC;AACA,OAAO,sCAAsC;AAC7C,OAAO,2EAA2E;;AAElF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEuC;;;;;;;;;;;;ACvSvC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iDAAiD;;AAEjD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACvQA;AAAA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,UAAU,WAAW,EAAE;AAC/D,EAAE;AACF;AACA;AACA,oDAAoD,WAAW;AAC/D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,8BAA8B,4BAA4B;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,oCAAoC;AAC9D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0CAA0C,aAAa;AACvD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEe,uEAAQ,EAAC;;;;;;;;;;;;;ACzexB;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,WAAW;AACX,gBAAgB,IAAqC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,WAAW;AACX,gBAAgB,IAAqC;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,YAAY,IAAqC;AACjD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP,YAAY,IAAqC;AACjD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB;;AAElB;AACA;AACA;AACA,GAAG;;AAEH;AACA,MAAM,KAAqC;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,IAAqC;AAC3C;AACA;;AAEA;AACA,wCAAwC;AACxC,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC;AACnC,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B;;AAE3B;AACA;;AAEA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA,0EAA0E;;AAE1E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,6CAA6C;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,qBAAqB,4BAA4B;AACjD;;AAEA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C,KAAK;AACL;AACA,mCAAmC;AACnC;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,uBAAuB,4BAA4B;;AAEnD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,cAAc,IAAqC;AACnD;AACA;AACA;AACA;AACA;AACA,YAAY,IAAqC;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wCAAwC;;AAExC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8CAA8C;;AAE9C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;AAMA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;AAIA,sCAAsC;AACtC;AACA;AACA;AACA;AACA,2BAA2B,gCAAgC,EAAE;AAC7D,2BAA2B,gCAAgC,EAAE;AAC7D,gCAAgC,qEAAqE;AACrG;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,OAAO;AAC3B,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;;AAGA;AACA,2BAA2B;AAC3B,2DAA2D;AAC3D;AACA,uBAAuB;AACvB;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,0BAA0B,MAAM,qBAAqB,YAAY,qBAAqB,mBAAmB,qBAAqB,iBAAiB,qBAAqB,oBAAoB,qBAAqB,UAAU,qBAAqB,kBAAkB,qBAAqB,0BAA0B,qBAAqB,WAAW,qBAAqB,aAAa,qBAAqB,yBAAyB,qBAAqB,sBAAsB,qBAAqB,4BAA4B,qBAAqB,qBAAqB,qBAAqB,mBAAmB,qBAAqB;;AAEhmB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,aAAa;AACnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG,GAAG,aAAa;AACnB;;AAEA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,GAAG,GAAG,kBAAkB;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yCAAyC;;AAEzC,+CAA+C;AAC/C,sDAAsD;AACtD,oDAAoD;AACpD,uDAAuD;;AAEvD,6CAA6C;AAC7C;AACA;AACA;;AAEA,qDAAqD;AACrD;AACA;AACA;AACA;;AAEA,6DAA6D;AAC7D,qEAAqE,yCAAyC;;AAE9G,8CAA8C;AAC9C,qDAAqD,yBAAyB;;AAE9E,gDAAgD;AAChD,yDAAyD,6BAA6B;;AAEtF,4DAA4D;AAC5D,kEAAkE,sCAAsC;;AAExG,yDAAyD;AACzD,+DAA+D,mCAAmC;;AAElG,+DAA+D;AAC/D,uEAAuE,2CAA2C;;AAElH,wDAAwD;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,sDAAsD;AACtD,6DAA6D,iCAAiC;;AAE9F,2DAA2D;AAC3D,yEAAyE;AACzE,qEAAqE;;AAErE;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA,yDAAyD;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAqC;AACjD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,iBAAiB,2CAA2C;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;;AAErB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA,6BAA6B,aAAoB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA,sBAAsB;AACtB;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA,sBAAsB;AACtB;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC;AACvC;;AAEA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mDAAmD;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAmD,iCAAiC;AACpF;;AAEA;AACA,0DAA0D;AAC1D;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8FAA8F;AAC9F;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,aAAoB;AACjD;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA,sBAAsB;AACtB;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wDAAwD;AACxD;;AAEA;AACA;AACA;AACA;;AAEA;AACA,0FAA0F;AAC1F;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,aAAoB;AACjD;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,iEAAiE;AACjE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA,sBAAsB;AACtB,qDAAqD,GAAG,2BAA2B;AACnF,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA,sBAAsB;AACtB;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEe,sEAAO,EAAC;;;;;;;;;;;;;ACjlEvB;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,SAAS,uBAAuB,EAAE;AACvC;AACA;AACA;AACA;AACA;AACA,sBAAsB,qCAAqC;AAC3D,sBAAsB;AACtB,aAAa;AACb;AACA,yBAAyB,SAAS,sBAAsB,EAAE;AAC1D;AACA;AACA,mBAAmB,SAAS,kBAAkB,EAAE;AAChD;AACA;AACA;AACA,sCAAsC,gCAAgC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mCAAmC;AAC9D;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB,GAAG;AACrD,2BAA2B;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,mBAAmB;AACnB;AACA,4BAA4B;AAC5B,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oCAAoC;AACxD,oBAAoB,kBAAkB;AACtC,iBAAiB;AACjB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,gBAAgB;AAChB,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACzFA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,8DAA8D;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kCAAkC;AAClD,gBAAgB;AAChB,OAAO;AACP;AACA;AACA;AACA,SAAS,SAAS,mBAAmB,EAAE;AACvC;AACA;AACA;AACA,aAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD,0BAA0B;AAC1B,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB,yCAAyC;AAC9D;AACA;AACA;AACA,yBAAyB,SAAS,2CAA2C,EAAE;AAC/E;AACA;AACA;AACA,6BAA6B,SAAS,WAAW,EAAE;AACnD;AACA,2CAA2C,4BAA4B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,0CAA0C,eAAe;AACzD;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,4CAA4C;AAC5C,mCAAmC;AACnC;AACA;AACA,4CAA4C;AAC5C,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS,WAAW,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB;AAClD;AACA,qBAAqB;AACrB;AACA,+BAA+B,+CAA+C;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,yBAAyB;AACzB,mBAAmB;AACnB,4BAA4B,sCAAsC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC7MA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,oBAAoB,mCAAmC;AACvD;AACA;AACA;AACA;AACA,gBAAgB;AAChB,OAAO;AACP;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,6DAA0B;AACnD;AACA;AACA,SAAS;AACT;AACA,kBAAkB,+BAA+B;AACjD;AACA;AACA,sBAAsB,kCAAkC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,oBAAoB,SAAS,wBAAwB,EAAE;AACvD,eAAe,SAAS,uBAAuB,EAAE;AACjD;AACA;AACA,SAAS,SAAS,qBAAqB,EAAE;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,uBAAuB,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,mBAAmB;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA,oCAAoC,4BAA4B;AAChE;AACA,oCAAoC,4BAA4B;AAChE;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS,0BAA0B,EAAE;AACpD;AACA;AACA,SAAS,oCAAoC;AAC7C;AACA,4BAA4B,4BAA4B;AACxD;AACA;AACA;AACA;AACA,wBAAwB;AACxB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,sCAAsC,SAAS,uBAAuB,EAAE;AACxE;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC9HA;AAAA;AAAA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjGA;AACA,EAAE,KAAuD;AACzD;AACA,MAAM,SAIyB;AAC/B,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB,EAAE;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,yBAAyB;AAC3E,OAAO;AACP;AACA;AACA;AACA,wDAAwD,kBAAkB;AAC1E,kDAAkD,YAAY;AAC9D,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,2BAA2B;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,QAAQ;AAC7E;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,qFAAqF;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,gBAAgB;AAChB,OAAO;AACP;AACA;AACA,0BAA0B,qCAAqC;AAC/D,qBAAqB,4BAA4B;AACjD,2BAA2B,8BAA8B;AACzD,sCAAsC,4BAA4B;AAClE,4BAA4B,6BAA6B;AACzD,uBAAuB,6BAA6B;AACpD,0BAA0B,6BAA6B;AACvD,gCAAgC,sCAAsC;AACtE,wBAAwB,6BAA6B;AACrD,oBAAoB,6BAA6B;AACjD,iCAAiC,6BAA6B;AAC9D,kBAAkB,+BAA+B;AACjD,4BAA4B,6BAA6B;AACzD,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;AACf,aAAa;AACb;AACA,oCAAoC,GAAG;AACvC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;;;;;;;;;;ACxZD;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;ACnBA,iBAAiB,qBAAuB,8B;;;;;;;;;;;;ACCxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAMA,kBAA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","file":"example-bundle.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 = \"./src/main.js\");\n","<template>\n<div class=\"ace-editor-main\" v-loading=\"loading\"></div>\n</template>\n\n<script>\n\nimport {keywords, fullKeywordsList} from '../data/option-keywords';\nimport {loadScriptsAsync} from '../common/helper';\nimport {store} from '../common/store';\nimport {SCRIPT_URLS} from '../common/config';\n\nfunction ensureACE() {\n    if (typeof ace === 'undefined') {\n        return loadScriptsAsync([\n            SCRIPT_URLS.aceDir + '/ace.js',\n            SCRIPT_URLS.aceDir + '/ext-language_tools.js'\n        ]).then(function () {\n            const lnTools = ace.require('ace/ext/language_tools');\n\n            const completions = [];\n            for (let key in keywords) {\n                completions.push({\n                    caption: key,\n                    value: key,\n                    score: keywords[key],\n                    metal: 'local'\n                });\n            }\n\n            lnTools.addCompleter({\n                getCompletions: function (editor, session, pos, prefix, callback) {\n                    callback(null, completions);\n                }\n            });\n        })\n    }\n    return Promise.resolve();\n}\n\nexport default {\n\n    props: ['initialCode'],\n\n    data() {\n        return {\n            shared: store,\n            loading: false\n        }\n    },\n\n    mounted() {\n        this.loading = true;\n        ensureACE().then(() => {\n            this.loading = false;\n            const editor = ace.edit(this.$el);\n            editor.getSession().setMode('ace/mode/javascript');\n            editor.setOptions({\n                enableBasicAutocompletion: true,\n                enableSnippets: true,\n                enableLiveAutocompletion: true\n            });\n\n            this._editor = editor;\n\n            editor.on('change', () => {\n                store.sourceCode =\n                    store.runCode = editor.getValue();\n            });\n\n            if (this.initialCode) {\n                this.setInitialCode(this.initialCode);\n            }\n        });\n    },\n\n    methods: {\n        setInitialCode(code) {\n            if (this._editor && code) {\n                this._editor.setValue(code || '');\n                this._editor.selection.setSelectionRange({\n                    start: {\n                        row:1,\n                        column: 4\n                    }, end: {\n                        row:1,\n                        column: 4\n                    }\n                });\n            }\n        }\n    },\n\n    watch: {\n        initialCode(newVal) {\n            this.setInitialCode(newVal);\n        }\n    }\n}\n</script>\n\n<style lang=\"scss\">\n.ace-editor-main {\n    font-family: 'Source Code Pro', 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', monospace;\n    font-size: 12px;\n    line-height: 18px;\n    padding: 10px;\n}\n</style>","<template>\n<div class=\"monaco-editor-main\" v-loading=\"loading\"></div>\n</template>\n\n<script>\n\nimport {keywords, fullKeywordsList} from '../data/option-keywords';\nimport {loadScriptsAsync} from '../common/helper';\nimport {store} from '../common/store';\nimport {SCRIPT_URLS} from '../common/config';\nimport { ensureECharts } from './Preview.vue';\n\nfunction loadTypes() {\n    return new Promise(resolve => {\n        $.getJSON(store.cdnRoot + '/types/echarts-type-bundle.json', function (res) {\n            // validation settings\n            monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({\n                noSemanticValidation: false,\n                noSyntaxValidation: false\n            });\n\n            // compiler options\n            monaco.languages.typescript.typescriptDefaults.setCompilerOptions({\n                target: monaco.languages.typescript.ScriptTarget.ES6,\n                allowNonTsExtensions: true,\n                noResolve: false\n            });\n\n            for (let i = 0; i < res.length; i++) {\n                // console.log('file:///node_modules/@types/' + res[i].path);\n                monaco.languages.typescript.typescriptDefaults.addExtraLib(\n                    res[i].code,\n                    // https://github.com/microsoft/monaco-editor/issues/667#issuecomment-468164794\n                    'file:///node_modules/@types/' + res[i].path\n                );\n            }\n\n            monaco.languages.typescript.typescriptDefaults.addExtraLib(\n                `\nimport {init, EChartsOption} from 'echarts';\n// Declare to global namespace.\ndeclare global {\n    declare const $: any;\n    declare const ROOT_PATH: string;\n    declare const app: {\n        configParameters: {\n            [key: string]: ({\n                options: { [key: string]: string\n            }) | ({\n                min?: number\n                max?: number\n            })\n        }\n        config: {\n            onChange: () => void\n            [key: string]: string | number | function\n        }\n        [key: string]: any\n    };\n    declare const myChart: ReturnType<typeof init>;\n    declare var option: EChartsOption;\n}\n`,\n                'file:///example.d.ts'\n            );\n            resolve();\n        });\n    });\n}\n\nfunction ensureMonacoAndTsTransformer() {\n    function loadMonaco() {\n        if (typeof monaco === 'undefined') {\n            return loadScriptsAsync([\n                SCRIPT_URLS.monacoDir + '/loader.js',\n                // Prebuilt TS transformer with surcrase\n                store.cdnRoot + '/js/example-transform-ts-bundle.js'\n            ]).then(function () {\n                window.require.config({ paths: { 'vs': SCRIPT_URLS.monacoDir }});\n                return new Promise(resolve => {\n                    window.require([\n                        'vs/editor/editor.main'\n                    ], function () {\n                        loadTypes().then(() => {\n                            resolve();\n                        });\n                    })\n                });\n            })\n        }\n        return Promise.resolve();\n    }\n\n    // Must load echarts before monaco. Or the AMD loader will affect loading of echarts.\n    return ensureECharts().then(loadMonaco);\n}\n\nexport default {\n\n    props: ['initialCode'],\n\n    data() {\n        return {\n            shared: store,\n            loading: false\n        }\n    },\n\n    mounted() {\n        this.loading = true;\n        ensureMonacoAndTsTransformer().then(() => {\n            this.loading = false;\n            const model = monaco.editor.createModel(\n                this.initialCode || '',\n                'typescript',\n                // Should also be a file path so it can resolve the lib.\n                monaco.Uri.parse('file:///main.ts')\n            );\n            const editor = monaco.editor.create(this.$el, {\n                model,\n                fontFamily: `'Source Code Pro', 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', monospace`,\n                minimap: {\n                    enabled: false\n                },\n                automaticLayout: true\n            });\n\n            this._editor = editor;\n\n            if (this.initialCode) {\n                store.sourceCode = this.initialCode;\n                store.runCode = echartsExampleTransformTs(store.sourceCode);\n            }\n            editor.onDidChangeModelContent(() => {\n                store.sourceCode = editor.getValue();\n                store.runCode = echartsExampleTransformTs(store.sourceCode);\n            });\n        });\n    },\n\n    destroyed() {\n        if (this._editor) {\n            this._editor.getModel().dispose();\n            this._editor.dispose();\n        }\n    },\n\n    methods: {\n        setInitialCode(code) {\n            if (this._editor && code) {\n                this._editor.setValue(code || '');\n            }\n        }\n    },\n\n    watch: {\n        initialCode(newVal) {\n            this.setInitialCode(newVal);\n        }\n    }\n}\n</script>\n\n<style lang=\"scss\">\n.monaco-editor-main {\n    font-family: 'Source Code Pro', 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', monospace;\n    font-size: 12px;\n    padding: 0;\n    overflow-y: hidden;\n}\n</style>","<template>\n<div id=\"main-container\">\n    <div id=\"code-container\" :style=\"{width: leftContainerSize + '%'}\" v-if=\"!shared.isMobile\">\n        <div id=\"control-panel\">\n            <div id=\"code-info\">\n                <template v-if=\"shared.editorStatus.message\">\n                    <span class=\"code-info-time\">{{currentTime}}</span>\n                    <span :class=\"'code-info-type-' + shared.editorStatus.type\">{{shared.editorStatus.message}}</span>\n                </template>\n            </div>\n            <div class=\"control-btn-panel\">\n                <!-- <el-switch v-model=\"shared.typeCheck\"\n                    :active-text=\"$t('editor.monacoMode')\"\n                    :inactive-text=\"''\"\n                ></el-switch> -->\n                <a href=\"javascript:;\" class='btn btn-default btn-sm' @click='disposeAndRun'>{{$t('editor.run')}}</a>\n            </div>\n        </div>\n        <CodeMonaco v-if=\"shared.typeCheck\" id=\"code-panel\" :initialCode=\"initialCode\"></CodeMonaco>\n        <CodeAce v-else id=\"code-panel\" :initialCode=\"initialCode\"></CodeAce>\n    </div>\n    <div class=\"handler\" id=\"h-handler\" @mousedown=\"onSplitterDragStart\" :style=\"{left: leftContainerSize + '%'}\" v-if=\"!shared.isMobile\"></div>\n    <Preview :inEditor=\"true\" class=\"right-container\" ref=\"preview\" :style=\"{\n        width: (100 - leftContainerSize) + '%',\n        left: leftContainerSize + '%'\n    }\"></Preview>\n</div>\n</template>\n\n<script>\n\nimport CodeAce from './CodeAce.vue';\nimport CodeMonaco from './CodeMonaco.vue';\nimport Preview from './Preview.vue';\nimport {URL_PARAMS} from '../common/config';\nimport {store, loadExampleCode, parseSourceCode} from '../common/store';\n\nexport default {\n    components: {\n        CodeAce,\n        CodeMonaco,\n        Preview\n    },\n\n    data() {\n        return {\n            mousedown: false,\n            leftContainerSize: 40,\n            mobileMode: false,\n            shared: store,\n            initialCode: ''\n        };\n    },\n\n    computed: {\n        currentTime() {\n            // Update time when message updated.\n            const message = this.shared.message;\n\n            const time = new Date();\n            const digits = [time.getHours(), time.getMinutes(), time.getSeconds()];\n            let timeStr = '';\n            for (let i = 0, len = digits.length; i < len; ++i) {\n                timeStr += (digits[i] < 10 ? '0' : '') + digits[i];\n                if (i < len - 1) {\n                    timeStr += ':';\n                }\n            }\n            return timeStr;\n        }\n    },\n\n    mounted() {\n\n        if (store.isMobile) {\n            this.leftContainerSize = 0;\n            loadExampleCode().then(code => {\n                // No editor available. Set to runCode directly.\n                store.runCode = parseSourceCode(code);\n            });\n        }\n        else {\n            loadExampleCode().then(code => {\n                // Only set the code in editor. editor will sync to the store.\n                this.initialCode = parseSourceCode(code);\n            });\n\n            window.addEventListener('mousemove', (e) => {\n                if (this.mousedown) {\n                    let percentage = e.clientX / window.innerWidth;\n                    percentage = Math.min(0.9, Math.max(0.1, percentage));\n                    this.leftContainerSize = percentage * 100;\n                }\n            });\n\n            window.addEventListener('mouseup', (e) => {\n                this.mousedown = false;\n            });\n        }\n    },\n\n    methods: {\n        onSplitterDragStart() {\n            this.mousedown = true;\n        },\n        disposeAndRun() {\n            this.$refs.preview.refreshAll();\n        }\n    },\n\n    watch: {\n        'shared.typeCheck'(enableTypeCheck) {\n            // Update initialCode to avoid code changed when switching editor\n            this.initialCode = store.sourceCode;\n        }\n    }\n}\n</script>\n\n<style lang=\"scss\">\n\n@import '../style/color.scss';\n\n$code-info-height: 25px;\n$control-panel-height: 30px;\n$pd-basic: 10px;\n$handler-width: 5px;\n\n#main-container {\n    .handler {\n        position: absolute;\n        left: 50%;\n\n        top: 0;\n        bottom: 0;\n        width: $handler-width;\n\n        cursor: col-resize;\n        z-index: 100;\n        background-color: transparent;\n        border-left: 1px solid #ececec;\n        // border-right: 1px solid $clr-border;\n    }\n\n}\n\n#code-container {\n    position: absolute;\n    left: 0;\n    bottom: 0;\n    top: 0;\n\n    width: 50%;\n}\n\n#control-panel {\n    height: $control-panel-height;\n    position: absolute;;\n    left: 0;\n    right: 0;\n    top: 0;\n    z-index: 20;\n    padding: 0;\n    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\n\n    .setting-panel {\n        display: inline-block;\n\n        .btn-group + .btn-group {\n            margin-left: $pd-basic;\n        }\n    }\n\n    .control-btn-panel  {\n        float: right;\n\n        .el-switch__label {\n            margin-top: -3px;\n        }\n        .el-switch__label * {\n            font-size: 12px;\n        }\n\n        .btn {\n            color: #FFF;\n            border-radius: 0;\n            background-color: #409eff;\n            margin-left: $pd-basic;\n            border: none;\n            height: 30px;\n            width: 50px;\n        }\n        .btn:hover {\n            background-color: lighten($color: #409eff, $amount: 5);\n        }\n    }\n}\n\n\n#code-panel {\n    position: absolute;\n    top: $control-panel-height;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    ::-webkit-scrollbar {\n        height:8px;\n        width:8px;\n        transition:all 0.3s ease-in-out;\n        border-radius:2px;\n    }\n\n    ::-webkit-scrollbar-button {\n        display:none;\n    }\n\n    ::-webkit-scrollbar-thumb {\n        width:8px;\n        min-height:15px;\n        background:rgba(50, 50, 50, 0.6) !important;\n        transition:all 0.3s ease-in-out;border-radius:2px;\n    }\n\n    ::-webkit-scrollbar-thumb:hover {\n        background:rgba(0, 0, 0, 0.5) !important;\n    }\n}\n\n#code-info {\n    position: absolute;\n    bottom: 0;\n    overflow: hidden;\n\n    height: $control-panel-height;\n    line-height: $control-panel-height;\n    padding: 0px 10px;\n\n    // border-top: 1px solid $clr-border;\n    font-size: 0.9rem;\n\n    .code-info-time {\n        color: $clr-text;\n        display: inline-block;\n        margin-right: 10px;\n    }\n\n    .code-info-type-info {\n        color: $clr-text;\n    }\n\n    .code-info-type-warn {\n        color: $clr-warn;\n    }\n\n    .code-info-type-error {\n        color: $clr-error;\n    }\n}\n\n.right-container {\n    position: absolute;\n    right: 0;\n\n    width: 50%;\n    height: 100%;\n    padding: 0;\n    padding-left: $handler-width;\n    border: none;\n    z-index: 30;\n\n    background: $clr-bg;\n}\n\n\n</style>","<template>\n<div :class=\"[(inEditor && !shared.isMobile) ? '' : 'full']\">\n    <div v-loading=\"loading\"\n        class=\"right-panel\"\n        id=\"chart-panel\"\n        :style=\"{background: backgroundColor}\"\n    ></div>\n    <div id=\"tool-panel\">\n        <div class=\"left-panel\">\n            <el-switch\n                class=\"dark-mode\"\n                v-model=\"shared.darkMode\"\n                active-color=\"#181432\"\n                :active-text=\"$t('editor.darkMode')\"\n                :inactive-text=\"''\">\n            </el-switch>\n            <el-switch\n                class=\"enable-decal\"\n                v-model=\"shared.enableDecal\"\n                :active-text=\"$t('editor.enableDecal')\"\n                :inactive-text=\"''\">\n            </el-switch>\n\n            <el-popover\n                placement=\"bottom\"\n                width=\"450\"\n                trigger=\"click\"\n                style=\"margin-top:3px;\"\n            >\n                <div class=\"render-config-container\">\n                    <el-row :gutter=\"2\" type=\"flex\" align=\"middle\">\n                        <el-col :span=\"12\">\n                            <label class=\"tool-label\">{{ $t('editor.renderer') }}</label>\n                            <el-radio-group v-model=\"shared.renderer\" size=\"mini\" style=\"text-transform: uppercase\">\n                                <el-radio-button label=\"svg\"></el-radio-button>\n                                <el-radio-button label=\"canvas\"></el-radio-button>\n                            </el-radio-group>\n                        </el-col>\n                        <el-col :span=\"12\">\n                            <el-switch\n                                v-if=\"shared.renderer==='canvas'\"\n                                v-model=\"shared.useDirtyRect\"\n                                :active-text=\"$t('editor.useDirtyRect')\"\n                                :inactive-text=\"''\">\n                            </el-switch>\n                        </el-col>\n                    </el-row>\n                </div>\n                <span class=\"render-config-trigger\" slot=\"reference\"><i class=\"el-icon-setting el-icon--left\"></i>{{$t('editor.renderCfgTitle')}}</span>\n            </el-popover>\n        </div>\n        <template v-if=\"inEditor\">\n            <button v-if=\"!shared.isMobile\" class=\"download btn btn-sm\" @click=\"downloadExample\">{{ $t('editor.download') }}</button>\n            <a class=\"screenshot\" @click=\"screenshot\" target=\"_blank\"><i class=\"el-icon-camera-solid\"></i></a>\n        </template>\n        <a :href=\"editLink\" target=\"_blank\" v-else class=\"edit btn btn-sm\">{{ $t('editor.edit') }}</a>\n    </div>\n</div>\n</template>\n\n<script>\n\nimport {store} from '../common/store';\nimport {SCRIPT_URLS, URL_PARAMS} from '../common/config';\nimport {loadScriptsAsync} from '../common/helper';\nimport {createSandbox} from './sandbox';\nimport debounce from 'lodash/debounce';\nimport { addListener, removeListener } from 'resize-detector';\nimport CHART_LIST from '../data/chart-list-data';\nimport {download} from './downloadExample';\n\nconst example = CHART_LIST.find(item => URL_PARAMS.c === item.id);\n\nfunction addDecalIfNecessary(option) {\n    if (store.enableDecal) {\n        option.aria = option.aria || {};\n        option.aria.decal = option.aria.decal || {};\n        option.aria.decal.show = true;\n        option.aria.show = option.aria.enabled = true;\n    }\n}\n\nexport function ensureECharts() {\n    if (typeof echarts === 'undefined') {\n\n        const hasBmap = example && example.tags.indexOf('bmap') >= 0;\n\n        // Code from https://api.map.baidu.com/api?v=2.0&ak=KOmVjPVUAey1G2E8zNhPiuQ6QiEmAwZu\n        if (hasBmap) {\n            window.HOST_TYPE = \"2\";\n            window.BMap_loadScriptTime = (new Date).getTime();\n        }\n\n        return loadScriptsAsync([\n            SCRIPT_URLS.datGUIMinJS,\n            'local' in URL_PARAMS\n                ? SCRIPT_URLS.localEChartsMinJS : SCRIPT_URLS.echartsMinJS,\n            SCRIPT_URLS.echartsDir + '/dist/extension/dataTool.js',\n            SCRIPT_URLS.echartsDir + '/map/js/world.js',\n            SCRIPT_URLS.echartsDir + '/map/js/china.js',\n            SCRIPT_URLS.echartsStatMinJS,\n            ...URL_PARAMS.gl ? [SCRIPT_URLS.echartsGLMinJS] : [],\n            ...hasBmap ? [\n                'https://api.map.baidu.com/getscript?v=2.0&ak=KOmVjPVUAey1G2E8zNhPiuQ6QiEmAwZu&services=&t=20200327103013',\n                SCRIPT_URLS.echartsDir + '/dist/extension/bmap.js'\n            ] : []\n        ]).then(() => {\n            echarts.registerPreprocessor(addDecalIfNecessary)\n        });\n    }\n    return Promise.resolve();\n}\n\n\nfunction log(text, type) {\n    if (type !== 'warn' && type !== 'error') {\n        type = 'info';\n    }\n    store.editorStatus.message = text;\n    store.editorStatus.type = type;\n}\n\n\nfunction run() {\n    if (typeof echarts === 'undefined') {\n        return;\n    }\n    if (!this.sandbox) {\n        this.sandbox = createSandbox((chart) => {\n            const option = chart.getOption();\n            if (typeof option.backgroundColor === 'string' && option.backgroundColor !== 'transparent') {\n                this.backgroundColor = option.backgroundColor;\n            }\n            else {\n                this.backgroundColor = '#fff';\n            }\n        });\n    }\n\n    try {\n        const updateTime = this.sandbox.run(this.$el.querySelector('#chart-panel'), store);\n\n        log(this.$t('editor.chartOK') + updateTime + 'ms');\n\n        // Find the appropriate throttle time\n        const debounceTime = 500;\n        const debounceTimeQuantities = [0, 500, 2000, 5000, 10000];\n        for (let i = debounceTimeQuantities.length - 1; i >= 0; i--) {\n            const quantity = debounceTimeQuantities[i];\n            const preferredDebounceTime = debounceTimeQuantities[i + 1] || 1000000;\n            if (updateTime >= quantity && this.debouncedTime !== preferredDebounceTime) {\n                this.debouncedRun = debounce(run, preferredDebounceTime, {\n                    trailing: true\n                });\n                this.debouncedTime = preferredDebounceTime;\n                break;\n            }\n        }\n    }\n    catch (e) {\n        log(this.$t('editor.errorInEditor'), 'error');\n        console.error(e);\n    }\n}\n\n\nexport default {\n\n    props: ['inEditor'],\n\n    data() {\n        return {\n            shared: store,\n            debouncedTime: undefined,\n            backgroundColor: '',\n            autoRun: true,\n            loading: false\n        }\n    },\n\n    mounted() {\n        this.loading = true;\n        ensureECharts().then(() => {\n            this.loading = false;\n            if (store.runCode) {\n                this.run();\n            }\n        });\n\n        addListener(this.$el, () => {\n            if (this.sandbox) {\n                this.sandbox.resize();\n            }\n        })\n    },\n\n    computed: {\n        editLink() {\n            const params = ['c=' + URL_PARAMS.c];\n            if (URL_PARAMS.theme) {\n                params.push(['theme=' + URL_PARAMS.theme]);\n            }\n            if (URL_PARAMS.gl) {\n                params.push(['gl=' + URL_PARAMS.gl]);\n            }\n            return './editor.html?' + params.join('&');\n        }\n    },\n\n    watch: {\n        'shared.runCode'(val) {\n            if (this.autoRun || !this.sandbox) {\n                if (!this.debouncedRun) {\n                    // First run\n                    this.run();\n                }\n                else {\n                    this.debouncedRun();\n                }\n            }\n        },\n        'shared.renderer'() {\n            this.refreshAll();\n        },\n        'shared.darkMode'() {\n            this.refreshAll();\n        },\n        'shared.enableDecal'() {\n            this.refreshAll();\n        },\n        'shared.useDirtyRect'() {\n            this.refreshAll();\n        }\n    },\n\n    methods: {\n        run,\n        // debouncedRun will be created at first run\n        // debouncedRun: null,\n        refreshAll() {\n            this.dispose();\n            this.run();\n        },\n        dispose() {\n            if (this.sandbox) {\n                this.sandbox.dispose();\n            }\n        },\n        downloadExample() {\n            download();\n        },\n        screenshot() {\n            if (this.sandbox) {\n                const url = this.sandbox.getDataURL();\n                const $a = document.createElement('a');\n                $a.download = URL_PARAMS.c + '.' + (store.renderer === 'svg' ? 'svg' : 'png');\n                $a.target = '_blank';\n                $a.href = url;\n                const evt = new MouseEvent('click', {\n                    bubbles: true,\n                    cancelable: false\n                });\n                $a.dispatchEvent(evt);\n            }\n        }\n        // hasEditorError() {\n        //     const annotations = this.editor.getSession().getAnnotations();\n        //     for (let aid = 0, alen = annotations.length; aid < alen; ++aid) {\n        //         if (annotations[aid].type === 'error') {\n        //             return true;\n        //         }\n        //     }\n        //     return false;\n        // }\n    }\n}\n</script>\n\n<style lang=\"scss\">\n\n#chart-panel {\n    position: absolute;\n    // top: $control-panel-height;\n    top: 42px;\n    right: 15px;\n    bottom: 15px;\n    left: 15px;\n    box-sizing: border-box;\n    box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 20px;\n    border-radius: 5px;\n    background: #fff;\n    overflow: hidden;\n\n    padding: 10px;\n\n    .ec-debug-dirty-rect-container {\n        left: 10px!important;\n        top: 10px!important;\n        right: 10px!important;\n        bottom: 10px!important;\n\n        .ec-debug-dirty-rect {\n            background-color: rgba(255, 0, 0, 0.2)!important;\n            border: 1px solid red!important;\n        }\n    }\n}\n\n.render-config-container {\n    .el-radio-group {\n        label {\n            margin-bottom: 0;\n        }\n    }\n}\n\n#tool-panel {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    padding-top: 5px;\n    padding-left: 15px;\n\n    .render-config-trigger {\n        margin-left: 10px;\n        cursor: pointer;\n        font-weight: 500;\n    }\n\n    label {\n        margin-bottom: 0;\n    }\n\n    .left-panel {\n        float: left;\n    }\n\n    .left-panel>* {\n        vertical-align: middle;\n        display: inline-block;\n    }\n\n    .tool-label {\n        font-weight: bold;\n        text-transform: uppercase;\n        margin-left: 20px;\n    }\n\n    .screenshot, .download, .edit {\n        float: right;\n        margin-right: 15px;\n        cursor: pointer;\n    }\n    .screenshot {\n        font-size: 22px;\n        margin-right: 10px;\n    }\n}\n\n.full {\n    #chart-panel {\n        top: 40px;\n        right: 5px;\n        bottom: 5px;\n        left: 5px;\n        box-shadow: rgba(10, 9, 9, 0.1) 0px 0px 5px;\n    }\n    #tool-panel {\n        padding-left: 5px;\n        .download, .edit {\n            margin-right: 5px;\n        }\n    }\n}\n\n.dg.main * {\n    box-sizing: content-box;\n}\n.dg.main input {\n    line-height: normal;\n}\n\n.dg.main.a {\n    overflow-x: visible;\n}\n\n.dg.main .c {\n    select {\n        color: #000;\n    }\n}\n\n</style>","<template>\n<preview></Preview>\n</template>\n\n<script>\n\nimport Preview from './Preview.vue';\nimport {store, loadExampleCode, parseSourceCode} from '../common/store';\n\nexport default {\n    components: {\n        Preview\n    },\n\n    mounted() {\n        loadExampleCode().then(code => {\n            store.runCode = parseSourceCode(code);\n        });\n    }\n}\n</script>\n\n<style lang=\"scss\">\n\n</style>","<template>\n<div class=\"example-list-item\">\n    <a target=\"_blank\" class=\"example-link\" :href=\"exampleLink\">\n        <img class=\"chart-area\" src=\"../asset/placeholder.jpg\" :data-src=\"screenshotURL\" />\n        <h4 class=\"example-title\">{{title}}</h4>\n        <h5 class=\"example-subtitle\" v-if=\"showSubtitle\">{{subtitle}}</h5>\n    </a>\n</div>\n</template>\n\n<script>\n\nimport {store} from '../common/store';\nimport {SUPPORT_WEBP, URL_PARAMS} from '../common/config';\n\nexport default {\n    props: ['example'],\n\n    computed: {\n\n        title() {\n            return (store.locale === 'zh' ? this.example.titleCN : this.example.title)\n                || this.example.title || '';\n        },\n\n        showSubtitle() {\n            return store.locale === 'zh';\n        },\n\n        subtitle() {\n            return this.example.title || '';\n        },\n\n        exampleTheme() {\n            const example = this.example;\n            return example.isGL ? '' : (example.theme || (store.darkMode ? 'dark' : ''));\n        },\n\n        exampleLink() {\n            const example = this.example;\n            const hash = ['c=' + example.id];\n            const exampleTheme = this.exampleTheme;\n            if (example.isGL) {\n                hash.push('gl=1');\n            }\n            if (exampleTheme) {\n                hash.push('theme=' + exampleTheme);\n            }\n            if ('local' in URL_PARAMS) {\n                hash.push('local');\n            }\n            if ('useDirtyRect' in URL_PARAMS) {\n                hash.push('useDirtyRect');\n            }\n            return './editor.html?' + hash.join('&');\n        },\n\n        screenshotURL() {\n            const example = this.example;\n            const themePostfix = this.exampleTheme ? ('-' + this.exampleTheme) : '';\n            const ext = example.isGL ? 'jpg' : SUPPORT_WEBP ? 'webp' : 'png';\n            const folder = example.isGL ? 'data-gl' : 'data';\n            return `${store.cdnRoot}/${folder}/thumb${themePostfix}/${example.id}.${ext}?_v_=${store.version}`;\n        }\n    }\n}\n</script>\n\n<style lang=\"scss\">\n\n@import \"../style/color.scss\";\n\n.example-list-item {\n    width: 100%;\n    max-width: 350px;\n    margin-bottom: 30px;\n\n    border-radius: 2px;\n\n    .example-link {\n        position: relative;\n        display: block;\n\n        .chart-area {\n            width: 100%;\n            height: 100%;\n            border-radius: 5px;\n            box-shadow: 0 0 20px rgba(0, 0, 0, 0.05);\n            margin-top: 10px;\n        }\n\n        .example-title {\n            color: $clr-primary;\n            overflow: hidden;\n            text-overflow: ellipsis;\n            white-space: nowrap;\n\n            padding: 10px 10px 2px 10px;\n            margin: 0;\n            font-weight: normal;\n            font-size: 14px;\n            text-align: center;\n        }\n\n        .example-subtitle {\n            font-size: 12px;\n            text-align: center;\n            color: #aaa;\n            font-weight: normal;\n            // font-weight: 200;\n            overflow: hidden;\n            white-space: nowrap;\n            text-overflow: ellipsis;\n            margin: 3px 0 0 0;\n        }\n    }\n\n    .example-info {\n        padding: 5px 0;\n\n        font-weight: bold;\n\n        .chart-icon {\n            float: right;\n\n            .chart-delete {\n                display: none;\n\n                transition: 1s;\n            }\n        }\n    }\n\n    &:hover .example-info .chart-icon .chart-delete {\n        display: block;\n\n        text-decoration: none;\n    }\n}\n</style>","<template>\n<div id=\"example-explore\">\n    <div id=\"left-container\">\n        <div id=\"left-toolbar\">\n            <el-switch\n                v-model=\"shared.darkMode\"\n                active-color=\"#181432\"\n                :active-text=\"$t('editor.darkMode')\"\n                :inactive-text=\"''\">\n            </el-switch>\n        </div>\n        <div id=\"left-chart-nav\">\n            <scrollactive\n                active-class=\"active\"\n                :offset=\"80\"\n                :duration=\"500\"\n                :scroll-container-selector=\"'#example-explore'\"\n                bezier-easing-value=\".5,0,.35,1\"\n                @itemchanged=\"onActiveNavChanged\"\n            >\n                <ul>\n                    <li v-for=\"category in EXAMPLE_CATEGORIES\" :key=\"category\">\n                        <a class=\"left-chart-nav-link scrollactive-item\" :id=\"'left-chart-nav-' + category\"\n                            :href=\"'#chart-type-' + category\"\n                        >\n                            <span class=\"chart-icon\"></span>\n                            <span class=\"chart-name\">{{$t('chartTypes.' + category)}}</span>\n                        </a>\n                    </li>\n                </ul>\n            </scrollactive>\n        </div>\n    </div>\n    <div id=\"explore-container\">\n        <div class=\"example-list-panel\">\n            <div v-for=\"categoryObj in exampleList\" :key=\"categoryObj.category\">\n                <h3 class=\"chart-type-head\" :id=\"'chart-type-' + categoryObj.category\">\n                    {{$t('chartTypes.' + categoryObj.category)}}\n                    <span>{{categoryObj.category}}</span>\n                </h3>\n\n                <div class=\"row\" :id=\"'chart-row-' + categoryObj.category\">\n                    <div class=\"col-xl-2 col-lg-3 col-md-4 col-sm-6\"\n                        v-for=\"exampleItem in categoryObj.examples\"\n                        :key=\"exampleItem.id\"\n                    >\n                        <ExampleCard :example=\"exampleItem\"></ExampleCard>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n</template>\n\n<script>\n\nimport CHART_LIST from '../data/chart-list-data';\nimport CHART_LIST_GL from '../data/chart-list-data-gl';\nimport {EXAMPLE_CATEGORIES, BLACK_MAP, URL_PARAMS} from '../common/config';\nimport {store} from '../common/store';\nimport ExampleCard from './ExampleCard.vue';\nimport LazyLoad from 'vanilla-lazyload/dist/lazyload.esm';\nimport scrollIntoView from 'scroll-into-view';\n\nconst LAZY_LOADED_CLASS = 'ec-shot-loaded';\n\nexport default {\n\n    components: {\n        ExampleCard\n    },\n\n    data() {\n        const exampleListByCategory = {};\n\n        function addExamples(list, isGL) {\n            let categoryOrder = 0;\n            // Add by category order in each example.\n            do {\n                let added = false;\n                for (let i = 0; i < list.length; i++) {\n                    const example = list[i];\n                    if (BLACK_MAP.hasOwnProperty(example.id)) {\n                        continue;\n                    }\n                    if (typeof example.category === 'string') {\n                        example.category = [example.category];\n                    }\n\n                    const categoryStr = (example.category || [])[categoryOrder];\n                    if (categoryStr) {\n                        added = true;\n                        let categoryObj = exampleListByCategory[categoryStr];\n                        if (!categoryObj) {\n                            categoryObj = {\n                                category: categoryStr,\n                                examples: []\n                            }\n                            exampleListByCategory[categoryStr] = categoryObj;\n                        }\n                        example.isGL = isGL;\n\n                        categoryObj.examples.push(example);\n                    }\n                }\n\n                if (!added) {\n                    break;\n                }\n            } while (++categoryOrder && categoryOrder < 4)  // At most 4 category\n        }\n\n        addExamples(CHART_LIST, false);\n        addExamples(CHART_LIST_GL, true);\n\n        return {\n            shared: store,\n\n            EXAMPLE_CATEGORIES,\n            // [{\n            //  category: '',\n            //  isGL: false\n            //  examples: []\n            // }]\n            exampleListByCategory\n        }\n    },\n\n    watch: {\n        \"shared.darkMode\"() {\n            const imgs = this.$el.querySelectorAll('img.chart-area');\n            for (let i = 0; i < imgs.length; i++) {\n                // Force lazyload to update\n                imgs[i].classList.remove(LAZY_LOADED_CLASS);\n                imgs[i].setAttribute('data-was-processed', 'false');\n            }\n            this._lazyload.update();\n        }\n    },\n\n    computed: {\n        exampleList() {\n            const list = [];\n            for (let i = 0; i < EXAMPLE_CATEGORIES.length; i++) {\n                const category = EXAMPLE_CATEGORIES[i];\n                const categoryObj = this.exampleListByCategory[category];\n                if (categoryObj && categoryObj.examples.length > 0) {\n                    list.push({\n                        category,\n                        examples: categoryObj.examples\n                    });\n                }\n            }\n            return list;\n        }\n    },\n\n    mounted() {\n        this._lazyload = new LazyLoad({\n            // Container should be the scroll viewport.\n            // container: this.$el.querySelector('#explore-container .example-list-panel'),\n            elements_selector: 'img.chart-area',\n            load_delay: 400,\n            class_loaded: LAZY_LOADED_CLASS\n        });\n    },\n\n    methods: {\n        onActiveNavChanged(event, currentItem, lastActiveItem) {\n            // currentItem && currentItem.scrollIntoView && currentItem.parentNode.scrollIntoView({\n            //     // behavior: \"smooth\"\n            // });\n            // scrollIntoView(currentItem, {\n            //     time: 300,\n            //     cancellable: false,\n            //     align: {\n            //         top: 0,\n            //         topOffset: 50\n            //     }\n            // });\n        }\n    }\n}\n</script>\n\n<style lang=\"scss\">\n\n@import \"../style/color.scss\";\n@import \"../style/config.xl.scss\";\n\n$chart-nav-width: 170px;\n$chart-icon-width: 25px;\n$chart-icon-border: 1px;\n\n$left-toolbar-height: 30px;\n\n$nav-height: 50px;\n$nav-bg: #252839;\n\n$pd-basic: 10px;\n$pd-sm: 6px;\n$pd-lg: 20px;\n\n#example-explore {\n    background: $clr-bg;\n\n    // Use this as scrollable viewport insteadof window because echarts-www has a viewport.\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    overflow-y: auto;\n}\n\n#explore-container {\n    margin-left: $chart-nav-width + 20px;\n    padding: 10px 10px;\n    // background-color: $clr-bg;\n}\n\n.example-list-panel {\n    margin: 30px 15px 30px 15px;\n\n    h3 {\n        margin-bottom: 20px;\n        border-bottom: 1px solid #ccd3e8;\n        font-weight: normal;\n        color: #252839;\n    }\n    .chart-type-head span {\n        font-size: 18px;\n        padding-left: 5px;\n        color: #999;\n        font-weight: 200;\n    }\n}\n\n#left-container {\n    position: fixed;\n    top: 10px;\n    bottom: 10px;\n    left: 10px;\n    width: $chart-nav-width;\n}\n\n#left-toolbar {\n    position: absolute;\n    left: 0;\n    right: 0;\n    height: $left-toolbar-height;\n    top: 0;\n    background-color: #fff;\n    border-radius: 10px;\n    // color: #fff;\n    box-shadow: 0 0 10px rgba(0,0,0,0.1);\n    padding-left: 5px;\n    padding-top: 4px;\n\n    .el-switch__label * {\n        font-size: 12px;\n        // color: #fff;\n        text-transform: uppercase;\n    }\n    .el-switch__label.is-active {\n        color: #181432;\n    }\n}\n\n#left-chart-nav {\n    position: absolute;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    top: $left-toolbar-height + 10px;\n    background-color: $nav-bg;\n    overflow-y: hidden;\n    border-radius: 10px;\n    color: #fff;\n    box-shadow: 0 0 20px rgba(0,0,0,0.2);\n\n    &:hover {\n        overflow-y: auto;\n\n        a {\n            text-decoration: none;\n        }\n    }\n\n    li {\n        transition: 0.5s;\n        cursor: pointer;\n\n        a {\n            height: 45px;\n            padding: 10px 0 10px 10px;\n            display: block;\n            transition: 0.5s;\n            text-decoration: none;\n            color: inherit;\n\n            .chart-name {\n                display: inline-block;\n                position: relative;\n                vertical-align: middle;\n                margin-left: 10px;\n            }\n\n            .chart-icon {\n                content: '';\n                display: inline-block;\n                width: $chart-icon-width;\n                height: $chart-icon-width;\n                background-image: url('../asset/chart-icon.png');\n                background-size: $chart-icon-width;\n                background-repeat: no-repeat;\n                border-radius: 50%;\n                border: $chart-icon-border solid #fff;\n                vertical-align: middle;\n            }\n            &.active {\n                background-color: $clr-contrast;\n            }\n\n        }\n\n        &:hover {\n            background-color: darken($nav-bg, 10);\n        }\n    }\n}\n\n@media (max-width: 768px) {\n    #left-container {\n        display: none;\n    }\n    #explore-container {\n        margin-left: 0;\n    }\n}\n\n// icon sprites\n$chart-types: 'line', 'bar', 'scatter', 'pie', 'radar', 'funnel', 'gauge', 'map',\n    'graph', 'treemap', 'parallel', 'sankey', 'candlestick', 'boxplot', 'heatmap',\n    'pictorialBar', 'themeRiver', 'calendar', 'custom', 'sunburst', 'tree',\n    'globe', 'bar3D', 'scatter3D', 'surface', 'map3D', 'lines3D', 'line3D',\n    'scatterGL', 'linesGL', 'flowGL', 'graphGL', 'geo3D', 'geo', 'lines', 'dataset';\n$chart-position: 0, 1, 2, 4, 5, 10, 9, 8, 7, 15, 16, 17, 3, 18, 11, 24, 25, 26, 27, 28, 14,\n    29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 8, 20, 22;\n\n@each $type in $chart-types {\n    $i: index($chart-types, $type);\n    $pos: nth($chart-position, $i);\n    #left-chart-nav-#{$type} .chart-icon {\n        background-position-x: - $chart-icon-border;\n        background-position-y: - $chart-icon-border - $pos * $chart-icon-width;\n    }\n}\n\n</style>","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\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\nmodule.exports = root;\n","var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nmodule.exports = debounce;\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 != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\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 != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\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) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n","var isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","let raf = null;\nfunction requestAnimationFrame (callback) {\n  if (!raf) {\n    raf = (\n      window.requestAnimationFrame ||\n      window.webkitRequestAnimationFrame ||\n      window.mozRequestAnimationFrame ||\n      function (callback) {\n        return setTimeout(callback, 16)\n      }\n    ).bind(window);\n  }\n  return raf(callback)\n}\n\nlet caf = null;\nfunction cancelAnimationFrame (id) {\n  if (!caf) {\n    caf = (\n      window.cancelAnimationFrame ||\n      window.webkitCancelAnimationFrame ||\n      window.mozCancelAnimationFrame ||\n      function (id) {\n        clearTimeout(id);\n      }\n    ).bind(window);\n  }\n\n  caf(id);\n}\n\nfunction createStyles (styleText) {\n  var style = document.createElement('style');\n  style.type = 'text/css';\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = styleText;\n  } else {\n    style.appendChild(document.createTextNode(styleText));\n  }\n  (document.querySelector('head') || document.body).appendChild(style);\n  return style\n}\n\nfunction createElement (tagName, props = {}) {\n  let elem = document.createElement(tagName);\n  Object.keys(props).forEach(key => {\n    elem[key] = props[key];\n  });\n  return elem\n}\n\nfunction getComputedStyle (elem, prop, pseudo) {\n  // for older versions of Firefox, `getComputedStyle` required\n  // the second argument and may return `null` for some elements\n  // when `display: none`\n  let computedStyle = window.getComputedStyle(elem, pseudo || null) || {\n    display: 'none'\n  };\n\n  return computedStyle[prop]\n}\n\nfunction getRenderInfo (elem) {\n  if (!document.documentElement.contains(elem)) {\n    return {\n      detached: true,\n      rendered: false\n    }\n  }\n\n  let current = elem;\n  while (current !== document) {\n    if (getComputedStyle(current, 'display') === 'none') {\n      return {\n        detached: false,\n        rendered: false\n      }\n    }\n    current = current.parentNode;\n  }\n\n  return {\n    detached: false,\n    rendered: true\n  }\n}\n\nvar css = \".resize-triggers{visibility:hidden;opacity:0;pointer-events:none}.resize-contract-trigger,.resize-contract-trigger:before,.resize-expand-trigger,.resize-triggers{content:\\\"\\\";position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden}.resize-contract-trigger,.resize-expand-trigger{background:#eee;overflow:auto}.resize-contract-trigger:before{width:200%;height:200%}\";\n\nlet total = 0;\nlet style = null;\n\nfunction addListener (elem, callback) {\n  if (!elem.__resize_mutation_handler__) {\n    elem.__resize_mutation_handler__ = handleMutation.bind(elem);\n  }\n\n  let listeners = elem.__resize_listeners__;\n\n  if (!listeners) {\n    elem.__resize_listeners__ = [];\n    if (window.ResizeObserver) {\n      let { offsetWidth, offsetHeight } = elem;\n      let ro = new ResizeObserver(() => {\n        if (!elem.__resize_observer_triggered__) {\n          elem.__resize_observer_triggered__ = true;\n          if (elem.offsetWidth === offsetWidth && elem.offsetHeight === offsetHeight) {\n            return\n          }\n        }\n        runCallbacks(elem);\n      });\n\n      // initially display none won't trigger ResizeObserver callback\n      let { detached, rendered } = getRenderInfo(elem);\n      elem.__resize_observer_triggered__ = detached === false && rendered === false;\n      elem.__resize_observer__ = ro;\n      ro.observe(elem);\n    } else if (elem.attachEvent && elem.addEventListener) {\n      // targeting IE9/10\n      elem.__resize_legacy_resize_handler__ = function handleLegacyResize () {\n        runCallbacks(elem);\n      };\n      elem.attachEvent('onresize', elem.__resize_legacy_resize_handler__);\n      document.addEventListener('DOMSubtreeModified', elem.__resize_mutation_handler__);\n    } else {\n      if (!total) {\n        style = createStyles(css);\n      }\n      initTriggers(elem);\n\n      elem.__resize_rendered__ = getRenderInfo(elem).rendered;\n      if (window.MutationObserver) {\n        let mo = new MutationObserver(elem.__resize_mutation_handler__);\n        mo.observe(document, {\n          attributes: true,\n          childList: true,\n          characterData: true,\n          subtree: true\n        });\n        elem.__resize_mutation_observer__ = mo;\n      }\n    }\n  }\n\n  elem.__resize_listeners__.push(callback);\n  total++;\n}\n\nfunction removeListener (elem, callback) {\n  let listeners = elem.__resize_listeners__;\n  if (!listeners) {\n    return\n  }\n\n  if (callback) {\n    listeners.splice(listeners.indexOf(callback), 1);\n  }\n\n  // no listeners exist, or removing all listeners\n  if (!listeners.length || !callback) {\n    // targeting IE9/10\n    if (elem.detachEvent && elem.removeEventListener) {\n      elem.detachEvent('onresize', elem.__resize_legacy_resize_handler__);\n      document.removeEventListener('DOMSubtreeModified', elem.__resize_mutation_handler__);\n      return\n    }\n\n    if (elem.__resize_observer__) {\n      elem.__resize_observer__.unobserve(elem);\n      elem.__resize_observer__.disconnect();\n      elem.__resize_observer__ = null;\n    } else {\n      if (elem.__resize_mutation_observer__) {\n        elem.__resize_mutation_observer__.disconnect();\n        elem.__resize_mutation_observer__ = null;\n      }\n      elem.removeEventListener('scroll', handleScroll);\n      elem.removeChild(elem.__resize_triggers__.triggers);\n      elem.__resize_triggers__ = null;\n    }\n    elem.__resize_listeners__ = null;\n  }\n\n  if (!--total && style) {\n    style.parentNode.removeChild(style);\n  }\n}\n\nfunction getUpdatedSize (elem) {\n  let { width, height } = elem.__resize_last__;\n  let { offsetWidth, offsetHeight } = elem;\n  if (offsetWidth !== width || offsetHeight !== height) {\n    return {\n      width: offsetWidth,\n      height: offsetHeight\n    }\n  }\n  return null\n}\n\nfunction handleMutation () {\n  // `this` denotes the scrolling element\n  let { rendered, detached } = getRenderInfo(this);\n  if (rendered !== this.__resize_rendered__) {\n    if (!detached && this.__resize_triggers__) {\n      resetTriggers(this);\n      this.addEventListener('scroll', handleScroll, true);\n    }\n    this.__resize_rendered__ = rendered;\n    runCallbacks(this);\n  }\n}\n\nfunction handleScroll () {\n  // `this` denotes the scrolling element\n  resetTriggers(this);\n  if (this.__resize_raf__) {\n    cancelAnimationFrame(this.__resize_raf__);\n  }\n  this.__resize_raf__ = requestAnimationFrame(() => {\n    let updated = getUpdatedSize(this);\n    if (updated) {\n      this.__resize_last__ = updated;\n      runCallbacks(this);\n    }\n  });\n}\n\nfunction runCallbacks (elem) {\n  if (!elem || !elem.__resize_listeners__) {\n    return\n  }\n  elem.__resize_listeners__.forEach(callback => {\n    callback.call(elem, elem);\n  });\n}\n\nfunction initTriggers (elem) {\n  let position = getComputedStyle(elem, 'position');\n  if (!position || position === 'static') {\n    elem.style.position = 'relative';\n  }\n\n  elem.__resize_old_position__ = position;\n  elem.__resize_last__ = {};\n\n  let triggers = createElement('div', {\n    className: 'resize-triggers'\n  });\n  let expand = createElement('div', {\n    className: 'resize-expand-trigger'\n  });\n  let expandChild = createElement('div');\n  let contract = createElement('div', {\n    className: 'resize-contract-trigger'\n  });\n  expand.appendChild(expandChild);\n  triggers.appendChild(expand);\n  triggers.appendChild(contract);\n  elem.appendChild(triggers);\n\n  elem.__resize_triggers__ = {\n    triggers,\n    expand,\n    expandChild,\n    contract\n  };\n\n  resetTriggers(elem);\n  elem.addEventListener('scroll', handleScroll, true);\n\n  elem.__resize_last__ = {\n    width: elem.offsetWidth,\n    height: elem.offsetHeight\n  };\n}\n\nfunction resetTriggers (elem) {\n  let { expand, expandChild, contract } = elem.__resize_triggers__;\n\n  // batch read\n  let { scrollWidth: csw, scrollHeight: csh } = contract;\n  let { offsetWidth: eow, offsetHeight: eoh, scrollWidth: esw, scrollHeight: esh } = expand;\n\n  // batch write\n  contract.scrollLeft = csw;\n  contract.scrollTop = csh;\n  expandChild.style.width = eow + 1 + 'px';\n  expandChild.style.height = eoh + 1 + 'px';\n  expand.scrollLeft = esw;\n  expand.scrollTop = esh;\n}\n\nexport { addListener, removeListener };\n","var COMPLETE = 'complete',\n    CANCELED = 'canceled';\n\nfunction raf(task){\n    if('requestAnimationFrame' in window){\n        return window.requestAnimationFrame(task);\n    }\n\n    setTimeout(task, 16);\n}\n\nfunction setElementScroll(element, x, y){\n    if(element.self === element){\n        element.scrollTo(x, y);\n    }else{\n        element.scrollLeft = x;\n        element.scrollTop = y;\n    }\n}\n\nfunction getTargetScrollLocation(scrollSettings, parent){\n    var align = scrollSettings.align,\n        target = scrollSettings.target,\n        targetPosition = target.getBoundingClientRect(),\n        parentPosition,\n        x,\n        y,\n        differenceX,\n        differenceY,\n        targetWidth,\n        targetHeight,\n        leftAlign = align && align.left != null ? align.left : 0.5,\n        topAlign = align && align.top != null ? align.top : 0.5,\n        leftOffset = align && align.leftOffset != null ? align.leftOffset : 0,\n        topOffset = align && align.topOffset != null ? align.topOffset : 0,\n        leftScalar = leftAlign,\n        topScalar = topAlign;\n\n    if(scrollSettings.isWindow(parent)){\n        targetWidth = Math.min(targetPosition.width, parent.innerWidth);\n        targetHeight = Math.min(targetPosition.height, parent.innerHeight);\n        x = targetPosition.left + parent.pageXOffset - parent.innerWidth * leftScalar + targetWidth * leftScalar;\n        y = targetPosition.top + parent.pageYOffset - parent.innerHeight * topScalar + targetHeight * topScalar;\n        x -= leftOffset;\n        y -= topOffset;\n        differenceX = x - parent.pageXOffset;\n        differenceY = y - parent.pageYOffset;\n    }else{\n        targetWidth = targetPosition.width;\n        targetHeight = targetPosition.height;\n        parentPosition = parent.getBoundingClientRect();\n        var offsetLeft = targetPosition.left - (parentPosition.left - parent.scrollLeft);\n        var offsetTop = targetPosition.top - (parentPosition.top - parent.scrollTop);\n        x = offsetLeft + (targetWidth * leftScalar) - parent.clientWidth * leftScalar;\n        y = offsetTop + (targetHeight * topScalar) - parent.clientHeight * topScalar;\n        x -= leftOffset;\n        y -= topOffset;\n        x = Math.max(Math.min(x, parent.scrollWidth - parent.clientWidth), 0);\n        y = Math.max(Math.min(y, parent.scrollHeight - parent.clientHeight), 0);\n        differenceX = x - parent.scrollLeft;\n        differenceY = y - parent.scrollTop;\n    }\n\n    return {\n        x: x,\n        y: y,\n        differenceX: differenceX,\n        differenceY: differenceY\n    };\n}\n\nfunction animate(parent){\n    var scrollSettings = parent._scrollSettings;\n\n    if(!scrollSettings){\n        return;\n    }\n\n    var maxSynchronousAlignments = scrollSettings.maxSynchronousAlignments;\n\n    var location = getTargetScrollLocation(scrollSettings, parent),\n        time = Date.now() - scrollSettings.startTime,\n        timeValue = Math.min(1 / scrollSettings.time * time, 1);\n\n    if(scrollSettings.endIterations >= maxSynchronousAlignments){\n        setElementScroll(parent, location.x, location.y);\n        parent._scrollSettings = null;\n        return scrollSettings.end(COMPLETE);\n    }\n\n    var easeValue = 1 - scrollSettings.ease(timeValue);\n\n    setElementScroll(parent,\n        location.x - location.differenceX * easeValue,\n        location.y - location.differenceY * easeValue\n    );\n\n    if(time >= scrollSettings.time){\n        scrollSettings.endIterations++;\n        return animate(parent);\n    }\n\n    raf(animate.bind(null, parent));\n}\n\nfunction defaultIsWindow(target){\n    return target.self === target\n}\n\nfunction transitionScrollTo(target, parent, settings, callback){\n    var idle = !parent._scrollSettings,\n        lastSettings = parent._scrollSettings,\n        now = Date.now(),\n        cancelHandler,\n        passiveOptions = { passive: true };\n\n    if(lastSettings){\n        lastSettings.end(CANCELED);\n    }\n\n    function end(endType){\n        parent._scrollSettings = null;\n\n        if(parent.parentElement && parent.parentElement._scrollSettings){\n            parent.parentElement._scrollSettings.end(endType);\n        }\n\n        if(settings.debug){\n            console.log('Scrolling ended with type', endType, 'for', parent)\n        }\n\n        callback(endType);\n        if(cancelHandler){\n            parent.removeEventListener('touchstart', cancelHandler, passiveOptions);\n            parent.removeEventListener('wheel', cancelHandler, passiveOptions);\n        }\n    }\n\n    var maxSynchronousAlignments = settings.maxSynchronousAlignments;\n\n    if(maxSynchronousAlignments == null){\n        maxSynchronousAlignments = 3;\n    }\n\n    parent._scrollSettings = {\n        startTime: now,\n        endIterations: 0,\n        target: target,\n        time: settings.time,\n        ease: settings.ease,\n        align: settings.align,\n        isWindow: settings.isWindow || defaultIsWindow,\n        maxSynchronousAlignments: maxSynchronousAlignments,\n        end: end\n    };\n\n    if(!('cancellable' in settings) || settings.cancellable){\n        cancelHandler = end.bind(null, CANCELED);\n        parent.addEventListener('touchstart', cancelHandler, passiveOptions);\n        parent.addEventListener('wheel', cancelHandler, passiveOptions);\n    }\n\n    if(idle){\n        animate(parent);\n    }\n\n    return cancelHandler\n}\n\nfunction defaultIsScrollable(element){\n    return (\n        'pageXOffset' in element ||\n        (\n            element.scrollHeight !== element.clientHeight ||\n            element.scrollWidth !== element.clientWidth\n        ) &&\n        getComputedStyle(element).overflow !== 'hidden'\n    );\n}\n\nfunction defaultValidTarget(){\n    return true;\n}\n\nfunction findParentElement(el){\n    if (el.assignedSlot) {\n        return findParentElement(el.assignedSlot);\n    }\n\n    if (el.parentElement) {\n        if(el.parentElement.tagName === 'BODY'){\n            return el.parentElement.ownerDocument.defaultView || el.parentElement.ownerDocument.ownerWindow;\n        }\n        return el.parentElement;\n    }\n\n    if (el.getRootNode){\n        var parent = el.getRootNode()\n        if(parent.nodeType === 11) {\n            return parent.host;\n        }\n    }\n}\n\nmodule.exports = function(target, settings, callback){\n    if(!target){\n        return;\n    }\n\n    if(typeof settings === 'function'){\n        callback = settings;\n        settings = null;\n    }\n\n    if(!settings){\n        settings = {};\n    }\n\n    settings.time = isNaN(settings.time) ? 1000 : settings.time;\n    settings.ease = settings.ease || function(v){return 1 - Math.pow(1 - v, v / 2);};\n\n    var parent = findParentElement(target),\n        parents = 1;\n\n    function done(endType){\n        parents--;\n        if(!parents){\n            callback && callback(endType);\n        }\n    }\n\n    var validTarget = settings.validTarget || defaultValidTarget;\n    var isScrollable = settings.isScrollable;\n\n    if(settings.debug){\n        console.log('About to scroll to', target)\n\n        if(!parent){\n            console.error('Target did not have a parent, is it mounted in the DOM?')\n        }\n    }\n\n    var cancel;\n\n    while(parent){\n        if(settings.debug){\n            console.log('Scrolling parent node', parent)\n        }\n\n        if(validTarget(parent, parents) && (isScrollable ? isScrollable(parent, defaultIsScrollable) : defaultIsScrollable(parent))){\n            parents++;\n            cancel = transitionScrollTo(target, parent, settings, done);\n        }\n\n        parent = findParentElement(parent);\n\n        if(!parent){\n            done(COMPLETE)\n            break;\n        }\n    }\n\n    return cancel;\n};\n","const runningOnBrowser = typeof window !== \"undefined\";\r\n\r\nconst isBot =\r\n\t(runningOnBrowser && !(\"onscroll\" in window)) ||\r\n\t(typeof navigator !== \"undefined\" &&\r\n\t\t/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent));\r\n\r\nconst supportsIntersectionObserver =\r\n\trunningOnBrowser && \"IntersectionObserver\" in window;\r\n\r\nconst supportsClassList =\r\n\trunningOnBrowser && \"classList\" in document.createElement(\"p\");\r\n\r\nconst defaultSettings = {\r\n\telements_selector: \"img\",\r\n\tcontainer: isBot || runningOnBrowser ? document : null,\r\n\tthreshold: 300,\r\n\tthresholds: null,\r\n\tdata_src: \"src\",\r\n\tdata_srcset: \"srcset\",\r\n\tdata_sizes: \"sizes\",\r\n\tdata_bg: \"bg\",\r\n\tdata_poster: \"poster\",\r\n\tclass_loading: \"loading\",\r\n\tclass_loaded: \"loaded\",\r\n\tclass_error: \"error\",\r\n\tload_delay: 0,\r\n\tauto_unobserve: true,\r\n\tcallback_enter: null,\r\n\tcallback_exit: null,\r\n\tcallback_reveal: null,\r\n\tcallback_loaded: null,\r\n\tcallback_error: null,\r\n\tcallback_finish: null,\r\n\tuse_native: false\r\n};\r\n\r\nvar getInstanceSettings = customSettings => {\r\n\treturn Object.assign({}, defaultSettings, customSettings);\r\n};\r\n\r\n/* Creates instance and notifies it through the window element */\r\nconst createInstance = function(classObj, options) {\r\n\tvar event;\r\n\tlet eventString = \"LazyLoad::Initialized\";\r\n\tlet instance = new classObj(options);\r\n\ttry {\r\n\t\t// Works in modern browsers\r\n\t\tevent = new CustomEvent(eventString, { detail: { instance } });\r\n\t} catch (err) {\r\n\t\t// Works in Internet Explorer (all versions)\r\n\t\tevent = document.createEvent(\"CustomEvent\");\r\n\t\tevent.initCustomEvent(eventString, false, false, { instance });\r\n\t}\r\n\twindow.dispatchEvent(event);\r\n};\r\n\r\n/* Auto initialization of one or more instances of lazyload, depending on the \r\n    options passed in (plain object or an array) */\r\nfunction autoInitialize(classObj, options) {\r\n\tif (!options) {\r\n\t\treturn;\r\n\t}\r\n\tif (!options.length) {\r\n\t\t// Plain object\r\n\t\tcreateInstance(classObj, options);\r\n\t} else {\r\n\t\t// Array of objects\r\n\t\tfor (let i = 0, optionsItem; (optionsItem = options[i]); i += 1) {\r\n\t\t\tcreateInstance(classObj, optionsItem);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nconst dataPrefix = \"data-\";\r\nconst processedDataName = \"was-processed\";\r\nconst timeoutDataName = \"ll-timeout\";\r\nconst trueString = \"true\";\r\n\r\nconst getData = (element, attribute) => {\r\n\treturn element.getAttribute(dataPrefix + attribute);\r\n};\r\n\r\nconst setData = (element, attribute, value) => {\r\n\tvar attrName = dataPrefix + attribute;\r\n\tif (value === null) {\r\n\t\telement.removeAttribute(attrName);\r\n\t\treturn;\r\n\t}\r\n\telement.setAttribute(attrName, value);\r\n};\r\n\r\nconst resetWasProcessedData = element =>\r\n\tsetData(element, processedDataName, null);\r\n\r\nconst setWasProcessedData = element =>\r\n\tsetData(element, processedDataName, trueString);\r\n\r\nconst getWasProcessedData = element =>\r\n\tgetData(element, processedDataName) === trueString;\r\n\r\nconst setTimeoutData = (element, value) =>\r\n\tsetData(element, timeoutDataName, value);\r\n\r\nconst getTimeoutData = element => getData(element, timeoutDataName);\r\n\r\nconst purgeProcessedElements = elements => {\r\n\treturn elements.filter(element => !getWasProcessedData(element));\r\n};\r\n\r\nconst purgeOneElement = (elements, elementToPurge) => {\r\n\treturn elements.filter(element => element !== elementToPurge);\r\n};\r\n\r\nconst safeCallback = (callback, arg1, arg2, arg3) => {\r\n\tif (!callback) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (arg3 !== undefined) {\r\n\t\tcallback(arg1, arg2, arg3);\r\n\t\treturn;\r\n\t}\r\n\tif (arg2 !== undefined) {\r\n\t\tcallback(arg1, arg2);\r\n\t\treturn;\r\n\t}\r\n\tcallback(arg1);\r\n};\r\n\r\nconst updateLoadingCount = (instance, plusMinus) => {\r\n    instance.loadingCount += plusMinus;\r\n    if (instance._elements.length === 0 && instance.loadingCount === 0) {\r\n        safeCallback(instance._settings.callback_finish, instance);\r\n    }\r\n};\r\n\r\nconst getSourceTags = parentTag => {\r\n\tlet sourceTags = [];\r\n\tfor (let i = 0, childTag; (childTag = parentTag.children[i]); i += 1) {\r\n\t\tif (childTag.tagName === \"SOURCE\") {\r\n\t\t\tsourceTags.push(childTag);\r\n\t\t}\r\n\t}\r\n\treturn sourceTags;\r\n};\r\n\r\nconst setAttributeIfValue = (element, attrName, value) => {\r\n\tif (!value) {\r\n\t\treturn;\r\n\t}\r\n\telement.setAttribute(attrName, value);\r\n};\r\n\r\nconst setImageAttributes = (element, settings) => {\r\n\tsetAttributeIfValue(\r\n\t\telement,\r\n\t\t\"sizes\",\r\n\t\tgetData(element, settings.data_sizes)\r\n\t);\r\n\tsetAttributeIfValue(\r\n\t\telement,\r\n\t\t\"srcset\",\r\n\t\tgetData(element, settings.data_srcset)\r\n\t);\r\n\tsetAttributeIfValue(element, \"src\", getData(element, settings.data_src));\r\n};\r\n\r\nconst setSourcesImg = (element, settings) => {\r\n\tconst parent = element.parentNode;\r\n\r\n\tif (parent && parent.tagName === \"PICTURE\") {\r\n\t\tlet sourceTags = getSourceTags(parent);\r\n\t\tsourceTags.forEach(sourceTag => {\r\n\t\t\tsetImageAttributes(sourceTag, settings);\r\n\t\t});\r\n\t}\r\n\r\n\tsetImageAttributes(element, settings);\r\n};\r\n\r\nconst setSourcesIframe = (element, settings) => {\r\n\tsetAttributeIfValue(element, \"src\", getData(element, settings.data_src));\r\n};\r\n\r\nconst setSourcesVideo = (element, settings) => {\r\n\tlet sourceTags = getSourceTags(element);\r\n\tsourceTags.forEach(sourceTag => {\r\n\t\tsetAttributeIfValue(\r\n\t\t\tsourceTag,\r\n\t\t\t\"src\",\r\n\t\t\tgetData(sourceTag, settings.data_src)\r\n\t\t);\r\n\t});\r\n\tsetAttributeIfValue(\r\n\t\telement,\r\n\t\t\"poster\",\r\n\t\tgetData(element, settings.data_poster)\r\n\t);\r\n\tsetAttributeIfValue(element, \"src\", getData(element, settings.data_src));\r\n\telement.load();\r\n};\r\n\r\nconst setSourcesBgImage = (element, settings) => {\r\n\tconst srcDataValue = getData(element, settings.data_src);\r\n\tconst bgDataValue = getData(element, settings.data_bg);\r\n\r\n\tif (srcDataValue) {\r\n\t\telement.style.backgroundImage = `url(\"${srcDataValue}\")`;\r\n\t}\r\n\r\n\tif (bgDataValue) {\r\n\t\telement.style.backgroundImage = bgDataValue;\r\n\t}\r\n};\r\n\r\nconst setSourcesFunctions = {\r\n\tIMG: setSourcesImg,\r\n\tIFRAME: setSourcesIframe,\r\n\tVIDEO: setSourcesVideo\r\n};\r\n\r\nconst setSources = (element, instance) => {\r\n\tconst settings = instance._settings;\r\n\tconst tagName = element.tagName;\r\n\tconst setSourcesFunction = setSourcesFunctions[tagName];\r\n\tif (setSourcesFunction) {\r\n\t\tsetSourcesFunction(element, settings);\r\n\t\tupdateLoadingCount(instance, 1);\r\n\t\tinstance._elements = purgeOneElement(instance._elements, element);\r\n\t\treturn;\r\n\t}\r\n\tsetSourcesBgImage(element, settings);\r\n};\r\n\r\nconst addClass = (element, className) => {\r\n\tif (supportsClassList) {\r\n\t\telement.classList.add(className);\r\n\t\treturn;\r\n\t}\r\n\telement.className += (element.className ? \" \" : \"\") + className;\r\n};\r\n\r\nconst removeClass = (element, className) => {\r\n\tif (supportsClassList) {\r\n\t\telement.classList.remove(className);\r\n\t\treturn;\r\n\t}\r\n\telement.className = element.className.\r\n\t\treplace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \").\r\n\t\treplace(/^\\s+/, \"\").\r\n\t\treplace(/\\s+$/, \"\");\r\n};\r\n\r\nconst genericLoadEventName = \"load\";\r\nconst mediaLoadEventName = \"loadeddata\";\r\nconst errorEventName = \"error\";\r\n\r\nconst addEventListener = (element, eventName, handler) => {\r\n\telement.addEventListener(eventName, handler);\r\n};\r\n\r\nconst removeEventListener = (element, eventName, handler) => {\r\n\telement.removeEventListener(eventName, handler);\r\n};\r\n\r\nconst addEventListeners = (element, loadHandler, errorHandler) => {\r\n\taddEventListener(element, genericLoadEventName, loadHandler);\r\n\taddEventListener(element, mediaLoadEventName, loadHandler);\r\n\taddEventListener(element, errorEventName, errorHandler);\r\n};\r\n\r\nconst removeEventListeners = (element, loadHandler, errorHandler) => {\r\n\tremoveEventListener(element, genericLoadEventName, loadHandler);\r\n\tremoveEventListener(element, mediaLoadEventName, loadHandler);\r\n\tremoveEventListener(element, errorEventName, errorHandler);\r\n};\r\n\r\nconst eventHandler = function(event, success, instance) {\r\n\tvar settings = instance._settings;\r\n\tconst className = success ? settings.class_loaded : settings.class_error;\r\n\tconst callback = success\r\n\t\t? settings.callback_loaded\r\n\t\t: settings.callback_error;\r\n\tconst element = event.target;\r\n\r\n\tremoveClass(element, settings.class_loading);\r\n\taddClass(element, className);\r\n\tsafeCallback(callback, element, instance);\r\n\r\n\tupdateLoadingCount(instance, -1);\r\n};\r\n\r\nconst addOneShotEventListeners = (element, instance) => {\r\n\tconst loadHandler = event => {\r\n\t\teventHandler(event, true, instance);\r\n\t\tremoveEventListeners(element, loadHandler, errorHandler);\r\n\t};\r\n\tconst errorHandler = event => {\r\n\t\teventHandler(event, false, instance);\r\n\t\tremoveEventListeners(element, loadHandler, errorHandler);\r\n\t};\r\n\taddEventListeners(element, loadHandler, errorHandler);\r\n};\r\n\r\nconst managedTags = [\"IMG\", \"IFRAME\", \"VIDEO\"];\r\n\r\nconst onEnter = (element, entry, instance) => {\r\n\tconst settings = instance._settings;\r\n\tsafeCallback(settings.callback_enter, element, entry, instance);\r\n\tif (!settings.load_delay) {\r\n\t\trevealAndUnobserve(element, instance);\r\n\t\treturn;\r\n\t}\r\n\tdelayLoad(element, instance);\r\n};\r\n\r\nconst revealAndUnobserve = (element, instance) => {\r\n\tvar observer = instance._observer;\r\n\trevealElement(element, instance);\r\n\tif (observer && instance._settings.auto_unobserve) {\r\n\t\tobserver.unobserve(element);\r\n\t}\r\n};\r\n\r\nconst onExit = (element, entry, instance) => {\r\n\tconst settings = instance._settings;\r\n\tsafeCallback(settings.callback_exit, element, entry, instance);\r\n\tif (!settings.load_delay) {\r\n\t\treturn;\r\n\t}\r\n\tcancelDelayLoad(element);\r\n};\r\n\r\nconst cancelDelayLoad = element => {\r\n\tvar timeoutId = getTimeoutData(element);\r\n\tif (!timeoutId) {\r\n\t\treturn; // do nothing if timeout doesn't exist\r\n\t}\r\n\tclearTimeout(timeoutId);\r\n\tsetTimeoutData(element, null);\r\n};\r\n\r\nconst delayLoad = (element, instance) => {\r\n\tvar loadDelay = instance._settings.load_delay;\r\n\tvar timeoutId = getTimeoutData(element);\r\n\tif (timeoutId) {\r\n\t\treturn; // do nothing if timeout already set\r\n\t}\r\n\ttimeoutId = setTimeout(function() {\r\n\t\trevealAndUnobserve(element, instance);\r\n\t\tcancelDelayLoad(element);\r\n\t}, loadDelay);\r\n\tsetTimeoutData(element, timeoutId);\r\n};\r\n\r\nconst revealElement = (element, instance, force) => {\r\n\tvar settings = instance._settings;\r\n\tif (!force && getWasProcessedData(element)) {\r\n\t\treturn; // element has already been processed and force wasn't true\r\n\t}\r\n\tif (managedTags.indexOf(element.tagName) > -1) {\r\n\t\taddOneShotEventListeners(element, instance);\r\n\t\taddClass(element, settings.class_loading);\r\n\t}\r\n\tsetSources(element, instance);\r\n\tsetWasProcessedData(element);\r\n\tsafeCallback(settings.callback_reveal, element, instance);\r\n\tsafeCallback(settings.callback_set, element, instance);\r\n};\r\n\r\nconst isIntersecting = entry =>\r\n\tentry.isIntersecting || entry.intersectionRatio > 0;\r\n\r\nconst getObserverSettings = settings => ({\r\n\troot: settings.container === document ? null : settings.container,\r\n\trootMargin: settings.thresholds || settings.threshold + \"px\"\r\n});\r\n\r\nconst setObserver = instance => {\r\n\tif (!supportsIntersectionObserver) {\r\n\t\treturn false;\r\n\t}\r\n\tinstance._observer = new IntersectionObserver(entries => {\r\n\t\tentries.forEach(entry =>\r\n\t\t\tisIntersecting(entry)\r\n\t\t\t\t? onEnter(entry.target, entry, instance)\r\n\t\t\t\t: onExit(entry.target, entry, instance)\r\n\t\t);\r\n\t}, getObserverSettings(instance._settings));\r\n\treturn true;\r\n};\r\n\r\nconst nativeLazyTags = [\"IMG\", \"IFRAME\"];\r\n\r\nconst shouldUseNative = settings =>\r\n\tsettings.use_native && \"loading\" in HTMLImageElement.prototype;\r\n\r\nconst loadAllNative = instance => {\r\n\tinstance._elements.forEach(element => {\r\n\t\tif (nativeLazyTags.indexOf(element.tagName) === -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\telement.setAttribute(\"loading\", \"lazy\");\r\n\t\trevealElement(element, instance);\r\n\t});\r\n};\r\n\r\nconst nodeSetToArray = nodeSet => Array.prototype.slice.call(nodeSet);\r\n\r\nconst queryElements = settings =>\r\n\tsettings.container.querySelectorAll(settings.elements_selector);\r\n\r\nconst getElements = (elements, settings) =>\r\n\tpurgeProcessedElements(nodeSetToArray(elements || queryElements(settings)));\r\n\r\nconst retryLazyLoad = instance => {\r\n\tvar settings = instance._settings;\r\n\tvar errorElements = settings.container.querySelectorAll(\r\n\t\t\".\" + settings.class_error\r\n\t);\r\n\terrorElements.forEach(element => {\r\n\t\tremoveClass(element, settings.class_error);\r\n\t\tresetWasProcessedData(element);\r\n\t});\r\n\tinstance.update();\r\n};\r\n\r\nconst setOnlineCheck = instance => {\r\n\tif (!runningOnBrowser) {\r\n\t\treturn;\r\n\t}\r\n\twindow.addEventListener(\"online\", event => {\r\n\t\tretryLazyLoad(instance);\r\n\t});\r\n};\r\n\r\nconst LazyLoad = function(customSettings, elements) {\r\n    this._settings = getInstanceSettings(customSettings);\r\n    this.loadingCount = 0;\r\n    setObserver(this);\r\n    this.update(elements);\r\n    setOnlineCheck(this);\r\n};\r\n\r\nLazyLoad.prototype = {\r\n    update: function(elements) {\r\n        var settings = this._settings;\r\n        this._elements = getElements(elements, settings);\r\n        if (isBot || !this._observer) {\r\n            this.loadAll();\r\n            return;\r\n        }\r\n        if (shouldUseNative(settings)) {\r\n            loadAllNative(this);\r\n            this._elements = getElements(elements, settings);\r\n        }\r\n        this._elements.forEach(element => {\r\n            this._observer.observe(element);\r\n        });\r\n    },\r\n\r\n    destroy: function() {\r\n        if (this._observer) {\r\n            this._elements.forEach(element => {\r\n                this._observer.unobserve(element);\r\n            });\r\n            this._observer = null;\r\n        }\r\n        this._elements = null;\r\n        this._settings = null;\r\n    },\r\n\r\n    load: function(element, force) {\r\n        revealElement(element, this, force);\r\n    },\r\n\r\n    loadAll: function() {\r\n        this._elements.forEach(element => {\r\n            revealAndUnobserve(element, this);\r\n        });\r\n    }\r\n};\r\n\r\n/* Automatic instances creation if required (useful for async script loading) */\r\nif (runningOnBrowser) {\r\n    autoInitialize(LazyLoad, window.lazyLoadOptions);\r\n}\r\n\r\nexport default LazyLoad;\r\n","/*!\n * vue-i18n v8.20.0 \n * (c) 2020 kazuya kawaguchi\n * Released under the MIT License.\n */\n/*  */\n\n/**\n * constants\n */\n\nvar numberFormatKeys = [\n  'style',\n  'currency',\n  'currencyDisplay',\n  'useGrouping',\n  'minimumIntegerDigits',\n  'minimumFractionDigits',\n  'maximumFractionDigits',\n  'minimumSignificantDigits',\n  'maximumSignificantDigits',\n  'localeMatcher',\n  'formatMatcher',\n  'unit'\n];\n\n/**\n * utilities\n */\n\nfunction warn (msg, err) {\n  if (typeof console !== 'undefined') {\n    console.warn('[vue-i18n] ' + msg);\n    /* istanbul ignore if */\n    if (err) {\n      console.warn(err.stack);\n    }\n  }\n}\n\nfunction error (msg, err) {\n  if (typeof console !== 'undefined') {\n    console.error('[vue-i18n] ' + msg);\n    /* istanbul ignore if */\n    if (err) {\n      console.error(err.stack);\n    }\n  }\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (obj) {\n  return obj !== null && typeof obj === 'object'\n}\n\nfunction isBoolean (val) {\n  return typeof val === 'boolean'\n}\n\nfunction isString (val) {\n  return typeof val === 'string'\n}\n\nvar toString = Object.prototype.toString;\nvar OBJECT_STRING = '[object Object]';\nfunction isPlainObject (obj) {\n  return toString.call(obj) === OBJECT_STRING\n}\n\nfunction isNull (val) {\n  return val === null || val === undefined\n}\n\nfunction parseArgs () {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  var locale = null;\n  var params = null;\n  if (args.length === 1) {\n    if (isObject(args[0]) || Array.isArray(args[0])) {\n      params = args[0];\n    } else if (typeof args[0] === 'string') {\n      locale = args[0];\n    }\n  } else if (args.length === 2) {\n    if (typeof args[0] === 'string') {\n      locale = args[0];\n    }\n    /* istanbul ignore if */\n    if (isObject(args[1]) || Array.isArray(args[1])) {\n      params = args[1];\n    }\n  }\n\n  return { locale: locale, params: params }\n}\n\nfunction looseClone (obj) {\n  return JSON.parse(JSON.stringify(obj))\n}\n\nfunction remove (arr, item) {\n  if (arr.length) {\n    var index = arr.indexOf(item);\n    if (index > -1) {\n      return arr.splice(index, 1)\n    }\n  }\n}\n\nfunction includes (arr, item) {\n  return !!~arr.indexOf(item)\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n  return hasOwnProperty.call(obj, key)\n}\n\nfunction merge (target) {\n  var arguments$1 = arguments;\n\n  var output = Object(target);\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments$1[i];\n    if (source !== undefined && source !== null) {\n      var key = (void 0);\n      for (key in source) {\n        if (hasOwn(source, key)) {\n          if (isObject(source[key])) {\n            output[key] = merge(output[key], source[key]);\n          } else {\n            output[key] = source[key];\n          }\n        }\n      }\n    }\n  }\n  return output\n}\n\nfunction looseEqual (a, b) {\n  if (a === b) { return true }\n  var isObjectA = isObject(a);\n  var isObjectB = isObject(b);\n  if (isObjectA && isObjectB) {\n    try {\n      var isArrayA = Array.isArray(a);\n      var isArrayB = Array.isArray(b);\n      if (isArrayA && isArrayB) {\n        return a.length === b.length && a.every(function (e, i) {\n          return looseEqual(e, b[i])\n        })\n      } else if (!isArrayA && !isArrayB) {\n        var keysA = Object.keys(a);\n        var keysB = Object.keys(b);\n        return keysA.length === keysB.length && keysA.every(function (key) {\n          return looseEqual(a[key], b[key])\n        })\n      } else {\n        /* istanbul ignore next */\n        return false\n      }\n    } catch (e) {\n      /* istanbul ignore next */\n      return false\n    }\n  } else if (!isObjectA && !isObjectB) {\n    return String(a) === String(b)\n  } else {\n    return false\n  }\n}\n\n/*  */\n\nfunction extend (Vue) {\n  if (!Vue.prototype.hasOwnProperty('$i18n')) {\n    // $FlowFixMe\n    Object.defineProperty(Vue.prototype, '$i18n', {\n      get: function get () { return this._i18n }\n    });\n  }\n\n  Vue.prototype.$t = function (key) {\n    var values = [], len = arguments.length - 1;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n    var i18n = this.$i18n;\n    return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))\n  };\n\n  Vue.prototype.$tc = function (key, choice) {\n    var values = [], len = arguments.length - 2;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n\n    var i18n = this.$i18n;\n    return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))\n  };\n\n  Vue.prototype.$te = function (key, locale) {\n    var i18n = this.$i18n;\n    return i18n._te(key, i18n.locale, i18n._getMessages(), locale)\n  };\n\n  Vue.prototype.$d = function (value) {\n    var ref;\n\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n    return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))\n  };\n\n  Vue.prototype.$n = function (value) {\n    var ref;\n\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n    return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))\n  };\n}\n\n/*  */\n\nvar mixin = {\n  beforeCreate: function beforeCreate () {\n    var options = this.$options;\n    options.i18n = options.i18n || (options.__i18n ? {} : null);\n\n    if (options.i18n) {\n      if (options.i18n instanceof VueI18n) {\n        // init locale messages via custom blocks\n        if (options.__i18n) {\n          try {\n            var localeMessages = {};\n            options.__i18n.forEach(function (resource) {\n              localeMessages = merge(localeMessages, JSON.parse(resource));\n            });\n            Object.keys(localeMessages).forEach(function (locale) {\n              options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);\n            });\n          } catch (e) {\n            if (process.env.NODE_ENV !== 'production') {\n              error(\"Cannot parse locale messages via custom blocks.\", e);\n            }\n          }\n        }\n        this._i18n = options.i18n;\n        this._i18nWatcher = this._i18n.watchI18nData();\n      } else if (isPlainObject(options.i18n)) {\n        var rootI18n = this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n\n          ? this.$root.$i18n\n          : null;\n        // component local i18n\n        if (rootI18n) {\n          options.i18n.root = this.$root;\n          options.i18n.formatter = rootI18n.formatter;\n          options.i18n.fallbackLocale = rootI18n.fallbackLocale;\n          options.i18n.formatFallbackMessages = rootI18n.formatFallbackMessages;\n          options.i18n.silentTranslationWarn = rootI18n.silentTranslationWarn;\n          options.i18n.silentFallbackWarn = rootI18n.silentFallbackWarn;\n          options.i18n.pluralizationRules = rootI18n.pluralizationRules;\n          options.i18n.preserveDirectiveContent = rootI18n.preserveDirectiveContent;\n        }\n\n        // init locale messages via custom blocks\n        if (options.__i18n) {\n          try {\n            var localeMessages$1 = {};\n            options.__i18n.forEach(function (resource) {\n              localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));\n            });\n            options.i18n.messages = localeMessages$1;\n          } catch (e) {\n            if (process.env.NODE_ENV !== 'production') {\n              warn(\"Cannot parse locale messages via custom blocks.\", e);\n            }\n          }\n        }\n\n        var ref = options.i18n;\n        var sharedMessages = ref.sharedMessages;\n        if (sharedMessages && isPlainObject(sharedMessages)) {\n          options.i18n.messages = merge(options.i18n.messages, sharedMessages);\n        }\n\n        this._i18n = new VueI18n(options.i18n);\n        this._i18nWatcher = this._i18n.watchI18nData();\n\n        if (options.i18n.sync === undefined || !!options.i18n.sync) {\n          this._localeWatcher = this.$i18n.watchLocale();\n        }\n\n        if (rootI18n) {\n          rootI18n.onComponentInstanceCreated(this._i18n);\n        }\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\"Cannot be interpreted 'i18n' option.\");\n        }\n      }\n    } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n      // root i18n\n      this._i18n = this.$root.$i18n;\n    } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n      // parent i18n\n      this._i18n = options.parent.$i18n;\n    }\n  },\n\n  beforeMount: function beforeMount () {\n    var options = this.$options;\n    options.i18n = options.i18n || (options.__i18n ? {} : null);\n\n    if (options.i18n) {\n      if (options.i18n instanceof VueI18n) {\n        // init locale messages via custom blocks\n        this._i18n.subscribeDataChanging(this);\n        this._subscribing = true;\n      } else if (isPlainObject(options.i18n)) {\n        this._i18n.subscribeDataChanging(this);\n        this._subscribing = true;\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\"Cannot be interpreted 'i18n' option.\");\n        }\n      }\n    } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n      this._i18n.subscribeDataChanging(this);\n      this._subscribing = true;\n    } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n      this._i18n.subscribeDataChanging(this);\n      this._subscribing = true;\n    }\n  },\n\n  beforeDestroy: function beforeDestroy () {\n    if (!this._i18n) { return }\n\n    var self = this;\n    this.$nextTick(function () {\n      if (self._subscribing) {\n        self._i18n.unsubscribeDataChanging(self);\n        delete self._subscribing;\n      }\n\n      if (self._i18nWatcher) {\n        self._i18nWatcher();\n        self._i18n.destroyVM();\n        delete self._i18nWatcher;\n      }\n\n      if (self._localeWatcher) {\n        self._localeWatcher();\n        delete self._localeWatcher;\n      }\n    });\n  }\n};\n\n/*  */\n\nvar interpolationComponent = {\n  name: 'i18n',\n  functional: true,\n  props: {\n    tag: {\n      type: [String, Boolean, Object],\n      default: 'span'\n    },\n    path: {\n      type: String,\n      required: true\n    },\n    locale: {\n      type: String\n    },\n    places: {\n      type: [Array, Object]\n    }\n  },\n  render: function render (h, ref) {\n    var data = ref.data;\n    var parent = ref.parent;\n    var props = ref.props;\n    var slots = ref.slots;\n\n    var $i18n = parent.$i18n;\n    if (!$i18n) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn('Cannot find VueI18n instance!');\n      }\n      return\n    }\n\n    var path = props.path;\n    var locale = props.locale;\n    var places = props.places;\n    var params = slots();\n    var children = $i18n.i(\n      path,\n      locale,\n      onlyHasDefaultPlace(params) || places\n        ? useLegacyPlaces(params.default, places)\n        : params\n    );\n\n    var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n    return tag ? h(tag, data, children) : children\n  }\n};\n\nfunction onlyHasDefaultPlace (params) {\n  var prop;\n  for (prop in params) {\n    if (prop !== 'default') { return false }\n  }\n  return Boolean(prop)\n}\n\nfunction useLegacyPlaces (children, places) {\n  var params = places ? createParamsFromPlaces(places) : {};\n\n  if (!children) { return params }\n\n  // Filter empty text nodes\n  children = children.filter(function (child) {\n    return child.tag || child.text.trim() !== ''\n  });\n\n  var everyPlace = children.every(vnodeHasPlaceAttribute);\n  if (process.env.NODE_ENV !== 'production' && everyPlace) {\n    warn('`place` attribute is deprecated in next major version. Please switch to Vue slots.');\n  }\n\n  return children.reduce(\n    everyPlace ? assignChildPlace : assignChildIndex,\n    params\n  )\n}\n\nfunction createParamsFromPlaces (places) {\n  if (process.env.NODE_ENV !== 'production') {\n    warn('`places` prop is deprecated in next major version. Please switch to Vue slots.');\n  }\n\n  return Array.isArray(places)\n    ? places.reduce(assignChildIndex, {})\n    : Object.assign({}, places)\n}\n\nfunction assignChildPlace (params, child) {\n  if (child.data && child.data.attrs && child.data.attrs.place) {\n    params[child.data.attrs.place] = child;\n  }\n  return params\n}\n\nfunction assignChildIndex (params, child, index) {\n  params[index] = child;\n  return params\n}\n\nfunction vnodeHasPlaceAttribute (vnode) {\n  return Boolean(vnode.data && vnode.data.attrs && vnode.data.attrs.place)\n}\n\n/*  */\n\nvar numberComponent = {\n  name: 'i18n-n',\n  functional: true,\n  props: {\n    tag: {\n      type: [String, Boolean, Object],\n      default: 'span'\n    },\n    value: {\n      type: Number,\n      required: true\n    },\n    format: {\n      type: [String, Object]\n    },\n    locale: {\n      type: String\n    }\n  },\n  render: function render (h, ref) {\n    var props = ref.props;\n    var parent = ref.parent;\n    var data = ref.data;\n\n    var i18n = parent.$i18n;\n\n    if (!i18n) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn('Cannot find VueI18n instance!');\n      }\n      return null\n    }\n\n    var key = null;\n    var options = null;\n\n    if (isString(props.format)) {\n      key = props.format;\n    } else if (isObject(props.format)) {\n      if (props.format.key) {\n        key = props.format.key;\n      }\n\n      // Filter out number format options only\n      options = Object.keys(props.format).reduce(function (acc, prop) {\n        var obj;\n\n        if (includes(numberFormatKeys, prop)) {\n          return Object.assign({}, acc, ( obj = {}, obj[prop] = props.format[prop], obj ))\n        }\n        return acc\n      }, null);\n    }\n\n    var locale = props.locale || i18n.locale;\n    var parts = i18n._ntp(props.value, locale, key, options);\n\n    var values = parts.map(function (part, index) {\n      var obj;\n\n      var slot = data.scopedSlots && data.scopedSlots[part.type];\n      return slot ? slot(( obj = {}, obj[part.type] = part.value, obj.index = index, obj.parts = parts, obj )) : part.value\n    });\n\n    var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n    return tag\n      ? h(tag, {\n        attrs: data.attrs,\n        'class': data['class'],\n        staticClass: data.staticClass\n      }, values)\n      : values\n  }\n};\n\n/*  */\n\nfunction bind (el, binding, vnode) {\n  if (!assert(el, vnode)) { return }\n\n  t(el, binding, vnode);\n}\n\nfunction update (el, binding, vnode, oldVNode) {\n  if (!assert(el, vnode)) { return }\n\n  var i18n = vnode.context.$i18n;\n  if (localeEqual(el, vnode) &&\n    (looseEqual(binding.value, binding.oldValue) &&\n     looseEqual(el._localeMessage, i18n.getLocaleMessage(i18n.locale)))) { return }\n\n  t(el, binding, vnode);\n}\n\nfunction unbind (el, binding, vnode, oldVNode) {\n  var vm = vnode.context;\n  if (!vm) {\n    warn('Vue instance does not exists in VNode context');\n    return\n  }\n\n  var i18n = vnode.context.$i18n || {};\n  if (!binding.modifiers.preserve && !i18n.preserveDirectiveContent) {\n    el.textContent = '';\n  }\n  el._vt = undefined;\n  delete el['_vt'];\n  el._locale = undefined;\n  delete el['_locale'];\n  el._localeMessage = undefined;\n  delete el['_localeMessage'];\n}\n\nfunction assert (el, vnode) {\n  var vm = vnode.context;\n  if (!vm) {\n    warn('Vue instance does not exists in VNode context');\n    return false\n  }\n\n  if (!vm.$i18n) {\n    warn('VueI18n instance does not exists in Vue instance');\n    return false\n  }\n\n  return true\n}\n\nfunction localeEqual (el, vnode) {\n  var vm = vnode.context;\n  return el._locale === vm.$i18n.locale\n}\n\nfunction t (el, binding, vnode) {\n  var ref$1, ref$2;\n\n  var value = binding.value;\n\n  var ref = parseValue(value);\n  var path = ref.path;\n  var locale = ref.locale;\n  var args = ref.args;\n  var choice = ref.choice;\n  if (!path && !locale && !args) {\n    warn('value type not supported');\n    return\n  }\n\n  if (!path) {\n    warn('`path` is required in v-t directive');\n    return\n  }\n\n  var vm = vnode.context;\n  if (choice != null) {\n    el._vt = el.textContent = (ref$1 = vm.$i18n).tc.apply(ref$1, [ path, choice ].concat( makeParams(locale, args) ));\n  } else {\n    el._vt = el.textContent = (ref$2 = vm.$i18n).t.apply(ref$2, [ path ].concat( makeParams(locale, args) ));\n  }\n  el._locale = vm.$i18n.locale;\n  el._localeMessage = vm.$i18n.getLocaleMessage(vm.$i18n.locale);\n}\n\nfunction parseValue (value) {\n  var path;\n  var locale;\n  var args;\n  var choice;\n\n  if (isString(value)) {\n    path = value;\n  } else if (isPlainObject(value)) {\n    path = value.path;\n    locale = value.locale;\n    args = value.args;\n    choice = value.choice;\n  }\n\n  return { path: path, locale: locale, args: args, choice: choice }\n}\n\nfunction makeParams (locale, args) {\n  var params = [];\n\n  locale && params.push(locale);\n  if (args && (Array.isArray(args) || isPlainObject(args))) {\n    params.push(args);\n  }\n\n  return params\n}\n\nvar Vue;\n\nfunction install (_Vue) {\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && install.installed && _Vue === Vue) {\n    warn('already installed.');\n    return\n  }\n  install.installed = true;\n\n  Vue = _Vue;\n\n  var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && version < 2) {\n    warn((\"vue-i18n (\" + (install.version) + \") need to use Vue 2.0 or later (Vue: \" + (Vue.version) + \").\"));\n    return\n  }\n\n  extend(Vue);\n  Vue.mixin(mixin);\n  Vue.directive('t', { bind: bind, update: update, unbind: unbind });\n  Vue.component(interpolationComponent.name, interpolationComponent);\n  Vue.component(numberComponent.name, numberComponent);\n\n  // use simple mergeStrategies to prevent i18n instance lose '__proto__'\n  var strats = Vue.config.optionMergeStrategies;\n  strats.i18n = function (parentVal, childVal) {\n    return childVal === undefined\n      ? parentVal\n      : childVal\n  };\n}\n\n/*  */\n\nvar BaseFormatter = function BaseFormatter () {\n  this._caches = Object.create(null);\n};\n\nBaseFormatter.prototype.interpolate = function interpolate (message, values) {\n  if (!values) {\n    return [message]\n  }\n  var tokens = this._caches[message];\n  if (!tokens) {\n    tokens = parse(message);\n    this._caches[message] = tokens;\n  }\n  return compile(tokens, values)\n};\n\n\n\nvar RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\nvar RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\n\nfunction parse (format) {\n  var tokens = [];\n  var position = 0;\n\n  var text = '';\n  while (position < format.length) {\n    var char = format[position++];\n    if (char === '{') {\n      if (text) {\n        tokens.push({ type: 'text', value: text });\n      }\n\n      text = '';\n      var sub = '';\n      char = format[position++];\n      while (char !== undefined && char !== '}') {\n        sub += char;\n        char = format[position++];\n      }\n      var isClosed = char === '}';\n\n      var type = RE_TOKEN_LIST_VALUE.test(sub)\n        ? 'list'\n        : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\n          ? 'named'\n          : 'unknown';\n      tokens.push({ value: sub, type: type });\n    } else if (char === '%') {\n      // when found rails i18n syntax, skip text capture\n      if (format[(position)] !== '{') {\n        text += char;\n      }\n    } else {\n      text += char;\n    }\n  }\n\n  text && tokens.push({ type: 'text', value: text });\n\n  return tokens\n}\n\nfunction compile (tokens, values) {\n  var compiled = [];\n  var index = 0;\n\n  var mode = Array.isArray(values)\n    ? 'list'\n    : isObject(values)\n      ? 'named'\n      : 'unknown';\n  if (mode === 'unknown') { return compiled }\n\n  while (index < tokens.length) {\n    var token = tokens[index];\n    switch (token.type) {\n      case 'text':\n        compiled.push(token.value);\n        break\n      case 'list':\n        compiled.push(values[parseInt(token.value, 10)]);\n        break\n      case 'named':\n        if (mode === 'named') {\n          compiled.push((values)[token.value]);\n        } else {\n          if (process.env.NODE_ENV !== 'production') {\n            warn((\"Type of token '\" + (token.type) + \"' and format of value '\" + mode + \"' don't match!\"));\n          }\n        }\n        break\n      case 'unknown':\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\"Detect 'unknown' type of token!\");\n        }\n        break\n    }\n    index++;\n  }\n\n  return compiled\n}\n\n/*  */\n\n/**\n *  Path parser\n *  - Inspired:\n *    Vue.js Path parser\n */\n\n// actions\nvar APPEND = 0;\nvar PUSH = 1;\nvar INC_SUB_PATH_DEPTH = 2;\nvar PUSH_SUB_PATH = 3;\n\n// states\nvar BEFORE_PATH = 0;\nvar IN_PATH = 1;\nvar BEFORE_IDENT = 2;\nvar IN_IDENT = 3;\nvar IN_SUB_PATH = 4;\nvar IN_SINGLE_QUOTE = 5;\nvar IN_DOUBLE_QUOTE = 6;\nvar AFTER_PATH = 7;\nvar ERROR = 8;\n\nvar pathStateMachine = [];\n\npathStateMachine[BEFORE_PATH] = {\n  'ws': [BEFORE_PATH],\n  'ident': [IN_IDENT, APPEND],\n  '[': [IN_SUB_PATH],\n  'eof': [AFTER_PATH]\n};\n\npathStateMachine[IN_PATH] = {\n  'ws': [IN_PATH],\n  '.': [BEFORE_IDENT],\n  '[': [IN_SUB_PATH],\n  'eof': [AFTER_PATH]\n};\n\npathStateMachine[BEFORE_IDENT] = {\n  'ws': [BEFORE_IDENT],\n  'ident': [IN_IDENT, APPEND],\n  '0': [IN_IDENT, APPEND],\n  'number': [IN_IDENT, APPEND]\n};\n\npathStateMachine[IN_IDENT] = {\n  'ident': [IN_IDENT, APPEND],\n  '0': [IN_IDENT, APPEND],\n  'number': [IN_IDENT, APPEND],\n  'ws': [IN_PATH, PUSH],\n  '.': [BEFORE_IDENT, PUSH],\n  '[': [IN_SUB_PATH, PUSH],\n  'eof': [AFTER_PATH, PUSH]\n};\n\npathStateMachine[IN_SUB_PATH] = {\n  \"'\": [IN_SINGLE_QUOTE, APPEND],\n  '\"': [IN_DOUBLE_QUOTE, APPEND],\n  '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],\n  ']': [IN_PATH, PUSH_SUB_PATH],\n  'eof': ERROR,\n  'else': [IN_SUB_PATH, APPEND]\n};\n\npathStateMachine[IN_SINGLE_QUOTE] = {\n  \"'\": [IN_SUB_PATH, APPEND],\n  'eof': ERROR,\n  'else': [IN_SINGLE_QUOTE, APPEND]\n};\n\npathStateMachine[IN_DOUBLE_QUOTE] = {\n  '\"': [IN_SUB_PATH, APPEND],\n  'eof': ERROR,\n  'else': [IN_DOUBLE_QUOTE, APPEND]\n};\n\n/**\n * Check if an expression is a literal value.\n */\n\nvar literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral (exp) {\n  return literalValueRE.test(exp)\n}\n\n/**\n * Strip quotes from a string\n */\n\nfunction stripQuotes (str) {\n  var a = str.charCodeAt(0);\n  var b = str.charCodeAt(str.length - 1);\n  return a === b && (a === 0x22 || a === 0x27)\n    ? str.slice(1, -1)\n    : str\n}\n\n/**\n * Determine the type of a character in a keypath.\n */\n\nfunction getPathCharType (ch) {\n  if (ch === undefined || ch === null) { return 'eof' }\n\n  var code = ch.charCodeAt(0);\n\n  switch (code) {\n    case 0x5B: // [\n    case 0x5D: // ]\n    case 0x2E: // .\n    case 0x22: // \"\n    case 0x27: // '\n      return ch\n\n    case 0x5F: // _\n    case 0x24: // $\n    case 0x2D: // -\n      return 'ident'\n\n    case 0x09: // Tab\n    case 0x0A: // Newline\n    case 0x0D: // Return\n    case 0xA0:  // No-break space\n    case 0xFEFF:  // Byte Order Mark\n    case 0x2028:  // Line Separator\n    case 0x2029:  // Paragraph Separator\n      return 'ws'\n  }\n\n  return 'ident'\n}\n\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n */\n\nfunction formatSubPath (path) {\n  var trimmed = path.trim();\n  // invalid leading 0\n  if (path.charAt(0) === '0' && isNaN(path)) { return false }\n\n  return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed\n}\n\n/**\n * Parse a string path into an array of segments\n */\n\nfunction parse$1 (path) {\n  var keys = [];\n  var index = -1;\n  var mode = BEFORE_PATH;\n  var subPathDepth = 0;\n  var c;\n  var key;\n  var newChar;\n  var type;\n  var transition;\n  var action;\n  var typeMap;\n  var actions = [];\n\n  actions[PUSH] = function () {\n    if (key !== undefined) {\n      keys.push(key);\n      key = undefined;\n    }\n  };\n\n  actions[APPEND] = function () {\n    if (key === undefined) {\n      key = newChar;\n    } else {\n      key += newChar;\n    }\n  };\n\n  actions[INC_SUB_PATH_DEPTH] = function () {\n    actions[APPEND]();\n    subPathDepth++;\n  };\n\n  actions[PUSH_SUB_PATH] = function () {\n    if (subPathDepth > 0) {\n      subPathDepth--;\n      mode = IN_SUB_PATH;\n      actions[APPEND]();\n    } else {\n      subPathDepth = 0;\n      if (key === undefined) { return false }\n      key = formatSubPath(key);\n      if (key === false) {\n        return false\n      } else {\n        actions[PUSH]();\n      }\n    }\n  };\n\n  function maybeUnescapeQuote () {\n    var nextChar = path[index + 1];\n    if ((mode === IN_SINGLE_QUOTE && nextChar === \"'\") ||\n      (mode === IN_DOUBLE_QUOTE && nextChar === '\"')) {\n      index++;\n      newChar = '\\\\' + nextChar;\n      actions[APPEND]();\n      return true\n    }\n  }\n\n  while (mode !== null) {\n    index++;\n    c = path[index];\n\n    if (c === '\\\\' && maybeUnescapeQuote()) {\n      continue\n    }\n\n    type = getPathCharType(c);\n    typeMap = pathStateMachine[mode];\n    transition = typeMap[type] || typeMap['else'] || ERROR;\n\n    if (transition === ERROR) {\n      return // parse error\n    }\n\n    mode = transition[0];\n    action = actions[transition[1]];\n    if (action) {\n      newChar = transition[2];\n      newChar = newChar === undefined\n        ? c\n        : newChar;\n      if (action() === false) {\n        return\n      }\n    }\n\n    if (mode === AFTER_PATH) {\n      return keys\n    }\n  }\n}\n\n\n\n\n\nvar I18nPath = function I18nPath () {\n  this._cache = Object.create(null);\n};\n\n/**\n * External parse that check for a cache hit first\n */\nI18nPath.prototype.parsePath = function parsePath (path) {\n  var hit = this._cache[path];\n  if (!hit) {\n    hit = parse$1(path);\n    if (hit) {\n      this._cache[path] = hit;\n    }\n  }\n  return hit || []\n};\n\n/**\n * Get path value from path string\n */\nI18nPath.prototype.getPathValue = function getPathValue (obj, path) {\n  if (!isObject(obj)) { return null }\n\n  var paths = this.parsePath(path);\n  if (paths.length === 0) {\n    return null\n  } else {\n    var length = paths.length;\n    var last = obj;\n    var i = 0;\n    while (i < length) {\n      var value = last[paths[i]];\n      if (value === undefined) {\n        return null\n      }\n      last = value;\n      i++;\n    }\n\n    return last\n  }\n};\n\n/*  */\n\n\n\nvar htmlTagMatcher = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nvar linkKeyMatcher = /(?:@(?:\\.[a-z]+)?:(?:[\\w\\-_|.]+|\\([\\w\\-_|.]+\\)))/g;\nvar linkKeyPrefixMatcher = /^@(?:\\.([a-z]+))?:/;\nvar bracketsMatcher = /[()]/g;\nvar defaultModifiers = {\n  'upper': function (str) { return str.toLocaleUpperCase(); },\n  'lower': function (str) { return str.toLocaleLowerCase(); },\n  'capitalize': function (str) { return (\"\" + (str.charAt(0).toLocaleUpperCase()) + (str.substr(1))); }\n};\n\nvar defaultFormatter = new BaseFormatter();\n\nvar VueI18n = function VueI18n (options) {\n  var this$1 = this;\n  if ( options === void 0 ) options = {};\n\n  // Auto install if it is not done yet and `window` has `Vue`.\n  // To allow users to avoid auto-installation in some cases,\n  // this code should be placed here. See #290\n  /* istanbul ignore if */\n  if (!Vue && typeof window !== 'undefined' && window.Vue) {\n    install(window.Vue);\n  }\n\n  var locale = options.locale || 'en-US';\n  var fallbackLocale = options.fallbackLocale === false\n    ? false\n    : options.fallbackLocale || 'en-US';\n  var messages = options.messages || {};\n  var dateTimeFormats = options.dateTimeFormats || {};\n  var numberFormats = options.numberFormats || {};\n\n  this._vm = null;\n  this._formatter = options.formatter || defaultFormatter;\n  this._modifiers = options.modifiers || {};\n  this._missing = options.missing || null;\n  this._root = options.root || null;\n  this._sync = options.sync === undefined ? true : !!options.sync;\n  this._fallbackRoot = options.fallbackRoot === undefined\n    ? true\n    : !!options.fallbackRoot;\n  this._formatFallbackMessages = options.formatFallbackMessages === undefined\n    ? false\n    : !!options.formatFallbackMessages;\n  this._silentTranslationWarn = options.silentTranslationWarn === undefined\n    ? false\n    : options.silentTranslationWarn;\n  this._silentFallbackWarn = options.silentFallbackWarn === undefined\n    ? false\n    : !!options.silentFallbackWarn;\n  this._dateTimeFormatters = {};\n  this._numberFormatters = {};\n  this._path = new I18nPath();\n  this._dataListeners = [];\n  this._componentInstanceCreatedListener = options.componentInstanceCreatedListener || null;\n  this._preserveDirectiveContent = options.preserveDirectiveContent === undefined\n    ? false\n    : !!options.preserveDirectiveContent;\n  this.pluralizationRules = options.pluralizationRules || {};\n  this._warnHtmlInMessage = options.warnHtmlInMessage || 'off';\n  this._postTranslation = options.postTranslation || null;\n\n  /**\n   * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`\n   * @param choicesLength {number} an overall amount of available choices\n   * @returns a final choice index\n  */\n  this.getChoiceIndex = function (choice, choicesLength) {\n    var thisPrototype = Object.getPrototypeOf(this$1);\n    if (thisPrototype && thisPrototype.getChoiceIndex) {\n      var prototypeGetChoiceIndex = (thisPrototype.getChoiceIndex);\n      return (prototypeGetChoiceIndex).call(this$1, choice, choicesLength)\n    }\n\n    // Default (old) getChoiceIndex implementation - english-compatible\n    var defaultImpl = function (_choice, _choicesLength) {\n      _choice = Math.abs(_choice);\n\n      if (_choicesLength === 2) {\n        return _choice\n          ? _choice > 1\n            ? 1\n            : 0\n          : 1\n      }\n\n      return _choice ? Math.min(_choice, 2) : 0\n    };\n\n    if (this$1.locale in this$1.pluralizationRules) {\n      return this$1.pluralizationRules[this$1.locale].apply(this$1, [choice, choicesLength])\n    } else {\n      return defaultImpl(choice, choicesLength)\n    }\n  };\n\n\n  this._exist = function (message, key) {\n    if (!message || !key) { return false }\n    if (!isNull(this$1._path.getPathValue(message, key))) { return true }\n    // fallback for flat key\n    if (message[key]) { return true }\n    return false\n  };\n\n  if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n    Object.keys(messages).forEach(function (locale) {\n      this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n    });\n  }\n\n  this._initVM({\n    locale: locale,\n    fallbackLocale: fallbackLocale,\n    messages: messages,\n    dateTimeFormats: dateTimeFormats,\n    numberFormats: numberFormats\n  });\n};\n\nvar prototypeAccessors = { vm: { configurable: true },messages: { configurable: true },dateTimeFormats: { configurable: true },numberFormats: { configurable: true },availableLocales: { configurable: true },locale: { configurable: true },fallbackLocale: { configurable: true },formatFallbackMessages: { configurable: true },missing: { configurable: true },formatter: { configurable: true },silentTranslationWarn: { configurable: true },silentFallbackWarn: { configurable: true },preserveDirectiveContent: { configurable: true },warnHtmlInMessage: { configurable: true },postTranslation: { configurable: true } };\n\nVueI18n.prototype._checkLocaleMessage = function _checkLocaleMessage (locale, level, message) {\n  var paths = [];\n\n  var fn = function (level, locale, message, paths) {\n    if (isPlainObject(message)) {\n      Object.keys(message).forEach(function (key) {\n        var val = message[key];\n        if (isPlainObject(val)) {\n          paths.push(key);\n          paths.push('.');\n          fn(level, locale, val, paths);\n          paths.pop();\n          paths.pop();\n        } else {\n          paths.push(key);\n          fn(level, locale, val, paths);\n          paths.pop();\n        }\n      });\n    } else if (Array.isArray(message)) {\n      message.forEach(function (item, index) {\n        if (isPlainObject(item)) {\n          paths.push((\"[\" + index + \"]\"));\n          paths.push('.');\n          fn(level, locale, item, paths);\n          paths.pop();\n          paths.pop();\n        } else {\n          paths.push((\"[\" + index + \"]\"));\n          fn(level, locale, item, paths);\n          paths.pop();\n        }\n      });\n    } else if (isString(message)) {\n      var ret = htmlTagMatcher.test(message);\n      if (ret) {\n        var msg = \"Detected HTML in message '\" + message + \"' of keypath '\" + (paths.join('')) + \"' at '\" + locale + \"'. Consider component interpolation with '<i18n>' to avoid XSS. See https://bit.ly/2ZqJzkp\";\n        if (level === 'warn') {\n          warn(msg);\n        } else if (level === 'error') {\n          error(msg);\n        }\n      }\n    }\n  };\n\n  fn(level, locale, message, paths);\n};\n\nVueI18n.prototype._initVM = function _initVM (data) {\n  var silent = Vue.config.silent;\n  Vue.config.silent = true;\n  this._vm = new Vue({ data: data });\n  Vue.config.silent = silent;\n};\n\nVueI18n.prototype.destroyVM = function destroyVM () {\n  this._vm.$destroy();\n};\n\nVueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {\n  this._dataListeners.push(vm);\n};\n\nVueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {\n  remove(this._dataListeners, vm);\n};\n\nVueI18n.prototype.watchI18nData = function watchI18nData () {\n  var self = this;\n  return this._vm.$watch('$data', function () {\n    var i = self._dataListeners.length;\n    while (i--) {\n      Vue.nextTick(function () {\n        self._dataListeners[i] && self._dataListeners[i].$forceUpdate();\n      });\n    }\n  }, { deep: true })\n};\n\nVueI18n.prototype.watchLocale = function watchLocale () {\n  /* istanbul ignore if */\n  if (!this._sync || !this._root) { return null }\n  var target = this._vm;\n  return this._root.$i18n.vm.$watch('locale', function (val) {\n    target.$set(target, 'locale', val);\n    target.$forceUpdate();\n  }, { immediate: true })\n};\n\nVueI18n.prototype.onComponentInstanceCreated = function onComponentInstanceCreated (newI18n) {\n  if (this._componentInstanceCreatedListener) {\n    this._componentInstanceCreatedListener(newI18n, this);\n  }\n};\n\nprototypeAccessors.vm.get = function () { return this._vm };\n\nprototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };\nprototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };\nprototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };\nprototypeAccessors.availableLocales.get = function () { return Object.keys(this.messages).sort() };\n\nprototypeAccessors.locale.get = function () { return this._vm.locale };\nprototypeAccessors.locale.set = function (locale) {\n  this._vm.$set(this._vm, 'locale', locale);\n};\n\nprototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };\nprototypeAccessors.fallbackLocale.set = function (locale) {\n  this._localeChainCache = {};\n  this._vm.$set(this._vm, 'fallbackLocale', locale);\n};\n\nprototypeAccessors.formatFallbackMessages.get = function () { return this._formatFallbackMessages };\nprototypeAccessors.formatFallbackMessages.set = function (fallback) { this._formatFallbackMessages = fallback; };\n\nprototypeAccessors.missing.get = function () { return this._missing };\nprototypeAccessors.missing.set = function (handler) { this._missing = handler; };\n\nprototypeAccessors.formatter.get = function () { return this._formatter };\nprototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };\n\nprototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };\nprototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };\n\nprototypeAccessors.silentFallbackWarn.get = function () { return this._silentFallbackWarn };\nprototypeAccessors.silentFallbackWarn.set = function (silent) { this._silentFallbackWarn = silent; };\n\nprototypeAccessors.preserveDirectiveContent.get = function () { return this._preserveDirectiveContent };\nprototypeAccessors.preserveDirectiveContent.set = function (preserve) { this._preserveDirectiveContent = preserve; };\n\nprototypeAccessors.warnHtmlInMessage.get = function () { return this._warnHtmlInMessage };\nprototypeAccessors.warnHtmlInMessage.set = function (level) {\n    var this$1 = this;\n\n  var orgLevel = this._warnHtmlInMessage;\n  this._warnHtmlInMessage = level;\n  if (orgLevel !== level && (level === 'warn' || level === 'error')) {\n    var messages = this._getMessages();\n    Object.keys(messages).forEach(function (locale) {\n      this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n    });\n  }\n};\n\nprototypeAccessors.postTranslation.get = function () { return this._postTranslation };\nprototypeAccessors.postTranslation.set = function (handler) { this._postTranslation = handler; };\n\nVueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };\nVueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };\nVueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };\n\nVueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm, values, interpolateMode) {\n  if (!isNull(result)) { return result }\n  if (this._missing) {\n    var missingRet = this._missing.apply(null, [locale, key, vm, values]);\n    if (isString(missingRet)) {\n      return missingRet\n    }\n  } else {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n      warn(\n        \"Cannot translate the value of keypath '\" + key + \"'. \" +\n        'Use the value of keypath as default.'\n      );\n    }\n  }\n\n  if (this._formatFallbackMessages) {\n    var parsedArgs = parseArgs.apply(void 0, values);\n    return this._render(key, interpolateMode, parsedArgs.params, key)\n  } else {\n    return key\n  }\n};\n\nVueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {\n  return !val && !isNull(this._root) && this._fallbackRoot\n};\n\nVueI18n.prototype._isSilentFallbackWarn = function _isSilentFallbackWarn (key) {\n  return this._silentFallbackWarn instanceof RegExp\n    ? this._silentFallbackWarn.test(key)\n    : this._silentFallbackWarn\n};\n\nVueI18n.prototype._isSilentFallback = function _isSilentFallback (locale, key) {\n  return this._isSilentFallbackWarn(key) && (this._isFallbackRoot() || locale !== this.fallbackLocale)\n};\n\nVueI18n.prototype._isSilentTranslationWarn = function _isSilentTranslationWarn (key) {\n  return this._silentTranslationWarn instanceof RegExp\n    ? this._silentTranslationWarn.test(key)\n    : this._silentTranslationWarn\n};\n\nVueI18n.prototype._interpolate = function _interpolate (\n  locale,\n  message,\n  key,\n  host,\n  interpolateMode,\n  values,\n  visitedLinkStack\n) {\n  if (!message) { return null }\n\n  var pathRet = this._path.getPathValue(message, key);\n  if (Array.isArray(pathRet) || isPlainObject(pathRet)) { return pathRet }\n\n  var ret;\n  if (isNull(pathRet)) {\n    /* istanbul ignore else */\n    if (isPlainObject(message)) {\n      ret = message[key];\n      if (!isString(ret)) {\n        if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n          warn((\"Value of key '\" + key + \"' is not a string!\"));\n        }\n        return null\n      }\n    } else {\n      return null\n    }\n  } else {\n    /* istanbul ignore else */\n    if (isString(pathRet)) {\n      ret = pathRet;\n    } else {\n      if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n        warn((\"Value of key '\" + key + \"' is not a string!\"));\n      }\n      return null\n    }\n  }\n\n  // Check for the existence of links within the translated string\n  if (ret.indexOf('@:') >= 0 || ret.indexOf('@.') >= 0) {\n    ret = this._link(locale, message, ret, host, 'raw', values, visitedLinkStack);\n  }\n\n  return this._render(ret, interpolateMode, values, key)\n};\n\nVueI18n.prototype._link = function _link (\n  locale,\n  message,\n  str,\n  host,\n  interpolateMode,\n  values,\n  visitedLinkStack\n) {\n  var ret = str;\n\n  // Match all the links within the local\n  // We are going to replace each of\n  // them with its translation\n  var matches = ret.match(linkKeyMatcher);\n  for (var idx in matches) {\n    // ie compatible: filter custom array\n    // prototype method\n    if (!matches.hasOwnProperty(idx)) {\n      continue\n    }\n    var link = matches[idx];\n    var linkKeyPrefixMatches = link.match(linkKeyPrefixMatcher);\n    var linkPrefix = linkKeyPrefixMatches[0];\n      var formatterName = linkKeyPrefixMatches[1];\n\n    // Remove the leading @:, @.case: and the brackets\n    var linkPlaceholder = link.replace(linkPrefix, '').replace(bracketsMatcher, '');\n\n    if (includes(visitedLinkStack, linkPlaceholder)) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn((\"Circular reference found. \\\"\" + link + \"\\\" is already visited in the chain of \" + (visitedLinkStack.reverse().join(' <- '))));\n      }\n      return ret\n    }\n    visitedLinkStack.push(linkPlaceholder);\n\n    // Translate the link\n    var translated = this._interpolate(\n      locale, message, linkPlaceholder, host,\n      interpolateMode === 'raw' ? 'string' : interpolateMode,\n      interpolateMode === 'raw' ? undefined : values,\n      visitedLinkStack\n    );\n\n    if (this._isFallbackRoot(translated)) {\n      if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(linkPlaceholder)) {\n        warn((\"Fall back to translate the link placeholder '\" + linkPlaceholder + \"' with root locale.\"));\n      }\n      /* istanbul ignore if */\n      if (!this._root) { throw Error('unexpected error') }\n      var root = this._root.$i18n;\n      translated = root._translate(\n        root._getMessages(), root.locale, root.fallbackLocale,\n        linkPlaceholder, host, interpolateMode, values\n      );\n    }\n    translated = this._warnDefault(\n      locale, linkPlaceholder, translated, host,\n      Array.isArray(values) ? values : [values],\n      interpolateMode\n    );\n\n    if (this._modifiers.hasOwnProperty(formatterName)) {\n      translated = this._modifiers[formatterName](translated);\n    } else if (defaultModifiers.hasOwnProperty(formatterName)) {\n      translated = defaultModifiers[formatterName](translated);\n    }\n\n    visitedLinkStack.pop();\n\n    // Replace the link with the translated\n    ret = !translated ? ret : ret.replace(link, translated);\n  }\n\n  return ret\n};\n\nVueI18n.prototype._render = function _render (message, interpolateMode, values, path) {\n  var ret = this._formatter.interpolate(message, values, path);\n\n  // If the custom formatter refuses to work - apply the default one\n  if (!ret) {\n    ret = defaultFormatter.interpolate(message, values, path);\n  }\n\n  // if interpolateMode is **not** 'string' ('row'),\n  // return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter\n  return interpolateMode === 'string' && !isString(ret) ? ret.join('') : ret\n};\n\nVueI18n.prototype._appendItemToChain = function _appendItemToChain (chain, item, blocks) {\n  var follow = false;\n  if (!includes(chain, item)) {\n    follow = true;\n    if (item) {\n      follow = item[item.length - 1] !== '!';\n      item = item.replace(/!/g, '');\n      chain.push(item);\n      if (blocks && blocks[item]) {\n        follow = blocks[item];\n      }\n    }\n  }\n  return follow\n};\n\nVueI18n.prototype._appendLocaleToChain = function _appendLocaleToChain (chain, locale, blocks) {\n  var follow;\n  var tokens = locale.split('-');\n  do {\n    var item = tokens.join('-');\n    follow = this._appendItemToChain(chain, item, blocks);\n    tokens.splice(-1, 1);\n  } while (tokens.length && (follow === true))\n  return follow\n};\n\nVueI18n.prototype._appendBlockToChain = function _appendBlockToChain (chain, block, blocks) {\n  var follow = true;\n  for (var i = 0; (i < block.length) && (isBoolean(follow)); i++) {\n    var locale = block[i];\n    if (isString(locale)) {\n      follow = this._appendLocaleToChain(chain, locale, blocks);\n    }\n  }\n  return follow\n};\n\nVueI18n.prototype._getLocaleChain = function _getLocaleChain (start, fallbackLocale) {\n  if (start === '') { return [] }\n\n  if (!this._localeChainCache) {\n    this._localeChainCache = {};\n  }\n\n  var chain = this._localeChainCache[start];\n  if (!chain) {\n    if (!fallbackLocale) {\n      fallbackLocale = this.fallbackLocale;\n    }\n    chain = [];\n\n    // first block defined by start\n    var block = [start];\n\n    // while any intervening block found\n    while (isArray(block)) {\n      block = this._appendBlockToChain(\n        chain,\n        block,\n        fallbackLocale\n      );\n    }\n\n    // last block defined by default\n    var defaults;\n    if (isArray(fallbackLocale)) {\n      defaults = fallbackLocale;\n    } else if (isObject(fallbackLocale)) {\n      /* $FlowFixMe */\n      if (fallbackLocale['default']) {\n        defaults = fallbackLocale['default'];\n      } else {\n        defaults = null;\n      }\n    } else {\n      defaults = fallbackLocale;\n    }\n\n    // convert defaults to array\n    if (isString(defaults)) {\n      block = [defaults];\n    } else {\n      block = defaults;\n    }\n    if (block) {\n      this._appendBlockToChain(\n        chain,\n        block,\n        null\n      );\n    }\n    this._localeChainCache[start] = chain;\n  }\n  return chain\n};\n\nVueI18n.prototype._translate = function _translate (\n  messages,\n  locale,\n  fallback,\n  key,\n  host,\n  interpolateMode,\n  args\n) {\n  var chain = this._getLocaleChain(locale, fallback);\n  var res;\n  for (var i = 0; i < chain.length; i++) {\n    var step = chain[i];\n    res =\n      this._interpolate(step, messages[step], key, host, interpolateMode, args, [key]);\n    if (!isNull(res)) {\n      if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n        warn((\"Fall back to translate the keypath '\" + key + \"' with '\" + step + \"' locale.\"));\n      }\n      return res\n    }\n  }\n  return null\n};\n\nVueI18n.prototype._t = function _t (key, _locale, messages, host) {\n    var ref;\n\n    var values = [], len = arguments.length - 4;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];\n  if (!key) { return '' }\n\n  var parsedArgs = parseArgs.apply(void 0, values);\n  var locale = parsedArgs.locale || _locale;\n\n  var ret = this._translate(\n    messages, locale, this.fallbackLocale, key,\n    host, 'string', parsedArgs.params\n  );\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n      warn((\"Fall back to translate the keypath '\" + key + \"' with root locale.\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return (ref = this._root).$t.apply(ref, [ key ].concat( values ))\n  } else {\n    ret = this._warnDefault(locale, key, ret, host, values, 'string');\n    if (this._postTranslation && ret !== null && ret !== undefined) {\n      ret = this._postTranslation(ret, key);\n    }\n    return ret\n  }\n};\n\nVueI18n.prototype.t = function t (key) {\n    var ref;\n\n    var values = [], len = arguments.length - 1;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n  return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))\n};\n\nVueI18n.prototype._i = function _i (key, locale, messages, host, values) {\n  var ret =\n    this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n      warn((\"Fall back to interpolate the keypath '\" + key + \"' with root locale.\"));\n    }\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n.i(key, locale, values)\n  } else {\n    return this._warnDefault(locale, key, ret, host, [values], 'raw')\n  }\n};\n\nVueI18n.prototype.i = function i (key, locale, values) {\n  /* istanbul ignore if */\n  if (!key) { return '' }\n\n  if (!isString(locale)) {\n    locale = this.locale;\n  }\n\n  return this._i(key, locale, this._getMessages(), null, values)\n};\n\nVueI18n.prototype._tc = function _tc (\n  key,\n  _locale,\n  messages,\n  host,\n  choice\n) {\n    var ref;\n\n    var values = [], len = arguments.length - 5;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];\n  if (!key) { return '' }\n  if (choice === undefined) {\n    choice = 1;\n  }\n\n  var predefined = { 'count': choice, 'n': choice };\n  var parsedArgs = parseArgs.apply(void 0, values);\n  parsedArgs.params = Object.assign(predefined, parsedArgs.params);\n  values = parsedArgs.locale === null ? [parsedArgs.params] : [parsedArgs.locale, parsedArgs.params];\n  return this.fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)\n};\n\nVueI18n.prototype.fetchChoice = function fetchChoice (message, choice) {\n  /* istanbul ignore if */\n  if (!message && !isString(message)) { return null }\n  var choices = message.split('|');\n\n  choice = this.getChoiceIndex(choice, choices.length);\n  if (!choices[choice]) { return message }\n  return choices[choice].trim()\n};\n\nVueI18n.prototype.tc = function tc (key, choice) {\n    var ref;\n\n    var values = [], len = arguments.length - 2;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n  return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))\n};\n\nVueI18n.prototype._te = function _te (key, locale, messages) {\n    var args = [], len = arguments.length - 3;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];\n\n  var _locale = parseArgs.apply(void 0, args).locale || locale;\n  return this._exist(messages[_locale], key)\n};\n\nVueI18n.prototype.te = function te (key, locale) {\n  return this._te(key, this.locale, this._getMessages(), locale)\n};\n\nVueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {\n  return looseClone(this._vm.messages[locale] || {})\n};\n\nVueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {\n  if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n    this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n  }\n  this._vm.$set(this._vm.messages, locale, message);\n};\n\nVueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {\n  if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n    this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n  }\n  this._vm.$set(this._vm.messages, locale, merge({}, this._vm.messages[locale] || {}, message));\n};\n\nVueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {\n  return looseClone(this._vm.dateTimeFormats[locale] || {})\n};\n\nVueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {\n  this._vm.$set(this._vm.dateTimeFormats, locale, format);\n  this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {\n  this._vm.$set(this._vm.dateTimeFormats, locale, merge(this._vm.dateTimeFormats[locale] || {}, format));\n  this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype._clearDateTimeFormat = function _clearDateTimeFormat (locale, format) {\n  for (var key in format) {\n    var id = locale + \"__\" + key;\n\n    if (!this._dateTimeFormatters.hasOwnProperty(id)) {\n      continue\n    }\n\n    delete this._dateTimeFormatters[id];\n  }\n};\n\nVueI18n.prototype._localizeDateTime = function _localizeDateTime (\n  value,\n  locale,\n  fallback,\n  dateTimeFormats,\n  key\n) {\n  var _locale = locale;\n  var formats = dateTimeFormats[_locale];\n\n  var chain = this._getLocaleChain(locale, fallback);\n  for (var i = 0; i < chain.length; i++) {\n    var current = _locale;\n    var step = chain[i];\n    formats = dateTimeFormats[step];\n    _locale = step;\n    // fallback locale\n    if (isNull(formats) || isNull(formats[key])) {\n      if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n        warn((\"Fall back to '\" + step + \"' datetime formats from '\" + current + \"' datetime formats.\"));\n      }\n    } else {\n      break\n    }\n  }\n\n  if (isNull(formats) || isNull(formats[key])) {\n    return null\n  } else {\n    var format = formats[key];\n    var id = _locale + \"__\" + key;\n    var formatter = this._dateTimeFormatters[id];\n    if (!formatter) {\n      formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);\n    }\n    return formatter.format(value)\n  }\n};\n\nVueI18n.prototype._d = function _d (value, locale, key) {\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && !VueI18n.availabilities.dateTimeFormat) {\n    warn('Cannot format a Date value due to not supported Intl.DateTimeFormat.');\n    return ''\n  }\n\n  if (!key) {\n    return new Intl.DateTimeFormat(locale).format(value)\n  }\n\n  var ret =\n    this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n      warn((\"Fall back to datetime localization of root: key '\" + key + \"'.\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n.d(value, key, locale)\n  } else {\n    return ret || ''\n  }\n};\n\nVueI18n.prototype.d = function d (value) {\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n  var locale = this.locale;\n  var key = null;\n\n  if (args.length === 1) {\n    if (isString(args[0])) {\n      key = args[0];\n    } else if (isObject(args[0])) {\n      if (args[0].locale) {\n        locale = args[0].locale;\n      }\n      if (args[0].key) {\n        key = args[0].key;\n      }\n    }\n  } else if (args.length === 2) {\n    if (isString(args[0])) {\n      key = args[0];\n    }\n    if (isString(args[1])) {\n      locale = args[1];\n    }\n  }\n\n  return this._d(value, locale, key)\n};\n\nVueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {\n  return looseClone(this._vm.numberFormats[locale] || {})\n};\n\nVueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {\n  this._vm.$set(this._vm.numberFormats, locale, format);\n  this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {\n  this._vm.$set(this._vm.numberFormats, locale, merge(this._vm.numberFormats[locale] || {}, format));\n  this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype._clearNumberFormat = function _clearNumberFormat (locale, format) {\n  for (var key in format) {\n    var id = locale + \"__\" + key;\n\n    if (!this._numberFormatters.hasOwnProperty(id)) {\n      continue\n    }\n\n    delete this._numberFormatters[id];\n  }\n};\n\nVueI18n.prototype._getNumberFormatter = function _getNumberFormatter (\n  value,\n  locale,\n  fallback,\n  numberFormats,\n  key,\n  options\n) {\n  var _locale = locale;\n  var formats = numberFormats[_locale];\n\n  var chain = this._getLocaleChain(locale, fallback);\n  for (var i = 0; i < chain.length; i++) {\n    var current = _locale;\n    var step = chain[i];\n    formats = numberFormats[step];\n    _locale = step;\n    // fallback locale\n    if (isNull(formats) || isNull(formats[key])) {\n      if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n        warn((\"Fall back to '\" + step + \"' number formats from '\" + current + \"' number formats.\"));\n      }\n    } else {\n      break\n    }\n  }\n\n  if (isNull(formats) || isNull(formats[key])) {\n    return null\n  } else {\n    var format = formats[key];\n\n    var formatter;\n    if (options) {\n      // If options specified - create one time number formatter\n      formatter = new Intl.NumberFormat(_locale, Object.assign({}, format, options));\n    } else {\n      var id = _locale + \"__\" + key;\n      formatter = this._numberFormatters[id];\n      if (!formatter) {\n        formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);\n      }\n    }\n    return formatter\n  }\n};\n\nVueI18n.prototype._n = function _n (value, locale, key, options) {\n  /* istanbul ignore if */\n  if (!VueI18n.availabilities.numberFormat) {\n    if (process.env.NODE_ENV !== 'production') {\n      warn('Cannot format a Number value due to not supported Intl.NumberFormat.');\n    }\n    return ''\n  }\n\n  if (!key) {\n    var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n    return nf.format(value)\n  }\n\n  var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n  var ret = formatter && formatter.format(value);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n      warn((\"Fall back to number localization of root: key '\" + key + \"'.\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n.n(value, Object.assign({}, { key: key, locale: locale }, options))\n  } else {\n    return ret || ''\n  }\n};\n\nVueI18n.prototype.n = function n (value) {\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n  var locale = this.locale;\n  var key = null;\n  var options = null;\n\n  if (args.length === 1) {\n    if (isString(args[0])) {\n      key = args[0];\n    } else if (isObject(args[0])) {\n      if (args[0].locale) {\n        locale = args[0].locale;\n      }\n      if (args[0].key) {\n        key = args[0].key;\n      }\n\n      // Filter out number format options only\n      options = Object.keys(args[0]).reduce(function (acc, key) {\n          var obj;\n\n        if (includes(numberFormatKeys, key)) {\n          return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))\n        }\n        return acc\n      }, null);\n    }\n  } else if (args.length === 2) {\n    if (isString(args[0])) {\n      key = args[0];\n    }\n    if (isString(args[1])) {\n      locale = args[1];\n    }\n  }\n\n  return this._n(value, locale, key, options)\n};\n\nVueI18n.prototype._ntp = function _ntp (value, locale, key, options) {\n  /* istanbul ignore if */\n  if (!VueI18n.availabilities.numberFormat) {\n    if (process.env.NODE_ENV !== 'production') {\n      warn('Cannot format to parts a Number value due to not supported Intl.NumberFormat.');\n    }\n    return []\n  }\n\n  if (!key) {\n    var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n    return nf.formatToParts(value)\n  }\n\n  var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n  var ret = formatter && formatter.formatToParts(value);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n      warn((\"Fall back to format number to parts of root: key '\" + key + \"' .\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n._ntp(value, locale, key, options)\n  } else {\n    return ret || []\n  }\n};\n\nObject.defineProperties( VueI18n.prototype, prototypeAccessors );\n\nvar availabilities;\n// $FlowFixMe\nObject.defineProperty(VueI18n, 'availabilities', {\n  get: function get () {\n    if (!availabilities) {\n      var intlDefined = typeof Intl !== 'undefined';\n      availabilities = {\n        dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n        numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n      };\n    }\n\n    return availabilities\n  }\n});\n\nVueI18n.install = install;\nVueI18n.version = '8.20.0';\n\nexport default VueI18n;\n","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", {\n    directives: [\n      {\n        name: \"loading\",\n        rawName: \"v-loading\",\n        value: _vm.loading,\n        expression: \"loading\"\n      }\n    ],\n    staticClass: \"ace-editor-main\"\n  })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", {\n    directives: [\n      {\n        name: \"loading\",\n        rawName: \"v-loading\",\n        value: _vm.loading,\n        expression: \"loading\"\n      }\n    ],\n    staticClass: \"monaco-editor-main\"\n  })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { attrs: { id: \"main-container\" } },\n    [\n      !_vm.shared.isMobile\n        ? _c(\n            \"div\",\n            {\n              style: { width: _vm.leftContainerSize + \"%\" },\n              attrs: { id: \"code-container\" }\n            },\n            [\n              _c(\"div\", { attrs: { id: \"control-panel\" } }, [\n                _c(\n                  \"div\",\n                  { attrs: { id: \"code-info\" } },\n                  [\n                    _vm.shared.editorStatus.message\n                      ? [\n                          _c(\"span\", { staticClass: \"code-info-time\" }, [\n                            _vm._v(_vm._s(_vm.currentTime))\n                          ]),\n                          _vm._v(\" \"),\n                          _c(\n                            \"span\",\n                            {\n                              class:\n                                \"code-info-type-\" + _vm.shared.editorStatus.type\n                            },\n                            [_vm._v(_vm._s(_vm.shared.editorStatus.message))]\n                          )\n                        ]\n                      : _vm._e()\n                  ],\n                  2\n                ),\n                _vm._v(\" \"),\n                _c(\"div\", { staticClass: \"control-btn-panel\" }, [\n                  _c(\n                    \"a\",\n                    {\n                      staticClass: \"btn btn-default btn-sm\",\n                      attrs: { href: \"javascript:;\" },\n                      on: { click: _vm.disposeAndRun }\n                    },\n                    [_vm._v(_vm._s(_vm.$t(\"editor.run\")))]\n                  )\n                ])\n              ]),\n              _vm._v(\" \"),\n              _vm.shared.typeCheck\n                ? _c(\"CodeMonaco\", {\n                    attrs: { id: \"code-panel\", initialCode: _vm.initialCode }\n                  })\n                : _c(\"CodeAce\", {\n                    attrs: { id: \"code-panel\", initialCode: _vm.initialCode }\n                  })\n            ],\n            1\n          )\n        : _vm._e(),\n      _vm._v(\" \"),\n      !_vm.shared.isMobile\n        ? _c(\"div\", {\n            staticClass: \"handler\",\n            style: { left: _vm.leftContainerSize + \"%\" },\n            attrs: { id: \"h-handler\" },\n            on: { mousedown: _vm.onSplitterDragStart }\n          })\n        : _vm._e(),\n      _vm._v(\" \"),\n      _c(\"Preview\", {\n        ref: \"preview\",\n        staticClass: \"right-container\",\n        style: {\n          width: 100 - _vm.leftContainerSize + \"%\",\n          left: _vm.leftContainerSize + \"%\"\n        },\n        attrs: { inEditor: true }\n      })\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { class: [_vm.inEditor && !_vm.shared.isMobile ? \"\" : \"full\"] },\n    [\n      _c(\"div\", {\n        directives: [\n          {\n            name: \"loading\",\n            rawName: \"v-loading\",\n            value: _vm.loading,\n            expression: \"loading\"\n          }\n        ],\n        staticClass: \"right-panel\",\n        style: { background: _vm.backgroundColor },\n        attrs: { id: \"chart-panel\" }\n      }),\n      _vm._v(\" \"),\n      _c(\n        \"div\",\n        { attrs: { id: \"tool-panel\" } },\n        [\n          _c(\n            \"div\",\n            { staticClass: \"left-panel\" },\n            [\n              _c(\"el-switch\", {\n                staticClass: \"dark-mode\",\n                attrs: {\n                  \"active-color\": \"#181432\",\n                  \"active-text\": _vm.$t(\"editor.darkMode\"),\n                  \"inactive-text\": \"\"\n                },\n                model: {\n                  value: _vm.shared.darkMode,\n                  callback: function($$v) {\n                    _vm.$set(_vm.shared, \"darkMode\", $$v)\n                  },\n                  expression: \"shared.darkMode\"\n                }\n              }),\n              _vm._v(\" \"),\n              _c(\"el-switch\", {\n                staticClass: \"enable-decal\",\n                attrs: {\n                  \"active-text\": _vm.$t(\"editor.enableDecal\"),\n                  \"inactive-text\": \"\"\n                },\n                model: {\n                  value: _vm.shared.enableDecal,\n                  callback: function($$v) {\n                    _vm.$set(_vm.shared, \"enableDecal\", $$v)\n                  },\n                  expression: \"shared.enableDecal\"\n                }\n              }),\n              _vm._v(\" \"),\n              _c(\n                \"el-popover\",\n                {\n                  staticStyle: { \"margin-top\": \"3px\" },\n                  attrs: { placement: \"bottom\", width: \"450\", trigger: \"click\" }\n                },\n                [\n                  _c(\n                    \"div\",\n                    { staticClass: \"render-config-container\" },\n                    [\n                      _c(\n                        \"el-row\",\n                        { attrs: { gutter: 2, type: \"flex\", align: \"middle\" } },\n                        [\n                          _c(\n                            \"el-col\",\n                            { attrs: { span: 12 } },\n                            [\n                              _c(\"label\", { staticClass: \"tool-label\" }, [\n                                _vm._v(_vm._s(_vm.$t(\"editor.renderer\")))\n                              ]),\n                              _vm._v(\" \"),\n                              _c(\n                                \"el-radio-group\",\n                                {\n                                  staticStyle: {\n                                    \"text-transform\": \"uppercase\"\n                                  },\n                                  attrs: { size: \"mini\" },\n                                  model: {\n                                    value: _vm.shared.renderer,\n                                    callback: function($$v) {\n                                      _vm.$set(_vm.shared, \"renderer\", $$v)\n                                    },\n                                    expression: \"shared.renderer\"\n                                  }\n                                },\n                                [\n                                  _c(\"el-radio-button\", {\n                                    attrs: { label: \"svg\" }\n                                  }),\n                                  _vm._v(\" \"),\n                                  _c(\"el-radio-button\", {\n                                    attrs: { label: \"canvas\" }\n                                  })\n                                ],\n                                1\n                              )\n                            ],\n                            1\n                          ),\n                          _vm._v(\" \"),\n                          _c(\n                            \"el-col\",\n                            { attrs: { span: 12 } },\n                            [\n                              _vm.shared.renderer === \"canvas\"\n                                ? _c(\"el-switch\", {\n                                    attrs: {\n                                      \"active-text\": _vm.$t(\n                                        \"editor.useDirtyRect\"\n                                      ),\n                                      \"inactive-text\": \"\"\n                                    },\n                                    model: {\n                                      value: _vm.shared.useDirtyRect,\n                                      callback: function($$v) {\n                                        _vm.$set(\n                                          _vm.shared,\n                                          \"useDirtyRect\",\n                                          $$v\n                                        )\n                                      },\n                                      expression: \"shared.useDirtyRect\"\n                                    }\n                                  })\n                                : _vm._e()\n                            ],\n                            1\n                          )\n                        ],\n                        1\n                      )\n                    ],\n                    1\n                  ),\n                  _vm._v(\" \"),\n                  _c(\n                    \"span\",\n                    {\n                      staticClass: \"render-config-trigger\",\n                      attrs: { slot: \"reference\" },\n                      slot: \"reference\"\n                    },\n                    [\n                      _c(\"i\", { staticClass: \"el-icon-setting el-icon--left\" }),\n                      _vm._v(_vm._s(_vm.$t(\"editor.renderCfgTitle\")))\n                    ]\n                  )\n                ]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _vm.inEditor\n            ? [\n                !_vm.shared.isMobile\n                  ? _c(\n                      \"button\",\n                      {\n                        staticClass: \"download btn btn-sm\",\n                        on: { click: _vm.downloadExample }\n                      },\n                      [_vm._v(_vm._s(_vm.$t(\"editor.download\")))]\n                    )\n                  : _vm._e(),\n                _vm._v(\" \"),\n                _c(\n                  \"a\",\n                  {\n                    staticClass: \"screenshot\",\n                    attrs: { target: \"_blank\" },\n                    on: { click: _vm.screenshot }\n                  },\n                  [_c(\"i\", { staticClass: \"el-icon-camera-solid\" })]\n                )\n              ]\n            : _c(\n                \"a\",\n                {\n                  staticClass: \"edit btn btn-sm\",\n                  attrs: { href: _vm.editLink, target: \"_blank\" }\n                },\n                [_vm._v(_vm._s(_vm.$t(\"editor.edit\")))]\n              )\n        ],\n        2\n      )\n    ]\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"preview\")\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { staticClass: \"example-list-item\" }, [\n    _c(\n      \"a\",\n      {\n        staticClass: \"example-link\",\n        attrs: { target: \"_blank\", href: _vm.exampleLink }\n      },\n      [\n        _c(\"img\", {\n          staticClass: \"chart-area\",\n          attrs: {\n            src: require(\"../asset/placeholder.jpg\"),\n            \"data-src\": _vm.screenshotURL\n          }\n        }),\n        _vm._v(\" \"),\n        _c(\"h4\", { staticClass: \"example-title\" }, [_vm._v(_vm._s(_vm.title))]),\n        _vm._v(\" \"),\n        _vm.showSubtitle\n          ? _c(\"h5\", { staticClass: \"example-subtitle\" }, [\n              _vm._v(_vm._s(_vm.subtitle))\n            ])\n          : _vm._e()\n      ]\n    )\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { attrs: { id: \"example-explore\" } }, [\n    _c(\"div\", { attrs: { id: \"left-container\" } }, [\n      _c(\n        \"div\",\n        { attrs: { id: \"left-toolbar\" } },\n        [\n          _c(\"el-switch\", {\n            attrs: {\n              \"active-color\": \"#181432\",\n              \"active-text\": _vm.$t(\"editor.darkMode\"),\n              \"inactive-text\": \"\"\n            },\n            model: {\n              value: _vm.shared.darkMode,\n              callback: function($$v) {\n                _vm.$set(_vm.shared, \"darkMode\", $$v)\n              },\n              expression: \"shared.darkMode\"\n            }\n          })\n        ],\n        1\n      ),\n      _vm._v(\" \"),\n      _c(\n        \"div\",\n        { attrs: { id: \"left-chart-nav\" } },\n        [\n          _c(\n            \"scrollactive\",\n            {\n              attrs: {\n                \"active-class\": \"active\",\n                offset: 80,\n                duration: 500,\n                \"scroll-container-selector\": \"#example-explore\",\n                \"bezier-easing-value\": \".5,0,.35,1\"\n              },\n              on: { itemchanged: _vm.onActiveNavChanged }\n            },\n            [\n              _c(\n                \"ul\",\n                _vm._l(_vm.EXAMPLE_CATEGORIES, function(category) {\n                  return _c(\"li\", { key: category }, [\n                    _c(\n                      \"a\",\n                      {\n                        staticClass: \"left-chart-nav-link scrollactive-item\",\n                        attrs: {\n                          id: \"left-chart-nav-\" + category,\n                          href: \"#chart-type-\" + category\n                        }\n                      },\n                      [\n                        _c(\"span\", { staticClass: \"chart-icon\" }),\n                        _vm._v(\" \"),\n                        _c(\"span\", { staticClass: \"chart-name\" }, [\n                          _vm._v(_vm._s(_vm.$t(\"chartTypes.\" + category)))\n                        ])\n                      ]\n                    )\n                  ])\n                }),\n                0\n              )\n            ]\n          )\n        ],\n        1\n      )\n    ]),\n    _vm._v(\" \"),\n    _c(\"div\", { attrs: { id: \"explore-container\" } }, [\n      _c(\n        \"div\",\n        { staticClass: \"example-list-panel\" },\n        _vm._l(_vm.exampleList, function(categoryObj) {\n          return _c(\"div\", { key: categoryObj.category }, [\n            _c(\n              \"h3\",\n              {\n                staticClass: \"chart-type-head\",\n                attrs: { id: \"chart-type-\" + categoryObj.category }\n              },\n              [\n                _vm._v(\n                  \"\\n                    \" +\n                    _vm._s(_vm.$t(\"chartTypes.\" + categoryObj.category)) +\n                    \"\\n                    \"\n                ),\n                _c(\"span\", [_vm._v(_vm._s(categoryObj.category))])\n              ]\n            ),\n            _vm._v(\" \"),\n            _c(\n              \"div\",\n              {\n                staticClass: \"row\",\n                attrs: { id: \"chart-row-\" + categoryObj.category }\n              },\n              _vm._l(categoryObj.examples, function(exampleItem) {\n                return _c(\n                  \"div\",\n                  {\n                    key: exampleItem.id,\n                    staticClass: \"col-xl-2 col-lg-3 col-md-4 col-sm-6\"\n                  },\n                  [_c(\"ExampleCard\", { attrs: { example: exampleItem } })],\n                  1\n                )\n              }),\n              0\n            )\n          ])\n        }),\n        0\n      )\n    ])\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode /* vue-cli only */\n) {\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () {\n        injectStyles.call(\n          this,\n          (options.functional ? this.parent : this).$root.$options.shadowRoot\n        )\n      }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functional component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n","!(function (t, e) {\n  'object' == typeof exports && 'object' == typeof module\n    ? (module.exports = e())\n    : 'function' == typeof define && define.amd\n    ? define([], e)\n    : 'object' == typeof exports\n    ? (exports['vue-scrollactive'] = e())\n    : (t.vueScrollactive = e());\n})('undefined' != typeof self ? self : this, function () {\n  return (function (t) {\n    var e = {};\n    function r(n) {\n      if (e[n]) return e[n].exports;\n      var o = (e[n] = { i: n, l: !1, exports: {} });\n      return t[n].call(o.exports, o, o.exports, r), (o.l = !0), o.exports;\n    }\n    return (\n      (r.m = t),\n      (r.c = e),\n      (r.d = function (t, e, n) {\n        r.o(t, e) || Object.defineProperty(t, e, { enumerable: !0, get: n });\n      }),\n      (r.r = function (t) {\n        'undefined' != typeof Symbol &&\n          Symbol.toStringTag &&\n          Object.defineProperty(t, Symbol.toStringTag, { value: 'Module' }),\n          Object.defineProperty(t, '__esModule', { value: !0 });\n      }),\n      (r.t = function (t, e) {\n        if ((1 & e && (t = r(t)), 8 & e)) return t;\n        if (4 & e && 'object' == typeof t && t && t.__esModule) return t;\n        var n = Object.create(null);\n        if (\n          (r.r(n),\n          Object.defineProperty(n, 'default', { enumerable: !0, value: t }),\n          2 & e && 'string' != typeof t)\n        )\n          for (var o in t)\n            r.d(\n              n,\n              o,\n              function (e) {\n                return t[e];\n              }.bind(null, o)\n            );\n        return n;\n      }),\n      (r.n = function (t) {\n        var e =\n          t && t.__esModule\n            ? function () {\n                return t.default;\n              }\n            : function () {\n                return t;\n              };\n        return r.d(e, 'a', e), e;\n      }),\n      (r.o = function (t, e) {\n        return Object.prototype.hasOwnProperty.call(t, e);\n      }),\n      (r.p = '/dist/'),\n      r((r.s = 1))\n    );\n  })([\n    function (t, e) {\n      var r = 'function' == typeof Float32Array;\n      function n(t, e) {\n        return 1 - 3 * e + 3 * t;\n      }\n      function o(t, e) {\n        return 3 * e - 6 * t;\n      }\n      function i(t) {\n        return 3 * t;\n      }\n      function s(t, e, r) {\n        return ((n(e, r) * t + o(e, r)) * t + i(e)) * t;\n      }\n      function l(t, e, r) {\n        return 3 * n(e, r) * t * t + 2 * o(e, r) * t + i(e);\n      }\n      function a(t) {\n        return t;\n      }\n      t.exports = function (t, e, n, o) {\n        if (!(0 <= t && t <= 1 && 0 <= n && n <= 1))\n          throw new Error('bezier x values must be in [0, 1] range');\n        if (t === e && n === o) return a;\n        for (var i = r ? new Float32Array(11) : new Array(11), c = 0; c < 11; ++c)\n          i[c] = s(0.1 * c, t, n);\n        function u(e) {\n          for (var r = 0, o = 1; 10 !== o && i[o] <= e; ++o) r += 0.1;\n          --o;\n          var a = r + 0.1 * ((e - i[o]) / (i[o + 1] - i[o])),\n            c = l(a, t, n);\n          return c >= 0.001\n            ? (function (t, e, r, n) {\n                for (var o = 0; o < 4; ++o) {\n                  var i = l(e, r, n);\n                  if (0 === i) return e;\n                  e -= (s(e, r, n) - t) / i;\n                }\n                return e;\n              })(e, a, t, n)\n            : 0 === c\n            ? a\n            : (function (t, e, r, n, o) {\n                var i,\n                  l,\n                  a = 0;\n                do {\n                  (i = s((l = e + (r - e) / 2), n, o) - t) > 0 ? (r = l) : (e = l);\n                } while (Math.abs(i) > 1e-7 && ++a < 10);\n                return l;\n              })(e, r, r + 0.1, t, n);\n        }\n        return function (t) {\n          return 0 === t ? 0 : 1 === t ? 1 : s(u(t), e, o);\n        };\n      };\n    },\n    function (t, e, r) {\n      'use strict';\n      r.r(e);\n      var n = function () {\n        var t = this.$createElement;\n        return (this._self._c || t)(\n          this.tag,\n          { ref: 'scrollactive-nav-wrapper', tag: 'component', staticClass: 'scrollactive-nav' },\n          [this._t('default')],\n          2\n        );\n      };\n      n._withStripped = !0;\n      var o = r(0),\n        i = r.n(o);\n      function s(t) {\n        return (\n          (function (t) {\n            if (Array.isArray(t)) return l(t);\n          })(t) ||\n          (function (t) {\n            if ('undefined' != typeof Symbol && Symbol.iterator in Object(t)) return Array.from(t);\n          })(t) ||\n          (function (t, e) {\n            if (!t) return;\n            if ('string' == typeof t) return l(t, e);\n            var r = Object.prototype.toString.call(t).slice(8, -1);\n            'Object' === r && t.constructor && (r = t.constructor.name);\n            if ('Map' === r || 'Set' === r) return Array.from(t);\n            if ('Arguments' === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))\n              return l(t, e);\n          })(t) ||\n          (function () {\n            throw new TypeError(\n              'Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'\n            );\n          })()\n        );\n      }\n      function l(t, e) {\n        (null == e || e > t.length) && (e = t.length);\n        for (var r = 0, n = new Array(e); r < e; r++) n[r] = t[r];\n        return n;\n      }\n      var a = (function (t, e, r, n, o, i, s, l) {\n        var a,\n          c = 'function' == typeof t ? t.options : t;\n        if (\n          (e && ((c.render = e), (c.staticRenderFns = r), (c._compiled = !0)),\n          n && (c.functional = !0),\n          i && (c._scopeId = 'data-v-' + i),\n          s\n            ? ((a = function (t) {\n                (t =\n                  t ||\n                  (this.$vnode && this.$vnode.ssrContext) ||\n                  (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext)) ||\n                  'undefined' == typeof __VUE_SSR_CONTEXT__ ||\n                  (t = __VUE_SSR_CONTEXT__),\n                  o && o.call(this, t),\n                  t && t._registeredComponents && t._registeredComponents.add(s);\n              }),\n              (c._ssrRegister = a))\n            : o &&\n              (a = l\n                ? function () {\n                    o.call(this, (c.functional ? this.parent : this).$root.$options.shadowRoot);\n                  }\n                : o),\n          a)\n        )\n          if (c.functional) {\n            c._injectStyles = a;\n            var u = c.render;\n            c.render = function (t, e) {\n              return a.call(e), u(t, e);\n            };\n          } else {\n            var f = c.beforeCreate;\n            c.beforeCreate = f ? [].concat(f, a) : [a];\n          }\n        return { exports: t, options: c };\n      })(\n        {\n          props: {\n            activeClass: { type: String, default: 'is-active' },\n            offset: { type: Number, default: 20 },\n            scrollOffset: { type: Number, default: null },\n            scrollContainerSelector: { type: String, default: '' },\n            clickToScroll: { type: Boolean, default: !0 },\n            duration: { type: Number, default: 600 },\n            alwaysTrack: { type: Boolean, default: !1 },\n            bezierEasingValue: { type: String, default: '.5,0,.35,1' },\n            modifyUrl: { type: Boolean, default: !0 },\n            exact: { type: Boolean, default: !1 },\n            highlightFirstItem: { type: Boolean, default: !1 },\n            tag: { type: String, default: 'nav' },\n            scrollOnStart: { type: Boolean, default: !0 },\n          },\n          data: function () {\n            return {\n              observer: null,\n              items: [],\n              currentItem: null,\n              lastActiveItem: null,\n              scrollAnimationFrame: null,\n              bezierEasing: i.a,\n            };\n          },\n          computed: {\n            cubicBezierArray: function () {\n              return this.bezierEasingValue.split(',');\n            },\n            scrollContainer: function () {\n              var t = window;\n              return (\n                this.scrollContainerSelector &&\n                  (t = document.querySelector(this.scrollContainerSelector) || window),\n                t\n              );\n            },\n          },\n          mounted: function () {\n            var t = window.MutationObserver || window.WebKitMutationObserver;\n            this.observer ||\n              ((this.observer = new t(this.initScrollactiveItems)),\n              this.observer.observe(this.$refs['scrollactive-nav-wrapper'], {\n                childList: !0,\n                subtree: !0,\n              })),\n              this.initScrollactiveItems(),\n              this.removeActiveClass(),\n              (this.currentItem = this.getItemInsideWindow()),\n              this.currentItem && this.currentItem.classList.add(this.activeClass),\n              this.scrollOnStart && this.scrollToHashElement(),\n              this.scrollContainer.addEventListener('scroll', this.onScroll);\n          },\n          updated: function () {\n            this.initScrollactiveItems();\n          },\n          beforeDestroy: function () {\n            this.scrollContainer.removeEventListener('scroll', this.onScroll),\n              window.cancelAnimationFrame(this.scrollAnimationFrame);\n          },\n          methods: {\n            onScroll: function (t) {\n              (this.currentItem = this.getItemInsideWindow()),\n                this.currentItem !== this.lastActiveItem &&\n                  (this.removeActiveClass(),\n                  this.$emit('itemchanged', t, this.currentItem, this.lastActiveItem),\n                  (this.lastActiveItem = this.currentItem)),\n                this.currentItem && this.currentItem.classList.add(this.activeClass);\n            },\n            getItemInsideWindow: function () {\n              var t,\n                e = this;\n              return (\n                [].forEach.call(this.items, function (r) {\n                  var n = r === e.items[0],\n                    o = document.getElementById(decodeURI(r.hash.substr(1)));\n                  if (o) {\n                    var i = e.scrollContainer.scrollTop || window.pageYOffset,\n                      s = i >= e.getOffsetTop(o) - e.offset,\n                      l = i < e.getOffsetTop(o) - e.offset + o.offsetHeight;\n                    n && e.highlightFirstItem && l && (t = r),\n                      e.exact && s && l && (t = r),\n                      !e.exact && s && (t = r);\n                  }\n                }),\n                t\n              );\n            },\n            initScrollactiveItems: function () {\n              var t = this;\n              (this.items = this.$el.querySelectorAll('.scrollactive-item')),\n                this.clickToScroll\n                  ? [].forEach.call(this.items, function (e) {\n                      e.addEventListener('click', t.handleClick);\n                    })\n                  : [].forEach.call(this.items, function (e) {\n                      e.removeEventListener('click', t.handleClick);\n                    });\n            },\n            setScrollactiveItems: function () {\n              this.initScrollactiveItems();\n            },\n            handleClick: function (t) {\n              var e = this;\n              t.preventDefault();\n              var r = t.currentTarget.hash,\n                n = document.getElementById(decodeURI(r.substr(1)));\n              n\n                ? (this.alwaysTrack ||\n                    (this.scrollContainer.removeEventListener('scroll', this.onScroll),\n                    window.cancelAnimationFrame(this.scrollAnimationFrame),\n                    this.removeActiveClass(),\n                    t.currentTarget.classList.add(this.activeClass)),\n                  this.scrollTo(n).then(function () {\n                    if (!e.alwaysTrack) {\n                      e.scrollContainer.addEventListener('scroll', e.onScroll);\n                      (e.currentItem = [].find.call(e.items, function (t) {\n                        return decodeURI(t.hash.substr(1)) === n.id;\n                      })),\n                        e.currentItem !== e.lastActiveItem &&\n                          (e.$emit('itemchanged', null, e.currentItem, e.lastActiveItem),\n                          (e.lastActiveItem = e.currentItem));\n                    }\n                    e.modifyUrl && e.pushHashToUrl(r);\n                  }))\n                : console.warn(\n                    \"[vue-scrollactive] Element '\".concat(\n                      r,\n                      \"' was not found. Make sure it is set in the DOM.\"\n                    )\n                  );\n            },\n            scrollTo: function (t) {\n              var e = this;\n              return new Promise(function (r) {\n                var n = e.getOffsetTop(t),\n                  o = e.scrollContainer.scrollTop || window.pageYOffset,\n                  i = n - o,\n                  l = e.bezierEasing.apply(e, s(e.cubicBezierArray)),\n                  a = null;\n                window.requestAnimationFrame(function t(n) {\n                  a || (a = n);\n                  var s = n - a,\n                    c = s / e.duration;\n                  s >= e.duration && (s = e.duration), c >= 1 && (c = 1);\n                  var u = e.scrollOffset || e.offset,\n                    f = o + l(c) * (i - u);\n                  e.scrollContainer.scrollTo(0, f),\n                    s < e.duration\n                      ? (e.scrollAnimationFrame = window.requestAnimationFrame(t))\n                      : r();\n                });\n              });\n            },\n            getOffsetTop: function (t) {\n              for (var e = 0, r = t; r; ) (e += r.offsetTop), (r = r.offsetParent);\n              return this.scrollContainer.offsetTop && (e -= this.scrollContainer.offsetTop), e;\n            },\n            removeActiveClass: function () {\n              var t = this;\n              [].forEach.call(this.items, function (e) {\n                e.classList.remove(t.activeClass);\n              });\n            },\n            scrollToHashElement: function () {\n              var t = this,\n                e = window.location.hash;\n              if (e) {\n                var r = document.querySelector(decodeURI(e));\n                r &&\n                  ((window.location.hash = ''),\n                  setTimeout(function () {\n                    var n = r.offsetTop - t.offset;\n                    t.scrollContainer.scrollTo(0, n), t.pushHashToUrl(e);\n                  }, 0));\n              }\n            },\n            pushHashToUrl: function (t) {\n              window.history.pushState\n                ? window.history.pushState(null, null, t)\n                : (window.location.hash = t);\n            },\n          },\n        },\n        n,\n        [],\n        !1,\n        null,\n        null,\n        null\n      );\n      a.options.__file = 'src/scrollactive.vue';\n      var c = a.exports,\n        u = {\n          install: function (t) {\n            u.install.installed || t.component('scrollactive', c);\n          },\n        };\n      'undefined' != typeof window && window.Vue && u.install(window.Vue);\n      e.default = u;\n    },\n  ]);\n});\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","module.exports = __webpack_public_path__ + \"../asset/placeholder.jpg\";","\nexport const EXAMPLE_CATEGORIES = [\n    'line',\n    'bar',\n    'pie',\n    'scatter',\n    'map',\n    'candlestick',\n    'radar',\n    'boxplot',\n    'heatmap',\n    'graph',\n    'lines',\n    'tree',\n    'treemap',\n    'sunburst',\n    'parallel',\n    'sankey',\n    'funnel',\n    'gauge',\n    'pictorialBar',\n    'themeRiver',\n    'calendar',\n    'custom',\n\n    'dataset',\n    'dataZoom',\n    'drag',\n    'rich',\n\n    'globe',\n    'bar3D',\n    'scatter3D',\n    'surface',\n    'map3D',\n    'lines3D',\n    'line3D',\n    'scatterGL',\n    'linesGL',\n    'flowGL',\n    'graphGL'\n];\n\nexport const THEMES = {\n    default: [\n        '#5470c6',\n        '#91cc75',\n        '#fac858',\n        '#ee6666',\n        '#73c0de',\n        '#3ba272',\n        '#fc8452',\n        '#9a60b4',\n        '#ea7ccc'\n    ],\n    dark: [\n        '#4992ff',\n        '#7cffb2',\n        '#fddd60',\n        '#ff6e76',\n        '#58d9f9',\n        '#05c091',\n        '#ff8a45',\n        '#8d48e3',\n        '#dd79ff'\n    ]\n};\n\nexport const BLACK_MAP = (function (list) {\n    const map = {};\n    for (var i = 0; i < list.length; i++) {\n        map[list[i]] = 1;\n    }\n    return location.href.indexOf('github.io') >= 0 ? {} : map;\n})([\n    'effectScatter-map',\n    'geo-lines',\n    'geo-map-scatter',\n    'heatmap-map',\n    'lines-airline',\n    'map-china',\n    'map-china-dataRange',\n    'map-labels',\n    'map-locate',\n    'map-province',\n    'map-world',\n    'map-world-dataRange',\n    'scatter-map',\n    'scatter-map-brush',\n    'scatter-weibo',\n    'scatter-world-population',\n    'geo3d',\n    'geo3d-with-different-height',\n    'globe-country-carousel',\n    'globe-with-echarts-surface',\n    'map3d-alcohol-consumption',\n    'map3d-wood-map',\n    'scattergl-weibo'\n]);\n\n\nconst URL_PARAMS = {};\n(location.search || '').substr(1).split('&').forEach(function (item) {\n    const kv = item.split('=');\n    URL_PARAMS[kv[0]] = kv[1];\n});\n\nexport {URL_PARAMS};\n\nexport const SUPPORT_WEBP = (function () {\n    var elem = document.createElement('canvas');\n    elem.width = elem.height = 1;\n    if (!!(elem.getContext && elem.getContext('2d'))) {\n        // was able or not to get WebP representation\n        return elem.toDataURL('image/webp').indexOf('data:image/webp') === 0;\n    }\n    // very old browser like IE 8, canvas not supported\n    return false;\n})();\n\nexport const SCRIPT_URLS = {\n    localEChartsMinJS: 'http://localhost/echarts-next/dist/echarts.js',\n    echartsMinJS: 'https://cdn.jsdelivr.net/npm/echarts@5.0.0-beta.2/dist/echarts.min.js',\n    echartsDir: 'https://cdn.jsdelivr.net/npm/echarts@5.0.0-beta.2',\n    echartsStatMinJS: 'https://cdn.jsdelivr.net/npm/echarts-stat/dist/ecStat.min.js',\n    echartsGLMinJS: 'https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js',\n    datGUIMinJS: 'https://cdn.jsdelivr.net/npm/dat.gui@0.6.5/build/dat.gui.min.js',\n    monacoDir: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.21.2/min/vs',\n    aceDir: 'https://cdn.jsdelivr.net/npm/ace-builds@1.4.12/src-min-noconflict'\n};\n","\nconst promisesCache = {};\n\nexport function loadScriptsAsync(scripts) {\n    return Promise.all(scripts.map(function (scriptUrl) {\n        if (typeof scriptUrl === 'string') {\n            scriptUrl = {\n                url: scriptUrl,\n                // TODO Not supported type\n                type: scriptUrl.match(/\\.css$/) ? 'css' : 'js'\n            };\n        }\n        if (promisesCache[scriptUrl.url]) {\n            return promisesCache[scriptUrl.url];\n        }\n        const promise = new Promise((resolve, reject) => {\n            if (scriptUrl.type === 'js') {\n                const script = document.createElement('script');\n                script.src = scriptUrl.url;\n                script.async = false;\n                script.onload = function () {\n                    resolve();\n                };\n                script.onerror = function () {\n                    reject();\n                };\n                document.body.appendChild(script);\n            }\n            else if (scriptUrl.type === 'css') {\n                const link = document.createElement('link');\n                link.rel = 'stylesheet';\n                link.href = scriptUrl.url;\n                link.onload = function () {\n                    resolve();\n                };\n                link.onerror = function () {\n                    reject();\n                };\n                document.body.appendChild(link);\n            }\n        });\n        promisesCache[scriptUrl.url] = promise;\n        return promise;\n    }));\n}\n","export default {\n    en: {\n        editor: {\n            run: 'Run',\n            errorInEditor: 'Errors exist in code!',\n            chartOK: 'Chart has been generated successfully, ',\n\n            darkMode: 'Dark Mode',\n            enableDecal: 'Decal Pattern',\n            // lightMode: 'Light Mode',\n\n            renderCfgTitle: 'Render',\n            renderer: 'Renderer',\n            useDirtyRect: 'Use Dirty Rect',\n\n            download: 'Download',\n\n            edit: 'Edit',\n            monacoMode: 'Enable Type Checking'\n        },\n\n        chartTypes: {\n            line: 'Line',\n            bar: 'Bar',\n            pie: 'Pie',\n            scatter: 'Scatter',\n            map: 'GEO/Map',\n            candlestick: 'Candlestick',\n            radar: 'Radar',\n            boxplot: 'Boxplot',\n            heatmap: 'Heatmap',\n            graph: 'Graph',\n            lines: 'Lines',\n            tree: 'Tree',\n            treemap: 'Treemap',\n            sunburst: 'Sunburst',\n            parallel: 'Parallel',\n            sankey: 'Sankey',\n            funnel: 'Funnel',\n            gauge: 'Gauge',\n            pictorialBar: 'PictorialBar',\n            themeRiver: 'ThemeRiver',\n            calendar: 'Calendar',\n            custom: 'Custom',\n\n            dataset: 'Dataset',\n            dataZoom: 'DataZoom',\n            drag: 'Drag',\n            rich: 'Rich Text',\n\n            globe: '3D Globe',\n            bar3D: '3D Bar',\n            scatter3D: '3D Scatter',\n            surface: '3D Surface',\n            map3D: '3D Map',\n            lines3D: '3D Lines',\n            line3D: '3D Line',\n            scatterGL: 'Scatter GL',\n            linesGL: 'Lines GL',\n            flowGL: 'Flow GL',\n            graphGL: 'Graph GL'\n        }\n    },\n    zh: {\n        editor: {\n            run: '运行',\n            errorInEditor: '编辑器内容有误！',\n            chartOK: '图表已生成, ',\n\n            darkMode: '深色模式',\n            enableDecal: '无障碍花纹',\n            // lightMode: '浅色模式',\n\n            renderCfgTitle: '渲染设置',\n            useDirtyRect: '开启脏矩形优化',\n            renderer: '渲染模式',\n            download: '下载示例',\n\n            edit: '编辑',\n            monacoMode: '开启类型检查'\n        },\n\n        chartTypes: {\n            line: '折线图',\n            bar: '柱状图',\n            pie: '饼图',\n            scatter: '散点图',\n            map: '地理坐标/地图',\n            candlestick: 'K 线图',\n            radar: '雷达图',\n            boxplot: '盒须图',\n            heatmap: '热力图',\n            graph: '关系图',\n            lines: '路径图',\n            tree: '树图',\n            treemap: '矩形树图',\n            sunburst: '旭日图',\n            parallel: '平行坐标系',\n            sankey: '桑基图',\n            funnel: '漏斗图',\n            gauge: '仪表盘',\n            pictorialBar: '象形柱图',\n            themeRiver: '主题河流图',\n            calendar: '日历坐标系',\n            custom: '自定义系列',\n\n            dataset: '数据集',\n            dataZoom: '数据区域缩放',\n            drag: '拖拽',\n            rich: '富文本',\n\n            globe: '3D 地球',\n            bar3D: '3D 柱状图',\n            scatter3D: '3D 散点图',\n            surface: '3D 曲面',\n            map3D: '3D 地图',\n            lines3D: '3D 路径图',\n            line3D: '3D 折线图',\n            scatterGL: 'GL 散点图',\n            linesGL: 'GL 路径图',\n            flowGL: 'GL 矢量场图',\n            graphGL: 'GL 关系图'\n        }\n    }\n};","\n// import * as matter from 'gray-matter';\nimport {URL_PARAMS} from '../common/config';\n\nexport const store = {\n    cdnRoot: '',\n    version: '',\n    locale: '',\n\n    darkMode: URL_PARAMS.theme === 'dark',\n    enableDecal: 'decal' in URL_PARAMS,\n    renderer: URL_PARAMS.renderer || 'canvas',\n\n    typeCheck: URL_PARAMS.editor === 'monaco',\n    useDirtyRect: 'useDirtyRect' in URL_PARAMS,\n\n    code: '',\n\n    runCode: '',\n    sourceCode: '',\n\n    isMobile: window.innerWidth < 600,\n\n    editorStatus: {\n        type: '',\n        message: ''\n    }\n};\n\nexport function loadExampleCode() {\n    return new Promise(resolve => {\n        const dataRoot = URL_PARAMS.gl ? 'data-gl' : 'data';\n        $.ajax(`${store.cdnRoot}/${dataRoot}/${URL_PARAMS.c}.js?_v_${store.version}`, {\n            dataType: 'text',\n            success: (data) => {\n                resolve(data);\n            }\n        });\n    });\n}\n\nexport function parseSourceCode(code) {\n    return code.replace(/\\/\\*[\\w\\W]*?\\*\\//, '').trim();\n}\n","\n/* eslint-disable */\n// THIS FILE IS GENERATED, DON'T MODIFY */\nexport default [\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"animating-contour-on-globe\",\n    \"tags\": [],\n    \"title\": \"Animating Contour on Globe\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-dataset\",\n    \"tags\": [],\n    \"title\": \"3D Bar with Dataset\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-global-population\",\n    \"tags\": [],\n    \"title\": \"Bar3D - Global Population\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-music-visualization\",\n    \"tags\": [],\n    \"title\": \"Music Visualization\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-myth\",\n    \"tags\": [],\n    \"title\": \"星云\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-noise-modified-from-marpi-demo\",\n    \"tags\": [],\n    \"title\": \"Noise modified from marpi's demo\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-punch-card\",\n    \"tags\": [],\n    \"title\": \"Bar3D - Punch Card\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-simplex-noise\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"Bar3D - Simplex Noise\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-voxelize-image\",\n    \"tags\": [],\n    \"title\": \"Voxelize image\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"flowGL\"\n    ],\n    \"id\": \"flowGL-noise\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"Flow on the cartesian\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"geo3D\"\n    ],\n    \"id\": \"geo3d\",\n    \"tags\": [],\n    \"title\": \"Geo3D\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"geo3D\"\n    ],\n    \"id\": \"geo3d-with-different-height\",\n    \"tags\": [],\n    \"title\": \"Geo3D with Different Height\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"global-population-bar3d-on-globe\",\n    \"tags\": [],\n    \"title\": \"Global Population - Bar3D on Globe\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"flowGL\"\n    ],\n    \"id\": \"global-wind-visualization\",\n    \"tags\": [],\n    \"title\": \"Global wind visualization\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"flowGL\"\n    ],\n    \"id\": \"global-wind-visualization-2\",\n    \"tags\": [],\n    \"title\": \"Global Wind Visualization 2\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"globe-contour-paint\",\n    \"tags\": [],\n    \"title\": \"Contour Paint\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"globe-country-carousel\",\n    \"tags\": [],\n    \"title\": \"Country Carousel\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"globe-displacement\",\n    \"tags\": [],\n    \"title\": \"Globe Displacement\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"globe-echarts-gl-hello-world\",\n    \"tags\": [],\n    \"title\": \"ECharts-GL Hello World\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"globe-layers\",\n    \"tags\": [],\n    \"title\": \"Globe Layers\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"globe-moon\",\n    \"tags\": [],\n    \"title\": \"Moon\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"globe-with-echarts-surface\",\n    \"tags\": [],\n    \"title\": \"Globe with ECharts Surface\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graphGL\"\n    ],\n    \"id\": \"graphgl-gpu-layout\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"GraphGL GPU Layout\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graphGL\"\n    ],\n    \"id\": \"graphgl-large-internet\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"GraphGL - Large Internet\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graphGL\"\n    ],\n    \"id\": \"graphgl-npm-dep\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"1w 节点 2w7 边的NPM 依赖图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"image-surface-sushuang\",\n    \"tags\": [],\n    \"title\": \"Image Surface Sushuang\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"image-to-bar3d\",\n    \"tags\": [],\n    \"title\": \"Image to Bar3D\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"iron-globe\",\n    \"tags\": [],\n    \"title\": \"Iron globe\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"line3D\"\n    ],\n    \"id\": \"line3d-orthographic\",\n    \"tags\": [],\n    \"title\": \"三维折线图正交投影\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"lines3D\"\n    ],\n    \"id\": \"lines3d-airline-on-globe\",\n    \"tags\": [],\n    \"title\": \"Airline on Globe\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"lines3D\"\n    ],\n    \"id\": \"lines3d-flights\",\n    \"tags\": [],\n    \"title\": \"Flights\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"lines3D\"\n    ],\n    \"id\": \"lines3d-flights-gl\",\n    \"tags\": [],\n    \"title\": \"Flights GL\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"lines3D\"\n    ],\n    \"id\": \"lines3d-flights-on-geo3d\",\n    \"tags\": [],\n    \"title\": \"Flights on Geo3D\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"linesGL\"\n    ],\n    \"id\": \"linesGL-ny\",\n    \"tags\": [],\n    \"title\": \"Use linesGL to draw 1 million ny streets.\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map3D\"\n    ],\n    \"id\": \"map3d-alcohol-consumption\",\n    \"tags\": [],\n    \"title\": \"Map3D - Alcohol Consumption\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map3D\"\n    ],\n    \"id\": \"map3d-buildings\",\n    \"tags\": [],\n    \"title\": \"Buildings\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map3D\"\n    ],\n    \"id\": \"map3d-wood-city\",\n    \"tags\": [],\n    \"title\": \"Wood City\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map3D\"\n    ],\n    \"id\": \"map3d-wood-map\",\n    \"tags\": [],\n    \"title\": \"木质世界地图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"metal-bar3d\",\n    \"tags\": [],\n    \"title\": \"Metal Bar3D\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"metal-surface\",\n    \"tags\": [],\n    \"title\": \"Metal Surface\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"parametric-surface-rose\",\n    \"tags\": [],\n    \"title\": \"Parametric Surface Rose\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter3D\"\n    ],\n    \"id\": \"scatter3d\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"Scatter3D\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter3D\"\n    ],\n    \"id\": \"scatter3D-dataset\",\n    \"tags\": [],\n    \"title\": \"3D Scatter with Dataset\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter3D\"\n    ],\n    \"id\": \"scatter3d-globe-population\",\n    \"tags\": [],\n    \"title\": \"Scatter3D - Globe Population\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter3D\"\n    ],\n    \"id\": \"scatter3d-orthographic\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"三维散点图正交投影\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter3D\"\n    ],\n    \"id\": \"scatter3d-scatter\",\n    \"tags\": [],\n    \"title\": \"3D Scatter with Scatter Matrix\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter3D\"\n    ],\n    \"id\": \"scatter3d-simplex-noise\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"Scatter3D - Simplex Noise\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatterGL\"\n    ],\n    \"id\": \"scatterGL-gps\",\n    \"tags\": [],\n    \"title\": \"10 million Bulk GPS points\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatterGL\"\n    ],\n    \"id\": \"scattergl-weibo\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"微博签到数据点亮中国\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"simple-surface\",\n    \"tags\": [],\n    \"title\": \"Simple Surface\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"sphere-parametric-surface\",\n    \"tags\": [],\n    \"title\": \"Sphere Parametric Surface\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"stacked-bar3d\",\n    \"tags\": [],\n    \"title\": \"Stacked Bar3D\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"surface-breather\",\n    \"tags\": [],\n    \"title\": \"Breather\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"surface-golden-rose\",\n    \"tags\": [],\n    \"title\": \"Golden Rose\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"surface-leather\",\n    \"tags\": [],\n    \"title\": \"皮革材质\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"surface-mollusc-shell\",\n    \"tags\": [],\n    \"title\": \"Mollusc Shell\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"surface-theme-roses\",\n    \"tags\": [],\n    \"title\": \"Theme Roses\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"surface-wave\",\n    \"tags\": [],\n    \"title\": \"Surface Wave\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"transparent-bar3d\",\n    \"tags\": [],\n    \"title\": \"Transparent Bar3D\",\n    \"difficulty\": 10\n  }\n]","\n/* eslint-disable */\n// THIS FILE IS GENERATED, DON'T MODIFY */\nexport default [\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-simple\",\n    \"tags\": [],\n    \"title\": \"Bar Simple\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-tick-align\",\n    \"tags\": [],\n    \"title\": \"坐标轴刻度与标签对齐\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-waterfall\",\n    \"tags\": [],\n    \"title\": \"深圳月最低生活费组成（单位:元）\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"bar\",\n      \"transform\"\n    ],\n    \"id\": \"data-transform-sort-bar\",\n    \"tags\": [],\n    \"title\": \"Sort Data in Bar Chart\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-simple\",\n    \"tags\": [],\n    \"title\": \"Basic Line Chart\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-smooth\",\n    \"tags\": [],\n    \"title\": \"Smoothed Line Chart\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-doughnut\",\n    \"tags\": [],\n    \"title\": \"Doughnut Chart\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-simple\",\n    \"tags\": [],\n    \"title\": \"Referer of a website\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-anscombe-quartet\",\n    \"tags\": [],\n    \"title\": \"Anscombe&#39;s quartet\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-clustering-process\",\n    \"tags\": [],\n    \"title\": \"Clustering Process\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-simple\",\n    \"tags\": [],\n    \"title\": \"Basic Scatter Chart\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"area-basic\",\n    \"tags\": [],\n    \"title\": \"Basic area chart\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-background\",\n    \"tags\": [],\n    \"title\": \"Bar with Background\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-gradient\",\n    \"tags\": [],\n    \"title\": \"特性示例：渐变色 阴影 点击缩放\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-negative2\",\n    \"tags\": [],\n    \"title\": \"交错正负轴标签\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-waterfall2\",\n    \"tags\": [],\n    \"title\": \"阶梯瀑布图\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"bubble-gradient\",\n    \"tags\": [],\n    \"title\": \"Bubble Chart\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-stack\",\n    \"tags\": [],\n    \"title\": \"Stacked Line Chart\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-custom\",\n    \"tags\": [],\n    \"title\": \"Customized Pie\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-pattern\",\n    \"tags\": [],\n    \"title\": \"Texture on Pie Chart\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-roseType\",\n    \"tags\": [],\n    \"title\": \"Nightingale's Rose Diagram\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"area-stack\",\n    \"tags\": [],\n    \"title\": \"Stacked area chart\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"area-time-axis\",\n    \"tags\": [],\n    \"title\": \"Area Chart with Time Axis\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-animation-delay\",\n    \"tags\": [],\n    \"title\": \"柱状图动画延迟\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-negative\",\n    \"tags\": [],\n    \"title\": \"正负条形图\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-y-category\",\n    \"tags\": [],\n    \"title\": \"World Total Population\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar1\",\n    \"tags\": [],\n    \"title\": \"Rainfall and Evaporation\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"pie\"\n    ],\n    \"id\": \"dataset-default\",\n    \"tags\": [],\n    \"title\": \"Default arrangement\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"bar\"\n    ],\n    \"id\": \"dataset-encode0\",\n    \"tags\": [],\n    \"title\": \"Simple Encode\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"bar\"\n    ],\n    \"id\": \"dataset-simple0\",\n    \"tags\": [],\n    \"title\": \"Simple Example of Dataset\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"bar\"\n    ],\n    \"id\": \"dataset-simple1\",\n    \"tags\": [],\n    \"title\": \"Dataset in Object Array\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"effectScatter-map\",\n    \"tags\": [],\n    \"title\": \"Air Quality\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-in-cartesian-coordinate-system\",\n    \"tags\": [],\n    \"title\": \"Line Chart in Cartesian Coordinate System\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-y-category\",\n    \"tags\": [],\n    \"title\": \"Line Y Category\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"mix-line-bar\",\n    \"tags\": [],\n    \"title\": \"Mixed Line and Bar\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-alignTo\",\n    \"tags\": [],\n    \"title\": \"Pie Label Align\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-legend\",\n    \"tags\": [],\n    \"title\": \"Pie with Scrollable Legend\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-nebula\",\n    \"tags\": [],\n    \"title\": \"Scatter Nebula\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"line\",\n      \"visualMap\"\n    ],\n    \"id\": \"area-pieces\",\n    \"tags\": [],\n    \"title\": \"Area Pieces\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"area-stack-gradient\",\n    \"tags\": [],\n    \"title\": \"Gradient Stacked area chart\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-brush\",\n    \"tags\": [],\n    \"title\": \"柱状图框选\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-label-rotation\",\n    \"tags\": [],\n    \"title\": \"Bar Label Rotation\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-race\",\n    \"tags\": [],\n    \"title\": \"Bar Race\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-y-category-stack\",\n    \"tags\": [],\n    \"title\": \"Stacked Horizontal Bar\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"dataset\"\n    ],\n    \"id\": \"dataset-encode1\",\n    \"tags\": [],\n    \"title\": \"Encode and Matrix\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"line\",\n      \"pie\"\n    ],\n    \"id\": \"dataset-link\",\n    \"tags\": [],\n    \"title\": \"Share Dataset\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-gradient\",\n    \"tags\": [],\n    \"title\": \"Line Gradient\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-sections\",\n    \"tags\": [],\n    \"title\": \"Distribution of Electricity\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-step\",\n    \"tags\": [],\n    \"title\": \"Step Line\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-style\",\n    \"tags\": [],\n    \"title\": \"Line Style and Item Style\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"mix-zoom-on-value\",\n    \"tags\": [],\n    \"title\": \"Mix Zoom On Value\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"pie\",\n      \"rich\"\n    ],\n    \"id\": \"pie-nest\",\n    \"tags\": [],\n    \"title\": \"Nested Pies\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"pie\",\n      \"rich\"\n    ],\n    \"id\": \"pie-rich-text\",\n    \"tags\": [],\n    \"title\": \"Pie Special Label\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-polar-stack\",\n    \"tags\": [],\n    \"title\": \"极坐标系下的堆叠柱状图\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-polar-stack-radial\",\n    \"tags\": [],\n    \"title\": \"极坐标系下的堆叠柱状图\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"calendar\",\n      \"pie\"\n    ],\n    \"id\": \"calendar-pie\",\n    \"tags\": [],\n    \"title\": \"Calendar Pie\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"confidence-band\",\n    \"tags\": [],\n    \"title\": \"Confidence Band\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"custom-graphic\",\n    \"tags\": [],\n    \"title\": \"Custom Graphic Component\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"bar\"\n    ],\n    \"id\": \"dataset-series-layout-by\",\n    \"tags\": [],\n    \"title\": \"Series Layout By Column or Row\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"dynamic-data2\",\n    \"tags\": [],\n    \"title\": \"Dynamic Data + Time Axis\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-aqi\",\n    \"tags\": [],\n    \"title\": \"Beijing AQI\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"line\",\n      \"drag\"\n    ],\n    \"id\": \"line-draggable\",\n    \"tags\": [],\n    \"title\": \"Try Dragging these Points\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-function\",\n    \"tags\": [],\n    \"title\": \"Function Plot\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-pen\",\n    \"tags\": [],\n    \"title\": \"Click to Add Points\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"line\",\n      \"dataZoom\"\n    ],\n    \"id\": \"line-tooltip-touch\",\n    \"tags\": [],\n    \"title\": \"Tooltip and DataZoom on Mobile\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"multiple-x-axis\",\n    \"tags\": [],\n    \"title\": \"Multiple X Axes\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"multiple-y-axis\",\n    \"tags\": [],\n    \"title\": \"Multiple Y Axes\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"watermark\",\n    \"tags\": [],\n    \"title\": \"Watermark - ECharts Download\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"area-rainfall\",\n    \"tags\": [],\n    \"title\": \"Rainfall\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"line\",\n      \"dataZoom\"\n    ],\n    \"id\": \"area-simple\",\n    \"tags\": [],\n    \"title\": \"Large scale area chart\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-polar-real-estate\",\n    \"tags\": [],\n    \"title\": \"极坐标系下的堆叠柱状图\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"grid-multiple\",\n    \"tags\": [],\n    \"title\": \"Rainfall and Water Flow\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-easing\",\n    \"tags\": [],\n    \"title\": \"Line Easing Visualizing\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"polar-roundCap\",\n    \"tags\": [],\n    \"title\": \"Rounded Bar on Polar\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-polar\",\n    \"tags\": [],\n    \"title\": \"Two Value-Axes in Polar\",\n    \"difficulty\": 6\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-polar2\",\n    \"tags\": [],\n    \"title\": \"Two Value-Axes in Polar\",\n    \"difficulty\": 6\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"bar-histogram\",\n    \"tags\": [],\n    \"title\": \"Girths of Black Cherry Trees\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-large\",\n    \"tags\": [],\n    \"title\": \"Large Scale Bar Chart\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar\",\n      \"rich\"\n    ],\n    \"id\": \"bar-rich-text\",\n    \"tags\": [],\n    \"title\": \"Wheater Statistics\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-stack\",\n    \"tags\": [],\n    \"title\": \"堆叠柱状图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"boxplot\"\n    ],\n    \"id\": \"boxplot-light-velocity\",\n    \"tags\": [],\n    \"title\": \"Boxplot Light Velocity\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"boxplot\"\n    ],\n    \"id\": \"boxplot-light-velocity2\",\n    \"tags\": [],\n    \"title\": \"Boxplot Light Velocity2\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"boxplot\"\n    ],\n    \"id\": \"boxplot-multi\",\n    \"tags\": [],\n    \"title\": \"Multiple Categories\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"calendar\",\n      \"scatter\"\n    ],\n    \"id\": \"calendar-charts\",\n    \"tags\": [],\n    \"title\": \"Calendar Charts\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"calendar\"\n    ],\n    \"id\": \"calendar-effectscatter\",\n    \"tags\": [],\n    \"title\": \"Calendar Effectscatter\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"calendar\",\n      \"graph\"\n    ],\n    \"id\": \"calendar-graph\",\n    \"tags\": [],\n    \"title\": \"Calendar Graph\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"calendar\",\n      \"heatmap\"\n    ],\n    \"id\": \"calendar-heatmap\",\n    \"tags\": [],\n    \"title\": \"Calendar Heatmap\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"calendar\"\n    ],\n    \"id\": \"calendar-horizontal\",\n    \"tags\": [],\n    \"title\": \"Calendar Heatmap Horizontal\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"calendar\"\n    ],\n    \"id\": \"calendar-lunar\",\n    \"tags\": [],\n    \"title\": \"Calendar Lunar\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"calendar\"\n    ],\n    \"id\": \"calendar-simple\",\n    \"tags\": [],\n    \"title\": \"Simple Calendar\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"calendar\",\n      \"heatmap\"\n    ],\n    \"id\": \"calendar-vertical\",\n    \"tags\": [],\n    \"title\": \"Calendar Heatmap Vertical\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"candlestick\"\n    ],\n    \"id\": \"candlestick-brush\",\n    \"tags\": [],\n    \"title\": \"Candlestick Brush\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"candlestick\"\n    ],\n    \"id\": \"candlestick-large\",\n    \"tags\": [],\n    \"title\": \"Large Scale Candlestick\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"candlestick\"\n    ],\n    \"id\": \"candlestick-sh\",\n    \"tags\": [],\n    \"title\": \"ShangHai Index\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"candlestick\"\n    ],\n    \"id\": \"candlestick-sh-2015\",\n    \"tags\": [],\n    \"title\": \"ShangHai Index, 2015\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"candlestick\"\n    ],\n    \"id\": \"candlestick-simple\",\n    \"tags\": [],\n    \"title\": \"Basic Candlestick\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"candlestick\"\n    ],\n    \"id\": \"candlestick-touch\",\n    \"tags\": [],\n    \"title\": \"Axis Pointer Link and Touch\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-bar-trend\",\n    \"tags\": [],\n    \"title\": \"Custom Bar Trend\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"custom\",\n      \"calendar\"\n    ],\n    \"id\": \"custom-calendar-icon\",\n    \"tags\": [],\n    \"title\": \"Custom Calendar Icon\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-cartesian-polygon\",\n    \"tags\": [],\n    \"title\": \"Custom Cartesian Polygon\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-error-bar\",\n    \"tags\": [],\n    \"title\": \"Error Bar on Catesian\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"custom\",\n      \"dataZoom\"\n    ],\n    \"id\": \"custom-error-scatter\",\n    \"tags\": [],\n    \"title\": \"Error Scatter on Catesian\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"custom\",\n      \"dataZoom\",\n      \"drag\"\n    ],\n    \"id\": \"custom-gantt-flight\",\n    \"tags\": [],\n    \"title\": \"Gantt Chart of Airport Flights\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"custom\",\n      \"map\"\n    ],\n    \"id\": \"custom-hexbin\",\n    \"tags\": [],\n    \"title\": \"Hexagonal Binning\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"candlestick\"\n    ],\n    \"id\": \"custom-ohlc\",\n    \"tags\": [],\n    \"title\": \"OHLC Chart\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-polar-heatmap\",\n    \"tags\": [],\n    \"title\": \"Polar Heatmap\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-profile\",\n    \"tags\": [],\n    \"title\": \"Profile\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-profit\",\n    \"tags\": [],\n    \"title\": \"Profit\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-wind\",\n    \"tags\": [],\n    \"title\": \"Use custom series to draw wind vectors\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"cycle-plot\",\n    \"tags\": [],\n    \"title\": \"Cycle Plot\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"pie\",\n      \"transform\"\n    ],\n    \"id\": \"data-transform-multiple-pie\",\n    \"tags\": [],\n    \"title\": \"Partition Data to Pies\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"dynamic-data\",\n    \"tags\": [],\n    \"title\": \"Dynamic Data\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\",\n      \"map\"\n    ],\n    \"id\": \"effectScatter-bmap\",\n    \"tags\": [\n      \"bmap\"\n    ],\n    \"title\": \"Air Quality - Baidu Map\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"funnel\"\n    ],\n    \"id\": \"funnel\",\n    \"tags\": [],\n    \"title\": \"Funnel Chart\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"funnel\"\n    ],\n    \"id\": \"funnel-align\",\n    \"tags\": [],\n    \"title\": \"Funnel (align)\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"funnel\"\n    ],\n    \"id\": \"funnel-customize\",\n    \"tags\": [],\n    \"title\": \"Customized Funnel\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"funnel\"\n    ],\n    \"id\": \"funnel-mutiple\",\n    \"tags\": [],\n    \"title\": \"Multiple Funnels\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge\",\n    \"tags\": [],\n    \"title\": \"Gauge\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-car\",\n    \"tags\": [],\n    \"title\": \"Gauge Car\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-car-dark\",\n    \"tags\": [],\n    \"title\": \"Gauge Car Dark\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-level\",\n    \"tags\": [],\n    \"title\": \"Gauge level\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-simple\",\n    \"tags\": [],\n    \"title\": \"Simple Gauge\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-speed\",\n    \"tags\": [],\n    \"title\": \"Gauge Speed\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"geo-lines\",\n    \"tags\": [],\n    \"title\": \"Migration\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"geo-map-scatter\",\n    \"tags\": [],\n    \"title\": \"map and scatter share a geo\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph\",\n    \"tags\": [],\n    \"title\": \"Les Miserables\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-circular-layout\",\n    \"tags\": [],\n    \"title\": \"Les Miserables\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-force\",\n    \"tags\": [],\n    \"title\": \"Force Layout\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-force-dynamic\",\n    \"tags\": [],\n    \"title\": \"Graph Dynamic\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-force2\",\n    \"tags\": [],\n    \"title\": \"Force Layout\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-grid\",\n    \"tags\": [],\n    \"title\": \"Graph on Cartesian\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-label-overlap\",\n    \"tags\": [],\n    \"title\": \"Hide Overlapped Label\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-life-expectancy\",\n    \"tags\": [],\n    \"title\": \"Graph Life Expectancy\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-npm\",\n    \"tags\": [],\n    \"title\": \"NPM Dependencies\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-simple\",\n    \"tags\": [],\n    \"title\": \"Simple Graph\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-webkit-dep\",\n    \"tags\": [],\n    \"title\": \"Graph Webkit Dep\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"heatmap\"\n    ],\n    \"id\": \"heatmap-bmap\",\n    \"tags\": [\n      \"bmap\"\n    ],\n    \"title\": \"Heatmap on Baidu Map Extension\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"heatmap\"\n    ],\n    \"id\": \"heatmap-cartesian\",\n    \"tags\": [],\n    \"title\": \"Heatmap on Cartesian\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"heatmap\"\n    ],\n    \"id\": \"heatmap-large\",\n    \"tags\": [],\n    \"title\": \"Heatmap - 2w data\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"heatmap\"\n    ],\n    \"id\": \"heatmap-large-piecewise\",\n    \"tags\": [],\n    \"title\": \"Heatmap - Discrete Mapping of Color\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"heatmap\"\n    ],\n    \"id\": \"heatmap-map\",\n    \"tags\": [],\n    \"title\": \"Air Qulity\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-log\",\n    \"tags\": [],\n    \"title\": \"Log Axis\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-marker\",\n    \"tags\": [],\n    \"title\": \"Temperature Change in the coming week\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-markline\",\n    \"tags\": [],\n    \"title\": \"Line with Marklines\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\",\n      \"lines\"\n    ],\n    \"id\": \"lines-airline\",\n    \"tags\": [],\n    \"title\": \"65k+ Airline\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\",\n      \"lines\"\n    ],\n    \"id\": \"lines-bmap\",\n    \"tags\": [\n      \"bmap\"\n    ],\n    \"title\": \"A Hiking Trail in Hangzhou - Baidu Map\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\",\n      \"lines\"\n    ],\n    \"id\": \"lines-bmap-bus\",\n    \"tags\": [\n      \"bmap\"\n    ],\n    \"title\": \"Bus Lines of Beijing - Baidu Map\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\",\n      \"lines\"\n    ],\n    \"id\": \"lines-bmap-effect\",\n    \"tags\": [\n      \"bmap\"\n    ],\n    \"title\": \"Bus Lines of Beijing - Line Effect\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\",\n      \"lines\"\n    ],\n    \"id\": \"lines-ny\",\n    \"tags\": [],\n    \"title\": \"Use lines to draw 1 million ny streets.\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-bin\",\n    \"tags\": [],\n    \"title\": \"Binning on Map\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-china\",\n    \"tags\": [],\n    \"title\": \"Map China\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-china-dataRange\",\n    \"tags\": [],\n    \"title\": \"Sales of iphone\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-HK\",\n    \"tags\": [],\n    \"title\": \"Population Density of HongKong (2011)\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-labels\",\n    \"tags\": [],\n    \"title\": \"Rich Text Labels on Map\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-locate\",\n    \"tags\": [],\n    \"title\": \"Map Locate\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-polygon\",\n    \"tags\": [],\n    \"title\": \"Draw Polygon on Map\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-province\",\n    \"tags\": [],\n    \"title\": \"Switch among 34 Provinces\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-usa\",\n    \"tags\": [],\n    \"title\": \"USA Population Estimates (2012)\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-world\",\n    \"tags\": [],\n    \"title\": \"Map World\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-world-dataRange\",\n    \"tags\": [],\n    \"title\": \"World Population (2010)\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"mix-timeline-finance\",\n    \"tags\": [],\n    \"title\": \"Finance Indices 2002\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"parallel\"\n    ],\n    \"id\": \"parallel-aqi\",\n    \"tags\": [],\n    \"title\": \"Parallel Aqi\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"parallel\"\n    ],\n    \"id\": \"parallel-nutrients\",\n    \"tags\": [],\n    \"title\": \"Parallel Nutrients\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"parallel\"\n    ],\n    \"id\": \"parallel-simple\",\n    \"tags\": [],\n    \"title\": \"Basic Parallel\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"pictorialBar\"\n    ],\n    \"id\": \"pictorialBar-body-fill\",\n    \"tags\": [],\n    \"title\": \"Water Content\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"pictorialBar\"\n    ],\n    \"id\": \"pictorialBar-dotted\",\n    \"tags\": [],\n    \"title\": \"Dotted bar\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"pictorialBar\"\n    ],\n    \"id\": \"pictorialBar-forest\",\n    \"tags\": [],\n    \"title\": \"Expansion of forest\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"pictorialBar\"\n    ],\n    \"id\": \"pictorialBar-hill\",\n    \"tags\": [],\n    \"title\": \"Wish List and Mountain Height\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"pictorialBar\"\n    ],\n    \"id\": \"pictorialBar-spirit\",\n    \"tags\": [],\n    \"title\": \"Spirits\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"pictorialBar\"\n    ],\n    \"id\": \"pictorialBar-vehicle\",\n    \"tags\": [],\n    \"title\": \"Vehicles\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"pictorialBar\"\n    ],\n    \"id\": \"pictorialBar-velocity\",\n    \"tags\": [],\n    \"title\": \"Velocity of Christmas Reindeers\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"radar\"\n    ],\n    \"id\": \"radar\",\n    \"tags\": [],\n    \"title\": \"Basic Radar Chart\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"radar\"\n    ],\n    \"id\": \"radar-aqi\",\n    \"tags\": [],\n    \"title\": \"AQI - Radar Chart\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"radar\"\n    ],\n    \"id\": \"radar-custom\",\n    \"tags\": [],\n    \"title\": \"Customized Radar Chart\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"radar\"\n    ],\n    \"id\": \"radar-multiple\",\n    \"tags\": [],\n    \"title\": \"Multiple Radar\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"radar\"\n    ],\n    \"id\": \"radar2\",\n    \"tags\": [],\n    \"title\": \"Proportion of Browsers\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"sankey\"\n    ],\n    \"id\": \"sankey-energy\",\n    \"tags\": [],\n    \"title\": \"Sankey Diagram\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"sankey\"\n    ],\n    \"id\": \"sankey-itemstyle\",\n    \"tags\": [],\n    \"title\": \"Specify ItemStyle for Each Node in Sankey\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"sankey\"\n    ],\n    \"id\": \"sankey-levels\",\n    \"tags\": [],\n    \"title\": \"Sankey with Levels Setting\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"sankey\"\n    ],\n    \"id\": \"sankey-nodeAlign-left\",\n    \"tags\": [],\n    \"title\": \"Node Align Left in Sankey\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"sankey\"\n    ],\n    \"id\": \"sankey-nodeAlign-right\",\n    \"tags\": [],\n    \"title\": \"Node Align Right in Sankey\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"sankey\"\n    ],\n    \"id\": \"sankey-simple\",\n    \"tags\": [],\n    \"title\": \"Basic Sankey\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"sankey\"\n    ],\n    \"id\": \"sankey-vertical\",\n    \"tags\": [],\n    \"title\": \"Sankey Orient Vertical\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-aqi-color\",\n    \"tags\": [],\n    \"title\": \"Scatter Aqi Color\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-effect\",\n    \"tags\": [],\n    \"title\": \"Effect Scatter Chart\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-exponential-regression\",\n    \"tags\": [],\n    \"title\": \"Exponential Regression\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-label-align-right\",\n    \"tags\": [],\n    \"title\": \"Align Label on the Top\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-label-align-top\",\n    \"tags\": [],\n    \"title\": \"Align Label on the Top\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-large\",\n    \"tags\": [],\n    \"title\": \"Large Scatter\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-life-expectancy-timeline\",\n    \"tags\": [],\n    \"title\": \"Life Expectancy and GDP\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-linear-regression\",\n    \"tags\": [],\n    \"title\": \"Linear Regression\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-logarithmic-regression\",\n    \"tags\": [],\n    \"title\": \"Logarithmic Regression\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-map\",\n    \"tags\": [],\n    \"title\": \"Air Quality\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-map-brush\",\n    \"tags\": [],\n    \"title\": \"Scatter Map Brush\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"parallel\",\n      \"scatter\"\n    ],\n    \"id\": \"scatter-matrix\",\n    \"tags\": [],\n    \"title\": \"Scatter Matrix\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-nutrients\",\n    \"tags\": [],\n    \"title\": \"Scatter Nutrients\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-nutrients-matrix\",\n    \"tags\": [],\n    \"title\": \"Scatter Nutrients Matrix\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-painter-choice\",\n    \"tags\": [],\n    \"title\": \"Master Painter Color Choices Throughout History\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-polar-punchCard\",\n    \"tags\": [],\n    \"title\": \"Punch Card of Github\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-polynomial-regression\",\n    \"tags\": [],\n    \"title\": \"Polynomial Regression\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-punchCard\",\n    \"tags\": [],\n    \"title\": \"Punch Card of Github\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-single-axis\",\n    \"tags\": [],\n    \"title\": \"Scatter on Single Axis\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-stream-visual\",\n    \"tags\": [],\n    \"title\": \"Visual interaction with stream\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-weibo\",\n    \"tags\": [],\n    \"title\": \"Sign in of weibo\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-weight\",\n    \"tags\": [],\n    \"title\": \"Distribution of Height and Weight\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-world-population\",\n    \"tags\": [],\n    \"title\": \"World Population (2011)\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"sunburst\"\n    ],\n    \"id\": \"sunburst-book\",\n    \"tags\": [],\n    \"title\": \"Book Records\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"sunburst\"\n    ],\n    \"id\": \"sunburst-drink\",\n    \"tags\": [],\n    \"title\": \"Drink Flavors\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"sunburst\"\n    ],\n    \"id\": \"sunburst-label-rotate\",\n    \"tags\": [],\n    \"title\": \"Sunburst Label Rotate\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"sunburst\"\n    ],\n    \"id\": \"sunburst-monochrome\",\n    \"tags\": [],\n    \"title\": \"Monochrome Sunburst\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"sunburst\"\n    ],\n    \"id\": \"sunburst-simple\",\n    \"tags\": [],\n    \"title\": \"Basic Sunburst\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"sunburst\"\n    ],\n    \"id\": \"sunburst-visualMap\",\n    \"tags\": [],\n    \"title\": \"Sunburst VisualMap\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"themeRiver\"\n    ],\n    \"id\": \"themeRiver-basic\",\n    \"tags\": [],\n    \"title\": \"ThemeRiver\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"themeRiver\"\n    ],\n    \"id\": \"themeRiver-lastfm\",\n    \"tags\": [],\n    \"title\": \"ThemeRiver Lastfm\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"tree\"\n    ],\n    \"id\": \"tree-basic\",\n    \"tags\": [],\n    \"title\": \"From Left to Right Tree\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"tree\"\n    ],\n    \"id\": \"tree-legend\",\n    \"tags\": [],\n    \"title\": \"Multiple Trees\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"tree\"\n    ],\n    \"id\": \"tree-orient-bottom-top\",\n    \"tags\": [],\n    \"title\": \"From Bottom to Top Tree\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"tree\"\n    ],\n    \"id\": \"tree-orient-right-left\",\n    \"tags\": [],\n    \"title\": \"From Right to Left Tree\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"tree\"\n    ],\n    \"id\": \"tree-polyline\",\n    \"tags\": [],\n    \"title\": \"Tree with Polyline Edge\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"tree\"\n    ],\n    \"id\": \"tree-radial\",\n    \"tags\": [],\n    \"title\": \"Radial Tree\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"tree\"\n    ],\n    \"id\": \"tree-vertical\",\n    \"tags\": [],\n    \"title\": \"From Top to Bottom Tree\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"treemap\"\n    ],\n    \"id\": \"treemap-disk\",\n    \"tags\": [],\n    \"title\": \"Disk Usage\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"treemap\"\n    ],\n    \"id\": \"treemap-drill-down\",\n    \"tags\": [],\n    \"title\": \"ECharts Option Query\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"treemap\"\n    ],\n    \"id\": \"treemap-obama\",\n    \"tags\": [],\n    \"title\": \"How $3.7 Trillion is Spent\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"treemap\"\n    ],\n    \"id\": \"treemap-show-parent\",\n    \"tags\": [],\n    \"title\": \"Show Parent Labels\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"treemap\"\n    ],\n    \"id\": \"treemap-simple\",\n    \"tags\": [],\n    \"title\": \"Basic Treemap\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"treemap\"\n    ],\n    \"id\": \"treemap-visual\",\n    \"tags\": [],\n    \"title\": \"Gradient Mapping\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"custom\",\n      \"dataZoom\"\n    ],\n    \"id\": \"wind-barb\",\n    \"tags\": [],\n    \"title\": \"Wind Barb\",\n    \"difficulty\": 10\n  }\n]","\n// THIS FILE IS GENERATED, DON'T MODIFY */\n\n/* eslint-disable  */\nexport const keywords = {\"grid\": 108210,\"series\": 1161721,\"pie\": 173151,\"legend\": 278319,\"right\": 12224,\"tooltip\": 188049,\"xAxis\": 374619,\"bar\": 182040,\"label\": 163527,\"emphasis\": 50000,\"formatter\": 62138,\"line\": 306801,\"data\": 232156,\"left\": 24464,\"top\": 18094,\"scatter\": 48954,\"type\": 92134,\"yAxis\": 238764,\"axisLabel\": 73604,\"legendHoverLink\": 14243,\"textStyle\": 129159,\"hoverAnimation\": 9062,\"dataZoom\": 90999,\"nameLocation\": 15800,\"nameTextStyle\": 30596,\"nameGap\": 14640,\"singleAxis\": 15977,\"splitLine\": 30047,\"nameRotate\": 10483,\"inverse\": 12997,\"boundaryGap\": 18533,\"clockwise\": 4411,\"lineStyle\": 81857,\"selectedOffset\": 2984,\"width\": 17962,\"slider\": 28321,\"dataBackground\": 2287,\"areaStyle\": 19428,\"color\": 94439,\"height\": 7954,\"orient\": 17218,\"align\": 10373,\"symbol\": 35613,\"xAxisIndex\": 15405,\"stack\": 10602,\"clipOverflow\": 3229,\"center\": 9827,\"padding\": 12855,\"itemStyle\": 143518,\"itemGap\": 11914,\"shadowBlur\": 17233,\"shadowColor\": 13929,\"normal\": 211293,\"borderColor\": 20648,\"shadowOffsetX\": 11499,\"shadowOffsetY\": 9210,\"opacity\": 12301,\"heatmap\": 13825,\"value\": 21111,\"fillerColor\": 797,\"borderWidth\": 15576,\"itemWidth\": 7123,\"effectScatter\": 31179,\"coordinateSystem\": 15302,\"axisLine\": 53628,\"axisTick\": 38765,\"selectedMode\": 15177,\"fontSize\": 14906,\"inactiveColor\": 5720,\"selected\": 10921,\"gauge\": 55176,\"markLine\": 65539,\"handleStyle\": 1852,\"borderType\": 5717,\"title\": 158568,\"show\": 82000,\"length\": 4814,\"zlevel\": 22293,\"labelPrecision\": 746,\"position\": 48349,\"labelFormatter\": 727,\"alignWithLabel\": 3785,\"interval\": 28810,\"showDetail\": 694,\"yAxisIndex\": 10560,\"showDataShadow\": 591,\"realtime\": 2611,\"onZero\": 3690,\"silent\": 22883,\"radar\": 61070,\"axisPointer\": 23175,\"trigger\": 15344,\"barCategoryGap\": 3511,\"splitNumber\": 19992,\"inside\": 32482,\"name\": 61072,\"showSymbol\": 4778,\"containLabel\": 6413,\"offset\": 15619,\"max\": 12538,\"backgroundColor\": 32864,\"visualMap\": 95262,\"fontStyle\": 14443,\"fontWeight\": 11970,\"fontFamily\": 10141,\"symbolSize\": 21077,\"blurSize\": 360,\"geo\": 65283,\"radius\": 8533,\"markArea\": 19906,\"map\": 102385,\"brush\": 29508,\"parallel\": 20673,\"parallelAxis\": 13713,\"gridIndex\": 20650,\"piecewise\": 25231,\"showContent\": 6960,\"zoom\": 3997,\"polar\": 23175,\"controller\": 2892,\"radiusAxis\": 24146,\"angleAxis\": 18771,\"toolbox\": 101543,\"timeline\": 34619,\"precision\": 3306,\"curveness\": 1378,\"x\": 2753,\"valueIndex\": 2807,\"itemHeight\": 5180,\"icon\": 10336,\"valueDim\": 2013,\"symbolOffset\": 10017,\"y\": 1590,\"transitionDuration\": 3814,\"radarIndex\": 715,\"extraCssText\": 3640,\"animation\": 17864,\"animationThreshold = 2000\": 11727,\"minInterval\": 11278,\"animationDelay\": 7620,\"layoutCenter\": 2348,\"animationDurationUpdate\": 6972,\"animationEasingUpdate\": 6816,\"animationDelayUpdate\": 6642,\"symbolRotate\": 10221,\"feature\": 50238,\"axis\": 1794,\"crossStyle\": 1830,\"funnel\": 11042,\"scaleLimit\": 4792,\"roam\": 7112,\"itemSize\": 1966,\"showTitle\": 1851,\"smooth\": 5185,\"saveAsImage\": 9915,\"showAllSymbol\": 3417,\"polarIndex\": 5235,\"graph\": 76898,\"layout\": 2633,\"excludeComponents\": 447,\"restore\": 3693,\"dataView\": 10258,\"magicType\": 10505,\"iconStyle\": 9088,\"nodeScaleRatio\": 892,\"hoverLayerThreshold\": 6480,\"textAlign\": 9402,\"splitArea\": 16447,\"nameMap\": 4584,\"text\": 11691,\"pixelRatio\": 357,\"readOnly\": 491,\"optionToContent\": 936,\"lang\": 549,\"textareaColor\": 233,\"textareaBorderColor\": 177,\"option\": 2003,\"seriesIndex\": 4483,\"back\": 199,\"rect\": 323,\"polygon\": 254,\"min\": 16646,\"scale\": 14303,\"logBase\": 7456,\"start\": 2889,\"z\": 15867,\"link\": 5348,\"textBaseline\": 4210,\"subtext\": 5086,\"sublink\": 2618,\"subtarget\": 2373,\"subtextStyle\": 7732,\"triggerEvent\": 9175,\"blendMode\": 6359,\"progressiveThreshold\": 4699,\"continuous\": 42105,\"lines\": 31608,\"markPoint\": 81254,\"roseType\": 4221,\"animationEasing\": 8836,\"animationDuration\": 9562,\"calculable\": 3953,\"progressive\": 5761,\"treemap\": 16948,\"links\": 9573,\"edgeSymbol\": 1211,\"bottom\": 13969,\"edges\": 1122,\"edgeLabel\": 1685,\"edgeSymbolSize\": 769,\"focusNodeAdjacency\": 888,\"draggable\": 965,\"force\": 5601,\"geoIndex\": 2856,\"circular\": 1862,\"avoidLabelOverlap\": 3694,\"target\": 5476,\"coord\": 3995,\"startValue\": 2182,\"triggerOn\": 6741,\"showDelay\": 3535,\"alwaysShowContent\": 4928,\"enterable\": 3871,\"hideDelay\": 3018,\"step\": 3437,\"detail\": 5434,\"startAngle\": 5421,\"handleIcon\": 1051,\"handleSize\": 932,\"zoomLock\": 1979,\"throttle\": 1757,\"boxplot\": 6233,\"candlestick\": 14005,\"sankey\": 10101,\"loop\": 678,\"rewind\": 439,\"controlStyle\": 1269,\"labelLine\": 17838,\"distance\": 452,\"rotate\": 4666,\"margin\": 4342,\"barWidth\": 6641,\"category\": 1318,\"barGap\": 4832,\"nodes\": 2085,\"pieces\": 2683,\"smoothMonotone\": 2203,\"itemSymbol\": 882,\"axisType\": 902,\"currentIndex\": 583,\"effectType\": 1364,\"areaColor\": 2808,\"showEffectOn\": 1285,\"rippleEffect\": 3617,\"minAngle\": 2527,\"barMaxWidth\": 3073,\"rotateLabel\": 523,\"dimension\": 1922,\"end\": 1426,\"inRange\": 4604,\"outOfRange\": 2262,\"checkpointStyle\": 1036,\"sampling\": 2458,\"regions\": 6273,\"large\": 1055,\"showLegendSymbol\": 1600,\"layoutSize\": 1981,\"mapValueCalculation\": 1447,\"categories\": 4362,\"indicator\": 2995,\"barBorderRadius\": 1455,\"range\": 2009,\"connectNulls\": 3411,\"pointer\": 2665,\"effect\": 5446,\"parallelAxisDefault\": 927,\"coords\": 750,\"shadowStyle\": 1670,\"largeThreshold\": 754,\"hoverLink\": 1276,\"repulsion\": 865,\"textGap\": 1121,\"breadcrumb\": 828,\"baseline\": 1316,\"endAngle\": 895,\"period\": 1153,\"brushType\": 1421,\"minOpacity\": 216,\"brushLink\": 913,\"brushMode\": 465,\"transformable\": 418,\"brushStyle\": 507,\"throttleType\": 448,\"throttleDelay\": 369,\"removeOnClick\": 648,\"inBrush\": 500,\"outOfBrush\": 466,\"offsetCenter\": 981,\"barMinHeight\": 2279,\"parallelIndex\": 235,\"nodeClick\": 732,\"source\": 869,\"color0\": 210,\"filterMode\": 2252,\"tiled\": 352,\"autoPlay\": 496,\"playInterval\": 440,\"sort\": 484,\"polyline\": 929,\"initLayout\": 966,\"controlPosition\": 408,\"children\": 89,\"contentToOption\": 590,\"maxOpacity\": 215,\"squareRatio\": 281,\"leafDepth\": 347,\"zoomToNodeRatio\": 300,\"childrenVisibleMin\": 303,\"shape\": 1054,\"length2\": 891,\"endValue\": 1107,\"gravity\": 634,\"edgeLength\": 662,\"layoutAnimation\": 485,\"colorAlpha\": 389,\"constantSpeed\": 451,\"trailLength\": 530,\"dim\": 313,\"areaSelectStyle\": 253,\"funnelAlign\": 334,\"buttonTextColor\": 177,\"buttonColor\": 205,\"levels\": 2267,\"textColor\": 178,\"lineX\": 46,\"lineY\": 32,\"showPlayBtn\": 64,\"showPrevBtn\": 43,\"showNextBtn\": 43,\"playIcon\": 90,\"stopIcon\": 48,\"prevIcon\": 39,\"nextIcon\": 36,\"ellipsis\": 76,\"clear\": 114,\"colorMappingBy\": 424,\"maxSize\": 131,\"minSize\": 147,\"gap\": 175,\"visibleMin\": 315,\"axisExpandable\": 134,\"layoutIterations\": 226,\"nodeGap\": 158,\"nodeWidth\": 134,\"axisExpandCenter\": 79,\"axisExpandCount\": 56,\"axisExpandWidth\": 51,\"boxWidth\": 46,\"gapWidth\": 78,\"borderColorSaturation\": 56,\"inactiveOpacity\": 51,\"keep\": 41,\"colorSaturation\": 343,\"visualDimension\": 471,\"id\": 138,\"borderColor0\": 67,\"emptyItemWidth\": 60,\"activeOpacity\": 43,\"radiusAxisIndex\": 574,\"angleAxisIndex\": 478,\"textPosition\": 232,\"minOpen\": 194,\"maxOpen\": 125,\"graphic\": 5617,\"elements\": 3108,\"image\": 673,\"group\": 488,\"$action\": 82,\"style\": 431,\"textVerticalAlign\": 13,\"fill\": 55,\"stroke\": 47,\"lineWidth\": 34,\"sector\": 93,\"bezier-curve\": 6,\"cpx2\": 1,\"cpy2\": 1,\"circle\": 256,\"arc\": 61,\"bezierCurve\": 61,\"onclick\": 101,\"onmouseover\": 32,\"font\": 17,\"bounding\": 75,\"cursor\": 54,\"themeRiver\": 11,\"confine\": 580,\"ring\": 103,\"ondragleave\": 3,\"ondragstart\": 4,\"ondragover\": 4,\"disabled\": 221,\"visualMin\": 44,\"visualMax\": 18,\"onmousemove\": 14,\"ondrag\": 8,\"ondragend\": 2,\"x2\": 7,\"x1\": 4,\"y1\": 2,\"y2\": 3,\"percent\": 6,\"ondrop\": 9,\"cx\": 7,\"smoothConstraint\": 20,\"cpx1\": 2,\"points\": 16,\"onmousewheel\": 13,\"onmouseout\": 7,\"barBorderWidth\": 2,\"ondragenter\": 2,\"onmouseup\": 1,\"cy\": 1,\"r\": 2,\"onmousedown\": 1,\"animationThreshold\": 1};\nexport const fullKeywordsList = [\"0\",\"1\",\"title\",\"show\",\"text\",\"link\",\"target\",\"textStyle\",\"color\",\"fontStyle\",\"fontWeight\",\"fontFamily\",\"fontSize\",\"textAlign\",\"textBaseline\",\"subtext\",\"sublink\",\"subtarget\",\"subtextStyle\",\"padding\",\"itemGap\",\"zlevel\",\"z\",\"left\",\"top\",\"right\",\"bottom\",\"backgroundColor\",\"borderColor\",\"borderWidth\",\"shadowBlur\",\"shadowColor\",\"shadowOffsetX\",\"shadowOffsetY\",\"legend\",\"width\",\"height\",\"orient\",\"align\",\"itemWidth\",\"itemHeight\",\"formatter\",\"selectedMode\",\"inactiveColor\",\"selected\",\"tooltip\",\"data\",\"name\",\"icon\",\"grid\",\"containLabel\",\"trigger\",\"axisPointer\",\"type\",\"axis\",\"snap\",\"label\",\"precision\",\"margin\",\"lineStyle\",\"opacity\",\"shadowStyle\",\"crossStyle\",\"position\",\"extraCssText\",\"xAxis\",\"gridIndex\",\"offset\",\"nameLocation\",\"nameTextStyle\",\"nameGap\",\"nameRotate\",\"inverse\",\"boundaryGap\",\"min\",\"max\",\"scale\",\"splitNumber\",\"minInterval\",\"interval\",\"logBase\",\"silent\",\"triggerEvent\",\"axisLine\",\"onZero\",\"axisTick\",\"alignWithLabel\",\"inside\",\"length\",\"axisLabel\",\"rotate\",\"showMinLabel\",\"showMaxLabel\",\"baseline\",\"splitLine\",\"splitArea\",\"areaStyle\",\"value\",\"tiggerTooltip\",\"status\",\"handle\",\"size\",\"throttle\",\"yAxis\",\"polar\",\"center\",\"radius\",\"radiusAxis\",\"polarIndex\",\"angleAxis\",\"startAngle\",\"clockwise\",\"radar\",\"shape\",\"indicator\",\"dataZoom\",\"disabled\",\"xAxisIndex\",\"yAxisIndex\",\"radiusAxisIndex\",\"angleAxisIndex\",\"filterMode\",\"start\",\"end\",\"startValue\",\"endValue\",\"minSpan\",\"maxSpan\",\"minValueSpan\",\"maxValueSpan\",\"zoomLock\",\"dataBackground\",\"fillerColor\",\"handleIcon\",\"handleSize\",\"handleStyle\",\"borderType\",\"labelPrecision\",\"labelFormatter\",\"showDetail\",\"showDataShadow\",\"realtime\",\"visualMap\",\"range\",\"calculable\",\"textGap\",\"dimension\",\"seriesIndex\",\"hoverLink\",\"inRange\",\"outOfRange\",\"controller\",\"pieces\",\"categories\",\"minOpen\",\"maxOpen\",\"showLabel\",\"itemSymbol\",\"showContent\",\"alwaysShowContent\",\"triggerOn\",\"showDelay\",\"hideDelay\",\"enterable\",\"confine\",\"transitionDuration\",\"toolbox\",\"itemSize\",\"showTitle\",\"feature\",\"saveAsImage\",\"excludeComponents\",\"iconStyle\",\"normal\",\"textPosition\",\"emphasis\",\"pixelRatio\",\"restore\",\"dataView\",\"readOnly\",\"optionToContent\",\"contentToOption\",\"lang\",\"textareaColor\",\"textareaBorderColor\",\"textColor\",\"buttonColor\",\"buttonTextColor\",\"zoom\",\"back\",\"magicType\",\"line\",\"bar\",\"stack\",\"tiled\",\"option\",\"brush\",\"rect\",\"polygon\",\"lineX\",\"lineY\",\"keep\",\"clear\",\"brushLink\",\"geoIndex\",\"brushType\",\"brushMode\",\"transformable\",\"brushStyle\",\"throttleType\",\"throttleDelay\",\"removeOnClick\",\"inBrush\",\"outOfBrush\",\"geo\",\"map\",\"roam\",\"aspectScale\",\"boundingCoords\",\"scaleLimit\",\"nameMap\",\"itemStyle\",\"layoutCenter\",\"layoutSize\",\"regions\",\"areaColor\",\"parallel\",\"layout\",\"axisExpandable\",\"axisExpandCenter\",\"axisExpandCount\",\"axisExpandWidth\",\"axisExpandTriggerOn\",\"parallelAxisDefault\",\"parallelAxis\",\"dim\",\"parallelIndex\",\"areaSelectStyle\",\"singleAxis\",\"timeline\",\"axisType\",\"currentIndex\",\"autoPlay\",\"rewind\",\"loop\",\"playInterval\",\"controlPosition\",\"symbol\",\"symbolSize\",\"symbolRotate\",\"symbolOffset\",\"checkpointStyle\",\"animation\",\"animationDuration\",\"animationEasing\",\"controlStyle\",\"showPlayBtn\",\"showPrevBtn\",\"showNextBtn\",\"playIcon\",\"stopIcon\",\"prevIcon\",\"nextIcon\",\"graphic\",\"elements\",\"id\",\"$action\",\"bounding\",\"invisible\",\"cursor\",\"draggable\",\"progressive\",\"children\",\"onclick\",\"onmouseover\",\"onmouseout\",\"onmousemove\",\"onmousewheel\",\"onmousedown\",\"onmouseup\",\"ondrag\",\"ondragstart\",\"ondragend\",\"ondragenter\",\"ondragleave\",\"ondragover\",\"ondrop\",\"style\",\"image\",\"x\",\"y\",\"fill\",\"stroke\",\"lineWidth\",\"font\",\"textVerticalAlign\",\"cx\",\"cy\",\"r\",\"r0\",\"endAngle\",\"points\",\"smooth\",\"smoothConstraint\",\"x1\",\"y1\",\"x2\",\"y2\",\"percent\",\"cpx1\",\"cpy1\",\"cpx2\",\"cpy2\",\"calendar\",\"cellSize\",\"dayLabel\",\"firstDay\",\"monthLabel\",\"yearLabel\",\"series\",\"coordinateSystem\",\"showSymbol\",\"showAllSymbol\",\"hoverAnimation\",\"legendHoverLink\",\"connectNulls\",\"clipOverflow\",\"step\",\"smoothMonotone\",\"sampling\",\"markPoint\",\"valueIndex\",\"valueDim\",\"coord\",\"animationThreshold\",\"animationDelay\",\"animationDurationUpdate\",\"animationEasingUpdate\",\"animationDelayUpdate\",\"markLine\",\"curveness\",\"markArea\",\"barBorderRadius\",\"barWidth\",\"barMaxWidth\",\"barMinHeight\",\"barGap\",\"barCategoryGap\",\"selectedOffset\",\"minAngle\",\"roseType\",\"avoidLabelOverlap\",\"stillShowZeroSum\",\"labelLine\",\"length2\",\"animationType\",\"large\",\"largeThreshold\",\"effectType\",\"showEffectOn\",\"rippleEffect\",\"period\",\"radarIndex\",\"squareRatio\",\"leafDepth\",\"nodeClick\",\"zoomToNodeRatio\",\"levels\",\"visualDimension\",\"visualMin\",\"visualMax\",\"colorAlpha\",\"colorSaturation\",\"colorMappingBy\",\"visibleMin\",\"childrenVisibleMin\",\"ellipsis\",\"gapWidth\",\"borderColorSaturation\",\"breadcrumb\",\"emptyItemWidth\",\"boxWidth\",\"barMinWidth\",\"color0\",\"borderColor0\",\"blurSize\",\"minOpacity\",\"maxOpacity\",\"mapValueCalculation\",\"showLegendSymbol\",\"inactiveOpacity\",\"activeOpacity\",\"polyline\",\"effect\",\"delay\",\"constantSpeed\",\"trailLength\",\"coords\",\"circular\",\"rotateLabel\",\"force\",\"initLayout\",\"repulsion\",\"gravity\",\"edgeLength\",\"layoutAnimation\",\"nodeScaleRatio\",\"focusNodeAdjacency\",\"edgeSymbol\",\"edgeSymbolSize\",\"edgeLabel\",\"category\",\"nodes\",\"links\",\"source\",\"edges\",\"nodeWidth\",\"nodeGap\",\"layoutIterations\",\"minSize\",\"maxSize\",\"sort\",\"gap\",\"funnelAlign\",\"distance\",\"pointer\",\"offsetCenter\",\"detail\",\"symbolPosition\",\"symbolRepeat\",\"symbolRepeatDirection\",\"symbolMargin\",\"symbolClip\",\"symbolBoundingData\",\"symbolPatternSize\",\"singleAxisIndex\",\"date\",\"progressiveThreshold\",\"blendMode\",\"hoverLayerThreshold\",\"useUTC\"];","var DebugRect = (function () {\n    function DebugRect(style) {\n        var dom = this.dom = document.createElement('div');\n        dom.className = 'ec-debug-dirty-rect';\n        style = Object.assign({}, style);\n        Object.assign(style, {\n            backgroundColor: 'rgba(0, 0, 255, 0.2)',\n            border: '1px solid #00f'\n        });\n        dom.style.cssText = \"\\nposition: absolute;\\nopacity: 0;\\ntransition: opacity 0.5s linear;\\npointer-events: none;\\n\";\n        for (var key in style) {\n            if (style.hasOwnProperty(key)) {\n                dom.style[key] = style[key];\n            }\n        }\n    }\n    DebugRect.prototype.update = function (rect) {\n        var domStyle = this.dom.style;\n        domStyle.width = rect.width + 'px';\n        domStyle.height = rect.height + 'px';\n        domStyle.left = rect.x + 'px';\n        domStyle.top = rect.y + 'px';\n    };\n    DebugRect.prototype.hide = function () {\n        this.dom.style.opacity = '0';\n    };\n    DebugRect.prototype.show = function () {\n        var _this = this;\n        clearTimeout(this._hideTimeout);\n        this.dom.style.opacity = '1';\n        this._hideTimeout = setTimeout(function () {\n            _this.hide();\n        }, 500);\n    };\n    return DebugRect;\n}());\nexport default function (zr, opts) {\n    opts = opts || {};\n    var painter = zr.painter;\n    if (!painter.getLayers) {\n        throw new Error('Debug dirty rect can only been used on canvas renderer.');\n    }\n    if (painter.isSingleCanvas()) {\n        throw new Error('Debug dirty rect can only been used on zrender inited with container.');\n    }\n    var debugViewRoot = document.createElement('div');\n    debugViewRoot.style.cssText = \"\\nposition:absolute;\\nleft:0;\\ntop:0;\\nright:0;\\nbottom:0;\\npointer-events:none;\\n\";\n    debugViewRoot.className = 'ec-debug-dirty-rect-container';\n    var debugRects = [];\n    var dom = zr.dom;\n    dom.appendChild(debugViewRoot);\n    var computedStyle = getComputedStyle(dom);\n    if (computedStyle.position === 'static') {\n        dom.style.position = 'relative';\n    }\n    zr.on('rendered', function () {\n        if (painter.getLayers) {\n            var idx_1 = 0;\n            painter.eachBuiltinLayer(function (layer) {\n                if (!layer.debugGetPaintRects) {\n                    return;\n                }\n                var paintRects = layer.debugGetPaintRects();\n                for (var i = 0; i < paintRects.length; i++) {\n                    if (!debugRects[idx_1]) {\n                        debugRects[idx_1] = new DebugRect(opts.style);\n                        debugViewRoot.appendChild(debugRects[idx_1].dom);\n                    }\n                    debugRects[idx_1].show();\n                    debugRects[idx_1].update(paintRects[i]);\n                    idx_1++;\n                }\n            });\n            for (var i = idx_1; i < debugRects.length; i++) {\n                debugRects[i].hide();\n            }\n        }\n    });\n}\n","import { render, staticRenderFns } from \"./CodeAce.vue?vue&type=template&id=37ad02ad&\"\nimport script from \"./CodeAce.vue?vue&type=script&lang=js&\"\nexport * from \"./CodeAce.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CodeAce.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/Users/s/sushuangwork/met/act/tigall/echarts/echarts-examples-next/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('37ad02ad')) {\n      api.createRecord('37ad02ad', component.options)\n    } else {\n      api.reload('37ad02ad', component.options)\n    }\n    module.hot.accept(\"./CodeAce.vue?vue&type=template&id=37ad02ad&\", function () {\n      api.rerender('37ad02ad', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/editor/CodeAce.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeAce.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeAce.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeAce.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeAce.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeAce.vue?vue&type=template&id=37ad02ad&\"","import { render, staticRenderFns } from \"./CodeMonaco.vue?vue&type=template&id=f5fd2472&\"\nimport script from \"./CodeMonaco.vue?vue&type=script&lang=js&\"\nexport * from \"./CodeMonaco.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CodeMonaco.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/Users/s/sushuangwork/met/act/tigall/echarts/echarts-examples-next/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('f5fd2472')) {\n      api.createRecord('f5fd2472', component.options)\n    } else {\n      api.reload('f5fd2472', component.options)\n    }\n    module.hot.accept(\"./CodeMonaco.vue?vue&type=template&id=f5fd2472&\", function () {\n      api.rerender('f5fd2472', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/editor/CodeMonaco.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeMonaco.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeMonaco.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeMonaco.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeMonaco.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeMonaco.vue?vue&type=template&id=f5fd2472&\"","import { render, staticRenderFns } from \"./Editor.vue?vue&type=template&id=3a753434&\"\nimport script from \"./Editor.vue?vue&type=script&lang=js&\"\nexport * from \"./Editor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Editor.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/Users/s/sushuangwork/met/act/tigall/echarts/echarts-examples-next/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('3a753434')) {\n      api.createRecord('3a753434', component.options)\n    } else {\n      api.reload('3a753434', component.options)\n    }\n    module.hot.accept(\"./Editor.vue?vue&type=template&id=3a753434&\", function () {\n      api.rerender('3a753434', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/editor/Editor.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=template&id=3a753434&\"","import { render, staticRenderFns } from \"./Preview.vue?vue&type=template&id=66bf6e1f&\"\nimport script from \"./Preview.vue?vue&type=script&lang=js&\"\nexport * from \"./Preview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Preview.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/Users/s/sushuangwork/met/act/tigall/echarts/echarts-examples-next/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('66bf6e1f')) {\n      api.createRecord('66bf6e1f', component.options)\n    } else {\n      api.reload('66bf6e1f', component.options)\n    }\n    module.hot.accept(\"./Preview.vue?vue&type=template&id=66bf6e1f&\", function () {\n      api.rerender('66bf6e1f', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/editor/Preview.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Preview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Preview.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Preview.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Preview.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Preview.vue?vue&type=template&id=66bf6e1f&\"","import { render, staticRenderFns } from \"./View.vue?vue&type=template&id=3d6bc75e&\"\nimport script from \"./View.vue?vue&type=script&lang=js&\"\nexport * from \"./View.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/Users/s/sushuangwork/met/act/tigall/echarts/echarts-examples-next/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('3d6bc75e')) {\n      api.createRecord('3d6bc75e', component.options)\n    } else {\n      api.reload('3d6bc75e', component.options)\n    }\n    module.hot.accept(\"./View.vue?vue&type=template&id=3d6bc75e&\", function () {\n      api.rerender('3d6bc75e', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/editor/View.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./View.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./View.vue?vue&type=script&lang=js&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./View.vue?vue&type=template&id=3d6bc75e&\"","import {store} from '../common/store';\nimport {URL_PARAMS, SCRIPT_URLS} from '../common/config';\n\nconst hasRootPath = store.code.indexOf('ROOT_PATH') >= 0;\nconst rootPathCode = hasRootPath ? `var ROOT_PATH = '${store.cdnRoot}'` : '';\n\nexport function download() {\n    const code = `<!DOCTYPE html>\n<html style=\"height: 100%\">\n    <head>\n        <meta charset=\"utf-8\">\n    </head>\n    <body style=\"height: 100%; margin: 0\">\n        <div id=\"container\" style=\"height: 100%\"></div>\n\n        <script type=\"text/javascript\" src=\"${SCRIPT_URLS.echartsMinJS}\"></script>\n        <!-- Uncomment this line if you want to dataTool extension\n        <script type=\"text/javascript\" src=\"${SCRIPT_URLS.echartsDir}/dist/extension/dataTool.min.js\"></script>\n        -->\n        <!-- Uncomment this line if you want to use gl extension\n        <script type=\"text/javascript\" src=\"${SCRIPT_URLS.echartsGLMinJS}\"></script>\n        -->\n        <!-- Uncomment this line if you want to echarts-stat extension\n        <script type=\"text/javascript\" src=\"${SCRIPT_URLS.echartsStatMinJS}\"></script>\n        -->\n        <!-- Uncomment this line if you want to use map\n        <script type=\"text/javascript\" src=\"${SCRIPT_URLS.echartsDir}/map/js/china.js\"></script>\n        <script type=\"text/javascript\" src=\"${SCRIPT_URLS.echartsDir}/map/js/world.js\"></script>\n        -->\n        <!-- Uncomment these two lines if you want to use bmap extension\n        <script type=\"text/javascript\" src=\"https://api.map.baidu.com/api?v=2.0&ak=<Your Key Here>\"></script>\n        <script type=\"text/javascript\" src=\"${SCRIPT_URLS.echartsDir}/dist/extension/bmap.min.js\"></script>\n        -->\n\n        <script type=\"text/javascript\">\nvar dom = document.getElementById(\"container\");\nvar myChart = echarts.init(dom);\nvar app = {};\n\nvar option;\n\n${rootPathCode}\n\n${store.code}\n\nif (option && typeof option === 'object') {\n    myChart.setOption(option);\n}\n\n        </script>\n    </body>\n</html>\n    `;\n    const file = new Blob([code], {\n        type: 'text/html;charset=UTF-8',\n        encoding: 'UTF-8'\n    });\n    const a = document.createElement('a');\n    a.href = URL.createObjectURL(file);\n    a.download = URL_PARAMS.c + '.html';\n    a.click();\n}","import showDebugDirtyRect from '../dep/showDebugDirtyRect';\n\nexport function createSandbox(optionUpdated) {\n    let appEnv = {};\n    let gui;\n\n    let _intervalIdList = [];\n    let _timeoutIdList = [];\n\n    const _oldSetTimeout = window.setTimeout;\n    const _oldSetInterval = window.setInterval;\n\n    function setTimeout(func, delay) {\n        var id = _oldSetTimeout(func, delay);\n        _timeoutIdList.push(id);\n        return id;\n    };\n    function setInterval(func, gap) {\n        var id = _oldSetInterval(func, gap);\n        _intervalIdList.push(id);\n        return id;\n    };\n    function _clearTimeTickers() {\n        for (var i = 0; i < _intervalIdList.length; i++) {\n            clearInterval(_intervalIdList[i]);\n        }\n        for (var i = 0; i < _timeoutIdList.length; i++) {\n            clearTimeout(_timeoutIdList[i]);\n        }\n        _intervalIdList = [];\n        _timeoutIdList = [];\n    }\n    const _events = [];\n    function _wrapOnMethods(chart) {\n        const oldOn = chart.on;\n        const oldSetOption = chart.setOption;\n        chart.on = function (eventName) {\n            const res = oldOn.apply(chart, arguments);\n            _events.push(eventName);\n            return res;\n        };\n        chart.setOption = function () {\n            const res = oldSetOption.apply(this, arguments);\n            optionUpdated && optionUpdated(chart);\n            return res;\n        };\n    }\n\n    function _clearChartEvents(chart) {\n        _events.forEach(function (eventName) {\n            if (chart) {\n                chart.off(eventName);\n            }\n        });\n\n        _events.length = 0;\n    }\n\n    let chartInstance;\n\n    return {\n        resize() {\n            if (chartInstance) {\n                chartInstance.resize();\n            }\n        },\n\n        dispose() {\n            if (chartInstance) {\n                chartInstance.dispose();\n                chartInstance = null;\n            }\n        },\n\n        getDataURL() {\n            return chartInstance.getDataURL({\n                pixelRatio: 2,\n                excludeComponents: ['toolbox']\n            });\n        },\n\n        run(el, store) {\n\n            if (!chartInstance) {\n                chartInstance = echarts.init(el, store.darkMode ? 'dark' : '', {\n                    renderer: store.renderer,\n                    useDirtyRect: store.useDirtyRect\n                });\n                if (store.useDirtyRect && store.renderer === 'canvas') {\n                    try {\n                        showDebugDirtyRect(chartInstance.getZr(), {\n                            autoHideDelay: 500\n                        });\n                    }\n                    catch (e) {\n                        console.error(e);\n                    }\n                }\n                _wrapOnMethods(chartInstance);\n            }\n\n            // if (this.hasEditorError()) {\n            //     log(this.$t('editor.errorInEditor'), 'error');\n            //     return;\n            // }\n\n            // TODO Scope the variables in component.\n            _clearTimeTickers();\n            _clearChartEvents(chartInstance);\n            // Reset\n            appEnv.config = null;\n\n            // run the code\n\n            const compiledCode = store.runCode;\n\n            const func = new Function(\n                'myChart', 'app', 'setTimeout', 'setInterval', 'ROOT_PATH',\n                'var option;\\n' + compiledCode + '\\nreturn option;'\n            );\n            const option = func(chartInstance, appEnv, setTimeout, setInterval, store.cdnRoot);\n            let updateTime = 0;\n\n            if (option && typeof option === 'object') {\n                const startTime = +new Date();\n                chartInstance.setOption(option, true);\n                const endTime = +new Date();\n                updateTime = endTime - startTime;\n            }\n\n            if (gui) {\n                $(gui.domElement).remove();\n                gui.destroy();\n                gui = null;\n            }\n\n            if (appEnv.config) {\n                gui = new dat.GUI({\n                    autoPlace: false\n                });\n                $(gui.domElement).css({\n                    position: 'absolute',\n                    right: 5,\n                    top: 0,\n                    zIndex: 1000\n                });\n                $('.right-container').append(gui.domElement);\n\n                var configParameters = appEnv.configParameters || {};\n                for (var name in appEnv.config) {\n                    var value = appEnv.config[name];\n                    if (name !== 'onChange' && name !== 'onFinishChange') {\n                        var isColor = false;\n                        // var value = obj;\n                        var controller;\n                        if (configParameters[name]) {\n                            if (configParameters[name].options) {\n                                controller = gui.add(appEnv.config, name, configParameters[name].options);\n                            }\n                            else if (configParameters[name].min != null) {\n                                controller = gui.add(appEnv.config, name, configParameters[name].min, configParameters[name].max);\n                            }\n                        }\n                        if (typeof obj === 'string') {\n                            try {\n                                var colorArr = echarts.color.parse(value);\n                                isColor = !!colorArr;\n                                if (isColor) {\n                                    value = echarts.color.stringify(colorArr, 'rgba');\n                                }\n                            }\n                            catch (e) {}\n                        }\n                        if (!controller) {\n                            controller = gui[isColor ? 'addColor' : 'add'](appEnv.config, name);\n                        }\n                        appEnv.config.onChange && controller.onChange(appEnv.config.onChange);\n                        appEnv.config.onFinishChange && controller.onFinishChange(appEnv.config.onFinishChange);\n                    }\n                }\n            }\n\n            return updateTime;\n        }\n    };\n};","import { render, staticRenderFns } from \"./ExampleCard.vue?vue&type=template&id=01229e96&\"\nimport script from \"./ExampleCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ExampleCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ExampleCard.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/Users/s/sushuangwork/met/act/tigall/echarts/echarts-examples-next/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('01229e96')) {\n      api.createRecord('01229e96', component.options)\n    } else {\n      api.reload('01229e96', component.options)\n    }\n    module.hot.accept(\"./ExampleCard.vue?vue&type=template&id=01229e96&\", function () {\n      api.rerender('01229e96', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/explore/ExampleCard.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExampleCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExampleCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExampleCard.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExampleCard.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExampleCard.vue?vue&type=template&id=01229e96&\"","import { render, staticRenderFns } from \"./Explore.vue?vue&type=template&id=050c84ae&\"\nimport script from \"./Explore.vue?vue&type=script&lang=js&\"\nexport * from \"./Explore.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Explore.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/Users/s/sushuangwork/met/act/tigall/echarts/echarts-examples-next/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('050c84ae')) {\n      api.createRecord('050c84ae', component.options)\n    } else {\n      api.reload('050c84ae', component.options)\n    }\n    module.hot.accept(\"./Explore.vue?vue&type=template&id=050c84ae&\", function () {\n      api.rerender('050c84ae', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/explore/Explore.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Explore.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Explore.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Explore.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Explore.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Explore.vue?vue&type=template&id=050c84ae&\"","import Vue from 'vue';\nimport VueI18n from 'vue-i18n';\nimport messages from './common/i18n';\nimport EditorPage from './editor/Editor.vue';\nimport ExplorePage from './explore/Explore.vue';\nimport ViewPage from './editor/View.vue';\nimport {store} from './common/store';\nimport VueScrollactive from 'vue-scrollactive';\n\nVue.use(VueScrollactive);\n\n/**\n *\n * @param {*} el\n * @param {Object} option\n * @param {string} [option.cdnRoot]\n * @param {string} [option.page] editor | explore\n * @param {string} [option.locale] zh | en\n * @param {string} [option.version]\n */\nexport function init(el, option) {\n    const i18n = new VueI18n({\n        locale: option.locale,\n        fallbackLocale: 'en',\n        messages\n    });\n    store.cdnRoot = option.cdnRoot;\n    store.version = option.version;\n    store.locale = option.locale || 'en';\n\n\n    if (typeof el === 'string') {\n        el = document.querySelector(el);\n    }\n    if (!el) {\n        throw new Error('Can\\'t find el.');\n    }\n\n    const container = document.createElement('div');\n    el.appendChild(container);\n\n    new Vue({\n        i18n,\n        el: container,\n        render: h => {\n            return h(({\n                editor: EditorPage,\n                explore: ExplorePage,\n                view: ViewPage\n            })[option.page] || ExplorePage);\n        }\n    });\n}","module.exports = Vue;"],"sourceRoot":""}