\n );\n\n case AppState.ERROR:\n return ;\n\n case AppState.INITIAL:\n case AppState.LOADING:\n return ;\n }\n };\n\n render() {\n return (\n <>\n (\n \n )}\n />\n \n \n \n \n \n >\n );\n }\n}\n","import {InjectedIntl} from 'react-intl';\nimport {TopolaError} from './error';\n\n/**\n * Returns a translated message for the given error. If the message can't be\n * translated, the original error.message is returned.\n */\nexport function getI18nMessage(error: Error, intl: InjectedIntl): string {\n if (!(error instanceof TopolaError)) {\n return error.message;\n }\n return intl.formatMessage(\n {\n id: `error.${error.code}`,\n defaultMessage: error.message,\n },\n error.args,\n );\n}\n","import * as locale_de from 'react-intl/locale-data/de';\nimport * as locale_en from 'react-intl/locale-data/en';\nimport * as locale_fr from 'react-intl/locale-data/fr';\nimport * as locale_it from 'react-intl/locale-data/it';\nimport * as locale_pl from 'react-intl/locale-data/pl';\nimport * as locale_ru from 'react-intl/locale-data/ru';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport messages_de from './translations/de.json';\nimport messages_fr from './translations/fr.json';\nimport messages_it from './translations/it.json';\nimport messages_pl from './translations/pl.json';\nimport messages_ru from './translations/ru.json';\nimport {addLocaleData} from 'react-intl';\nimport {App} from './app';\nimport {detect} from 'detect-browser';\nimport {HashRouter as Router, Route} from 'react-router-dom';\nimport {IntlProvider} from 'react-intl';\nimport './index.css';\nimport 'semantic-ui-css/semantic.min.css';\nimport 'canvas-toBlob';\n\naddLocaleData([\n ...locale_de,\n ...locale_en,\n ...locale_fr,\n ...locale_it,\n ...locale_pl,\n ...locale_ru,\n]);\n\nconst messages = {\n de: messages_de,\n fr: messages_fr,\n it: messages_it,\n pl: messages_pl,\n ru: messages_ru,\n};\nconst language = navigator.language && navigator.language.split(/[-_]/)[0];\n\nconst browser = detect();\n\nif (browser && browser.name === 'ie') {\n ReactDOM.render(\n
\n Topola Genealogy Viewer does not support Internet Explorer. Please try a\n different (modern) browser.\n
,\n document.querySelector('#root'),\n );\n} else {\n ReactDOM.render(\n \n \n \n \n ,\n document.querySelector('#root'),\n );\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["menu/wikitree.png","topola.jpg","util/analytics.ts","chart.tsx","util/error.ts","util/gedcom_util.ts","util/date_util.ts","details.tsx","datasource/load_data.ts","datasource/embedded.ts","intro.tsx","menu/menu_item.tsx","menu/upload_menu.tsx","menu/url_menu.tsx","datasource/wikitree.ts","menu/wikitree_menu.tsx","menu/search_index.ts","menu/search.tsx","menu/top_bar.tsx","datasource/data_source.ts","app.tsx","util/error_i18n.ts","index.tsx"],"names":["module","exports","analyticsEvent","action","data","window","gtag","ChartType","zoomed","size","parent","select","node","scale","event","transform","k","offsetX","max","clientWidth","offsetY","clientHeight","attr","scrollLeft","x","scrollTop","y","scrolled","zoomTransform","call","zoom","translateTo","loadAsDataUrl","blob","reader","FileReader","readAsDataURL","Promise","resolve","reject","onload","e","target","result","inlineImage","image","a","href","baseVal","fetch","response","dataUrl","console","warn","inlineImages","svg","images","Array","from","getElementsByTagName","all","map","loadImage","Image","src","URL","createObjectURL","addEventListener","drawOnCanvas","canvas","document","createElement","width","height","ctx","getContext","oldFill","fillStyle","fillRect","drawImage","canvasToBlob","type","toBlob","Chart","chart","animating","rerenderRequired","zoomBehavior","this","props","chartType","Hourglass","HourglassChart","Relatives","RelativesChart","Fancy","FancyChart","CircleRenderer","DetailedRenderer","factor","scaleBy","args","initialRender","freezeAnimation","innerHTML","createChart","json","getChartType","renderer","getRendererType","svgSelector","indiCallback","info","onSelection","animate","updateSvgSize","locale","context","intl","setData","chartInfo","render","startIndi","selection","id","baseGeneration","generation","zoomOutFactor","min","extent","scaleExtent","translateExtent","on","scrollTopTween","i","interpolateNumber","t","scrollLeftTween","dx","origin","dy","svgTransition","transition","delay","duration","tween","animationPromise","then","renderChart","prevProps","Responsive","minWidth","className","onClick","getElementById","cloneNode","removeAttribute","setAttribute","String","Number","getAttribute","querySelector","XMLSerializer","serializeToString","getStrippedSvg","printWindow","style","position","top","left","contentDocument","open","write","getSvgContents","close","setTimeout","contentWindow","focus","print","parentNode","removeChild","body","appendChild","getSvgContentsWithInlinedImages","contents","Blob","saveAs","jspdf","default","doc","orientation","unit","format","addImage","save","React","contextTypes","intlShape","TopolaError","code","message","Error","pointerToId","pointer","substring","length","idToIndiMap","Map","indis","forEach","indi","set","idToFamMap","fams","fam","prepareGedcom","entries","head","find","entry","tag","other","strcmp","b","compareDates","event1","event2","date1","date","dateRange","date2","year","month","day","sortChildren","gedcom","comparator","indiMap","indiId1","indiId2","indi1","get","indi2","birth","birthDatesComparator","newFams","children","newChildren","sort","Object","assign","sortFamilyChildren","sortSpouses","famMap","famId1","famId2","fam1","fam2","marriage","marriageDatesComparator","newIndis","sortIndiSpouses","normalizeGedcom","IMAGE_EXTENSIONS","filterImage","newImages","fileName","url","match","has","push","title","startsWith","lowerName","toLowerCase","some","ext","endsWith","isImageFile","filterImages","getSoftware","sour","tree","name","DATE_QUALIFIERS","formatDate","hasDay","undefined","hasMonth","hasYear","text","dateObject","Date","qualifier","formatOptions","formatMessage","defaultMessage","Intl","DateTimeFormat","join","formatDateOrRange","dateOrRange","fromDate","toDate","to","translatedFromDate","translatedToDate","formatDateRage","EVENT_TAGS","EXCLUDED_TAGS","TAG_DESCRIPTIONS","translateTag","normalizedTag","replace","joinLines","lines","line","index","key","properties","getData","subentry","last","eventDetails","gedcomDate","getDate","translateDate","place","filter","note","noteDetails","nameDetails","split","getDetails","tags","detailsFunction","flatMap","element","hasData","getOtherDetails","includes","dataDetails","Details","entriesWithData","dereferenced","dereference","getSelection","prepareData","cacheId","parseGedcom","gedcomEntriesToJson","chartData","convertGedcom","serializedData","JSON","stringify","sessionStorage","setItem","loadFromUrl","handleCors","cachedData","getItem","parse","driveUrlMatch1","driveUrlMatch2","urlToFetch","status","statusText","loadGedcom","hash","EmbeddedMessageType","UploadedDataSource","newSource","oldSource","spec","source","event_label","event_value","GedcomUrlDataSource","EmbeddedDataSource","PARENT_READY","postMessage","READY","GEDCOM","onMessage","GedcomLink","Link","pathname","search","queryString","Intro","values","link","process","slice","Card","as","Content","Header","Grid","Row","Column","logo","alt","maxWidth","centered","MenuType","MenuItem","newProps","menuType","Menu","Item","Dropdown","loadFileAsText","file","evt","readAsText","isImageFileName","lower","UploadMenu","files","filesArray","value","gedcomFile","imageMap","imageFileNames","md5","location","history","state","content","Icon","htmlFor","accept","multiple","onChange","handleUpload","UrlMenu","dialogOpen","inputRef","setState","current","Modal","onClose","handleClose","txt","Form","onSubmit","handleLoad","Input","placeholder","fluid","handleUrlChange","ref","Actions","Button","secondary","primary","openDialog","loadFromUrlModal","getSessionStorageItem","setSessionStorageItem","wikiTreeGet","request","requestData","FormData","append","apiUrl","method","credentials","responseBody","getAncestors","cacheKey","fields","ancestors","getRelatives","keys","keysToFetch","getChildren","getSpouses","items","fetchedResults","person","Name","concat","clientLogin","authcode","getLoggedInUserName","Cookies","loadWikiTree","hostname","loginResult","clear","username","everyone","firstPerson","spouseKeys","Spouses","s","personId","ancestorKeys","flat","ancestorDetails","privateFathers","privateMothers","ancestorList","offset","Id","Father","Mother","privateFather","privateMother","privateAncestors","descendantGenerationLimit","toFetch","people","allSpouses","Children","c","families","spouses","idToName","famId","getFamilyId","getSet","add","wife","husband","converted","Set","convertPerson","spouse","familySpouses","Gender","husb","child","marriage_date","marriage_location","parsedDate","parseDate","buildGedcom","spouse1","spouse2","hideId","firstName","FirstName","RealName","LastNameAtBirth","lastName","famc","sex","BirthDate","BirthLocation","BirthDateDecade","DataStatus","parseDecade","DeathDate","DeathLocation","DeathDateDecade","death","PhotoData","dataStatus","matchedDate","decade","gedcomIndis","escapedId","level","newSet","WikiTreeLoginState","WikiTreeDataSource","WikiTreeMenu","wikiTreeId","standalone","preventDefault","handleIdChange","wikitreeLogo","handleSelectId","wikiTreeLink","rel","example1","enterId","example2","wikiTreeIdModal","WikiTreeLoginMenu","wikiTreeLoginState","UNKNOWN","wikiTreeLoginFormRef","wikiTreeReturnUrlRef","returnUrl","submit","wikiTreeLoginUsername","LOGGED_IN","NOT_LOGGED_IN","checkWikiTreeLoginState","wikiTreeLogin","display","tooltip","require","lunr","normalize","input","toLocaleLowerCase","compare","score","naturalSort","LunrSearchIndex","self","use","multiLanguage","field","boost","spouseLastName","husbId","getHusbandLastName","normalizedName","normalizedSpouseLastName","query","getNameLine","trim","ScreenSize","SearchBar","searchResults","searchRef","searchIndex","birthDate","deathDate","description","getDescriptionLine","results","displaySearchResult","setValue","initialize","buildSearchIndex","initializeSearchIndex","Search","onSearchChange","debounce","_","handleSearch","onResultSelect","handleResultSelect","noResultsMessage","selectFirstResult","DataSourceEnum","AppState","TopBar","view","screenSize","showingChart","chartTypeItems","changeView","allowAllRelativesChart","LARGE","eventHandlers","onPrint","trigger","onDownloadPdf","onDownloadPng","onDownloadSvg","SMALL","Divider","showWikiTreeMenus","icon","fileMenus","chartMenus","wikiTreeLoginMenu","attached","inverted","color","desktopMenus","mobileMenus","ErrorMessage","Message","negative","ErrorPopup","Portal","onDismiss","getArguments","getParam","chartTypes","embedded","sourceSpec","WIKITREE","UPLOADED","GEDCOM_URL","EMBEDDED","parsedGen","isNaN","showSidePanel","App","INITIAL","showErrorPopup","chartRef","uploadedDataSource","gedcomUrlDataSource","wikiTreeDataSource","embeddedDataSource","gen","downloadPdf","downloadPng","downloadSvg","onDismissErrorPopup","renderMainArea","SHOWING_CHART","LOADING_MORE","error","Loader","active","ERROR","LOADING","otherStateChanges","changes","componentDidUpdate","oldSouce","isNewData","loadData","setError","loadMoreFromWikitree","updateDisplay","Route","Switch","exact","path","component","Redirect","addLocaleData","locale_de","locale_en","locale_fr","locale_it","locale_pl","locale_ru","messages","de","messages_de","fr","messages_fr","it","messages_it","pl","messages_pl","ru","messages_ru","language","navigator","browser","detect","ReactDOM"],"mappings":"yGAAAA,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,oC,6stBCCpC,SAASC,EAAeC,EAAgBC,GAC5CC,OAAeC,KAAK,QAASH,EAAQC,G,IC6H5BG,E,oFAlGZ,SAASC,EAAOC,GACd,IAAMC,EAASC,YAAO,iBAAiBC,OAEjCC,EAAQC,IAAMC,UAAUC,EACxBC,EAAUC,YAAI,CAAC,GAAIR,EAAOS,YAAcV,EAAK,GAAKI,GAAS,IAC3DO,EAAUF,YAAI,CAAC,GAAIR,EAAOW,aAAeZ,EAAK,GAAKI,GAAS,IAClEF,YAAO,aACJW,KAAK,QAASb,EAAK,GAAKI,GACxBS,KAAK,SAAUb,EAAK,GAAKI,GACzBS,KAAK,YAHR,oBAGkCL,EAHlC,aAG8CG,EAH9C,MAIAT,YAAO,UAAUW,KAAK,YAAtB,gBAA4CT,EAA5C,MAEAH,EAAOa,YAAcT,IAAMC,UAAUS,EACrCd,EAAOe,WAAaX,IAAMC,UAAUW,EAItC,SAASC,IACP,IAAMjB,EAASC,YAAO,iBAAiBC,OACjCY,EAAId,EAAOa,WAAab,EAAOS,YAAc,EAC7CO,EAAIhB,EAAOe,UAAYf,EAAOW,aAAe,EAC7CR,EAAQe,YAAclB,GAAQM,EACpCL,YAAOD,GAAQmB,KAAKC,cAAOC,YAAaP,EAAIX,EAAOa,EAAIb,GAIzD,SAASmB,EAAcC,GACrB,IAAMC,EAAS,IAAIC,WAEnB,OADAD,EAAOE,cAAcH,GACd,IAAII,SAAgB,SAACC,EAASC,GACnCL,EAAOM,OAAS,SAACC,GAAD,OAAOH,EAASG,EAAEC,OAAsBC,Y,SAI7CC,E,8EAAf,WAA2BC,GAA3B,qBAAAC,EAAA,yDACQC,EAAOF,EAAME,KAAKC,QAD1B,0EAM2BC,MAAMF,GANjC,cAMUG,EANV,gBAOuBA,EAASjB,OAPhC,cAOUA,EAPV,iBAQ0BD,EAAcC,GARxC,QAQUkB,EARV,OASIN,EAAME,KAAKC,QAAUG,EATzB,kDAWIC,QAAQC,KAAK,wBAAb,MAXJ,2D,+BAoBeC,E,8EAAf,WAA4BC,GAA5B,eAAAT,EAAA,6DACQU,EAASC,MAAMC,KAAKH,EAAII,qBAAqB,UADrD,SAEQtB,QAAQuB,IAAIJ,EAAOK,IAAIjB,IAF/B,4C,sBAMA,SAASkB,EAAU7B,GACjB,IAAMY,EAAQ,IAAIkB,MAElB,OADAlB,EAAMmB,IAAMC,IAAIC,gBAAgBjC,GACzB,IAAII,SAA0B,SAACC,EAASC,GAC7CM,EAAMsB,iBAAiB,QAAQ,kBAAM7B,EAAQO,SAKjD,SAASuB,EAAavB,GACpB,IAAMwB,EAASC,SAASC,cAAc,UAEtCF,EAAOG,MAAsB,EAAd3B,EAAM2B,MACrBH,EAAOI,OAAwB,EAAf5B,EAAM4B,OAEtB,IAAMC,EAAML,EAAOM,WAAW,MACxBC,EAAUF,EAAIG,UAMpB,OALAH,EAAIG,UAAY,QAChBH,EAAII,SAAS,EAAG,EAAGT,EAAOG,MAAOH,EAAOI,QACxCC,EAAIG,UAAYD,EAEhBF,EAAIK,UAAUlC,EAAO,EAAG,EAAGwB,EAAOG,MAAOH,EAAOI,QACzCJ,EAGT,SAASW,EAAaX,EAA2BY,GAC/C,OAAO,IAAI5C,SAAc,SAACC,EAASC,GACjC8B,EAAOa,QAAO,SAACjD,GACTA,EACFK,EAAQL,GAERM,MAED0C,O,SAKK1E,O,yBAAAA,I,yBAAAA,I,kBAAAA,M,KAeL,IAAM4E,EAAb,4MACUC,WADV,IAGUC,WAAY,EAHtB,EAKUC,kBAAmB,EAL7B,EAOUC,kBAPV,+DAUI,OAAQC,KAAKC,MAAMC,WACjB,KAAKnF,EAAUoF,UACb,OAAOC,iBACT,KAAKrF,EAAUsF,UACb,OAAOC,iBACT,KAAKvF,EAAUwF,MACb,OAAOC,aACT,QAEE,OAAOJ,oBAnBf,wCAwBI,OAAQJ,KAAKC,MAAMC,WACjB,KAAKnF,EAAUwF,MACb,OAAOE,iBACT,QAEE,OAAOC,sBA7Bf,2BAiCeC,GACX,IAAMzF,EAASC,YAAO,iBACtB6E,KAAKD,aAAca,QAAQ1F,EAAQyF,KAnCvC,oCA2CgF,IAAD,OAAzDE,EAAyD,uDAAxB,CAACC,eAAe,GAEnE,GAAKD,EAAKC,gBAAiBd,KAAKH,WAMhC,GAAKgB,EAAKC,gBAAiBd,KAAKC,MAAMc,gBAAtC,CAIIF,EAAKC,eACN3F,YAAO,UAAUC,OAAuB4F,UAAY,GACrDhB,KAAKJ,MAAQqB,sBAAY,CACvBC,KAAMlB,KAAKC,MAAMrF,KACjBsF,UAAWF,KAAKmB,eAChBC,SAAUpB,KAAKqB,kBACfC,YAAa,SACbC,aAAc,SAACC,GAAD,OAAU,EAAKvB,MAAMwB,YAAYD,IAC/CE,SAAS,EACTC,eAAe,EACfC,OAAQ5B,KAAK6B,QAAQC,KAAKF,UAG5B5B,KAAKJ,MAAOmC,QAAQ/B,KAAKC,MAAMrF,MAEjC,IAAMoH,EAAYhC,KAAKJ,MAAOqC,OAAO,CACnCC,UAAWlC,KAAKC,MAAMkC,UAAUC,GAChCC,eAAgBrC,KAAKC,MAAMkC,UAAUG,aAEjCvE,EAAM5C,YAAO,aACbD,EAASC,YAAO,iBAAiBC,OAEjCC,EAAQe,YAAclB,GAAQM,EAC9B+G,EAAgBC,YAAI,CACxB,EACAnH,EACAH,EAAOS,YAAcqG,EAAU/G,KAAK,GACpCC,EAAOW,aAAemG,EAAU/G,KAAK,KAEjCwH,EAA2B,CAAC/G,YAAI,CAAC,GAAK6G,IAAkB,GAE9DvC,KAAKD,aAAezD,cACjBoG,YAAYD,GACZE,gBAAgB,CAAC,CAAC,EAAG,GAAIX,EAAU/G,OACnC2H,GAAG,QAAQ,kBAAM5H,EAAOgH,EAAU/G,SACrCE,YAAOD,GACJ0H,GAAG,SAAUzG,GACbE,KAAK2D,KAAKD,cAEb,IAAM8C,EAAiB,SAAC5G,GACtB,OAAO,WACL,IAAM6G,EAAIC,YAAkB7H,EAAOe,UAAWA,GAC9C,OAAO,SAAC+G,GACN9H,EAAOe,UAAY6G,EAAEE,MAIrBC,EAAkB,SAAClH,GACvB,OAAO,WACL,IAAM+G,EAAIC,YAAkB7H,EAAOa,WAAYA,GAC/C,OAAO,SAACiH,GACN9H,EAAOa,WAAa+G,EAAEE,MAKtBE,EAAKhI,EAAOS,YAAc,EAAIqG,EAAUmB,OAAO,GAAK9H,EACpD+H,EAAKlI,EAAOW,aAAe,EAAImG,EAAUmB,OAAO,GAAK9H,EACrDI,EAAUC,YAAI,CAClB,GACCR,EAAOS,YAAcqG,EAAU/G,KAAK,GAAKI,GAAS,IAE/CO,EAAUF,YAAI,CAClB,GACCR,EAAOW,aAAemG,EAAU/G,KAAK,GAAKI,GAAS,IAEhDgI,EAAgBtF,EACnBuF,aACAC,MAAM,KACNC,SAAS,KACNF,EAAazC,EAAKC,cAAgB/C,EAAMsF,EAC9CC,EACGxH,KAAK,YADR,oBACkCL,EADlC,aAC8CG,EAD9C,MAEGE,KAAK,QAASkG,EAAU/G,KAAK,GAAKI,GAClCS,KAAK,SAAUkG,EAAU/G,KAAK,GAAKI,GAClCwF,EAAKC,eACP5F,EAAOa,YAAcmH,EACrBhI,EAAOe,WAAamH,GAEpBC,EACGI,MAAM,aAAcR,GAAiBC,IACrCO,MAAM,YAAaZ,GAAgBO,IAIxCpD,KAAKH,WAAY,EACjBmC,EAAU0B,iBAAiBC,MAAK,WAC9B,EAAK9D,WAAY,EACb,EAAKC,mBACP,EAAKA,kBAAmB,EACxB,EAAK8D,YAAY,CAAC9C,eAAe,cAnGnCd,KAAKF,kBAAmB,IA9C9B,0CAuJIE,KAAK4D,YAAY,CAAC9C,eAAe,MAvJrC,yCA0JqB+C,GACjB,IAAM/C,EAAgBd,KAAKC,MAAMC,YAAc2D,EAAU3D,UACzDF,KAAK4D,YAAY,CAAC9C,oBA5JtB,+BAoKY,IAAD,OACP,OACE,uBAAKsB,GAAG,gBACN,gBAAC0B,EAAA,EAAD,CAAYC,SAAU,IAAKC,UAAU,QACnC,0BAAQA,UAAU,UAAUC,QAAS,kBAAM,EAAK3H,KAhStC,OAgSV,KAGA,0BACE0H,UAAU,WACVC,QAAS,kBAAM,EAAK3H,KAAK,EArSjB,OAmSV,WAOF,uBAAK8F,GAAG,YACN,qBAAGA,GAAG,cAnLhB,uCA2LI,IAAMrE,EAAMe,SAASoF,eAAe,YAAaC,WAAU,GAE3DpG,EAAIqG,gBAAgB,aACpB,IAAMlJ,EAASC,YAAO,iBAAiBC,OACjCC,EAAQe,YAAclB,GAAQM,EAWpC,OAVAuC,EAAIsG,aACF,QACAC,OAAOC,OAAOxG,EAAIyG,aAAa,UAAYnJ,IAE7C0C,EAAIsG,aACF,SACAC,OAAOC,OAAOxG,EAAIyG,aAAa,WAAanJ,IAE9C0C,EAAI0G,cAAc,UAAWL,gBAAgB,aAEtCrG,IA1MX,uCA8MI,OAAO,IAAI2G,eAAgBC,kBAAkB3E,KAAK4E,oBA9MtD,+KAkNU7G,EAAMiC,KAAK4E,iBAlNrB,SAmNU9G,EAAaC,GAnNvB,iCAoNW,IAAI2G,eAAgBC,kBAAkB5G,IApNjD,oIAwNW,IAAD,OACA8G,EAAc/F,SAASC,cAAc,UAC3C8F,EAAYC,MAAMC,SAAW,WAC7BF,EAAYC,MAAME,IAAM,UACxBH,EAAYC,MAAMG,KAAO,UACzBJ,EAAY7H,OAAS,WACnB6H,EAAYK,gBAAiBC,OAC7BN,EAAYK,gBAAiBE,MAAM,EAAKC,kBACxCR,EAAYK,gBAAiBI,QAE7BC,YAAW,WACTV,EAAYW,cAAeC,QAC3BZ,EAAYW,cAAeE,QAC3Bb,EAAYc,WAAYC,YAAYf,KACnC,MAEL/F,SAAS+G,KAAKC,YAAYjB,KAxO9B,sKA4O2B7E,KAAK+F,kCA5OhC,OA4OUC,EA5OV,OA6OUvJ,EAAO,IAAIwJ,KAAK,CAACD,GAAW,CAACvG,KAAM,kBACzCyG,iBAAOzJ,EAAM,cA9OjB,6QAkP2BuD,KAAK+F,kCAlPhC,cAkPUC,EAlPV,OAmPUvJ,EAAO,IAAIwJ,KAAK,CAACD,GAAW,CAACvG,KAAM,kBAnP7C,KAoPiBb,EApPjB,SAoPoCN,EAAU7B,GApP9C,yWAwPyBuD,KAAKpB,eAxP9B,cAwPUC,EAxPV,gBAyPuBW,EAAaX,EAAQ,aAzP5C,OAyPUpC,EAzPV,OA0PIyJ,iBAAOzJ,EAAM,cA1PjB,gRA+PmC,kCA/PnC,uBA+PoB0J,EA/PpB,EA+PWC,QA/PX,SAgQyBpG,KAAKpB,eAhQ9B,OAgQUC,EAhQV,QAiQUwH,EAAM,IAAIF,EAAM,CACpBG,YAAazH,EAAOG,MAAQH,EAAOI,OAAS,IAAM,IAClDsH,KAAM,KACNC,OAAQ,CAAC3H,EAAOG,MAAOH,EAAOI,WAE5BwH,SAAS5H,EAAQ,MAAO,EAAG,EAAGA,EAAOG,MAAOH,EAAOI,OAAQ,QAC/DoH,EAAIK,KAAK,cAvQb,4GAA2BC,iBAAdhH,EAgKJiH,aAAe,CACpB9E,KAAM+E,K,2DC9SGC,GAAb,kDACE,WACkBC,EAChBC,GAEC,IAAD,EADgBnG,EAChB,uDADgD,GAChD,4BACA,cAAMmG,IAJUD,OAGhB,EADgBlG,OAChB,EALJ,uBAAiCoG,QC8B1B,SAASC,GAAYC,GAC1B,OAAOA,EAAQC,UAAU,EAAGD,EAAQE,OAAS,GAGxC,SAASC,GAAY1M,GAC1B,IAAMyD,EAAM,IAAIkJ,IAIhB,OAHA3M,EAAK4M,MAAMC,SAAQ,SAACC,GAClBrJ,EAAIsJ,IAAID,EAAKtF,GAAIsF,MAEZrJ,EAGF,SAASuJ,GAAWhN,GACzB,IAAMyD,EAAM,IAAIkJ,IAIhB,OAHA3M,EAAKiN,KAAKJ,SAAQ,SAACK,GACjBzJ,EAAIsJ,IAAIG,EAAI1F,GAAI0F,MAEXzJ,EAGT,SAAS0J,GAAcC,GACrB,IAAMC,EAAOD,EAAQE,MAAK,SAACC,GAAD,MAAyB,SAAdA,EAAMC,OACrCZ,EAAsC,GACtCK,EAAqC,GACrCQ,EAAsC,GAU5C,OATAL,EAAQP,SAAQ,SAACU,GACG,SAAdA,EAAMC,IACRZ,EAAMN,GAAYiB,EAAMhB,UAAYgB,EACb,QAAdA,EAAMC,IACfP,EAAKX,GAAYiB,EAAMhB,UAAYgB,EAC1BA,EAAMhB,UACfkB,EAAMnB,GAAYiB,EAAMhB,UAAYgB,MAGjC,CAACF,OAAMT,QAAOK,OAAMQ,SAG7B,SAASC,GAAOhL,EAAWiL,GACzB,OAAIjL,EAAIiL,GACE,EAENjL,EAAIiL,EACC,EAEF,EAIT,SAASC,GACPC,EACAC,GAEA,IAAMC,EACJF,IAAWA,EAAOG,MAASH,EAAOI,WAAaJ,EAAOI,UAAU3K,MAC5D4K,EACJJ,IAAWA,EAAOE,MAASF,EAAOG,WAAaH,EAAOG,UAAU3K,MAClE,OAAKyK,GAAUA,EAAMI,MAASD,GAAUA,EAAMC,KAG1CJ,EAAMI,OAASD,EAAMC,KAChBJ,EAAMI,KAAOD,EAAMC,KAEvBJ,EAAMK,OAAUF,EAAME,QAGvBL,EAAMK,QAAUF,EAAME,OAGtBL,EAAMM,KAAOH,EAAMG,KAAON,EAAMM,MAAQH,EAAMG,KAFzCN,EAAMK,MAAQF,EAAME,MAHpB,EANA,EAgEX,SAASE,GAAaC,GACpB,IAAMC,EA/CR,SAA8BD,GAC5B,IAAME,EAAU/B,GAAY6B,GAE5B,OAAO,SAACG,EAAiBC,GACvB,IAAMC,EAA8BH,EAAQI,IAAIH,GAC1CI,EAA8BL,EAAQI,IAAIF,GAChD,OACEf,GAAagB,GAASA,EAAMG,MAAOD,GAASA,EAAMC,QAClDrB,GAAOgB,EAASC,IAuCDK,CAAqBT,GAClCU,EAAUV,EAAOtB,KAAKxJ,KAAI,SAACyJ,GAAD,OAjBlC,SACEA,EACAsB,GAEA,IAAKtB,EAAIgC,SACP,OAAOhC,EAET,IAAMiC,EAAcjC,EAAIgC,SAASE,KAAKZ,GACtC,OAAOa,OAAOC,OAAO,GAAIpC,EAAK,CAACgC,SAAUC,IASAI,CAAmBrC,EAAKsB,MACjE,OAAOa,OAAOC,OAAO,GAAIf,EAAQ,CAACtB,KAAMgC,IAkB1C,SAASO,GAAYjB,GACnB,IAAMC,EAtDR,SAAiCD,GAC/B,IAAMkB,EAASzC,GAAWuB,GAE1B,OAAO,SAACmB,EAAgBC,GACtB,IAAMC,EAA4BH,EAAOZ,IAAIa,GACvCG,EAA4BJ,EAAOZ,IAAIc,GAC7C,OACE/B,GAAagC,GAAQA,EAAKE,SAAUD,GAAQA,EAAKC,WACjDpC,GAAOgC,EAAQC,IA8CAI,CAAwBxB,GACrCyB,EAAWzB,EAAO3B,MAAMnJ,KAAI,SAACqJ,GAAD,OAbpC,SACEA,EACA0B,GAEA,IAAK1B,EAAKG,KACR,OAAOH,EAET,IAAMmC,EAAUnC,EAAKG,KAAKmC,KAAKZ,GAC/B,OAAOa,OAAOC,OAAO,GAAIxC,EAAM,CAACG,KAAMgC,IAMpCgB,CAAgBnD,EAAM0B,MAExB,OAAOa,OAAOC,OAAO,GAAIf,EAAQ,CAAC3B,MAAOoD,IAIpC,SAASE,GAAgB3B,GAC9B,OAAOiB,GAAYlB,GAAaC,IAGlC,IAAM4B,GAAmB,CAAC,OAAQ,OAAQ,QAY1C,SAASC,GAAYtD,EAAgB1J,GACnC,IAAK0J,EAAK1J,QAAiC,IAAvB0J,EAAK1J,OAAOqJ,OAC9B,OAAOK,EAET,IAAMuD,EAAyB,GAU/B,OATAvD,EAAK1J,OAAOyJ,SAAQ,SAACpK,GACnB,IAAM6N,EAAW7N,EAAM8N,IAAIC,MAAM,YAAa,GAE1CpN,EAAOqN,IAAIH,GACbD,EAAUK,KAAK,CAACH,IAAKnN,EAAOyL,IAAIyB,GAAYK,MAAOlO,EAAMkO,QAChDlO,EAAM8N,IAAIK,WAAW,SAnBpC,SAAqBN,GACnB,IAAMO,EAAYP,EAASQ,cAC3B,OAAOX,GAAiBY,MAAK,SAACC,GAAD,OAASH,EAAUI,SAASD,MAiBZE,CAAYzO,EAAM8N,MAC3DF,EAAUK,KAAKjO,MAGZ4M,OAAOC,OAAO,GAAIxC,EAAM,CAAC1J,OAAQiN,IAO1C,SAASc,GACP5C,EACAnL,GAEA,IAAM4M,EAAWzB,EAAO3B,MAAMnJ,KAAI,SAACqJ,GAAD,OAAUsD,GAAYtD,EAAM1J,MAC9D,OAAOiM,OAAOC,OAAO,GAAIf,EAAQ,CAAC3B,MAAOoD,IAiCpC,SAASoB,GAAY/D,GAC1B,IAAMgE,EACJhE,GAAQA,EAAKiE,MAAQjE,EAAKiE,KAAKhE,MAAK,SAACC,GAAD,MAAyB,SAAdA,EAAMC,OACjD+D,EACJF,GAAQA,EAAKC,MAAQD,EAAKC,KAAKhE,MAAK,SAACC,GAAD,MAAyB,SAAdA,EAAMC,OACvD,OAAQ+D,GAAQA,EAAKvR,MAAS,KCnQhC,IAAMwR,GAAkB,IAAI7E,IAAI,CAC9B,CAAC,MAAO,SACR,CAAC,MAAO,cACR,CAAC,MAAO,eAGV,SAAS8E,GAAWzD,EAAkB9G,GACpC,IAAMwK,OAAsBC,IAAb3D,EAAKK,IACduD,OAA0BD,IAAf3D,EAAKI,MAChByD,OAAwBF,IAAd3D,EAAKG,KACrB,IAAKuD,IAAWE,IAAaC,EAC3B,OAAO7D,EAAK8D,MAAQ,GAEtB,IAAMC,EAAa,IAAIC,KACrBH,EAAU7D,EAAKG,KAAQ,EACvByD,EAAW5D,EAAKI,MAAS,EAAI,EAC7BsD,EAAS1D,EAAKK,IAAO,GAGjB4D,EAAYjE,EAAKiE,WAAajE,EAAKiE,UAAUnB,cAQ7CoB,EAAgB,CACpB7D,IAAKqD,EAAS,eAAYC,EAC1BvD,MAAOwD,EAAW,YAASD,EAC3BxD,KAAM0D,EAAU,eAAYF,GAO9B,MAAO,CAhBLM,GACA/K,EAAKiL,cAAc,CACjB3K,GAAG,QAAD,OAAUyK,GACZG,eAAgBZ,GAAgB3C,IAAIoD,IAAcA,IAQ/B,IAAII,KAAKC,eAC9BpL,EAAKF,OACLkL,GACAtG,OAAOmG,IAEoCQ,KAAK,KAuC7C,SAASC,GACdC,EACAvL,GAEA,OAAKuL,EAGDA,EAAYzE,KACPyD,GAAWgB,EAAYzE,KAAM9G,GAElCuL,EAAYxE,UA9ClB,SAAwBA,EAAsB/G,GAC5C,IAAMwL,EAAWzE,EAAU3K,KACrBqP,EAAS1E,EAAU2E,GACnBC,EAAqBH,GAAYjB,GAAWiB,EAAUxL,GACtD4L,EAAmBH,GAAUlB,GAAWkB,EAAQzL,GACtD,OAAI2L,GAAsBC,EACjB5L,EAAKiL,cACV,CACE3K,GAAI,eACJ4K,eAAgB,2BAElB,CAAC9O,KAAMuP,EAAoBD,GAAIE,IAG/BD,EACK3L,EAAKiL,cACV,CACE3K,GAAI,aACJ4K,eAAgB,gBAElB,CAAC9O,KAAMuP,IAGPC,EACK5L,EAAKiL,cACV,CACE3K,GAAI,cACJ4K,eAAgB,eAElB,CAACQ,GAAIE,IAGF,GAeEC,CAAeN,EAAYxE,UAAW/G,GAExC,GARE,GCtEX,IAAM8L,GAAa,CAAC,OAAQ,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,QAC7DC,GAAgB,CAAC,OAAQ,MAAO,OAAQ,OAAQ,OAAQ,QACxDC,GAAmB,IAAIvG,IAAI,CAC/B,CAAC,OAAQ,YACT,CAAC,OAAQ,WACT,CAAC,OAAQ,SACT,CAAC,OAAQ,UACT,CAAC,OAAQ,UACT,CAAC,MAAO,eACR,CAAC,OAAQ,aACT,CAAC,OAAQ,SACT,CAAC,OAAQ,aACT,CAAC,QAAS,UACV,CAAC,OAAQ,cACT,CAAC,OAAQ,SACT,CAAC,OAAQ,QACT,CAAC,OAAQ,eACT,CAAC,OAAQ,qBACT,CAAC,OAAQ,kBACT,CAAC,OAAQ,cACT,CAAC,OAAQ,SACT,CAAC,MAAO,SAGV,SAASwG,GAAa3F,GACpB,IAAM4F,EAAgB5F,EAAI6F,QAAQ,KAAM,IACxC,OACE,gBAAC,IAAD,CACE7L,GAAE,iBAAY4L,GACdhB,eAAgBc,GAAiBrE,IAAIuE,IAAkBA,IAK7D,SAASE,GAAUC,GACjB,OACE,gCACGA,EAAM9P,KAAI,SAAC+P,EAAMC,GAAP,OACT,uBAAKC,IAAKD,GACR,gBAAC,IAAD,CAASE,WAAY,CAACrR,OAAQ,WAAYkR,GAC1C,gCAWV,SAASI,GAAQrG,GACf,IAAMhL,EAAS,CAACgL,EAAMvN,MAStB,OARAuN,EAAM+D,KAAKzE,SAAQ,SAACgH,GAClB,GAAqB,SAAjBA,EAASrG,KAAkBqG,EAAS7T,KAAM,CAC5C,IAAM8T,EAAOvR,EAAOkK,OAAS,EAC7BlK,EAAOuR,IAASD,EAAS7T,SACC,SAAjB6T,EAASrG,KAAkBqG,EAAS7T,MAC7CuC,EAAOmO,KAAKmD,EAAS7T,SAGlBuC,EAGT,SAASwR,GAAaxG,EAAoBrG,GACxC,IAAMqM,EAAQ,GACVhG,EAAMvN,MAAQuN,EAAMvN,KAAKyM,OAAS,GACpC8G,EAAM7C,KAAK,yBAAInD,EAAMvN,OAEvB,IAAMgO,EAAOT,EAAM+D,KAAKhE,MAAK,SAACuG,GAAD,MAA+B,SAAjBA,EAASrG,OAChDQ,GAAQA,EAAKhO,MACfuT,EAAM7C,KDWH,SAAuBsD,EAAoB9M,GAChD,OAAOsL,GAAkByB,kBAAQD,GAAa9M,GCZjCgN,CAAclG,EAAKhO,KAAMkH,IAEtC,IAAMiN,EAAQ5G,EAAM+D,KAAKhE,MAAK,SAACuG,GAAD,MAA+B,SAAjBA,EAASrG,OASrD,OARI2G,GAASA,EAAMnU,MACjBuT,EAAM7C,KAAN,MAAA6C,EAAK,YAASK,GAAQO,KAExB5G,EAAM+D,KACH8C,QAAO,SAACP,GAAD,MAA+B,SAAjBA,EAASrG,OAC9BX,SAAQ,SAACwH,GAAD,OACPT,GAAQS,GAAMxH,SAAQ,SAAC2G,GAAD,OAAUD,EAAM7C,KAAK,yBAAI8C,UAE9CD,EAAM9G,OAIT,gCACE,uBAAKrD,UAAU,iBAAiB+J,GAAa5F,EAAMC,MACnD,4BAAO8F,GAAUC,KALZ,KA+BX,SAASe,GAAY/G,GACnB,OAAO+F,GACLM,GAAQrG,GAAO9J,KAAI,SAAC+P,EAAMC,GAAP,OAAiB,qBAAGC,IAAKD,GAAQD,OAIxD,SAASe,GAAYhH,GACnB,OACE,sBAAInE,UAAU,aACXmE,EAAMvN,KACJwU,MAAM,KACNJ,QAAO,SAAC7C,GAAD,QAAYA,KACnB9N,KAAI,SAAC8N,EAAMkC,GAAP,OACH,uBAAKC,IAAKD,GACPlC,EACD,gCAOZ,SAASkD,GACPrH,EACAsH,EACAC,GAEA,OAAOC,IAAQF,GAAM,SAAClH,GAAD,OACnBJ,EACGgH,QAAO,SAAC7G,GAAD,OAAWA,EAAMC,MAAQA,KAChC/J,KAAI,SAAC8J,GAAD,OAAWoH,EAAgBpH,SAEjC6G,QAAO,SAACS,GAAD,OAAyB,OAAZA,KACpBpR,KAAI,SAACoR,EAASpB,GAAV,OACH,uBAAKrK,UAAU,aAAasK,IAAKD,GAC9BoB,MAUT,SAASC,GAAQvH,GACf,OAAOA,EAAM+D,KAAK7E,OAAS,GAAMc,EAAMvN,OAASuN,EAAMvN,KAAK4Q,WAAW,KAGxE,SAASmE,GAAgB3H,GACvB,OAAOA,EACJgH,QACC,SAAC7G,GAAD,OACG0F,GAAc+B,SAASzH,EAAMC,OAASwF,GAAWgC,SAASzH,EAAMC,QAEpE4G,OAAOU,IACPrR,KAAI,SAAC8J,GAAD,OA7ET,SAAqBA,GACnB,IAAMgG,EAAQ,GASd,OARIhG,EAAMvN,MACRuT,EAAM7C,KAAN,MAAA6C,EAAK,YAASK,GAAQrG,KAExBA,EAAM+D,KACH8C,QAAO,SAACP,GAAD,MAA+B,SAAjBA,EAASrG,OAC9BX,SAAQ,SAACwH,GAAD,OACPT,GAAQS,GAAMxH,SAAQ,SAAC2G,GAAD,OAAUD,EAAM7C,KAAK,yBAAI8C,UAE9CD,EAAM9G,OAIT,gCACE,uBAAKrD,UAAU,iBAAiB+J,GAAa5F,EAAMC,MACnD,4BAAO8F,GAAUC,KALZ,KAkES0B,CAAY1H,MAC3B6G,QAAO,SAACS,GAAD,OAAyB,OAAZA,KACpBpR,KAAI,SAACoR,EAASpB,GAAV,OACH,uBAAKrK,UAAU,aAAasK,IAAKD,GAC9BoB,MAmBF,IAAMK,GAAb,uKAMY,IAAD,OACD9H,EAAUhI,KAAKC,MAAMkJ,OAAO3B,MAAMxH,KAAKC,MAAMyH,MAAMwE,KACnD6D,EAAkB/H,EACrB3J,KAAI,SAAC8J,GAAD,OAnBX,SAAqBA,EAAoBgB,GACvC,GAAIhB,EAAMvN,KAAM,CACd,IAAMoV,EAAe7G,EAAOd,MAAMnB,GAAYiB,EAAMvN,OACpD,GAAIoV,EACF,OAAOA,EAGX,OAAO7H,EAYa8H,CAAY9H,EAAO,EAAKlI,MAAMkJ,WAC7C6F,OAAOU,IAEV,OACE,uBAAK1L,UAAU,cAAc5B,GAAG,WAC7BiN,GAAWrH,EAAS,CAAC,QAASmH,IAC9BE,GAAWrH,EAAS4F,IAAY,SAACzF,GAAD,OAC/BwG,GAAaxG,EAAO,EAAKtG,QAAQC,SAElC6N,GAAgBI,GAChBV,GAAWU,EAAiB,CAAC,QAASb,SAnB/C,GAA6BvI,aCrMtB,SAASuJ,GACdtV,EACAuH,GAQA,MAAO,CAACC,GAHND,GAAavH,EAAK4M,MAAMmE,MAAK,SAAC7I,GAAD,OAAOA,EAAEV,KAAOD,EAAUC,MACnDD,EAAUC,GACVxH,EAAK4M,MAAM,GAAGpF,GACRE,YAAqB,OAATH,QAAS,IAATA,OAAA,EAAAA,EAAWG,aAAc,GAGnD,SAAS6N,GACPhH,EACAiH,EACApS,GAEA,IAAMpD,EH+MD,SACLuO,EACAnL,GAEA,IAAMgK,EAAUqI,gBAAYlH,GACtBjI,EAAOoP,8BAAoBtI,GACjC,IACG9G,IACAA,EAAKsG,QACLtG,EAAKsG,MAAMH,SACXnG,EAAK2G,OACL3G,EAAK2G,KAAKR,OAEX,MAAM,IAAIP,GAAY,qBAAsB,8BAG9C,MAAO,CACLyJ,UAAWxE,GAAajB,GAAgB5J,GAAOlD,GAC/CmL,OAAQpB,GAAcC,IGjOXwI,CAAcrH,EAAQnL,GAAU,IAAIuJ,KAC3CkJ,EAAiBC,KAAKC,UAAU/V,GACtC,IACEgW,eAAeC,QAAQT,EAASK,GAChC,MAAOxT,GACPW,QAAQC,KAAK,4CAA8CZ,GAE7D,OAAOrC,EAIF,SAAekW,GAAtB,qC,8CAAO,WACL3F,EACA4F,GAFK,yBAAAzT,EAAA,oEAKG0T,EAAaJ,eAAeK,QAAQ9F,IALvC,yCAOMuF,KAAKQ,MAAMF,IAPjB,sDAUHpT,QAAQC,KAAK,mDAVV,cAaCsT,EAAiBhG,EAAIC,MACzB,sDAGAD,EAAG,yCAAqCgG,EAAe,GAApD,sBAECC,EAAiBjG,EAAIC,MACzB,yDAGAD,EAAG,yCAAqCiG,EAAe,GAApD,qBAGCC,EAAaN,EACf,qCAAuC5F,EACvCA,EA5BC,UA8BkBtQ,OAAO4C,MAAM4T,GA9B/B,WA+BmB,OADlB3T,EA9BD,QA+BQ4T,OA/BR,uBAgCG,IAAIrK,MAAMvJ,EAAS6T,YAhCtB,yBAkCgB7T,EAASgP,OAlCzB,eAkCCvD,EAlCD,yBAmCEgH,GAAYhH,EAAQgC,IAnCtB,0D,sBAuCA,SAAeqG,GAAtB,uC,8CAAO,WACLC,EACAtI,EACAnL,GAHK,eAAAV,EAAA,oEAMG0T,EAAaJ,eAAeK,QAAQQ,IANvC,yCAQMf,KAAKQ,MAAMF,IARjB,sDAWHpT,QAAQC,KAAK,mDAXV,UAaAsL,EAbA,uBAcG,IAAIrC,GACR,8BACA,sDAhBC,iCAmBEqJ,GAAYhH,EAAQsI,EAAMzT,IAnB5B,0D,sBDiIM8R,GAEJlJ,aAAe,CACpB9E,KAAM+E,KCrGH,ICjGF6K,GDiGQC,GAAb,kGAGIC,EACAC,EACAjX,GAEA,OAAOgX,EAAUE,KAAKL,OAASI,EAAUC,KAAKL,OAPlD,wEAWIM,GAXJ,gGAcyBP,GACjBO,EAAOD,KAAKL,KACZM,EAAOD,KAAK3I,OACZ4I,EAAOD,KAAK9T,QAjBpB,cAcYpD,EAdZ,OAoBMF,EAAe,qBAAsB,CACnCsX,YAFehG,GAAYpR,EAAKuO,OAAOlB,MAGvCgK,YAAcF,EAAOD,KAAK9T,QAAU+T,EAAOD,KAAK9T,OAAO/C,MAAS,IAtBxE,kBAwBaL,GAxBb,sCA0BMF,EAAe,qBA1BrB,4HAwCawX,GAAb,kGAEIN,EACAC,EACAjX,GAEA,OAAOgX,EAAUE,KAAK3G,MAAQ0G,EAAUC,KAAK3G,MANjD,wEASiB4G,GATjB,gGAWyBjB,GAAYiB,EAAOD,KAAK3G,IAAK4G,EAAOD,KAAKf,YAXlE,cAWYnW,EAXZ,OAaMF,EAAe,qBAAsB,CAACsX,YADrBhG,GAAYpR,EAAKuO,OAAOlB,QAZ/C,kBAcarN,GAdb,sCAgBMF,EAAe,kBAhBrB,6H,SCzIKgX,K,gBAAAA,E,cAAAA,E,6BAAAA,Q,KAqBE,IAAMS,GAAb,kGAEIP,EACAC,EACAjX,GAGA,OAAO,IAPX,yEAWIoM,EACAlK,EACAC,GAbJ,4EAeQiK,EAAQA,UAAY0K,GAAoBU,aAfhD,gBAiBMvX,OAAOK,OAAOmX,YAAY,CAACrL,QAAS0K,GAAoBY,OAAQ,KAjBtE,0BAkBetL,EAAQA,UAAY0K,GAAoBa,OAlBvD,oBAmBYpJ,EAAUnC,EAA0BmC,OAnBhD,2EAwB2BqI,GAAW,GAAIrI,GAxB1C,QAwBcvO,EAxBd,OA0BQF,EAAe,uBAAwB,CACrCsX,YAFehG,GAAYpR,EAAKuO,OAAOlB,QAIzCnL,EAAQlC,GA7BhB,kDA+BQF,EAAe,uBACfqC,EAAO,EAAD,IAhCd,6LAsCIgV,GAtCJ,qGAyCW,IAAIlV,SAAoB,SAACC,EAASC,GACvClC,OAAOK,OAAOmX,YAAY,CAACrL,QAAS0K,GAAoBY,OAAQ,KAChEzX,OAAO8D,iBAAiB,WAAW,SAAC/D,GAAD,OACjC,EAAK4X,UAAU5X,EAAKA,KAAMkC,EAASC,UA5C3C,yG,6DCzBA,SAAS0V,GAAWxS,GAClB,OACE,gBAACyS,GAAA,EAAD,CACElF,GAAI,CAACmF,SAAU,QAASC,OAAQC,YAAsB,CAAC1H,IAAKlL,EAAMkL,QAEjElL,EAAMyM,MAUN,SAASoG,KACd,IAAM9M,EACJ,gCACE,yBACE,gBAAC,IAAD,CACE5D,GAAG,oBACH4K,eACE,mGAKN,yBACE,gBAAC,IAAD,CACE5K,GAAG,qBACH4K,eACE,sKAMN,yBACE,gBAAC,IAAD,CACE5K,GAAG,iBACH4K,eACE,4DAIN,0BACE,0BACE,gBAACyF,GAAD,CACEtH,IAAI,+DACJuB,KAAK,uBACJ,IAJL,IAKG,gBAAC,IAAD,CAAkBtK,GAAG,aAAa4K,eAAe,SAAU,IAC5D,qBAAGzP,KAAK,0DAAR,UANF,KAWA,0BACE,gBAACkV,GAAD,CACEtH,IAAI,iFACJuB,KAAK,gBACJ,IAJL,IAKG,gBAAC,IAAD,CAAkBtK,GAAG,aAAa4K,eAAe,SAAU,IAC5D,qBAAGzP,KAAK,kDAAR,oBANF,KAWA,0BACE,gBAACkV,GAAD,CACEtH,IAAI,wDACJuB,KAAK,iBACJ,IAJL,IAKG,gBAAC,IAAD,CAAkBtK,GAAG,aAAa4K,eAAe,SAAU,IAC5D,qBAAGzP,KAAK,0CAAR,uBANF,MAYF,yBACE,yBACE,gBAAC,IAAD,CAAkB6E,GAAG,gBAAgB4K,eAAe,aAErD,KACD,gBAAC,IAAD,CACE5K,GAAG,qBACH4K,eACE,4RAMF+F,OAAQ,CACNC,KACE,qBAAGzV,KAAK,sCAAR,qBAKR,qBAAGyG,UAAU,4BAAb,YAC4BiP,4BA3FdC,MAAM,EAAG,IA0FvB,KAEE,qBACE3V,KAAI,uDAAkD0V,YAErDA,WALL,MAYJ,OACE,uBAAK7Q,GAAG,WACN,uBAAK4B,UAAU,oBACf,gBAACmP,GAAA,EAAD,CAAMnP,UAAU,SACd,gBAACF,EAAA,EAAD,CAAYsP,GAAID,KAAKE,QAAStP,SAAU,KACtC,gBAACoP,GAAA,EAAKG,OAAN,KACE,gBAAC,IAAD,CACElR,GAAG,cACH4K,eAAe,8BAIrB,gBAACmG,GAAA,EAAKE,QAAN,KACE,gBAACvP,EAAA,EAAD,CAAYsP,GAAIG,KAAMxP,SAAU,KAC9B,gBAACwP,GAAA,EAAKC,IAAN,KACE,gBAACD,GAAA,EAAKE,OAAN,CAAazU,MAAO,GAClB,gBAAC,KAAD,CAAOR,IAAKkV,KAAMC,IAAI,iBAExB,gBAACJ,GAAA,EAAKE,OAAN,CAAazU,MAAO,IAAKgH,KAG7B,gBAAClC,EAAA,EAAD,CAAY8P,SAAU,KACpB,gBAAC,KAAD,CACEpV,IAAKkV,KACLC,IAAI,cACJE,UAAU,EACV5Y,KAAK,OACL+I,UAAU,eAEXgC,M,IC9ID8N,G,oGAAAA,O,eAAAA,I,wBAAAA,Q,KASL,IAAMC,GAAb,uKAII,IAAMC,EAAQ,gBAAOhU,KAAKC,OAG1B,cADO+T,EAASC,SAEd,gCACGjU,KAAKC,MAAMgU,WAAaH,GAASI,KAChC,gBAACA,GAAA,EAAKC,KAASH,EAAWhU,KAAKC,MAAM6J,UAErC,gBAACsK,GAAA,EAASD,KAASH,EAAWhU,KAAKC,MAAM6J,eAZnD,GAA8BnD,a,8BCR9B,SAAS0N,GAAeC,GACtB,OAAO,IAAIzX,SAAQ,SAACC,GAClB,IAAMJ,EAAS,IAAIC,WACnBD,EAAOM,OAAS,SAACuX,GACfzX,EAASyX,EAAIrX,OAAsBC,SAErCT,EAAO8X,WAAWF,MAItB,SAASG,GAAgBvJ,GACvB,IAAMwJ,EAAQxJ,EAASQ,cACvB,OAAOgJ,EAAM7I,SAAS,SAAW6I,EAAM7I,SAAS,QAQ3C,IAAM8I,GAAb,oNAC6BrZ,GAD7B,2FAEUsZ,EAAStZ,EAAM4B,OAA4B0X,QAClCA,EAAMvN,OAHzB,wDAMUwN,EAAa5W,MAAMC,KAAK0W,GAC7BtZ,EAAM4B,OAA4B4X,MAAQ,GAC3Cpa,EAAe,wBAAyB,CACtCuX,YAAa2C,EAAMvN,SAGf0N,EACkB,IAAtBF,EAAWxN,OACPwN,EAAW,GACXA,EAAW3M,MAAK,SAACoM,GAAD,OAAUA,EAAKnI,KAAKT,cAAcG,SAAS,YAC3DgJ,EAAW,GAGX7W,EAAS6W,EACZ7F,QACC,SAACsF,GAAD,OAAUA,EAAKnI,OAAS4I,EAAW5I,MAAQsI,GAAgBH,EAAKnI,SAEjE9N,KAAI,SAACiW,GAAD,MAAW,CACdnI,KAAMmI,EAAKnI,KACXhB,IAAK1M,IAAIC,gBAAgB4V,OAEvBU,EAAW,IAAIzN,IACnBvJ,EAAOK,KAAI,SAAC8J,GAAD,MAAW,CAACA,EAAMgE,KAAMhE,EAAMgD,SA5B/C,UA+BuBkJ,GAAeU,GA/BtC,QA+BUna,EA/BV,OAgCUqa,EAAiBjX,EACpBK,KAAI,SAAChB,GAAD,OAAWA,EAAM8O,QACrBnC,OACAmD,KAAK,KAEFsE,EAAOyD,KAAIA,KAAIta,GAAQqa,GAIvBrC,EAASC,QAAkB7S,KAAKC,MAAMkV,SAASvC,SAEnDA,EAAO0B,OAAS7C,EACZzR,KAAKC,MAAMmV,QAAQnH,QACnBjO,KAAKC,MAAMmV,QAAQ9J,MAEb,CACVqH,SAAU,QACVC,OAAQC,YAAsB,CAACyB,KAAM7C,IACrC4D,MAAO,CAACza,OAAMoD,OAAQgX,KAlD5B,uIAsDY,IAAD,OACDM,EACJ,gCACE,gBAACC,GAAA,EAAD,CAAMpJ,KAAK,gBACX,gBAAC,IAAD,CAAkB/J,GAAG,iBAAiB4K,eAAe,eAGzD,OACE,gCACGhN,KAAKC,MAAMgU,WAAaH,GAASI,KAChC,yBAAOsB,QAAQ,aACb,gBAACtB,GAAA,EAAKC,KAAN,CAAWf,GAAG,KAAKkC,IAGrB,gBAAClB,GAAA,EAASD,KAAV,CAAef,GAAG,QAAQoC,QAAQ,aAC/BF,GAGL,yBACEtR,UAAU,SACVvE,KAAK,OACLgW,OAAO,eACPrT,GAAG,YACHsT,UAAQ,EACRC,SAAU,SAAC1Y,GAAD,OAAO,EAAK2Y,aAAa3Y,WA9E7C,GAAgC0J,a,kDCXnBkP,GAAb,4MAIER,MAAe,CAACS,YAAY,GAJ9B,EAMEC,SAAmCpP,cANrC,2DASwB,IAAD,OACnB3G,KAAKgW,SAAS/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAACS,YAAY,KAAQ,kBAC/D,EAAKC,SAASE,QAASxQ,aAX7B,oCAiBIzF,KAAKgW,SACH/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAC5BS,YAAY,OAnBpB,mCA0BI9V,KAAKgW,SACH/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAC5BS,YAAY,KAGZ9V,KAAKqV,MAAMlK,MACbzQ,EAAe,gBACfsF,KAAKC,MAAMmV,QAAQ9J,KAAK,CACtBqH,SAAU,QACVC,OAAQC,YAAsB,CAAC1H,IAAKnL,KAAKqV,MAAMlK,WAnCvD,sCAyC0B2J,GACtB9U,KAAKgW,SACH/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAC5BlK,IAAK2J,OA5Cb,yCAiD8B,IAAD,OACzB,OACE,gBAACoB,GAAA,EAAD,CACE/Q,KAAMnF,KAAKqV,MAAMS,WACjBK,QAAS,kBAAM,EAAKC,eACpBvC,UAAU,GAEV,gBAACP,GAAA,EAAD,KACE,gBAACiC,GAAA,EAAD,CAAMpJ,KAAK,mBACX,gBAAC,IAAD,CACE/J,GAAG,sBACH4K,eAAe,gBACflD,SAAU,SAACuM,GAAD,OAASA,MAGvB,gBAACH,GAAA,EAAM7C,QAAP,KACE,gBAACiD,GAAA,EAAD,CAAMC,SAAU,kBAAM,EAAKC,eACzB,gBAACC,GAAA,EAAD,CACEC,YAAY,WACZC,OAAK,EACLhB,SAAU,SAAC1Y,EAAGrC,GAAJ,OAAa,EAAKgc,gBAAgBhc,EAAKka,QACjD+B,IAAK7W,KAAK+V,WAEZ,yBACE,gBAAC,IAAD,CACE3T,GAAG,wBACH4K,eACE,wEAEF+F,OAAQ,CACNC,KACE,qBAAGzV,KAAK,sCAAR,mCASZ,gBAAC2Y,GAAA,EAAMY,QAAP,KACE,gBAACC,GAAA,EAAD,CAAQC,WAAS,EAAC/S,QAAS,kBAAM,EAAKmS,gBACpC,gBAAC,IAAD,CACEhU,GAAG,uBACH4K,eAAe,YAGnB,gBAAC+J,GAAA,EAAD,CAAQE,SAAO,EAAChT,QAAS,kBAAM,EAAKuS,eAClC,gBAAC,IAAD,CAAkBpU,GAAG,qBAAqB4K,eAAe,cAjGrE,+BAwGY,IAAD,OACP,OACE,gCACE,gBAAC,GAAD,CACE/I,QAAS,kBAAM,EAAKiT,cACpBjD,SAAUjU,KAAKC,MAAMgU,UAErB,gBAACsB,GAAA,EAAD,CAAMpJ,KAAK,mBACX,gBAAC,IAAD,CACE/J,GAAG,qBACH4K,eAAe,mBAGlBhN,KAAKmX,wBArHd,GAA6BxQ,a,0CC+D7B,SAASyQ,GAAsB9I,GAC7B,IACE,OAAOsC,eAAeK,QAAQ3C,GAC9B,MAAOrR,GACPW,QAAQC,KAAK,6CAA+CZ,GAE9D,OAAO,KAIT,SAASoa,GAAsB/I,EAAawG,GAC1C,IACElE,eAAeC,QAAQvC,EAAKwG,GAC5B,MAAO7X,GACPW,QAAQC,KAAK,4CAA8CZ,I,SAKhDqa,G,mFAAf,WAA2BC,EAA0BxG,GAArD,uBAAAzT,EAAA,sDAGE,IAAWgR,KAFLkJ,EAAc,IAAIC,UACZC,OAAO,SAAU,QACXH,EAChBC,EAAYE,OAAOpJ,EAAKiJ,EAAQjJ,IAJpC,OAMQqJ,EAAS5G,EACX,qEACA,mCARN,SASyBlW,OAAO4C,MAAMka,EAAQ,CAC1CC,OAAQ,OACR/R,KAAM2R,EACNK,YAAa9G,OAAaxE,EAAY,YAZ1C,cASQ7O,EATR,gBAc6BA,EAASgP,OAdtC,cAcQoL,EAdR,yBAeSpH,KAAKQ,MAAM4G,IAfpB,6C,+BAsBeC,G,mFAAf,WACEzJ,EACAyC,GAFF,qBAAAzT,EAAA,yDAIQ0a,EAJR,6BAIyC1J,KACjC0C,EAAaoG,GAAsBY,IAL3C,yCAOWtH,KAAKQ,MAAMF,IAPtB,uBASyBsG,GACrB,CACE3c,OAAQ,eACR2T,IAAKA,EACL2J,OAAQ,KAEVlH,GAfJ,cASQrT,EATR,OAiBQP,EAASO,EAAS,GAAGwa,UAC3Bb,GAAsBW,EAAUtH,KAAKC,UAAUxT,IAlBjD,kBAmBSA,GAnBT,6C,+BA0Begb,G,mFAAf,WACEC,EACArH,GAFF,uBAAAzT,EAAA,yDAIQH,EAAmB,GACnBkb,EAAwB,GAC9BD,EAAK3Q,SAAQ,SAAC6G,GACZ,IAAM0C,EAAaoG,GAAsB,sBAAD,OAAuB9I,IAC3D0C,EACF7T,EAAOmO,KAAKoF,KAAKQ,MAAMF,IAEvBqH,EAAY/M,KAAKgD,MAGM,IAAvB+J,EAAYhR,OAdlB,yCAeWlK,GAfX,uBAiByBma,GACrB,CACE3c,OAAQ,eACRyd,KAAMC,EAAYlL,KAAK,KACvBmL,aAAa,EACbC,YAAY,GAEdxH,GAxBJ,UA0B4B,QATpBrT,EAjBR,QA0Be,GAAG8a,MA1BlB,uBA2BUpW,EAAKiW,EAAY,GACjB,IAAIvR,GACR,6BADI,2BAEgB1E,EAFhB,cAGJ,CAACA,OA/BP,eAkCQqW,EAAiB/a,EAAS,GAAG8a,MAAMna,KACvC,SAACrC,GAAD,OAAyBA,EAAE0c,WAEdjR,SAAQ,SAACiR,GACtBrB,GAAsB,sBAAD,OACGqB,EAAOC,MAC7BjI,KAAKC,UAAU+H,OAxCrB,kBA2CSvb,EAAOyb,OAAOH,IA3CvB,6C,sBA8CO,SAAeI,GAAtB,mC,8CAAO,WACLC,GADK,eAAAxb,EAAA,sEAGkBga,GACrB,CACE3c,OAAQ,cACRme,aAEF,GARG,cAGCpb,EAHD,yBAUEA,EAASmb,aAVX,4C,sBAqBA,SAASE,KACd,OAAOC,KAAQvP,IAxMQ,uBA+MlB,SAAewP,GAAtB,uC,8CAAO,WACL3K,EACAxM,EACAgX,GAHK,iEAAAxb,EAAA,0DAMCyT,EAA0C,sBAA7BlW,OAAOsa,SAAS+D,WAEfH,OAAyBD,EARxC,gCASuBD,GAAYC,GATnC,OAUwB,aADrBK,EATH,QAUahc,SACdyT,eAAewI,QACfJ,KAAQrR,IA3NW,sBA2NWwR,EAAYE,WAZzC,cAgBCC,EAAqB,GAhBtB,SAmBqBnB,GAAa,CAAC7J,GAAMyC,GAnBzC,WAmBCwI,EAnBD,QAoBY,GAAGZ,KApBf,uBAsBG,IAAI7R,GACR,kCADI,2BADA1E,EAAKkM,EACL,uCAGJ,CAAClM,OAzBA,eA6BCoX,EAAavP,OAAO8I,OAAOwG,EAAY,GAAGE,SAASpb,KAAI,SAACqb,GAAD,OAAOA,EAAEf,QA7BjE,UA8BmB9b,QAAQuB,IAC9B,CAACkQ,GACEsK,OAAOY,GACPnb,KAAI,SAACsb,GAAD,OAAc5B,GAAa4B,EAAU5I,OAjCzC,eA8BCmH,EA9BD,OAmCC0B,EAAe1B,EAClB2B,OACAxb,KAAI,SAACqa,GAAD,OAAYA,EAAOC,QACvB3J,QAAO,SAACV,GAAD,QAAWA,KAtChB,UAuCyB6J,GAAayB,EAAc7I,GAvCpD,QAuCC+I,EAvCD,OA0CCC,EAAsC,IAAIxS,IAE1CyS,EAAsC,IAAIzS,IAIhD2Q,EAAUzQ,SAAQ,SAACwS,EAAc5L,GAC/B,IAAM6L,EAAS,IAAO7L,EAEtB4L,EAAaxS,SAAQ,SAACiR,GAChBA,EAAOyB,GAAK,IACdzB,EAAOyB,IAAMD,EACbxB,EAAOC,KAAP,UA3QyB,YA2QzB,OAAqCD,EAAOyB,KAE1CzB,EAAO0B,OAAS,IAClB1B,EAAO0B,QAAUF,EACjBH,EAAepS,IAAI+Q,EAAOyB,GAAIzB,EAAO0B,SAEnC1B,EAAO2B,OAAS,IAClB3B,EAAO2B,QAAUH,EACjBF,EAAerS,IAAI+Q,EAAOyB,GAAIzB,EAAO2B,eAO3CP,EAAgBrS,SAAQ,SAACiR,GACvB,IAAM4B,EAAgBP,EAAetQ,IAAIiP,EAAOyB,IAC5CG,IACF5B,EAAO0B,OAASE,GAElB,IAAMC,EAAgBP,EAAevQ,IAAIiP,EAAOyB,IAC5CI,IACF7B,EAAO2B,OAASE,MAGpBjB,EAAShO,KAAT,MAAAgO,EAAQ,YAASQ,IAGXU,EAAmBtC,EAAU2B,OAAO7K,QAAO,SAAC0J,GAAD,OAAYA,EAAOyB,GAAK,KACzEb,EAAShO,KAAT,MAAAgO,EAAQ,YAASkB,IAIXC,EAA4B,EAG9BC,EAAU,CAACpM,GACXhM,EAAa,EA3FZ,aA4FEoY,EAAQrT,OAAS,GAAK/E,GAAcmY,GA5FtC,kCA6FkBtC,GAAauC,EAAS3J,GA7FxC,QA6FG4J,EA7FH,OA8FHrB,EAAShO,KAAT,MAAAgO,EAAQ,YAASqB,IACXC,EAAaD,EAAOnL,SAAQ,SAACkJ,GAAD,OAChCzO,OAAO8I,OAAO2F,EAAOe,YAEvBH,EAAShO,KAAT,MAAAgO,EAAQ,YAASsB,IAEjBF,EAAUC,EAAOnL,SAAQ,SAACkJ,GAAD,OACvBzO,OAAO8I,OAAO2F,EAAOmC,UAAUxc,KAAI,SAACyc,GAAD,OAAOA,EAAEnC,WAE9CrW,IAvGG,+BA2GCyY,EAAW,IAAIxT,IAEfuC,EAAW,IAAIvC,IAEfyT,EAAU,IAAIzT,IAKd0T,EAAW,IAAI1T,IAErB+R,EAAS7R,SAAQ,SAACiR,GAEhB,GADAuC,EAAStT,IAAI+Q,EAAOyB,GAAIzB,EAAOC,MAC3BD,EAAO2B,QAAU3B,EAAO0B,OAAQ,CAClC,IAAMc,EAAQC,GAAYzC,EAAO2B,OAAQ3B,EAAO0B,QAChDgB,GAAOL,EAAUrC,EAAO2B,QAAQgB,IAAIH,GACpCE,GAAOL,EAAUrC,EAAO0B,QAAQiB,IAAIH,GACpCE,GAAOtR,EAAUoR,GAAOG,IAAI3C,EAAOyB,IACnCa,EAAQrT,IAAIuT,EAAO,CACjBI,KAAM5C,EAAO2B,aAAU9N,EACvBgP,QAAS7C,EAAO0B,aAAU7N,QAK1B/E,EAAoB,GACpBgU,EAAY,IAAIC,IACtBnC,EAAS7R,SAAQ,SAACiR,GAChB,IAAI8C,EAAUnQ,IAAIqN,EAAOyB,IAAzB,CAGAqB,EAAUH,IAAI3C,EAAOyB,IACrB,IAAMzS,EAAOgU,GAAchD,EAAQ5W,GAC/B4W,EAAOe,SACTxP,OAAO8I,OAAO2F,EAAOe,SAAShS,SAAQ,SAACkU,GACrC,IAAMT,EAAQC,GAAYzC,EAAOyB,GAAIwB,EAAOxB,IAC5CiB,GAAOL,EAAUrC,EAAOyB,IAAIkB,IAAIH,GAChCE,GAAOL,EAAUY,EAAOxB,IAAIkB,IAAIH,GAChC,IAAMU,EACc,SAAlBlD,EAAOmD,OACH,CAACP,KAAMK,EAAOxB,GAAIoB,QAAS7C,EAAOyB,GAAIwB,UACtC,CAACL,KAAM5C,EAAOyB,GAAIoB,QAASI,EAAOxB,GAAIwB,UAC5CX,EAAQrT,IAAIuT,EAAOU,MAGvBlU,EAAKG,KAAO5J,MAAMC,KAAKkd,GAAOL,EAAUrC,EAAOyB,KAC/C3S,EAAM8D,KAAK5D,OAGPG,EAAO5J,MAAMC,KAAK8c,EAAQhT,WAAW3J,KAAI,YAAmB,IAAD,mBAAhBiQ,EAAgB,KAAXwG,EAAW,KACzDhN,EAAe,CACnB1F,GAAIkM,GAEAgN,EAAOxG,EAAMwG,MAAQL,EAASxR,IAAIqL,EAAMwG,MAC1CA,IACFxT,EAAIwT,KAAOA,GAEb,IAAMC,EAAUzG,EAAMyG,SAAWN,EAASxR,IAAIqL,EAAMyG,SAOpD,GANIA,IACFzT,EAAIgU,KAAOP,GAEbzT,EAAIgC,SAAW7L,MAAMC,KAAKkd,GAAOtR,EAAUwE,IAAMjQ,KAC/C,SAAC0d,GAAD,OAAWd,EAASxR,IAAIsS,MAGxBjH,EAAM6G,SACJ7G,EAAM6G,OAAOK,eACkB,eAA/BlH,EAAM6G,OAAOK,eACblH,EAAM6G,OAAOM,mBACf,CACA,IAAMC,EAAaC,GAAUrH,EAAM6G,OAAOK,eAC1ClU,EAAI4C,SAAWT,OAAOC,OAAO,GAAIgS,EAAY,CAC3CnN,MAAO+F,EAAM6G,OAAOM,oBAGxB,OAAOnU,KAGHyI,EAAYzF,GAAgB,CAACtD,QAAOK,SACpCsB,EAASiT,GAAY5U,GA1LtB,kBA2LE,CAAC+I,YAAWpH,WA3Ld,6C,sBA+LP,SAASgS,GAAYkB,EAAiBC,GACpC,OAAIA,EAAUD,EACN,GAAN,OAAUA,EAAV,YAAqBC,GAEjB,GAAN,OAAUA,EAAV,YAAqBD,GAGvB,SAASX,GAAchD,EAAgB5W,GACrC,IAAM4F,EAAiB,CACrBtF,GAAIsW,EAAOC,MAyBb,GAvBID,EAAOC,KAAKnN,WA/Ze,cAga7B9D,EAAK6U,QAAS,EACd7U,EAAK8U,UAAY1a,EAAKiL,cAAc,CAClC3K,GAAI,mBACJ4K,eAAgB,aAGhB0L,EAAO+D,WAAkC,YAArB/D,EAAO+D,UAC7B/U,EAAK8U,UAAY9D,EAAO+D,UACf/D,EAAOgE,UAAgC,YAApBhE,EAAOgE,WACnChV,EAAK8U,UAAY9D,EAAOgE,UAEK,YAA3BhE,EAAOiE,kBACTjV,EAAKkV,SAAWlE,EAAOiE,kBAErBjE,EAAO2B,QAAU3B,EAAO0B,UAC1B1S,EAAKmV,KAAO1B,GAAYzC,EAAO2B,OAAQ3B,EAAO0B,SAE1B,SAAlB1B,EAAOmD,OACTnU,EAAKoV,IAAM,IACgB,WAAlBpE,EAAOmD,SAChBnU,EAAKoV,IAAM,KAGVpE,EAAOqE,WAAkC,eAArBrE,EAAOqE,WAC5BrE,EAAOsE,eACoB,YAA3BtE,EAAOuE,gBACP,CACA,IAIMrU,EAJauT,GACjBzD,EAAOqE,UACPrE,EAAOwE,YAAcxE,EAAOwE,WAAWH,YAEdI,GAAYzE,EAAOuE,iBAC9CvV,EAAKiC,MAAQM,OAAOC,OAAO,GAAItB,EAAM,CAACmG,MAAO2J,EAAOsE,gBAEtD,GACGtE,EAAO0E,WAAkC,eAArB1E,EAAO0E,WAC5B1E,EAAO2E,eACoB,YAA3B3E,EAAO4E,gBACP,CACA,IAIM1U,EAJauT,GACjBzD,EAAO0E,UACP1E,EAAOwE,YAAcxE,EAAOwE,WAAWE,YAEdD,GAAYzE,EAAO4E,iBAC9C5V,EAAK6V,MAAQtT,OAAOC,OAAO,GAAItB,EAAM,CAACmG,MAAO2J,EAAO2E,gBAKtD,OAHI3E,EAAO8E,YACT9V,EAAK1J,OAAS,CAAC,CAACmN,IAAI,2BAAD,OAA6BuN,EAAO8E,UAAUrS,QAE5DzD,EAOT,SAASyU,GAAUvT,EAAc6U,GAC/B,GAAK7U,EAAL,CAGA,IAAM8U,EAAc9U,EAAKwC,MAAM,4BAC/B,IAAKsS,EACH,MAAO,CAAC9U,KAAM,CAAC8D,KAAM9D,IAEvB,IAAMsT,EAAmB,GAUzB,MATuB,SAAnBwB,EAAY,KACdxB,EAAWnT,OAAS2U,EAAY,IAEX,OAAnBA,EAAY,KACdxB,EAAWlT,QAAU0U,EAAY,IAEZ,OAAnBA,EAAY,KACdxB,EAAWjT,MAAQyU,EAAY,IAEd,UAAfD,EACK,CAAC5U,UAAW,CAAC3K,KAAMge,IAET,WAAfuB,EACK,CAAC5U,UAAW,CAAC2E,GAAI0O,KAEP,UAAfuB,IACFvB,EAAWrP,UAAY,OAElB,CAACjE,KAAMsT,KAGhB,SAASiB,GAAYQ,GACnB,MAAkB,YAAXA,EAAuB,CAAC/U,KAAM,CAAC8D,KAAMiR,SAAWpR,EAOzD,SAAS6P,GAAY5U,GACnB,IAAMoW,EAA4C,GA8BlD,OA7BApW,EAAMC,SAAQ,SAACC,GAEb,IAAMmW,EAAYnW,EAAKtF,GAAG6L,QAAQ,KAAM,KACxC2P,EAAYlW,EAAKtF,IAAM,CACrB0b,MAAO,EACP3W,QAAQ,IAAD,OAAMO,EAAKtF,GAAX,KACPgG,IAAK,OACLxN,KAAM,GACNsR,KAAM,CACJ,CACE4R,MAAO,EACP3W,QAAS,GACTiB,IAAK,OACLxN,KAAK,GAAD,OAAK8M,EAAK8U,WAAa,GAAvB,aAA8B9U,EAAKkV,UAAY,GAA/C,KACJ1Q,KAAM,MAIPxE,EAAKtF,GAAGoJ,WAAW,MACtBoS,EAAYlW,EAAKtF,IAAI8J,KAAKZ,KAAK,CAC7BwS,MAAO,EACP3W,QAAS,GACTiB,IAAK,MACLxN,KAAK,iCAAD,OAAmCijB,GACvC3R,KAAM,QAKL,CACLjE,KAAM,CAAC6V,MAAO,EAAG3W,QAAS,GAAIiB,IAAK,OAAQxN,KAAM,GAAIsR,KAAM,IAC3D1E,MAAOoW,EACP/V,KAAM,GACNQ,MAAO,IAQX,SAAS+S,GAAa/c,EAAqBiQ,GACzC,IAAM3G,EAAMtJ,EAAIoL,IAAI6E,GACpB,GAAI3G,EACF,OAAOA,EAET,IAAMoW,EAAS,IAAItC,IAEnB,OADApd,EAAIsJ,IAAI2G,EAAKyP,GACNA,EASF,ICzjBFC,GDyjBQC,GAAb,WACE,WAAoBnc,GAAqB,yBAArBA,OADtB,sDAII8P,EACAC,EACAjX,GACU,IAAD,EACT,QAAKgX,EAAUzP,aAGX,UAAA0P,EAAU1P,iBAAV,eAAqBC,MAAOwP,EAAUzP,UAAUC,MAKlDxH,IACAA,EAAK2V,UAAU/I,MAAMmE,MAAK,SAACjE,GAAD,aAAUA,EAAKtF,MAAL,UAAYwP,EAAUzP,iBAAtB,aAAY,EAAqBC,WAjB3E,wEA0BI2P,GA1BJ,0EA4BSA,EAAO5P,UA5BhB,sBA6BY,IAAI2E,GACR,2BACA,oCA/BR,gCAmCyBmS,GACjBlH,EAAO5P,UAAUC,GACjBpC,KAAK8B,KACLiQ,EAAOD,KAAKgH,UAtCpB,cAmCYle,EAnCZ,OAwCMF,EAAe,mBAxCrB,kBAyCaE,GAzCb,wCA2CMF,EAAe,kBA3CrB,8H,SCzjBKsjB,O,qBAAAA,I,iCAAAA,I,0BAAAA,Q,KAgBE,IAAME,GAAb,4MAIE7I,MAAe,CACbS,YAAY,GALhB,EAQEC,SAAmCpP,cARrC,2DAUwB,IAAD,OACnB3G,KAAKgW,SAAS/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAACS,YAAY,KAAQ,kBAC/D,EAAKC,SAASE,QAASxQ,aAZ7B,oCAkBIzF,KAAKgW,SACH/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAC5BS,YAAY,OApBpB,uCAgCI,GALA9V,KAAKgW,SACH/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAC5BS,YAAY,KAGZ9V,KAAKqV,MAAM8I,WAAY,CACzBzjB,EAAe,wBACf,IAAMkY,EAASC,QAAkB7S,KAAKC,MAAMkV,SAASvC,QAC/CwL,OACkB7R,IAAtBqG,EAAOwL,YAA2BxL,EAAOwL,WAC3Cpe,KAAKC,MAAMmV,QAAQ9J,KAAK,CACtBqH,SAAU,QACVC,OAAQC,YAAsB,CAC5BnL,KAAM1H,KAAKqV,MAAM8I,WACjBpM,OAAQ,WACRqM,oBA1CV,qCAiDyBtJ,GACrB9U,KAAKgW,SACH/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAC5B8I,WAAYrJ,OApDpB,8BAyDkBxZ,EAAyB8G,GACvC9G,EAAM+iB,iBACJre,KAAK+V,SAASE,QAEbF,SAASjB,MAAQ1S,EACpBpC,KAAKse,eAAelc,GACpBpC,KAAK+V,SAASE,QAASxQ,UA/D3B,wCAkE6B,IAAD,OACxB,OACE,gBAACyQ,GAAA,EAAD,CACE/Q,KAAMnF,KAAKqV,MAAMS,WACjBK,QAAS,kBAAM,EAAKC,eACpBvC,UAAU,GAEV,gBAACP,GAAA,EAAD,KACE,uBACE9U,IAAK+f,KACL5K,IAAI,gBACJ7O,MAAO,CAAC9F,MAAO,OAAQC,OAAQ,UAEjC,gBAAC,IAAD,CACEmD,GAAG,2BACH4K,eAAe,qBACflD,SAAU,SAACuM,GAAD,OAASA,MAGvB,gBAACH,GAAA,EAAM7C,QAAP,KACE,gBAACiD,GAAA,EAAD,CAAMC,SAAU,kBAAM,EAAKiI,mBACzB,yBACE,gBAAC,IAAD,CACEpc,GAAG,6BACH4K,eACE,uEAEF+F,OAAQ,CACN0L,aACE,qBACElhB,KAAK,wBACLL,OAAO,SACPwhB,IAAI,uBAHN,YAQFC,SACE,wBACE1a,QAAS,SAAChH,GAAD,OAAO,EAAK2hB,QAAQ3hB,EAAG,eAChC+G,UAAU,aAFZ,cAOF6a,SACE,wBACE5a,QAAS,SAAChH,GAAD,OAAO,EAAK2hB,QAAQ3hB,EAAG,sBAChC+G,UAAU,aAFZ,yBAUR,gBAACyS,GAAA,EAAD,CACEE,OAAK,EACLhB,SAAU,SAAC1Y,EAAGrC,GAAJ,OAAa,EAAK0jB,eAAe1jB,EAAKka,QAChD+B,IAAK7W,KAAK+V,aAIhB,gBAACG,GAAA,EAAMY,QAAP,KACE,gBAACC,GAAA,EAAD,CAAQC,WAAS,EAAC/S,QAAS,kBAAM,EAAKmS,gBACpC,gBAAC,IAAD,CACEhU,GAAG,4BACH4K,eAAe,YAGnB,gBAAC+J,GAAA,EAAD,CAAQE,SAAO,EAAChT,QAAS,kBAAM,EAAKua,mBAClC,gBAAC,IAAD,CACEpc,GAAG,0BACH4K,eAAe,cA3I7B,+BAmJY,IAAD,OACP,OACE,gCACE,gBAAC,GAAD,CACEiH,SAAUjU,KAAKC,MAAMgU,SACrBhQ,QAAS,kBAAM,EAAKiT,eAEpB,uBAAK1Y,IAAK+f,KAAc5K,IAAI,gBAAgB3P,UAAU,cACtD,gBAAC,IAAD,CACE5B,GAAG,0BACH4K,eAAe,wBAGlBhN,KAAK8e,uBAhKd,GAAkCnY,aA4KrBoY,GAAb,4MAIE1J,MAAoB,CAClB2J,mBAAoBhB,GAAmBiB,SAL3C,EAYEC,qBAAyDvY,cAZ3D,EAaEwY,qBAA0DxY,cAb5D,8DAoBI,IAIMyY,EAAS,UAHb,wDAGa,OAA0BvkB,OAAOsa,SAAS1D,KAA1C,KACfzR,KAAKmf,qBAAqBlJ,QAASnB,MAAQsK,EAC3Cpf,KAAKkf,qBAAqBjJ,QAASoJ,WA1BvC,gDA8BI,IAAMC,EAAwBvG,KACxBiG,EAAqBM,EACvBtB,GAAmBuB,UACnBvB,GAAmBwB,cACnBxf,KAAKqV,MAAM2J,qBAAuBA,GACpChf,KAAKgW,SACH/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAC5B2J,qBACAM,6BAtCV,0CA6CItf,KAAKyf,4BA7CT,2CAiDIzf,KAAKyf,4BAjDT,+BAoDY,IAAD,OACP,OAAQzf,KAAKqV,MAAM2J,oBACjB,KAAKhB,GAAmBwB,cACtB,OACE,gCACE,gBAAC,GAAD,CACEvL,SAAUjU,KAAKC,MAAMgU,SACrBhQ,QAAS,kBAAM,EAAKyb,kBAEpB,uBACElhB,IAAK+f,KACL5K,IAAI,gBACJ3P,UAAU,cAEZ,gBAAC,IAAD,CACE5B,GAAG,sBACH4K,eAAe,wBAGnB,wBACErS,OAAO,mCACPid,OAAO,OACP9S,MAAO,CAAC6a,QAAS,UACjB9I,IAAK7W,KAAKkf,sBAEV,yBAAOzf,KAAK,SAAS0M,KAAK,SAAS2I,MAAM,gBACzC,yBACErV,KAAK,SACL0M,KAAK,YACL0K,IAAK7W,KAAKmf,yBAMpB,KAAKnB,GAAmBuB,UACtB,IAAMK,EAAU5f,KAAKqV,MAAMiK,sBACvBtf,KAAK6B,QAAQC,KAAKiL,cAChB,CACE3K,GAAI,+BACJ4K,eAAgB,uCAElB,CAACqM,SAAUrZ,KAAKqV,MAAMiK,wBAExBtf,KAAK6B,QAAQC,KAAKiL,cAAc,CAC9B3K,GAAI,sBACJ4K,eAAgB,0BAEtB,OACE,gBAAC,GAAD,CAAUiH,SAAUjU,KAAKC,MAAMgU,SAAU1I,MAAOqU,GAC9C,uBAAKphB,IAAK+f,KAAc5K,IAAI,gBAAgB3P,UAAU,cACtD,gBAAC,IAAD,CACE5B,GAAG,0BACH4K,eAAe,eAKzB,OAAO,SA9GX,GAAuCrG,aAA1BoY,GAQJnY,aAAe,CACpB9E,KAAM+E,K,kECzMVgZ,EAAQ,IAARA,CAA+CC,MAC/CD,EAAQ,IAARA,CAAqCC,MACrCD,EAAQ,IAARA,CAAkCC,MAClCD,EAAQ,IAARA,CAAkCC,MAClCD,EAAQ,IAARA,CAAkCC,MAClCD,EAAQ,IAARA,CAAkCC,MAclC,SAASC,GAAUC,GACjB,OAAOA,EACJC,oBACAF,UAAU,OACV9R,QAAQ,mBAAoB,IAC5BA,QAAQ,UAAW,KAIxB,SAASiS,GAAQ5iB,EAAsBiL,GACrC,OAAIjL,EAAE6iB,QAAU5X,EAAE4X,MACT5X,EAAE4X,MAAQ7iB,EAAE6iB,MAEdC,KAAY9iB,EAAEuZ,IAAKtO,EAAEsO,K,IAiBxBwJ,G,WAKJ,WAAYzlB,GAAuB,yBAJ3ByT,WAI0B,OAH1BhF,aAG0B,OAF1BgB,YAE0B,EAChCrK,KAAKqJ,QAAU/B,GAAY1M,GAC3BoF,KAAKqK,OAASzC,GAAWhN,G,yDAIzB,IAAM0lB,EAAOtgB,KACbA,KAAKqO,MAAQyR,MAAK,WAAY,IAAD,OAC3B9f,KAAKugB,IAAKT,KAAaU,cAAc,KAAM,KAAM,KAAM,KAAM,OAC7DxgB,KAAK6W,IAAI,MACT7W,KAAKygB,MAAM,MACXzgB,KAAKygB,MAAM,OAAQ,CAACC,MAAO,KAC3B1gB,KAAKygB,MAAM,iBAAkB,CAACC,MAAO,IACrC1gB,KAAKygB,MAAM,iBAAkB,CAACC,MAAO,IACrC1gB,KAAKygB,MAAM,2BAA4B,CAACC,MAAO,IAE/CJ,EAAKjX,QAAQ5B,SAAQ,SAACC,GACpB,IAAMyE,EAAO,CAACzE,EAAK8U,UAAW9U,EAAKkV,UAAUzP,KAAK,KAC5CwT,EApCd,SACEjZ,EACA2B,EACAgB,GAEA,OAAQ3C,EAAKG,MAAQ,IAClBxJ,KAAI,SAAC6c,GAAD,OAAW7Q,EAAOZ,IAAIyR,MAC1B7c,KAAI,SAACyJ,GAAD,OAASA,GAAOA,EAAIgU,QACxBzd,KAAI,SAACuiB,GAAD,OAAYA,GAAUvX,EAAQI,IAAImX,MACtCviB,KAAI,SAACkd,GAAD,OAAaA,GAAWA,EAAQqB,YACpCzP,KAAK,KA0BqB0T,CACrBnZ,EACA4Y,EAAKjX,QACLiX,EAAKjW,QAEP,EAAKgR,IAAI,CACPjZ,GAAIsF,EAAKtF,GACT+J,OACA2U,eAAgBf,GAAU5T,GAC1BwU,iBACAI,yBAA0BhB,GAAUY,a,6BAM9BX,GAAgC,IAAD,OACrCgB,EAAQhB,EACX5Q,MAAM,KACNJ,QAAO,SAAC0K,GAAD,QAASA,KAChBrb,KAAI,SAACqb,GAAD,iBAAWA,EAAX,QACJvM,KAAK,KAER,OADgBnN,KAAKqO,MAAOuE,OAAOoO,GAEhChX,KAAKkW,IACLhN,MAAM,EA1FO,GA2Fb7U,KAAI,SAAClB,GAAD,MAAa,CAACiF,GAAIjF,EAAO0Z,IAAKnP,KAAM,EAAK2B,QAAQI,IAAItM,EAAO0Z,a,mBC7FvE,SAASoK,GAAY9jB,GACnB,IAAMgP,EAAO,CAAChP,EAAOuK,KAAK8U,UAAWrf,EAAOuK,KAAKkV,UAAUzP,KAAK,KAAK+T,OACrE,OAAI/jB,EAAOiF,GAAGiF,OAAS,EACd8E,EAGP,gCACGA,EADH,IACS,6BAAKhP,EAAOiF,GAAZ,MAgBN,ICrBF+e,GDqBQC,GAAb,4MAIE/L,MAAe,CACbgM,cAAe,IALnB,EAYEC,eAZF,IAaEC,iBAbF,mEAe6B7Z,GACzB,IAAM8Z,EAAYpU,GAAkB1F,EAAKiC,MAAO3J,KAAK6B,QAAQC,MACvD2f,EAAYrU,GAAkB1F,EAAK6V,MAAOvd,KAAK6B,QAAQC,MAC7D,OAAK2f,EAGC,GAAN,OAAUD,EAAV,mBAAyBC,GAFhBD,IAnBb,0CAyB8BrkB,GAC1B,MAAO,CACLiF,GAAIjF,EAAOiF,GACXkM,IAAKnR,EAAOiF,GACZmJ,MAAO0V,GAAY9jB,GACnBukB,YAAa1hB,KAAK2hB,mBAAmBxkB,EAAOuK,SA9BlD,mCAmCuBsY,GAA4B,IAAD,OAC9C,GAAKA,EAAL,CAGA,IAAM4B,EAAU5hB,KAAKuhB,YAAa3O,OAAOoN,GAAO3hB,KAAI,SAAClB,GAAD,OAClD,EAAK0kB,oBAAoB1kB,MAE3B6C,KAAKgW,SAAS/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAACgM,cAAeO,QA1ChE,yCA8C6Bxf,GACzB1H,EAAe,0BACfsF,KAAKC,MAAMwB,YAAY,CAACW,KAAIE,WAAY,IACxCtC,KAAKshB,UAAWQ,SAAS,MAjD7B,8CAqDI9hB,KAAKuhB,YDsBF,SAA0B3mB,GAC/B,IAAMyT,EAAQ,IAAIgS,GAAgBzlB,GAElC,OADAyT,EAAM0T,aACC1T,ECzBc2T,CAAiBhiB,KAAKC,MAAMrF,QArDnD,0CAyDIoF,KAAKiiB,0BAzDT,yCA4DqBpe,GACbA,EAAUjJ,OAASoF,KAAKC,MAAMrF,MAChCoF,KAAKiiB,0BA9DX,+BAkEY,IAAD,OACP,OACE,gBAACC,GAAA,EAAD,CACEC,eAAgBC,MACd,SAACC,EAAkCznB,GAAnC,OACE,EAAK0nB,aAAa1nB,EAAKka,SACzB,KAEFyN,eAAgB,SAACF,EAAGznB,GAAJ,OAAa,EAAK4nB,mBAAmB5nB,EAAKuC,OAAOiF,KACjEwf,QAAS5hB,KAAKqV,MAAMgM,cACpBoB,iBAAkBziB,KAAK6B,QAAQC,KAAKiL,cAAc,CAChD3K,GAAI,yBACJ4K,eAAgB,qBAElB0J,YAAa1W,KAAK6B,QAAQC,KAAKiL,cAAc,CAC3C3K,GAAI,0BACJ4K,eAAgB,sBAElB0V,mBAAmB,EACnB7L,IAAK,SAACA,GAAD,OACF,EAAKyK,UAAazK,GAIrBzU,GAAG,eA1FX,GAA+BuE,aAAlBya,GAQJxa,aAAe,CACpB9E,KAAM+E,K,SC9BLsa,O,iBAAAA,I,kBAAAA,Q,KA0BE,ICnCKwB,GCgEPC,GF7BQC,GAAb,yKACqBC,GACjB,IAAM3N,EAAWnV,KAAKC,MAAMkV,SACtBvC,EAASC,QAAkBsC,EAASvC,QACtCA,EAAOkQ,OAASA,IAClBlQ,EAAOkQ,KAAOA,EACd3N,EAASvC,OAASC,YAAsBD,GACxC5S,KAAKC,MAAMmV,QAAQ9J,KAAK6J,MAP9B,iCAWqB4N,GAAyB,IAAD,OACzC,IAAK/iB,KAAKC,MAAM+iB,aACd,OAAO,KAET,IAAMC,EACJ,gCACE,gBAAC7O,GAAA,EAASD,KAAV,CAAelQ,QAAS,kBAAM,EAAKif,WAAW,eAC5C,gBAAC3N,GAAA,EAAD,CAAMpJ,KAAK,cACX,gBAAC,IAAD,CACE/J,GAAG,iBACH4K,eAAe,qBAGlBhN,KAAKC,MAAMkjB,uBACV,gBAAC/O,GAAA,EAASD,KAAV,CAAelQ,QAAS,kBAAM,EAAKif,WAAW,eAC5C,gBAAC3N,GAAA,EAAD,CAAMpJ,KAAK,UACX,gBAAC,IAAD,CACE/J,GAAG,iBACH4K,eAAe,mBAGjB,KACJ,gBAACoH,GAAA,EAASD,KAAV,CAAelQ,QAAS,kBAAM,EAAKif,WAAW,WAC5C,gBAAC3N,GAAA,EAAD,CAAMpJ,KAAK,UACX,gBAAC,IAAD,CACE/J,GAAG,aACH4K,eAAe,gCAKvB,OAAQ+V,GACN,KAAK5B,GAAWiC,MACd,OACE,gCACE,gBAAClP,GAAA,EAAKC,KAAN,CAAWlQ,QAAS,kBAAM,EAAKhE,MAAMojB,cAAcC,YACjD,gBAAC/N,GAAA,EAAD,CAAMpJ,KAAK,UACX,gBAAC,IAAD,CAAkB/J,GAAG,aAAa4K,eAAe,WAGnD,gBAACoH,GAAA,EAAD,CACEmP,QACE,2BACE,gBAAChO,GAAA,EAAD,CAAMpJ,KAAK,aACX,gBAAC,IAAD,CACE/J,GAAG,gBACH4K,eAAe,cAIrBhJ,UAAU,QAEV,gBAACoQ,GAAA,EAASF,KAAV,KACE,gBAACE,GAAA,EAASD,KAAV,CACElQ,QAAS,kBAAM,EAAKhE,MAAMojB,cAAcG,kBAExC,gBAAC,IAAD,CACEphB,GAAG,gBACH4K,eAAe,cAGnB,gBAACoH,GAAA,EAASD,KAAV,CACElQ,QAAS,kBAAM,EAAKhE,MAAMojB,cAAcI,kBAExC,gBAAC,IAAD,CACErhB,GAAG,gBACH4K,eAAe,cAGnB,gBAACoH,GAAA,EAASD,KAAV,CACElQ,QAAS,kBAAM,EAAKhE,MAAMojB,cAAcK,kBAExC,gBAAC,IAAD,CACEthB,GAAG,gBACH4K,eAAe,gBAMvB,gBAACoH,GAAA,EAAD,CACEmP,QACE,2BACE,gBAAChO,GAAA,EAAD,CAAMpJ,KAAK,QACX,gBAAC,IAAD,CAAkB/J,GAAG,YAAY4K,eAAe,UAGpDhJ,UAAU,QAEV,gBAACoQ,GAAA,EAASF,KAAV,KAAgB+O,IAElB,gBAAC,GAAD,eACEroB,KAAMoF,KAAKC,MAAMrF,KACjB6G,YAAazB,KAAKC,MAAMojB,cAAc5hB,aAClCzB,KAAKC,SAKjB,KAAKkhB,GAAWwC,MACd,OACE,gCACE,gBAACvP,GAAA,EAASD,KAAV,CAAelQ,QAAS,kBAAM,EAAKhE,MAAMojB,cAAcC,YACrD,gBAAC/N,GAAA,EAAD,CAAMpJ,KAAK,UACX,gBAAC,IAAD,CAAkB/J,GAAG,aAAa4K,eAAe,WAGnD,gBAACoH,GAAA,EAASwP,QAAV,MAEA,gBAACxP,GAAA,EAASD,KAAV,CACElQ,QAAS,kBAAM,EAAKhE,MAAMojB,cAAcG,kBAExC,gBAACjO,GAAA,EAAD,CAAMpJ,KAAK,aACX,gBAAC,IAAD,CACE/J,GAAG,oBACH4K,eAAe,iBAGnB,gBAACoH,GAAA,EAASD,KAAV,CACElQ,QAAS,kBAAM,EAAKhE,MAAMojB,cAAcI,kBAExC,gBAAClO,GAAA,EAAD,CAAMpJ,KAAK,aACX,gBAAC,IAAD,CACE/J,GAAG,oBACH4K,eAAe,kBAGnB,gBAACoH,GAAA,EAASD,KAAV,CACElQ,QAAS,kBAAM,EAAKhE,MAAMojB,cAAcK,kBAExC,gBAACnO,GAAA,EAAD,CAAMpJ,KAAK,aACX,gBAAC,IAAD,CACE/J,GAAG,oBACH4K,eAAe,kBAInB,gBAACoH,GAAA,EAASwP,QAAV,MACCX,EACD,gBAAC7O,GAAA,EAASwP,QAAV,UAtJZ,8BA6JI,OACE,gBAAC1P,GAAA,EAAKC,KAAN,KACE,gDA/JR,gCAoKoB4O,GAEhB,IAAK/iB,KAAKC,MAAMme,YAAcpe,KAAKC,MAAM4jB,kBACvC,OAAQd,GACN,KAAK5B,GAAWiC,MACd,OAAO,gBAAC,GAAD,eAAcnP,SAAUH,GAASI,MAAUlU,KAAKC,QACzD,KAAKkhB,GAAWwC,MACd,OACE,gCACE,gBAAC,GAAD,eAAc1P,SAAUH,GAASM,UAAcpU,KAAKC,QACpD,gBAACmU,GAAA,EAASwP,QAAV,OAOV,IAAK5jB,KAAKC,MAAMme,WACd,OAAO,KAGT,OAAQ2E,GACN,KAAK5B,GAAWiC,MA0Bd,OAvBcpjB,KAAKC,MAAM+iB,aACvB,gBAAC5O,GAAA,EAAD,CACEmP,QACE,2BACE,gBAAChO,GAAA,EAAD,CAAMpJ,KAAK,gBACX,gBAAC,IAAD,CAAkB/J,GAAG,YAAY4K,eAAe,UAGpDhJ,UAAU,QAEV,gBAACoQ,GAAA,EAASF,KAAV,KACE,gBAAC,GAAD,eAAYD,SAAUH,GAASM,UAAcpU,KAAKC,QAClD,gBAAC,GAAD,eAASgU,SAAUH,GAASM,UAAcpU,KAAKC,QAC/C,gBAAC,GAAD,eAAcgU,SAAUH,GAASM,UAAcpU,KAAKC,UAIxD,gCACE,gBAAC,GAAD,eAAYgU,SAAUH,GAASI,MAAUlU,KAAKC,QAC9C,gBAAC,GAAD,eAASgU,SAAUH,GAASI,MAAUlU,KAAKC,QAC3C,gBAAC,GAAD,eAAcgU,SAAUH,GAASI,MAAUlU,KAAKC,SAKtD,KAAKkhB,GAAWwC,MACd,OACE,gCACE,gBAAC,GAAD,eAAY1P,SAAUH,GAASM,UAAcpU,KAAKC,QAClD,gBAAC,GAAD,eAASgU,SAAUH,GAASM,UAAcpU,KAAKC,QAC/C,gBAAC,GAAD,eAAcgU,SAAUH,GAASM,UAAcpU,KAAKC,QACpD,gBAACmU,GAAA,EAASwP,QAAV,UA5NZ,wCAkO4Bb,GACxB,OAAK/iB,KAAKC,MAAM4jB,kBAId,gCACE,gBAAC,GAAD,eACE5P,SACE8O,IAAe5B,GAAWwC,MAAQ7P,GAASM,SAAWN,GAASI,MAE7DlU,KAAKC,QAEV8iB,IAAe5B,GAAWwC,MAAQ,gBAACvP,GAAA,EAASwP,QAAV,MAAuB,MAVrD,OApOb,oCAoPI,OACE,gCACE,gBAACxP,GAAA,EAAD,CACEmP,QACE,2BACE,gBAAChO,GAAA,EAAD,CAAMpJ,KAAK,aAGfnI,UAAU,OACV8f,KAAM,MAEN,gBAAC1P,GAAA,EAASF,KAAV,KACGlU,KAAK+jB,UAAU5C,GAAWwC,OAC1B3jB,KAAKgkB,WAAW7C,GAAWwC,OAC3B3jB,KAAKikB,kBAAkB9C,GAAWwC,OAEnC,gBAACvP,GAAA,EAASD,KAAV,CACE5W,KAAK,wCACLL,OAAO,SACPwhB,IAAI,uBAEJ,gBAAC,IAAD,CACEtc,GAAG,cACH4K,eAAe,sBAKtBhN,KAAKC,MAAMme,WACV,gBAAC1L,GAAA,EAAD,CAAMlF,GAAG,KAAKxN,KAAKuL,SAEnBvL,KAAKuL,WAnRf,qCA0RI,OACE,gCACGvL,KAAKC,MAAMme,WAAa,gBAAC1L,GAAA,EAAD,CAAMlF,GAAG,KAAKxN,KAAKuL,SAAkB,KAC7DvL,KAAK+jB,UAAU5C,GAAWiC,OAC1BpjB,KAAKgkB,WAAW7C,GAAWiC,OAC5B,gBAAClP,GAAA,EAAKA,KAAN,CAAWnP,SAAS,SACjB/E,KAAKikB,kBAAkB9C,GAAWiC,OACnC,gBAAClP,GAAA,EAAKC,KAAN,CACE5W,KAAK,wCACLL,OAAO,SACPwhB,IAAI,uBAEJ,gBAAC,IAAD,CACEtc,GAAG,cACH4K,eAAe,wBAxS7B,+BAiTI,OACE,gCACE,gBAAClJ,EAAA,EAAD,CACEsP,GAAIc,KACJgQ,SAAS,MACTC,UAAQ,EACRC,MAAM,OACNnpB,KAAK,QACL8I,SAAU,KAET/D,KAAKqkB,gBAER,gBAACvgB,EAAA,EAAD,CACEsP,GAAIc,KACJgQ,SAAS,MACTC,UAAQ,EACRC,MAAM,OACNnpB,KAAK,QACL2Y,SAAU,KAET5T,KAAKskB,oBArUhB,GAA4B3d,aEP5B,SAAS4d,GAAatkB,GACpB,OACE,gBAACukB,GAAA,EAAD,CAASC,UAAQ,EAACzgB,UAAU,SAC1B,gBAACwgB,GAAA,EAAQlR,OAAT,KACE,gBAAC,IAAD,CACElR,GAAG,4BACH4K,eAAgB,yBAGpB,yBAAI/M,EAAM+G,UAchB,SAAS0d,GAAWzkB,GAClB,OACE,gBAAC0kB,GAAA,EAAD,CAAQxf,KAAMlF,EAAMkF,KAAMgR,QAASlW,EAAM2kB,WACvC,gBAACJ,GAAA,EAAD,CAASC,UAAQ,EAACzgB,UAAU,aAAa4gB,UAAW3kB,EAAM2kB,WACxD,gBAACJ,GAAA,EAAQlR,OAAT,KACE,gBAAC,IAAD,CAAkBlR,GAAG,cAAc4K,eAAgB,WAErD,yBAAI/M,EAAM+G,WAkClB,SAAS6d,GAAa1P,GACpB,IAAMvC,EAASC,QAAkBsC,EAASvC,QACpCkS,EAAW,SAAC3Y,GAChB,IAAM2I,EAAQlC,EAAOzG,GACrB,MAAwB,kBAAV2I,EAAqBA,OAAQvI,GAGvCuW,EAAOgC,EAAS,QAChBC,EAAa,IAAIxd,IAAmC,CACxD,CAAC,YAAaxM,EAAUsF,WACxB,CAAC,QAAStF,EAAUwF,SAGhBkR,EAAOqT,EAAS,QAChB3Z,EAAM2Z,EAAS,OACfE,EAAoC,SAAzBF,EAAS,YACtBG,OAAyC1Y,EAClB,aAAvBuY,EAAS,UACXG,EAAa,CACXlT,OAAQ4Q,GAAeuC,SACvBpM,SAAUgM,EAAS,cAEZrT,EACTwT,EAAa,CACXlT,OAAQ4Q,GAAewC,SACvB1T,OACAtI,OAAQgM,EAASE,OAASF,EAASE,MAAMza,KACzCoD,OAAQmX,EAASE,OAASF,EAASE,MAAMrX,QAElCmN,EACT8Z,EAAa,CACXlT,OAAQ4Q,GAAeyC,WACvBja,MACA4F,WAAuC,UAA3B+T,EAAS,eAEdE,IACTC,EAAa,CAAClT,OAAQ4Q,GAAe0C,WAGvC,IAAM3d,EAAOod,EAAS,QAChBQ,EAAY/gB,OAAOugB,EAAS,QAKlC,MAAO,CACLG,aACA9iB,UANgBuF,EACd,CAACtF,GAAIsF,EAAMpF,WAAaijB,MAAMD,GAAyB,EAAZA,QAC3C/Y,EAMFrM,UAAW6kB,EAAWtb,IAAIqZ,IAAS/nB,EAAUoF,UAE7CqlB,cAAyC,UAA1BV,EAAS,aACxB1G,WAAuC,UAA3B0G,EAAS,gBAA8BE,EACnDjkB,gBAAwC,SAAvB+jB,EAAS,Y,SDjJlBnC,O,uBAAAA,I,2BAAAA,I,uBAAAA,I,wBAAAA,Q,cCgEPC,O,qBAAAA,I,qBAAAA,I,iBAAAA,I,iCAAAA,I,gCAAAA,Q,KAyHE,IAAM6C,GAAb,4MACEpQ,MAAe,CACbA,MAAOuN,GAAS8C,QAChBtH,YAAY,EACZle,UAAWnF,EAAUoF,UACrBwlB,gBAAgB,GALpB,EAOEC,SAAyB,KAP3B,EA6CmBC,mBAAqB,IAAIlU,GA7C5C,EA8CmBmU,oBAAsB,IAAI5T,GA9C7C,EA+CmB6T,mBAAqB,IAAI9H,GACxC,EAAKpc,QAAQC,MAhDjB,EAkDmBkkB,mBAAqB,IAAI7T,GAlD5C,EAsMU1Q,YAAc,SAACU,GAErB,IAAIA,EAAUC,GAAGoJ,WN3XY,YM2X7B,CAGA9Q,EAAe,qBACf,IAAMya,EAAW,EAAKlV,MAAMkV,SACtBvC,EAASC,QAAkBsC,EAASvC,QAC1CA,EAAOlL,KAAOvF,EAAUC,GACxBwQ,EAAOqT,IAAM3hB,OAAOnC,EAAUG,YAC9B6S,EAASvC,OAASC,YAAsBD,GACxC,EAAK3S,MAAMmV,QAAQ9J,KAAK6J,KAjN5B,EAoNUmO,QAAU,WAChB5oB,EAAe,SACf,EAAKkrB,UAAY,EAAKA,SAASlgB,SAtNnC,EAuOU8d,cAvOV,sBAuO0B,sBAAAlmB,EAAA,yDACtB5C,EAAe,gBADO,cAGpB,EAAKkrB,UAHe,qCAGI,EAAKA,SAASM,cAHlB,uDAKpB,EAAKP,eACH,EAAK9jB,QAAQC,KAAKiL,cAAc,CAC9B3K,GAAI,mBACJ4K,eACE,6FATc,yDAvO1B,EAuPUyW,cAvPV,sBAuP0B,sBAAAnmB,EAAA,yDACtB5C,EAAe,gBADO,cAGpB,EAAKkrB,UAHe,qCAGI,EAAKA,SAASO,cAHlB,uDAKpB,EAAKR,eACH,EAAK9jB,QAAQC,KAAKiL,cAAc,CAC9B3K,GAAI,mBACJ4K,eACE,6FATc,yDAvP1B,EAuQU0W,cAAgB,WACtBhpB,EAAe,gBACf,EAAKkrB,UAAY,EAAKA,SAASQ,eAzQnC,EA4QUC,oBAAsB,WAC5B,EAAKrQ,SACH/L,OAAOC,OAAO,GAAI,EAAKmL,MAAO,CAC5BsQ,gBAAgB,MA/QxB,EAoRUW,eAAiB,WACvB,OAAQ,EAAKjR,MAAMA,OACjB,KAAKuN,GAAS2D,cACd,KAAK3D,GAAS4D,aACZ,OACE,uBAAKpkB,GAAG,WACN,gBAACsiB,GAAD,CACEvf,KAAM,EAAKkQ,MAAMsQ,eACjB3e,QAAS,EAAKqO,MAAMoR,MACpB7B,UAAW,EAAKyB,sBAEjB,EAAKhR,MAAMA,QAAUuN,GAAS4D,aAC7B,gBAACE,GAAA,EAAD,CAAQC,QAAM,EAAC1rB,KAAK,QAAQ+I,UAAU,iBACpC,KACJ,gBAAC,EAAD,CACEpJ,KAAM,EAAKya,MAAMza,KAAM2V,UACvBpO,UAAW,EAAKkT,MAAMlT,UACtBjC,UAAW,EAAKmV,MAAMnV,UACtBuB,YAAa,EAAKA,YAClBV,gBAAiB,EAAKsU,MAAMtU,gBAC5B8V,IAAK,SAACA,GAAD,OAAU,EAAK+O,SAAW/O,KAEhC,EAAKxB,MAAMmQ,cACV,gBAAC1hB,EAAA,EAAD,CAAYC,SAAU,IAAK3B,GAAG,aAC5B,gBAAC,GAAD,CACE+G,OAAQ,EAAKkM,MAAMza,KAAMuO,OACzBzB,KAAM,EAAK2N,MAAMlT,UAAWC,MAG9B,MAIV,KAAKwgB,GAASgE,MACZ,OAAO,gBAACrC,GAAD,CAAcvd,QAAS,EAAKqO,MAAMoR,QAE3C,KAAK7D,GAAS8C,QACd,KAAK9C,GAASiE,QACZ,OAAO,gBAACH,GAAA,EAAD,CAAQC,QAAM,EAAC1rB,KAAK,YA1TnC,4DAgBIkH,EACA2kB,GAjDJ,IAA6BzR,EAAU0R,IAoDhC/mB,KAAKqV,MAAMlT,WACZnC,KAAKqV,MAAMlT,UAAUC,KAAOD,EAAUC,IACtCpC,KAAKqV,MAAMlT,UAAWG,aAAeH,EAAUG,aAtDxB+S,EAuDNrV,KAAKqV,OAvDW0R,EAuDJD,IAnD1B7c,OAAOjC,QAAQ+e,GAASpb,MAC7B,mCAAE2C,EAAF,KAAOwG,EAAP,iBAA4BvI,IAAVuI,GAAuBO,EAAM/G,KAASwG,QAoDtD9U,KAAKgW,SACH/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAAClT,aAAY2kB,MA1BnD,+BAgCmBL,GACfzmB,KAAKgW,SACH/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAC5BA,MAAOuN,GAASgE,MAChBH,aApCR,0CA0CIzmB,KAAKgnB,uBA1CT,gCAoDoB/B,EAA4B9iB,GAC5C,IACGnC,KAAKqV,MAAM4P,YACZjlB,KAAKqV,MAAM4P,WAAWlT,SAAWkT,EAAWlT,OAG5C,OAAO,EAET,IAAMH,EAAY,CAACE,KAAMmT,EAAY9iB,aAC/B8kB,EAAW,CACfnV,KAAM9R,KAAKqV,MAAM4P,WACjB9iB,UAAWnC,KAAKqV,MAAMlT,WAExB,OAAQyP,EAAUE,KAAKC,QACrB,KAAK4Q,GAAewC,SAClB,OAAOnlB,KAAK6lB,mBAAmBqB,UAC7BtV,EACAqV,EACAjnB,KAAKqV,MAAMza,MAEf,KAAK+nB,GAAeyC,WAClB,OAAOplB,KAAK8lB,oBAAoBoB,UAC9BtV,EACAqV,EACAjnB,KAAKqV,MAAMza,MAEf,KAAK+nB,GAAeuC,SAClB,OAAOllB,KAAK+lB,mBAAmBmB,UAC7BtV,EACAqV,EACAjnB,KAAKqV,MAAMza,MAEf,KAAK+nB,GAAe0C,SAClB,OAAOrlB,KAAKgmB,mBAAmBkB,UAC7BtV,EACAqV,EACAjnB,KAAKqV,MAAMza,SAxFrB,+BA6FmBqqB,EAA4B9iB,GAC3C,OAAQ8iB,EAAWlT,QACjB,KAAK4Q,GAAewC,SAClB,OAAOnlB,KAAK6lB,mBAAmBsB,SAAS,CAACrV,KAAMmT,EAAY9iB,cAC7D,KAAKwgB,GAAeyC,WAClB,OAAOplB,KAAK8lB,oBAAoBqB,SAAS,CAACrV,KAAMmT,EAAY9iB,cAC9D,KAAKwgB,GAAeuC,SAClB,OAAOllB,KAAK+lB,mBAAmBoB,SAAS,CAACrV,KAAMmT,EAAY9iB,cAC7D,KAAKwgB,GAAe0C,SAClB,OAAOrlB,KAAKgmB,mBAAmBmB,SAAS,CAACrV,KAAMmT,EAAY9iB,iBAtGnE,wKA2GyC,UAAjCnC,KAAKC,MAAMkV,SAASxC,SA3G5B,uBA4GU3S,KAAKqV,MAAMA,QAAUuN,GAAS8C,SAChC1lB,KAAKgW,SAAS/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAACA,MAAOuN,GAAS8C,WA7GrE,8BAkHU7kB,EAAOgkB,GAAa7kB,KAAKC,MAAMkV,WAE3B8P,WApHd,gBAqHMjlB,KAAKC,MAAMmV,QAAQnH,QAAQ,CAAC0E,SAAU,MArH5C,0BAuHM3S,KAAKqV,MAAMA,QAAUuN,GAAS8C,UAC9B1lB,KAAKknB,UAAUrmB,EAAKokB,WAAYpkB,EAAKsB,WAxH3C,wBA2HMnC,KAAKgW,SACH/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAC5BA,MAAOuN,GAASiE,QAChB5B,WAAYpkB,EAAKokB,WACjB9iB,UAAWtB,EAAKsB,UAChBic,WAAYvd,EAAKud,WACjBle,UAAWW,EAAKX,aAjI1B,oBAqI2BF,KAAKmnB,SAAStmB,EAAKokB,WAAYpkB,EAAKsB,WArI/D,QAqIcvH,EArId,OAuIQoF,KAAKgW,SACH/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAC5BA,MAAOuN,GAAS2D,cAChB3rB,OACAuH,UAAW+N,GAAatV,EAAK2V,UAAW1P,EAAKsB,WAC7CqjB,cAAe3kB,EAAK2kB,iBA5IhC,mDAgJQxlB,KAAKonB,UCtUkBX,EDsUM,EAAD,GCtUS3kB,EDsUD9B,KAAK6B,QAAQC,KCrUjD2kB,aAAiB3f,GAGhBhF,EAAKiL,cACV,CACE3K,GAAG,SAAD,OAAWqkB,EAAM1f,MACnBiG,eAAgByZ,EAAMzf,SAExByf,EAAM5lB,MAPC4lB,EAAMzf,UDoLjB,mCAmJMhH,KAAKqV,MAAMA,QAAUuN,GAAS2D,eAC9BvmB,KAAKqV,MAAMA,QAAUuN,GAAS4D,aApJpC,oBAuJYrkB,EAAY+N,GAChBlQ,KAAKqV,MAAMza,KAAM2V,UACjB1P,EAAKsB,WAEDklB,EACJxmB,EAAKokB,WAAWlT,SAAW4Q,GAAeuC,YACxCllB,KAAKqV,MAAMlT,WAAanC,KAAKqV,MAAMlT,UAAUC,KAAOD,EAAUC,IAClEpC,KAAKsnB,cAAcnlB,EAAW,CAC5BjC,UAAWW,EAAKX,UAChBmV,MAAOgS,EACHzE,GAAS4D,aACT5D,GAAS2D,iBAEXc,EApKV,4CAsK6BpO,GACjBpY,EAAKsB,UAAWC,GAChBpC,KAAK6B,QAAQC,MAxKzB,QAsKgBlH,EAtKhB,OA0KgBuH,EAAY+N,GAAatV,EAAK2V,UAAW1P,EAAKsB,WACpDnC,KAAKgW,SACH/L,OAAOC,OAAO,GAAIlK,KAAKqV,MAAO,CAC5BA,MAAOuN,GAAS2D,cAChB3rB,OACAuH,eA/Kd,mDAmLUnC,KAAK2lB,eACH3lB,KAAK6B,QAAQC,KAAKiL,cAChB,CACE3K,GAAI,kCACJ4K,eAAgB,8CAElB,CAACyZ,MAAK,OAER,CAACpR,MAAOuN,GAAS2D,gBA3L7B,kCCtLO,IAAwBE,EAAc3kB,IDsL7C,yHAyNyBkF,EAAiB8f,GACtC9mB,KAAKgW,SACH/L,OAAOC,OACL,GACAlK,KAAKqV,MACL,CACEsQ,gBAAgB,EAChBc,MAAOzf,GAET8f,MAlOR,+BA8TY,IAAD,OACP,OACE,gCACE,gBAACS,GAAA,EAAD,CACEtlB,OAAQ,SAAChC,GAAD,eACN,gBAAC,GAAD,iBACMA,EADN,CAEErF,KAAM,EAAKya,MAAMza,MAAQ,EAAKya,MAAMza,KAAK2V,UACzC4S,wBACE,YAAK9N,MAAM4P,kBAAX,eAAuBlT,UAAW4Q,GAAeuC,SAEnDlC,aAC2C,UAAzC,EAAK/iB,MAAMmV,QAAQD,SAASxC,WAC3B,EAAK0C,MAAMA,QAAUuN,GAAS2D,eAC7B,EAAKlR,MAAMA,QAAUuN,GAAS4D,cAElCpI,WAAY,EAAK/I,MAAM+I,WACvBiF,cAAe,CACb5hB,YAAa,EAAKA,YAClB6hB,QAAS,EAAKA,QACdE,cAAe,EAAKA,cACpBC,cAAe,EAAKA,cACpBC,cAAe,EAAKA,eAEtBG,mBACE,YAAKxO,MAAM4P,kBAAX,eAAuBlT,UAAW4Q,GAAeuC,eAKzD,gBAACsC,GAAA,EAAD,KACE,gBAACD,GAAA,EAAD,CAAOE,OAAK,EAACC,KAAK,IAAIC,UAAW7U,KACjC,gBAACyU,GAAA,EAAD,CAAOE,OAAK,EAACC,KAAK,QAAQzlB,OAAQjC,KAAKsmB,iBACvC,gBAACsB,GAAA,EAAD,CAAUpa,GAAI,YA/VxB,GAAyB7G,aAAZ8e,GAUJ7e,aAAe,CACpB9E,KAAM+E,K,6CElLVghB,YAAc,GAAD,mBACRC,GADQ,YAERC,GAFQ,YAGRC,GAHQ,YAIRC,GAJQ,YAKRC,GALQ,YAMRC,KAGL,IAAMC,GAAW,CACfC,GAAIC,EACJC,GAAIC,EACJC,GAAIC,EACJC,GAAIC,EACJC,GAAIC,GAEAC,GAAWC,UAAUD,UAAYC,UAAUD,SAAS3Z,MAAM,QAAQ,GAElE6Z,GAAUC,oBAEZD,IAA4B,OAAjBA,GAAQ9c,KACrBgd,SACE,iIAIArqB,SAAS2F,cAAc,UAGzB0kB,SACE,gBAAC,IAAD,CAAcvnB,OAAQmnB,GAAUX,SAAUA,GAASW,KACjD,gBAAC,KAAD,KACE,gBAACxB,GAAA,EAAD,CAAOI,UAAWlC,OAGtB3mB,SAAS2F,cAAc,Y","file":"static/js/main.45c6bbe8.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/wikitree.1dee3d66.png\";","module.exports = __webpack_public_path__ + \"static/media/topola.060eef13.jpg\";","/** Sends an event to Google Analytics. */\nexport function analyticsEvent(action: string, data?: any) {\n (window as any).gtag('event', action, data);\n}\n","import * as React from 'react';\nimport {event, select, Selection} from 'd3-selection';\nimport {interpolateNumber} from 'd3-interpolate';\nimport {intlShape} from 'react-intl';\nimport {max, min} from 'd3-array';\nimport {Responsive} from 'semantic-ui-react';\nimport {saveAs} from 'file-saver';\nimport {zoom, ZoomBehavior, zoomTransform} from 'd3-zoom';\nimport 'd3-transition';\nimport {\n JsonGedcomData,\n ChartHandle,\n IndiInfo,\n createChart,\n DetailedRenderer,\n HourglassChart,\n RelativesChart,\n FancyChart,\n CircleRenderer,\n} from 'topola';\n\n/** How much to zoom when using the +/- buttons. */\nconst ZOOM_FACTOR = 1.3;\n\n/**\n * Called when the view is dragged with the mouse.\n *\n * @param size the size of the chart\n */\nfunction zoomed(size: [number, number]) {\n const parent = select('#svgContainer').node() as Element;\n\n const scale = event.transform.k;\n const offsetX = max([0, (parent.clientWidth - size[0] * scale) / 2]);\n const offsetY = max([0, (parent.clientHeight - size[1] * scale) / 2]);\n select('#chartSvg')\n .attr('width', size[0] * scale)\n .attr('height', size[1] * scale)\n .attr('transform', `translate(${offsetX}, ${offsetY})`);\n select('#chart').attr('transform', `scale(${scale})`);\n\n parent.scrollLeft = -event.transform.x;\n parent.scrollTop = -event.transform.y;\n}\n\n/** Called when the scrollbars are used. */\nfunction scrolled() {\n const parent = select('#svgContainer').node() as Element;\n const x = parent.scrollLeft + parent.clientWidth / 2;\n const y = parent.scrollTop + parent.clientHeight / 2;\n const scale = zoomTransform(parent).k;\n select(parent).call(zoom().translateTo, x / scale, y / scale);\n}\n\n/** Loads blob as data URL. */\nfunction loadAsDataUrl(blob: Blob): Promise {\n const reader = new FileReader();\n reader.readAsDataURL(blob);\n return new Promise((resolve, reject) => {\n reader.onload = (e) => resolve((e.target as FileReader).result as string);\n });\n}\n\nasync function inlineImage(image: SVGImageElement) {\n const href = image.href.baseVal;\n if (!href) {\n return;\n }\n try {\n const response = await fetch(href);\n const blob = await response.blob();\n const dataUrl = await loadAsDataUrl(blob);\n image.href.baseVal = dataUrl;\n } catch (e) {\n console.warn('Failed to load image:', e);\n }\n}\n\n/**\n * Fetches all images in the SVG and replaces them with inlined images as data\n * URLs. Images are replaced in place. The replacement is done, the returned\n * promise is resolved.\n */\nasync function inlineImages(svg: Element): Promise {\n const images = Array.from(svg.getElementsByTagName('image'));\n await Promise.all(images.map(inlineImage));\n}\n\n/** Loads a blob into an image object. */\nfunction loadImage(blob: Blob): Promise {\n const image = new Image();\n image.src = URL.createObjectURL(blob);\n return new Promise((resolve, reject) => {\n image.addEventListener('load', () => resolve(image));\n });\n}\n\n/** Draw image on a new canvas and return the canvas. */\nfunction drawOnCanvas(image: HTMLImageElement) {\n const canvas = document.createElement('canvas');\n // Scale image for better quality.\n canvas.width = image.width * 2;\n canvas.height = image.height * 2;\n\n const ctx = canvas.getContext('2d')!;\n const oldFill = ctx.fillStyle;\n ctx.fillStyle = 'white';\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n ctx.fillStyle = oldFill;\n\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\n return canvas;\n}\n\nfunction canvasToBlob(canvas: HTMLCanvasElement, type: string) {\n return new Promise((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (blob) {\n resolve(blob);\n } else {\n reject();\n }\n }, type);\n });\n}\n\n/** Supported chart types. */\nexport enum ChartType {\n Hourglass,\n Relatives,\n Fancy,\n}\n\nexport interface ChartProps {\n data: JsonGedcomData;\n selection: IndiInfo;\n chartType: ChartType;\n onSelection: (indiInfo: IndiInfo) => void;\n freezeAnimation?: boolean;\n}\n\n/** Component showing the genealogy chart and handling transition animations. */\nexport class Chart extends React.PureComponent {\n private chart?: ChartHandle;\n /** Animation is in progress. */\n private animating = false;\n /** Rendering is required after the current animation finishes. */\n private rerenderRequired = false;\n /** The d3 zoom behavior object. */\n private zoomBehavior?: ZoomBehavior;\n\n private getChartType() {\n switch (this.props.chartType) {\n case ChartType.Hourglass:\n return HourglassChart;\n case ChartType.Relatives:\n return RelativesChart;\n case ChartType.Fancy:\n return FancyChart;\n default:\n // Fall back to hourglass chart.\n return HourglassChart;\n }\n }\n\n private getRendererType() {\n switch (this.props.chartType) {\n case ChartType.Fancy:\n return CircleRenderer;\n default:\n // Use DetailedRenderer by default.\n return DetailedRenderer;\n }\n }\n\n private zoom(factor: number) {\n const parent = select('#svgContainer') as Selection;\n this.zoomBehavior!.scaleBy(parent, factor);\n }\n\n /**\n * Renders the chart or performs a transition animation to a new state.\n * If indiInfo is not given, it means that it is the initial render and no\n * animation is performed.\n */\n private renderChart(args: {initialRender: boolean} = {initialRender: false}) {\n // Wait for animation to finish if animation is in progress.\n if (!args.initialRender && this.animating) {\n this.rerenderRequired = true;\n return;\n }\n\n // Freeze changing selection after initial rendering.\n if (!args.initialRender && this.props.freezeAnimation) {\n return;\n }\n\n if (args.initialRender) {\n (select('#chart').node() as HTMLElement).innerHTML = '';\n this.chart = createChart({\n json: this.props.data,\n chartType: this.getChartType(),\n renderer: this.getRendererType(),\n svgSelector: '#chart',\n indiCallback: (info) => this.props.onSelection(info),\n animate: true,\n updateSvgSize: false,\n locale: this.context.intl.locale,\n });\n } else {\n this.chart!.setData(this.props.data);\n }\n const chartInfo = this.chart!.render({\n startIndi: this.props.selection.id,\n baseGeneration: this.props.selection.generation,\n });\n const svg = select('#chartSvg');\n const parent = select('#svgContainer').node() as Element;\n\n const scale = zoomTransform(parent).k;\n const zoomOutFactor = min([\n 1,\n scale,\n parent.clientWidth / chartInfo.size[0],\n parent.clientHeight / chartInfo.size[1],\n ])!;\n const extent: [number, number] = [max([0.1, zoomOutFactor])!, 2];\n\n this.zoomBehavior = zoom()\n .scaleExtent(extent)\n .translateExtent([[0, 0], chartInfo.size])\n .on('zoom', () => zoomed(chartInfo.size));\n select(parent)\n .on('scroll', scrolled)\n .call(this.zoomBehavior);\n\n const scrollTopTween = (scrollTop: number) => {\n return () => {\n const i = interpolateNumber(parent.scrollTop, scrollTop);\n return (t: number) => {\n parent.scrollTop = i(t);\n };\n };\n };\n const scrollLeftTween = (scrollLeft: number) => {\n return () => {\n const i = interpolateNumber(parent.scrollLeft, scrollLeft);\n return (t: number) => {\n parent.scrollLeft = i(t);\n };\n };\n };\n\n const dx = parent.clientWidth / 2 - chartInfo.origin[0] * scale;\n const dy = parent.clientHeight / 2 - chartInfo.origin[1] * scale;\n const offsetX = max([\n 0,\n (parent.clientWidth - chartInfo.size[0] * scale) / 2,\n ]);\n const offsetY = max([\n 0,\n (parent.clientHeight - chartInfo.size[1] * scale) / 2,\n ]);\n const svgTransition = svg\n .transition()\n .delay(200)\n .duration(500);\n const transition = args.initialRender ? svg : svgTransition;\n transition\n .attr('transform', `translate(${offsetX}, ${offsetY})`)\n .attr('width', chartInfo.size[0] * scale)\n .attr('height', chartInfo.size[1] * scale);\n if (args.initialRender) {\n parent.scrollLeft = -dx;\n parent.scrollTop = -dy;\n } else {\n svgTransition\n .tween('scrollLeft', scrollLeftTween(-dx))\n .tween('scrollTop', scrollTopTween(-dy));\n }\n\n // After the animation is finished, rerender the chart if required.\n this.animating = true;\n chartInfo.animationPromise.then(() => {\n this.animating = false;\n if (this.rerenderRequired) {\n this.rerenderRequired = false;\n this.renderChart({initialRender: false});\n }\n });\n }\n\n componentDidMount() {\n this.renderChart({initialRender: true});\n }\n\n componentDidUpdate(prevProps: ChartProps) {\n const initialRender = this.props.chartType !== prevProps.chartType;\n this.renderChart({initialRender});\n }\n\n /** Make intl appear in this.context. */\n static contextTypes = {\n intl: intlShape,\n };\n\n render() {\n return (\n
\n \n \n \n \n \n
\n );\n }\n\n /** Return a copy of the SVG chart but without scaling and positioning. */\n private getStrippedSvg() {\n const svg = document.getElementById('chartSvg')!.cloneNode(true) as Element;\n\n svg.removeAttribute('transform');\n const parent = select('#svgContainer').node() as Element;\n const scale = zoomTransform(parent).k;\n svg.setAttribute(\n 'width',\n String(Number(svg.getAttribute('width')) / scale),\n );\n svg.setAttribute(\n 'height',\n String(Number(svg.getAttribute('height')) / scale),\n );\n svg.querySelector('#chart')!.removeAttribute('transform');\n\n return svg;\n }\n\n private getSvgContents() {\n return new XMLSerializer().serializeToString(this.getStrippedSvg());\n }\n\n private async getSvgContentsWithInlinedImages() {\n const svg = this.getStrippedSvg();\n await inlineImages(svg);\n return new XMLSerializer().serializeToString(svg);\n }\n\n /** Shows the print dialog to print the currently displayed chart. */\n print() {\n const printWindow = document.createElement('iframe');\n printWindow.style.position = 'absolute';\n printWindow.style.top = '-1000px';\n printWindow.style.left = '-1000px';\n printWindow.onload = () => {\n printWindow.contentDocument!.open();\n printWindow.contentDocument!.write(this.getSvgContents());\n printWindow.contentDocument!.close();\n // Doesn't work on Firefox without the setTimeout.\n setTimeout(() => {\n printWindow.contentWindow!.focus();\n printWindow.contentWindow!.print();\n printWindow.parentNode!.removeChild(printWindow);\n }, 500);\n };\n document.body.appendChild(printWindow);\n }\n\n async downloadSvg() {\n const contents = await this.getSvgContentsWithInlinedImages();\n const blob = new Blob([contents], {type: 'image/svg+xml'});\n saveAs(blob, 'topola.svg');\n }\n\n private async drawOnCanvas(): Promise {\n const contents = await this.getSvgContentsWithInlinedImages();\n const blob = new Blob([contents], {type: 'image/svg+xml'});\n return await drawOnCanvas(await loadImage(blob));\n }\n\n async downloadPng() {\n const canvas = await this.drawOnCanvas();\n const blob = await canvasToBlob(canvas, 'image/png');\n saveAs(blob, 'topola.png');\n }\n\n async downloadPdf() {\n // Lazy load jspdf.\n const {default: jspdf} = await import('jspdf');\n const canvas = await this.drawOnCanvas();\n const doc = new jspdf({\n orientation: canvas.width > canvas.height ? 'l' : 'p',\n unit: 'pt',\n format: [canvas.width, canvas.height],\n });\n doc.addImage(canvas, 'PNG', 0, 0, canvas.width, canvas.height, 'NONE');\n doc.save('topola.pdf');\n }\n}\n","/** Error class adding an error code used for i18n. */\nexport class TopolaError extends Error {\n constructor(\n public readonly code: string,\n message: string,\n public readonly args: {[key: string]: string} = {},\n ) {\n super(message);\n }\n}\n","import {GedcomEntry, parse as parseGedcom} from 'parse-gedcom';\nimport {TopolaError} from './error';\nimport {\n JsonFam,\n JsonGedcomData,\n JsonIndi,\n gedcomEntriesToJson,\n JsonImage,\n JsonEvent,\n} from 'topola';\n\nexport interface GedcomData {\n /** The HEAD entry. */\n head: GedcomEntry;\n /** INDI entries mapped by id. */\n indis: {[key: string]: GedcomEntry};\n /** FAM entries mapped by id. */\n fams: {[key: string]: GedcomEntry};\n /** Other entries mapped by id, e.g. NOTE, SOUR. */\n other: {[key: string]: GedcomEntry};\n}\n\nexport interface TopolaData {\n chartData: JsonGedcomData;\n gedcom: GedcomData;\n}\n\n/**\n * Returns the identifier extracted from a pointer string.\n * E.g. '@I123@' -> 'I123'\n */\nexport function pointerToId(pointer: string): string {\n return pointer.substring(1, pointer.length - 1);\n}\n\nexport function idToIndiMap(data: JsonGedcomData): Map {\n const map = new Map();\n data.indis.forEach((indi) => {\n map.set(indi.id, indi);\n });\n return map;\n}\n\nexport function idToFamMap(data: JsonGedcomData): Map {\n const map = new Map();\n data.fams.forEach((fam) => {\n map.set(fam.id, fam);\n });\n return map;\n}\n\nfunction prepareGedcom(entries: GedcomEntry[]): GedcomData {\n const head = entries.find((entry) => entry.tag === 'HEAD')!;\n const indis: {[key: string]: GedcomEntry} = {};\n const fams: {[key: string]: GedcomEntry} = {};\n const other: {[key: string]: GedcomEntry} = {};\n entries.forEach((entry) => {\n if (entry.tag === 'INDI') {\n indis[pointerToId(entry.pointer)] = entry;\n } else if (entry.tag === 'FAM') {\n fams[pointerToId(entry.pointer)] = entry;\n } else if (entry.pointer) {\n other[pointerToId(entry.pointer)] = entry;\n }\n });\n return {head, indis, fams, other};\n}\n\nfunction strcmp(a: string, b: string) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n}\n\n/** Compares dates of the given events. */\nfunction compareDates(\n event1: JsonEvent | undefined,\n event2: JsonEvent | undefined,\n): number {\n const date1 =\n event1 && (event1.date || (event1.dateRange && event1.dateRange.from));\n const date2 =\n event2 && (event2.date || (event2.dateRange && event2.dateRange.from));\n if (!date1 || !date1.year || !date2 || !date2.year) {\n return 0;\n }\n if (date1.year !== date2.year) {\n return date1.year - date2.year;\n }\n if (!date1.month || !date2.month) {\n return 0;\n }\n if (date1.month !== date2.month) {\n return date1.month - date2.month;\n }\n if (date1.day && date2.day && date1.day !== date2.day) {\n return date1.month - date2.month;\n }\n return 0;\n}\n\n/** Birth date comparator for individuals. */\nfunction birthDatesComparator(gedcom: JsonGedcomData) {\n const indiMap = idToIndiMap(gedcom);\n\n return (indiId1: string, indiId2: string) => {\n const indi1: JsonIndi | undefined = indiMap.get(indiId1);\n const indi2: JsonIndi | undefined = indiMap.get(indiId2);\n return (\n compareDates(indi1 && indi1.birth, indi2 && indi2.birth) ||\n strcmp(indiId1, indiId2)\n );\n };\n}\n\n/** Marriage date comparator for families. */\nfunction marriageDatesComparator(gedcom: JsonGedcomData) {\n const famMap = idToFamMap(gedcom);\n\n return (famId1: string, famId2: string) => {\n const fam1: JsonFam | undefined = famMap.get(famId1);\n const fam2: JsonFam | undefined = famMap.get(famId2);\n return (\n compareDates(fam1 && fam1.marriage, fam2 && fam2.marriage) ||\n strcmp(famId1, famId2)\n );\n };\n}\n\n/**\n * Sorts children by birth date in the given family.\n * Does not modify the input objects.\n */\nfunction sortFamilyChildren(\n fam: JsonFam,\n comparator: (id1: string, id2: string) => number,\n): JsonFam {\n if (!fam.children) {\n return fam;\n }\n const newChildren = fam.children.sort(comparator);\n return Object.assign({}, fam, {children: newChildren});\n}\n\n/**\n * Sorts children by birth date.\n * Does not modify the input object.\n */\nfunction sortChildren(gedcom: JsonGedcomData): JsonGedcomData {\n const comparator = birthDatesComparator(gedcom);\n const newFams = gedcom.fams.map((fam) => sortFamilyChildren(fam, comparator));\n return Object.assign({}, gedcom, {fams: newFams});\n}\n\n/**\n * Sorts spouses by marriage date.\n * Does not modify the input objects.\n */\nfunction sortIndiSpouses(\n indi: JsonIndi,\n comparator: (id1: string, id2: string) => number,\n): JsonFam {\n if (!indi.fams) {\n return indi;\n }\n const newFams = indi.fams.sort(comparator);\n return Object.assign({}, indi, {fams: newFams});\n}\n\nfunction sortSpouses(gedcom: JsonGedcomData): JsonGedcomData {\n const comparator = marriageDatesComparator(gedcom);\n const newIndis = gedcom.indis.map((indi) =>\n sortIndiSpouses(indi, comparator),\n );\n return Object.assign({}, gedcom, {indis: newIndis});\n}\n\n/** Sorts children and spouses. */\nexport function normalizeGedcom(gedcom: JsonGedcomData): JsonGedcomData {\n return sortSpouses(sortChildren(gedcom));\n}\n\nconst IMAGE_EXTENSIONS = ['.jpg', '.png', '.gif'];\n\n/** Returns true if the given file name has a known image extension. */\nfunction isImageFile(fileName: string): boolean {\n const lowerName = fileName.toLowerCase();\n return IMAGE_EXTENSIONS.some((ext) => lowerName.endsWith(ext));\n}\n\n/**\n * Removes images that are not HTTP links or do not have known image extensions.\n * Does not modify the input object.\n */\nfunction filterImage(indi: JsonIndi, images: Map): JsonIndi {\n if (!indi.images || indi.images.length === 0) {\n return indi;\n }\n const newImages: JsonImage[] = [];\n indi.images.forEach((image) => {\n const fileName = image.url.match(/[^/\\\\]*$/)![0];\n // If the image file has been loaded into memory, use it.\n if (images.has(fileName)) {\n newImages.push({url: images.get(fileName)!, title: image.title});\n } else if (image.url.startsWith('http') && isImageFile(image.url)) {\n newImages.push(image);\n }\n });\n return Object.assign({}, indi, {images: newImages});\n}\n\n/**\n * Removes images that are not HTTP links.\n * Does not modify the input object.\n */\nfunction filterImages(\n gedcom: JsonGedcomData,\n images: Map,\n): JsonGedcomData {\n const newIndis = gedcom.indis.map((indi) => filterImage(indi, images));\n return Object.assign({}, gedcom, {indis: newIndis});\n}\n\n/**\n * Converts GEDCOM file into JSON data performing additional transformations:\n * - sort children by birth date\n * - remove images that are not HTTP links and aren't mapped in `images`.\n *\n * @param images Map from file name to image URL. This is used to pass in\n * uploaded images.\n */\nexport function convertGedcom(\n gedcom: string,\n images: Map,\n): TopolaData {\n const entries = parseGedcom(gedcom);\n const json = gedcomEntriesToJson(entries);\n if (\n !json ||\n !json.indis ||\n !json.indis.length ||\n !json.fams ||\n !json.fams.length\n ) {\n throw new TopolaError('GEDCOM_READ_FAILED', 'Failed to read GEDCOM file');\n }\n\n return {\n chartData: filterImages(normalizeGedcom(json), images),\n gedcom: prepareGedcom(entries),\n };\n}\n\nexport function getSoftware(head: GedcomEntry): string | null {\n const sour =\n head && head.tree && head.tree.find((entry) => entry.tag === 'SOUR');\n const name =\n sour && sour.tree && sour.tree.find((entry) => entry.tag === 'NAME');\n return (name && name.data) || null;\n}\n","import {Date as TopolaDate, DateOrRange, DateRange, getDate} from 'topola';\nimport {InjectedIntl} from 'react-intl';\n\nconst DATE_QUALIFIERS = new Map([\n ['abt', 'about'],\n ['cal', 'calculated'],\n ['est', 'estimated'],\n]);\n\nfunction formatDate(date: TopolaDate, intl: InjectedIntl) {\n const hasDay = date.day !== undefined;\n const hasMonth = date.month !== undefined;\n const hasYear = date.year !== undefined;\n if (!hasDay && !hasMonth && !hasYear) {\n return date.text || '';\n }\n const dateObject = new Date(\n hasYear ? date.year! : 0,\n hasMonth ? date.month! - 1 : 0,\n hasDay ? date.day! : 1,\n );\n\n const qualifier = date.qualifier && date.qualifier.toLowerCase();\n const translatedQualifier =\n qualifier &&\n intl.formatMessage({\n id: `date.${qualifier}`,\n defaultMessage: DATE_QUALIFIERS.get(qualifier) || qualifier,\n });\n\n const formatOptions = {\n day: hasDay ? 'numeric' : undefined,\n month: hasMonth ? 'long' : undefined,\n year: hasYear ? 'numeric' : undefined,\n };\n const translatedDate = new Intl.DateTimeFormat(\n intl.locale,\n formatOptions,\n ).format(dateObject);\n\n return [translatedQualifier, translatedDate].join(' ');\n}\n\nfunction formatDateRage(dateRange: DateRange, intl: InjectedIntl) {\n const fromDate = dateRange.from;\n const toDate = dateRange.to;\n const translatedFromDate = fromDate && formatDate(fromDate, intl);\n const translatedToDate = toDate && formatDate(toDate, intl);\n if (translatedFromDate && translatedToDate) {\n return intl.formatMessage(\n {\n id: 'date.between',\n defaultMessage: 'between {from} and {to}',\n },\n {from: translatedFromDate, to: translatedToDate},\n );\n }\n if (translatedFromDate) {\n return intl.formatMessage(\n {\n id: 'date.after',\n defaultMessage: 'after {from}',\n },\n {from: translatedFromDate},\n );\n }\n if (translatedToDate) {\n return intl.formatMessage(\n {\n id: 'date.before',\n defaultMessage: 'before {to}',\n },\n {to: translatedToDate},\n );\n }\n return '';\n}\n\n/** Formats a DateOrRange object. */\nexport function formatDateOrRange(\n dateOrRange: DateOrRange | undefined,\n intl: InjectedIntl,\n): string {\n if (!dateOrRange) {\n return '';\n }\n if (dateOrRange.date) {\n return formatDate(dateOrRange.date, intl);\n }\n if (dateOrRange.dateRange) {\n return formatDateRage(dateOrRange.dateRange, intl);\n }\n return '';\n}\n\n/** Formats a date given in GEDCOM format. */\nexport function translateDate(gedcomDate: string, intl: InjectedIntl): string {\n return formatDateOrRange(getDate(gedcomDate), intl);\n}\n","import * as React from 'react';\nimport flatMap from 'array.prototype.flatmap';\nimport Linkify from 'react-linkify';\nimport {FormattedMessage, InjectedIntl} from 'react-intl';\nimport {GedcomData, pointerToId} from './util/gedcom_util';\nimport {GedcomEntry} from 'parse-gedcom';\nimport {intlShape} from 'react-intl';\nimport {translateDate} from './util/date_util';\n\ninterface Props {\n gedcom: GedcomData;\n indi: string;\n}\n\nconst EVENT_TAGS = ['BIRT', 'BAPM', 'CHR', 'DEAT', 'BURI', 'EVEN', 'CENS'];\nconst EXCLUDED_TAGS = ['NAME', 'SEX', 'FAMC', 'FAMS', 'NOTE', 'SOUR'];\nconst TAG_DESCRIPTIONS = new Map([\n ['ADOP', 'Adoption'],\n ['BAPM', 'Baptism'],\n ['BIRT', 'Birth'],\n ['BURI', 'Burial'],\n ['CENS', 'Census'],\n ['CHR', 'Christening'],\n ['CREM', 'Cremation'],\n ['DEAT', 'Death'],\n ['EDUC', 'Education'],\n ['EMAIL', 'E-mail'],\n ['EMIG', 'Emigration'],\n ['EVEN', 'Event'],\n ['FACT', 'Fact'],\n ['IMMI', 'Immigration'],\n ['MILT', 'Military services'],\n ['NATU', 'Naturalization'],\n ['OCCU', 'Occupation'],\n ['TITL', 'Title'],\n ['WWW', 'WWW'],\n]);\n\nfunction translateTag(tag: string) {\n const normalizedTag = tag.replace(/_/g, '');\n return (\n \n );\n}\n\nfunction joinLines(lines: (JSX.Element | string)[]) {\n return (\n <>\n {lines.map((line, index) => (\n
\n {line}\n \n
\n ))}\n >\n );\n}\n\n/**\n * Returns the data for the given GEDCOM entry as an array of lines. Supports\n * continuations with CONT and CONC.\n */\nfunction getData(entry: GedcomEntry) {\n const result = [entry.data];\n entry.tree.forEach((subentry) => {\n if (subentry.tag === 'CONC' && subentry.data) {\n const last = result.length - 1;\n result[last] += subentry.data;\n } else if (subentry.tag === 'CONT' && subentry.data) {\n result.push(subentry.data);\n }\n });\n return result;\n}\n\nfunction eventDetails(entry: GedcomEntry, intl: InjectedIntl) {\n const lines = [];\n if (entry.data && entry.data.length > 1) {\n lines.push({entry.data});\n }\n const date = entry.tree.find((subentry) => subentry.tag === 'DATE');\n if (date && date.data) {\n lines.push(translateDate(date.data, intl));\n }\n const place = entry.tree.find((subentry) => subentry.tag === 'PLAC');\n if (place && place.data) {\n lines.push(...getData(place));\n }\n entry.tree\n .filter((subentry) => subentry.tag === 'NOTE')\n .forEach((note) =>\n getData(note).forEach((line) => lines.push({line})),\n );\n if (!lines.length) {\n return null;\n }\n return (\n <>\n
\n ));\n}\n\n/**\n * Returns true if there is displayable information in this entry.\n * Returns false if there is no data in this entry or this is only a reference\n * to another entry.\n */\nfunction hasData(entry: GedcomEntry) {\n return entry.tree.length > 0 || (entry.data && !entry.data.startsWith('@'));\n}\n\nfunction getOtherDetails(entries: GedcomEntry[]) {\n return entries\n .filter(\n (entry) =>\n !EXCLUDED_TAGS.includes(entry.tag) && !EVENT_TAGS.includes(entry.tag),\n )\n .filter(hasData)\n .map((entry) => dataDetails(entry))\n .filter((element) => element !== null)\n .map((element, index) => (\n
\n {element}\n
\n ));\n}\n\n/**\n * If the entry is a reference to a top-level entry, the referenced entry is\n * returned. Otherwise, returns the given entry unmodified.\n */\nfunction dereference(entry: GedcomEntry, gedcom: GedcomData) {\n if (entry.data) {\n const dereferenced = gedcom.other[pointerToId(entry.data)];\n if (dereferenced) {\n return dereferenced;\n }\n }\n return entry;\n}\n\nexport class Details extends React.Component {\n /** Make intl appear in this.context. */\n static contextTypes = {\n intl: intlShape,\n };\n\n render() {\n const entries = this.props.gedcom.indis[this.props.indi].tree;\n const entriesWithData = entries\n .map((entry) => dereference(entry, this.props.gedcom))\n .filter(hasData);\n\n return (\n
\n );\n\n case AppState.ERROR:\n return ;\n\n case AppState.INITIAL:\n case AppState.LOADING:\n return ;\n }\n };\n\n render() {\n return (\n <>\n (\n \n )}\n />\n \n \n \n \n \n >\n );\n }\n}\n","import {InjectedIntl} from 'react-intl';\nimport {TopolaError} from './error';\n\n/**\n * Returns a translated message for the given error. If the message can't be\n * translated, the original error.message is returned.\n */\nexport function getI18nMessage(error: Error, intl: InjectedIntl): string {\n if (!(error instanceof TopolaError)) {\n return error.message;\n }\n return intl.formatMessage(\n {\n id: `error.${error.code}`,\n defaultMessage: error.message,\n },\n error.args,\n );\n}\n","import * as locale_de from 'react-intl/locale-data/de';\nimport * as locale_en from 'react-intl/locale-data/en';\nimport * as locale_fr from 'react-intl/locale-data/fr';\nimport * as locale_it from 'react-intl/locale-data/it';\nimport * as locale_pl from 'react-intl/locale-data/pl';\nimport * as locale_ru from 'react-intl/locale-data/ru';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport messages_de from './translations/de.json';\nimport messages_fr from './translations/fr.json';\nimport messages_it from './translations/it.json';\nimport messages_pl from './translations/pl.json';\nimport messages_ru from './translations/ru.json';\nimport {addLocaleData} from 'react-intl';\nimport {App} from './app';\nimport {detect} from 'detect-browser';\nimport {HashRouter as Router, Route} from 'react-router-dom';\nimport {IntlProvider} from 'react-intl';\nimport './index.css';\nimport 'semantic-ui-css/semantic.min.css';\nimport 'canvas-toBlob';\n\naddLocaleData([\n ...locale_de,\n ...locale_en,\n ...locale_fr,\n ...locale_it,\n ...locale_pl,\n ...locale_ru,\n]);\n\nconst messages = {\n de: messages_de,\n fr: messages_fr,\n it: messages_it,\n pl: messages_pl,\n ru: messages_ru,\n};\nconst language = navigator.language && navigator.language.split(/[-_]/)[0];\n\nconst browser = detect();\n\nif (browser && browser.name === 'ie') {\n ReactDOM.render(\n
\n Topola Genealogy Viewer does not support Internet Explorer. Please try a\n different (modern) browser.\n
,\n document.querySelector('#root'),\n );\n} else {\n ReactDOM.render(\n \n \n \n \n ,\n document.querySelector('#root'),\n );\n}\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/static/js/main.a7cc69d9.chunk.js b/static/js/main.a7cc69d9.chunk.js
deleted file mode 100644
index dd70b1a..0000000
--- a/static/js/main.a7cc69d9.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(this["webpackJsonptopola-viewer"]=this["webpackJsonptopola-viewer"]||[]).push([[0],{112:function(e,t,n){e.exports=n.p+"static/media/wikitree.1dee3d66.png"},202:function(e,t,n){e.exports=n.p+"static/media/topola.060eef13.jpg"},299:function(e){e.exports=JSON.parse('{"menu.open":"\xd6ffnen","menu.open_file":"Datei \xf6ffnen","menu.load_from_url":"URL \xf6ffnen","menu.select_wikitree_id":"WikiTree ID ausw\xe4hlen","menu.print":"Print","menu.download":"Download","menu.pdf_file":"PDF-Datei","menu.png_file":"PNG-Datei","menu.svg_file":"SVG-Datei","menu.download_pdf":"PDF herunterladen","menu.download_png":"PNG herunterladen","menu.download_svg":"SVG herunterladen","menu.view":"View","menu.hourglass":"Sanduhrkarte","menu.relatives":"Alle Verwandten","menu.fancy":"Zierbaum (experimentell)","menu.wikitree_login":"Bei WikiTree anmelden","menu.wikitree_logged_in":"Eingeloggt","menu.wikitree_popup_username":"Bei WikiTree als {username} angemeldet","menu.wikitree_popup":"Bei WikiTree angemeldet","menu.github":"Projekt auf der GitHub-Website","menu.search.placeholder":"Person suchen","menu.search.no_results":"Keine Ergebnisse","intro.title":"Topola Genealogie","intro.description":"Mit der Topola Genealogie k\xf6nnen Sie den Stammbaum auf interaktive Weise durchsuchen.","intro.instructions":"Klicken Sie auf Datei \xf6ffnen oder URL \xf6ffnen, um eine GEDCOM-Datei zu laden. Die meisten Genealogie-Programme verf\xfcgen \xfcber eine GEDCOM-Exportfunktion.","intro.examples":"Nachfolgend einige Beispiele aus dem Internet:","intro.from":"source:","intro.privacy":"Datenschutz","intro.privacy_note":"Bei Verwendung der Funktion \\"Datei \xf6ffnen\\" werden Ihre Daten nirgendwo gesendet und verbleiben auf Ihrem Computer. Bei Verwendung der Funktion \\"URL \xf6ffnen\\" werden Daten von der angegebenen Adresse vom Dienst {link} an gesendet Erm\xf6glichen des Ladens von Daten aus einer anderen Dom\xe4ne (CORS).","load_from_url.title":"Von URL \xf6ffnen","load_from_url.comment":"Die Daten der angegebenen URL werden \xfcber den {link} -Dienst geladen, um CORS-Probleme zu vermeiden.","load_from_url.cancel":"Cancel","load_from_url.load":"\xd6ffnen","select_wikitree_id.title":"WikiTree ID eingeben","select_wikitree_id.comment":"Geben Sie die Profil-ID {wikiTreeLink} ein. Beispiele: {example1}, {example2}","select_wikitree_id.cancel":"Cancel","select_wikitree_id.load":"Open","gedcom.BAPM":"Taufe","gedcom.BIRT":"Geburt","gedcom.BURI":"Beerdigung","gedcom.CENS":"Volksz\xe4hlung","gedcom.CHR":"Taufe","gedcom.DEAT":"Tod","gedcom.DSCR":"Beschreibung","gedcom.EMAIL":"E-Mail","gedcom.EVEN":"Ereignis","gedcom.OCCU":"Beruf","gedcom.RIN":"ID","gedcom.TITL":"Titel","gedcom.WWW":"Website","gedcom._UPD":"Zuletzt aktualisiert","date.abt":"about","date.cal":"berechnet","date.est":"gesch\xe4tzt","date.between":"zwischen {from} und {to}","date.after":"after {from}","date.before":"before {to}","error.error":"Error","error.failed_pdf":"PDF konnte nicht erstellt werden. Versuchen Sie es erneut mit einem kleineren Diagramm oder laden Sie die SVG-Datei herunter.","error.failed_png":"Fehler beim Erstellen der PNG-Datei. Versuchen Sie es erneut mit einem kleineren Diagramm oder laden Sie die SVG-Datei herunter.","error.failed_to_load_file":"Fehler beim Laden der Datei","error.failed_wikitree_load_more":"Fehler beim Abrufen der Daten aus WikiTree. {error}","wikitree.private":"Privat"}')},300:function(e){e.exports=JSON.parse('{"menu.open":"Ouvrir","menu.open_file":"Ouvrir le fichier","menu.load_from_url":"Ouvrir l\'URL","menu.select_wikitree_id":"S\xe9lectionnez l\'ID WikiTree","menu.print":"Imprimer","menu.download":"T\xe9l\xe9charger","menu.pdf_file":"Fichier PDF","menu.png_file":"Fichier PNG","menu.svg_file":"Fichier SVG","menu.download_pdf":"T\xe9l\xe9charger le PDF","menu.download_png":"T\xe9l\xe9charger PNG","menu.download_svg":"T\xe9l\xe9charger SVG","menu.view":"Afficher","menu.hourglass":"Graphique en sablier","menu.relatives":"Tous les parents","menu.fancy":"Arbre ornemental (exp\xe9rimental)","menu.wikitree_login":"Connectez-vous \xe0 WikiTree","menu.wikitree_logged_in":"Connect\xe9","menu.wikitree_popup_username":"Connect\xe9 \xe0 WikiTree en tant que {username}","menu.wikitree_popup":"Connect\xe9 \xe0 WikiTree","menu.github":"Projet sur le site Web GitHub","menu.search.placeholder":"Rechercher une personne","menu.search.no_results":"Aucun r\xe9sultat","intro.title":"Topola G\xe9n\xe9alogie","intro.description":"La Topola G\xe9n\xe9alogie vous permet de parcourir l\'arbre g\xe9n\xe9alogique de mani\xe8re interactive.","intro.instructions":"Cliquez sur OPEN FILE ou OPEN URL pour charger un fichier GEDCOM. La plupart des logiciels de g\xe9n\xe9alogie ont une fonction d\'exportation GEDCOM.","intro.examples":"Voici quelques exemples trouv\xe9s sur Internet:","intro.from":"source:","intro.privacy":"Confidentialit\xe9","intro.privacy_note":"Lorsque vous utilisez la fonction \\"Ouvrir un fichier\\", vos donn\xe9es ne sont envoy\xe9es nulle part et restent sur votre ordinateur. Lorsque vous utilisez la fonction \\"Ouvrir l\'URL\\", les donn\xe9es de l\'adresse indiqu\xe9e sont envoy\xe9es par le service {link} \xe0 permettant le chargement des donn\xe9es depuis un autre domaine (CORS).","load_from_url.title":"Ouvrir depuis l\'URL","load_from_url.comment":"Les donn\xe9es de l\'URL donn\xe9e seront charg\xe9es via le service {link} pour \xe9viter les probl\xe8mes CORS.","load_from_url.cancel":"Annuler","load_from_url.load":"Ouvrir","select_wikitree_id.title":"Entrez l\'ID de WikiTree","select_wikitree_id.comment":"Entrez l\'ID de profil {wikiTreeLink}. Exemples: {example1}, {example2}","select_wikitree_id.cancel":"Annuler","select_wikitree_id.load":"Ouvrir","gedcom.BAPM":"Bapt\xeame","gedcom.BIRT":"Naissance","gedcom.BURI":"Fun\xe9railles","gedcom.CENS":"Recensement","gedcom.CHR":"Bapt\xeame","gedcom.DEAT":"Mort","gedcom.DSCR":"Description","gedcom.EMAIL":"E-mail","gedcom.EVEN":"\xc9v\xe9nement","gedcom.OCCU":"Profession","gedcom.RIN":"ID","gedcom.TITL":"Titre","gedcom.WWW":"Site Web","gedcom._UPD":"Derni\xe8re mise \xe0 jour","date.abt":"environ","date.cal":"calcul\xe9","date.est":"estim\xe9","date.between":"entre {from} et {to}","date.after":"apr\xe8s {from}","date.before":"avant {to}","error.error":"Erreur","error.failed_pdf":"\xc9chec de la cr\xe9ation du PDF. R\xe9essayez avec un diagramme plus petit ou t\xe9l\xe9chargez le fichier SVG.","error.failed_png":"Impossible de cr\xe9er le fichier PNG. R\xe9essayez avec un diagramme plus petit ou t\xe9l\xe9chargez le fichier SVG.","error.failed_to_load_file":"Erreur lors du chargement du fichier","error.failed_wikitree_load_more":"Erreur lors de l\'obtention des donn\xe9es de WikiTree. {error}","wikitree.private":"Priv\xe9"}')},301:function(e){e.exports=JSON.parse('{"menu.open":"Apri","menu.open_file":"Apri file","menu.load_from_url":"Apri URL","menu.select_wikitree_id":"Seleziona ID WikiTree","menu.print":"Stampa","menu.download":"Download","menu.pdf_file":"File PDF","menu.png_file":"File PNG","menu.svg_file":"File SVG","menu.download_pdf":"Scarica PDF","menu.download_png":"Scarica PNG","menu.download_svg":"Scarica SVG","menu.view":"Visualizza","menu.hourglass":"Grafico a clessidra","menu.relatives":"Tutti i parenti","menu.fancy":"Albero ornamentale (sperimentale)","menu.wikitree_login":"Accedi a WikiTree","menu.wikitree_logged_in":"Accesso effettuato","menu.wikitree_popup_username":"Accesso a WikiTree come {username}","menu.wikitree_popup":"Accesso a WikiTree","menu.github":"Progetto sul sito web GitHub","menu.search.placeholder":"Cerca persona","menu.search.no_results":"Nessun risultato","intro.title":"Topola Genealogy","intro.description":"Topola Genealogy ti consente di esplorare l\'albero genealogico in modo interattivo.","intro.instructions":"Fai clic su OPEN FILE o OPEN URL per caricare un file GEDCOM. La maggior parte dei software di genealogia ha una funzione di esportazione GEDCOM.","intro.examples":"Di seguito sono riportati alcuni esempi trovati su Internet:","intro.from":"source:","intro.privacy":"Privacy","intro.privacy_note":"Quando si utilizza la funzione \\"Apri file\\", i dati non vengono inviati da nessuna parte e rimangono sul computer. Quando si utilizza la funzione \\"Apri URL\\", i dati dall\'indirizzo specificato vengono inviati dal servizio {link} a consentire il caricamento dei dati da un altro dominio (CORS).","load_from_url.title":"Apri da URL","load_from_url.comment":"I dati dall\'URL specificato verranno caricati tramite il servizio {link} per evitare problemi CORS.","load_from_url.cancel":"Annulla","load_from_url.load":"Apri","select_wikitree_id.title":"Inserisci ID WikiTree","select_wikitree_id.comment":"Inserisci l\'ID profilo {wikiTreeLink}. Esempi: {example1}, {example2}","select_wikitree_id.cancel":"Annulla","select_wikitree_id.load":"Apri","gedcom.BAPM":"Battesimo","gedcom.BIRT":"Nascita","gedcom.BURI":"Funerale","gedcom.CENS":"Census","gedcom.CHR":"Battesimo","gedcom.DEAT":"Death","gedcom.DSCR":"Descrizione","gedcom.EMAIL":"E-mail","gedcom.EVEN":"Evento","gedcom.OCCU":"Professione","gedcom.RIN":"ID","gedcom.TITL":"Titolo","gedcom.WWW":"Sito web","gedcom._UPD":"Ultimo aggiornamento","date.abt":"about","date.cal":"calcolato","date.est":"stimato","date.between":"tra {from} e {to}","date.after":"after {from}","date.before":"before {to}","error.error":"Error","error.failed_pdf":"Impossibile creare PDF. Riprova con un diagramma pi\xf9 piccolo o scarica il file SVG.","error.failed_png":"Impossibile creare il file PNG. Riprova con un diagramma pi\xf9 piccolo o scarica il file SVG.","error.failed_to_load_file":"Errore durante il caricamento del file","error.failed_wikitree_load_more":"Errore durante il recupero dei dati da WikiTree. {error}","wikitree.private":"Privato"}')},302:function(e){e.exports=JSON.parse('{"menu.open":"Otw\xf3rz","menu.open_file":"Otw\xf3rz plik","menu.load_from_url":"Otw\xf3rz URL","menu.select_wikitree_id":"Wybierz WikiTree ID","menu.print":"Drukuj","menu.download":"Pobierz","menu.pdf_file":"Plik PDF","menu.png_file":"Plik PNG","menu.svg_file":"Plik SVG","menu.download_pdf":"Pobierz PDF","menu.download_png":"Pobierz PNG","menu.download_svg":"Pobierz SVG","menu.view":"Widok","menu.hourglass":"Wykres klepsydrowy","menu.relatives":"Wszyscy krewni","menu.fancy":"Ozdobne drzewo (eksperymentalne)","menu.wikitree_login":"Zaloguj do WikiTree","menu.wikitree_logged_in":"Zalogowano","menu.wikitree_popup_username":"Zalogowano do WikiTree jako {username}","menu.wikitree_popup":"Zalogowano do WikiTree","menu.github":"Projekt na stronie GitHub","menu.search.placeholder":"Szukaj osoby","menu.search.no_results":"Brak wynik\xf3w","intro.title":"Topola Genealogy","intro.description":"Topola Genealogy pozwala przegl\u0105da\u0107 drzewo genealogiczne w interaktywny spos\xf3b.","intro.instructions":"Kliknij OTW\xd3RZ PLIK lub OTW\xd3RZ URL, aby za\u0142adowa\u0107 plik GEDCOM. Wi\u0119kszo\u015b\u0107 program\xf3w genealogicznych posiada funkcj\u0119 eksportu do pliku GEDCOM.","intro.examples":"Poni\u017cej jest kilka przyk\u0142ad\xf3w znalezionych w Internecie:","intro.from":"\u017ar\xf3d\u0142o:","intro.privacy":"Prywatno\u015b\u0107","intro.privacy_note":"U\u017cywaj\u0105c funkcji \\"Otw\xf3rz plik\\", Twoje dane nie s\u0105 nigdzie wysy\u0142ane i pozostaj\u0105 na Twoim komputerze. U\u017cywaj\u0105c funkcji \\"Otw\xf3rz URL\\", dane z podanego adresu przesy\u0142ane s\u0105 przez us\u0142ug\u0119 {link} w celu umo\u017cliwienia za\u0142adowania danych z innej domeny (CORS).","load_from_url.title":"Otw\xf3rz z adresu URL","load_from_url.comment":"Dane z podanego adresu URL zostan\u0105 za\u0142adowane poprzez us\u0142ug\u0119 {link} w celu unikni\u0119cia problem\xf3w z CORS.","load_from_url.cancel":"Anuluj","load_from_url.load":"Otw\xf3rz","select_wikitree_id.title":"Podaj WikiTree ID","select_wikitree_id.comment":"Wpisz identyfikator profilu {wikiTreeLink}. Przyk\u0142ady: {example1}, {example2}","select_wikitree_id.cancel":"Anuluj","select_wikitree_id.load":"Otw\xf3rz","gedcom.BAPM":"Chrzest","gedcom.BIRT":"Narodziny","gedcom.BURI":"Pogrzeb","gedcom.CENS":"Spis ludno\u015bci","gedcom.CHR":"Chrzest","gedcom.DEAT":"\u015amier\u0107","gedcom.DSCR":"Opis","gedcom.EDUC":"Wykszta\u0142cenie","gedcom.EMAIL":"E-mail","gedcom.EVEN":"Wydarzenie","gedcom.FACT":"Fakt","gedcom.MILT":"S\u0142u\u017cba wojskowa","gedcom.OCCU":"Zaw\xf3d","gedcom.RIN":"ID","gedcom.TITL":"Tytu\u0142","gedcom.WWW":"Strona WWW","gedcom._UPD":"Ostatnia aktualizacja","date.abt":"oko\u0142o","date.cal":"wyliczone","date.est":"oszacowane","date.between":"mi\u0119dzy {from} a {to}","date.after":"po {from}","date.before":"przed {to}","error.error":"B\u0142\u0105d","error.failed_pdf":"Nie uda\u0142o si\u0119 utworzy\u0107 pliku PDF. Spr\xf3buj jeszcze raz z mniejszym diagramem lub pobierz plik SVG.","error.failed_png":"Nie uda\u0142o si\u0119 utworzy\u0107 pliku PNG. Spr\xf3buj jeszcze raz z mniejszym diagramem lub pobierz plik SVG.","error.failed_to_load_file":"B\u0142\u0105d wczytywania pliku","error.failed_wikitree_load_more":"B\u0142\u0105d podczas pobierania danych z WikiTree. {error}","error.GEDCOM_READ_FAILED":"B\u0142\u0105d wczytywania pliku GEDCOM","error.ERROR_LOADING_UPLOADED_FILE":"B\u0142\u0105d wczytywania danych. Otw\xf3rz ponownie plik.","error.WIKITREE_ID_NOT_PROVIDED":"Identyfikator WikiTree nie zosta\u0142 podany","error.WIKITREE_PROFILE_NOT_ACCESSIBLE":"Profil WikiTree {id} nie jest dost\u0119pny","error.WIKITREE_PROFILE_NOT_FOUND":"Profil WikiTree {id} nie istnieje","wikitree.private":"Prywatne"}')},303:function(e){e.exports=JSON.parse('{"menu.open":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c","menu.open_file":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b","menu.load_from_url":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c URL","menu.select_wikitree_id":"\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 WikiTree ID","menu.print":"\u041f\u0435\u0447\u0430\u0442\u044c","menu.download":"\u0421\u043a\u0430\u0447\u0430\u0442\u044c","menu.pdf_file":"\u0424\u0430\u0439\u043b PDF","menu.png_file":"\u0424\u0430\u0439\u043b PNG","menu.svg_file":"\u0424\u0430\u0439\u043b SVG","menu.download_pdf":"\u0421\u043a\u0430\u0447\u0430\u0442\u044c PDF","menu.download_png":"\u0421\u043a\u0430\u0447\u0430\u0442\u044c PNG","menu.download_svg":"\u0421\u043a\u0430\u0447\u0430\u0442\u044c SVG","menu.view":"\u0412\u0438\u0434","menu.hourglass":"\u0413\u0440\u0430\u0444\u0438\u043a \u041f\u0435\u0441\u043e\u0447\u043d\u044b\u0435 \u0447\u0430\u0441\u044b","menu.relatives":"\u0412\u0441\u0435 \u0440\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a\u0438","menu.fancy":"\u0414\u0435\u043a\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e (\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435))","menu.wikitree_login":"\u0412\u043e\u0439\u0442\u0438 \u0432 WikiTree","menu.wikitree_logged_in":"\u0412\u0445\u043e\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d","menu.wikitree_popup_username":"\u0412\u044b \u0432\u043e\u0448\u043b\u0438 \u0432 WikiTree \u043a\u0430\u043a {username}","menu.wikitree_popup":"\u0412\u044b \u0432\u043e\u0448\u043b\u0438 \u0432 WikiTree","menu.github":"\u041f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 GitHub","menu.search.placeholder":"\u0418\u0441\u043a\u0430\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430","menu.search.no_results":"\u041d\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432","intro.title":"Topola Genealogy","intro.description":"Topola Genealogy \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0441\u0435\u043c\u0435\u0439\u043d\u043e\u0435 \u0434\u0440\u0435\u0432\u043e \u0432 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435.","intro.instructions":"\u0429\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \\"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b\\" \u0438\u043b\u0438 \\"\u041e\u0442\u043a\u0440\u044b\u0442\u044c URL\\", \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0444\u0430\u0439\u043b GEDCOM. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0430\u043b\u043e\u0433\u0438\u0438 \u0438\u043c\u0435\u044e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 GEDCOM.","intro.examples":"\u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435:","intro.from":"\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a:","intro.privacy":"\u041a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c","intro.privacy_note":"\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \\"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b\\" \u0412\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0412\u0430\u0448\u0435\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435. \u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \\"\u041e\u0442\u043a\u0440\u044b\u0442\u044c URL\\" \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043b\u0443\u0436\u0431\u043e\u0439 {link} \u043d\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 (CORS).","load_from_url.title":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0441 \u0430\u0434\u0440\u0435\u0441\u0430 URL","load_from_url.comment":"\u0414\u0430\u043d\u043d\u044b\u0435 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 URL \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0447\u0435\u0440\u0435\u0437 \u0441\u043b\u0443\u0436\u0431\u0443 {link}, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c CORS.","load_from_url.cancel":"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c","load_from_url.load":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c","select_wikitree_id.title":"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 WikiTree","select_wikitree_id.comment":"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0444\u0438\u043b\u044f {wikiTreeLink}. \u041f\u0440\u0438\u043c\u0435\u0440\u044b: {example1}, {example2}","select_wikitree_id.cancel":"\u041e\u0442\u043c\u0435\u043d\u0430","select_wikitree_id.load":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c","gedcom.ADOP":"\u0423\u0441\u044b\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435","gedcom.BAPM":"\u041a\u0440\u0435\u0449\u0435\u043d\u0438\u0435","gedcom.BIRT":"\u0420\u043e\u0436\u0434\u0435\u043d\u0438\u0435","gedcom.BURI":"\u041f\u043e\u0445\u043e\u0440\u043e\u043d\u044b","gedcom.CENS":"\u041f\u0435\u0440\u0435\u043f\u0438\u0441\u044c \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u0438\u044f","gedcom.CHR":"\u041a\u0440\u0435\u0449\u0435\u043d\u0438\u0435","gedcom.CREM":"\u041a\u0440\u0435\u043c\u0430\u0446\u0438\u044f","gedcom.DEAT":"\u0421\u043c\u0435\u0440\u0442\u044c","gedcom.DSCR":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","gedcom.EDUC":"\u041e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","gedcom.EMAIL":"E-mail","gedcom.EMIG":"\u042d\u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f","gedcom.EVEN":"\u0421\u043e\u0431\u044b\u0442\u0438\u0435","gedcom.FACT":"\u0424\u0430\u043a\u0442","gedcom.IMMI":"\u0418\u043c\u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f","gedcom.MILT":"\u0412\u043e\u0435\u043d\u043d\u0430\u044f \u0441\u043b\u0443\u0436\u0431\u0430","gedcom.NATU":"\u041d\u0430\u0442\u0443\u0440\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f","gedcom.OCCU":"\u0412\u0438\u0434 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438","gedcom.RIN":"ID","gedcom.TITL":"\u0422\u0438\u0442\u0443\u043b","gedcom.WWW":"\u0412\u0435\u0431-\u0441\u0430\u0439\u0442 WWW","gedcom._UPD":"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435","date.abt":"\u043e\u043a\u043e\u043b\u043e","date.cal":"\u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043e","date.est":"\u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e","date.between":"\u043c\u0435\u0436\u0434\u0443 {from} \u0438 {to}","date.after":"\u043f\u043e\u0441\u043b\u0435 {from}","date.before":"\u0434\u043e {to}","error.error":"\u041e\u0448\u0438\u0431\u043a\u0430","error.failed_pdf":"\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c PDF-\u0444\u0430\u0439\u043b. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u0441 \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u043e\u0439 \u0438\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0444\u0430\u0439\u043b SVG.","error.failed_png":"\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b PNG. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u0441 \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0441\u0445\u0435\u043c\u043e\u0439 \u0438\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0444\u0430\u0439\u043b SVG.","error.failed_to_load_file":"\u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u0430","error.failed_wikitree_load_more":"\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 WikiTree. {error}}","wikitree.private":"\u0427\u0430\u0441\u0442\u043d\u044b\u0439"}')},304:function(e,t){},348:function(e,t,n){e.exports=n(607)},360:function(e,t){},366:function(e,t){},428:function(e,t){},604:function(e,t,n){},607:function(e,t,n){"use strict";n.r(t);var a=n(31),r=n(293),i=n(294),o=n(295),s=n(296),c=n(297),l=n(298),u=n(0),d=n(78),m=n(299),p=n(300),f=n(301),h=n(302),g=n(303),v=n(8),w=n(9),E=n.n(w),k=n(20),b=n(18),_=n(19),y=n(25),O=n(26),D=n(48),T=n(30);function I(e,t){window.gtag("event",e,t)}var S,R=n(146),M=n(74),N=n(49),j=n(106),L=n(75),C=n(637),x=n(201),P=n(99),A=(n(76),n(37));function W(e){var t=Object(R.a)("#svgContainer").node(),n=M.c.transform.k,a=Object(j.a)([0,(t.clientWidth-e[0]*n)/2]),r=Object(j.a)([0,(t.clientHeight-e[1]*n)/2]);Object(R.a)("#chartSvg").attr("width",e[0]*n).attr("height",e[1]*n).attr("transform","translate(".concat(a,", ").concat(r,")")),Object(R.a)("#chart").attr("transform","scale(".concat(n,")")),t.scrollLeft=-M.c.transform.x,t.scrollTop=-M.c.transform.y}function z(){var e=Object(R.a)("#svgContainer").node(),t=e.scrollLeft+e.clientWidth/2,n=e.scrollTop+e.clientHeight/2,a=Object(P.b)(e).k;Object(R.a)(e).call(Object(P.a)().translateTo,t/a,n/a)}function G(e){var t=new FileReader;return t.readAsDataURL(e),new Promise((function(e,n){t.onload=function(t){return e(t.target.result)}}))}function F(e){return U.apply(this,arguments)}function U(){return(U=Object(k.a)(E.a.mark((function e(t){var n,a,r,i;return E.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.href.baseVal){e.next=3;break}return e.abrupt("return");case 3:return e.prev=3,e.next=6,fetch(n);case 6:return a=e.sent,e.next=9,a.blob();case 9:return r=e.sent,e.next=12,G(r);case 12:i=e.sent,t.href.baseVal=i,e.next=19;break;case 16:e.prev=16,e.t0=e.catch(3),console.warn("Failed to load image:",e.t0);case 19:case"end":return e.stop()}}),e,null,[[3,16]])})))).apply(this,arguments)}function B(e){return H.apply(this,arguments)}function H(){return(H=Object(k.a)(E.a.mark((function e(t){var n;return E.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=Array.from(t.getElementsByTagName("image")),e.next=3,Promise.all(n.map(F));case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function V(e){var t=new Image;return t.src=URL.createObjectURL(e),new Promise((function(e,n){t.addEventListener("load",(function(){return e(t)}))}))}function K(e){var t=document.createElement("canvas");t.width=2*e.width,t.height=2*e.height;var n=t.getContext("2d"),a=n.fillStyle;return n.fillStyle="white",n.fillRect(0,0,t.width,t.height),n.fillStyle=a,n.drawImage(e,0,0,t.width,t.height),t}function q(e,t){return new Promise((function(n,a){e.toBlob((function(e){e?n(e):a()}),t)}))}!function(e){e[e.Hourglass=0]="Hourglass",e[e.Relatives=1]="Relatives",e[e.Fancy=2]="Fancy"}(S||(S={}));var J=function(e){Object(y.a)(a,e);var t=Object(O.a)(a);function a(){var e;Object(b.a)(this,a);for(var n=arguments.length,r=new Array(n),i=0;i0&&void 0!==arguments[0]?arguments[0]:{initialRender:!1};if(t.initialRender||!this.animating){if(t.initialRender||!this.props.freezeAnimation){t.initialRender?(Object(R.a)("#chart").node().innerHTML="",this.chart=Object(A.createChart)({json:this.props.data,chartType:this.getChartType(),renderer:this.getRendererType(),svgSelector:"#chart",indiCallback:function(t){return e.props.onSelection(t)},animate:!0,updateSvgSize:!1,locale:this.context.intl.locale})):this.chart.setData(this.props.data);var n=this.chart.render({startIndi:this.props.selection.id,baseGeneration:this.props.selection.generation}),a=Object(R.a)("#chartSvg"),r=Object(R.a)("#svgContainer").node(),i=Object(P.b)(r).k,o=Object(L.a)([1,i,r.clientWidth/n.size[0],r.clientHeight/n.size[1]]),s=[Object(j.a)([.1,o]),2];this.zoomBehavior=Object(P.a)().scaleExtent(s).translateExtent([[0,0],n.size]).on("zoom",(function(){return W(n.size)})),Object(R.a)(r).on("scroll",z).call(this.zoomBehavior);var c=function(e){return function(){var t=Object(N.a)(r.scrollTop,e);return function(e){r.scrollTop=t(e)}}},l=function(e){return function(){var t=Object(N.a)(r.scrollLeft,e);return function(e){r.scrollLeft=t(e)}}},u=r.clientWidth/2-n.origin[0]*i,d=r.clientHeight/2-n.origin[1]*i,m=Object(j.a)([0,(r.clientWidth-n.size[0]*i)/2]),p=Object(j.a)([0,(r.clientHeight-n.size[1]*i)/2]),f=a.transition().delay(200).duration(500),h=t.initialRender?a:f;h.attr("transform","translate(".concat(m,", ").concat(p,")")).attr("width",n.size[0]*i).attr("height",n.size[1]*i),t.initialRender?(r.scrollLeft=-u,r.scrollTop=-d):f.tween("scrollLeft",l(-u)).tween("scrollTop",c(-d)),this.animating=!0,n.animationPromise.then((function(){e.animating=!1,e.rerenderRequired&&(e.rerenderRequired=!1,e.renderChart({initialRender:!1}))}))}}else this.rerenderRequired=!0}},{key:"componentDidMount",value:function(){this.renderChart({initialRender:!0})}},{key:"componentDidUpdate",value:function(e){var t=this.props.chartType!==e.chartType;this.renderChart({initialRender:t})}},{key:"render",value:function(){var e=this;return u.createElement("div",{id:"svgContainer"},u.createElement(C.a,{minWidth:768,className:"zoom"},u.createElement("button",{className:"zoom-in",onClick:function(){return e.zoom(1.3)}},"+"),u.createElement("button",{className:"zoom-out",onClick:function(){return e.zoom(1/1.3)}},"\u2212")),u.createElement("svg",{id:"chartSvg"},u.createElement("g",{id:"chart"})))}},{key:"getStrippedSvg",value:function(){var e=document.getElementById("chartSvg").cloneNode(!0);e.removeAttribute("transform");var t=Object(R.a)("#svgContainer").node(),n=Object(P.b)(t).k;return e.setAttribute("width",String(Number(e.getAttribute("width"))/n)),e.setAttribute("height",String(Number(e.getAttribute("height"))/n)),e.querySelector("#chart").removeAttribute("transform"),e}},{key:"getSvgContents",value:function(){return(new XMLSerializer).serializeToString(this.getStrippedSvg())}},{key:"getSvgContentsWithInlinedImages",value:function(){var e=Object(k.a)(E.a.mark((function e(){var t;return E.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this.getStrippedSvg(),e.next=3,B(t);case 3:return e.abrupt("return",(new XMLSerializer).serializeToString(t));case 4:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"print",value:function(){var e=this,t=document.createElement("iframe");t.style.position="absolute",t.style.top="-1000px",t.style.left="-1000px",t.onload=function(){t.contentDocument.open(),t.contentDocument.write(e.getSvgContents()),t.contentDocument.close(),setTimeout((function(){t.contentWindow.focus(),t.contentWindow.print(),t.parentNode.removeChild(t)}),500)},document.body.appendChild(t)}},{key:"downloadSvg",value:function(){var e=Object(k.a)(E.a.mark((function e(){var t,n;return E.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getSvgContentsWithInlinedImages();case 2:t=e.sent,n=new Blob([t],{type:"image/svg+xml"}),Object(x.saveAs)(n,"topola.svg");case 5:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"drawOnCanvas",value:function(){var e=Object(k.a)(E.a.mark((function e(){var t,n;return E.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getSvgContentsWithInlinedImages();case 2:return t=e.sent,n=new Blob([t],{type:"image/svg+xml"}),e.t0=K,e.next=7,V(n);case 7:return e.t1=e.sent,e.next=10,(0,e.t0)(e.t1);case 10:return e.abrupt("return",e.sent);case 11:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"downloadPng",value:function(){var e=Object(k.a)(E.a.mark((function e(){var t,n;return E.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.drawOnCanvas();case 2:return t=e.sent,e.next=5,q(t,"image/png");case 5:n=e.sent,Object(x.saveAs)(n,"topola.png");case 7:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"downloadPdf",value:function(){var e=Object(k.a)(E.a.mark((function e(){var t,a,r,i;return E.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,n.e(3).then(n.t.bind(null,639,7));case 2:return t=e.sent,a=t.default,e.next=6,this.drawOnCanvas();case 6:r=e.sent,(i=new a({orientation:r.width>r.height?"l":"p",unit:"pt",format:[r.width,r.height]})).addImage(r,"PNG",0,0,r.width,r.height,"NONE"),i.save("topola.pdf");case 10:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()}]),a}(u.PureComponent);J.contextTypes={intl:v.d};var Z=n(308),Y=n.n(Z),X=n(309),Q=n.n(X),$=n(197),ee=n(334),te=function(e){Object(y.a)(n,e);var t=Object(O.a)(n);function n(e,a){var r,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Object(b.a)(this,n),(r=t.call(this,a)).code=e,r.args=i,r}return n}(Object(ee.a)(Error));function ne(e){return e.substring(1,e.length-1)}function ae(e){var t=new Map;return e.indis.forEach((function(e){t.set(e.id,e)})),t}function re(e){var t=new Map;return e.fams.forEach((function(e){t.set(e.id,e)})),t}function ie(e){var t=e.find((function(e){return"HEAD"===e.tag})),n={},a={},r={};return e.forEach((function(e){"INDI"===e.tag?n[ne(e.pointer)]=e:"FAM"===e.tag?a[ne(e.pointer)]=e:e.pointer&&(r[ne(e.pointer)]=e)})),{head:t,indis:n,fams:a,other:r}}function oe(e,t){return et?1:0}function se(e,t){var n=e&&(e.date||e.dateRange&&e.dateRange.from),a=t&&(t.date||t.dateRange&&t.dateRange.from);return n&&n.year&&a&&a.year?n.year!==a.year?n.year-a.year:n.month&&a.month&&(n.month!==a.month||n.day&&a.day&&n.day!==a.day)?n.month-a.month:0:0}function ce(e){var t=function(e){var t=ae(e);return function(e,n){var a=t.get(e),r=t.get(n);return se(a&&a.birth,r&&r.birth)||oe(e,n)}}(e),n=e.fams.map((function(e){return function(e,t){if(!e.children)return e;var n=e.children.sort(t);return Object.assign({},e,{children:n})}(e,t)}));return Object.assign({},e,{fams:n})}function le(e){var t=function(e){var t=re(e);return function(e,n){var a=t.get(e),r=t.get(n);return se(a&&a.marriage,r&&r.marriage)||oe(e,n)}}(e),n=e.indis.map((function(e){return function(e,t){if(!e.fams)return e;var n=e.fams.sort(t);return Object.assign({},e,{fams:n})}(e,t)}));return Object.assign({},e,{indis:n})}function ue(e){return le(ce(e))}var de=[".jpg",".png",".gif"];function me(e,t){if(!e.images||0===e.images.length)return e;var n=[];return e.images.forEach((function(e){var a=e.url.match(/[^/\\]*$/)[0];t.has(a)?n.push({url:t.get(a),title:e.title}):e.url.startsWith("http")&&function(e){var t=e.toLowerCase();return de.some((function(e){return t.endsWith(e)}))}(e.url)&&n.push(e)})),Object.assign({},e,{images:n})}function pe(e,t){var n=e.indis.map((function(e){return me(e,t)}));return Object.assign({},e,{indis:n})}function fe(e){var t=e&&e.tree&&e.tree.find((function(e){return"SOUR"===e.tag})),n=t&&t.tree&&t.tree.find((function(e){return"NAME"===e.tag}));return n&&n.data||null}var he=new Map([["abt","about"],["cal","calculated"],["est","estimated"]]);function ge(e,t){var n=void 0!==e.day,a=void 0!==e.month,r=void 0!==e.year;if(!n&&!a&&!r)return e.text||"";var i=new Date(r?e.year:0,a?e.month-1:0,n?e.day:1),o=e.qualifier&&e.qualifier.toLowerCase(),s={day:n?"numeric":void 0,month:a?"long":void 0,year:r?"numeric":void 0};return[o&&t.formatMessage({id:"date.".concat(o),defaultMessage:he.get(o)||o}),new Intl.DateTimeFormat(t.locale,s).format(i)].join(" ")}function ve(e,t){return e?e.date?ge(e.date,t):e.dateRange?function(e,t){var n=e.from,a=e.to,r=n&&ge(n,t),i=a&&ge(a,t);return r&&i?t.formatMessage({id:"date.between",defaultMessage:"between {from} and {to}"},{from:r,to:i}):r?t.formatMessage({id:"date.after",defaultMessage:"after {from}"},{from:r}):i?t.formatMessage({id:"date.before",defaultMessage:"before {to}"},{to:i}):""}(e.dateRange,t):"":""}var we=["BIRT","BAPM","CHR","DEAT","BURI","EVEN","CENS"],Ee=["NAME","SEX","FAMC","FAMS","NOTE","SOUR"],ke=new Map([["ADOP","Adoption"],["BAPM","Baptism"],["BIRT","Birth"],["BURI","Burial"],["CENS","Census"],["CHR","Christening"],["CREM","Cremation"],["DEAT","Death"],["EDUC","Education"],["EMAIL","E-mail"],["EMIG","Emigration"],["EVEN","Event"],["FACT","Fact"],["IMMI","Immigration"],["MILT","Military services"],["NATU","Naturalization"],["OCCU","Occupation"],["TITL","Title"],["WWW","WWW"]]);function be(e){var t=e.replace(/_/g,"");return u.createElement(v.a,{id:"gedcom.".concat(t),defaultMessage:ke.get(t)||t})}function _e(e){return u.createElement(u.Fragment,null,e.map((function(e,t){return u.createElement("div",{key:t},u.createElement(Q.a,{properties:{target:"_blank"}},e),u.createElement("br",null))})))}function ye(e){var t=[e.data];return e.tree.forEach((function(e){if("CONC"===e.tag&&e.data){var n=t.length-1;t[n]+=e.data}else"CONT"===e.tag&&e.data&&t.push(e.data)})),t}function Oe(e,t){var n=[];e.data&&e.data.length>1&&n.push(u.createElement("i",null,e.data));var r=e.tree.find((function(e){return"DATE"===e.tag}));r&&r.data&&n.push(function(e,t){return ve(Object(A.getDate)(e),t)}(r.data,t));var i=e.tree.find((function(e){return"PLAC"===e.tag}));return i&&i.data&&n.push.apply(n,Object(a.a)(ye(i))),e.tree.filter((function(e){return"NOTE"===e.tag})).forEach((function(e){return ye(e).forEach((function(e){return n.push(u.createElement("i",null,e))}))})),n.length?u.createElement(u.Fragment,null,u.createElement("div",{className:"ui sub header"},be(e.tag)),u.createElement("span",null,_e(n))):null}function De(e){return _e(ye(e).map((function(e,t){return u.createElement("i",{key:t},e)})))}function Te(e){return u.createElement("h2",{className:"ui header"},e.data.split("/").filter((function(e){return!!e})).map((function(e,t){return u.createElement("div",{key:t},e,u.createElement("br",null))})))}function Ie(e,t,n){return Y()(t,(function(t){return e.filter((function(e){return e.tag===t})).map((function(e){return n(e)}))})).filter((function(e){return null!==e})).map((function(e,t){return u.createElement("div",{className:"ui segment",key:t},e)}))}function Se(e){return e.tree.length>0||e.data&&!e.data.startsWith("@")}function Re(e){return e.filter((function(e){return!Ee.includes(e.tag)&&!we.includes(e.tag)})).filter(Se).map((function(e){return function(e){var t=[];return e.data&&t.push.apply(t,Object(a.a)(ye(e))),e.tree.filter((function(e){return"NOTE"===e.tag})).forEach((function(e){return ye(e).forEach((function(e){return t.push(u.createElement("i",null,e))}))})),t.length?u.createElement(u.Fragment,null,u.createElement("div",{className:"ui sub header"},be(e.tag)),u.createElement("span",null,_e(t))):null}(e)})).filter((function(e){return null!==e})).map((function(e,t){return u.createElement("div",{className:"ui segment",key:t},e)}))}var Me=function(e){Object(y.a)(n,e);var t=Object(O.a)(n);function n(){return Object(b.a)(this,n),t.apply(this,arguments)}return Object(_.a)(n,[{key:"render",value:function(){var e=this,t=this.props.gedcom.indis[this.props.indi].tree,n=t.map((function(t){return function(e,t){if(e.data){var n=t.other[ne(e.data)];if(n)return n}return e}(t,e.props.gedcom)})).filter(Se);return u.createElement("div",{className:"ui segments",id:"details"},Ie(t,["NAME"],Te),Ie(t,we,(function(t){return Oe(t,e.context.intl)})),Re(n),Ie(n,["NOTE"],De))}}]),n}(u.Component);function Ne(e,t){return{id:t&&e.indis.some((function(e){return e.id===t.id}))?t.id:e.indis[0].id,generation:(null===t||void 0===t?void 0:t.generation)||0}}function je(e,t,n){var a=function(e,t){var n=Object($.parse)(e),a=Object(A.gedcomEntriesToJson)(n);if(!a||!a.indis||!a.indis.length||!a.fams||!a.fams.length)throw new te("GEDCOM_READ_FAILED","Failed to read GEDCOM file");return{chartData:pe(ue(a),t),gedcom:ie(n)}}(e,n||new Map),r=JSON.stringify(a);try{sessionStorage.setItem(t,r)}catch(i){console.warn("Failed to store data in session storage: "+i)}return a}function Le(e,t){return Ce.apply(this,arguments)}function Ce(){return(Ce=Object(k.a)(E.a.mark((function e(t,n){var a,r,i,o,s,c;return E.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,!(a=sessionStorage.getItem(t))){e.next=4;break}return e.abrupt("return",JSON.parse(a));case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(0),console.warn("Failed to load data from session storage: "+e.t0);case 9:return(r=t.match(/https:\/\/drive\.google\.com\/file\/d\/(.*)\/.*/))&&(t="https://drive.google.com/uc?id=".concat(r[1],"&export=download")),(i=t.match(/https:\/\/drive\.google\.com\/open\?id=([^&]*)&?.*/))&&(t="https://drive.google.com/uc?id=".concat(i[1],"&export=download")),o=n?"https://cors-anywhere.herokuapp.com/"+t:t,e.next=16,window.fetch(o);case 16:if(200===(s=e.sent).status){e.next=19;break}throw new Error(s.statusText);case 19:return e.next=21,s.text();case 21:return c=e.sent,e.abrupt("return",je(c,t));case 23:case"end":return e.stop()}}),e,null,[[0,6]])})))).apply(this,arguments)}function xe(e,t,n){return Pe.apply(this,arguments)}function Pe(){return(Pe=Object(k.a)(E.a.mark((function e(t,n,a){var r;return E.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,!(r=sessionStorage.getItem(t))){e.next=4;break}return e.abrupt("return",JSON.parse(r));case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(0),console.warn("Failed to load data from session storage: "+e.t0);case 9:if(n){e.next=11;break}throw new te("ERROR_LOADING_UPLOADED_FILE","Error loading data. Please upload your file again.");case 11:return e.abrupt("return",je(n,t,a));case 12:case"end":return e.stop()}}),e,null,[[0,6]])})))).apply(this,arguments)}Me.contextTypes={intl:v.d};var Ae,We=function(){function e(){Object(b.a)(this,e)}return Object(_.a)(e,[{key:"isNewData",value:function(e,t,n){return e.spec.hash!==t.spec.hash}},{key:"loadData",value:function(){var e=Object(k.a)(E.a.mark((function e(t){var n;return E.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,xe(t.spec.hash,t.spec.gedcom,t.spec.images);case 3:return n=e.sent,I("upload_file_loaded",{event_label:fe(n.gedcom.head),event_value:t.spec.images&&t.spec.images.size||0}),e.abrupt("return",n);case 9:throw e.prev=9,e.t0=e.catch(0),I("upload_file_error"),e.t0;case 13:case"end":return e.stop()}}),e,null,[[0,9]])})));return function(t){return e.apply(this,arguments)}}()}]),e}(),ze=function(){function e(){Object(b.a)(this,e)}return Object(_.a)(e,[{key:"isNewData",value:function(e,t,n){return e.spec.url!==t.spec.url}},{key:"loadData",value:function(){var e=Object(k.a)(E.a.mark((function e(t){var n;return E.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Le(t.spec.url,t.spec.handleCors);case 3:return n=e.sent,I("upload_file_loaded",{event_label:fe(n.gedcom.head)}),e.abrupt("return",n);case 9:throw e.prev=9,e.t0=e.catch(0),I("url_file_error"),e.t0;case 13:case"end":return e.stop()}}),e,null,[[0,9]])})));return function(t){return e.apply(this,arguments)}}()}]),e}();!function(e){e.GEDCOM="gedcom",e.READY="ready",e.PARENT_READY="parent_ready"}(Ae||(Ae={}));var Ge=function(){function e(){Object(b.a)(this,e)}return Object(_.a)(e,[{key:"isNewData",value:function(e,t,n){return!1}},{key:"onMessage",value:function(){var e=Object(k.a)(E.a.mark((function e(t,n,a){var r,i;return E.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.message!==Ae.PARENT_READY){e.next=4;break}window.parent.postMessage({message:Ae.READY},"*"),e.next=21;break;case 4:if(t.message!==Ae.GEDCOM){e.next=21;break}if(r=t.gedcom){e.next=8;break}return e.abrupt("return");case 8:return e.prev=8,e.next=11,xe("",r);case 11:i=e.sent,I("embedded_file_loaded",{event_label:fe(i.gedcom.head)}),n(i),e.next=21;break;case 17:e.prev=17,e.t0=e.catch(8),I("embedded_file_error"),a(e.t0);case 21:case"end":return e.stop()}}),e,null,[[8,17]])})));return function(t,n,a){return e.apply(this,arguments)}}()},{key:"loadData",value:function(){var e=Object(k.a)(E.a.mark((function e(t){var n=this;return E.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,t){window.parent.postMessage({message:Ae.READY},"*"),window.addEventListener("message",(function(a){return n.onMessage(a.data,e,t)}))})));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()}]),e}(),Fe=n(202),Ue=n.n(Fe),Be=n(627),He=n(633),Ve=n(333),Ke=n(620);function qe(e){return u.createElement(Ke.a,{to:{pathname:"/view",search:T.stringify({url:e.url})}},e.text)}function Je(){var e=u.createElement(u.Fragment,null,u.createElement("p",null,u.createElement(v.a,{id:"intro.description",defaultMessage:"Topola Genealogy is a genealogy tree viewer that lets you browse the structure of the family."})),u.createElement("p",null,u.createElement(v.a,{id:"intro.instructions",defaultMessage:"Use the OPEN FILE or LOAD FROM URL buttons above to load a GEDCOM file. You can export a GEDCOM file from most of the existing genealogy programs and web sites."})),u.createElement("p",null,u.createElement(v.a,{id:"intro.examples",defaultMessage:"Here are some examples from the web that you can view:"})),u.createElement("ul",null,u.createElement("li",null,u.createElement(qe,{url:"http://genpol.com/module-Downloads-prep_hand_out-lid-32.html",text:"Karol Wojty\u0142a"})," ","(",u.createElement(v.a,{id:"intro.from",defaultMessage:"from"})," ",u.createElement("a",{href:"http://genpol.com/module-Downloads-display-lid-32.html"},"GENPOL"),")"),u.createElement("li",null,u.createElement(qe,{url:"https://webtreeprint.com/tp_downloader.php?path=famous_gedcoms/shakespeare.ged",text:"Shakespeare"})," ","(",u.createElement(v.a,{id:"intro.from",defaultMessage:"from"})," ",u.createElement("a",{href:"https://webtreeprint.com/tp_famous_gedcoms.php"},"webtreeprint.com"),")"),u.createElement("li",null,u.createElement(qe,{url:"http://genealogyoflife.com/tng/gedcom/HarryPotter.ged",text:"Harry Potter"})," ","(",u.createElement(v.a,{id:"intro.from",defaultMessage:"from"})," ",u.createElement("a",{href:"http://famousfamilytrees.blogspot.com/"},"Famous Family Trees"),")")),u.createElement("p",null,u.createElement("b",null,u.createElement(v.a,{id:"intro.privacy",defaultMessage:"Privacy"})),": ",u.createElement(v.a,{id:"intro.privacy_note",defaultMessage:'When using the "load from file" option, this site does not send your data anywhere and files loaded from disk do not leave your computer. When using "load from URL", data is passed through the {link} service to deal with an issue with cross-site file loading in the browser (CORS).',values:{link:u.createElement("a",{href:"https://cors-anywhere.herokuapp.com/"},"cors-anywhere")}})),u.createElement("p",{className:"ui right aligned version"},"version: ","2020-11-13 22:40:06 +0100".slice(0,16)," (",u.createElement("a",{href:"https://github.com/PeWu/topola-viewer/commit/".concat("eab1c70")},"eab1c70"),")"));return u.createElement("div",{id:"content"},u.createElement("div",{className:"backgroundImage"}),u.createElement(Be.a,{className:"intro"},u.createElement(C.a,{as:Be.a.Content,minWidth:768},u.createElement(Be.a.Header,null,u.createElement(v.a,{id:"intro.title",defaultMessage:"Topola Genealogy Viewer"}))),u.createElement(Be.a.Content,null,u.createElement(C.a,{as:He.a,minWidth:768},u.createElement(He.a.Row,null,u.createElement(He.a.Column,{width:5},u.createElement(Ve.a,{src:Ue.a,alt:"Topola logo"})),u.createElement(He.a.Column,{width:11},e))),u.createElement(C.a,{maxWidth:767},u.createElement(Ve.a,{src:Ue.a,alt:"Topola logo",centered:!0,size:"tiny",className:"blockImage"}),e))))}var Ze,Ye=n(628),Xe=n(638),Qe=n(623),$e=n(635),et=n(636),tt=n(631),nt=n(335),at=n(629),rt=n(626);!function(e){e[e.Menu=0]="Menu",e[e.Dropdown=1]="Dropdown"}(Ze||(Ze={}));var it=function(e){Object(y.a)(n,e);var t=Object(O.a)(n);function n(){return Object(b.a)(this,n),t.apply(this,arguments)}return Object(_.a)(n,[{key:"render",value:function(){var e=Object(nt.a)({},this.props);return delete e.menuType,u.createElement(u.Fragment,null,this.props.menuType===Ze.Menu?u.createElement(at.a.Item,e,this.props.children):u.createElement(rt.a.Item,e,this.props.children))}}]),n}(u.Component),ot=n(204),st=n.n(ot),ct=n(79);function lt(e){return new Promise((function(t){var n=new FileReader;n.onload=function(e){t(e.target.result)},n.readAsText(e)}))}function ut(e){var t=e.toLowerCase();return t.endsWith(".jpg")||t.endsWith(".png")}var dt=function(e){Object(y.a)(n,e);var t=Object(O.a)(n);function n(){return Object(b.a)(this,n),t.apply(this,arguments)}return Object(_.a)(n,[{key:"handleUpload",value:function(){var e=Object(k.a)(E.a.mark((function e(t){var n,a,r,i,o,s,c,l,u;return E.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((n=t.target.files)&&n.length){e.next=3;break}return e.abrupt("return");case 3:return a=Array.from(n),t.target.value="",I("upload_files_selected",{event_value:n.length}),r=1===a.length?a[0]:a.find((function(e){return e.name.toLowerCase().endsWith(".ged")}))||a[0],i=a.filter((function(e){return e.name!==r.name&&ut(e.name)})).map((function(e){return{name:e.name,url:URL.createObjectURL(e)}})),o=new Map(i.map((function(e){return[e.name,e.url]}))),e.next=11,lt(r);case 11:s=e.sent,c=i.map((function(e){return e.name})).sort().join("|"),l=st()(st()(s)+c),u=T.parse(this.props.location.search),(u.file===l?this.props.history.replace:this.props.history.push)({pathname:"/view",search:T.stringify({file:l}),state:{data:s,images:o}});case 17:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"render",value:function(){var e=this,t=u.createElement(u.Fragment,null,u.createElement(ct.a,{name:"folder open"}),u.createElement(v.a,{id:"menu.open_file",defaultMessage:"Open file"}));return u.createElement(u.Fragment,null,this.props.menuType===Ze.Menu?u.createElement("label",{htmlFor:"fileInput"},u.createElement(at.a.Item,{as:"a"},t)):u.createElement(rt.a.Item,{as:"label",htmlFor:"fileInput"},t),u.createElement("input",{className:"hidden",type:"file",accept:".ged,image/*",id:"fileInput",multiple:!0,onChange:function(t){return e.handleUpload(t)}}))}}]),n}(u.Component),mt=n(625),pt=n(634),ft=n(624),ht=n(622),gt=n(609),vt=function(e){Object(y.a)(n,e);var t=Object(O.a)(n);function n(){var e;Object(b.a)(this,n);for(var a=arguments.length,r=new Array(a),i=0;i0&&k<=v)){e.next=42;break}return e.next=34,St(w,i);case 34:b=e.sent,s.push.apply(s,Object(a.a)(b)),_=b.flatMap((function(e){return Object.values(e.Spouses)})),s.push.apply(s,Object(a.a)(_)),w=b.flatMap((function(e){return Object.values(e.Children).map((function(e){return e.Name}))})),k++,e.next=31;break;case 42:return y=new Map,O=new Map,T=new Map,I=new Map,s.forEach((function(e){if(I.set(e.Id,e.Name),e.Mother||e.Father){var t=xt(e.Mother,e.Father);Gt(y,e.Mother).add(t),Gt(y,e.Father).add(t),Gt(O,t).add(e.Id),T.set(t,{wife:e.Mother||void 0,husband:e.Father||void 0})}})),S=[],R=new Set,s.forEach((function(e){if(!R.has(e.Id)){R.add(e.Id);var t=Pt(e,n);e.Spouses&&Object.values(e.Spouses).forEach((function(t){var n=xt(e.Id,t.Id);Gt(y,e.Id).add(n),Gt(y,t.Id).add(n);var a="Male"===e.Gender?{wife:t.Id,husband:e.Id,spouse:t}:{wife:e.Id,husband:t.Id,spouse:t};T.set(n,a)})),t.fams=Array.from(Gt(y,e.Id)),S.push(t)}})),M=Array.from(T.entries()).map((function(e){var t=Object(D.a)(e,2),n=t[0],a=t[1],r={id:n},i=a.wife&&I.get(a.wife);i&&(r.wife=i);var o=a.husband&&I.get(a.husband);if(o&&(r.husb=o),r.children=Array.from(Gt(O,n)).map((function(e){return I.get(e)})),a.spouse&&(a.spouse.marriage_date&&"0000-00-00"!==a.spouse.marriage_date||a.spouse.marriage_location)){var s=At(a.spouse.marriage_date);r.marriage=Object.assign({},s,{place:a.spouse.marriage_location})}return r})),N=ue({indis:S,fams:M}),j=zt(S),e.abrupt("return",{chartData:N,gedcom:j});case 54:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function xt(e,t){return t>e?"".concat(e,"_").concat(t):"".concat(t,"_").concat(e)}function Pt(e,t){var n={id:e.Name};if(e.Name.startsWith("~Private")&&(n.hideId=!0,n.firstName=t.formatMessage({id:"wikitree.private",defaultMessage:"Private"})),e.FirstName&&"Unknown"!==e.FirstName?n.firstName=e.FirstName:e.RealName&&"Unknown"!==e.RealName&&(n.firstName=e.RealName),"Unknown"!==e.LastNameAtBirth&&(n.lastName=e.LastNameAtBirth),(e.Mother||e.Father)&&(n.famc=xt(e.Mother,e.Father)),"Male"===e.Gender?n.sex="M":"Female"===e.Gender&&(n.sex="F"),e.BirthDate&&"0000-00-00"!==e.BirthDate||e.BirthLocation||"unknown"!==e.BirthDateDecade){var a=At(e.BirthDate,e.DataStatus&&e.DataStatus.BirthDate)||Wt(e.BirthDateDecade);n.birth=Object.assign({},a,{place:e.BirthLocation})}if(e.DeathDate&&"0000-00-00"!==e.DeathDate||e.DeathLocation||"unknown"!==e.DeathDateDecade){var r=At(e.DeathDate,e.DataStatus&&e.DataStatus.DeathDate)||Wt(e.DeathDateDecade);n.death=Object.assign({},r,{place:e.DeathLocation})}return e.PhotoData&&(n.images=[{url:"https://www.wikitree.com".concat(e.PhotoData.url)}]),n}function At(e,t){if(e){var n=e.match(/(\d\d\d\d)-(\d\d)-(\d\d)/);if(!n)return{date:{text:e}};var a={};return"0000"!==n[1]&&(a.year=~~n[1]),"00"!==n[2]&&(a.month=~~n[2]),"00"!==n[3]&&(a.day=~~n[3]),"after"===t?{dateRange:{from:a}}:"before"===t?{dateRange:{to:a}}:("guess"===t&&(a.qualifier="abt"),{date:a})}}function Wt(e){return"unknown"!==e?{date:{text:e}}:void 0}function zt(e){var t={};return e.forEach((function(e){var n=e.id.replace(/ /g,"_");t[e.id]={level:0,pointer:"@".concat(e.id,"@"),tag:"INDI",data:"",tree:[{level:1,pointer:"",tag:"NAME",data:"".concat(e.firstName||""," /").concat(e.lastName||"","/"),tree:[]}]},e.id.startsWith("~")||t[e.id].tree.push({level:1,pointer:"",tag:"WWW",data:"https://www.wikitree.com/wiki/".concat(n),tree:[]})})),{head:{level:0,pointer:"",tag:"HEAD",data:"",tree:[]},indis:t,fams:{},other:{}}}function Gt(e,t){var n=e.get(t);if(n)return n;var a=new Set;return e.set(t,a),a}var Ft,Ut=function(){function e(t){Object(b.a)(this,e),this.intl=t}return Object(_.a)(e,[{key:"isNewData",value:function(e,t,n){var a;return!!e.selection&&((null===(a=t.selection)||void 0===a?void 0:a.id)!==e.selection.id&&(!n||!n.chartData.indis.some((function(t){var n;return t.id===(null===(n=e.selection)||void 0===n?void 0:n.id)}))))}},{key:"loadData",value:function(){var e=Object(k.a)(E.a.mark((function e(t){var n;return E.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.selection){e.next=2;break}throw new te("WIKITREE_ID_NOT_PROVIDED","WikiTree id needs to be provided");case 2:return e.prev=2,e.next=5,Lt(t.selection.id,this.intl,t.spec.authcode);case 5:return n=e.sent,I("wikitree_loaded"),e.abrupt("return",n);case 10:throw e.prev=10,e.t0=e.catch(2),I("wikitree_error"),e.t0;case 14:case"end":return e.stop()}}),e,this,[[2,10]])})));return function(t){return e.apply(this,arguments)}}()}]),e}();!function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.NOT_LOGGED_IN=1]="NOT_LOGGED_IN",e[e.LOGGED_IN=2]="LOGGED_IN"}(Ft||(Ft={}));var Bt=function(e){Object(y.a)(n,e);var t=Object(O.a)(n);function n(){var e;Object(b.a)(this,n);for(var a=arguments.length,r=new Array(a),i=0;i8?t:u.createElement(u.Fragment,null,t," ",u.createElement("i",null,"(",e.id,")"))}var nn,an=function(e){Object(y.a)(n,e);var t=Object(O.a)(n);function n(){var e;Object(b.a)(this,n);for(var a=arguments.length,r=new Array(a),i=0;i