{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/credits/credit-img-06.png","webpack:///./src/assets/thematics/en/policy/logos.png","webpack:///./src/assets/thematics/en/sar/logos.png","webpack:///./src/assets/flags/lo.png","webpack:///./src/assets/Ministry_of_AF_logo.png","webpack:///./src/components/Header/ArxTools/style.scss?b976","webpack:///./src/assets/credits/credit-img-04.png","webpack:///./src/components/ThematicItem/style.scss?e520","webpack:///./src/assets/credits/credit-img-09.png","webpack:///./src/assets/thematics/lo/policy/result_example_2.png","webpack:///./src/assets/thematics/lo/sava/SAVA.png","webpack:///./src/assets/thematics/en/policy/POLICY.png","webpack:///./src/components/ArxMap/MapZoom/style.scss?767c","webpack:///./src/components/ArxMap/style.scss?2891","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/locales sync [A-Za-z0-9-_,\\s]+\\.json$/","webpack:///./src/assets/thematics/lo/policy/result_example_1.png","webpack:///./src/assets/thematics/en/sava/SAVA.png","webpack:///./src/assets/rectangle-slider.svg","webpack:///./src/assets/thematics/lo/sar/national_result_example_2.png","webpack:///./src/views/ThematicPage/style.scss?759e","webpack:///./src/assets/flags sync ^\\.\\/.*\\.png$","webpack:///./src/assets/credits sync ^\\.\\/.*$","webpack:///./src/assets/thematics/lo/policy/logos.png","webpack:///./src/assets/logo_MONRE.png","webpack:///./src/widgets/Statistics/style.scss?c998","webpack:///./src/assets/thematics/en/aez/AEZ.png","webpack:///./src/assets/thematics sync ^\\.\\/.*$","webpack:///./src/components/ArxSideBar/style.scss?15f7","webpack:///./src/components/Header/LocaleSwitcher/style.scss?2542","webpack:///./src/assets/credits/credit-img-08.png","webpack:///./src/widgets/Layers/style.scss","webpack:///./src/assets/thematics/en/policy/result_example_1.png","webpack:///./src/assets/credits/logo_arxit.png","webpack:///./src/components/DownloadLayer/style.scss?11ca","webpack:///./src/assets/thematics/lo/sar/logos.png","webpack:///./src/assets/thematics/en sync ^\\.\\/.*$","webpack:///./src/widgets/Search/style.scss?8258","webpack:///./src/assets/thematics/lo/policy/POLICY.png","webpack:///./src/css/style.scss?99c4","webpack:///./src/assets/thematics/en/sar/national_result_example_2.png","webpack:///./src/widgets/MapComparison/templates/ArxSplitter/style.scss?c4c0","webpack:///./src/components/Header/style.scss?7fbf","webpack:///./src/widgets/MapComparison/templates/FilterLayer/style.scss?1550","webpack:///./src/assets/thematics/lo/sar/national_result_example_1.png","webpack:///./src/views/Credits/style.scss?e151","webpack:///./src/widgets/MapComparison/style.scss?e2a4","webpack:///./src/assets/thematics/en/policy/result_example_2.png","webpack:///./src/widgets/Statistics/templates/StatsLayer/style.scss?b107","webpack:///./src/components/ArxMap/MapLayer/style.scss?a990","webpack:///./src/widgets/Layers/templates/ExpandableCard/style.scss?ae31","webpack:///./src/App.vue?ba7c","webpack:///./src/components/Header/template.html","webpack:///./src/components/Header/ArxTools/template.html","webpack:///./src/components/Header/ArxTools/ArxTools.vue","webpack:///./src/components/Header/ArxTools/ArxTools.vue?73eb","webpack:///./src/components/Header/ArxTools/ArxTools.vue?efda","webpack:///./src/services/queryService.ts","webpack:///./src/services/utilsService.ts","webpack:///./src/services/configService.ts","webpack:///./src/components/Header/LocaleSwitcher/template.html","webpack:///./src/components/Header/LocaleSwitcher/LocaleSwitcher.vue","webpack:///./src/components/Header/LocaleSwitcher/LocaleSwitcher.vue?1088","webpack:///./src/components/Header/LocaleSwitcher/LocaleSwitcher.vue?70d0","webpack:///./src/components/Header/Header.vue","webpack:///./src/components/Header/Header.vue?f678","webpack:///./src/components/Header/Header.vue?a549","webpack:///./src/components/ArxSideBar/template.html","webpack:///./src/widgets/Layers/template.html","webpack:///./src/widgets/Layers/templates/ExpandableCard/template.html","webpack:///./src/widgets/Layers/templates/ExpandableCard/ExpandableCard.vue","webpack:///./src/widgets/Layers/templates/ExpandableCard/ExpandableCard.vue?34a4","webpack:///./src/widgets/Layers/templates/ExpandableCard/ExpandableCard.vue?ae0b","webpack:///./src/components/ArxMap/MapLayer/template.html","webpack:///./src/components/ArxMap/TimeSlider/template.html","webpack:///./src/components/ArxMap/TimeSlider/TimeSlider.vue","webpack:///./src/components/ArxMap/TimeSlider/TimeSlider.vue?d98e","webpack:///./src/components/ArxMap/TimeSlider/TimeSlider.vue?0dce","webpack:///./src/services/popupService.ts","webpack:///./src/services/mappingService.ts","webpack:///./src/components/ArxMap/MapLayer/MapLayer.vue","webpack:///./src/components/ArxMap/MapLayer/MapLayer.vue?d0c1","webpack:///./src/components/ArxMap/MapLayer/MapLayer.vue?48d7","webpack:///./src/widgets/Layers/helper.ts","webpack:///./src/widgets/Layers/Layers.vue","webpack:///./src/widgets/Layers/Layers.vue?fc6e","webpack:///./src/widgets/Layers/Layers.vue?3624","webpack:///./src/widgets/MapComparison/template.html","webpack:///./src/widgets/MapComparison/templates/FilterLayer/template.html","webpack:///./src/widgets/MapComparison/templates/FilterLayer/FilterLayer.vue","webpack:///./src/widgets/MapComparison/templates/FilterLayer/FilterLayer.vue?2612","webpack:///./src/widgets/MapComparison/templates/FilterLayer/FilterLayer.vue?85bf","webpack:///./src/widgets/MapComparison/templates/ArxSplitter/template.html","webpack:///./src/widgets/MapComparison/templates/ArxSplitter/ArxSplitter.vue","webpack:///./src/widgets/MapComparison/templates/ArxSplitter/ArxSplitter.vue?a8ac","webpack:///./src/widgets/MapComparison/templates/ArxSplitter/ArxSplitter.vue?4f79","webpack:///./src/widgets/MapComparison/MapComparison.vue","webpack:///./src/widgets/MapComparison/MapComparison.vue?ab7d","webpack:///./src/widgets/MapComparison/MapComparison.vue?f2e8","webpack:///./src/widgets/Statistics/template.html","webpack:///./src/widgets/Statistics/templates/ArxBar.ts","webpack:///./src/widgets/Statistics/templates/ArxPie.ts","webpack:///./src/widgets/Statistics/templates/ArxLine.ts","webpack:///./src/widgets/Statistics/templates/StatsLayer/template.html","webpack:///./src/widgets/Statistics/templates/ArxRadar.ts","webpack:///./src/widgets/Statistics/templates/StatsLayer/StatsLayer.vue","webpack:///./src/widgets/Statistics/templates/StatsLayer/StatsLayer.vue?d82e","webpack:///./src/widgets/Statistics/templates/StatsLayer/StatsLayer.vue?ff39","webpack:///./src/widgets/Statistics/helper.ts","webpack:///./src/widgets/Statistics/Statistics.vue","webpack:///./src/widgets/Statistics/Statistics.vue?1813","webpack:///./src/widgets/Statistics/Statistics.vue?135a","webpack:///./src/components/ArxSideBar/ArxSideBar.vue","webpack:///./src/components/ArxSideBar/ArxSideBar.vue?93f7","webpack:///./src/components/ArxSideBar/ArxSideBar.vue?0dcf","webpack:///./src/App.vue","webpack:///./src/App.vue?0ab4","webpack:///./src/App.vue?bff9","webpack:///./src/views/Map.vue?d24c","webpack:///./src/components/ArxMap/template.html","webpack:///./src/components/ArxMap/helper.ts","webpack:///./src/components/ArxMap/MapZoom/template.html","webpack:///./src/components/ArxMap/MapZoom/MapZoom.vue","webpack:///./src/components/ArxMap/MapZoom/MapZoom.vue?06ad","webpack:///./src/components/ArxMap/MapZoom/MapZoom.vue?b5f5","webpack:///./src/components/ArxMap/MapCoords/template.html","webpack:///./src/components/ArxMap/MapCoords/MapCoords.vue","webpack:///./src/components/ArxMap/MapCoords/MapCoords.vue?ba07","webpack:///./src/components/ArxMap/MapCoords/MapCoords.vue?6519","webpack:///./src/components/ArxMap/ArxMap.vue","webpack:///./src/components/ArxMap/ArxMap.vue?ea1b","webpack:///./src/components/ArxMap/ArxMap.vue?e995","webpack:///./src/components/DownloadLayer/template.html","webpack:///./src/components/DownloadLayer/DownloadLayer.vue","webpack:///./src/components/DownloadLayer/DownloadLayer.vue?24e5","webpack:///./src/components/DownloadLayer/DownloadLayer.vue?928f","webpack:///./src/widgets/Search/template.html","webpack:///./src/widgets/Search/Search.vue","webpack:///./src/widgets/Search/Search.vue?179e","webpack:///./src/widgets/Search/Search.vue?ab77","webpack:///./src/views/Map.vue","webpack:///./src/views/Map.vue?da34","webpack:///./src/views/Map.vue?134f","webpack:///./src/views/Home.vue?f4bb","webpack:///./src/components/ThematicItem/template.html","webpack:///./src/components/ThematicItem/ThematicItem.vue","webpack:///./src/components/ThematicItem/ThematicItem.vue?c463","webpack:///./src/components/ThematicItem/ThematicItem.vue?7a14","webpack:///./src/views/Home.vue","webpack:///./src/views/Home.vue?2d60","webpack:///./src/views/Home.vue?c853","webpack:///./src/views/ThematicPage/template.html","webpack:///./src/views/ThematicPage/ThematicPage.vue","webpack:///./src/views/ThematicPage/ThematicPage.vue?d93f","webpack:///./src/views/ThematicPage/ThematicPage.vue?2a24","webpack:///./src/views/Credits/template.html","webpack:///./src/views/Credits/Credits.vue","webpack:///./src/views/Credits/Credits.vue?7c98","webpack:///./src/views/Credits/Credits.vue?6a86","webpack:///./src/router/index.ts","webpack:///./src/store.ts","webpack:///./src/i18n.ts","webpack:///./src/main.ts","webpack:///./src/assets/thematics/lo/aez/AEZ.png","webpack:///./src/assets/thematics/en/sar/SAR.png","webpack:///./src/assets/flags/en.png","webpack:///./src/views/Home.vue?998d","webpack:///./src/assets/credits/credit-img-03.png","webpack:///./src/components/ArxMap/MapCoords/style.scss?89a6","webpack:///./src/assets/credits/credit-img-02.png","webpack:///./src/assets/credits/credit-img-01.png","webpack:///./src/components/ArxMap/TimeSlider/style.scss?285c","webpack:///./src/assets/thematics/lo/sar/SAR.png","webpack:///./src/assets/thematics/en/sar/national_result_example_1.png","webpack:///./src/assets/credits/credit-img-07.png","webpack:///./src/assets/credits/credit-img-05.png"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","map","webpackContext","req","id","webpackContextResolve","e","Error","code","keys","resolve","_vm","this","_h","$createElement","_c","_self","attrs","sidebarkey","staticClass","_v","_s","$t","_e","configLoaded","showError","staticRenderFns","thematicLabel","params","on","$event","responsiveMenuVisible","class","state","currentTool","LAYERS","showTool","MAP_COMPARISON","STATISTICS","mapComparisonVisible","tool","set","bus","$emit","unselectTools","$on","component","filters","filter","attribute","featureTypes","maxFeatures","conditions","QueryService","createLayerFilter","WFS","writeGetFeature","srsName","getInstance","config","projection","featureNS","featurePrefix","outputFormat","featureRequest","Promise","reject","fetch","WFSBaseURL","method","body","XMLSerializer","serializeToString","then","response","json","GeoJSON","readFeatures","catch","err","layer","viewparams","url","join","view","wmsSource","coordinates","viewResolution","getResolution","getFeatureInfoUrl","INFO_FORMAT","text","parser","WMSGetFeatureInfo","console","error","mobile","lat","lng","URL","location","href","searchParams","URLSearchParams","search","latParam","lngParam","mobileParam","isNaN","Number","UtilsService","instance","setUrlParameters","provinces","districts","thematic","filteredConfig","JSON","parse","stringify","isMobileScreen","thematics","thematicExists","forEach","oneConfThematic","isDefault","defaultThematic","datasets","ds","ConfigService","filterDatasetLayerForMobile","A1","indexOf","A2","A3","A4","A5","A6","A7","Date","getTime","res","conf","getFilterdConfigOnThematic","loadMetadata","metadata","dataset","layers","enabledOnMobile","en","lo","queryFeatures","createFeatureRequest","features","feat","getProperties","lang","getSelectedIcon","switchLanguage","selectedLanguage","localStorage","storedLang","getItem","userLang","navigator","language","userLanguage","split","$i18n","locale","setItem","arxToolsVisible","thematicLabelVisible","newRoute","findThematic","handleMenuVisibility","onresize","themConfig","find","label","toString","innerWidth","immediate","deep","components","ArxTools","LocaleSwitcher","onCloseSideBar","ref","_l","slot","_t","isContentVisible","onExpandBtnClick","contentVisible","expandOnOpen","event","setTimeout","dispatchEvent","Event","default","layerConfig","isSwipeLayer","setLayerVisibility","layerVisible","downloadable","download","opacityExpanded","directives","rawName","expression","domProps","onOpacityChange","layerOpacity","target","contentId","firstSelectedTab","i1","style","display","values","isYearFilter","applyFilter","item","i2","defaultValue","getTranslation","styles","$$selectedVal","Array","options","selected","val","_value","selectedStyle","multiple","setLayerStyle","getStyleTranslation","currentUnit","legendUrl","selectedLayerMetadata","title","description","data_development_period","format","scale_or_resolution","measurement_unit","geographical","tempral_coverage","spatial_coverage","input_data_source","last_upload","references_and_citation","use_right","owners","contact","address","webpage","rangeValues","rangeFilterIndex","handleTimeSliderMounted","slider","range","color","backgroundColor","callbackRange","scopedSlots","_u","fn","tooltip","model","callback","$$v","$set","playOrPause","isPlaying","currentValue","firstVal","lastVal","timer","setInterval","clearInterval","sliderVal","getStartYearFromRange","filterIndex","str","year","substring","VueSlideBar","currentPopupFeatures","currentPopupIndex","arxMap","PopupService","popupElements","container","document","getElementById","content","prevNext","closer","overlay","Overlay","element","autoPan","autoPanAnimation","duration","onclick","closePopup","setPosition","undefined","blur","clearHighlights","attributes","relatedContent","titleValue","replace","field","propertyName","innerHTML","classList","remove","add","mapLayers","isMobileDevice","checkIsMobileDevice","View","zoom","mapConfig","maxZoom","minZoom","center","constrainResolution","highlightStyle","Style","stroke","Stroke","width","highlightLayer","Vector","source","Tile","OSM","getA1Layers","reverse","concat","getA2Layers","getA3Layers","getA4Layers","getA5Layers","getA6Layers","getA7Layers","getA8Layers","TILED","tiled","TileWMS","WMSBaseURL","serverType","transition","setVisible","visible","setOpacity","opacity","createVectorLayer","A8","provincesLayer","provincesStats","districtsLayer","districtsStats","coordinate","toFixed","evt","handlePopup","pixel","getEventPixel","originalEvent","popupHandled","reinitializeState","forEachLayerAtPixel","getSource","getParams","mapLayer","mapLayerConfig","isMobileProvinceClick","popup","statsConfig","statistics","queryFeaturesForPopup","feature","openPopup","MappingService","swipeLayerName","removeLayer","layerName","getId","popupConfig","endsWith","extent","getGeometry","getExtent","showPopup","addFeature","radarFields","initPopup","initView","Map","controls","attribution","overlays","initMapLayers","handleMapEvents","initHighlightLayer","once","zoomToPosition","getLayerByName","queryFeatureForMobile","queryWMS","mobileDefaultExtent","featExtent","fit","getBasemapLayers","getLayers","addLayer","intStatsLayers","mapZoom","getZoom","animate","filterStr","updateParams","refresh","layParams","oneParam","param","graphicUrl","getLegendUrl","DOMParser","parseFromString","defaultStyle","from","getElementsByTagName","userStyle","arr","styleName","isDefaultArr","sort","leftLayer","rightLayer","removeSwipeLayer","swipeLayer","initSwipe","render","ctx","context","mapSize","getSize","swipeValue","tl","tr","bl","br","save","beginPath","moveTo","lineTo","closePath","clip","restore","clear","size","relationField","relatedFeatures","createRelatedContent","handleRadarStats","provinceId","idField","props","fields","handlePopupFromSearch","layerMetadata","metadataDependsOnStyle","filterValues","yearsValues","$watch","getLayerLegend","getLayerStyles","searchLayer","queryLayer","initLayer","rangeInfos","filterSelects","$el","querySelectorAll","select","toLowerCase","$te","setLayerFilter","toUpperCase","trim","dimScenario","dimIndicator","isOK","scenario","indicator","indicators","filterConfig","oneLayFilter","type","getValuesFromList","getValuesFromLayer","initA5Values","filterItem","a","b","rangeItem","startYear","getRangesValuesA5","currentLayerFilterAllValues","min","max","minYear","maxYear","step","stepYear","getRangesValues","getRangeValueLabel","vals","count","isHide","rangeVals","modulo","tempArr","setLayerOpacity","ts","$refs","timeSlider","setVal","filterItemIndex","yearSelect","doInitTS","currentVal","selectedYearLabel","selectedIndex","textContent","targetSelect","initTimeSlider","setLayerParams","setLayerLegend","setLayerMetadata","setCurrentUnit","units","unitObj","unit","geoTiffDownloadUrl","createTifDownloadUrl","scenarioFilterIndex","scenarioVal","getA5Scenario","geoTiffDownloadBaseURL","setYearsRange","viewparamsStr","oneFilterItem","oneFilterItemValues","selectValue","selectLabel","filterType","condition","selectedValueConfig","styleParam","setLayerViewparams","oldValue","yearRange","scenarioConfig","endYear","getEndYearFromRange","getFullYear","TimeSlider","getMapLayers","configLayers","getVisible","comparable","getDataset","helper","getA1Dataset","getA2Dataset","getA3Dataset","getA4Dataset","getA5Dataset","getA6Dataset","getA7Dataset","getA8Dataset","ExpandableCard","MapLayer","leftFilterLayer","selectedLayer","rightFilterLayer","compare","compareOn","cancel","selectedDatasetIndex","onChangeDataset","selectedDataset","selectedLayerIndex","onChangeLayer","datasetsConfig","_m","staticStyle","resizer","leftSide","previousElementSibling","rightSide","nextElementSibling","x","leftWidth","mouseMoveHandler","dx","clientX","newLeftWidth","clientY","parentNode","getBoundingClientRect","cursor","userSelect","pointerEvents","mouseUpHandler","removeProperty","removeEventListener","mouseDownHandler","addEventListener","swipeDivDragEnabled","elmnt","pos1","pos3","elementDrag","preventDefault","left","offsetLeft","setSwipeValue","closeDragElement","onmouseup","onmousemove","dragMouseDown","onmousedown","arxSwipeDiv","dragElement","initSwipeDiv","handleSwipe","callFilter","onSwipe","cancelSwipe","FilterLayer","ArxSplitter","isLoading","idDistrictField","newVal","oldVal","renderChart","chartOptions","chartData","reactiveProp","extends","mixins","calculateByProvinces","calculateByDistricts","_q","selectedStatsMode","selectedProvinceId","engName","laoName","chartDataLoaded","tableData","tableValueUnit","isRadarChart","setChartType","selectedStatsChartType","labels","provincesItems","districtsItems","sldClasses","radarChartOptions","responsive","scales","yAxes","ticks","beginAtZero","gridLines","scaleLabel","xAxes","legend","plugins","maintainAspectRatio","initProvincesAndDistrictsItems","setTableValueUnit","handleRadarData","regExp","matches","match","translate","provincesConfig","districtsConfig","provincesFeatures","districtsFeatures","englishNameField","laoNameField","localeCompare","statsDefaultProvinceId","provinceField","confField","Math","round","fill","borderColor","pointBackgroundColor","pointBorderColor","pointHoverBackgroundColor","pointHoverBorderColor","idx","calculateFromExcelFile","querySQLViewFeatures","filename","filePath","provincesFilesPath","districtsFilesPath","downloadApiUrl","getStatsExcelFile","workspace","getStyleSLDFile","doc","colorMapClasses","checkKey","oneClass","ruleClasses","ruleDoc","propertyIsLessThanOrEqualTo","propertyIsLessThan","propertyIsGreaterThanOrEqualTo","propertyIsGreaterThan","svgParameter","log","sld","getValueSLDClass","sldClass","valueOK","targetLayer","otherLayer","addFeatures","Fill","idProvOrDistrictField","idProvinceField","valueField","statsData","getSLDClasses","excelFileDownloadUrl","createExcelFileDownloadUrl","status","getLayerFilters","statsLayer","layerFeatures","outObj","outFeatures","setStyle","getSLDStyle","setProvincesOrDistrictsFeatures","setStatsData","handleFilterChange","handleData","handleViewParams","ArxBar","ArxPie","ArxLine","ArxRadar","d1","d2","d3","d4","d5","d6","d7","StatsLayer","startsWith","showSideBar","elem","handleSideBarClose","Layers","MapComparison","Statistics","mobileNotificationVisible","mobileLoadingVisible","urlThematicParam","$route","query","loadConfig","Header","ArxSideBar","mapKey","disabled","previousDisabled","showPopupPreviousFeature","nextDisabled","showPopupNextFeature","initMap","zoomInitialView","zoomIn","zoomOut","coords","initLocales","initializeMap","index","items","MapZoom","MapCoords","visibilityClass","onClose","composing","firstName","lastName","email","purpose","validateEmail","onDownload","downloadUrl","isError","re","test","cache","credentials","headers","redirect","referrerPolicy","firstname","lastname","ok","open","expanded","searchAllResults","onSelectSearchItem","selectedSearchItem","searchConfig","searchLayers","constructSearchData","searchLayersConf","duplicatesArr","displayField","replaceAll","zoomToGeom","ArxMap","Search","DownloadLayer","iconClass","showThematic","getIcon","thematicItem","subtitle","icon","isMap","$router","ThematicItem","currentThematic","getImage","image","use","routes","path","ThematicPage","beforeEnter","router","base","Store","mutations","actions","loadLocaleMessages","locales","messages","matched","fallbackLocale","productionTip","store","i18n","h","$mount"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAG/Be,GAAqBA,EAAoBhB,GAE5C,MAAMO,EAASC,OACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,IAER,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,GAE3CA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,KAItE,OAAOD,EAIR,IAAIQ,EAAmB,GAKnBhB,EAAkB,CACrB,IAAO,GAGJK,EAAkB,GAGtB,SAASS,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAU6B,QAGnC,IAAIC,EAASF,EAAiB5B,GAAY,CACzCK,EAAGL,EACH+B,GAAG,EACHF,QAAS,IAUV,OANAf,EAAQd,GAAUW,KAAKmB,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG/DI,EAAOC,GAAI,EAGJD,EAAOD,QAKfH,EAAoBM,EAAIlB,EAGxBY,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,SAASL,EAASM,EAAMC,GAC3CV,EAAoBW,EAAER,EAASM,IAClC3B,OAAO8B,eAAeT,EAASM,EAAM,CAAEI,YAAY,EAAMC,IAAKJ,KAKhEV,EAAoBe,EAAI,SAASZ,GACX,qBAAXa,QAA0BA,OAAOC,aAC1CnC,OAAO8B,eAAeT,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DpC,OAAO8B,eAAeT,EAAS,aAAc,CAAEe,OAAO,KAQvDlB,EAAoBmB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQlB,EAAoBkB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKxC,OAAOyC,OAAO,MAGvB,GAFAvB,EAAoBe,EAAEO,GACtBxC,OAAO8B,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOlB,EAAoBQ,EAAEc,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRtB,EAAoB0B,EAAI,SAAStB,GAChC,IAAIM,EAASN,GAAUA,EAAOiB,WAC7B,WAAwB,OAAOjB,EAAO,YACtC,WAA8B,OAAOA,GAEtC,OADAJ,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASgB,EAAQC,GAAY,OAAO9C,OAAOC,UAAUC,eAAeC,KAAK0C,EAAQC,IAGzG5B,EAAoB6B,EAAI,IAExB,IAAIC,EAAaC,OAAO,gBAAkBA,OAAO,iBAAmB,GAChEC,EAAmBF,EAAW3C,KAAKsC,KAAKK,GAC5CA,EAAW3C,KAAOf,EAClB0D,EAAaA,EAAWG,QACxB,IAAI,IAAItD,EAAI,EAAGA,EAAImD,EAAWjD,OAAQF,IAAKP,EAAqB0D,EAAWnD,IAC3E,IAAIU,EAAsB2C,EAI1BzC,EAAgBJ,KAAK,CAAC,EAAE,kBAEjBM,K,gECvJTW,EAAOD,QAAU,IAA0B,kC,uBCA3CC,EAAOD,QAAU,IAA0B,0B,uBCA3CC,EAAOD,QAAU,IAA0B,0B,uBCA3CC,EAAOD,QAAU,IAA0B,uB,8CCA3CC,EAAOD,QAAU,IAA0B,wC,kCCA3C,W,8CCAAC,EAAOD,QAAU,IAA0B,kC,oCCA3C,W,2HCAAC,EAAOD,QAAU,IAA0B,kC,gDCA3CC,EAAOD,QAAU,IAA0B,qC,uBCA3CC,EAAOD,QAAU,IAA0B,yB,qz6BCA3CC,EAAOD,QAAU,IAA0B,2B,kCCA3C,W,6DCAA,W,8CCAA,IAAI+B,EAAM,CACT,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,QACX,aAAc,QACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,QAAS,OACT,WAAY,OACZ,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,gBAAiB,OACjB,aAAc,OACd,gBAAiB,OACjB,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,WAAY,OACZ,cAAe,OACf,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,YAAa,OACb,eAAgB,OAChB,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,QAAS,OACT,WAAY,OACZ,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,QAAS,OACT,WAAY,OACZ,OAAQ,OACR,UAAW,OACX,QAAS,OACT,WAAY,OACZ,QAAS,OACT,aAAc,OACd,gBAAiB,OACjB,WAAY,OACZ,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,YAAa,OACb,eAAgB,OAChB,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,gBAAiB,OACjB,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,QAIf,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOpC,EAAoBqC,GAE5B,SAASC,EAAsBF,GAC9B,IAAIpC,EAAoBW,EAAEuB,EAAKE,GAAM,CACpC,IAAIG,EAAI,IAAIC,MAAM,uBAAyBJ,EAAM,KAEjD,MADAG,EAAEE,KAAO,mBACHF,EAEP,OAAOL,EAAIE,GAEZD,EAAeO,KAAO,WACrB,OAAO5D,OAAO4D,KAAKR,IAEpBC,EAAeQ,QAAUL,EACzBlC,EAAOD,QAAUgC,EACjBA,EAAeE,GAAK,Q,uBCnSpB,IAAIH,EAAM,CACT,YAAa,OACb,YAAa,QAId,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOpC,EAAoBqC,GAE5B,SAASC,EAAsBF,GAC9B,IAAIpC,EAAoBW,EAAEuB,EAAKE,GAAM,CACpC,IAAIG,EAAI,IAAIC,MAAM,uBAAyBJ,EAAM,KAEjD,MADAG,EAAEE,KAAO,mBACHF,EAEP,OAAOL,EAAIE,GAEZD,EAAeO,KAAO,WACrB,OAAO5D,OAAO4D,KAAKR,IAEpBC,EAAeQ,QAAUL,EACzBlC,EAAOD,QAAUgC,EACjBA,EAAeE,GAAK,Q,uBCvBpBjC,EAAOD,QAAU,IAA0B,qC,gDCA3CC,EAAOD,QAAU,IAA0B,yB,uBCA3CC,EAAOD,QAAU,IAA0B,qC,uBCA3CC,EAAOD,QAAU,IAA0B,8C,oCCA3C,W,gDCAA,IAAI+B,EAAM,CACT,WAAY,OACZ,WAAY,QAIb,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOpC,EAAoBqC,GAE5B,SAASC,EAAsBF,GAC9B,IAAIpC,EAAoBW,EAAEuB,EAAKE,GAAM,CACpC,IAAIG,EAAI,IAAIC,MAAM,uBAAyBJ,EAAM,KAEjD,MADAG,EAAEE,KAAO,mBACHF,EAEP,OAAOL,EAAIE,GAEZD,EAAeO,KAAO,WACrB,OAAO5D,OAAO4D,KAAKR,IAEpBC,EAAeQ,QAAUL,EACzBlC,EAAOD,QAAUgC,EACjBA,EAAeE,GAAK,Q,uBCvBpB,IAAIH,EAAM,CACT,sBAAuB,OACvB,sBAAuB,OACvB,sBAAuB,OACvB,sBAAuB,OACvB,sBAAuB,OACvB,sBAAuB,OACvB,sBAAuB,OACvB,sBAAuB,OACvB,sBAAuB,OACvB,mBAAoB,QAIrB,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOpC,EAAoBqC,GAE5B,SAASC,EAAsBF,GAC9B,IAAIpC,EAAoBW,EAAEuB,EAAKE,GAAM,CACpC,IAAIG,EAAI,IAAIC,MAAM,uBAAyBJ,EAAM,KAEjD,MADAG,EAAEE,KAAO,mBACHF,EAEP,OAAOL,EAAIE,GAEZD,EAAeO,KAAO,WACrB,OAAO5D,OAAO4D,KAAKR,IAEpBC,EAAeQ,QAAUL,EACzBlC,EAAOD,QAAUgC,EACjBA,EAAeE,GAAK,Q,uBC/BpBjC,EAAOD,QAAU,IAA0B,0B,qECA3CC,EAAOD,QAAU,IAA0B,+B,oCCA3C,W,uBCAAC,EAAOD,QAAU,IAA0B,wB,uBCA3C,IAAI+B,EAAM,CACT,mBAAoB,OACpB,yBAA0B,OAC1B,wBAAyB,OACzB,mCAAoC,OACpC,mCAAoC,OACpC,mBAAoB,OACpB,qBAAsB,OACtB,yCAA0C,OAC1C,yCAA0C,OAC1C,qBAAsB,OACtB,mBAAoB,OACpB,yBAA0B,OAC1B,wBAAyB,OACzB,mCAAoC,OACpC,mCAAoC,OACpC,mBAAoB,OACpB,qBAAsB,OACtB,yCAA0C,OAC1C,yCAA0C,OAC1C,qBAAsB,QAIvB,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOpC,EAAoBqC,GAE5B,SAASC,EAAsBF,GAC9B,IAAIpC,EAAoBW,EAAEuB,EAAKE,GAAM,CACpC,IAAIG,EAAI,IAAIC,MAAM,uBAAyBJ,EAAM,KAEjD,MADAG,EAAEE,KAAO,mBACHF,EAEP,OAAOL,EAAIE,GAEZD,EAAeO,KAAO,WACrB,OAAO5D,OAAO4D,KAAKR,IAEpBC,EAAeQ,QAAUL,EACzBlC,EAAOD,QAAUgC,EACjBA,EAAeE,GAAK,Q,yDCzCpB,W,oCCAA,W,uBCAAjC,EAAOD,QAAU,IAA0B,kC,oCCA3C,W,uBCAAC,EAAOD,QAAU,IAA0B,qC,qBCA3CC,EAAOD,QAAU,04J,oCCAjB,W,uBCAAC,EAAOD,QAAU,IAA0B,0B,uBCA3C,IAAI+B,EAAM,CACT,gBAAiB,OACjB,sBAAuB,OACvB,qBAAsB,OACtB,gCAAiC,OACjC,gCAAiC,OACjC,gBAAiB,OACjB,kBAAmB,OACnB,sCAAuC,OACvC,sCAAuC,OACvC,kBAAmB,QAIpB,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOpC,EAAoBqC,GAE5B,SAASC,EAAsBF,GAC9B,IAAIpC,EAAoBW,EAAEuB,EAAKE,GAAM,CACpC,IAAIG,EAAI,IAAIC,MAAM,uBAAyBJ,EAAM,KAEjD,MADAG,EAAEE,KAAO,mBACHF,EAEP,OAAOL,EAAIE,GAEZD,EAAeO,KAAO,WACrB,OAAO5D,OAAO4D,KAAKR,IAEpBC,EAAeQ,QAAUL,EACzBlC,EAAOD,QAAUgC,EACjBA,EAAeE,GAAK,Q,kCC/BpB,W,qBCAAjC,EAAOD,QAAU,IAA0B,2B,kCCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,8C,kCCA3C,W,kCCAA,W,yDCAA,W,qBCAAC,EAAOD,QAAU,IAA0B,8C,gFCA3C,W,kCCAA,W,qBCAAC,EAAOD,QAAU,IAA0B,qC,yDCA3C,W,kCCAA,W,kCCAA,W,sICAI,EAAS,WAAa,IAAIyC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,QAAQ,CAAEN,EAAgB,aAAEI,EAAG,MAAM,CAACA,EAAG,UAAUA,EAAG,aAAa,CAACxB,IAAIoB,EAAIO,aAAcP,EAA6B,0BAAEI,EAAG,MAAM,CAACI,YAAY,yBAAyB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,4CAA4CX,EAAIY,MAAM,GAAGZ,EAAIY,MAAOZ,EAAIa,cAAgBb,EAAIc,UAAWV,EAAG,MAAM,CAACI,YAAY,eAAe,CAACR,EAAIS,GAAG,iEAAiET,EAAIY,KAAMZ,EAAwB,qBAAEI,EAAG,MAAM,CAACI,YAAY,oBAAoB,CAACJ,EAAG,UAAU,CAACI,YAAY,eAAe,CAACR,EAAIS,GAAG,aAAa,GAAGT,EAAIY,QACzpBG,EAAkB,G,oFCDlB,EAAS,WAAa,IAAIf,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,yBAAyB,CAACJ,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,QAAQ,CAACF,EAAG,MAAM,CAACI,YAAY,sBAAsBF,MAAM,CAAC,IAAM,iBAAiB,IAAM,EAAQ,WAAuCF,EAAG,MAAM,CAACI,YAAY,sBAAsBF,MAAM,CAAC,IAAM,QAAQ,IAAM,EAAQ,WAA+BN,EAAwB,qBAAEI,EAAG,OAAO,CAACI,YAAY,gBAAgB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIgB,kBAAkBhB,EAAIY,KAAMZ,EAAyB,sBAAEI,EAAG,KAAK,CAACI,YAAY,QAAQ,CAACJ,EAAG,KAAK,CAACA,EAAG,cAAc,CAACE,MAAM,CAAC,GAAK,CAAEzC,KAAM,OAAQoD,OAAQ,MAAM,CAACjB,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,sBAAsBX,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACI,YAAY,iBAAiB,CAACR,EAAIS,GAAG,QAAQ,GAAGL,EAAG,KAAK,CAACA,EAAG,cAAc,CAACE,MAAM,CAAC,GAAK,CAAEzC,KAAM,sBAAsB,CAACmC,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,0BAA0B,KAAKX,EAAIY,KAAKR,EAAG,MAAM,CAACI,YAAY,iBAAiBU,GAAG,CAAC,MAAQ,SAASC,GAAQnB,EAAIoB,uBAAyBpB,EAAIoB,yBAA0B,CAAGpB,EAAIoB,sBAA+FpB,EAAIY,KAA5ER,EAAG,UAAU,CAACI,YAAY,4BAA4B,CAACR,EAAIS,GAAG,UAAoBT,EAAyB,sBAAEI,EAAG,UAAU,CAACI,YAAY,4BAA4B,CAACR,EAAIS,GAAG,WAAWT,EAAIY,MAAM,GAAIZ,EAAmB,gBAAEI,EAAG,YAAYJ,EAAIY,KAAKR,EAAG,mBAAmBA,EAAG,aAAa,CAACA,EAAG,aAAa,CAACA,EAAG,gBAAgB,IAAI,IAAI,MAC71C,EAAkB,GCDlB,G,8BAAS,WAAa,IAAIJ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,WAAW,CAACJ,EAAG,MAAM,CAACiB,MAAM,CAAC,UAAWrB,EAAIsB,MAAMC,aAAevB,EAAIwB,OAAS,WAAa,IAAIN,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOnB,EAAIyB,SAASzB,EAAIwB,WAAW,CAACpB,EAAG,OAAO,CAACI,YAAY,2BAA2B,CAACR,EAAIS,GAAG,YAAYL,EAAG,QAAQ,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,0BAA0BP,EAAG,MAAM,CAACiB,MAAM,CAAC,4BAA6BrB,EAAIsB,MAAMC,aAAevB,EAAI0B,eAAiB,WAAa,IAAIR,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOnB,EAAIyB,SAASzB,EAAI0B,mBAAmB,CAACtB,EAAG,OAAO,CAACI,YAAY,2BAA2B,CAACR,EAAIS,GAAG,aAAaL,EAAG,QAAQ,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,iCAAiCP,EAAG,MAAM,CAACiB,MAAM,CAAC,oBAAqBrB,EAAIsB,MAAMC,aAAevB,EAAI2B,WAAa,WAAa,IAAIT,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOnB,EAAIyB,SAASzB,EAAI2B,eAAe,CAACvB,EAAG,OAAO,CAACI,YAAY,2BAA2B,CAACR,EAAIS,GAAG,eAAeL,EAAG,QAAQ,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,kCACl+B,EAAkB,GCOD,EAArB,yG,0BACU,EAAAa,OAAS,SACT,EAAAE,eAAiB,gBACjB,EAAAC,WAAa,aACb,EAAAC,sBAAuB,EAEvB,EAAAN,MAAQ,CACdC,YAAa,IAuBP,EAAAE,SAAW,SAACI,GAClB,OAAIC,IAAI,EAAKR,MAAO,cAAeO,GACnCE,GAAIC,MAAM,WAAYH,IAOhB,EAAAI,cAAgB,WACtB,OAAIH,IAAI,EAAKR,MAAO,cAAe,KAxCvC,gDAaU,WAAO,WACbS,GAAIG,IAAI,iBAAiB,WACvB,EAAKD,qBAfX,qBAsBU,WACNhC,KAAKwB,SAASxB,KAAKuB,YAvBvB,GAAsC,QAAjB,EAAQ,gBAD5B,QACoB,WCRkZ,I,wBCQnaW,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,E,oKCTF,EAAb,4GAMU,SAAyBC,GAC/B,OAAIA,GAAWA,EAAQnG,OACdmG,EAAQ9C,KAAK,SAAC+C,GACnB,OAAO,eAAcA,EAAOC,UAAWD,EAAO/D,UAI3C,KAbX,kCAsBS,SACLiE,GAEuC,IADvCC,EACuC,uDADjB,KACtBJ,EAAuC,uDAAJ,KAE7BK,EAAoBC,EAAaC,kBAAkBP,GACrDC,EAAc,KAQlB,OANII,EAAWxG,OAAS,EACtBoG,EAAS,OAAS,WAAT,iBAAaI,IACS,IAAtBA,EAAWxG,SACpBoG,EAASI,EAAW,KAGf,IAAIG,EAAA,MAAMC,gBAAgB,CAC/BC,QAAS,EAAcC,cAAcC,OAAO1D,IAAI2D,WAChDC,UAAW,GACXC,cAAe,GACfZ,aAAcA,EACda,aAAc,mBACdZ,YAAaA,GAAe,OAC5BH,OAAQA,MA3Cd,oFAoDS,WAA2BgB,GAA3B,0GACE,IAAIC,SAAe,SAACvD,EAASwD,GAClCC,MAAM,EAAcT,cAAcC,OAAO1D,IAAImE,WAAY,CACvDC,OAAQ,OACRC,MAAM,IAAIC,eAAgBC,kBAAkBR,KAE3CS,MAAK,SAAAC,GAAQ,OAAIA,EAASC,UAC1BF,MAAK,SAAAE,GAAI,OAAIjE,GAAQ,IAAIkE,EAAA,MAAUC,aAAaF,OAChDG,OAAM,SAACC,GACNrE,EAAQ,aATT,2CApDT,qJAuEU,WAAkCsE,GAAlC,0GAAiDjC,EAAjD,+BAAoF,KAApF,kBACC,IAAIkB,SAAe,SAACvD,EAASwD,GAClC,IAAMe,EAAuBlC,GAAWA,EAAQnG,OAChDmG,EAAQ9C,KAAK,SAAC+C,GACZ,gBAAUA,EAAOC,UAAjB,YAA8BD,EAAO/D,UAClC,GACCiG,EAAM,GAAH,OAAM,EAAcxB,cAAcC,OAAO1D,IAAImE,WAA7C,qDAAoGY,EAApG,uBAAwHC,EAAWE,KAAK,KAAxI,kCACThB,MAAMe,GACHT,MAAK,SAAAC,GAAQ,OAAIA,EAASC,UAC1BF,MAAK,SAAAE,GAAI,OAAIjE,GAAQ,IAAIkE,EAAA,MAAUC,aAAaF,OAChDG,OAAM,SAACC,GACNrE,EAAQ,aAXR,2CAvEV,gFA8FS,SAAgB0E,EAAMC,EAAWC,GACtC,OAAO,IAAIrB,SAAe,SAACvD,EAASwD,GAClC,IAAMqB,EAAuCH,EAAKI,gBAC5CN,EAAMG,EAAUI,kBACpBH,EACAC,EACA,EAAc7B,cAAcC,OAAO1D,IAAI2D,WACvC,CAAE8B,YAAa,4BAEbR,GACFf,MAAMe,GACHT,MAAK,SAAAC,GAAQ,OAAIA,EAASiB,UAC1BlB,MAAK,SAAChH,GACL,IACE,IAAMmI,EAAS,IAAIC,EAAA,KACnBnF,EAAQkF,EAAOf,aAAapH,IAC5B,MAAOsH,GACPe,QAAQC,MAAMhB,GACdrE,EAAQ,iBAhHtB,KCVa,G,4DAAb,+CAGU,KAAAsF,OAAS,EACV,KAAAC,IAAM,EACN,KAAAC,IAAM,EALf,uDAWW,WACP,IAAMhB,EAAM,IAAIiB,IAAIrG,OAAOsG,SAASC,MAC9BC,EAAe,IAAIC,gBAAgBrB,EAAIsB,QAEvCC,EAAmBH,EAAazH,IAAI,OACpC6H,EAAmBJ,EAAazH,IAAI,OACpC8H,EAAsBL,EAAazH,IAAI,UAE7C+B,KAAKqF,IAAMQ,IAAaG,MAAMC,OAAOJ,IAAaI,OAAOJ,GAAY,EACrE7F,KAAKsF,IAAMQ,IAAaE,MAAMC,OAAOH,IAAaG,OAAOH,GAAY,EACrE9F,KAAKoF,OAASW,IAAgBC,MAAMC,OAAOF,IAAgBE,OAAOF,GAAe,IArBrF,4BA4BS,WACL,OAAsB,GAAf/F,KAAKoF,UA7BhB,0BAmCU,WAMN,OALKc,EAAaC,WAChBD,EAAaC,SAAW,IAAID,EAC5BA,EAAaC,SAASC,oBAGjBF,EAAaC,aAzCxB,MCQa,EAAb,+CAKS,KAAAE,UAAuB,GACvB,KAAAC,UAAuB,GANhC,iEA2BU,SACNvD,EACAwD,GAEA,IAAMC,EAA0BC,KAAKC,MAAMD,KAAKE,UAAU5D,IACpD6D,EAA0B,EAAa9D,cAAc8D,iBAE3D,GAAI7D,EAAO8D,WAAa9D,EAAO8D,UAAU7K,OAAQ,CAE/C,IAAI8K,GAAiB,EA+BrB,GA9BIP,EACFxD,EAAO8D,UAAUE,SAAQ,SAACC,GACxB,GAAIT,IAAaS,EAAgBxH,GAE/B,OADAsH,GAAiB,GACV,KAMHA,GAAmBP,GAC3BxD,EAAO8D,UAAUE,SAAQ,SAACC,GACxB,GAAIA,EAAgBC,UAElB,OADAV,EAAWS,EAAgBxH,IACpB,KAMRsH,GAAmBP,IACtBA,EAAWxD,EAAO8D,UAAU,GAAGrH,IAGjCQ,KAAKkH,gBAAkBX,EAIvBC,EAAenH,IAAI8H,SAAW,GAE1BP,EAAgB,CAClB,IAAMQ,EAAeC,EAAcC,4BAA4BvE,EAAO1D,IAAI8H,SAASI,IAE/EH,IACFZ,EAAenH,IAAI8H,SAASI,GAAKH,QAG5BrE,EAAO1D,IAAI8H,SAASI,GAAGV,UAAUW,QAAQjB,IAAa,IAC7DC,EAAenH,IAAI8H,SAASI,GAAKxE,EAAO1D,IAAI8H,SAASI,IAGvD,GAAIX,EAAgB,CAClB,IAAM,EAAeS,EAAcC,4BAA4BvE,EAAO1D,IAAI8H,SAASM,IAE/E,IACFjB,EAAenH,IAAI8H,SAASM,GAAK,QAG5B1E,EAAO1D,IAAI8H,SAASM,GAAGZ,UAAUW,QAAQjB,IAAa,IAC7DC,EAAenH,IAAI8H,SAASM,GAAK1E,EAAO1D,IAAI8H,SAASM,IAGvD,GAAIb,EAAgB,CAClB,IAAM,EAAeS,EAAcC,4BAA4BvE,EAAO1D,IAAI8H,SAASO,IAE/E,IACFlB,EAAenH,IAAI8H,SAASO,GAAK,QAG5B3E,EAAO1D,IAAI8H,SAASO,GAAGb,UAAUW,QAAQjB,IAAa,IAC7DC,EAAenH,IAAI8H,SAASO,GAAK3E,EAAO1D,IAAI8H,SAASO,IAGvD,GAAId,EAAgB,CAClB,IAAM,EAAeS,EAAcC,4BAA4BvE,EAAO1D,IAAI8H,SAASQ,IAE/E,IACFnB,EAAenH,IAAI8H,SAASQ,GAAK,QAG5B5E,EAAO1D,IAAI8H,SAASQ,GAAGd,UAAUW,QAAQjB,IAAa,IAC7DC,EAAenH,IAAI8H,SAASQ,GAAK5E,EAAO1D,IAAI8H,SAASQ,IAGvD,GAAIf,EAAgB,CAClB,IAAM,EAAeS,EAAcC,4BAA4BvE,EAAO1D,IAAI8H,SAASS,IAE/E,IACFpB,EAAenH,IAAI8H,SAASS,GAAK,QAG5B7E,EAAO1D,IAAI8H,SAASS,GAAGf,UAAUW,QAAQjB,IAAa,IAC7DC,EAAenH,IAAI8H,SAASS,GAAK7E,EAAO1D,IAAI8H,SAASS,IAGvD,GAAIhB,EAAgB,CAClB,IAAM,EAAeS,EAAcC,4BAA4BvE,EAAO1D,IAAI8H,SAASU,IAE/E,IACFrB,EAAenH,IAAI8H,SAASU,GAAK,QAG5B9E,EAAO1D,IAAI8H,SAASU,GAAGhB,UAAUW,QAAQjB,IAAa,IAC7DC,EAAenH,IAAI8H,SAASU,GAAK9E,EAAO1D,IAAI8H,SAASU,IAGvD,GAAIjB,EAAgB,CAClB,IAAM,EAAeS,EAAcC,4BAA4BvE,EAAO1D,IAAI8H,SAASW,IAE/E,IACFtB,EAAenH,IAAI8H,SAASW,GAAK,QAG5B/E,EAAO1D,IAAI8H,SAASW,GAAGjB,UAAUW,QAAQjB,IAAa,IAC7DC,EAAenH,IAAI8H,SAASW,GAAK/E,EAAO1D,IAAI8H,SAASW,IAIzD,OAAOtB,IAjJX,iFAyJS,WAAiBD,GAAjB,qHACE,IAAIlD,SAAiB,SAACvD,EAASwD,GACpCC,MAAM,6BAAD,QAA8B,IAAIwE,MAAOC,YAC3CnE,MAAK,SAAAoE,GAAG,OAAIA,EAAIlE,UAChBF,MACC,SAAAqE,GACE,EAAKnF,OAAS,EAAKoF,2BAA2BD,EAAM3B,GACpDc,EAAce,eACXvE,MAAK,SAACwE,GACL,EAAKA,SAAWA,EAChBvI,EAAQ,EAAKiD,WAEdmB,OAAM,SAACC,GACNrE,EAAQ,EAAKiD,cAGnB,SAACoB,GACCb,EAAOa,UAjBV,2CAzJT,qGAYU,SAAmCmE,GACzC,OAAIA,GAAWA,EAAQC,QACrBD,EAAQC,OAASD,EAAQC,OAAOnG,QAAS,SAACgC,GAAD,OAA+BA,EAAMoE,mBACvEF,EAAQC,OAAOvM,OAASsM,EAAU,MAGpC,OAlBX,mFAoLS,wGACDjB,EAAcvE,cAAcuF,SAD3B,yCAEIhB,EAAcvE,cAAcuF,UAFhC,cAKCJ,EAA0C,CAACQ,GAAI,GAAIC,GAAI,IALxD,kBAOE,IAAIrF,SAAa,SAACvD,EAASwD,GAChC,EAAaqF,cACX,EAAaC,qBAAqB,CAAC,sBACnC/E,MAAK,SAACgF,GACFA,GACFA,EAAS9B,SAAQ,SAAC+B,GAChB,IAAMT,EAAsBS,EAAKC,gBAC3BC,EAAeF,EAAKC,gBAAgBC,KAE7B,OAATA,EACFf,EAAIQ,GAAGnM,KAAK+L,GACM,OAATW,GACTf,EAAIS,GAAGpM,KAAK+L,MAIhBvI,EAAQmI,IAERnI,EAAQ,WAzBT,2CApLT,kFAsNS,WAKL,OAJKuH,EAAclB,WACjBkB,EAAclB,SAAW,IAAIkB,GAGxBA,EAAclB,aA3NzB,KCRI,EAAS,WAAa,IAAIpG,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,gBAAgB,CAACE,MAAM,CAAC,eAAe,SAAS,WAAW,UAAU,CAACF,EAAG,uBAAuB,CAACA,EAAG,MAAM,CAACI,YAAY,uBAAuBF,MAAM,CAAC,IAAMN,EAAIkJ,uBAAuB9I,EAAG,wBAAwB,CAACA,EAAG,YAAY,CAACI,YAAY,UAAUU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOnB,EAAImJ,eAAe,SAAS,CAAC/I,EAAG,MAAM,CAACI,YAAY,uBAAuBF,MAAM,CAAC,IAAM,EAAQ,WAA4BN,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACJ,EAAIS,GAAG,eAAeL,EAAG,YAAY,CAACI,YAAY,UAAUU,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOnB,EAAImJ,eAAe,SAAS,CAAC/I,EAAG,MAAM,CAACI,YAAY,uBAAuBF,MAAM,CAAC,IAAM,EAAQ,WAA4BN,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACJ,EAAIS,GAAG,YAAY,IAAI,IAAI,IACp0B,EAAkB,GCOD,G,UAArB,yG,0BACY,EAAA2I,iBAAmB,KACnB,EAAAC,aAAelK,OAAOkK,aAFlC,gDAIY,WACJ,IAAMC,EAAqBrJ,KAAKoJ,aAAaE,QAAQ,mBAErD,GAAGD,EACCrJ,KAAKkJ,eAAeG,OACjB,CACH,IAAIE,EAAmBC,UAAUC,UAAaD,UAAkBE,aAE7DH,IACCA,EAAWA,EAASI,MAAM,KAAK,GAEf,OAAbJ,GAAkC,OAAbA,GACpBvJ,KAAKkJ,eAAeK,OAhBxC,6BAyBY,WACJ,OAAO,UAAQ,YAAkBvJ,KAAKmJ,iBAAxB,WA1BtB,4BAgCY,SAAeH,GACnBhJ,KAAKmJ,iBAAmBH,EACxBhJ,KAAK4J,MAAMC,OAASb,EACpBhJ,KAAKoJ,aAAaU,QAAQ,kBAAmBd,GAC7ClH,GAAIC,MAAM,2BApClB,GAA4C,SAAvB,EAAc,gBADlC,QACoB,WCRwZ,ICQza,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,QCHM,EAArB,yG,0BACU,EAAAhB,cAAmC,GACnC,EAAAI,uBAAwB,EACxB,EAAA4I,iBAAkB,EAClB,EAAAC,sBAAuB,EAJjC,oDAOE,SAAYC,GACVjK,KAAK+J,gBAAkBE,EAASrM,OAA2B,iBAAlBqM,EAASrM,MAA6C,uBAAlBqM,EAASrM,MACtFoC,KAAKgK,qBACHC,EAASrM,OACU,iBAAlBqM,EAASrM,MACU,sBAAlBqM,EAASrM,MACboC,KAAKe,cAAgBf,KAAKkK,aAAaD,EAASjJ,OAAOuF,UACvDvG,KAAKmK,yBAdT,qBAiBU,WAAO,WACbnK,KAAKe,cAAgBf,KAAKkK,aAAa,EAAcpH,cAAcoE,iBAGnElH,KAAKmK,uBAELjL,OAAOkL,SAAW,WAChB,EAAKD,0BAxBX,0BA4BU,SAAa3K,GACnB,IAAM6K,EAA8B,EAAcvH,cAAcC,OAAO8D,UAAUyD,MAAM,SAAChM,GAAD,OAAwBA,EAAEkB,KAAOA,KACxH,OAAO6K,EAAarK,KAAKU,GAAG2J,EAAWE,OAAOC,WAAahL,IA9B/D,kCAoCU,WACNQ,KAAKmB,wBAA0BjC,OAAOuL,YAAc,SArCxD,GAAoC,QAOlC,gBADC,eAAM,SAAU,CAAEC,WAAW,EAAMC,MAAM,K,0BASzC,MAfkB,EAAM,gBAL1B,eAAU,CACTC,WAAY,CACVC,SAAA,EAAUC,eAAA,MAGO,WChB8X,ICQ/Y,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,QCnBX,EAAS,WAAa,IAAI/K,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACI,YAAY,oBAAoBF,MAAM,CAAC,GAAK,eAAe,CAACF,EAAG,iBAAiB,CAACA,EAAG,MAAM,CAACI,YAAY,YAAY,CAACR,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIW,GAAG,aAAeX,EAAIsB,MAAMC,cAAc,KAAOvB,EAAIsB,MAAMC,cAAgBvB,EAAI2B,YAAc3B,EAAI6G,iBAAoB7G,EAAI6G,eAAgBzG,EAAG,MAAM,CAACI,YAAY,sCAAsC,CAAER,EAAIsB,MAAMC,cAAgBvB,EAAIwB,OAAQpB,EAAG,OAAO,CAACI,YAAY,6BAA6B,CAACR,EAAIS,GAAG,YAAYT,EAAIY,KAAMZ,EAAIsB,MAAMC,cAAgBvB,EAAI0B,eAAgBtB,EAAG,OAAO,CAACI,YAAY,6BAA6B,CAACR,EAAIS,GAAG,aAAaT,EAAIY,KAAMZ,EAAIsB,MAAMC,cAAgBvB,EAAI2B,WAAYvB,EAAG,OAAO,CAACI,YAAY,6BAA6B,CAACR,EAAIS,GAAG,eAAeT,EAAIY,OAAOZ,EAAIY,KAAKR,EAAG,MAAM,CAACI,YAAY,iBAAiBU,GAAG,CAAC,MAAQlB,EAAIgL,iBAAiB,CAAC5K,EAAG,OAAO,CAACI,YAAY,kBAAkB,CAACR,EAAIS,GAAG,gBAAgBL,EAAG,kBAAkB,CAACI,YAAY,qBAAqB,CAAER,EAAIsB,MAAMC,aAAevB,EAAIwB,OAAQpB,EAAG,UAAUJ,EAAIY,KAAMZ,EAAIsB,MAAMC,aAAevB,EAAI0B,eAAgBtB,EAAG,gBAAgB,CAAC6K,IAAI,wBAAwBjL,EAAIY,KAAMZ,EAAIsB,MAAMC,aAAevB,EAAI2B,WAAYvB,EAAG,cAAcJ,EAAIY,MAAM,IAAI,IAC3uC,EAAkB,GCDlB,G,UAAS,WAAa,IAAIZ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,aAAa,CAACI,YAAY,UAAU,CAACR,EAAIkL,GAAG,GAAI,SAASnP,GAAG,MAAO,EAAGiE,EAAI6G,gBAAkB7G,EAAIoH,SAASrL,EAAI,GAAIqE,EAAG,iBAAiB,CAACA,EAAG,OAAO,CAACE,MAAM,CAAC,KAAO,aAAa6K,KAAK,aAAa,CAACnL,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAGX,EAAIoH,SAASrL,EAAI,GAAGyO,WAAWpK,EAAG,MAAM,CAACE,MAAM,CAAC,KAAO,eAAe6K,KAAK,eAAe,CAACnL,EAAIkL,GAAIlL,EAAIoH,SAASrL,EAAI,GAAS,QAAE,SAAS0B,EAAE1B,GAAG,MAAO,CAACqE,EAAG,WAAW,CAACE,MAAM,CAAC,YAAc7C,UAAS,KAAKuC,EAAIY,KAAMZ,EAAI6G,gBAAkB7G,EAAIoH,SAASrL,EAAI,GAAIqE,EAAG,MAAM,CAACJ,EAAIkL,GAAIlL,EAAIoH,SAASrL,EAAI,GAAS,QAAE,SAAS0B,EAAE1B,GAAG,MAAO,CAACqE,EAAG,WAAW,CAACE,MAAM,CAAC,YAAc7C,UAAS,GAAGuC,EAAIY,UAAS,KAChrB,EAAkB,GCDlB,EAAS,WAAa,IAAIZ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACI,YAAY,kBAAkB,CAACJ,EAAG,iBAAiB,GAAG,CAACA,EAAG,MAAM,CAACI,YAAY,YAAY,CAACR,EAAIoL,GAAG,aAAahL,EAAG,YAAY,CAAC6K,IAAI,iBAAiB5J,MAAM,CAAC,2BAA4BrB,EAAIqL,iBAAmB,WAAa,IAAInK,GAAG,CAAC,MAAQlB,EAAIsL,mBAAmB,CAAClL,EAAG,OAAO,CAACI,YAAY,2CAA2C,CAACR,EAAIS,GAAG,4BAA4B,KAAKL,EAAG,MAAM,CAACI,YAAY,wBAAwBa,MAAM,CAAEkK,eAAgBvL,EAAIqL,mBAAoB,CAACjL,EAAG,kBAAkB,CAACJ,EAAIoL,GAAG,gBAAgB,IAAI,IAAI,IAC3mB,EAAkB,GCMD,EAArB,yG,0BACU,EAAAC,kBAAmB,EAD7B,gDASU,WACNpL,KAAKoL,iBAAmBpL,KAAKuL,eAAgB,IAVjD,8BAgBU,SAAiBC,GACvBxL,KAAKoL,kBAAoBpL,KAAKoL,iBAG9BK,YAAW,WACTvM,OAAOwM,cAAc,IAAIC,MAAM,aAC9B,SAtBP,GAA4C,QAI1C,gBADC,eAAK,CAAEC,SAAS,K,mCAHE,EAAc,gBADlC,QACoB,WCP0a,ICQ3b,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,QCnBX,GAAS,WAAa,IAAI7L,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACI,YAAY,YAAY,CAACJ,EAAG,iBAAiB,CAACA,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,OAAO,CAACI,YAAY,cAAc,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAGX,EAAI8L,YAAYtB,WAAaxK,EAAI+L,aAAgO/L,EAAIY,KAAtNR,EAAG,MAAM,CAACI,YAAY,iBAAiBU,GAAG,CAAC,MAAQlB,EAAIgM,qBAAqB,CAAC5L,EAAG,OAAO,CAACI,YAAY,sCAAsC,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIiM,aAAe,aAAe,uBAAgC7L,EAAG,YAAY,CAAC6K,IAAI,iBAAiB5J,MAAM,CAAC,2BAA4BrB,EAAIqL,iBAAmB,WAAa,IAAInK,GAAG,CAAC,MAAQlB,EAAIsL,mBAAmB,CAAClL,EAAG,OAAO,CAACI,YAAY,kCAAkC,CAACR,EAAIS,GAAG,2BAA2BL,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAAER,EAAI8L,YAAYI,cAAgBlM,EAAIiM,aAAc7L,EAAG,YAAY,CAACI,YAAY,8BAA8BF,MAAM,CAAC,MAAQN,EAAIW,GAAG,4BAA4BO,GAAG,CAAC,MAAQlB,EAAImM,WAAW,CAAC/L,EAAG,OAAO,CAACI,YAAY,kCAAkC,CAACR,EAAIS,GAAG,qBAAqBT,EAAIY,MAAM,GAAIZ,EAAgB,aAAEI,EAAG,MAAM,CAACiB,MAAM,CAAC,aAAcrB,EAAIsB,MAAM8K,gBAAkB,WAAa,KAAK,CAAEpM,EAAIsB,MAAqB,gBAAElB,EAAG,QAAQ,CAACiM,WAAW,CAAC,CAACxO,KAAK,QAAQyO,QAAQ,UAAUhO,MAAO0B,EAAgB,aAAEuM,WAAW,iBAAiBjM,MAAM,CAAC,KAAO,QAAQ,IAAM,IAAI,IAAM,MAAM,KAAO,KAAKkM,SAAS,CAAC,MAASxM,EAAgB,cAAGkB,GAAG,CAAC,MAAQlB,EAAIyM,gBAAgB,IAAM,SAAStL,GAAQnB,EAAI0M,aAAavL,EAAOwL,OAAOrO,UAAU0B,EAAIY,KAAKR,EAAG,YAAY,CAACI,YAAY,iBAAiBF,MAAM,CAAC,MAAQN,EAAIW,GAAG,8BAA8BO,GAAG,CAAC,MAAQ,SAASC,GAAQnB,EAAIsB,MAAM8K,iBAAmBpM,EAAIsB,MAAM8K,mBAAmB,CAAChM,EAAG,UAAU,CAACJ,EAAIS,GAAG,cAAc,IAAI,GAAGT,EAAIY,MAAM,KAAKR,EAAG,MAAM,CAACI,YAAY,kBAAkBa,MAAM,CAAEkK,eAAgBvL,EAAIqL,kBAAmB/K,MAAM,CAAC,GAAKN,EAAI4M,YAAY,CAACxM,EAAG,UAAU,CAACI,YAAY,aAAaF,MAAM,CAAC,eAAe,WAAW,gBAAgBN,EAAIsB,MAAMuL,mBAAmB,CAAE7M,EAAI8L,YAAmB,QAAE1L,EAAG,SAAS,CAACE,MAAM,CAAC,GAAK,aAAa,WAAWN,EAAIW,GAAG,oBAAoB,UAAU,eAAe,CAACP,EAAG,MAAM,CAACI,YAAY,4BAA4B,CAACJ,EAAG,IAAI,CAACJ,EAAIkL,GAAIlL,EAAIsB,MAAkB,cAAE,SAASe,EAAOyK,GAAI,MAAO,CAAC1M,EAAG,IAAI,CAAC2M,MAAM,CAAGC,QAAS3K,EAAO4K,OAAOhR,OAAS,EAAI,QAAU,SAAU,CAACmE,EAAG,QAAQ,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG0B,EAAOmI,WAAanI,EAAO6K,aAAqflN,EAAIY,KAA3eR,EAAG,SAAS,CAACI,YAAY,eAAeF,MAAM,CAAC,KAAO+B,EAAOmI,OAAOtJ,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOnB,EAAImN,YAAYL,MAAO,CAAC9M,EAAIkL,GAAI7I,EAAa,QAAE,SAAS+K,EAAKC,GAAI,MAAO,CAAED,EAAK9O,QAAU+D,EAAOiL,aAAclN,EAAG,SAAS,CAACE,MAAM,CAAC,SAAW,IAAIkM,SAAS,CAAC,MAAQY,EAAK9O,QAAQ,CAAC0B,EAAIS,GAAGT,EAAIU,GAAGV,EAAIuN,eAAeH,EAAK9O,WAAW0B,EAAIY,KAAMwM,EAAK9O,QAAU+D,EAAOiL,aAAclN,EAAG,SAAS,CAACoM,SAAS,CAAC,MAAQY,EAAK9O,QAAQ,CAAC0B,EAAIS,GAAGT,EAAIU,GAAGV,EAAIuN,eAAeH,EAAK9O,WAAW0B,EAAIY,UAAS,GAAayB,EAAmB,aAAEjC,EAAG,SAAS,CAACI,YAAY,eAAeU,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOnB,EAAImN,YAAYL,MAAO,CAAC9M,EAAIkL,GAAIlL,EAAIsB,MAAiB,aAAE,SAAS8L,EAAKC,GAAI,MAAO,CAAED,EAAK9O,QAAU+D,EAAOiL,aAAclN,EAAG,SAAS,CAACE,MAAM,CAAC,SAAW,IAAIkM,SAAS,CAAC,MAAQY,EAAK9O,QAAQ,CAAC0B,EAAIS,GAAGT,EAAIU,GAAGV,EAAIuN,eAAeH,EAAK5C,WAAWxK,EAAIY,KAAMwM,EAAK9O,QAAU+D,EAAOiL,aAAclN,EAAG,SAAS,CAACoM,SAAS,CAAC,MAAQY,EAAK9O,QAAQ,CAAC0B,EAAIS,GAAGT,EAAIU,GAAGV,EAAIuN,eAAeH,EAAK5C,WAAWxK,EAAIY,UAAS,GAAGZ,EAAIY,YAAW,OAAOZ,EAAIY,KAAKR,EAAG,SAAS,CAACE,MAAM,CAAC,GAAK,aAAa,WAAWN,EAAIW,GAAG,oBAAoB,UAAU,cAAc,CAACP,EAAG,MAAM,CAACI,YAAY,cAAc,CAAER,EAAIwN,OAAOvR,OAAS,EAAGmE,EAAG,IAAI,CAACI,YAAY,aAAa,CAACJ,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,uBAAuBP,EAAG,SAAS,CAACiM,WAAW,CAAC,CAACxO,KAAK,QAAQyO,QAAQ,UAAUhO,MAAO0B,EAAiB,cAAEuM,WAAW,kBAAkB/L,YAAY,eAAeU,GAAG,CAAC,OAAS,CAAC,SAASC,GAAQ,IAAIsM,EAAgBC,MAAMvR,UAAUkG,OAAOhG,KAAK8E,EAAOwL,OAAOgB,SAAQ,SAAS5P,GAAG,OAAOA,EAAE6P,YAAWtO,KAAI,SAASvB,GAAG,IAAI8P,EAAM,WAAY9P,EAAIA,EAAE+P,OAAS/P,EAAEO,MAAM,OAAOuP,KAAO7N,EAAI+N,cAAc5M,EAAOwL,OAAOqB,SAAWP,EAAgBA,EAAc,IAAIzN,EAAIiO,iBAAiB,CAACjO,EAAIkL,GAAIlL,EAAU,QAAE,SAASoN,EAAKrR,GAAG,MAAO,CAACqE,EAAG,SAAS,CAACoM,SAAS,CAAC,MAAQY,IAAO,CAACpN,EAAIS,GAAGT,EAAIU,GAAGV,EAAIkO,oBAAoBd,YAAc,GAAGhN,EAAG,OAAO,CAACI,YAAY,YAAY,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIsB,MAAM6M,kBAAkBnO,EAAIY,KAAKR,EAAG,MAAM,CAACE,MAAM,CAAC,IAAMN,EAAIoO,iBAAiBhO,EAAG,SAAS,CAACE,MAAM,CAAC,GAAK,eAAe,WAAWN,EAAIW,GAAG,sBAAsB,UAAU,SAAS,CAACP,EAAG,MAAM,CAACI,YAAY,cAAc,CAAER,EAAIqO,uBAAyBrO,EAAIqO,sBAAsBC,MAAOlO,EAAG,MAAM,CAACA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,8BAA8B,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBC,UAAUlO,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,oCAAoC,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBE,gBAAgBnO,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,gDAAgD,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBG,4BAA4BpO,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,+BAA+B,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBI,WAAWrO,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,4CAA4C,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBK,wBAAwBtO,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,yCAAyC,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBM,qBAAqBvO,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,qCAAqC,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBO,iBAAiBxO,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,yCAAyC,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBQ,qBAAqBzO,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,yCAAyC,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBS,qBAAqB1O,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,mCAAmC,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBpL,eAAe7C,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,0CAA0C,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBU,sBAAsB3O,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,oCAAoC,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBW,gBAAgB5O,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,gDAAgD,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBY,4BAA4B7O,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,kCAAkC,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBa,cAAc9O,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,+BAA+B,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBc,WAAW/O,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,gCAAgC,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBe,YAAYhP,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,gCAAgC,OAAOP,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBgB,YAAYjP,EAAG,MAAMA,EAAG,OAAO,CAACI,YAAY,qBAAqB,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,gCAAgC,OAAOP,EAAG,IAAI,CAACE,MAAM,CAAC,KAAON,EAAIqO,sBAAsBiB,UAAU,CAACtP,EAAIS,GAAGT,EAAIU,GAAGV,EAAIqO,sBAAsBiB,YAAYlP,EAAG,QAAQJ,EAAIY,KAAOZ,EAAIqO,uBAA0BrO,EAAIqO,sBAAsBC,MAA2CtO,EAAIY,KAAxCR,EAAG,MAAM,CAACJ,EAAIS,GAAG,wBAAiC,IAAI,GAAIT,EAAIsB,MAAMiO,aAAevP,EAAIiM,aAAc7L,EAAG,aAAa,CAAC6K,IAAI,aAAa3K,MAAM,CAAC,GAAKN,EAAI4M,UAAU,OAAS5M,EAAIsB,MAAMiO,YAAY,YAAcvP,EAAIsB,MAAMkO,kBAAkBtO,GAAG,CAAC,eAAelB,EAAIyP,2BAA2BzP,EAAIY,MAAM,IACnrQ,GAAkB,G,mCCDlB,GAAS,WAAa,IAAIZ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,6BAA6B,CAAER,EAAU,OAAEI,EAAG,cAAc,CAACI,YAAY,SAASF,MAAM,CAAC,KAAON,EAAI0P,OAAOjU,KAAK,MAAQuE,EAAI0P,OAAOC,MAAM,YAAc,CAAEC,MAAO,UAAWC,gBAAiB,WAAY,aAAe,CAAEA,gBAAiB,YAAa3O,GAAG,CAAC,cAAgBlB,EAAI8P,eAAeC,YAAY/P,EAAIgQ,GAAG,CAAC,CAACpR,IAAI,UAAUqR,GAAG,SAASC,GAAS,MAAO,CAAC9P,EAAG,MAAM,CAACE,MAAM,CAAC,IAAM,EAAQ,eAAwC,MAAK,EAAM,YAAY6P,MAAM,CAAC7R,MAAO0B,EAAIsB,MAAkB,aAAE8O,SAAS,SAAUC,GAAMrQ,EAAIsQ,KAAKtQ,EAAIsB,MAAO,eAAgB+O,IAAM9D,WAAW,wBAAwBvM,EAAIY,KAAKR,EAAG,MAAM,CAACI,YAAY,UAAUU,GAAG,CAAC,MAAQlB,EAAIuQ,cAAc,CAAGvQ,EAAIsB,MAAMkP,UAAiFxQ,EAAIY,KAA1ER,EAAG,UAAU,CAACE,MAAM,CAAC,MAAQ,SAAS,CAACN,EAAIS,GAAG,wBAAkCT,EAAIsB,MAAe,UAAElB,EAAG,UAAU,CAACE,MAAM,CAAC,MAAQ,UAAU,CAACN,EAAIS,GAAG,kBAAkBT,EAAIY,MAAM,IAAI,IAC78B,GAAkB,G,wBCYD,GAArB,yG,0BACU,EAAAU,MAAa,CACnBmP,aAAc,EACdD,WAAW,GAHf,oDAoBU,WAAW,WACjBvQ,KAAKqB,MAAMkP,WAAavQ,KAAKqB,MAAMkP,UACnC,IAAME,EAAWzQ,KAAKyP,OAAOjU,KAAK,GAC5BkV,EAAU1Q,KAAKyP,OAAOjU,KAAKwE,KAAKyP,OAAOjU,KAAKQ,OAAS,GAEvDgE,KAAKqB,MAAMkP,WACbvQ,KAAKqB,MAAMmP,aACTxQ,KAAKqB,MAAMmP,eAAiBE,EACxBD,EACAzQ,KAAKyP,OAAOjU,KACVwE,KAAKyP,OAAOjU,KAAKgM,QAAQxH,KAAKqB,MAAMmP,cAAgB,GAG5DxQ,KAAK2Q,MAAQC,aAAY,WACvB,EAAKvP,MAAMmP,aAAe,EAAKf,OAAOjU,KACpC,EAAKiU,OAAOjU,KAAKgM,QAAQ,EAAKnG,MAAMmP,cAAgB,GAGlD,EAAKnP,MAAMmP,eAAiBE,GAE9BjF,YAAW,WACT,EAAKpK,MAAMmP,aAAe,EAAKf,OAAOjU,KAAK,KAC1C,OAEJ,MAEHqV,cAAc7Q,KAAK2Q,SA9CzB,2BAqDU,SAAc/C,GACpB,IAAMkD,EAAiB,CACrBzS,MAAO2H,MAAM4H,EAAIrD,OACbvK,KAAK+Q,sBAAsBnD,EAAIrD,OAC/BqD,EAAIrD,MACRyG,YAAahR,KAAKgR,aAEpBlP,GAAIC,MAAJ,8BAAiC/B,KAAKR,IAAMsR,KA5DhD,mCAkEU,SAAsBG,GAC5B,IAAMC,EAAeD,GAAOA,EAAIjV,OAAS,EAAIiV,EAAIE,UAAU,EAAG,GAAK,GACnE,OAAQnL,MAAMC,OAAOiL,KAAyB,EAAhBjL,OAAOiL,KApEzC,oBA0ES,SAAOtD,GACR3H,OAAOjG,KAAKqB,MAAMmP,gBAAkB5C,IACtC5N,KAAKqB,MAAMmP,aAAe5C,OA5EhC,GAAwC,QAStC,gBADC,eAAK,CAAEhC,QAAS,Q,0BAIjB,gBADC,eAAK,CAAEA,QAAS,Q,8BAIjB,gBADC,eAAK,CAAEA,QAAS,Q,mCAdE,GAAU,gBAL9B,eAAU,CACThB,WAAY,CACVwG,YAAA,SAGiB,cCboZ,MCQra,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,qOCNF,GAAb,+CAIS,KAAAC,qBAA8B,GAC9B,KAAAC,kBAAoB,EAL7B,kDAuBS,SAAYC,GACdC,EAAarL,WACdqL,EAAarL,SAASoL,OAASA,KAzBrC,uBAiCS,WAAS,WAEdvR,KAAKyR,cAAgB,CACnBC,UAAWC,SAASC,eAAe,SACnCvD,MAAOsD,SAASC,eAAe,eAC/BC,QAASF,SAASC,eAAe,iBACjCE,SAAUH,SAASC,eAAe,mBAClCG,OAAQJ,SAASC,eAAe,gBAChCI,QAAS,MAIXhS,KAAKgS,QAAU,IAAIC,GAAA,KAAQ,CACzBC,QAASlS,KAAKyR,cAAcC,UAC5BS,SAAS,EACTC,iBAAkB,CAChBC,SAAU,OAKdrS,KAAKyR,cAAcM,OAAOO,QAAU,WAElC,OADA,EAAKC,cACE,GAGTvS,KAAKyR,cAAcO,QAAUhS,KAAKgS,UA3DtC,wBAiES,WACLhS,KAAKgS,QAAQQ,iBAAYC,GACzBzS,KAAKyR,cAAcM,OAAOW,OAC1B,GAAe5P,cAAc6P,oBApEjC,uBA8ES,SAAUC,EAAiB7P,EAAa2B,GAAqC,WAAnBmO,EAAmB,uDAAF,GAC5ExE,EAAQrO,KAAKuR,OAAO7Q,GAAGqC,EAAOsL,OAC9BwD,EAAU,GAEd,IAAK,IAAMlT,KAAOiU,EAChB,GAAIvE,EAAM7D,WAAWhD,QAAjB,UAA4B7I,KAAU,EAAG,CAC3C,IAAMmU,EAAaF,EAAWjU,GAAOiU,EAAWjU,GAAO,IACvD0P,EAAQA,EAAM7D,WAAWuI,QAAQ,KAAOpU,EAAM,IAAKmU,GAIvD/P,EAAO8O,QAAQ9K,SAAQ,SAACiM,GACtB,IAAM3U,EAAQuU,EAAWI,EAAMC,cAC3BL,EAAWI,EAAMC,cACjB,IACJpB,GAAW,MAAJ,OAAU,EAAKN,OAAO7Q,GAAGsS,EAAMzI,OAA/B,iBAA8ClM,EAA9C,YAGTwT,GAAW,QACXA,GAAW,6DAEX7R,KAAKyR,cAAcpD,MAAM6E,UAAY7E,EAAM7D,WACxCb,MAAM,KACNpF,KAAK,IACLoF,MAAM,KACNpF,KAAK,IACLoF,MAAM,KACNpF,KAAK,IAELsO,IACDhB,GAAW,MAAJ,OAAU7R,KAAKuR,OAAO7Q,GAAG,0BAAzB,QACPmR,GAAW,QACXA,GAAW,QACXA,GAAWgB,GAGb7S,KAAKyR,cAAcI,QAAQqB,UAAYrB,EACvC7R,KAAKyR,cAAcO,QAAQQ,YAAY9N,GAEnC1E,KAAKqR,qBAAqBrV,OAAS,EACrCgE,KAAKyR,cAAcK,SAASqB,UAAUC,OAAO,UAE7CpT,KAAKyR,cAAcK,SAASqB,UAAUE,IAAI,YAxHhD,+BA+HS,WACLrT,KAAKqR,qBAAuB,GAC5BrR,KAAKsR,kBAAoB,KAjI7B,0BAWS,WAKL,OAJKE,EAAarL,WAChBqL,EAAarL,SAAW,IAAIqL,GAGvBA,EAAarL,aAhBxB,KCWa,GAAb,+CAKU,KAAAmN,UAAiB,GAL3B,0DAcU,WACN,OAAO7I,YAAc,MAfzB,sBAyCU,WACN,IAAM8I,EAA0BvT,KAAKwT,sBAErCxT,KAAKwE,KAAO,IAAIiP,GAAA,KAAK,CACnBC,KAAMH,EAAiBvT,KAAK2T,UAAUD,KAAM,EAAI1T,KAAK2T,UAAUD,KAC/DE,QAAS5T,KAAK2T,UAAUC,QACxBC,QAAS7T,KAAK2T,UAAUE,QACxBC,OAAQ9T,KAAK2T,UAAUG,OACvBC,oBAAqB/T,KAAK2T,UAAUI,oBACpC/Q,WAAYhD,KAAK2T,UAAU3Q,eAlDjC,gCA6DU,WACN,IAAMgR,EAAiB,IAAIC,GAAA,KAAM,CAI/BC,OAAQ,IAAIC,GAAA,KAAO,CACjBxE,MAAO,UACPyE,MAAO,MAIXpU,KAAKqU,eAAiB,IAAIC,GAAA,KAAY,CACpCC,OAAQ,IAAI,QACZzH,MAAOkH,EACP3U,IAAKW,KAAKX,QA3EhB,8BAkFU,WACN,MAAO,CACL,IAAImV,GAAA,KAAU,CACZD,OAAQ,IAAIE,GAAA,UArFpB,uBA6FU,WACN,OAAOzU,KAAK0U,cACTC,UACAC,OAAO5U,KAAK6U,cAAcF,WAC1BC,OAAO5U,KAAK8U,cAAcH,WAC1BC,OAAO5U,KAAK+U,cAAcJ,WAC1BC,OAAO5U,KAAKgV,cAAcL,WAC1BC,OAAO5U,KAAKiV,cAAcN,WAC1BC,OAAO5U,KAAKkV,cAAcP,WAC1BC,OAAO5U,KAAKmV,cAAcR,aAtGjC,+BA8GU,SAAkB9I,GACxB,IAAM7K,EAAc,CAClBO,OAAQsK,EAAYjO,KACpBwX,MAAOvJ,EAAYwJ,OAIjBxJ,EAAYxH,aACdrD,EAAOqD,WAAawH,EAAYxH,YAGlC,IAAMkQ,EAAkB,IAAIe,GAAA,KAAQ,CAClChR,IAAK,EAAcxB,cAAcC,OAAO1D,IAAIkW,WAC5CvU,OAAQA,EACRwU,WAAY,YACZC,WAAY,IAGRrR,EAAQ,IAAIoQ,GAAA,KAAU,CAC1BD,OAAQA,IAOV,OAJAnQ,EAAMsR,WAAW7J,EAAY8J,SAC7BvR,EAAMwR,WAAW/J,EAAYgK,SAGtBzR,IAxIX,yBA8IU,WAAW,WACXmE,EAAsB,GAe5B,OAbI,EAAczF,cAAcC,OAAO1D,IAAI8H,SAASI,IAClD,EAAczE,cAAcC,OAAO1D,IAAI8H,SAASI,GAAGgB,OAAOxB,SACxD,SAAC8E,GACC,IAAMzH,EAAQ,EAAK0R,kBAAkBjK,GACrCtD,EAAOjM,KAAK8H,GACZ,EAAKkP,UAAUzH,EAAYjO,MAAQ,CACjCwG,MAAOA,EACPrB,OAAQ8I,MAMTtD,IA9JX,yBAoKU,WAAW,WACXA,EAAsB,GAc5B,OAbI,EAAczF,cAAcC,OAAO1D,IAAI8H,SAASM,IAClD,EAAc3E,cAAcC,OAAO1D,IAAI8H,SAASM,GAAGc,OAAOxB,SACxD,SAAC8E,GACC,IAAMzH,EAAQ,EAAK0R,kBAAkBjK,GACrCtD,EAAOjM,KAAK8H,GACZ,EAAKkP,UAAUzH,EAAYjO,MAAQ,CACjCwG,MAAOA,EACPrB,OAAQ8I,MAMTtD,IAnLX,yBAyLU,WAAW,WACXA,EAAsB,GAe5B,OAbI,EAAczF,cAAcC,OAAO1D,IAAI8H,SAASO,IAClD,EAAc5E,cAAcC,OAAO1D,IAAI8H,SAASO,GAAGa,OAAOxB,SACxD,SAAC8E,GACC,IAAMzH,EAAQ,EAAK0R,kBAAkBjK,GACrCtD,EAAOjM,KAAK8H,GACZ,EAAKkP,UAAUzH,EAAYjO,MAAQ,CACjCwG,MAAOA,EACPrB,OAAQ8I,MAMTtD,IAzMX,yBA+MU,WAAW,WACXA,EAAsB,GAe5B,OAbI,EAAczF,cAAcC,OAAO1D,IAAI8H,SAASQ,IAClD,EAAc7E,cAAcC,OAAO1D,IAAI8H,SAASQ,GAAGY,OAAOxB,SACxD,SAAC8E,GACC,IAAMzH,EAAQ,EAAK0R,kBAAkBjK,GACrCtD,EAAOjM,KAAK8H,GACZ,EAAKkP,UAAUzH,EAAYjO,MAAQ,CACjCwG,MAAOA,EACPrB,OAAQ8I,MAMTtD,IA/NX,yBAqOU,WAAW,WACXA,EAAsB,GAe5B,OAbI,EAAczF,cAAcC,OAAO1D,IAAI8H,SAASS,IAClD,EAAc9E,cAAcC,OAAO1D,IAAI8H,SAASS,GAAGW,OAAOxB,SACxD,SAAC8E,GACC,IAAMzH,EAAQ,EAAK0R,kBAAkBjK,GACrCtD,EAAOjM,KAAK8H,GACZ,EAAKkP,UAAUzH,EAAYjO,MAAQ,CACjCwG,MAAOA,EACPrB,OAAQ8I,MAMTtD,IArPX,yBA2PU,WAAW,WACXA,EAAsB,GAe5B,OAbI,EAAczF,cAAcC,OAAO1D,IAAI8H,SAASU,IAClD,EAAc/E,cAAcC,OAAO1D,IAAI8H,SAASU,GAAGU,OAAOxB,SACxD,SAAC8E,GACC,IAAMzH,EAAQ,EAAK0R,kBAAkBjK,GACrCtD,EAAOjM,KAAK8H,GACZ,EAAKkP,UAAUzH,EAAYjO,MAAQ,CACjCwG,MAAOA,EACPrB,OAAQ8I,MAMTtD,IA3QX,yBAiRU,WAAW,WACXA,EAAsB,GAe5B,OAbI,EAAczF,cAAcC,OAAO1D,IAAI8H,SAASW,IAClD,EAAchF,cAAcC,OAAO1D,IAAI8H,SAASW,GAAGS,OAAOxB,SACxD,SAAC8E,GACC,IAAMzH,EAAQ,EAAK0R,kBAAkBjK,GACrCtD,EAAOjM,KAAK8H,GACZ,EAAKkP,UAAUzH,EAAYjO,MAAQ,CACjCwG,MAAOA,EACPrB,OAAQ8I,MAMTtD,IAjSX,yBAuSU,WAAW,WACXA,EAAsB,GAe5B,OAbI,EAAczF,cAAcC,OAAO1D,IAAI8H,SAAS4O,IAClD,EAAcjT,cAAcC,OAAO1D,IAAI8H,SAAS4O,GAAGxN,OAAOxB,SACxD,SAAC8E,GACC,IAAMzH,EAAQ,EAAK0R,kBAAkBjK,GACrCtD,EAAOjM,KAAK8H,GACZ,EAAKkP,UAAUzH,EAAYjO,MAAQ,CACjCwG,MAAOA,EACPrB,OAAQ8I,MAMTtD,IAvTX,4BA6TW,WACP,IAAMyN,EAA+B,IAAI1B,GAAA,KAAY,CACnDC,OAAQ,IAAI,QACZlV,IAAKW,KAAKX,IACVsW,SAAS,IAGX3V,KAAKsT,UAAU2C,eAAiB,CAC9B7R,MAAO4R,EACPjT,OAAQ,EAAcD,cAAcC,OAAO1D,IAAI2W,eAC/C3W,IAAKW,KAAKX,KAGZ,IAAM6W,EAA8B,IAAI5B,GAAA,KAAY,CAClDC,OAAQ,IAAI,QACZlV,IAAKW,KAAKX,IACVsW,SAAS,IASX,OANA3V,KAAKsT,UAAU6C,eAAiB,CAC9B/R,MAAO8R,EACPnT,OAAQ,EAAcD,cAAcC,OAAO1D,IAAI2W,eAC/C3W,IAAKW,KAAKX,KAGL,CAAC2W,EAAgBE,KAtV5B,6BAiYU,WAAe,WACrBlW,KAAKX,IAAI4B,GAAG,eAAe,SAAAvB,GACzBoC,GAAIC,MACF,eADF,UAEKrC,EAAE0W,WAAW,GAAGC,QAAQ,GAF7B,aAEoC3W,EAAE0W,WAAW,GAAGC,QAAQ,QAI9DrW,KAAKX,IAAI4B,GAAG,eAAe,SAAAqV,GACzB,GAAaxT,cAAcyP,aAC3B,EAAKgE,YAAYD,QA3YvB,yBAmZU,SAAYA,GAAQ,WACpB5R,EAAc4R,EAAIF,WAClBI,EAAQxW,KAAKX,IAAIoX,cAAcH,EAAII,eACrCC,GAAe,EACnB,GAAa7T,cAAc8T,oBAE3B9U,GAAIC,MAAM,gBAGV/B,KAAK2S,kBAEL3S,KAAKX,IAAIwX,oBAAoBL,GAAO,SAAA9W,GAClC,IAAM0E,EAAmB1E,EAEzB,GAAI0E,GAASA,EAAM0S,aAAe1S,EAAM0S,sBAAuBxB,GAAA,KAAS,CACtE,IAAMf,EAAkBnQ,EAAM0S,YACxB9V,EAASuT,EAAOwC,YAEtB,GAAI/V,GAAUA,EAAOO,QAAU,EAAK+R,UAAUtS,EAAOO,QAAS,CAC5D,IAAMyV,EAAW,EAAK1D,UAAUtS,EAAOO,QAEvC,GAAIyV,GAAYA,EAASjU,OAAQ,CAC/B,IAAMkU,EAA+BD,EAASjU,OACxCmU,EAAwB,EAAapU,cAAc8D,kBAAoBqQ,EAAerZ,OAAS,EAAckF,cAAcC,OAAO1D,IAAI2W,eAAepY,KAEvJqZ,EAAeE,QACjB,GAAarU,cAAcuO,qBAAqB/U,KAAK,CACnDiY,OAAQA,EACRxR,OAAQiU,EAASjU,OAAOoU,MACxBC,YAAaJ,EAASjU,OAAOsU,WAC7B3S,YAAaA,IAGViS,IACHA,GAAe,EAEf,EAAKW,sBACH/C,EACAyC,EAASjU,OAAOoU,MAChBzS,EACAsS,EAASjU,OAAOsU,WAChBH,aA5blB,uBA6cU,SAAUK,EAAkBxU,EAAa2B,GAAqC,IAAnBmO,EAAmB,uDAAF,GAClF,GAAa/P,cAAc0U,UACzBD,EAAQxO,gBACRhG,EACA2B,EACAmO,KAldN,8BAydU,WAEJ7S,KAAKsT,UAAUmE,EAAeC,iBAC9B1X,KAAKsT,UAAUmE,EAAeC,gBAAgBtT,QAE9CpE,KAAKX,IAAIsY,YAAY3X,KAAKsT,UAAUmE,EAAeC,gBAAgBtT,OACnEpE,KAAKsT,UAAUmE,EAAeC,gBAAkB,QA/dtD,mCAueU,SAAsBH,GAC5B,IAAMK,EAAoBL,EACvBM,QACArN,WACAb,MAAM,KAAK,GAGVmO,EAAmB,KAEvB,IAAK,IAAMnZ,KAAOqB,KAAKsT,UACrB,GAAI3U,IAAQiZ,GAAajZ,EAAIoZ,SAAJ,WAAiBH,IAAc,CACtDE,EAAc9X,KAAKsT,UAAU3U,GAAKoE,OAAOoU,MACzC,MAIJ,GAAIW,EAAa,CACf,IAAME,EAAST,EAAQU,cAAcC,YAC/BpE,EAAS,gBAAUkE,GACzBhY,KAAKmY,UAAUZ,EAASO,EAAahE,GAIvC9T,KAAKqU,eAAeyC,YAAYsB,WAAWb,KA9f/C,8BA4gBU,SAAiBA,EAAcH,GACjCA,GAAeA,EAAYiB,aAAejB,EAAYiB,YAAYrc,QACpE8F,GAAIC,MACF,oBACAwV,KAhhBR,qBAwhBS,WAAO,WACZvX,KAAKX,IAAM,KAGX,GAAayD,cAAcwV,YAG3BtY,KAAKuY,WAELvY,KAAKX,IAAM,IAAImZ,GAAA,KAAI,CACjB9L,OAAQ,eACR+L,SAAU,QAAmB,CAC3BC,aAAa,EACbhF,MAAM,IAERnL,OAAQ,GACR/D,KAAMxE,KAAKwE,KACXmU,SAAU,CAAC,GAAa7V,cAAc2O,cAAcO,WAGtDhS,KAAK4Y,gBAGL5Y,KAAK6Y,kBAGL7Y,KAAK8Y,qBAED,EAAahW,cAAc8D,kBAC7B5G,KAAKX,IAAI0Z,KAAK,cAAc,SAACvN,GAC3B,EAAKwN,sBAtjBb,4BA8jBU,WACN,IAAMhD,EAA4ByB,EAAe3U,cAAcmW,eAAe,EAAcnW,cAAcC,OAAO1D,IAAI2W,eAAepY,MAEpI,GAAIoY,GAAkBA,EAAec,aAAed,EAAec,sBAAuBxB,GAAA,KAAS,CACjG,IAAMf,EAAkByB,EAAec,YAEnCvC,GACFkD,EAAe3U,cAAcoW,sBAAsB3E,EAAQ,CAAC,EAAazR,cAAcwC,IAAK,EAAaxC,cAAcuC,SArkB/H,4FAglBa,WACPkP,EACA7P,GAFO,oHAK6B,EAAayU,SAASnZ,KAAKwE,KAAM+P,EAAQ7P,GALtE,cAKCmE,EALD,OAMDmP,EAAS,gBAAehY,KAAK2T,UAAUyF,qBAEvCvQ,GAAYA,EAAS7M,QACjBqd,EAAaxQ,EAAS,GAAGoP,cAAcC,YAEzCmB,GAAcA,EAAWrd,OAAS,IACpCgc,EAAS,CAACqB,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,MAGpEvX,GAAIC,MACF,gCAIJ0V,EAAe3U,cAAc0B,KAAK8U,IAAItB,GApBjC,kBAsBE3U,QAAQvD,WAtBV,8DAwBEuD,QAAQC,OAAR,OAxBF,0DAhlBb,uFA+mBS,WAAa,WAClBtD,KAAKuZ,mBACJ3E,OAAO5U,KAAKwZ,aACZzS,SAAQ,SAAC3C,GACR,EAAK/E,IAAIoa,SAASrV,MAGpBpE,KAAK0Z,mBAtnBT,kBA6nBS,SAAK,GACV,IAAMC,EAAkB3Z,KAAKwE,KAAKoV,WAAa,EAG7CD,EAAU,EAAO,EAAc7W,cAAcC,OAAO1D,IAAIuU,SACxD+F,EAAU,EAAO,EAAc7W,cAAcC,OAAO1D,IAAIwU,SAI1D7T,KAAKwE,KAAKqV,QAAQ,CAChBnG,KAAMiG,EAAU,EAChBtH,SAAU,QAxoBhB,6BA+oBS,WACLrS,KAAKwE,KAAKqV,QAAQ,CAChBnG,KAAM1T,KAAK2T,UAAUD,KACrBI,OAAQ9T,KAAK2T,UAAUG,OACvBzB,SAAU,QAnpBhB,gCA4pBS,SAAmBzU,EAAc+X,GAClC3V,KAAKsT,UAAU1V,IAASoC,KAAKsT,UAAU1V,GAAMwG,OAC/CpE,KAAKsT,UAAU1V,GAAMwG,MAAMsR,WAAWC,KA9pB5C,6BAsqBS,SAAgB/X,EAAciY,GAC/B7V,KAAKsT,UAAU1V,IAASoC,KAAKsT,UAAU1V,GAAMwG,OAC/CpE,KAAKsT,UAAU1V,GAAMwG,MAAMwR,WAAWC,KAxqB5C,gCAgrBS,SAAmBjY,EAAckc,GACtC,GAAI9Z,KAAKsT,UAAU1V,IAASoC,KAAKsT,UAAU1V,GAAMwG,MAAO,CACtD,IAAMA,EAAmBpE,KAAKsT,UAAU1V,GAAMwG,MAE9C,GAAIA,EAAO,CACT,IAAMmQ,EAAkBnQ,EAAM0S,YACxB9V,EAASuT,EAAOwC,YACtB/V,EAAOqD,WAAayV,EACpBvF,EAAOwF,aAAa/Y,GAGpBuT,EAAOyF,cA3rBf,4BAqsBS,SAAepc,EAAcoD,GAClC,GAAIhB,KAAKsT,UAAU1V,GAAO,CACxB,IAAMwG,EAAmBpE,KAAKsT,UAAU1V,GAAMwG,MAE9C,GAAIA,EAAO,CACT,IAAMmQ,EAAkBnQ,EAAM0S,YACxBmD,EAAY1F,EAAOwC,YAEzB/V,EAAO+F,SAAQ,SAACmT,GACdD,EAAUC,EAASC,OAASD,EAAS7b,SAGvCkW,EAAOwF,aAAaE,GAGpB1F,EAAOyF,cAptBf,4BA6tBS,SAAepc,GACpB,OAAO6Z,EAAe3U,cAAcwQ,UAAYmE,EAAe3U,cAAcwQ,UAAU1V,GAAMwG,MAAQ,OA9tBzG,0BAouBS,WACL,OAAOpE,KAAKsT,YAruBhB,4BA4uBS,SAAe1V,GACpB,GAAIoC,KAAKsT,UAAW,CAClB,IAAMlP,EAAmBpE,KAAKsT,UAAU1V,GAAMwG,MACxCgW,EAAchW,EAAM0S,YAAwBuD,aAChDra,KAAKwE,KAAKI,iBAEZ,OAAOwV,GAAc,GAGvB,MAAO,KArvBX,4BA4vBS,SACLxc,GAEA,OAAO,IAAIyF,SACT,SAACvD,EAASwD,GACRC,MAAM,GAAD,OAED,EAAcT,cAAcC,OAAO1D,IAAImE,WAFtC,qCAG0B5F,EAH1B,8BAIH,CACE6F,OAAQ,QAGTI,MAAK,SAAAC,GAAQ,OAAIA,EAASiB,UAC1BlB,MAAK,SAAAoN,GAAG,OAAI,IAAI/R,OAAOob,WAAYC,gBAAgBtJ,EAAK,eACxDpN,MAAK,SAAArI,GACJ,IAGMgf,EAHAjN,EAAS,GAEX/R,IAGFiS,MAAMgN,KAAKjf,EAAKkf,qBAAqB,kBAAkB3T,SACrD,SAAA4T,GACE,IAAMC,EAAMnN,MAAMgN,KAChBE,EAAUD,qBAAqB,aAE3BG,EACJD,GAAOA,EAAI5e,OAAS4e,EAAI,GAAG1H,UAAY,KACnC4H,EAAeH,EAAUD,qBAC7B,iBAGF,GAAII,GAAgBA,EAAa9e,OAAQ,CACvC,IAAMiL,EAAY6T,EAAa,GAAG5H,UAC9BjM,GAAmC,IAAtBhB,OAAOgB,KACtBuT,EAAeK,GAIfA,GACFtN,EAAOjR,KAAKue,MAKlB/a,EAAQ,CACNyN,OAAQA,EACLwN,OACA3Y,QAAO,SAACwL,EAAK9R,GAAN,OAAYyR,EAAO/F,QAAQoG,KAAS9R,KAC9C0e,aAAcA,QAInBtW,OAAM,SAACC,GACNrE,EAAQ,cAlzBpB,yBA4zBS,SACLkb,EACAC,GAGA,cAAmBhf,OAAO4D,KAAKG,KAAKsT,WAApC,eAAgD,CAA3C,IAAM1V,EAAI,KACboC,KAAK+L,mBAAmBnO,GAAM,GAIhCoC,KAAK+L,mBAAmBiP,EAAUpd,MAAM,GAGxCoC,KAAKkb,mBAEL,IAAMC,EAAwBnb,KAAK8V,kBAAkBmF,GACrDE,EAAWzF,YAAW,GACtB1V,KAAKX,IAAIoa,SAAS0B,GAElBnb,KAAKsT,UAAUmE,EAAeC,gBAAkB,CAC9CtT,MAAO+W,EACPpY,OAAQkY,EAAWpP,aAGrB7L,KAAKob,UAAUD,GACfnb,KAAKX,IAAIgc,WAr1Bb,uBA41BS,SAAUF,GAAqB,WACpCA,EAAWla,GAAG,aAAa,SAAAuK,GACzB,IAAM8P,EAAM9P,EAAM+P,QACZC,EAAU,EAAKnc,IAAIoc,UACnBrH,EAAQoH,EAAQ,IAAM,EAAKE,WAAa,KACxCC,EAAK,gBAAenQ,EAAO,CAAC4I,EAAO,IACnCwH,EAAK,gBAAepQ,EAAO,CAACgQ,EAAQ,GAAI,IACxCK,EAAK,gBAAerQ,EAAO,CAAC4I,EAAOoH,EAAQ,KAC3CM,EAAK,gBAAetQ,EAAOgQ,GAEjCF,EAAIS,OACJT,EAAIU,YACJV,EAAIW,OAAON,EAAG,GAAIA,EAAG,IACrBL,EAAIY,OAAOL,EAAG,GAAIA,EAAG,IACrBP,EAAIY,OAAOJ,EAAG,GAAIA,EAAG,IACrBR,EAAIY,OAAON,EAAG,GAAIA,EAAG,IACrBN,EAAIa,YACJb,EAAIc,UAGNjB,EAAWla,GAAG,cAAc,SAASuK,GACnC,IAAM8P,EAAM9P,EAAM+P,QAClBD,EAAIe,eAl3BV,2BA03BS,SAAczO,GACnB5N,KAAK0b,WAAa9N,EAClB5N,KAAKX,IAAIgc,WA53Bb,yBAk4BS,WACLrb,KAAKkb,qBAn4BT,6BAy5BS,WACLlb,KAAKqU,eAAeyC,YAAYwF,UA15BpC,wBAi6BS,SAAW/E,GAChBvX,KAAKwE,KAAK8U,IAAI/B,EAAQU,cAAcC,YAAa,CAC/CqE,KAAMvc,KAAKX,IAAIoc,cAn6BrB,4FA66BS,WACLlH,EACAxR,EACA2B,GAHK,sHAIL0S,EAJK,+BAIsB,KAC3BF,EALK,kDAQ+B,EAAaiC,SAASnZ,KAAKwE,KAAM+P,EAAQ7P,GARxE,UAQGmE,EARH,OASCgK,EAAiB,IACjBhK,IAAYA,EAAS7M,OAVtB,qBAWG+G,EAAO8P,eAXV,wBAYO1Q,EAAU,CAAC,CAACE,UAAWU,EAAO8P,eAAe2J,cAAene,MAAOwK,EAAS,GAAGE,gBAAgBhG,EAAO8P,eAAeG,SAZ5H,UAa0C,EAAarK,cAAc,EAAaC,qBAAqB,CAAC7F,EAAO8P,eAAezO,OAAQ,KAAMjC,IAb5I,QAaOsa,EAbP,OAcC5J,EAAiB4E,EAAeiF,qBAAqBD,EAAiB1Z,EAAO8P,gBAd9E,QAiBD7S,KAAKmY,UAAUtP,EAAS,GAAI9F,EAAQ2B,EAAamO,GACjD7S,KAAK2c,iBAAiB9T,EAAS,GAAIuO,GACnCpX,KAAKqU,eAAeyC,YAAYwF,QAChCtc,KAAKqU,eAAeyC,YAAYsB,WAAWvP,EAAS,IAEhDqO,IACI0F,EAAa/T,EAAS,GAAGE,gBAAgB,EAAcjG,cAAcC,OAAO1D,IAAI2W,eAAe6G,SACrG/a,GAAIC,MAAM,iCAAkC6a,IAxB7C,iCA4BIvZ,QAAQvD,WA5BZ,8DA8BIuD,QAAQC,OAAR,OA9BJ,0DA76BT,kGAkBU,SAA4BmZ,EAA4B1Z,GAC9D,IAAI8O,EAAU,GAgBd,OAfA4K,EAAgB1V,SAAS,SAAC+B,EAAehN,GACnC+V,IACFA,GAAW,SAEbA,GAAW,iCAAJ,OAAqC/V,EAAI,EAAzC,mBACP+V,GAAW,QAEX,IAAMiL,EAAQhU,EAAKC,gBAEnBhG,EAAOga,OAAOhW,SAAS,SAACiM,EAA8ClX,GACpE+V,GAAW,WAAJ,OAAemB,EAAMzI,MAArB,sBAAwCuS,EAAM9J,EAAMC,eAC3DpB,GAAW/V,EAAIiH,EAAOga,OAAO/gB,OAAS,EAA3B,QAAyC,SAIxD,2CAA2C6V,EAA3C,YAnCJ,yBAy4BS,WAAkB,WAUvB,OATK4F,EAAetR,WAClBsR,EAAetR,SAAW,IAAIsR,EAC9BA,EAAetR,SAASwN,UAAY,EAAc7Q,cAAcC,OAAO1D,IAEvEyC,GAAIG,IAAI,gBAAgB,SAACsV,GACvB,EAAKzU,cAAcka,sBAAsBzF,OAItCE,EAAetR,aAn5B1B,KAQgB,GAAAuR,eAAiB,aCdjC,IAAqB,GAArB,yG,0BACU,EAAA1L,cAAe,EACf,EAAAS,aAAe,IACf,EAAA0B,UAAY,GACZ,EAAAZ,OAAS,GACT,EAAAO,cAAgB,GAChB,EAAA1C,kBAAmB,EACnB,EAAAuB,UAAY,GACZ,EAAAsQ,cAA6B,GAC7B,EAAA7O,sBAAmC,GAEnC,EAAA8O,wBAAyB,EAEzB,EAAA7b,MAAa,CACnB8b,aAAc,GACdhR,iBAAiB,EACjBS,iBAAkB,aAClB0C,YAAa,KACbC,iBAAkB,KAClB6N,YAAa,GACblP,YAAa,IApBjB,gDAgCU,WAAO,WACblO,KAAKqd,OAAO,gBAAgB,WACtB,EAAKrR,cAAgB,EAAK3K,MAAMiO,YAClCqC,SAASjO,KAAKyP,UAAUE,IAAI,uBAE5B1B,SAASjO,KAAKyP,UAAUC,OAAO,0BAKnCtR,GAAIG,IAAI,uBAAuB,WAC7B,EAAKmG,aAAa,EAAKwB,MAAMC,aA3CnC,qBAkDU,WAAO,WAEb7J,KAAKoI,aAAapI,KAAK4J,MAAMC,QAE7B7J,KAAKgM,aAAehM,KAAK6L,YAAY8J,QACrC3V,KAAKyM,aAA0C,IAA3BzM,KAAK6L,YAAYgK,QACrC7V,KAAKoL,iBAAmBpL,KAAK8L,eAAgB,EAC7C9L,KAAKmO,UAAY,GAAerL,cAAcwa,eAC5Ctd,KAAK6L,YAAYjO,MAEnB,GAAekF,cACZya,eAAevd,KAAK6L,YAAYjO,MAChCiG,MAAK,SAACoE,GACDA,GAAOA,EAAIsF,OAAOvR,SACpB,EAAKuR,OAAStF,EAAIsF,OAClB,EAAKO,cAAgB7F,EAAIuS,cAAgB,EAAKjN,OAAO,GACrD,EAAKS,oBAGXhO,KAAK2M,UAAY3M,KAAK6L,YAAYjO,KAAK+L,MAAM,KAAKpF,KAAK,KAEnDvE,KAAK6L,YAAY1J,SAAWnC,KAAK6L,YAAY1J,QAAQnG,SACvD,OAAI6F,IAAI7B,KAAKqB,MAAO,mBAAoB,cAGpCrB,KAAK6L,YAAY2R,YACnBxd,KAAKyd,aAAa5Z,MAAK,SAACgF,GACtB,EAAK6U,UAAU7U,MAEd7I,KAAK0d,aAGZ5b,GAAIG,IAAJ,8BAA+BjC,KAAK2M,YAAa,SAACgR,GAChD,IAAMC,EAAgB,EAAKC,IAAIC,iBAAiB,iBAEhD,GAAIF,EAAc5hB,OAAS2hB,EAAW3M,YAAa,CACjD,IAAM+M,EAA4BH,EAChCD,EAAW3M,aAGT+M,EAAO1f,QAAUsf,EAAWtf,QAC9B0f,EAAO1f,MAAQsf,EAAWtf,MAC1B,EAAK6O,YAAYyQ,EAAW3M,oBA5FtC,0BAqGU,SAAahI,GAAY,WAC/BhJ,KAAKid,cAAgB,GAErB,EAAcna,cAAcuF,SAASW,GAAMjC,SAAQ,SAACsB,GAC9CA,EAASjE,QAAU,EAAKyH,YAAYjO,OACtC,EAAKqf,cAAc3gB,KAAK+L,GAEpBA,EAASyE,QACX,EAAKoQ,wBAAyB,OAKhCld,KAAKid,eAA+C,IAA9Bjd,KAAKid,cAAcjhB,SAC3CgE,KAAKoO,sBAAwBpO,KAAKid,cAAc,MAnHtD,4BA0HU,SAAe1S,GACrB,GAAGA,GAASvE,MAAMC,OAAOsE,IAAS,CAChC,IAAIqR,GAA6C,IAAxCrR,EAAM/C,QAAQ,oBAAd,2BAAgE+C,EAAMyT,eAAkBzT,EAAMyT,cAGvG,GAFApC,EAAKA,EAAGjS,MAAM,KAAKpF,KAAK,KAAKoF,MAAM,KAAKpF,KAAK,KAAKoF,MAAM,KAAKpF,KAAK,KAE/DvE,KAAKie,IAAIrC,GACV,OAAO5b,KAAKU,GAAGkb,GAAIpR,WAIvB,OAAOD,IApIX,iCA0IU,SAAoBA,GAC1B,IAAIqR,EAAK,oBAAH,OAAuBrR,GAG7B,OAFAqR,EAAKA,EAAGjS,MAAM,KAAKpF,KAAK,KAAKoF,MAAM,KAAKpF,KAAK,KAAKoF,MAAM,KAAKpF,KAAK,KAE/DvE,KAAKie,IAAIrC,GACH5b,KAAKU,GAAGkb,GAAIpR,WAEZD,IAjJb,uBAyJU,WAAgC,WAAtB1B,EAAsB,uDAAJ,KAClC7I,KAAKke,eAAerV,GACpB4C,YAAW,WACT,EAAKyB,YAAY,QAChB,OA7JP,8BAoKU,SAAiBlM,GAAuB,IAAV8L,EAAU,uDAAF,GAE5C,GAAI9M,KAAKid,eAA+C,IAA9Bjd,KAAKid,cAAcjhB,OAC3CgE,KAAKoO,sBAAwBpO,KAAKid,cAAc,QAI7C,GAAInQ,EACP9M,KAAKoO,sBAAwBpO,KAAKid,cAAc3S,MAC9C,SAAC2S,GAAD,OACEA,EAAcnQ,OACdmQ,EAAcnQ,MAAMqR,cAAcC,SAAWtR,EAAMqR,cAAcC,eAKlE,GAAIpd,GAAUA,EAAOhF,OAAQ,CAChC,IAOIqM,EAPEgW,EAAmBrd,EAAOsJ,MAC9B,SAAA4P,GAAQ,MAAuB,iBAAnBA,EAASC,SAEjBmE,EAAoBtd,EAAOsJ,MAC/B,SAAA4P,GAAQ,MAAuB,kBAAnBA,EAASC,SAKvBna,KAAKid,cAAclW,SAAQ,SAACkW,GAC1B,IAAK5U,EAAU,CAEb,IAAIkW,KACFtB,EAAcuB,UACdH,GACAA,EAAYhgB,OAGyC,IAFrDggB,EAAYhgB,MACT8f,cACA3W,QAAQyV,EAAcuB,SAASL,gBAKpC,GAAII,GAAQtB,EAAcwB,UAAW,CACnC,IAAMpgB,EAAgBigB,EAAajgB,MAC7BqgB,EAAuBzB,EAAcwB,UACxC9U,MAAM,KACNtK,KAAI,SAAA8N,GAAI,OAAIA,EAAKiR,OAAOD,iBAC3BI,GAAoD,IAA7CG,EAAWlX,QAAQnJ,EAAM8f,eAGlC,GAAII,EAEF,OADAlW,EAAW4U,GACJ,MAKbjd,KAAKoO,sBAAwB/F,KA3NnC,4BAmOU,WAAqC,WAAtBQ,EAAsB,uDAAJ,KACnC7I,KAAK6L,YAAY1J,SACnBnC,KAAK6L,YAAY1J,QAAQ4E,SAAQ,SAAC4X,EAAmB7iB,GACnD,IAAM8iB,EAAY,mBAAaD,GAE/B,OAAQA,EAAaE,MACnB,IAAK,OACL,IAAK,OACHD,EAAa5R,OAAS,EAAK8R,kBAAkBH,EAAc7iB,GAEjC,SAAtB6iB,EAAaE,OACfD,EAAa3R,cAAe,EAC5B,EAAK5L,MAAM+b,YAAcwB,EAAa5R,QAExC,MAEF,IAAK,QACL,IAAK,mBACH4R,EAAa5R,OAAS,EAAK+R,mBACzBJ,EACA9V,GAIwB,qBAAtB8V,EAAaE,MACf,EAAKG,aAAaJ,EAAc9iB,GAGlC,MAMJ,EAAKuF,MAAM8b,aAAa7gB,KAAKsiB,QArQrC,6BA0QU,SAAgBA,GAAiB,WACnCA,GAAgBA,EAAa5R,SAE/B4R,EAAa5R,OAAOjG,SAAQ,SAACkY,GAEzBA,GACAA,EAAW5gB,OACX2H,MAAMiZ,EAAW5gB,QACjB,EAAK4f,IAAL,2BAA6BgB,EAAW5gB,MAAM8f,kBAE9Cc,EAAW1U,MAAQ,EAAK7J,GAAL,2BAA4Bue,EAAW5gB,MAAM8f,oBAIpES,EAAa5R,OAAS4R,EAAa5R,OAAO+N,MAAK,SAACmE,EAAGC,GAAJ,OAC7CD,EAAE3U,MAAQ4U,EAAE5U,MAAQ,GAAK,QAzRjC,0BAkSU,SAAaqU,EAAmB5N,GAAmB,WACzD4N,EAAa3R,cAAe,EAC5BjN,KAAKqB,MAAMiO,YAAc,CACvBjR,MAAO2B,KAAK+Q,sBAAsB6N,EAAavR,cAC/C7R,KAAM,GACNkU,MAAO,IAGT1P,KAAKqB,MAAM+b,YAAcwB,EAAa5R,OAAO3N,KAAI,SAAC+f,GAChD,IAAMC,EAAoB,EAAKtO,sBAAsBqO,EAAU/gB,OAE/D,GAAIghB,GAAa,EAEf,OADA,EAAKhe,MAAMiO,YAAYI,MAAMpT,KAAK,CAAEiO,MAAO6U,EAAU/gB,QAC9C,CAAEkM,MAAO6U,EAAU/gB,MAAOA,MAAO4H,OAAOoZ,OAInDrf,KAAKqB,MAAMkO,iBAAmByB,EAC9BhR,KAAKqB,MAAMiO,YAActP,KAAKsf,kBAAkBV,KApTpD,gCA6TU,SACNA,EACA5N,GAEsB,WAItB4N,EAAa3R,cAAe,EAC5BjN,KAAKqB,MAAMiO,YAAc,CACvBjR,MAAO2B,KAAK+Q,sBAAsB6N,EAAavR,cAC/C7R,KAAM,GACNkU,MAAO,IAST1P,KAAKqB,MAAM+b,YAAcpd,KAAKuf,4BAA4BlgB,KACxD,SAAC+f,GACC,IAAMC,EAAoB,EAAKtO,sBAAsBqO,EAAU/gB,OAoB/D,GAAIghB,GAAa,EAEf,OADA,EAAKhe,MAAMiO,YAAYI,MAAMpT,KAAK,CAAEiO,MAAO6U,EAAU/gB,QAC9C,CAAEkM,MAAO6U,EAAU/gB,MAAOA,MAAO4H,OAAOoZ,OAKrDrf,KAAKqB,MAAMkO,iBAAmByB,EAC9BhR,KAAKqB,MAAMiO,YAActP,KAAKsf,kBAAkBV,KAhXpD,mCAsXU,SAAsB3N,GAC5B,IAAMC,EAAeD,GAAOA,EAAIjV,OAAS,EAAIiV,EAAIE,UAAU,EAAG,GAAK,GACnE,OAAQnL,MAAMC,OAAOiL,KAAyB,EAAhBjL,OAAOiL,KAxXzC,iCA8XU,SAAoBD,GAC1B,IAAMC,EAAeD,GAAOA,EAAIjV,OAAS,EAAIiV,EAAIE,UAAU,EAAG,GAAKF,EACnE,OAAQjL,MAAMC,OAAOiL,KAAyB,EAAhBjL,OAAOiL,KAhYzC,+BAwYU,SAAkByN,EAAmB3N,GAC3C,GACG2N,EAAaa,KAAOb,EAAac,KACjCd,EAAae,SAAWf,EAAagB,QACtC,CACA,IAAMH,EAAMb,EAAaa,KAAOb,EAAae,QACvCD,EAAMd,EAAac,KAAOd,EAAagB,QACvCC,EAAOjB,EAAaiB,MAAQjB,EAAakB,SAS/C,OARA7f,KAAKqB,MAAMiO,YAActP,KAAK8f,gBAC5BN,EACAC,EACAG,EACAjB,EAAatR,cAEfrN,KAAKqB,MAAMkO,iBAAmByB,EAEvBhR,KAAK+f,mBAAmBP,EAAKC,EAAKG,GACpC,OAAIjB,EAAa3R,OACf2R,EAAa3R,OAGf,KA7ZX,gCAsaU,SAAmBwS,EAAaC,EAAaG,GAGnD,IAFA,IAAMI,EAAY,GAETC,EAAQT,EAAKS,GAASR,EAAKQ,GAASL,EAC3CI,EAAK1jB,KAAK,CACRiO,MAAO0V,EACP5hB,MAAO4hB,EACPC,OAAQD,EAAQT,GAAOS,EAAQ,EAAI,IAIvC,OAAOD,IAjbX,6BA2bU,SACNR,EACAC,EACAG,EACAvS,GAEA,IAAI8S,EAAiB,KAErBA,EAAY,CAAE9hB,MAAOgP,EAAc7R,KAAM,GAAIkU,MAAO,IAEpD,IAAK,IAAIuQ,EAAQT,EAAKS,GAASR,EAAKQ,GAASL,EAC3CO,EAAU3kB,KAAKc,KAAK2jB,GACpBE,EAAUzQ,MAAMpT,KAAK,CACnBiO,MAAO0V,EACPC,OAAQD,EAAQT,GAAOS,EAAQ,EAAI,IAIvC,OAAOE,IA7cX,+BAodU,SAAkBxB,GAAiB,WACrCwB,EAAiB,KAErBA,EAAY,CACV9hB,MAAO2B,KAAK+Q,sBAAsB4N,EAAatR,cAC/C7R,KAAM,GACNkU,MAAO,IAET,IAAM0Q,EAAiBpgB,KAAKqB,MAAM+b,YAAYphB,QAAU,GAAK,EAAI,EAYjE,OAVAgE,KAAKqB,MAAM+b,YAAYrW,SAAQ,SAACqY,EAAgBtjB,GAC1CsjB,IACFe,EAAU3kB,KAAKc,KAAK8iB,EAAU/gB,OAC9B8hB,EAAUzQ,MAAMpT,KAAK,CACnBiO,MAAO6U,EAAU7U,MACjB2V,OAAQpkB,EAAI,EAAKuF,MAAM+b,YAAYphB,QAAUF,EAAIskB,EAAS,QAKzDD,IAxeX,gCAgfU,SAAmBxB,EAAmB9V,GAC5C,IAAImX,EAAY,GACVK,EAAoB,GAoB1B,OAlBIxX,IACFA,EAAS9B,SAAQ,SAAC+B,GAChB,IAAIzK,EAAgByK,EAAKC,gBAAgB4V,EAAa1L,cAElD5U,IACFA,EAAQA,EAAMmM,WAAW4T,QAEO,IAA5BiC,EAAQ7Y,QAAQnJ,KAClB2hB,EAAK1jB,KAAK,CAAEiO,MAAOlM,EAAOA,MAAOA,IACjCgiB,EAAQ/jB,KAAK+B,QAMnB2hB,EAAOA,EAAKjF,MAAK,SAACmE,EAAGC,GAAJ,OAAWD,EAAE3U,MAAQ4U,EAAE5U,MAAQ,GAAK,MAGhDyV,IAtgBX,iFA4gBU,6HAE0B,EAAarX,cAAc,EAAaC,qBAAqB,CAAC5I,KAAK6L,YAAY2R,eAFzG,cAEE3U,EAFF,yBAGGxF,QAAQvD,QAAQ+I,IAHnB,4DAMGxF,QAAQC,OAAR,OANH,yDA5gBV,uFAyhBU,SAAiBkI,GACvBxL,KAAKoL,kBAAoBpL,KAAKoL,iBAG9BK,YAAW,WACTvM,OAAOwM,cAAc,IAAIC,MAAM,aAC9B,OA/hBP,gCAqiBU,WACN3L,KAAKgM,cAAgBhM,KAAKgM,aAC1B,GAAelJ,cAAciJ,mBAC3B/L,KAAK6L,YAAYjO,KACjBoC,KAAKgM,cAGFhM,KAAKgM,cAAc,OAAInK,IAAI7B,KAAKqB,MAAO,mBAAmB,KA5iBnE,6BAkjBU,WACN,IAAMuW,EAAoB5X,KAAK8L,aAC3B,GAAe4L,eACf1X,KAAK6L,YAAYjO,KACrB,GAAekF,cAAcwd,gBAC3B1I,EACA5X,KAAKyM,aAAe,OAxjB1B,qCA4jBU,WACN,IAAM8T,EAAiBvgB,KAAKwgB,MAAMC,WAE9BF,GACFA,EAAGG,OAAOza,OAAOjG,KAAKqB,MAAMiO,YAAYjR,UAhkB9C,2BAwkBU,SAAcsiB,GACpB,IAAMhC,EAAe3e,KAAKqB,MAAM8b,aAAawD,GACvC/C,EAAgB5d,KAAK6d,IAAIC,iBAAiB,iBAC1C8C,EAAgChD,EACpC5d,KAAKqB,MAAMkO,kBAGTsR,GAAW,EACXrB,EAAW,KACXC,EAAW,KACXqB,GAAc,EAGlB,GAAInC,GAAsC,qBAAtBA,EAAaE,KAA6B,CAG5D,IAAMkC,EACJH,EAAWlT,QAAQkT,EAAWI,gBAC9BJ,EAAWlT,QAAQkT,EAAWI,eAAeC,YACzCL,EAAWlT,QAAQkT,EAAWI,eAAeC,YAC7C,GAEFF,IAEFD,EAAa7a,OAAO2a,EAAWviB,QAGjCwiB,GAAW,OAGR,GAAIlC,GAAgBA,EAAa1R,aACpC6T,EAAa7a,OAAO2a,EAAWviB,OAC/BwiB,GAAW,OAIR,GACHlC,GACAA,EAAa3R,QACb2R,EAAa3R,OAAOhR,QACpB2iB,EAAa3R,OAAO,GAAG0S,SACvBf,EAAa3R,OAAO,GAAG2S,SAEnB/B,GAAiBA,EAAc5hB,OAAS2kB,EAAiB,CAC3D,IAAMO,EAAetD,EACnB+C,GAEIK,EAAgBE,EAAaF,cAMnC,GAJAxB,EAAMb,EAAa3R,OAAOgU,GAAetB,QACzCD,EAAMd,EAAa3R,OAAOgU,GAAerB,SAGpC3Z,MAAMwZ,GAAM,CACf,IAAMI,EAAOjB,EAAa3R,OAAOgU,GAAenB,SAChD7f,KAAKqB,MAAM+b,YAAcpd,KAAK+f,mBAC5B9Z,OAAOuZ,GACPvZ,OAAOwZ,GACPG,GAEF5f,KAAKqB,MAAMiO,YAActP,KAAK8f,gBAC5B7Z,OAAOuZ,GACPvZ,OAAOwZ,GACPG,EACAjB,EAAatR,cAGfrN,KAAKqB,MAAMiO,YAAYjR,MAAQmhB,EAC/BqB,GAAW,GAKbA,GACF7gB,KAAKmhB,eAAe3B,EAAKsB,KAlpB/B,4BAypBU,SAAetB,GAA8B,WAAjBhP,EAAiB,wDAAD,EAC5CoN,EAAgB5d,KAAK6d,IAAIC,iBAAiB,iBAC1C8C,EAAgChD,EACpC5d,KAAKqB,MAAMkO,kBAGPgR,EAAiBvgB,KAAKwgB,MAAMC,WAC9BF,GACFA,EAAGG,OAAOlQ,GAAgB,EAAIA,EAAegP,GAG/C/T,YAAW,WACL+T,GAAOoB,EAAWviB,QAAUmhB,EAAIhV,aAClCoW,EAAWviB,MAAQmhB,EAAIhV,YAEzB,EAAK0C,YAAY,QAChB,OAzqBP,2BA+qBU,WACN,IAAM0K,EAAoB5X,KAAK8L,aAC3B,GAAe4L,eACf1X,KAAK6L,YAAYjO,KACrB,GAAekF,cAAcse,eAAexJ,EAAW,CACrD,CAAEuC,MAAO,SAAU9b,MAAO2B,KAAK8N,iBAEjC9N,KAAKqhB,eAAezJ,EAAW5X,KAAK8N,eAEhC9N,KAAKkd,wBACPld,KAAKshB,iBAAiB,KAAMthB,KAAK8N,iBAzrBvC,4BAksBU,SAAe8J,EAAmBiD,GACxC7a,KAAKmO,UAAL,UACE,EAAcrL,cAAcC,OAAO1D,IAAIkW,WADzC,6FAEqFqC,EAFrF,kBAEwGiD,GACxG7a,KAAKuhB,eAAe1G,GAEpB7a,KAAK8N,cAAgB+M,IAxsBzB,4BA8sBU,SAAe/N,GACrB,GAAI9M,KAAK6L,aAAe7L,KAAK6L,YAAY2V,MAAO,CAC9C,IAAMC,EAAezhB,KAAK6L,YAAY2V,MAAMlX,MAC1C,SAAC6C,GAAD,OAAeA,EAAKL,QAAUA,KAG5B2U,IACFzhB,KAAKqB,MAAM6M,YAAcuT,EAAQC,SArtBzC,sBA6tBU,WACN,IAAIpd,EACAtE,KAAK6L,YAAYI,cAAgBjM,KAAK6L,YAAY8V,mBACpDrd,EAAMtE,KAAK4hB,uBACF5hB,KAAK6L,YAAYI,eAC1B3H,EAAM,GAAH,OACD,EAAcxB,cAAcC,OAAO1D,IAAImE,WADtC,wCAGDxD,KAAK6L,YAAYjO,KAHhB,0CAOD0G,GACFxC,GAAIC,MAAM,oBAAqB,CAC7BnE,KAAMoC,KAAK6L,YAAYtB,MACvBjG,IAAKA,MA5uBb,kCAovBU,WAAoB,WACtBA,EAActE,KAAK6L,YAAY8V,mBAC7B/D,EAAgB5d,KAAK6d,IAAIC,iBAAiB,iBAoDhD,OAlDIF,GAAiBA,EAAc5hB,OAAS,IAE1C4hB,EAAc7W,SAAQ,SAACgX,EAAajiB,GAClC,IAAM6iB,EAAe,EAAKtd,MAAM8b,aAAarhB,GAE7C,GAAI6iB,EAAakD,oBAAqB,CACpC,IAAMb,EAAiBjD,EAA6BiD,cAE9CzW,GADgBwT,EAAO1f,MAE3B0f,EAAOrQ,QAAQsT,IACfjD,EAAOrQ,QAAQsT,GAAeC,YAC1BlD,EAAOrQ,QAAQsT,GAAeC,YAC9B,IACAa,EAAsB,EAAKC,cAC/BpD,EAAakD,oBACZjE,EACCe,EAAakD,qBACSxjB,MACxBkM,GAGEuX,IACFxd,EAAMA,EAAIyO,QAAJ,WACA4L,EAAakD,oBADb,KAEJC,QAORlE,EAAc7W,SAAQ,SAACgX,EAAajiB,GAClC,IAAM6iB,EAAe,EAAKtd,MAAM8b,aAAarhB,GACzCuC,EAAgB0f,EAAO1f,MAE3B,GAA0B,qBAAtBsgB,EAAaE,KAA6B,CAC5C,IAAMmC,EAAiBjD,EAA6BiD,cACpD3iB,EACE0f,EAAOrQ,QAAQsT,IACfjD,EAAOrQ,QAAQsT,GAAeC,YAC1BlD,EAAOrQ,QAAQsT,GAAeC,YAC9B,GAGR3c,EAAMA,EAAIyO,QAAJ,WAAgBjX,EAAhB,KAAsBuC,OAGhCiG,EAAM,GAAH,OACD,EAAcxB,cAAcC,OAAO1D,IAAI2iB,wBADtC,OAEA1d,GACIA,IA1yBX,yBAizBS,SAAYqc,GAAuB,WAEpCA,GAAmB3gB,KAAKqB,MAAM8b,aAAawD,IAC7C3gB,KAAKiiB,cAActB,GAGrB,IAAM/I,EAAoB5X,KAAK8L,aAC3B,GAAe4L,eACf1X,KAAK6L,YAAYjO,KACf2iB,EAAiBvgB,KAAKwgB,MAAMC,WAE5B7C,EAAgB5d,KAAK6d,IAAIC,iBAAiB,iBAEhD,GAAIF,GAAiBA,EAAc5hB,OAAS,EAAG,CAC7C,IAAMkmB,EAA0B,GAC5BlhB,EAAgB,GAEpB4c,EAAc7W,SAAQ,SAACgX,EAAajiB,GAClC,IAAMqmB,EAAqB,EAAKtW,YAAY1J,QAAQrG,GAC9CsmB,EAA2B,EAAK/gB,MAAM8b,aAAarhB,GACnDumB,EAAuBtE,EAA6B1f,MACpD2iB,EAAyBjD,EAC5BiD,cACGsB,EACJvE,EAAOrQ,QAAQsT,IACfjD,EAAOrQ,QAAQsT,GAAeC,YAC1BlD,EAAOrQ,QAAQsT,GAAeC,YAC9B,GAEN,GAAoC,eAAhC,EAAKpV,YAAY0W,WACnBL,EAAc5lB,KAAd,UACK8lB,EAAoBnP,aADzB,YACyCoP,SAEpC,GAAoC,WAAhC,EAAKxW,YAAY0W,WAAyB,CACnD,IAAMrI,EAAW,mBAAKkI,EAAoBI,WAC1CtI,EAAS7b,MAAQ6b,EAAS7b,MAAM0U,QAC9B,QACAoP,GAAwC,qBAAvBA,EAActD,KAC3ByD,EACAD,GAEN,IAAMI,EAAsBL,EAAoBpV,OAAO1C,MACrD,SAAAxO,GAAC,OAAIA,EAAEuC,QAAUgkB,KAanB,GAVI9B,GAAM4B,GAAiBA,EAAc3C,KAAO2C,EAAc1C,KAC5Dc,EAAGG,OAAOza,OAAOoc,IAGfI,GAAuBA,EAAoB3V,QAC7C9L,EAAO1E,KAAK,CAAE6d,MAAO,SAAU9b,MAAOokB,EAAoB3V,QAC1D,EAAKuU,eAAezJ,EAAW6K,EAAoB3V,QAIjDqV,GAAiBA,EAAcN,oBAAqB,CACtD,IAAMa,EAAkB1hB,EAAOsJ,MAC7B,SAAC6C,GAAD,MAA8B,WAAfA,EAAKgN,SAGlBuI,IACF1hB,EAASA,EAAOoB,QAAO,SAAC+K,GAAD,MAA8B,WAAfA,EAAKgN,SAC3CnZ,EAAO1E,KAAKomB,IAGd,IAAMZ,EAAsB,EAAKC,cAC/BI,EAAcN,oBACd7gB,EAAOmhB,EAAcN,qBAAqBxjB,MAC1C6b,EAAS7b,OAGPyjB,IACF9gB,EAAOmhB,EAAcN,qBAAqBxjB,MAAQyjB,GAItD9gB,EAAO1E,KAAK4d,OAIoB,eAAhCla,KAAK6L,YAAY0W,WACnB,GAAezf,cAAc6f,mBAC3B/K,EACAsK,EAAc3d,KAAK,MAEoB,WAAhCvE,KAAK6L,YAAY0W,YAC1B,GAAezf,cAAcse,eAAexJ,EAAW5W,GAIzDhB,KAAKshB,iBAAiBtgB,MA34B5B,2BAk5BU,SACN6gB,EACAe,EACAC,GAEA,IAAIf,EAAcc,EACZE,EAAsB9iB,KAAK6L,YAAY1J,QAAQ0f,GAC/CkB,EAAkB/iB,KAAKgjB,oBAAoBH,GAMjD,OAJI,IAAI9a,MAAOkb,cAAgBF,IAC7BjB,EAAcgB,EAAezV,cAGxByU,MA/5BX,GAAsC,QAwBpC,gBADC,eAAK,CAAElW,QAAS,Q,mCAIjB,gBADC,eAAK,CAAEA,SAAS,K,oCA1BE,GAAQ,gBAL5B,eAAU,CACThB,WAAY,CACVsY,WAAA,OAGiB,cClBkZ,MCQna,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,QCdF,GAAb,gGAMU,SAAW5a,GACjB,IAAKA,EACH,OAAO,KAGT,IAAMC,EAAgB,GAChB+K,EAAY,GAAexQ,cAAcqgB,eACzCC,EAAsB9a,EAAQC,OAcpC,OAZA6a,EAAarc,SAAQ,SAAA8E,GACnB,IAAMmL,EAAsB1D,EAAUzH,EAAYjO,MAC9C0V,EAAUzH,EAAYjO,MAAMwG,MAC5B,KACEA,EAAQ,mBAAKyH,GAEfmL,IACF5S,EAAMuR,QAAUqB,EAASqM,aACzB9a,EAAOjM,KAAK8H,OAIT,CACLmG,MAAOjC,EAAQiC,MACf1D,UAAWyB,EAAQzB,UACnByc,WAAYhb,EAAQgb,WACpB/a,OAAQA,KA/Bd,0BAsCS,WACL,OAAOvI,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAASI,MAvC3E,0BA6CS,WACL,OAAOvH,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAASM,MA9C3E,0BAoDS,WACL,OAAOzH,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAASO,MArD3E,0BA2DS,WACL,OAAO1H,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAASQ,MA5D3E,0BAkES,WACL,OAAO3H,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAASS,MAnE3E,0BAyES,WACL,OAAO5H,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAASU,MA1E3E,0BAgFS,WACL,OAAO7H,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAASW,MAjF3E,0BAuFS,WACL,OAAO9H,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAAS4O,QAxF3E,KCYqB,GAArB,yG,0BACU,EAAAyN,OAAiB,IAAI,GACrB,EAAArc,SAAuB,GACvB,EAAAP,gBAAiB,EAH3B,gDAKU,WACN5G,KAAK4G,eAAiB,EAAa9D,cAAc8D,iBACjD5G,KAAKmH,SAAS7K,KAAK0D,KAAKwjB,OAAOC,gBAC/BzjB,KAAKmH,SAAS7K,KAAK0D,KAAKwjB,OAAOE,gBAC/B1jB,KAAKmH,SAAS7K,KAAK0D,KAAKwjB,OAAOG,gBAC/B3jB,KAAKmH,SAAS7K,KAAK0D,KAAKwjB,OAAOI,gBAC/B5jB,KAAKmH,SAAS7K,KAAK0D,KAAKwjB,OAAOK,gBAC/B7jB,KAAKmH,SAAS7K,KAAK0D,KAAKwjB,OAAOM,gBAC/B9jB,KAAKmH,SAAS7K,KAAK0D,KAAKwjB,OAAOO,gBAC/B/jB,KAAKmH,SAAS7K,KAAK0D,KAAKwjB,OAAOQ,oBAdnC,GAAqC,QAAhB,GAAO,gBAN3B,eAAU,CACTpZ,WAAY,CACVqZ,eAAA,EACAC,SAAA,OAGiB,cCjB8X,MCQ/Y,I,UAAY,eACd,GACA,EACA,GACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAInkB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,iBAAiB,CAACJ,EAAG,IAAI,CAACI,YAAY,oBAAoB,CAACR,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIW,GAAG,mCAAmC,OAAOP,EAAG,iBAAiB,CAACE,MAAM,CAAC,cAAe,IAAO,CAACF,EAAG,OAAO,CAACE,MAAM,CAAC,KAAO,aAAa6K,KAAK,aAAa,CAACnL,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,2BAA2BP,EAAG,MAAM,CAACE,MAAM,CAAC,KAAO,eAAe6K,KAAK,eAAe,CAAC/K,EAAG,cAAc,CAAC6K,IAAI,eAAe,KAAK7K,EAAG,iBAAiB,CAACE,MAAM,CAAC,cAAe,IAAO,CAACF,EAAG,OAAO,CAACE,MAAM,CAAC,KAAO,aAAa6K,KAAK,aAAa,CAACnL,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,4BAA4BP,EAAG,MAAM,CAACE,MAAM,CAAC,KAAO,eAAe6K,KAAK,eAAe,CAAC/K,EAAG,cAAc,CAAC6K,IAAI,aAAa3K,MAAM,CAAC,cAAe,MAAS,KAAKF,EAAG,IAAI,CAACA,EAAG,YAAY,CAACI,YAAY,gCAAgCF,MAAM,CAAC,UAAYN,EAAIokB,kBAAoBpkB,EAAIokB,gBAAgBC,gBAAkBrkB,EAAIskB,mBAAqBtkB,EAAIskB,iBAAiBD,eAAenjB,GAAG,CAAC,MAAQlB,EAAIukB,UAAU,CAACvkB,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,yBAAyBP,EAAG,YAAY,CAACI,YAAY,gCAAgCF,MAAM,CAAC,UAAYN,EAAIwkB,WAAWtjB,GAAG,CAAC,MAAQlB,EAAIykB,SAAS,CAACzkB,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,yBAAyB,GAAGP,EAAG,MAAM,CAACiB,MAAM,CAAEuU,QAAS5V,EAAIwkB,WAAYlkB,MAAM,CAAC,GAAK,gBAAgB,CAACF,EAAG,UAAU,CAACI,YAAY,4BAA4B,CAACR,EAAIS,GAAG,YAAY,IAAI,IAC52C,GAAkB,GCDlB,GAAS,WAAa,IAAIT,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,eAAe,CAACJ,EAAG,MAAM,CAACA,EAAG,SAAS,CAACiM,WAAW,CAAC,CAACxO,KAAK,QAAQyO,QAAQ,UAAUhO,MAAO0B,EAAwB,qBAAEuM,WAAW,yBAAyBrL,GAAG,CAAC,OAAS,CAAC,SAASC,GAAQ,IAAIsM,EAAgBC,MAAMvR,UAAUkG,OAAOhG,KAAK8E,EAAOwL,OAAOgB,SAAQ,SAAS5P,GAAG,OAAOA,EAAE6P,YAAWtO,KAAI,SAASvB,GAAG,IAAI8P,EAAM,WAAY9P,EAAIA,EAAE+P,OAAS/P,EAAEO,MAAM,OAAOuP,KAAO7N,EAAI0kB,qBAAqBvjB,EAAOwL,OAAOqB,SAAWP,EAAgBA,EAAc,IAAIzN,EAAI2kB,mBAAmB,CAACvkB,EAAG,SAAS,CAACE,MAAM,CAAC,MAAQ,KAAK,SAAW,IAAIkM,SAAS,CAAC,SAAwC,IAA7BxM,EAAI0kB,uBAA6B,CAAC1kB,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,yBAAyBX,EAAIkL,GAAIlL,EAAY,UAAE,SAASoN,EAAKrR,GAAG,MAAO,CAACqE,EAAG,SAAS,CAACoM,SAAS,CAAC,MAAQzQ,IAAI,CAACiE,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAGyM,EAAK5C,gBAAe,GAAIxK,EAAI4kB,iBAAmB5kB,EAAI4kB,gBAAgBpc,OAAQpI,EAAG,SAAS,CAACiM,WAAW,CAAC,CAACxO,KAAK,QAAQyO,QAAQ,UAAUhO,MAAO0B,EAAsB,mBAAEuM,WAAW,uBAAuBrL,GAAG,CAAC,OAAS,CAAC,SAASC,GAAQ,IAAIsM,EAAgBC,MAAMvR,UAAUkG,OAAOhG,KAAK8E,EAAOwL,OAAOgB,SAAQ,SAAS5P,GAAG,OAAOA,EAAE6P,YAAWtO,KAAI,SAASvB,GAAG,IAAI8P,EAAM,WAAY9P,EAAIA,EAAE+P,OAAS/P,EAAEO,MAAM,OAAOuP,KAAO7N,EAAI6kB,mBAAmB1jB,EAAOwL,OAAOqB,SAAWP,EAAgBA,EAAc,IAAIzN,EAAI8kB,iBAAiB,CAAC1kB,EAAG,SAAS,CAACE,MAAM,CAAC,MAAQ,KAAK,SAAW,IAAIkM,SAAS,CAAC,SAAsC,IAA3BxM,EAAI6kB,qBAA2B,CAAC7kB,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,uBAAuBX,EAAIkL,GAAIlL,EAAI4kB,gBAAsB,QAAE,SAASxX,EAAKrR,GAAG,MAAO,CAACqE,EAAG,SAAS,CAACoM,SAAS,CAAC,MAAQzQ,IAAI,CAACiE,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAGyM,EAAK5C,gBAAe,GAAGxK,EAAIY,KAAMZ,EAAI4kB,iBAAmB5kB,EAAI4kB,gBAAgBpc,QAAUxI,EAAIqkB,cAAejkB,EAAG,IAAI,CAACA,EAAG,WAAW,CAAC6K,IAAI,cAAc3K,MAAM,CAAC,YAAcN,EAAIqkB,cAAc,aAAerkB,EAAI+L,iBAAiB,GAAG/L,EAAIY,UAC3yD,GAAkB,GCaD,GAArB,yG,0BACU,EAAAwG,SAAuB,GACvB,EAAAsd,sBAAwB,EACxB,EAAAE,gBAA4B,KAC5B,EAAAC,oBAAsB,EACvB,EAAAR,cAAoC,KAL7C,gDAaU,WAAO,WACPU,EAAiB,EAAchiB,cAAcC,OAAO1D,IAAI8H,SADjD,WAGFxI,GACT,IAAMyI,EAAe0d,EAAenmB,GAChCyI,EAAGkc,YACL,EAAKnc,SAAS7K,KAAd,mCACK8K,GACA,CACD4W,YAAa,kBAAM,EAAKtd,GAAG0G,EAAGmD,OAAOC,WAAWwT,eAChDxT,SAAU,kBAAM,EAAK9J,GAAG0G,EAAGmD,OAAOC,gBAP1C,IAAK,IAAM7L,KAAOmmB,EAAgB,EAAvBnmB,KAhBf,6BAiCU,WACHqB,KAAKmH,UAAYnH,KAAKmH,SAASnL,OAAS,GAAKgE,KAAKykB,sBAAwB,IAC3EzkB,KAAK2kB,gBAAkB3kB,KAAKmH,SAASnH,KAAKykB,yBAnChD,2BA0DU,WACFzkB,KAAK2kB,iBAAoB3kB,KAAK2kB,gBAAgBpc,QAAWvI,KAAK2kB,gBAAgBpc,OAAOvM,OAAS,IAChGgE,KAAKokB,cAAgBpkB,KAAK2kB,gBAAgBpc,OAAOvI,KAAK4kB,uBA5D5D,wBAmES,WACL,IAAM5N,EAAqBhX,KAAKwgB,MAAM,eAElCxJ,GAAYA,EAASnL,aAAemL,EAASnL,YAAY1J,SAC3D6U,EAAS9J,YAAY,UAvE3B,GAAyC,QAQvC,gBADC,eAAK,CAAEtB,SAAS,K,oCAPE,GAAW,gBAL/B,eAAU,CACThB,WAAY,CACVsZ,SAAA,OAGiB,cCdua,MCQxb,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,QCnBX,GAAS,WAAa,IAAInkB,EAAIC,KAASC,EAAGF,EAAIG,eAAsBH,EAAIK,MAAMD,GAAO,OAAOJ,EAAIglB,GAAG,IACnG,GAAkB,CAAC,WAAa,IAAIhlB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,eAAe,CAACJ,EAAG,MAAM,CAAC6kB,YAAY,CAAC,QAAU,SAAS,CAAC7kB,EAAG,MAAM,CAACJ,EAAIS,GAAG,UAAUL,EAAG,MAAM,CAACI,YAAY,UAAUF,MAAM,CAAC,GAAK,YAAYF,EAAG,MAAM,CAACJ,EAAIS,GAAG,iBCM1Q,GAArB,yKACU,WAEN,IAAMykB,EAAUtT,SAASC,eAAe,UAClCsT,EAAWD,EAAQE,uBACnBC,EAAYH,EAAQI,mBAGtBC,EAAI,EAEJC,EAAY,EAEVC,EAAmB,SAAS9lB,GAEhC,IAAM+lB,EAAK/lB,EAAEgmB,QAAUJ,EAGjBK,GAFKjmB,EAAEkmB,QAGS,KAAlBL,EAAYE,GACbR,EAAQY,WAAmBC,wBAAwB1R,OACrD8Q,EAAiBpY,MAAMsH,MAAvB,UAAkCuR,EAAlC,KAEDV,EAAQnY,MAAMiZ,OAAS,aACvBpU,SAASjO,KAAKoJ,MAAMiZ,OAAS,aAE5Bb,EAAiBpY,MAAMkZ,WAAa,OACpCd,EAAiBpY,MAAMmZ,cAAgB,OAEvCb,EAAkBtY,MAAMkZ,WAAa,OACrCZ,EAAkBtY,MAAMmZ,cAAgB,QAGrCC,EAAiB,SAAjBA,IACJjB,EAAQnY,MAAMqZ,eAAe,UAC7BxU,SAASjO,KAAKoJ,MAAMqZ,eAAe,UAElCjB,EAAiBpY,MAAMqZ,eAAe,eACtCjB,EAAiBpY,MAAMqZ,eAAe,kBAEtCf,EAAkBtY,MAAMqZ,eAAe,eACvCf,EAAkBtY,MAAMqZ,eAAe,kBAGxCxU,SAASyU,oBAAoB,YAAaZ,GAC1C7T,SAASyU,oBAAoB,UAAWF,IAKpCG,EAAmB,SAAS3mB,GAEhC4lB,EAAI5lB,EAAEgmB,QACFhmB,EAAEkmB,QACNL,EAAYL,EAASY,wBAAwB1R,MAG7CzC,SAAS2U,iBAAiB,YAAad,GACvC7T,SAAS2U,iBAAiB,UAAWJ,IAIvCjB,EAAQqB,iBAAiB,YAAaD,OA7D1C,GAAyC,QAApB,GAAW,gBAD/B,QACoB,cCPua,MCQxb,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCDM,GAArB,yG,0BACU,EAAA3K,WAAa,GACb,EAAA6I,WAAY,EACZ,EAAAJ,gBAA+B,KAC/B,EAAAE,iBAAgC,KAChC,EAAAkC,qBAAsB,EALhC,gDASU,cATV,qBA4BU,WACNvmB,KAAK0b,WAAa,GAClB1b,KAAKukB,WAAY,EACjBvkB,KAAKmkB,gBAAkBnkB,KAAKwgB,MAAM,aAClCxgB,KAAKqkB,iBAAmBrkB,KAAKwgB,MAAM,gBAhCvC,yBAuCU,SAAYgG,GAClB,IAAIC,EAAO,EACTC,EAAO,EAET,SAASC,EAAYjnB,GACnBA,EAAIA,GAAKR,OAAOsM,MAChB9L,EAAEknB,iBACFH,EAAOC,EAAOhnB,EAAEgmB,QAChBgB,EAAOhnB,EAAEgmB,QACT,IAAMmB,EAAeL,EAAMM,WAAaL,EAEpCI,EAAO,IACTL,EAAM1Z,MAAM+Z,KAAZ,UAAsBA,EAAtB,OAGF,GAAe/jB,cAAcikB,cAC1BF,EAAO3nB,OAAOuL,WAAc,KAIjC,SAASuc,IACPrV,SAASsV,UAAY,KACrBtV,SAASuV,YAAc,KAGzB,SAASC,EAAcznB,GACrBA,EAAIA,GAAKR,OAAOsM,MAChB9L,EAAEknB,iBACFF,EAAOhnB,EAAEgmB,QACT/T,SAASsV,UAAYD,EACrBrV,SAASuV,YAAcP,EAGzBH,EAAMY,YAAcD,IAxExB,qBA+EU,WACN,GAAerkB,cAAcikB,cAAc/mB,KAAK0b,cAhFpD,0BAsFU,WACN,IAAM2L,EAA8B1V,SAASC,eAC3C,eAEEyV,IAAgBrnB,KAAKumB,sBACvBvmB,KAAKsnB,YAAYD,GACjBrnB,KAAKumB,qBAAsB,GAG7Bc,EAAYva,MAAM+Z,KAAlB,UAA4B3nB,OAAOuL,WAAa,EAAhD,QA/FJ,qBAqGU,WACNzK,KAAKunB,eAEL,IAAMvM,EAAgChb,KAAKmkB,gBAAgBC,cACrDnJ,EAAiCjb,KAAKqkB,iBAAiBD,cAE7D,GAAethB,cAAc0kB,YAAYxM,EAAWC,GAGnDjb,KAAKwgB,MAAM,aAA6BiH,aACxCznB,KAAKwgB,MAAM,cAA8BiH,aAG1CznB,KAAK0nB,UAEL1nB,KAAKukB,WAAY,IApHrB,oBA0HU,WAGN,GAAezhB,cAAc6kB,cAC7B3nB,KAAKukB,WAAY,IA9HrB,gCAkJS,WACLvkB,KAAKwkB,aAnJT,GAA2C,QAAtB,GAAa,gBAPjC,eAAU,CACT5Z,WAAY,CACVgd,YAAA,GACAC,YAAA,GACA5D,eAAA,MAGiB,cClBqY,MCQtZ,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAIlkB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,cAAc,CAAGR,EAAIsB,MAAMymB,UAA0qB/nB,EAAIY,KAAnqBR,EAAG,aAAa,CAACI,YAAY,UAAU,CAACR,EAAIkL,GAAG,GAAI,SAASnP,GAAG,MAAO,EAAGiE,EAAI6G,gBAAkB7G,EAAIoH,SAASrL,EAAI,GAAIqE,EAAG,iBAAiB,CAACA,EAAG,OAAO,CAACE,MAAM,CAAC,KAAO,aAAa6K,KAAK,aAAa,CAACnL,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAGX,EAAIoH,SAASrL,EAAI,GAAGyO,WAAWpK,EAAG,MAAM,CAACE,MAAM,CAAC,KAAO,eAAe6K,KAAK,eAAe,CAACnL,EAAIkL,GAAIlL,EAAIoH,SAASrL,EAAI,GAAS,QAAE,SAAS0B,EAAE1B,GAAG,MAAO,CAACqE,EAAG,aAAa,CAACE,MAAM,CAAC,YAAc7C,UAAS,KAAKuC,EAAIY,KAAMZ,EAAI6G,gBAAkB7G,EAAIoH,SAASrL,EAAI,GAAIqE,EAAG,MAAM,CAACJ,EAAIkL,GAAIlL,EAAIoH,SAASrL,EAAI,GAAS,QAAE,SAAS0B,EAAE1B,GAAG,MAAO,CAAE0B,EAAE6Z,WAAW0Q,iBAAmBvqB,EAAE6Z,WAAWgB,YAAalY,EAAG,aAAa,CAACE,MAAM,CAAC,YAAc7C,KAAKuC,EAAIY,UAAS,GAAGZ,EAAIY,UAAS,GAAaZ,EAAIsB,MAAe,UAAElB,EAAG,MAAM,CAACI,YAAY,cAAc,CAACJ,EAAG,UAAU,CAACI,YAAY,eAAe,CAACR,EAAIS,GAAG,aAAa,GAAGT,EAAIY,MAAM,IACt8B,GAAkB,G,aCMD,GAArB,kLAWE,SAAiBqnB,EAAQC,GACvBjoB,KAAKkoB,YAAYF,EAAQhoB,KAAKmoB,gBAZlC,qBAeU,WACNnoB,KAAKkoB,YAAYloB,KAAKooB,UAAWpoB,KAAKmoB,kBAhB1C,GAAoC,eAAO,QAAOE,aAAc,UAE9D,gBADC,eAAK,CAAEzc,QAAS,Q,iCAIjB,gBADC,eAAK,CAAEA,QAAS,Q,oCAOjB,gBAJC,eAAM,YAAa,CAClBlB,WAAW,EACXC,MAAM,K,gCAIP,MAbkB,GAAM,gBAJ1B,eAAU,CACT2d,QAAS,QACTC,OAAQ,CAAC,QAAOF,iBAEG,cCAA,GAArB,yKAOE,WACEroB,KAAKkoB,YAAYloB,KAAKooB,UAAWpoB,KAAKmoB,kBAR1C,GAAoC,eAAO,QAAOE,aAAc,UAE9D,gBADC,eAAK,CAAEzc,QAAS,Q,iCAIjB,gBADC,eAAK,CAAEA,QAAS,Q,oCAJE,GAAM,gBAJ1B,eAAU,CACT0c,QAAS,QACTC,OAAQ,CAAC,QAAOF,iBAEG,cCAA,GAArB,yKAOE,WACEroB,KAAKkoB,YAAYloB,KAAKooB,UAAWpoB,KAAKmoB,kBAR1C,GAAqC,eAAO,QAAOE,aAAc,UAE/D,gBADC,eAAK,CAAEzc,QAAS,Q,iCAIjB,gBADC,eAAK,CAAEA,QAAS,Q,oCAJE,GAAO,gBAJ3B,eAAU,CACT0c,QAAS,QACTC,OAAQ,CAAC,QAAOF,iBAEG,cCPjB,GAAS,WAAa,IAAItoB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACI,YAAY,cAAc,CAACJ,EAAG,iBAAiB,CAACA,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,OAAO,CAACI,YAAY,cAAc,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAGX,EAAI8L,YAAYtB,WAAWpK,EAAG,MAAM,CAACI,YAAY,iBAAiBU,GAAG,CAAC,MAAQlB,EAAIgM,qBAAqB,CAAC5L,EAAG,OAAO,CAACI,YAAY,sCAAsC,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIiM,aAAe,aAAe,uBAAuB7L,EAAG,YAAY,CAAC6K,IAAI,iBAAiB5J,MAAM,CAAC,2BAA4BrB,EAAIqL,iBAAmB,WAAa,IAAInK,GAAG,CAAC,MAAQlB,EAAIsL,mBAAmB,CAAClL,EAAG,OAAO,CAACI,YAAY,kCAAkC,CAACR,EAAIS,GAAG,4BAA4B,KAAKL,EAAG,MAAM,CAACI,YAAY,oBAAoBa,MAAM,CAAEkK,eAAgBvL,EAAIqL,mBAAoB,CAACjL,EAAG,UAAU,CAACI,YAAY,aAAaF,MAAM,CAAC,eAAe,WAAW,gBAAgBN,EAAIsB,MAAMuL,mBAAmB,CAAG7M,EAAI8L,YAAYwL,YAActX,EAAI8L,YAAYwL,WAAWgB,aAAiBtY,EAAI8L,YAAY1J,SAAWpC,EAAI8L,YAAY1J,QAAQnG,QAAY+D,EAAI8L,YAAYwL,WAA0B,gBAAGlX,EAAG,SAAS,CAACE,MAAM,CAAC,GAAK,mBAAmB,WAAWN,EAAIW,GAAG,oBAAoB,UAAU,eAAe,CAACP,EAAG,MAAM,CAACI,YAAY,4BAA4B,CAAER,EAAI8L,YAAYwL,YAActX,EAAI8L,YAAYwL,WAAWgB,YAAalY,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,8DAA8DX,EAAIY,MAAOZ,EAAI6G,gBAAkB7G,EAAI8L,aAAe9L,EAAI8L,YAAYwL,YAActX,EAAI8L,YAAYwL,WAAWmR,sBAAwBzoB,EAAI8L,YAAYwL,WAAWoR,qBAAsBtoB,EAAG,IAAI,CAACA,EAAG,QAAQ,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,6BAA6BP,EAAG,QAAQ,CAACI,YAAY,cAAc,CAACJ,EAAG,QAAQ,CAACiM,WAAW,CAAC,CAACxO,KAAK,QAAQyO,QAAQ,UAAUhO,MAAO0B,EAAIsB,MAAuB,kBAAEiL,WAAW,4BAA4BjM,MAAM,CAAC,KAAO,QAAQ,MAAQ,aAAakM,SAAS,CAAC,QAAUxM,EAAI2oB,GAAG3oB,EAAIsB,MAAMsnB,kBAAkB,cAAc1nB,GAAG,CAAC,OAAS,CAAC,SAASC,GAAQ,OAAOnB,EAAIsQ,KAAKtQ,EAAIsB,MAAO,oBAAqB,cAActB,EAAImN,gBAAgBnN,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,wBAAwB,OAAOP,EAAG,QAAQ,CAACI,YAAY,cAAc,CAACJ,EAAG,QAAQ,CAACiM,WAAW,CAAC,CAACxO,KAAK,QAAQyO,QAAQ,UAAUhO,MAAO0B,EAAIsB,MAAuB,kBAAEiL,WAAW,4BAA4BjM,MAAM,CAAC,KAAO,QAAQ,MAAQ,aAAakM,SAAS,CAAC,QAAUxM,EAAI2oB,GAAG3oB,EAAIsB,MAAMsnB,kBAAkB,cAAc1nB,GAAG,CAAC,OAAS,CAAC,SAASC,GAAQ,OAAOnB,EAAIsQ,KAAKtQ,EAAIsB,MAAO,oBAAqB,cAActB,EAAImN,gBAAgBnN,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,wBAAwB,SAASX,EAAIY,KAAKR,EAAG,IAAI,CAAC2M,MAAM,CAAGC,QAAyC,cAAhChN,EAAIsB,MAAMsnB,kBAAoC,QAAU,SAAU,CAACxoB,EAAG,QAAQ,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,0BAA0BP,EAAG,SAAS,CAACiM,WAAW,CAAC,CAACxO,KAAK,QAAQyO,QAAQ,UAAUhO,MAAO0B,EAAsB,mBAAEuM,WAAW,uBAAuB/L,YAAY,kBAAkBU,GAAG,CAAC,OAAS,CAAC,SAASC,GAAQ,IAAIsM,EAAgBC,MAAMvR,UAAUkG,OAAOhG,KAAK8E,EAAOwL,OAAOgB,SAAQ,SAAS5P,GAAG,OAAOA,EAAE6P,YAAWtO,KAAI,SAASvB,GAAG,IAAI8P,EAAM,WAAY9P,EAAIA,EAAE+P,OAAS/P,EAAEO,MAAM,OAAOuP,KAAO7N,EAAI6oB,mBAAmB1nB,EAAOwL,OAAOqB,SAAWP,EAAgBA,EAAc,IAAI,SAAStM,GAAQ,OAAOnB,EAAImN,YAAY,UAAU,CAACnN,EAAIkL,GAAIlL,EAAkB,gBAAE,SAASoN,EAAKrR,GAAG,MAAO,CAACqE,EAAG,SAAS,CAACoM,SAAS,CAAC,MAAQY,EAAK3N,KAAK,CAACO,EAAIS,GAAGT,EAAIU,GAAwB,OAArBV,EAAI6J,MAAMC,OAAkBsD,EAAK0b,QAAU1b,EAAK2b,iBAAgB,KAAK3oB,EAAG,KAAKA,EAAG,IAAI,CAACJ,EAAIkL,GAAIlL,EAAIsB,MAAkB,cAAE,SAASe,EAAOyK,GAAI,MAAO,CAAC1M,EAAG,IAAI,CAAC2M,MAAM,CAAGC,QAAS3K,EAAO4K,OAAOhR,OAAS,EAAI,QAAU,SAAU,CAACmE,EAAG,QAAQ,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG0B,EAAOmI,WAAanI,EAAO6K,aAAqflN,EAAIY,KAA3eR,EAAG,SAAS,CAACI,YAAY,eAAeF,MAAM,CAAC,KAAO+B,EAAOmI,OAAOtJ,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOnB,EAAImN,YAAYL,MAAO,CAAC9M,EAAIkL,GAAI7I,EAAa,QAAE,SAAS+K,EAAKC,GAAI,MAAO,CAAED,EAAK9O,QAAU+D,EAAOiL,aAAclN,EAAG,SAAS,CAACE,MAAM,CAAC,SAAW,IAAIkM,SAAS,CAAC,MAAQY,EAAK9O,QAAQ,CAAC0B,EAAIS,GAAGT,EAAIU,GAAGV,EAAIuN,eAAeH,EAAK9O,WAAW0B,EAAIY,KAAMwM,EAAK9O,QAAU+D,EAAOiL,aAAclN,EAAG,SAAS,CAACoM,SAAS,CAAC,MAAQY,EAAK9O,QAAQ,CAAC0B,EAAIS,GAAGT,EAAIU,GAAGV,EAAIuN,eAAeH,EAAK9O,WAAW0B,EAAIY,UAAS,GAAayB,EAAmB,aAAEjC,EAAG,SAAS,CAACI,YAAY,eAAeU,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOnB,EAAImN,YAAYL,MAAO,CAAC9M,EAAIkL,GAAIlL,EAAIsB,MAAiB,aAAE,SAAS8L,EAAKC,GAAI,MAAO,CAAED,EAAK9O,QAAU+D,EAAOiL,aAAclN,EAAG,SAAS,CAACE,MAAM,CAAC,SAAW,IAAIkM,SAAS,CAAC,MAAQY,EAAK9O,QAAQ,CAAC0B,EAAIS,GAAGT,EAAIU,GAAGV,EAAIuN,eAAeH,EAAK5C,WAAWxK,EAAIY,KAAMwM,EAAK9O,QAAU+D,EAAOiL,aAAclN,EAAG,SAAS,CAACoM,SAAS,CAAC,MAAQY,EAAK9O,QAAQ,CAAC0B,EAAIS,GAAGT,EAAIU,GAAGV,EAAIuN,eAAeH,EAAK5C,WAAWxK,EAAIY,UAAS,GAAGZ,EAAIY,YAAW,OAAOZ,EAAIY,KAAKR,EAAG,SAAS,CAACE,MAAM,CAAC,GAAK,oBAAoB,WAAWN,EAAIW,GAAG,oBAAoB,UAAU,cAAc,CAACP,EAAG,MAAM,CAACI,YAAY,cAAc,CAAER,EAAIsB,MAAiB,YAAElB,EAAG,IAAI,CAACI,YAAY,aAAa,CAACJ,EAAG,OAAO,CAACI,YAAY,YAAY,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,mBAAmB,QAAQP,EAAG,OAAO,CAACI,YAAY,aAAa,CAACR,EAAIS,GAAGT,EAAIU,GAAGV,EAAIsB,MAAM6M,kBAAkBnO,EAAIY,KAAKR,EAAG,MAAM,CAACE,MAAM,CAAC,IAAMN,EAAIsB,MAAM8M,iBAAiBhO,EAAG,SAAS,CAACE,MAAM,CAAC,GAAK,sBAAsB,WAAWN,EAAIW,GAAG,mBAAmB,UAAU,gBAAgB,CAACP,EAAG,MAAM,CAACI,YAAY,cAAc,CAAER,EAAIsB,MAAM0nB,iBAAmBhpB,EAAIsB,MAAM2nB,WAAajpB,EAAIsB,MAAM2nB,UAAUhtB,OAAQmE,EAAG,WAAW,CAACE,MAAM,CAAC,UAAU,IAAIyP,YAAY/P,EAAIgQ,GAAG,CAAC,CAACpR,IAAI,eAAeqR,GAAG,SAAShF,GACtyK,IAAImC,EAAOnC,EAAImC,KACf,OAAOhN,EAAG,eAAe,GAAG,CAAuB,OAArBJ,EAAI6J,MAAMC,OAAiB1J,EAAG,gBAAgB,CAACE,MAAM,CAAC,WAAWN,EAAIW,GAAG,kBAAkB,aAAa,YAAY,CAACX,EAAIS,GAAGT,EAAIU,GAAG0M,EAAK0b,YAAY9oB,EAAIY,KAA2B,OAArBZ,EAAI6J,MAAMC,OAAiB1J,EAAG,gBAAgB,CAACE,MAAM,CAAC,WAAWN,EAAIW,GAAG,kBAAkB,aAAa,YAAY,CAACX,EAAIS,GAAGT,EAAIU,GAAG0M,EAAK2b,YAAY/oB,EAAIY,KAAKR,EAAG,gBAAgB,CAACE,MAAM,CAAC,WAAWN,EAAIkpB,eAAe,aAAa,UAAU,CAAClpB,EAAIS,GAAGT,EAAIU,GAAG0M,EAAK9O,WAAW,MAAM,MAAK,EAAM,YAAY6R,MAAM,CAAC7R,MAAO0B,EAAIsB,MAAe,UAAE8O,SAAS,SAAUC,GAAMrQ,EAAIsQ,KAAKtQ,EAAIsB,MAAO,YAAa+O,IAAM9D,WAAW,qBAAqBvM,EAAIY,KAAMZ,EAAIsB,MAAM0nB,iBAAmBhpB,EAAIsB,MAAM2nB,YAAcjpB,EAAIsB,MAAM2nB,UAAUhtB,OAAQmE,EAAG,MAAM,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI8L,YAAYwL,YAActX,EAAI8L,YAAYwL,WAAWgB,YAActY,EAAIW,GAAG,0DAA4DX,EAAIW,GAAG,8BAA8BX,EAAIY,MAAM,KAAKR,EAAG,SAAS,CAACE,MAAM,CAAC,GAAK,kBAAkB,WAAWN,EAAIW,GAAG,mBAAmB,UAAU,cAAc,CAACP,EAAG,MAAM,CAACI,YAAY,cAAc,CAAER,EAAIsB,MAAM0nB,iBAAmBhpB,EAAIsB,MAAM2nB,WAAajpB,EAAIsB,MAAM2nB,UAAUhtB,OAAQmE,EAAG,MAAM,CAAGJ,EAAIsB,MAAM6nB,aAA6dnpB,EAAIY,KAAndR,EAAG,MAAM,CAACI,YAAY,gBAAgB,CAACJ,EAAG,SAAS,CAACc,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOnB,EAAIopB,aAAa,UAAU,CAAChpB,EAAG,UAAU,CAACI,YAAY,cAAca,MAAM,CAAE,SAAkD,QAArCrB,EAAIsB,MAAM+nB,yBAAoC,CAACrpB,EAAIS,GAAG,gBAAgB,GAAGL,EAAG,SAAS,CAACc,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOnB,EAAIopB,aAAa,UAAU,CAAChpB,EAAG,UAAU,CAACI,YAAY,cAAca,MAAM,CAAE,SAAkD,QAArCrB,EAAIsB,MAAM+nB,yBAAoC,CAACrpB,EAAIS,GAAG,gBAAgB,KAAeT,EAAIsB,MAAM0nB,kBAAoBhpB,EAAIsB,MAAM6nB,aAAc/oB,EAAG,SAAS,CAACiM,WAAW,CAAC,CAACxO,KAAK,OAAOyO,QAAQ,SAAShO,MAA4C,QAArC0B,EAAIsB,MAAM+nB,wBAAoCrpB,EAAIqoB,UAAUiB,QAAUtpB,EAAIqoB,UAAUiB,OAAOrtB,OAAQsQ,WAAW,0FAA0FjM,MAAM,CAAC,UAAYN,EAAIqoB,UAAU,aAAeroB,EAAIooB,gBAAgBpoB,EAAIY,KAAMZ,EAAIsB,MAAM0nB,kBAAoBhpB,EAAIsB,MAAM6nB,aAAc/oB,EAAG,SAAS,CAACiM,WAAW,CAAC,CAACxO,KAAK,OAAOyO,QAAQ,SAAShO,MAA4C,QAArC0B,EAAIsB,MAAM+nB,wBAAoCrpB,EAAIqoB,UAAUiB,QAAUtpB,EAAIqoB,UAAUiB,OAAOrtB,OAAQsQ,WAAW,0FAA0FjM,MAAM,CAAC,UAAYN,EAAIqoB,UAAU,aAAeroB,EAAIooB,gBAAgBpoB,EAAIY,KAAMZ,EAAIsB,MAAM0nB,iBAAmBhpB,EAAIsB,MAAM6nB,aAAc/oB,EAAG,WAAW,CAACE,MAAM,CAAC,UAAYN,EAAIqoB,aAAaroB,EAAIY,MAAM,GAAGZ,EAAIY,KAAMZ,EAAIsB,MAAM0nB,iBAAmBhpB,EAAIsB,MAAM2nB,YAAcjpB,EAAIsB,MAAM2nB,UAAUhtB,OAAQmE,EAAG,MAAM,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI8L,YAAYwL,YAActX,EAAI8L,YAAYwL,WAAWgB,YAActY,EAAIW,GAAG,0DAA4DX,EAAIW,GAAG,8BAA8BX,EAAIY,UAAU,IAAI,GAAIZ,EAAIsB,MAAe,UAAElB,EAAG,MAAM,CAACI,YAAY,cAAc,CAACJ,EAAG,UAAU,CAACI,YAAY,eAAe,CAACR,EAAIS,GAAG,aAAa,GAAGT,EAAIY,MAAM,IACr7F,GAAkB,GCID,I,UAArB,kLAWE,SAAiBqnB,EAAQC,GACvBjoB,KAAKkoB,YAAYF,EAAQhoB,KAAKmoB,gBAZlC,qBAeU,WACNnoB,KAAKkoB,YAAYloB,KAAKooB,UAAWpoB,KAAKmoB,kBAhB1C,GAAsC,eAAO,QAAOE,aAAc,WAEhE,gBADC,eAAK,CAAEzc,QAAS,Q,iCAIjB,gBADC,eAAK,CAAEA,QAAS,Q,oCAOjB,gBAJC,eAAM,YAAa,CAClBlB,WAAW,EACXC,MAAM,K,gCAIP,MAbkB,GAAQ,gBAJ5B,eAAU,CACT2d,QAAS,QACTC,OAAQ,CAAC,QAAOF,iBAEG,c,qCC0BA,GAArB,yG,0BAEU,EAAArc,cAAe,EACf,EAAAsd,eAAiB,GACjB,EAAAC,eAAiB,GACjB,EAAAX,mBAAqB,KACrB,EAAAK,eAAiB,QACjB,EAAAriB,gBAAiB,EAEjB,EAAAvF,MAAa,CACnBymB,WAAW,EACX3K,aAAc,GACdvQ,iBAAkB,mBAClB0C,YAAa,KACbC,iBAAkB,KAClB6N,YAAa,GACbuL,kBAAmB,YACnBK,UAAW,GACXQ,WAAY,GACZrb,UAAW,GACXD,YAAa,GACbJ,cAAe,GACfsb,uBAAwB,MACxBL,iBAAiB,EACjBG,cAAc,GAGR,EAAAO,kBAAoB,CACxBC,YAAY,EACZC,OAAQ,CACNC,MAAO,CACL,CACEC,MAAO,CACLC,aAAa,EACb/c,SAAS,EACTyS,IAAK,EACLC,IAAK,IAEPsK,UAAW,CACThd,SAAS,GAEXid,WAAY,CACVjd,SAAS,KAIfkd,MAAO,CACL,CACEF,UAAW,CACThd,SAAS,MAKjBmd,OAAQ,CACNnd,SAAS,GAEXod,QAAS,CACLD,OAAQ,CACJnd,SAAS,EACTsc,OAAQ,MAQZ,EAAAje,kBAAmB,EAEnB,EAAA+c,aAAoB,CAC1BuB,YAAY,EACZU,qBAAqB,EACrBF,OAAQ,CACNnd,SAAS,IAGL,EAAAqb,UAAiB,CACvBiB,OAAQ,GACRliB,SAAU,IA/Ed,gDAkFU,WAAO,WAEbnH,KAAKqqB,iCAGLrqB,KAAKsqB,oBAGLxoB,GAAIG,IAAI,qBAAqB,SAACsV,GACxB,EAAK1L,YAAYwL,WAAWgB,aAC9B,EAAKkS,gBAAgBhT,MAIzBzV,GAAIG,IAAI,kCAAkC,SAAC2a,GACtC,EAAa9Z,cAAc8D,mBAC5B,EAAKvF,MAAMsnB,kBAAoB,YAC/B,EAAKC,mBAAqBhM,EAC1B,EAAK1P,oBApGb,+BA4GU,WACN,IAAMsd,EAAS,eAEf,GAAIxqB,KAAK6L,YAAYwL,WAAWqK,KAAM,CACpC,IAAM+I,EAAO,eAAiBzqB,KAAK6L,YAAYwL,WAAWqK,KAAKgJ,MAAMF,IAC/DG,EAAoBF,GAAWA,EAAQzuB,OAASyuB,EAAQ,GAAG1X,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAAM,QACrG/S,KAAKipB,eAAiBjpB,KAAK6L,YAAYwL,WAAWqK,KAAK3O,QAAQ4X,EAAW3qB,KAAKU,GAAGiqB,GAAWngB,YAAYuI,QAAQ,IAAK,IAAIA,QAAQ,IAAK,SAEvI/S,KAAKipB,eAAiBjpB,KAAKU,GAAG,mBAAmB8J,aApHvD,4CA2HU,WAA8B,WAC9BogB,EAAkB,EAAc9nB,cAAcC,OAAO1D,IAAI2W,eACzD6U,EAAkB,EAAc/nB,cAAcC,OAAO1D,IAAI6W,eAEzD4U,EAA+B,EAAchoB,cAAcuD,UAC3D0kB,EAA+B,EAAcjoB,cAAcwD,UAGjEwkB,EAAkB/jB,SAAQ,SAACwQ,GACzB,EAAK+R,eAAehtB,KAAK,CACvBkD,GAAI+X,EAAQtZ,IAAI2sB,EAAgB/N,SAChCgM,QAAStR,EAAQtZ,IAAI2sB,EAAgBI,kBACrClC,QAASvR,EAAQtZ,IAAI2sB,EAAgBK,mBAIrCjrB,KAAKspB,eAAettB,SACtBgE,KAAKspB,eAAevO,MAAK,SAACmE,EAAGC,GAAJ,OAAUD,EAAE2J,QAAQqC,cAAc/L,EAAE0J,YAE7D7oB,KAAK4oB,mBAAqB,EAAc9lB,cAAcC,OAAO1D,IAAI8rB,wBAAyBnrB,KAAKspB,eAAe,GAAG9pB,IAInHurB,EAAkBhkB,SAAQ,SAACwQ,GACzB,EAAKgS,eAAehS,EAAQtZ,IAAI4sB,EAAgBhO,UAAYtF,EAAQtZ,IAAI4sB,EAAgBO,oBAnJ9F,6BA0JU,SAAiB7T,GAAgB,WACjC3E,EAAkB2E,EAAQxO,gBAC1BgU,EAAwB/c,KAAK6L,YAAYwL,WAAWgB,YAG1DrY,KAAKooB,UAAY,CACfiB,OAAQrpB,KAAK6L,YAAYwL,WAAWgB,YAAYhZ,KAAI,SAACgsB,GACnD,OAAO,EAAK3qB,GAAG2qB,EAAU9gB,UAE3BpD,SAAU,CAAC,CACToD,MAAO,GACP/O,KAAMuhB,EAAO1d,KAAI,SAACgsB,GAChB,IAAMzd,EAAWgF,EAAWyY,EAAUrY,OACtC,OAAQhN,MAAM4H,GAA6C,EAAtC0d,KAAKC,MAAoB,IAAdtlB,OAAO2H,IAAc,OAEvD4d,MAAM,EACN5b,gBAAiB,0BACjB6b,YAAa,oBACbC,qBAAsB,oBACtBC,iBAAkB,OAClBC,0BAA2B,OAC3BC,sBAAuB,uBAK3B7rB,KAAKqB,MAAM2nB,UAAYjM,EAAO1d,KAAI,SAACgsB,EAAwBS,GACzD,IAAMle,EAAWgF,EAAWyY,EAAUrY,OACtC,MAAO,CACLpT,KAAMksB,EACNjD,QAAS,EAAKnoB,GAAG2qB,EAAU9gB,OAC3Bue,QAAS,EAAKpoB,GAAG2qB,EAAU9gB,OAC3BlM,MAAQ2H,MAAM4H,GAA6C,EAAtC0d,KAAKC,MAAoB,IAAdtlB,OAAO2H,IAAc,QAIzD5N,KAAKqB,MAAM6nB,cAAe,EAC1BlpB,KAAKqB,MAAM0nB,iBAAkB,EAE7B,OAAIlnB,IAAI7B,KAAKqB,MAAO,mBAAoB,qBAjM5C,qBAuMU,WAAO,WACbrB,KAAKoL,kBAAmB,EACxBpL,KAAK4G,eAAiB,EAAa9D,cAAc8D,iBAG7C5G,KAAK6L,YAAYwL,YAAcrX,KAAK6L,YAAYwL,WAAWgB,aAAerY,KAAK6L,YAAYwL,WAAWgB,YAAYrc,SACpHgE,KAAKqB,MAAM6nB,cAAe,GAGvBlpB,KAAK6L,YAAYwL,WAAW0U,yBAC/B/rB,KAAKgM,aAAe,GAAelJ,cAAcqgB,eAAenjB,KAAK6L,YAAYjO,MAAMwG,MAAMif,cAG/F,OAAIxhB,IAAI7B,KAAKqB,MAAO,mBAAoBrB,KAAKqB,MAAM6nB,cAAiBlpB,KAAK6L,YAAY1J,SAAWnC,KAAK6L,YAAY1J,QAAQnG,QAAYgE,KAAK6L,YAAYwL,WAAW0Q,gBAAkB,mBAAqB,qBAExM/nB,KAAKqB,MAAMsnB,mBAAqB3oB,KAAK4G,gBAAkB5G,KAAK6L,YAAYwL,WAAWmR,qBAAuB,YAAcxoB,KAAK6L,YAAYwL,WAAWoR,qBAAuB,YAAc,GAGrLzoB,KAAK6L,YAAY2R,YACnBxd,KAAKyd,WAAWzd,KAAK6L,YAAY2R,aAAa3Z,MAAK,SAACgF,GAClD,EAAK6U,UAAU7U,MAEd7I,KAAK0d,YAGV,GAAe5a,cACZya,eAAevd,KAAK6L,YAAYjO,MAChCiG,MAAK,SAACoE,GACDA,GAAOA,EAAIsF,OAAOvR,SACpB,EAAKqF,MAAMyM,cAAgB7F,EAAIuS,cAAgBvS,EAAIsF,OAAO,GAC1D,EAAKS,sBArOf,0BA4PU,SAAa6Q,GACnB7e,KAAKqB,MAAM+nB,uBAAyBvK,IA7PxC,iFAqQU,WAAiBza,GAAjB,4GAAgCjC,EAAhC,+BAAmE,KAAnE,kBAEmB,EAAa6pB,qBAAqB5nB,EAAOjC,GAF5D,cAEE0G,EAFF,yBAGGxF,QAAQvD,QAAQ+I,IAHnB,4DAKGxF,QAAQC,OAAR,OALH,yDArQV,wFAiRU,SAAiBkI,GACvBxL,KAAKoL,kBAAoBpL,KAAKoL,iBAGzBpL,KAAK4G,gBACR6E,YAAW,WACTvM,OAAOwM,cAAc,IAAIC,MAAM,aAC9B,OAxRT,uBAgSU,WAAgC,WAAtB9C,EAAsB,uDAAJ,KAClC7I,KAAKke,eAAerV,GACpB4C,YAAW,WACT,EAAKyB,gBACJ,OApSP,4BA2SU,WAAqC,WAAtBrE,EAAsB,uDAAJ,KACnC7I,KAAK6L,YAAY1J,SACnBnC,KAAK6L,YAAY1J,QAAQ4E,SAAQ,SAAC4X,EAAmB7iB,GACnD,IAAM8iB,EAAY,mBAAaD,GAE/B,OAAQA,EAAaE,MACnB,IAAK,OACL,IAAK,OACHD,EAAa5R,OAAS,EAAK8R,kBAAkBH,EAAc7iB,GAEjC,SAAtB6iB,EAAaE,OACfD,EAAa3R,cAAe,EAC5B,EAAK5L,MAAM+b,YAAcwB,EAAa5R,QAExC,MAEF,IAAK,QACL,IAAK,mBACH4R,EAAa5R,OAAS,EAAK+R,mBACzBJ,EACA9V,GAIwB,qBAAtB8V,EAAaE,MACf,EAAKG,aAAaJ,EAAc9iB,GAGlC,MAMJ,EAAKuF,MAAM8b,aAAa7gB,KAAKsiB,QA7UrC,0BAsVU,SAAaA,EAAmB5N,GAAmB,WACzD4N,EAAa3R,cAAe,EAC5BjN,KAAKqB,MAAMiO,YAAc,CACvBjR,MAAO2B,KAAK+Q,sBAAsB6N,EAAavR,cAC/C7R,KAAM,GACNkU,MAAO,IAGT1P,KAAKqB,MAAM+b,YAAcwB,EAAa5R,OAAO3N,KAAI,SAAC+f,GAChD,IAAMC,EAAoB,EAAKtO,sBAAsBqO,EAAU/gB,OAE/D,GAAIghB,GAAa,EAEf,OADA,EAAKhe,MAAMiO,YAAYI,MAAMpT,KAAK,CAAEiO,MAAO6U,EAAU/gB,QAC9C,CAAEkM,MAAO6U,EAAU/gB,MAAOA,MAAO4H,OAAOoZ,OAInDrf,KAAKqB,MAAMkO,iBAAmByB,EAC9BhR,KAAKqB,MAAMiO,YAActP,KAAKsf,kBAAkBV,KAxWpD,gCAgXU,SAAmBD,EAAmB9V,GAC5C,IAAImX,EAAY,GACVK,EAAoB,GAoB1B,OAlBIxX,IACFA,EAAS9B,SAAQ,SAAC+B,GAChB,IAAIzK,EAAgByK,EAAKC,gBAAgB4V,EAAa1L,cAElD5U,IACFA,EAAQA,EAAMmM,WAAW4T,QAEO,IAA5BiC,EAAQ7Y,QAAQnJ,KAClB2hB,EAAK1jB,KAAK,CAAEiO,MAAOlM,EAAOA,MAAOA,IACjCgiB,EAAQ/jB,KAAK+B,QAMnB2hB,EAAOA,EAAKjF,MAAK,SAACmE,EAAGC,GAAJ,OAAWD,EAAE3U,MAAQ4U,EAAE5U,MAAQ,GAAK,MAGhDyV,IAtYX,+BA8YU,SAAkBrB,EAAmB3N,GAC3C,GACG2N,EAAaa,KAAOb,EAAac,KACjCd,EAAae,SAAWf,EAAagB,QACtC,CACA,IAAMH,EAAMb,EAAaa,KAAOb,EAAae,QACvCD,EAAMd,EAAac,KAAOd,EAAagB,QACvCC,EAAOjB,EAAaiB,MAAQjB,EAAakB,SAS/C,OARA7f,KAAKqB,MAAMiO,YAActP,KAAK8f,gBAC5BN,EACAC,EACAG,EACAjB,EAAatR,cAEfrN,KAAKqB,MAAMkO,iBAAmByB,EAEvBhR,KAAK+f,mBAAmBP,EAAKC,EAAKG,GACpC,OAAIjB,EAAa3R,OACf2R,EAAa3R,OAGf,KAnaX,gCA4aU,SAAmBwS,EAAaC,EAAaG,GAGnD,IAFA,IAAMI,EAAY,GAETC,EAAQT,EAAKS,GAASR,EAAKQ,GAASL,EAC3CI,EAAK1jB,KAAK,CACRiO,MAAO0V,EACP5hB,MAAO4hB,EACPC,OAAQD,EAAQT,GAAOS,EAAQ,EAAI,IAIvC,OAAOD,IAvbX,6BAicU,SACNR,EACAC,EACAG,EACAvS,GAEA,IAAI8S,EAAiB,KAErBA,EAAY,CAAE9hB,MAAOgP,EAAc7R,KAAM,GAAIkU,MAAO,IAEpD,IAAK,IAAIuQ,EAAQT,EAAKS,GAASR,EAAKQ,GAASL,EAC3CO,EAAU3kB,KAAKc,KAAK2jB,GACpBE,EAAUzQ,MAAMpT,KAAK,CACnBiO,MAAO0V,EACPC,OAAQD,EAAQT,GAAOS,EAAQ,EAAI,IAIvC,OAAOE,IAndX,+BA0dU,SAAkBxB,GAAiB,WACrCwB,EAAiB,KAErBA,EAAY,CACV9hB,MAAO2B,KAAK+Q,sBAAsB4N,EAAatR,cAC/C7R,KAAM,GACNkU,MAAO,IAET,IAAM0Q,EAAiBpgB,KAAKqB,MAAM+b,YAAYphB,QAAU,GAAK,EAAI,EAYjE,OAVAgE,KAAKqB,MAAM+b,YAAYrW,SAAQ,SAACqY,EAAgBtjB,GAC1CsjB,IACFe,EAAU3kB,KAAKc,KAAK8iB,EAAU/gB,OAC9B8hB,EAAUzQ,MAAMpT,KAAK,CACnBiO,MAAO6U,EAAU7U,MACjB2V,OAAQpkB,EAAI,EAAKuF,MAAM+b,YAAYphB,QAAUF,EAAIskB,EAAS,QAKzDD,IA9eX,mCAofU,SAAsBlP,GAC5B,IAAMC,EAAeD,GAAOA,EAAIjV,OAAS,EAAIiV,EAAIE,UAAU,EAAG,GAAK,GACnE,OAAQnL,MAAMC,OAAOiL,KAAyB,EAAhBjL,OAAOiL,KAtfzC,4BA4fU,SAAe1F,GACrBxL,KAAKoL,kBAAoBpL,KAAKoL,iBAG9BK,YAAW,WACTvM,OAAOwM,cAAc,IAAIC,MAAM,aAC9B,OAlgBP,4BAwgBU,SAAepB,GACrB,GAAGA,GAASvE,MAAMC,OAAOsE,IAAS,CAChC,IAAIqR,GAA6C,IAAxCrR,EAAM/C,QAAQ,oBAAd,2BAAgE+C,EAAMyT,eAAkBzT,EAAMyT,cAGvG,GAFApC,EAAKA,EAAGjS,MAAM,KAAKpF,KAAK,KAAKoF,MAAM,KAAKpF,KAAK,KAAKoF,MAAM,KAAKpF,KAAK,KAE/DvE,KAAKie,IAAIrC,GACV,OAAO5b,KAAKU,GAAGkb,GAAIpR,WAIvB,OAAOD,IAlhBX,2BAwhBU,SACNsX,EACAe,EACAC,GAEA,IAAIf,EAAcc,EACZE,EAAsB9iB,KAAK6L,YAAY1J,QAAQ0f,GAC/CkB,EAAkB/iB,KAAKgjB,oBAAoBH,GAMjD,OAJI,IAAI9a,MAAOkb,cAAgBF,IAC7BjB,EAAcgB,EAAezV,cAGxByU,IAriBX,2BA4iBU,SAAcnB,GACpB,IAAMhC,EAAe3e,KAAKqB,MAAM8b,aAAawD,GACvC/C,EAAgB5d,KAAK6d,IAAIC,iBAAiB,iBAC1C8C,EAAgChD,EACpC5d,KAAKqB,MAAMkO,kBAITiQ,EAAW,KACXC,EAAW,KAIf,GAAId,GAAsC,qBAAtBA,EAAaE,KAA6B,CAG5D,IAAMkC,EACJH,EAAWlT,QAAQkT,EAAWI,gBAC9BJ,EAAWlT,QAAQkT,EAAWI,eAAeC,YACzCL,EAAWlT,QAAQkT,EAAWI,eAAeC,YAC7C,GAEFF,GAEW9a,OAAO2a,EAAWviB,QAGtB,OAGR,GAAIsgB,GAAgBA,EAAa1R,aACvBhH,OAAO2a,EAAWviB,QACpB,OAIR,GACHsgB,GACAA,EAAa3R,QACb2R,EAAa3R,OAAOhR,QACpB2iB,EAAa3R,OAAO,GAAG0S,SACvBf,EAAa3R,OAAO,GAAG2S,SAEnB/B,GAAiBA,EAAc5hB,OAAS2kB,EAAiB,CAC3D,IAAMO,EAAetD,EACnB+C,GAEIK,EAAgBE,EAAaF,cAMnC,GAJAxB,EAAMb,EAAa3R,OAAOgU,GAAetB,QACzCD,EAAMd,EAAa3R,OAAOgU,GAAerB,SAGpC3Z,MAAMwZ,GAAM,CACf,IAAMI,EAAOjB,EAAa3R,OAAOgU,GAAenB,SAChD7f,KAAKqB,MAAM+b,YAAcpd,KAAK+f,mBAC5B9Z,OAAOuZ,GACPvZ,OAAOwZ,GACPG,GAEF5f,KAAKqB,MAAMiO,YAActP,KAAK8f,gBAC5B7Z,OAAOuZ,GACPvZ,OAAOwZ,GACPG,EACAjB,EAAatR,cAGfrN,KAAKqB,MAAMiO,YAAYjR,MAAQmhB,GACpB,MAhnBrB,iCA6nBU,SAAoBvO,GAC1B,IAAMC,EAAeD,GAAOA,EAAIjV,OAAS,EAAIiV,EAAIE,UAAU,EAAG,GAAKF,EACnE,OAAQjL,MAAMC,OAAOiL,KAAyB,EAAhBjL,OAAOiL,KA/nBzC,wCAqoBU,WAA0B,WAC1B0J,EAAM5a,KAAK6L,YAAY8V,mBAAmB5O,QAAQ,OAAQ,IAAIpJ,MAAM,KACtEsiB,EAAmBrR,EAAIA,EAAI5e,OAAS,GAClC4hB,EAAgB5d,KAAK6d,IAAIC,iBAAiB,iBAE5CF,GAAiBA,EAAc5hB,OAAS,IAE1C4hB,EAAc7W,SAAQ,SAACgX,EAAajiB,GAClC,IAAM6iB,EAAe,EAAKtd,MAAM8b,aAAarhB,GAE7C,GAAI6iB,EAAakD,oBAAqB,CACpC,IAAMb,EAAiBjD,EAA6BiD,cAE9CzW,GADgBwT,EAAO1f,MAE3B0f,EAAOrQ,QAAQsT,IACfjD,EAAOrQ,QAAQsT,GAAeC,YAC1BlD,EAAOrQ,QAAQsT,GAAeC,YAC9B,IACAa,EAAsB,EAAKC,cAC/BpD,EAAakD,oBACZjE,EACCe,EAAakD,qBACSxjB,MACxBkM,GAGEuX,IACFmK,EAAWA,EAASlZ,QAAT,WACL4L,EAAakD,oBADR,KAETC,QAORlE,EAAc7W,SAAQ,SAACgX,EAAajiB,GAClC,IAAM6iB,EAAe,EAAKtd,MAAM8b,aAAarhB,GACzCuC,EAAgB0f,EAAO1f,MAE3B,GAA0B,qBAAtBsgB,EAAaE,KAA6B,CAC5C,IAAMmC,EAAiBjD,EAA6BiD,cACpD3iB,EACE0f,EAAOrQ,QAAQsT,IACfjD,EAAOrQ,QAAQsT,GAAeC,YAC1BlD,EAAOrQ,QAAQsT,GAAeC,YAC9B,GAGRgL,EAAWA,EAASlZ,QAAT,WAAqBjX,EAArB,KAA2BuC,OAG1C,IAAM6tB,EAA4C,cAAjClsB,KAAKqB,MAAMsnB,kBAAoC3oB,KAAK6L,YAAYwL,WAAW8U,mBAAqBnsB,KAAK6L,YAAYwL,WAAW+U,mBACvI9nB,EAAM,gBACV,EAAcxB,cAAcC,OAAO1D,IAAIgtB,eAD7B,YAC+C,EAAcvpB,cAAcC,OAAO1D,IAAIitB,mBAAoBvZ,QAAQ,aAAcmZ,GAAUnZ,QAAQ,aAAckZ,GAC5K,OAAO3nB,IA5rBX,6BAksBU,WAAe,WACfnC,EAAmC,GACnCyb,EAAgB5d,KAAK6d,IAAIC,iBAAiB,iBA+ChD,OA7CIF,GAAiBA,EAAc5hB,OAAS,IAE1C4hB,EAAc7W,SAAQ,SAACgX,EAAajiB,GAClC,IAAM6iB,EAAe,EAAKtd,MAAM8b,aAAarhB,GAE7C,GAAI6iB,EAAakD,oBAAqB,CACpC,IAAMb,EAAiBjD,EAA6BiD,cAE9CzW,GADgBwT,EAAO1f,MAE3B0f,EAAOrQ,QAAQsT,IACfjD,EAAOrQ,QAAQsT,GAAeC,YAC1BlD,EAAOrQ,QAAQsT,GAAeC,YAC9B,IACAa,EAAsB,EAAKC,cAC/BpD,EAAakD,oBACZjE,EACCe,EAAakD,qBACSxjB,MACxBkM,GAGEuX,GACF3f,EAAQ7F,KAAK,CAAC+F,UAAWsc,EAAa1L,aAAc5U,MAAOyjB,QAMjElE,EAAc7W,SAAQ,SAACgX,EAAajiB,GAClC,IAAM6iB,EAAe,EAAKtd,MAAM8b,aAAarhB,GACzCuC,EAAgB0f,EAAO1f,MAE3B,GAA0B,UAAtBsgB,EAAaE,MAA0C,qBAAtBF,EAAaE,KAA6B,CAC7E,IAAMmC,EAAiBjD,EAA6BiD,cACpD3iB,EACE0f,EAAOrQ,QAAQsT,IACfjD,EAAOrQ,QAAQsT,GAAeC,YAC1BlD,EAAOrQ,QAAQsT,GAAeC,YAC9B,GAEF9e,EAAQ7F,KAAK,CAAC+F,UAAWsc,EAAa1L,aAAc5U,MAAOA,SAK9D8D,IAnvBX,2BAyvBU,WACN,GAAeW,cAAcse,eAAephB,KAAK6L,YAAYjO,KAAM,CACjE,CAAEuc,MAAO,SAAU9b,MAAO2B,KAAKqB,MAAMyM,iBAEvC9N,KAAKqhB,eAAerhB,KAAK6L,YAAYjO,KAAMoC,KAAKqB,MAAMyM,iBA7vB1D,4BAqwBU,SAAe8J,EAAmBiD,GACxC7a,KAAKqB,MAAM8M,UAAX,UACE,EAAcrL,cAAcC,OAAO1D,IAAIkW,WADzC,6FAEqFqC,EAFrF,kBAEwGiD,GACxG7a,KAAKuhB,eAAe1G,GAEpB7a,KAAKqB,MAAMyM,cAAgB+M,IA3wB/B,4BAixBU,SAAe/N,GACrB,GAAI9M,KAAK6L,aAAe7L,KAAK6L,YAAY2V,MAAO,CAC9C,IAAMC,EAAezhB,KAAK6L,YAAY2V,MAAMlX,MAC1C,SAAC6C,GAAD,OAAeA,EAAKL,QAAUA,KAG5B2U,IACFzhB,KAAKqB,MAAM6M,YAAcuT,EAAQC,SAxxBzC,gCAgyBU,SAAoBf,GAAuB,WAE7CA,GAAmB3gB,KAAKqB,MAAM8b,aAAawD,IAC7C3gB,KAAKiiB,cAActB,GAKrB,IAAM/C,EAAgB5d,KAAK6d,IAAIC,iBAAiB,iBAE5CF,GAAiBA,EAAc5hB,OAAS,GAE1C4hB,EAAc7W,SAAQ,SAACgX,EAAajiB,GAClC,IAAMsmB,EAA2B,EAAK/gB,MAAM8b,aAAarhB,GACnDumB,EAAuBtE,EAA6B1f,MAE1D,GAAoC,WAAhC,EAAKwN,YAAY0W,WAAyB,CAC5C,IAAME,EAAsBL,EAAoBpV,OAAO1C,MACrD,SAAAxO,GAAC,OAAIA,EAAEuC,QAAUgkB,KAOfI,GAAuBA,EAAoB3V,OAC7C,EAAKuU,eAAe,EAAKxV,YAAYjO,KAAM6kB,EAAoB3V,aA1zB3E,oFAq0BU,WAAoB+R,GAApB,qHAEE0N,EAAYvsB,KAAK6L,YAAYjO,KAAK+L,MAAM,KAAK,GAC7CrF,EAHF,UAGW,EAAcxB,cAAcC,OAAO1D,IAAIgtB,eAHlD,YAGoE,EAAcvpB,cAAcC,OAAO1D,IAAImtB,gBAAgBzZ,QAAQ,cAAewZ,GAAWxZ,QAAQ,cAAe/S,KAAKqB,MAAMyM,gBAH/L,SAIcvK,MAAMe,GAJpB,cAIE2D,EAJF,gBAKeA,EAAIlE,OALnB,cAKEA,EALF,OAME0oB,EAAM,KAAS1oB,GACjBylB,EAA0B,GAGjB,IAAT3K,GACI6N,EAAkBD,EAAIE,SAAS,qBAEjCD,GAAmBA,EAAgB1wB,SACrCwtB,EAAakD,EAAgBrtB,KAAK,SAACutB,GACjC,MAAO,CACLriB,MAAOqiB,EAAS,UAChBpN,IAAKoN,EAAS,QAAU3mB,OAAO2mB,EAAS,cAAWna,EACnDgN,IAAKmN,EAAS,QAAU3mB,OAAO2mB,EAAS,cAAWna,EACnD9C,MAAOid,EAAS,gBAON,IAAT/N,IACDgO,EAAcJ,EAAIE,SAAS,YAE7BE,GAAeA,EAAY7wB,QAC7B6wB,EAAY9lB,SAAS,SAAC6lB,GACpB,IAAME,EAAU,KAASF,GAEzB,GAAIE,EAAS,CACX,IACItN,EACAC,EAFElV,EAAQuiB,EAAQ,YAGlBnd,EAAQ,SACNod,EAAmCD,EAAQH,SAAS,mCACpDK,EAA0BF,EAAQH,SAAS,0BAC3CM,EAAsCH,EAAQH,SAAS,sCACvDO,EAA6BJ,EAAQH,SAAS,6BAC9CQ,EAAoBL,EAAQH,SAAS,oBAEvCI,EACFtN,EAAMxZ,OAAO8mB,EAA4B,gBAElCC,IACPvN,EAAMxZ,OAAO+mB,EAAmB,iBAG9BC,EACFzN,EAAMvZ,OAAOgnB,EAA+B,gBAErCC,IACP1N,EAAMvZ,OAAOinB,EAAsB,iBAGjCC,IACFxd,EAAQwd,EAAa,UAGvB3D,EAAWltB,KACT,CACAiO,MAAOA,EACPiV,IAAKA,EACLC,IAAKA,EACL9P,MAAOA,SAnEb,kBA0EGtM,QAAQvD,QAAQ0pB,IA1EnB,4CA6EJtkB,QAAQkoB,IAAR,MA7EI,kBA8EG/pB,QAAQC,OAAR,OA9EH,0DAr0BV,oFA05BU,WAAY,WAClB,GAAItD,KAAKqB,MAAMmoB,WAAY,CACzB,IAAMH,EAAmB,GACnBliB,EAAY,CAAC,CACjBoD,MAAO,GACPqF,gBAAiB,GACjBpU,KAAM,KAGFwtB,EAA6C,cAAjChpB,KAAKqB,MAAMsnB,kBAAoC3oB,KAAKqB,MAAM2nB,UAAYhpB,KAAKqB,MAAM2nB,UAAU5mB,QAAS,SAAC+K,GAAD,OAAoBlH,OAAO,EAAKsjB,eAAepc,EAAKvN,SAAWqG,OAAO,EAAK2iB,uBAEjMI,EAAUjiB,SAAS,SAACoG,EAAgB2e,GAClCzC,EAAO/sB,KAAK6Q,EAAK0b,SACjB,IAAMwE,EAAiB,EAAKC,iBAAiBngB,EAAK9O,OAClD8I,EAAS,GAAGyI,gBAAgBtT,KAAK+wB,GAAOA,EAAI1d,MAAQ0d,EAAI1d,MAAQ,WAChExI,EAAS,GAAG3L,KAAKc,KAAK6Q,EAAK9O,UAG7B2B,KAAKooB,UAAUiB,OAASA,EACxBrpB,KAAKooB,UAAUjhB,SAAWA,OAE1BnH,KAAKooB,UAAUiB,OAAS,GACxBrpB,KAAKooB,UAAUjhB,SAAW,KAh7BhC,8BAu7BU,SAAiB9I,GACvB,IAAIkvB,EAgBJ,OAdAvtB,KAAKqB,MAAMmoB,WAAWziB,SAAS,SAACsmB,EAAgBvxB,GAC9C,IAAM0jB,OAA0B/M,IAAZ4a,EAAI7N,IAAoB6N,EAAI7N,SAAM/M,EAChDgN,OAA0BhN,IAAZ4a,EAAI5N,IAAoB4N,EAAI5N,SAAMhN,EAClD+a,GAAU,EAEdA,OAAkB/a,IAAR+M,QAA6B/M,IAARgN,GAAqBphB,GAASmhB,GAAOnhB,GAASohB,GAAa+N,EAC1FA,OAAkB/a,IAAR+M,QAA6B/M,IAARgN,GAAqBphB,GAASmhB,GAAagO,EAC1EA,OAAkB/a,IAAR+M,QAA6B/M,IAARgN,GAAqBphB,GAASohB,GAAa+N,EAEtEA,IACFD,EAAWF,MAIRE,IAx8BX,6CA88BU,SAAgC1kB,GACtC,IAAM4kB,EAA4D,cAAjCztB,KAAKqB,MAAMsnB,kBAAoC,GAAe7lB,cAAcqgB,eAAelN,eAAe7R,MAAQ,GAAetB,cAAcqgB,eAAehN,eAAe/R,MACxMspB,EAA2D,cAAjC1tB,KAAKqB,MAAMsnB,kBAAoC,GAAe7lB,cAAcqgB,eAAehN,eAAe/R,MAAQ,GAAetB,cAAcqgB,eAAelN,eAAe7R,MAE7MqpB,EAAY3W,YAAYwF,QACxBoR,EAAW5W,YAAYwF,QAEvBmR,EAAY/X,WAAW1V,KAAKgM,cAC5B0hB,EAAWhY,YAAW,GAEtB+X,EAAY3W,YAAY6W,YAAY9kB,KAx9BxC,gCA89BU,WACN7I,KAAKgM,cAAgBhM,KAAKgM,aAGtBhM,KAAK6L,YAAYwL,WAAW0U,wBACO,cAAjC/rB,KAAKqB,MAAMsnB,mBACb,GAAe7lB,cAAcqgB,eAAelN,eAAe7R,MAAMsR,WAAW1V,KAAKgM,cACjF,GAAelJ,cAAcqgB,eAAehN,eAAe/R,MAAMsR,YAAW,GAC5E,GAAe5S,cAAcqgB,eAAehN,eAAe/R,MAAM0S,YAAYwF,UAE7E,GAAexZ,cAAcqgB,eAAelN,eAAe7R,MAAMsR,YAAW,GAC5E,GAAe5S,cAAcqgB,eAAehN,eAAe/R,MAAMsR,WAAW1V,KAAKgM,cACjF,GAAelJ,cAAcqgB,eAAelN,eAAe7R,MAAM0S,YAAYwF,SAG3Etc,KAAKgM,cACPhM,KAAKkN,cAGP,GAAepK,cAAcqgB,eAAelN,eAAe7R,MAAM0S,YAAYkD,UAC7E,GAAelX,cAAcqgB,eAAehN,eAAe/R,MAAM0S,YAAYkD,WAE7E,GAAelX,cAAciJ,mBAC7B/L,KAAK6L,YAAYjO,KACjBoC,KAAKgM,gBAt/BX,yBA8/BU,SAAY3N,GAClB,IAAIsR,EAAQ,SAgBZ,OAdA3P,KAAKqB,MAAMmoB,WAAWziB,SAAS,SAACsmB,EAAgBvxB,GAC9C,IAAM0jB,OAA0B/M,IAAZ4a,EAAI7N,IAAoB6N,EAAI7N,SAAM/M,EAChDgN,OAA0BhN,IAAZ4a,EAAI5N,IAAoB4N,EAAI5N,SAAMhN,EAClD+a,GAAU,EAEdA,OAAkB/a,IAAR+M,QAA6B/M,IAARgN,GAAqBphB,GAASmhB,GAAOnhB,GAASohB,GAAa+N,EAC1FA,OAAkB/a,IAAR+M,QAA6B/M,IAARgN,GAAqBphB,GAASmhB,GAAagO,EAC1EA,OAAkB/a,IAAR+M,QAA6B/M,IAARgN,GAAqBphB,GAASohB,GAAa+N,EAEtEA,IACF7d,EAAQ0d,EAAI1d,UAIT,IAAIsE,GAAA,KAAM,CACbuX,KAAM,IAAIoC,GAAA,KAAK,CACbje,MAAOA,GAAS,YAElBuE,OAAQ,IAAIC,GAAA,KAAO,CACjBxE,MAAO,UACPyE,MAAO,SArhCjB,iFA4hCU,yIAEJpU,KAAKqB,MAAM0nB,iBAAkB,EAC7B/oB,KAAKqB,MAAM6nB,cAAe,EACpBnmB,EAA0C,cAAjC/C,KAAKqB,MAAMsnB,kBAAoC,EAAc7lB,cAAcC,OAAO1D,IAAI2W,eAAiB,EAAclT,cAAcC,OAAO1D,IAAI6W,eACvJ2X,EAAyD,cAAjC7tB,KAAKqB,MAAMsnB,kBAAoC3oB,KAAK6L,YAAYwL,WAAW0Q,gBAAkB/nB,KAAK6L,YAAYwL,WAAWyW,gBACjJC,EAAa/tB,KAAK6L,YAAYwL,WAAW0W,WACzCllB,EAAuD,cAAjC7I,KAAKqB,MAAMsnB,kBAAoC,EAAc7lB,cAAcuD,UAAY,EAAcvD,cAAcwD,UAC/ItG,KAAKqB,MAAMymB,WAAY,EACnBkG,EAAiB,MAGjBhuB,KAAK6L,YAAYwL,WAAW0U,uBAZ5B,kCAa4B/rB,KAAKiuB,cAAc,GAb/C,eAaFjuB,KAAKqB,MAAMmoB,WAbT,OAcI0E,EAAuBluB,KAAKmuB,6BAdhC,UAgBgB5qB,MAAM2qB,GAhBtB,eAgBIjmB,EAhBJ,iBAiBgBA,EAAIlE,OAjBpB,WAiBFiqB,EAjBE,OAmBGA,GAAkC,MAArBA,EAAUI,OAnB1B,uBAoBM,IAAIzuB,MAAM,4BApBhB,mCAyBMK,KAAK6L,YAAYwL,WAAWgB,YAzBlC,kCA0B4BrY,KAAKiuB,cAAc,GA1B/C,eA0BFjuB,KAAKqB,MAAMmoB,WA1BT,OA2BIrnB,EAAmCnC,KAAKquB,kBA3B5C,UA4BsCruB,KAAKyd,WAAWzd,KAAK6L,YAAYwL,WAAWiX,YAActuB,KAAK6L,YAAYjO,KAAMuE,GA5BvH,QA4BIosB,EA5BJ,OA8BEA,IACFP,EAAYO,EAAclvB,KAAI,SAACyJ,GAC7B,IAAM0lB,EAAS,GAGf,OAFAA,EAAOX,GAAyB/kB,EAAK7K,IAAI4vB,GACzCW,EAAOT,GAAcjlB,EAAK7K,IAAI8vB,GACvBS,MAnCT,QAyCAR,GAAaA,EAAUhyB,QAAU6M,GAAYA,EAAS7M,SAClDyyB,EAAc,GAEpBzuB,KAAKqB,MAAM2nB,UAAYgF,EAAU3uB,KAAK,SAAC8N,GACrC,IAAMoK,EAAmB1O,EAASyB,MAAO,SAACxB,GAAD,OAAmBA,EAAK7K,IAAI8E,EAAO8Z,WAAa1P,EAAK0gB,MAO9F,OALItW,IACFA,EAAQmX,SAAS,EAAKC,YAAYxhB,EAAK9O,QACvCowB,EAAYnyB,KAAKib,IAGZ,CACL3X,KAAMuN,EAAK0gB,GACXhF,QAAStR,EAAUA,EAAQtZ,IAAI8E,EAAOioB,kBAAoB,GAC1DlC,QAASvR,EAAUA,EAAQtZ,IAAI8E,EAAOkoB,cAAgB,GACtD5sB,MAAOitB,KAAKC,MAAiC,IAA3BtlB,OAAOkH,EAAK4gB,KAAsB,QAErDhT,MAAM,SAACmE,EAAGC,GAAJ,OAAUD,EAAEtf,KAAOuf,EAAEvf,QAE9BI,KAAKqB,MAAM2nB,UAA6C,cAAjChpB,KAAKqB,MAAMsnB,kBAAoC3oB,KAAKqB,MAAM2nB,UAAYhpB,KAAKqB,MAAM2nB,UAAU5mB,QAAS,SAAC+K,GAAD,OAAoBlH,OAAO,EAAKsjB,eAAepc,EAAKvN,SAAWqG,OAAO,EAAK2iB,uBAGlM5oB,KAAK6L,YAAYwL,WAAW0U,wBAC9B/rB,KAAK4uB,gCAAgC/lB,IAKzC7I,KAAK6uB,eAEL7uB,KAAKqB,MAAMymB,WAAY,EACvB9nB,KAAKqB,MAAM0nB,iBAAkB,EAxEzB,qDA2EJ7jB,QAAQkoB,IAAR,MACAptB,KAAKqB,MAAMymB,WAAY,EACvB9nB,KAAKqB,MAAM0nB,iBAAkB,EAC7B/oB,KAAKqB,MAAM2nB,UAAY,GACvBhpB,KAAKooB,UAAUiB,OAAS,GACxBrpB,KAAKooB,UAAUjhB,SAAW,GAC1B,GAAerE,cAAcqgB,eAAelN,eAAe7R,MAAM0S,YAAYwF,QAC7E,GAAexZ,cAAcqgB,eAAehN,eAAe/R,MAAM0S,YAAYwF,QAlFzE,0DA5hCV,uFAqnCU,WAAgB,WAChBsB,EAAgB5d,KAAK6d,IAAIC,iBAAiB,iBAEhD,GAAIF,GAAiBA,EAAc5hB,OAAS,EAAG,CAC7C,IAAMkmB,EAA0B,GAEhCtE,EAAc7W,SAAQ,SAACgX,EAAajiB,GACP,EAAK+P,YAAY1J,QAAQrG,GAApD,IACMsmB,EAA2B,EAAK/gB,MAAM8b,aAAarhB,GACnDumB,EAAuBtE,EAA6B1f,MACpD2iB,EAAyBjD,EAC5BiD,cAEDjD,EAAOrQ,QAAQsT,IACfjD,EAAOrQ,QAAQsT,GAAeC,aAC1BlD,EAAOrQ,QAAQsT,GAAeC,YAGA,eAAhC,EAAKpV,YAAY0W,YACnBL,EAAc5lB,KAAd,UACK8lB,EAAoBnP,aADzB,YACyCoP,OAKT,eAAhCriB,KAAK6L,YAAY0W,YACnB,GAAezf,cAAc6f,mBAC3B3iB,KAAK6L,YAAYjO,KACjBskB,EAAc3d,KAAK,SAjpC7B,yBA2pCS,WAA0C,IAA9Boc,EAA8B,uDAAJ,KAC3C3gB,KAAK8uB,mBAAmBnO,GACxB3gB,KAAK+uB,aACL/uB,KAAKgvB,uBA9pCT,GAAwC,QAkEtC,gBADC,eAAK,CAAEpjB,QAAS,Q,mCAjEE,GAAU,gBAH9B,eAAU,CACThB,WAAY,CAAEqkB,OAAA,GAAQC,OAAA,GAAQC,QAAA,GAASC,SAAA,OAEpB,cCjCsa,MCQvb,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,QCdF,GAAb,gGAMU,SAAW9mB,GACjB,IAAKA,EACH,OAAO,KAGT,IAAMC,EAAgB,GAChB+K,EAAY,GAAexQ,cAAcqgB,eACzCC,EAAsB9a,EAAQC,OAcpC,OAZA6a,EAAarc,SAAQ,SAAA8E,GACnB,IAAMmL,EAAsB1D,EAAUzH,EAAYjO,MAC9C0V,EAAUzH,EAAYjO,MAAMwG,MAC5B,KACEA,EAAQ,mBAAKyH,GAEfmL,GAAY5S,EAAMiT,YACpB9O,EAAOjM,KAAK8H,MAKRmE,GAAUA,EAAOvM,OACzB,CACEuO,MAAOjC,EAAQiC,MACf1D,UAAWyB,EAAQzB,UACnByc,WAAYhb,EAAQgb,WACpB/a,OAAQA,GAEV,OAlCJ,0BAwCS,WACL,OAAOvI,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAASI,MAzC3E,0BA+CS,WACL,OAAOvH,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAASM,MAhD3E,0BAsDS,WACL,OAAOzH,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAASO,MAvD3E,0BA6DS,WACL,OAAO1H,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAASQ,MA9D3E,0BAoES,WACL,OAAO3H,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAASS,MArE3E,0BA2ES,WACL,OAAO5H,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAASU,MA5E3E,0BAkFS,WACL,OAAO7H,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAASW,MAnF3E,0BAyFS,WACL,OAAO9H,KAAKujB,WAAW,EAAczgB,cAAcC,OAAO1D,IAAI8H,SAAS4O,QA1F3E,KCoBqB,GAArB,yG,0BACU,EAAA1U,MAAQ,CACdymB,WAAW,GAGL,EAAAtE,OAAiB,IAAI,GACrB,EAAArc,SAAuB,GACvB,EAAAP,gBAAiB,EAP3B,yGAYU,0GAGJ5G,KAAKqB,MAAMymB,WAAY,EACnB,EAAchlB,cAAcuD,WAAc,EAAcvD,cAAcuD,UAAUrK,OAJhF,gCAK4C,EAAa2M,cAAc,EAAaC,qBAAqB,CAAC,EAAc9F,cAAcC,OAAO1D,IAAI2W,eAAepY,QALhK,OAKF,EAAckF,cAAcuD,UAL1B,iBAQA,EAAcvD,cAAcwD,WAAc,EAAcxD,cAAcwD,UAAUtK,OARhF,iCAS4C,EAAa2M,cAAc,EAAaC,qBAAqB,CAAC,EAAc9F,cAAcC,OAAO1D,IAAI6W,eAAetY,QAThK,OASF,EAAckF,cAAcwD,UAT1B,eAYJtG,KAAKqB,MAAMymB,WAAY,EAZnB,qDAeJ5iB,QAAQkoB,IAAR,MACAptB,KAAKqB,MAAMymB,WAAY,EAhBnB,0DAZV,8EAmCU,WACN9nB,KAAK4G,eAAiB,EAAa9D,cAAc8D,iBAEjD,IAAMyoB,EAAKrvB,KAAKwjB,OAAOC,eACjB6L,EAAKtvB,KAAKwjB,OAAOE,eACjB6L,EAAKvvB,KAAKwjB,OAAOG,eACjB6L,EAAKxvB,KAAKwjB,OAAOI,eACjB6L,EAAKzvB,KAAKwjB,OAAOK,eACjB6L,EAAK1vB,KAAKwjB,OAAOM,eACjB6L,EAAK3vB,KAAKwjB,OAAOO,eAEpBsL,GACDrvB,KAAKmH,SAAS7K,KAAK+yB,GAGlBC,GACDtvB,KAAKmH,SAAS7K,KAAKgzB,GAGlBC,GACDvvB,KAAKmH,SAAS7K,KAAKizB,GAGlBC,GACDxvB,KAAKmH,SAAS7K,KAAKkzB,GAGlBC,GACDzvB,KAAKmH,SAAS7K,KAAKmzB,GAGlBC,GACD1vB,KAAKmH,SAAS7K,KAAKozB,GAGlBC,GACD3vB,KAAKmH,SAAS7K,KAAKqzB,OAvEzB,GAAwC,QAAnB,GAAU,gBAT9B,eAAU,CACT/kB,WAAY,CACVqkB,OAAA,GACAC,OAAA,GACAC,QAAA,GACAlL,eAAA,EACA2L,WAAA,OAGiB,cCzBkY,MCQnZ,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,QCAM,GAArB,yG,0BACU,EAAAruB,OAAS,SACT,EAAAE,eAAiB,gBACjB,EAAAC,WAAa,aACb,EAAAkF,gBAAiB,EAEjB,EAAAvF,MAAa,CACnBC,YAAa,IAPjB,oDAWE,SAAY2I,GACNA,EAASrM,OAASqM,EAASrM,KAAKiyB,WAAW,QAC7C7vB,KAAK+K,mBAbX,qBAoBU,WAAO,WACb/K,KAAK4G,eAAiB,EAAa9D,cAAc8D,iBAEjD9E,GAAIG,IAAI,YAAY,SAACL,GACf,EAAKgF,gBAAkBhF,IAAS,EAAKF,WACvCiQ,SAASjO,KAAKyP,UAAUE,IAAI,kBAE5B1B,SAASjO,KAAKyP,UAAUC,OAAO,kBAEjC,OAAIvR,IAAI,EAAKR,MAAO,cAAeO,GACnC,EAAKkuB,mBA9BX,yBAqCE,WACE,IAAMC,EAAoBpe,SAASC,eACjC,cAEFme,EAAK5c,UAAUC,OAAO,UACtB2c,EAAK5c,UAAUE,IAAI,aA1CvB,4BAgDS,WACL1B,SAASjO,KAAKyP,UAAUC,OAAO,kBAG3BpT,KAAKqB,MAAMC,cAAgBtB,KAAKyB,gBACjCzB,KAAKwgB,MAAM,uBAAyCwP,qBAEvD,IAAMD,EAAoBpe,SAASC,eACjC,cAGEme,GAAQA,EAAK5c,YACf4c,EAAK5c,UAAUC,OAAO,WACtB2c,EAAK5c,UAAUE,IAAI,WAErBrT,KAAKqB,MAAMC,YAAc,GACzBQ,GAAIC,MAAM,qBAhEd,GAAwC,QAWtC,gBADC,eAAM,SAAU,CAAE2I,WAAW,EAAMC,MAAM,K,2BAKzC,MAfkB,GAAU,gBAP9B,eAAU,CACTC,WAAY,CACVqlB,UACAC,cAAA,GACAC,WAAA,OAGiB,cCnBkY,MCQnZ,I,UAAY,eACd,GACA,EACA,GACA,EACA,KACA,WACA,OAIa,M,QCeM,GAArB,yG,0BACU,EAAAvvB,cAAe,EACf,EAAAC,WAAY,EACZ,EAAAP,WAAa,EACb,EAAA8vB,2BAA4B,EAC5B,EAAAC,sBAAuB,EALjC,oDAQE,SAAYpmB,GACY,iBAAlBA,EAASrM,OACXoC,KAAKM,YAAa,IAAIyH,MAAOC,aAVnC,qBAeU,WAAO,WACPsoB,EAAmBtwB,KAAKuwB,OAAOC,MAAMjqB,SAC3C,EAAczD,cACX2tB,WAAWH,GACXzsB,MAAK,WACJ,EAAKjD,cAAe,KAKrBsD,OAAM,SAACC,GACN,EAAKtD,WAAY,EACjBqE,QAAQC,MAAM,sDAGhBrD,GAAIG,IAAI,gCAAgC,WACtC,EAAKmuB,2BAA4B,EAEjC3kB,YAAW,WACT,EAAK2kB,2BAA4B,IAChC,QAGLtuB,GAAIG,IAAI,2BAA2B,WACjC,EAAKouB,sBAAuB,SAvCpC,GAAiC,QAQ/B,gBADC,eAAM,SAAU,CAAE3lB,WAAW,EAAMC,MAAM,K,2BAMzC,MAbkB,GAAG,gBANvB,eAAU,CACTC,WAAY,CACV8lB,OAAA,EACAC,WAAA,OAGiB,cClCuV,MCQxW,I,UAAY,eACd,GACA,EACA7vB,GACA,EACA,KACA,KACA,OAIa,M,qBCnBX,GAAS,WAAa,IAAIf,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,QAAQ,CAACJ,EAAG,SAAS,CAACxB,IAAIoB,EAAI6wB,OAAO5lB,IAAI,WAAW7K,EAAG,iBAAiBA,EAAG,WAAW,IACxM,GAAkB,GCDlB,GAAS,WAAa,IAAIJ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,UAAU,CAACJ,EAAG,MAAM,CAAC6K,IAAI,eAAe3K,MAAM,CAAC,GAAK,kBAAkBF,EAAG,MAAM,CAACI,YAAY,WAAWF,MAAM,CAAC,GAAK,UAAU,CAACN,EAAIglB,GAAG,GAAG5kB,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,mBAAmBF,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,oBAAoB,CAACF,EAAG,OAAO,CAACI,YAAY,iBAAiBa,MAAM,CAAEyvB,SAAU9wB,EAAI+wB,kBAAmBzwB,MAAM,CAAC,MAAQ,oBAAoBY,GAAG,CAAC,MAAQlB,EAAIgxB,2BAA2B,CAAChxB,EAAIS,GAAG,kBAAkBL,EAAG,OAAO,CAACI,YAAY,iBAAiBa,MAAM,CAAEyvB,SAAU9wB,EAAIixB,cAAe3wB,MAAM,CAAC,MAAQ,gBAAgBY,GAAG,CAAC,MAAQlB,EAAIkxB,uBAAuB,CAAClxB,EAAIS,GAAG,uBAAuBL,EAAG,WAAWA,EAAG,cAAc,IACxtB,GAAkB,CAAC,WAAa,IAAIJ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,OAAO,CAACE,MAAM,CAAC,GAAK,iBAAiBF,EAAG,IAAI,CAACI,YAAY,kBAAkBF,MAAM,CAAC,KAAO,IAAI,GAAK,sBCC5M,GAAb,mGAIS,WACL,GAAeyC,cAAcouB,cALjC,KCFI,GAAS,WAAa,IAAInxB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,0BAA0B,CAACJ,EAAG,MAAM,CAACI,YAAY,WAAWF,MAAM,CAAC,MAAQN,EAAIW,GAAG,0BAA0BO,GAAG,CAAC,MAAQlB,EAAIoxB,kBAAkB,CAAChxB,EAAG,OAAO,CAACI,YAAY,kBAAkB,CAACR,EAAIS,GAAG,YAAYL,EAAG,MAAM,CAACI,YAAY,sBAAsBJ,EAAG,MAAM,CAACI,YAAY,WAAWF,MAAM,CAAC,MAAQN,EAAIW,GAAG,qBAAqBO,GAAG,CAAC,MAAQlB,EAAIqxB,SAAS,CAACjxB,EAAG,OAAO,CAACI,YAAY,kBAAkB,CAACR,EAAIS,GAAG,WAAWL,EAAG,MAAM,CAACI,YAAY,sBAAsBJ,EAAG,MAAM,CAACI,YAAY,WAAWF,MAAM,CAAC,MAAQN,EAAIW,GAAG,sBAAsBO,GAAG,CAAC,MAAQlB,EAAIsxB,UAAU,CAAClxB,EAAG,OAAO,CAACI,YAAY,kBAAkB,CAACR,EAAIS,GAAG,iBACjtB,GAAkB,GCOD,GAArB,iLACS,WACL,GAAesC,cAAcquB,oBAFjC,qBAKS,WACL,GAAeruB,cAAc4Q,MAAM,KANvC,oBASS,WACL,GAAe5Q,cAAc4Q,KAAK,OAVtC,GAAqC,QAAhB,GAAO,gBAD3B,QACoB,cCRiZ,MCQla,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI3T,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,4BAA4B,CAACR,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIuxB,QAAQ,QAC7K,GAAkB,GCOD,GAArB,yG,0BACU,EAAAA,OAAS,GADnB,gDAGU,WAAO,WACbtxB,KAAKsxB,OAAS,GAEdxvB,GAAIG,IAAI,gBAAgB,SAACqvB,GACvB,EAAKA,OAASA,SAPpB,GAAuC,QAAlB,GAAS,gBAD7B,QACoB,cCRmZ,MCQpa,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCDM,GAArB,yG,0BACU,EAAAR,kBAAmB,EACnB,EAAAE,cAAe,EAChB,EAAAxN,OAAiB,IAAI,GAH9B,gDAKU,WAAO,WAEb,GAAa1gB,cAAcyuB,YAAYvxB,MAEvC8B,GAAIG,IAAI,gBAAgB,WACtB,EAAK6uB,kBAAmB,EACxB,EAAKE,cAAe,OAX1B,qBAeU,WACNhxB,KAAKwjB,OAAOgO,kBAhBhB,sCAsBU,WACNxxB,KAAKmY,UAAU,GAAarV,cAAcwO,kBAAoB,KAvBlE,kCA6BU,WACNtR,KAAKmY,UAAU,GAAarV,cAAcwO,kBAAoB,KA9BlE,uBAoCU,SAAUmgB,GAAa,WACvBC,EAAQ,GAAa5uB,cAAcuO,qBAErCogB,GAAS,GAAKC,EAAM11B,OAASy1B,GAC/B,GAAe3uB,cACZwU,sBACCoa,EAAMD,GAAOld,OACbmd,EAAMD,GAAO1uB,OACb2uB,EAAMD,GAAO/sB,YACbgtB,EAAMD,GAAO1uB,OAAOqU,aAErBvT,MAAK,WACJ,GAAaf,cAAcwO,kBAAoBmgB,EAE/C,EAAKX,iBAAmBW,GAAS,EACjC,EAAKT,aAAeS,GAASC,EAAM11B,OAAS,SAnDtD,GAAoC,QAAf,GAAM,gBAN1B,eAAU,CACT4O,WAAY,CACV+mB,QAAA,GACAC,UAAA,OAGiB,cClB8X,MCQ/Y,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI7xB,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACI,YAAY,gBAAgBa,MAAMrB,EAAI8xB,iBAAiB,CAAC1xB,EAAG,iBAAiB,CAACA,EAAG,MAAM,CAACI,YAAY,YAAY,CAACJ,EAAG,OAAO,CAACI,YAAY,SAAS,CAACR,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAI6X,cAAczX,EAAG,MAAM,CAACI,YAAY,sCAAsC,CAACJ,EAAG,OAAO,CAACI,YAAY,6BAA6B,CAACR,EAAIS,GAAG,qBAAqBL,EAAG,MAAM,CAACI,YAAY,kBAAkBU,GAAG,CAAC,MAAQlB,EAAI+xB,UAAU,CAAC3xB,EAAG,OAAO,CAACI,YAAY,kBAAkB,CAACR,EAAIS,GAAG,iBAAiBL,EAAG,kBAAkB,CAACA,EAAG,MAAM,CAACI,YAAY,OAAO,CAACJ,EAAG,OAAO,CAACI,YAAY,aAAa,CAACR,EAAIS,GAAG,iBAAiBL,EAAG,QAAQ,CAACiM,WAAW,CAAC,CAACxO,KAAK,QAAQyO,QAAQ,UAAUhO,MAAO0B,EAAa,UAAEuM,WAAW,cAAcC,SAAS,CAAC,MAASxM,EAAa,WAAGkB,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOwL,OAAOqlB,YAAqBhyB,EAAIiyB,UAAU9wB,EAAOwL,OAAOrO,aAAY8B,EAAG,MAAM,CAACI,YAAY,OAAO,CAACJ,EAAG,OAAO,CAACI,YAAY,aAAa,CAACR,EAAIS,GAAG,gBAAgBL,EAAG,QAAQ,CAACiM,WAAW,CAAC,CAACxO,KAAK,QAAQyO,QAAQ,UAAUhO,MAAO0B,EAAY,SAAEuM,WAAW,aAAaC,SAAS,CAAC,MAASxM,EAAY,UAAGkB,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOwL,OAAOqlB,YAAqBhyB,EAAIkyB,SAAS/wB,EAAOwL,OAAOrO,aAAY8B,EAAG,MAAM,CAACI,YAAY,OAAO,CAACJ,EAAG,OAAO,CAACI,YAAY,aAAa,CAACR,EAAIS,GAAG,aAAaL,EAAG,QAAQ,CAACiM,WAAW,CAAC,CAACxO,KAAK,QAAQyO,QAAQ,UAAUhO,MAAO0B,EAAS,MAAEuM,WAAW,UAAUC,SAAS,CAAC,MAASxM,EAAS,OAAGkB,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOwL,OAAOqlB,YAAqBhyB,EAAImyB,MAAMhxB,EAAOwL,OAAOrO,aAAY8B,EAAG,MAAM,CAACI,YAAY,OAAO,CAACJ,EAAG,OAAO,CAACI,YAAY,eAAe,CAACR,EAAIS,GAAG,gCAAgCL,EAAG,MAAM,CAACI,YAAY,OAAO,CAACJ,EAAG,WAAW,CAACiM,WAAW,CAAC,CAACxO,KAAK,QAAQyO,QAAQ,UAAUhO,MAAO0B,EAAW,QAAEuM,WAAW,YAAYC,SAAS,CAAC,MAASxM,EAAW,SAAGkB,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOwL,OAAOqlB,YAAqBhyB,EAAIoyB,QAAQjxB,EAAOwL,OAAOrO,aAAY8B,EAAG,MAAM,CAACA,EAAG,YAAY,CAACI,YAAY,gCAAgCU,GAAG,CAAC,MAAQlB,EAAI+xB,UAAU,CAAC/xB,EAAIS,GAAG,YAAYL,EAAG,YAAY,CAACI,YAAY,gCAAgCF,MAAM,CAAC,UAAYN,EAAIiyB,YAAcjyB,EAAIkyB,WAAalyB,EAAImyB,QAAUnyB,EAAIoyB,UAAYpyB,EAAIqyB,cAAcryB,EAAImyB,QAAQjxB,GAAG,CAAC,MAAQlB,EAAIsyB,aAAa,CAAClyB,EAAG,OAAO,CAACJ,EAAIS,GAAG,cAAeT,EAAa,UAAEI,EAAG,UAAU,CAACI,YAAY,WAAW,CAACR,EAAIS,GAAG,aAAaT,EAAIY,MAAM,IAAI,GAAIZ,EAAW,QAAEI,EAAG,MAAM,CAACI,YAAY,OAAO,CAACJ,EAAG,OAAO,CAACI,YAAY,aAAa,CAACR,EAAIS,GAAG,6FAA6FT,EAAIY,QAAQ,IAC9hF,GAAkB,GCQD,GAArB,yG,0BACU,EAAAkxB,gBAAkB,GAClB,EAAAS,YAAc,GACd,EAAAN,UAAY,GACZ,EAAAC,SAAW,GACX,EAAAC,MAAQ,GACR,EAAAC,QAAU,GACV,EAAAI,SAAU,EACV,EAAAzK,WAAY,EACZ,EAAAlQ,UAAY,GATtB,gDAcU,WAAO,WACb9V,GAAIG,IAAI,qBAAqB,SAACiK,GAC5B,EAAK2lB,gBAAkB,UACvB,EAAKS,YAAcpmB,EAAS5H,IAC5B,EAAKsT,UAAY1L,EAAStO,KAC1B,EAAKu0B,QAAU,QAnBrB,qBAuBU,WACNnyB,KAAK6xB,gBAAkB,KAxB3B,2BA2BU,SAAcK,GACpB,IAAMM,EAAK,eACX,OAAOA,EAAGC,KAAKP,KA7BnB,iFAgCU,2HAEJlyB,KAAK8nB,WAAY,EAFb,SAImBvkB,MACrB,EAAcT,cAAcC,OAAO1D,IAAIgtB,eACvC,CACE5oB,OAAQ,OACRlF,KAAM,OACNm0B,MAAO,WACPC,YAAa,cACbC,QAAS,CACP,eAAgB,oBAElBC,SAAU,SACVC,eAAgB,cAChBpvB,KAAM+C,KAAKE,UAAU,CACnBosB,UAAW/yB,KAAKgyB,UAChBgB,SAAUhzB,KAAKiyB,SACfC,MAAOlyB,KAAKkyB,MACZC,QAASnyB,KAAKmyB,YApBhB,OAIEruB,EAJF,OAyBJ9D,KAAK8nB,WAAY,EAEbhkB,EAASmvB,IACXjzB,KAAK6xB,gBAAkB,QACvB3yB,OAAOg0B,KAAKlzB,KAAKsyB,eAEjBtyB,KAAKuyB,SAAU,EAEf9mB,YAAW,WACT,EAAK8mB,SAAU,IACd,MAnCD,mDAsCJrtB,QAAQC,MAAR,MACAnF,KAAK8nB,WAAY,EAvCb,yDAhCV,8DAA0C,QAYxC,gBADC,eAAK,CAAElc,QAAS,M,2BAXE,GAAY,gBADhC,QACoB,cCTqY,MCQtZ,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI7L,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,wBAAwBa,MAAM,CAAE+xB,SAAUpzB,EAAIsB,MAAM8xB,WAAY,CAAEpzB,EAAIsB,MAAc,SAAElB,EAAG,OAAO,CAACI,YAAY,qCAAqCU,GAAG,CAAC,MAAQ,SAASC,GAAQnB,EAAIsB,MAAM8xB,UAAYpzB,EAAIsB,MAAM8xB,YAAY,CAACpzB,EAAIS,GAAG,kBAAkBT,EAAIY,KAAOZ,EAAIsB,MAAM8xB,SAA0JpzB,EAAIY,KAApJR,EAAG,OAAO,CAACI,YAAY,4BAA4BU,GAAG,CAAC,MAAQ,SAASC,GAAQnB,EAAIsB,MAAM8xB,UAAYpzB,EAAIsB,MAAM8xB,YAAY,CAACpzB,EAAIS,GAAG,YAAsBT,EAAIsB,MAAc,SAAElB,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAACJ,EAAG,kBAAkB,CAACE,MAAM,CAAC,aAAaN,EAAIsB,MAAM+xB,iBAAiB/zB,KAAI,SAAUimB,GAAI,MAAO,CAC1rB,MAAQA,EAAE/a,MACV,UAAY+a,EAAE/a,MACd,QAAW+a,EAAE/N,QACb,YAAc,WAAa,OAAO+N,EAAE/a,MAAMyT,eAC1C,SAAW,WAAa,OAAOsH,EAAE/a,WAC5B,uBAAuBxK,EAAIsB,MAAMymB,UAAY/nB,EAAIW,GAAG,4BAA8BX,EAAIW,GAAG,gCAAgC,oBAAmB,EAAM,YAAY,MAAM,WAAW,IAAIO,GAAG,CAAC,cAAclB,EAAIszB,oBAAoBnjB,MAAM,CAAC7R,MAAO0B,EAAIsB,MAAwB,mBAAE8O,SAAS,SAAUC,GAAMrQ,EAAIsQ,KAAKtQ,EAAIsB,MAAO,qBAAsB+O,IAAM9D,WAAW,+BAA+B,GAAGvM,EAAIY,KAAMZ,EAAIsB,MAAMymB,WAAa/nB,EAAIsB,MAAM8xB,SAAUhzB,EAAG,UAAU,CAACI,YAAY,eAAe,CAACR,EAAIS,GAAG,YAAYT,EAAIY,MAAM,IAClgB,GAAkB,GCYD,GAArB,yG,0BACU,EAAAU,MAAe,CACrB8xB,UAAU,EACVC,iBAAkB,GAClBE,mBAAoB,KACpBxL,WAAW,GALf,gDAWU,WAAO,WACPyL,EAAgC,EAAczwB,cAAcC,OAC/D6C,OACG4tB,EAAyBD,EAAal0B,KAAI,SAAC0D,GAC/C,OAAOA,EAAOqB,SAGhBpE,KAAKqB,MAAMymB,WAAY,EACvB,EAAanf,cACX,EAAaC,qBAAqB4qB,IAClC3vB,MAAK,SAACgF,GACN,EAAK4qB,oBAAoB5qB,GACzB,EAAKxH,MAAMymB,WAAY,OAvB7B,iCA8BU,SAAoBjf,GAAe,WACnC0qB,EAAgC,EAAczwB,cAAcC,OAC/D6C,OACG8tB,EAAwB,GACxBC,EAAqB,GAE3BJ,EAAaxsB,SAAQ,SAAChE,GACpB,IAAM6U,EACJ7U,EAAOqB,MAAMoD,QAAQ,MAAQ,EACzBzE,EAAOqB,MAAMuF,MAAM,KAAK,GACxB5G,EAAOqB,MAERsvB,EAAiB9b,KAAY8b,EAAiB9b,GAAa7U,MAGlE8F,EAAS9B,SAAQ,SAAC+B,GAChB,IAAM8O,EAAoB9O,EAAK+O,QAAQlO,MAAM,KAAK,GAC9CY,EAAgBmpB,EAAiB9b,GAAWgc,aAEhD,IAAK,IAAMj1B,KAAOmK,EAAKC,gBACrBwB,EAAQA,EAAMspB,WAAN,WAAqBl1B,EAArB,KAA6BmK,EAAKC,gBAAgBpK,IAGvD,EAAK0C,MAAM+xB,iBAAiBxb,KAC/B,EAAKvW,MAAM+xB,iBAAiBxb,GAAa,IAEtC+b,EAAc/b,KAAY+b,EAAc/b,GAAa,KAET,IAA7C+b,EAAc/b,GAAWpQ,QAAQ+C,KAEnC,EAAKlJ,MAAM+xB,iBAAiB92B,KAAK,CAC/BiO,MAAO,GAAF,OAAK,EAAK7J,GAAGgzB,EAAiB9b,GAAWrN,OAAzC,cAAqDA,GAC1DgN,QAASzO,EACT8O,UAAWA,IAGb+b,EAAc/b,GAAWtb,KAAKiO,OAKlCvK,KAAKqB,MAAM+xB,iBAAiBrY,MAAK,SAACmE,EAAGC,GAAJ,OAAWD,EAAE3U,MAAQ4U,EAAE5U,MAAQ,GAAK,OAvEzE,gCA6EU,WACN,GAAezH,cAAcgxB,WAC3B9zB,KAAKqB,MAAMiyB,mBAAmB/b,SAEhCzV,GAAIC,MAAM,eAAgB/B,KAAKqB,MAAMiyB,mBAAmB/b,aAjF5D,GAAoC,QAAf,GAAM,gBAD1B,QACoB,cCnB8X,MCQ/Y,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,OAIa,M,QCGM,GAArB,yG,0BACU,EAAAqZ,OAAS,EADnB,oDAIE,SAAY3mB,GACY,iBAAlBA,EAASrM,OACXoC,KAAK4wB,QAAS,IAAI7oB,MAAOC,eAN/B,GAAkC,QAIhC,gBADC,eAAM,SAAU,CAAE0C,WAAW,EAAMC,MAAM,K,2BAMzC,MATkB,GAAI,gBAPxB,eAAU,CACTC,WAAY,CACVmpB,OAAA,GACAC,OAAA,GACAC,qBAGiB,cCtByW,MCO1X,GAAY,eACd,GACA,GACA,IACA,EACA,KACA,KACA,MAIa,M,QClBX,GAAS,WAAa,IAAIl0B,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,iBAAiB,CAACJ,EAAG,MAAM,CAACI,YAAY,YAAY,CAACR,EAAIkL,GAAIlL,EAAa,WAAE,SAASwG,EAASzK,GAAG,MAAO,CAAEA,EAAI,EAAGqE,EAAG,eAAe,CAACxB,IAAI7C,EAAEuE,MAAM,CAAC,MAAQvE,EAAE,aAAeyK,KAAYxG,EAAIY,UAAS,GAAGR,EAAG,MAAM,CAACI,YAAY,YAAY,CAACR,EAAIkL,GAAIlL,EAAa,WAAE,SAASwG,EAASzK,GAAG,MAAO,CAAEA,EAAI,EAAGqE,EAAG,eAAe,CAACxB,IAAI7C,EAAEuE,MAAM,CAAC,MAAQvE,EAAE,aAAeyK,KAAYxG,EAAIY,UAAS,MACze,GAAkB,GCDlB,GAAS,WAAa,IAAIZ,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACiB,MAAM,CAAE,eAAgBrB,EAAIm0B,WAAYjzB,GAAG,CAAC,MAAQlB,EAAIo0B,eAAe,CAACh0B,EAAG,MAAM,CAACI,YAAY,eAAeF,MAAM,CAAC,IAAMN,EAAIq0B,UAAU,IAAMr0B,EAAIs0B,aAAaC,eACrQ,GAAkB,GCQD,GAArB,yG,0BACU,EAAAJ,UAAY,GADtB,gDASU,WACNl0B,KAAKk0B,UAAL,uBAAiCl0B,KAAKyxB,SAV1C,qBAgBU,WACN,OAAO,UAAQ,YAAsBzxB,KAAK4J,MAAMC,OAAlC,YAA4C7J,KAAKq0B,aAAa70B,GAAGwe,cAAjE,YACZhe,KAAKq0B,aAAaE,SAlBxB,mFAyBU,uHAEE,EAAczxB,cAAc2tB,WAAWzwB,KAAKq0B,aAAa70B,IAF3D,OAIAQ,KAAKq0B,aAAaG,MACpBx0B,KAAKy0B,QAAQn4B,KAAK,CAChBsB,KAAM,eACNoD,OAAQ,CAAEuF,SAAUvG,KAAKq0B,aAAa70B,MAGxCQ,KAAKy0B,QAAQn4B,KAAK,CAChBsB,KAAM,oBACNoD,OAAQ,CAAEuF,SAAUvG,KAAKq0B,aAAa70B,MAZtC,kDAgBJ0F,QAAQC,MAAM,mDAhBV,wDAzBV,8DAA0C,QAIxC,gBADC,eAAK,CAAEyG,QAAS,M,6BAIjB,gBADC,eAAK,CAAEA,QAAS,M,oCANE,GAAY,gBADhC,QACoB,cCToY,MCQrZ,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCmCM,GAArB,yG,0BACU,EAAA/E,UAA+B,GADzC,gDAGU,WAAO,WACb7G,KAAK6G,UAAY,EAAc/D,cAAcC,OAAO8D,UAEhD,EAAa/D,cAAc8D,kBAC7B6E,YAAW,WACT,EAAKgpB,QAAQn4B,KAAK,CAChBsB,KAAM,qBACNoD,OAAQ,CACNuF,SAAU,EAAczD,cAAcC,OAAO8D,UAAU,GAAGrH,GAC1D6F,IAAK,GAAF,OAAM,EAAavC,cAAcuC,KACpCC,IAAK,GAAF,OAAK,EAAaxC,cAAcwC,UAGtC,SAhBT,GAAkC,QAAb,GAAI,gBALxB,eAAU,CACTsF,WAAY,CACV8pB,aAAA,OAGiB,cCtD0W,MCQ3X,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI30B,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,mBAAmB,CAAwC,QAAtCR,EAAI40B,gBAAgB3W,cAAyB7d,EAAG,UAAU,CAACA,EAAG,iBAAiB,CAACA,EAAG,KAAK,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,2CAA2CP,EAAG,kBAAkB,CAACA,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,wCAAwC,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,8CAA8CP,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,8CAA8CP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,0CAA0C,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,+CAA+CP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,8CAA8C,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACA,EAAG,MAAM,CAACI,YAAY,cAAcF,MAAM,CAAC,IAAMN,EAAI60B,SAAS,sCAAsCz0B,EAAG,IAAI,CAACA,EAAG,MAAM,CAACI,YAAY,cAAcF,MAAM,CAAC,IAAMN,EAAI60B,SAAS,sCAAsCz0B,EAAG,IAAI,CAACA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,qDAAqDP,EAAG,IAAI,CAACA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,+CAA+CP,EAAG,IAAI,CAACA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,+CAA+CP,EAAG,IAAI,CAACA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,+CAA+CP,EAAG,IAAI,CAACA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,+CAA+CP,EAAG,IAAI,CAACA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,+CAA+CP,EAAG,IAAI,CAACA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,+CAA+CP,EAAG,IAAI,CAACA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,+CAA+CP,EAAG,IAAI,CAACA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,+CAA+CP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,iDAAiD,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,sDAAsDP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,uCAAuC,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,6CAA6CP,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,6CAA6CP,EAAG,IAAI,CAACI,YAAY,YAAY,CAACJ,EAAG,MAAM,CAACE,MAAM,CAAC,IAAMN,EAAI60B,SAAS,qBAAqB,GAAG70B,EAAIY,KAA4C,WAAtCZ,EAAI40B,gBAAgB3W,cAA4B7d,EAAG,UAAU,CAACA,EAAG,iBAAiB,CAACA,EAAG,KAAK,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,8CAA8CP,EAAG,kBAAkB,CAACA,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,0CAA0C,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,+CAA+CP,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,sDAAsDP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,6CAA6C,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,kDAAkDP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,kDAAkD,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,wDAAwDP,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,wDAAwDP,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,wDAAwDP,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,wDAAwDP,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,wDAAwDP,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,wDAAwDP,EAAG,IAAI,CAACA,EAAG,MAAM,CAACI,YAAY,cAAcF,MAAM,CAAC,IAAMN,EAAI60B,SAAS,6BAA6Bz0B,EAAG,IAAI,CAACA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,kDAAkDP,EAAG,IAAI,CAACA,EAAG,MAAM,CAACI,YAAY,cAAcF,MAAM,CAAC,IAAMN,EAAI60B,SAAS,6BAA6Bz0B,EAAG,IAAI,CAACA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,kDAAkDP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,oDAAoD,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,yDAAyDP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,oDAAoD,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,0DAA0DP,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,0DAA0DP,EAAG,IAAI,CAACI,YAAY,YAAY,CAACJ,EAAG,MAAM,CAACE,MAAM,CAAC,IAAMN,EAAI60B,SAAS,qBAAqB,GAAG70B,EAAIY,MAAM,IAC1pK,GAAkB,GCOD,GAArB,yG,0BACU,EAAAg0B,gBAAkB,GAD5B,oDAIE,SAAY1qB,GACY,sBAAlBA,EAASrM,OACXoC,KAAK20B,gBAAkB1qB,EAASjJ,OAAOuF,YAN7C,sBAaU,SAASsuB,GACf,OAAO,UAAQ,YAAyB70B,KAAK20B,gBAAgB3W,cAA/C,YAAgE6W,QAdlF,GAA0C,QAIxC,gBADC,eAAM,SAAU,CAAEnqB,WAAW,EAAMC,MAAM,K,2BAKzC,MARkB,GAAY,gBADhC,QACoB,cCRoY,MCQrZ,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCnBX,GAAS,WAAa,IAAI5K,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,kBAAkB,CAACJ,EAAG,UAAU,CAACA,EAAG,iBAAiB,CAACA,EAAG,KAAK,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,yCAAyCP,EAAG,kBAAkB,CAACA,EAAG,MAAM,CAACI,YAAY,WAAW,CAACJ,EAAG,MAAM,CAACI,YAAY,WAAWF,MAAM,CAAC,IAAMN,EAAI60B,SAAS,wBAAwBz0B,EAAG,MAAM,CAACI,YAAY,WAAWF,MAAM,CAAC,IAAMN,EAAI60B,SAAS,wBAAwBz0B,EAAG,MAAM,CAACI,YAAY,WAAWF,MAAM,CAAC,IAAMN,EAAI60B,SAAS,wBAAwBz0B,EAAG,MAAM,CAACI,YAAY,WAAWF,MAAM,CAAC,IAAMN,EAAI60B,SAAS,wBAAwBz0B,EAAG,MAAM,CAACI,YAAY,WAAWF,MAAM,CAAC,IAAMN,EAAI60B,SAAS,0BAA0Bz0B,EAAG,MAAM,CAACI,YAAY,WAAW,CAACJ,EAAG,MAAM,CAACI,YAAY,WAAWF,MAAM,CAAC,IAAMN,EAAI60B,SAAS,wBAAwBz0B,EAAG,MAAM,CAACI,YAAY,WAAWF,MAAM,CAAC,IAAMN,EAAI60B,SAAS,wBAAwBz0B,EAAG,MAAM,CAACI,YAAY,WAAWF,MAAM,CAAC,IAAMN,EAAI60B,SAAS,wBAAwBz0B,EAAG,MAAM,CAACI,YAAY,WAAWF,MAAM,CAAC,IAAMN,EAAI60B,SAAS,0BAA0Bz0B,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,iDAAiD,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,uDAAuDP,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,uDAAuDP,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,uDAAuDP,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,uDAAuDP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,2CAA2C,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,gDAAgDP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,6CAA6C,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,kDAAkDP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,8CAA8C,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,oDAAoDP,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,oDAAoDP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,oDAAoD,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,yDAAyDP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,kCAAkC,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,uCAAuCP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,kCAAkC,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,uCAAuCP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,gCAAgC,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,qCAAqCP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,iCAAiC,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,sCAAsCP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,uCAAuC,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,4CAA4CP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIW,GAAG,gCAAgC,KAAKP,EAAG,IAAI,CAACE,MAAM,CAAC,KAAO,2BAA2B,OAAS,UAAU,CAACF,EAAG,MAAM,CAACI,YAAY,OAAOF,MAAM,CAAC,IAAMN,EAAI60B,SAAS,qBAAqB70B,EAAIS,GAAG,4BAA4B,GAAGL,EAAG,KAAKA,EAAG,IAAI,CAACoM,SAAS,CAAC,UAAYxM,EAAIU,GAAGV,EAAIW,GAAG,uCAAuCP,EAAG,KAAKA,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,gDAAgD,GAAGP,EAAG,KAAKA,EAAG,IAAI,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,uDAAuDP,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,qDAAqD,GAAGP,EAAG,IAAI,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,iEAAiEP,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,yDAAyD,GAAGP,EAAG,IAAI,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,qEAAqEP,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,mDAAmD,GAAGP,EAAG,IAAI,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,+DAA+DP,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,wDAAwD,GAAGP,EAAG,IAAI,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,oEAAoEP,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,2DAA2D,GAAGP,EAAG,IAAI,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,uEAAuEP,EAAG,KAAK,CAACA,EAAG,UAAU,CAACJ,EAAIS,GAAG,iBAAiBT,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,kDAAkD,GAAGP,EAAG,IAAI,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAIW,GAAG,8DAA8DP,EAAG,QAAQ,IAAI,IAC99K,GAAkB,GCMD,GAArB,0KAIU,SAAS00B,GACf,OAAO,UAAQ,YAAoBA,QALvC,GAAqC,QAAhB,GAAO,gBAD3B,QACoB,cCP+X,MCQhZ,I,UAAY,eACd,GACA,GACA,IACA,EACA,KACA,WACA,OAIa,M,QCZf,aAAIC,IAAI,SAER,IAAMC,GAA6B,CACjC,CACEC,KAAM,IACNp3B,KAAM,OACNsE,UAAW,IAEb,CACE8yB,KAAM,uBACNp3B,KAAM,eACNsE,UAAW,IAEb,CACE8yB,KAAM,yCACNp3B,KAAM,qBACNsE,UAAW,IAEb,CACE8yB,KAAM,uBACNp3B,KAAM,oBACNsE,UAAW+yB,IAEb,CACED,KAAM,WACNp3B,KAAM,mBACNsE,UAAW,IAEb,CACE8yB,KAAM,QACNp3B,KAAM,gBACNs3B,YAHF,WAIIh2B,OAAOg0B,KAAK,oBAAqB,aAKjCiC,GAAS,IAAI,QAAU,CAC3B52B,KAAM,UACN62B,KAAM,IACNL,YAGa,M,aC/Cf,aAAID,IAAI,SAEO,WAAI,QAAKO,MAAM,CAC5Bh0B,MAAO,GAGPi0B,UAAW,GAGXC,QAAS,K,iDCPX,SAASC,KACP,IAAMC,EAAU,UAKVC,EAA2B,GAQjC,OAPAD,EAAQ51B,OAAOkH,SAAQ,SAAApI,GACrB,IAAMg3B,EAAUh3B,EAAI+rB,MAAM,uBAC1B,GAAIiL,GAAWA,EAAQ35B,OAAS,EAAG,CACjC,IAAM6N,EAAS8rB,EAAQ,GACvBD,EAAS7rB,GAAU4rB,EAAQ92B,OAGxB+2B,EAhBT,aAAIZ,IAAI,SAmBO,WAAI,QAAQ,CACzBjrB,OAAQ,KACR+rB,eAAgB,KAChBF,SAAUF,OCfZ,aAAIV,IAAI,MAGD,IAAMhzB,GAAM,IAAI,aAEvB,aAAIiB,OAAO8yB,eAAgB,EAE3B,IAAI,aAAI,CACNV,OAAA,GACAW,SACAC,QACA1a,OAAQ,SAAA2a,GAAC,OAAIA,EAAE,OACdC,OAAO,S,qBCtBV14B,EAAOD,QAAU,IAA0B,wB,qBCA3CC,EAAOD,QAAU,IAA0B,wB,qBCA3CC,EAAOD,QAAU,IAA0B,uB,yDCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,kC,kCCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,kC,qBCA3CC,EAAOD,QAAU,IAA0B,kC,kCCA3C,W,4CCAAC,EAAOD,QAAU,IAA0B,wB,6+8BCA3CC,EAAOD,QAAU,IAA0B,8C,mECA3CC,EAAOD,QAAU,IAA0B,kC,qBCA3CC,EAAOD,QAAU,IAA0B,kC","file":"js/app.0b52a3a6.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\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 \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/credit-img-06.4754d267.png\";","module.exports = __webpack_public_path__ + \"img/logos.d05fba0b.png\";","module.exports = __webpack_public_path__ + \"img/logos.d05fba0b.png\";","module.exports = __webpack_public_path__ + \"img/lo.e302f942.png\";","module.exports = __webpack_public_path__ + \"img/Ministry_of_AF_logo.4a5bb7d9.png\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&id=3f2945e4&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/credit-img-04.6f9d50f5.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&id=297409b2&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/credit-img-09.e8d697ca.png\";","module.exports = __webpack_public_path__ + \"img/result_example_2.9c054236.png\";","module.exports = __webpack_public_path__ + \"img/SAVA.069d6bba.png\";","module.exports = __webpack_public_path__ + \"img/POLICY.f8596bef.png\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&id=63722a5e&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&id=01489f11&lang=scss&scoped=true&\"","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d833\",\n\t\"./ar-tn.js\": \"6d833\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","var map = {\n\t\"./en.json\": \"edd4\",\n\t\"./lo.json\": \"36d6\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"49f8\";","module.exports = __webpack_public_path__ + \"img/result_example_1.9a95f97f.png\";","module.exports = __webpack_public_path__ + \"img/SAVA.1b05b1c8.png\";","module.exports = __webpack_public_path__ + \"img/rectangle-slider.ec9f5d18.svg\";","module.exports = __webpack_public_path__ + \"img/national_result_example_2.441c7f94.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&id=5863a128&lang=scss&scoped=true&\"","var map = {\n\t\"./en.png\": \"d615\",\n\t\"./lo.png\": \"097e\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"61f4\";","var map = {\n\t\"./credit-img-01.png\": \"e99f\",\n\t\"./credit-img-02.png\": \"df47\",\n\t\"./credit-img-03.png\": \"da66\",\n\t\"./credit-img-04.png\": \"19be\",\n\t\"./credit-img-05.png\": \"f95a\",\n\t\"./credit-img-06.png\": \"03e4\",\n\t\"./credit-img-07.png\": \"f561\",\n\t\"./credit-img-08.png\": \"8a88\",\n\t\"./credit-img-09.png\": \"2eeb\",\n\t\"./logo_arxit.png\": \"956c\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"63fe\";","module.exports = __webpack_public_path__ + \"img/logos.d05fba0b.png\";","module.exports = __webpack_public_path__ + \"img/logo_MONRE.70f8ead0.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/AEZ.016f68bb.png\";","var map = {\n\t\"./en/aez/AEZ.png\": \"7d4c\",\n\t\"./en/policy/POLICY.png\": \"3726\",\n\t\"./en/policy/logos.png\": \"05e0\",\n\t\"./en/policy/result_example_1.png\": \"93d5\",\n\t\"./en/policy/result_example_2.png\": \"c22a\",\n\t\"./en/sar/SAR.png\": \"d579\",\n\t\"./en/sar/logos.png\": \"07d1\",\n\t\"./en/sar/national_result_example_1.png\": \"eea3\",\n\t\"./en/sar/national_result_example_2.png\": \"a4a9\",\n\t\"./en/sava/SAVA.png\": \"528c\",\n\t\"./lo/aez/AEZ.png\": \"d296\",\n\t\"./lo/policy/POLICY.png\": \"a2a6\",\n\t\"./lo/policy/logos.png\": \"672a\",\n\t\"./lo/policy/result_example_1.png\": \"4c73\",\n\t\"./lo/policy/result_example_2.png\": \"301f\",\n\t\"./lo/sar/SAR.png\": \"eda1\",\n\t\"./lo/sar/logos.png\": \"9b73\",\n\t\"./lo/sar/national_result_example_1.png\": \"b203\",\n\t\"./lo/sar/national_result_example_2.png\": \"57d4\",\n\t\"./lo/sava/SAVA.png\": \"316f\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"7fa2\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&id=3d192650&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&id=abfa30d6&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/credit-img-08.8e4d72b8.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&id=1a6d7248&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/result_example_1.9a95f97f.png\";","module.exports = \"data:image/png;base64,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\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&id=7f28b5c8&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/logos.d05fba0b.png\";","var map = {\n\t\"./aez/AEZ.png\": \"7d4c\",\n\t\"./policy/POLICY.png\": \"3726\",\n\t\"./policy/logos.png\": \"05e0\",\n\t\"./policy/result_example_1.png\": \"93d5\",\n\t\"./policy/result_example_2.png\": \"c22a\",\n\t\"./sar/SAR.png\": \"d579\",\n\t\"./sar/logos.png\": \"07d1\",\n\t\"./sar/national_result_example_1.png\": \"eea3\",\n\t\"./sar/national_result_example_2.png\": \"a4a9\",\n\t\"./sava/SAVA.png\": \"528c\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"9f94\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/POLICY.0efe5dec.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/national_result_example_2.441c7f94.png\";","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&id=f6319b84&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&id=6fea5592&lang=scss&scoped=true&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/national_result_example_1.1885e9be.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&id=fb14841e&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&id=632731be&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/result_example_2.9c054236.png\";","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&id=71a99d9c&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[(_vm.configLoaded)?_c('div',[_c('Header'),_c('ArxSideBar',{key:_vm.sidebarkey}),(_vm.mobileNotificationVisible)?_c('div',{staticClass:\"mobileNotificationDiv\"},[_vm._v(_vm._s(_vm.$t('translate.mobileProvinceScrollingMsg')))]):_vm._e()],1):_vm._e(),(!_vm.configLoaded && _vm.showError)?_c('div',{staticClass:\"configError\"},[_vm._v(\" Un error occured when loading application configuration ! \")]):_vm._e(),(_vm.mobileLoadingVisible)?_c('div',{staticClass:\"mobileLoadingDiv\"},[_c('md-icon',{staticClass:\"loadingIcon\"},[_vm._v(\"cached\")])],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"header md-elevation-2\"},[_c('div',{attrs:{\"id\":\"nav\"}},[_c('img',{staticClass:\"logo md-elevation-2\",attrs:{\"alt\":\"Ministry of AF\",\"src\":require(\"@/assets/Ministry_of_AF_logo.png\")}}),_c('img',{staticClass:\"logo md-elevation-2\",attrs:{\"alt\":\"MONRE\",\"src\":require(\"@/assets/logo_MONRE.png\")}}),(_vm.thematicLabelVisible)?_c('span',{staticClass:\"thematicSpan\"},[_vm._v(_vm._s(_vm.thematicLabel))]):_vm._e(),(_vm.responsiveMenuVisible)?_c('ul',{staticClass:\"menu\"},[_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'Home', params: {}}}},[_vm._v(_vm._s(_vm.$t('translate.home')))]),_vm._v(\" \"),_c('span',{staticClass:\"menuSeparator\"},[_vm._v(\"|\")])],1),_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'CreditsWithParam'}}},[_vm._v(_vm._s(_vm.$t('translate.credits')))])],1)]):_vm._e(),_c('div',{staticClass:\"responsiveMenu\",on:{\"click\":function($event){_vm.responsiveMenuVisible = !_vm.responsiveMenuVisible;}}},[(!_vm.responsiveMenuVisible)?_c('md-icon',{staticClass:\"swipeIcon md-elevation-3\"},[_vm._v(\"menu\")]):_vm._e(),(_vm.responsiveMenuVisible)?_c('md-icon',{staticClass:\"swipeIcon md-elevation-3\"},[_vm._v(\"close\")]):_vm._e()],1),(_vm.arxToolsVisible)?_c('ArxTools'):_vm._e(),_c('locale-switcher'),_c('transition',[_c('keep-alive',[_c('router-view')],1)],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"arxTool\"},[_c('div',{class:['toolDiv', _vm.state.currentTool == _vm.LAYERS ? 'selected' : ''],on:{\"click\":function($event){return _vm.showTool(_vm.LAYERS)}}},[_c('span',{staticClass:\"toolIcon material-icons\"},[_vm._v(\"layers\")]),_c('label',[_vm._v(_vm._s(_vm.$t('translate.layers')))])]),_c('div',{class:['toolDiv mapComparisonTool', _vm.state.currentTool == _vm.MAP_COMPARISON ? 'selected' : ''],on:{\"click\":function($event){return _vm.showTool(_vm.MAP_COMPARISON)}}},[_c('span',{staticClass:\"toolIcon material-icons\"},[_vm._v(\"compare\")]),_c('label',[_vm._v(_vm._s(_vm.$t('translate.mapComparison')))])]),_c('div',{class:['toolDiv statsTool', _vm.state.currentTool == _vm.STATISTICS ? 'selected' : ''],on:{\"click\":function($event){return _vm.showTool(_vm.STATISTICS)}}},[_c('span',{staticClass:\"toolIcon material-icons\"},[_vm._v(\"bar_chart\")]),_c('label',[_vm._v(_vm._s(_vm.$t('translate.statistics')))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { bus } from \"../../../main\";\r\n\r\n@Component\r\nexport default class ArxTools extends Vue {\r\n private LAYERS = \"layers\";\r\n private MAP_COMPARISON = \"mapComparison\";\r\n private STATISTICS = \"statistics\";\r\n private mapComparisonVisible = true;\r\n\r\n private state = {\r\n currentTool: \"\"\r\n };\r\n\r\n /**\r\n * Created\r\n */\r\n private created(): void {\r\n bus.$on(\"unselectTools\", () => {\r\n this.unselectTools();\r\n });\r\n }\r\n\r\n /**\r\n * Show layers as default tool\r\n */\r\n private mounted(): void {\r\n this.showTool(this.LAYERS);\r\n }\r\n\r\n /**\r\n * Show tool\r\n * @param tool\r\n */\r\n private showTool = (tool: string): void => {\r\n Vue.set(this.state, \"currentTool\", tool);\r\n bus.$emit(\"showTool\", tool);\r\n };\r\n\r\n /**\r\n * Unselect tools\r\n * @param tools\r\n */\r\n private unselectTools = (): void => {\r\n Vue.set(this.state, \"currentTool\", \"\");\r\n };\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArxTools.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArxTools.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=3f2945e4&scoped=true&\"\nimport script from \"./ArxTools.vue?vue&type=script&lang=ts&\"\nexport * from \"./ArxTools.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?vue&type=style&index=0&id=3f2945e4&lang=scss&scoped=true&\"\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 \"3f2945e4\",\n null\n \n)\n\nexport default component.exports","import WMSGetFeatureInfo from \"ol/format/WMSGetFeatureInfo\";\r\nimport { GeoJSON, WFS } from \"ol/format\";\r\nimport { ConfigService } from \"./configService\";\r\nimport {\r\n and as andFilter,\r\n equalTo as equalToFilter\r\n} from 'ol/format/filter';\r\nimport IFilterAttributeValue from \"../interfaces/IFilterAttributeValue\"\r\n\r\n\r\nexport class QueryService {\r\n\r\n /**\r\n * Create layer filters\r\n * @param filters\r\n */\r\n private static createLayerFilter(filters: IFilterAttributeValue[]): any[] {\r\n if (filters && filters.length) {\r\n return filters.map( (filter: IFilterAttributeValue) => {\r\n return equalToFilter(filter.attribute, filter.value)\r\n });\r\n }\r\n\r\n return [];\r\n }\r\n\r\n /**\r\n * Create feature request\r\n * @param featureTypes\r\n * @param maxFeatures\r\n * @returns\r\n */\r\n public static createFeatureRequest(\r\n featureTypes: string[],\r\n maxFeatures: number = null,\r\n filters: IFilterAttributeValue[] = null\r\n ): Node {\r\n const conditions: any[] = QueryService.createLayerFilter(filters);\r\n let filter: any = null;\r\n\r\n if (conditions.length > 1) {\r\n filter = andFilter(...conditions);\r\n } else if (conditions.length === 1) {\r\n filter = conditions[0];\r\n }\r\n\r\n return new WFS().writeGetFeature({\r\n srsName: ConfigService.getInstance().config.map.projection,\r\n featureNS: \"\",\r\n featurePrefix: \"\",\r\n featureTypes: featureTypes,\r\n outputFormat: \"application/json\",\r\n maxFeatures: maxFeatures || 999999,\r\n filter: filter\r\n });\r\n }\r\n \r\n /**\r\n * Query features\r\n * @param featureRequest\r\n * @returns\r\n */\r\n public static async queryFeatures(featureRequest: Node): Promise {\r\n return new Promise((resolve, reject) => {\r\n fetch(ConfigService.getInstance().config.map.WFSBaseURL, {\r\n method: \"POST\",\r\n body: new XMLSerializer().serializeToString(featureRequest)\r\n })\r\n .then(response => response.json())\r\n .then(json => resolve(new GeoJSON().readFeatures(json)))\r\n .catch((err: any) => {\r\n resolve(null);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Query SQL view features\r\n * @param featureRequest\r\n * @returns\r\n */\r\n public static async querySQLViewFeatures(layer: string, filters: IFilterAttributeValue[] = null): Promise {\r\n return new Promise((resolve, reject) => {\r\n const viewparams: string[] = filters && filters.length ? \r\n filters.map( (filter: IFilterAttributeValue) => {\r\n return `${filter.attribute}:${filter.value}`;\r\n }) : [];\r\n const url = `${ConfigService.getInstance().config.map.WFSBaseURL}?service=wfs&request=GetFeature&typeNames=${layer}&viewparams=${viewparams.join(';')}&outputFormat=application/json`;\r\n fetch(url)\r\n .then(response => response.json())\r\n .then(json => resolve(new GeoJSON().readFeatures(json)))\r\n .catch((err: any) => {\r\n resolve(null);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Query WMS\r\n * @param view\r\n * @param wmsSource\r\n * @param coordinates\r\n * @returns\r\n */\r\n public static queryWMS(view, wmsSource, coordinates): Promise {\r\n return new Promise((resolve, reject) => {\r\n const viewResolution = /** @type {number} */ view.getResolution();\r\n const url = wmsSource.getFeatureInfoUrl(\r\n coordinates,\r\n viewResolution,\r\n ConfigService.getInstance().config.map.projection,\r\n { INFO_FORMAT: \"application/vnd.ogc.gml\" }\r\n );\r\n if (url) {\r\n fetch(url)\r\n .then(response => response.text())\r\n .then((result: any) => {\r\n try {\r\n const parser = new WMSGetFeatureInfo();\r\n resolve(parser.readFeatures(result));\r\n } catch (err) {\r\n console.error(err);\r\n resolve(null);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","export class UtilsService {\r\n\r\n private static instance: UtilsService;\r\n private mobile = 0;\r\n public lat = 0;\r\n public lng = 0;\r\n\r\n /**\r\n * Set url parameters\r\n * @returns\r\n */\r\n private setUrlParameters(): void {\r\n const url = new URL(window.location.href);\r\n const searchParams = new URLSearchParams(url.search);\r\n \r\n const latParam: string = searchParams.get('lat');\r\n const lngParam: string = searchParams.get('lng');\r\n const mobileParam: string = searchParams.get('mobile');\r\n\r\n this.lat = latParam && !isNaN(Number(latParam)) ? Number(latParam) : 0;\r\n this.lng = lngParam && !isNaN(Number(lngParam)) ? Number(lngParam) : 0; \r\n this.mobile = mobileParam && !isNaN(Number(mobileParam)) ? Number(mobileParam) : 0;\r\n }\r\n\r\n /**\r\n * Check is a mobile screen\r\n * @returns\r\n */\r\n public isMobileScreen(): boolean {\r\n return this.mobile != 0;\r\n }\r\n\r\n /**\r\n * Get config service instance\r\n */\r\n public static getInstance(): UtilsService {\r\n if (!UtilsService.instance) {\r\n UtilsService.instance = new UtilsService();\r\n UtilsService.instance.setUrlParameters();\r\n }\r\n\r\n return UtilsService.instance;\r\n }\r\n}\r\n","import { IThematicConfig } from \"@/interfaces/IThematicConfig\";\r\nimport { IConfig } from \"../interfaces/IConfig\";\r\nimport { IMetadata } from \"../interfaces/IMetadata\";\r\nimport { QueryService } from \"./queryService\";\r\nimport Feature from \"ol/Feature\";\r\nimport { IDataset, IVectorLayer } from \"@/interfaces/IMapConfig\";\r\nimport { UtilsService } from \"./utilsService\";\r\n\r\nexport class ConfigService {\r\n private static instance: ConfigService;\r\n public config: IConfig;\r\n public metadata: {en: IMetadata[], lo: IMetadata[]};\r\n public defaultThematic: string;\r\n public provinces: Feature[] = [];\r\n public districts: Feature[] = [];\r\n \r\n /**\r\n * Filter dataset layers for mobile\r\n * @returns\r\n */\r\n private static filterDatasetLayerForMobile(dataset: IDataset): IDataset | null {\r\n if (dataset && dataset.layers) {\r\n dataset.layers = dataset.layers.filter ( (layer: any | IVectorLayer) => layer.enabledOnMobile);\r\n return dataset.layers.length ? dataset : null;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Get config filtered on thematic\r\n * @param config\r\n * @param thematic\r\n * @returns\r\n */\r\n private getFilterdConfigOnThematic(\r\n config: IConfig,\r\n thematic: string\r\n ): IConfig {\r\n const filteredConfig: IConfig = JSON.parse(JSON.stringify(config));\r\n const isMobileScreen: boolean = UtilsService.getInstance().isMobileScreen();\r\n\r\n if (config.thematics && config.thematics.length) {\r\n //1) If thematic, check if it exists in the config\r\n let thematicExists = false;\r\n if (thematic) {\r\n config.thematics.forEach((oneConfThematic: IThematicConfig) => {\r\n if (thematic === oneConfThematic.id) {\r\n thematicExists = true;\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n //2) If no thematic, get default thematic from config\r\n else if (!thematicExists || !thematic) {\r\n config.thematics.forEach((oneConfThematic: IThematicConfig) => {\r\n if (oneConfThematic.isDefault) {\r\n thematic = oneConfThematic.id;\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n //If no default thematic, take the first\r\n if (!thematicExists || !thematic) {\r\n thematic = config.thematics[0].id;\r\n }\r\n\r\n this.defaultThematic = thematic;\r\n\r\n //Filter config on thematic\r\n\r\n filteredConfig.map.datasets = {};\r\n\r\n if (isMobileScreen) {\r\n const ds: IDataset = ConfigService.filterDatasetLayerForMobile(config.map.datasets.A1);\r\n\r\n if (ds) {\r\n filteredConfig.map.datasets.A1 = ds;\r\n }\r\n }\r\n else if (config.map.datasets.A1.thematics.indexOf(thematic) > -1) {\r\n filteredConfig.map.datasets.A1 = config.map.datasets.A1;\r\n }\r\n\r\n if (isMobileScreen) {\r\n const ds: IDataset = ConfigService.filterDatasetLayerForMobile(config.map.datasets.A2);\r\n\r\n if (ds) {\r\n filteredConfig.map.datasets.A2 = ds;\r\n }\r\n }\r\n else if (config.map.datasets.A2.thematics.indexOf(thematic) > -1) {\r\n filteredConfig.map.datasets.A2 = config.map.datasets.A2;\r\n }\r\n\r\n if (isMobileScreen) {\r\n const ds: IDataset = ConfigService.filterDatasetLayerForMobile(config.map.datasets.A3);\r\n\r\n if (ds) {\r\n filteredConfig.map.datasets.A3 = ds;\r\n }\r\n }\r\n else if (config.map.datasets.A3.thematics.indexOf(thematic) > -1) {\r\n filteredConfig.map.datasets.A3 = config.map.datasets.A3;\r\n }\r\n\r\n if (isMobileScreen) {\r\n const ds: IDataset = ConfigService.filterDatasetLayerForMobile(config.map.datasets.A4);\r\n\r\n if (ds) {\r\n filteredConfig.map.datasets.A4 = ds;\r\n }\r\n }\r\n else if (config.map.datasets.A4.thematics.indexOf(thematic) > -1) {\r\n filteredConfig.map.datasets.A4 = config.map.datasets.A4;\r\n }\r\n\r\n if (isMobileScreen) {\r\n const ds: IDataset = ConfigService.filterDatasetLayerForMobile(config.map.datasets.A5);\r\n\r\n if (ds) {\r\n filteredConfig.map.datasets.A5 = ds;\r\n }\r\n }\r\n else if (config.map.datasets.A5.thematics.indexOf(thematic) > -1) {\r\n filteredConfig.map.datasets.A5 = config.map.datasets.A5;\r\n }\r\n\r\n if (isMobileScreen) {\r\n const ds: IDataset = ConfigService.filterDatasetLayerForMobile(config.map.datasets.A6);\r\n\r\n if (ds) {\r\n filteredConfig.map.datasets.A6 = ds;\r\n }\r\n }\r\n else if (config.map.datasets.A6.thematics.indexOf(thematic) > -1) {\r\n filteredConfig.map.datasets.A6 = config.map.datasets.A6;\r\n } \r\n\r\n if (isMobileScreen) {\r\n const ds: IDataset = ConfigService.filterDatasetLayerForMobile(config.map.datasets.A7);\r\n\r\n if (ds) {\r\n filteredConfig.map.datasets.A7 = ds;\r\n }\r\n }\r\n else if (config.map.datasets.A7.thematics.indexOf(thematic) > -1) {\r\n filteredConfig.map.datasets.A7 = config.map.datasets.A7;\r\n }\r\n }\r\n\r\n return filteredConfig;\r\n }\r\n\r\n /**\r\n * Load config\r\n * @param thematic\r\n * @returns\r\n */\r\n public async loadConfig(thematic: string): Promise {\r\n return new Promise((resolve, reject) => {\r\n fetch(`./config/config.json?date=${new Date().getTime()}`)\r\n .then(res => res.json())\r\n .then(\r\n conf => {\r\n this.config = this.getFilterdConfigOnThematic(conf, thematic);\r\n ConfigService.loadMetadata()\r\n .then((metadata: {en: IMetadata[], lo: IMetadata[]}) => {\r\n this.metadata = metadata;\r\n resolve(this.config);\r\n })\r\n .catch((err: any) => {\r\n resolve(this.config);\r\n });\r\n },\r\n (err: any) => {\r\n reject(err);\r\n }\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * Load metadata\r\n * @returns\r\n */\r\n public static async loadMetadata(): Promise<{en: IMetadata[], lo: IMetadata[]}> {\r\n if (ConfigService.getInstance().metadata) {\r\n return ConfigService.getInstance().metadata;\r\n }\r\n\r\n const res: {en: IMetadata[], lo: IMetadata[]} = {en: [], lo: []};\r\n\r\n return new Promise((resolve, reject) => {\r\n QueryService.queryFeatures(\r\n QueryService.createFeatureRequest([\"laos_A1:metadata\"])\r\n ).then((features: any[]) => {\r\n if (features) {\r\n features.forEach((feat: Feature) => {\r\n const metadata: IMetadata = feat.getProperties() as IMetadata;\r\n const lang: string = feat.getProperties().lang;\r\n\r\n if (lang === 'en') {\r\n res.en.push(metadata);\r\n } else if (lang === 'lo') {\r\n res.lo.push(metadata);\r\n }\r\n });\r\n \r\n resolve(res);\r\n } else {\r\n resolve([]);\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Get config service instance\r\n */\r\n public static getInstance(): ConfigService {\r\n if (!ConfigService.instance) {\r\n ConfigService.instance = new ConfigService();\r\n }\r\n\r\n return ConfigService.instance;\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"locale-switcher\"},[_c('md-speed-dial',{attrs:{\"md-direction\":\"bottom\",\"md-event\":\"click\"}},[_c('md-speed-dial-target',[_c('img',{staticClass:\"flagIcon englishIcon\",attrs:{\"src\":_vm.getSelectedIcon()}})]),_c('md-speed-dial-content',[_c('md-button',{staticClass:\"listBtn\",on:{\"click\":function($event){return _vm.switchLanguage('en')}}},[_c('img',{staticClass:\"flagIcon englishIcon\",attrs:{\"src\":require(\"@/assets/flags/en.png\")}}),_vm._v(\" \"),_c('span',[_vm._v(\"English\")])]),_c('md-button',{staticClass:\"listBtn\",on:{\"click\":function($event){return _vm.switchLanguage('lo')}}},[_c('img',{staticClass:\"flagIcon englishIcon\",attrs:{\"src\":require(\"@/assets/flags/lo.png\")}}),_vm._v(\" \"),_c('span',[_vm._v(\"ລາວ\")])])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { bus } from \"../../../main\";\r\n\r\n@Component\r\nexport default class LocaleSwitcher extends Vue {\r\n private selectedLanguage = \"en\";\r\n private localStorage = window.localStorage;\r\n\r\n private created(): void { \r\n const storedLang: string = this.localStorage.getItem('laos_dalam_lang');\r\n \r\n if(storedLang) {\r\n this.switchLanguage(storedLang);\r\n } else {\r\n let userLang: string = navigator.language || (navigator as any).userLanguage;\r\n\r\n if(userLang) {\r\n userLang = userLang.split('-')[0];\r\n\r\n if(userLang === 'en' || userLang === 'lo') {\r\n this.switchLanguage(userLang);\r\n }\r\n }\r\n } \r\n }\r\n\r\n /**\r\n * Get selected icon\r\n */\r\n private getSelectedIcon(): string {\r\n return require(`@/assets/flags/${this.selectedLanguage}.png`);\r\n }\r\n\r\n /**\r\n * Switch language\r\n */\r\n private switchLanguage(lang: string): void {\r\n this.selectedLanguage = lang;\r\n this.$i18n.locale = lang;\r\n this.localStorage.setItem('laos_dalam_lang', lang);\r\n bus.$emit(\"set_laos_dalam_lang\");\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSwitcher.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSwitcher.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=abfa30d6&scoped=true&\"\nimport script from \"./LocaleSwitcher.vue?vue&type=script&lang=ts&\"\nexport * from \"./LocaleSwitcher.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?vue&type=style&index=0&id=abfa30d6&lang=scss&scoped=true&\"\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 \"abfa30d6\",\n null\n \n)\n\nexport default component.exports","\n\n\n\r\nimport { Component, Watch, Vue } from \"vue-property-decorator\";\r\nimport ArxTools from \"@/components/Header/ArxTools/ArxTools.vue\";\r\nimport { Route } from \"vue-router\";\r\nimport { ConfigService } from \"../../services/configService\";\r\nimport LocaleSwitcher from \"@/components/Header/LocaleSwitcher/LocaleSwitcher.vue\";\r\nimport { IThematicConfig } from \"@/interfaces/IThematicConfig\";\r\n\r\n@Component({\r\n components: {\r\n ArxTools, LocaleSwitcher\r\n }\r\n})\r\nexport default class Header extends Vue {\r\n private thematicLabel: string | string[] = \"\";\r\n private responsiveMenuVisible = false;\r\n private arxToolsVisible = false;\r\n private thematicLabelVisible = false;\r\n\r\n @Watch(\"$route\", { immediate: true, deep: true })\r\n onUrlChange(newRoute: Route) {\r\n this.arxToolsVisible = newRoute.name && (newRoute.name === \"MapWithParam\" || newRoute.name === \"MapWithLatLngParam\");\r\n this.thematicLabelVisible =\r\n newRoute.name &&\r\n (newRoute.name === \"MapWithParam\" ||\r\n newRoute.name === \"ThematicWithParam\");\r\n this.thematicLabel = this.findThematic(newRoute.params.thematic);\r\n this.handleMenuVisibility();\r\n }\r\n\r\n private mounted(): void {\r\n this.thematicLabel = this.findThematic(ConfigService.getInstance().defaultThematic);\r\n // this.$router.push({ name: \"Home\" });\r\n\r\n this.handleMenuVisibility();\r\n\r\n window.onresize = () => {\r\n this.handleMenuVisibility();\r\n };\r\n }\r\n\r\n private findThematic(id: string): string {\r\n const themConfig: IThematicConfig = ConfigService.getInstance().config.thematics.find( (t: IThematicConfig) => t.id === id);\r\n return themConfig ? this.$t(themConfig.label).toString() : id;\r\n }\r\n\r\n /**\r\n * Handle responsive menu visibility\r\n */\r\n private handleMenuVisibility(): void {\r\n this.responsiveMenuVisible = !(window.innerWidth <= 600);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=6fea5592&scoped=true&\"\nimport script from \"./Header.vue?vue&type=script&lang=ts&\"\nexport * from \"./Header.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?vue&type=style&index=0&id=6fea5592&lang=scss&scoped=true&\"\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 \"6fea5592\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('md-card',{staticClass:\"arxSideBar hidden\",attrs:{\"id\":\"arxSideBar\"}},[_c('md-card-header',[_c('div',{staticClass:\"md-title\"},[_vm._v(\" \"+_vm._s(_vm.$t('translate.' + _vm.state.currentTool))+\" \"),((_vm.state.currentTool !== _vm.STATISTICS && _vm.isMobileScreen) || !_vm.isMobileScreen)?_c('div',{staticClass:\"headerIconContainer md-elevation-3\"},[(_vm.state.currentTool === _vm.LAYERS)?_c('span',{staticClass:\"headerIcon material-icons\"},[_vm._v(\"layers\")]):_vm._e(),(_vm.state.currentTool === _vm.MAP_COMPARISON)?_c('span',{staticClass:\"headerIcon material-icons\"},[_vm._v(\"compare\")]):_vm._e(),(_vm.state.currentTool === _vm.STATISTICS)?_c('span',{staticClass:\"headerIcon material-icons\"},[_vm._v(\"bar_chart\")]):_vm._e()]):_vm._e(),_c('div',{staticClass:\"headerBackIcon\",on:{\"click\":_vm.onCloseSideBar}},[_c('span',{staticClass:\"material-icons\"},[_vm._v(\"east\")])])])]),_c('md-card-content',{staticClass:\"arxSideBarContent\"},[(_vm.state.currentTool == _vm.LAYERS)?_c('Layers'):_vm._e(),(_vm.state.currentTool == _vm.MAP_COMPARISON)?_c('MapComparison',{ref:\"mapComparisonWidget\"}):_vm._e(),(_vm.state.currentTool == _vm.STATISTICS)?_c('Statistics'):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('md-content',{staticClass:\"layers\"},[_vm._l((7),function(i){return [(!_vm.isMobileScreen && _vm.datasets[i - 1])?_c('ExpandableCard',[_c('span',{attrs:{\"slot\":\"cardTitle\"},slot:\"cardTitle\"},[_vm._v(_vm._s(_vm.$t(_vm.datasets[i - 1].label)))]),_c('div',{attrs:{\"slot\":\"cardContent\"},slot:\"cardContent\"},[_vm._l((_vm.datasets[i - 1].layers),function(l,i){return [_c('MapLayer',{attrs:{\"layerConfig\":l}})]})],2)]):_vm._e(),(_vm.isMobileScreen && _vm.datasets[i - 1])?_c('div',[_vm._l((_vm.datasets[i - 1].layers),function(l,i){return [_c('MapLayer',{attrs:{\"layerConfig\":l}})]})],2):_vm._e()]})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('md-card',{staticClass:\"expandableCard\"},[_c('md-card-header',{},[_c('div',{staticClass:\"md-title\"},[_vm._t(\"cardTitle\"),_c('md-button',{ref:\"layerExpandBtn\",class:['md-icon-button expandBtn', _vm.isContentVisible ? 'expanded' : ''],on:{\"click\":_vm.onExpandBtnClick}},[_c('span',{staticClass:\"expandableCardExpandIcon material-icons\"},[_vm._v(\"keyboard_arrow_down\")])])],2)]),_c('div',{staticClass:\"expandableCardContent\",class:{ contentVisible: _vm.isContentVisible }},[_c('md-card-content',[_vm._t(\"cardContent\")],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\n\r\n@Component\r\nexport default class ExpandableCard extends Vue {\r\n private isContentVisible = false;\r\n\r\n @Prop({ default: false })\r\n expandOnOpen: boolean;\r\n\r\n /**\r\n * Component mounted\r\n */\r\n private mounted(): void {\r\n this.isContentVisible = this.expandOnOpen || false;\r\n }\r\n\r\n /**\r\n * On btn expand / collapse click\r\n */\r\n private onExpandBtnClick(event: any): void {\r\n this.isContentVisible = !this.isContentVisible;\r\n\r\n //Dispatch resize to fix time slider default value\r\n setTimeout(() => {\r\n window.dispatchEvent(new Event(\"resize\"));\r\n }, 200);\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExpandableCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExpandableCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=71a99d9c&scoped=true&\"\nimport script from \"./ExpandableCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./ExpandableCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?vue&type=style&index=0&id=71a99d9c&lang=scss&scoped=true&\"\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 \"71a99d9c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('md-card',{staticClass:\"mapLayer\"},[_c('md-card-header',[_c('div',{staticClass:\"md-title\"},[_c('span',{staticClass:\"layerLabel\"},[_vm._v(_vm._s(_vm.$t(_vm.layerConfig.label)))]),(!_vm.isSwipeLayer)?_c('div',{staticClass:\"setVisibleIcon\",on:{\"click\":_vm.setLayerVisibility}},[_c('span',{staticClass:\"layerVisibilityIcon material-icons\"},[_vm._v(_vm._s(_vm.layerVisible ? 'visibility' : 'visibility_off'))])]):_vm._e(),_c('md-button',{ref:\"layerExpandBtn\",class:['md-icon-button expandBtn', _vm.isContentVisible ? 'expanded' : ''],on:{\"click\":_vm.onExpandBtnClick}},[_c('span',{staticClass:\"layerExpandIcon material-icons\"},[_vm._v(\"keyboard_arrow_down\")])]),_c('div',{staticClass:\"downloadIconDiv\"},[(_vm.layerConfig.downloadable && _vm.layerVisible)?_c('md-button',{staticClass:\"downloadIcon md-icon-button\",attrs:{\"title\":_vm.$t('translate.downloadShape')},on:{\"click\":_vm.download}},[_c('span',{staticClass:\"layerExpandIcon material-icons\"},[_vm._v(\"file_download\")])]):_vm._e()],1),(_vm.layerVisible)?_c('div',{class:['opacityDiv', _vm.state.opacityExpanded ? 'expanded' : '']},[(_vm.state.opacityExpanded)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.layerOpacity),expression:\"layerOpacity\"}],attrs:{\"type\":\"range\",\"min\":\"0\",\"max\":\"100\",\"step\":\"1\"},domProps:{\"value\":(_vm.layerOpacity)},on:{\"input\":_vm.onOpacityChange,\"__r\":function($event){_vm.layerOpacity=$event.target.value}}}):_vm._e(),_c('md-button',{staticClass:\"md-icon-button\",attrs:{\"title\":_vm.$t('translate.setLayerOpacity')},on:{\"click\":function($event){_vm.state.opacityExpanded = !_vm.state.opacityExpanded}}},[_c('md-icon',[_vm._v(\"opacity\")])],1)],1):_vm._e()],1)]),_c('div',{staticClass:\"mapLayerContent\",class:{ contentVisible: _vm.isContentVisible },attrs:{\"id\":_vm.contentId}},[_c('md-tabs',{staticClass:\"md-primary\",attrs:{\"md-alignment\":\"centered\",\"md-active-tab\":_vm.state.firstSelectedTab}},[(_vm.layerConfig.filters)?_c('md-tab',{attrs:{\"id\":\"tab-filter\",\"md-label\":_vm.$t('translate.filter'),\"md-icon\":\"filter_alt\"}},[_c('div',{staticClass:\"tabContent filterContent\"},[_c('p',[_vm._l((_vm.state.filterValues),function(filter,i1){return [_c('p',{style:({ display: filter.values.length > 1 ? 'block' : 'none'})},[_c('label',[_vm._v(_vm._s(_vm.$t(filter.label)))]),(!filter.isYearFilter)?_c('select',{staticClass:\"filterSelect\",attrs:{\"name\":filter.label},on:{\"change\":function($event){return _vm.applyFilter(i1)}}},[_vm._l((filter.values),function(item,i2){return [(item.value === filter.defaultValue)?_c('option',{attrs:{\"selected\":\"\"},domProps:{\"value\":item.value}},[_vm._v(_vm._s(_vm.getTranslation(item.value)))]):_vm._e(),(item.value !== filter.defaultValue)?_c('option',{domProps:{\"value\":item.value}},[_vm._v(_vm._s(_vm.getTranslation(item.value)))]):_vm._e()]})],2):_vm._e(),(filter.isYearFilter)?_c('select',{staticClass:\"filterSelect\",on:{\"change\":function($event){return _vm.applyFilter(i1)}}},[_vm._l((_vm.state.yearsValues),function(item,i2){return [(item.value === filter.defaultValue)?_c('option',{attrs:{\"selected\":\"\"},domProps:{\"value\":item.value}},[_vm._v(_vm._s(_vm.getTranslation(item.label)))]):_vm._e(),(item.value !== filter.defaultValue)?_c('option',{domProps:{\"value\":item.value}},[_vm._v(_vm._s(_vm.getTranslation(item.label)))]):_vm._e()]})],2):_vm._e()])]})],2)])]):_vm._e(),_c('md-tab',{attrs:{\"id\":\"tab-legend\",\"md-label\":_vm.$t('translate.legend'),\"md-icon\":\"view_list\"}},[_c('div',{staticClass:\"tabContent\"},[(_vm.styles.length > 1)?_c('p',{staticClass:\"stylesDiv\"},[_c('span',[_vm._v(_vm._s(_vm.$t('translate.style')))]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedStyle),expression:\"selectedStyle\"}],staticClass:\"stylesSelect\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedStyle=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.setLayerStyle]}},[_vm._l((_vm.styles),function(item,i){return [_c('option',{domProps:{\"value\":item}},[_vm._v(_vm._s(_vm.getStyleTranslation(item)))])]})],2),_c('span',{staticClass:\"unitSpan\"},[_vm._v(_vm._s(_vm.state.currentUnit))])]):_vm._e(),_c('img',{attrs:{\"src\":_vm.legendUrl}})])]),_c('md-tab',{attrs:{\"id\":\"tab-metadata\",\"md-label\":_vm.$t('translate.metadata'),\"md-icon\":\"info\"}},[_c('div',{staticClass:\"tabContent\"},[(_vm.selectedLayerMetadata && _vm.selectedLayerMetadata.title)?_c('div',[_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.title'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.title))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.description'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.description))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.data_development_period'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.data_development_period))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.format'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.format))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.scale_or_resolution'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.scale_or_resolution))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.measurement_unit'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.measurement_unit))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.geographical'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.geographical))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.tempral_coverage'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.tempral_coverage))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.spatial_coverage'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.spatial_coverage))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.projection'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.projection))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.input_data_source'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.input_data_source))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.last_upload'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.last_upload))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.references_and_citation'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.references_and_citation))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.use_right'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.use_right))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.owners'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.owners))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.contact'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.contact))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.address'))+\":\")]),_c('span',[_vm._v(_vm._s(_vm.selectedLayerMetadata.address))]),_c('br'),_c('span',{staticClass:\"metadataTitleSpan\"},[_vm._v(_vm._s(_vm.$t('translate.meatadata.webpage'))+\":\")]),_c('a',{attrs:{\"href\":_vm.selectedLayerMetadata.webpage}},[_vm._v(_vm._s(_vm.selectedLayerMetadata.webpage))]),_c('br')]):_vm._e(),(!_vm.selectedLayerMetadata || !_vm.selectedLayerMetadata.title)?_c('div',[_vm._v(\" No metadata \")]):_vm._e()])])],1)],1),(_vm.state.rangeValues && _vm.layerVisible)?_c('TimeSlider',{ref:\"timeSlider\",attrs:{\"id\":_vm.contentId,\"slider\":_vm.state.rangeValues,\"filterIndex\":_vm.state.rangeFilterIndex},on:{\"hook:mounted\":_vm.handleTimeSliderMounted}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"timeSlider md-elevation-3\"},[(_vm.slider)?_c('VueSlideBar',{staticClass:\"slider\",attrs:{\"data\":_vm.slider.data,\"range\":_vm.slider.range,\"labelStyles\":{ color: '#1066FD', backgroundColor: '#4a4a4a' },\"processStyle\":{ backgroundColor: '#d8d8d8' }},on:{\"callbackRange\":_vm.callbackRange},scopedSlots:_vm._u([{key:\"tooltip\",fn:function(tooltip){return [_c('img',{attrs:{\"src\":require(\"@/assets/rectangle-slider.svg\")}})]}}],null,false,2337313283),model:{value:(_vm.state.currentValue),callback:function ($$v) {_vm.$set(_vm.state, \"currentValue\", $$v)},expression:\"state.currentValue\"}}):_vm._e(),_c('div',{staticClass:\"playDiv\",on:{\"click\":_vm.playOrPause}},[(!_vm.state.isPlaying)?_c('md-icon',{attrs:{\"title\":\"Play\"}},[_vm._v(\"play_circle_filled\")]):_vm._e(),(_vm.state.isPlaying)?_c('md-icon',{attrs:{\"title\":\"Pause\"}},[_vm._v(\"pause_circle\")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport VueSlideBar from \"vue-slide-bar\";\r\nimport { bus } from \"../../../main\";\r\n\r\n@Component({\r\n components: {\r\n VueSlideBar\r\n }\r\n})\r\nexport default class TimeSlider extends Vue {\r\n private state: any = {\r\n currentValue: 0,\r\n isPlaying: false\r\n };\r\n\r\n private timer: any;\r\n\r\n @Prop({ default: null })\r\n private id: string;\r\n\r\n @Prop({ default: null })\r\n private slider: any;\r\n\r\n @Prop({ default: null })\r\n private filterIndex: number;\r\n\r\n /**\r\n * Handle play pause\r\n */\r\n private playOrPause(): void {\r\n this.state.isPlaying = !this.state.isPlaying;\r\n const firstVal = this.slider.data[0];\r\n const lastVal = this.slider.data[this.slider.data.length - 1];\r\n\r\n if (this.state.isPlaying) {\r\n this.state.currentValue =\r\n this.state.currentValue === lastVal\r\n ? firstVal\r\n : this.slider.data[\r\n this.slider.data.indexOf(this.state.currentValue) + 1\r\n ];\r\n\r\n this.timer = setInterval(() => {\r\n this.state.currentValue = this.slider.data[\r\n this.slider.data.indexOf(this.state.currentValue) + 1\r\n ];\r\n\r\n if (this.state.currentValue === lastVal) {\r\n //Go to first position\r\n setTimeout(() => {\r\n this.state.currentValue = this.slider.data[0];\r\n }, 2000);\r\n }\r\n }, 2000);\r\n } else {\r\n clearInterval(this.timer);\r\n }\r\n }\r\n\r\n /**\r\n * Handle slider change\r\n */\r\n private callbackRange(val): void {\r\n const sliderVal: any = {\r\n value: isNaN(val.label)\r\n ? this.getStartYearFromRange(val.label)\r\n : val.label,\r\n filterIndex: this.filterIndex\r\n };\r\n bus.$emit(`arxRangeSliderValue_${this.id}`, sliderVal);\r\n }\r\n\r\n /**\r\n * Get start year from range\r\n */\r\n private getStartYearFromRange(str: string): number {\r\n const year: string = str && str.length > 3 ? str.substring(0, 4) : \"\";\r\n return !isNaN(Number(year)) ? Number(year) : -1;\r\n }\r\n\r\n /**\r\n * Set value\r\n */\r\n public setVal(val: number): void {\r\n if (Number(this.state.currentValue) !== val) {\r\n this.state.currentValue = val;\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeSlider.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeSlider.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=61ef9f12&\"\nimport script from \"./TimeSlider.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimeSlider.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?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\nexport default component.exports","import Overlay from \"ol/Overlay\";\r\nimport { MappingService } from \"./mappingService\";\r\nimport ArxMap from \"@/components/ArxMap/ArxMap.vue\";\r\n\r\nexport interface PopupElements {\r\n container: HTMLElement;\r\n title: HTMLElement;\r\n content: HTMLElement;\r\n prevNext: HTMLElement;\r\n closer: HTMLElement;\r\n overlay: Overlay;\r\n}\r\n\r\nexport class PopupService {\r\n private static instance: PopupService;\r\n private overlay: Overlay;\r\n public popupElements: PopupElements;\r\n public currentPopupFeatures: any[] = [];\r\n public currentPopupIndex = 0;\r\n private arxMap: ArxMap;\r\n\r\n /**\r\n * Get popup service instance\r\n */\r\n public static getInstance(): PopupService {\r\n if (!PopupService.instance) {\r\n PopupService.instance = new PopupService();\r\n }\r\n\r\n return PopupService.instance;\r\n }\r\n\r\n \r\n /**\r\n * Init locale\r\n */\r\n public initLocales(arxMap: ArxMap): void {\r\n if(PopupService.instance) {\r\n PopupService.instance.arxMap = arxMap;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Init popup\r\n */\r\n public initPopup(): void {\r\n //Elements that make up the popup.\r\n this.popupElements = {\r\n container: document.getElementById(\"popup\"),\r\n title: document.getElementById(\"popup-title\"),\r\n content: document.getElementById(\"popup-content\"),\r\n prevNext: document.getElementById(\"popup-prev-next\"),\r\n closer: document.getElementById(\"popup-closer\"),\r\n overlay: null\r\n };\r\n\r\n // Create an overlay to anchor the popup to the map.\r\n this.overlay = new Overlay({\r\n element: this.popupElements.container,\r\n autoPan: true,\r\n autoPanAnimation: {\r\n duration: 250\r\n }\r\n });\r\n\r\n // Add a click handler to hide the popup.\r\n this.popupElements.closer.onclick = () => {\r\n this.closePopup();\r\n return false;\r\n };\r\n\r\n this.popupElements.overlay = this.overlay;\r\n }\r\n\r\n /**\r\n * Close popup\r\n */\r\n public closePopup(): void {\r\n this.overlay.setPosition(undefined);\r\n this.popupElements.closer.blur();\r\n MappingService.getInstance().clearHighlights();\r\n }\r\n\r\n /**\r\n * Open popup\r\n * @param attributes\r\n * @param config\r\n * @param coordinates\r\n * @param relatedContent\r\n */\r\n public openPopup(attributes: any, config: any, coordinates: any, relatedContent = \"\") {\r\n let title = this.arxMap.$t(config.title);\r\n let content = \"\";\r\n\r\n for (const key in attributes) {\r\n if (title.toString().indexOf(`${key}`) > -1) {\r\n const titleValue = attributes[key] ? attributes[key] : \"-\";\r\n title = title.toString().replace(\"${\" + key + \"}\", titleValue);\r\n }\r\n }\r\n\r\n config.content.forEach((field: any) => {\r\n const value = attributes[field.propertyName]\r\n ? attributes[field.propertyName]\r\n : \"-\";\r\n content += `${this.arxMap.$t(field.label)}: ${value}
`;\r\n });\r\n\r\n content += `
`;\r\n content += `
`;\r\n\r\n this.popupElements.title.innerHTML = title.toString()\r\n .split(\"$\")\r\n .join(\"\")\r\n .split(\"{\")\r\n .join(\"\")\r\n .split(\"}\")\r\n .join(\"\");\r\n\r\n if(relatedContent) {\r\n content += `${this.arxMap.$t('translate.relatedItems')}`;\r\n content += `
`;\r\n content += `
`;\r\n content += relatedContent;\r\n }\r\n\r\n this.popupElements.content.innerHTML = content;\r\n this.popupElements.overlay.setPosition(coordinates);\r\n\r\n if (this.currentPopupFeatures.length > 1) {\r\n this.popupElements.prevNext.classList.remove(\"hidden\");\r\n } else {\r\n this.popupElements.prevNext.classList.add(\"hidden\");\r\n }\r\n }\r\n\r\n /**\r\n *\r\n */\r\n public reinitializeState(): void {\r\n this.currentPopupFeatures = [];\r\n this.currentPopupIndex = 0;\r\n }\r\n}\r\n","import \"ol/ol.css\";\r\nimport * as olControl from \"ol/control\";\r\nimport Map from \"ol/Map\";\r\nimport OSM from \"ol/source/OSM\";\r\nimport { Tile as TileLayer, Vector as VectorLayer } from \"ol/layer\";\r\nimport TileWMS from \"ol/source/TileWMS\";\r\nimport VectorSource from \"ol/source/Vector\";\r\nimport View from \"ol/View\";\r\nimport Feature from \"ol/Feature\";\r\nimport { getCenter } from \"ol/extent\";\r\nimport { boundingExtent } from 'ol/extent';\r\nimport { getRenderPixel } from \"ol/render\";\r\nimport Stroke from \"ol/style/Stroke\";\r\nimport Style from \"ol/style/Style\";\r\nimport \"ol/ol.css\";\r\nimport { IMapConfig, IStatistics, IVectorLayer } from \"../interfaces/IMapConfig\";\r\nimport { ConfigService } from \"./configService\";\r\nimport { PopupService } from \"./popupService\";\r\nimport { QueryService } from \"./queryService\";\r\nimport { UtilsService } from \"./utilsService\";\r\nimport { bus } from \"../main\";\r\n\r\n//import Tile from 'ol/Tile';\r\n\r\nexport class MappingService {\r\n private static instance: MappingService;\r\n private mapConfig: IMapConfig;\r\n private map: Map;\r\n private view: View;\r\n private mapLayers: any = {};\r\n private highlightLayer: VectorLayer;\r\n\r\n public static swipeLayerName = \"swipeLayer\";\r\n public swipeValue: number;\r\n\r\n /**\r\n * Check\r\n */\r\n private checkIsMobileDevice(): boolean {\r\n return innerWidth <= 600;\r\n }\r\n\r\n private static createRelatedContent(relatedFeatures: Feature[], config:any): string {\r\n let content = \"\";\r\n relatedFeatures.forEach( (feat: Feature, i: number) => {\r\n if (content) {\r\n content += `
`;\r\n }\r\n content += `_______ ${i + 1} _______`;\r\n content += `
`;\r\n\r\n const props = feat.getProperties();\r\n \r\n config.fields.forEach( (field: {label: string, propertyName: string}, i: number) => {\r\n content += `${field.label}: ${props[field.propertyName]}`;\r\n content += i < config.fields.length - 1 ? `
` : '';\r\n });\r\n });\r\n\r\n return `
${content}
`;\r\n }\r\n\r\n /**\r\n * Init view\r\n */\r\n private initView(): void {\r\n const isMobileDevice: boolean = this.checkIsMobileDevice();\r\n\r\n this.view = new View({\r\n zoom: isMobileDevice ? this.mapConfig.zoom -1 : this.mapConfig.zoom,\r\n maxZoom: this.mapConfig.maxZoom,\r\n minZoom: this.mapConfig.minZoom,\r\n center: this.mapConfig.center,\r\n constrainResolution: this.mapConfig.constrainResolution,\r\n projection: this.mapConfig.projection\r\n });\r\n\r\n /*this.view.on(\"change:center\", () => {\r\n this.setCanvasTransform();\r\n });*/\r\n }\r\n\r\n /**\r\n * Init Highlight layer\r\n */\r\n private initHighlightLayer(): void {\r\n const highlightStyle = new Style({\r\n /*fill: new Fill({\r\n color: 'rgba(255,255,255,0.7)',\r\n }),*/\r\n stroke: new Stroke({\r\n color: \"#3399CC\",\r\n width: 3\r\n })\r\n });\r\n\r\n this.highlightLayer = new VectorLayer({\r\n source: new VectorSource(),\r\n style: highlightStyle,\r\n map: this.map\r\n });\r\n }\r\n\r\n /**\r\n * Get basemap layers\r\n */\r\n private getBasemapLayers(): TileLayer[] {\r\n return [\r\n new TileLayer({\r\n source: new OSM()\r\n })\r\n ];\r\n }\r\n\r\n /**\r\n * Get layers\r\n */\r\n private getLayers(): TileLayer[] {\r\n return this.getA1Layers()\r\n .reverse()\r\n .concat(this.getA2Layers().reverse())\r\n .concat(this.getA3Layers().reverse())\r\n .concat(this.getA4Layers().reverse())\r\n .concat(this.getA5Layers().reverse())\r\n .concat(this.getA6Layers().reverse())\r\n .concat(this.getA7Layers().reverse())\r\n .concat(this.getA8Layers().reverse());\r\n }\r\n\r\n /**\r\n * Create vector layer\r\n * @param layerConfig\r\n * @returns\r\n */\r\n private createVectorLayer(layerConfig: IVectorLayer): TileLayer {\r\n const params: any = {\r\n LAYERS: layerConfig.name,\r\n TILED: layerConfig.tiled\r\n };\r\n\r\n //When viewparams\r\n if (layerConfig.viewparams) {\r\n params.viewparams = layerConfig.viewparams;\r\n }\r\n\r\n const source: TileWMS = new TileWMS({\r\n url: ConfigService.getInstance().config.map.WMSBaseURL,\r\n params: params,\r\n serverType: \"geoserver\",\r\n transition: 0\r\n });\r\n\r\n const layer = new TileLayer({\r\n source: source\r\n });\r\n\r\n layer.setVisible(layerConfig.visible);\r\n layer.setOpacity(layerConfig.opacity);\r\n\r\n //this.makeWorkaroundCanvasTransform(source);\r\n return layer;\r\n }\r\n\r\n /**\r\n * Get A1 layers\r\n */\r\n private getA1Layers(): TileLayer[] {\r\n const layers: TileLayer[] = [];\r\n\r\n if (ConfigService.getInstance().config.map.datasets.A1) {\r\n ConfigService.getInstance().config.map.datasets.A1.layers.forEach(\r\n (layerConfig: IVectorLayer) => {\r\n const layer = this.createVectorLayer(layerConfig);\r\n layers.push(layer);\r\n this.mapLayers[layerConfig.name] = {\r\n layer: layer,\r\n config: layerConfig\r\n };\r\n }\r\n );\r\n }\r\n\r\n return layers;\r\n }\r\n\r\n /**\r\n * Get A2 layers\r\n */\r\n private getA2Layers(): TileLayer[] {\r\n const layers: TileLayer[] = [];\r\n if (ConfigService.getInstance().config.map.datasets.A2) {\r\n ConfigService.getInstance().config.map.datasets.A2.layers.forEach(\r\n (layerConfig: IVectorLayer) => {\r\n const layer = this.createVectorLayer(layerConfig);\r\n layers.push(layer);\r\n this.mapLayers[layerConfig.name] = {\r\n layer: layer,\r\n config: layerConfig\r\n };\r\n }\r\n );\r\n }\r\n\r\n return layers;\r\n }\r\n\r\n /**\r\n * Get A3 layers\r\n */\r\n private getA3Layers(): TileLayer[] {\r\n const layers: TileLayer[] = [];\r\n\r\n if (ConfigService.getInstance().config.map.datasets.A3) {\r\n ConfigService.getInstance().config.map.datasets.A3.layers.forEach(\r\n (layerConfig: IVectorLayer) => {\r\n const layer = this.createVectorLayer(layerConfig);\r\n layers.push(layer);\r\n this.mapLayers[layerConfig.name] = {\r\n layer: layer,\r\n config: layerConfig\r\n };\r\n }\r\n );\r\n }\r\n\r\n return layers;\r\n }\r\n\r\n /**\r\n * Get A4 layers\r\n */\r\n private getA4Layers(): TileLayer[] {\r\n const layers: TileLayer[] = [];\r\n\r\n if (ConfigService.getInstance().config.map.datasets.A4) {\r\n ConfigService.getInstance().config.map.datasets.A4.layers.forEach(\r\n (layerConfig: IVectorLayer) => {\r\n const layer = this.createVectorLayer(layerConfig);\r\n layers.push(layer);\r\n this.mapLayers[layerConfig.name] = {\r\n layer: layer,\r\n config: layerConfig\r\n };\r\n }\r\n );\r\n }\r\n\r\n return layers;\r\n }\r\n\r\n /**\r\n * Get A5 layers\r\n */\r\n private getA5Layers(): TileLayer[] {\r\n const layers: TileLayer[] = [];\r\n\r\n if (ConfigService.getInstance().config.map.datasets.A5) {\r\n ConfigService.getInstance().config.map.datasets.A5.layers.forEach(\r\n (layerConfig: IVectorLayer) => {\r\n const layer = this.createVectorLayer(layerConfig);\r\n layers.push(layer);\r\n this.mapLayers[layerConfig.name] = {\r\n layer: layer,\r\n config: layerConfig\r\n };\r\n }\r\n );\r\n }\r\n\r\n return layers;\r\n }\r\n\r\n /**\r\n * Get A6 layers\r\n */\r\n private getA6Layers(): TileLayer[] {\r\n const layers: TileLayer[] = [];\r\n\r\n if (ConfigService.getInstance().config.map.datasets.A6) {\r\n ConfigService.getInstance().config.map.datasets.A6.layers.forEach(\r\n (layerConfig: IVectorLayer) => {\r\n const layer = this.createVectorLayer(layerConfig);\r\n layers.push(layer);\r\n this.mapLayers[layerConfig.name] = {\r\n layer: layer,\r\n config: layerConfig\r\n };\r\n }\r\n );\r\n }\r\n\r\n return layers;\r\n }\r\n\r\n /**\r\n * Get A7 layers\r\n */\r\n private getA7Layers(): TileLayer[] {\r\n const layers: TileLayer[] = [];\r\n\r\n if (ConfigService.getInstance().config.map.datasets.A7) {\r\n ConfigService.getInstance().config.map.datasets.A7.layers.forEach(\r\n (layerConfig: IVectorLayer) => {\r\n const layer = this.createVectorLayer(layerConfig);\r\n layers.push(layer);\r\n this.mapLayers[layerConfig.name] = {\r\n layer: layer,\r\n config: layerConfig\r\n };\r\n }\r\n );\r\n }\r\n\r\n return layers;\r\n }\r\n\r\n /**\r\n * Get A8 layers\r\n */\r\n private getA8Layers(): TileLayer[] {\r\n const layers: TileLayer[] = [];\r\n\r\n if (ConfigService.getInstance().config.map.datasets.A8) {\r\n ConfigService.getInstance().config.map.datasets.A8.layers.forEach(\r\n (layerConfig: IVectorLayer) => {\r\n const layer = this.createVectorLayer(layerConfig);\r\n layers.push(layer);\r\n this.mapLayers[layerConfig.name] = {\r\n layer: layer,\r\n config: layerConfig\r\n };\r\n }\r\n );\r\n }\r\n\r\n return layers;\r\n }\r\n\r\n /**\r\n * Get A1 layers\r\n */\r\n private intStatsLayers(): VectorLayer[] {\r\n const provincesLayer : VectorLayer = new VectorLayer({\r\n source: new VectorSource(),\r\n map: this.map,\r\n visible: false\r\n });\r\n\r\n this.mapLayers.provincesStats = {\r\n layer: provincesLayer,\r\n config: ConfigService.getInstance().config.map.provincesLayer,\r\n map: this.map\r\n };\r\n\r\n const districtsLayer: VectorLayer = new VectorLayer({\r\n source: new VectorSource(),\r\n map: this.map,\r\n visible: false\r\n });\r\n\r\n this.mapLayers.districtsStats = {\r\n layer: districtsLayer,\r\n config: ConfigService.getInstance().config.map.provincesLayer,\r\n map: this.map\r\n };\r\n\r\n return [provincesLayer, districtsLayer];\r\n }\r\n\r\n /**\r\n * Handle map click event\r\n \r\n private setCanvasTransform(): void {\r\n const mapContainer = document.getElementById(\"mapContainer\");\r\n\r\n if (mapContainer) {\r\n const canvasList = mapContainer.querySelectorAll(\"canvas\");\r\n\r\n if (canvasList && canvasList.length > 0) {\r\n canvasList.forEach(canvas => {\r\n canvas.style.transform = \"inherit\";\r\n });\r\n }\r\n }\r\n }*/\r\n\r\n /**\r\n * Make work around canvas transform\r\n * @param tileWMS\r\n \r\n private makeWorkaroundCanvasTransform(tileWMS: TileWMS): void {\r\n tileWMS.on(\"tileloadend\", () => {\r\n this.setCanvasTransform();\r\n });\r\n \r\n tileWMS.on(\"tileloadstart\", () => {\r\n this.setCanvasTransform();\r\n });\r\n\r\n window.onresize = () => {\r\n setTimeout(() => {\r\n this.setCanvasTransform();\r\n }, 200);\r\n };\r\n }*/\r\n\r\n /**\r\n * Handle Map events\r\n */\r\n private handleMapEvents(): void {\r\n this.map.on(\"pointermove\", e => {\r\n bus.$emit(\r\n \"ArxMapCoords\",\r\n `${e.coordinate[0].toFixed(2)}, ${e.coordinate[1].toFixed(2)}`\r\n );\r\n });\r\n\r\n this.map.on(\"singleclick\", evt => {\r\n PopupService.getInstance().closePopup();\r\n this.handlePopup(evt);\r\n });\r\n }\r\n\r\n /**\r\n * Handle popup\r\n * @param evt\r\n */\r\n private handlePopup(evt: any): void {\r\n const coordinates = evt.coordinate;\r\n const pixel = this.map.getEventPixel(evt.originalEvent);\r\n let popupHandled = false;\r\n PopupService.getInstance().reinitializeState();\r\n\r\n bus.$emit(\"ArxHidePopup\");\r\n\r\n //Remove existing highlight\r\n this.clearHighlights();\r\n\r\n this.map.forEachLayerAtPixel(pixel, e => {\r\n const layer: TileLayer = e as TileLayer;\r\n\r\n if (layer && layer.getSource() && layer.getSource() instanceof TileWMS) {\r\n const source: TileWMS = layer.getSource() as TileWMS;\r\n const params = source.getParams();\r\n\r\n if (params && params.LAYERS && this.mapLayers[params.LAYERS]) {\r\n const mapLayer = this.mapLayers[params.LAYERS];\r\n\r\n if (mapLayer && mapLayer.config) {\r\n const mapLayerConfig: IVectorLayer = mapLayer.config;\r\n const isMobileProvinceClick = UtilsService.getInstance().isMobileScreen() && mapLayerConfig.name === ConfigService.getInstance().config.map.provincesLayer.name;\r\n\r\n if (mapLayerConfig.popup) {\r\n PopupService.getInstance().currentPopupFeatures.push({\r\n source: source,\r\n config: mapLayer.config.popup,\r\n statsConfig: mapLayer.config.statistics,\r\n coordinates: coordinates\r\n });\r\n\r\n if (!popupHandled) {\r\n popupHandled = true;\r\n\r\n this.queryFeaturesForPopup(\r\n source,\r\n mapLayer.config.popup,\r\n coordinates,\r\n mapLayer.config.statistics,\r\n isMobileProvinceClick\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Show popup\r\n * @param feature\r\n * @param config\r\n * @param coordinates\r\n * @param relatedContent\r\n */\r\n private showPopup(feature: Feature, config: any, coordinates: any, relatedContent = \"\"): void {\r\n PopupService.getInstance().openPopup(\r\n feature.getProperties(),\r\n config,\r\n coordinates,\r\n relatedContent\r\n );\r\n }\r\n\r\n /**\r\n * Remove swipe layer\r\n */\r\n private removeSwipeLayer(): void {\r\n if (\r\n this.mapLayers[MappingService.swipeLayerName] &&\r\n this.mapLayers[MappingService.swipeLayerName].layer\r\n ) {\r\n this.map.removeLayer(this.mapLayers[MappingService.swipeLayerName].layer);\r\n this.mapLayers[MappingService.swipeLayerName] = null;\r\n }\r\n }\r\n\r\n /**\r\n * Handle popup coming from search\r\n * @param feature\r\n */\r\n private handlePopupFromSearch(feature: Feature): void {\r\n const layerName: string = feature\r\n .getId()\r\n .toString()\r\n .split(\".\")[0];\r\n\r\n //Get popup config\r\n let popupConfig: any = null;\r\n\r\n for (const key in this.mapLayers) {\r\n if (key === layerName || key.endsWith(`:${layerName}`)) {\r\n popupConfig = this.mapLayers[key].config.popup;\r\n break;\r\n }\r\n }\r\n\r\n if (popupConfig) {\r\n const extent = feature.getGeometry().getExtent();\r\n const center = getCenter(extent);\r\n this.showPopup(feature, popupConfig, center);\r\n }\r\n\r\n //Highlight feature\r\n this.highlightLayer.getSource().addFeature(feature);\r\n }\r\n\r\n /*mouseMoveFunction = (e) => {\r\n setTimeout(() => {\r\n this.setCanvasTransform();\r\n }, 100); \r\n }*/\r\n\r\n /**\r\n * Handle radar stats\r\n * @param feature\r\n * @param statsConfig\r\n */\r\n private handleRadarStats(feature: any, statsConfig: IStatistics): void {\r\n if (statsConfig && statsConfig.radarFields && statsConfig.radarFields.length) {\r\n bus.$emit(\r\n \"ArxShowRadarStats\",\r\n feature\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Init the map\r\n */\r\n public initMap(): void {\r\n this.map = null;\r\n\r\n //Init popup\r\n PopupService.getInstance().initPopup();\r\n\r\n //Init view\r\n this.initView();\r\n\r\n this.map = new Map({\r\n target: \"mapContainer\",\r\n controls: olControl.defaults({\r\n attribution: true,\r\n zoom: false\r\n }),\r\n layers: [],\r\n view: this.view,\r\n overlays: [PopupService.getInstance().popupElements.overlay]\r\n });\r\n\r\n this.initMapLayers();\r\n\r\n //Handle map events\r\n this.handleMapEvents();\r\n\r\n //Init highlight layer\r\n this.initHighlightLayer();\r\n\r\n if (UtilsService.getInstance().isMobileScreen()) {\r\n this.map.once('postrender', (event: any) => {\r\n this.zoomToPosition();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Zoom to a position\r\n */\r\n private zoomToPosition() {\r\n const provincesLayer: TileLayer = MappingService.getInstance().getLayerByName(ConfigService.getInstance().config.map.provincesLayer.name);\r\n \r\n if (provincesLayer && provincesLayer.getSource() && provincesLayer.getSource() instanceof TileWMS) {\r\n const source: TileWMS = provincesLayer.getSource() as TileWMS;\r\n\r\n if (source) {\r\n MappingService.getInstance().queryFeatureForMobile(source, [UtilsService.getInstance().lng, UtilsService.getInstance().lat]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Query feature for mobile\r\n * @param source\r\n * @param config\r\n * @param coordinates\r\n */\r\n private async queryFeatureForMobile(\r\n source: any,\r\n coordinates: any\r\n ): Promise {\r\n try {\r\n const features: Feature[] = await QueryService.queryWMS(this.view, source, coordinates);\r\n let extent = boundingExtent(this.mapConfig.mobileDefaultExtent);\r\n\r\n if (features && features.length) {\r\n const featExtent = features[0].getGeometry().getExtent();\r\n\r\n if (featExtent && featExtent.length > 3) {\r\n extent = [featExtent[1], featExtent[0], featExtent[3], featExtent[2]];\r\n }\r\n } else {\r\n bus.$emit(\r\n \"ArxMapShowMobileNotification\"\r\n );\r\n }\r\n \r\n MappingService.getInstance().view.fit(extent as any);\r\n \r\n return Promise.resolve();\r\n } catch(err) {\r\n return Promise.reject(err);\r\n }\r\n }\r\n\r\n /**\r\n * Init map layers\r\n */\r\n public initMapLayers(): void {\r\n this.getBasemapLayers()\r\n .concat(this.getLayers())\r\n .forEach((layer: TileLayer) => {\r\n this.map.addLayer(layer);\r\n })\r\n\r\n this.intStatsLayers();\r\n }\r\n\r\n /**\r\n * Zoom in / out\r\n * @param zoom\r\n */\r\n public zoom(zoom: number): void {\r\n const mapZoom: number = this.view.getZoom() || 0;\r\n\r\n if (\r\n mapZoom + zoom > ConfigService.getInstance().config.map.maxZoom ||\r\n mapZoom + zoom < ConfigService.getInstance().config.map.minZoom\r\n )\r\n return;\r\n\r\n this.view.animate({\r\n zoom: mapZoom + zoom,\r\n duration: 250\r\n });\r\n }\r\n\r\n /**\r\n * Zoom to initial view\r\n */\r\n public zoomInitialView(): void {\r\n this.view.animate({\r\n zoom: this.mapConfig.zoom,\r\n center: this.mapConfig.center,\r\n duration: 250\r\n });\r\n }\r\n\r\n /**\r\n * Set layer visibility\r\n * @param name\r\n * @param visible\r\n */\r\n public setLayerVisibility(name: string, visible: boolean): void {\r\n if (this.mapLayers[name] && this.mapLayers[name].layer)\r\n this.mapLayers[name].layer.setVisible(visible);\r\n }\r\n\r\n /**\r\n * Set layer opacity\r\n * @param name\r\n * @param opacity\r\n */\r\n public setLayerOpacity(name: string, opacity: number): void {\r\n if (this.mapLayers[name] && this.mapLayers[name].layer)\r\n this.mapLayers[name].layer.setOpacity(opacity);\r\n }\r\n\r\n /**\r\n * Set layer view params\r\n * @param name\r\n * @param filterStr\r\n */\r\n public setLayerViewparams(name: string, filterStr: string): void {\r\n if (this.mapLayers[name] && this.mapLayers[name].layer) {\r\n const layer: TileLayer = this.mapLayers[name].layer;\r\n\r\n if (layer) {\r\n const source: TileWMS = layer.getSource() as TileWMS;\r\n const params = source.getParams();\r\n params.viewparams = filterStr;\r\n source.updateParams(params);\r\n\r\n //Refresh the map\r\n source.refresh();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set layer view params\r\n * @param name\r\n * @param params\r\n */\r\n public setLayerParams(name: string, params: any[]): void {\r\n if (this.mapLayers[name]) {\r\n const layer: TileLayer = this.mapLayers[name].layer;\r\n\r\n if (layer) {\r\n const source: TileWMS = layer.getSource() as TileWMS;\r\n const layParams = source.getParams();\r\n\r\n params.forEach((oneParam: any) => {\r\n layParams[oneParam.param] = oneParam.value;\r\n });\r\n\r\n source.updateParams(layParams);\r\n\r\n //Refresh the map\r\n source.refresh();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get layer by name\r\n * @param name\r\n */\r\n public getLayerByName(name: string): TileLayer {\r\n return MappingService.getInstance().mapLayers ? MappingService.getInstance().mapLayers[name].layer : null;\r\n }\r\n\r\n /**\r\n * Get map layers\r\n */\r\n public getMapLayers(): any {\r\n return this.mapLayers;\r\n }\r\n\r\n /**\r\n * Get layer legend url\r\n * @param name\r\n */\r\n public getLayerLegend(name: string): string {\r\n if (this.mapLayers) {\r\n const layer: TileLayer = this.mapLayers[name].layer;\r\n const graphicUrl = (layer.getSource() as TileWMS).getLegendUrl(\r\n this.view.getResolution()\r\n );\r\n return graphicUrl || \"\";\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * Get layer styles\r\n * @param name\r\n */\r\n public getLayerStyles(\r\n name: string\r\n ): Promise<{ styles: string[]; defaultStyle: string }> {\r\n return new Promise<{ styles: string[]; defaultStyle: string }>(\r\n (resolve, reject) => {\r\n fetch(\r\n `${\r\n ConfigService.getInstance().config.map.WFSBaseURL\r\n }?request=GetStyles&layers=${name}&service=wms&version=1.1.1`,\r\n {\r\n method: \"GET\"\r\n }\r\n )\r\n .then(response => response.text())\r\n .then(str => new window.DOMParser().parseFromString(str, \"text/xml\"))\r\n .then(data => {\r\n const styles = [];\r\n\r\n if (data) {\r\n let defaultStyle: string;\r\n\r\n Array.from(data.getElementsByTagName(\"sld:UserStyle\")).forEach(\r\n userStyle => {\r\n const arr = Array.from(\r\n userStyle.getElementsByTagName(\"sld:Name\")\r\n );\r\n const styleName: string =\r\n arr && arr.length ? arr[0].innerHTML : null;\r\n const isDefaultArr = userStyle.getElementsByTagName(\r\n \"sld:IsDefault\"\r\n );\r\n\r\n if (isDefaultArr && isDefaultArr.length) {\r\n const isDefault = isDefaultArr[0].innerHTML;\r\n if (isDefault && Number(isDefault) === 1) {\r\n defaultStyle = styleName;\r\n }\r\n }\r\n\r\n if (styleName) {\r\n styles.push(styleName);\r\n }\r\n }\r\n );\r\n\r\n resolve({\r\n styles: styles\r\n .sort()\r\n .filter((val, i) => styles.indexOf(val) === i),\r\n defaultStyle: defaultStyle\r\n });\r\n }\r\n })\r\n .catch((err: any) => {\r\n resolve(null);\r\n });\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Handle swipe\r\n * @param swipeLayer\r\n */\r\n public handleSwipe(\r\n leftLayer: IVectorLayer | any,\r\n rightLayer: IVectorLayer | any\r\n ): void {\r\n // Hide other layers\r\n for (const name of Object.keys(this.mapLayers)) {\r\n this.setLayerVisibility(name, false);\r\n }\r\n\r\n // Show left map\r\n this.setLayerVisibility(leftLayer.name, true);\r\n\r\n // Add and show right map\r\n this.removeSwipeLayer();\r\n\r\n const swipeLayer: TileLayer = this.createVectorLayer(rightLayer);\r\n swipeLayer.setVisible(true);\r\n this.map.addLayer(swipeLayer);\r\n\r\n this.mapLayers[MappingService.swipeLayerName] = {\r\n layer: swipeLayer,\r\n config: rightLayer.layerConfig\r\n };\r\n\r\n this.initSwipe(swipeLayer);\r\n this.map.render();\r\n }\r\n\r\n /**\r\n * Init swipe\r\n * @param swipeLayer\r\n */\r\n public initSwipe(swipeLayer: TileLayer): void {\r\n swipeLayer.on(\"prerender\", event => {\r\n const ctx = event.context;\r\n const mapSize = this.map.getSize();\r\n const width = mapSize[0] * (this.swipeValue / 100);\r\n const tl = getRenderPixel(event, [width, 0]);\r\n const tr = getRenderPixel(event, [mapSize[0], 0]);\r\n const bl = getRenderPixel(event, [width, mapSize[1]]);\r\n const br = getRenderPixel(event, mapSize);\r\n\r\n ctx.save();\r\n ctx.beginPath();\r\n ctx.moveTo(tl[0], tl[1]);\r\n ctx.lineTo(bl[0], bl[1]);\r\n ctx.lineTo(br[0], br[1]);\r\n ctx.lineTo(tr[0], tr[1]);\r\n ctx.closePath();\r\n ctx.clip();\r\n });\r\n\r\n swipeLayer.on(\"postrender\", function(event) {\r\n const ctx = event.context;\r\n ctx.restore();\r\n });\r\n }\r\n\r\n /**\r\n * Set swipe value\r\n * @param val\r\n */\r\n public setSwipeValue(val: number): void {\r\n this.swipeValue = val;\r\n this.map.render();\r\n }\r\n\r\n /**\r\n * Cancel swipe\r\n */\r\n public cancelSwipe(): void {\r\n this.removeSwipeLayer();\r\n }\r\n\r\n /**\r\n * Get mapping service instance\r\n */\r\n public static getInstance(): MappingService {\r\n if (!MappingService.instance) {\r\n MappingService.instance = new MappingService();\r\n MappingService.instance.mapConfig = ConfigService.getInstance().config.map;\r\n\r\n bus.$on(\"ArxShowPopup\", (feature: Feature) => {\r\n this.getInstance().handlePopupFromSearch(feature);\r\n });\r\n }\r\n\r\n return MappingService.instance;\r\n }\r\n\r\n /**\r\n * Clear highlights\r\n */\r\n public clearHighlights(): void {\r\n this.highlightLayer.getSource().clear();\r\n }\r\n\r\n /**\r\n * Zoom to geometry\r\n * @param feature\r\n */\r\n public zoomToGeom(feature: Feature): void {\r\n this.view.fit(feature.getGeometry().getExtent(), {\r\n size: this.map.getSize()\r\n });\r\n }\r\n\r\n /**\r\n * Query feature for popup\r\n * @param source\r\n * @param config\r\n * @param coordinates\r\n */\r\n public async queryFeaturesForPopup(\r\n source: any,\r\n config: any,\r\n coordinates: any,\r\n statsConfig: IStatistics = null,\r\n isMobileProvinceClick = false\r\n ): Promise {\r\n try {\r\n const features: Feature[] = await QueryService.queryWMS(this.view, source, coordinates);\r\n let relatedContent = \"\";\r\n if (features && features.length) {\r\n if (config.relatedContent) {\r\n const filters = [{attribute: config.relatedContent.relationField, value: features[0].getProperties()[config.relatedContent.field]}];\r\n const relatedFeatures: Feature[] = await QueryService.queryFeatures(QueryService.createFeatureRequest([config.relatedContent.layer], null, filters));\r\n relatedContent = MappingService.createRelatedContent(relatedFeatures, config.relatedContent);\r\n }\r\n\r\n this.showPopup(features[0], config, coordinates, relatedContent);\r\n this.handleRadarStats(features[0], statsConfig);\r\n this.highlightLayer.getSource().clear();\r\n this.highlightLayer.getSource().addFeature(features[0]);\r\n\r\n if (isMobileProvinceClick) {\r\n const provinceId = features[0].getProperties()[ConfigService.getInstance().config.map.provincesLayer.idField];\r\n bus.$emit(\"ArxMobileProvinceClickForStats\", provinceId);\r\n }\r\n }\r\n\r\n return Promise.resolve();\r\n } catch(err) {\r\n return Promise.reject(err);\r\n }\r\n }\r\n}\r\n","\n\n\n\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport TimeSlider from \"../TimeSlider/TimeSlider.vue\";\r\nimport { MappingService } from \"../../../services/mappingService\";\r\nimport { QueryService } from \"../../../services/queryService\";\r\nimport { ConfigService } from \"../../../services/configService\";\r\nimport Feature from \"ol/Feature\";\r\nimport { bus } from \"../../../main\";\r\nimport { IMetadata } from \"../../../interfaces/IMetadata\";\r\n\r\n@Component({\r\n components: {\r\n TimeSlider\r\n }\r\n})\r\nexport default class MapLayer extends Vue {\r\n private layerVisible = false;\r\n private layerOpacity = 100;\r\n private legendUrl = \"\";\r\n private styles = [];\r\n private selectedStyle = \"\";\r\n private isContentVisible = false;\r\n private contentId = \"\";\r\n private layerMetadata: IMetadata[] = [];\r\n private selectedLayerMetadata: IMetadata = {};\r\n private currentLayerFilterAllValues: any;\r\n private metadataDependsOnStyle = false;\r\n\r\n private state: any = {\r\n filterValues: [],\r\n opacityExpanded: false,\r\n firstSelectedTab: \"tab-legend\",\r\n rangeValues: null,\r\n rangeFilterIndex: null,\r\n yearsValues: [],\r\n currentUnit: \"\"\r\n };\r\n\r\n @Prop({ default: null })\r\n layerConfig: any;\r\n\r\n @Prop({ default: false })\r\n isSwipeLayer: boolean;\r\n\r\n /**\r\n * Created\r\n */\r\n private created(): void {\r\n this.$watch(\"layerVisible\", () => {\r\n if (this.layerVisible && this.state.rangeValues) {\r\n document.body.classList.add(\"isTimeSliderVisible\");\r\n } else {\r\n document.body.classList.remove(\"isTimeSliderVisible\");\r\n }\r\n });\r\n\r\n //Watch locale change\r\n bus.$on(\"set_laos_dalam_lang\", () => {\r\n this.loadMetadata(this.$i18n.locale);\r\n });\r\n }\r\n\r\n /**\r\n * Component mounted\r\n */\r\n private mounted(): void {\r\n //Metadata\r\n this.loadMetadata(this.$i18n.locale);\r\n\r\n this.layerVisible = this.layerConfig.visible;\r\n this.layerOpacity = this.layerConfig.opacity * 100;\r\n this.isContentVisible = this.isSwipeLayer || false;\r\n this.legendUrl = MappingService.getInstance().getLayerLegend(\r\n this.layerConfig.name\r\n );\r\n MappingService.getInstance()\r\n .getLayerStyles(this.layerConfig.name)\r\n .then((res: { styles: string[]; defaultStyle: string }) => {\r\n if (res && res.styles.length) {\r\n this.styles = res.styles;\r\n this.selectedStyle = res.defaultStyle || this.styles[0];\r\n this.setLayerStyle();\r\n }\r\n });\r\n this.contentId = this.layerConfig.name.split(\":\").join(\"_\");\r\n\r\n if (this.layerConfig.filters && this.layerConfig.filters.length) {\r\n Vue.set(this.state, \"firstSelectedTab\", \"tab-filter\");\r\n\r\n //Get values from layer, if searchLayer property is defined\r\n if (this.layerConfig.searchLayer)\r\n this.queryLayer().then((features: any[]) => {\r\n this.initLayer(features);\r\n });\r\n else this.initLayer();\r\n }\r\n\r\n bus.$on(`arxRangeSliderValue_${this.contentId}`, (rangeInfos: any) => {\r\n const filterSelects = this.$el.querySelectorAll(\".filterSelect\");\r\n\r\n if (filterSelects.length > rangeInfos.filterIndex) {\r\n const select: HTMLSelectElement = filterSelects[\r\n rangeInfos.filterIndex\r\n ] as HTMLSelectElement;\r\n\r\n if (select.value !== rangeInfos.value) {\r\n select.value = rangeInfos.value;\r\n this.applyFilter(rangeInfos.filterIndex);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Load metadata\r\n */\r\n private loadMetadata(lang: string): void {\r\n this.layerMetadata = [];\r\n \r\n ConfigService.getInstance().metadata[lang].forEach((metadata: IMetadata) => {\r\n if (metadata.layer === this.layerConfig.name) {\r\n this.layerMetadata.push(metadata);\r\n\r\n if (metadata.style) {\r\n this.metadataDependsOnStyle = true;\r\n }\r\n }\r\n });\r\n\r\n if (this.layerMetadata && this.layerMetadata.length === 1) {\r\n this.selectedLayerMetadata = this.layerMetadata[0];\r\n }\r\n }\r\n\r\n /**\r\n * Get Translation\r\n */\r\n private getTranslation(label: string): string {\r\n if(label && isNaN(Number(label))) {\r\n let tr = label.indexOf('translate.common') === - 1 ? `translate.common.${label.toLowerCase()}` : label.toLowerCase();\r\n tr = tr.split(\"'\").join(\"_\").split(\"’\").join(\"_\").split(\"/\").join(\"_\");\r\n\r\n if(this.$te(tr)) {\r\n return this.$t(tr).toString();\r\n }\r\n }\r\n\r\n return label;\r\n }\r\n\r\n /**\r\n * Get Translation\r\n */\r\n private getStyleTranslation(label: string): string {\r\n let tr = `translate.styles.${label}`;\r\n tr = tr.split(\"'\").join(\"_\").split(\"’\").join(\"_\").split(\"/\").join(\"_\");\r\n \r\n if(this.$te(tr)) {\r\n return this.$t(tr).toString();\r\n } else {\r\n return label;\r\n }\r\n }\r\n\r\n /**\r\n * Init layer\r\n * @param features\r\n */\r\n private initLayer(features: any[] = null): void {\r\n this.setLayerFilter(features);\r\n setTimeout(() => {\r\n this.applyFilter(null);\r\n }, 200);\r\n }\r\n\r\n /**\r\n * Set layer metadata\r\n * @param params\r\n */\r\n private setLayerMetadata(params: any, style = \"\"): void {\r\n //Single metadata\r\n if (this.layerMetadata && this.layerMetadata.length === 1) {\r\n this.selectedLayerMetadata = this.layerMetadata[0];\r\n }\r\n\r\n //Metadata depends on style\r\n else if (style) {\r\n this.selectedLayerMetadata = this.layerMetadata.find(\r\n (layerMetadata: IMetadata) =>\r\n layerMetadata.style &&\r\n layerMetadata.style.toUpperCase().trim() === style.toUpperCase().trim()\r\n );\r\n }\r\n\r\n //Metadata depends on scenario / indicator\r\n else if (params && params.length) {\r\n const dimScenario: any = params.find(\r\n oneParam => oneParam.param === \"DIM_SCENARIO\"\r\n );\r\n const dimIndicator: any = params.find(\r\n oneParam => oneParam.param === \"DIM_INDICATOR\"\r\n );\r\n\r\n let metadata: IMetadata;\r\n\r\n this.layerMetadata.forEach((layerMetadata: IMetadata) => {\r\n if (!metadata) {\r\n //Scenario\r\n let isOK =\r\n layerMetadata.scenario &&\r\n dimScenario &&\r\n dimScenario.value &&\r\n dimScenario.value\r\n .toUpperCase()\r\n .indexOf(layerMetadata.scenario.toUpperCase()) === 0\r\n ? true\r\n : false;\r\n\r\n //Indicator\r\n if (isOK && layerMetadata.indicator) {\r\n const value: string = dimIndicator.value;\r\n const indicators: string[] = layerMetadata.indicator\r\n .split(\",\")\r\n .map(item => item.trim().toUpperCase());\r\n isOK = indicators.indexOf(value.toUpperCase()) !== -1;\r\n }\r\n\r\n if (isOK) {\r\n metadata = layerMetadata;\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n this.selectedLayerMetadata = metadata;\r\n }\r\n }\r\n\r\n /**\r\n * Set layer filers\r\n * @param features\r\n */\r\n private setLayerFilter(features: any[] = null): void {\r\n if (this.layerConfig.filters) {\r\n this.layerConfig.filters.forEach((filterConfig: any, i: number) => {\r\n const oneLayFilter: any = { ...filterConfig };\r\n\r\n switch (filterConfig.type) {\r\n case \"list\":\r\n case \"year\":\r\n oneLayFilter.values = this.getValuesFromList(filterConfig, i);\r\n\r\n if (filterConfig.type === \"year\") {\r\n oneLayFilter.isYearFilter = true;\r\n this.state.yearsValues = oneLayFilter.values;\r\n }\r\n break;\r\n\r\n case \"layer\":\r\n case \"layer_year_range\":\r\n oneLayFilter.values = this.getValuesFromLayer(\r\n filterConfig,\r\n features\r\n );\r\n //this.currentLayerFilterAllValues = oneLayFilter.values;\r\n\r\n if (filterConfig.type === \"layer_year_range\") {\r\n this.initA5Values(oneLayFilter, i);\r\n }\r\n\r\n break;\r\n }\r\n\r\n // Set labels\r\n //this.setFilterLabels(oneLayFilter);\r\n\r\n this.state.filterValues.push(oneLayFilter);\r\n });\r\n }\r\n }\r\n\r\n private setFilterLabels(oneLayFilter: any): void {\r\n if (oneLayFilter && oneLayFilter.values) {\r\n \r\n oneLayFilter.values.forEach((filterItem: any) => {\r\n if (\r\n filterItem &&\r\n filterItem.value &&\r\n isNaN(filterItem.value) &&\r\n this.$te(`translate.labels.${filterItem.value.toUpperCase()}`)\r\n ) {\r\n filterItem.label = this.$t(`translate.labels.${filterItem.value.toUpperCase()}`);\r\n }\r\n });\r\n\r\n oneLayFilter.values = oneLayFilter.values.sort((a, b) =>\r\n a.label > b.label ? 1 : -1\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * init A5 values\r\n * @param filterIndex\r\n */\r\n private initA5Values(oneLayFilter: any, filterIndex: number) {\r\n oneLayFilter.isYearFilter = true;\r\n this.state.rangeValues = {\r\n value: this.getStartYearFromRange(oneLayFilter.defaultValue),\r\n data: [],\r\n range: []\r\n };\r\n\r\n this.state.yearsValues = oneLayFilter.values.map((rangeItem: any) => {\r\n const startYear: number = this.getStartYearFromRange(rangeItem.value);\r\n\r\n if (startYear > -1) {\r\n this.state.rangeValues.range.push({ label: rangeItem.value });\r\n return { label: rangeItem.value, value: Number(startYear) };\r\n }\r\n });\r\n\r\n this.state.rangeFilterIndex = filterIndex;\r\n this.state.rangeValues = this.getRangesValuesA5(oneLayFilter);\r\n }\r\n\r\n /**\r\n * Handle A5 range years\r\n * @param filterIndex\r\n * @param minYear\r\n * @param maxYear\r\n */\r\n private handleA5RangeYears(\r\n oneLayFilter: any,\r\n filterIndex: number,\r\n minYear: string = null,\r\n maxYear: string = null\r\n ): void {\r\n //const oneLayFilter: any = {...this.layerConfig.filters[filterIndex]};\r\n //oneLayFilter.values = this.currentLayerFilterAllValues;\r\n oneLayFilter.isYearFilter = true;\r\n this.state.rangeValues = {\r\n value: this.getStartYearFromRange(oneLayFilter.defaultValue),\r\n data: [],\r\n range: []\r\n };\r\n\r\n /*const minStartYear: number = minYear ? this.getStartYearFromRange(minYear) : -1;\r\n const minEndYear: number = minYear ? this.getEndYearFromRange(minYear) : -1;\r\n\r\n const maxStartYear: number = maxYear ? this.getStartYearFromRange(maxYear) : -1;\r\n const maxEndYear: number = maxYear ? this.getEndYearFromRange(maxYear) : -1;*/\r\n\r\n this.state.yearsValues = this.currentLayerFilterAllValues.map(\r\n (rangeItem: any) => {\r\n const startYear: number = this.getStartYearFromRange(rangeItem.value);\r\n /*const endYear: number = this.getEndYearFromRange(rangeItem.value); \r\n let condition: boolean = startYear && startYear > -1;\r\n\r\n if(condition && minStartYear > - 1) {\r\n condition = condition && startYear >= minStartYear;\r\n }\r\n\r\n if(condition && minEndYear > - 1) {\r\n condition = condition && endYear >= minStartYear;\r\n }\r\n\r\n if(condition && maxStartYear > - 1) {\r\n condition = condition && startYear <= maxStartYear;\r\n }\r\n\r\n if(condition && maxEndYear > - 1) {\r\n condition = condition && endYear <= maxEndYear;\r\n }*/\r\n\r\n if (startYear > -1) {\r\n this.state.rangeValues.range.push({ label: rangeItem.value });\r\n return { label: rangeItem.value, value: Number(startYear) };\r\n }\r\n }\r\n );\r\n\r\n this.state.rangeFilterIndex = filterIndex;\r\n this.state.rangeValues = this.getRangesValuesA5(oneLayFilter);\r\n }\r\n\r\n /**\r\n * Get start year from range\r\n */\r\n private getStartYearFromRange(str: string): number {\r\n const year: string = str && str.length > 3 ? str.substring(0, 4) : \"\";\r\n return !isNaN(Number(year)) ? Number(year) : -1;\r\n }\r\n\r\n /**\r\n * Get end year from range\r\n */\r\n private getEndYearFromRange(str: string): number {\r\n const year: string = str && str.length > 8 ? str.substring(5, 9) : str;\r\n return !isNaN(Number(year)) ? Number(year) : -1;\r\n }\r\n\r\n /**\r\n * Get values from list\r\n * @param filterConfig\r\n * @param filterIndex\r\n */\r\n private getValuesFromList(filterConfig: any, filterIndex: number): any[] {\r\n if (\r\n (filterConfig.min && filterConfig.max) ||\r\n (filterConfig.minYear && filterConfig.maxYear)\r\n ) {\r\n const min = filterConfig.min || filterConfig.minYear;\r\n const max = filterConfig.max || filterConfig.maxYear;\r\n const step = filterConfig.step || filterConfig.stepYear;\r\n this.state.rangeValues = this.getRangesValues(\r\n min,\r\n max,\r\n step,\r\n filterConfig.defaultValue\r\n );\r\n this.state.rangeFilterIndex = filterIndex;\r\n\r\n return this.getRangeValueLabel(min, max, step);\r\n } else if (filterConfig.values) {\r\n return filterConfig.values;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n /**\r\n * Get values from list\r\n * @param min\r\n * @param max\r\n * @param step\r\n */\r\n private getRangeValueLabel(min: number, max: number, step: number): any[] {\r\n const vals: any = [];\r\n\r\n for (let count = min; count <= max; count += step) {\r\n vals.push({\r\n label: count,\r\n value: count,\r\n isHide: count > min && count % 5 > 0\r\n });\r\n }\r\n\r\n return vals;\r\n }\r\n\r\n /**\r\n * Get values from list\r\n * @param min\r\n * @param max\r\n * @param step\r\n * @param defaultValue\r\n */\r\n private getRangesValues(\r\n min: number,\r\n max: number,\r\n step: number,\r\n defaultValue: any\r\n ): any {\r\n let rangeVals: any = null;\r\n\r\n rangeVals = { value: defaultValue, data: [], range: [] };\r\n\r\n for (let count = min; count <= max; count += step) {\r\n rangeVals.data.push(count);\r\n rangeVals.range.push({\r\n label: count,\r\n isHide: count > min && count % 5 > 0\r\n });\r\n }\r\n\r\n return rangeVals;\r\n }\r\n\r\n /**\r\n * Get values from years range (A5)\r\n * @param filterConfig\r\n */\r\n private getRangesValuesA5(filterConfig: any): any {\r\n let rangeVals: any = null;\r\n\r\n rangeVals = {\r\n value: this.getStartYearFromRange(filterConfig.defaultValue),\r\n data: [],\r\n range: []\r\n };\r\n const modulo: number = this.state.yearsValues.length >= 10 ? 5 : 2;\r\n\r\n this.state.yearsValues.forEach((rangeItem: any, i: number) => {\r\n if (rangeItem) {\r\n rangeVals.data.push(rangeItem.value);\r\n rangeVals.range.push({\r\n label: rangeItem.label,\r\n isHide: i < this.state.yearsValues.length && i % modulo > 0\r\n });\r\n }\r\n });\r\n\r\n return rangeVals;\r\n }\r\n\r\n /**\r\n * Get values from list\r\n * @param filterConfig\r\n * @param\r\n */\r\n private getValuesFromLayer(filterConfig: any, features: any[]): any[] {\r\n let vals: any = [];\r\n const tempArr: string[] = [];\r\n\r\n if (features) {\r\n features.forEach((feat: Feature) => {\r\n let value: string = feat.getProperties()[filterConfig.propertyName];\r\n\r\n if (value) {\r\n value = value.toString().trim();\r\n\r\n if (tempArr.indexOf(value) === -1) {\r\n vals.push({ label: value, value: value });\r\n tempArr.push(value);\r\n }\r\n }\r\n });\r\n\r\n //Sort and remove duplicates\r\n vals = vals.sort((a, b) => (a.label > b.label ? 1 : -1));\r\n }\r\n\r\n return vals;\r\n }\r\n\r\n /**\r\n * Get values from layer\r\n */\r\n private async queryLayer(): Promise {\r\n try {\r\n const features: any[] = await QueryService.queryFeatures(QueryService.createFeatureRequest([this.layerConfig.searchLayer]));\r\n return Promise.resolve(features);\r\n \r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n }\r\n\r\n /**\r\n * On btn expand / collapse click\r\n */\r\n private onExpandBtnClick(event: any): void {\r\n this.isContentVisible = !this.isContentVisible;\r\n\r\n //Dispatch resize to fix tabs default selected tab\r\n setTimeout(() => {\r\n window.dispatchEvent(new Event(\"resize\"));\r\n }, 200);\r\n }\r\n\r\n /**\r\n * Show / hide layer\r\n */\r\n private setLayerVisibility() {\r\n this.layerVisible = !this.layerVisible;\r\n MappingService.getInstance().setLayerVisibility(\r\n this.layerConfig.name,\r\n this.layerVisible\r\n );\r\n\r\n if (!this.layerVisible) Vue.set(this.state, \"opacityExpanded\", false);\r\n }\r\n\r\n /**\r\n * On opacity change\r\n */\r\n private onOpacityChange() {\r\n const layerName: string = this.isSwipeLayer\r\n ? MappingService.swipeLayerName\r\n : this.layerConfig.name;\r\n MappingService.getInstance().setLayerOpacity(\r\n layerName,\r\n this.layerOpacity / 100\r\n );\r\n }\r\n\r\n private handleTimeSliderMounted(): void {\r\n const ts: TimeSlider = this.$refs.timeSlider as TimeSlider;\r\n\r\n if (ts) {\r\n ts.setVal(Number(this.state.rangeValues.value));\r\n }\r\n }\r\n\r\n /**\r\n * Set year range\r\n * @param filterItemIndex\r\n */\r\n private setYearsRange(filterItemIndex: number): void {\r\n const filterConfig = this.state.filterValues[filterItemIndex];\r\n const filterSelects = this.$el.querySelectorAll(\".filterSelect\");\r\n const yearSelect: HTMLSelectElement = filterSelects[\r\n this.state.rangeFilterIndex\r\n ] as HTMLSelectElement;\r\n\r\n let doInitTS = false;\r\n let min: any = null;\r\n let max: any = null;\r\n let currentVal = -1;\r\n\r\n //Range year (A5)\r\n if (filterConfig && filterConfig.type === \"layer_year_range\") {\r\n //this.handleA5RangeYears(filterConfig, filterItemIndex);\r\n //min = filterConfig.defaultValue;\r\n const selectedYearLabel: string =\r\n yearSelect.options[yearSelect.selectedIndex] &&\r\n yearSelect.options[yearSelect.selectedIndex].textContent\r\n ? yearSelect.options[yearSelect.selectedIndex].textContent\r\n : \"\";\r\n\r\n if (selectedYearLabel) {\r\n //} && selectedYearLabel.length === 9){\r\n currentVal = Number(yearSelect.value);\r\n }\r\n\r\n doInitTS = true;\r\n }\r\n //Years filer\r\n else if (filterConfig && filterConfig.isYearFilter) {\r\n currentVal = Number(yearSelect.value);\r\n doInitTS = true;\r\n }\r\n\r\n //Range year (A4)\r\n else if (\r\n filterConfig &&\r\n filterConfig.values &&\r\n filterConfig.values.length &&\r\n filterConfig.values[0].minYear &&\r\n filterConfig.values[0].maxYear\r\n ) {\r\n if (filterSelects && filterSelects.length > filterItemIndex) {\r\n const targetSelect = filterSelects[\r\n filterItemIndex\r\n ] as HTMLSelectElement;\r\n const selectedIndex = targetSelect.selectedIndex;\r\n\r\n min = filterConfig.values[selectedIndex].minYear;\r\n max = filterConfig.values[selectedIndex].maxYear;\r\n\r\n // Number year (A4)\r\n if (!isNaN(min)) {\r\n const step = filterConfig.values[selectedIndex].stepYear;\r\n this.state.yearsValues = this.getRangeValueLabel(\r\n Number(min),\r\n Number(max),\r\n step\r\n );\r\n this.state.rangeValues = this.getRangesValues(\r\n Number(min),\r\n Number(max),\r\n step,\r\n filterConfig.defaultValue\r\n );\r\n\r\n this.state.rangeValues.value = min;\r\n doInitTS = true;\r\n }\r\n }\r\n }\r\n\r\n if (doInitTS) {\r\n this.initTimeSlider(min, currentVal);\r\n }\r\n }\r\n\r\n /**\r\n * Init time slider\r\n */\r\n private initTimeSlider(min: number, currentValue = -1): void {\r\n const filterSelects = this.$el.querySelectorAll(\".filterSelect\");\r\n const yearSelect: HTMLSelectElement = filterSelects[\r\n this.state.rangeFilterIndex\r\n ] as HTMLSelectElement;\r\n\r\n const ts: TimeSlider = this.$refs.timeSlider as TimeSlider;\r\n if (ts) {\r\n ts.setVal(currentValue > -1 ? currentValue : min);\r\n }\r\n\r\n setTimeout(() => {\r\n if (min && yearSelect.value !== min.toString()) {\r\n yearSelect.value = min.toString();\r\n }\r\n this.applyFilter(null);\r\n }, 200);\r\n }\r\n\r\n /**\r\n * Set layer style\r\n */\r\n private setLayerStyle() {\r\n const layerName: string = this.isSwipeLayer\r\n ? MappingService.swipeLayerName\r\n : this.layerConfig.name;\r\n MappingService.getInstance().setLayerParams(layerName, [\r\n { param: \"STYLES\", value: this.selectedStyle }\r\n ]);\r\n this.setLayerLegend(layerName, this.selectedStyle);\r\n\r\n if (this.metadataDependsOnStyle) {\r\n this.setLayerMetadata(null, this.selectedStyle);\r\n }\r\n }\r\n\r\n /**\r\n * Set layer legend\r\n * @param layerName\r\n * @param styleName\r\n */\r\n private setLayerLegend(layerName: string, styleName: string) {\r\n this.legendUrl = `${\r\n ConfigService.getInstance().config.map.WMSBaseURL\r\n }?REQUEST=GetLegendGraphic&VERSION=1.1.1&FORMAT=image/png&WIDTH=20&HEIGHT=20&LAYER=${layerName}&style=${styleName}`;\r\n this.setCurrentUnit(styleName);\r\n\r\n this.selectedStyle = styleName;\r\n }\r\n\r\n /**\r\n * Set current unit\r\n */\r\n private setCurrentUnit(style: string): void {\r\n if (this.layerConfig && this.layerConfig.units) {\r\n const unitObj: any = this.layerConfig.units.find(\r\n (item: any) => item.style === style\r\n );\r\n\r\n if (unitObj) {\r\n this.state.currentUnit = unitObj.unit;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Download\r\n */\r\n private download(): void {\r\n let url: string;\r\n if (this.layerConfig.downloadable && this.layerConfig.geoTiffDownloadUrl) {\r\n url = this.createTifDownloadUrl();\r\n } else if (this.layerConfig.downloadable) {\r\n url = `${\r\n ConfigService.getInstance().config.map.WFSBaseURL\r\n }?request=GetFeature&typename=${\r\n this.layerConfig.name\r\n }&version=1.1.1&outputFormat=shape-zip`;\r\n }\r\n\r\n if (url) {\r\n bus.$emit(\"openDownloadLayer\", {\r\n name: this.layerConfig.label,\r\n url: url\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Create tif download url\r\n */\r\n private createTifDownloadUrl(): string {\r\n let url: string = this.layerConfig.geoTiffDownloadUrl;\r\n const filterSelects = this.$el.querySelectorAll(\".filterSelect\");\r\n\r\n if (filterSelects && filterSelects.length > 0) {\r\n //First check if scenarioFilterIndex exists\r\n filterSelects.forEach((select: any, i: number) => {\r\n const filterConfig = this.state.filterValues[i];\r\n\r\n if (filterConfig.scenarioFilterIndex) {\r\n const selectedIndex = (select as HTMLSelectElement).selectedIndex;\r\n const value: string = select.value;\r\n const label: string =\r\n select.options[selectedIndex] &&\r\n select.options[selectedIndex].textContent\r\n ? select.options[selectedIndex].textContent\r\n : \"\";\r\n const scenarioVal: string = this.getA5Scenario(\r\n filterConfig.scenarioFilterIndex,\r\n (filterSelects[\r\n filterConfig.scenarioFilterIndex\r\n ] as HTMLSelectElement).value,\r\n label\r\n );\r\n\r\n if (scenarioVal) {\r\n url = url.replace(\r\n `{${filterConfig.scenarioFilterIndex}}`,\r\n scenarioVal\r\n );\r\n }\r\n }\r\n });\r\n\r\n //Other filters\r\n filterSelects.forEach((select: any, i: number) => {\r\n const filterConfig = this.state.filterValues[i];\r\n let value: string = select.value;\r\n\r\n if (filterConfig.type === \"layer_year_range\") {\r\n const selectedIndex = (select as HTMLSelectElement).selectedIndex;\r\n value =\r\n select.options[selectedIndex] &&\r\n select.options[selectedIndex].textContent\r\n ? select.options[selectedIndex].textContent\r\n : \"\";\r\n }\r\n\r\n url = url.replace(`{${i}}`, value);\r\n });\r\n }\r\n url = `${\r\n ConfigService.getInstance().config.map.geoTiffDownloadBaseURL\r\n }${url}`;\r\n return url;\r\n }\r\n\r\n /**\r\n * Apply filter\r\n * @param filterItemIndex\r\n */\r\n public applyFilter(filterItemIndex: number) {\r\n //Set years\r\n if (filterItemIndex && this.state.filterValues[filterItemIndex]) {\r\n this.setYearsRange(filterItemIndex);\r\n }\r\n\r\n const layerName: string = this.isSwipeLayer\r\n ? MappingService.swipeLayerName\r\n : this.layerConfig.name;\r\n const ts: TimeSlider = this.$refs.timeSlider as TimeSlider;\r\n\r\n const filterSelects = this.$el.querySelectorAll(\".filterSelect\");\r\n\r\n if (filterSelects && filterSelects.length > 0) {\r\n const viewparamsStr: string[] = [];\r\n let params: any[] = [];\r\n\r\n filterSelects.forEach((select: any, i: number) => {\r\n const oneFilterItem: any = this.layerConfig.filters[i];\r\n const oneFilterItemValues: any = this.state.filterValues[i];\r\n const selectValue: string = (select as HTMLSelectElement).value;\r\n const selectedIndex: number = (select as HTMLSelectElement)\r\n .selectedIndex;\r\n const selectLabel: string =\r\n select.options[selectedIndex] &&\r\n select.options[selectedIndex].textContent\r\n ? select.options[selectedIndex].textContent\r\n : \"\";\r\n\r\n if (this.layerConfig.filterType === \"viewparams\") {\r\n viewparamsStr.push(\r\n `${oneFilterItemValues.propertyName}:${selectValue}`\r\n );\r\n } else if (this.layerConfig.filterType === \"params\") {\r\n const oneParam = { ...oneFilterItemValues.condition };\r\n oneParam.value = oneParam.value.replace(\r\n \"{val}\",\r\n oneFilterItem && oneFilterItem.type === \"layer_year_range\"\r\n ? selectLabel\r\n : selectValue\r\n );\r\n const selectedValueConfig = oneFilterItemValues.values.find(\r\n i => i.value === selectValue\r\n );\r\n\r\n if (ts && oneFilterItem && oneFilterItem.min && oneFilterItem.max) {\r\n ts.setVal(Number(selectValue));\r\n }\r\n\r\n if (selectedValueConfig && selectedValueConfig.style) {\r\n params.push({ param: \"STYLES\", value: selectedValueConfig.style });\r\n this.setLayerLegend(layerName, selectedValueConfig.style);\r\n }\r\n\r\n //Special case (A5)\r\n if (oneFilterItem && oneFilterItem.scenarioFilterIndex) {\r\n const styleParam: any = params.find(\r\n (item: any) => item.param === \"STYLES\"\r\n );\r\n\r\n if (styleParam) {\r\n params = params.filter((item: any) => item.param !== \"STYLES\");\r\n params.push(styleParam);\r\n }\r\n\r\n const scenarioVal: string = this.getA5Scenario(\r\n oneFilterItem.scenarioFilterIndex,\r\n params[oneFilterItem.scenarioFilterIndex].value,\r\n oneParam.value\r\n );\r\n\r\n if (scenarioVal) {\r\n params[oneFilterItem.scenarioFilterIndex].value = scenarioVal;\r\n }\r\n }\r\n\r\n params.push(oneParam);\r\n }\r\n });\r\n\r\n if (this.layerConfig.filterType === \"viewparams\") {\r\n MappingService.getInstance().setLayerViewparams(\r\n layerName,\r\n viewparamsStr.join(\";\")\r\n );\r\n } else if (this.layerConfig.filterType === \"params\") {\r\n MappingService.getInstance().setLayerParams(layerName, params);\r\n }\r\n\r\n //Set layer metadata\r\n this.setLayerMetadata(params);\r\n }\r\n }\r\n\r\n /**\r\n * Handle A5 scenario\r\n */\r\n private getA5Scenario(\r\n scenarioFilterIndex: number,\r\n oldValue: string,\r\n yearRange: string\r\n ): string {\r\n let scenarioVal = oldValue;\r\n const scenarioConfig: any = this.layerConfig.filters[scenarioFilterIndex];\r\n const endYear: number = this.getEndYearFromRange(yearRange);\r\n\r\n if (new Date().getFullYear() > endYear) {\r\n scenarioVal = scenarioConfig.defaultValue;\r\n }\r\n\r\n return scenarioVal;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLayer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLayer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=3a1fb333&\"\nimport script from \"./MapLayer.vue?vue&type=script&lang=ts&\"\nexport * from \"./MapLayer.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?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\nexport default component.exports","import { MappingService } from \"../../services/mappingService\";\r\nimport { ConfigService } from \"../../services/configService\";\r\nimport TileLayer from \"ol/layer/Tile\";\r\nimport { IDataset } from \"../../interfaces/IMapConfig\";\r\n\r\nexport class Helper {\r\n /**\r\n * Get Dataset\r\n * @param dataset\r\n * @returns\r\n */\r\n private getDataset(dataset: IDataset): IDataset {\r\n if (!dataset) {\r\n return null;\r\n }\r\n\r\n const layers: any[] = [];\r\n const mapLayers = MappingService.getInstance().getMapLayers();\r\n const configLayers: any[] = dataset.layers;\r\n\r\n configLayers.forEach(layerConfig => {\r\n const mapLayer: TileLayer = mapLayers[layerConfig.name]\r\n ? mapLayers[layerConfig.name].layer\r\n : null;\r\n const layer = { ...layerConfig };\r\n\r\n if (mapLayer) {\r\n layer.visible = mapLayer.getVisible();\r\n layers.push(layer);\r\n }\r\n });\r\n\r\n return {\r\n label: dataset.label,\r\n thematics: dataset.thematics,\r\n comparable: dataset.comparable,\r\n layers: layers\r\n };\r\n }\r\n\r\n /**\r\n * Get A1 Dataset\r\n */\r\n public getA1Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A1);\r\n }\r\n\r\n /**\r\n * Get A2 Dataset\r\n */\r\n public getA2Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A2);\r\n }\r\n\r\n /**\r\n * Get A3 Dataset\r\n */\r\n public getA3Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A3);\r\n }\r\n\r\n /**\r\n * Get A4 Dataset\r\n */\r\n public getA4Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A4);\r\n }\r\n\r\n /**\r\n * Get A5 Dataset\r\n */\r\n public getA5Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A5);\r\n }\r\n\r\n /**\r\n * Get A6 Dataset\r\n */\r\n public getA6Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A6);\r\n }\r\n\r\n /**\r\n * Get A4 Dataset\r\n */\r\n public getA7Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A7);\r\n }\r\n\r\n /**\r\n * Get A4 Dataset\r\n */\r\n public getA8Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A8);\r\n }\r\n}\r\n","\n\n\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport ExpandableCard from \"./templates/ExpandableCard/ExpandableCard.vue\";\r\nimport MapLayer from \"@/components/ArxMap/MapLayer/MapLayer.vue\";\r\nimport { IDataset } from \"../../interfaces/IMapConfig\";\r\nimport { Helper } from \"./helper\";\r\nimport { UtilsService } from \"@/services/utilsService\";\r\n\r\n@Component({\r\n components: {\r\n ExpandableCard,\r\n MapLayer\r\n }\r\n})\r\nexport default class Dataset extends Vue {\r\n private helper: Helper = new Helper();\r\n private datasets: IDataset[] = [];\r\n private isMobileScreen = false;\r\n\r\n private mounted(): void {\r\n this.isMobileScreen = UtilsService.getInstance().isMobileScreen();\r\n this.datasets.push(this.helper.getA1Dataset());\r\n this.datasets.push(this.helper.getA2Dataset());\r\n this.datasets.push(this.helper.getA3Dataset());\r\n this.datasets.push(this.helper.getA4Dataset());\r\n this.datasets.push(this.helper.getA5Dataset());\r\n this.datasets.push(this.helper.getA6Dataset());\r\n this.datasets.push(this.helper.getA7Dataset());\r\n this.datasets.push(this.helper.getA8Dataset());\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layers.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layers.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=1a6d7248&scoped=true&\"\nimport script from \"./Layers.vue?vue&type=script&lang=ts&\"\nexport * from \"./Layers.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?vue&type=style&index=0&id=1a6d7248&lang=scss&scoped=true&\"\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 \"1a6d7248\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mapComparison\"},[_c('p',{staticClass:\"selectLayersText\"},[_vm._v(\" \"+_vm._s(_vm.$t('translate.selectLeftRightLayer'))+\" \")]),_c('ExpandableCard',{attrs:{\"expandOnOpen\":true}},[_c('span',{attrs:{\"slot\":\"cardTitle\"},slot:\"cardTitle\"},[_vm._v(_vm._s(_vm.$t('translate.leftLayer')))]),_c('div',{attrs:{\"slot\":\"cardContent\"},slot:\"cardContent\"},[_c('FilterLayer',{ref:\"leftLayer\"})],1)]),_c('ExpandableCard',{attrs:{\"expandOnOpen\":true}},[_c('span',{attrs:{\"slot\":\"cardTitle\"},slot:\"cardTitle\"},[_vm._v(_vm._s(_vm.$t('translate.rightLayer')))]),_c('div',{attrs:{\"slot\":\"cardContent\"},slot:\"cardContent\"},[_c('FilterLayer',{ref:\"rightLayer\",attrs:{\"isSwipeLayer\":true}})],1)]),_c('p',[_c('md-button',{staticClass:\"md-dense md-raised md-primary\",attrs:{\"disabled\":!_vm.leftFilterLayer || !_vm.leftFilterLayer.selectedLayer || !_vm.rightFilterLayer || !_vm.rightFilterLayer.selectedLayer},on:{\"click\":_vm.compare}},[_vm._v(_vm._s(_vm.$t('translate.compare')))]),_c('md-button',{staticClass:\"md-dense md-raised md-primary\",attrs:{\"disabled\":!_vm.compareOn},on:{\"click\":_vm.cancel}},[_vm._v(_vm._s(_vm.$t('translate.cancel')))])],1),_c('div',{class:{ visible: _vm.compareOn },attrs:{\"id\":\"arxSwipeDiv\"}},[_c('md-icon',{staticClass:\"swipeIcon md-elevation-3\"},[_vm._v(\"swipe\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"filterLayer\"},[_c('div',[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedDatasetIndex),expression:\"selectedDatasetIndex\"}],on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedDatasetIndex=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.onChangeDataset]}},[_c('option',{attrs:{\"value\":\"-1\",\"disabled\":\"\"},domProps:{\"selected\":_vm.selectedDatasetIndex === 0}},[_vm._v(_vm._s(_vm.$t('translate.dataset')))]),_vm._l((_vm.datasets),function(item,i){return [_c('option',{domProps:{\"value\":i}},[_vm._v(_vm._s(_vm.$t(item.label)))])]})],2),(_vm.selectedDataset && _vm.selectedDataset.layers)?_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedLayerIndex),expression:\"selectedLayerIndex\"}],on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedLayerIndex=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.onChangeLayer]}},[_c('option',{attrs:{\"value\":\"-1\",\"disabled\":\"\"},domProps:{\"selected\":_vm.selectedLayerIndex === 0}},[_vm._v(_vm._s(_vm.$t('translate.layer')))]),_vm._l((_vm.selectedDataset.layers),function(item,i){return [_c('option',{domProps:{\"value\":i}},[_vm._v(_vm._s(_vm.$t(item.label)))])]})],2):_vm._e(),(_vm.selectedDataset && _vm.selectedDataset.layers && _vm.selectedLayer)?_c('p',[_c('MapLayer',{ref:\"filterLayer\",attrs:{\"layerConfig\":_vm.selectedLayer,\"isSwipeLayer\":_vm.isSwipeLayer}})],1):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { ConfigService } from \"../../../../services/configService\";\r\nimport { IDataset, IVectorLayer } from \"../../../../interfaces/IMapConfig\";\r\nimport MapLayer from \"@/components/ArxMap/MapLayer/MapLayer.vue\";\r\n\r\n@Component({\r\n components: {\r\n MapLayer\r\n }\r\n})\r\nexport default class FilterLayer extends Vue {\r\n private datasets: IDataset[] = [];\r\n private selectedDatasetIndex = -1;\r\n private selectedDataset: IDataset = null;\r\n private selectedLayerIndex = -1;\r\n public selectedLayer: IVectorLayer | any = null;\r\n\r\n @Prop({ default: false })\r\n isSwipeLayer: boolean;\r\n\r\n /**\r\n * Created\r\n */\r\n private mounted(): void {\r\n const datasetsConfig = ConfigService.getInstance().config.map.datasets;\r\n\r\n for (const key in datasetsConfig) {\r\n const ds: IDataset = datasetsConfig[key];\r\n if (ds.comparable) {\r\n this.datasets.push({\r\n ...ds,\r\n ...{\r\n toLowerCase: () => this.$t(ds.label).toString().toLowerCase(),\r\n toString: () => this.$t(ds.label).toString()\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * On change dataset\r\n */\r\n private onChangeDataset(): void {\r\n if(this.datasets && this.datasets.length > 0 && this.selectedDatasetIndex >= 0) {\r\n this.selectedDataset = this.datasets[this.selectedDatasetIndex];\r\n\r\n /*if(this.selectedDataset) {\r\n const layers = [];\r\n\r\n this.selectedDataset.layers.forEach(x => {\r\n layers.push({\r\n ...x,\r\n ...{\r\n toLowerCase: () => this.$t(x.label).toString().toLowerCase(),\r\n toString: () => this.$t(x.label).toString()\r\n }\r\n });\r\n });\r\n\r\n this.selectedDataset.layers = layers;\r\n }*/\r\n }\r\n }\r\n\r\n /**\r\n * On change layer\r\n */\r\n private onChangeLayer(): void {\r\n if( this.selectedDataset && this.selectedDataset.layers && this.selectedDataset.layers.length > 0) {\r\n this.selectedLayer = this.selectedDataset.layers[this.selectedLayerIndex];\r\n }\r\n }\r\n\r\n /**\r\n * Call filter\r\n */\r\n public callFilter(): void {\r\n const mapLayer: MapLayer = this.$refs[\"filterLayer\"] as MapLayer;\r\n\r\n if (mapLayer && mapLayer.layerConfig && mapLayer.layerConfig.filters) {\r\n mapLayer.applyFilter(null);\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterLayer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilterLayer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=66cadfa3&\"\nimport script from \"./FilterLayer.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilterLayer.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?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\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"arxSplitter\"},[_c('div',{staticStyle:{\"display\":\"flex\"}},[_c('div',[_vm._v(\"Left\")]),_c('div',{staticClass:\"resizer\",attrs:{\"id\":\"dragMe\"}}),_c('div',[_vm._v(\"Right\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\n\r\n@Component\r\nexport default class ArxSplitter extends Vue {\r\n private mounted(): void {\r\n // Query the element\r\n const resizer = document.getElementById(\"dragMe\");\r\n const leftSide = resizer.previousElementSibling;\r\n const rightSide = resizer.nextElementSibling;\r\n\r\n // The current position of mouse\r\n let x = 0;\r\n let y = 0;\r\n let leftWidth = 0;\r\n\r\n const mouseMoveHandler = function(e) {\r\n // How far the mouse has been moved\r\n const dx = e.clientX - x;\r\n const dy = e.clientY - y;\r\n\r\n const newLeftWidth =\r\n ((leftWidth + dx) * 100) /\r\n (resizer.parentNode as any).getBoundingClientRect().width;\r\n (leftSide as any).style.width = `${newLeftWidth}%`;\r\n\r\n resizer.style.cursor = \"col-resize\";\r\n document.body.style.cursor = \"col-resize\";\r\n\r\n (leftSide as any).style.userSelect = \"none\";\r\n (leftSide as any).style.pointerEvents = \"none\";\r\n\r\n (rightSide as any).style.userSelect = \"none\";\r\n (rightSide as any).style.pointerEvents = \"none\";\r\n };\r\n\r\n const mouseUpHandler = function() {\r\n resizer.style.removeProperty(\"cursor\");\r\n document.body.style.removeProperty(\"cursor\");\r\n\r\n (leftSide as any).style.removeProperty(\"user-select\");\r\n (leftSide as any).style.removeProperty(\"pointer-events\");\r\n\r\n (rightSide as any).style.removeProperty(\"user-select\");\r\n (rightSide as any).style.removeProperty(\"pointer-events\");\r\n\r\n // Remove the handlers of `mousemove` and `mouseup`\r\n document.removeEventListener(\"mousemove\", mouseMoveHandler);\r\n document.removeEventListener(\"mouseup\", mouseUpHandler);\r\n };\r\n\r\n // Handle the mousedown event\r\n // that's triggered when user drags the resizer\r\n const mouseDownHandler = function(e) {\r\n // Get the current mouse position\r\n x = e.clientX;\r\n y = e.clientY;\r\n leftWidth = leftSide.getBoundingClientRect().width;\r\n\r\n // Attach the listeners to `document`\r\n document.addEventListener(\"mousemove\", mouseMoveHandler);\r\n document.addEventListener(\"mouseup\", mouseUpHandler);\r\n };\r\n\r\n // Attach the handler\r\n resizer.addEventListener(\"mousedown\", mouseDownHandler);\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArxSplitter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArxSplitter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=f6319b84&scoped=true&\"\nimport script from \"./ArxSplitter.vue?vue&type=script&lang=ts&\"\nexport * from \"./ArxSplitter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?vue&type=style&index=0&id=f6319b84&lang=scss&scoped=true&\"\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 \"f6319b84\",\n null\n \n)\n\nexport default component.exports","\n\n\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport FilterLayer from \"@/widgets/MapComparison/templates/FilterLayer/FilterLayer.vue\";\r\nimport ArxSplitter from \"@/widgets/MapComparison/templates/ArxSplitter/ArxSplitter.vue\";\r\nimport ExpandableCard from \"@/widgets/Layers/templates/ExpandableCard/ExpandableCard.vue\";\r\nimport { IVectorLayer } from \"../../interfaces/IMapConfig\";\r\nimport { MappingService } from \"../../services/mappingService\";\r\n\r\n@Component({\r\n components: {\r\n FilterLayer,\r\n ArxSplitter,\r\n ExpandableCard\r\n }\r\n})\r\nexport default class MapComparison extends Vue {\r\n private swipeValue = 50;\r\n private compareOn = false;\r\n private leftFilterLayer: FilterLayer = null;\r\n private rightFilterLayer: FilterLayer = null;\r\n private swipeDivDragEnabled = false;\r\n /**\r\n * Created\r\n * */\r\n private created(): void {\r\n /*this.$watch(\r\n \"$refs.leftLayer.selectedLayer\",\r\n () => {\r\n this.onSelectLeftLayer();\r\n }\r\n );\r\n\r\n this.$watch(\r\n \"$refs.rightLayer.selectedLayer\",\r\n () => {\r\n this.onSelectRightLayer();\r\n }\r\n );*/\r\n }\r\n\r\n /**\r\n * Mounted\r\n */\r\n private mounted(): void {\r\n this.swipeValue = 50;\r\n this.compareOn = false;\r\n this.leftFilterLayer = this.$refs[\"leftLayer\"] as FilterLayer;\r\n this.rightFilterLayer = this.$refs[\"rightLayer\"] as FilterLayer;\r\n }\r\n\r\n /**\r\n * Drag element\r\n * @param elmnt\r\n */\r\n private dragElement(elmnt: HTMLElement): void {\r\n let pos1 = 0,\r\n pos3 = 0;\r\n\r\n function elementDrag(e) {\r\n e = e || window.event;\r\n e.preventDefault();\r\n pos1 = pos3 - e.clientX;\r\n pos3 = e.clientX;\r\n const left: number = elmnt.offsetLeft - pos1;\r\n\r\n if (left > 0) {\r\n elmnt.style.left = `${left}px`;\r\n }\r\n\r\n MappingService.getInstance().setSwipeValue(\r\n (left / window.innerWidth) * 100\r\n );\r\n }\r\n\r\n function closeDragElement() {\r\n document.onmouseup = null;\r\n document.onmousemove = null;\r\n }\r\n\r\n function dragMouseDown(e) {\r\n e = e || window.event;\r\n e.preventDefault();\r\n pos3 = e.clientX;\r\n document.onmouseup = closeDragElement;\r\n document.onmousemove = elementDrag;\r\n }\r\n\r\n elmnt.onmousedown = dragMouseDown;\r\n }\r\n\r\n /**\r\n * Handle swipe\r\n */\r\n\r\n private onSwipe(): void {\r\n MappingService.getInstance().setSwipeValue(this.swipeValue);\r\n }\r\n\r\n /**\r\n * Init swipe div\r\n */\r\n private initSwipeDiv(): void {\r\n const arxSwipeDiv: HTMLDivElement = document.getElementById(\r\n \"arxSwipeDiv\"\r\n ) as HTMLDivElement;\r\n if (arxSwipeDiv && !this.swipeDivDragEnabled) {\r\n this.dragElement(arxSwipeDiv);\r\n this.swipeDivDragEnabled = true;\r\n }\r\n\r\n arxSwipeDiv.style.left = `${window.innerWidth / 2}px`;\r\n }\r\n\r\n /**\r\n *\r\n */\r\n private compare(): void {\r\n this.initSwipeDiv();\r\n\r\n const leftLayer: IVectorLayer | any = this.leftFilterLayer.selectedLayer;\r\n const rightLayer: IVectorLayer | any = this.rightFilterLayer.selectedLayer;\r\n\r\n MappingService.getInstance().handleSwipe(leftLayer, rightLayer);\r\n\r\n //Call filter\r\n (this.$refs[\"leftLayer\"] as FilterLayer).callFilter();\r\n (this.$refs[\"rightLayer\"] as FilterLayer).callFilter();\r\n\r\n //Set swipe value\r\n this.onSwipe();\r\n\r\n this.compareOn = true;\r\n }\r\n\r\n /**\r\n * Cancel swipe\r\n */\r\n private cancel(): void {\r\n /*(this.$refs[\"leftLayer\"] as FilterLayer).unselect();\r\n (this.$refs[\"rightLayer\"] as FilterLayer).unselect();*/\r\n MappingService.getInstance().cancelSwipe();\r\n this.compareOn = false;\r\n }\r\n\r\n /**\r\n * Handle select left layer\r\n \r\n private onSelectLeftLayer(): void {\r\n this.leftLayer = (this.$refs[\"leftLayer\"] as FilterLayer).selectedLayer;\r\n }*/\r\n\r\n /**\r\n * Handle select right layer\r\n \r\n private onSelectRightLayer(): void {\r\n this.leftLayer = (this.$refs[\"leftLayer\"] as FilterLayer).selectedLayer;\r\n }*/\r\n\r\n /**\r\n * Handle sidebar close\r\n */\r\n public handleSideBarClose(): void {\r\n this.cancel();\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapComparison.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapComparison.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=632731be&scoped=true&\"\nimport script from \"./MapComparison.vue?vue&type=script&lang=ts&\"\nexport * from \"./MapComparison.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?vue&type=style&index=0&id=632731be&lang=scss&scoped=true&\"\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 \"632731be\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"statistics\"},[(!_vm.state.isLoading)?_c('md-content',{staticClass:\"layers\"},[_vm._l((7),function(i){return [(!_vm.isMobileScreen && _vm.datasets[i - 1])?_c('ExpandableCard',[_c('span',{attrs:{\"slot\":\"cardTitle\"},slot:\"cardTitle\"},[_vm._v(_vm._s(_vm.$t(_vm.datasets[i - 1].label)))]),_c('div',{attrs:{\"slot\":\"cardContent\"},slot:\"cardContent\"},[_vm._l((_vm.datasets[i - 1].layers),function(l,i){return [_c('StatsLayer',{attrs:{\"layerConfig\":l}})]})],2)]):_vm._e(),(_vm.isMobileScreen && _vm.datasets[i - 1])?_c('div',[_vm._l((_vm.datasets[i - 1].layers),function(l,i){return [(l.statistics.idDistrictField || l.statistics.radarFields)?_c('StatsLayer',{attrs:{\"layerConfig\":l}}):_vm._e()]})],2):_vm._e()]})],2):_vm._e(),(_vm.state.isLoading)?_c('div',{staticClass:\"loadingDiv\"},[_c('md-icon',{staticClass:\"loadingIcon\"},[_vm._v(\"cached\")])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Vue, Component, Mixins, Prop, Watch } from \"vue-property-decorator\";\r\nimport { Bar, mixins } from \"vue-chartjs\";\r\n\r\n@Component({\r\n extends: Bar,\r\n mixins: [mixins.reactiveProp]\r\n})\r\nexport default class ArxBar extends Mixins(mixins.reactiveProp, Bar) {\r\n @Prop({ default: null })\r\n chartData: any;\r\n\r\n @Prop({ default: null })\r\n chartOptions: any;\r\n\r\n @Watch(\"chartData\", {\r\n immediate: false,\r\n deep: true\r\n })\r\n chartDataChanged(newVal, oldVal) {\r\n this.renderChart(newVal, this.chartOptions);\r\n }\r\n\r\n private mounted(): void {\r\n this.renderChart(this.chartData, this.chartOptions);\r\n }\r\n}\r\n","import { Component, Mixins, Prop } from \"vue-property-decorator\";\r\nimport { Pie, mixins } from \"vue-chartjs\";\r\n\r\n@Component({\r\n extends: Pie,\r\n mixins: [mixins.reactiveProp]\r\n})\r\nexport default class ArxPie extends Mixins(mixins.reactiveProp, Pie) {\r\n @Prop({ default: null })\r\n chartData: any;\r\n\r\n @Prop({ default: null })\r\n chartOptions: any;\r\n\r\n mounted() {\r\n this.renderChart(this.chartData, this.chartOptions);\r\n }\r\n}\r\n","import { Component, Mixins, Prop } from \"vue-property-decorator\";\r\nimport { Line, mixins } from \"vue-chartjs\";\r\n\r\n@Component({\r\n extends: Line,\r\n mixins: [mixins.reactiveProp]\r\n})\r\nexport default class ArxLine extends Mixins(mixins.reactiveProp, Line) {\r\n @Prop({ default: null })\r\n chartData: any;\r\n\r\n @Prop({ default: null })\r\n chartOptions: any;\r\n\r\n mounted() {\r\n this.renderChart(this.chartData, this.chartOptions);\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('md-card',{staticClass:\"statsLayer\"},[_c('md-card-header',[_c('div',{staticClass:\"md-title\"},[_c('span',{staticClass:\"layerLabel\"},[_vm._v(_vm._s(_vm.$t(_vm.layerConfig.label)))]),_c('div',{staticClass:\"setVisibleIcon\",on:{\"click\":_vm.setLayerVisibility}},[_c('span',{staticClass:\"layerVisibilityIcon material-icons\"},[_vm._v(_vm._s(_vm.layerVisible ? 'visibility' : 'visibility_off'))])]),_c('md-button',{ref:\"layerExpandBtn\",class:['md-icon-button expandBtn', _vm.isContentVisible ? 'expanded' : ''],on:{\"click\":_vm.onExpandBtnClick}},[_c('span',{staticClass:\"layerExpandIcon material-icons\"},[_vm._v(\"keyboard_arrow_down\")])])],1)]),_c('div',{staticClass:\"statsLayerContent\",class:{ contentVisible: _vm.isContentVisible }},[_c('md-tabs',{staticClass:\"md-primary\",attrs:{\"md-alignment\":\"centered\",\"md-active-tab\":_vm.state.firstSelectedTab}},[((_vm.layerConfig.statistics && _vm.layerConfig.statistics.radarFields) || (_vm.layerConfig.filters && _vm.layerConfig.filters.length) || (_vm.layerConfig.statistics.idDistrictField))?_c('md-tab',{attrs:{\"id\":\"tab-stats-filter\",\"md-label\":_vm.$t('translate.filter'),\"md-icon\":\"filter_alt\"}},[_c('div',{staticClass:\"tabContent filterContent\"},[(_vm.layerConfig.statistics && _vm.layerConfig.statistics.radarFields)?_c('span',[_vm._v(_vm._s(_vm.$t('translate.a7.layers.livelihood_for_graph.selectFeature')))]):_vm._e(),(!_vm.isMobileScreen && _vm.layerConfig && _vm.layerConfig.statistics && _vm.layerConfig.statistics.calculateByProvinces && _vm.layerConfig.statistics.calculateByDistricts)?_c('p',[_c('label',[_vm._v(_vm._s(_vm.$t('translate.calculateBy')))]),_c('label',{staticClass:\"radioLabel\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.state.selectedStatsMode),expression:\"state.selectedStatsMode\"}],attrs:{\"type\":\"radio\",\"value\":\"provinces\"},domProps:{\"checked\":_vm._q(_vm.state.selectedStatsMode,\"provinces\")},on:{\"change\":[function($event){return _vm.$set(_vm.state, \"selectedStatsMode\", \"provinces\")},_vm.applyFilter]}}),_vm._v(_vm._s(_vm.$t('translate.provinces'))+\" \")]),_c('label',{staticClass:\"radioLabel\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.state.selectedStatsMode),expression:\"state.selectedStatsMode\"}],attrs:{\"type\":\"radio\",\"value\":\"districts\"},domProps:{\"checked\":_vm._q(_vm.state.selectedStatsMode,\"districts\")},on:{\"change\":[function($event){return _vm.$set(_vm.state, \"selectedStatsMode\", \"districts\")},_vm.applyFilter]}}),_vm._v(_vm._s(_vm.$t('translate.districts'))+\" \")])]):_vm._e(),_c('p',{style:({ display: _vm.state.selectedStatsMode === 'districts' ? 'block' : 'none'})},[_c('label',[_vm._v(_vm._s(_vm.$t('translate.province')))]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedProvinceId),expression:\"selectedProvinceId\"}],staticClass:\"provincesSelect\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedProvinceId=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){return _vm.applyFilter(null)}]}},[_vm._l((_vm.provincesItems),function(item,i){return [_c('option',{domProps:{\"value\":item.id}},[_vm._v(_vm._s(_vm.$i18n.locale === 'en' ? item.engName : item.laoName))])]})],2)]),_c('p'),_c('p',[_vm._l((_vm.state.filterValues),function(filter,i1){return [_c('p',{style:({ display: filter.values.length > 1 ? 'block' : 'none'})},[_c('label',[_vm._v(_vm._s(_vm.$t(filter.label)))]),(!filter.isYearFilter)?_c('select',{staticClass:\"filterSelect\",attrs:{\"name\":filter.label},on:{\"change\":function($event){return _vm.applyFilter(i1)}}},[_vm._l((filter.values),function(item,i2){return [(item.value === filter.defaultValue)?_c('option',{attrs:{\"selected\":\"\"},domProps:{\"value\":item.value}},[_vm._v(_vm._s(_vm.getTranslation(item.value)))]):_vm._e(),(item.value !== filter.defaultValue)?_c('option',{domProps:{\"value\":item.value}},[_vm._v(_vm._s(_vm.getTranslation(item.value)))]):_vm._e()]})],2):_vm._e(),(filter.isYearFilter)?_c('select',{staticClass:\"filterSelect\",on:{\"change\":function($event){return _vm.applyFilter(i1)}}},[_vm._l((_vm.state.yearsValues),function(item,i2){return [(item.value === filter.defaultValue)?_c('option',{attrs:{\"selected\":\"\"},domProps:{\"value\":item.value}},[_vm._v(_vm._s(_vm.getTranslation(item.label)))]):_vm._e(),(item.value !== filter.defaultValue)?_c('option',{domProps:{\"value\":item.value}},[_vm._v(_vm._s(_vm.getTranslation(item.label)))]):_vm._e()]})],2):_vm._e()])]})],2)])]):_vm._e(),_c('md-tab',{attrs:{\"id\":\"tab-stats--legend\",\"md-label\":_vm.$t('translate.legend'),\"md-icon\":\"view_list\"}},[_c('div',{staticClass:\"tabContent\"},[(_vm.state.currentUnit)?_c('p',{staticClass:\"stylesDiv\"},[_c('span',{staticClass:\"unitSpan\"},[_vm._v(_vm._s(_vm.$t('translate.unit'))+\": \")]),_c('span',{staticClass:\"unitValue\"},[_vm._v(_vm._s(_vm.state.currentUnit))])]):_vm._e(),_c('img',{attrs:{\"src\":_vm.state.legendUrl}})])]),_c('md-tab',{attrs:{\"id\":\"tab-stats--metadata\",\"md-label\":_vm.$t('translate.table'),\"md-icon\":\"table_chart\"}},[_c('div',{staticClass:\"tabContent\"},[(_vm.state.chartDataLoaded && _vm.state.tableData && _vm.state.tableData.length)?_c('md-table',{attrs:{\"md-card\":\"\"},scopedSlots:_vm._u([{key:\"md-table-row\",fn:function(ref){\nvar item = ref.item;\nreturn _c('md-table-row',{},[(_vm.$i18n.locale === 'en')?_c('md-table-cell',{attrs:{\"md-label\":_vm.$t('translate.name'),\"md-sort-by\":\"engName\"}},[_vm._v(_vm._s(item.engName))]):_vm._e(),(_vm.$i18n.locale === 'lo')?_c('md-table-cell',{attrs:{\"md-label\":_vm.$t('translate.name'),\"md-sort-by\":\"laoName\"}},[_vm._v(_vm._s(item.laoName))]):_vm._e(),_c('md-table-cell',{attrs:{\"md-label\":_vm.tableValueUnit,\"md-sort-by\":\"value\"}},[_vm._v(_vm._s(item.value))])],1)}}],null,false,3355863071),model:{value:(_vm.state.tableData),callback:function ($$v) {_vm.$set(_vm.state, \"tableData\", $$v)},expression:\"state.tableData\"}}):_vm._e(),(_vm.state.chartDataLoaded && _vm.state.tableData && !_vm.state.tableData.length)?_c('div',[_vm._v(_vm._s(_vm.layerConfig.statistics && _vm.layerConfig.statistics.radarFields ? _vm.$t('translate.a7.layers.livelihood_for_graph.selectFeature') : _vm.$t('translate.notAvailable')))]):_vm._e()],1)]),_c('md-tab',{attrs:{\"id\":\"tab-stats-graph\",\"md-label\":_vm.$t('translate.graph'),\"md-icon\":\"bar_chart\"}},[_c('div',{staticClass:\"tabContent\"},[(_vm.state.chartDataLoaded && _vm.state.tableData && _vm.state.tableData.length)?_c('div',[(!_vm.state.isRadarChart)?_c('div',{staticClass:\"chartTypeDiv\"},[_c('button',{on:{\"click\":function($event){return _vm.setChartType('Bar')}}},[_c('md-icon',{staticClass:\"loadingIcon\",class:{ 'selected' : _vm.state.selectedStatsChartType === 'Bar' }},[_vm._v(\"bar_chart\")])],1),_c('button',{on:{\"click\":function($event){return _vm.setChartType('Pie')}}},[_c('md-icon',{staticClass:\"loadingIcon\",class:{ 'selected' : _vm.state.selectedStatsChartType === 'Pie' }},[_vm._v(\"pie_chart\")])],1)]):_vm._e(),(_vm.state.chartDataLoaded && !_vm.state.isRadarChart)?_c('ArxBar',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.state.selectedStatsChartType === 'Bar' && _vm.chartData.labels && _vm.chartData.labels.length),expression:\"state.selectedStatsChartType === 'Bar' && chartData.labels && chartData.labels.length\"}],attrs:{\"chartData\":_vm.chartData,\"chartOptions\":_vm.chartOptions}}):_vm._e(),(_vm.state.chartDataLoaded && !_vm.state.isRadarChart)?_c('ArxPie',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.state.selectedStatsChartType === 'Pie' && _vm.chartData.labels && _vm.chartData.labels.length),expression:\"state.selectedStatsChartType === 'Pie' && chartData.labels && chartData.labels.length\"}],attrs:{\"chartData\":_vm.chartData,\"chartOptions\":_vm.chartOptions}}):_vm._e(),(_vm.state.chartDataLoaded && _vm.state.isRadarChart)?_c('ArxRadar',{attrs:{\"chartData\":_vm.chartData}}):_vm._e()],1):_vm._e(),(_vm.state.chartDataLoaded && _vm.state.tableData && !_vm.state.tableData.length)?_c('div',[_vm._v(_vm._s(_vm.layerConfig.statistics && _vm.layerConfig.statistics.radarFields ? _vm.$t('translate.a7.layers.livelihood_for_graph.selectFeature') : _vm.$t('translate.notAvailable')))]):_vm._e()])])],1)],1),(_vm.state.isLoading)?_c('div',{staticClass:\"loadingDiv\"},[_c('md-icon',{staticClass:\"loadingIcon\"},[_vm._v(\"cached\")])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Mixins, Prop, Watch } from \"vue-property-decorator\";\r\nimport { Radar, mixins } from \"vue-chartjs\";\r\n\r\n@Component({\r\n extends: Radar,\r\n mixins: [mixins.reactiveProp]\r\n})\r\nexport default class ArxRadar extends Mixins(mixins.reactiveProp, Radar) {\r\n @Prop({ default: null })\r\n chartData: any;\r\n\r\n @Prop({ default: null })\r\n chartOptions: any;\r\n\r\n @Watch(\"chartData\", {\r\n immediate: false,\r\n deep: true\r\n })\r\n chartDataChanged(newVal, oldVal) {\r\n this.renderChart(newVal, this.chartOptions);\r\n }\r\n\r\n private mounted(): void {\r\n this.renderChart(this.chartData, this.chartOptions);\r\n }\r\n}\r\n","\n\n\n\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport Feature from \"ol/Feature\";\r\nimport { QueryService } from \"@/services/queryService\";\r\nimport { ConfigService } from \"@/services/configService\";\r\nimport { MappingService } from \"@/services/mappingService\";\r\nimport { UtilsService } from \"@/services/utilsService\";\r\nimport { ISLDClass } from \"../../../../interfaces/ISLDClass\";\r\nimport { IVectorLayer, IRadarField } from \"../../../../interfaces/IMapConfig\"\r\nimport ArxBar from \"../../templates/ArxBar\";\r\nimport ArxPie from \"../../templates/ArxPie\";\r\nimport ArxLine from \"../../templates/ArxLine\";\r\nimport ArxRadar from \"../../templates/ArxRadar\";\r\nimport JsonFind from \"json-find\";\r\nimport IFilterAttributeValue from \"@/interfaces/IFilterAttributeValue\";\r\nimport { bus } from \"../../../../main\";\r\nimport {Fill, Stroke, Style} from 'ol/style';\r\n\r\nimport VectorLayer from \"ol/layer/Vector\";\r\n\r\nexport interface DataItem {\r\n code: number;\r\n engName: string;\r\n laoName: string;\r\n value: number;\r\n}\r\n\r\n@Component({\r\n components: { ArxBar, ArxPie, ArxLine, ArxRadar }\r\n})\r\nexport default class StatsLayer extends Vue {\r\n\r\n private layerVisible = false;\r\n private provincesItems = [];\r\n private districtsItems = {};\r\n private selectedProvinceId = null;\r\n private tableValueUnit = \"value\";\r\n private isMobileScreen = false;\r\n\r\n private state: any = {\r\n isLoading: false,\r\n filterValues: [],\r\n firstSelectedTab: \"tab-stats-filter\",\r\n rangeValues: null,\r\n rangeFilterIndex: null,\r\n yearsValues: [],\r\n selectedStatsMode: \"provinces\",\r\n tableData: [],\r\n sldClasses: [],\r\n legendUrl: \"\",\r\n currentUnit: \"\",\r\n selectedStyle: \"\",\r\n selectedStatsChartType: \"Bar\",\r\n chartDataLoaded: false,\r\n isRadarChart: false\r\n };\r\n\r\n private radarChartOptions = {\r\n responsive: true,\r\n scales: {\r\n yAxes: [\r\n {\r\n ticks: {\r\n beginAtZero: true,\r\n display: false,\r\n min: 0,\r\n max: 10\r\n },\r\n gridLines: {\r\n display: false\r\n },\r\n scaleLabel: {\r\n display: false\r\n }\r\n }\r\n ],\r\n xAxes: [\r\n {\r\n gridLines: {\r\n display: false\r\n }\r\n }\r\n ]\r\n },\r\n legend: {\r\n display: false\r\n },\r\n plugins: {\r\n legend: {\r\n display: false,\r\n labels: {}\r\n },\r\n }\r\n };\r\n\r\n @Prop({ default: null })\r\n layerConfig: IVectorLayer;\r\n\r\n private isContentVisible = false;\r\n\r\n private chartOptions: any = { \r\n responsive: true, \r\n maintainAspectRatio: true, \r\n legend: {\r\n display: false\r\n } \r\n };\r\n private chartData: any = {\r\n labels: [],\r\n datasets: []\r\n }\r\n\r\n private created (): void {\r\n // Init provinces and districts items\r\n this.initProvincesAndDistrictsItems();\r\n\r\n // Set table value unit\r\n this.setTableValueUnit();\r\n\r\n // Radar stats event\r\n bus.$on(\"ArxShowRadarStats\", (feature: Feature) => {\r\n if (this.layerConfig.statistics.radarFields) {\r\n this.handleRadarData(feature);\r\n }\r\n });\r\n\r\n bus.$on(\"ArxMobileProvinceClickForStats\", (provinceId: number) => {\r\n if(UtilsService.getInstance().isMobileScreen()) {\r\n this.state.selectedStatsMode = \"districts\";\r\n this.selectedProvinceId = provinceId;\r\n this.applyFilter();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Set table value unit\r\n */\r\n private setTableValueUnit (): void {\r\n const regExp = /\\{([^)]+)\\}/g;\r\n\r\n if (this.layerConfig.statistics.unit) {\r\n const matches: string[] = [...this.layerConfig.statistics.unit.match(regExp)];\r\n const translate: string = matches && matches.length ? matches[0].replace(\"{\", \"\").replace(\"}\", \"\") : \"value\";\r\n this.tableValueUnit = this.layerConfig.statistics.unit.replace(translate, this.$t(translate).toString()).replace(\"{\", \"\").replace(\"}\", \"\");\r\n } else {\r\n this.tableValueUnit = this.$t(\"translate.value\").toString();\r\n }\r\n }\r\n\r\n /**\r\n * Init provinces and districts items\r\n */\r\n private initProvincesAndDistrictsItems(): void {\r\n const provincesConfig = ConfigService.getInstance().config.map.provincesLayer;\r\n const districtsConfig = ConfigService.getInstance().config.map.districtsLayer;\r\n\r\n const provincesFeatures: Feature[] = ConfigService.getInstance().provinces;\r\n const districtsFeatures: Feature[] = ConfigService.getInstance().districts;\r\n\r\n // 1) Provinces\r\n provincesFeatures.forEach((feature: Feature) => {\r\n this.provincesItems.push({\r\n id: feature.get(provincesConfig.idField),\r\n engName: feature.get(provincesConfig.englishNameField),\r\n laoName: feature.get(provincesConfig.laoNameField)\r\n });\r\n });\r\n\r\n if (this.provincesItems.length) {\r\n this.provincesItems.sort((a, b) => a.engName.localeCompare(b.engName));\r\n\r\n this.selectedProvinceId = ConfigService.getInstance().config.map.statsDefaultProvinceId|| this.provincesItems[0].id;\r\n }\r\n\r\n // 2) Districts\r\n districtsFeatures.forEach((feature: Feature) => {\r\n this.districtsItems[feature.get(districtsConfig.idField)] = feature.get(districtsConfig.provinceField);\r\n });\r\n }\r\n\r\n /**\r\n * Handle radar data\r\n */\r\n private handleRadarData (feature: Feature): void {\r\n const attributes: any = feature.getProperties();\r\n const fields: IRadarField[] = this.layerConfig.statistics.radarFields;\r\n \r\n // 1) Stats data\r\n this.chartData = {\r\n labels: this.layerConfig.statistics.radarFields.map((confField: IRadarField) => {\r\n return this.$t(confField.label)\r\n }),\r\n datasets: [{\r\n label: '',\r\n data: fields.map((confField: IRadarField) => {\r\n const val: any = attributes[confField.field];\r\n return !isNaN(val) ? Math.round(Number(val) * 100) / 100 : 0\r\n }),\r\n fill: true,\r\n backgroundColor: 'rgba(255, 99, 132, 0.2)',\r\n borderColor: 'rgb(255, 99, 132)',\r\n pointBackgroundColor: 'rgb(255, 99, 132)',\r\n pointBorderColor: '#fff',\r\n pointHoverBackgroundColor: '#fff',\r\n pointHoverBorderColor: 'rgb(255, 99, 132)'\r\n }]\r\n };\r\n\r\n // 2) Create data table\r\n this.state.tableData = fields.map((confField: IRadarField, idx: number) => {\r\n const val: any = attributes[confField.field];\r\n return {\r\n code: idx,\r\n engName: this.$t(confField.label),\r\n laoName: this.$t(confField.label),\r\n value: !isNaN(val) ? Math.round(Number(val) * 100) / 100 : 0\r\n }\r\n });\r\n\r\n this.state.isRadarChart = true;\r\n this.state.chartDataLoaded = true;\r\n\r\n Vue.set(this.state, \"firstSelectedTab\", \"tab-stats-graph\");\r\n }\r\n\r\n /**\r\n * Component mounted\r\n */\r\n private mounted(): void {\r\n this.isContentVisible = false;\r\n this.isMobileScreen = UtilsService.getInstance().isMobileScreen();\r\n\r\n // Is radar chart\r\n if (this.layerConfig.statistics && this.layerConfig.statistics.radarFields && this.layerConfig.statistics.radarFields.length) {\r\n this.state.isRadarChart = true;\r\n }\r\n\r\n if (!this.layerConfig.statistics.calculateFromExcelFile) {\r\n this.layerVisible = MappingService.getInstance().getMapLayers()[this.layerConfig.name].layer.getVisible();\r\n }\r\n\r\n Vue.set(this.state, \"firstSelectedTab\", this.state.isRadarChart || (this.layerConfig.filters && this.layerConfig.filters.length) || (this.layerConfig.statistics.idDistrictField)? \"tab-stats-filter\" : \"tab-stats--legend\");\r\n\r\n this.state.selectedStatsMode = !this.isMobileScreen && this.layerConfig.statistics.calculateByProvinces ? \"provinces\" : this.layerConfig.statistics.calculateByDistricts ? \"districts\" : \"\";\r\n\r\n //Get values from layer, if searchLayer property is defined\r\n if (this.layerConfig.searchLayer)\r\n this.queryLayer(this.layerConfig.searchLayer).then((features: any[]) => {\r\n this.initLayer(features);\r\n });\r\n else this.initLayer();\r\n\r\n // Set style\r\n MappingService.getInstance()\r\n .getLayerStyles(this.layerConfig.name)\r\n .then((res: { styles: string[]; defaultStyle: string }) => {\r\n if (res && res.styles.length) {\r\n this.state.selectedStyle = res.defaultStyle || res.styles[0];\r\n this.setLayerStyle();\r\n }\r\n });\r\n\r\n /*bus.$on(`arxRangeSliderValue_${this.contentId}`, (rangeInfos: any) => {\r\n const filterSelects = this.$el.querySelectorAll(\".filterSelect\");\r\n\r\n if (filterSelects.length > rangeInfos.filterIndex) {\r\n const select: HTMLSelectElement = filterSelects[\r\n rangeInfos.filterIndex\r\n ] as HTMLSelectElement;\r\n\r\n if (select.value !== rangeInfos.value) {\r\n select.value = rangeInfos.value;\r\n this.applyFilter(rangeInfos.filterIndex);\r\n }\r\n }\r\n });*/\r\n }\r\n\r\n /**\r\n * Set chart type\r\n */\r\n private setChartType(type: string): void {\r\n this.state.selectedStatsChartType = type;\r\n }\r\n\r\n /**\r\n * Get values from layer\r\n * @param layer\r\n * @param filters\r\n */\r\n private async queryLayer(layer: string, filters: IFilterAttributeValue[] = null): Promise {\r\n try {\r\n const features = await QueryService.querySQLViewFeatures(layer, filters);\r\n return Promise.resolve(features); \r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n }\r\n\r\n /**\r\n * On btn expand / collapse click\r\n */\r\n private onExpandBtnClick(event: any): void {\r\n this.isContentVisible = !this.isContentVisible;\r\n\r\n //Dispatch resize to fix tabs default selected tab\r\n if (!this.isMobileScreen) {\r\n setTimeout(() => {\r\n window.dispatchEvent(new Event(\"resize\"));\r\n }, 200);\r\n }\r\n }\r\n\r\n /**\r\n * Init layer\r\n * @param features\r\n */\r\n private initLayer(features: any[] = null): void {\r\n this.setLayerFilter(features);\r\n setTimeout(() => {\r\n this.applyFilter();\r\n }, 200);\r\n }\r\n\r\n /**\r\n * Set layer filers\r\n * @param features\r\n */\r\n private setLayerFilter(features: any[] = null): void {\r\n if (this.layerConfig.filters) {\r\n this.layerConfig.filters.forEach((filterConfig: any, i: number) => {\r\n const oneLayFilter: any = { ...filterConfig };\r\n\r\n switch (filterConfig.type) {\r\n case \"list\":\r\n case \"year\":\r\n oneLayFilter.values = this.getValuesFromList(filterConfig, i);\r\n\r\n if (filterConfig.type === \"year\") {\r\n oneLayFilter.isYearFilter = true;\r\n this.state.yearsValues = oneLayFilter.values;\r\n }\r\n break;\r\n\r\n case \"layer\":\r\n case \"layer_year_range\":\r\n oneLayFilter.values = this.getValuesFromLayer(\r\n filterConfig,\r\n features\r\n );\r\n //this.currentLayerFilterAllValues = oneLayFilter.values;\r\n\r\n if (filterConfig.type === \"layer_year_range\") {\r\n this.initA5Values(oneLayFilter, i);\r\n }\r\n\r\n break;\r\n }\r\n\r\n // Set labels\r\n //this.setFilterLabels(oneLayFilter);\r\n\r\n this.state.filterValues.push(oneLayFilter);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * init A5 values\r\n * @param filterIndex\r\n */\r\n private initA5Values(oneLayFilter: any, filterIndex: number) {\r\n oneLayFilter.isYearFilter = true;\r\n this.state.rangeValues = {\r\n value: this.getStartYearFromRange(oneLayFilter.defaultValue),\r\n data: [],\r\n range: []\r\n };\r\n\r\n this.state.yearsValues = oneLayFilter.values.map((rangeItem: any) => {\r\n const startYear: number = this.getStartYearFromRange(rangeItem.value);\r\n\r\n if (startYear > -1) {\r\n this.state.rangeValues.range.push({ label: rangeItem.value });\r\n return { label: rangeItem.value, value: Number(startYear) };\r\n }\r\n });\r\n\r\n this.state.rangeFilterIndex = filterIndex;\r\n this.state.rangeValues = this.getRangesValuesA5(oneLayFilter);\r\n }\r\n\r\n /**\r\n * Get values from list\r\n * @param filterConfig\r\n * @param\r\n */\r\n private getValuesFromLayer(filterConfig: any, features: any[]): any[] {\r\n let vals: any = [];\r\n const tempArr: string[] = [];\r\n\r\n if (features) {\r\n features.forEach((feat: Feature) => {\r\n let value: string = feat.getProperties()[filterConfig.propertyName];\r\n\r\n if (value) {\r\n value = value.toString().trim();\r\n\r\n if (tempArr.indexOf(value) === -1) {\r\n vals.push({ label: value, value: value });\r\n tempArr.push(value);\r\n }\r\n }\r\n });\r\n\r\n //Sort and remove duplicates\r\n vals = vals.sort((a, b) => (a.label > b.label ? 1 : -1));\r\n }\r\n\r\n return vals;\r\n }\r\n\r\n /**\r\n * Get values from list\r\n * @param filterConfig\r\n * @param filterIndex\r\n */\r\n private getValuesFromList(filterConfig: any, filterIndex: number): any[] {\r\n if (\r\n (filterConfig.min && filterConfig.max) ||\r\n (filterConfig.minYear && filterConfig.maxYear)\r\n ) {\r\n const min = filterConfig.min || filterConfig.minYear;\r\n const max = filterConfig.max || filterConfig.maxYear;\r\n const step = filterConfig.step || filterConfig.stepYear;\r\n this.state.rangeValues = this.getRangesValues(\r\n min,\r\n max,\r\n step,\r\n filterConfig.defaultValue\r\n );\r\n this.state.rangeFilterIndex = filterIndex;\r\n\r\n return this.getRangeValueLabel(min, max, step);\r\n } else if (filterConfig.values) {\r\n return filterConfig.values;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n /**\r\n * Get values from list\r\n * @param min\r\n * @param max\r\n * @param step\r\n */\r\n private getRangeValueLabel(min: number, max: number, step: number): any[] {\r\n const vals: any = [];\r\n\r\n for (let count = min; count <= max; count += step) {\r\n vals.push({\r\n label: count,\r\n value: count,\r\n isHide: count > min && count % 5 > 0\r\n });\r\n }\r\n\r\n return vals;\r\n }\r\n\r\n /**\r\n * Get values from list\r\n * @param min\r\n * @param max\r\n * @param step\r\n * @param defaultValue\r\n */\r\n private getRangesValues(\r\n min: number,\r\n max: number,\r\n step: number,\r\n defaultValue: any\r\n ): any {\r\n let rangeVals: any = null;\r\n\r\n rangeVals = { value: defaultValue, data: [], range: [] };\r\n\r\n for (let count = min; count <= max; count += step) {\r\n rangeVals.data.push(count);\r\n rangeVals.range.push({\r\n label: count,\r\n isHide: count > min && count % 5 > 0\r\n });\r\n }\r\n\r\n return rangeVals;\r\n }\r\n\r\n /**\r\n * Get values from years range (A5)\r\n * @param filterConfig\r\n */\r\n private getRangesValuesA5(filterConfig: any): any {\r\n let rangeVals: any = null;\r\n\r\n rangeVals = {\r\n value: this.getStartYearFromRange(filterConfig.defaultValue),\r\n data: [],\r\n range: []\r\n };\r\n const modulo: number = this.state.yearsValues.length >= 10 ? 5 : 2;\r\n\r\n this.state.yearsValues.forEach((rangeItem: any, i: number) => {\r\n if (rangeItem) {\r\n rangeVals.data.push(rangeItem.value);\r\n rangeVals.range.push({\r\n label: rangeItem.label,\r\n isHide: i < this.state.yearsValues.length && i % modulo > 0\r\n });\r\n }\r\n });\r\n\r\n return rangeVals;\r\n }\r\n\r\n /**\r\n * Get start year from range\r\n */\r\n private getStartYearFromRange(str: string): number {\r\n const year: string = str && str.length > 3 ? str.substring(0, 4) : \"\";\r\n return !isNaN(Number(year)) ? Number(year) : -1;\r\n }\r\n \r\n /**\r\n * On calculate stats\r\n */\r\n private calculateStats(event: any): void {\r\n this.isContentVisible = !this.isContentVisible;\r\n\r\n //Dispatch resize to fix tabs default selected tab\r\n setTimeout(() => {\r\n window.dispatchEvent(new Event(\"resize\"));\r\n }, 200);\r\n }\r\n\r\n /**\r\n * Get Translation\r\n */\r\n private getTranslation(label: string): string {\r\n if(label && isNaN(Number(label))) {\r\n let tr = label.indexOf('translate.common') === - 1 ? `translate.common.${label.toLowerCase()}` : label.toLowerCase();\r\n tr = tr.split(\"'\").join(\"_\").split(\"’\").join(\"_\").split(\"/\").join(\"_\");\r\n\r\n if(this.$te(tr)) {\r\n return this.$t(tr).toString();\r\n }\r\n }\r\n\r\n return label;\r\n }\r\n\r\n /**\r\n * Handle A5 scenario\r\n */\r\n private getA5Scenario(\r\n scenarioFilterIndex: number,\r\n oldValue: string,\r\n yearRange: string\r\n ): string {\r\n let scenarioVal = oldValue;\r\n const scenarioConfig: any = this.layerConfig.filters[scenarioFilterIndex];\r\n const endYear: number = this.getEndYearFromRange(yearRange);\r\n\r\n if (new Date().getFullYear() > endYear) {\r\n scenarioVal = scenarioConfig.defaultValue;\r\n }\r\n\r\n return scenarioVal;\r\n }\r\n\r\n /**\r\n * Set year range\r\n * @param filterItemIndex\r\n */\r\n private setYearsRange(filterItemIndex: number): void {\r\n const filterConfig = this.state.filterValues[filterItemIndex];\r\n const filterSelects = this.$el.querySelectorAll(\".filterSelect\");\r\n const yearSelect: HTMLSelectElement = filterSelects[\r\n this.state.rangeFilterIndex\r\n ] as HTMLSelectElement;\r\n\r\n let doInitTS = false;\r\n let min: any = null;\r\n let max: any = null;\r\n let currentVal = -1;\r\n\r\n //Range year (A5)\r\n if (filterConfig && filterConfig.type === \"layer_year_range\") {\r\n //this.handleA5RangeYears(filterConfig, filterItemIndex);\r\n //min = filterConfig.defaultValue;\r\n const selectedYearLabel: string =\r\n yearSelect.options[yearSelect.selectedIndex] &&\r\n yearSelect.options[yearSelect.selectedIndex].textContent\r\n ? yearSelect.options[yearSelect.selectedIndex].textContent\r\n : \"\";\r\n\r\n if (selectedYearLabel) {\r\n //} && selectedYearLabel.length === 9){\r\n currentVal = Number(yearSelect.value);\r\n }\r\n\r\n doInitTS = true;\r\n }\r\n //Years filer\r\n else if (filterConfig && filterConfig.isYearFilter) {\r\n currentVal = Number(yearSelect.value);\r\n doInitTS = true;\r\n }\r\n\r\n //Range year (A4)\r\n else if (\r\n filterConfig &&\r\n filterConfig.values &&\r\n filterConfig.values.length &&\r\n filterConfig.values[0].minYear &&\r\n filterConfig.values[0].maxYear\r\n ) {\r\n if (filterSelects && filterSelects.length > filterItemIndex) {\r\n const targetSelect = filterSelects[\r\n filterItemIndex\r\n ] as HTMLSelectElement;\r\n const selectedIndex = targetSelect.selectedIndex;\r\n\r\n min = filterConfig.values[selectedIndex].minYear;\r\n max = filterConfig.values[selectedIndex].maxYear;\r\n\r\n // Number year (A4)\r\n if (!isNaN(min)) {\r\n const step = filterConfig.values[selectedIndex].stepYear;\r\n this.state.yearsValues = this.getRangeValueLabel(\r\n Number(min),\r\n Number(max),\r\n step\r\n );\r\n this.state.rangeValues = this.getRangesValues(\r\n Number(min),\r\n Number(max),\r\n step,\r\n filterConfig.defaultValue\r\n );\r\n\r\n this.state.rangeValues.value = min;\r\n doInitTS = true;\r\n }\r\n }\r\n }\r\n\r\n /*if (doInitTS) {\r\n this.initTimeSlider(min, currentVal);\r\n }*/\r\n }\r\n\r\n /**\r\n * Get end year from range\r\n */\r\n private getEndYearFromRange(str: string): number {\r\n const year: string = str && str.length > 8 ? str.substring(5, 9) : str;\r\n return !isNaN(Number(year)) ? Number(year) : -1;\r\n }\r\n\r\n /**\r\n * Create excel file download url\r\n */\r\n private createExcelFileDownloadUrl(): string {\r\n const arr = this.layerConfig.geoTiffDownloadUrl.replace(\".tif\", \"\").split('/');\r\n let filename: string = arr[arr.length - 1];\r\n const filterSelects = this.$el.querySelectorAll(\".filterSelect\");\r\n\r\n if (filterSelects && filterSelects.length > 0) {\r\n //First check if scenarioFilterIndex exists\r\n filterSelects.forEach((select: any, i: number) => {\r\n const filterConfig = this.state.filterValues[i];\r\n\r\n if (filterConfig.scenarioFilterIndex) {\r\n const selectedIndex = (select as HTMLSelectElement).selectedIndex;\r\n const value: string = select.value;\r\n const label: string =\r\n select.options[selectedIndex] &&\r\n select.options[selectedIndex].textContent\r\n ? select.options[selectedIndex].textContent\r\n : \"\";\r\n const scenarioVal: string = this.getA5Scenario(\r\n filterConfig.scenarioFilterIndex,\r\n (filterSelects[\r\n filterConfig.scenarioFilterIndex\r\n ] as HTMLSelectElement).value,\r\n label\r\n );\r\n\r\n if (scenarioVal) {\r\n filename = filename.replace(\r\n `{${filterConfig.scenarioFilterIndex}}`,\r\n scenarioVal\r\n );\r\n }\r\n }\r\n });\r\n\r\n //Other filters\r\n filterSelects.forEach((select: any, i: number) => {\r\n const filterConfig = this.state.filterValues[i];\r\n let value: string = select.value;\r\n\r\n if (filterConfig.type === \"layer_year_range\") {\r\n const selectedIndex = (select as HTMLSelectElement).selectedIndex;\r\n value =\r\n select.options[selectedIndex] &&\r\n select.options[selectedIndex].textContent\r\n ? select.options[selectedIndex].textContent\r\n : \"\";\r\n }\r\n\r\n filename = filename.replace(`{${i}}`, value);\r\n });\r\n }\r\n const filePath = this.state.selectedStatsMode === \"provinces\" ? this.layerConfig.statistics.provincesFilesPath : this.layerConfig.statistics.districtsFilesPath;\r\n const url = `\r\n ${ConfigService.getInstance().config.map.downloadApiUrl}/${ConfigService.getInstance().config.map.getStatsExcelFile}`.replace(\"{filepath}\", filePath).replace(\"{filename}\", filename);\r\n return url;\r\n }\r\n\r\n /**\r\n * Get Layer filters\r\n */\r\n private getLayerFilters(): IFilterAttributeValue[] {\r\n const filters: IFilterAttributeValue[] = []; \r\n const filterSelects = this.$el.querySelectorAll(\".filterSelect\");\r\n\r\n if (filterSelects && filterSelects.length > 0) {\r\n //First check if scenarioFilterIndex exists\r\n filterSelects.forEach((select: any, i: number) => {\r\n const filterConfig = this.state.filterValues[i];\r\n\r\n if (filterConfig.scenarioFilterIndex) {\r\n const selectedIndex = (select as HTMLSelectElement).selectedIndex;\r\n const value: string = select.value;\r\n const label: string =\r\n select.options[selectedIndex] &&\r\n select.options[selectedIndex].textContent\r\n ? select.options[selectedIndex].textContent\r\n : \"\";\r\n const scenarioVal: string = this.getA5Scenario(\r\n filterConfig.scenarioFilterIndex,\r\n (filterSelects[\r\n filterConfig.scenarioFilterIndex\r\n ] as HTMLSelectElement).value,\r\n label\r\n );\r\n\r\n if (scenarioVal) {\r\n filters.push({attribute: filterConfig.propertyName, value: scenarioVal})\r\n }\r\n }\r\n });\r\n\r\n //Other filters\r\n filterSelects.forEach((select: any, i: number) => {\r\n const filterConfig = this.state.filterValues[i];\r\n let value: string = select.value;\r\n\r\n if (filterConfig.type === \"layer\" || filterConfig.type === \"layer_year_range\") {\r\n const selectedIndex = (select as HTMLSelectElement).selectedIndex;\r\n value =\r\n select.options[selectedIndex] &&\r\n select.options[selectedIndex].textContent\r\n ? select.options[selectedIndex].textContent\r\n : \"\";\r\n\r\n filters.push({attribute: filterConfig.propertyName, value: value})\r\n } \r\n });\r\n }\r\n \r\n return filters;\r\n }\r\n\r\n /**\r\n * Set layer style\r\n */\r\n private setLayerStyle() {\r\n MappingService.getInstance().setLayerParams(this.layerConfig.name, [\r\n { param: \"STYLES\", value: this.state.selectedStyle }\r\n ]);\r\n this.setLayerLegend(this.layerConfig.name, this.state.selectedStyle);\r\n }\r\n\r\n /**\r\n * Set layer legend\r\n * @param layerName\r\n * @param styleName\r\n */\r\n private setLayerLegend(layerName: string, styleName: string) {\r\n this.state.legendUrl = `${\r\n ConfigService.getInstance().config.map.WMSBaseURL\r\n }?REQUEST=GetLegendGraphic&VERSION=1.1.1&FORMAT=image/png&WIDTH=20&HEIGHT=20&LAYER=${layerName}&style=${styleName}`;\r\n this.setCurrentUnit(styleName);\r\n\r\n this.state.selectedStyle = styleName;\r\n }\r\n\r\n /**\r\n * Set current unit\r\n */\r\n private setCurrentUnit(style: string): void {\r\n if (this.layerConfig && this.layerConfig.units) {\r\n const unitObj: any = this.layerConfig.units.find(\r\n (item: any) => item.style === style\r\n );\r\n\r\n if (unitObj) {\r\n this.state.currentUnit = unitObj.unit;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Handle filter change\r\n */\r\n private handleFilterChange (filterItemIndex: number) {\r\n //Set years\r\n if (filterItemIndex && this.state.filterValues[filterItemIndex]) {\r\n this.setYearsRange(filterItemIndex);\r\n }\r\n\r\n //const ts: TimeSlider = this.$refs.timeSlider as TimeSlider;\r\n\r\n const filterSelects = this.$el.querySelectorAll(\".filterSelect\");\r\n\r\n if (filterSelects && filterSelects.length > 0) {\r\n\r\n filterSelects.forEach((select: any, i: number) => {\r\n const oneFilterItemValues: any = this.state.filterValues[i];\r\n const selectValue: string = (select as HTMLSelectElement).value;\r\n\r\n if (this.layerConfig.filterType === \"params\") {\r\n const selectedValueConfig = oneFilterItemValues.values.find(\r\n i => i.value === selectValue\r\n );\r\n\r\n /*if (ts && oneFilterItem && oneFilterItem.min && oneFilterItem.max) {\r\n ts.setVal(Number(selectValue));\r\n }*/\r\n\r\n if (selectedValueConfig && selectedValueConfig.style) {\r\n this.setLayerLegend(this.layerConfig.name, selectedValueConfig.style);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get SLD classes\r\n * @param type\r\n */\r\n private async getSLDClasses(type: number): Promise {\r\n try {\r\n const workspace = this.layerConfig.name.split(\":\")[0];\r\n const url = `${ConfigService.getInstance().config.map.downloadApiUrl}/${ConfigService.getInstance().config.map.getStyleSLDFile.replace('{workspace}', workspace).replace('{stylename}', this.state.selectedStyle)}`;\r\n const res = await fetch(url);\r\n const json = await res.json(); \r\n const doc = JsonFind(json);\r\n let sldClasses: ISLDClass[] = [];\r\n\r\n // 1) Raster style\r\n if (type === 1) {\r\n const colorMapClasses = doc.checkKey(\"sld:ColorMapEntry\");\r\n\r\n if (colorMapClasses && colorMapClasses.length) {\r\n sldClasses = colorMapClasses.map ((oneClass: any) => {\r\n return {\r\n label: oneClass[\"@label\"],\r\n min: oneClass[\"@min\"] ? Number(oneClass[\"@min\"]) : undefined,\r\n max: oneClass[\"@max\"] ? Number(oneClass[\"@max\"]) : undefined,\r\n color: oneClass[\"@color\"]\r\n }\r\n });\r\n }\r\n }\r\n\r\n // 2) Vector style\r\n else if (type === 2) {\r\n const ruleClasses = doc.checkKey(\"sld:Rule\");\r\n\r\n if (ruleClasses && ruleClasses.length) {\r\n ruleClasses.forEach ((oneClass: any) => {\r\n const ruleDoc = JsonFind(oneClass);\r\n \r\n if (ruleDoc) {\r\n const label = ruleDoc['sld:Name']\r\n let min: number | undefined;\r\n let max: number | undefined;\r\n let color = \"A0A0A0\";\r\n const propertyIsLessThanOrEqualTo: any = ruleDoc.checkKey(\"ogc:PropertyIsLessThanOrEqualTo\");\r\n const propertyIsLessThan: any = ruleDoc.checkKey(\"ogc:PropertyIsLessThan\");\r\n const propertyIsGreaterThanOrEqualTo: any = ruleDoc.checkKey(\"ogc:PropertyIsGreaterThanOrEqualTo\");\r\n const propertyIsGreaterThan: any = ruleDoc.checkKey(\"ogc:PropertyIsGreaterThan\");\r\n const svgParameter: any = ruleDoc.checkKey(\"sld:CssParameter\");\r\n \r\n if (propertyIsLessThanOrEqualTo) {\r\n max = Number(propertyIsLessThanOrEqualTo['ogc:Literal']);\r\n }\r\n else if (propertyIsLessThan) {\r\n max = Number(propertyIsLessThan['ogc:Literal']);\r\n }\r\n \r\n if (propertyIsGreaterThanOrEqualTo) {\r\n min = Number(propertyIsGreaterThanOrEqualTo['ogc:Literal']);\r\n }\r\n else if (propertyIsGreaterThan) {\r\n min = Number(propertyIsGreaterThan['ogc:Literal']);\r\n }\r\n\r\n if (svgParameter) {\r\n color = svgParameter['#text']\r\n }\r\n\r\n sldClasses.push(\r\n {\r\n label: label,\r\n min: min,\r\n max: max,\r\n color: color\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n return Promise.resolve(sldClasses);\r\n }\r\n catch(err) {\r\n console.log(err);\r\n return Promise.reject(err);\r\n }\r\n }\r\n\r\n /**\r\n * Set stats data\r\n */ \r\n private setStatsData(): void {\r\n if (this.state.sldClasses) {\r\n const labels: string[] = [];\r\n const datasets = [{\r\n label: [],\r\n backgroundColor: [],\r\n data: []\r\n }];\r\n\r\n const tableData = this.state.selectedStatsMode === \"provinces\" ? this.state.tableData : this.state.tableData.filter ( (item: DataItem) => Number(this.districtsItems[item.code]) === Number(this.selectedProvinceId));\r\n\r\n tableData.forEach( (item: DataItem, idx: number) => {\r\n labels.push(item.engName);\r\n const sld: ISLDClass = this.getValueSLDClass(item.value);\r\n datasets[0].backgroundColor.push(sld && sld.color ? sld.color : \"#A0A0A0\");\r\n datasets[0].data.push(item.value);\r\n });\r\n\r\n this.chartData.labels = labels;\r\n this.chartData.datasets = datasets;\r\n } else {\r\n this.chartData.labels = [];\r\n this.chartData.datasets = [];\r\n }\r\n }\r\n\r\n /**\r\n * Get corresponding sld class for a value\r\n */\r\n private getValueSLDClass(value: number): ISLDClass {\r\n let sldClass: ISLDClass;\r\n\r\n this.state.sldClasses.forEach( (sld: ISLDClass, i: number) => {\r\n const min: number = sld.min !== undefined ? sld.min : undefined;\r\n const max: number = sld.max !== undefined ? sld.max : undefined;\r\n let valueOK = false;\r\n\r\n valueOK = min !== undefined && max !== undefined && value >= min && value <= max ? true : valueOK;\r\n valueOK = min !== undefined && max === undefined && value >= min ? true : valueOK;\r\n valueOK = min === undefined && max !== undefined && value <= max ? true : valueOK;\r\n \r\n if (valueOK) {\r\n sldClass = sld;\r\n }\r\n });\r\n\r\n return sldClass;\r\n }\r\n\r\n /**\r\n * Set provinces and districts layers source\r\n */\r\n private setProvincesOrDistrictsFeatures(features: any[]): void {\r\n const targetLayer: VectorLayer = this.state.selectedStatsMode === \"provinces\" ? MappingService.getInstance().getMapLayers().provincesStats.layer : MappingService.getInstance().getMapLayers().districtsStats.layer;\r\n const otherLayer: VectorLayer = this.state.selectedStatsMode === \"provinces\" ? MappingService.getInstance().getMapLayers().districtsStats.layer : MappingService.getInstance().getMapLayers().provincesStats.layer;\r\n\r\n targetLayer.getSource().clear();\r\n otherLayer.getSource().clear();\r\n\r\n targetLayer.setVisible(this.layerVisible);\r\n otherLayer.setVisible(false);\r\n\r\n targetLayer.getSource().addFeatures(features);\r\n }\r\n \r\n /**\r\n * Set layer visibility\r\n */\r\n private setLayerVisibility(): void {\r\n this.layerVisible = !this.layerVisible;\r\n\r\n // 1) Calculate from Excel file\r\n if (this.layerConfig.statistics.calculateFromExcelFile) {\r\n if (this.state.selectedStatsMode === \"provinces\") {\r\n MappingService.getInstance().getMapLayers().provincesStats.layer.setVisible(this.layerVisible);\r\n MappingService.getInstance().getMapLayers().districtsStats.layer.setVisible(false);\r\n MappingService.getInstance().getMapLayers().districtsStats.layer.getSource().clear();\r\n } else {\r\n MappingService.getInstance().getMapLayers().provincesStats.layer.setVisible(false);\r\n MappingService.getInstance().getMapLayers().districtsStats.layer.setVisible(this.layerVisible);\r\n MappingService.getInstance().getMapLayers().provincesStats.layer.getSource().clear(); \r\n }\r\n\r\n if (this.layerVisible) {\r\n this.applyFilter();\r\n }\r\n\r\n MappingService.getInstance().getMapLayers().provincesStats.layer.getSource().refresh();\r\n MappingService.getInstance().getMapLayers().districtsStats.layer.getSource().refresh();\r\n } else {\r\n MappingService.getInstance().setLayerVisibility(\r\n this.layerConfig.name,\r\n this.layerVisible\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Get the SLD File of an item\r\n */\r\n private getSLDStyle(value: number): Style {\r\n let color = '808080';\r\n\r\n this.state.sldClasses.forEach( (sld: ISLDClass, i: number) => {\r\n const min: number = sld.min !== undefined ? sld.min : undefined;\r\n const max: number = sld.max !== undefined ? sld.max : undefined;\r\n let valueOK = false;\r\n\r\n valueOK = min !== undefined && max !== undefined && value >= min && value <= max ? true : valueOK;\r\n valueOK = min !== undefined && max === undefined && value >= min ? true : valueOK;\r\n valueOK = min === undefined && max !== undefined && value <= max ? true : valueOK;\r\n \r\n if (valueOK) { \r\n color = sld.color;\r\n }\r\n });\r\n\r\n return new Style({\r\n fill: new Fill({\r\n color: color || \"#C0C0C0\"\r\n }),\r\n stroke: new Stroke({\r\n color: \"#000000\",\r\n width: 0.5\r\n })\r\n });\r\n }\r\n /**\r\n * Handle data\r\n */\r\n private async handleData() {\r\n try {\r\n this.state.chartDataLoaded = false;\r\n this.state.isRadarChart = false;\r\n const config = this.state.selectedStatsMode === \"provinces\" ? ConfigService.getInstance().config.map.provincesLayer : ConfigService.getInstance().config.map.districtsLayer;\r\n const idProvOrDistrictField = this.state.selectedStatsMode === \"districts\" ? this.layerConfig.statistics.idDistrictField : this.layerConfig.statistics.idProvinceField;\r\n const valueField = this.layerConfig.statistics.valueField;\r\n const features: Feature[] = this.state.selectedStatsMode === \"provinces\" ? ConfigService.getInstance().provinces : ConfigService.getInstance().districts;\r\n this.state.isLoading = true;\r\n let statsData: any = null;\r\n\r\n // 1) Calculate from Excel file\r\n if (this.layerConfig.statistics.calculateFromExcelFile) {\r\n this.state.sldClasses = await(this.getSLDClasses(1));\r\n const excelFileDownloadUrl = this.createExcelFileDownloadUrl();\r\n\r\n const res = await fetch(excelFileDownloadUrl);\r\n statsData = await res.json();\r\n\r\n if (!statsData || statsData.status === 500) {\r\n throw new Error('Error laoding excel file');\r\n }\r\n }\r\n\r\n // 2) Calculate from table\r\n else if (!this.layerConfig.statistics.radarFields) {\r\n this.state.sldClasses = await(this.getSLDClasses(2));\r\n const filters: IFilterAttributeValue[] = this.getLayerFilters();\r\n const layerFeatures: Feature[] = await this.queryLayer(this.layerConfig.statistics.statsLayer || this.layerConfig.name, filters);\r\n\r\n if (layerFeatures) {\r\n statsData = layerFeatures.map((feat: Feature) => {\r\n const outObj = {};\r\n outObj[idProvOrDistrictField] = feat.get(idProvOrDistrictField);\r\n outObj[valueField] = feat.get(valueField);\r\n return outObj;\r\n });\r\n }\r\n }\r\n\r\n // 3) Create data table\r\n if (statsData && statsData.length && features && features.length) {\r\n const outFeatures = [];\r\n\r\n this.state.tableData = statsData.map( (item: {code: number, value: number}) => {\r\n const feature: Feature = features.find ( (feat: Feature) => feat.get(config.idField) === item[idProvOrDistrictField]);\r\n\r\n if (feature) {\r\n feature.setStyle(this.getSLDStyle(item.value));\r\n outFeatures.push(feature);\r\n }\r\n\r\n return {\r\n code: item[idProvOrDistrictField],\r\n engName: feature ? feature.get(config.englishNameField) : \"\",\r\n laoName: feature ? feature.get(config.laoNameField) : \"\",\r\n value: Math.round(Number(item[valueField]) * 100) / 100\r\n }\r\n }).sort( (a, b) => a.code - b.code);\r\n\r\n this.state.tableData = this.state.selectedStatsMode === \"provinces\" ? this.state.tableData : this.state.tableData.filter ( (item: DataItem) => Number(this.districtsItems[item.code]) === Number(this.selectedProvinceId));\r\n\r\n // Set provinces and districts layers\r\n if (this.layerConfig.statistics.calculateFromExcelFile) {\r\n this.setProvincesOrDistrictsFeatures(features);\r\n }\r\n }\r\n\r\n // 4) Create stats data\r\n this.setStatsData();\r\n \r\n this.state.isLoading = false;\r\n this.state.chartDataLoaded = true;\r\n }\r\n catch(err) {\r\n console.log(err);\r\n this.state.isLoading = false;\r\n this.state.chartDataLoaded = false;\r\n this.state.tableData = [];\r\n this.chartData.labels = [];\r\n this.chartData.datasets = [];\r\n MappingService.getInstance().getMapLayers().provincesStats.layer.getSource().clear();\r\n MappingService.getInstance().getMapLayers().districtsStats.layer.getSource().clear();\r\n }\r\n }\r\n\r\n /**\r\n * Apply filter\r\n */\r\n private handleViewParams() {\r\n const filterSelects = this.$el.querySelectorAll(\".filterSelect\");\r\n\r\n if (filterSelects && filterSelects.length > 0) {\r\n const viewparamsStr: string[] = [];\r\n\r\n filterSelects.forEach((select: any, i: number) => {\r\n const oneFilterItem: any = this.layerConfig.filters[i];\r\n const oneFilterItemValues: any = this.state.filterValues[i];\r\n const selectValue: string = (select as HTMLSelectElement).value;\r\n const selectedIndex: number = (select as HTMLSelectElement)\r\n .selectedIndex;\r\n const selectLabel: string =\r\n select.options[selectedIndex] &&\r\n select.options[selectedIndex].textContent\r\n ? select.options[selectedIndex].textContent\r\n : \"\";\r\n\r\n if (this.layerConfig.filterType === \"viewparams\") {\r\n viewparamsStr.push(\r\n `${oneFilterItemValues.propertyName}:${selectValue}`\r\n );\r\n } \r\n });\r\n\r\n if (this.layerConfig.filterType === \"viewparams\") {\r\n MappingService.getInstance().setLayerViewparams(\r\n this.layerConfig.name,\r\n viewparamsStr.join(\";\")\r\n );\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Apply filter\r\n * @param filterItemIndex\r\n */\r\n public applyFilter(filterItemIndex: number = null) {\r\n this.handleFilterChange(filterItemIndex);\r\n this.handleData();\r\n this.handleViewParams();\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatsLayer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatsLayer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=5d0d5a20&\"\nimport script from \"./StatsLayer.vue?vue&type=script&lang=ts&\"\nexport * from \"./StatsLayer.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?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\nexport default component.exports","import { MappingService } from \"../../services/mappingService\";\r\nimport { ConfigService } from \"../../services/configService\";\r\nimport TileLayer from \"ol/layer/Tile\";\r\nimport { IDataset } from \"../../interfaces/IMapConfig\";\r\n\r\nexport class Helper {\r\n /**\r\n * Get Dataset\r\n * @param dataset\r\n * @returns\r\n */\r\n private getDataset(dataset: IDataset): IDataset {\r\n if (!dataset) {\r\n return null;\r\n }\r\n\r\n const layers: any[] = [];\r\n const mapLayers = MappingService.getInstance().getMapLayers();\r\n const configLayers: any[] = dataset.layers;\r\n\r\n configLayers.forEach(layerConfig => {\r\n const mapLayer: TileLayer = mapLayers[layerConfig.name]\r\n ? mapLayers[layerConfig.name].layer\r\n : null;\r\n const layer = { ...layerConfig };\r\n\r\n if (mapLayer && layer.statistics) {\r\n layers.push(layer);\r\n }\r\n });\r\n\r\n \r\n return (layers && layers.length) ?\r\n {\r\n label: dataset.label,\r\n thematics: dataset.thematics,\r\n comparable: dataset.comparable,\r\n layers: layers\r\n } :\r\n null;\r\n }\r\n\r\n /**\r\n * Get A1 Dataset\r\n */\r\n public getA1Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A1);\r\n }\r\n\r\n /**\r\n * Get A2 Dataset\r\n */\r\n public getA2Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A2);\r\n }\r\n\r\n /**\r\n * Get A3 Dataset\r\n */\r\n public getA3Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A3);\r\n }\r\n\r\n /**\r\n * Get A4 Dataset\r\n */\r\n public getA4Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A4);\r\n }\r\n\r\n /**\r\n * Get A5 Dataset\r\n */\r\n public getA5Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A5);\r\n }\r\n\r\n /**\r\n * Get A6 Dataset\r\n */\r\n public getA6Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A6);\r\n }\r\n\r\n /**\r\n * Get A4 Dataset\r\n */\r\n public getA7Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A7);\r\n }\r\n\r\n /**\r\n * Get A4 Dataset\r\n */\r\n public getA8Dataset(): IDataset {\r\n return this.getDataset(ConfigService.getInstance().config.map.datasets.A8);\r\n }\r\n}\r\n","\n\n\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport ArxBar from \"./templates/ArxBar\";\r\nimport ArxPie from \"./templates/ArxPie\";\r\nimport ArxLine from \"./templates/ArxLine\";\r\nimport StatsLayer from \"./templates/StatsLayer/StatsLayer.vue\";\r\nimport { Helper } from \"./helper\";\r\nimport ExpandableCard from \"../../widgets/Layers/templates/ExpandableCard/ExpandableCard.vue\";\r\nimport { IDataset } from \"../../interfaces/IMapConfig\";\r\nimport { ConfigService } from \"@/services/configService\";\r\nimport { QueryService } from \"@/services/queryService\";\r\nimport { UtilsService } from \"@/services/utilsService\";\r\n\r\n@Component({\r\n components: {\r\n ArxBar,\r\n ArxPie,\r\n ArxLine,\r\n ExpandableCard,\r\n StatsLayer\r\n }\r\n})\r\nexport default class Statistics extends Vue {\r\n private state = {\r\n isLoading: true\r\n };\r\n\r\n private helper: Helper = new Helper();\r\n private datasets: IDataset[] = [];\r\n private isMobileScreen = false;\r\n\r\n /**\r\n * Component create\r\n */\r\n private async created(): Promise {\r\n try {\r\n // Get the list of provinces and districts\r\n this.state.isLoading = true;\r\n if(!ConfigService.getInstance().provinces || !ConfigService.getInstance().provinces.length) {\r\n ConfigService.getInstance().provinces = await QueryService.queryFeatures(QueryService.createFeatureRequest([ConfigService.getInstance().config.map.provincesLayer.name]));\r\n }\r\n\r\n if(!ConfigService.getInstance().districts || !ConfigService.getInstance().districts.length) {\r\n ConfigService.getInstance().districts = await QueryService.queryFeatures(QueryService.createFeatureRequest([ConfigService.getInstance().config.map.districtsLayer.name]));\r\n }\r\n \r\n this.state.isLoading = false;\r\n }\r\n catch(err) {\r\n console.log(err);\r\n this.state.isLoading = false;\r\n }\r\n }\r\n\r\n /**\r\n * Component mounted\r\n */\r\n private mounted(): void {\r\n this.isMobileScreen = UtilsService.getInstance().isMobileScreen();\r\n\r\n const d1 = this.helper.getA1Dataset();\r\n const d2 = this.helper.getA2Dataset();\r\n const d3 = this.helper.getA3Dataset();\r\n const d4 = this.helper.getA4Dataset();\r\n const d5 = this.helper.getA5Dataset();\r\n const d6 = this.helper.getA6Dataset();\r\n const d7 = this.helper.getA7Dataset();\r\n\r\n if(d1) {\r\n this.datasets.push(d1);\r\n }\r\n \r\n if(d2) {\r\n this.datasets.push(d2);\r\n }\r\n\r\n if(d3) {\r\n this.datasets.push(d3);\r\n }\r\n\r\n if(d4) {\r\n this.datasets.push(d4);\r\n }\r\n\r\n if(d5) {\r\n this.datasets.push(d5);\r\n }\r\n\r\n if(d6) {\r\n this.datasets.push(d6);\r\n }\r\n\r\n if(d7) {\r\n this.datasets.push(d7);\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Statistics.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Statistics.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=0d605128&\"\nimport script from \"./Statistics.vue?vue&type=script&lang=ts&\"\nexport * from \"./Statistics.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?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\nexport default component.exports","\n\n\n\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport Layers from \"@/widgets/Layers/Layers.vue\";\r\nimport MapComparison from \"@/widgets/MapComparison/MapComparison.vue\";\r\nimport Statistics from \"@/widgets/Statistics/Statistics.vue\";\r\nimport { Route } from \"vue-router\";\r\nimport { bus } from \"../../main\";\r\nimport { UtilsService } from \"@/services/utilsService\";\r\n\r\n@Component({\r\n components: {\r\n Layers,\r\n MapComparison,\r\n Statistics\r\n }\r\n})\r\nexport default class ArxSideBar extends Vue {\r\n private LAYERS = \"layers\";\r\n private MAP_COMPARISON = \"mapComparison\";\r\n private STATISTICS = \"statistics\";\r\n private isMobileScreen = false;\r\n\r\n private state: any = {\r\n currentTool: \"\"\r\n };\r\n\r\n @Watch(\"$route\", { immediate: true, deep: true })\r\n onUrlChange(newRoute: Route) {\r\n if (newRoute.name && !newRoute.name.startsWith(\"Map\")) {\r\n this.onCloseSideBar();\r\n }\r\n }\r\n\r\n /**\r\n * Mounted\r\n */\r\n private mounted(): void {\r\n this.isMobileScreen = UtilsService.getInstance().isMobileScreen();\r\n \r\n bus.$on(\"showTool\", (tool: string) => {\r\n if (this.isMobileScreen && tool === this.STATISTICS) {\r\n document.body.classList.add('statsForMobile');\r\n } else {\r\n document.body.classList.remove('statsForMobile');\r\n }\r\n Vue.set(this.state, \"currentTool\", tool);\r\n this.showSideBar();\r\n });\r\n }\r\n\r\n /**\r\n * Show side bar\r\n */\r\n showSideBar(): void {\r\n const elem: HTMLElement = document.getElementById(\r\n \"arxSideBar\"\r\n ) as HTMLElement;\r\n elem.classList.remove(\"hidden\");\r\n elem.classList.add(\"visible\");\r\n }\r\n\r\n /**\r\n * Handle close sidebar\r\n */\r\n public onCloseSideBar(): void {\r\n document.body.classList.remove('statsForMobile');\r\n \r\n //Handle map comparison\r\n if (this.state.currentTool === this.MAP_COMPARISON)\r\n (this.$refs[\"mapComparisonWidget\"] as MapComparison).handleSideBarClose();\r\n\r\n const elem: HTMLElement = document.getElementById(\r\n \"arxSideBar\"\r\n ) as HTMLElement;\r\n\r\n if (elem && elem.classList) {\r\n elem.classList.remove(\"visible\");\r\n elem.classList.add(\"hidden\");\r\n }\r\n this.state.currentTool = \"\";\r\n bus.$emit(\"unselectTools\");\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArxSideBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArxSideBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=3d192650&scoped=true&\"\nimport script from \"./ArxSideBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./ArxSideBar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?vue&type=style&index=0&id=3d192650&lang=scss&scoped=true&\"\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 \"3d192650\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\nimport Header from \"@/components/Header/Header.vue\";\nimport ArxSideBar from \"@/components/ArxSideBar/ArxSideBar.vue\";\nimport { ConfigService } from \"@/services/configService\";\nimport { Route } from \"vue-router\";\nimport { bus } from \"./main\";\n\n@Component({\n components: {\n Header,\n ArxSideBar\n }\n})\nexport default class App extends Vue {\n private configLoaded = false;\n private showError = false;\n private sidebarkey = 0;\n private mobileNotificationVisible = false;\n private mobileLoadingVisible = false;\n\n @Watch(\"$route\", { immediate: true, deep: true })\n onUrlChange(newRoute: Route) {\n if (newRoute.name === \"MapWithParam\") {\n this.sidebarkey = new Date().getTime();\n //this.$refs.arxMap.reinitializeMapLayers();\n }\n }\n \n private mounted(): void {\n const urlThematicParam = this.$route.query.thematic as string;\n ConfigService.getInstance()\n .loadConfig(urlThematicParam)\n .then(() => {\n this.configLoaded = true;\n //if(!urlThematicParam) {\n //this.$router.push({ name: 'Home'});\n //}\n })\n .catch((err: any) => {\n this.showError = true;\n console.error(\"Unable to load configuration from config.json !\");\n });\n\n bus.$on(\"ArxMapShowMobileNotification\", () => {\n this.mobileNotificationVisible = true;\n \n setTimeout(() => {\n this.mobileNotificationVisible = false;\n }, 3000);\n });\n\n bus.$on(\"ArxMapHideMobileLoading\", () => {\n this.mobileLoadingVisible = false;\n });\n }\n}\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--14-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--14-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=4ced4f86&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./css/style.scss?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\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"home\"},[_c('ArxMap',{key:_vm.mapKey,ref:\"arxMap\"}),_c('DownloadLayer'),_c('Search')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"arxMap\"},[_c('div',{ref:\"mapContainer\",attrs:{\"id\":\"mapContainer\"}}),_c('div',{staticClass:\"ol-popup\",attrs:{\"id\":\"popup\"}},[_vm._m(0),_c('div',{attrs:{\"id\":\"popup-content\"}}),_c('div',{attrs:{\"id\":\"popup-prev-next\"}},[_c('span',{staticClass:\"material-icons\",class:{ disabled: _vm.previousDisabled },attrs:{\"title\":\"Previous feature\"},on:{\"click\":_vm.showPopupPreviousFeature}},[_vm._v(\"chevron_left\")]),_c('span',{staticClass:\"material-icons\",class:{ disabled: _vm.nextDisabled },attrs:{\"title\":\"Next feature\"},on:{\"click\":_vm.showPopupNextFeature}},[_vm._v(\"navigate_next\")])])]),_c('MapZoom'),_c('MapCoords')],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('span',{attrs:{\"id\":\"popup-title\"}}),_c('a',{staticClass:\"ol-popup-closer\",attrs:{\"href\":\"#\",\"id\":\"popup-closer\"}})])}]\n\nexport { render, staticRenderFns }","import { MappingService } from \"../../services/mappingService\";\r\n\r\nexport class Helper {\r\n /**\r\n * Initialize Map\r\n */\r\n public initializeMap() {\r\n MappingService.getInstance().initMap();\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mapZoom md-elevation-3\"},[_c('div',{staticClass:\"zoomIcon\",attrs:{\"title\":_vm.$t('translate.initialView')},on:{\"click\":_vm.zoomInitialView}},[_c('span',{staticClass:\"material-icons\"},[_vm._v(\"home\")])]),_c('div',{staticClass:\"horizontalDivider\"}),_c('div',{staticClass:\"zoomIcon\",attrs:{\"title\":_vm.$t('translate.zoomIn')},on:{\"click\":_vm.zoomIn}},[_c('span',{staticClass:\"material-icons\"},[_vm._v(\"add\")])]),_c('div',{staticClass:\"horizontalDivider\"}),_c('div',{staticClass:\"zoomIcon\",attrs:{\"title\":_vm.$t('translate.zoomOut')},on:{\"click\":_vm.zoomOut}},[_c('span',{staticClass:\"material-icons\"},[_vm._v(\"remove\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { MappingService } from \"../../../services/mappingService\";\r\n\r\n@Component\r\nexport default class MapZoom extends Vue {\r\n public zoomInitialView(): void {\r\n MappingService.getInstance().zoomInitialView();\r\n }\r\n\r\n public zoomOut(): void {\r\n MappingService.getInstance().zoom(-1);\r\n }\r\n\r\n public zoomIn(): void {\r\n MappingService.getInstance().zoom(1);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapZoom.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapZoom.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=63722a5e&scoped=true&\"\nimport script from \"./MapZoom.vue?vue&type=script&lang=ts&\"\nexport * from \"./MapZoom.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?vue&type=style&index=0&id=63722a5e&lang=scss&scoped=true&\"\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 \"63722a5e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mapCoords md-elevation-3\"},[_vm._v(\" \"+_vm._s(_vm.coords)+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { bus } from \"../../../main\";\r\n\r\n@Component\r\nexport default class MapCoords extends Vue {\r\n private coords = \"\";\r\n\r\n private mounted(): void {\r\n this.coords = \"\";\r\n\r\n bus.$on(\"ArxMapCoords\", (coords: string) => {\r\n this.coords = coords;\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapCoords.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapCoords.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=4892e61e&scoped=true&\"\nimport script from \"./MapCoords.vue?vue&type=script&lang=ts&\"\nexport * from \"./MapCoords.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?vue&type=style&index=0&id=4892e61e&lang=scss&scoped=true&\"\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 \"4892e61e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { Helper } from \"./helper\";\r\nimport MapZoom from \"@/components/ArxMap/MapZoom/MapZoom.vue\";\r\nimport MapCoords from \"@/components/ArxMap/MapCoords/MapCoords.vue\";\r\nimport { PopupService } from \"../../services/popupService\";\r\nimport { MappingService } from \"../../services/mappingService\";\r\nimport { bus } from \"../../main\";\r\n\r\n@Component({\r\n components: {\r\n MapZoom,\r\n MapCoords\r\n }\r\n})\r\nexport default class ArxMap extends Vue {\r\n private previousDisabled = true;\r\n private nextDisabled = false;\r\n public helper: Helper = new Helper();\r\n\r\n private created(): void {\r\n\r\n PopupService.getInstance().initLocales(this);\r\n\r\n bus.$on(\"ArxHidePopup\", () => {\r\n this.previousDisabled = true;\r\n this.nextDisabled = false;\r\n });\r\n }\r\n\r\n private mounted(): void {\r\n this.helper.initializeMap();\r\n }\r\n\r\n /**\r\n * Handle previous button\r\n */\r\n private showPopupPreviousFeature(): void {\r\n this.showPopup(PopupService.getInstance().currentPopupIndex - 1);\r\n }\r\n\r\n /**\r\n * Handle next button\r\n */\r\n private showPopupNextFeature(): void {\r\n this.showPopup(PopupService.getInstance().currentPopupIndex + 1);\r\n }\r\n\r\n /**\r\n * Show popup\r\n */\r\n private showPopup(index: number): void {\r\n const items = PopupService.getInstance().currentPopupFeatures;\r\n\r\n if (index >= 0 && items.length > index) {\r\n MappingService.getInstance()\r\n .queryFeaturesForPopup(\r\n items[index].source,\r\n items[index].config,\r\n items[index].coordinates,\r\n items[index].config.statsConfig,\r\n )\r\n .then(() => {\r\n PopupService.getInstance().currentPopupIndex = index;\r\n\r\n this.previousDisabled = index <= 0;\r\n this.nextDisabled = index >= items.length - 1;\r\n });\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArxMap.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ArxMap.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=01489f11&scoped=true&\"\nimport script from \"./ArxMap.vue?vue&type=script&lang=ts&\"\nexport * from \"./ArxMap.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?vue&type=style&index=0&id=01489f11&lang=scss&scoped=true&\"\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 \"01489f11\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('md-card',{staticClass:\"downloadLayer\",class:_vm.visibilityClass},[_c('md-card-header',[_c('div',{staticClass:\"md-title\"},[_c('span',{staticClass:\"title\"},[_vm._v(\"Download: \"+_vm._s(_vm.layerName))]),_c('div',{staticClass:\"headerIconContainer md-elevation-3\"},[_c('span',{staticClass:\"headerIcon material-icons\"},[_vm._v(\"file_download\")])]),_c('div',{staticClass:\"headerCloseIcon\",on:{\"click\":_vm.onClose}},[_c('span',{staticClass:\"material-icons\"},[_vm._v(\"close\")])])])]),_c('md-card-content',[_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"titleSpan\"},[_vm._v(\"First name*\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.firstName),expression:\"firstName\"}],domProps:{\"value\":(_vm.firstName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.firstName=$event.target.value}}})]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"titleSpan\"},[_vm._v(\"Last name*\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.lastName),expression:\"lastName\"}],domProps:{\"value\":(_vm.lastName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.lastName=$event.target.value}}})]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"titleSpan\"},[_vm._v(\"E-mail*\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.email),expression:\"email\"}],domProps:{\"value\":(_vm.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.email=$event.target.value}}})]),_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"purposeSpan\"},[_vm._v(\"Purpose of the download*\")])]),_c('div',{staticClass:\"row\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.purpose),expression:\"purpose\"}],domProps:{\"value\":(_vm.purpose)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.purpose=$event.target.value}}})]),_c('div',[_c('md-button',{staticClass:\"md-dense md-raised md-primary\",on:{\"click\":_vm.onClose}},[_vm._v(\"Cancel\")]),_c('md-button',{staticClass:\"md-dense md-raised md-primary\",attrs:{\"disabled\":!_vm.firstName || !_vm.lastName || !_vm.email || !_vm.purpose || !_vm.validateEmail(_vm.email)},on:{\"click\":_vm.onDownload}},[_c('span',[_vm._v(\"Download\")]),(_vm.isLoading)?_c('md-icon',{staticClass:\"loading\"},[_vm._v(\"refresh\")]):_vm._e()],1)],1),(_vm.isError)?_c('div',{staticClass:\"row\"},[_c('span',{staticClass:\"errorSpan\"},[_vm._v(\"An error occured when trying to download the file. Please contact your administrator.\")])]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { ConfigService } from \"@/services/configService\";\r\nimport { bus } from \"../../main\";\r\n\r\n@Component\r\nexport default class ThematicItem extends Vue {\r\n private visibilityClass = \"\";\r\n private downloadUrl = \"\";\r\n private firstName = \"\";\r\n private lastName = \"\";\r\n private email = \"\";\r\n private purpose = \"\";\r\n private isError = false;\r\n private isLoading = false;\r\n private layerName = \"\";\r\n\r\n @Prop({ default: \"\" })\r\n url: string;\r\n\r\n private created(): void {\r\n bus.$on(\"openDownloadLayer\", (download: { name: string; url: string }) => {\r\n this.visibilityClass = \"visible\";\r\n this.downloadUrl = download.url;\r\n this.layerName = download.name;\r\n this.purpose = \"\";\r\n });\r\n }\r\n\r\n private onClose(): void {\r\n this.visibilityClass = \"\";\r\n }\r\n\r\n private validateEmail(email: string) {\r\n const re = /\\S+@\\S+\\.\\S+/;\r\n return re.test(email);\r\n }\r\n\r\n private async onDownload(): Promise {\r\n try {\r\n this.isLoading = true;\r\n\r\n const response = await fetch(\r\n ConfigService.getInstance().config.map.downloadApiUrl,\r\n {\r\n method: \"POST\",\r\n mode: \"cors\",\r\n cache: \"no-cache\",\r\n credentials: \"same-origin\",\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n redirect: \"follow\",\r\n referrerPolicy: \"no-referrer\",\r\n body: JSON.stringify({\r\n firstname: this.firstName,\r\n lastname: this.lastName,\r\n email: this.email,\r\n purpose: this.purpose\r\n })\r\n }\r\n );\r\n\r\n this.isLoading = false;\r\n\r\n if (response.ok) {\r\n this.visibilityClass = \"false\";\r\n window.open(this.downloadUrl);\r\n } else {\r\n this.isError = true;\r\n\r\n setTimeout(() => {\r\n this.isError = false;\r\n }, 3000);\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n this.isLoading = false;\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DownloadLayer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DownloadLayer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=7f28b5c8&scoped=true&\"\nimport script from \"./DownloadLayer.vue?vue&type=script&lang=ts&\"\nexport * from \"./DownloadLayer.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?vue&type=style&index=0&id=7f28b5c8&lang=scss&scoped=true&\"\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 \"7f28b5c8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"search md-elevation-3\",class:{ expanded: _vm.state.expanded }},[(_vm.state.expanded)?_c('span',{staticClass:\"searchIcon backIcon material-icons\",on:{\"click\":function($event){_vm.state.expanded = !_vm.state.expanded}}},[_vm._v(\"double_arrow\")]):_vm._e(),(!_vm.state.expanded)?_c('span',{staticClass:\"searchIcon material-icons\",on:{\"click\":function($event){_vm.state.expanded = !_vm.state.expanded}}},[_vm._v(\"search\")]):_vm._e(),(_vm.state.expanded)?_c('div',{staticClass:\"searchContainer\"},[_c('md-autocomplete',{attrs:{\"md-options\":_vm.state.searchAllResults.map(function (x){ return ({\r\n 'label':x.label,\r\n 'layerName':x.label,\r\n 'feature': x.feature,\r\n 'toLowerCase':function (){ return x.label.toLowerCase(); },\r\n 'toString':function (){ return x.label; }\r\n }); }),\"md-input-placeholder\":_vm.state.isLoading ? _vm.$t('translate.search.loading') : _vm.$t('translate.search.placeholder'),\"md-open-on-focus\":false,\"md-layout\":\"box\",\"md-dense\":\"\"},on:{\"md-selected\":_vm.onSelectSearchItem},model:{value:(_vm.state.selectedSearchItem),callback:function ($$v) {_vm.$set(_vm.state, \"selectedSearchItem\", $$v)},expression:\"state.selectedSearchItem\"}})],1):_vm._e(),(_vm.state.isLoading && _vm.state.expanded)?_c('md-icon',{staticClass:\"loadingIcon\"},[_vm._v(\"cached\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { QueryService } from \"../../services/queryService\";\r\nimport { ConfigService } from \"../../services/configService\";\r\nimport { ISearchConfig } from \"../../interfaces/ISearchConfig\";\r\nimport { MappingService } from \"@/services/mappingService\";\r\nimport { bus } from \"../../main\";\r\n\r\ninterface State {\r\n expanded: boolean;\r\n searchAllResults: any;\r\n selectedSearchItem: any;\r\n isLoading: boolean;\r\n}\r\n\r\n@Component\r\nexport default class Search extends Vue {\r\n private state: State = {\r\n expanded: false,\r\n searchAllResults: [],\r\n selectedSearchItem: null,\r\n isLoading: false\r\n };\r\n\r\n /**\r\n * Created\r\n */\r\n private created(): void {\r\n const searchConfig: ISearchConfig[] = ConfigService.getInstance().config\r\n .search;\r\n const searchLayers: string[] = searchConfig.map((config: ISearchConfig) => {\r\n return config.layer;\r\n });\r\n\r\n this.state.isLoading = true;\r\n QueryService.queryFeatures(\r\n QueryService.createFeatureRequest(searchLayers)\r\n ).then((features: any[]) => {\r\n this.constructSearchData(features);\r\n this.state.isLoading = false;\r\n });\r\n }\r\n\r\n /**\r\n * Construct search data\r\n */\r\n private constructSearchData(features: any[]): void {\r\n const searchConfig: ISearchConfig[] = ConfigService.getInstance().config\r\n .search;\r\n const searchLayersConf: any = {};\r\n const duplicatesArr: any = {};\r\n\r\n searchConfig.forEach((config: ISearchConfig) => {\r\n const layerName: string =\r\n config.layer.indexOf(\":\") > -1\r\n ? config.layer.split(\":\")[1]\r\n : config.layer;\r\n\r\n if (!searchLayersConf[layerName]) searchLayersConf[layerName] = config;\r\n });\r\n\r\n features.forEach((feat: any) => {\r\n const layerName: string = feat.getId().split(\".\")[0];\r\n let label: string = searchLayersConf[layerName].displayField;\r\n\r\n for (const key in feat.getProperties()) {\r\n label = label.replaceAll(`{${key}}`, feat.getProperties()[key]);\r\n }\r\n\r\n if (!this.state.searchAllResults[layerName])\r\n this.state.searchAllResults[layerName] = [];\r\n\r\n if (!duplicatesArr[layerName]) duplicatesArr[layerName] = [];\r\n\r\n if (duplicatesArr[layerName].indexOf(label) === -1) {\r\n\r\n this.state.searchAllResults.push({\r\n label: `${this.$t(searchLayersConf[layerName].label)} - ${label}`,\r\n feature: feat,\r\n layerName: layerName\r\n });\r\n\r\n duplicatesArr[layerName].push(label);\r\n }\r\n });\r\n\r\n //Sort data\r\n this.state.searchAllResults.sort((a, b) => (a.label > b.label ? 1 : -1));\r\n }\r\n\r\n /**\r\n * Handle select search item\r\n */\r\n private onSelectSearchItem(): void {\r\n MappingService.getInstance().zoomToGeom(\r\n this.state.selectedSearchItem.feature\r\n );\r\n bus.$emit(\"ArxShowPopup\", this.state.selectedSearchItem.feature);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Search.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Search.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=7247ad3b&\"\nimport script from \"./Search.vue?vue&type=script&lang=ts&\"\nexport * from \"./Search.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?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\nexport default component.exports","\n\n\n\n\n\n\n\n\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\nimport ArxMap from \"@/components/ArxMap/ArxMap.vue\";\nimport DownloadLayer from \"@/components/DownloadLayer/DownloadLayer.vue\";\nimport Search from \"@/widgets/Search/Search.vue\";\nimport { Route } from \"vue-router\";\n\n@Component({\n components: {\n ArxMap,\n Search,\n DownloadLayer\n }\n})\nexport default class Home extends Vue {\n private mapKey = 0;\n\n @Watch(\"$route\", { immediate: true, deep: true })\n onUrlChange(newRoute: Route) {\n if (newRoute.name === \"MapWithParam\") {\n this.mapKey = new Date().getTime();\n //this.$refs.arxMap.reinitializeMapLayers();\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Map.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Map.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Map.vue?vue&type=template&id=f8059efa&\"\nimport script from \"./Map.vue?vue&type=script&lang=ts&\"\nexport * from \"./Map.vue?vue&type=script&lang=ts&\"\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\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"homeThematics\"},[_c('div',{staticClass:\"rowItems\"},[_vm._l((_vm.thematics),function(thematic,i){return [(i < 2)?_c('ThematicItem',{key:i,attrs:{\"index\":i,\"thematicItem\":thematic}}):_vm._e()]})],2),_c('div',{staticClass:\"rowItems\"},[_vm._l((_vm.thematics),function(thematic,i){return [(i > 1)?_c('ThematicItem',{key:i,attrs:{\"index\":i,\"thematicItem\":thematic}}):_vm._e()]})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[ 'thematicItem', _vm.iconClass ],on:{\"click\":_vm.showThematic}},[_c('img',{staticClass:\"thematicIcon\",attrs:{\"src\":_vm.getIcon(),\"alt\":_vm.thematicItem.subtitle}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { ConfigService } from \"@/services/configService\";\r\nimport { IThematicConfig } from \"../../interfaces/IThematicConfig\";\r\n\r\n@Component\r\nexport default class ThematicItem extends Vue {\r\n private iconClass = \"\";\r\n\r\n @Prop({ default: \"\" })\r\n index: string;\r\n\r\n @Prop({ default: \"\" })\r\n thematicItem: IThematicConfig;\r\n\r\n private mounted(): void {\r\n this.iconClass = `iconPosition_${this.index}`;\r\n }\r\n\r\n /**\r\n * Get icon\r\n */\r\n private getIcon(): any {\r\n return require(`@/assets/thematics/${this.$i18n.locale}/${this.thematicItem.id.toLowerCase()}/${\r\n this.thematicItem.icon\r\n }`);\r\n }\r\n\r\n /**\r\n * Show thematic\r\n */\r\n private async showThematic(): Promise {\r\n try {\r\n await ConfigService.getInstance().loadConfig(this.thematicItem.id);\r\n\r\n if (this.thematicItem.isMap) {\r\n this.$router.push({\r\n name: \"MapWithParam\",\r\n params: { thematic: this.thematicItem.id }\r\n });\r\n } else {\r\n this.$router.push({\r\n name: \"ThematicWithParam\",\r\n params: { thematic: this.thematicItem.id }\r\n });\r\n }\r\n } catch (err) {\r\n console.error(\"Unable to load configuration from config.json !\");\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThematicItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThematicItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=297409b2&scoped=true&\"\nimport script from \"./ThematicItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./ThematicItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?vue&type=style&index=0&id=297409b2&lang=scss&scoped=true&\"\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 \"297409b2\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\nimport ThematicItem from \"@/components/ThematicItem/ThematicItem.vue\";\nimport { ConfigService } from \"@/services/configService\";\nimport { UtilsService } from \"@/services/utilsService\";\nimport { IThematicConfig } from \"@/interfaces/IThematicConfig\";\n\n@Component({\n components: {\n ThematicItem\n }\n})\nexport default class Home extends Vue {\n private thematics: IThematicConfig[] = [];\n\n private mounted(): void {\n this.thematics = ConfigService.getInstance().config.thematics;\n\n if (UtilsService.getInstance().isMobileScreen()) {\n setTimeout(() => {\n this.$router.push({\n name: \"MapWithLatLngParam\",\n params: { \n thematic: ConfigService.getInstance().config.thematics[0].id, \n lat: `${UtilsService.getInstance().lat}`, \n lng: `${UtilsService.getInstance().lng}`\n }\n });\n }, 500);\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=daf235ba&scoped=true&\"\nimport script from \"./Home.vue?vue&type=script&lang=ts&\"\nexport * from \"./Home.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=daf235ba&lang=scss&scoped=true&\"\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 \"daf235ba\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"thematicPageDiv\"},[(_vm.currentThematic.toLowerCase() === 'sar')?_c('md-card',[_c('md-card-header',[_c('h1',[_vm._v(_vm._s(_vm.$t('translate.thematics.sar.pageTitle')))])]),_c('md-card-content',[_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.thematics.sar.whatISSar')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.sar.whatISSarText1'))}}),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.sar.whatISSarText2'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.thematics.sar.methodology')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.sar.methodologyText'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.thematics.sar.exampleOfResult')))],1),_c('p'),_c('p',[_c('img',{staticClass:\"thematicImg\",attrs:{\"src\":_vm.getImage('national_result_example_1.png')}})]),_c('p',[_c('img',{staticClass:\"thematicImg\",attrs:{\"src\":_vm.getImage('national_result_example_2.png')}})]),_c('p',[_c('i',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.sar.comparativeAnalysis'))}})]),_c('p',[_c('i',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.sar.downloadLink1'))}})]),_c('p',[_c('i',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.sar.downloadLink2'))}})]),_c('p',[_c('i',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.sar.downloadLink3'))}})]),_c('p',[_c('i',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.sar.downloadLink4'))}})]),_c('p',[_c('i',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.sar.downloadLink5'))}})]),_c('p',[_c('i',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.sar.downloadLink6'))}})]),_c('p',[_c('i',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.sar.downloadLink7'))}})]),_c('p',[_c('i',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.sar.downloadLink8'))}})]),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.thematics.sar.statusOfActivities')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.sar.statusOfActivitiesText'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.thematics.sar.useOfSAR')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.sar.useOfSARText1'))}}),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.sar.useOfSARText2'))}}),_c('p',{staticClass:\"logosDiv\"},[_c('img',{attrs:{\"src\":_vm.getImage('logos.png')}})])])],1):_vm._e(),(_vm.currentThematic.toLowerCase() === 'policy')?_c('md-card',[_c('md-card-header',[_c('h1',[_vm._v(_vm._s(_vm.$t('translate.thematics.policy.pageTitle')))])]),_c('md-card-content',[_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.thematics.policy.storyMap')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.policy.storyMapText'))}}),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.policy.moreInformationText'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.thematics.policy.methodology')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.policy.methodologyText'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.thematics.policy.exampleOfResults')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.policy.exampleOfResultsText1'))}}),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.policy.exampleOfResultsText2'))}}),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.policy.exampleOfResultsLink1'))}}),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.policy.exampleOfResultsLink2'))}}),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.policy.exampleOfResultsLink3'))}}),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.policy.exampleOfResultsLink4'))}}),_c('p',[_c('img',{staticClass:\"thematicImg\",attrs:{\"src\":_vm.getImage('result_example_1.png')}})]),_c('p',[_c('i',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.policy.maizeProblems'))}})]),_c('p',[_c('img',{staticClass:\"thematicImg\",attrs:{\"src\":_vm.getImage('result_example_2.png')}})]),_c('p',[_c('i',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.policy.maizeScenario'))}})]),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.thematics.policy.statusOfActivities')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.policy.statusOfActivitiesText'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.thematics.policy.useForPolicyMaking')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.policy.useForPolicyMakingText1'))}}),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.thematics.policy.useForPolicyMakingText2'))}}),_c('p',{staticClass:\"logosDiv\"},[_c('img',{attrs:{\"src\":_vm.getImage('logos.png')}})])])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { Route } from \"vue-router\";\r\n\r\n@Component\r\nexport default class ThematicItem extends Vue {\r\n private currentThematic = \"\";\r\n\r\n @Watch(\"$route\", { immediate: true, deep: true })\r\n onUrlChange(newRoute: Route) {\r\n if (newRoute.name === \"ThematicWithParam\") {\r\n this.currentThematic = newRoute.params.thematic;\r\n }\r\n }\r\n\r\n /**\r\n * Get image\r\n */\r\n private getImage(image: string): any {\r\n return require(`@/assets/thematics/en/${this.currentThematic.toLowerCase()}/${image}`);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThematicPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThematicPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=5863a128&scoped=true&\"\nimport script from \"./ThematicPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ThematicPage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?vue&type=style&index=0&id=5863a128&lang=scss&scoped=true&\"\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 \"5863a128\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"creditsPageDiv\"},[_c('md-card',[_c('md-card-header',[_c('h1',[_vm._v(_vm._s(_vm.$t('translate.creditsPage.pageTitle')))])]),_c('md-card-content',[_c('div',{staticClass:\"logoDiv\"},[_c('img',{staticClass:\"logoImg1\",attrs:{\"src\":_vm.getImage('credit-img-01.png')}}),_c('img',{staticClass:\"logoImg1\",attrs:{\"src\":_vm.getImage('credit-img-02.png')}}),_c('img',{staticClass:\"logoImg1\",attrs:{\"src\":_vm.getImage('credit-img-03.png')}}),_c('img',{staticClass:\"logoImg1\",attrs:{\"src\":_vm.getImage('credit-img-04.png')}}),_c('img',{staticClass:\"logoImg1\",attrs:{\"src\":_vm.getImage('credit-img-05.png')}})]),_c('div',{staticClass:\"logoDiv\"},[_c('img',{staticClass:\"logoImg2\",attrs:{\"src\":_vm.getImage('credit-img-06.png')}}),_c('img',{staticClass:\"logoImg2\",attrs:{\"src\":_vm.getImage('credit-img-07.png')}}),_c('img',{staticClass:\"logoImg2\",attrs:{\"src\":_vm.getImage('credit-img-08.png')}}),_c('img',{staticClass:\"logoImg2\",attrs:{\"src\":_vm.getImage('credit-img-09.png')}})]),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.contributingEntities')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.creditsPage.contributingEntitiesText1'))}}),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.creditsPage.contributingEntitiesText2'))}}),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.creditsPage.contributingEntitiesText3'))}}),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.creditsPage.contributingEntitiesText4'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.projectLeaders')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.creditsPage.projectLeadersText'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.scientificLeader')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.creditsPage.scientificLeaderText'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.projectManagement')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.creditsPage.projectManagementText1'))}}),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.creditsPage.projectManagementText2'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.FAOInternationalExperts')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.creditsPage.FAOInternationalExpertsText'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.DALaM')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.creditsPage.DALaMText'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.NAFRI')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.creditsPage.NAFRIText'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.DMH')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.creditsPage.DMHText'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.CIAT')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.creditsPage.CIATText'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.university')))],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.creditsPage.universityText'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(\" \"+_vm._s(_vm.$t('translate.creditsPage.arxiT'))+\" \"),_c('a',{attrs:{\"href\":\"https://www.arxit.com/en\",\"target\":\"blank\"}},[_c('img',{staticClass:\"icon\",attrs:{\"src\":_vm.getImage('logo_arxit.png')}}),_vm._v(\"https://www.arxit.com\")])],1),_c('p'),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.$t('translate.creditsPage.arxiTText'))}}),_c('p'),_c('h2',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.privacyPolicy.title')))],1),_c('p'),_c('p',[_vm._v(_vm._s(_vm.$t('translate.creditsPage.privacyPolicy.description')))]),_c('h3',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.privacyPolicy.lastUpdate')))],1),_c('p',[_vm._v(_vm._s(_vm.$t('translate.creditsPage.privacyPolicy.lastUpdateDescription')))]),_c('h3',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.privacyPolicy.collectingData')))],1),_c('p',[_vm._v(_vm._s(_vm.$t('translate.creditsPage.privacyPolicy.collectingDataDescription')))]),_c('h3',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.privacyPolicy.location')))],1),_c('p',[_vm._v(_vm._s(_vm.$t('translate.creditsPage.privacyPolicy.locationDescription')))]),_c('h3',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.privacyPolicy.trackingTools')))],1),_c('p',[_vm._v(_vm._s(_vm.$t('translate.creditsPage.privacyPolicy.trackingToolsDescription')))]),_c('h3',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.privacyPolicy.thirdPartyAccess')))],1),_c('p',[_vm._v(_vm._s(_vm.$t('translate.creditsPage.privacyPolicy.thirdPartyAccessDescription')))]),_c('h3',[_c('md-icon',[_vm._v(\"arrow_right\")]),_vm._v(_vm._s(_vm.$t('translate.creditsPage.privacyPolicy.consent')))],1),_c('p',[_vm._v(_vm._s(_vm.$t('translate.creditsPage.privacyPolicy.consentDescription')))]),_c('p')])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\n\r\n@Component\r\nexport default class Credits extends Vue {\r\n /**\r\n * Get image\r\n */\r\n private getImage(image: string): any {\r\n return require(`@/assets/credits/${image}`);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Credits.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Credits.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./template.html?vue&type=template&id=fb14841e&scoped=true&\"\nimport script from \"./Credits.vue?vue&type=script&lang=ts&\"\nexport * from \"./Credits.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./style.scss?vue&type=style&index=0&id=fb14841e&lang=scss&scoped=true&\"\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 \"fb14841e\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\nimport VueRouter, { RouteConfig } from \"vue-router\";\nimport Map from \"../views/Map.vue\";\nimport Home from \"../views/Home.vue\";\nimport ThematicPage from \"../views/ThematicPage/ThematicPage.vue\";\nimport Credits from \"../views/Credits/Credits.vue\";\n\nVue.use(VueRouter);\n\nconst routes: Array = [\n {\n path: \"/\",\n name: \"Home\",\n component: Home\n },\n {\n path: \"/?thematic=:thematic\",\n name: \"MapWithParam\",\n component: Map\n },\n {\n path: \"/?thematic=:thematic&lat=:lat&lng=:lng\",\n name: \"MapWithLatLngParam\",\n component: Map\n },\n {\n path: \"/?thematic=:thematic\",\n name: \"ThematicWithParam\",\n component: ThematicPage\n },\n {\n path: \"/credits\",\n name: \"CreditsWithParam\",\n component: Credits\n },\n {\n path: \"/help\",\n name: \"HelpWithParam\",\n beforeEnter() {\n window.open(\"./config/Help.pdf\", \"_blank\");\n }\n }\n];\n\nconst router = new VueRouter({\n mode: \"history\",\n base: process.env.BASE_URL,\n routes\n});\n\nexport default router;\n","import Vue from 'vue'\nimport Vuex from 'vuex'\n\nVue.use(Vuex)\n\nexport default new Vuex.Store({\n state: {\n\n },\n mutations: {\n\n },\n actions: {\n\n }\n})\n","import Vue from \"vue\";\nimport VueI18n, { LocaleMessages } from \"vue-i18n\";\n\nVue.use(VueI18n);\n\nfunction loadLocaleMessages(): LocaleMessages {\n const locales = require.context(\n \"./locales\",\n true,\n /[A-Za-z0-9-_,\\s]+\\.json$/i\n );\n const messages: LocaleMessages = {};\n locales.keys().forEach(key => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i);\n if (matched && matched.length > 1) {\n const locale = matched[1];\n messages[locale] = locales(key);\n }\n });\n return messages;\n}\n\nexport default new VueI18n({\n locale: process.env.VUE_APP_I18N_LOCALE || \"en\",\n fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || \"en\",\n messages: loadLocaleMessages()\n});\n","import Vue from \"vue\";\r\nimport App from \"./App.vue\";\r\nimport router from \"./router\";\r\nimport store from \"./store\";\r\n\r\n\r\n// Vue material\r\nimport VueMaterial from \"vue-material\";\r\nimport \"vue-material/dist/vue-material.min.css\";\r\nimport i18n from \"./i18n\";\r\nVue.use(VueMaterial);\r\n\r\n//Event bus\r\nexport const bus = new Vue();\r\n\r\nVue.config.productionTip = false;\r\n\r\nnew Vue({\r\n router,\r\n store,\r\n i18n,\r\n render: h => h(App)\r\n}).$mount(\"#app\");\r\n","module.exports = __webpack_public_path__ + \"img/AEZ.224fb9ee.png\";","module.exports = __webpack_public_path__ + \"img/SAR.8ffac712.png\";","module.exports = __webpack_public_path__ + \"img/en.a0f21f7b.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=daf235ba&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/credit-img-03.afd9c650.png\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&id=4892e61e&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/credit-img-02.7f6b801e.png\";","module.exports = __webpack_public_path__ + \"img/credit-img-01.8fe4c84e.png\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./style.scss?vue&type=style&index=0&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/SAR.796628c7.png\";","module.exports = __webpack_public_path__ + \"img/national_result_example_1.1885e9be.png\";","module.exports = __webpack_public_path__ + \"img/credit-img-07.d1f61d41.png\";","module.exports = __webpack_public_path__ + \"img/credit-img-05.8466882a.png\";"],"sourceRoot":""}