html2canvas.esm-IGVTDZBD.js 373 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771
  1. import {
  2. __esm
  3. } from "./chunk-2LSFTFF7.js";
  4. // node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/html2canvas.esm.js
  5. function __extends(d, b) {
  6. if (typeof b !== "function" && b !== null)
  7. throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
  8. extendStatics(d, b);
  9. function __() {
  10. this.constructor = d;
  11. }
  12. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  13. }
  14. function __awaiter(thisArg, _arguments, P, generator) {
  15. function adopt(value) {
  16. return value instanceof P ? value : new P(function(resolve) {
  17. resolve(value);
  18. });
  19. }
  20. return new (P || (P = Promise))(function(resolve, reject) {
  21. function fulfilled(value) {
  22. try {
  23. step(generator.next(value));
  24. } catch (e2) {
  25. reject(e2);
  26. }
  27. }
  28. function rejected(value) {
  29. try {
  30. step(generator["throw"](value));
  31. } catch (e2) {
  32. reject(e2);
  33. }
  34. }
  35. function step(result) {
  36. result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
  37. }
  38. step((generator = generator.apply(thisArg, _arguments || [])).next());
  39. });
  40. }
  41. function __generator(thisArg, body) {
  42. var _ = { label: 0, sent: function() {
  43. if (t[0] & 1)
  44. throw t[1];
  45. return t[1];
  46. }, trys: [], ops: [] }, f2, y, t, g;
  47. return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
  48. return this;
  49. }), g;
  50. function verb(n) {
  51. return function(v) {
  52. return step([n, v]);
  53. };
  54. }
  55. function step(op) {
  56. if (f2)
  57. throw new TypeError("Generator is already executing.");
  58. while (_)
  59. try {
  60. if (f2 = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
  61. return t;
  62. if (y = 0, t)
  63. op = [op[0] & 2, t.value];
  64. switch (op[0]) {
  65. case 0:
  66. case 1:
  67. t = op;
  68. break;
  69. case 4:
  70. _.label++;
  71. return { value: op[1], done: false };
  72. case 5:
  73. _.label++;
  74. y = op[1];
  75. op = [0];
  76. continue;
  77. case 7:
  78. op = _.ops.pop();
  79. _.trys.pop();
  80. continue;
  81. default:
  82. if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
  83. _ = 0;
  84. continue;
  85. }
  86. if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
  87. _.label = op[1];
  88. break;
  89. }
  90. if (op[0] === 6 && _.label < t[1]) {
  91. _.label = t[1];
  92. t = op;
  93. break;
  94. }
  95. if (t && _.label < t[2]) {
  96. _.label = t[2];
  97. _.ops.push(op);
  98. break;
  99. }
  100. if (t[2])
  101. _.ops.pop();
  102. _.trys.pop();
  103. continue;
  104. }
  105. op = body.call(thisArg, _);
  106. } catch (e2) {
  107. op = [6, e2];
  108. y = 0;
  109. } finally {
  110. f2 = t = 0;
  111. }
  112. if (op[0] & 5)
  113. throw op[1];
  114. return { value: op[0] ? op[1] : void 0, done: true };
  115. }
  116. }
  117. function __spreadArray(to, from, pack2) {
  118. if (pack2 || arguments.length === 2)
  119. for (var i = 0, l = from.length, ar; i < l; i++) {
  120. if (ar || !(i in from)) {
  121. if (!ar)
  122. ar = Array.prototype.slice.call(from, 0, i);
  123. ar[i] = from[i];
  124. }
  125. }
  126. return to.concat(ar || from);
  127. }
  128. function hue2rgb(t1, t2, hue) {
  129. if (hue < 0) {
  130. hue += 1;
  131. }
  132. if (hue >= 1) {
  133. hue -= 1;
  134. }
  135. if (hue < 1 / 6) {
  136. return (t2 - t1) * hue * 6 + t1;
  137. } else if (hue < 1 / 2) {
  138. return t2;
  139. } else if (hue < 2 / 3) {
  140. return (t2 - t1) * 6 * (2 / 3 - hue) + t1;
  141. } else {
  142. return t1;
  143. }
  144. }
  145. function isSupportedImage(value) {
  146. return !(value.type === 20 && value.value === "none") && (value.type !== 18 || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]);
  147. }
  148. var extendStatics, __assign, Bounds, parseBounds, parseDocumentSize, toCodePoints$1, fromCodePoint$1, chars$2, lookup$2, i$2, chars$1$1, lookup$1$1, i$1$1, decode$1, polyUint16Array$1, polyUint32Array$1, UTRIE2_SHIFT_2$1, UTRIE2_SHIFT_1$1, UTRIE2_INDEX_SHIFT$1, UTRIE2_SHIFT_1_2$1, UTRIE2_LSCP_INDEX_2_OFFSET$1, UTRIE2_DATA_BLOCK_LENGTH$1, UTRIE2_DATA_MASK$1, UTRIE2_LSCP_INDEX_2_LENGTH$1, UTRIE2_INDEX_2_BMP_LENGTH$1, UTRIE2_UTF8_2B_INDEX_2_OFFSET$1, UTRIE2_UTF8_2B_INDEX_2_LENGTH$1, UTRIE2_INDEX_1_OFFSET$1, UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1, UTRIE2_INDEX_2_BLOCK_LENGTH$1, UTRIE2_INDEX_2_MASK$1, slice16$1, slice32$1, createTrieFromBase64$1, Trie$1, chars$3, lookup$3, i$3, base64$1, LETTER_NUMBER_MODIFIER, BK, CR$1, LF$1, CM, NL, WJ, ZW, GL, SP, ZWJ$1, B2, BA, BB, HY, CB, CL, CP, EX, IN, NS, OP, QU, IS, NU, PO, PR, SY, AI, AL, CJ, EB, EM, H2, H3, HL, ID, JL, JV, JT, RI$1, SA, XX, ea_OP, BREAK_MANDATORY, BREAK_NOT_ALLOWED$1, BREAK_ALLOWED$1, UnicodeTrie$1, ALPHABETICS, HARD_LINE_BREAKS, SPACE$1, PREFIX_POSTFIX, LINE_BREAKS, KOREAN_SYLLABLE_BLOCK, HYPHEN, codePointsToCharacterClasses, isAdjacentWithSpaceIgnored, previousNonSpaceClassType, _lineBreakAtIndex, cssFormattedClasses, Break, LineBreaker, FLAG_UNRESTRICTED, FLAG_ID, FLAG_INTEGER, FLAG_NUMBER, LINE_FEED, SOLIDUS, REVERSE_SOLIDUS, CHARACTER_TABULATION, SPACE, QUOTATION_MARK, EQUALS_SIGN, NUMBER_SIGN, DOLLAR_SIGN, PERCENTAGE_SIGN, APOSTROPHE, LEFT_PARENTHESIS, RIGHT_PARENTHESIS, LOW_LINE, HYPHEN_MINUS, EXCLAMATION_MARK, LESS_THAN_SIGN, GREATER_THAN_SIGN, COMMERCIAL_AT, LEFT_SQUARE_BRACKET, RIGHT_SQUARE_BRACKET, CIRCUMFLEX_ACCENT, LEFT_CURLY_BRACKET, QUESTION_MARK, RIGHT_CURLY_BRACKET, VERTICAL_LINE, TILDE, CONTROL, REPLACEMENT_CHARACTER, ASTERISK, PLUS_SIGN, COMMA, COLON, SEMICOLON, FULL_STOP, NULL, BACKSPACE, LINE_TABULATION, SHIFT_OUT, INFORMATION_SEPARATOR_ONE, DELETE, EOF, ZERO, a, e, f, u, z, A, E, F, U, Z, isDigit, isSurrogateCodePoint, isHex, isLowerCaseLetter, isUpperCaseLetter, isLetter, isNonASCIICodePoint, isWhiteSpace, isNameStartCodePoint, isNameCodePoint, isNonPrintableCodePoint, isValidEscape, isIdentifierStart, isNumberStart, stringToNumber, LEFT_PARENTHESIS_TOKEN, RIGHT_PARENTHESIS_TOKEN, COMMA_TOKEN, SUFFIX_MATCH_TOKEN, PREFIX_MATCH_TOKEN, COLUMN_TOKEN, DASH_MATCH_TOKEN, INCLUDE_MATCH_TOKEN, LEFT_CURLY_BRACKET_TOKEN, RIGHT_CURLY_BRACKET_TOKEN, SUBSTRING_MATCH_TOKEN, BAD_URL_TOKEN, BAD_STRING_TOKEN, CDO_TOKEN, CDC_TOKEN, COLON_TOKEN, SEMICOLON_TOKEN, LEFT_SQUARE_BRACKET_TOKEN, RIGHT_SQUARE_BRACKET_TOKEN, WHITESPACE_TOKEN, EOF_TOKEN, Tokenizer, Parser, isDimensionToken, isNumberToken, isIdentToken, isStringToken, isIdentWithValue, nonWhiteSpace, nonFunctionArgSeparator, parseFunctionArgs, isEndingTokenFor, isLength, isLengthPercentage, parseLengthPercentageTuple, ZERO_LENGTH, FIFTY_PERCENT, HUNDRED_PERCENT, getAbsoluteValueForTuple, getAbsoluteValue, DEG, GRAD, RAD, TURN, angle, isAngle, parseNamedSide, deg, color$1, isTransparent, asString, pack, getTokenColorValue, rgb, hsl, SUPPORTED_COLOR_FUNCTIONS, parseColor, COLORS, backgroundClip, backgroundColor, parseColorStop, processColorStops, getAngleFromCorner, calculateGradientDirection, distance, findCorner, calculateRadius, linearGradient, prefixLinearGradient, webkitGradient, CLOSEST_SIDE, FARTHEST_SIDE, CLOSEST_CORNER, FARTHEST_CORNER, CIRCLE, ELLIPSE, COVER, CONTAIN, radialGradient, prefixRadialGradient, isLinearGradient, isRadialGradient, image, SUPPORTED_IMAGE_FUNCTIONS, backgroundImage, backgroundOrigin, backgroundPosition, backgroundRepeat, parseBackgroundRepeat, BACKGROUND_SIZE, backgroundSize, isBackgroundSizeInfoToken, borderColorForSide, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadiusForSide, borderTopLeftRadius, borderTopRightRadius, borderBottomRightRadius, borderBottomLeftRadius, borderStyleForSide, borderTopStyle, borderRightStyle, borderBottomStyle, borderLeftStyle, borderWidthForSide, borderTopWidth, borderRightWidth, borderBottomWidth, borderLeftWidth, color, direction, display, parseDisplayValue, float, letterSpacing, LINE_BREAK, lineBreak, lineHeight, computeLineHeight, listStyleImage, listStylePosition, listStyleType, marginForSide, marginTop, marginRight, marginBottom, marginLeft, overflow, overflowWrap, paddingForSide, paddingTop, paddingRight, paddingBottom, paddingLeft, textAlign, position, textShadow, textTransform, transform$1, matrix, matrix3d, SUPPORTED_TRANSFORM_FUNCTIONS, DEFAULT_VALUE, DEFAULT, transformOrigin, visibility, WORD_BREAK, wordBreak, zIndex, time, opacity, textDecorationColor, textDecorationLine, fontFamily, fontSize, fontWeight, fontVariant, fontStyle, contains, content, counterIncrement, counterReset, duration, quotes, getQuote, boxShadow, paintOrder, webkitTextStrokeColor, webkitTextStrokeWidth, CSSParsedDeclaration, CSSParsedPseudoDeclaration, CSSParsedCounterDeclaration, parse, elementDebuggerAttribute, getElementDebugType, isDebugging, ElementContainer, base64, chars$1, lookup$1, i$1, decode, polyUint16Array, polyUint32Array, UTRIE2_SHIFT_2, UTRIE2_SHIFT_1, UTRIE2_INDEX_SHIFT, UTRIE2_SHIFT_1_2, UTRIE2_LSCP_INDEX_2_OFFSET, UTRIE2_DATA_BLOCK_LENGTH, UTRIE2_DATA_MASK, UTRIE2_LSCP_INDEX_2_LENGTH, UTRIE2_INDEX_2_BMP_LENGTH, UTRIE2_UTF8_2B_INDEX_2_OFFSET, UTRIE2_UTF8_2B_INDEX_2_LENGTH, UTRIE2_INDEX_1_OFFSET, UTRIE2_OMITTED_BMP_INDEX_1_LENGTH, UTRIE2_INDEX_2_BLOCK_LENGTH, UTRIE2_INDEX_2_MASK, slice16, slice32, createTrieFromBase64, Trie, chars, lookup, i, Prepend, CR, LF, Control, Extend, SpacingMark, L, V, T, LV, LVT, ZWJ, Extended_Pictographic, RI, toCodePoints, fromCodePoint, UnicodeTrie, BREAK_NOT_ALLOWED, BREAK_ALLOWED, codePointToClass, _graphemeBreakAtIndex, GraphemeBreaker, splitGraphemes, testRangeBounds, testIOSLineBreak, testCORS, testResponseType, testSVG, isGreenPixel, testForeignObject, createForeignObjectSVG, loadSerializedSVG$1, FEATURES, TextBounds, parseTextBounds, getWrapperBounds, createRange, segmentGraphemes, segmentWords, breakText, wordSeparators, breakWords, TextContainer, transform, CAPITALIZE, capitalize, ImageElementContainer, CanvasElementContainer, SVGElementContainer, LIElementContainer, OLElementContainer, CHECKBOX_BORDER_RADIUS, RADIO_BORDER_RADIUS, reformatInputBounds, getInputValue, CHECKBOX, RADIO, PASSWORD, INPUT_COLOR, InputElementContainer, SelectElementContainer, TextareaElementContainer, IFrameElementContainer, LIST_OWNERS, parseNodeTree, createContainer, parseTree, createsRealStackingContext, createsStackingContext, isTextNode, isElementNode, isHTMLElementNode, isSVGElementNode, isLIElement, isOLElement, isInputElement, isHTMLElement, isSVGElement, isBodyElement, isCanvasElement, isVideoElement, isImageElement, isIFrameElement, isStyleElement, isScriptElement, isTextareaElement, isSelectElement, isSlotElement, isCustomElement, CounterState, ROMAN_UPPER, ARMENIAN, HEBREW, GEORGIAN, createAdditiveCounter, createCounterStyleWithSymbolResolver, createCounterStyleFromRange, createCounterStyleFromSymbols, CJK_ZEROS, CJK_TEN_COEFFICIENTS, CJK_TEN_HIGH_COEFFICIENTS, CJK_HUNDRED_COEFFICIENTS, createCJKCounter, CHINESE_INFORMAL_MULTIPLIERS, CHINESE_FORMAL_MULTIPLIERS, JAPANESE_NEGATIVE, KOREAN_NEGATIVE, createCounterText, IGNORE_ATTRIBUTE, DocumentCloner, PseudoElementType, createIFrameContainer, imageReady, imagesReady, iframeLoader, ignoredStyleProperties, copyCSSStyles, serializeDoctype, restoreOwnerScroll, restoreNodeScroll, PSEUDO_BEFORE, PSEUDO_AFTER, PSEUDO_HIDE_ELEMENT_CLASS_BEFORE, PSEUDO_HIDE_ELEMENT_CLASS_AFTER, PSEUDO_HIDE_ELEMENT_STYLE, createPseudoHideStyles, createStyles, CacheStorage, Cache, INLINE_SVG, INLINE_BASE64, INLINE_IMG, isRenderable, isInlineImage, isInlineBase64Image, isBlobImage, isSVG, Vector, lerp, BezierCurve, isBezierCurve, BoundCurves, CORNER, getCurvePoints, calculateBorderBoxPath, calculateContentBoxPath, calculatePaddingBoxPath, TransformEffect, ClipEffect, OpacityEffect, isTransformEffect, isClipEffect, isOpacityEffect, equalPath, transformPath, StackingContext, ElementPaint, parseStackTree, processListItems, parseStackingContexts, parsePathForBorder, parsePathForBorderDoubleOuter, parsePathForBorderDoubleInner, parsePathForBorderStroke, createStrokePathFromCurves, createPathFromCurves, paddingBox, contentBox, calculateBackgroundPositioningArea, calculateBackgroundPaintingArea, calculateBackgroundRendering, isAuto, hasIntrinsicValue, calculateBackgroundSize, getBackgroundValueForIndex, calculateBackgroundRepeatPath, SMALL_IMAGE, SAMPLE_TEXT, FontMetrics, Renderer, MASK_OFFSET, CanvasRenderer, isTextInputElement, calculateBackgroundCurvedPaintingArea, canvasTextAlign, iOSBrokenFonts, fixIOSSystemFonts, ForeignObjectRenderer, loadSerializedSVG, Logger, Context, html2canvas, renderElement, parseBackgroundColor, html2canvas_esm_default;
  149. var init_html2canvas_esm = __esm({
  150. "node_modules/.pnpm/html2canvas@1.4.1/node_modules/html2canvas/dist/html2canvas.esm.js"() {
  151. extendStatics = function(d, b) {
  152. extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
  153. d2.__proto__ = b2;
  154. } || function(d2, b2) {
  155. for (var p in b2)
  156. if (Object.prototype.hasOwnProperty.call(b2, p))
  157. d2[p] = b2[p];
  158. };
  159. return extendStatics(d, b);
  160. };
  161. __assign = function() {
  162. __assign = Object.assign || function __assign2(t) {
  163. for (var s, i = 1, n = arguments.length; i < n; i++) {
  164. s = arguments[i];
  165. for (var p in s)
  166. if (Object.prototype.hasOwnProperty.call(s, p))
  167. t[p] = s[p];
  168. }
  169. return t;
  170. };
  171. return __assign.apply(this, arguments);
  172. };
  173. Bounds = /** @class */
  174. function() {
  175. function Bounds2(left, top, width, height) {
  176. this.left = left;
  177. this.top = top;
  178. this.width = width;
  179. this.height = height;
  180. }
  181. Bounds2.prototype.add = function(x, y, w, h) {
  182. return new Bounds2(this.left + x, this.top + y, this.width + w, this.height + h);
  183. };
  184. Bounds2.fromClientRect = function(context, clientRect) {
  185. return new Bounds2(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height);
  186. };
  187. Bounds2.fromDOMRectList = function(context, domRectList) {
  188. var domRect = Array.from(domRectList).find(function(rect) {
  189. return rect.width !== 0;
  190. });
  191. return domRect ? new Bounds2(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height) : Bounds2.EMPTY;
  192. };
  193. Bounds2.EMPTY = new Bounds2(0, 0, 0, 0);
  194. return Bounds2;
  195. }();
  196. parseBounds = function(context, node) {
  197. return Bounds.fromClientRect(context, node.getBoundingClientRect());
  198. };
  199. parseDocumentSize = function(document2) {
  200. var body = document2.body;
  201. var documentElement = document2.documentElement;
  202. if (!body || !documentElement) {
  203. throw new Error("Unable to get document size");
  204. }
  205. var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));
  206. var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));
  207. return new Bounds(0, 0, width, height);
  208. };
  209. toCodePoints$1 = function(str) {
  210. var codePoints = [];
  211. var i = 0;
  212. var length = str.length;
  213. while (i < length) {
  214. var value = str.charCodeAt(i++);
  215. if (value >= 55296 && value <= 56319 && i < length) {
  216. var extra = str.charCodeAt(i++);
  217. if ((extra & 64512) === 56320) {
  218. codePoints.push(((value & 1023) << 10) + (extra & 1023) + 65536);
  219. } else {
  220. codePoints.push(value);
  221. i--;
  222. }
  223. } else {
  224. codePoints.push(value);
  225. }
  226. }
  227. return codePoints;
  228. };
  229. fromCodePoint$1 = function() {
  230. var codePoints = [];
  231. for (var _i = 0; _i < arguments.length; _i++) {
  232. codePoints[_i] = arguments[_i];
  233. }
  234. if (String.fromCodePoint) {
  235. return String.fromCodePoint.apply(String, codePoints);
  236. }
  237. var length = codePoints.length;
  238. if (!length) {
  239. return "";
  240. }
  241. var codeUnits = [];
  242. var index = -1;
  243. var result = "";
  244. while (++index < length) {
  245. var codePoint = codePoints[index];
  246. if (codePoint <= 65535) {
  247. codeUnits.push(codePoint);
  248. } else {
  249. codePoint -= 65536;
  250. codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320);
  251. }
  252. if (index + 1 === length || codeUnits.length > 16384) {
  253. result += String.fromCharCode.apply(String, codeUnits);
  254. codeUnits.length = 0;
  255. }
  256. }
  257. return result;
  258. };
  259. chars$2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  260. lookup$2 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
  261. for (i$2 = 0; i$2 < chars$2.length; i$2++) {
  262. lookup$2[chars$2.charCodeAt(i$2)] = i$2;
  263. }
  264. chars$1$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  265. lookup$1$1 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
  266. for (i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {
  267. lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1;
  268. }
  269. decode$1 = function(base642) {
  270. var bufferLength = base642.length * 0.75, len = base642.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
  271. if (base642[base642.length - 1] === "=") {
  272. bufferLength--;
  273. if (base642[base642.length - 2] === "=") {
  274. bufferLength--;
  275. }
  276. }
  277. var buffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && typeof Uint8Array.prototype.slice !== "undefined" ? new ArrayBuffer(bufferLength) : new Array(bufferLength);
  278. var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
  279. for (i = 0; i < len; i += 4) {
  280. encoded1 = lookup$1$1[base642.charCodeAt(i)];
  281. encoded2 = lookup$1$1[base642.charCodeAt(i + 1)];
  282. encoded3 = lookup$1$1[base642.charCodeAt(i + 2)];
  283. encoded4 = lookup$1$1[base642.charCodeAt(i + 3)];
  284. bytes[p++] = encoded1 << 2 | encoded2 >> 4;
  285. bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
  286. bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
  287. }
  288. return buffer;
  289. };
  290. polyUint16Array$1 = function(buffer) {
  291. var length = buffer.length;
  292. var bytes = [];
  293. for (var i = 0; i < length; i += 2) {
  294. bytes.push(buffer[i + 1] << 8 | buffer[i]);
  295. }
  296. return bytes;
  297. };
  298. polyUint32Array$1 = function(buffer) {
  299. var length = buffer.length;
  300. var bytes = [];
  301. for (var i = 0; i < length; i += 4) {
  302. bytes.push(buffer[i + 3] << 24 | buffer[i + 2] << 16 | buffer[i + 1] << 8 | buffer[i]);
  303. }
  304. return bytes;
  305. };
  306. UTRIE2_SHIFT_2$1 = 5;
  307. UTRIE2_SHIFT_1$1 = 6 + 5;
  308. UTRIE2_INDEX_SHIFT$1 = 2;
  309. UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;
  310. UTRIE2_LSCP_INDEX_2_OFFSET$1 = 65536 >> UTRIE2_SHIFT_2$1;
  311. UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;
  312. UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;
  313. UTRIE2_LSCP_INDEX_2_LENGTH$1 = 1024 >> UTRIE2_SHIFT_2$1;
  314. UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;
  315. UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;
  316. UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 2048 >> 6;
  317. UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;
  318. UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 65536 >> UTRIE2_SHIFT_1$1;
  319. UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;
  320. UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;
  321. slice16$1 = function(view, start, end) {
  322. if (view.slice) {
  323. return view.slice(start, end);
  324. }
  325. return new Uint16Array(Array.prototype.slice.call(view, start, end));
  326. };
  327. slice32$1 = function(view, start, end) {
  328. if (view.slice) {
  329. return view.slice(start, end);
  330. }
  331. return new Uint32Array(Array.prototype.slice.call(view, start, end));
  332. };
  333. createTrieFromBase64$1 = function(base642, _byteLength) {
  334. var buffer = decode$1(base642);
  335. var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer);
  336. var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer);
  337. var headerLength = 24;
  338. var index = slice16$1(view16, headerLength / 2, view32[4] / 2);
  339. var data = view32[5] === 2 ? slice16$1(view16, (headerLength + view32[4]) / 2) : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));
  340. return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data);
  341. };
  342. Trie$1 = /** @class */
  343. function() {
  344. function Trie2(initialValue, errorValue, highStart, highValueIndex, index, data) {
  345. this.initialValue = initialValue;
  346. this.errorValue = errorValue;
  347. this.highStart = highStart;
  348. this.highValueIndex = highValueIndex;
  349. this.index = index;
  350. this.data = data;
  351. }
  352. Trie2.prototype.get = function(codePoint) {
  353. var ix;
  354. if (codePoint >= 0) {
  355. if (codePoint < 55296 || codePoint > 56319 && codePoint <= 65535) {
  356. ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];
  357. ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
  358. return this.data[ix];
  359. }
  360. if (codePoint <= 65535) {
  361. ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + (codePoint - 55296 >> UTRIE2_SHIFT_2$1)];
  362. ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
  363. return this.data[ix];
  364. }
  365. if (codePoint < this.highStart) {
  366. ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1);
  367. ix = this.index[ix];
  368. ix += codePoint >> UTRIE2_SHIFT_2$1 & UTRIE2_INDEX_2_MASK$1;
  369. ix = this.index[ix];
  370. ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);
  371. return this.data[ix];
  372. }
  373. if (codePoint <= 1114111) {
  374. return this.data[this.highValueIndex];
  375. }
  376. }
  377. return this.errorValue;
  378. };
  379. return Trie2;
  380. }();
  381. chars$3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  382. lookup$3 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
  383. for (i$3 = 0; i$3 < chars$3.length; i$3++) {
  384. lookup$3[chars$3.charCodeAt(i$3)] = i$3;
  385. }
  386. base64$1 = "KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==";
  387. LETTER_NUMBER_MODIFIER = 50;
  388. BK = 1;
  389. CR$1 = 2;
  390. LF$1 = 3;
  391. CM = 4;
  392. NL = 5;
  393. WJ = 7;
  394. ZW = 8;
  395. GL = 9;
  396. SP = 10;
  397. ZWJ$1 = 11;
  398. B2 = 12;
  399. BA = 13;
  400. BB = 14;
  401. HY = 15;
  402. CB = 16;
  403. CL = 17;
  404. CP = 18;
  405. EX = 19;
  406. IN = 20;
  407. NS = 21;
  408. OP = 22;
  409. QU = 23;
  410. IS = 24;
  411. NU = 25;
  412. PO = 26;
  413. PR = 27;
  414. SY = 28;
  415. AI = 29;
  416. AL = 30;
  417. CJ = 31;
  418. EB = 32;
  419. EM = 33;
  420. H2 = 34;
  421. H3 = 35;
  422. HL = 36;
  423. ID = 37;
  424. JL = 38;
  425. JV = 39;
  426. JT = 40;
  427. RI$1 = 41;
  428. SA = 42;
  429. XX = 43;
  430. ea_OP = [9001, 65288];
  431. BREAK_MANDATORY = "!";
  432. BREAK_NOT_ALLOWED$1 = "×";
  433. BREAK_ALLOWED$1 = "÷";
  434. UnicodeTrie$1 = createTrieFromBase64$1(base64$1);
  435. ALPHABETICS = [AL, HL];
  436. HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];
  437. SPACE$1 = [SP, ZW];
  438. PREFIX_POSTFIX = [PR, PO];
  439. LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);
  440. KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];
  441. HYPHEN = [HY, BA];
  442. codePointsToCharacterClasses = function(codePoints, lineBreak2) {
  443. if (lineBreak2 === void 0) {
  444. lineBreak2 = "strict";
  445. }
  446. var types = [];
  447. var indices = [];
  448. var categories = [];
  449. codePoints.forEach(function(codePoint, index) {
  450. var classType = UnicodeTrie$1.get(codePoint);
  451. if (classType > LETTER_NUMBER_MODIFIER) {
  452. categories.push(true);
  453. classType -= LETTER_NUMBER_MODIFIER;
  454. } else {
  455. categories.push(false);
  456. }
  457. if (["normal", "auto", "loose"].indexOf(lineBreak2) !== -1) {
  458. if ([8208, 8211, 12316, 12448].indexOf(codePoint) !== -1) {
  459. indices.push(index);
  460. return types.push(CB);
  461. }
  462. }
  463. if (classType === CM || classType === ZWJ$1) {
  464. if (index === 0) {
  465. indices.push(index);
  466. return types.push(AL);
  467. }
  468. var prev = types[index - 1];
  469. if (LINE_BREAKS.indexOf(prev) === -1) {
  470. indices.push(indices[index - 1]);
  471. return types.push(prev);
  472. }
  473. indices.push(index);
  474. return types.push(AL);
  475. }
  476. indices.push(index);
  477. if (classType === CJ) {
  478. return types.push(lineBreak2 === "strict" ? NS : ID);
  479. }
  480. if (classType === SA) {
  481. return types.push(AL);
  482. }
  483. if (classType === AI) {
  484. return types.push(AL);
  485. }
  486. if (classType === XX) {
  487. if (codePoint >= 131072 && codePoint <= 196605 || codePoint >= 196608 && codePoint <= 262141) {
  488. return types.push(ID);
  489. } else {
  490. return types.push(AL);
  491. }
  492. }
  493. types.push(classType);
  494. });
  495. return [indices, types, categories];
  496. };
  497. isAdjacentWithSpaceIgnored = function(a2, b, currentIndex, classTypes) {
  498. var current = classTypes[currentIndex];
  499. if (Array.isArray(a2) ? a2.indexOf(current) !== -1 : a2 === current) {
  500. var i = currentIndex;
  501. while (i <= classTypes.length) {
  502. i++;
  503. var next = classTypes[i];
  504. if (next === b) {
  505. return true;
  506. }
  507. if (next !== SP) {
  508. break;
  509. }
  510. }
  511. }
  512. if (current === SP) {
  513. var i = currentIndex;
  514. while (i > 0) {
  515. i--;
  516. var prev = classTypes[i];
  517. if (Array.isArray(a2) ? a2.indexOf(prev) !== -1 : a2 === prev) {
  518. var n = currentIndex;
  519. while (n <= classTypes.length) {
  520. n++;
  521. var next = classTypes[n];
  522. if (next === b) {
  523. return true;
  524. }
  525. if (next !== SP) {
  526. break;
  527. }
  528. }
  529. }
  530. if (prev !== SP) {
  531. break;
  532. }
  533. }
  534. }
  535. return false;
  536. };
  537. previousNonSpaceClassType = function(currentIndex, classTypes) {
  538. var i = currentIndex;
  539. while (i >= 0) {
  540. var type = classTypes[i];
  541. if (type === SP) {
  542. i--;
  543. } else {
  544. return type;
  545. }
  546. }
  547. return 0;
  548. };
  549. _lineBreakAtIndex = function(codePoints, classTypes, indicies, index, forbiddenBreaks) {
  550. if (indicies[index] === 0) {
  551. return BREAK_NOT_ALLOWED$1;
  552. }
  553. var currentIndex = index - 1;
  554. if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {
  555. return BREAK_NOT_ALLOWED$1;
  556. }
  557. var beforeIndex = currentIndex - 1;
  558. var afterIndex = currentIndex + 1;
  559. var current = classTypes[currentIndex];
  560. var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;
  561. var next = classTypes[afterIndex];
  562. if (current === CR$1 && next === LF$1) {
  563. return BREAK_NOT_ALLOWED$1;
  564. }
  565. if (HARD_LINE_BREAKS.indexOf(current) !== -1) {
  566. return BREAK_MANDATORY;
  567. }
  568. if (HARD_LINE_BREAKS.indexOf(next) !== -1) {
  569. return BREAK_NOT_ALLOWED$1;
  570. }
  571. if (SPACE$1.indexOf(next) !== -1) {
  572. return BREAK_NOT_ALLOWED$1;
  573. }
  574. if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {
  575. return BREAK_ALLOWED$1;
  576. }
  577. if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {
  578. return BREAK_NOT_ALLOWED$1;
  579. }
  580. if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) {
  581. return BREAK_NOT_ALLOWED$1;
  582. }
  583. if (current === WJ || next === WJ) {
  584. return BREAK_NOT_ALLOWED$1;
  585. }
  586. if (current === GL) {
  587. return BREAK_NOT_ALLOWED$1;
  588. }
  589. if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {
  590. return BREAK_NOT_ALLOWED$1;
  591. }
  592. if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {
  593. return BREAK_NOT_ALLOWED$1;
  594. }
  595. if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {
  596. return BREAK_NOT_ALLOWED$1;
  597. }
  598. if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {
  599. return BREAK_NOT_ALLOWED$1;
  600. }
  601. if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {
  602. return BREAK_NOT_ALLOWED$1;
  603. }
  604. if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {
  605. return BREAK_NOT_ALLOWED$1;
  606. }
  607. if (current === SP) {
  608. return BREAK_ALLOWED$1;
  609. }
  610. if (current === QU || next === QU) {
  611. return BREAK_NOT_ALLOWED$1;
  612. }
  613. if (next === CB || current === CB) {
  614. return BREAK_ALLOWED$1;
  615. }
  616. if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {
  617. return BREAK_NOT_ALLOWED$1;
  618. }
  619. if (before === HL && HYPHEN.indexOf(current) !== -1) {
  620. return BREAK_NOT_ALLOWED$1;
  621. }
  622. if (current === SY && next === HL) {
  623. return BREAK_NOT_ALLOWED$1;
  624. }
  625. if (next === IN) {
  626. return BREAK_NOT_ALLOWED$1;
  627. }
  628. if (ALPHABETICS.indexOf(next) !== -1 && current === NU || ALPHABETICS.indexOf(current) !== -1 && next === NU) {
  629. return BREAK_NOT_ALLOWED$1;
  630. }
  631. if (current === PR && [ID, EB, EM].indexOf(next) !== -1 || [ID, EB, EM].indexOf(current) !== -1 && next === PO) {
  632. return BREAK_NOT_ALLOWED$1;
  633. }
  634. if (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1 || PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
  635. return BREAK_NOT_ALLOWED$1;
  636. }
  637. if (
  638. // (PR | PO) × ( OP | HY )? NU
  639. [PR, PO].indexOf(current) !== -1 && (next === NU || [OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU) || // ( OP | HY ) × NU
  640. [OP, HY].indexOf(current) !== -1 && next === NU || // NU × (NU | SY | IS)
  641. current === NU && [NU, SY, IS].indexOf(next) !== -1
  642. ) {
  643. return BREAK_NOT_ALLOWED$1;
  644. }
  645. if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {
  646. var prevIndex = currentIndex;
  647. while (prevIndex >= 0) {
  648. var type = classTypes[prevIndex];
  649. if (type === NU) {
  650. return BREAK_NOT_ALLOWED$1;
  651. } else if ([SY, IS].indexOf(type) !== -1) {
  652. prevIndex--;
  653. } else {
  654. break;
  655. }
  656. }
  657. }
  658. if ([PR, PO].indexOf(next) !== -1) {
  659. var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;
  660. while (prevIndex >= 0) {
  661. var type = classTypes[prevIndex];
  662. if (type === NU) {
  663. return BREAK_NOT_ALLOWED$1;
  664. } else if ([SY, IS].indexOf(type) !== -1) {
  665. prevIndex--;
  666. } else {
  667. break;
  668. }
  669. }
  670. }
  671. if (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1 || [JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1 || [JT, H3].indexOf(current) !== -1 && next === JT) {
  672. return BREAK_NOT_ALLOWED$1;
  673. }
  674. if (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1 || KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR) {
  675. return BREAK_NOT_ALLOWED$1;
  676. }
  677. if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
  678. return BREAK_NOT_ALLOWED$1;
  679. }
  680. if (current === IS && ALPHABETICS.indexOf(next) !== -1) {
  681. return BREAK_NOT_ALLOWED$1;
  682. }
  683. if (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP && ea_OP.indexOf(codePoints[afterIndex]) === -1 || ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP) {
  684. return BREAK_NOT_ALLOWED$1;
  685. }
  686. if (current === RI$1 && next === RI$1) {
  687. var i = indicies[currentIndex];
  688. var count = 1;
  689. while (i > 0) {
  690. i--;
  691. if (classTypes[i] === RI$1) {
  692. count++;
  693. } else {
  694. break;
  695. }
  696. }
  697. if (count % 2 !== 0) {
  698. return BREAK_NOT_ALLOWED$1;
  699. }
  700. }
  701. if (current === EB && next === EM) {
  702. return BREAK_NOT_ALLOWED$1;
  703. }
  704. return BREAK_ALLOWED$1;
  705. };
  706. cssFormattedClasses = function(codePoints, options) {
  707. if (!options) {
  708. options = { lineBreak: "normal", wordBreak: "normal" };
  709. }
  710. var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2];
  711. if (options.wordBreak === "break-all" || options.wordBreak === "break-word") {
  712. classTypes = classTypes.map(function(type) {
  713. return [NU, AL, SA].indexOf(type) !== -1 ? ID : type;
  714. });
  715. }
  716. var forbiddenBreakpoints = options.wordBreak === "keep-all" ? isLetterNumber.map(function(letterNumber, i) {
  717. return letterNumber && codePoints[i] >= 19968 && codePoints[i] <= 40959;
  718. }) : void 0;
  719. return [indicies, classTypes, forbiddenBreakpoints];
  720. };
  721. Break = /** @class */
  722. function() {
  723. function Break2(codePoints, lineBreak2, start, end) {
  724. this.codePoints = codePoints;
  725. this.required = lineBreak2 === BREAK_MANDATORY;
  726. this.start = start;
  727. this.end = end;
  728. }
  729. Break2.prototype.slice = function() {
  730. return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end));
  731. };
  732. return Break2;
  733. }();
  734. LineBreaker = function(str, options) {
  735. var codePoints = toCodePoints$1(str);
  736. var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2];
  737. var length = codePoints.length;
  738. var lastEnd = 0;
  739. var nextIndex = 0;
  740. return {
  741. next: function() {
  742. if (nextIndex >= length) {
  743. return { done: true, value: null };
  744. }
  745. var lineBreak2 = BREAK_NOT_ALLOWED$1;
  746. while (nextIndex < length && (lineBreak2 = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === BREAK_NOT_ALLOWED$1) {
  747. }
  748. if (lineBreak2 !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {
  749. var value = new Break(codePoints, lineBreak2, lastEnd, nextIndex);
  750. lastEnd = nextIndex;
  751. return { value, done: false };
  752. }
  753. return { done: true, value: null };
  754. }
  755. };
  756. };
  757. FLAG_UNRESTRICTED = 1 << 0;
  758. FLAG_ID = 1 << 1;
  759. FLAG_INTEGER = 1 << 2;
  760. FLAG_NUMBER = 1 << 3;
  761. LINE_FEED = 10;
  762. SOLIDUS = 47;
  763. REVERSE_SOLIDUS = 92;
  764. CHARACTER_TABULATION = 9;
  765. SPACE = 32;
  766. QUOTATION_MARK = 34;
  767. EQUALS_SIGN = 61;
  768. NUMBER_SIGN = 35;
  769. DOLLAR_SIGN = 36;
  770. PERCENTAGE_SIGN = 37;
  771. APOSTROPHE = 39;
  772. LEFT_PARENTHESIS = 40;
  773. RIGHT_PARENTHESIS = 41;
  774. LOW_LINE = 95;
  775. HYPHEN_MINUS = 45;
  776. EXCLAMATION_MARK = 33;
  777. LESS_THAN_SIGN = 60;
  778. GREATER_THAN_SIGN = 62;
  779. COMMERCIAL_AT = 64;
  780. LEFT_SQUARE_BRACKET = 91;
  781. RIGHT_SQUARE_BRACKET = 93;
  782. CIRCUMFLEX_ACCENT = 61;
  783. LEFT_CURLY_BRACKET = 123;
  784. QUESTION_MARK = 63;
  785. RIGHT_CURLY_BRACKET = 125;
  786. VERTICAL_LINE = 124;
  787. TILDE = 126;
  788. CONTROL = 128;
  789. REPLACEMENT_CHARACTER = 65533;
  790. ASTERISK = 42;
  791. PLUS_SIGN = 43;
  792. COMMA = 44;
  793. COLON = 58;
  794. SEMICOLON = 59;
  795. FULL_STOP = 46;
  796. NULL = 0;
  797. BACKSPACE = 8;
  798. LINE_TABULATION = 11;
  799. SHIFT_OUT = 14;
  800. INFORMATION_SEPARATOR_ONE = 31;
  801. DELETE = 127;
  802. EOF = -1;
  803. ZERO = 48;
  804. a = 97;
  805. e = 101;
  806. f = 102;
  807. u = 117;
  808. z = 122;
  809. A = 65;
  810. E = 69;
  811. F = 70;
  812. U = 85;
  813. Z = 90;
  814. isDigit = function(codePoint) {
  815. return codePoint >= ZERO && codePoint <= 57;
  816. };
  817. isSurrogateCodePoint = function(codePoint) {
  818. return codePoint >= 55296 && codePoint <= 57343;
  819. };
  820. isHex = function(codePoint) {
  821. return isDigit(codePoint) || codePoint >= A && codePoint <= F || codePoint >= a && codePoint <= f;
  822. };
  823. isLowerCaseLetter = function(codePoint) {
  824. return codePoint >= a && codePoint <= z;
  825. };
  826. isUpperCaseLetter = function(codePoint) {
  827. return codePoint >= A && codePoint <= Z;
  828. };
  829. isLetter = function(codePoint) {
  830. return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);
  831. };
  832. isNonASCIICodePoint = function(codePoint) {
  833. return codePoint >= CONTROL;
  834. };
  835. isWhiteSpace = function(codePoint) {
  836. return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;
  837. };
  838. isNameStartCodePoint = function(codePoint) {
  839. return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;
  840. };
  841. isNameCodePoint = function(codePoint) {
  842. return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;
  843. };
  844. isNonPrintableCodePoint = function(codePoint) {
  845. return codePoint >= NULL && codePoint <= BACKSPACE || codePoint === LINE_TABULATION || codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE || codePoint === DELETE;
  846. };
  847. isValidEscape = function(c1, c2) {
  848. if (c1 !== REVERSE_SOLIDUS) {
  849. return false;
  850. }
  851. return c2 !== LINE_FEED;
  852. };
  853. isIdentifierStart = function(c1, c2, c3) {
  854. if (c1 === HYPHEN_MINUS) {
  855. return isNameStartCodePoint(c2) || isValidEscape(c2, c3);
  856. } else if (isNameStartCodePoint(c1)) {
  857. return true;
  858. } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {
  859. return true;
  860. }
  861. return false;
  862. };
  863. isNumberStart = function(c1, c2, c3) {
  864. if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
  865. if (isDigit(c2)) {
  866. return true;
  867. }
  868. return c2 === FULL_STOP && isDigit(c3);
  869. }
  870. if (c1 === FULL_STOP) {
  871. return isDigit(c2);
  872. }
  873. return isDigit(c1);
  874. };
  875. stringToNumber = function(codePoints) {
  876. var c = 0;
  877. var sign = 1;
  878. if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {
  879. if (codePoints[c] === HYPHEN_MINUS) {
  880. sign = -1;
  881. }
  882. c++;
  883. }
  884. var integers = [];
  885. while (isDigit(codePoints[c])) {
  886. integers.push(codePoints[c++]);
  887. }
  888. var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0;
  889. if (codePoints[c] === FULL_STOP) {
  890. c++;
  891. }
  892. var fraction = [];
  893. while (isDigit(codePoints[c])) {
  894. fraction.push(codePoints[c++]);
  895. }
  896. var fracd = fraction.length;
  897. var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0;
  898. if (codePoints[c] === E || codePoints[c] === e) {
  899. c++;
  900. }
  901. var expsign = 1;
  902. if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {
  903. if (codePoints[c] === HYPHEN_MINUS) {
  904. expsign = -1;
  905. }
  906. c++;
  907. }
  908. var exponent = [];
  909. while (isDigit(codePoints[c])) {
  910. exponent.push(codePoints[c++]);
  911. }
  912. var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0;
  913. return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);
  914. };
  915. LEFT_PARENTHESIS_TOKEN = {
  916. type: 2
  917. /* LEFT_PARENTHESIS_TOKEN */
  918. };
  919. RIGHT_PARENTHESIS_TOKEN = {
  920. type: 3
  921. /* RIGHT_PARENTHESIS_TOKEN */
  922. };
  923. COMMA_TOKEN = {
  924. type: 4
  925. /* COMMA_TOKEN */
  926. };
  927. SUFFIX_MATCH_TOKEN = {
  928. type: 13
  929. /* SUFFIX_MATCH_TOKEN */
  930. };
  931. PREFIX_MATCH_TOKEN = {
  932. type: 8
  933. /* PREFIX_MATCH_TOKEN */
  934. };
  935. COLUMN_TOKEN = {
  936. type: 21
  937. /* COLUMN_TOKEN */
  938. };
  939. DASH_MATCH_TOKEN = {
  940. type: 9
  941. /* DASH_MATCH_TOKEN */
  942. };
  943. INCLUDE_MATCH_TOKEN = {
  944. type: 10
  945. /* INCLUDE_MATCH_TOKEN */
  946. };
  947. LEFT_CURLY_BRACKET_TOKEN = {
  948. type: 11
  949. /* LEFT_CURLY_BRACKET_TOKEN */
  950. };
  951. RIGHT_CURLY_BRACKET_TOKEN = {
  952. type: 12
  953. /* RIGHT_CURLY_BRACKET_TOKEN */
  954. };
  955. SUBSTRING_MATCH_TOKEN = {
  956. type: 14
  957. /* SUBSTRING_MATCH_TOKEN */
  958. };
  959. BAD_URL_TOKEN = {
  960. type: 23
  961. /* BAD_URL_TOKEN */
  962. };
  963. BAD_STRING_TOKEN = {
  964. type: 1
  965. /* BAD_STRING_TOKEN */
  966. };
  967. CDO_TOKEN = {
  968. type: 25
  969. /* CDO_TOKEN */
  970. };
  971. CDC_TOKEN = {
  972. type: 24
  973. /* CDC_TOKEN */
  974. };
  975. COLON_TOKEN = {
  976. type: 26
  977. /* COLON_TOKEN */
  978. };
  979. SEMICOLON_TOKEN = {
  980. type: 27
  981. /* SEMICOLON_TOKEN */
  982. };
  983. LEFT_SQUARE_BRACKET_TOKEN = {
  984. type: 28
  985. /* LEFT_SQUARE_BRACKET_TOKEN */
  986. };
  987. RIGHT_SQUARE_BRACKET_TOKEN = {
  988. type: 29
  989. /* RIGHT_SQUARE_BRACKET_TOKEN */
  990. };
  991. WHITESPACE_TOKEN = {
  992. type: 31
  993. /* WHITESPACE_TOKEN */
  994. };
  995. EOF_TOKEN = {
  996. type: 32
  997. /* EOF_TOKEN */
  998. };
  999. Tokenizer = /** @class */
  1000. function() {
  1001. function Tokenizer2() {
  1002. this._value = [];
  1003. }
  1004. Tokenizer2.prototype.write = function(chunk) {
  1005. this._value = this._value.concat(toCodePoints$1(chunk));
  1006. };
  1007. Tokenizer2.prototype.read = function() {
  1008. var tokens = [];
  1009. var token = this.consumeToken();
  1010. while (token !== EOF_TOKEN) {
  1011. tokens.push(token);
  1012. token = this.consumeToken();
  1013. }
  1014. return tokens;
  1015. };
  1016. Tokenizer2.prototype.consumeToken = function() {
  1017. var codePoint = this.consumeCodePoint();
  1018. switch (codePoint) {
  1019. case QUOTATION_MARK:
  1020. return this.consumeStringToken(QUOTATION_MARK);
  1021. case NUMBER_SIGN:
  1022. var c1 = this.peekCodePoint(0);
  1023. var c2 = this.peekCodePoint(1);
  1024. var c3 = this.peekCodePoint(2);
  1025. if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {
  1026. var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;
  1027. var value = this.consumeName();
  1028. return { type: 5, value, flags };
  1029. }
  1030. break;
  1031. case DOLLAR_SIGN:
  1032. if (this.peekCodePoint(0) === EQUALS_SIGN) {
  1033. this.consumeCodePoint();
  1034. return SUFFIX_MATCH_TOKEN;
  1035. }
  1036. break;
  1037. case APOSTROPHE:
  1038. return this.consumeStringToken(APOSTROPHE);
  1039. case LEFT_PARENTHESIS:
  1040. return LEFT_PARENTHESIS_TOKEN;
  1041. case RIGHT_PARENTHESIS:
  1042. return RIGHT_PARENTHESIS_TOKEN;
  1043. case ASTERISK:
  1044. if (this.peekCodePoint(0) === EQUALS_SIGN) {
  1045. this.consumeCodePoint();
  1046. return SUBSTRING_MATCH_TOKEN;
  1047. }
  1048. break;
  1049. case PLUS_SIGN:
  1050. if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {
  1051. this.reconsumeCodePoint(codePoint);
  1052. return this.consumeNumericToken();
  1053. }
  1054. break;
  1055. case COMMA:
  1056. return COMMA_TOKEN;
  1057. case HYPHEN_MINUS:
  1058. var e1 = codePoint;
  1059. var e2 = this.peekCodePoint(0);
  1060. var e3 = this.peekCodePoint(1);
  1061. if (isNumberStart(e1, e2, e3)) {
  1062. this.reconsumeCodePoint(codePoint);
  1063. return this.consumeNumericToken();
  1064. }
  1065. if (isIdentifierStart(e1, e2, e3)) {
  1066. this.reconsumeCodePoint(codePoint);
  1067. return this.consumeIdentLikeToken();
  1068. }
  1069. if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {
  1070. this.consumeCodePoint();
  1071. this.consumeCodePoint();
  1072. return CDC_TOKEN;
  1073. }
  1074. break;
  1075. case FULL_STOP:
  1076. if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {
  1077. this.reconsumeCodePoint(codePoint);
  1078. return this.consumeNumericToken();
  1079. }
  1080. break;
  1081. case SOLIDUS:
  1082. if (this.peekCodePoint(0) === ASTERISK) {
  1083. this.consumeCodePoint();
  1084. while (true) {
  1085. var c = this.consumeCodePoint();
  1086. if (c === ASTERISK) {
  1087. c = this.consumeCodePoint();
  1088. if (c === SOLIDUS) {
  1089. return this.consumeToken();
  1090. }
  1091. }
  1092. if (c === EOF) {
  1093. return this.consumeToken();
  1094. }
  1095. }
  1096. }
  1097. break;
  1098. case COLON:
  1099. return COLON_TOKEN;
  1100. case SEMICOLON:
  1101. return SEMICOLON_TOKEN;
  1102. case LESS_THAN_SIGN:
  1103. if (this.peekCodePoint(0) === EXCLAMATION_MARK && this.peekCodePoint(1) === HYPHEN_MINUS && this.peekCodePoint(2) === HYPHEN_MINUS) {
  1104. this.consumeCodePoint();
  1105. this.consumeCodePoint();
  1106. return CDO_TOKEN;
  1107. }
  1108. break;
  1109. case COMMERCIAL_AT:
  1110. var a1 = this.peekCodePoint(0);
  1111. var a2 = this.peekCodePoint(1);
  1112. var a3 = this.peekCodePoint(2);
  1113. if (isIdentifierStart(a1, a2, a3)) {
  1114. var value = this.consumeName();
  1115. return { type: 7, value };
  1116. }
  1117. break;
  1118. case LEFT_SQUARE_BRACKET:
  1119. return LEFT_SQUARE_BRACKET_TOKEN;
  1120. case REVERSE_SOLIDUS:
  1121. if (isValidEscape(codePoint, this.peekCodePoint(0))) {
  1122. this.reconsumeCodePoint(codePoint);
  1123. return this.consumeIdentLikeToken();
  1124. }
  1125. break;
  1126. case RIGHT_SQUARE_BRACKET:
  1127. return RIGHT_SQUARE_BRACKET_TOKEN;
  1128. case CIRCUMFLEX_ACCENT:
  1129. if (this.peekCodePoint(0) === EQUALS_SIGN) {
  1130. this.consumeCodePoint();
  1131. return PREFIX_MATCH_TOKEN;
  1132. }
  1133. break;
  1134. case LEFT_CURLY_BRACKET:
  1135. return LEFT_CURLY_BRACKET_TOKEN;
  1136. case RIGHT_CURLY_BRACKET:
  1137. return RIGHT_CURLY_BRACKET_TOKEN;
  1138. case u:
  1139. case U:
  1140. var u1 = this.peekCodePoint(0);
  1141. var u2 = this.peekCodePoint(1);
  1142. if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {
  1143. this.consumeCodePoint();
  1144. this.consumeUnicodeRangeToken();
  1145. }
  1146. this.reconsumeCodePoint(codePoint);
  1147. return this.consumeIdentLikeToken();
  1148. case VERTICAL_LINE:
  1149. if (this.peekCodePoint(0) === EQUALS_SIGN) {
  1150. this.consumeCodePoint();
  1151. return DASH_MATCH_TOKEN;
  1152. }
  1153. if (this.peekCodePoint(0) === VERTICAL_LINE) {
  1154. this.consumeCodePoint();
  1155. return COLUMN_TOKEN;
  1156. }
  1157. break;
  1158. case TILDE:
  1159. if (this.peekCodePoint(0) === EQUALS_SIGN) {
  1160. this.consumeCodePoint();
  1161. return INCLUDE_MATCH_TOKEN;
  1162. }
  1163. break;
  1164. case EOF:
  1165. return EOF_TOKEN;
  1166. }
  1167. if (isWhiteSpace(codePoint)) {
  1168. this.consumeWhiteSpace();
  1169. return WHITESPACE_TOKEN;
  1170. }
  1171. if (isDigit(codePoint)) {
  1172. this.reconsumeCodePoint(codePoint);
  1173. return this.consumeNumericToken();
  1174. }
  1175. if (isNameStartCodePoint(codePoint)) {
  1176. this.reconsumeCodePoint(codePoint);
  1177. return this.consumeIdentLikeToken();
  1178. }
  1179. return { type: 6, value: fromCodePoint$1(codePoint) };
  1180. };
  1181. Tokenizer2.prototype.consumeCodePoint = function() {
  1182. var value = this._value.shift();
  1183. return typeof value === "undefined" ? -1 : value;
  1184. };
  1185. Tokenizer2.prototype.reconsumeCodePoint = function(codePoint) {
  1186. this._value.unshift(codePoint);
  1187. };
  1188. Tokenizer2.prototype.peekCodePoint = function(delta) {
  1189. if (delta >= this._value.length) {
  1190. return -1;
  1191. }
  1192. return this._value[delta];
  1193. };
  1194. Tokenizer2.prototype.consumeUnicodeRangeToken = function() {
  1195. var digits = [];
  1196. var codePoint = this.consumeCodePoint();
  1197. while (isHex(codePoint) && digits.length < 6) {
  1198. digits.push(codePoint);
  1199. codePoint = this.consumeCodePoint();
  1200. }
  1201. var questionMarks = false;
  1202. while (codePoint === QUESTION_MARK && digits.length < 6) {
  1203. digits.push(codePoint);
  1204. codePoint = this.consumeCodePoint();
  1205. questionMarks = true;
  1206. }
  1207. if (questionMarks) {
  1208. var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function(digit) {
  1209. return digit === QUESTION_MARK ? ZERO : digit;
  1210. })), 16);
  1211. var end = parseInt(fromCodePoint$1.apply(void 0, digits.map(function(digit) {
  1212. return digit === QUESTION_MARK ? F : digit;
  1213. })), 16);
  1214. return { type: 30, start: start_1, end };
  1215. }
  1216. var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16);
  1217. if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {
  1218. this.consumeCodePoint();
  1219. codePoint = this.consumeCodePoint();
  1220. var endDigits = [];
  1221. while (isHex(codePoint) && endDigits.length < 6) {
  1222. endDigits.push(codePoint);
  1223. codePoint = this.consumeCodePoint();
  1224. }
  1225. var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);
  1226. return { type: 30, start, end };
  1227. } else {
  1228. return { type: 30, start, end: start };
  1229. }
  1230. };
  1231. Tokenizer2.prototype.consumeIdentLikeToken = function() {
  1232. var value = this.consumeName();
  1233. if (value.toLowerCase() === "url" && this.peekCodePoint(0) === LEFT_PARENTHESIS) {
  1234. this.consumeCodePoint();
  1235. return this.consumeUrlToken();
  1236. } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {
  1237. this.consumeCodePoint();
  1238. return { type: 19, value };
  1239. }
  1240. return { type: 20, value };
  1241. };
  1242. Tokenizer2.prototype.consumeUrlToken = function() {
  1243. var value = [];
  1244. this.consumeWhiteSpace();
  1245. if (this.peekCodePoint(0) === EOF) {
  1246. return { type: 22, value: "" };
  1247. }
  1248. var next = this.peekCodePoint(0);
  1249. if (next === APOSTROPHE || next === QUOTATION_MARK) {
  1250. var stringToken = this.consumeStringToken(this.consumeCodePoint());
  1251. if (stringToken.type === 0) {
  1252. this.consumeWhiteSpace();
  1253. if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
  1254. this.consumeCodePoint();
  1255. return { type: 22, value: stringToken.value };
  1256. }
  1257. }
  1258. this.consumeBadUrlRemnants();
  1259. return BAD_URL_TOKEN;
  1260. }
  1261. while (true) {
  1262. var codePoint = this.consumeCodePoint();
  1263. if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {
  1264. return { type: 22, value: fromCodePoint$1.apply(void 0, value) };
  1265. } else if (isWhiteSpace(codePoint)) {
  1266. this.consumeWhiteSpace();
  1267. if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
  1268. this.consumeCodePoint();
  1269. return { type: 22, value: fromCodePoint$1.apply(void 0, value) };
  1270. }
  1271. this.consumeBadUrlRemnants();
  1272. return BAD_URL_TOKEN;
  1273. } else if (codePoint === QUOTATION_MARK || codePoint === APOSTROPHE || codePoint === LEFT_PARENTHESIS || isNonPrintableCodePoint(codePoint)) {
  1274. this.consumeBadUrlRemnants();
  1275. return BAD_URL_TOKEN;
  1276. } else if (codePoint === REVERSE_SOLIDUS) {
  1277. if (isValidEscape(codePoint, this.peekCodePoint(0))) {
  1278. value.push(this.consumeEscapedCodePoint());
  1279. } else {
  1280. this.consumeBadUrlRemnants();
  1281. return BAD_URL_TOKEN;
  1282. }
  1283. } else {
  1284. value.push(codePoint);
  1285. }
  1286. }
  1287. };
  1288. Tokenizer2.prototype.consumeWhiteSpace = function() {
  1289. while (isWhiteSpace(this.peekCodePoint(0))) {
  1290. this.consumeCodePoint();
  1291. }
  1292. };
  1293. Tokenizer2.prototype.consumeBadUrlRemnants = function() {
  1294. while (true) {
  1295. var codePoint = this.consumeCodePoint();
  1296. if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {
  1297. return;
  1298. }
  1299. if (isValidEscape(codePoint, this.peekCodePoint(0))) {
  1300. this.consumeEscapedCodePoint();
  1301. }
  1302. }
  1303. };
  1304. Tokenizer2.prototype.consumeStringSlice = function(count) {
  1305. var SLICE_STACK_SIZE = 5e4;
  1306. var value = "";
  1307. while (count > 0) {
  1308. var amount = Math.min(SLICE_STACK_SIZE, count);
  1309. value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));
  1310. count -= amount;
  1311. }
  1312. this._value.shift();
  1313. return value;
  1314. };
  1315. Tokenizer2.prototype.consumeStringToken = function(endingCodePoint) {
  1316. var value = "";
  1317. var i = 0;
  1318. do {
  1319. var codePoint = this._value[i];
  1320. if (codePoint === EOF || codePoint === void 0 || codePoint === endingCodePoint) {
  1321. value += this.consumeStringSlice(i);
  1322. return { type: 0, value };
  1323. }
  1324. if (codePoint === LINE_FEED) {
  1325. this._value.splice(0, i);
  1326. return BAD_STRING_TOKEN;
  1327. }
  1328. if (codePoint === REVERSE_SOLIDUS) {
  1329. var next = this._value[i + 1];
  1330. if (next !== EOF && next !== void 0) {
  1331. if (next === LINE_FEED) {
  1332. value += this.consumeStringSlice(i);
  1333. i = -1;
  1334. this._value.shift();
  1335. } else if (isValidEscape(codePoint, next)) {
  1336. value += this.consumeStringSlice(i);
  1337. value += fromCodePoint$1(this.consumeEscapedCodePoint());
  1338. i = -1;
  1339. }
  1340. }
  1341. }
  1342. i++;
  1343. } while (true);
  1344. };
  1345. Tokenizer2.prototype.consumeNumber = function() {
  1346. var repr = [];
  1347. var type = FLAG_INTEGER;
  1348. var c1 = this.peekCodePoint(0);
  1349. if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
  1350. repr.push(this.consumeCodePoint());
  1351. }
  1352. while (isDigit(this.peekCodePoint(0))) {
  1353. repr.push(this.consumeCodePoint());
  1354. }
  1355. c1 = this.peekCodePoint(0);
  1356. var c2 = this.peekCodePoint(1);
  1357. if (c1 === FULL_STOP && isDigit(c2)) {
  1358. repr.push(this.consumeCodePoint(), this.consumeCodePoint());
  1359. type = FLAG_NUMBER;
  1360. while (isDigit(this.peekCodePoint(0))) {
  1361. repr.push(this.consumeCodePoint());
  1362. }
  1363. }
  1364. c1 = this.peekCodePoint(0);
  1365. c2 = this.peekCodePoint(1);
  1366. var c3 = this.peekCodePoint(2);
  1367. if ((c1 === E || c1 === e) && ((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3) || isDigit(c2))) {
  1368. repr.push(this.consumeCodePoint(), this.consumeCodePoint());
  1369. type = FLAG_NUMBER;
  1370. while (isDigit(this.peekCodePoint(0))) {
  1371. repr.push(this.consumeCodePoint());
  1372. }
  1373. }
  1374. return [stringToNumber(repr), type];
  1375. };
  1376. Tokenizer2.prototype.consumeNumericToken = function() {
  1377. var _a = this.consumeNumber(), number = _a[0], flags = _a[1];
  1378. var c1 = this.peekCodePoint(0);
  1379. var c2 = this.peekCodePoint(1);
  1380. var c3 = this.peekCodePoint(2);
  1381. if (isIdentifierStart(c1, c2, c3)) {
  1382. var unit = this.consumeName();
  1383. return { type: 15, number, flags, unit };
  1384. }
  1385. if (c1 === PERCENTAGE_SIGN) {
  1386. this.consumeCodePoint();
  1387. return { type: 16, number, flags };
  1388. }
  1389. return { type: 17, number, flags };
  1390. };
  1391. Tokenizer2.prototype.consumeEscapedCodePoint = function() {
  1392. var codePoint = this.consumeCodePoint();
  1393. if (isHex(codePoint)) {
  1394. var hex = fromCodePoint$1(codePoint);
  1395. while (isHex(this.peekCodePoint(0)) && hex.length < 6) {
  1396. hex += fromCodePoint$1(this.consumeCodePoint());
  1397. }
  1398. if (isWhiteSpace(this.peekCodePoint(0))) {
  1399. this.consumeCodePoint();
  1400. }
  1401. var hexCodePoint = parseInt(hex, 16);
  1402. if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 1114111) {
  1403. return REPLACEMENT_CHARACTER;
  1404. }
  1405. return hexCodePoint;
  1406. }
  1407. if (codePoint === EOF) {
  1408. return REPLACEMENT_CHARACTER;
  1409. }
  1410. return codePoint;
  1411. };
  1412. Tokenizer2.prototype.consumeName = function() {
  1413. var result = "";
  1414. while (true) {
  1415. var codePoint = this.consumeCodePoint();
  1416. if (isNameCodePoint(codePoint)) {
  1417. result += fromCodePoint$1(codePoint);
  1418. } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {
  1419. result += fromCodePoint$1(this.consumeEscapedCodePoint());
  1420. } else {
  1421. this.reconsumeCodePoint(codePoint);
  1422. return result;
  1423. }
  1424. }
  1425. };
  1426. return Tokenizer2;
  1427. }();
  1428. Parser = /** @class */
  1429. function() {
  1430. function Parser2(tokens) {
  1431. this._tokens = tokens;
  1432. }
  1433. Parser2.create = function(value) {
  1434. var tokenizer = new Tokenizer();
  1435. tokenizer.write(value);
  1436. return new Parser2(tokenizer.read());
  1437. };
  1438. Parser2.parseValue = function(value) {
  1439. return Parser2.create(value).parseComponentValue();
  1440. };
  1441. Parser2.parseValues = function(value) {
  1442. return Parser2.create(value).parseComponentValues();
  1443. };
  1444. Parser2.prototype.parseComponentValue = function() {
  1445. var token = this.consumeToken();
  1446. while (token.type === 31) {
  1447. token = this.consumeToken();
  1448. }
  1449. if (token.type === 32) {
  1450. throw new SyntaxError("Error parsing CSS component value, unexpected EOF");
  1451. }
  1452. this.reconsumeToken(token);
  1453. var value = this.consumeComponentValue();
  1454. do {
  1455. token = this.consumeToken();
  1456. } while (token.type === 31);
  1457. if (token.type === 32) {
  1458. return value;
  1459. }
  1460. throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one");
  1461. };
  1462. Parser2.prototype.parseComponentValues = function() {
  1463. var values = [];
  1464. while (true) {
  1465. var value = this.consumeComponentValue();
  1466. if (value.type === 32) {
  1467. return values;
  1468. }
  1469. values.push(value);
  1470. values.push();
  1471. }
  1472. };
  1473. Parser2.prototype.consumeComponentValue = function() {
  1474. var token = this.consumeToken();
  1475. switch (token.type) {
  1476. case 11:
  1477. case 28:
  1478. case 2:
  1479. return this.consumeSimpleBlock(token.type);
  1480. case 19:
  1481. return this.consumeFunction(token);
  1482. }
  1483. return token;
  1484. };
  1485. Parser2.prototype.consumeSimpleBlock = function(type) {
  1486. var block = { type, values: [] };
  1487. var token = this.consumeToken();
  1488. while (true) {
  1489. if (token.type === 32 || isEndingTokenFor(token, type)) {
  1490. return block;
  1491. }
  1492. this.reconsumeToken(token);
  1493. block.values.push(this.consumeComponentValue());
  1494. token = this.consumeToken();
  1495. }
  1496. };
  1497. Parser2.prototype.consumeFunction = function(functionToken) {
  1498. var cssFunction = {
  1499. name: functionToken.value,
  1500. values: [],
  1501. type: 18
  1502. /* FUNCTION */
  1503. };
  1504. while (true) {
  1505. var token = this.consumeToken();
  1506. if (token.type === 32 || token.type === 3) {
  1507. return cssFunction;
  1508. }
  1509. this.reconsumeToken(token);
  1510. cssFunction.values.push(this.consumeComponentValue());
  1511. }
  1512. };
  1513. Parser2.prototype.consumeToken = function() {
  1514. var token = this._tokens.shift();
  1515. return typeof token === "undefined" ? EOF_TOKEN : token;
  1516. };
  1517. Parser2.prototype.reconsumeToken = function(token) {
  1518. this._tokens.unshift(token);
  1519. };
  1520. return Parser2;
  1521. }();
  1522. isDimensionToken = function(token) {
  1523. return token.type === 15;
  1524. };
  1525. isNumberToken = function(token) {
  1526. return token.type === 17;
  1527. };
  1528. isIdentToken = function(token) {
  1529. return token.type === 20;
  1530. };
  1531. isStringToken = function(token) {
  1532. return token.type === 0;
  1533. };
  1534. isIdentWithValue = function(token, value) {
  1535. return isIdentToken(token) && token.value === value;
  1536. };
  1537. nonWhiteSpace = function(token) {
  1538. return token.type !== 31;
  1539. };
  1540. nonFunctionArgSeparator = function(token) {
  1541. return token.type !== 31 && token.type !== 4;
  1542. };
  1543. parseFunctionArgs = function(tokens) {
  1544. var args = [];
  1545. var arg = [];
  1546. tokens.forEach(function(token) {
  1547. if (token.type === 4) {
  1548. if (arg.length === 0) {
  1549. throw new Error("Error parsing function args, zero tokens for arg");
  1550. }
  1551. args.push(arg);
  1552. arg = [];
  1553. return;
  1554. }
  1555. if (token.type !== 31) {
  1556. arg.push(token);
  1557. }
  1558. });
  1559. if (arg.length) {
  1560. args.push(arg);
  1561. }
  1562. return args;
  1563. };
  1564. isEndingTokenFor = function(token, type) {
  1565. if (type === 11 && token.type === 12) {
  1566. return true;
  1567. }
  1568. if (type === 28 && token.type === 29) {
  1569. return true;
  1570. }
  1571. return type === 2 && token.type === 3;
  1572. };
  1573. isLength = function(token) {
  1574. return token.type === 17 || token.type === 15;
  1575. };
  1576. isLengthPercentage = function(token) {
  1577. return token.type === 16 || isLength(token);
  1578. };
  1579. parseLengthPercentageTuple = function(tokens) {
  1580. return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];
  1581. };
  1582. ZERO_LENGTH = {
  1583. type: 17,
  1584. number: 0,
  1585. flags: FLAG_INTEGER
  1586. };
  1587. FIFTY_PERCENT = {
  1588. type: 16,
  1589. number: 50,
  1590. flags: FLAG_INTEGER
  1591. };
  1592. HUNDRED_PERCENT = {
  1593. type: 16,
  1594. number: 100,
  1595. flags: FLAG_INTEGER
  1596. };
  1597. getAbsoluteValueForTuple = function(tuple, width, height) {
  1598. var x = tuple[0], y = tuple[1];
  1599. return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== "undefined" ? y : x, height)];
  1600. };
  1601. getAbsoluteValue = function(token, parent) {
  1602. if (token.type === 16) {
  1603. return token.number / 100 * parent;
  1604. }
  1605. if (isDimensionToken(token)) {
  1606. switch (token.unit) {
  1607. case "rem":
  1608. case "em":
  1609. return 16 * token.number;
  1610. case "px":
  1611. default:
  1612. return token.number;
  1613. }
  1614. }
  1615. return token.number;
  1616. };
  1617. DEG = "deg";
  1618. GRAD = "grad";
  1619. RAD = "rad";
  1620. TURN = "turn";
  1621. angle = {
  1622. name: "angle",
  1623. parse: function(_context, value) {
  1624. if (value.type === 15) {
  1625. switch (value.unit) {
  1626. case DEG:
  1627. return Math.PI * value.number / 180;
  1628. case GRAD:
  1629. return Math.PI / 200 * value.number;
  1630. case RAD:
  1631. return value.number;
  1632. case TURN:
  1633. return Math.PI * 2 * value.number;
  1634. }
  1635. }
  1636. throw new Error("Unsupported angle type");
  1637. }
  1638. };
  1639. isAngle = function(value) {
  1640. if (value.type === 15) {
  1641. if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {
  1642. return true;
  1643. }
  1644. }
  1645. return false;
  1646. };
  1647. parseNamedSide = function(tokens) {
  1648. var sideOrCorner = tokens.filter(isIdentToken).map(function(ident) {
  1649. return ident.value;
  1650. }).join(" ");
  1651. switch (sideOrCorner) {
  1652. case "to bottom right":
  1653. case "to right bottom":
  1654. case "left top":
  1655. case "top left":
  1656. return [ZERO_LENGTH, ZERO_LENGTH];
  1657. case "to top":
  1658. case "bottom":
  1659. return deg(0);
  1660. case "to bottom left":
  1661. case "to left bottom":
  1662. case "right top":
  1663. case "top right":
  1664. return [ZERO_LENGTH, HUNDRED_PERCENT];
  1665. case "to right":
  1666. case "left":
  1667. return deg(90);
  1668. case "to top left":
  1669. case "to left top":
  1670. case "right bottom":
  1671. case "bottom right":
  1672. return [HUNDRED_PERCENT, HUNDRED_PERCENT];
  1673. case "to bottom":
  1674. case "top":
  1675. return deg(180);
  1676. case "to top right":
  1677. case "to right top":
  1678. case "left bottom":
  1679. case "bottom left":
  1680. return [HUNDRED_PERCENT, ZERO_LENGTH];
  1681. case "to left":
  1682. case "right":
  1683. return deg(270);
  1684. }
  1685. return 0;
  1686. };
  1687. deg = function(deg2) {
  1688. return Math.PI * deg2 / 180;
  1689. };
  1690. color$1 = {
  1691. name: "color",
  1692. parse: function(context, value) {
  1693. if (value.type === 18) {
  1694. var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];
  1695. if (typeof colorFunction === "undefined") {
  1696. throw new Error('Attempting to parse an unsupported color function "' + value.name + '"');
  1697. }
  1698. return colorFunction(context, value.values);
  1699. }
  1700. if (value.type === 5) {
  1701. if (value.value.length === 3) {
  1702. var r = value.value.substring(0, 1);
  1703. var g = value.value.substring(1, 2);
  1704. var b = value.value.substring(2, 3);
  1705. return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);
  1706. }
  1707. if (value.value.length === 4) {
  1708. var r = value.value.substring(0, 1);
  1709. var g = value.value.substring(1, 2);
  1710. var b = value.value.substring(2, 3);
  1711. var a2 = value.value.substring(3, 4);
  1712. return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a2 + a2, 16) / 255);
  1713. }
  1714. if (value.value.length === 6) {
  1715. var r = value.value.substring(0, 2);
  1716. var g = value.value.substring(2, 4);
  1717. var b = value.value.substring(4, 6);
  1718. return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);
  1719. }
  1720. if (value.value.length === 8) {
  1721. var r = value.value.substring(0, 2);
  1722. var g = value.value.substring(2, 4);
  1723. var b = value.value.substring(4, 6);
  1724. var a2 = value.value.substring(6, 8);
  1725. return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a2, 16) / 255);
  1726. }
  1727. }
  1728. if (value.type === 20) {
  1729. var namedColor = COLORS[value.value.toUpperCase()];
  1730. if (typeof namedColor !== "undefined") {
  1731. return namedColor;
  1732. }
  1733. }
  1734. return COLORS.TRANSPARENT;
  1735. }
  1736. };
  1737. isTransparent = function(color2) {
  1738. return (255 & color2) === 0;
  1739. };
  1740. asString = function(color2) {
  1741. var alpha = 255 & color2;
  1742. var blue = 255 & color2 >> 8;
  1743. var green = 255 & color2 >> 16;
  1744. var red = 255 & color2 >> 24;
  1745. return alpha < 255 ? "rgba(" + red + "," + green + "," + blue + "," + alpha / 255 + ")" : "rgb(" + red + "," + green + "," + blue + ")";
  1746. };
  1747. pack = function(r, g, b, a2) {
  1748. return (r << 24 | g << 16 | b << 8 | Math.round(a2 * 255) << 0) >>> 0;
  1749. };
  1750. getTokenColorValue = function(token, i) {
  1751. if (token.type === 17) {
  1752. return token.number;
  1753. }
  1754. if (token.type === 16) {
  1755. var max = i === 3 ? 1 : 255;
  1756. return i === 3 ? token.number / 100 * max : Math.round(token.number / 100 * max);
  1757. }
  1758. return 0;
  1759. };
  1760. rgb = function(_context, args) {
  1761. var tokens = args.filter(nonFunctionArgSeparator);
  1762. if (tokens.length === 3) {
  1763. var _a = tokens.map(getTokenColorValue), r = _a[0], g = _a[1], b = _a[2];
  1764. return pack(r, g, b, 1);
  1765. }
  1766. if (tokens.length === 4) {
  1767. var _b = tokens.map(getTokenColorValue), r = _b[0], g = _b[1], b = _b[2], a2 = _b[3];
  1768. return pack(r, g, b, a2);
  1769. }
  1770. return 0;
  1771. };
  1772. hsl = function(context, args) {
  1773. var tokens = args.filter(nonFunctionArgSeparator);
  1774. var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3];
  1775. var h = (hue.type === 17 ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);
  1776. var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;
  1777. var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;
  1778. var a2 = typeof alpha !== "undefined" && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;
  1779. if (s === 0) {
  1780. return pack(l * 255, l * 255, l * 255, 1);
  1781. }
  1782. var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;
  1783. var t1 = l * 2 - t2;
  1784. var r = hue2rgb(t1, t2, h + 1 / 3);
  1785. var g = hue2rgb(t1, t2, h);
  1786. var b = hue2rgb(t1, t2, h - 1 / 3);
  1787. return pack(r * 255, g * 255, b * 255, a2);
  1788. };
  1789. SUPPORTED_COLOR_FUNCTIONS = {
  1790. hsl,
  1791. hsla: hsl,
  1792. rgb,
  1793. rgba: rgb
  1794. };
  1795. parseColor = function(context, value) {
  1796. return color$1.parse(context, Parser.create(value).parseComponentValue());
  1797. };
  1798. COLORS = {
  1799. ALICEBLUE: 4042850303,
  1800. ANTIQUEWHITE: 4209760255,
  1801. AQUA: 16777215,
  1802. AQUAMARINE: 2147472639,
  1803. AZURE: 4043309055,
  1804. BEIGE: 4126530815,
  1805. BISQUE: 4293182719,
  1806. BLACK: 255,
  1807. BLANCHEDALMOND: 4293643775,
  1808. BLUE: 65535,
  1809. BLUEVIOLET: 2318131967,
  1810. BROWN: 2771004159,
  1811. BURLYWOOD: 3736635391,
  1812. CADETBLUE: 1604231423,
  1813. CHARTREUSE: 2147418367,
  1814. CHOCOLATE: 3530104575,
  1815. CORAL: 4286533887,
  1816. CORNFLOWERBLUE: 1687547391,
  1817. CORNSILK: 4294499583,
  1818. CRIMSON: 3692313855,
  1819. CYAN: 16777215,
  1820. DARKBLUE: 35839,
  1821. DARKCYAN: 9145343,
  1822. DARKGOLDENROD: 3095837695,
  1823. DARKGRAY: 2846468607,
  1824. DARKGREEN: 6553855,
  1825. DARKGREY: 2846468607,
  1826. DARKKHAKI: 3182914559,
  1827. DARKMAGENTA: 2332068863,
  1828. DARKOLIVEGREEN: 1433087999,
  1829. DARKORANGE: 4287365375,
  1830. DARKORCHID: 2570243327,
  1831. DARKRED: 2332033279,
  1832. DARKSALMON: 3918953215,
  1833. DARKSEAGREEN: 2411499519,
  1834. DARKSLATEBLUE: 1211993087,
  1835. DARKSLATEGRAY: 793726975,
  1836. DARKSLATEGREY: 793726975,
  1837. DARKTURQUOISE: 13554175,
  1838. DARKVIOLET: 2483082239,
  1839. DEEPPINK: 4279538687,
  1840. DEEPSKYBLUE: 12582911,
  1841. DIMGRAY: 1768516095,
  1842. DIMGREY: 1768516095,
  1843. DODGERBLUE: 512819199,
  1844. FIREBRICK: 2988581631,
  1845. FLORALWHITE: 4294635775,
  1846. FORESTGREEN: 579543807,
  1847. FUCHSIA: 4278255615,
  1848. GAINSBORO: 3705462015,
  1849. GHOSTWHITE: 4177068031,
  1850. GOLD: 4292280575,
  1851. GOLDENROD: 3668254975,
  1852. GRAY: 2155905279,
  1853. GREEN: 8388863,
  1854. GREENYELLOW: 2919182335,
  1855. GREY: 2155905279,
  1856. HONEYDEW: 4043305215,
  1857. HOTPINK: 4285117695,
  1858. INDIANRED: 3445382399,
  1859. INDIGO: 1258324735,
  1860. IVORY: 4294963455,
  1861. KHAKI: 4041641215,
  1862. LAVENDER: 3873897215,
  1863. LAVENDERBLUSH: 4293981695,
  1864. LAWNGREEN: 2096890111,
  1865. LEMONCHIFFON: 4294626815,
  1866. LIGHTBLUE: 2916673279,
  1867. LIGHTCORAL: 4034953471,
  1868. LIGHTCYAN: 3774873599,
  1869. LIGHTGOLDENRODYELLOW: 4210742015,
  1870. LIGHTGRAY: 3553874943,
  1871. LIGHTGREEN: 2431553791,
  1872. LIGHTGREY: 3553874943,
  1873. LIGHTPINK: 4290167295,
  1874. LIGHTSALMON: 4288707327,
  1875. LIGHTSEAGREEN: 548580095,
  1876. LIGHTSKYBLUE: 2278488831,
  1877. LIGHTSLATEGRAY: 2005441023,
  1878. LIGHTSLATEGREY: 2005441023,
  1879. LIGHTSTEELBLUE: 2965692159,
  1880. LIGHTYELLOW: 4294959359,
  1881. LIME: 16711935,
  1882. LIMEGREEN: 852308735,
  1883. LINEN: 4210091775,
  1884. MAGENTA: 4278255615,
  1885. MAROON: 2147483903,
  1886. MEDIUMAQUAMARINE: 1724754687,
  1887. MEDIUMBLUE: 52735,
  1888. MEDIUMORCHID: 3126187007,
  1889. MEDIUMPURPLE: 2473647103,
  1890. MEDIUMSEAGREEN: 1018393087,
  1891. MEDIUMSLATEBLUE: 2070474495,
  1892. MEDIUMSPRINGGREEN: 16423679,
  1893. MEDIUMTURQUOISE: 1221709055,
  1894. MEDIUMVIOLETRED: 3340076543,
  1895. MIDNIGHTBLUE: 421097727,
  1896. MINTCREAM: 4127193855,
  1897. MISTYROSE: 4293190143,
  1898. MOCCASIN: 4293178879,
  1899. NAVAJOWHITE: 4292783615,
  1900. NAVY: 33023,
  1901. OLDLACE: 4260751103,
  1902. OLIVE: 2155872511,
  1903. OLIVEDRAB: 1804477439,
  1904. ORANGE: 4289003775,
  1905. ORANGERED: 4282712319,
  1906. ORCHID: 3664828159,
  1907. PALEGOLDENROD: 4008225535,
  1908. PALEGREEN: 2566625535,
  1909. PALETURQUOISE: 2951671551,
  1910. PALEVIOLETRED: 3681588223,
  1911. PAPAYAWHIP: 4293907967,
  1912. PEACHPUFF: 4292524543,
  1913. PERU: 3448061951,
  1914. PINK: 4290825215,
  1915. PLUM: 3718307327,
  1916. POWDERBLUE: 2967529215,
  1917. PURPLE: 2147516671,
  1918. REBECCAPURPLE: 1714657791,
  1919. RED: 4278190335,
  1920. ROSYBROWN: 3163525119,
  1921. ROYALBLUE: 1097458175,
  1922. SADDLEBROWN: 2336560127,
  1923. SALMON: 4202722047,
  1924. SANDYBROWN: 4104413439,
  1925. SEAGREEN: 780883967,
  1926. SEASHELL: 4294307583,
  1927. SIENNA: 2689740287,
  1928. SILVER: 3233857791,
  1929. SKYBLUE: 2278484991,
  1930. SLATEBLUE: 1784335871,
  1931. SLATEGRAY: 1887473919,
  1932. SLATEGREY: 1887473919,
  1933. SNOW: 4294638335,
  1934. SPRINGGREEN: 16744447,
  1935. STEELBLUE: 1182971135,
  1936. TAN: 3535047935,
  1937. TEAL: 8421631,
  1938. THISTLE: 3636451583,
  1939. TOMATO: 4284696575,
  1940. TRANSPARENT: 0,
  1941. TURQUOISE: 1088475391,
  1942. VIOLET: 4001558271,
  1943. WHEAT: 4125012991,
  1944. WHITE: 4294967295,
  1945. WHITESMOKE: 4126537215,
  1946. YELLOW: 4294902015,
  1947. YELLOWGREEN: 2597139199
  1948. };
  1949. backgroundClip = {
  1950. name: "background-clip",
  1951. initialValue: "border-box",
  1952. prefix: false,
  1953. type: 1,
  1954. parse: function(_context, tokens) {
  1955. return tokens.map(function(token) {
  1956. if (isIdentToken(token)) {
  1957. switch (token.value) {
  1958. case "padding-box":
  1959. return 1;
  1960. case "content-box":
  1961. return 2;
  1962. }
  1963. }
  1964. return 0;
  1965. });
  1966. }
  1967. };
  1968. backgroundColor = {
  1969. name: "background-color",
  1970. initialValue: "transparent",
  1971. prefix: false,
  1972. type: 3,
  1973. format: "color"
  1974. };
  1975. parseColorStop = function(context, args) {
  1976. var color2 = color$1.parse(context, args[0]);
  1977. var stop = args[1];
  1978. return stop && isLengthPercentage(stop) ? { color: color2, stop } : { color: color2, stop: null };
  1979. };
  1980. processColorStops = function(stops, lineLength) {
  1981. var first = stops[0];
  1982. var last = stops[stops.length - 1];
  1983. if (first.stop === null) {
  1984. first.stop = ZERO_LENGTH;
  1985. }
  1986. if (last.stop === null) {
  1987. last.stop = HUNDRED_PERCENT;
  1988. }
  1989. var processStops = [];
  1990. var previous = 0;
  1991. for (var i = 0; i < stops.length; i++) {
  1992. var stop_1 = stops[i].stop;
  1993. if (stop_1 !== null) {
  1994. var absoluteValue = getAbsoluteValue(stop_1, lineLength);
  1995. if (absoluteValue > previous) {
  1996. processStops.push(absoluteValue);
  1997. } else {
  1998. processStops.push(previous);
  1999. }
  2000. previous = absoluteValue;
  2001. } else {
  2002. processStops.push(null);
  2003. }
  2004. }
  2005. var gapBegin = null;
  2006. for (var i = 0; i < processStops.length; i++) {
  2007. var stop_2 = processStops[i];
  2008. if (stop_2 === null) {
  2009. if (gapBegin === null) {
  2010. gapBegin = i;
  2011. }
  2012. } else if (gapBegin !== null) {
  2013. var gapLength = i - gapBegin;
  2014. var beforeGap = processStops[gapBegin - 1];
  2015. var gapValue = (stop_2 - beforeGap) / (gapLength + 1);
  2016. for (var g = 1; g <= gapLength; g++) {
  2017. processStops[gapBegin + g - 1] = gapValue * g;
  2018. }
  2019. gapBegin = null;
  2020. }
  2021. }
  2022. return stops.map(function(_a, i2) {
  2023. var color2 = _a.color;
  2024. return { color: color2, stop: Math.max(Math.min(1, processStops[i2] / lineLength), 0) };
  2025. });
  2026. };
  2027. getAngleFromCorner = function(corner, width, height) {
  2028. var centerX = width / 2;
  2029. var centerY = height / 2;
  2030. var x = getAbsoluteValue(corner[0], width) - centerX;
  2031. var y = centerY - getAbsoluteValue(corner[1], height);
  2032. return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);
  2033. };
  2034. calculateGradientDirection = function(angle2, width, height) {
  2035. var radian = typeof angle2 === "number" ? angle2 : getAngleFromCorner(angle2, width, height);
  2036. var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));
  2037. var halfWidth = width / 2;
  2038. var halfHeight = height / 2;
  2039. var halfLineLength = lineLength / 2;
  2040. var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;
  2041. var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;
  2042. return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];
  2043. };
  2044. distance = function(a2, b) {
  2045. return Math.sqrt(a2 * a2 + b * b);
  2046. };
  2047. findCorner = function(width, height, x, y, closest) {
  2048. var corners = [
  2049. [0, 0],
  2050. [0, height],
  2051. [width, 0],
  2052. [width, height]
  2053. ];
  2054. return corners.reduce(function(stat, corner) {
  2055. var cx = corner[0], cy = corner[1];
  2056. var d = distance(x - cx, y - cy);
  2057. if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {
  2058. return {
  2059. optimumCorner: corner,
  2060. optimumDistance: d
  2061. };
  2062. }
  2063. return stat;
  2064. }, {
  2065. optimumDistance: closest ? Infinity : -Infinity,
  2066. optimumCorner: null
  2067. }).optimumCorner;
  2068. };
  2069. calculateRadius = function(gradient, x, y, width, height) {
  2070. var rx = 0;
  2071. var ry = 0;
  2072. switch (gradient.size) {
  2073. case 0:
  2074. if (gradient.shape === 0) {
  2075. rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));
  2076. } else if (gradient.shape === 1) {
  2077. rx = Math.min(Math.abs(x), Math.abs(x - width));
  2078. ry = Math.min(Math.abs(y), Math.abs(y - height));
  2079. }
  2080. break;
  2081. case 2:
  2082. if (gradient.shape === 0) {
  2083. rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));
  2084. } else if (gradient.shape === 1) {
  2085. var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));
  2086. var _a = findCorner(width, height, x, y, true), cx = _a[0], cy = _a[1];
  2087. rx = distance(cx - x, (cy - y) / c);
  2088. ry = c * rx;
  2089. }
  2090. break;
  2091. case 1:
  2092. if (gradient.shape === 0) {
  2093. rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));
  2094. } else if (gradient.shape === 1) {
  2095. rx = Math.max(Math.abs(x), Math.abs(x - width));
  2096. ry = Math.max(Math.abs(y), Math.abs(y - height));
  2097. }
  2098. break;
  2099. case 3:
  2100. if (gradient.shape === 0) {
  2101. rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));
  2102. } else if (gradient.shape === 1) {
  2103. var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));
  2104. var _b = findCorner(width, height, x, y, false), cx = _b[0], cy = _b[1];
  2105. rx = distance(cx - x, (cy - y) / c);
  2106. ry = c * rx;
  2107. }
  2108. break;
  2109. }
  2110. if (Array.isArray(gradient.size)) {
  2111. rx = getAbsoluteValue(gradient.size[0], width);
  2112. ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;
  2113. }
  2114. return [rx, ry];
  2115. };
  2116. linearGradient = function(context, tokens) {
  2117. var angle$1 = deg(180);
  2118. var stops = [];
  2119. parseFunctionArgs(tokens).forEach(function(arg, i) {
  2120. if (i === 0) {
  2121. var firstToken = arg[0];
  2122. if (firstToken.type === 20 && firstToken.value === "to") {
  2123. angle$1 = parseNamedSide(arg);
  2124. return;
  2125. } else if (isAngle(firstToken)) {
  2126. angle$1 = angle.parse(context, firstToken);
  2127. return;
  2128. }
  2129. }
  2130. var colorStop = parseColorStop(context, arg);
  2131. stops.push(colorStop);
  2132. });
  2133. return {
  2134. angle: angle$1,
  2135. stops,
  2136. type: 1
  2137. /* LINEAR_GRADIENT */
  2138. };
  2139. };
  2140. prefixLinearGradient = function(context, tokens) {
  2141. var angle$1 = deg(180);
  2142. var stops = [];
  2143. parseFunctionArgs(tokens).forEach(function(arg, i) {
  2144. if (i === 0) {
  2145. var firstToken = arg[0];
  2146. if (firstToken.type === 20 && ["top", "left", "right", "bottom"].indexOf(firstToken.value) !== -1) {
  2147. angle$1 = parseNamedSide(arg);
  2148. return;
  2149. } else if (isAngle(firstToken)) {
  2150. angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);
  2151. return;
  2152. }
  2153. }
  2154. var colorStop = parseColorStop(context, arg);
  2155. stops.push(colorStop);
  2156. });
  2157. return {
  2158. angle: angle$1,
  2159. stops,
  2160. type: 1
  2161. /* LINEAR_GRADIENT */
  2162. };
  2163. };
  2164. webkitGradient = function(context, tokens) {
  2165. var angle2 = deg(180);
  2166. var stops = [];
  2167. var type = 1;
  2168. var shape = 0;
  2169. var size = 3;
  2170. var position2 = [];
  2171. parseFunctionArgs(tokens).forEach(function(arg, i) {
  2172. var firstToken = arg[0];
  2173. if (i === 0) {
  2174. if (isIdentToken(firstToken) && firstToken.value === "linear") {
  2175. type = 1;
  2176. return;
  2177. } else if (isIdentToken(firstToken) && firstToken.value === "radial") {
  2178. type = 2;
  2179. return;
  2180. }
  2181. }
  2182. if (firstToken.type === 18) {
  2183. if (firstToken.name === "from") {
  2184. var color2 = color$1.parse(context, firstToken.values[0]);
  2185. stops.push({ stop: ZERO_LENGTH, color: color2 });
  2186. } else if (firstToken.name === "to") {
  2187. var color2 = color$1.parse(context, firstToken.values[0]);
  2188. stops.push({ stop: HUNDRED_PERCENT, color: color2 });
  2189. } else if (firstToken.name === "color-stop") {
  2190. var values = firstToken.values.filter(nonFunctionArgSeparator);
  2191. if (values.length === 2) {
  2192. var color2 = color$1.parse(context, values[1]);
  2193. var stop_1 = values[0];
  2194. if (isNumberToken(stop_1)) {
  2195. stops.push({
  2196. stop: { type: 16, number: stop_1.number * 100, flags: stop_1.flags },
  2197. color: color2
  2198. });
  2199. }
  2200. }
  2201. }
  2202. }
  2203. });
  2204. return type === 1 ? {
  2205. angle: (angle2 + deg(180)) % deg(360),
  2206. stops,
  2207. type
  2208. } : { size, shape, stops, position: position2, type };
  2209. };
  2210. CLOSEST_SIDE = "closest-side";
  2211. FARTHEST_SIDE = "farthest-side";
  2212. CLOSEST_CORNER = "closest-corner";
  2213. FARTHEST_CORNER = "farthest-corner";
  2214. CIRCLE = "circle";
  2215. ELLIPSE = "ellipse";
  2216. COVER = "cover";
  2217. CONTAIN = "contain";
  2218. radialGradient = function(context, tokens) {
  2219. var shape = 0;
  2220. var size = 3;
  2221. var stops = [];
  2222. var position2 = [];
  2223. parseFunctionArgs(tokens).forEach(function(arg, i) {
  2224. var isColorStop = true;
  2225. if (i === 0) {
  2226. var isAtPosition_1 = false;
  2227. isColorStop = arg.reduce(function(acc, token) {
  2228. if (isAtPosition_1) {
  2229. if (isIdentToken(token)) {
  2230. switch (token.value) {
  2231. case "center":
  2232. position2.push(FIFTY_PERCENT);
  2233. return acc;
  2234. case "top":
  2235. case "left":
  2236. position2.push(ZERO_LENGTH);
  2237. return acc;
  2238. case "right":
  2239. case "bottom":
  2240. position2.push(HUNDRED_PERCENT);
  2241. return acc;
  2242. }
  2243. } else if (isLengthPercentage(token) || isLength(token)) {
  2244. position2.push(token);
  2245. }
  2246. } else if (isIdentToken(token)) {
  2247. switch (token.value) {
  2248. case CIRCLE:
  2249. shape = 0;
  2250. return false;
  2251. case ELLIPSE:
  2252. shape = 1;
  2253. return false;
  2254. case "at":
  2255. isAtPosition_1 = true;
  2256. return false;
  2257. case CLOSEST_SIDE:
  2258. size = 0;
  2259. return false;
  2260. case COVER:
  2261. case FARTHEST_SIDE:
  2262. size = 1;
  2263. return false;
  2264. case CONTAIN:
  2265. case CLOSEST_CORNER:
  2266. size = 2;
  2267. return false;
  2268. case FARTHEST_CORNER:
  2269. size = 3;
  2270. return false;
  2271. }
  2272. } else if (isLength(token) || isLengthPercentage(token)) {
  2273. if (!Array.isArray(size)) {
  2274. size = [];
  2275. }
  2276. size.push(token);
  2277. return false;
  2278. }
  2279. return acc;
  2280. }, isColorStop);
  2281. }
  2282. if (isColorStop) {
  2283. var colorStop = parseColorStop(context, arg);
  2284. stops.push(colorStop);
  2285. }
  2286. });
  2287. return {
  2288. size,
  2289. shape,
  2290. stops,
  2291. position: position2,
  2292. type: 2
  2293. /* RADIAL_GRADIENT */
  2294. };
  2295. };
  2296. prefixRadialGradient = function(context, tokens) {
  2297. var shape = 0;
  2298. var size = 3;
  2299. var stops = [];
  2300. var position2 = [];
  2301. parseFunctionArgs(tokens).forEach(function(arg, i) {
  2302. var isColorStop = true;
  2303. if (i === 0) {
  2304. isColorStop = arg.reduce(function(acc, token) {
  2305. if (isIdentToken(token)) {
  2306. switch (token.value) {
  2307. case "center":
  2308. position2.push(FIFTY_PERCENT);
  2309. return false;
  2310. case "top":
  2311. case "left":
  2312. position2.push(ZERO_LENGTH);
  2313. return false;
  2314. case "right":
  2315. case "bottom":
  2316. position2.push(HUNDRED_PERCENT);
  2317. return false;
  2318. }
  2319. } else if (isLengthPercentage(token) || isLength(token)) {
  2320. position2.push(token);
  2321. return false;
  2322. }
  2323. return acc;
  2324. }, isColorStop);
  2325. } else if (i === 1) {
  2326. isColorStop = arg.reduce(function(acc, token) {
  2327. if (isIdentToken(token)) {
  2328. switch (token.value) {
  2329. case CIRCLE:
  2330. shape = 0;
  2331. return false;
  2332. case ELLIPSE:
  2333. shape = 1;
  2334. return false;
  2335. case CONTAIN:
  2336. case CLOSEST_SIDE:
  2337. size = 0;
  2338. return false;
  2339. case FARTHEST_SIDE:
  2340. size = 1;
  2341. return false;
  2342. case CLOSEST_CORNER:
  2343. size = 2;
  2344. return false;
  2345. case COVER:
  2346. case FARTHEST_CORNER:
  2347. size = 3;
  2348. return false;
  2349. }
  2350. } else if (isLength(token) || isLengthPercentage(token)) {
  2351. if (!Array.isArray(size)) {
  2352. size = [];
  2353. }
  2354. size.push(token);
  2355. return false;
  2356. }
  2357. return acc;
  2358. }, isColorStop);
  2359. }
  2360. if (isColorStop) {
  2361. var colorStop = parseColorStop(context, arg);
  2362. stops.push(colorStop);
  2363. }
  2364. });
  2365. return {
  2366. size,
  2367. shape,
  2368. stops,
  2369. position: position2,
  2370. type: 2
  2371. /* RADIAL_GRADIENT */
  2372. };
  2373. };
  2374. isLinearGradient = function(background) {
  2375. return background.type === 1;
  2376. };
  2377. isRadialGradient = function(background) {
  2378. return background.type === 2;
  2379. };
  2380. image = {
  2381. name: "image",
  2382. parse: function(context, value) {
  2383. if (value.type === 22) {
  2384. var image_1 = {
  2385. url: value.value,
  2386. type: 0
  2387. /* URL */
  2388. };
  2389. context.cache.addImage(value.value);
  2390. return image_1;
  2391. }
  2392. if (value.type === 18) {
  2393. var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];
  2394. if (typeof imageFunction === "undefined") {
  2395. throw new Error('Attempting to parse an unsupported image function "' + value.name + '"');
  2396. }
  2397. return imageFunction(context, value.values);
  2398. }
  2399. throw new Error("Unsupported image type " + value.type);
  2400. }
  2401. };
  2402. SUPPORTED_IMAGE_FUNCTIONS = {
  2403. "linear-gradient": linearGradient,
  2404. "-moz-linear-gradient": prefixLinearGradient,
  2405. "-ms-linear-gradient": prefixLinearGradient,
  2406. "-o-linear-gradient": prefixLinearGradient,
  2407. "-webkit-linear-gradient": prefixLinearGradient,
  2408. "radial-gradient": radialGradient,
  2409. "-moz-radial-gradient": prefixRadialGradient,
  2410. "-ms-radial-gradient": prefixRadialGradient,
  2411. "-o-radial-gradient": prefixRadialGradient,
  2412. "-webkit-radial-gradient": prefixRadialGradient,
  2413. "-webkit-gradient": webkitGradient
  2414. };
  2415. backgroundImage = {
  2416. name: "background-image",
  2417. initialValue: "none",
  2418. type: 1,
  2419. prefix: false,
  2420. parse: function(context, tokens) {
  2421. if (tokens.length === 0) {
  2422. return [];
  2423. }
  2424. var first = tokens[0];
  2425. if (first.type === 20 && first.value === "none") {
  2426. return [];
  2427. }
  2428. return tokens.filter(function(value) {
  2429. return nonFunctionArgSeparator(value) && isSupportedImage(value);
  2430. }).map(function(value) {
  2431. return image.parse(context, value);
  2432. });
  2433. }
  2434. };
  2435. backgroundOrigin = {
  2436. name: "background-origin",
  2437. initialValue: "border-box",
  2438. prefix: false,
  2439. type: 1,
  2440. parse: function(_context, tokens) {
  2441. return tokens.map(function(token) {
  2442. if (isIdentToken(token)) {
  2443. switch (token.value) {
  2444. case "padding-box":
  2445. return 1;
  2446. case "content-box":
  2447. return 2;
  2448. }
  2449. }
  2450. return 0;
  2451. });
  2452. }
  2453. };
  2454. backgroundPosition = {
  2455. name: "background-position",
  2456. initialValue: "0% 0%",
  2457. type: 1,
  2458. prefix: false,
  2459. parse: function(_context, tokens) {
  2460. return parseFunctionArgs(tokens).map(function(values) {
  2461. return values.filter(isLengthPercentage);
  2462. }).map(parseLengthPercentageTuple);
  2463. }
  2464. };
  2465. backgroundRepeat = {
  2466. name: "background-repeat",
  2467. initialValue: "repeat",
  2468. prefix: false,
  2469. type: 1,
  2470. parse: function(_context, tokens) {
  2471. return parseFunctionArgs(tokens).map(function(values) {
  2472. return values.filter(isIdentToken).map(function(token) {
  2473. return token.value;
  2474. }).join(" ");
  2475. }).map(parseBackgroundRepeat);
  2476. }
  2477. };
  2478. parseBackgroundRepeat = function(value) {
  2479. switch (value) {
  2480. case "no-repeat":
  2481. return 1;
  2482. case "repeat-x":
  2483. case "repeat no-repeat":
  2484. return 2;
  2485. case "repeat-y":
  2486. case "no-repeat repeat":
  2487. return 3;
  2488. case "repeat":
  2489. default:
  2490. return 0;
  2491. }
  2492. };
  2493. (function(BACKGROUND_SIZE2) {
  2494. BACKGROUND_SIZE2["AUTO"] = "auto";
  2495. BACKGROUND_SIZE2["CONTAIN"] = "contain";
  2496. BACKGROUND_SIZE2["COVER"] = "cover";
  2497. })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));
  2498. backgroundSize = {
  2499. name: "background-size",
  2500. initialValue: "0",
  2501. prefix: false,
  2502. type: 1,
  2503. parse: function(_context, tokens) {
  2504. return parseFunctionArgs(tokens).map(function(values) {
  2505. return values.filter(isBackgroundSizeInfoToken);
  2506. });
  2507. }
  2508. };
  2509. isBackgroundSizeInfoToken = function(value) {
  2510. return isIdentToken(value) || isLengthPercentage(value);
  2511. };
  2512. borderColorForSide = function(side) {
  2513. return {
  2514. name: "border-" + side + "-color",
  2515. initialValue: "transparent",
  2516. prefix: false,
  2517. type: 3,
  2518. format: "color"
  2519. };
  2520. };
  2521. borderTopColor = borderColorForSide("top");
  2522. borderRightColor = borderColorForSide("right");
  2523. borderBottomColor = borderColorForSide("bottom");
  2524. borderLeftColor = borderColorForSide("left");
  2525. borderRadiusForSide = function(side) {
  2526. return {
  2527. name: "border-radius-" + side,
  2528. initialValue: "0 0",
  2529. prefix: false,
  2530. type: 1,
  2531. parse: function(_context, tokens) {
  2532. return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));
  2533. }
  2534. };
  2535. };
  2536. borderTopLeftRadius = borderRadiusForSide("top-left");
  2537. borderTopRightRadius = borderRadiusForSide("top-right");
  2538. borderBottomRightRadius = borderRadiusForSide("bottom-right");
  2539. borderBottomLeftRadius = borderRadiusForSide("bottom-left");
  2540. borderStyleForSide = function(side) {
  2541. return {
  2542. name: "border-" + side + "-style",
  2543. initialValue: "solid",
  2544. prefix: false,
  2545. type: 2,
  2546. parse: function(_context, style) {
  2547. switch (style) {
  2548. case "none":
  2549. return 0;
  2550. case "dashed":
  2551. return 2;
  2552. case "dotted":
  2553. return 3;
  2554. case "double":
  2555. return 4;
  2556. }
  2557. return 1;
  2558. }
  2559. };
  2560. };
  2561. borderTopStyle = borderStyleForSide("top");
  2562. borderRightStyle = borderStyleForSide("right");
  2563. borderBottomStyle = borderStyleForSide("bottom");
  2564. borderLeftStyle = borderStyleForSide("left");
  2565. borderWidthForSide = function(side) {
  2566. return {
  2567. name: "border-" + side + "-width",
  2568. initialValue: "0",
  2569. type: 0,
  2570. prefix: false,
  2571. parse: function(_context, token) {
  2572. if (isDimensionToken(token)) {
  2573. return token.number;
  2574. }
  2575. return 0;
  2576. }
  2577. };
  2578. };
  2579. borderTopWidth = borderWidthForSide("top");
  2580. borderRightWidth = borderWidthForSide("right");
  2581. borderBottomWidth = borderWidthForSide("bottom");
  2582. borderLeftWidth = borderWidthForSide("left");
  2583. color = {
  2584. name: "color",
  2585. initialValue: "transparent",
  2586. prefix: false,
  2587. type: 3,
  2588. format: "color"
  2589. };
  2590. direction = {
  2591. name: "direction",
  2592. initialValue: "ltr",
  2593. prefix: false,
  2594. type: 2,
  2595. parse: function(_context, direction2) {
  2596. switch (direction2) {
  2597. case "rtl":
  2598. return 1;
  2599. case "ltr":
  2600. default:
  2601. return 0;
  2602. }
  2603. }
  2604. };
  2605. display = {
  2606. name: "display",
  2607. initialValue: "inline-block",
  2608. prefix: false,
  2609. type: 1,
  2610. parse: function(_context, tokens) {
  2611. return tokens.filter(isIdentToken).reduce(
  2612. function(bit, token) {
  2613. return bit | parseDisplayValue(token.value);
  2614. },
  2615. 0
  2616. /* NONE */
  2617. );
  2618. }
  2619. };
  2620. parseDisplayValue = function(display2) {
  2621. switch (display2) {
  2622. case "block":
  2623. case "-webkit-box":
  2624. return 2;
  2625. case "inline":
  2626. return 4;
  2627. case "run-in":
  2628. return 8;
  2629. case "flow":
  2630. return 16;
  2631. case "flow-root":
  2632. return 32;
  2633. case "table":
  2634. return 64;
  2635. case "flex":
  2636. case "-webkit-flex":
  2637. return 128;
  2638. case "grid":
  2639. case "-ms-grid":
  2640. return 256;
  2641. case "ruby":
  2642. return 512;
  2643. case "subgrid":
  2644. return 1024;
  2645. case "list-item":
  2646. return 2048;
  2647. case "table-row-group":
  2648. return 4096;
  2649. case "table-header-group":
  2650. return 8192;
  2651. case "table-footer-group":
  2652. return 16384;
  2653. case "table-row":
  2654. return 32768;
  2655. case "table-cell":
  2656. return 65536;
  2657. case "table-column-group":
  2658. return 131072;
  2659. case "table-column":
  2660. return 262144;
  2661. case "table-caption":
  2662. return 524288;
  2663. case "ruby-base":
  2664. return 1048576;
  2665. case "ruby-text":
  2666. return 2097152;
  2667. case "ruby-base-container":
  2668. return 4194304;
  2669. case "ruby-text-container":
  2670. return 8388608;
  2671. case "contents":
  2672. return 16777216;
  2673. case "inline-block":
  2674. return 33554432;
  2675. case "inline-list-item":
  2676. return 67108864;
  2677. case "inline-table":
  2678. return 134217728;
  2679. case "inline-flex":
  2680. return 268435456;
  2681. case "inline-grid":
  2682. return 536870912;
  2683. }
  2684. return 0;
  2685. };
  2686. float = {
  2687. name: "float",
  2688. initialValue: "none",
  2689. prefix: false,
  2690. type: 2,
  2691. parse: function(_context, float2) {
  2692. switch (float2) {
  2693. case "left":
  2694. return 1;
  2695. case "right":
  2696. return 2;
  2697. case "inline-start":
  2698. return 3;
  2699. case "inline-end":
  2700. return 4;
  2701. }
  2702. return 0;
  2703. }
  2704. };
  2705. letterSpacing = {
  2706. name: "letter-spacing",
  2707. initialValue: "0",
  2708. prefix: false,
  2709. type: 0,
  2710. parse: function(_context, token) {
  2711. if (token.type === 20 && token.value === "normal") {
  2712. return 0;
  2713. }
  2714. if (token.type === 17) {
  2715. return token.number;
  2716. }
  2717. if (token.type === 15) {
  2718. return token.number;
  2719. }
  2720. return 0;
  2721. }
  2722. };
  2723. (function(LINE_BREAK2) {
  2724. LINE_BREAK2["NORMAL"] = "normal";
  2725. LINE_BREAK2["STRICT"] = "strict";
  2726. })(LINE_BREAK || (LINE_BREAK = {}));
  2727. lineBreak = {
  2728. name: "line-break",
  2729. initialValue: "normal",
  2730. prefix: false,
  2731. type: 2,
  2732. parse: function(_context, lineBreak2) {
  2733. switch (lineBreak2) {
  2734. case "strict":
  2735. return LINE_BREAK.STRICT;
  2736. case "normal":
  2737. default:
  2738. return LINE_BREAK.NORMAL;
  2739. }
  2740. }
  2741. };
  2742. lineHeight = {
  2743. name: "line-height",
  2744. initialValue: "normal",
  2745. prefix: false,
  2746. type: 4
  2747. /* TOKEN_VALUE */
  2748. };
  2749. computeLineHeight = function(token, fontSize2) {
  2750. if (isIdentToken(token) && token.value === "normal") {
  2751. return 1.2 * fontSize2;
  2752. } else if (token.type === 17) {
  2753. return fontSize2 * token.number;
  2754. } else if (isLengthPercentage(token)) {
  2755. return getAbsoluteValue(token, fontSize2);
  2756. }
  2757. return fontSize2;
  2758. };
  2759. listStyleImage = {
  2760. name: "list-style-image",
  2761. initialValue: "none",
  2762. type: 0,
  2763. prefix: false,
  2764. parse: function(context, token) {
  2765. if (token.type === 20 && token.value === "none") {
  2766. return null;
  2767. }
  2768. return image.parse(context, token);
  2769. }
  2770. };
  2771. listStylePosition = {
  2772. name: "list-style-position",
  2773. initialValue: "outside",
  2774. prefix: false,
  2775. type: 2,
  2776. parse: function(_context, position2) {
  2777. switch (position2) {
  2778. case "inside":
  2779. return 0;
  2780. case "outside":
  2781. default:
  2782. return 1;
  2783. }
  2784. }
  2785. };
  2786. listStyleType = {
  2787. name: "list-style-type",
  2788. initialValue: "none",
  2789. prefix: false,
  2790. type: 2,
  2791. parse: function(_context, type) {
  2792. switch (type) {
  2793. case "disc":
  2794. return 0;
  2795. case "circle":
  2796. return 1;
  2797. case "square":
  2798. return 2;
  2799. case "decimal":
  2800. return 3;
  2801. case "cjk-decimal":
  2802. return 4;
  2803. case "decimal-leading-zero":
  2804. return 5;
  2805. case "lower-roman":
  2806. return 6;
  2807. case "upper-roman":
  2808. return 7;
  2809. case "lower-greek":
  2810. return 8;
  2811. case "lower-alpha":
  2812. return 9;
  2813. case "upper-alpha":
  2814. return 10;
  2815. case "arabic-indic":
  2816. return 11;
  2817. case "armenian":
  2818. return 12;
  2819. case "bengali":
  2820. return 13;
  2821. case "cambodian":
  2822. return 14;
  2823. case "cjk-earthly-branch":
  2824. return 15;
  2825. case "cjk-heavenly-stem":
  2826. return 16;
  2827. case "cjk-ideographic":
  2828. return 17;
  2829. case "devanagari":
  2830. return 18;
  2831. case "ethiopic-numeric":
  2832. return 19;
  2833. case "georgian":
  2834. return 20;
  2835. case "gujarati":
  2836. return 21;
  2837. case "gurmukhi":
  2838. return 22;
  2839. case "hebrew":
  2840. return 22;
  2841. case "hiragana":
  2842. return 23;
  2843. case "hiragana-iroha":
  2844. return 24;
  2845. case "japanese-formal":
  2846. return 25;
  2847. case "japanese-informal":
  2848. return 26;
  2849. case "kannada":
  2850. return 27;
  2851. case "katakana":
  2852. return 28;
  2853. case "katakana-iroha":
  2854. return 29;
  2855. case "khmer":
  2856. return 30;
  2857. case "korean-hangul-formal":
  2858. return 31;
  2859. case "korean-hanja-formal":
  2860. return 32;
  2861. case "korean-hanja-informal":
  2862. return 33;
  2863. case "lao":
  2864. return 34;
  2865. case "lower-armenian":
  2866. return 35;
  2867. case "malayalam":
  2868. return 36;
  2869. case "mongolian":
  2870. return 37;
  2871. case "myanmar":
  2872. return 38;
  2873. case "oriya":
  2874. return 39;
  2875. case "persian":
  2876. return 40;
  2877. case "simp-chinese-formal":
  2878. return 41;
  2879. case "simp-chinese-informal":
  2880. return 42;
  2881. case "tamil":
  2882. return 43;
  2883. case "telugu":
  2884. return 44;
  2885. case "thai":
  2886. return 45;
  2887. case "tibetan":
  2888. return 46;
  2889. case "trad-chinese-formal":
  2890. return 47;
  2891. case "trad-chinese-informal":
  2892. return 48;
  2893. case "upper-armenian":
  2894. return 49;
  2895. case "disclosure-open":
  2896. return 50;
  2897. case "disclosure-closed":
  2898. return 51;
  2899. case "none":
  2900. default:
  2901. return -1;
  2902. }
  2903. }
  2904. };
  2905. marginForSide = function(side) {
  2906. return {
  2907. name: "margin-" + side,
  2908. initialValue: "0",
  2909. prefix: false,
  2910. type: 4
  2911. /* TOKEN_VALUE */
  2912. };
  2913. };
  2914. marginTop = marginForSide("top");
  2915. marginRight = marginForSide("right");
  2916. marginBottom = marginForSide("bottom");
  2917. marginLeft = marginForSide("left");
  2918. overflow = {
  2919. name: "overflow",
  2920. initialValue: "visible",
  2921. prefix: false,
  2922. type: 1,
  2923. parse: function(_context, tokens) {
  2924. return tokens.filter(isIdentToken).map(function(overflow2) {
  2925. switch (overflow2.value) {
  2926. case "hidden":
  2927. return 1;
  2928. case "scroll":
  2929. return 2;
  2930. case "clip":
  2931. return 3;
  2932. case "auto":
  2933. return 4;
  2934. case "visible":
  2935. default:
  2936. return 0;
  2937. }
  2938. });
  2939. }
  2940. };
  2941. overflowWrap = {
  2942. name: "overflow-wrap",
  2943. initialValue: "normal",
  2944. prefix: false,
  2945. type: 2,
  2946. parse: function(_context, overflow2) {
  2947. switch (overflow2) {
  2948. case "break-word":
  2949. return "break-word";
  2950. case "normal":
  2951. default:
  2952. return "normal";
  2953. }
  2954. }
  2955. };
  2956. paddingForSide = function(side) {
  2957. return {
  2958. name: "padding-" + side,
  2959. initialValue: "0",
  2960. prefix: false,
  2961. type: 3,
  2962. format: "length-percentage"
  2963. };
  2964. };
  2965. paddingTop = paddingForSide("top");
  2966. paddingRight = paddingForSide("right");
  2967. paddingBottom = paddingForSide("bottom");
  2968. paddingLeft = paddingForSide("left");
  2969. textAlign = {
  2970. name: "text-align",
  2971. initialValue: "left",
  2972. prefix: false,
  2973. type: 2,
  2974. parse: function(_context, textAlign2) {
  2975. switch (textAlign2) {
  2976. case "right":
  2977. return 2;
  2978. case "center":
  2979. case "justify":
  2980. return 1;
  2981. case "left":
  2982. default:
  2983. return 0;
  2984. }
  2985. }
  2986. };
  2987. position = {
  2988. name: "position",
  2989. initialValue: "static",
  2990. prefix: false,
  2991. type: 2,
  2992. parse: function(_context, position2) {
  2993. switch (position2) {
  2994. case "relative":
  2995. return 1;
  2996. case "absolute":
  2997. return 2;
  2998. case "fixed":
  2999. return 3;
  3000. case "sticky":
  3001. return 4;
  3002. }
  3003. return 0;
  3004. }
  3005. };
  3006. textShadow = {
  3007. name: "text-shadow",
  3008. initialValue: "none",
  3009. type: 1,
  3010. prefix: false,
  3011. parse: function(context, tokens) {
  3012. if (tokens.length === 1 && isIdentWithValue(tokens[0], "none")) {
  3013. return [];
  3014. }
  3015. return parseFunctionArgs(tokens).map(function(values) {
  3016. var shadow = {
  3017. color: COLORS.TRANSPARENT,
  3018. offsetX: ZERO_LENGTH,
  3019. offsetY: ZERO_LENGTH,
  3020. blur: ZERO_LENGTH
  3021. };
  3022. var c = 0;
  3023. for (var i = 0; i < values.length; i++) {
  3024. var token = values[i];
  3025. if (isLength(token)) {
  3026. if (c === 0) {
  3027. shadow.offsetX = token;
  3028. } else if (c === 1) {
  3029. shadow.offsetY = token;
  3030. } else {
  3031. shadow.blur = token;
  3032. }
  3033. c++;
  3034. } else {
  3035. shadow.color = color$1.parse(context, token);
  3036. }
  3037. }
  3038. return shadow;
  3039. });
  3040. }
  3041. };
  3042. textTransform = {
  3043. name: "text-transform",
  3044. initialValue: "none",
  3045. prefix: false,
  3046. type: 2,
  3047. parse: function(_context, textTransform2) {
  3048. switch (textTransform2) {
  3049. case "uppercase":
  3050. return 2;
  3051. case "lowercase":
  3052. return 1;
  3053. case "capitalize":
  3054. return 3;
  3055. }
  3056. return 0;
  3057. }
  3058. };
  3059. transform$1 = {
  3060. name: "transform",
  3061. initialValue: "none",
  3062. prefix: true,
  3063. type: 0,
  3064. parse: function(_context, token) {
  3065. if (token.type === 20 && token.value === "none") {
  3066. return null;
  3067. }
  3068. if (token.type === 18) {
  3069. var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];
  3070. if (typeof transformFunction === "undefined") {
  3071. throw new Error('Attempting to parse an unsupported transform function "' + token.name + '"');
  3072. }
  3073. return transformFunction(token.values);
  3074. }
  3075. return null;
  3076. }
  3077. };
  3078. matrix = function(args) {
  3079. var values = args.filter(function(arg) {
  3080. return arg.type === 17;
  3081. }).map(function(arg) {
  3082. return arg.number;
  3083. });
  3084. return values.length === 6 ? values : null;
  3085. };
  3086. matrix3d = function(args) {
  3087. var values = args.filter(function(arg) {
  3088. return arg.type === 17;
  3089. }).map(function(arg) {
  3090. return arg.number;
  3091. });
  3092. var a1 = values[0], b1 = values[1];
  3093. values[2];
  3094. values[3];
  3095. var a2 = values[4], b2 = values[5];
  3096. values[6];
  3097. values[7];
  3098. values[8];
  3099. values[9];
  3100. values[10];
  3101. values[11];
  3102. var a4 = values[12], b4 = values[13];
  3103. values[14];
  3104. values[15];
  3105. return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;
  3106. };
  3107. SUPPORTED_TRANSFORM_FUNCTIONS = {
  3108. matrix,
  3109. matrix3d
  3110. };
  3111. DEFAULT_VALUE = {
  3112. type: 16,
  3113. number: 50,
  3114. flags: FLAG_INTEGER
  3115. };
  3116. DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];
  3117. transformOrigin = {
  3118. name: "transform-origin",
  3119. initialValue: "50% 50%",
  3120. prefix: true,
  3121. type: 1,
  3122. parse: function(_context, tokens) {
  3123. var origins = tokens.filter(isLengthPercentage);
  3124. if (origins.length !== 2) {
  3125. return DEFAULT;
  3126. }
  3127. return [origins[0], origins[1]];
  3128. }
  3129. };
  3130. visibility = {
  3131. name: "visible",
  3132. initialValue: "none",
  3133. prefix: false,
  3134. type: 2,
  3135. parse: function(_context, visibility2) {
  3136. switch (visibility2) {
  3137. case "hidden":
  3138. return 1;
  3139. case "collapse":
  3140. return 2;
  3141. case "visible":
  3142. default:
  3143. return 0;
  3144. }
  3145. }
  3146. };
  3147. (function(WORD_BREAK2) {
  3148. WORD_BREAK2["NORMAL"] = "normal";
  3149. WORD_BREAK2["BREAK_ALL"] = "break-all";
  3150. WORD_BREAK2["KEEP_ALL"] = "keep-all";
  3151. })(WORD_BREAK || (WORD_BREAK = {}));
  3152. wordBreak = {
  3153. name: "word-break",
  3154. initialValue: "normal",
  3155. prefix: false,
  3156. type: 2,
  3157. parse: function(_context, wordBreak2) {
  3158. switch (wordBreak2) {
  3159. case "break-all":
  3160. return WORD_BREAK.BREAK_ALL;
  3161. case "keep-all":
  3162. return WORD_BREAK.KEEP_ALL;
  3163. case "normal":
  3164. default:
  3165. return WORD_BREAK.NORMAL;
  3166. }
  3167. }
  3168. };
  3169. zIndex = {
  3170. name: "z-index",
  3171. initialValue: "auto",
  3172. prefix: false,
  3173. type: 0,
  3174. parse: function(_context, token) {
  3175. if (token.type === 20) {
  3176. return { auto: true, order: 0 };
  3177. }
  3178. if (isNumberToken(token)) {
  3179. return { auto: false, order: token.number };
  3180. }
  3181. throw new Error("Invalid z-index number parsed");
  3182. }
  3183. };
  3184. time = {
  3185. name: "time",
  3186. parse: function(_context, value) {
  3187. if (value.type === 15) {
  3188. switch (value.unit.toLowerCase()) {
  3189. case "s":
  3190. return 1e3 * value.number;
  3191. case "ms":
  3192. return value.number;
  3193. }
  3194. }
  3195. throw new Error("Unsupported time type");
  3196. }
  3197. };
  3198. opacity = {
  3199. name: "opacity",
  3200. initialValue: "1",
  3201. type: 0,
  3202. prefix: false,
  3203. parse: function(_context, token) {
  3204. if (isNumberToken(token)) {
  3205. return token.number;
  3206. }
  3207. return 1;
  3208. }
  3209. };
  3210. textDecorationColor = {
  3211. name: "text-decoration-color",
  3212. initialValue: "transparent",
  3213. prefix: false,
  3214. type: 3,
  3215. format: "color"
  3216. };
  3217. textDecorationLine = {
  3218. name: "text-decoration-line",
  3219. initialValue: "none",
  3220. prefix: false,
  3221. type: 1,
  3222. parse: function(_context, tokens) {
  3223. return tokens.filter(isIdentToken).map(function(token) {
  3224. switch (token.value) {
  3225. case "underline":
  3226. return 1;
  3227. case "overline":
  3228. return 2;
  3229. case "line-through":
  3230. return 3;
  3231. case "none":
  3232. return 4;
  3233. }
  3234. return 0;
  3235. }).filter(function(line) {
  3236. return line !== 0;
  3237. });
  3238. }
  3239. };
  3240. fontFamily = {
  3241. name: "font-family",
  3242. initialValue: "",
  3243. prefix: false,
  3244. type: 1,
  3245. parse: function(_context, tokens) {
  3246. var accumulator = [];
  3247. var results = [];
  3248. tokens.forEach(function(token) {
  3249. switch (token.type) {
  3250. case 20:
  3251. case 0:
  3252. accumulator.push(token.value);
  3253. break;
  3254. case 17:
  3255. accumulator.push(token.number.toString());
  3256. break;
  3257. case 4:
  3258. results.push(accumulator.join(" "));
  3259. accumulator.length = 0;
  3260. break;
  3261. }
  3262. });
  3263. if (accumulator.length) {
  3264. results.push(accumulator.join(" "));
  3265. }
  3266. return results.map(function(result) {
  3267. return result.indexOf(" ") === -1 ? result : "'" + result + "'";
  3268. });
  3269. }
  3270. };
  3271. fontSize = {
  3272. name: "font-size",
  3273. initialValue: "0",
  3274. prefix: false,
  3275. type: 3,
  3276. format: "length"
  3277. };
  3278. fontWeight = {
  3279. name: "font-weight",
  3280. initialValue: "normal",
  3281. type: 0,
  3282. prefix: false,
  3283. parse: function(_context, token) {
  3284. if (isNumberToken(token)) {
  3285. return token.number;
  3286. }
  3287. if (isIdentToken(token)) {
  3288. switch (token.value) {
  3289. case "bold":
  3290. return 700;
  3291. case "normal":
  3292. default:
  3293. return 400;
  3294. }
  3295. }
  3296. return 400;
  3297. }
  3298. };
  3299. fontVariant = {
  3300. name: "font-variant",
  3301. initialValue: "none",
  3302. type: 1,
  3303. prefix: false,
  3304. parse: function(_context, tokens) {
  3305. return tokens.filter(isIdentToken).map(function(token) {
  3306. return token.value;
  3307. });
  3308. }
  3309. };
  3310. fontStyle = {
  3311. name: "font-style",
  3312. initialValue: "normal",
  3313. prefix: false,
  3314. type: 2,
  3315. parse: function(_context, overflow2) {
  3316. switch (overflow2) {
  3317. case "oblique":
  3318. return "oblique";
  3319. case "italic":
  3320. return "italic";
  3321. case "normal":
  3322. default:
  3323. return "normal";
  3324. }
  3325. }
  3326. };
  3327. contains = function(bit, value) {
  3328. return (bit & value) !== 0;
  3329. };
  3330. content = {
  3331. name: "content",
  3332. initialValue: "none",
  3333. type: 1,
  3334. prefix: false,
  3335. parse: function(_context, tokens) {
  3336. if (tokens.length === 0) {
  3337. return [];
  3338. }
  3339. var first = tokens[0];
  3340. if (first.type === 20 && first.value === "none") {
  3341. return [];
  3342. }
  3343. return tokens;
  3344. }
  3345. };
  3346. counterIncrement = {
  3347. name: "counter-increment",
  3348. initialValue: "none",
  3349. prefix: true,
  3350. type: 1,
  3351. parse: function(_context, tokens) {
  3352. if (tokens.length === 0) {
  3353. return null;
  3354. }
  3355. var first = tokens[0];
  3356. if (first.type === 20 && first.value === "none") {
  3357. return null;
  3358. }
  3359. var increments = [];
  3360. var filtered = tokens.filter(nonWhiteSpace);
  3361. for (var i = 0; i < filtered.length; i++) {
  3362. var counter = filtered[i];
  3363. var next = filtered[i + 1];
  3364. if (counter.type === 20) {
  3365. var increment = next && isNumberToken(next) ? next.number : 1;
  3366. increments.push({ counter: counter.value, increment });
  3367. }
  3368. }
  3369. return increments;
  3370. }
  3371. };
  3372. counterReset = {
  3373. name: "counter-reset",
  3374. initialValue: "none",
  3375. prefix: true,
  3376. type: 1,
  3377. parse: function(_context, tokens) {
  3378. if (tokens.length === 0) {
  3379. return [];
  3380. }
  3381. var resets = [];
  3382. var filtered = tokens.filter(nonWhiteSpace);
  3383. for (var i = 0; i < filtered.length; i++) {
  3384. var counter = filtered[i];
  3385. var next = filtered[i + 1];
  3386. if (isIdentToken(counter) && counter.value !== "none") {
  3387. var reset = next && isNumberToken(next) ? next.number : 0;
  3388. resets.push({ counter: counter.value, reset });
  3389. }
  3390. }
  3391. return resets;
  3392. }
  3393. };
  3394. duration = {
  3395. name: "duration",
  3396. initialValue: "0s",
  3397. prefix: false,
  3398. type: 1,
  3399. parse: function(context, tokens) {
  3400. return tokens.filter(isDimensionToken).map(function(token) {
  3401. return time.parse(context, token);
  3402. });
  3403. }
  3404. };
  3405. quotes = {
  3406. name: "quotes",
  3407. initialValue: "none",
  3408. prefix: true,
  3409. type: 1,
  3410. parse: function(_context, tokens) {
  3411. if (tokens.length === 0) {
  3412. return null;
  3413. }
  3414. var first = tokens[0];
  3415. if (first.type === 20 && first.value === "none") {
  3416. return null;
  3417. }
  3418. var quotes2 = [];
  3419. var filtered = tokens.filter(isStringToken);
  3420. if (filtered.length % 2 !== 0) {
  3421. return null;
  3422. }
  3423. for (var i = 0; i < filtered.length; i += 2) {
  3424. var open_1 = filtered[i].value;
  3425. var close_1 = filtered[i + 1].value;
  3426. quotes2.push({ open: open_1, close: close_1 });
  3427. }
  3428. return quotes2;
  3429. }
  3430. };
  3431. getQuote = function(quotes2, depth, open) {
  3432. if (!quotes2) {
  3433. return "";
  3434. }
  3435. var quote = quotes2[Math.min(depth, quotes2.length - 1)];
  3436. if (!quote) {
  3437. return "";
  3438. }
  3439. return open ? quote.open : quote.close;
  3440. };
  3441. boxShadow = {
  3442. name: "box-shadow",
  3443. initialValue: "none",
  3444. type: 1,
  3445. prefix: false,
  3446. parse: function(context, tokens) {
  3447. if (tokens.length === 1 && isIdentWithValue(tokens[0], "none")) {
  3448. return [];
  3449. }
  3450. return parseFunctionArgs(tokens).map(function(values) {
  3451. var shadow = {
  3452. color: 255,
  3453. offsetX: ZERO_LENGTH,
  3454. offsetY: ZERO_LENGTH,
  3455. blur: ZERO_LENGTH,
  3456. spread: ZERO_LENGTH,
  3457. inset: false
  3458. };
  3459. var c = 0;
  3460. for (var i = 0; i < values.length; i++) {
  3461. var token = values[i];
  3462. if (isIdentWithValue(token, "inset")) {
  3463. shadow.inset = true;
  3464. } else if (isLength(token)) {
  3465. if (c === 0) {
  3466. shadow.offsetX = token;
  3467. } else if (c === 1) {
  3468. shadow.offsetY = token;
  3469. } else if (c === 2) {
  3470. shadow.blur = token;
  3471. } else {
  3472. shadow.spread = token;
  3473. }
  3474. c++;
  3475. } else {
  3476. shadow.color = color$1.parse(context, token);
  3477. }
  3478. }
  3479. return shadow;
  3480. });
  3481. }
  3482. };
  3483. paintOrder = {
  3484. name: "paint-order",
  3485. initialValue: "normal",
  3486. prefix: false,
  3487. type: 1,
  3488. parse: function(_context, tokens) {
  3489. var DEFAULT_VALUE2 = [
  3490. 0,
  3491. 1,
  3492. 2
  3493. /* MARKERS */
  3494. ];
  3495. var layers = [];
  3496. tokens.filter(isIdentToken).forEach(function(token) {
  3497. switch (token.value) {
  3498. case "stroke":
  3499. layers.push(
  3500. 1
  3501. /* STROKE */
  3502. );
  3503. break;
  3504. case "fill":
  3505. layers.push(
  3506. 0
  3507. /* FILL */
  3508. );
  3509. break;
  3510. case "markers":
  3511. layers.push(
  3512. 2
  3513. /* MARKERS */
  3514. );
  3515. break;
  3516. }
  3517. });
  3518. DEFAULT_VALUE2.forEach(function(value) {
  3519. if (layers.indexOf(value) === -1) {
  3520. layers.push(value);
  3521. }
  3522. });
  3523. return layers;
  3524. }
  3525. };
  3526. webkitTextStrokeColor = {
  3527. name: "-webkit-text-stroke-color",
  3528. initialValue: "currentcolor",
  3529. prefix: false,
  3530. type: 3,
  3531. format: "color"
  3532. };
  3533. webkitTextStrokeWidth = {
  3534. name: "-webkit-text-stroke-width",
  3535. initialValue: "0",
  3536. type: 0,
  3537. prefix: false,
  3538. parse: function(_context, token) {
  3539. if (isDimensionToken(token)) {
  3540. return token.number;
  3541. }
  3542. return 0;
  3543. }
  3544. };
  3545. CSSParsedDeclaration = /** @class */
  3546. function() {
  3547. function CSSParsedDeclaration2(context, declaration) {
  3548. var _a, _b;
  3549. this.animationDuration = parse(context, duration, declaration.animationDuration);
  3550. this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);
  3551. this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);
  3552. this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);
  3553. this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);
  3554. this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);
  3555. this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);
  3556. this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);
  3557. this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);
  3558. this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);
  3559. this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);
  3560. this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);
  3561. this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);
  3562. this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);
  3563. this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);
  3564. this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);
  3565. this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);
  3566. this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);
  3567. this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);
  3568. this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);
  3569. this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);
  3570. this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);
  3571. this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);
  3572. this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);
  3573. this.boxShadow = parse(context, boxShadow, declaration.boxShadow);
  3574. this.color = parse(context, color, declaration.color);
  3575. this.direction = parse(context, direction, declaration.direction);
  3576. this.display = parse(context, display, declaration.display);
  3577. this.float = parse(context, float, declaration.cssFloat);
  3578. this.fontFamily = parse(context, fontFamily, declaration.fontFamily);
  3579. this.fontSize = parse(context, fontSize, declaration.fontSize);
  3580. this.fontStyle = parse(context, fontStyle, declaration.fontStyle);
  3581. this.fontVariant = parse(context, fontVariant, declaration.fontVariant);
  3582. this.fontWeight = parse(context, fontWeight, declaration.fontWeight);
  3583. this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);
  3584. this.lineBreak = parse(context, lineBreak, declaration.lineBreak);
  3585. this.lineHeight = parse(context, lineHeight, declaration.lineHeight);
  3586. this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);
  3587. this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);
  3588. this.listStyleType = parse(context, listStyleType, declaration.listStyleType);
  3589. this.marginTop = parse(context, marginTop, declaration.marginTop);
  3590. this.marginRight = parse(context, marginRight, declaration.marginRight);
  3591. this.marginBottom = parse(context, marginBottom, declaration.marginBottom);
  3592. this.marginLeft = parse(context, marginLeft, declaration.marginLeft);
  3593. this.opacity = parse(context, opacity, declaration.opacity);
  3594. var overflowTuple = parse(context, overflow, declaration.overflow);
  3595. this.overflowX = overflowTuple[0];
  3596. this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];
  3597. this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);
  3598. this.paddingTop = parse(context, paddingTop, declaration.paddingTop);
  3599. this.paddingRight = parse(context, paddingRight, declaration.paddingRight);
  3600. this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);
  3601. this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);
  3602. this.paintOrder = parse(context, paintOrder, declaration.paintOrder);
  3603. this.position = parse(context, position, declaration.position);
  3604. this.textAlign = parse(context, textAlign, declaration.textAlign);
  3605. this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color);
  3606. this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration);
  3607. this.textShadow = parse(context, textShadow, declaration.textShadow);
  3608. this.textTransform = parse(context, textTransform, declaration.textTransform);
  3609. this.transform = parse(context, transform$1, declaration.transform);
  3610. this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);
  3611. this.visibility = parse(context, visibility, declaration.visibility);
  3612. this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);
  3613. this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);
  3614. this.wordBreak = parse(context, wordBreak, declaration.wordBreak);
  3615. this.zIndex = parse(context, zIndex, declaration.zIndex);
  3616. }
  3617. CSSParsedDeclaration2.prototype.isVisible = function() {
  3618. return this.display > 0 && this.opacity > 0 && this.visibility === 0;
  3619. };
  3620. CSSParsedDeclaration2.prototype.isTransparent = function() {
  3621. return isTransparent(this.backgroundColor);
  3622. };
  3623. CSSParsedDeclaration2.prototype.isTransformed = function() {
  3624. return this.transform !== null;
  3625. };
  3626. CSSParsedDeclaration2.prototype.isPositioned = function() {
  3627. return this.position !== 0;
  3628. };
  3629. CSSParsedDeclaration2.prototype.isPositionedWithZIndex = function() {
  3630. return this.isPositioned() && !this.zIndex.auto;
  3631. };
  3632. CSSParsedDeclaration2.prototype.isFloating = function() {
  3633. return this.float !== 0;
  3634. };
  3635. CSSParsedDeclaration2.prototype.isInlineLevel = function() {
  3636. return contains(
  3637. this.display,
  3638. 4
  3639. /* INLINE */
  3640. ) || contains(
  3641. this.display,
  3642. 33554432
  3643. /* INLINE_BLOCK */
  3644. ) || contains(
  3645. this.display,
  3646. 268435456
  3647. /* INLINE_FLEX */
  3648. ) || contains(
  3649. this.display,
  3650. 536870912
  3651. /* INLINE_GRID */
  3652. ) || contains(
  3653. this.display,
  3654. 67108864
  3655. /* INLINE_LIST_ITEM */
  3656. ) || contains(
  3657. this.display,
  3658. 134217728
  3659. /* INLINE_TABLE */
  3660. );
  3661. };
  3662. return CSSParsedDeclaration2;
  3663. }();
  3664. CSSParsedPseudoDeclaration = /** @class */
  3665. function() {
  3666. function CSSParsedPseudoDeclaration2(context, declaration) {
  3667. this.content = parse(context, content, declaration.content);
  3668. this.quotes = parse(context, quotes, declaration.quotes);
  3669. }
  3670. return CSSParsedPseudoDeclaration2;
  3671. }();
  3672. CSSParsedCounterDeclaration = /** @class */
  3673. function() {
  3674. function CSSParsedCounterDeclaration2(context, declaration) {
  3675. this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);
  3676. this.counterReset = parse(context, counterReset, declaration.counterReset);
  3677. }
  3678. return CSSParsedCounterDeclaration2;
  3679. }();
  3680. parse = function(context, descriptor, style) {
  3681. var tokenizer = new Tokenizer();
  3682. var value = style !== null && typeof style !== "undefined" ? style.toString() : descriptor.initialValue;
  3683. tokenizer.write(value);
  3684. var parser = new Parser(tokenizer.read());
  3685. switch (descriptor.type) {
  3686. case 2:
  3687. var token = parser.parseComponentValue();
  3688. return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);
  3689. case 0:
  3690. return descriptor.parse(context, parser.parseComponentValue());
  3691. case 1:
  3692. return descriptor.parse(context, parser.parseComponentValues());
  3693. case 4:
  3694. return parser.parseComponentValue();
  3695. case 3:
  3696. switch (descriptor.format) {
  3697. case "angle":
  3698. return angle.parse(context, parser.parseComponentValue());
  3699. case "color":
  3700. return color$1.parse(context, parser.parseComponentValue());
  3701. case "image":
  3702. return image.parse(context, parser.parseComponentValue());
  3703. case "length":
  3704. var length_1 = parser.parseComponentValue();
  3705. return isLength(length_1) ? length_1 : ZERO_LENGTH;
  3706. case "length-percentage":
  3707. var value_1 = parser.parseComponentValue();
  3708. return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;
  3709. case "time":
  3710. return time.parse(context, parser.parseComponentValue());
  3711. }
  3712. break;
  3713. }
  3714. };
  3715. elementDebuggerAttribute = "data-html2canvas-debug";
  3716. getElementDebugType = function(element) {
  3717. var attribute = element.getAttribute(elementDebuggerAttribute);
  3718. switch (attribute) {
  3719. case "all":
  3720. return 1;
  3721. case "clone":
  3722. return 2;
  3723. case "parse":
  3724. return 3;
  3725. case "render":
  3726. return 4;
  3727. default:
  3728. return 0;
  3729. }
  3730. };
  3731. isDebugging = function(element, type) {
  3732. var elementType = getElementDebugType(element);
  3733. return elementType === 1 || type === elementType;
  3734. };
  3735. ElementContainer = /** @class */
  3736. function() {
  3737. function ElementContainer2(context, element) {
  3738. this.context = context;
  3739. this.textNodes = [];
  3740. this.elements = [];
  3741. this.flags = 0;
  3742. if (isDebugging(
  3743. element,
  3744. 3
  3745. /* PARSE */
  3746. )) {
  3747. debugger;
  3748. }
  3749. this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));
  3750. if (isHTMLElementNode(element)) {
  3751. if (this.styles.animationDuration.some(function(duration2) {
  3752. return duration2 > 0;
  3753. })) {
  3754. element.style.animationDuration = "0s";
  3755. }
  3756. if (this.styles.transform !== null) {
  3757. element.style.transform = "none";
  3758. }
  3759. }
  3760. this.bounds = parseBounds(this.context, element);
  3761. if (isDebugging(
  3762. element,
  3763. 4
  3764. /* RENDER */
  3765. )) {
  3766. this.flags |= 16;
  3767. }
  3768. }
  3769. return ElementContainer2;
  3770. }();
  3771. base64 = "AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=";
  3772. chars$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  3773. lookup$1 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
  3774. for (i$1 = 0; i$1 < chars$1.length; i$1++) {
  3775. lookup$1[chars$1.charCodeAt(i$1)] = i$1;
  3776. }
  3777. decode = function(base642) {
  3778. var bufferLength = base642.length * 0.75, len = base642.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
  3779. if (base642[base642.length - 1] === "=") {
  3780. bufferLength--;
  3781. if (base642[base642.length - 2] === "=") {
  3782. bufferLength--;
  3783. }
  3784. }
  3785. var buffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && typeof Uint8Array.prototype.slice !== "undefined" ? new ArrayBuffer(bufferLength) : new Array(bufferLength);
  3786. var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
  3787. for (i = 0; i < len; i += 4) {
  3788. encoded1 = lookup$1[base642.charCodeAt(i)];
  3789. encoded2 = lookup$1[base642.charCodeAt(i + 1)];
  3790. encoded3 = lookup$1[base642.charCodeAt(i + 2)];
  3791. encoded4 = lookup$1[base642.charCodeAt(i + 3)];
  3792. bytes[p++] = encoded1 << 2 | encoded2 >> 4;
  3793. bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
  3794. bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
  3795. }
  3796. return buffer;
  3797. };
  3798. polyUint16Array = function(buffer) {
  3799. var length = buffer.length;
  3800. var bytes = [];
  3801. for (var i = 0; i < length; i += 2) {
  3802. bytes.push(buffer[i + 1] << 8 | buffer[i]);
  3803. }
  3804. return bytes;
  3805. };
  3806. polyUint32Array = function(buffer) {
  3807. var length = buffer.length;
  3808. var bytes = [];
  3809. for (var i = 0; i < length; i += 4) {
  3810. bytes.push(buffer[i + 3] << 24 | buffer[i + 2] << 16 | buffer[i + 1] << 8 | buffer[i]);
  3811. }
  3812. return bytes;
  3813. };
  3814. UTRIE2_SHIFT_2 = 5;
  3815. UTRIE2_SHIFT_1 = 6 + 5;
  3816. UTRIE2_INDEX_SHIFT = 2;
  3817. UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;
  3818. UTRIE2_LSCP_INDEX_2_OFFSET = 65536 >> UTRIE2_SHIFT_2;
  3819. UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;
  3820. UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;
  3821. UTRIE2_LSCP_INDEX_2_LENGTH = 1024 >> UTRIE2_SHIFT_2;
  3822. UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;
  3823. UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;
  3824. UTRIE2_UTF8_2B_INDEX_2_LENGTH = 2048 >> 6;
  3825. UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;
  3826. UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 65536 >> UTRIE2_SHIFT_1;
  3827. UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;
  3828. UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;
  3829. slice16 = function(view, start, end) {
  3830. if (view.slice) {
  3831. return view.slice(start, end);
  3832. }
  3833. return new Uint16Array(Array.prototype.slice.call(view, start, end));
  3834. };
  3835. slice32 = function(view, start, end) {
  3836. if (view.slice) {
  3837. return view.slice(start, end);
  3838. }
  3839. return new Uint32Array(Array.prototype.slice.call(view, start, end));
  3840. };
  3841. createTrieFromBase64 = function(base642, _byteLength) {
  3842. var buffer = decode(base642);
  3843. var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);
  3844. var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);
  3845. var headerLength = 24;
  3846. var index = slice16(view16, headerLength / 2, view32[4] / 2);
  3847. var data = view32[5] === 2 ? slice16(view16, (headerLength + view32[4]) / 2) : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));
  3848. return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);
  3849. };
  3850. Trie = /** @class */
  3851. function() {
  3852. function Trie2(initialValue, errorValue, highStart, highValueIndex, index, data) {
  3853. this.initialValue = initialValue;
  3854. this.errorValue = errorValue;
  3855. this.highStart = highStart;
  3856. this.highValueIndex = highValueIndex;
  3857. this.index = index;
  3858. this.data = data;
  3859. }
  3860. Trie2.prototype.get = function(codePoint) {
  3861. var ix;
  3862. if (codePoint >= 0) {
  3863. if (codePoint < 55296 || codePoint > 56319 && codePoint <= 65535) {
  3864. ix = this.index[codePoint >> UTRIE2_SHIFT_2];
  3865. ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
  3866. return this.data[ix];
  3867. }
  3868. if (codePoint <= 65535) {
  3869. ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + (codePoint - 55296 >> UTRIE2_SHIFT_2)];
  3870. ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
  3871. return this.data[ix];
  3872. }
  3873. if (codePoint < this.highStart) {
  3874. ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);
  3875. ix = this.index[ix];
  3876. ix += codePoint >> UTRIE2_SHIFT_2 & UTRIE2_INDEX_2_MASK;
  3877. ix = this.index[ix];
  3878. ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
  3879. return this.data[ix];
  3880. }
  3881. if (codePoint <= 1114111) {
  3882. return this.data[this.highValueIndex];
  3883. }
  3884. }
  3885. return this.errorValue;
  3886. };
  3887. return Trie2;
  3888. }();
  3889. chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  3890. lookup = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
  3891. for (i = 0; i < chars.length; i++) {
  3892. lookup[chars.charCodeAt(i)] = i;
  3893. }
  3894. Prepend = 1;
  3895. CR = 2;
  3896. LF = 3;
  3897. Control = 4;
  3898. Extend = 5;
  3899. SpacingMark = 7;
  3900. L = 8;
  3901. V = 9;
  3902. T = 10;
  3903. LV = 11;
  3904. LVT = 12;
  3905. ZWJ = 13;
  3906. Extended_Pictographic = 14;
  3907. RI = 15;
  3908. toCodePoints = function(str) {
  3909. var codePoints = [];
  3910. var i = 0;
  3911. var length = str.length;
  3912. while (i < length) {
  3913. var value = str.charCodeAt(i++);
  3914. if (value >= 55296 && value <= 56319 && i < length) {
  3915. var extra = str.charCodeAt(i++);
  3916. if ((extra & 64512) === 56320) {
  3917. codePoints.push(((value & 1023) << 10) + (extra & 1023) + 65536);
  3918. } else {
  3919. codePoints.push(value);
  3920. i--;
  3921. }
  3922. } else {
  3923. codePoints.push(value);
  3924. }
  3925. }
  3926. return codePoints;
  3927. };
  3928. fromCodePoint = function() {
  3929. var codePoints = [];
  3930. for (var _i = 0; _i < arguments.length; _i++) {
  3931. codePoints[_i] = arguments[_i];
  3932. }
  3933. if (String.fromCodePoint) {
  3934. return String.fromCodePoint.apply(String, codePoints);
  3935. }
  3936. var length = codePoints.length;
  3937. if (!length) {
  3938. return "";
  3939. }
  3940. var codeUnits = [];
  3941. var index = -1;
  3942. var result = "";
  3943. while (++index < length) {
  3944. var codePoint = codePoints[index];
  3945. if (codePoint <= 65535) {
  3946. codeUnits.push(codePoint);
  3947. } else {
  3948. codePoint -= 65536;
  3949. codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320);
  3950. }
  3951. if (index + 1 === length || codeUnits.length > 16384) {
  3952. result += String.fromCharCode.apply(String, codeUnits);
  3953. codeUnits.length = 0;
  3954. }
  3955. }
  3956. return result;
  3957. };
  3958. UnicodeTrie = createTrieFromBase64(base64);
  3959. BREAK_NOT_ALLOWED = "×";
  3960. BREAK_ALLOWED = "÷";
  3961. codePointToClass = function(codePoint) {
  3962. return UnicodeTrie.get(codePoint);
  3963. };
  3964. _graphemeBreakAtIndex = function(_codePoints, classTypes, index) {
  3965. var prevIndex = index - 2;
  3966. var prev = classTypes[prevIndex];
  3967. var current = classTypes[index - 1];
  3968. var next = classTypes[index];
  3969. if (current === CR && next === LF) {
  3970. return BREAK_NOT_ALLOWED;
  3971. }
  3972. if (current === CR || current === LF || current === Control) {
  3973. return BREAK_ALLOWED;
  3974. }
  3975. if (next === CR || next === LF || next === Control) {
  3976. return BREAK_ALLOWED;
  3977. }
  3978. if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {
  3979. return BREAK_NOT_ALLOWED;
  3980. }
  3981. if ((current === LV || current === V) && (next === V || next === T)) {
  3982. return BREAK_NOT_ALLOWED;
  3983. }
  3984. if ((current === LVT || current === T) && next === T) {
  3985. return BREAK_NOT_ALLOWED;
  3986. }
  3987. if (next === ZWJ || next === Extend) {
  3988. return BREAK_NOT_ALLOWED;
  3989. }
  3990. if (next === SpacingMark) {
  3991. return BREAK_NOT_ALLOWED;
  3992. }
  3993. if (current === Prepend) {
  3994. return BREAK_NOT_ALLOWED;
  3995. }
  3996. if (current === ZWJ && next === Extended_Pictographic) {
  3997. while (prev === Extend) {
  3998. prev = classTypes[--prevIndex];
  3999. }
  4000. if (prev === Extended_Pictographic) {
  4001. return BREAK_NOT_ALLOWED;
  4002. }
  4003. }
  4004. if (current === RI && next === RI) {
  4005. var countRI = 0;
  4006. while (prev === RI) {
  4007. countRI++;
  4008. prev = classTypes[--prevIndex];
  4009. }
  4010. if (countRI % 2 === 0) {
  4011. return BREAK_NOT_ALLOWED;
  4012. }
  4013. }
  4014. return BREAK_ALLOWED;
  4015. };
  4016. GraphemeBreaker = function(str) {
  4017. var codePoints = toCodePoints(str);
  4018. var length = codePoints.length;
  4019. var index = 0;
  4020. var lastEnd = 0;
  4021. var classTypes = codePoints.map(codePointToClass);
  4022. return {
  4023. next: function() {
  4024. if (index >= length) {
  4025. return { done: true, value: null };
  4026. }
  4027. var graphemeBreak = BREAK_NOT_ALLOWED;
  4028. while (index < length && (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) {
  4029. }
  4030. if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {
  4031. var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));
  4032. lastEnd = index;
  4033. return { value, done: false };
  4034. }
  4035. return { done: true, value: null };
  4036. }
  4037. };
  4038. };
  4039. splitGraphemes = function(str) {
  4040. var breaker = GraphemeBreaker(str);
  4041. var graphemes = [];
  4042. var bk;
  4043. while (!(bk = breaker.next()).done) {
  4044. if (bk.value) {
  4045. graphemes.push(bk.value.slice());
  4046. }
  4047. }
  4048. return graphemes;
  4049. };
  4050. testRangeBounds = function(document2) {
  4051. var TEST_HEIGHT = 123;
  4052. if (document2.createRange) {
  4053. var range = document2.createRange();
  4054. if (range.getBoundingClientRect) {
  4055. var testElement = document2.createElement("boundtest");
  4056. testElement.style.height = TEST_HEIGHT + "px";
  4057. testElement.style.display = "block";
  4058. document2.body.appendChild(testElement);
  4059. range.selectNode(testElement);
  4060. var rangeBounds = range.getBoundingClientRect();
  4061. var rangeHeight = Math.round(rangeBounds.height);
  4062. document2.body.removeChild(testElement);
  4063. if (rangeHeight === TEST_HEIGHT) {
  4064. return true;
  4065. }
  4066. }
  4067. }
  4068. return false;
  4069. };
  4070. testIOSLineBreak = function(document2) {
  4071. var testElement = document2.createElement("boundtest");
  4072. testElement.style.width = "50px";
  4073. testElement.style.display = "block";
  4074. testElement.style.fontSize = "12px";
  4075. testElement.style.letterSpacing = "0px";
  4076. testElement.style.wordSpacing = "0px";
  4077. document2.body.appendChild(testElement);
  4078. var range = document2.createRange();
  4079. testElement.innerHTML = typeof "".repeat === "function" ? "&#128104;".repeat(10) : "";
  4080. var node = testElement.firstChild;
  4081. var textList = toCodePoints$1(node.data).map(function(i) {
  4082. return fromCodePoint$1(i);
  4083. });
  4084. var offset = 0;
  4085. var prev = {};
  4086. var supports = textList.every(function(text, i) {
  4087. range.setStart(node, offset);
  4088. range.setEnd(node, offset + text.length);
  4089. var rect = range.getBoundingClientRect();
  4090. offset += text.length;
  4091. var boundAhead = rect.x > prev.x || rect.y > prev.y;
  4092. prev = rect;
  4093. if (i === 0) {
  4094. return true;
  4095. }
  4096. return boundAhead;
  4097. });
  4098. document2.body.removeChild(testElement);
  4099. return supports;
  4100. };
  4101. testCORS = function() {
  4102. return typeof new Image().crossOrigin !== "undefined";
  4103. };
  4104. testResponseType = function() {
  4105. return typeof new XMLHttpRequest().responseType === "string";
  4106. };
  4107. testSVG = function(document2) {
  4108. var img = new Image();
  4109. var canvas = document2.createElement("canvas");
  4110. var ctx = canvas.getContext("2d");
  4111. if (!ctx) {
  4112. return false;
  4113. }
  4114. img.src = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";
  4115. try {
  4116. ctx.drawImage(img, 0, 0);
  4117. canvas.toDataURL();
  4118. } catch (e2) {
  4119. return false;
  4120. }
  4121. return true;
  4122. };
  4123. isGreenPixel = function(data) {
  4124. return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;
  4125. };
  4126. testForeignObject = function(document2) {
  4127. var canvas = document2.createElement("canvas");
  4128. var size = 100;
  4129. canvas.width = size;
  4130. canvas.height = size;
  4131. var ctx = canvas.getContext("2d");
  4132. if (!ctx) {
  4133. return Promise.reject(false);
  4134. }
  4135. ctx.fillStyle = "rgb(0, 255, 0)";
  4136. ctx.fillRect(0, 0, size, size);
  4137. var img = new Image();
  4138. var greenImageSrc = canvas.toDataURL();
  4139. img.src = greenImageSrc;
  4140. var svg = createForeignObjectSVG(size, size, 0, 0, img);
  4141. ctx.fillStyle = "red";
  4142. ctx.fillRect(0, 0, size, size);
  4143. return loadSerializedSVG$1(svg).then(function(img2) {
  4144. ctx.drawImage(img2, 0, 0);
  4145. var data = ctx.getImageData(0, 0, size, size).data;
  4146. ctx.fillStyle = "red";
  4147. ctx.fillRect(0, 0, size, size);
  4148. var node = document2.createElement("div");
  4149. node.style.backgroundImage = "url(" + greenImageSrc + ")";
  4150. node.style.height = size + "px";
  4151. return isGreenPixel(data) ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node)) : Promise.reject(false);
  4152. }).then(function(img2) {
  4153. ctx.drawImage(img2, 0, 0);
  4154. return isGreenPixel(ctx.getImageData(0, 0, size, size).data);
  4155. }).catch(function() {
  4156. return false;
  4157. });
  4158. };
  4159. createForeignObjectSVG = function(width, height, x, y, node) {
  4160. var xmlns = "http://www.w3.org/2000/svg";
  4161. var svg = document.createElementNS(xmlns, "svg");
  4162. var foreignObject = document.createElementNS(xmlns, "foreignObject");
  4163. svg.setAttributeNS(null, "width", width.toString());
  4164. svg.setAttributeNS(null, "height", height.toString());
  4165. foreignObject.setAttributeNS(null, "width", "100%");
  4166. foreignObject.setAttributeNS(null, "height", "100%");
  4167. foreignObject.setAttributeNS(null, "x", x.toString());
  4168. foreignObject.setAttributeNS(null, "y", y.toString());
  4169. foreignObject.setAttributeNS(null, "externalResourcesRequired", "true");
  4170. svg.appendChild(foreignObject);
  4171. foreignObject.appendChild(node);
  4172. return svg;
  4173. };
  4174. loadSerializedSVG$1 = function(svg) {
  4175. return new Promise(function(resolve, reject) {
  4176. var img = new Image();
  4177. img.onload = function() {
  4178. return resolve(img);
  4179. };
  4180. img.onerror = reject;
  4181. img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg));
  4182. });
  4183. };
  4184. FEATURES = {
  4185. get SUPPORT_RANGE_BOUNDS() {
  4186. var value = testRangeBounds(document);
  4187. Object.defineProperty(FEATURES, "SUPPORT_RANGE_BOUNDS", { value });
  4188. return value;
  4189. },
  4190. get SUPPORT_WORD_BREAKING() {
  4191. var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);
  4192. Object.defineProperty(FEATURES, "SUPPORT_WORD_BREAKING", { value });
  4193. return value;
  4194. },
  4195. get SUPPORT_SVG_DRAWING() {
  4196. var value = testSVG(document);
  4197. Object.defineProperty(FEATURES, "SUPPORT_SVG_DRAWING", { value });
  4198. return value;
  4199. },
  4200. get SUPPORT_FOREIGNOBJECT_DRAWING() {
  4201. var value = typeof Array.from === "function" && typeof window.fetch === "function" ? testForeignObject(document) : Promise.resolve(false);
  4202. Object.defineProperty(FEATURES, "SUPPORT_FOREIGNOBJECT_DRAWING", { value });
  4203. return value;
  4204. },
  4205. get SUPPORT_CORS_IMAGES() {
  4206. var value = testCORS();
  4207. Object.defineProperty(FEATURES, "SUPPORT_CORS_IMAGES", { value });
  4208. return value;
  4209. },
  4210. get SUPPORT_RESPONSE_TYPE() {
  4211. var value = testResponseType();
  4212. Object.defineProperty(FEATURES, "SUPPORT_RESPONSE_TYPE", { value });
  4213. return value;
  4214. },
  4215. get SUPPORT_CORS_XHR() {
  4216. var value = "withCredentials" in new XMLHttpRequest();
  4217. Object.defineProperty(FEATURES, "SUPPORT_CORS_XHR", { value });
  4218. return value;
  4219. },
  4220. get SUPPORT_NATIVE_TEXT_SEGMENTATION() {
  4221. var value = !!(typeof Intl !== "undefined" && Intl.Segmenter);
  4222. Object.defineProperty(FEATURES, "SUPPORT_NATIVE_TEXT_SEGMENTATION", { value });
  4223. return value;
  4224. }
  4225. };
  4226. TextBounds = /** @class */
  4227. function() {
  4228. function TextBounds2(text, bounds) {
  4229. this.text = text;
  4230. this.bounds = bounds;
  4231. }
  4232. return TextBounds2;
  4233. }();
  4234. parseTextBounds = function(context, value, styles, node) {
  4235. var textList = breakText(value, styles);
  4236. var textBounds = [];
  4237. var offset = 0;
  4238. textList.forEach(function(text) {
  4239. if (styles.textDecorationLine.length || text.trim().length > 0) {
  4240. if (FEATURES.SUPPORT_RANGE_BOUNDS) {
  4241. var clientRects = createRange(node, offset, text.length).getClientRects();
  4242. if (clientRects.length > 1) {
  4243. var subSegments = segmentGraphemes(text);
  4244. var subOffset_1 = 0;
  4245. subSegments.forEach(function(subSegment) {
  4246. textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset, subSegment.length).getClientRects())));
  4247. subOffset_1 += subSegment.length;
  4248. });
  4249. } else {
  4250. textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));
  4251. }
  4252. } else {
  4253. var replacementNode = node.splitText(text.length);
  4254. textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));
  4255. node = replacementNode;
  4256. }
  4257. } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {
  4258. node = node.splitText(text.length);
  4259. }
  4260. offset += text.length;
  4261. });
  4262. return textBounds;
  4263. };
  4264. getWrapperBounds = function(context, node) {
  4265. var ownerDocument = node.ownerDocument;
  4266. if (ownerDocument) {
  4267. var wrapper = ownerDocument.createElement("html2canvaswrapper");
  4268. wrapper.appendChild(node.cloneNode(true));
  4269. var parentNode = node.parentNode;
  4270. if (parentNode) {
  4271. parentNode.replaceChild(wrapper, node);
  4272. var bounds = parseBounds(context, wrapper);
  4273. if (wrapper.firstChild) {
  4274. parentNode.replaceChild(wrapper.firstChild, wrapper);
  4275. }
  4276. return bounds;
  4277. }
  4278. }
  4279. return Bounds.EMPTY;
  4280. };
  4281. createRange = function(node, offset, length) {
  4282. var ownerDocument = node.ownerDocument;
  4283. if (!ownerDocument) {
  4284. throw new Error("Node has no owner document");
  4285. }
  4286. var range = ownerDocument.createRange();
  4287. range.setStart(node, offset);
  4288. range.setEnd(node, offset + length);
  4289. return range;
  4290. };
  4291. segmentGraphemes = function(value) {
  4292. if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
  4293. var segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
  4294. return Array.from(segmenter.segment(value)).map(function(segment) {
  4295. return segment.segment;
  4296. });
  4297. }
  4298. return splitGraphemes(value);
  4299. };
  4300. segmentWords = function(value, styles) {
  4301. if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
  4302. var segmenter = new Intl.Segmenter(void 0, {
  4303. granularity: "word"
  4304. });
  4305. return Array.from(segmenter.segment(value)).map(function(segment) {
  4306. return segment.segment;
  4307. });
  4308. }
  4309. return breakWords(value, styles);
  4310. };
  4311. breakText = function(value, styles) {
  4312. return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);
  4313. };
  4314. wordSeparators = [32, 160, 4961, 65792, 65793, 4153, 4241];
  4315. breakWords = function(str, styles) {
  4316. var breaker = LineBreaker(str, {
  4317. lineBreak: styles.lineBreak,
  4318. wordBreak: styles.overflowWrap === "break-word" ? "break-word" : styles.wordBreak
  4319. });
  4320. var words = [];
  4321. var bk;
  4322. var _loop_1 = function() {
  4323. if (bk.value) {
  4324. var value = bk.value.slice();
  4325. var codePoints = toCodePoints$1(value);
  4326. var word_1 = "";
  4327. codePoints.forEach(function(codePoint) {
  4328. if (wordSeparators.indexOf(codePoint) === -1) {
  4329. word_1 += fromCodePoint$1(codePoint);
  4330. } else {
  4331. if (word_1.length) {
  4332. words.push(word_1);
  4333. }
  4334. words.push(fromCodePoint$1(codePoint));
  4335. word_1 = "";
  4336. }
  4337. });
  4338. if (word_1.length) {
  4339. words.push(word_1);
  4340. }
  4341. }
  4342. };
  4343. while (!(bk = breaker.next()).done) {
  4344. _loop_1();
  4345. }
  4346. return words;
  4347. };
  4348. TextContainer = /** @class */
  4349. function() {
  4350. function TextContainer2(context, node, styles) {
  4351. this.text = transform(node.data, styles.textTransform);
  4352. this.textBounds = parseTextBounds(context, this.text, styles, node);
  4353. }
  4354. return TextContainer2;
  4355. }();
  4356. transform = function(text, transform2) {
  4357. switch (transform2) {
  4358. case 1:
  4359. return text.toLowerCase();
  4360. case 3:
  4361. return text.replace(CAPITALIZE, capitalize);
  4362. case 2:
  4363. return text.toUpperCase();
  4364. default:
  4365. return text;
  4366. }
  4367. };
  4368. CAPITALIZE = /(^|\s|:|-|\(|\))([a-z])/g;
  4369. capitalize = function(m, p1, p2) {
  4370. if (m.length > 0) {
  4371. return p1 + p2.toUpperCase();
  4372. }
  4373. return m;
  4374. };
  4375. ImageElementContainer = /** @class */
  4376. function(_super) {
  4377. __extends(ImageElementContainer2, _super);
  4378. function ImageElementContainer2(context, img) {
  4379. var _this = _super.call(this, context, img) || this;
  4380. _this.src = img.currentSrc || img.src;
  4381. _this.intrinsicWidth = img.naturalWidth;
  4382. _this.intrinsicHeight = img.naturalHeight;
  4383. _this.context.cache.addImage(_this.src);
  4384. return _this;
  4385. }
  4386. return ImageElementContainer2;
  4387. }(ElementContainer);
  4388. CanvasElementContainer = /** @class */
  4389. function(_super) {
  4390. __extends(CanvasElementContainer2, _super);
  4391. function CanvasElementContainer2(context, canvas) {
  4392. var _this = _super.call(this, context, canvas) || this;
  4393. _this.canvas = canvas;
  4394. _this.intrinsicWidth = canvas.width;
  4395. _this.intrinsicHeight = canvas.height;
  4396. return _this;
  4397. }
  4398. return CanvasElementContainer2;
  4399. }(ElementContainer);
  4400. SVGElementContainer = /** @class */
  4401. function(_super) {
  4402. __extends(SVGElementContainer2, _super);
  4403. function SVGElementContainer2(context, img) {
  4404. var _this = _super.call(this, context, img) || this;
  4405. var s = new XMLSerializer();
  4406. var bounds = parseBounds(context, img);
  4407. img.setAttribute("width", bounds.width + "px");
  4408. img.setAttribute("height", bounds.height + "px");
  4409. _this.svg = "data:image/svg+xml," + encodeURIComponent(s.serializeToString(img));
  4410. _this.intrinsicWidth = img.width.baseVal.value;
  4411. _this.intrinsicHeight = img.height.baseVal.value;
  4412. _this.context.cache.addImage(_this.svg);
  4413. return _this;
  4414. }
  4415. return SVGElementContainer2;
  4416. }(ElementContainer);
  4417. LIElementContainer = /** @class */
  4418. function(_super) {
  4419. __extends(LIElementContainer2, _super);
  4420. function LIElementContainer2(context, element) {
  4421. var _this = _super.call(this, context, element) || this;
  4422. _this.value = element.value;
  4423. return _this;
  4424. }
  4425. return LIElementContainer2;
  4426. }(ElementContainer);
  4427. OLElementContainer = /** @class */
  4428. function(_super) {
  4429. __extends(OLElementContainer2, _super);
  4430. function OLElementContainer2(context, element) {
  4431. var _this = _super.call(this, context, element) || this;
  4432. _this.start = element.start;
  4433. _this.reversed = typeof element.reversed === "boolean" && element.reversed === true;
  4434. return _this;
  4435. }
  4436. return OLElementContainer2;
  4437. }(ElementContainer);
  4438. CHECKBOX_BORDER_RADIUS = [
  4439. {
  4440. type: 15,
  4441. flags: 0,
  4442. unit: "px",
  4443. number: 3
  4444. }
  4445. ];
  4446. RADIO_BORDER_RADIUS = [
  4447. {
  4448. type: 16,
  4449. flags: 0,
  4450. number: 50
  4451. }
  4452. ];
  4453. reformatInputBounds = function(bounds) {
  4454. if (bounds.width > bounds.height) {
  4455. return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);
  4456. } else if (bounds.width < bounds.height) {
  4457. return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);
  4458. }
  4459. return bounds;
  4460. };
  4461. getInputValue = function(node) {
  4462. var value = node.type === PASSWORD ? new Array(node.value.length + 1).join("•") : node.value;
  4463. return value.length === 0 ? node.placeholder || "" : value;
  4464. };
  4465. CHECKBOX = "checkbox";
  4466. RADIO = "radio";
  4467. PASSWORD = "password";
  4468. INPUT_COLOR = 707406591;
  4469. InputElementContainer = /** @class */
  4470. function(_super) {
  4471. __extends(InputElementContainer2, _super);
  4472. function InputElementContainer2(context, input) {
  4473. var _this = _super.call(this, context, input) || this;
  4474. _this.type = input.type.toLowerCase();
  4475. _this.checked = input.checked;
  4476. _this.value = getInputValue(input);
  4477. if (_this.type === CHECKBOX || _this.type === RADIO) {
  4478. _this.styles.backgroundColor = 3739148031;
  4479. _this.styles.borderTopColor = _this.styles.borderRightColor = _this.styles.borderBottomColor = _this.styles.borderLeftColor = 2779096575;
  4480. _this.styles.borderTopWidth = _this.styles.borderRightWidth = _this.styles.borderBottomWidth = _this.styles.borderLeftWidth = 1;
  4481. _this.styles.borderTopStyle = _this.styles.borderRightStyle = _this.styles.borderBottomStyle = _this.styles.borderLeftStyle = 1;
  4482. _this.styles.backgroundClip = [
  4483. 0
  4484. /* BORDER_BOX */
  4485. ];
  4486. _this.styles.backgroundOrigin = [
  4487. 0
  4488. /* BORDER_BOX */
  4489. ];
  4490. _this.bounds = reformatInputBounds(_this.bounds);
  4491. }
  4492. switch (_this.type) {
  4493. case CHECKBOX:
  4494. _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = CHECKBOX_BORDER_RADIUS;
  4495. break;
  4496. case RADIO:
  4497. _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = RADIO_BORDER_RADIUS;
  4498. break;
  4499. }
  4500. return _this;
  4501. }
  4502. return InputElementContainer2;
  4503. }(ElementContainer);
  4504. SelectElementContainer = /** @class */
  4505. function(_super) {
  4506. __extends(SelectElementContainer2, _super);
  4507. function SelectElementContainer2(context, element) {
  4508. var _this = _super.call(this, context, element) || this;
  4509. var option = element.options[element.selectedIndex || 0];
  4510. _this.value = option ? option.text || "" : "";
  4511. return _this;
  4512. }
  4513. return SelectElementContainer2;
  4514. }(ElementContainer);
  4515. TextareaElementContainer = /** @class */
  4516. function(_super) {
  4517. __extends(TextareaElementContainer2, _super);
  4518. function TextareaElementContainer2(context, element) {
  4519. var _this = _super.call(this, context, element) || this;
  4520. _this.value = element.value;
  4521. return _this;
  4522. }
  4523. return TextareaElementContainer2;
  4524. }(ElementContainer);
  4525. IFrameElementContainer = /** @class */
  4526. function(_super) {
  4527. __extends(IFrameElementContainer2, _super);
  4528. function IFrameElementContainer2(context, iframe) {
  4529. var _this = _super.call(this, context, iframe) || this;
  4530. _this.src = iframe.src;
  4531. _this.width = parseInt(iframe.width, 10) || 0;
  4532. _this.height = parseInt(iframe.height, 10) || 0;
  4533. _this.backgroundColor = _this.styles.backgroundColor;
  4534. try {
  4535. if (iframe.contentWindow && iframe.contentWindow.document && iframe.contentWindow.document.documentElement) {
  4536. _this.tree = parseTree(context, iframe.contentWindow.document.documentElement);
  4537. var documentBackgroundColor = iframe.contentWindow.document.documentElement ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor) : COLORS.TRANSPARENT;
  4538. var bodyBackgroundColor = iframe.contentWindow.document.body ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor) : COLORS.TRANSPARENT;
  4539. _this.backgroundColor = isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? _this.styles.backgroundColor : bodyBackgroundColor : documentBackgroundColor;
  4540. }
  4541. } catch (e2) {
  4542. }
  4543. return _this;
  4544. }
  4545. return IFrameElementContainer2;
  4546. }(ElementContainer);
  4547. LIST_OWNERS = ["OL", "UL", "MENU"];
  4548. parseNodeTree = function(context, node, parent, root) {
  4549. for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {
  4550. nextNode = childNode.nextSibling;
  4551. if (isTextNode(childNode) && childNode.data.trim().length > 0) {
  4552. parent.textNodes.push(new TextContainer(context, childNode, parent.styles));
  4553. } else if (isElementNode(childNode)) {
  4554. if (isSlotElement(childNode) && childNode.assignedNodes) {
  4555. childNode.assignedNodes().forEach(function(childNode2) {
  4556. return parseNodeTree(context, childNode2, parent, root);
  4557. });
  4558. } else {
  4559. var container = createContainer(context, childNode);
  4560. if (container.styles.isVisible()) {
  4561. if (createsRealStackingContext(childNode, container, root)) {
  4562. container.flags |= 4;
  4563. } else if (createsStackingContext(container.styles)) {
  4564. container.flags |= 2;
  4565. }
  4566. if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {
  4567. container.flags |= 8;
  4568. }
  4569. parent.elements.push(container);
  4570. childNode.slot;
  4571. if (childNode.shadowRoot) {
  4572. parseNodeTree(context, childNode.shadowRoot, container, root);
  4573. } else if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) {
  4574. parseNodeTree(context, childNode, container, root);
  4575. }
  4576. }
  4577. }
  4578. }
  4579. }
  4580. };
  4581. createContainer = function(context, element) {
  4582. if (isImageElement(element)) {
  4583. return new ImageElementContainer(context, element);
  4584. }
  4585. if (isCanvasElement(element)) {
  4586. return new CanvasElementContainer(context, element);
  4587. }
  4588. if (isSVGElement(element)) {
  4589. return new SVGElementContainer(context, element);
  4590. }
  4591. if (isLIElement(element)) {
  4592. return new LIElementContainer(context, element);
  4593. }
  4594. if (isOLElement(element)) {
  4595. return new OLElementContainer(context, element);
  4596. }
  4597. if (isInputElement(element)) {
  4598. return new InputElementContainer(context, element);
  4599. }
  4600. if (isSelectElement(element)) {
  4601. return new SelectElementContainer(context, element);
  4602. }
  4603. if (isTextareaElement(element)) {
  4604. return new TextareaElementContainer(context, element);
  4605. }
  4606. if (isIFrameElement(element)) {
  4607. return new IFrameElementContainer(context, element);
  4608. }
  4609. return new ElementContainer(context, element);
  4610. };
  4611. parseTree = function(context, element) {
  4612. var container = createContainer(context, element);
  4613. container.flags |= 4;
  4614. parseNodeTree(context, element, container, container);
  4615. return container;
  4616. };
  4617. createsRealStackingContext = function(node, container, root) {
  4618. return container.styles.isPositionedWithZIndex() || container.styles.opacity < 1 || container.styles.isTransformed() || isBodyElement(node) && root.styles.isTransparent();
  4619. };
  4620. createsStackingContext = function(styles) {
  4621. return styles.isPositioned() || styles.isFloating();
  4622. };
  4623. isTextNode = function(node) {
  4624. return node.nodeType === Node.TEXT_NODE;
  4625. };
  4626. isElementNode = function(node) {
  4627. return node.nodeType === Node.ELEMENT_NODE;
  4628. };
  4629. isHTMLElementNode = function(node) {
  4630. return isElementNode(node) && typeof node.style !== "undefined" && !isSVGElementNode(node);
  4631. };
  4632. isSVGElementNode = function(element) {
  4633. return typeof element.className === "object";
  4634. };
  4635. isLIElement = function(node) {
  4636. return node.tagName === "LI";
  4637. };
  4638. isOLElement = function(node) {
  4639. return node.tagName === "OL";
  4640. };
  4641. isInputElement = function(node) {
  4642. return node.tagName === "INPUT";
  4643. };
  4644. isHTMLElement = function(node) {
  4645. return node.tagName === "HTML";
  4646. };
  4647. isSVGElement = function(node) {
  4648. return node.tagName === "svg";
  4649. };
  4650. isBodyElement = function(node) {
  4651. return node.tagName === "BODY";
  4652. };
  4653. isCanvasElement = function(node) {
  4654. return node.tagName === "CANVAS";
  4655. };
  4656. isVideoElement = function(node) {
  4657. return node.tagName === "VIDEO";
  4658. };
  4659. isImageElement = function(node) {
  4660. return node.tagName === "IMG";
  4661. };
  4662. isIFrameElement = function(node) {
  4663. return node.tagName === "IFRAME";
  4664. };
  4665. isStyleElement = function(node) {
  4666. return node.tagName === "STYLE";
  4667. };
  4668. isScriptElement = function(node) {
  4669. return node.tagName === "SCRIPT";
  4670. };
  4671. isTextareaElement = function(node) {
  4672. return node.tagName === "TEXTAREA";
  4673. };
  4674. isSelectElement = function(node) {
  4675. return node.tagName === "SELECT";
  4676. };
  4677. isSlotElement = function(node) {
  4678. return node.tagName === "SLOT";
  4679. };
  4680. isCustomElement = function(node) {
  4681. return node.tagName.indexOf("-") > 0;
  4682. };
  4683. CounterState = /** @class */
  4684. function() {
  4685. function CounterState2() {
  4686. this.counters = {};
  4687. }
  4688. CounterState2.prototype.getCounterValue = function(name) {
  4689. var counter = this.counters[name];
  4690. if (counter && counter.length) {
  4691. return counter[counter.length - 1];
  4692. }
  4693. return 1;
  4694. };
  4695. CounterState2.prototype.getCounterValues = function(name) {
  4696. var counter = this.counters[name];
  4697. return counter ? counter : [];
  4698. };
  4699. CounterState2.prototype.pop = function(counters) {
  4700. var _this = this;
  4701. counters.forEach(function(counter) {
  4702. return _this.counters[counter].pop();
  4703. });
  4704. };
  4705. CounterState2.prototype.parse = function(style) {
  4706. var _this = this;
  4707. var counterIncrement2 = style.counterIncrement;
  4708. var counterReset2 = style.counterReset;
  4709. var canReset = true;
  4710. if (counterIncrement2 !== null) {
  4711. counterIncrement2.forEach(function(entry) {
  4712. var counter = _this.counters[entry.counter];
  4713. if (counter && entry.increment !== 0) {
  4714. canReset = false;
  4715. if (!counter.length) {
  4716. counter.push(1);
  4717. }
  4718. counter[Math.max(0, counter.length - 1)] += entry.increment;
  4719. }
  4720. });
  4721. }
  4722. var counterNames = [];
  4723. if (canReset) {
  4724. counterReset2.forEach(function(entry) {
  4725. var counter = _this.counters[entry.counter];
  4726. counterNames.push(entry.counter);
  4727. if (!counter) {
  4728. counter = _this.counters[entry.counter] = [];
  4729. }
  4730. counter.push(entry.reset);
  4731. });
  4732. }
  4733. return counterNames;
  4734. };
  4735. return CounterState2;
  4736. }();
  4737. ROMAN_UPPER = {
  4738. integers: [1e3, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
  4739. values: ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
  4740. };
  4741. ARMENIAN = {
  4742. integers: [
  4743. 9e3,
  4744. 8e3,
  4745. 7e3,
  4746. 6e3,
  4747. 5e3,
  4748. 4e3,
  4749. 3e3,
  4750. 2e3,
  4751. 1e3,
  4752. 900,
  4753. 800,
  4754. 700,
  4755. 600,
  4756. 500,
  4757. 400,
  4758. 300,
  4759. 200,
  4760. 100,
  4761. 90,
  4762. 80,
  4763. 70,
  4764. 60,
  4765. 50,
  4766. 40,
  4767. 30,
  4768. 20,
  4769. 10,
  4770. 9,
  4771. 8,
  4772. 7,
  4773. 6,
  4774. 5,
  4775. 4,
  4776. 3,
  4777. 2,
  4778. 1
  4779. ],
  4780. values: [
  4781. "Ք",
  4782. "Փ",
  4783. "Ւ",
  4784. "Ց",
  4785. "Ր",
  4786. "Տ",
  4787. "Վ",
  4788. "Ս",
  4789. "Ռ",
  4790. "Ջ",
  4791. "Պ",
  4792. "Չ",
  4793. "Ո",
  4794. "Շ",
  4795. "Ն",
  4796. "Յ",
  4797. "Մ",
  4798. "Ճ",
  4799. "Ղ",
  4800. "Ձ",
  4801. "Հ",
  4802. "Կ",
  4803. "Ծ",
  4804. "Խ",
  4805. "Լ",
  4806. "Ի",
  4807. "Ժ",
  4808. "Թ",
  4809. "Ը",
  4810. "Է",
  4811. "Զ",
  4812. "Ե",
  4813. "Դ",
  4814. "Գ",
  4815. "Բ",
  4816. "Ա"
  4817. ]
  4818. };
  4819. HEBREW = {
  4820. integers: [
  4821. 1e4,
  4822. 9e3,
  4823. 8e3,
  4824. 7e3,
  4825. 6e3,
  4826. 5e3,
  4827. 4e3,
  4828. 3e3,
  4829. 2e3,
  4830. 1e3,
  4831. 400,
  4832. 300,
  4833. 200,
  4834. 100,
  4835. 90,
  4836. 80,
  4837. 70,
  4838. 60,
  4839. 50,
  4840. 40,
  4841. 30,
  4842. 20,
  4843. 19,
  4844. 18,
  4845. 17,
  4846. 16,
  4847. 15,
  4848. 10,
  4849. 9,
  4850. 8,
  4851. 7,
  4852. 6,
  4853. 5,
  4854. 4,
  4855. 3,
  4856. 2,
  4857. 1
  4858. ],
  4859. values: [
  4860. "י׳",
  4861. "ט׳",
  4862. "ח׳",
  4863. "ז׳",
  4864. "ו׳",
  4865. "ה׳",
  4866. "ד׳",
  4867. "ג׳",
  4868. "ב׳",
  4869. "א׳",
  4870. "ת",
  4871. "ש",
  4872. "ר",
  4873. "ק",
  4874. "צ",
  4875. "פ",
  4876. "ע",
  4877. "ס",
  4878. "נ",
  4879. "מ",
  4880. "ל",
  4881. "כ",
  4882. "יט",
  4883. "יח",
  4884. "יז",
  4885. "טז",
  4886. "טו",
  4887. "י",
  4888. "ט",
  4889. "ח",
  4890. "ז",
  4891. "ו",
  4892. "ה",
  4893. "ד",
  4894. "ג",
  4895. "ב",
  4896. "א"
  4897. ]
  4898. };
  4899. GEORGIAN = {
  4900. integers: [
  4901. 1e4,
  4902. 9e3,
  4903. 8e3,
  4904. 7e3,
  4905. 6e3,
  4906. 5e3,
  4907. 4e3,
  4908. 3e3,
  4909. 2e3,
  4910. 1e3,
  4911. 900,
  4912. 800,
  4913. 700,
  4914. 600,
  4915. 500,
  4916. 400,
  4917. 300,
  4918. 200,
  4919. 100,
  4920. 90,
  4921. 80,
  4922. 70,
  4923. 60,
  4924. 50,
  4925. 40,
  4926. 30,
  4927. 20,
  4928. 10,
  4929. 9,
  4930. 8,
  4931. 7,
  4932. 6,
  4933. 5,
  4934. 4,
  4935. 3,
  4936. 2,
  4937. 1
  4938. ],
  4939. values: [
  4940. "ჵ",
  4941. "ჰ",
  4942. "ჯ",
  4943. "ჴ",
  4944. "ხ",
  4945. "ჭ",
  4946. "წ",
  4947. "ძ",
  4948. "ც",
  4949. "ჩ",
  4950. "შ",
  4951. "ყ",
  4952. "ღ",
  4953. "ქ",
  4954. "ფ",
  4955. "ჳ",
  4956. "ტ",
  4957. "ს",
  4958. "რ",
  4959. "ჟ",
  4960. "პ",
  4961. "ო",
  4962. "ჲ",
  4963. "ნ",
  4964. "მ",
  4965. "ლ",
  4966. "კ",
  4967. "ი",
  4968. "თ",
  4969. "ჱ",
  4970. "ზ",
  4971. "ვ",
  4972. "ე",
  4973. "დ",
  4974. "გ",
  4975. "ბ",
  4976. "ა"
  4977. ]
  4978. };
  4979. createAdditiveCounter = function(value, min, max, symbols, fallback, suffix) {
  4980. if (value < min || value > max) {
  4981. return createCounterText(value, fallback, suffix.length > 0);
  4982. }
  4983. return symbols.integers.reduce(function(string, integer, index) {
  4984. while (value >= integer) {
  4985. value -= integer;
  4986. string += symbols.values[index];
  4987. }
  4988. return string;
  4989. }, "") + suffix;
  4990. };
  4991. createCounterStyleWithSymbolResolver = function(value, codePointRangeLength, isNumeric, resolver) {
  4992. var string = "";
  4993. do {
  4994. if (!isNumeric) {
  4995. value--;
  4996. }
  4997. string = resolver(value) + string;
  4998. value /= codePointRangeLength;
  4999. } while (value * codePointRangeLength >= codePointRangeLength);
  5000. return string;
  5001. };
  5002. createCounterStyleFromRange = function(value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {
  5003. var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;
  5004. return (value < 0 ? "-" : "") + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function(codePoint) {
  5005. return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);
  5006. }) + suffix);
  5007. };
  5008. createCounterStyleFromSymbols = function(value, symbols, suffix) {
  5009. if (suffix === void 0) {
  5010. suffix = ". ";
  5011. }
  5012. var codePointRangeLength = symbols.length;
  5013. return createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function(codePoint) {
  5014. return symbols[Math.floor(codePoint % codePointRangeLength)];
  5015. }) + suffix;
  5016. };
  5017. CJK_ZEROS = 1 << 0;
  5018. CJK_TEN_COEFFICIENTS = 1 << 1;
  5019. CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;
  5020. CJK_HUNDRED_COEFFICIENTS = 1 << 3;
  5021. createCJKCounter = function(value, numbers, multipliers, negativeSign, suffix, flags) {
  5022. if (value < -9999 || value > 9999) {
  5023. return createCounterText(value, 4, suffix.length > 0);
  5024. }
  5025. var tmp = Math.abs(value);
  5026. var string = suffix;
  5027. if (tmp === 0) {
  5028. return numbers[0] + string;
  5029. }
  5030. for (var digit = 0; tmp > 0 && digit <= 4; digit++) {
  5031. var coefficient = tmp % 10;
  5032. if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== "") {
  5033. string = numbers[coefficient] + string;
  5034. } else if (coefficient > 1 || coefficient === 1 && digit === 0 || coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS) || coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100 || coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS)) {
  5035. string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : "") + string;
  5036. } else if (coefficient === 1 && digit > 0) {
  5037. string = multipliers[digit - 1] + string;
  5038. }
  5039. tmp = Math.floor(tmp / 10);
  5040. }
  5041. return (value < 0 ? negativeSign : "") + string;
  5042. };
  5043. CHINESE_INFORMAL_MULTIPLIERS = "十百千萬";
  5044. CHINESE_FORMAL_MULTIPLIERS = "拾佰仟萬";
  5045. JAPANESE_NEGATIVE = "マイナス";
  5046. KOREAN_NEGATIVE = "마이너스";
  5047. createCounterText = function(value, type, appendSuffix) {
  5048. var defaultSuffix = appendSuffix ? ". " : "";
  5049. var cjkSuffix = appendSuffix ? "、" : "";
  5050. var koreanSuffix = appendSuffix ? ", " : "";
  5051. var spaceSuffix = appendSuffix ? " " : "";
  5052. switch (type) {
  5053. case 0:
  5054. return "•" + spaceSuffix;
  5055. case 1:
  5056. return "◦" + spaceSuffix;
  5057. case 2:
  5058. return "◾" + spaceSuffix;
  5059. case 5:
  5060. var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
  5061. return string.length < 4 ? "0" + string : string;
  5062. case 4:
  5063. return createCounterStyleFromSymbols(value, "〇一二三四五六七八九", cjkSuffix);
  5064. case 6:
  5065. return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3, defaultSuffix).toLowerCase();
  5066. case 7:
  5067. return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3, defaultSuffix);
  5068. case 8:
  5069. return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);
  5070. case 9:
  5071. return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);
  5072. case 10:
  5073. return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);
  5074. case 11:
  5075. return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);
  5076. case 12:
  5077. case 49:
  5078. return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3, defaultSuffix);
  5079. case 35:
  5080. return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3, defaultSuffix).toLowerCase();
  5081. case 13:
  5082. return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);
  5083. case 14:
  5084. case 30:
  5085. return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);
  5086. case 15:
  5087. return createCounterStyleFromSymbols(value, "子丑寅卯辰巳午未申酉戌亥", cjkSuffix);
  5088. case 16:
  5089. return createCounterStyleFromSymbols(value, "甲乙丙丁戊己庚辛壬癸", cjkSuffix);
  5090. case 17:
  5091. case 48:
  5092. return createCJKCounter(value, "零一二三四五六七八九", CHINESE_INFORMAL_MULTIPLIERS, "負", cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
  5093. case 47:
  5094. return createCJKCounter(value, "零壹貳參肆伍陸柒捌玖", CHINESE_FORMAL_MULTIPLIERS, "負", cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
  5095. case 42:
  5096. return createCJKCounter(value, "零一二三四五六七八九", CHINESE_INFORMAL_MULTIPLIERS, "负", cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
  5097. case 41:
  5098. return createCJKCounter(value, "零壹贰叁肆伍陆柒捌玖", CHINESE_FORMAL_MULTIPLIERS, "负", cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
  5099. case 26:
  5100. return createCJKCounter(value, "〇一二三四五六七八九", "十百千万", JAPANESE_NEGATIVE, cjkSuffix, 0);
  5101. case 25:
  5102. return createCJKCounter(value, "零壱弐参四伍六七八九", "拾百千万", JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
  5103. case 31:
  5104. return createCJKCounter(value, "영일이삼사오육칠팔구", "십백천만", KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
  5105. case 33:
  5106. return createCJKCounter(value, "零一二三四五六七八九", "十百千萬", KOREAN_NEGATIVE, koreanSuffix, 0);
  5107. case 32:
  5108. return createCJKCounter(value, "零壹貳參四五六七八九", "拾百千", KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
  5109. case 18:
  5110. return createCounterStyleFromRange(value, 2406, 2415, true, defaultSuffix);
  5111. case 20:
  5112. return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3, defaultSuffix);
  5113. case 21:
  5114. return createCounterStyleFromRange(value, 2790, 2799, true, defaultSuffix);
  5115. case 22:
  5116. return createCounterStyleFromRange(value, 2662, 2671, true, defaultSuffix);
  5117. case 22:
  5118. return createAdditiveCounter(value, 1, 10999, HEBREW, 3, defaultSuffix);
  5119. case 23:
  5120. return createCounterStyleFromSymbols(value, "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");
  5121. case 24:
  5122. return createCounterStyleFromSymbols(value, "いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");
  5123. case 27:
  5124. return createCounterStyleFromRange(value, 3302, 3311, true, defaultSuffix);
  5125. case 28:
  5126. return createCounterStyleFromSymbols(value, "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン", cjkSuffix);
  5127. case 29:
  5128. return createCounterStyleFromSymbols(value, "イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス", cjkSuffix);
  5129. case 34:
  5130. return createCounterStyleFromRange(value, 3792, 3801, true, defaultSuffix);
  5131. case 37:
  5132. return createCounterStyleFromRange(value, 6160, 6169, true, defaultSuffix);
  5133. case 38:
  5134. return createCounterStyleFromRange(value, 4160, 4169, true, defaultSuffix);
  5135. case 39:
  5136. return createCounterStyleFromRange(value, 2918, 2927, true, defaultSuffix);
  5137. case 40:
  5138. return createCounterStyleFromRange(value, 1776, 1785, true, defaultSuffix);
  5139. case 43:
  5140. return createCounterStyleFromRange(value, 3046, 3055, true, defaultSuffix);
  5141. case 44:
  5142. return createCounterStyleFromRange(value, 3174, 3183, true, defaultSuffix);
  5143. case 45:
  5144. return createCounterStyleFromRange(value, 3664, 3673, true, defaultSuffix);
  5145. case 46:
  5146. return createCounterStyleFromRange(value, 3872, 3881, true, defaultSuffix);
  5147. case 3:
  5148. default:
  5149. return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
  5150. }
  5151. };
  5152. IGNORE_ATTRIBUTE = "data-html2canvas-ignore";
  5153. DocumentCloner = /** @class */
  5154. function() {
  5155. function DocumentCloner2(context, element, options) {
  5156. this.context = context;
  5157. this.options = options;
  5158. this.scrolledElements = [];
  5159. this.referenceElement = element;
  5160. this.counters = new CounterState();
  5161. this.quoteDepth = 0;
  5162. if (!element.ownerDocument) {
  5163. throw new Error("Cloned element does not have an owner document");
  5164. }
  5165. this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false);
  5166. }
  5167. DocumentCloner2.prototype.toIFrame = function(ownerDocument, windowSize) {
  5168. var _this = this;
  5169. var iframe = createIFrameContainer(ownerDocument, windowSize);
  5170. if (!iframe.contentWindow) {
  5171. return Promise.reject("Unable to find iframe window");
  5172. }
  5173. var scrollX = ownerDocument.defaultView.pageXOffset;
  5174. var scrollY = ownerDocument.defaultView.pageYOffset;
  5175. var cloneWindow = iframe.contentWindow;
  5176. var documentClone = cloneWindow.document;
  5177. var iframeLoad = iframeLoader(iframe).then(function() {
  5178. return __awaiter(_this, void 0, void 0, function() {
  5179. var onclone, referenceElement;
  5180. return __generator(this, function(_a) {
  5181. switch (_a.label) {
  5182. case 0:
  5183. this.scrolledElements.forEach(restoreNodeScroll);
  5184. if (cloneWindow) {
  5185. cloneWindow.scrollTo(windowSize.left, windowSize.top);
  5186. if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) && (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {
  5187. this.context.logger.warn("Unable to restore scroll position for cloned document");
  5188. this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0);
  5189. }
  5190. }
  5191. onclone = this.options.onclone;
  5192. referenceElement = this.clonedReferenceElement;
  5193. if (typeof referenceElement === "undefined") {
  5194. return [2, Promise.reject("Error finding the " + this.referenceElement.nodeName + " in the cloned document")];
  5195. }
  5196. if (!(documentClone.fonts && documentClone.fonts.ready))
  5197. return [3, 2];
  5198. return [4, documentClone.fonts.ready];
  5199. case 1:
  5200. _a.sent();
  5201. _a.label = 2;
  5202. case 2:
  5203. if (!/(AppleWebKit)/g.test(navigator.userAgent))
  5204. return [3, 4];
  5205. return [4, imagesReady(documentClone)];
  5206. case 3:
  5207. _a.sent();
  5208. _a.label = 4;
  5209. case 4:
  5210. if (typeof onclone === "function") {
  5211. return [2, Promise.resolve().then(function() {
  5212. return onclone(documentClone, referenceElement);
  5213. }).then(function() {
  5214. return iframe;
  5215. })];
  5216. }
  5217. return [2, iframe];
  5218. }
  5219. });
  5220. });
  5221. });
  5222. documentClone.open();
  5223. documentClone.write(serializeDoctype(document.doctype) + "<html></html>");
  5224. restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);
  5225. documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);
  5226. documentClone.close();
  5227. return iframeLoad;
  5228. };
  5229. DocumentCloner2.prototype.createElementClone = function(node) {
  5230. if (isDebugging(
  5231. node,
  5232. 2
  5233. /* CLONE */
  5234. )) {
  5235. debugger;
  5236. }
  5237. if (isCanvasElement(node)) {
  5238. return this.createCanvasClone(node);
  5239. }
  5240. if (isVideoElement(node)) {
  5241. return this.createVideoClone(node);
  5242. }
  5243. if (isStyleElement(node)) {
  5244. return this.createStyleClone(node);
  5245. }
  5246. var clone = node.cloneNode(false);
  5247. if (isImageElement(clone)) {
  5248. if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {
  5249. clone.src = node.currentSrc;
  5250. clone.srcset = "";
  5251. }
  5252. if (clone.loading === "lazy") {
  5253. clone.loading = "eager";
  5254. }
  5255. }
  5256. if (isCustomElement(clone)) {
  5257. return this.createCustomElementClone(clone);
  5258. }
  5259. return clone;
  5260. };
  5261. DocumentCloner2.prototype.createCustomElementClone = function(node) {
  5262. var clone = document.createElement("html2canvascustomelement");
  5263. copyCSSStyles(node.style, clone);
  5264. return clone;
  5265. };
  5266. DocumentCloner2.prototype.createStyleClone = function(node) {
  5267. try {
  5268. var sheet = node.sheet;
  5269. if (sheet && sheet.cssRules) {
  5270. var css = [].slice.call(sheet.cssRules, 0).reduce(function(css2, rule) {
  5271. if (rule && typeof rule.cssText === "string") {
  5272. return css2 + rule.cssText;
  5273. }
  5274. return css2;
  5275. }, "");
  5276. var style = node.cloneNode(false);
  5277. style.textContent = css;
  5278. return style;
  5279. }
  5280. } catch (e2) {
  5281. this.context.logger.error("Unable to access cssRules property", e2);
  5282. if (e2.name !== "SecurityError") {
  5283. throw e2;
  5284. }
  5285. }
  5286. return node.cloneNode(false);
  5287. };
  5288. DocumentCloner2.prototype.createCanvasClone = function(canvas) {
  5289. var _a;
  5290. if (this.options.inlineImages && canvas.ownerDocument) {
  5291. var img = canvas.ownerDocument.createElement("img");
  5292. try {
  5293. img.src = canvas.toDataURL();
  5294. return img;
  5295. } catch (e2) {
  5296. this.context.logger.info("Unable to inline canvas contents, canvas is tainted", canvas);
  5297. }
  5298. }
  5299. var clonedCanvas = canvas.cloneNode(false);
  5300. try {
  5301. clonedCanvas.width = canvas.width;
  5302. clonedCanvas.height = canvas.height;
  5303. var ctx = canvas.getContext("2d");
  5304. var clonedCtx = clonedCanvas.getContext("2d");
  5305. if (clonedCtx) {
  5306. if (!this.options.allowTaint && ctx) {
  5307. clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);
  5308. } else {
  5309. var gl = (_a = canvas.getContext("webgl2")) !== null && _a !== void 0 ? _a : canvas.getContext("webgl");
  5310. if (gl) {
  5311. var attribs = gl.getContextAttributes();
  5312. if ((attribs === null || attribs === void 0 ? void 0 : attribs.preserveDrawingBuffer) === false) {
  5313. this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false", canvas);
  5314. }
  5315. }
  5316. clonedCtx.drawImage(canvas, 0, 0);
  5317. }
  5318. }
  5319. return clonedCanvas;
  5320. } catch (e2) {
  5321. this.context.logger.info("Unable to clone canvas as it is tainted", canvas);
  5322. }
  5323. return clonedCanvas;
  5324. };
  5325. DocumentCloner2.prototype.createVideoClone = function(video) {
  5326. var canvas = video.ownerDocument.createElement("canvas");
  5327. canvas.width = video.offsetWidth;
  5328. canvas.height = video.offsetHeight;
  5329. var ctx = canvas.getContext("2d");
  5330. try {
  5331. if (ctx) {
  5332. ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
  5333. if (!this.options.allowTaint) {
  5334. ctx.getImageData(0, 0, canvas.width, canvas.height);
  5335. }
  5336. }
  5337. return canvas;
  5338. } catch (e2) {
  5339. this.context.logger.info("Unable to clone video as it is tainted", video);
  5340. }
  5341. var blankCanvas = video.ownerDocument.createElement("canvas");
  5342. blankCanvas.width = video.offsetWidth;
  5343. blankCanvas.height = video.offsetHeight;
  5344. return blankCanvas;
  5345. };
  5346. DocumentCloner2.prototype.appendChildNode = function(clone, child, copyStyles) {
  5347. if (!isElementNode(child) || !isScriptElement(child) && !child.hasAttribute(IGNORE_ATTRIBUTE) && (typeof this.options.ignoreElements !== "function" || !this.options.ignoreElements(child))) {
  5348. if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {
  5349. clone.appendChild(this.cloneNode(child, copyStyles));
  5350. }
  5351. }
  5352. };
  5353. DocumentCloner2.prototype.cloneChildNodes = function(node, clone, copyStyles) {
  5354. var _this = this;
  5355. for (var child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; child; child = child.nextSibling) {
  5356. if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === "function") {
  5357. var assignedNodes = child.assignedNodes();
  5358. if (assignedNodes.length) {
  5359. assignedNodes.forEach(function(assignedNode) {
  5360. return _this.appendChildNode(clone, assignedNode, copyStyles);
  5361. });
  5362. }
  5363. } else {
  5364. this.appendChildNode(clone, child, copyStyles);
  5365. }
  5366. }
  5367. };
  5368. DocumentCloner2.prototype.cloneNode = function(node, copyStyles) {
  5369. if (isTextNode(node)) {
  5370. return document.createTextNode(node.data);
  5371. }
  5372. if (!node.ownerDocument) {
  5373. return node.cloneNode(false);
  5374. }
  5375. var window2 = node.ownerDocument.defaultView;
  5376. if (window2 && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {
  5377. var clone = this.createElementClone(node);
  5378. clone.style.transitionProperty = "none";
  5379. var style = window2.getComputedStyle(node);
  5380. var styleBefore = window2.getComputedStyle(node, ":before");
  5381. var styleAfter = window2.getComputedStyle(node, ":after");
  5382. if (this.referenceElement === node && isHTMLElementNode(clone)) {
  5383. this.clonedReferenceElement = clone;
  5384. }
  5385. if (isBodyElement(clone)) {
  5386. createPseudoHideStyles(clone);
  5387. }
  5388. var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));
  5389. var before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);
  5390. if (isCustomElement(node)) {
  5391. copyStyles = true;
  5392. }
  5393. if (!isVideoElement(node)) {
  5394. this.cloneChildNodes(node, clone, copyStyles);
  5395. }
  5396. if (before) {
  5397. clone.insertBefore(before, clone.firstChild);
  5398. }
  5399. var after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);
  5400. if (after) {
  5401. clone.appendChild(after);
  5402. }
  5403. this.counters.pop(counters);
  5404. if (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node) || copyStyles) {
  5405. copyCSSStyles(style, clone);
  5406. }
  5407. if (node.scrollTop !== 0 || node.scrollLeft !== 0) {
  5408. this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);
  5409. }
  5410. if ((isTextareaElement(node) || isSelectElement(node)) && (isTextareaElement(clone) || isSelectElement(clone))) {
  5411. clone.value = node.value;
  5412. }
  5413. return clone;
  5414. }
  5415. return node.cloneNode(false);
  5416. };
  5417. DocumentCloner2.prototype.resolvePseudoContent = function(node, clone, style, pseudoElt) {
  5418. var _this = this;
  5419. if (!style) {
  5420. return;
  5421. }
  5422. var value = style.content;
  5423. var document2 = clone.ownerDocument;
  5424. if (!document2 || !value || value === "none" || value === "-moz-alt-content" || style.display === "none") {
  5425. return;
  5426. }
  5427. this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));
  5428. var declaration = new CSSParsedPseudoDeclaration(this.context, style);
  5429. var anonymousReplacedElement = document2.createElement("html2canvaspseudoelement");
  5430. copyCSSStyles(style, anonymousReplacedElement);
  5431. declaration.content.forEach(function(token) {
  5432. if (token.type === 0) {
  5433. anonymousReplacedElement.appendChild(document2.createTextNode(token.value));
  5434. } else if (token.type === 22) {
  5435. var img = document2.createElement("img");
  5436. img.src = token.value;
  5437. img.style.opacity = "1";
  5438. anonymousReplacedElement.appendChild(img);
  5439. } else if (token.type === 18) {
  5440. if (token.name === "attr") {
  5441. var attr = token.values.filter(isIdentToken);
  5442. if (attr.length) {
  5443. anonymousReplacedElement.appendChild(document2.createTextNode(node.getAttribute(attr[0].value) || ""));
  5444. }
  5445. } else if (token.name === "counter") {
  5446. var _a = token.values.filter(nonFunctionArgSeparator), counter = _a[0], counterStyle = _a[1];
  5447. if (counter && isIdentToken(counter)) {
  5448. var counterState = _this.counters.getCounterValue(counter.value);
  5449. var counterType = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3;
  5450. anonymousReplacedElement.appendChild(document2.createTextNode(createCounterText(counterState, counterType, false)));
  5451. }
  5452. } else if (token.name === "counters") {
  5453. var _b = token.values.filter(nonFunctionArgSeparator), counter = _b[0], delim = _b[1], counterStyle = _b[2];
  5454. if (counter && isIdentToken(counter)) {
  5455. var counterStates = _this.counters.getCounterValues(counter.value);
  5456. var counterType_1 = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3;
  5457. var separator = delim && delim.type === 0 ? delim.value : "";
  5458. var text = counterStates.map(function(value2) {
  5459. return createCounterText(value2, counterType_1, false);
  5460. }).join(separator);
  5461. anonymousReplacedElement.appendChild(document2.createTextNode(text));
  5462. }
  5463. } else
  5464. ;
  5465. } else if (token.type === 20) {
  5466. switch (token.value) {
  5467. case "open-quote":
  5468. anonymousReplacedElement.appendChild(document2.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true)));
  5469. break;
  5470. case "close-quote":
  5471. anonymousReplacedElement.appendChild(document2.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false)));
  5472. break;
  5473. default:
  5474. anonymousReplacedElement.appendChild(document2.createTextNode(token.value));
  5475. }
  5476. }
  5477. });
  5478. anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
  5479. var newClassName = pseudoElt === PseudoElementType.BEFORE ? " " + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE : " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
  5480. if (isSVGElementNode(clone)) {
  5481. clone.className.baseValue += newClassName;
  5482. } else {
  5483. clone.className += newClassName;
  5484. }
  5485. return anonymousReplacedElement;
  5486. };
  5487. DocumentCloner2.destroy = function(container) {
  5488. if (container.parentNode) {
  5489. container.parentNode.removeChild(container);
  5490. return true;
  5491. }
  5492. return false;
  5493. };
  5494. return DocumentCloner2;
  5495. }();
  5496. (function(PseudoElementType2) {
  5497. PseudoElementType2[PseudoElementType2["BEFORE"] = 0] = "BEFORE";
  5498. PseudoElementType2[PseudoElementType2["AFTER"] = 1] = "AFTER";
  5499. })(PseudoElementType || (PseudoElementType = {}));
  5500. createIFrameContainer = function(ownerDocument, bounds) {
  5501. var cloneIframeContainer = ownerDocument.createElement("iframe");
  5502. cloneIframeContainer.className = "html2canvas-container";
  5503. cloneIframeContainer.style.visibility = "hidden";
  5504. cloneIframeContainer.style.position = "fixed";
  5505. cloneIframeContainer.style.left = "-10000px";
  5506. cloneIframeContainer.style.top = "0px";
  5507. cloneIframeContainer.style.border = "0";
  5508. cloneIframeContainer.width = bounds.width.toString();
  5509. cloneIframeContainer.height = bounds.height.toString();
  5510. cloneIframeContainer.scrolling = "no";
  5511. cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, "true");
  5512. ownerDocument.body.appendChild(cloneIframeContainer);
  5513. return cloneIframeContainer;
  5514. };
  5515. imageReady = function(img) {
  5516. return new Promise(function(resolve) {
  5517. if (img.complete) {
  5518. resolve();
  5519. return;
  5520. }
  5521. if (!img.src) {
  5522. resolve();
  5523. return;
  5524. }
  5525. img.onload = resolve;
  5526. img.onerror = resolve;
  5527. });
  5528. };
  5529. imagesReady = function(document2) {
  5530. return Promise.all([].slice.call(document2.images, 0).map(imageReady));
  5531. };
  5532. iframeLoader = function(iframe) {
  5533. return new Promise(function(resolve, reject) {
  5534. var cloneWindow = iframe.contentWindow;
  5535. if (!cloneWindow) {
  5536. return reject("No window assigned for iframe");
  5537. }
  5538. var documentClone = cloneWindow.document;
  5539. cloneWindow.onload = iframe.onload = function() {
  5540. cloneWindow.onload = iframe.onload = null;
  5541. var interval = setInterval(function() {
  5542. if (documentClone.body.childNodes.length > 0 && documentClone.readyState === "complete") {
  5543. clearInterval(interval);
  5544. resolve(iframe);
  5545. }
  5546. }, 50);
  5547. };
  5548. });
  5549. };
  5550. ignoredStyleProperties = [
  5551. "all",
  5552. "d",
  5553. "content"
  5554. // Safari shows pseudoelements if content is set
  5555. ];
  5556. copyCSSStyles = function(style, target) {
  5557. for (var i = style.length - 1; i >= 0; i--) {
  5558. var property = style.item(i);
  5559. if (ignoredStyleProperties.indexOf(property) === -1) {
  5560. target.style.setProperty(property, style.getPropertyValue(property));
  5561. }
  5562. }
  5563. return target;
  5564. };
  5565. serializeDoctype = function(doctype) {
  5566. var str = "";
  5567. if (doctype) {
  5568. str += "<!DOCTYPE ";
  5569. if (doctype.name) {
  5570. str += doctype.name;
  5571. }
  5572. if (doctype.internalSubset) {
  5573. str += doctype.internalSubset;
  5574. }
  5575. if (doctype.publicId) {
  5576. str += '"' + doctype.publicId + '"';
  5577. }
  5578. if (doctype.systemId) {
  5579. str += '"' + doctype.systemId + '"';
  5580. }
  5581. str += ">";
  5582. }
  5583. return str;
  5584. };
  5585. restoreOwnerScroll = function(ownerDocument, x, y) {
  5586. if (ownerDocument && ownerDocument.defaultView && (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {
  5587. ownerDocument.defaultView.scrollTo(x, y);
  5588. }
  5589. };
  5590. restoreNodeScroll = function(_a) {
  5591. var element = _a[0], x = _a[1], y = _a[2];
  5592. element.scrollLeft = x;
  5593. element.scrollTop = y;
  5594. };
  5595. PSEUDO_BEFORE = ":before";
  5596. PSEUDO_AFTER = ":after";
  5597. PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = "___html2canvas___pseudoelement_before";
  5598. PSEUDO_HIDE_ELEMENT_CLASS_AFTER = "___html2canvas___pseudoelement_after";
  5599. PSEUDO_HIDE_ELEMENT_STYLE = '{\n content: "" !important;\n display: none !important;\n}';
  5600. createPseudoHideStyles = function(body) {
  5601. createStyles(body, "." + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + "\n ." + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE);
  5602. };
  5603. createStyles = function(body, styles) {
  5604. var document2 = body.ownerDocument;
  5605. if (document2) {
  5606. var style = document2.createElement("style");
  5607. style.textContent = styles;
  5608. body.appendChild(style);
  5609. }
  5610. };
  5611. CacheStorage = /** @class */
  5612. function() {
  5613. function CacheStorage2() {
  5614. }
  5615. CacheStorage2.getOrigin = function(url) {
  5616. var link = CacheStorage2._link;
  5617. if (!link) {
  5618. return "about:blank";
  5619. }
  5620. link.href = url;
  5621. link.href = link.href;
  5622. return link.protocol + link.hostname + link.port;
  5623. };
  5624. CacheStorage2.isSameOrigin = function(src) {
  5625. return CacheStorage2.getOrigin(src) === CacheStorage2._origin;
  5626. };
  5627. CacheStorage2.setContext = function(window2) {
  5628. CacheStorage2._link = window2.document.createElement("a");
  5629. CacheStorage2._origin = CacheStorage2.getOrigin(window2.location.href);
  5630. };
  5631. CacheStorage2._origin = "about:blank";
  5632. return CacheStorage2;
  5633. }();
  5634. Cache = /** @class */
  5635. function() {
  5636. function Cache2(context, _options) {
  5637. this.context = context;
  5638. this._options = _options;
  5639. this._cache = {};
  5640. }
  5641. Cache2.prototype.addImage = function(src) {
  5642. var result = Promise.resolve();
  5643. if (this.has(src)) {
  5644. return result;
  5645. }
  5646. if (isBlobImage(src) || isRenderable(src)) {
  5647. (this._cache[src] = this.loadImage(src)).catch(function() {
  5648. });
  5649. return result;
  5650. }
  5651. return result;
  5652. };
  5653. Cache2.prototype.match = function(src) {
  5654. return this._cache[src];
  5655. };
  5656. Cache2.prototype.loadImage = function(key) {
  5657. return __awaiter(this, void 0, void 0, function() {
  5658. var isSameOrigin, useCORS, useProxy, src;
  5659. var _this = this;
  5660. return __generator(this, function(_a) {
  5661. switch (_a.label) {
  5662. case 0:
  5663. isSameOrigin = CacheStorage.isSameOrigin(key);
  5664. useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;
  5665. useProxy = !isInlineImage(key) && !isSameOrigin && !isBlobImage(key) && typeof this._options.proxy === "string" && FEATURES.SUPPORT_CORS_XHR && !useCORS;
  5666. if (!isSameOrigin && this._options.allowTaint === false && !isInlineImage(key) && !isBlobImage(key) && !useProxy && !useCORS) {
  5667. return [
  5668. 2
  5669. /*return*/
  5670. ];
  5671. }
  5672. src = key;
  5673. if (!useProxy)
  5674. return [3, 2];
  5675. return [4, this.proxy(src)];
  5676. case 1:
  5677. src = _a.sent();
  5678. _a.label = 2;
  5679. case 2:
  5680. this.context.logger.debug("Added image " + key.substring(0, 256));
  5681. return [4, new Promise(function(resolve, reject) {
  5682. var img = new Image();
  5683. img.onload = function() {
  5684. return resolve(img);
  5685. };
  5686. img.onerror = reject;
  5687. if (isInlineBase64Image(src) || useCORS) {
  5688. img.crossOrigin = "anonymous";
  5689. }
  5690. img.src = src;
  5691. if (img.complete === true) {
  5692. setTimeout(function() {
  5693. return resolve(img);
  5694. }, 500);
  5695. }
  5696. if (_this._options.imageTimeout > 0) {
  5697. setTimeout(function() {
  5698. return reject("Timed out (" + _this._options.imageTimeout + "ms) loading image");
  5699. }, _this._options.imageTimeout);
  5700. }
  5701. })];
  5702. case 3:
  5703. return [2, _a.sent()];
  5704. }
  5705. });
  5706. });
  5707. };
  5708. Cache2.prototype.has = function(key) {
  5709. return typeof this._cache[key] !== "undefined";
  5710. };
  5711. Cache2.prototype.keys = function() {
  5712. return Promise.resolve(Object.keys(this._cache));
  5713. };
  5714. Cache2.prototype.proxy = function(src) {
  5715. var _this = this;
  5716. var proxy = this._options.proxy;
  5717. if (!proxy) {
  5718. throw new Error("No proxy defined");
  5719. }
  5720. var key = src.substring(0, 256);
  5721. return new Promise(function(resolve, reject) {
  5722. var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? "blob" : "text";
  5723. var xhr = new XMLHttpRequest();
  5724. xhr.onload = function() {
  5725. if (xhr.status === 200) {
  5726. if (responseType === "text") {
  5727. resolve(xhr.response);
  5728. } else {
  5729. var reader_1 = new FileReader();
  5730. reader_1.addEventListener("load", function() {
  5731. return resolve(reader_1.result);
  5732. }, false);
  5733. reader_1.addEventListener("error", function(e2) {
  5734. return reject(e2);
  5735. }, false);
  5736. reader_1.readAsDataURL(xhr.response);
  5737. }
  5738. } else {
  5739. reject("Failed to proxy resource " + key + " with status code " + xhr.status);
  5740. }
  5741. };
  5742. xhr.onerror = reject;
  5743. var queryString = proxy.indexOf("?") > -1 ? "&" : "?";
  5744. xhr.open("GET", "" + proxy + queryString + "url=" + encodeURIComponent(src) + "&responseType=" + responseType);
  5745. if (responseType !== "text" && xhr instanceof XMLHttpRequest) {
  5746. xhr.responseType = responseType;
  5747. }
  5748. if (_this._options.imageTimeout) {
  5749. var timeout_1 = _this._options.imageTimeout;
  5750. xhr.timeout = timeout_1;
  5751. xhr.ontimeout = function() {
  5752. return reject("Timed out (" + timeout_1 + "ms) proxying " + key);
  5753. };
  5754. }
  5755. xhr.send();
  5756. });
  5757. };
  5758. return Cache2;
  5759. }();
  5760. INLINE_SVG = /^data:image\/svg\+xml/i;
  5761. INLINE_BASE64 = /^data:image\/.*;base64,/i;
  5762. INLINE_IMG = /^data:image\/.*/i;
  5763. isRenderable = function(src) {
  5764. return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);
  5765. };
  5766. isInlineImage = function(src) {
  5767. return INLINE_IMG.test(src);
  5768. };
  5769. isInlineBase64Image = function(src) {
  5770. return INLINE_BASE64.test(src);
  5771. };
  5772. isBlobImage = function(src) {
  5773. return src.substr(0, 4) === "blob";
  5774. };
  5775. isSVG = function(src) {
  5776. return src.substr(-3).toLowerCase() === "svg" || INLINE_SVG.test(src);
  5777. };
  5778. Vector = /** @class */
  5779. function() {
  5780. function Vector2(x, y) {
  5781. this.type = 0;
  5782. this.x = x;
  5783. this.y = y;
  5784. }
  5785. Vector2.prototype.add = function(deltaX, deltaY) {
  5786. return new Vector2(this.x + deltaX, this.y + deltaY);
  5787. };
  5788. return Vector2;
  5789. }();
  5790. lerp = function(a2, b, t) {
  5791. return new Vector(a2.x + (b.x - a2.x) * t, a2.y + (b.y - a2.y) * t);
  5792. };
  5793. BezierCurve = /** @class */
  5794. function() {
  5795. function BezierCurve2(start, startControl, endControl, end) {
  5796. this.type = 1;
  5797. this.start = start;
  5798. this.startControl = startControl;
  5799. this.endControl = endControl;
  5800. this.end = end;
  5801. }
  5802. BezierCurve2.prototype.subdivide = function(t, firstHalf) {
  5803. var ab = lerp(this.start, this.startControl, t);
  5804. var bc = lerp(this.startControl, this.endControl, t);
  5805. var cd = lerp(this.endControl, this.end, t);
  5806. var abbc = lerp(ab, bc, t);
  5807. var bccd = lerp(bc, cd, t);
  5808. var dest = lerp(abbc, bccd, t);
  5809. return firstHalf ? new BezierCurve2(this.start, ab, abbc, dest) : new BezierCurve2(dest, bccd, cd, this.end);
  5810. };
  5811. BezierCurve2.prototype.add = function(deltaX, deltaY) {
  5812. return new BezierCurve2(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY));
  5813. };
  5814. BezierCurve2.prototype.reverse = function() {
  5815. return new BezierCurve2(this.end, this.endControl, this.startControl, this.start);
  5816. };
  5817. return BezierCurve2;
  5818. }();
  5819. isBezierCurve = function(path) {
  5820. return path.type === 1;
  5821. };
  5822. BoundCurves = /** @class */
  5823. function() {
  5824. function BoundCurves2(element) {
  5825. var styles = element.styles;
  5826. var bounds = element.bounds;
  5827. var _a = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height), tlh = _a[0], tlv = _a[1];
  5828. var _b = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height), trh = _b[0], trv = _b[1];
  5829. var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height), brh = _c[0], brv = _c[1];
  5830. var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height), blh = _d[0], blv = _d[1];
  5831. var factors = [];
  5832. factors.push((tlh + trh) / bounds.width);
  5833. factors.push((blh + brh) / bounds.width);
  5834. factors.push((tlv + blv) / bounds.height);
  5835. factors.push((trv + brv) / bounds.height);
  5836. var maxFactor = Math.max.apply(Math, factors);
  5837. if (maxFactor > 1) {
  5838. tlh /= maxFactor;
  5839. tlv /= maxFactor;
  5840. trh /= maxFactor;
  5841. trv /= maxFactor;
  5842. brh /= maxFactor;
  5843. brv /= maxFactor;
  5844. blh /= maxFactor;
  5845. blv /= maxFactor;
  5846. }
  5847. var topWidth = bounds.width - trh;
  5848. var rightHeight = bounds.height - brv;
  5849. var bottomWidth = bounds.width - brh;
  5850. var leftHeight = bounds.height - blv;
  5851. var borderTopWidth2 = styles.borderTopWidth;
  5852. var borderRightWidth2 = styles.borderRightWidth;
  5853. var borderBottomWidth2 = styles.borderBottomWidth;
  5854. var borderLeftWidth2 = styles.borderLeftWidth;
  5855. var paddingTop2 = getAbsoluteValue(styles.paddingTop, element.bounds.width);
  5856. var paddingRight2 = getAbsoluteValue(styles.paddingRight, element.bounds.width);
  5857. var paddingBottom2 = getAbsoluteValue(styles.paddingBottom, element.bounds.width);
  5858. var paddingLeft2 = getAbsoluteValue(styles.paddingLeft, element.bounds.width);
  5859. this.topLeftBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 3, bounds.top + borderTopWidth2 / 3, tlh - borderLeftWidth2 / 3, tlv - borderTopWidth2 / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 3, bounds.top + borderTopWidth2 / 3);
  5860. this.topRightBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 / 3, trh - borderRightWidth2 / 3, trv - borderTopWidth2 / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 3, bounds.top + borderTopWidth2 / 3);
  5861. this.bottomRightBorderDoubleOuterBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 / 3, brv - borderBottomWidth2 / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 3, bounds.top + bounds.height - borderBottomWidth2 / 3);
  5862. this.bottomLeftBorderDoubleOuterBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 3, bounds.top + leftHeight, blh - borderLeftWidth2 / 3, blv - borderBottomWidth2 / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 3, bounds.top + bounds.height - borderBottomWidth2 / 3);
  5863. this.topLeftBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3, tlh - borderLeftWidth2 * 2 / 3, tlv - borderTopWidth2 * 2 / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3);
  5864. this.topRightBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 * 2 / 3, trh - borderRightWidth2 * 2 / 3, trv - borderTopWidth2 * 2 / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3);
  5865. this.bottomRightBorderDoubleInnerBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 * 2 / 3, brv - borderBottomWidth2 * 2 / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 * 2 / 3, bounds.top + bounds.height - borderBottomWidth2 * 2 / 3);
  5866. this.bottomLeftBorderDoubleInnerBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + leftHeight, blh - borderLeftWidth2 * 2 / 3, blv - borderBottomWidth2 * 2 / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + bounds.height - borderBottomWidth2 * 2 / 3);
  5867. this.topLeftBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 2, bounds.top + borderTopWidth2 / 2, tlh - borderLeftWidth2 / 2, tlv - borderTopWidth2 / 2, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 2, bounds.top + borderTopWidth2 / 2);
  5868. this.topRightBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 / 2, trh - borderRightWidth2 / 2, trv - borderTopWidth2 / 2, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 2, bounds.top + borderTopWidth2 / 2);
  5869. this.bottomRightBorderStroke = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 / 2, brv - borderBottomWidth2 / 2, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 2, bounds.top + bounds.height - borderBottomWidth2 / 2);
  5870. this.bottomLeftBorderStroke = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 2, bounds.top + leftHeight, blh - borderLeftWidth2 / 2, blv - borderBottomWidth2 / 2, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 2, bounds.top + bounds.height - borderBottomWidth2 / 2);
  5871. this.topLeftBorderBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT) : new Vector(bounds.left, bounds.top);
  5872. this.topRightBorderBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width, bounds.top);
  5873. this.bottomRightBorderBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);
  5874. this.bottomLeftBorderBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT) : new Vector(bounds.left, bounds.top + bounds.height);
  5875. this.topLeftPaddingBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2, bounds.top + borderTopWidth2, Math.max(0, tlh - borderLeftWidth2), Math.max(0, tlv - borderTopWidth2), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2, bounds.top + borderTopWidth2);
  5876. this.topRightPaddingBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width - borderRightWidth2), bounds.top + borderTopWidth2, topWidth > bounds.width + borderRightWidth2 ? 0 : Math.max(0, trh - borderRightWidth2), Math.max(0, trv - borderTopWidth2), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2, bounds.top + borderTopWidth2);
  5877. this.bottomRightPaddingBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth2), bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth2), Math.max(0, brh - borderRightWidth2), Math.max(0, brv - borderBottomWidth2), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2, bounds.top + bounds.height - borderBottomWidth2);
  5878. this.bottomLeftPaddingBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2, bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth2), Math.max(0, blh - borderLeftWidth2), Math.max(0, blv - borderBottomWidth2), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2, bounds.top + bounds.height - borderBottomWidth2);
  5879. this.topLeftContentBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + borderTopWidth2 + paddingTop2, Math.max(0, tlh - (borderLeftWidth2 + paddingLeft2)), Math.max(0, tlv - (borderTopWidth2 + paddingTop2)), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + borderTopWidth2 + paddingTop2);
  5880. this.topRightContentBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth2 + paddingLeft2), bounds.top + borderTopWidth2 + paddingTop2, topWidth > bounds.width + borderLeftWidth2 + paddingLeft2 ? 0 : trh - borderLeftWidth2 + paddingLeft2, trv - (borderTopWidth2 + paddingTop2), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth2 + paddingRight2), bounds.top + borderTopWidth2 + paddingTop2);
  5881. this.bottomRightContentBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth2 + paddingLeft2)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth2 + paddingTop2), Math.max(0, brh - (borderRightWidth2 + paddingRight2)), brv - (borderBottomWidth2 + paddingBottom2), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth2 + paddingRight2), bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2));
  5882. this.bottomLeftContentBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth2 + paddingLeft2)), blv - (borderBottomWidth2 + paddingBottom2), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2));
  5883. }
  5884. return BoundCurves2;
  5885. }();
  5886. (function(CORNER2) {
  5887. CORNER2[CORNER2["TOP_LEFT"] = 0] = "TOP_LEFT";
  5888. CORNER2[CORNER2["TOP_RIGHT"] = 1] = "TOP_RIGHT";
  5889. CORNER2[CORNER2["BOTTOM_RIGHT"] = 2] = "BOTTOM_RIGHT";
  5890. CORNER2[CORNER2["BOTTOM_LEFT"] = 3] = "BOTTOM_LEFT";
  5891. })(CORNER || (CORNER = {}));
  5892. getCurvePoints = function(x, y, r1, r2, position2) {
  5893. var kappa = 4 * ((Math.sqrt(2) - 1) / 3);
  5894. var ox = r1 * kappa;
  5895. var oy = r2 * kappa;
  5896. var xm = x + r1;
  5897. var ym = y + r2;
  5898. switch (position2) {
  5899. case CORNER.TOP_LEFT:
  5900. return new BezierCurve(new Vector(x, ym), new Vector(x, ym - oy), new Vector(xm - ox, y), new Vector(xm, y));
  5901. case CORNER.TOP_RIGHT:
  5902. return new BezierCurve(new Vector(x, y), new Vector(x + ox, y), new Vector(xm, ym - oy), new Vector(xm, ym));
  5903. case CORNER.BOTTOM_RIGHT:
  5904. return new BezierCurve(new Vector(xm, y), new Vector(xm, y + oy), new Vector(x + ox, ym), new Vector(x, ym));
  5905. case CORNER.BOTTOM_LEFT:
  5906. default:
  5907. return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x, y + oy), new Vector(x, y));
  5908. }
  5909. };
  5910. calculateBorderBoxPath = function(curves) {
  5911. return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];
  5912. };
  5913. calculateContentBoxPath = function(curves) {
  5914. return [
  5915. curves.topLeftContentBox,
  5916. curves.topRightContentBox,
  5917. curves.bottomRightContentBox,
  5918. curves.bottomLeftContentBox
  5919. ];
  5920. };
  5921. calculatePaddingBoxPath = function(curves) {
  5922. return [
  5923. curves.topLeftPaddingBox,
  5924. curves.topRightPaddingBox,
  5925. curves.bottomRightPaddingBox,
  5926. curves.bottomLeftPaddingBox
  5927. ];
  5928. };
  5929. TransformEffect = /** @class */
  5930. function() {
  5931. function TransformEffect2(offsetX, offsetY, matrix2) {
  5932. this.offsetX = offsetX;
  5933. this.offsetY = offsetY;
  5934. this.matrix = matrix2;
  5935. this.type = 0;
  5936. this.target = 2 | 4;
  5937. }
  5938. return TransformEffect2;
  5939. }();
  5940. ClipEffect = /** @class */
  5941. function() {
  5942. function ClipEffect2(path, target) {
  5943. this.path = path;
  5944. this.target = target;
  5945. this.type = 1;
  5946. }
  5947. return ClipEffect2;
  5948. }();
  5949. OpacityEffect = /** @class */
  5950. function() {
  5951. function OpacityEffect2(opacity2) {
  5952. this.opacity = opacity2;
  5953. this.type = 2;
  5954. this.target = 2 | 4;
  5955. }
  5956. return OpacityEffect2;
  5957. }();
  5958. isTransformEffect = function(effect) {
  5959. return effect.type === 0;
  5960. };
  5961. isClipEffect = function(effect) {
  5962. return effect.type === 1;
  5963. };
  5964. isOpacityEffect = function(effect) {
  5965. return effect.type === 2;
  5966. };
  5967. equalPath = function(a2, b) {
  5968. if (a2.length === b.length) {
  5969. return a2.some(function(v, i) {
  5970. return v === b[i];
  5971. });
  5972. }
  5973. return false;
  5974. };
  5975. transformPath = function(path, deltaX, deltaY, deltaW, deltaH) {
  5976. return path.map(function(point, index) {
  5977. switch (index) {
  5978. case 0:
  5979. return point.add(deltaX, deltaY);
  5980. case 1:
  5981. return point.add(deltaX + deltaW, deltaY);
  5982. case 2:
  5983. return point.add(deltaX + deltaW, deltaY + deltaH);
  5984. case 3:
  5985. return point.add(deltaX, deltaY + deltaH);
  5986. }
  5987. return point;
  5988. });
  5989. };
  5990. StackingContext = /** @class */
  5991. function() {
  5992. function StackingContext2(container) {
  5993. this.element = container;
  5994. this.inlineLevel = [];
  5995. this.nonInlineLevel = [];
  5996. this.negativeZIndex = [];
  5997. this.zeroOrAutoZIndexOrTransformedOrOpacity = [];
  5998. this.positiveZIndex = [];
  5999. this.nonPositionedFloats = [];
  6000. this.nonPositionedInlineLevel = [];
  6001. }
  6002. return StackingContext2;
  6003. }();
  6004. ElementPaint = /** @class */
  6005. function() {
  6006. function ElementPaint2(container, parent) {
  6007. this.container = container;
  6008. this.parent = parent;
  6009. this.effects = [];
  6010. this.curves = new BoundCurves(this.container);
  6011. if (this.container.styles.opacity < 1) {
  6012. this.effects.push(new OpacityEffect(this.container.styles.opacity));
  6013. }
  6014. if (this.container.styles.transform !== null) {
  6015. var offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;
  6016. var offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;
  6017. var matrix2 = this.container.styles.transform;
  6018. this.effects.push(new TransformEffect(offsetX, offsetY, matrix2));
  6019. }
  6020. if (this.container.styles.overflowX !== 0) {
  6021. var borderBox = calculateBorderBoxPath(this.curves);
  6022. var paddingBox2 = calculatePaddingBoxPath(this.curves);
  6023. if (equalPath(borderBox, paddingBox2)) {
  6024. this.effects.push(new ClipEffect(
  6025. borderBox,
  6026. 2 | 4
  6027. /* CONTENT */
  6028. ));
  6029. } else {
  6030. this.effects.push(new ClipEffect(
  6031. borderBox,
  6032. 2
  6033. /* BACKGROUND_BORDERS */
  6034. ));
  6035. this.effects.push(new ClipEffect(
  6036. paddingBox2,
  6037. 4
  6038. /* CONTENT */
  6039. ));
  6040. }
  6041. }
  6042. }
  6043. ElementPaint2.prototype.getEffects = function(target) {
  6044. var inFlow = [
  6045. 2,
  6046. 3
  6047. /* FIXED */
  6048. ].indexOf(this.container.styles.position) === -1;
  6049. var parent = this.parent;
  6050. var effects = this.effects.slice(0);
  6051. while (parent) {
  6052. var croplessEffects = parent.effects.filter(function(effect) {
  6053. return !isClipEffect(effect);
  6054. });
  6055. if (inFlow || parent.container.styles.position !== 0 || !parent.parent) {
  6056. effects.unshift.apply(effects, croplessEffects);
  6057. inFlow = [
  6058. 2,
  6059. 3
  6060. /* FIXED */
  6061. ].indexOf(parent.container.styles.position) === -1;
  6062. if (parent.container.styles.overflowX !== 0) {
  6063. var borderBox = calculateBorderBoxPath(parent.curves);
  6064. var paddingBox2 = calculatePaddingBoxPath(parent.curves);
  6065. if (!equalPath(borderBox, paddingBox2)) {
  6066. effects.unshift(new ClipEffect(
  6067. paddingBox2,
  6068. 2 | 4
  6069. /* CONTENT */
  6070. ));
  6071. }
  6072. }
  6073. } else {
  6074. effects.unshift.apply(effects, croplessEffects);
  6075. }
  6076. parent = parent.parent;
  6077. }
  6078. return effects.filter(function(effect) {
  6079. return contains(effect.target, target);
  6080. });
  6081. };
  6082. return ElementPaint2;
  6083. }();
  6084. parseStackTree = function(parent, stackingContext, realStackingContext, listItems) {
  6085. parent.container.elements.forEach(function(child) {
  6086. var treatAsRealStackingContext = contains(
  6087. child.flags,
  6088. 4
  6089. /* CREATES_REAL_STACKING_CONTEXT */
  6090. );
  6091. var createsStackingContext2 = contains(
  6092. child.flags,
  6093. 2
  6094. /* CREATES_STACKING_CONTEXT */
  6095. );
  6096. var paintContainer = new ElementPaint(child, parent);
  6097. if (contains(
  6098. child.styles.display,
  6099. 2048
  6100. /* LIST_ITEM */
  6101. )) {
  6102. listItems.push(paintContainer);
  6103. }
  6104. var listOwnerItems = contains(
  6105. child.flags,
  6106. 8
  6107. /* IS_LIST_OWNER */
  6108. ) ? [] : listItems;
  6109. if (treatAsRealStackingContext || createsStackingContext2) {
  6110. var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;
  6111. var stack = new StackingContext(paintContainer);
  6112. if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {
  6113. var order_1 = child.styles.zIndex.order;
  6114. if (order_1 < 0) {
  6115. var index_1 = 0;
  6116. parentStack.negativeZIndex.some(function(current, i) {
  6117. if (order_1 > current.element.container.styles.zIndex.order) {
  6118. index_1 = i;
  6119. return false;
  6120. } else if (index_1 > 0) {
  6121. return true;
  6122. }
  6123. return false;
  6124. });
  6125. parentStack.negativeZIndex.splice(index_1, 0, stack);
  6126. } else if (order_1 > 0) {
  6127. var index_2 = 0;
  6128. parentStack.positiveZIndex.some(function(current, i) {
  6129. if (order_1 >= current.element.container.styles.zIndex.order) {
  6130. index_2 = i + 1;
  6131. return false;
  6132. } else if (index_2 > 0) {
  6133. return true;
  6134. }
  6135. return false;
  6136. });
  6137. parentStack.positiveZIndex.splice(index_2, 0, stack);
  6138. } else {
  6139. parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);
  6140. }
  6141. } else {
  6142. if (child.styles.isFloating()) {
  6143. parentStack.nonPositionedFloats.push(stack);
  6144. } else {
  6145. parentStack.nonPositionedInlineLevel.push(stack);
  6146. }
  6147. }
  6148. parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems);
  6149. } else {
  6150. if (child.styles.isInlineLevel()) {
  6151. stackingContext.inlineLevel.push(paintContainer);
  6152. } else {
  6153. stackingContext.nonInlineLevel.push(paintContainer);
  6154. }
  6155. parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);
  6156. }
  6157. if (contains(
  6158. child.flags,
  6159. 8
  6160. /* IS_LIST_OWNER */
  6161. )) {
  6162. processListItems(child, listOwnerItems);
  6163. }
  6164. });
  6165. };
  6166. processListItems = function(owner, elements) {
  6167. var numbering = owner instanceof OLElementContainer ? owner.start : 1;
  6168. var reversed = owner instanceof OLElementContainer ? owner.reversed : false;
  6169. for (var i = 0; i < elements.length; i++) {
  6170. var item = elements[i];
  6171. if (item.container instanceof LIElementContainer && typeof item.container.value === "number" && item.container.value !== 0) {
  6172. numbering = item.container.value;
  6173. }
  6174. item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);
  6175. numbering += reversed ? -1 : 1;
  6176. }
  6177. };
  6178. parseStackingContexts = function(container) {
  6179. var paintContainer = new ElementPaint(container, null);
  6180. var root = new StackingContext(paintContainer);
  6181. var listItems = [];
  6182. parseStackTree(paintContainer, root, root, listItems);
  6183. processListItems(paintContainer.container, listItems);
  6184. return root;
  6185. };
  6186. parsePathForBorder = function(curves, borderSide) {
  6187. switch (borderSide) {
  6188. case 0:
  6189. return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox);
  6190. case 1:
  6191. return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox);
  6192. case 2:
  6193. return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox);
  6194. case 3:
  6195. default:
  6196. return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox);
  6197. }
  6198. };
  6199. parsePathForBorderDoubleOuter = function(curves, borderSide) {
  6200. switch (borderSide) {
  6201. case 0:
  6202. return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox, curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox);
  6203. case 1:
  6204. return createPathFromCurves(curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox, curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox);
  6205. case 2:
  6206. return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox, curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox);
  6207. case 3:
  6208. default:
  6209. return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox, curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox);
  6210. }
  6211. };
  6212. parsePathForBorderDoubleInner = function(curves, borderSide) {
  6213. switch (borderSide) {
  6214. case 0:
  6215. return createPathFromCurves(curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox, curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox);
  6216. case 1:
  6217. return createPathFromCurves(curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox, curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox);
  6218. case 2:
  6219. return createPathFromCurves(curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox);
  6220. case 3:
  6221. default:
  6222. return createPathFromCurves(curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox, curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox);
  6223. }
  6224. };
  6225. parsePathForBorderStroke = function(curves, borderSide) {
  6226. switch (borderSide) {
  6227. case 0:
  6228. return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);
  6229. case 1:
  6230. return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);
  6231. case 2:
  6232. return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);
  6233. case 3:
  6234. default:
  6235. return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);
  6236. }
  6237. };
  6238. createStrokePathFromCurves = function(outer1, outer2) {
  6239. var path = [];
  6240. if (isBezierCurve(outer1)) {
  6241. path.push(outer1.subdivide(0.5, false));
  6242. } else {
  6243. path.push(outer1);
  6244. }
  6245. if (isBezierCurve(outer2)) {
  6246. path.push(outer2.subdivide(0.5, true));
  6247. } else {
  6248. path.push(outer2);
  6249. }
  6250. return path;
  6251. };
  6252. createPathFromCurves = function(outer1, inner1, outer2, inner2) {
  6253. var path = [];
  6254. if (isBezierCurve(outer1)) {
  6255. path.push(outer1.subdivide(0.5, false));
  6256. } else {
  6257. path.push(outer1);
  6258. }
  6259. if (isBezierCurve(outer2)) {
  6260. path.push(outer2.subdivide(0.5, true));
  6261. } else {
  6262. path.push(outer2);
  6263. }
  6264. if (isBezierCurve(inner2)) {
  6265. path.push(inner2.subdivide(0.5, true).reverse());
  6266. } else {
  6267. path.push(inner2);
  6268. }
  6269. if (isBezierCurve(inner1)) {
  6270. path.push(inner1.subdivide(0.5, false).reverse());
  6271. } else {
  6272. path.push(inner1);
  6273. }
  6274. return path;
  6275. };
  6276. paddingBox = function(element) {
  6277. var bounds = element.bounds;
  6278. var styles = element.styles;
  6279. return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth));
  6280. };
  6281. contentBox = function(element) {
  6282. var styles = element.styles;
  6283. var bounds = element.bounds;
  6284. var paddingLeft2 = getAbsoluteValue(styles.paddingLeft, bounds.width);
  6285. var paddingRight2 = getAbsoluteValue(styles.paddingRight, bounds.width);
  6286. var paddingTop2 = getAbsoluteValue(styles.paddingTop, bounds.width);
  6287. var paddingBottom2 = getAbsoluteValue(styles.paddingBottom, bounds.width);
  6288. return bounds.add(paddingLeft2 + styles.borderLeftWidth, paddingTop2 + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft2 + paddingRight2), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop2 + paddingBottom2));
  6289. };
  6290. calculateBackgroundPositioningArea = function(backgroundOrigin2, element) {
  6291. if (backgroundOrigin2 === 0) {
  6292. return element.bounds;
  6293. }
  6294. if (backgroundOrigin2 === 2) {
  6295. return contentBox(element);
  6296. }
  6297. return paddingBox(element);
  6298. };
  6299. calculateBackgroundPaintingArea = function(backgroundClip2, element) {
  6300. if (backgroundClip2 === 0) {
  6301. return element.bounds;
  6302. }
  6303. if (backgroundClip2 === 2) {
  6304. return contentBox(element);
  6305. }
  6306. return paddingBox(element);
  6307. };
  6308. calculateBackgroundRendering = function(container, index, intrinsicSize) {
  6309. var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container);
  6310. var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index), container);
  6311. var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea);
  6312. var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1];
  6313. var position2 = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);
  6314. var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position2, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);
  6315. var offsetX = Math.round(backgroundPositioningArea.left + position2[0]);
  6316. var offsetY = Math.round(backgroundPositioningArea.top + position2[1]);
  6317. return [path, offsetX, offsetY, sizeWidth, sizeHeight];
  6318. };
  6319. isAuto = function(token) {
  6320. return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;
  6321. };
  6322. hasIntrinsicValue = function(value) {
  6323. return typeof value === "number";
  6324. };
  6325. calculateBackgroundSize = function(size, _a, bounds) {
  6326. var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2];
  6327. var first = size[0], second = size[1];
  6328. if (!first) {
  6329. return [0, 0];
  6330. }
  6331. if (isLengthPercentage(first) && second && isLengthPercentage(second)) {
  6332. return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];
  6333. }
  6334. var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);
  6335. if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {
  6336. if (hasIntrinsicValue(intrinsicProportion)) {
  6337. var targetRatio = bounds.width / bounds.height;
  6338. return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER) ? [bounds.width, bounds.width / intrinsicProportion] : [bounds.height * intrinsicProportion, bounds.height];
  6339. }
  6340. return [bounds.width, bounds.height];
  6341. }
  6342. var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);
  6343. var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);
  6344. var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;
  6345. if (isAuto(first) && (!second || isAuto(second))) {
  6346. if (hasIntrinsicWidth && hasIntrinsicHeight) {
  6347. return [intrinsicWidth, intrinsicHeight];
  6348. }
  6349. if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {
  6350. return [bounds.width, bounds.height];
  6351. }
  6352. if (hasIntrinsicDimensions && hasIntrinsicProportion) {
  6353. var width_1 = hasIntrinsicWidth ? intrinsicWidth : intrinsicHeight * intrinsicProportion;
  6354. var height_1 = hasIntrinsicHeight ? intrinsicHeight : intrinsicWidth / intrinsicProportion;
  6355. return [width_1, height_1];
  6356. }
  6357. var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width;
  6358. var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height;
  6359. return [width_2, height_2];
  6360. }
  6361. if (hasIntrinsicProportion) {
  6362. var width_3 = 0;
  6363. var height_3 = 0;
  6364. if (isLengthPercentage(first)) {
  6365. width_3 = getAbsoluteValue(first, bounds.width);
  6366. } else if (isLengthPercentage(second)) {
  6367. height_3 = getAbsoluteValue(second, bounds.height);
  6368. }
  6369. if (isAuto(first)) {
  6370. width_3 = height_3 * intrinsicProportion;
  6371. } else if (!second || isAuto(second)) {
  6372. height_3 = width_3 / intrinsicProportion;
  6373. }
  6374. return [width_3, height_3];
  6375. }
  6376. var width = null;
  6377. var height = null;
  6378. if (isLengthPercentage(first)) {
  6379. width = getAbsoluteValue(first, bounds.width);
  6380. } else if (second && isLengthPercentage(second)) {
  6381. height = getAbsoluteValue(second, bounds.height);
  6382. }
  6383. if (width !== null && (!second || isAuto(second))) {
  6384. height = hasIntrinsicWidth && hasIntrinsicHeight ? width / intrinsicWidth * intrinsicHeight : bounds.height;
  6385. }
  6386. if (height !== null && isAuto(first)) {
  6387. width = hasIntrinsicWidth && hasIntrinsicHeight ? height / intrinsicHeight * intrinsicWidth : bounds.width;
  6388. }
  6389. if (width !== null && height !== null) {
  6390. return [width, height];
  6391. }
  6392. throw new Error("Unable to calculate background-size for element");
  6393. };
  6394. getBackgroundValueForIndex = function(values, index) {
  6395. var value = values[index];
  6396. if (typeof value === "undefined") {
  6397. return values[0];
  6398. }
  6399. return value;
  6400. };
  6401. calculateBackgroundRepeatPath = function(repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) {
  6402. var x = _a[0], y = _a[1];
  6403. var width = _b[0], height = _b[1];
  6404. switch (repeat) {
  6405. case 2:
  6406. return [
  6407. new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),
  6408. new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y)),
  6409. new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y)),
  6410. new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y))
  6411. ];
  6412. case 3:
  6413. return [
  6414. new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),
  6415. new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top)),
  6416. new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),
  6417. new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))
  6418. ];
  6419. case 1:
  6420. return [
  6421. new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y)),
  6422. new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y)),
  6423. new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y + height)),
  6424. new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y + height))
  6425. ];
  6426. default:
  6427. return [
  6428. new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),
  6429. new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)),
  6430. new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)),
  6431. new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top))
  6432. ];
  6433. }
  6434. };
  6435. SMALL_IMAGE = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";
  6436. SAMPLE_TEXT = "Hidden Text";
  6437. FontMetrics = /** @class */
  6438. function() {
  6439. function FontMetrics2(document2) {
  6440. this._data = {};
  6441. this._document = document2;
  6442. }
  6443. FontMetrics2.prototype.parseMetrics = function(fontFamily2, fontSize2) {
  6444. var container = this._document.createElement("div");
  6445. var img = this._document.createElement("img");
  6446. var span = this._document.createElement("span");
  6447. var body = this._document.body;
  6448. container.style.visibility = "hidden";
  6449. container.style.fontFamily = fontFamily2;
  6450. container.style.fontSize = fontSize2;
  6451. container.style.margin = "0";
  6452. container.style.padding = "0";
  6453. container.style.whiteSpace = "nowrap";
  6454. body.appendChild(container);
  6455. img.src = SMALL_IMAGE;
  6456. img.width = 1;
  6457. img.height = 1;
  6458. img.style.margin = "0";
  6459. img.style.padding = "0";
  6460. img.style.verticalAlign = "baseline";
  6461. span.style.fontFamily = fontFamily2;
  6462. span.style.fontSize = fontSize2;
  6463. span.style.margin = "0";
  6464. span.style.padding = "0";
  6465. span.appendChild(this._document.createTextNode(SAMPLE_TEXT));
  6466. container.appendChild(span);
  6467. container.appendChild(img);
  6468. var baseline = img.offsetTop - span.offsetTop + 2;
  6469. container.removeChild(span);
  6470. container.appendChild(this._document.createTextNode(SAMPLE_TEXT));
  6471. container.style.lineHeight = "normal";
  6472. img.style.verticalAlign = "super";
  6473. var middle = img.offsetTop - container.offsetTop + 2;
  6474. body.removeChild(container);
  6475. return { baseline, middle };
  6476. };
  6477. FontMetrics2.prototype.getMetrics = function(fontFamily2, fontSize2) {
  6478. var key = fontFamily2 + " " + fontSize2;
  6479. if (typeof this._data[key] === "undefined") {
  6480. this._data[key] = this.parseMetrics(fontFamily2, fontSize2);
  6481. }
  6482. return this._data[key];
  6483. };
  6484. return FontMetrics2;
  6485. }();
  6486. Renderer = /** @class */
  6487. function() {
  6488. function Renderer2(context, options) {
  6489. this.context = context;
  6490. this.options = options;
  6491. }
  6492. return Renderer2;
  6493. }();
  6494. MASK_OFFSET = 1e4;
  6495. CanvasRenderer = /** @class */
  6496. function(_super) {
  6497. __extends(CanvasRenderer2, _super);
  6498. function CanvasRenderer2(context, options) {
  6499. var _this = _super.call(this, context, options) || this;
  6500. _this._activeEffects = [];
  6501. _this.canvas = options.canvas ? options.canvas : document.createElement("canvas");
  6502. _this.ctx = _this.canvas.getContext("2d");
  6503. if (!options.canvas) {
  6504. _this.canvas.width = Math.floor(options.width * options.scale);
  6505. _this.canvas.height = Math.floor(options.height * options.scale);
  6506. _this.canvas.style.width = options.width + "px";
  6507. _this.canvas.style.height = options.height + "px";
  6508. }
  6509. _this.fontMetrics = new FontMetrics(document);
  6510. _this.ctx.scale(_this.options.scale, _this.options.scale);
  6511. _this.ctx.translate(-options.x, -options.y);
  6512. _this.ctx.textBaseline = "bottom";
  6513. _this._activeEffects = [];
  6514. _this.context.logger.debug("Canvas renderer initialized (" + options.width + "x" + options.height + ") with scale " + options.scale);
  6515. return _this;
  6516. }
  6517. CanvasRenderer2.prototype.applyEffects = function(effects) {
  6518. var _this = this;
  6519. while (this._activeEffects.length) {
  6520. this.popEffect();
  6521. }
  6522. effects.forEach(function(effect) {
  6523. return _this.applyEffect(effect);
  6524. });
  6525. };
  6526. CanvasRenderer2.prototype.applyEffect = function(effect) {
  6527. this.ctx.save();
  6528. if (isOpacityEffect(effect)) {
  6529. this.ctx.globalAlpha = effect.opacity;
  6530. }
  6531. if (isTransformEffect(effect)) {
  6532. this.ctx.translate(effect.offsetX, effect.offsetY);
  6533. this.ctx.transform(effect.matrix[0], effect.matrix[1], effect.matrix[2], effect.matrix[3], effect.matrix[4], effect.matrix[5]);
  6534. this.ctx.translate(-effect.offsetX, -effect.offsetY);
  6535. }
  6536. if (isClipEffect(effect)) {
  6537. this.path(effect.path);
  6538. this.ctx.clip();
  6539. }
  6540. this._activeEffects.push(effect);
  6541. };
  6542. CanvasRenderer2.prototype.popEffect = function() {
  6543. this._activeEffects.pop();
  6544. this.ctx.restore();
  6545. };
  6546. CanvasRenderer2.prototype.renderStack = function(stack) {
  6547. return __awaiter(this, void 0, void 0, function() {
  6548. var styles;
  6549. return __generator(this, function(_a) {
  6550. switch (_a.label) {
  6551. case 0:
  6552. styles = stack.element.container.styles;
  6553. if (!styles.isVisible())
  6554. return [3, 2];
  6555. return [4, this.renderStackContent(stack)];
  6556. case 1:
  6557. _a.sent();
  6558. _a.label = 2;
  6559. case 2:
  6560. return [
  6561. 2
  6562. /*return*/
  6563. ];
  6564. }
  6565. });
  6566. });
  6567. };
  6568. CanvasRenderer2.prototype.renderNode = function(paint) {
  6569. return __awaiter(this, void 0, void 0, function() {
  6570. return __generator(this, function(_a) {
  6571. switch (_a.label) {
  6572. case 0:
  6573. if (contains(
  6574. paint.container.flags,
  6575. 16
  6576. /* DEBUG_RENDER */
  6577. )) {
  6578. debugger;
  6579. }
  6580. if (!paint.container.styles.isVisible())
  6581. return [3, 3];
  6582. return [4, this.renderNodeBackgroundAndBorders(paint)];
  6583. case 1:
  6584. _a.sent();
  6585. return [4, this.renderNodeContent(paint)];
  6586. case 2:
  6587. _a.sent();
  6588. _a.label = 3;
  6589. case 3:
  6590. return [
  6591. 2
  6592. /*return*/
  6593. ];
  6594. }
  6595. });
  6596. });
  6597. };
  6598. CanvasRenderer2.prototype.renderTextWithLetterSpacing = function(text, letterSpacing2, baseline) {
  6599. var _this = this;
  6600. if (letterSpacing2 === 0) {
  6601. this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);
  6602. } else {
  6603. var letters = segmentGraphemes(text.text);
  6604. letters.reduce(function(left, letter) {
  6605. _this.ctx.fillText(letter, left, text.bounds.top + baseline);
  6606. return left + _this.ctx.measureText(letter).width;
  6607. }, text.bounds.left);
  6608. }
  6609. };
  6610. CanvasRenderer2.prototype.createFontStyle = function(styles) {
  6611. var fontVariant2 = styles.fontVariant.filter(function(variant) {
  6612. return variant === "normal" || variant === "small-caps";
  6613. }).join("");
  6614. var fontFamily2 = fixIOSSystemFonts(styles.fontFamily).join(", ");
  6615. var fontSize2 = isDimensionToken(styles.fontSize) ? "" + styles.fontSize.number + styles.fontSize.unit : styles.fontSize.number + "px";
  6616. return [
  6617. [styles.fontStyle, fontVariant2, styles.fontWeight, fontSize2, fontFamily2].join(" "),
  6618. fontFamily2,
  6619. fontSize2
  6620. ];
  6621. };
  6622. CanvasRenderer2.prototype.renderTextNode = function(text, styles) {
  6623. return __awaiter(this, void 0, void 0, function() {
  6624. var _a, font, fontFamily2, fontSize2, _b, baseline, middle, paintOrder2;
  6625. var _this = this;
  6626. return __generator(this, function(_c) {
  6627. _a = this.createFontStyle(styles), font = _a[0], fontFamily2 = _a[1], fontSize2 = _a[2];
  6628. this.ctx.font = font;
  6629. this.ctx.direction = styles.direction === 1 ? "rtl" : "ltr";
  6630. this.ctx.textAlign = "left";
  6631. this.ctx.textBaseline = "alphabetic";
  6632. _b = this.fontMetrics.getMetrics(fontFamily2, fontSize2), baseline = _b.baseline, middle = _b.middle;
  6633. paintOrder2 = styles.paintOrder;
  6634. text.textBounds.forEach(function(text2) {
  6635. paintOrder2.forEach(function(paintOrderLayer) {
  6636. switch (paintOrderLayer) {
  6637. case 0:
  6638. _this.ctx.fillStyle = asString(styles.color);
  6639. _this.renderTextWithLetterSpacing(text2, styles.letterSpacing, baseline);
  6640. var textShadows = styles.textShadow;
  6641. if (textShadows.length && text2.text.trim().length) {
  6642. textShadows.slice(0).reverse().forEach(function(textShadow2) {
  6643. _this.ctx.shadowColor = asString(textShadow2.color);
  6644. _this.ctx.shadowOffsetX = textShadow2.offsetX.number * _this.options.scale;
  6645. _this.ctx.shadowOffsetY = textShadow2.offsetY.number * _this.options.scale;
  6646. _this.ctx.shadowBlur = textShadow2.blur.number;
  6647. _this.renderTextWithLetterSpacing(text2, styles.letterSpacing, baseline);
  6648. });
  6649. _this.ctx.shadowColor = "";
  6650. _this.ctx.shadowOffsetX = 0;
  6651. _this.ctx.shadowOffsetY = 0;
  6652. _this.ctx.shadowBlur = 0;
  6653. }
  6654. if (styles.textDecorationLine.length) {
  6655. _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);
  6656. styles.textDecorationLine.forEach(function(textDecorationLine2) {
  6657. switch (textDecorationLine2) {
  6658. case 1:
  6659. _this.ctx.fillRect(text2.bounds.left, Math.round(text2.bounds.top + baseline), text2.bounds.width, 1);
  6660. break;
  6661. case 2:
  6662. _this.ctx.fillRect(text2.bounds.left, Math.round(text2.bounds.top), text2.bounds.width, 1);
  6663. break;
  6664. case 3:
  6665. _this.ctx.fillRect(text2.bounds.left, Math.ceil(text2.bounds.top + middle), text2.bounds.width, 1);
  6666. break;
  6667. }
  6668. });
  6669. }
  6670. break;
  6671. case 1:
  6672. if (styles.webkitTextStrokeWidth && text2.text.trim().length) {
  6673. _this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);
  6674. _this.ctx.lineWidth = styles.webkitTextStrokeWidth;
  6675. _this.ctx.lineJoin = !!window.chrome ? "miter" : "round";
  6676. _this.ctx.strokeText(text2.text, text2.bounds.left, text2.bounds.top + baseline);
  6677. }
  6678. _this.ctx.strokeStyle = "";
  6679. _this.ctx.lineWidth = 0;
  6680. _this.ctx.lineJoin = "miter";
  6681. break;
  6682. }
  6683. });
  6684. });
  6685. return [
  6686. 2
  6687. /*return*/
  6688. ];
  6689. });
  6690. });
  6691. };
  6692. CanvasRenderer2.prototype.renderReplacedElement = function(container, curves, image2) {
  6693. if (image2 && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {
  6694. var box = contentBox(container);
  6695. var path = calculatePaddingBoxPath(curves);
  6696. this.path(path);
  6697. this.ctx.save();
  6698. this.ctx.clip();
  6699. this.ctx.drawImage(image2, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height);
  6700. this.ctx.restore();
  6701. }
  6702. };
  6703. CanvasRenderer2.prototype.renderNodeContent = function(paint) {
  6704. return __awaiter(this, void 0, void 0, function() {
  6705. var container, curves, styles, _i, _a, child, image2, image2, iframeRenderer, canvas, size, _b, fontFamily2, fontSize2, baseline, bounds, x, textBounds, img, image2, url, fontFamily2, bounds;
  6706. return __generator(this, function(_c) {
  6707. switch (_c.label) {
  6708. case 0:
  6709. this.applyEffects(paint.getEffects(
  6710. 4
  6711. /* CONTENT */
  6712. ));
  6713. container = paint.container;
  6714. curves = paint.curves;
  6715. styles = container.styles;
  6716. _i = 0, _a = container.textNodes;
  6717. _c.label = 1;
  6718. case 1:
  6719. if (!(_i < _a.length))
  6720. return [3, 4];
  6721. child = _a[_i];
  6722. return [4, this.renderTextNode(child, styles)];
  6723. case 2:
  6724. _c.sent();
  6725. _c.label = 3;
  6726. case 3:
  6727. _i++;
  6728. return [3, 1];
  6729. case 4:
  6730. if (!(container instanceof ImageElementContainer))
  6731. return [3, 8];
  6732. _c.label = 5;
  6733. case 5:
  6734. _c.trys.push([5, 7, , 8]);
  6735. return [4, this.context.cache.match(container.src)];
  6736. case 6:
  6737. image2 = _c.sent();
  6738. this.renderReplacedElement(container, curves, image2);
  6739. return [3, 8];
  6740. case 7:
  6741. _c.sent();
  6742. this.context.logger.error("Error loading image " + container.src);
  6743. return [3, 8];
  6744. case 8:
  6745. if (container instanceof CanvasElementContainer) {
  6746. this.renderReplacedElement(container, curves, container.canvas);
  6747. }
  6748. if (!(container instanceof SVGElementContainer))
  6749. return [3, 12];
  6750. _c.label = 9;
  6751. case 9:
  6752. _c.trys.push([9, 11, , 12]);
  6753. return [4, this.context.cache.match(container.svg)];
  6754. case 10:
  6755. image2 = _c.sent();
  6756. this.renderReplacedElement(container, curves, image2);
  6757. return [3, 12];
  6758. case 11:
  6759. _c.sent();
  6760. this.context.logger.error("Error loading svg " + container.svg.substring(0, 255));
  6761. return [3, 12];
  6762. case 12:
  6763. if (!(container instanceof IFrameElementContainer && container.tree))
  6764. return [3, 14];
  6765. iframeRenderer = new CanvasRenderer2(this.context, {
  6766. scale: this.options.scale,
  6767. backgroundColor: container.backgroundColor,
  6768. x: 0,
  6769. y: 0,
  6770. width: container.width,
  6771. height: container.height
  6772. });
  6773. return [4, iframeRenderer.render(container.tree)];
  6774. case 13:
  6775. canvas = _c.sent();
  6776. if (container.width && container.height) {
  6777. this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height);
  6778. }
  6779. _c.label = 14;
  6780. case 14:
  6781. if (container instanceof InputElementContainer) {
  6782. size = Math.min(container.bounds.width, container.bounds.height);
  6783. if (container.type === CHECKBOX) {
  6784. if (container.checked) {
  6785. this.ctx.save();
  6786. this.path([
  6787. new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),
  6788. new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),
  6789. new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),
  6790. new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),
  6791. new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),
  6792. new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),
  6793. new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)
  6794. ]);
  6795. this.ctx.fillStyle = asString(INPUT_COLOR);
  6796. this.ctx.fill();
  6797. this.ctx.restore();
  6798. }
  6799. } else if (container.type === RADIO) {
  6800. if (container.checked) {
  6801. this.ctx.save();
  6802. this.ctx.beginPath();
  6803. this.ctx.arc(container.bounds.left + size / 2, container.bounds.top + size / 2, size / 4, 0, Math.PI * 2, true);
  6804. this.ctx.fillStyle = asString(INPUT_COLOR);
  6805. this.ctx.fill();
  6806. this.ctx.restore();
  6807. }
  6808. }
  6809. }
  6810. if (isTextInputElement(container) && container.value.length) {
  6811. _b = this.createFontStyle(styles), fontFamily2 = _b[0], fontSize2 = _b[1];
  6812. baseline = this.fontMetrics.getMetrics(fontFamily2, fontSize2).baseline;
  6813. this.ctx.font = fontFamily2;
  6814. this.ctx.fillStyle = asString(styles.color);
  6815. this.ctx.textBaseline = "alphabetic";
  6816. this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);
  6817. bounds = contentBox(container);
  6818. x = 0;
  6819. switch (container.styles.textAlign) {
  6820. case 1:
  6821. x += bounds.width / 2;
  6822. break;
  6823. case 2:
  6824. x += bounds.width;
  6825. break;
  6826. }
  6827. textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);
  6828. this.ctx.save();
  6829. this.path([
  6830. new Vector(bounds.left, bounds.top),
  6831. new Vector(bounds.left + bounds.width, bounds.top),
  6832. new Vector(bounds.left + bounds.width, bounds.top + bounds.height),
  6833. new Vector(bounds.left, bounds.top + bounds.height)
  6834. ]);
  6835. this.ctx.clip();
  6836. this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing, baseline);
  6837. this.ctx.restore();
  6838. this.ctx.textBaseline = "alphabetic";
  6839. this.ctx.textAlign = "left";
  6840. }
  6841. if (!contains(
  6842. container.styles.display,
  6843. 2048
  6844. /* LIST_ITEM */
  6845. ))
  6846. return [3, 20];
  6847. if (!(container.styles.listStyleImage !== null))
  6848. return [3, 19];
  6849. img = container.styles.listStyleImage;
  6850. if (!(img.type === 0))
  6851. return [3, 18];
  6852. image2 = void 0;
  6853. url = img.url;
  6854. _c.label = 15;
  6855. case 15:
  6856. _c.trys.push([15, 17, , 18]);
  6857. return [4, this.context.cache.match(url)];
  6858. case 16:
  6859. image2 = _c.sent();
  6860. this.ctx.drawImage(image2, container.bounds.left - (image2.width + 10), container.bounds.top);
  6861. return [3, 18];
  6862. case 17:
  6863. _c.sent();
  6864. this.context.logger.error("Error loading list-style-image " + url);
  6865. return [3, 18];
  6866. case 18:
  6867. return [3, 20];
  6868. case 19:
  6869. if (paint.listValue && container.styles.listStyleType !== -1) {
  6870. fontFamily2 = this.createFontStyle(styles)[0];
  6871. this.ctx.font = fontFamily2;
  6872. this.ctx.fillStyle = asString(styles.color);
  6873. this.ctx.textBaseline = "middle";
  6874. this.ctx.textAlign = "right";
  6875. bounds = new Bounds(container.bounds.left, container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width), container.bounds.width, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1);
  6876. this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2);
  6877. this.ctx.textBaseline = "bottom";
  6878. this.ctx.textAlign = "left";
  6879. }
  6880. _c.label = 20;
  6881. case 20:
  6882. return [
  6883. 2
  6884. /*return*/
  6885. ];
  6886. }
  6887. });
  6888. });
  6889. };
  6890. CanvasRenderer2.prototype.renderStackContent = function(stack) {
  6891. return __awaiter(this, void 0, void 0, function() {
  6892. var _i, _a, child, _b, _c, child, _d, _e, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child;
  6893. return __generator(this, function(_p) {
  6894. switch (_p.label) {
  6895. case 0:
  6896. if (contains(
  6897. stack.element.container.flags,
  6898. 16
  6899. /* DEBUG_RENDER */
  6900. )) {
  6901. debugger;
  6902. }
  6903. return [4, this.renderNodeBackgroundAndBorders(stack.element)];
  6904. case 1:
  6905. _p.sent();
  6906. _i = 0, _a = stack.negativeZIndex;
  6907. _p.label = 2;
  6908. case 2:
  6909. if (!(_i < _a.length))
  6910. return [3, 5];
  6911. child = _a[_i];
  6912. return [4, this.renderStack(child)];
  6913. case 3:
  6914. _p.sent();
  6915. _p.label = 4;
  6916. case 4:
  6917. _i++;
  6918. return [3, 2];
  6919. case 5:
  6920. return [4, this.renderNodeContent(stack.element)];
  6921. case 6:
  6922. _p.sent();
  6923. _b = 0, _c = stack.nonInlineLevel;
  6924. _p.label = 7;
  6925. case 7:
  6926. if (!(_b < _c.length))
  6927. return [3, 10];
  6928. child = _c[_b];
  6929. return [4, this.renderNode(child)];
  6930. case 8:
  6931. _p.sent();
  6932. _p.label = 9;
  6933. case 9:
  6934. _b++;
  6935. return [3, 7];
  6936. case 10:
  6937. _d = 0, _e = stack.nonPositionedFloats;
  6938. _p.label = 11;
  6939. case 11:
  6940. if (!(_d < _e.length))
  6941. return [3, 14];
  6942. child = _e[_d];
  6943. return [4, this.renderStack(child)];
  6944. case 12:
  6945. _p.sent();
  6946. _p.label = 13;
  6947. case 13:
  6948. _d++;
  6949. return [3, 11];
  6950. case 14:
  6951. _f = 0, _g = stack.nonPositionedInlineLevel;
  6952. _p.label = 15;
  6953. case 15:
  6954. if (!(_f < _g.length))
  6955. return [3, 18];
  6956. child = _g[_f];
  6957. return [4, this.renderStack(child)];
  6958. case 16:
  6959. _p.sent();
  6960. _p.label = 17;
  6961. case 17:
  6962. _f++;
  6963. return [3, 15];
  6964. case 18:
  6965. _h = 0, _j = stack.inlineLevel;
  6966. _p.label = 19;
  6967. case 19:
  6968. if (!(_h < _j.length))
  6969. return [3, 22];
  6970. child = _j[_h];
  6971. return [4, this.renderNode(child)];
  6972. case 20:
  6973. _p.sent();
  6974. _p.label = 21;
  6975. case 21:
  6976. _h++;
  6977. return [3, 19];
  6978. case 22:
  6979. _k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity;
  6980. _p.label = 23;
  6981. case 23:
  6982. if (!(_k < _l.length))
  6983. return [3, 26];
  6984. child = _l[_k];
  6985. return [4, this.renderStack(child)];
  6986. case 24:
  6987. _p.sent();
  6988. _p.label = 25;
  6989. case 25:
  6990. _k++;
  6991. return [3, 23];
  6992. case 26:
  6993. _m = 0, _o = stack.positiveZIndex;
  6994. _p.label = 27;
  6995. case 27:
  6996. if (!(_m < _o.length))
  6997. return [3, 30];
  6998. child = _o[_m];
  6999. return [4, this.renderStack(child)];
  7000. case 28:
  7001. _p.sent();
  7002. _p.label = 29;
  7003. case 29:
  7004. _m++;
  7005. return [3, 27];
  7006. case 30:
  7007. return [
  7008. 2
  7009. /*return*/
  7010. ];
  7011. }
  7012. });
  7013. });
  7014. };
  7015. CanvasRenderer2.prototype.mask = function(paths) {
  7016. this.ctx.beginPath();
  7017. this.ctx.moveTo(0, 0);
  7018. this.ctx.lineTo(this.canvas.width, 0);
  7019. this.ctx.lineTo(this.canvas.width, this.canvas.height);
  7020. this.ctx.lineTo(0, this.canvas.height);
  7021. this.ctx.lineTo(0, 0);
  7022. this.formatPath(paths.slice(0).reverse());
  7023. this.ctx.closePath();
  7024. };
  7025. CanvasRenderer2.prototype.path = function(paths) {
  7026. this.ctx.beginPath();
  7027. this.formatPath(paths);
  7028. this.ctx.closePath();
  7029. };
  7030. CanvasRenderer2.prototype.formatPath = function(paths) {
  7031. var _this = this;
  7032. paths.forEach(function(point, index) {
  7033. var start = isBezierCurve(point) ? point.start : point;
  7034. if (index === 0) {
  7035. _this.ctx.moveTo(start.x, start.y);
  7036. } else {
  7037. _this.ctx.lineTo(start.x, start.y);
  7038. }
  7039. if (isBezierCurve(point)) {
  7040. _this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);
  7041. }
  7042. });
  7043. };
  7044. CanvasRenderer2.prototype.renderRepeat = function(path, pattern, offsetX, offsetY) {
  7045. this.path(path);
  7046. this.ctx.fillStyle = pattern;
  7047. this.ctx.translate(offsetX, offsetY);
  7048. this.ctx.fill();
  7049. this.ctx.translate(-offsetX, -offsetY);
  7050. };
  7051. CanvasRenderer2.prototype.resizeImage = function(image2, width, height) {
  7052. var _a;
  7053. if (image2.width === width && image2.height === height) {
  7054. return image2;
  7055. }
  7056. var ownerDocument = (_a = this.canvas.ownerDocument) !== null && _a !== void 0 ? _a : document;
  7057. var canvas = ownerDocument.createElement("canvas");
  7058. canvas.width = Math.max(1, width);
  7059. canvas.height = Math.max(1, height);
  7060. var ctx = canvas.getContext("2d");
  7061. ctx.drawImage(image2, 0, 0, image2.width, image2.height, 0, 0, width, height);
  7062. return canvas;
  7063. };
  7064. CanvasRenderer2.prototype.renderBackgroundImage = function(container) {
  7065. return __awaiter(this, void 0, void 0, function() {
  7066. var index, _loop_1, this_1, _i, _a, backgroundImage2;
  7067. return __generator(this, function(_b) {
  7068. switch (_b.label) {
  7069. case 0:
  7070. index = container.styles.backgroundImage.length - 1;
  7071. _loop_1 = function(backgroundImage3) {
  7072. var image2, url, _c, path, x, y, width, height, pattern, _d, path, x, y, width, height, _e, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _f, path, left, top_1, width, height, position2, x, y, _g, rx, ry, radialGradient_1, midX, midY, f2, invF;
  7073. return __generator(this, function(_h) {
  7074. switch (_h.label) {
  7075. case 0:
  7076. if (!(backgroundImage3.type === 0))
  7077. return [3, 5];
  7078. image2 = void 0;
  7079. url = backgroundImage3.url;
  7080. _h.label = 1;
  7081. case 1:
  7082. _h.trys.push([1, 3, , 4]);
  7083. return [4, this_1.context.cache.match(url)];
  7084. case 2:
  7085. image2 = _h.sent();
  7086. return [3, 4];
  7087. case 3:
  7088. _h.sent();
  7089. this_1.context.logger.error("Error loading background-image " + url);
  7090. return [3, 4];
  7091. case 4:
  7092. if (image2) {
  7093. _c = calculateBackgroundRendering(container, index, [
  7094. image2.width,
  7095. image2.height,
  7096. image2.width / image2.height
  7097. ]), path = _c[0], x = _c[1], y = _c[2], width = _c[3], height = _c[4];
  7098. pattern = this_1.ctx.createPattern(this_1.resizeImage(image2, width, height), "repeat");
  7099. this_1.renderRepeat(path, pattern, x, y);
  7100. }
  7101. return [3, 6];
  7102. case 5:
  7103. if (isLinearGradient(backgroundImage3)) {
  7104. _d = calculateBackgroundRendering(container, index, [null, null, null]), path = _d[0], x = _d[1], y = _d[2], width = _d[3], height = _d[4];
  7105. _e = calculateGradientDirection(backgroundImage3.angle, width, height), lineLength = _e[0], x0 = _e[1], x1 = _e[2], y0 = _e[3], y1 = _e[4];
  7106. canvas = document.createElement("canvas");
  7107. canvas.width = width;
  7108. canvas.height = height;
  7109. ctx = canvas.getContext("2d");
  7110. gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1);
  7111. processColorStops(backgroundImage3.stops, lineLength).forEach(function(colorStop) {
  7112. return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color));
  7113. });
  7114. ctx.fillStyle = gradient_1;
  7115. ctx.fillRect(0, 0, width, height);
  7116. if (width > 0 && height > 0) {
  7117. pattern = this_1.ctx.createPattern(canvas, "repeat");
  7118. this_1.renderRepeat(path, pattern, x, y);
  7119. }
  7120. } else if (isRadialGradient(backgroundImage3)) {
  7121. _f = calculateBackgroundRendering(container, index, [
  7122. null,
  7123. null,
  7124. null
  7125. ]), path = _f[0], left = _f[1], top_1 = _f[2], width = _f[3], height = _f[4];
  7126. position2 = backgroundImage3.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage3.position;
  7127. x = getAbsoluteValue(position2[0], width);
  7128. y = getAbsoluteValue(position2[position2.length - 1], height);
  7129. _g = calculateRadius(backgroundImage3, x, y, width, height), rx = _g[0], ry = _g[1];
  7130. if (rx > 0 && ry > 0) {
  7131. radialGradient_1 = this_1.ctx.createRadialGradient(left + x, top_1 + y, 0, left + x, top_1 + y, rx);
  7132. processColorStops(backgroundImage3.stops, rx * 2).forEach(function(colorStop) {
  7133. return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color));
  7134. });
  7135. this_1.path(path);
  7136. this_1.ctx.fillStyle = radialGradient_1;
  7137. if (rx !== ry) {
  7138. midX = container.bounds.left + 0.5 * container.bounds.width;
  7139. midY = container.bounds.top + 0.5 * container.bounds.height;
  7140. f2 = ry / rx;
  7141. invF = 1 / f2;
  7142. this_1.ctx.save();
  7143. this_1.ctx.translate(midX, midY);
  7144. this_1.ctx.transform(1, 0, 0, f2, 0, 0);
  7145. this_1.ctx.translate(-midX, -midY);
  7146. this_1.ctx.fillRect(left, invF * (top_1 - midY) + midY, width, height * invF);
  7147. this_1.ctx.restore();
  7148. } else {
  7149. this_1.ctx.fill();
  7150. }
  7151. }
  7152. }
  7153. _h.label = 6;
  7154. case 6:
  7155. index--;
  7156. return [
  7157. 2
  7158. /*return*/
  7159. ];
  7160. }
  7161. });
  7162. };
  7163. this_1 = this;
  7164. _i = 0, _a = container.styles.backgroundImage.slice(0).reverse();
  7165. _b.label = 1;
  7166. case 1:
  7167. if (!(_i < _a.length))
  7168. return [3, 4];
  7169. backgroundImage2 = _a[_i];
  7170. return [5, _loop_1(backgroundImage2)];
  7171. case 2:
  7172. _b.sent();
  7173. _b.label = 3;
  7174. case 3:
  7175. _i++;
  7176. return [3, 1];
  7177. case 4:
  7178. return [
  7179. 2
  7180. /*return*/
  7181. ];
  7182. }
  7183. });
  7184. });
  7185. };
  7186. CanvasRenderer2.prototype.renderSolidBorder = function(color2, side, curvePoints) {
  7187. return __awaiter(this, void 0, void 0, function() {
  7188. return __generator(this, function(_a) {
  7189. this.path(parsePathForBorder(curvePoints, side));
  7190. this.ctx.fillStyle = asString(color2);
  7191. this.ctx.fill();
  7192. return [
  7193. 2
  7194. /*return*/
  7195. ];
  7196. });
  7197. });
  7198. };
  7199. CanvasRenderer2.prototype.renderDoubleBorder = function(color2, width, side, curvePoints) {
  7200. return __awaiter(this, void 0, void 0, function() {
  7201. var outerPaths, innerPaths;
  7202. return __generator(this, function(_a) {
  7203. switch (_a.label) {
  7204. case 0:
  7205. if (!(width < 3))
  7206. return [3, 2];
  7207. return [4, this.renderSolidBorder(color2, side, curvePoints)];
  7208. case 1:
  7209. _a.sent();
  7210. return [
  7211. 2
  7212. /*return*/
  7213. ];
  7214. case 2:
  7215. outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);
  7216. this.path(outerPaths);
  7217. this.ctx.fillStyle = asString(color2);
  7218. this.ctx.fill();
  7219. innerPaths = parsePathForBorderDoubleInner(curvePoints, side);
  7220. this.path(innerPaths);
  7221. this.ctx.fill();
  7222. return [
  7223. 2
  7224. /*return*/
  7225. ];
  7226. }
  7227. });
  7228. });
  7229. };
  7230. CanvasRenderer2.prototype.renderNodeBackgroundAndBorders = function(paint) {
  7231. return __awaiter(this, void 0, void 0, function() {
  7232. var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border;
  7233. var _this = this;
  7234. return __generator(this, function(_a) {
  7235. switch (_a.label) {
  7236. case 0:
  7237. this.applyEffects(paint.getEffects(
  7238. 2
  7239. /* BACKGROUND_BORDERS */
  7240. ));
  7241. styles = paint.container.styles;
  7242. hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;
  7243. borders = [
  7244. { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth },
  7245. { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth },
  7246. { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth },
  7247. { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth }
  7248. ];
  7249. backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves);
  7250. if (!(hasBackground || styles.boxShadow.length))
  7251. return [3, 2];
  7252. this.ctx.save();
  7253. this.path(backgroundPaintingArea);
  7254. this.ctx.clip();
  7255. if (!isTransparent(styles.backgroundColor)) {
  7256. this.ctx.fillStyle = asString(styles.backgroundColor);
  7257. this.ctx.fill();
  7258. }
  7259. return [4, this.renderBackgroundImage(paint.container)];
  7260. case 1:
  7261. _a.sent();
  7262. this.ctx.restore();
  7263. styles.boxShadow.slice(0).reverse().forEach(function(shadow) {
  7264. _this.ctx.save();
  7265. var borderBoxArea = calculateBorderBoxPath(paint.curves);
  7266. var maskOffset = shadow.inset ? 0 : MASK_OFFSET;
  7267. var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2));
  7268. if (shadow.inset) {
  7269. _this.path(borderBoxArea);
  7270. _this.ctx.clip();
  7271. _this.mask(shadowPaintingArea);
  7272. } else {
  7273. _this.mask(borderBoxArea);
  7274. _this.ctx.clip();
  7275. _this.path(shadowPaintingArea);
  7276. }
  7277. _this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;
  7278. _this.ctx.shadowOffsetY = shadow.offsetY.number;
  7279. _this.ctx.shadowColor = asString(shadow.color);
  7280. _this.ctx.shadowBlur = shadow.blur.number;
  7281. _this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : "rgba(0,0,0,1)";
  7282. _this.ctx.fill();
  7283. _this.ctx.restore();
  7284. });
  7285. _a.label = 2;
  7286. case 2:
  7287. side = 0;
  7288. _i = 0, borders_1 = borders;
  7289. _a.label = 3;
  7290. case 3:
  7291. if (!(_i < borders_1.length))
  7292. return [3, 13];
  7293. border = borders_1[_i];
  7294. if (!(border.style !== 0 && !isTransparent(border.color) && border.width > 0))
  7295. return [3, 11];
  7296. if (!(border.style === 2))
  7297. return [3, 5];
  7298. return [4, this.renderDashedDottedBorder(
  7299. border.color,
  7300. border.width,
  7301. side,
  7302. paint.curves,
  7303. 2
  7304. /* DASHED */
  7305. )];
  7306. case 4:
  7307. _a.sent();
  7308. return [3, 11];
  7309. case 5:
  7310. if (!(border.style === 3))
  7311. return [3, 7];
  7312. return [4, this.renderDashedDottedBorder(
  7313. border.color,
  7314. border.width,
  7315. side,
  7316. paint.curves,
  7317. 3
  7318. /* DOTTED */
  7319. )];
  7320. case 6:
  7321. _a.sent();
  7322. return [3, 11];
  7323. case 7:
  7324. if (!(border.style === 4))
  7325. return [3, 9];
  7326. return [4, this.renderDoubleBorder(border.color, border.width, side, paint.curves)];
  7327. case 8:
  7328. _a.sent();
  7329. return [3, 11];
  7330. case 9:
  7331. return [4, this.renderSolidBorder(border.color, side, paint.curves)];
  7332. case 10:
  7333. _a.sent();
  7334. _a.label = 11;
  7335. case 11:
  7336. side++;
  7337. _a.label = 12;
  7338. case 12:
  7339. _i++;
  7340. return [3, 3];
  7341. case 13:
  7342. return [
  7343. 2
  7344. /*return*/
  7345. ];
  7346. }
  7347. });
  7348. });
  7349. };
  7350. CanvasRenderer2.prototype.renderDashedDottedBorder = function(color2, width, side, curvePoints, style) {
  7351. return __awaiter(this, void 0, void 0, function() {
  7352. var strokePaths, boxPaths, startX, startY, endX, endY, length, dashLength, spaceLength, useLineDash, multiplier, numberOfDashes, minSpace, maxSpace, path1, path2, path1, path2;
  7353. return __generator(this, function(_a) {
  7354. this.ctx.save();
  7355. strokePaths = parsePathForBorderStroke(curvePoints, side);
  7356. boxPaths = parsePathForBorder(curvePoints, side);
  7357. if (style === 2) {
  7358. this.path(boxPaths);
  7359. this.ctx.clip();
  7360. }
  7361. if (isBezierCurve(boxPaths[0])) {
  7362. startX = boxPaths[0].start.x;
  7363. startY = boxPaths[0].start.y;
  7364. } else {
  7365. startX = boxPaths[0].x;
  7366. startY = boxPaths[0].y;
  7367. }
  7368. if (isBezierCurve(boxPaths[1])) {
  7369. endX = boxPaths[1].end.x;
  7370. endY = boxPaths[1].end.y;
  7371. } else {
  7372. endX = boxPaths[1].x;
  7373. endY = boxPaths[1].y;
  7374. }
  7375. if (side === 0 || side === 2) {
  7376. length = Math.abs(startX - endX);
  7377. } else {
  7378. length = Math.abs(startY - endY);
  7379. }
  7380. this.ctx.beginPath();
  7381. if (style === 3) {
  7382. this.formatPath(strokePaths);
  7383. } else {
  7384. this.formatPath(boxPaths.slice(0, 2));
  7385. }
  7386. dashLength = width < 3 ? width * 3 : width * 2;
  7387. spaceLength = width < 3 ? width * 2 : width;
  7388. if (style === 3) {
  7389. dashLength = width;
  7390. spaceLength = width;
  7391. }
  7392. useLineDash = true;
  7393. if (length <= dashLength * 2) {
  7394. useLineDash = false;
  7395. } else if (length <= dashLength * 2 + spaceLength) {
  7396. multiplier = length / (2 * dashLength + spaceLength);
  7397. dashLength *= multiplier;
  7398. spaceLength *= multiplier;
  7399. } else {
  7400. numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));
  7401. minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);
  7402. maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;
  7403. spaceLength = maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace) ? minSpace : maxSpace;
  7404. }
  7405. if (useLineDash) {
  7406. if (style === 3) {
  7407. this.ctx.setLineDash([0, dashLength + spaceLength]);
  7408. } else {
  7409. this.ctx.setLineDash([dashLength, spaceLength]);
  7410. }
  7411. }
  7412. if (style === 3) {
  7413. this.ctx.lineCap = "round";
  7414. this.ctx.lineWidth = width;
  7415. } else {
  7416. this.ctx.lineWidth = width * 2 + 1.1;
  7417. }
  7418. this.ctx.strokeStyle = asString(color2);
  7419. this.ctx.stroke();
  7420. this.ctx.setLineDash([]);
  7421. if (style === 2) {
  7422. if (isBezierCurve(boxPaths[0])) {
  7423. path1 = boxPaths[3];
  7424. path2 = boxPaths[0];
  7425. this.ctx.beginPath();
  7426. this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);
  7427. this.ctx.stroke();
  7428. }
  7429. if (isBezierCurve(boxPaths[1])) {
  7430. path1 = boxPaths[1];
  7431. path2 = boxPaths[2];
  7432. this.ctx.beginPath();
  7433. this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);
  7434. this.ctx.stroke();
  7435. }
  7436. }
  7437. this.ctx.restore();
  7438. return [
  7439. 2
  7440. /*return*/
  7441. ];
  7442. });
  7443. });
  7444. };
  7445. CanvasRenderer2.prototype.render = function(element) {
  7446. return __awaiter(this, void 0, void 0, function() {
  7447. var stack;
  7448. return __generator(this, function(_a) {
  7449. switch (_a.label) {
  7450. case 0:
  7451. if (this.options.backgroundColor) {
  7452. this.ctx.fillStyle = asString(this.options.backgroundColor);
  7453. this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);
  7454. }
  7455. stack = parseStackingContexts(element);
  7456. return [4, this.renderStack(stack)];
  7457. case 1:
  7458. _a.sent();
  7459. this.applyEffects([]);
  7460. return [2, this.canvas];
  7461. }
  7462. });
  7463. });
  7464. };
  7465. return CanvasRenderer2;
  7466. }(Renderer);
  7467. isTextInputElement = function(container) {
  7468. if (container instanceof TextareaElementContainer) {
  7469. return true;
  7470. } else if (container instanceof SelectElementContainer) {
  7471. return true;
  7472. } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {
  7473. return true;
  7474. }
  7475. return false;
  7476. };
  7477. calculateBackgroundCurvedPaintingArea = function(clip, curves) {
  7478. switch (clip) {
  7479. case 0:
  7480. return calculateBorderBoxPath(curves);
  7481. case 2:
  7482. return calculateContentBoxPath(curves);
  7483. case 1:
  7484. default:
  7485. return calculatePaddingBoxPath(curves);
  7486. }
  7487. };
  7488. canvasTextAlign = function(textAlign2) {
  7489. switch (textAlign2) {
  7490. case 1:
  7491. return "center";
  7492. case 2:
  7493. return "right";
  7494. case 0:
  7495. default:
  7496. return "left";
  7497. }
  7498. };
  7499. iOSBrokenFonts = ["-apple-system", "system-ui"];
  7500. fixIOSSystemFonts = function(fontFamilies) {
  7501. return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent) ? fontFamilies.filter(function(fontFamily2) {
  7502. return iOSBrokenFonts.indexOf(fontFamily2) === -1;
  7503. }) : fontFamilies;
  7504. };
  7505. ForeignObjectRenderer = /** @class */
  7506. function(_super) {
  7507. __extends(ForeignObjectRenderer2, _super);
  7508. function ForeignObjectRenderer2(context, options) {
  7509. var _this = _super.call(this, context, options) || this;
  7510. _this.canvas = options.canvas ? options.canvas : document.createElement("canvas");
  7511. _this.ctx = _this.canvas.getContext("2d");
  7512. _this.options = options;
  7513. _this.canvas.width = Math.floor(options.width * options.scale);
  7514. _this.canvas.height = Math.floor(options.height * options.scale);
  7515. _this.canvas.style.width = options.width + "px";
  7516. _this.canvas.style.height = options.height + "px";
  7517. _this.ctx.scale(_this.options.scale, _this.options.scale);
  7518. _this.ctx.translate(-options.x, -options.y);
  7519. _this.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized (" + options.width + "x" + options.height + " at " + options.x + "," + options.y + ") with scale " + options.scale);
  7520. return _this;
  7521. }
  7522. ForeignObjectRenderer2.prototype.render = function(element) {
  7523. return __awaiter(this, void 0, void 0, function() {
  7524. var svg, img;
  7525. return __generator(this, function(_a) {
  7526. switch (_a.label) {
  7527. case 0:
  7528. svg = createForeignObjectSVG(this.options.width * this.options.scale, this.options.height * this.options.scale, this.options.scale, this.options.scale, element);
  7529. return [4, loadSerializedSVG(svg)];
  7530. case 1:
  7531. img = _a.sent();
  7532. if (this.options.backgroundColor) {
  7533. this.ctx.fillStyle = asString(this.options.backgroundColor);
  7534. this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);
  7535. }
  7536. this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);
  7537. return [2, this.canvas];
  7538. }
  7539. });
  7540. });
  7541. };
  7542. return ForeignObjectRenderer2;
  7543. }(Renderer);
  7544. loadSerializedSVG = function(svg) {
  7545. return new Promise(function(resolve, reject) {
  7546. var img = new Image();
  7547. img.onload = function() {
  7548. resolve(img);
  7549. };
  7550. img.onerror = reject;
  7551. img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg));
  7552. });
  7553. };
  7554. Logger = /** @class */
  7555. function() {
  7556. function Logger2(_a) {
  7557. var id = _a.id, enabled = _a.enabled;
  7558. this.id = id;
  7559. this.enabled = enabled;
  7560. this.start = Date.now();
  7561. }
  7562. Logger2.prototype.debug = function() {
  7563. var args = [];
  7564. for (var _i = 0; _i < arguments.length; _i++) {
  7565. args[_i] = arguments[_i];
  7566. }
  7567. if (this.enabled) {
  7568. if (typeof window !== "undefined" && window.console && typeof console.debug === "function") {
  7569. console.debug.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
  7570. } else {
  7571. this.info.apply(this, args);
  7572. }
  7573. }
  7574. };
  7575. Logger2.prototype.getTime = function() {
  7576. return Date.now() - this.start;
  7577. };
  7578. Logger2.prototype.info = function() {
  7579. var args = [];
  7580. for (var _i = 0; _i < arguments.length; _i++) {
  7581. args[_i] = arguments[_i];
  7582. }
  7583. if (this.enabled) {
  7584. if (typeof window !== "undefined" && window.console && typeof console.info === "function") {
  7585. console.info.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
  7586. }
  7587. }
  7588. };
  7589. Logger2.prototype.warn = function() {
  7590. var args = [];
  7591. for (var _i = 0; _i < arguments.length; _i++) {
  7592. args[_i] = arguments[_i];
  7593. }
  7594. if (this.enabled) {
  7595. if (typeof window !== "undefined" && window.console && typeof console.warn === "function") {
  7596. console.warn.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
  7597. } else {
  7598. this.info.apply(this, args);
  7599. }
  7600. }
  7601. };
  7602. Logger2.prototype.error = function() {
  7603. var args = [];
  7604. for (var _i = 0; _i < arguments.length; _i++) {
  7605. args[_i] = arguments[_i];
  7606. }
  7607. if (this.enabled) {
  7608. if (typeof window !== "undefined" && window.console && typeof console.error === "function") {
  7609. console.error.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args));
  7610. } else {
  7611. this.info.apply(this, args);
  7612. }
  7613. }
  7614. };
  7615. Logger2.instances = {};
  7616. return Logger2;
  7617. }();
  7618. Context = /** @class */
  7619. function() {
  7620. function Context2(options, windowBounds) {
  7621. var _a;
  7622. this.windowBounds = windowBounds;
  7623. this.instanceName = "#" + Context2.instanceCount++;
  7624. this.logger = new Logger({ id: this.instanceName, enabled: options.logging });
  7625. this.cache = (_a = options.cache) !== null && _a !== void 0 ? _a : new Cache(this, options);
  7626. }
  7627. Context2.instanceCount = 1;
  7628. return Context2;
  7629. }();
  7630. html2canvas = function(element, options) {
  7631. if (options === void 0) {
  7632. options = {};
  7633. }
  7634. return renderElement(element, options);
  7635. };
  7636. if (typeof window !== "undefined") {
  7637. CacheStorage.setContext(window);
  7638. }
  7639. renderElement = function(element, opts) {
  7640. return __awaiter(void 0, void 0, void 0, function() {
  7641. var ownerDocument, defaultView, resourceOptions, contextOptions, windowOptions, windowBounds, context, foreignObjectRendering, cloneOptions, documentCloner, clonedElement, container, _a, width, height, left, top, backgroundColor2, renderOptions, canvas, renderer, root, renderer;
  7642. var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
  7643. return __generator(this, function(_u) {
  7644. switch (_u.label) {
  7645. case 0:
  7646. if (!element || typeof element !== "object") {
  7647. return [2, Promise.reject("Invalid element provided as first argument")];
  7648. }
  7649. ownerDocument = element.ownerDocument;
  7650. if (!ownerDocument) {
  7651. throw new Error("Element is not attached to a Document");
  7652. }
  7653. defaultView = ownerDocument.defaultView;
  7654. if (!defaultView) {
  7655. throw new Error("Document is not attached to a Window");
  7656. }
  7657. resourceOptions = {
  7658. allowTaint: (_b = opts.allowTaint) !== null && _b !== void 0 ? _b : false,
  7659. imageTimeout: (_c = opts.imageTimeout) !== null && _c !== void 0 ? _c : 15e3,
  7660. proxy: opts.proxy,
  7661. useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false
  7662. };
  7663. contextOptions = __assign({ logging: (_e = opts.logging) !== null && _e !== void 0 ? _e : true, cache: opts.cache }, resourceOptions);
  7664. windowOptions = {
  7665. windowWidth: (_f = opts.windowWidth) !== null && _f !== void 0 ? _f : defaultView.innerWidth,
  7666. windowHeight: (_g = opts.windowHeight) !== null && _g !== void 0 ? _g : defaultView.innerHeight,
  7667. scrollX: (_h = opts.scrollX) !== null && _h !== void 0 ? _h : defaultView.pageXOffset,
  7668. scrollY: (_j = opts.scrollY) !== null && _j !== void 0 ? _j : defaultView.pageYOffset
  7669. };
  7670. windowBounds = new Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight);
  7671. context = new Context(contextOptions, windowBounds);
  7672. foreignObjectRendering = (_k = opts.foreignObjectRendering) !== null && _k !== void 0 ? _k : false;
  7673. cloneOptions = {
  7674. allowTaint: (_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false,
  7675. onclone: opts.onclone,
  7676. ignoreElements: opts.ignoreElements,
  7677. inlineImages: foreignObjectRendering,
  7678. copyStyles: foreignObjectRendering
  7679. };
  7680. context.logger.debug("Starting document clone with size " + windowBounds.width + "x" + windowBounds.height + " scrolled to " + -windowBounds.left + "," + -windowBounds.top);
  7681. documentCloner = new DocumentCloner(context, element, cloneOptions);
  7682. clonedElement = documentCloner.clonedReferenceElement;
  7683. if (!clonedElement) {
  7684. return [2, Promise.reject("Unable to find element in cloned iframe")];
  7685. }
  7686. return [4, documentCloner.toIFrame(ownerDocument, windowBounds)];
  7687. case 1:
  7688. container = _u.sent();
  7689. _a = isBodyElement(clonedElement) || isHTMLElement(clonedElement) ? parseDocumentSize(clonedElement.ownerDocument) : parseBounds(context, clonedElement), width = _a.width, height = _a.height, left = _a.left, top = _a.top;
  7690. backgroundColor2 = parseBackgroundColor(context, clonedElement, opts.backgroundColor);
  7691. renderOptions = {
  7692. canvas: opts.canvas,
  7693. backgroundColor: backgroundColor2,
  7694. scale: (_o = (_m = opts.scale) !== null && _m !== void 0 ? _m : defaultView.devicePixelRatio) !== null && _o !== void 0 ? _o : 1,
  7695. x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left,
  7696. y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top,
  7697. width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width),
  7698. height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height)
  7699. };
  7700. if (!foreignObjectRendering)
  7701. return [3, 3];
  7702. context.logger.debug("Document cloned, using foreign object rendering");
  7703. renderer = new ForeignObjectRenderer(context, renderOptions);
  7704. return [4, renderer.render(clonedElement)];
  7705. case 2:
  7706. canvas = _u.sent();
  7707. return [3, 5];
  7708. case 3:
  7709. context.logger.debug("Document cloned, element located at " + left + "," + top + " with size " + width + "x" + height + " using computed rendering");
  7710. context.logger.debug("Starting DOM parsing");
  7711. root = parseTree(context, clonedElement);
  7712. if (backgroundColor2 === root.styles.backgroundColor) {
  7713. root.styles.backgroundColor = COLORS.TRANSPARENT;
  7714. }
  7715. context.logger.debug("Starting renderer for element at " + renderOptions.x + "," + renderOptions.y + " with size " + renderOptions.width + "x" + renderOptions.height);
  7716. renderer = new CanvasRenderer(context, renderOptions);
  7717. return [4, renderer.render(root)];
  7718. case 4:
  7719. canvas = _u.sent();
  7720. _u.label = 5;
  7721. case 5:
  7722. if ((_t = opts.removeContainer) !== null && _t !== void 0 ? _t : true) {
  7723. if (!DocumentCloner.destroy(container)) {
  7724. context.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore");
  7725. }
  7726. }
  7727. context.logger.debug("Finished rendering");
  7728. return [2, canvas];
  7729. }
  7730. });
  7731. });
  7732. };
  7733. parseBackgroundColor = function(context, element, backgroundColorOverride) {
  7734. var ownerDocument = element.ownerDocument;
  7735. var documentBackgroundColor = ownerDocument.documentElement ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor) : COLORS.TRANSPARENT;
  7736. var bodyBackgroundColor = ownerDocument.body ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor) : COLORS.TRANSPARENT;
  7737. var defaultBackgroundColor = typeof backgroundColorOverride === "string" ? parseColor(context, backgroundColorOverride) : backgroundColorOverride === null ? COLORS.TRANSPARENT : 4294967295;
  7738. return element === ownerDocument.documentElement ? isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? defaultBackgroundColor : bodyBackgroundColor : documentBackgroundColor : defaultBackgroundColor;
  7739. };
  7740. html2canvas_esm_default = html2canvas;
  7741. }
  7742. });
  7743. init_html2canvas_esm();
  7744. export {
  7745. html2canvas_esm_default as default
  7746. };
  7747. /*! Bundled license information:
  7748. html2canvas/dist/html2canvas.esm.js:
  7749. (*!
  7750. * html2canvas 1.4.1 <https://html2canvas.hertzen.com>
  7751. * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
  7752. * Released under MIT License
  7753. *)
  7754. (*! *****************************************************************************
  7755. Copyright (c) Microsoft Corporation.
  7756. Permission to use, copy, modify, and/or distribute this software for any
  7757. purpose with or without fee is hereby granted.
  7758. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
  7759. REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
  7760. AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
  7761. INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  7762. LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
  7763. OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  7764. PERFORMANCE OF THIS SOFTWARE.
  7765. ***************************************************************************** *)
  7766. */
  7767. //# sourceMappingURL=html2canvas.esm-IGVTDZBD.js.map